import AbortController from "abort-controller";
import { AppHistoryCurrentChangeEvent, AppHistoryDestination, AppHistoryNavigateEvent as AppHistoryNavigateEventPrototype, AppHistoryNavigateOptions as AppHistoryNavigateOptionsPrototype, AppHistoryNavigationType } from "./spec/app-history";
import { AppHistoryEntry } from "./app-history-entry";
import { AppHistoryTransition, InternalAppHistoryNavigationType } from "./app-history-transition";
export declare const AppHistoryFormData: unique symbol;
export declare const AppHistoryCanTransition: unique symbol;
export declare const AppHistoryUserInitiated: unique symbol;
export interface AppHistoryNavigateOptions extends AppHistoryNavigateOptionsPrototype {
    [AppHistoryFormData]?: FormData;
    [AppHistoryCanTransition]?: boolean;
    [AppHistoryUserInitiated]?: boolean;
}
export declare const EventAbortController: unique symbol;
export interface AbortControllerEvent {
    [EventAbortController]: AbortController;
}
export interface AppHistoryNavigateEvent extends AppHistoryNavigateEventPrototype, AbortControllerEvent {
}
export interface InternalAppHistoryNavigateOptions extends AppHistoryNavigateOptions {
    entries?: AppHistoryEntry[];
    index?: number;
    known?: Set<AppHistoryEntry>;
    navigationType?: AppHistoryNavigationType;
}
export interface AppHistoryTransitionContext {
    transition: AppHistoryTransition;
    options?: InternalAppHistoryNavigateOptions;
    currentIndex: number;
    known: Set<AppHistoryEntry>;
    startTime?: number;
    current?: AppHistoryEntry;
}
export interface AppHistoryTransitionResult {
    entries: AppHistoryEntry[];
    index: number;
    known: Set<AppHistoryEntry>;
    destination: AppHistoryDestination;
    navigate: AppHistoryNavigateEvent;
    currentChange: AppHistoryCurrentChangeEvent;
    navigationType: InternalAppHistoryNavigationType;
}
export declare function createAppHistoryTransition(context: AppHistoryTransitionContext): AppHistoryTransitionResult;
