import * as z from "zod/v4";
import { ClosedEnum } from "../types/enums.js";
import { AdvisorServerToolOpenRouter, AdvisorServerToolOpenRouter$Outbound } from "./advisorservertoolopenrouter.js";
import { BashServerTool, BashServerTool$Outbound } from "./bashservertool.js";
import { ChatContentCacheControl, ChatContentCacheControl$Outbound } from "./chatcontentcachecontrol.js";
import { ChatSearchModelsServerTool, ChatSearchModelsServerTool$Outbound } from "./chatsearchmodelsservertool.js";
import { ChatWebSearchShorthand, ChatWebSearchShorthand$Outbound } from "./chatwebsearchshorthand.js";
import { DatetimeServerTool, DatetimeServerTool$Outbound } from "./datetimeservertool.js";
import { FilesServerTool, FilesServerTool$Outbound } from "./filesservertool.js";
import { FusionServerToolOpenRouter, FusionServerToolOpenRouter$Outbound } from "./fusionservertoolopenrouter.js";
import { ImageGenerationServerToolOpenRouter, ImageGenerationServerToolOpenRouter$Outbound } from "./imagegenerationservertoolopenrouter.js";
import { OpenRouterWebSearchServerTool, OpenRouterWebSearchServerTool$Outbound } from "./openrouterwebsearchservertool.js";
import { SubagentServerToolOpenRouter, SubagentServerToolOpenRouter$Outbound } from "./subagentservertoolopenrouter.js";
import { WebFetchServerTool, WebFetchServerTool$Outbound } from "./webfetchservertool.js";
/**
 * Function definition for tool calling
 */
export type ChatFunctionToolFunctionFunction = {
    /**
     * Function description for the model
     */
    description?: string | undefined;
    /**
     * Function name (a-z, A-Z, 0-9, underscores, dashes, max 64 chars)
     */
    name: string;
    /**
     * Function parameters as JSON Schema object
     */
    parameters?: {
        [k: string]: any;
    } | undefined;
    /**
     * Enable strict schema adherence
     */
    strict?: boolean | null | undefined;
};
export declare const ChatFunctionToolType: {
    readonly Function: "function";
};
export type ChatFunctionToolType = ClosedEnum<typeof ChatFunctionToolType>;
export type ChatFunctionToolFunction = {
    /**
     * Anthropic-style cache breakpoint for the content part. Interchangeable with the OpenAI-style `prompt_cache_breakpoint` marker: OpenRouter converts between the two based on the provider serving the request.
     */
    cacheControl?: ChatContentCacheControl | undefined;
    /**
     * Function definition for tool calling
     */
    function: ChatFunctionToolFunctionFunction;
    type: ChatFunctionToolType;
};
/**
 * Tool definition for function calling (regular function or OpenRouter built-in server tool)
 */
export type ChatFunctionTool = ChatFunctionToolFunction | AdvisorServerToolOpenRouter | BashServerTool | DatetimeServerTool | FilesServerTool | FusionServerToolOpenRouter | ImageGenerationServerToolOpenRouter | ChatSearchModelsServerTool | SubagentServerToolOpenRouter | WebFetchServerTool | OpenRouterWebSearchServerTool | ChatWebSearchShorthand;
/** @internal */
export type ChatFunctionToolFunctionFunction$Outbound = {
    description?: string | undefined;
    name: string;
    parameters?: {
        [k: string]: any;
    } | undefined;
    strict?: boolean | null | undefined;
};
/** @internal */
export declare const ChatFunctionToolFunctionFunction$outboundSchema: z.ZodType<ChatFunctionToolFunctionFunction$Outbound, ChatFunctionToolFunctionFunction>;
export declare function chatFunctionToolFunctionFunctionToJSON(chatFunctionToolFunctionFunction: ChatFunctionToolFunctionFunction): string;
/** @internal */
export declare const ChatFunctionToolType$outboundSchema: z.ZodEnum<typeof ChatFunctionToolType>;
/** @internal */
export type ChatFunctionToolFunction$Outbound = {
    cache_control?: ChatContentCacheControl$Outbound | undefined;
    function: ChatFunctionToolFunctionFunction$Outbound;
    type: string;
};
/** @internal */
export declare const ChatFunctionToolFunction$outboundSchema: z.ZodType<ChatFunctionToolFunction$Outbound, ChatFunctionToolFunction>;
export declare function chatFunctionToolFunctionToJSON(chatFunctionToolFunction: ChatFunctionToolFunction): string;
/** @internal */
export type ChatFunctionTool$Outbound = ChatFunctionToolFunction$Outbound | AdvisorServerToolOpenRouter$Outbound | BashServerTool$Outbound | DatetimeServerTool$Outbound | FilesServerTool$Outbound | FusionServerToolOpenRouter$Outbound | ImageGenerationServerToolOpenRouter$Outbound | ChatSearchModelsServerTool$Outbound | SubagentServerToolOpenRouter$Outbound | WebFetchServerTool$Outbound | OpenRouterWebSearchServerTool$Outbound | ChatWebSearchShorthand$Outbound;
/** @internal */
export declare const ChatFunctionTool$outboundSchema: z.ZodType<ChatFunctionTool$Outbound, ChatFunctionTool>;
export declare function chatFunctionToolToJSON(chatFunctionTool: ChatFunctionTool): string;
//# sourceMappingURL=chatfunctiontool.d.ts.map