import * as React from 'react';

type CacheProfile = "seconds" | "minutes" | "hours" | "days" | "weeks" | "max" | "default";
interface JsonApiConfig {
    /**
     * The base URL for API requests (e.g., https://api.example.com)
     */
    apiUrl: string;
    /**
     * Custom token getter function. If not provided, will use default cookie-based token retrieval.
     */
    tokenGetter?: () => Promise<string | undefined>;
    /**
     * Custom language getter function. If not provided, will use browser locale or next-intl.
     */
    languageGetter?: () => Promise<string>;
    /**
     * Default headers to include in all requests
     */
    defaultHeaders?: Record<string, string>;
    /**
     * Global error handler for failed requests (client-side only)
     */
    onError?: (status: number, message: string) => void;
    /**
     * Cache configuration
     */
    cacheConfig?: {
        defaultProfile: CacheProfile;
    };
    /**
     * Function to bootstrap the data class registry.
     * Will be called automatically when needed.
     */
    bootstrapper?: () => void;
}
declare const JsonApiContext: React.Context<JsonApiConfig | null>;
declare function useJsonApiConfig(): JsonApiConfig;
declare function useJsonApiConfigOptional(): JsonApiConfig | null;

export { type CacheProfile as C, type JsonApiConfig as J, JsonApiContext as a, useJsonApiConfigOptional as b, useJsonApiConfig as u };
