declare global { interface ILoadingOptions { to: keyof HTMLElementTagNameMap | keyof SVGElementTagNameMap | string size?: string color?: string zIndex?: string bg?: string layerStyle?: string } type ILoadingOptionsExt = ILoadingOptions & { ig?: boolean [prop: string]: any } interface ILoadingEffect { show(options?: ILoadingOptions): string hide(to: string, delay?: number): void } type ILoadingFn = (...args: any[]) => Promise interface IXMLHttpRequest extends XMLHttpRequest { $q?: ILoadingOptionsExt $o?: ((this: IXMLHttpRequest, ev: Event) => any) | null } interface ILoading extends ILoadingEffect { version: string (fn: ILoadingFn, options?: ILoadingOptions | (() => ILoadingOptions)): ILoadingFn show(options?: ILoadingOptions): string hide(to: string, delay?: number): void } } declare namespace Loading { const loader: ILoading const routerResponder: (options?: ILoadingOptions) => void const xhrResponder: (options?: ILoadingOptions) => void } export = Loading export as namespace Loading