import { M as ModuleWithPermissions } from './notification.interface-XARGKJAq.js';
import { ComponentType } from 'react';

/**
 * Configure the JSON:API client. This is the main configuration function.
 * This is typically called during app initialization.
 */
declare function configureJsonApi(config: {
    apiUrl: string;
    appUrl?: string;
    trackablePages?: ModuleWithPermissions[];
    bootstrapper?: () => void;
    additionalHeaders?: Record<string, string>;
    stripePublishableKey?: string;
}): void;
/**
 * Configure the client config. This is typically called during app initialization.
 * @deprecated Use configureJsonApi instead
 */
declare function configureClientConfig(config: {
    apiUrl: string;
    appUrl?: string;
    trackablePages?: ModuleWithPermissions[];
}): void;
/**
 * Get the configured API URL.
 */
declare function getApiUrl(): string;
/**
 * Get the configured app URL.
 */
declare function getAppUrl(): string;
/**
 * Get the configured trackable pages.
 */
declare function getTrackablePages(): ModuleWithPermissions[];
/**
 * Get the configured Stripe publishable key.
 */
declare function getStripePublishableKey(): string | undefined;

interface I18nRouter {
    push: (href: string) => void;
    replace: (href: string) => void;
    back: () => void;
    forward: () => void;
    refresh: () => void;
    prefetch: (href: string) => void;
}
type UseRouterHook = () => I18nRouter;
type UseTranslationsHook = (namespace?: string) => (key: string, values?: Record<string, any>) => string;
type UseLocaleHook = () => string;
type UseDateFnsLocaleHook = () => any;
type LinkComponent = ComponentType<{
    href: string;
    children: React.ReactNode;
    [key: string]: any;
}>;
interface I18nConfig {
    useRouter: UseRouterHook;
    useTranslations: UseTranslationsHook;
    useLocale?: UseLocaleHook;
    useDateFnsLocale?: UseDateFnsLocaleHook;
    Link: LinkComponent;
    usePathname: () => string;
}
declare function configureI18n(config: I18nConfig): void;
declare function useI18nRouter(): I18nRouter;
declare function useI18nTranslations(namespace?: string): (key: string, values?: Record<string, any>) => string;
declare function getI18nLink(): LinkComponent;
declare function useI18nLocale(): string;
declare function useI18nDateFnsLocale(): any;

export { type I18nConfig as I, type LinkComponent as L, type UseDateFnsLocaleHook as U, getAppUrl as a, getTrackablePages as b, configureJsonApi as c, getStripePublishableKey as d, configureI18n as e, configureClientConfig as f, getApiUrl as g, getI18nLink as h, useI18nLocale as i, useI18nRouter as j, useI18nTranslations as k, type I18nRouter as l, type UseLocaleHook as m, type UseRouterHook as n, type UseTranslationsHook as o, useI18nDateFnsLocale as u };
