import { Plugin, SecretsExt } from '../common/plugin-api-rpc';
import { RPCProtocol } from '../common/rpc-protocol';
import { Event } from '@theia/core/lib/common/event';
import { Disposable, DisposableGroup } from '@theia/core';
import * as theia from '@theia/plugin';
export interface PasswordChange {
    extensionId: string;
    key: string;
}
export declare const InternalSecretsExt: unique symbol;
export interface InternalSecretsExt extends SecretsExt {
    get(extensionId: string, key: string): Promise<string | undefined>;
    store(extensionId: string, key: string, value: string): Promise<void>;
    delete(extensionId: string, key: string): Promise<void>;
    onDidChangePassword(listener: (e: PasswordChange) => any, thisArgs?: any, disposables?: DisposableGroup): Disposable;
}
export declare class SecretsExtImpl implements InternalSecretsExt {
    private proxy;
    private onDidChangePasswordEmitter;
    readonly onDidChangePassword: Event<PasswordChange>;
    constructor(rpc: RPCProtocol);
    $onDidChangePassword(e: {
        extensionId: string;
        key: string;
    }): Promise<void>;
    get(extensionId: string, key: string): Promise<string | undefined>;
    store(extensionId: string, key: string, value: string): Promise<void>;
    delete(extensionId: string, key: string): Promise<void>;
}
export declare class SecretStorageExt implements theia.SecretStorage {
    protected readonly id: string;
    readonly secretState: InternalSecretsExt;
    private onDidChangeEmitter;
    readonly onDidChange: Event<theia.SecretStorageChangeEvent>;
    constructor(pluginDescription: Plugin, secretState: InternalSecretsExt);
    get(key: string): Promise<string | undefined>;
    store(key: string, value: string): Promise<void>;
    delete(key: string): Promise<void>;
}
//# sourceMappingURL=secrets-ext.d.ts.map