declare interface Modal { modal: HTMLElement; closeButton: HTMLSpanElement show: () => void; close: (event?: Event) => void; toggle: () => void; } interface ArrayConstructor { from(arrayLike: any, mapFn?, thisArg?): Array; } declare interface Window { URLBase: string; modals: Modals; cssFile: string; availableProfiles: string[]; jfUsers: Array; notificationsEnabled: boolean; emailEnabled: boolean; ombiEnabled: boolean; usernameEnabled: boolean; token: string; buttonWidth: number; transitionEvent: string; animationEvent: string; tabs: Tabs; invites: inviteList; notifications: NotificationBox; language: string; lang: Lang; langFile: {}; } declare interface Lang { get: (sect: string, key: string) => string; strings: (key: string) => string; notif: (key: string) => string; var: (sect: string, key: string, ...subs: string[]) => string; quantity: (key: string, number: number) => string; } declare interface NotificationBox { connectionError: () => void; customError: (type: string, message: string) => void; customPositive: (type: string, bold: string, message: string) => void; customSuccess: (type: string, message: string) => void; } declare interface Tabs { current: string; tabs: Array; addTab: (tabID: string, preFunc?: () => void, postFunc?: () => void) => void; switch: (tabID: string, noRun?: boolean) => void; } declare interface Tab { tabID: string; tabEl: HTMLDivElement; buttonEl: HTMLSpanElement; preFunc?: () => void; postFunc?: () => void; } declare interface Modals { about: Modal; login: Modal; addUser: Modal; modifyUser: Modal; deleteUser: Modal; settingsRestart: Modal; settingsRefresh: Modal; ombiDefaults?: Modal; profiles: Modal; addProfile: Modal; } interface Invite { code?: string; expiresIn?: string; remainingUses?: string; email?: string; usedBy?: string[][]; created?: string; notifyExpiry?: boolean; notifyCreation?: boolean; profile?: string; label?: string; } interface inviteList { empty: boolean; invites: { [code: string]: Invite } add: (invite: Invite) => void; reload: () => void; } declare interface SubmitEvent extends Event { submitter: HTMLInputElement; } declare var config: Object; declare var modifiedConfig: Object;