import type { JTDSchemaJson, SignalDescriptorJson } from '../api';
/** JSON Schema subset supported by Gemini 3+ structured output. */
export interface GeminiSchema {
    type?: string | string[];
    title?: string;
    description?: string;
    properties?: Record<string, GeminiSchema>;
    required?: string[];
    additionalProperties?: boolean | GeminiSchema;
    enum?: (string | number | null)[];
    format?: string;
    items?: GeminiSchema;
    minimum?: number;
    maximum?: number;
}
export interface ConvertSuccess {
    success: true;
    data: unknown;
}
export interface ConvertFailure {
    success: false;
    errors: string[];
}
export type ConvertResult = ConvertSuccess | ConvertFailure;
export interface GeminiConversionResult {
    /** Gemini 3+ compatible JSON Schema for structured output. */
    schema: GeminiSchema;
    /** Convert Gemini JSON output back to JTD-conforming JSON. */
    convert: (geminiJson: unknown) => ConvertResult;
}
/**
 * Convert a JTD schema to a Gemini 3+ compatible JSON Schema, with a
 * converter function that transforms and validates Gemini output against
 * the original JTD schema.
 *
 * @throws {Error} if the JTD schema contains forms that cannot be represented.
 */
export declare function convertToGeminiSchema(jtdSchema: JTDSchemaJson): GeminiConversionResult;
/**
 * Convert a SignalDescriptorJson to a Gemini 3+ compatible JSON Schema.
 *
 * Handles single and multi-format signals:
 * - Single format: schema is the converted format directly.
 * - Multiple formats: schema is a wrapper object with `format_0`, `format_1`, etc.
 *   as optional properties. The convert function extracts the selected format.
 *
 * MIME type formats are mapped to base64 strings.
 *
 * @throws {Error} if the descriptor has no formats.
 */
export declare function convertSignalToGeminiSchema(descriptor: SignalDescriptorJson): GeminiConversionResult;
//# sourceMappingURL=index.d.ts.map