import z from "zod";
/**
 * The schema for an OpenAI tool definition
 * @see https://platform.openai.com/docs/guides/structured-outputs/supported-schemas
 *
 * Note: The nested passThrough's are used to allow for extra keys in JSON schema, however, they do not actually
 * allow for extra keys when the zod schema is used for parsing. This is to allow more flexibility for users
 * to define their own tools according
 */
export declare const openAIToolDefinitionSchema: z.ZodObject<{
    type: z.ZodLiteral<"function">;
    function: z.ZodObject<{
        name: z.ZodString;
        description: z.ZodOptional<z.ZodString>;
        parameters: z.ZodObject<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, z.ZodTypeAny, "passthrough">>;
    }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
        name: z.ZodString;
        description: z.ZodOptional<z.ZodString>;
        parameters: z.ZodObject<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, z.ZodTypeAny, "passthrough">>;
    }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
        name: z.ZodString;
        description: z.ZodOptional<z.ZodString>;
        parameters: z.ZodObject<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, z.ZodTypeAny, "passthrough">>;
    }, z.ZodTypeAny, "passthrough">>;
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
    type: z.ZodLiteral<"function">;
    function: z.ZodObject<{
        name: z.ZodString;
        description: z.ZodOptional<z.ZodString>;
        parameters: z.ZodObject<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, z.ZodTypeAny, "passthrough">>;
    }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
        name: z.ZodString;
        description: z.ZodOptional<z.ZodString>;
        parameters: z.ZodObject<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, z.ZodTypeAny, "passthrough">>;
    }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
        name: z.ZodString;
        description: z.ZodOptional<z.ZodString>;
        parameters: z.ZodObject<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, z.ZodTypeAny, "passthrough">>;
    }, z.ZodTypeAny, "passthrough">>;
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
    type: z.ZodLiteral<"function">;
    function: z.ZodObject<{
        name: z.ZodString;
        description: z.ZodOptional<z.ZodString>;
        parameters: z.ZodObject<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, z.ZodTypeAny, "passthrough">>;
    }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
        name: z.ZodString;
        description: z.ZodOptional<z.ZodString>;
        parameters: z.ZodObject<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, z.ZodTypeAny, "passthrough">>;
    }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
        name: z.ZodString;
        description: z.ZodOptional<z.ZodString>;
        parameters: z.ZodObject<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
            type: z.ZodLiteral<"object">;
            properties: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                description: z.ZodOptional<z.ZodString>;
                enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{
                anyOf: z.ZodArray<z.ZodObject<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">>, "many">;
            }, "strip", z.ZodTypeAny, {
                anyOf: z.objectOutputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }, {
                anyOf: z.objectInputType<{
                    type: z.ZodEnum<["string", "number", "boolean", "object", "array", "null", "integer"]>;
                    description: z.ZodOptional<z.ZodString>;
                    enum: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                }, z.ZodTypeAny, "passthrough">[];
            }>]>>;
            required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            additionalProperties: z.ZodOptional<z.ZodBoolean>;
        } & {
            strict: z.ZodOptional<z.ZodBoolean>;
        }, z.ZodTypeAny, "passthrough">>;
    }, z.ZodTypeAny, "passthrough">>;
}, z.ZodTypeAny, "passthrough">>;
/**
 * The type of an OpenAI tool definition
 * @see https://platform.openai.com/docs/guides/structured-outputs/supported-schemas
 */
export type OpenAIToolDefinition = z.infer<typeof openAIToolDefinitionSchema>;
/**
 * Creates an OpenAI tool definition
 * @param toolNumber the number of the tool in that instance for example instance.tools.length + 1 to be used to fill in the name
 * @returns an OpenAI tool definition
 */
export declare function createOpenAIToolDefinition(toolNumber: number): OpenAIToolDefinition;
//# sourceMappingURL=toolSchemas.d.ts.map