import { ModelsObject, ContextType } from '../types';
export interface BasePage {
    models: ModelsObject;
    context: ContextType;
    mode: string;
    transferedData: any;
    prepareForSwitch?: Function;
}
export declare class Page implements BasePage {
    models: ModelsObject;
    context: ContextType;
    mode: string;
    transferedData: any;
    path: string;
    copyIndex: number;
    switchRoute: Function;
    popAndSwitchRoute: Function;
    private entered;
    private leaved;
    private inTheActiveState;
    private containerCache;
    constructor(path: string);
    /**
     * 设置页面 title
     * @return {string}
     */
    title(): string;
    /**
     * 调用 switchRoute 前执行，执行一些准备工作
     * @param {Function} next
     * @param {string}   toPath
     * @param {Function} destinationPagePerform
     */
    prepareForSwitch(next: Function, toPath: string, destinationPagePerform: Function): void;
    /**
     * 指示每次进入 Page 时是否需要刷新
     * @param  {string}  previousPath
     * @return {boolean}
     */
    shouldReload(previousPath: string): boolean;
    /**
     * 模拟拦截点击返回按钮
     * @param {Function} next
     * @param {Function} cancel
     * @param {string}   toPath
     */
    beforeLeaving(next: Function, cancel: Function, toPath: string): void;
    /**
     * 把当前页面的所有生命周期函数再执行一遍
     */
    reload(): void;
    /**
     * 获取页面的 HTML 容器
     * @return {HTMLElement}
     */
    readonly container: HTMLElement;
    /**
     * 通过它执行其他页面函数
     * @param {string}     funcName
     * @param {Array<any>} ...args
     */
    callMethods(funcName: string, ...args: Array<any>): void;
    /**
     * 多页方案进入页面时执行上个页面的 destinationPagePerform
     * @param {string}     funcName
     * @param {Array<any>} ...args
     */
    multiCallMethods(funcName: string, ...args: Array<any>): void;
    /**
     * 顺序执行一组函数
     * @param {Array<string>} executeSeq
     */
    private execute(executeSeq);
    /**
     * 执行生命周期进入页面部分的函数
     * @param {any}    data
     * @param {number} index
     */
    entering(data: any, index: number): void;
    /**
     * 执行生命周期离开页面部分的函数
     * @param {any}    data
     * @param {number} index
     */
    leaving(): void;
    /**
     * 进入页面过程中显示页面的钩子
     * @param {Function} next
     */
    private appearing(next);
    /**
     * 离开页面过程中隐藏页面的钩子
     * @param {Function} next
     */
    private disappearing(next);
    /**
     * 视图切换动画进入效果
     * @param {HTMLElement} container 即将进入的视图 container
     * @param {string}      type      动画类型
     */
    private transitionIn(container);
    /**
     * 视图切换动画退出效果
     * @param {HTMLElement} container 即将退出的视图 container
     * @param {string}      type      动画类型
     */
    private transitionOut(container);
    /**
     * 批量设置容器样式
     * @param {HTMLElement} element
     * @param {any}         styles
     */
    private setStyles(element, styles);
}
