declare type OnEvicted = (a: string, obj: Item["Object"] | null) => null;
declare class Item {
    Expiration: number;
    Object: any;
    constructor(Object: any, Expiration: number);
    Expired(): boolean;
}
export declare class Cache {
    defaultExpiration: number;
    items: Record<string, Item>;
    onEvicted: OnEvicted;
    janitor: any;
    constructor(defaultExpiration: number, items: Record<string, Item>);
    Set(k: string, x: any, d: number): Promise<void>;
    set(k: string, x: any, d: number): void;
    SetDefault(k: string, x: any): void;
    Get(k: string): Promise<[Item["Object"], boolean]>;
    GetWithExpiration(k: string): Promise<[Item["Object"], Item["Expiration"], boolean]>;
    get(k: string): [Item["Object"], boolean];
    Add(k: string, x: any, d: number): Promise<Error | null>;
    Replace(k: string, x: any, d: number): Promise<any>;
    Delete(k: string): Promise<void>;
    delete(k: string): [Item["Object"] | null, boolean];
    DeleteExpired(): Promise<void>;
    OnEvicted(fn: OnEvicted): Promise<void>;
    Items(): Promise<Record<string, Item>>;
    ItemCount(): Promise<number>;
    Flush(): Promise<void>;
    stopJanitor(): void;
    runJanitor(interval: number): void;
}
declare function New(defaultExpiration: number, cleanUpInterval: number): Cache;
declare function NewFrom(defaultExpiration: number, cleanUpInterval: number, items: Record<string, Item>): Cache;
export { New, NewFrom };
