/**
 * ISaveCompact contains logic for trimming the number of save files.
 */
export interface ISaveCompactor {
    /**
     * Trim takes a data mapping of dates to items, and returns the items
     * which should be *removed*. Assumes data is sorted in ascending
     * order by date.
     */
    trim<T>(data: [Date, T][], now: number): T[];
}
/**
 * Options passed to the IExponentialSaveCompactorOptions. It defines
 * buckets, in which at most one save will be retained.
 */
export interface IExponentialSaveCompactorOptions {
    /**
     * The length of the base bucket.
     */
    baseBucketMs: number;
    /**
     * How much to increase the bucket size at each step. For instance, if
     * the baseBucketMs is 10000 and the multiplier is 2, the buckets
     * will be 10s, 20s, 40s, and so on.
     */
    bucketIncreaseMultiplier: number;
    /**
     * Maximum bucket size.
     */
    bucketMaxMs: number;
    /**
     * Maximum amount of time to keep save files for.
     */
    maxRetentionMs: number;
}
/**
 * ExponentialSaveCompactor stores saves in backed-off buckets, so older
 * saves are kept with lesser granularity.
 */
export declare class ExponentialSaveCompactor implements ISaveCompactor {
    private readonly options;
    constructor(options: IExponentialSaveCompactorOptions);
    trim<T>(data: [Date, T][], now: number): T[];
}
