export interface Data<V> {
    expire?: number;
    value: V;
}
export declare const defaultOpts: {
    filename: string;
    expiredCheckDelay: number;
    writeDelay: number;
    encode: (val: any) => any;
    decode: (val: any) => any;
};
export declare class KeyvFile<V = any> {
    ttlSupport: boolean;
    private _opts;
    private _cache;
    private _lastExpire;
    private _saveTimer?;
    constructor(opts?: Partial<typeof defaultOpts>);
    isExpired(data: Data<V>): boolean;
    get<T = V>(key: string, defaults: T): T;
    get<T = V>(key: string): T | undefined;
    has(key: string): boolean;
    keys(): string[];
    /**
     *
     * @param key
     * @param value
     * @param ttl time-to-live, seconds
     */
    set<T = V>(key: string, value: T, ttl?: number): void;
    delete<T = V>(key: string): T;
    clear(): void;
    clearExpire(): void;
    saveToDisk(): Promise<void>;
    private _savePromise?;
    save(): Promise<any>;
}
export default KeyvFile;
