import { ApplicationRef } from '@angular/core';
import { Store } from '@ngrx/store';
import { Configuration, CustomConfig } from '@o3r/core';
import { Observable } from 'rxjs';
import { ConfigurationStore } from '../stores';
import { ConfigurationDevtoolsServiceOptions } from './configuration-devtools.interface';
import * as i0 from "@angular/core";
export declare class OtterConfigurationDevtools {
    protected store: Store<ConfigurationStore>;
    private readonly appRef;
    private readonly options;
    /** Stream of configurations */
    readonly configurationEntities$: Observable<CustomConfig[]>;
    constructor(store: Store<ConfigurationStore>, appRef: ApplicationRef, options: ConfigurationDevtoolsServiceOptions);
    /**
     * Get configuration name based on input information
     * @param selector Selector for a component configuration. It can be a string in the form library#componentName (i.e: @my-lib/shared-components#HeaderContComponent)
     * or an object with the component and library names (i.e: {library:"@my-lib/shared-components", componentName:'HeaderContComponent'})
     * @param isFallbackName Determine if the name requested is a fallback name
     * @returns string in the format library#componentName (i.e: "@my-lib/shared-components#HeaderContComponent")
     */
    getComponentConfigName(selector: string | {
        library?: string;
        componentName: string;
    }, isFallbackName?: boolean): string;
    /**
     * Get the list of components which have a configuration loaded in the store
     */
    getComponentsWithConfiguration(): Promise<string[]>;
    /**
     * Set a specified value of a component configuration
     * @param selector Selector for a component configuration
     * @param configProperty Name of the configuration property to set
     * @param configValue Value of the configuration property to set
     */
    setDynamicConfig(selector: string | {
        library?: string;
        componentName: string;
    }, configProperty: string, configValue: any): void;
    /**
     * Get the configuration for a specific component
     * @param selector Selector for a component configuration. It can be a string in the form library#configurationName (i.e: @my-lib/shared-components#HeaderPresConfig)
     * or an object with the configuration and library names (i.e: {library:"@my-lib/shared-components", componentName:'HeaderPresConfig'})
     */
    getCurrentConfigurationFor(selector: string | {
        library?: string;
        componentName: string;
    }): Promise<Configuration>;
    /**
     * Get the whole configuration of the application
     */
    getConfiguration(): Promise<CustomConfig<Partial<Configuration>>[]>;
    /**
     * Load a json configuration
     * @param configurations configurations to load
     */
    loadConfiguration(configurations: string | CustomConfig<Configuration>[]): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<OtterConfigurationDevtools, [null, null, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<OtterConfigurationDevtools>;
}
//# sourceMappingURL=configuration-devtools.service.d.ts.map