import { URI } from '@vscode-alt/monaco-editor/esm/vs/base/common/uri';
import * as cdeops from 'cdeops';
import { WebExtHostOrganization } from './ext-host-organization';
import { WebExtHostConfigurationShape, ClientThreadConfigurationShape } from '@adminide-stack/extension-api/lib/protocol/client.protocol';
import { IOrganizationConfigurationChangeEventData, IConfigurationInitData } from '@adminide-stack/extension-api/lib/protocol/common.protocol';
import { ExtensionIdentifier } from '@workbench-stack/core';
import { Observable, Unsubscribable } from 'rxjs';
export declare class WebExtHostConfiguration implements WebExtHostConfigurationShape, Unsubscribable {
    private readonly _proxy;
    private readonly _extHostOrganization;
    private readonly _barrier;
    private _actual;
    constructor(proxy: ClientThreadConfigurationShape, extHostOrganization: WebExtHostOrganization);
    getConfigProvider(): Promise<ExtHostConfigProvider>;
    $initializeConfiguration(data: IConfigurationInitData): void;
    $acceptConfigurationChanged(data: IConfigurationInitData, eventData: IOrganizationConfigurationChangeEventData): void;
    unsubscribe(): void;
}
export declare class ExtHostConfigProvider {
    private changed$;
    private readonly _proxy;
    private readonly _extHostOrganization;
    private _configurationScopes;
    private _configuration;
    constructor(proxy: ClientThreadConfigurationShape, extHostOrganization: WebExtHostOrganization, data: IConfigurationInitData);
    onDidChangeConfiguration: Observable<cdeops.ConfigurationChangeEvent>;
    $acceptConfigurationChanged(data: IConfigurationInitData, eventData: IOrganizationConfigurationChangeEventData): void;
    getConfiguration(section?: string, resource?: URI, extensionId?: ExtensionIdentifier): cdeops.OrganizationConfiguration;
    private _toReadonlyValue;
    private _validateConfigurationAccess;
    private _toConfigurationChangeEvent;
    private static parse;
    private static parseConfigurationModel;
}
