import { EventTarget, Obj } from '@mathigon/core'; import { ElementView } from './elements'; declare global { interface Window { ga?: any; gtag?: any; } } type Callback = ($el: ElementView, params: ViewParams) => void; interface RouterOptions { $viewport?: ElementView; preloaded?: boolean; transition?: boolean; initialise?: Callback; noLoad?: boolean; click?: boolean; history?: boolean; } type ViewParams = Obj; interface ViewOptions { enter?: Callback; exit?: () => void; template?: string | ((params: ViewParams) => string | Promise); } declare class Router extends EventTarget { private $viewport; private views; private active; private preloaded; private transition; private noLoad; private initialise; beforeChange?: () => Promise; setup(options?: RouterOptions): void; view(url: string, { enter, exit, template }?: ViewOptions): void; paths(...urls: string[]): void; private getView; private load; private loadView; private onLinkClick; goTo(path: string, hash?: string): Promise; replace(path: string, hash?: string): void; back(): void; forward(): void; private animation?; private $loadingBar?; showLoadingBar(): void; hideLoadingBar(): Promise; } export declare const RouterInstance: Router; export {};