import type { DispatchMatrixCellRef } from '../../config/dispatch-matrix.js';
import { probeCursorSubagentModel, resolveCursorModelCatalog, validateMatrixCell, type CursorCatalogResult, type CursorTaskProbeResult, type MatrixCellAvailability, type ValidateMatrixCellOptions } from './availability.js';
export type DispatchValidationEvidence = 'task-probe' | 'subagent-allow-list' | 'catalog-only' | 'none';
export interface DispatchMatrixValidationResult {
    ref: DispatchMatrixCellRef;
    status: MatrixCellAvailability;
    evidence: DispatchValidationEvidence;
    catalogPresence: boolean | null;
    diagnostic: string;
}
export interface DispatchValidationPassOptions extends Omit<ValidateMatrixCellOptions, 'detailed' | 'target'> {
    validateMatrixCell?: typeof validateMatrixCell;
    probeCursorSubagentModel?: typeof probeCursorSubagentModel;
    resolveCursorModelCatalog?: typeof resolveCursorModelCatalog;
}
interface MemoizedCursorTaskProbe {
    result: CursorTaskProbeResult;
    diagnostic: string;
}
export interface DispatchValidationPassContext {
    cursorCatalog: Promise<CursorCatalogResult> | null;
    cursorTaskProbes: Map<string, Promise<MemoizedCursorTaskProbe>>;
    options: DispatchValidationPassOptions;
}
export declare function createDispatchValidationPassContext(options?: DispatchValidationPassOptions): DispatchValidationPassContext;
export declare function validateDispatchMatrixRefs(refs: DispatchMatrixCellRef[], context: DispatchValidationPassContext): Promise<DispatchMatrixValidationResult[]>;
export {};
//# sourceMappingURL=dispatch-validation.d.ts.map