import { TlReaderMap, TlWriterMap } from '@mtcute/tl-runtime';
import { ICorePlatform } from '../types/platform.js';
import { Logger } from '../utils/logger.js';
import { IStorageDriver } from './driver.js';
import { IMtStorageProvider } from './provider.js';
import { AuthKeysService } from './service/auth-keys.js';
import { DefaultDcsService } from './service/default-dcs.js';
import { FutureSaltsService } from './service/future-salts.js';
interface StorageManagerOptions {
    provider: IMtStorageProvider;
    platform: ICorePlatform;
    log: Logger;
    readerMap: TlReaderMap;
    writerMap: TlWriterMap;
}
/**
 * Additional options for {@link StorageManager}, that
 * can be customized by the user.
 *
 * @internal
 */
export interface StorageManagerExtraOptions {
    /**
     * Interval in milliseconds for saving the storage.
     *
     * When saving, the storage is expected to persist
     * all changes to disk, so that they are not lost.
     */
    saveInterval?: number;
    /**
     * Whether to finalize database before exiting.
     *
     * @default  `true`
     */
    cleanup?: boolean;
}
export declare class StorageManager {
    readonly options: StorageManagerOptions & StorageManagerExtraOptions;
    readonly provider: IMtStorageProvider;
    readonly driver: IStorageDriver;
    readonly platform: ICorePlatform;
    readonly log: Logger;
    readonly dcs: DefaultDcsService;
    readonly salts: FutureSaltsService;
    readonly keys: AuthKeysService;
    constructor(options: StorageManagerOptions & StorageManagerExtraOptions);
    private _cleanupRestore?;
    private _load;
    load(): Promise<void>;
    save(): Promise<void>;
    clear(withAuthKeys?: boolean): Promise<void>;
    private _destroy;
    destroy(): Promise<void>;
}
export {};
