import { StringEncoding } from "iconv-corefoundation"; import Context from "./Context"; import Labels from "./Labels"; export declare class NoSuchLanguageError extends Error { lang: LangSpecs; constructor(lang: LangSpecs); } export declare abstract class Language { static byTag: { [langTag: string]: Language | undefined; }; static byID: Array; static add(lang: Language): void; static bySpec(lang: LangSpecs, context?: Context): Language[]; abstract charset: StringEncoding; abstract doubleByteCharset: boolean; abstract englishName: string; abstract labels?: Labels; abstract languageID: number; abstract langTags: string[]; abstract localizedName: string; toString(): string; } export default Language; export declare type LangSpec = string | number; export declare type LangSpecs = LangSpec | LangSpec[]; export interface Localization { lang: LangSpecs; } declare namespace indexByLanguage { interface Options { filter?(object: T): boolean; map?(object: T, lang: Language): U | undefined; onCollisions?(languageIDs: Set): void; } } declare function indexByLanguage(objects: Iterable, options?: indexByLanguage.Options & { map?: never; }): Map; declare function indexByLanguage(objects: Iterable, options: indexByLanguage.Options & { map(object: T, lang: Language): U; }): Map>; export { indexByLanguage };