import { IRPCProtocol } from '@opensumi/ide-connection';
import { Uri } from '@opensumi/ide-core-common';
import { IExtensionStorageUri } from '@opensumi/ide-extension-storage/lib/common/storage';
import { IExtHostStorage, IStorageChangeEvent, KeysToAnyValues, KeysToKeysToAnyValue } from '../../../common/vscode';
import { Memento } from '../../../common/vscode/ext-types';
export declare class ExtHostStorage implements IExtHostStorage {
    private _onDidChangeStorage;
    readonly onDidChangeStorage: import("@opensumi/ide-core-common").Event<IStorageChangeEvent>;
    private proxy;
    private _storagePath;
    constructor(rpc: IRPCProtocol);
    getExtensionGlobalStorageUri(extensionId: string): Uri;
    getExtensionStorageUri(extensionId: string): Uri;
    getExtensionLogUri(extensionId: string): Uri;
    getValue<T>(shared: boolean, key: string, defaultValue?: T): Promise<T | KeysToAnyValues>;
    setValue(shared: boolean, key: string, value: object): Promise<void>;
    $updateWorkspaceStorageData(data: KeysToKeysToAnyValue): Promise<void>;
    $acceptStoragePath(paths: IExtensionStorageUri): Promise<void>;
}
export declare class ExtensionMemento implements Memento {
    private readonly id;
    private readonly global;
    private readonly storage;
    private readonly _init;
    private cache;
    private readonly storageListener;
    constructor(id: string, global: boolean, storage: IExtHostStorage);
    get keys(): string[];
    get whenReady(): Promise<ExtensionMemento>;
    get<T>(key: string): T | undefined;
    get<T>(key: string, defaultValue: T): T;
    update(key: string, value: any): Promise<void>;
    dispose(): void;
}
export declare class ExtensionGlobalMemento extends ExtensionMemento {
    setKeysForSync(): void;
}
//# sourceMappingURL=ext.host.storage.d.ts.map