import type { ConsolidationJob } from "@oscharko-dev/keiko-memory-consolidation";
export interface ConsolidationJobSettings {
    readonly jaccardThreshold: number;
    readonly staleConfidenceThreshold: number;
    readonly maxAgeMs: number;
    readonly maxClustersPerRun: number;
}
export interface ConsolidationJobSelection {
    readonly scopes: readonly import("@oscharko-dev/keiko-contracts").MemoryScope[];
    readonly types?: readonly import("@oscharko-dev/keiko-contracts").MemoryType[] | undefined;
    readonly statuses?: readonly import("@oscharko-dev/keiko-contracts").MemoryStatus[] | undefined;
    readonly includeExpired: boolean;
}
export interface ConsolidationJobRecord {
    readonly job: ConsolidationJob;
    readonly createdAt: number;
    readonly selection: ConsolidationJobSelection;
    readonly settings: ConsolidationJobSettings;
    readonly memoryCount: number;
    readonly cancelRequested: boolean;
}
export interface RegisterConsolidationJobInput {
    readonly job: ConsolidationJob;
    readonly createdAt: number;
    readonly selection: ConsolidationJobSelection;
    readonly settings: ConsolidationJobSettings;
    readonly memoryCount: number;
}
export interface ConsolidationJobRegistryOptions {
    readonly maxJobs?: number | undefined;
    readonly now?: (() => number) | undefined;
}
export declare class ConsolidationJobRegistryLimitError extends Error {
    constructor(limit: number);
}
export interface ConsolidationJobRegistry {
    readonly register: (input: RegisterConsolidationJobInput) => ConsolidationJobRecord;
    readonly get: (jobId: string) => ConsolidationJobRecord | undefined;
    readonly setRunning: (jobId: string, job: ConsolidationJob) => ConsolidationJobRecord | undefined;
    readonly complete: (jobId: string, job: ConsolidationJob, memoryCount: number) => ConsolidationJobRecord | undefined;
    readonly fail: (jobId: string, job: ConsolidationJob, error: string, memoryCount: number) => ConsolidationJobRecord | undefined;
    readonly requestCancel: (jobId: string) => ConsolidationJobRecord | undefined;
    readonly size: () => number;
}
export declare function createConsolidationJobRegistry(options?: ConsolidationJobRegistryOptions): ConsolidationJobRegistry;
//# sourceMappingURL=memory-consolidation-registry.d.ts.map