import { ConfigState } from '../common';
import { Logger } from '../../zego.entity';
import { FileUsage } from './model/entity';
export declare class ZipLogStorageContext {
    private _configState;
    private _innerLogger;
    private proxyCtrl?;
    fileConfig: {
        count: number;
        size: number;
    };
    setFileConfig(count?: number, size?: number): void;
    private _dbSaver;
    private _logModel;
    private _loggerInstModel;
    private _fileUsageModel;
    private _dbOpened;
    private _cache;
    private _activeSavingTimer?;
    private _activeSavingPromise?;
    private _dbTaskQueue;
    private _uploadTaskQueue;
    private _zipLogUploader;
    private _zipLogBuilder;
    private _zipLogEnabled;
    private _userLastUploadTime;
    private _userLastUploadSuccess;
    private _userUploading;
    constructor(_configState: ConfigState, _innerLogger: Logger, proxyCtrl?: any);
    get dbOpened(): boolean;
    get _appID(): number;
    _instanceID?: number;
    _lastLogTime?: number;
    _userIds: string[];
    /**
     * 删除日志，预留足够多用于存储
     */
    private _clearOneUsedFile;
    checkUsingFile(): Promise<FileUsage>;
    /**
     * 其他用户的历史日志并上报（日志）
     */
    uploadLegacyLog(callByUser: boolean, excludeCurrentUser?: boolean, times?: number): Promise<void>;
    _dbTryOpenPromise: Promise<void> | undefined;
    openDB(): Promise<void>;
    _registerInstance(writeTransaction?: IDBTransaction): Promise<void>;
    private _shouldOpenDB;
    enable(): void;
    /**
     * 普通日志
     * @param log debug、info、warn、error log
     */
    saveLog(log: string): void;
    /**
     * 如果云控开启 zip_log, 全部缓存日志存入 indexDB；没有开启则依旧保留在cache.queue中
     * @returns
     */
    private _activeSaving;
    static isEnvSupport(): boolean;
    /**循环单次上报3w行 */
    private _uploadTask;
    /**
     * 将 indexDB 中的所有日志进行压缩和上报，并从indexDB删除
     * SDK 内部发起
     */
    private _startASdkUploadTask;
    /**
     * 将 indexDB 中的所有日志进行压缩和上报，并从indexDB删除
     * 用户调接口触发内部发起
     */
    private _startAUserUploadTask;
    setUploadUrl(urls: string[]): void;
    /**
     * 用户控制开始上传当前缓存的日志
     */
    startUpload(callByUser: boolean, force?: boolean): Promise<void>;
    /**
     * 标记结束存储日志实例，
     * @returns
     */
    disable(): Promise<boolean>;
    onUploadLog(fileSize: number, file_name: string, error?: {
        code: number;
        message: string;
    }): void;
    destroy(): void;
}
