import { Emitter } from '@difizen/mana-common';
import type { Contribution } from '@difizen/mana-syringe';
import { ApplicationContribution } from '../application';
import { ConfigurationCache } from './configuration-cache';
import type { ConfigurationNode } from './configuration-protocol';
import { ConfigurationProvider } from './configuration-provider';
import { ConfigurationRegistry } from './configuration-registry';
import type { ConfigurationStorage } from './configuration-storage';
import { SchemaValidator } from './validation';
export declare class ConfigurationService implements ApplicationContribution {
    protected providers: Contribution.Provider<ConfigurationProvider>;
    protected readonly configurationRegistry: ConfigurationRegistry;
    protected readonly schemaValidator: SchemaValidator;
    protected readonly configurationCache: ConfigurationCache;
    protected readonly onConfigurationValueChangeEmitter: Emitter<{
        key: string;
        value: any;
    }>;
    readonly onConfigurationValueChange: import("@difizen/mana-common").Event<{
        key: string;
        value: any;
    }>;
    protected storageMap: Map<ConfigurationStorage, ConfigurationProvider>;
    onWillStart(): Promise<void>;
    prefetch(): Promise<void>;
    has<T>(node: ConfigurationNode<T>, options?: {
        useCache?: boolean;
    }): Promise<boolean>;
    get<T>(node: ConfigurationNode<T>, defaultValue?: T, options?: {
        useCache?: boolean;
    }): Promise<T>;
    /**
     *
     * @param node 配置
     * @param value 配置的值
     * @param options
     * @returns
     */
    set<T>(node: ConfigurationNode<T>, value: T, options?: {
        useCache?: boolean;
        validate?: boolean;
    }): Promise<void>;
    remove<T>(node: ConfigurationNode<T>): Promise<void>;
    protected getConfigurationProviderByStorage(storage: ConfigurationStorage): ConfigurationProvider | undefined;
}
//# sourceMappingURL=configuration-service.d.ts.map