import type { JTDSchemaJson, SignalDescriptorJson } from '../api';
/** JSON Schema subset supported by Anthropic structured output. */
export interface AnthropicSchema {
    type?: string | string[];
    description?: string;
    properties?: Record<string, AnthropicSchema>;
    required?: string[];
    additionalProperties?: false;
    enum?: (string | number | boolean | null)[];
    const?: string | number | boolean | null;
    format?: string;
    items?: AnthropicSchema;
    anyOf?: AnthropicSchema[];
    $defs?: Record<string, AnthropicSchema>;
    $ref?: string;
}
export interface ConvertSuccess {
    success: true;
    data: unknown;
}
export interface ConvertFailure {
    success: false;
    errors: string[];
}
export type ConvertResult = ConvertSuccess | ConvertFailure;
export interface AnthropicConversionResult {
    /** Anthropic structured output compatible JSON Schema. */
    schema: AnthropicSchema;
    /** Whether the schema supports strict mode. False for unstructured (empty) schemas. */
    strict: boolean;
    /** Convert Anthropic JSON output back to JTD-conforming JSON. */
    convert: (anthropicJson: unknown) => ConvertResult;
}
/**
 * Convert a JTD schema to an Anthropic structured output compatible JSON Schema,
 * with a converter function that transforms and validates Anthropic output against
 * the original JTD schema.
 *
 * @throws {Error} if the JTD schema contains recursive definitions (not supported by Anthropic).
 * @throws {Error} if the JTD schema contains unresolved refs.
 */
export declare function convertToAnthropicSchema(jtdSchema: JTDSchemaJson): AnthropicConversionResult;
/**
 * Convert a SignalDescriptorJson to an Anthropic structured output compatible JSON Schema.
 *
 * Handles single and multi-format signals:
 * - Single format: schema is the converted format directly.
 * - Multiple formats: wrapper object with genuinely optional `format_0`, `format_1`, etc.
 *
 * @throws {Error} if the descriptor has no formats.
 */
export declare function convertSignalToAnthropicSchema(descriptor: SignalDescriptorJson): AnthropicConversionResult;
//# sourceMappingURL=index.d.ts.map