import { z } from "@hono/zod-openapi";

//#region src/domains/run/types/chat.d.ts
declare const ImageUrlSchema: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
declare const PdfDataOrUrlSchema: z.ZodUnion<readonly [z.ZodString, z.ZodURL]>;
declare const InlineDocumentDataSchema: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodString, z.ZodURL]>, z.ZodString]>;
/** OpenAI-specific image detail level. Has no effect on other providers. */
declare const ImageDetailEnum: readonly ["auto", "low", "high"];
declare const ImageDetailSchema: z.ZodEnum<{
  high: "high";
  low: "low";
  auto: "auto";
}>;
type ImageDetail = z.infer<typeof ImageDetailSchema>;
declare const ImageContentItemSchema: z.ZodObject<{
  type: z.ZodLiteral<"image_url">;
  image_url: z.ZodObject<{
    url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
    detail: z.ZodOptional<z.ZodEnum<{
      high: "high";
      low: "low";
      auto: "auto";
    }>>;
  }, z.core.$strip>;
}, z.core.$strip>;
type ImageContentItem = z.infer<typeof ImageContentItemSchema>;
declare const FileContentItemSchema: z.ZodObject<{
  type: z.ZodLiteral<"file">;
  file: z.ZodObject<{
    file_data: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodString, z.ZodURL]>, z.ZodString]>;
    filename: z.ZodOptional<z.ZodString>;
  }, z.core.$strip>;
}, z.core.$strip>;
type FileContentItem = z.infer<typeof FileContentItemSchema>;
declare const VercelTextPartSchema: z.ZodObject<{
  type: z.ZodLiteral<"text">;
  text: z.ZodString;
}, z.core.$strip>;
declare const VercelImagePartSchema: z.ZodObject<{
  type: z.ZodLiteral<"image">;
  text: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
}, z.core.$strip>;
declare const VercelFilePartSchema: z.ZodObject<{
  type: z.ZodLiteral<"file">;
  url: z.ZodString;
  mediaType: z.ZodString;
  filename: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
declare const VercelAudioVideoPartSchema: z.ZodObject<{
  type: z.ZodUnion<readonly [z.ZodEnum<{
    audio: "audio";
    video: "video";
  }>, z.ZodString]>;
  text: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
declare const VercelToolApprovalPartSchema: z.ZodObject<{
  type: z.ZodString;
  toolCallId: z.ZodString;
  state: z.ZodAny;
  approval: z.ZodOptional<z.ZodObject<{
    id: z.ZodString;
    approved: z.ZodOptional<z.ZodBoolean>;
    reason: z.ZodOptional<z.ZodString>;
  }, z.core.$strip>>;
  input: z.ZodOptional<z.ZodAny>;
  callProviderMetadata: z.ZodOptional<z.ZodAny>;
}, z.core.$strip>;
declare const VercelStepStartPartSchema: z.ZodObject<{
  type: z.ZodLiteral<"step-start">;
}, z.core.$strip>;
declare const VercelMessagePartSchema: z.ZodUnion<readonly [z.ZodObject<{
  type: z.ZodLiteral<"text">;
  text: z.ZodString;
}, z.core.$strip>, z.ZodObject<{
  type: z.ZodLiteral<"image">;
  text: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
}, z.core.$strip>, z.ZodObject<{
  type: z.ZodLiteral<"file">;
  url: z.ZodString;
  mediaType: z.ZodString;
  filename: z.ZodOptional<z.ZodString>;
}, z.core.$strip>, z.ZodObject<{
  type: z.ZodUnion<readonly [z.ZodEnum<{
    audio: "audio";
    video: "video";
  }>, z.ZodString]>;
  text: z.ZodOptional<z.ZodString>;
}, z.core.$strip>, z.ZodObject<{
  type: z.ZodString;
  toolCallId: z.ZodString;
  state: z.ZodAny;
  approval: z.ZodOptional<z.ZodObject<{
    id: z.ZodString;
    approved: z.ZodOptional<z.ZodBoolean>;
    reason: z.ZodOptional<z.ZodString>;
  }, z.core.$strip>>;
  input: z.ZodOptional<z.ZodAny>;
  callProviderMetadata: z.ZodOptional<z.ZodAny>;
}, z.core.$strip>, z.ZodObject<{
  type: z.ZodLiteral<"step-start">;
}, z.core.$strip>]>;
declare const VercelMessageSchema: z.ZodObject<{
  role: z.ZodEnum<{
    function: "function";
    user: "user";
    system: "system";
    assistant: "assistant";
    tool: "tool";
  }>;
  content: z.ZodAny;
  parts: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
    type: z.ZodLiteral<"text">;
    text: z.ZodString;
  }, z.core.$strip>, z.ZodObject<{
    type: z.ZodLiteral<"image">;
    text: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
  }, z.core.$strip>, z.ZodObject<{
    type: z.ZodLiteral<"file">;
    url: z.ZodString;
    mediaType: z.ZodString;
    filename: z.ZodOptional<z.ZodString>;
  }, z.core.$strip>, z.ZodObject<{
    type: z.ZodUnion<readonly [z.ZodEnum<{
      audio: "audio";
      video: "video";
    }>, z.ZodString]>;
    text: z.ZodOptional<z.ZodString>;
  }, z.core.$strip>, z.ZodObject<{
    type: z.ZodString;
    toolCallId: z.ZodString;
    state: z.ZodAny;
    approval: z.ZodOptional<z.ZodObject<{
      id: z.ZodString;
      approved: z.ZodOptional<z.ZodBoolean>;
      reason: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
    input: z.ZodOptional<z.ZodAny>;
    callProviderMetadata: z.ZodOptional<z.ZodAny>;
  }, z.core.$strip>, z.ZodObject<{
    type: z.ZodLiteral<"step-start">;
  }, z.core.$strip>]>>>;
}, z.core.$strip>;
declare const VercelContentPartSchema: z.ZodUnion<readonly [z.ZodObject<{
  type: z.ZodLiteral<"text">;
  text: z.ZodString;
}, z.core.$strip>, z.ZodObject<{
  type: z.ZodLiteral<"image">;
  text: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
}, z.core.$strip>, z.ZodObject<{
  type: z.ZodLiteral<"file">;
  url: z.ZodString;
  mediaType: z.ZodString;
  filename: z.ZodOptional<z.ZodString>;
}, z.core.$strip>]>;
declare const ContentItemSchema: z.ZodUnion<readonly [z.ZodObject<{
  type: z.ZodLiteral<"text">;
  text: z.ZodString;
}, z.core.$strip>, z.ZodObject<{
  type: z.ZodLiteral<"image_url">;
  image_url: z.ZodObject<{
    url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
    detail: z.ZodOptional<z.ZodEnum<{
      high: "high";
      low: "low";
      auto: "auto";
    }>>;
  }, z.core.$strip>;
}, z.core.$strip>, z.ZodObject<{
  type: z.ZodLiteral<"file">;
  file: z.ZodObject<{
    file_data: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodString, z.ZodURL]>, z.ZodString]>;
    filename: z.ZodOptional<z.ZodString>;
  }, z.core.$strip>;
}, z.core.$strip>]>;
type TextContentItem = z.infer<typeof VercelTextPartSchema>;
type ContentItem = z.infer<typeof ContentItemSchema>;
declare const MessageSchema: z.ZodObject<{
  role: z.ZodEnum<{
    function: "function";
    user: "user";
    system: "system";
    assistant: "assistant";
    tool: "tool";
  }>;
  content: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
    type: z.ZodLiteral<"text">;
    text: z.ZodString;
  }, z.core.$strip>, z.ZodObject<{
    type: z.ZodLiteral<"image_url">;
    image_url: z.ZodObject<{
      url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
      detail: z.ZodOptional<z.ZodEnum<{
        high: "high";
        low: "low";
        auto: "auto";
      }>>;
    }, z.core.$strip>;
  }, z.core.$strip>, z.ZodObject<{
    type: z.ZodLiteral<"file">;
    file: z.ZodObject<{
      file_data: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodString, z.ZodURL]>, z.ZodString]>;
      filename: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>;
  }, z.core.$strip>]>>]>;
  name: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
