import { Action } from './Action';
import { ModelsObject, ActionData, ContextType } from '../types';
export interface BasePage {
    id: () => string;
    data: any;
    models: ModelsObject;
    context: ContextType;
    transferedData: any;
    defineActions?: () => void;
    prepareForAction?: Function;
    toPageAppear?: (next: Function) => void;
    fromPageDisappear?: (next: Function) => void;
    performAction: (actionID: string, data?: any, index?: number) => void;
}
/** Class representing a page. */
export declare class Page implements BasePage {
    data: any;
    models: ModelsObject;
    context: ContextType;
    transferedData: any;
    copyIndex: number;
    actions: ActionData;
    toPageAppear: (next: Function) => void;
    fromPageDisappear: (next: Function) => void;
    private entered;
    private leaved;
    private inTheActiveState;
    private containerCache;
    /**
     * Create a page.
     * @constructor
     */
    constructor();
    id(): string;
    title(): string;
    defineActions(): void;
    prepareForAction(next: Function, action: Action): void;
    shouldReload(currentAction: Action): boolean;
    beforeLeaving(next: Function, cancel: Function, action: Action): void;
    /**
     * perform a action.
     * @param {action} actoin   - Action对象.
     * @param {object} data   - The transform data.
     */
    performAction(toPageID: string, data?: any, index?: number): void;
    /**
     * reload a page
     * 把当前页面的所有生命周期函数再执行一遍
     */
    reload(): void;
    container: HTMLElement;
    private updateHash(pageID, index, data);
    private execute(executeSeq);
    entering(data: any, index: number): void;
    leaving(): void;
    private appearing(next);
    private disappearing(next);
}
