import { AppHistoryTransition } from "./app-history-transition";
import { AppHistory } from "./app-history";
import { AppHistoryEntry } from "./app-history-entry";
export interface AppHistoryTransitionPlannerOptions {
    transition: AppHistoryTransition;
    currentPlan?: AppHistoryTransitionPlan;
    finishedTransitions?: Set<AppHistoryTransition>;
    constructAppHistory(): AppHistory;
}
export declare const AppHistoryTransitionPlanAppHistorySymbol: unique symbol;
export declare const AppHistoryTransitionPlanWhile: unique symbol;
export declare const AppHistoryTransitionPlanWait: unique symbol;
export interface AppHistoryTransitionPlan {
    [AppHistoryTransitionPlanAppHistorySymbol]: AppHistory;
    [AppHistoryTransitionPlanWhile](promise: Promise<unknown>): void;
    [AppHistoryTransitionPlanWait](): Promise<AppHistoryEntry>;
    transitions: AppHistoryTransition[];
    known: Set<AppHistoryEntry>;
    knownTransitions: Set<AppHistoryTransition>;
    resolve(): Promise<void>;
}
export declare function plan(options: AppHistoryTransitionPlannerOptions): AppHistoryTransitionPlan;
