import { buildAnthropicRequest, type AnthropicRequestBody } from "../providers/anthropic/request.js";
import { buildOpenAIRequest, type OpenAIRequestBody } from "../providers/openai/request.js";
import type { CanonicalModelRequest, ModelConfig } from "../protocol/canonical.js";
import { validateModelRequest } from "./validateModelRequest.js";

export type ProviderRequestBody = AnthropicRequestBody | OpenAIRequestBody;

export function buildModelRequest(
  request: CanonicalModelRequest,
  config: ModelConfig,
): ProviderRequestBody {
  const { provider, model } = validateModelRequest(request, config);

  if (provider.protocol === "anthropic") {
    return buildAnthropicRequest(request, model);
  }

  return buildOpenAIRequest(request, model);
}