export type CatalogVoteSource = 'explicit' | 'planner' | 'knowledge-fabric' | 'runtime-resolver' | 'scorer';
export type CatalogVoteConfidence = 'high' | 'medium' | 'low';
export type CatalogArtifactClass = 'engineering-core' | 'operator-layer' | 'general' | 'out-of-domain';
export interface CatalogVote<TItem = unknown> {
    value: string;
    item?: TItem;
    score: number;
    source: CatalogVoteSource;
    confidence: CatalogVoteConfidence;
    reasons: string[];
}
export interface RankedCatalogVote<TItem = unknown> extends CatalogVote<TItem> {
    artifactClass?: CatalogArtifactClass;
    history?: unknown;
    eligible: boolean;
    blockedReason?: string;
}
export declare function rankCatalogVotes<TItem>(votes: CatalogVote<TItem>[], options: {
    artifactId: (vote: CatalogVote<TItem>) => string;
    artifactName: (vote: CatalogVote<TItem>) => string;
    sourcePrecedence: (source: CatalogVoteSource) => number;
    historyScore: (artifactId: string) => number;
    historyRecord: (artifactId: string) => unknown;
    classify: (vote: CatalogVote<TItem>) => CatalogArtifactClass | undefined;
    eligible: (vote: CatalogVote<TItem> & {
        artifactClass?: CatalogArtifactClass;
    }) => {
        eligible: boolean;
        blockedReason?: string;
    };
}): RankedCatalogVote<TItem>[];
export declare function splitCatalogVotes<TItem>(ranked: RankedCatalogVote<TItem>[], options: {
    limit: number;
    rejectLimit?: number;
    isSelected: (vote: RankedCatalogVote<TItem>) => boolean;
}): {
    selected: RankedCatalogVote<TItem>[];
    rejected: RankedCatalogVote<TItem>[];
};
