import { HttpErrorHandlerConfig } from './http-error-handler.config';
import { ErrorMappingHandler } from '../../ux-models/ux-error-feedback.model';
import { UserConfig } from './user.config';
import { I18nConfig, I18nLoaderConfig, I18nResource } from './i18n.config';
import { LogAppenderType, LogConfig } from './log.config';
import { LocaleServiceConfig } from './locale.config';
import { LogLevel } from '../log';
export type EuiAppConfig = EuiAppJsonConfig & EuiAppHandlersConfig;
export interface EuiAppJsonConfig<T = any> {
    global: GlobalConfig;
    modules?: ModulesConfig;
    versions?: VersionsConfig;
    [key: string]: GlobalConfig | T;
}
export interface EuiAppHandlersConfig<T = any> {
    httpErrorHandler?: HttpErrorHandlerConfig;
    errorMappingHandler?: ErrorMappingHandler;
    log?: LogConfig;
    customHandler?: {
        [handlerId: string]: T;
    };
}
export interface GlobalConfig<T = any> {
    /** show/hide connection status */
    showConnectionStatus?: ConnectionStatus;
    user?: UserConfig;
    i18n?: I18nConfig;
    locale?: LocaleServiceConfig;
    eui?: EuiGlobalConfig;
    [key: string]: boolean | UserConfig | I18nConfig | LocaleServiceConfig | EuiGlobalConfig | ConnectionStatus | T;
}
export interface EuiGlobalConfig {
    assetsBaseUrl?: string;
    theme?: string;
}
export interface ConnectionStatus {
    messageBox: {
        lifespan: number;
    };
    enabled: boolean;
}
export interface ModulesConfig {
    [module: string]: ModuleConfig;
}
export interface ModuleConfig<T = any> extends LogConfig, I18nLoaderConfig {
    [key: string]: string | string[] | I18nResource | I18nResource[] | LogLevel | LogAppenderType | LogAppenderType[] | T;
}
export interface VersionsConfig {
    app?: string;
    [module: string]: string;
}
//# sourceMappingURL=eui-app-config.d.ts.map