import { EuiAppHandlersConfig, EuiAppJsonConfig } from './eui-app-config';
/**
 * The EuiEnvConfig is the environment specific configuration object for the EUI library.
 */
export interface EuiEnvConfig<T = unknown> {
    /**
     * The envAppHandlersConfig contains the environment specific handlers' configuration.
     */
    envAppHandlersConfig?: EuiAppHandlersConfig;
    /**
     * The envDynamicConfig contains the environment specific dynamic configuration.
     */
    envDynamicConfig?: EnvDynamicConfig;
    /**
     * The loadedEnvDynamicConfig contains the loaded environment specific dynamic configuration.
     */
    loadedEnvDynamicConfig?: EuiAppJsonConfig;
    [key: string]: EuiAppHandlersConfig | EnvDynamicConfig | EuiAppJsonConfig | T;
}
/**
 * The EnvDynamicConfig is the dynamic configuration object for the EUI library that uses the dynamic configuration to
 * update the configuration at runtime.
 * The dynamic configuration can be fetched from a local path or a web service, can be merged or deep merged with the
 * default configuration at runtime and can be awaited for a specific duration to resolve the request.
 */
export interface EnvDynamicConfig {
    /** uri which can be local path or webservice, should store/return json-config which implements EuiAppJsonConfig*/
    uri: string;
    /**
     * Dynamic config will be awaiting 2000ms(default) to resolve the request,
     * to change this duration you can use this parameter
     */
    configTimeout?: number;
    /**
     * Dynamic configuration overwrites to the config properties of EuiAppJsonConfig
     * in the default configuration (global, modules, versions, [key: string]: any; )
     * To merge the data for specific config property/ies you can define them as array, e.g.['modules','global']
     * Note: When deepMerge:true is not provided, If there is common sub property for the merged object,
     * dynamic fetched config will be overwriting it, otherwise It will be merged deeply.
     */
    merge?: Array<string>;
    /**
     * If merge array is provided, the way of merging will be one-level merge as default.
     * To have deep merge functionality, you have to define deepMerge:true
     */
    deepMerge?: boolean;
}
//# sourceMappingURL=eui-env-config.d.ts.map