type Message = z.infer<typeof MessageSchema>;
declare const ChatCompletionRequestSchema: z.ZodObject<{
  model: z.ZodString;
  messages: z.ZodArray<z.ZodObject<{
    role: z.ZodEnum<{
      function: "function";
      user: "user";
      system: "system";
      assistant: "assistant";
      tool: "tool";
    }>;
    content: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
      type: z.ZodLiteral<"text">;
      text: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
      type: z.ZodLiteral<"image_url">;
      image_url: z.ZodObject<{
        url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
        detail: z.ZodOptional<z.ZodEnum<{
          high: "high";
          low: "low";
          auto: "auto";
        }>>;
      }, z.core.$strip>;
    }, z.core.$strip>, z.ZodObject<{
      type: z.ZodLiteral<"file">;
      file: z.ZodObject<{
        file_data: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodString, z.ZodURL]>, z.ZodString]>;
        filename: z.ZodOptional<z.ZodString>;
      }, z.core.$strip>;
    }, z.core.$strip>]>>]>;
    name: z.ZodOptional<z.ZodString>;
  }, z.core.$strip>>;
  temperature: z.ZodOptional<z.ZodNumber>;
  top_p: z.ZodOptional<z.ZodNumber>;
  n: z.ZodOptional<z.ZodNumber>;
  stream: z.ZodOptional<z.ZodBoolean>;
  max_tokens: z.ZodOptional<z.ZodNumber>;
  presence_penalty: z.ZodOptional<z.ZodNumber>;
  frequency_penalty: z.ZodOptional<z.ZodNumber>;
  logit_bias: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
  user: z.ZodOptional<z.ZodString>;
  tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
  runConfig: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, z.core.$strip>;
type ChatCompletionRequest = z.infer<typeof ChatCompletionRequestSchema>;
//#endregion
export { ChatCompletionRequest, ChatCompletionRequestSchema, ContentItem, ContentItemSchema, FileContentItem, FileContentItemSchema, ImageContentItem, ImageContentItemSchema, ImageDetail, ImageDetailEnum, ImageDetailSchema, ImageUrlSchema, InlineDocumentDataSchema, Message, MessageSchema, PdfDataOrUrlSchema, TextContentItem, VercelAudioVideoPartSchema, VercelContentPartSchema, VercelFilePartSchema, VercelImagePartSchema, VercelMessagePartSchema, VercelMessageSchema, VercelStepStartPartSchema, VercelTextPartSchema, VercelToolApprovalPartSchema };