// Типы для DMRConnect Link 2.0 (https://dmrconnect.ru/dev/). Лицензия MIT. export type ServerType = "hblink" | "freedmr" | "brandmeister" | "bm" | "xlx" | "ysf" | "nxdn" | "p25"; /** Настройки сервера для ссылки и QR. Обязателен только host. */ export interface ServerConfig { type?: ServerType; host: string; port?: number | string; name?: string; /** Пароль мастера (у XLX и рефлекторов не нужен). */ password?: string; /** Группа по умолчанию; у YSF это DG-ID, у NXDN и P25 номер рефлектора. */ talkgroup?: number | string; slot?: 1 | 2 | "1" | "2"; /** Только для личной ссылки. */ callsign?: string; dmrId?: number | string; /** BrandMeister, 0..99. */ essid?: number | string; /** XLX: буквы модулей, например "ABCD". */ modules?: string; /** До 8 групп скана. */ scan?: number[]; /** HBlink/FreeDMR и XLX: адрес local_subscriber_ids.json с именами абонентов. */ contacts?: string; } export interface LinkOptions { /** "https" (по умолчанию) или "app" (схема dmrconnect://). */ scheme?: "https" | "app"; } export interface StyleOptions extends LinkOptions { /** "rounded" (по умолчанию, как в Telegram), "dots" или "square". */ style?: "rounded" | "dots" | "square"; /** Цвет модулей, по умолчанию "#16171C". */ color?: string; /** Цвет центра угловых меток, по умолчанию "#FF4A1C". */ eyeColor?: string; /** Фон, по умолчанию "#FFFFFF"; можно "transparent". */ background?: string; /** Значок DMRConnect в центре: true (вариант под фон), "light", "dark" или false. */ logo?: boolean | "light" | "dark"; /** Поле вокруг кода в модулях, по умолчанию 2. */ margin?: number; /** Ширина SVG в пикселях; без неё картинка тянется по контейнеру. */ size?: number; /** Уровень коррекции; с логотипом всегда "H". */ ecl?: "L" | "M" | "Q" | "H"; } export interface RenderOptions extends StyleOptions { /** Кнопка «Добавить в DMRConnect» над кодом: "auto" (только на телефоне), true или false. */ button?: "auto" | boolean; /** Свой текст кнопки. */ label?: string; } export interface QrMatrix { size: number; version: number; ecl: "L" | "M" | "Q" | "H"; mask: number; /** modules[y][x]: true - тёмный модуль. */ modules: boolean[][]; isFunction(x: number, y: number): boolean; } export const version: string; export function build(cfg: ServerConfig, opts?: LinkOptions): string; export function parse(link: string): ServerConfig; export function normalize(cfg: ServerConfig): Record; export function matrix(text: string, opts?: { ecl?: "L" | "M" | "Q" | "H" }): QrMatrix; export function svg(cfgOrLink: ServerConfig | string, opts?: StyleOptions): string; export function dataUrl(cfgOrLink: ServerConfig | string, opts?: StyleOptions): string; /** Только в браузере. opts.px - сторона в пикселях (1024). */ export function png(cfgOrLink: ServerConfig | string, opts?: StyleOptions & { px?: number }): Promise; export function button(el: string | Element, cfgOrLink: ServerConfig | string, opts?: { label?: string }): string; export function render(el: string | Element, cfgOrLink: ServerConfig | string, opts?: RenderOptions): string; export as namespace DMRConnectLink;