import type { ViewModel, PageParams } from '../main/index.js'; import type { ViewRenderer } from './view.js'; import { Dictionary } from './dict.js'; import { Observer } from './observer.js'; import { type RawViewConfig } from './view.js'; export type PageOptionName = keyof PageOptions; export type PageOptionRender = RawViewConfig | Page['render']; export type PageOptions = { reuseEl: boolean; init(newPageEl: HTMLElement): void; render: PageOptionRender; keepScrollOffset: boolean; encodeParams(params: PageParams): [key: string, value?: any][] | string; decodeParams(params: [string, string | boolean][]): Record; }; export type PageOptionsWithoutRender = Exclude; export type Page = { name: string; render(el: HTMLElement, data: any, context: any): any; options?: Partial; [CONFIG]?: any; }; declare const CONFIG: unique symbol; export declare class PageRenderer extends Dictionary { #private; lastPage: string | null; lastPageRef: string | number | null; pageOverscrolled: Observer; setPageOverscroll: (el: HTMLElement) => void; constructor(host: ViewModel, view: ViewRenderer); define(name: string, options: PageOptions): Readonly; define(name: string, render: PageOptionRender, options?: Partial): Readonly; render(prevPageEl: HTMLElement, name: string, data: any, context: any): { pageEl: HTMLElement; config: any; renderState: Promise; }; } export {};