import { ZodType, ZodTypeAny, ZodTypeDef } from "zod";
import type { OpenAIChatPart } from "./openai/messagePartSchemas.js";
import type { AnthropicMessagePart } from "./anthropic/messagePartSchemas.js";
import type { VercelAIChatPart, VercelAIChatPartToolCall } from "./vercel/messagePartSchemas.js";
import { PromptProviderSDKs, PromptToolChoice } from "../../types/prompts.js";
import { OpenAIMessage } from "./openai/messageSchemas.js";
import { AnthropicMessage } from "./anthropic/messageSchemas.js";
import { OpenAIToolCall } from "./openai/toolCallSchemas.js";
import { AnthropicToolCall } from "./anthropic/toolCallSchemas.js";
import { OpenaiToolChoice } from "./openai/toolChoiceSchemas.js";
import { AnthropicToolChoice } from "./anthropic/toolChoiceSchemas.js";
import { VercelAIMessage } from "./vercel/messageSchemas.js";
import { PhoenixToolCall } from "./phoenixPrompt/toolCallSchemas.js";
import { PhoenixMessage } from "./phoenixPrompt/messageSchemas.js";
import { VercelAIToolChoice } from "./vercel/toolChoiceSchemas.js";
import { OpenAIToolDefinition } from "./openai/toolSchemas.js";
import { OpenAIResponseFormat } from "./openai/responseFormatSchema.js";
import { AnthropicToolDefinition } from "./anthropic/toolSchemas.js";
import { PhoenixToolDefinition } from "./phoenixPrompt/toolSchemas.js";
import { PhoenixContentPart } from "./phoenixPrompt/messagePartSchemas.js";
import { VercelAIToolDefinition } from "./vercel/toolSchemas.js";
export type PromptSDKFormat = PromptProviderSDKs | null;
export type LLMMessagePart = OpenAIChatPart | AnthropicMessagePart | PhoenixContentPart | VercelAIChatPart;
export type SDKConverters<MessageSchema extends ZodTypeAny = never, MessagePartSchema extends ZodTypeAny = never, ToolChoiceSchema extends ZodTypeAny = never, ToolCallSchema extends ZodTypeAny = never, ToolDefinitionSchema extends ZodTypeAny = never, ResponseFormatSchema extends ZodTypeAny = never> = {
    messages: {
        toOpenAI: ZodType<OpenAIMessage | null, ZodTypeDef, unknown>;
        fromOpenAI: MessageSchema;
    };
    messageParts: {
        toOpenAI: ZodType<OpenAIChatPart | null, ZodTypeDef, unknown>;
        fromOpenAI: MessagePartSchema;
    };
    toolChoices: {
        toOpenAI: ZodType<OpenaiToolChoice | null, ZodTypeDef, unknown>;
        fromOpenAI: ToolChoiceSchema;
    };
    toolCalls: {
        toOpenAI: ZodType<OpenAIToolCall | null, ZodTypeDef, unknown>;
        fromOpenAI: ToolCallSchema;
    };
    toolDefinitions: {
        toOpenAI: ZodType<OpenAIToolDefinition | null, ZodTypeDef, unknown>;
        fromOpenAI: ToolDefinitionSchema;
    };
    responseFormat?: {
        toOpenAI: ZodType<OpenAIResponseFormat | null, ZodTypeDef, unknown>;
        fromOpenAI: ResponseFormatSchema;
    };
};
export type MessagePartWithProvider = {
    provider: Extract<PromptSDKFormat, "OPENAI" | "AZURE_OPENAI">;
    validatedMessage: OpenAIChatPart;
} | {
    provider: Extract<PromptSDKFormat, "ANTHROPIC">;
    validatedMessage: AnthropicMessagePart;
} | {
    provider: Extract<PromptSDKFormat, "PHOENIX">;
    validatedMessage: PhoenixContentPart;
} | {
    provider: Extract<PromptSDKFormat, "VERCEL_AI">;
    validatedMessage: VercelAIChatPart;
} | {
    provider: null;
    validatedMessage: null;
};
export type MessageWithProvider = {
    provider: Extract<PromptSDKFormat, "OPENAI" | "AZURE_OPENAI">;
    validatedMessage: OpenAIMessage;
} | {
    provider: Extract<PromptSDKFormat, "ANTHROPIC">;
    validatedMessage: AnthropicMessage;
} | {
    provider: Extract<PromptSDKFormat, "PHOENIX">;
    validatedMessage: PhoenixMessage;
} | {
    provider: Extract<PromptSDKFormat, "VERCEL_AI">;
    validatedMessage: VercelAIMessage;
} | {
    provider: null;
    validatedMessage: null;
};
export type ToolDefinitionWithProvider = {
    provider: Extract<PromptSDKFormat, "OPENAI" | "AZURE_OPENAI">;
    validatedToolDefinition: OpenAIToolDefinition;
} | {
    provider: Extract<PromptSDKFormat, "ANTHROPIC">;
    validatedToolDefinition: AnthropicToolDefinition;
} | {
    provider: Extract<PromptSDKFormat, "PHOENIX">;
    validatedToolDefinition: PhoenixToolDefinition;
} | {
    provider: Extract<PromptSDKFormat, "VERCEL_AI">;
    validatedToolDefinition: VercelAIToolDefinition;
} | {
    provider: null;
    validatedToolDefinition: null;
};
export type ToolCallWithProvider = {
    provider: Extract<PromptSDKFormat, "OPENAI" | "AZURE_OPENAI">;
    validatedToolCall: OpenAIToolCall;
} | {
    provider: Extract<PromptSDKFormat, "ANTHROPIC">;
    validatedToolCall: AnthropicToolCall;
} | {
    provider: Extract<PromptSDKFormat, "PHOENIX">;
    validatedToolCall: PhoenixToolCall;
} | {
    provider: Extract<PromptSDKFormat, "VERCEL_AI">;
    validatedToolCall: VercelAIChatPartToolCall;
} | {
    provider: null;
    validatedToolCall: null;
};
export type ToolChoiceWithProvider = {
    provider: Extract<PromptSDKFormat, "OPENAI" | "AZURE_OPENAI">;
    toolChoice: OpenaiToolChoice;
} | {
    provider: Extract<PromptSDKFormat, "ANTHROPIC">;
    toolChoice: AnthropicToolChoice;
} | {
    provider: Extract<PromptSDKFormat, "PHOENIX">;
    toolChoice: PromptToolChoice;
} | {
    provider: Extract<PromptSDKFormat, "VERCEL_AI">;
    toolChoice: VercelAIToolChoice;
} | {
    provider: null;
    toolChoice: null;
};
//# sourceMappingURL=types.d.ts.map