import { type Static, type TSchema } from "typebox";
import { type ToolDefinition } from "../extensions/types.ts";
export declare const STRUCTURED_OUTPUT_TOOL_NAME = "structured_output";
export type JsonPrimitive = string | number | boolean | null;
export type JsonValue = JsonPrimitive | JsonObject | JsonValue[];
export type JsonObject = {
    readonly [key: string]: JsonValue;
};
export interface StructuredOutputCapture<TValue = unknown> {
    value: TValue | undefined;
    called: boolean;
}
export interface StructuredOutputFileCapture {
    outputPath: string;
}
export interface StructuredOutputToolOptions<TSchemaDef extends TSchema> {
    /** Tool parameter schema. */
    schema: TSchemaDef;
    /** In-process result sink for SDK and workflow callers. */
    capture?: StructuredOutputCapture<Static<TSchemaDef>>;
    /** Cross-process result sink for subagent child runtimes. */
    output?: StructuredOutputFileCapture;
    /** Tool name. Defaults to `structured_output`. */
    name?: string;
}
export declare function createStructuredOutputCapture<TValue = unknown>(): StructuredOutputCapture<TValue>;
export declare function createStructuredOutputTool<TSchemaDef extends TSchema>(options: StructuredOutputToolOptions<TSchemaDef>): ToolDefinition<TSchemaDef, Static<TSchemaDef>>;
//# sourceMappingURL=structured-output.d.ts.map