import React, { FC, ReactNode } from "react";
import { Endpoints, Stage } from "../../api/endpoints.const";
import { DecodedToken } from "./authToken";
import { Dict } from "mixpanel-browser";
export type MixPanelTrack = (event: string, data?: Dict) => void;
type C3UserConfigurationBase = {
    activeOrganizationId: string;
    userToken: string;
    getNewUserToken: () => Promise<string>;
    analyticsTrack?: MixPanelTrack;
    currentApp?: "console" | "modeler" | "tasklist" | "operate" | "optimize";
    currentClusterUuid?: string;
    handleTheme?: boolean;
    enableLogs?: boolean;
    noCloudInUrl?: boolean;
};
type C3UserConfigurationWithEndpoints = C3UserConfigurationBase & {
    endpoints: Endpoints;
};
type C3UserConfigurationWithStage = C3UserConfigurationBase & {
    stage: Stage;
};
export type C3UserConfiguration = C3UserConfigurationWithEndpoints | C3UserConfigurationWithStage;
export type C3UserConfigurationContextValue = C3UserConfiguration & {
    decodedToken: DecodedToken | null;
    decodedAudience: string | null;
    domain: string | null;
    setActiveOrgId: (id: string) => void;
    analyticsTrack?: MixPanelTrack;
};
export declare const C3UserConfigurationContext: React.Context<C3UserConfigurationContextValue>;
declare const C3UserConfigurationProvider: FC<C3UserConfiguration & {
    children?: ReactNode;
}>;
export declare const useC3UserConfiguration: () => C3UserConfigurationContextValue;
export default C3UserConfigurationProvider;
