export type MatrixCellAvailability = 'valid' | 'unknown-value' | 'unvalidated';
export interface MatrixCellAvailabilityResult {
    availability: MatrixCellAvailability;
    allowedValues?: string[];
    message?: string;
}
export type MatrixCellAvailabilityResponse = MatrixCellAvailability | MatrixCellAvailabilityResult;
export interface CursorAgentRunOptions {
    cwd: string;
    env: NodeJS.ProcessEnv;
}
export interface CursorAgentRunResult {
    ok: boolean;
    stdout: string;
    stderr: string;
}
export interface CodexRunOptions {
    cwd: string;
    env: NodeJS.ProcessEnv;
}
export interface CodexRunResult {
    ok: boolean;
    stdout: string;
    stderr: string;
}
export interface AvailabilityOracleDependencies {
    pathExists: (path: string) => Promise<boolean>;
    runCursorAgent: (args: string[], options: CursorAgentRunOptions) => Promise<CursorAgentRunResult>;
    runCodex: (args: string[], options: CodexRunOptions) => Promise<CodexRunResult>;
    env?: NodeJS.ProcessEnv;
}
export interface ValidateMatrixCellOptions {
    cwd: string;
    detailed?: boolean;
    env?: NodeJS.ProcessEnv;
    dependencies?: Partial<AvailabilityOracleDependencies>;
    target?: {
        model?: string;
        effort?: string;
    } | null;
}
export interface CursorTaskProbeResult extends MatrixCellAvailabilityResult {
    decisive: boolean;
    evidence: 'task-probe' | 'subagent-allow-list' | 'none';
}
export interface CursorCatalogResult {
    status: 'resolved' | 'unavailable' | 'failed';
    candidates: string[];
    sourceCommand: 'models' | 'list-models' | null;
    diagnostic: string | null;
}
export interface CursorMaterializedModelDiagnostic {
    ladderModelId: string;
    availability: 'available' | 'missing' | 'unvalidated';
    evidence: 'broad-cli-catalog';
    message: string;
}
export declare function normalizeMatrixCellAvailability(result: MatrixCellAvailabilityResponse): MatrixCellAvailabilityResult;
export declare function probeCursorSubagentModel(value: string, options: ValidateMatrixCellOptions): Promise<CursorTaskProbeResult>;
export declare function resolveCursorModelCatalog(options: ValidateMatrixCellOptions): Promise<CursorCatalogResult>;
export declare function diagnoseCursorMaterializedModels(ladderModelIds: readonly string[], options: ValidateMatrixCellOptions): Promise<CursorMaterializedModelDiagnostic[]>;
export declare function validateCursorSubagentModel(value: string, options: ValidateMatrixCellOptions): Promise<MatrixCellAvailabilityResult>;
export declare function validateMatrixCell(provider: string, value: string, options: ValidateMatrixCellOptions): Promise<MatrixCellAvailabilityResponse>;
//# sourceMappingURL=availability.d.ts.map