import { PerformanceScorecard } from './PerformanceScorecard';
export interface PromotionResult {
    agentId: string;
    promoted: boolean;
    reason: string;
    runs?: number;
    successes?: number;
    score?: number;
}
export interface CatalogPromotionOptions {
    /** Minimum successful runs before a draft can be promoted. Default 3. */
    minSuccesses?: number;
    /** Minimum aggregate score before promotion. Default 4. */
    minScore?: number;
    scorecard?: PerformanceScorecard;
}
export declare class CatalogPromotion {
    private scorecard;
    private minSuccesses;
    private minScore;
    constructor(opts?: CatalogPromotionOptions);
    /** ExecutionRecorder surface — called by CatalogAgentExecutor after a run. */
    recordExecution(agentId: string, success: boolean): void;
    recordOutcome(agentId: string, success: boolean): void;
    /** Promote a draft catalog agent to active if it has earned it. Idempotent:
     *  re-running after promotion is a no-op. Never throws. */
    maybePromote(agentId: string): PromotionResult;
}
