import React from "react";
export declare enum Environment {
    PRODUCTION = "PRODUCTION",
    STAGING = "STAGING",
    LOCAL = "LOCAL",
    CUSTOM = "CUSTOM"
}
export declare type EnvironmentConfigurationBase = {
    showEnvironmentSwitcher: boolean;
};
export declare function getEnvironmentFromLocalStorage<T extends EnvironmentConfigurationBase>(globalSettings: T, key?: string): any;
declare type LocalEnvironmentConfigurationBase<G extends EnvironmentConfigurationBase> = G & {
    [key: string]: any;
};
declare type CustomEnvironmentConfigurationBase<G extends EnvironmentConfigurationBase> = G & {
    [key: string]: any;
};
declare type EnvironmentSwitcherProps<G extends EnvironmentConfigurationBase, L extends LocalEnvironmentConfigurationBase<G>, C extends CustomEnvironmentConfigurationBase<G>> = {
    globalSettings: G;
    globalControls?: (config: {
        type: Environment;
    } & G, setConfig: (config: {
        type: Environment;
    } & G) => void) => React.ReactNode;
    localEnvironmentControls: (config: {
        type: Environment.LOCAL;
    } & L, setConfig: (config: {
        type: Environment.LOCAL;
    } & L) => void) => React.ReactNode;
    localEnvironmentDefaultValue: L;
    customEnvironmentControls: (config: {
        type: Environment.CUSTOM;
    } & C, setConfig: (config: {
        type: Environment.CUSTOM;
    } & C) => void) => React.ReactNode;
    customEnvironmentDefaultValue: C;
};
declare type EnvironmentSwitcherComponentType = <G extends EnvironmentConfigurationBase, // Global configuration shape
L extends LocalEnvironmentConfigurationBase<G>, // Local configuration shape
C extends CustomEnvironmentConfigurationBase<G>>(p: EnvironmentSwitcherProps<G, L, C>) => React.ReactElement;
export declare const EnvironmentSwitcher: EnvironmentSwitcherComponentType;
export default EnvironmentSwitcher;
