import z from "zod";
/**
 * The zod schema for an anthropic tool definition
 */
export declare const anthropicToolDefinitionSchema: z.ZodObject<{
    name: z.ZodString;
    description: z.ZodString;
    input_schema: 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>;
    }, "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>;
    }, 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>;
    }, z.ZodTypeAny, "passthrough">>;
}, "strip", z.ZodTypeAny, {
    name: string;
    description: string;
    input_schema: {
        type: "object";
        properties: Record<string, 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.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">[];
        }>;
        required?: string[] | undefined;
        additionalProperties?: boolean | undefined;
    } & {
        [k: string]: unknown;
    };
}, {
    name: string;
    description: string;
    input_schema: {
        type: "object";
        properties: Record<string, 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"> | {
            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?: string[] | undefined;
        additionalProperties?: boolean | undefined;
    } & {
        [k: string]: unknown;
    };
}>;
/**
 * The type of an anthropic tool definition
 */
export type AnthropicToolDefinition = z.infer<typeof anthropicToolDefinitionSchema>;
/**
 * Creates an Anthropic 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 Anthropic tool definition
 */
export declare function createAnthropicToolDefinition(toolNumber: number): AnthropicToolDefinition;
//# sourceMappingURL=toolSchemas.d.ts.map