import { $DomNodes as $BaseDomNodes, $T, DomNodes as BaseDomNodes, HTMLItem, Mapping, Options as BaseOptions, UnknownFunction } from 'clientnode'; export type InternationalisationFunction = (...parameters: Array) => Promise<$T>; declare global { interface JQuery { Internationalisation: InternationalisationFunction; } } export interface Replacement { $textNodeToTranslate: $T; $nodeToReplace: $T; textToReplace: string; $currentLanguageDomNode: null | $T; } export type DomNodes = BaseDomNodes & { knownTranslation: Type; }; export type $DomNodes = $BaseDomNodes & { switchLanguageButtons: $T; }; export interface DefaultOptions { currentLanguageIndicatorClassName: string; currentLanguagePattern: string; default: string; domNodes: DomNodes; fadeEffect: boolean; initial: null | string; languageHashPrefix: string; languageMapping: Mapping>; lockDescription: string; name: string; onSwitched: UnknownFunction; onEnsured: UnknownFunction; onSwitch: UnknownFunction; onEnsure: UnknownFunction; preReplacementLanguagePattern: string; replaceDomNodeNames: Array; replacementDomNodeName: Array; replacementLanguagePattern: string; selection: Array; sessionDescription: string; templateDelimiter: (null | { pre: string; post: string; }); textNodeParent: { hideAnimation: [Mapping, Mapping]; showAnimation: [Mapping, Mapping]; }; } export type Options = BaseOptions & DefaultOptions;