/**
 * //TODO: IGXR description
 */
export interface IGXR_Object {
    FormatVersion: number;
    ContentVersion?: string;
    Servers: Record<string, IServer>;
    Manufacturers: Record<string, IManufacturer>;
}
export declare const CURRENT_VERSION = 1;
/**
 * Keys should be two letter country codes
 *
 * @export
 * @interface LocalizedTexts
 * @template T
 */
export interface LocalizedTexts<T = string> {
    any: T;
    [languageId: string]: T;
}
export interface IManufacturer {
    Server?: string;
    Settings?: object;
    Name: LocalizedTexts<string>;
    Keywords?: LocalizedTexts<string[]>;
    Catalogs: Record<string, ICatalog>;
    Hidden?: boolean;
}
export interface IServer {
    Type: string;
    Settings?: object;
}
export interface IWizard {
    Options?: Record<string, any>;
    LoadPath?: string;
    Name?: LocalizedTexts;
    Image?: string;
}
export interface ICatalogSettings {
    Wizard?: IWizard;
    [key: string]: any;
}
export interface ICatalog {
    Server?: string;
    Settings?: ICatalogSettings;
    Name: LocalizedTexts<string>;
    Keywords?: LocalizedTexts<string[]>;
    Image?: string;
    /** Optional: custom parameter set */
    Custom?: {};
    Disabled?: boolean;
    DisabledReason?: LocalizedTexts<string>;
    Hidden?: boolean;
}
/**
 * Retrieves a text for the specified language (should be provided as two-letter-country-code).
 * Falls back to any when no text exists for the requested language.
 *
 * Will return undefined, when neither a text for the language nor an any fallback text exist.
 *
 * @template T
 * @param {LocalizedTexts<T>} text
 * @param {string} lang
 * @returns {(T | undefined)}
 */
export declare const getLocalizedText: <T>(text: LocalizedTexts<T>, lang: string) => T | undefined;
