import { z, ModelReference, Role, Part, MessageData, GenerateResponseData, GenerateRequest, StreamingCallback } from 'genkit';
import { ToolDefinition, CandidateData, GenerateResponseChunkData, ModelAction } from 'genkit/model';
import Anthropic from '@anthropic-ai/sdk';
import { MessageParam, TextBlockParam, ImageBlockParam, TextBlock, ToolUseBlockParam, ToolResultBlockParam, Tool, MessageStreamEvent, Message, MessageCreateParams } from '@anthropic-ai/sdk/resources/messages.mjs';

/**
 * Copyright 2024 Bloom Labs Inc
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

declare const AnthropicConfigSchema: z.ZodObject<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, "passthrough", z.ZodTypeAny, z.objectOutputType<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, z.ZodTypeAny, "passthrough">, z.objectInputType<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, z.ZodTypeAny, "passthrough">>;
declare const claude4Sonnet: ModelReference<z.ZodObject<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, "passthrough", z.ZodTypeAny, z.objectOutputType<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, z.ZodTypeAny, "passthrough">, z.objectInputType<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, z.ZodTypeAny, "passthrough">>>;
declare const claude37Sonnet: ModelReference<z.ZodObject<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, "passthrough", z.ZodTypeAny, z.objectOutputType<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, z.ZodTypeAny, "passthrough">, z.objectInputType<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, z.ZodTypeAny, "passthrough">>>;
declare const claude35Sonnet: ModelReference<z.ZodObject<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, "passthrough", z.ZodTypeAny, z.objectOutputType<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, z.ZodTypeAny, "passthrough">, z.objectInputType<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, z.ZodTypeAny, "passthrough">>>;
declare const claude3Opus: ModelReference<z.ZodObject<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, "passthrough", z.ZodTypeAny, z.objectOutputType<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, z.ZodTypeAny, "passthrough">, z.objectInputType<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, z.ZodTypeAny, "passthrough">>>;
declare const claude3Sonnet: ModelReference<z.ZodObject<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, "passthrough", z.ZodTypeAny, z.objectOutputType<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, z.ZodTypeAny, "passthrough">, z.objectInputType<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, z.ZodTypeAny, "passthrough">>>;
declare const claude3Haiku: ModelReference<z.ZodObject<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, "passthrough", z.ZodTypeAny, z.objectOutputType<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, z.ZodTypeAny, "passthrough">, z.objectInputType<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, z.ZodTypeAny, "passthrough">>>;
declare const claude4Opus: ModelReference<z.ZodObject<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, "passthrough", z.ZodTypeAny, z.objectOutputType<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, z.ZodTypeAny, "passthrough">, z.objectInputType<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, z.ZodTypeAny, "passthrough">>>;
declare const claude35Haiku: ModelReference<z.ZodObject<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, "passthrough", z.ZodTypeAny, z.objectOutputType<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, z.ZodTypeAny, "passthrough">, z.objectInputType<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, z.ZodTypeAny, "passthrough">>>;
declare const claude45Sonnet: ModelReference<z.ZodObject<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, "passthrough", z.ZodTypeAny, z.objectOutputType<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, z.ZodTypeAny, "passthrough">, z.objectInputType<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, z.ZodTypeAny, "passthrough">>>;
declare const claude45Haiku: ModelReference<z.ZodObject<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, "passthrough", z.ZodTypeAny, z.objectOutputType<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, z.ZodTypeAny, "passthrough">, z.objectInputType<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, z.ZodTypeAny, "passthrough">>>;
declare const claude45Opus: ModelReference<z.ZodObject<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, "passthrough", z.ZodTypeAny, z.objectOutputType<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, z.ZodTypeAny, "passthrough">, z.objectInputType<z.objectUtil.extendShape<{
    version: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
    topK: z.ZodOptional<z.ZodNumber>;
    topP: z.ZodOptional<z.ZodNumber>;
    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, {
    tool_choice: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"auto">;
    }, "strip", z.ZodTypeAny, {
        type: "auto";
    }, {
        type: "auto";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"any">;
    }, "strip", z.ZodTypeAny, {
        type: "any";
    }, {
        type: "any";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"tool">;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "tool";
        name: string;
    }, {
        type: "tool";
        name: string;
    }>]>>;
    metadata: z.ZodOptional<z.ZodObject<{
        user_id: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        user_id?: string | undefined;
    }, {
        user_id?: string | undefined;
    }>>;
}>, z.ZodTypeAny, "passthrough">>>;
declare const SUPPORTED_CLAUDE_MODELS: Record<string, ModelReference<typeof AnthropicConfigSchema>>;
/**
 * Converts a Genkit role to the corresponding Anthropic role.
 */
