import * as react_jsx_runtime from 'react/jsx-runtime';
import * as React from 'react';

type WidgetType = "admin-portal-audit-log-streaming" | "admin-portal-domain-verification" | "user-management" | "organization-switcher" | "user-sessions" | "user-security" | "user-profile" | "admin-portal-sso-connection" | "api-keys" | "pipes" | "directory-sync";
type AuthToken = string | (() => Promise<string>);
interface ElevatedAccess {
    token: string;
    expiresAt: string;
}
interface ApiConfig {
    authToken: string | undefined;
    permissions: string[] | undefined;
    exp: number | undefined;
    baseUrl: string;
    widgetType: WidgetType;
    elevatedAccess?: ElevatedAccess;
    setElevatedAccess: (elevatedAccess?: ElevatedAccess) => void;
}
interface AuthTokenQueryData {
    authToken: string;
    permissions: string[] | undefined;
    exp: number | undefined;
}
declare const authTokenQueryKey: (widgetType: WidgetType) => readonly ["authToken", WidgetType];
interface ApiProviderProps {
    authToken: AuthToken;
    baseUrl: string;
    children: React.ReactNode;
    widgetType: WidgetType;
}
declare const ApiProvider: ({ authToken, baseUrl, children, widgetType, }: ApiProviderProps) => react_jsx_runtime.JSX.Element;
declare const useApi: () => ApiConfig;
declare const useElevatedAccessToken: () => {
    elevatedAccess: ElevatedAccess | undefined;
    setElevatedAccess: (elevatedAccess?: ElevatedAccess) => void;
};
declare const useApiReady: () => boolean;

export { ApiProvider, type AuthToken, type AuthTokenQueryData, type WidgetType, authTokenQueryKey, useApi, useApiReady, useElevatedAccessToken };
