import { Naja, Options } from '../Naja'; import { TypedEventListener } from '../utils'; declare const originalTitleKey: unique symbol; declare module '../Naja' { interface Options { history?: HistoryMode; href?: string; [originalTitleKey]?: string; } interface Payload { postGet?: boolean; url?: string; } } export interface HistoryState extends Record { source: string; cursor: number; href: string; } export interface HistoryAdapter { state: HistoryState | null; replaceState(state: HistoryState, title: string, url: string): void; pushState(state: HistoryState, title: string, url: string): void; } export type HistoryMode = boolean | 'replace'; export declare class HistoryHandler extends EventTarget { private readonly naja; private initialized; private cursor; popStateHandler: (event: PopStateEvent) => void; historyAdapter: HistoryAdapter; constructor(naja: Naja); set uiCache(value: boolean); private handlePopState; private initialize; private saveOriginalTitle; private saveUrl; private saveRedirectedUrl; private replaceInitialStateBeforeRequest; private replaceInitialState; private configureMode; static normalizeMode(mode: string | boolean | null | undefined): HistoryMode; private pushNewState; private buildState; addEventListener: (type: K, listener: TypedEventListener, options?: boolean | AddEventListenerOptions) => void; removeEventListener: (type: K, listener: TypedEventListener, options?: boolean | AddEventListenerOptions) => void; } export type BuildStateEvent = CustomEvent<{ state: HistoryState; operation: 'pushState' | 'replaceState'; isInitial: boolean; options: Options; }>; export type RestoreStateEvent = CustomEvent<{ state: HistoryState; direction: number; options: Options; }>; interface HistoryHandlerEventMap { buildState: BuildStateEvent; restoreState: RestoreStateEvent; } export {};