import { DEFAULT_WASM_VERSION } from '@incodetech/core/wasm';
import { i18n } from 'i18next';
import { WasmConfig } from '@incodetech/core/wasm';

export declare function createI18n(options?: I18nOptions): i18n;

export { DEFAULT_WASM_VERSION }

export declare type I18nOptions = {
    lang?: string;
    loadPath?: string;
    skipRemoteLoad?: boolean;
    translations?: Translations;
};

declare type LanguageTranslations = Record<string, TranslationValue>;

export declare function setI18nInstance(instance: i18n): void;

/**
 * Sets global UI configuration defaults for `@incodetech/ui`.
 */
export declare function setUiConfig(next: UiConfig): void;

export declare function setup({ apiURL, token, customHeaders, timeout, wasm, ipLookup, devMode, i18n, uiConfig, }: SetupOptions): Promise<void>;

declare type SetupOptions = {
    apiURL: string;
    token: string;
    customHeaders?: Record<string, string>;
    timeout?: number;
    wasm?: WasmConfig | false;
    ipLookup?: boolean;
    /**
     * Disables the browser devtools detector for local development. Forwarded to
     * core `setup()`. Leave `false` (default) in production — see the core
     * `SetupOptions.devMode` docs. WASM logging is controlled via `wasm.showLogs`.
     */
    devMode?: boolean;
    i18n?: I18nOptions;
    uiConfig?: UiConfig;
};

declare type Translations = Partial<Record<string, LanguageTranslations>>;

declare type TranslationValue = string | Record<string, unknown>;

export declare type UiConfig = {
    logoSrc?: string;
    logoHeight?: string;
    subtitle?: string;
    hideHeader?: boolean;
    hideFooterBranding?: boolean;
};

export { }
