/**
 * Transforms a JSON Schema to be compatible with Gemini's OpenAPI 3.0 subset
 * Used for converting MCP tool schemas to Gemini function declarations
 *
 * The changes are mostly structural/validation-level and shouldn't break core
 * tool functionality:
 * - Core parameter structure is preserved
 * - Valid required fields are maintained (invalid ones are filtered out)
 * - Basic types are converted accurately
 * - anyOf variants are individually validated and fixed
 *
 * Key transformations for Gemini compatibility:
 * - Filters required fields that don't exist in properties
 * - Ensures anyOf variants follow Gemini's strict validation rules
 * - Removes unsupported JSON Schema features
 * - Converts type arrays to nullable single types where possible
 *
 * For the OpenAPI subset requirement for function declarations
 *    see: https://ai.google.dev/api/caching#Schema
 * For the OpenAPI 3.0 subset limitations vs full JSON Schema
 *    see: https://ai.google.dev/gemini-api/docs/structured-output
 */
import { JsonSchemaDraft7, TransformResult } from "./schema-adapter-types.js";
type JsonSchema = JsonSchemaDraft7;
interface GeminiCompatibleSchema {
    type?: string;
    format?: string;
    description?: string;
    nullable?: boolean;
    enum?: string[];
    maxItems?: number;
    minItems?: number;
    properties?: Record<string, GeminiCompatibleSchema>;
    required?: string[];
    propertyOrdering?: string[];
    items?: GeminiCompatibleSchema;
    minimum?: number;
    maximum?: number;
    minLength?: number;
    maxLength?: number;
    pattern?: string;
    example?: unknown;
    anyOf?: GeminiCompatibleSchema[];
    default?: unknown;
}
export declare function makeJsonSchemaGeminiCompatible(schema: JsonSchema, defsContext?: Record<string, JsonSchema>): TransformResult;
/**
 * Specifically transforms MCP tool schemas for Gemini function declarations
 */
export declare function transformMcpToolForGemini(mcpTool: {
    name: string;
    description?: string;
    inputSchema?: JsonSchema;
}): {
    functionDeclaration: {
        name: string;
        description: string | undefined;
        parameters: JsonSchemaDraft7;
    };
    wasTransformed: boolean;
    changesSummary: string | undefined;
};
/**
 * Enhanced utility to validate that a schema only uses Gemini-supported fields
 * and follows all Gemini validation rules
 */
export declare function validateGeminiSchema(schema: GeminiCompatibleSchema, path?: string): string[];
export {};
