import type { JSONSchema } from '../schema-context';
/**
 * OpenAPI discriminator configuration
 */
export interface OpenAPIDiscriminator {
    /** The name of the property in the payload that will hold the discriminator value */
    propertyName: string;
    /** An object to hold mappings between payload values and schema names or references */
    mapping?: Record<string, string>;
}
/**
 * BeatUI discriminator configuration (fallback)
 */
export interface BeatUIDiscriminator {
    /** The property name to use for discrimination */
    key: string;
    /** Optional mapping of values to schema indices */
    mapping?: Record<string, number>;
}
/**
 * Extract discriminator configuration from a oneOf schema
 */
export declare function getDiscriminatorConfig(schema: JSONSchema): {
    discriminator: OpenAPIDiscriminator | BeatUIDiscriminator | null;
    type: 'openapi' | 'beatui' | null;
};
/**
 * Determine which oneOf branch should be selected based on discriminator value
 */
export declare function selectOneOfBranch(oneOfSchemas: JSONSchema[], discriminatorConfig: {
    discriminator: OpenAPIDiscriminator | BeatUIDiscriminator | null;
    type: 'openapi' | 'beatui' | null;
}, currentValue: unknown): number | null;
/**
 * Get the discriminator property name from configuration
 */
export declare function getDiscriminatorPropertyName(discriminatorConfig: {
    discriminator: OpenAPIDiscriminator | BeatUIDiscriminator | null;
    type: 'openapi' | 'beatui' | null;
}): string | null;
/**
 * Create a discriminator value for a specific oneOf branch
 */
export declare function createDiscriminatorValue(oneOfSchemas: JSONSchema[], branchIndex: number, discriminatorConfig: {
    discriminator: OpenAPIDiscriminator | BeatUIDiscriminator | null;
    type: 'openapi' | 'beatui' | null;
}): Record<string, unknown> | null;
/**
 * Validate that a oneOf schema is properly configured for discriminator usage
 */
export declare function validateDiscriminatorConfiguration(oneOfSchemas: JSONSchema[], discriminatorConfig: {
    discriminator: OpenAPIDiscriminator | BeatUIDiscriminator | null;
    type: 'openapi' | 'beatui' | null;
}): {
    valid: boolean;
    errors: string[];
};
