import URLEndpoint from './Http/URLEndpoint';
type ConfigKeys = {
    [key: string]: string | number | boolean;
};
export interface ConfigurationRegion {
    getApiEndpoint(): URLEndpoint;
    getMonitoringEndpoint(): URLEndpoint;
    getAuthenticationEndpoint(): URLEndpoint;
}
/**
 * default implementation uses internal definitions
 */
export interface IConfigurationProvider {
    getApiEndpoint(region: string): string;
    getMonitoringEndpoint(region: string): string;
    getAuthenticationEndpoint(region: string): string;
    getGeneralEnvApiEndpoint(region: string): string;
    getRegionDiscoveryEndpoint(): string;
    getDefaultRegion(): string;
    getRegions(): string[];
    getClientId(): string;
    isUserAnalyticsEnabled(): boolean;
    getUserAnalyticsApiKey(): string;
    getCommonRegionConfigKeys(): ConfigKeys;
    getRegionSpecificConfigKeys(): {
        [regionName: string]: ConfigKeys;
    };
    getFullConfig(): WireConfig;
}
export type FetchRegionsResponse = {
    default_region: WireConfig['default_region'];
    regions: WireConfig['regions'];
};
export type ConfigurationProviderConstructorProps = {
    clientId?: string;
    config: WireConfig;
    fallbackConfig?: WireConfig;
    commonRegionConfigKeys?: ConfigKeys;
    specificRegionConfigkeys?: {
        [regionName: string]: ConfigKeys;
    };
    isLoadedFromEndpoint?: boolean;
};
export declare class ConfigurationProvider implements IConfigurationProvider {
    private clientId;
    private config;
    private commonRegionConfigKeys;
    private specificRegionConfigkeys;
    readonly isLoadedFromEndpoint: boolean;
    constructor({ config, fallbackConfig, isLoadedFromEndpoint, commonRegionConfigKeys, specificRegionConfigkeys, clientId }: ConfigurationProviderConstructorProps);
    private enrichConfig;
    static fromUrl({ urlReceived, fallbackConfig, commonRegionConfigKeys, specificRegionConfigkeys, clientId }: {
        urlReceived: URLEndpoint | string;
    } & Omit<ConfigurationProviderConstructorProps, 'isLoadedFromEndpoint' | 'config'>): Promise<ConfigurationProvider>;
    static fromJson({ jsonConfig, fallbackConfig, commonRegionConfigKeys, specificRegionConfigkeys, clientId }: {
        jsonConfig: string;
    } & Omit<ConfigurationProviderConstructorProps, 'config' | 'isLoadedFromEndpoint'>): ConfigurationProvider;
    static getConfigUrl: (env: string) => string;
    static getNextRegion(region: any): string;
    getApiEndpoint(region: string): string;
    getRegionDiscoveryEndpoint(): string;
    getAuthenticationEndpoint(region: string): string;
    getMonitoringEndpoint(region: string): string;
    getGeneralEnvApiEndpoint(): string;
    getDefaultRegion(): string;
    getRegions(): string[];
    getClientId(): string;
    isUserAnalyticsEnabled(): boolean;
    getUserAnalyticsApiKey(): string;
    getCommonRegionConfigKeys(): ConfigKeys;
    getRegionSpecificConfigKeys(): {
        [regionName: string]: ConfigKeys;
    };
    getFullConfig(): WireConfig;
}
declare type WireRegion = {
    web_api_url: string;
    identity_api_url: string;
    mobile_api_url: string;
    real_time_url: string;
} & ConfigKeys;
export declare type WireConfig = {
    default_region: string;
    regions: {
        [regionName: string]: WireRegion;
    };
    general_env_api_url: string;
    user_analytics: {
        enabled: boolean;
        api_key: string;
    };
} & ConfigKeys;
export {};
