import { EventEmitter } from "../utils/EventEmitter"; import type { Disposable } from "../utils/Disposables"; import type { Platform } from "../platform/web/Platform"; import type { Clock } from "../platform/web/dom/Clock"; import type { ILogger } from "../logging/types"; import type { Navigation } from "./navigation/Navigation"; import type { SegmentType } from "./navigation/index"; import type { IURLRouter } from "./navigation/URLRouter"; import type { ITimeFormatter } from "../platform/types/types"; import type { FeatureSet } from "../features"; export type Options = { platform: Platform; logger: ILogger; urlRouter: IURLRouter; navigation: Navigation; emitChange?: (params: any) => void; features: FeatureSet; }; export declare class ViewModel = Options> extends EventEmitter<{ change: never; }> { private disposables?; private _isDisposed; private _options; constructor(options: Readonly); childOptions(explicitOptions: T): T & O; get options(): Readonly; getOption(name: N): O[N]; observeNavigation(type: T, onChange: (value: N[T], type: T) => void): void; track(disposable: D): D; untrack(disposable: Disposable): undefined; dispose(): void; get isDisposed(): boolean; disposeTracked(disposable: Disposable | undefined): undefined; i18n(parts: TemplateStringsArray, ...expr: any[]): string; emitChange(changedProps?: any): void; get platform(): Platform; get clock(): Clock; get logger(): ILogger; get urlRouter(): IURLRouter; get features(): FeatureSet; get navigation(): Navigation; get timeFormatter(): ITimeFormatter; }