import type { ToolInputJsonSchema } from "./contracts.js";
import type { ZodToolInputSchema } from "./schema-types.js";
import { z } from "zod";
export type { ZodToolInputSchema } from "./schema-types.js";
export declare function toolInputSchema<const S extends z.ZodType>(schema: S, options?: {
    jsonSchema?: Record<string, unknown>;
}): ZodToolInputSchema<z.output<S>>;
/** Create a typed tool input schema whose output type binds directly to TInput.
 *  Use this when the Zod schema output IS the same type as TInput on the ToolDefinition. */
export declare function typedToolInputSchema<TInput, const S extends z.ZodType<TInput> = z.ZodType<TInput>>(schema: S, options?: {
    jsonSchema?: Record<string, unknown>;
}): ZodToolInputSchema<TInput>;
export declare function isZodToolInputSchema(inputSchema: unknown): inputSchema is ZodToolInputSchema;
export declare function getToolInputJsonSchema(inputSchema: unknown): unknown;
export declare function parseZodToolInput<TInput>(toolName: string, inputSchema: ZodToolInputSchema<TInput>, input: unknown): TInput;
/** Build a plain JSON Schema from a Zod schema, for use as a wire-format
 *  description on legacy tools where the schema shape differs from TInput.
 *  The legacyAdapter is responsible for full validation and normalization;
 *  the returned schema is only used to generate the LLM-facing JSON Schema. */
export declare function wireInputSchema<const S extends z.ZodType>(schema: S, options?: {
    jsonSchema?: Record<string, unknown>;
}): ToolInputJsonSchema;
//# sourceMappingURL=schema.d.ts.map