declare function toAnthropicRole(role: Role, toolMessageType?: 'tool_use' | 'tool_result'): MessageParam['role'];
/**
 * Converts a Genkit message Part to the corresponding Anthropic TextBlockParam or ImageBlockParam.
 */
declare function toAnthropicToolResponseContent(part: Part): TextBlockParam | ImageBlockParam;
/**
 * Converts a Genkit Part to the corresponding Anthropic TextBlock, ImageBlockParam, etc.
 */
declare function toAnthropicMessageContent(part: Part): TextBlock | ImageBlockParam | ToolUseBlockParam | ToolResultBlockParam;
/**
 * Converts a Genkit MessageData array to Anthropic system message and MessageParam array.
 * @param messages The Genkit MessageData array to convert.
 * @returns An object containing the optional Anthropic system message and the array of Anthropic MessageParam objects.
 */
declare function toAnthropicMessages(messages: MessageData[]): {
    system?: string;
    messages: MessageParam[];
};
/**
 * Converts a Genkit ToolDefinition to an Anthropic Tool object.
 * @param tool The Genkit ToolDefinition to convert.
 * @returns The converted Anthropic Tool object.
 */
declare function toAnthropicTool(tool: ToolDefinition): Tool;
/**
 * Converts an Anthropic message stream event to a Genkit Part object.
 */
declare function fromAnthropicContentBlockChunk(event: MessageStreamEvent): Part | undefined;
declare function fromAnthropicStopReason(reason: Message['stop_reason']): CandidateData['finishReason'];
declare function fromAnthropicResponse(response: Message): GenerateResponseData;
/**
 * Converts an Anthropic request to an Anthropic API request body.
 * @param modelName The name of the Anthropic model to use.
 * @param request The Genkit GenerateRequest to convert.
 * @param stream Whether to stream the response.
 * @param cacheSystemPrompt Whether to cache the system prompt.
 * @returns The converted Anthropic API request body.
 * @throws An error if the specified model is not supported or if an unsupported output format is requested.
 */
declare function toAnthropicRequestBody(modelName: string, request: GenerateRequest<typeof AnthropicConfigSchema>, stream?: boolean, cacheSystemPrompt?: boolean): MessageCreateParams;
/**
 * Creates the runner used by Genkit to interact with the Claude model.
 * @param name The name of the Claude model.
 * @param client The Anthropic client instance.
 * @param cacheSystemPrompt Whether to cache the system prompt.
 * @returns The runner that Genkit will call when the model is invoked.
 */
declare function claudeRunner(name: string, client: Anthropic, cacheSystemPrompt?: boolean): (request: GenerateRequest<typeof AnthropicConfigSchema>, { streamingRequested, sendChunk, abortSignal, }: {
    streamingRequested: boolean;
    sendChunk: StreamingCallback<GenerateResponseChunkData>;
    abortSignal: AbortSignal;
}) => Promise<GenerateResponseData>;
/**
 * Defines a Claude model with the given name and Anthropic client.
 */
declare function claudeModel(name: string, client: Anthropic, cacheSystemPrompt?: boolean): ModelAction<typeof AnthropicConfigSchema>;

export { AnthropicConfigSchema, SUPPORTED_CLAUDE_MODELS, claude35Haiku, claude35Sonnet, claude37Sonnet, claude3Haiku, claude3Opus, claude3Sonnet, claude45Haiku, claude45Opus, claude45Sonnet, claude4Opus, claude4Sonnet, claudeModel, claudeRunner, fromAnthropicContentBlockChunk, fromAnthropicResponse, fromAnthropicStopReason, toAnthropicMessageContent, toAnthropicMessages, toAnthropicRequestBody, toAnthropicRole, toAnthropicTool, toAnthropicToolResponseContent };
