import EventEmitter from 'events';
import type { KeyvStoreAdapter } from 'keyv';
export * from './make-field';
export interface Options {
    deserialize: (val: string | Buffer) => any;
    dialect: string;
    /** milliseconds */
    expiredCheckDelay: number;
    filename: string;
    serialize: (val: any) => string | Buffer;
    /** milliseconds */
    writeDelay: number;
    /** create lock file and check if exists */
    checkFileLock: boolean;
    /**
     * default: false
     * if true, will store key values in seperated file as `opts.filename+key`
     */
    separatedFile: boolean;
}
export declare const defaultOpts: Options;
export interface WrappedValue<T = any> {
    value: T;
    expire?: number;
}
export declare class KeyvFile extends EventEmitter implements KeyvStoreAdapter {
    ttlSupport: boolean;
    namespace?: string;
    opts: Options;
    private _data;
    private _lastExpire;
    private _separated;
    constructor(options?: Partial<Options>);
    private _loadDataSync;
    private get _lockFile();
    acquireFileLock(): void;
    releaseFileLock(): void;
    get<Value>(key: string): Promise<Value | undefined>;
    getSync<Value>(key: string): Value | undefined;
    getMany<Value>(keys: string[]): Promise<Array<Value | undefined>>;
    /**
     * Note: `await kv.set()` will wait <options.writeDelay> millseconds to save to disk, it would be slow. Please remove `await` if you find performance issues.
     * @param key
     * @param value
     * @param ttl
     * @returns
     */
    set(key: string, value: any, ttl?: number): Promise<any>;
    delete(key: string): Promise<boolean>;
    deleteMany(keys: string[]): Promise<boolean>;
    clear(): Promise<any>;
    has(key: string): Promise<boolean>;
    private isExpired;
    private _getWithExpire;
    private clearExpire;
    private saveToDisk;
    private _savePromise?;
    private save;
    disconnect(): Promise<void>;
    iterator(namespace?: string): AsyncGenerator<any[], void, unknown>;
}
export default KeyvFile;
