import * as r from 'redis'; import { EventEmitter } from 'events'; type IPage = { page_id: string; params?: any; }; type IListPage = { view_id: string; user_id?: IUserId; pages: Array; }; type IUserId = string | number; type IRoutering = Record | undefined; type IEventData = { page_id: string; old_page_id?: string; old_params?: any; user_id: IUserId; params?: any; }; type IEventNames = "NEW_PAGE" | "BACK_PAGE" | "REPLACE_PAGE" | "NEW_PARAMS"; declare global { var redis: Redis; } declare class Redis { _redis: r.RedisClientType; constructor(url: string); get: (key: string) => Promise; set: (key: string, value: object | string) => Promise; keys: (key: string) => Promise; setex: (key: string, seconds: number, value: object | string) => Promise; init: () => Promise; } declare global { var devMode: boolean; } declare class Router extends EventEmitter { private listPages; private redis?; private routers?; constructor({ history, redis, routers, devMode }: { history?: Array; redis?: Redis; routers?: IRoutering; devMode?: boolean; }); private sendEvents; listen: (callback_name: IEventNames | Array, callback: (data: IEventData, event_name: IEventNames) => void) => void; addParamsActivePage: (params: any, user_id: IUserId) => Promise; replacePage: (page_id: any, user_id: IUserId, params?: any) => Promise; getCustomViews: (view_id: string) => string; getViewById: (view_id: string, user_id?: IUserId) => Promise; activePage: (user_id?: IUserId) => Promise; getLocation: (open_page_id: string | IPage, page_id: string | IPage) => boolean; activeViewId: (user_id?: IUserId) => Promise; pushPage: (page_id: string, user_id: IUserId | undefined, { view_id, params }: { view_id?: string | undefined; params?: any; }) => Promise; popPage: (user_id?: IUserId, params?: any) => Promise; backPage: (page_id: string, user_id?: IUserId) => Promise; } export { Redis, Router };