/*!
 * cdp.framework.jqm.d.ts
 * This file is generated by the CDP package build process.
 *
 * Date: 2017-11-06T05:35:56.452Z
 */
/// <reference path="jquery.mobile.d.ts" />
/// <reference types="backbone" />
/// <reference types="jquery" />
declare namespace CDP.Framework {
    type Model = Backbone.Model;
    const Model: typeof Backbone.Model;
    type Collection<TModel extends Model> = Backbone.Collection<TModel>;
    const Collection: typeof Backbone.Collection;
    type View<TModel extends Model = Model> = Backbone.View<TModel>;
    const View: typeof Backbone.View;
    type Events = Backbone.Events;
    const Events: typeof Backbone.Events;
    type ModelSetOptions = Backbone.ModelSetOptions;
    type ModelFetchOptions = Backbone.ModelFetchOptions;
    type ModelSaveOptions = Backbone.ModelSaveOptions;
    type ModelDestroyOptions = Backbone.ModelDestroyOptions;
    type ViewOptions<TModel extends Model = Model> = Backbone.ViewOptions<TModel>;
    /**
     * @en direction definitions.
     * @ja 遷移方向の定義.
     */
    type PageTransitionDirection = "back" | "forward" | "same" | "unknown";
    /**
     * @en Argument of onShow/onBeforeShow method.
     * @ja onShow/onBeforeShow で渡される引数
     */
    interface ShowEventData {
        /**
         * @en A jQuery collection object that contains the source page DOM element.
         * @ja 遷移前の画面情報を格納
         */
        prevPage: JQuery;
        /**
         * @en A jQuery collection object that contains the destination page DOM element.
         * @ja 遷移後の画面情報を格納
         */
        toPage: JQuery;
        /**
         * @en page transition direction.
         * @ja 遷移方向を格納
         */
        direction: PageTransitionDirection;
    }
    /**
     * @en Argument of onHide/onBeforeHide method.
     * @ja onHide/onBeforeHide で渡される引数
     */
    interface HideEventData {
        /**
         * @en A jQuery collection object that contains the page DOM element to which we just transitioned.
         * @ja トランジション完了した画面情報を格納
         */
        nextPage: JQuery;
        /**
         * @en A jQuery collection object that contains the destination page DOM element.
         * @ja 遷移後の画面情報を格納
         */
        toPage: JQuery;
        /**
         * @en A jQuery collection object that contains the from page DOM element.
         * @ja 遷移前の画面情報を格納
         */
        prevPage: JQuery;
        /**
         * @en page transition direction.
         * @ja 遷移方向を格納
         */
        direction: PageTransitionDirection;
    }
    /**
     * @en Delegate interface of additional data for Page class. <br>
     *     Client can define extend type from it.
     *
     * @ja 任意の情報を格納するインターフェイス <br>
     *     Page に渡されるデータ。拡張して使用可能
     */
    interface Intent {
        /**
         * @en any parameter. <br>
         *     params["queryParams"] is used by framework for query parameters.
         *
         * @ja 任意のパラメータ <br>
         *     params["queryParams"] には、query parameter がフレームワークにより格納される。
         */
        params?: object;
        /**
         * any parameters
         */
        [key: string]: any;
    }
    /**
     * @en Arguments interface of Router.registerPageStack() method.
     * @ja Router.registerPageStack() に指定するインターフェイス
     */
    interface PageStack {
        /**
         * @en route string, it can be regular expression.
         * @ja ルーティング文字列 / 正規表現
         */
        route: string;
        /**
         * @en page title string.
         * @ja ページタイトル文字列
         */
        title?: string;
        /**
         * @en page transition string.
         * @ja 遷移トランジション文字列
         */
        transition?: string;
    }
    /**
     * @en interface of Router's Sub Flow paramenters.
     * @ja Router の Sub Flow に指定するパラメータインターフェイス
     */
    interface SubFlowParam {
        /**
         * @en set sub flow operation [begin | end]. <br>
         *     When "begin" is set and then "end" is called, it can return to the URL specified as "base" with treating browser history.
         *
         * @ja Sub Flow 処理を指定 [begin | end] <br>
         *     "begin" が指定され、次に "end" を呼ぶとき、"base" に指定した url までブラウザ履歴をたどる。
         */
        operation: "begin" | "end";
        /**
         * @en Page URL/Hash used as the reference point of Sub Flow is specified. <br>
         *     When Sub Flow operation == "end" is specified, URL specified as navigate is disregarded. <br>
         *     If not set, this parameter is assigned the page called Router.navigate() with subFlow property.
         *
         * @ja Sub Flow の基点となるページ URL/Hash を指定。 <br>
         *     Sub Flow operation == "end" が指定される場合は、navigate に指定される URL は無視される。 <br>
         *     指定がない場合は Router.navigate() 時に subFlow を指定の呼び出し元がアサインされる。
         */
        destBase?: string;
        /**
         * @en PageStack from "destBase" which changes page at the time of the end of Sub Flow is specified. <br>
         *     When this parameter is no set, it changes page to "destBase".
         *
         * @ja Sub Flow 終了時に遷移する "destBase" からの PageStack を指定。指定がない場合は、"destBase" に遷移する。
         */
        destStacks?: PageStack[];
    }
    /**
     * @en Options interface of Router.start() method.
     * @ja Router.start() に指定するオプションインターフェイス
     */
    interface RouterOptions extends Backbone.HistoryOptions {
        /**
         * @en If construct registered page instance, this param set true. default: true.
         * @ja 登録済みページを構築する場合 true. default: true
         */
        pageConstruct?: boolean;
    }
    /**
     * @en Options interface of Router.navigate() method.
     * @ja Router.navigate() に指定するオプションインターフェイス
     */
    interface NavigateOptions extends Backbone.NavigateOptions {
        /**
         * @en overwrite: trigger default value is true.
         * @ja trigger の既定値は true として扱う
         */
        trigger?: boolean;
        /**
         * @en SubFlowParam is specified when performing Sub Flow processing.
         * @ja Sub Flow 処理を行う場合、SubFlowParam を指定
         */
        subFlow?: SubFlowParam;
        /**
         * @en set back operation destination.
         * @ja [戻る] 時に遷移するページ URL を指定
         */
        backDestination?: string;
        /**
         * @en no hash change flag in navigate operation.
         * @ja Navigate 時に Hash 変更しないフラグ
         */
        noHashChange?: boolean;
        /**
         * @en additional info interface.
         * @ja 付加情報インターフェイス
         */
        intent?: Intent;
    }
    /**
     * @en Handle orientation changed notify interface.
     * @ja Orientation の変更検知を受信するインターフェイス
     */
    interface IOrientationChangedListener {
        /**
         * @en Received orientation code when that is changed.
         * @ja Orientation の変更を受信
         *
         * @param newOrientation
         * - `en` new orientation code.
         * - `ja` 変更後の orientation code
         */
        onOrientationChanged(newOrientation: Orientation): void;
    }
    /**
     * @en Handle H/W back button event notify interface.
     * @ja H/W Back button の event を受信するインターフェイス
     */
    interface IBackButtonEventListener {
        /**
         * @en Received H/W Back Button event
         * @ja H/W Back Button ハンドラ
         *
         * @param event
         *  - `en` event object
         *  - `ja` イベントオブジェクト
         * @returns
         *  - `en` true: continue default operation / false: stop default operation
         *  - `ja` true: 既定の処理を行わない / false: 既定の処理を行う
         */
        onHardwareBackButton(event?: JQuery.Event): boolean;
    }
    /**
     * @en Framework generic command callback interface.
     * @ja 汎用コマンドコールバックインターフェイス
     */
    interface ICommandListener {
        /**
         * @en Received generic command
         * @ja 汎用コマンドを受信
         *
         * @param  event
         *  - `en` event object
         *  - `ja` イベントオブジェクト
         * @param  kind
         *  - `en` command kind identifier
         *  - `ja` コマンド種別識別子
         * @returns
         *  - `en` true: continue default operation / false: stop default operation
         *  - `ja` true: 既定の処理を行わない / false: 既定の処理を行う
         */
        onCommand(event?: JQuery.Event, kind?: string): boolean;
    }
    /**
     * @en Interface class for storing registration info, using by Router.register() method.
     * @ja Router.register() で指定する登録情報を格納するインターフェイスクラス
     */
    interface PageConstructOptions {
        /**
         * @en route identifier
         * @ja route 識別子
         */
        route?: string;
        /**
         * @en callback on changing route.
         * @ja route 変更時に呼び出されるコールバック
         */
        callback?: (...args: any[]) => boolean;
        /**
         * @en set "true" if application's top view.
         * @ja アプリケーションの top 画面である場合 true を指定
         */
        top?: boolean;
        /**
         * @en The instance of Page event listener instance.
         * @ja Page イベントを受信するリスナーインスタンス <br>
         *     機能拡張時に指定する
         */
        owner?: IPage;
        /**
         * @en intent instance is communicated next page when "intent" isn't designated specifically in navigation.
         * @ja 明示的に intent が指定されない場合においても intent を破棄しない場合は true を指定
         */
        keepIntent?: boolean;
    }
    /**
     * @en Interface of Page class.
     * @ja ページクラスのインターフェイスクラス
     */
    interface IPage extends IOrientationChangedListener, IBackButtonEventListener, ICommandListener {
        /**
         * @en Return true if page is active.
         * @ja ページがアクティブである時 true
         */
        active: boolean;
        /**
         * @en Stored target page url.
         * @ja 対象のページ URL を格納
         */
        url: string;
        /**
         * @en Stored target page ID.
         * @ja 対象のページ ID を格納
         */
        id: string;
        /**
         * @en jQuery object of page.
         * @ja ページの jQuery オブジェクト
         */
        $page: JQuery;
        /**
         * @en jQuery object of page's header.
         * @ja ページヘッダの jQuery オブジェクト
         */
        $header: JQuery;
        /**
         * @en jQuery object of page's footer.
         * @ja ページフッタの jQuery オブジェクト
         */
        $footer: JQuery;
        /**
         * @en intent parameter passing between pages.
         * @ja ページ間で受け渡される intent オブジェクト
         */
        intent: Intent;
        /**
         * @en Received Router "before route change" event.
         * @ja Router "before route change" ハンドラ <br>
         *     ページ遷移直前に非同期処理を行うことが可能
         *
         * @returns
         *  - `en` promise object
         *  - `ja` Promise オブジェクト
         */
        onBeforeRouteChange(): IPromiseBase<any>;
        /**
         * @en It's called only when before the first OnPageInit().
         * @ja 最初の OnPageInit() のときにのみコールされる
         */
        onInitialize(event: JQuery.Event): void;
        /**
         * @en Event handler of jQM event: "pagebeforecreate".
         * @ja jQM event: "pagebeforecreate" に対応
         */
        onPageBeforeCreate(event: JQuery.Event): void;
        /**
         * @en Event handler of jQM event: "pagecreate" (previous version defined "pageinit").
         * @ja jQM event: "pagecreate" (旧:"pageinit") に対応
         */
        onPageInit(event: JQuery.Event): void;
        /**
         * @en Event handler of jQM event: "pagebeforeshow"
         * @ja jQM event: "pagebeforeshow" に対応
         *
         * @param event
         *  - `en` event object
         *  - `ja` イベントオブジェクト
         * @param data
         *  - `en` additional information
         *  - `ja` 付加情報
         */
        onPageBeforeShow(event: JQuery.Event, data?: ShowEventData): void;
        /**
         * @en Event handler of jQM event: "pagecontainershow" (previous version defined "pageshow").
         * @ja jQM event: "pagecontainershow" (旧:"pageshow") に対応
         *
         * @param event
         *  - `en` event object
         *  - `ja` イベントオブジェクト
         * @param data
         *  - `en` additional information
         *  - `ja` 付加情報
         */
        onPageShow(event: JQuery.Event, data?: ShowEventData): void;
        /**
         * @en Event handler of jQM event: "pagebeforehide".
         * @ja jQM event: "pagebeforehide" に対応
         *
         * @param event
         *  - `en` event object
         *  - `ja` イベントオブジェクト
         * @param data
         *  - `en` additional information
         *  - `ja` 付加情報
         */
        onPageBeforeHide(event: JQuery.Event, data?: HideEventData): void;
        /**
         * @en Event handler of jQM event: "pagecontainerhide" (previous version defined "pagehide").
         * @ja jQM event: "pagecontainerhide" (旧:"pagehide") に対応
         *
         * @param event
         *  - `en` event object
         *  - `ja` イベントオブジェクト
         * @param data
         *  - `en` additional information
         *  - `ja` 付加情報
         */
        onPageHide(event: JQuery.Event, data?: HideEventData): void;
        /**
         * @en Event handler of jQM event: "pageremove".
         * @ja jQM event: "pageremove" に対応
         */
        onPageRemove(event: JQuery.Event): void;
    }
}
declare module "cdp.framework.jqm" {
    const Framework: typeof CDP.Framework;
    export = Framework;
}
declare namespace CDP {
    enum RESULT_CODE_BASE {
        CDP_FRAMEWORK_DECLARERATION = 0,
        CDP_FRAMEWORK,
    }
    enum RESULT_CODE {
        ERROR_CDP_FRAMEWORK_DECLARATION = 0,
        /** `en` [[CDP.Framework.initialize]]() failer code. <br> `ja` [[CDP.Framework.initialize]]() のエラーコード */
        ERROR_CDP_FRAMEWORK_INITIALIZE_FAILED,
        /** `en` [[CDP.Router._initialize]]() failer code. <br> `ja` [[CDP.Router._initialize]]() のエラーコード */
        ERROR_CDP_FRAMEWORK_ROUTER_INITIALIZE_FAILED,
    }
}
declare namespace CDP.Framework {
    /**
     * @en platform judgement utility
     * @ja platform 判定オブジェクト
     *
     * @seehttps://w3g.jp/blog/tools/js_browser_sniffing
     */
    const Platform: {
        ltIE6: boolean;
        ltIE7: boolean;
        ltIE8: boolean;
        ltIE9: boolean;
        gtIE10: (mediaQuery: string) => MediaQueryList;
        Trident: any;
        Gecko: boolean;
        Presto: any;
        Blink: any;
        Webkit: boolean;
        Touch: boolean;
        Mobile: boolean;
        ltAd4_4: boolean;
        Pointer: any;
        MSPoniter: any;
        Android: boolean;
        iOS: boolean;
    };
}
declare namespace CDP.Framework {
    /**
     * @en patch class for jqm framework.
     * @ja jqm framework 用パッチ適用クラス
     *
     * @internal
     */
    class Patch {
        static s_vclickEvent: string;
        /**
         * @en Apply patch before initialize.
         * @ja 初期化前のパッチの適用
         */
        static applyBeforeInit(): void;
        /**
         * @en Apply patch after initialize.
         * @ja 初期化後のパッチの適用
         */
        static applyAfterInit(): void;
        /**
         * @en if "vclick" event is unsupported, returns false. ex: Android 4.4 (Kitkat)
         * @ja "vclick" event が非サポートである platform (KitKat) は false を返す。 <br>
         *      jQM の version up により、解決される場合は無効かする。
         */
        static isSupportedVclick(): boolean;
    }
}
declare namespace CDP.Framework {
    /**
     * @en Orientation code
     * @ja orientation 識別子
     */
    enum Orientation {
        PORTRAIT = 0,
        LANDSCAPE = 1,
    }
    /**
     * @en Get Orientation enum code
     * @ja Orientation の取得
     */
    function getOrientation(): Orientation;
}
declare namespace CDP {
    /**
     * @en The function returned Promise waits until `cordova` is ready. <br>
     *     [Note] emulate when PC enviroment.
     *
     * @ja `cordova` が有効になるまで待機 <br>
     *     PC 環境ではエミュレートされる。
     */
    function waitForDeviceReady(): Promise<void>;
    /**
     * @en Setup H/W Back key handler.
     * @ja H/W Back key ハンドラの設定関数
     *
     * @param
     * - `en` handler function.
     * - `ja` handler 指定.
     * @returns
     * - `en` old handler function.
     * - `ja` 以前の handler.
     */
    function setBackButtonHandler(handler: (event?: JQuery.Event) => void): (event?: JQuery.Event) => void;
    namespace Framework {
        /**
         * @en Any parameter types interface
         * @ja 任意のパラメータ型定義
         */
        interface PlainSettings<T = any> {
            [key: string]: T;
        }
        /**
         * @ja Setting parameters for jQuery
         * @ja jQuery に設定可能なオプション
         */
        interface JQuerySettings extends PlainSettings {
            /**
             * @en default $.ajax settings
             * @ja $.ajax の既定設定
             */
            ajaxSetup?: JQuery.AjaxSettings;
        }
        /**
         * @en Applicable options for [[CDP.Framework]]
         * @ja [[CDP.Framework]] に設定可能なオプション
         */
        interface FrameworkOptions {
            jquery?: JQuerySettings;
            jquerymobile?: PlainSettings;
            i18n?: CDP.I18NSettings;
            applyJQueryConfig?: () => void;
            applyJQueryMobileConfig?: () => void;
            applyPatch?: boolean;
            anchorVclick?: boolean;
            firstPageTransition?: boolean;
        }
        /**
         * @en Initialization function of Framework.
         * @ja Framework の初期化関数
         */
        function initialize(options?: FrameworkOptions): IPromiseBase<void>;
        /**
         * @en Check for initialization status.
         * @ja 初期化済みか判定
         *
         * @returns
         * - `en` true: initialized / false: uninitialized
         * - `ja` true: 初期化済み / false: 未初期化
         */
        function isInitialized(): boolean;
        /**
         * @en Wait for initialization status.
         * @ja 初期化待ち
         */
        function waitForInitialize(): IPromiseBase<void>;
        /**
         * @en Register IOrientationChangedListener to framework.
         * @ja IOrientationChangedListener を Framework に登録
         *
         * @param key
         *  - `en` ID key
         *  - `ja` クライアントで管理可能な ID
         * @param listener
         *  - `en` IOrientationChangedListener instance
         *  - `ja` IOrientationChangedListener インスタンス
         */
        function registerOrientationChangedListener(key: string, listener: IOrientationChangedListener): void;
        /**
         * @en Unregister IOrientationChangedListener from framework.
         * @ja IOrientationChangedListener を Framework から登録解除
         *
         * @param key
         *  - `en` ID key by using register
         *  - `ja` 登録時に使用した ID
         */
        function unregisterOrientationChangedListener(key: string): void;
        /**
         * @en Setup event handlers when after router initialized.
         * @ja イベントハンドラの設定. Router 初期化後に Framework がコールする.
         *
         * @internal
         */
        function _setupEventHandlers(): void;
        /**
         * @en Setup active IPage instance.
         * @ja active Page の設定. Framework がコールする.
         *
         * @internal
         */
        function _setActivePage(page: IPage): void;
        /**
         * @en Reterns framework default click event string.
         * @ja Framework が既定に使用するクリックイベント文字列を取得
         *
         * @returns "vclick" / "click"
         */
        function getDefaultClickEvent(): string;
        /**
         * @en Register Concrete IPage class. <br>
         *     If constructor needs arguments, use bind() function.
         * @ja Page の登録 <br>
         *     constructor を指定する. 引数がある場合は、bind を行うこと
         *
         * @param ctor
         *  - `en` Concrete IPage class constructor
         *  - `ja` コンストラクタを指定
         */
        function registerPage(ctor: new () => IPage): void;
        /**
         * @en Page instances are generated from the reserved constructor.
         * @ja 予約されたコンストラクタからPage インスタンスを生成
         */
        function constructPages(): void;
        /**
         * @en Release Page instance reference
         * @ja Page インスタンスの参照を破棄
         */
        function disposePages(): void;
    }
}
declare namespace CDP.Framework {
    /**
     * @en Convert path to URL. <br>
     *     If the path starts from "/", the function translate the path as child folder of "web root". <br>
     *     Otherwise, it interprets as relative path from current page. <br>
     *     [Note] This behavior go along with jQM, NOT with require.toUrl().
     *
     * @ja path を URL に変換 <br>
     *     "/" から始まるものは web root から、それ以外は現在のページから絶対パスURLに変換する。 <br>
     *     jQM の挙動にあわせており、require.toUrl() と異なるので注意。
     *
     * @param path
     *  - `en` set relative path from [[webRoot]], or relative path from current scirpt owner html (It doesn't start from "/").
     *  - `ja` [[webRoot]] からの相対パス, もしくはカレントスクリプトを走らせている HTML からの相対パス ("/" なし).
     */
    function toUrl(path: string): string;
    /**
     * @en Setup "before route change" handler.
     * @ja "before route change" ハンドラ設定
     *
     * @internal
     *
     * @param
     *  - `en` handler function.
     *  - `ja` handler 指定.
     * @returns
     *  - `en` old handler function.
     *  - `ja` 以前の handler.
     */
    function setBeforeRouteChangeHandler(handler: () => IPromiseBase<any>): () => IPromiseBase<any>;
    /**
     * @en initialize option definition.
     * @ja 初期化オプション
     *
     * @internal
     */
    interface InitOptions {
        /**
         * @en true: supports implicit anchor "vclick".
         * @ja true: 暗黙の anchor vclick をサポート
         */
        anchorVclick?: boolean;
        /**
         * @en judge the transition is first page's.
         * @ja 初期ページトランジションであるか判定
         */
        firstPageTransition?: boolean;
    }
    /**
     * @en Router class for adjusting jQueryMobile functions and Backbone.Router functions. <br>
     *     Even if Backbone.Router does not start routing, natigate() method works good with jQM framework.
     *
     * @ja jQueryMobile と Backbone.Router を調停する Router クラス <br>
     *     ルーティングを開始していない場合にも、navigate() は jQM フレームワークを使用して機能する。
     */
    class Router {
        private static s_initOptions;
        private static s_router;
        private static s_rootContexts;
        private static s_lastNavigateInfo;
        private static s_lastClickedTime;
        private static s_lastIntent;
        private static s_firstChangePage;
        private static s_loadUrl;
        private static s_back;
        private static DELAY_TIME;
        private static DATA_BACK_DESTINATION;
        private static DATA_NO_HASH_CHANGE;
        private static DATA_NO_VCLICK_HANDLE;
        private static BACK_DESTINATION_URL;
        private static SUBFLOW_PARAM;
        private static s_defaultInitOptions;
        private static s_defaultNavigateOptions;
        /**
         * @en for initialize Router. this function is called in framework.
         * @ja この関数はフレームワーク内部で使用される。
         *
         * @internal
         *
         * @param  options
         *  - `en` init options
         *  - `ja` 初期化オプション
         * @returns
         *  - `en` true: succeeded / false: failed.
         *  - `ja` true: 成功 / 失敗
         */
        static _initialize(options: InitOptions): boolean;
        /**
         * @en Register to Router.
         * @ja Router への登録.
         *
         * @param route
         *  - `en` route string, it can be regular expression.
         *  - `ja` ルーティング文字列 / 正規表現
         * @param page
         *  - `en` page template path.
         *  - `ja` page template path. イベント名にも使用される
         * @param top
         *  - `en` set "true" if application's top view. (optional)
         *  - `ja` Top ページの場合は true を指定 (任意)
         * @param callback
         *  - `en` callback for custom page transition. If you don't want to trigger jQM.changePage(), return true by this callback. (optional)
         *  - `ja` 遷移を自身で管理する場合に指定し、戻り値を true に設定すると changePage をコールしない (任意)
         * @returns
         *  - `en` Router instance.
         *  - `ja` インスタンス。ただし method chain をしたい場合は、any cast が必要。
         */
        static register(route: string, page: string, top?: boolean, callback?: (...args: any[]) => boolean): Router;
        /**
         * @en Start listening hash change. <br>
         *     It should be called after register().
         *
         * @ja 履歴監視の開始 <br>
         *     登録完了後にクライアントが呼ぶことでページ遷移が開始される。
         *
         * @param options
         *  - `en` options object for Backbone.History.
         *  - `ja` Backbone.History にわたるオプション
         */
        static start(options?: RouterOptions): void;
        /**
         * @en Stop listening hash change.
         * @ja 履歴監視の停止
         *
         * @returns
         *  - `en` previous status.
         *  - `ja` 以前の開始状態を返却
         */
        static stop(): boolean;
        /**
         * @en Check routing status.
         * @ja ルーティングを開始しているか判定
         *
         * @returns
         *  - `en` true: routing / false: not routing
         *  - `en` true: 有効 / false: 無効
         */
        static isRouting(): boolean;
        /**
         * @en URL navigation.
         * @ja URL遷移
         *
         * @param url
         *  - `en` set a navigate URL. (relative path / absolute path / fragment)
         *  - `ja` 遷移 URL を指定 (相対パス/絶対パス/フラグメント)
         * @param transition
         *  - `en` set a transition string.
         *  - `ja` transition に使用する effect を指定
         * @param reverse
         *  - `en` set a direction string for transition. true:reverse / false:nomal
         *  - `ja` transition に使用する direction を指定 true:reverse/false:通常
         * @param options
         *  - `en` set a options object for Backbone.Router.navigate().
         *  - `ja` Backbone.Router.navigate() に渡されるオプション
         */
        static navigate(url: string, transition?: string, reverse?: boolean, options?: NavigateOptions): void;
        /**
         * @en Navigate from Top Page. <br>
         *     If SubFlow set up, the param is cleared.
         *
         * @ja トップページからの画面遷移 <br>
         *     SubFlow が指定されていた場合はクリアされる
         * @param to
         *  - `en` set a navigate URL or PageStackOptions object or array.
         *  - `ja` 遷移 URL / PageStackOptions オブジェクト/配列
         * @param transition
         *  - `en` set a transition string
         *  - `ja` transition に使用する effect を指定
         * @param reverse
         *  - `en` set a direction string for transition. true:reverse / false:nomal
         *  - `ja` transition に使用する direction を指定 true:reverse/false:通常
         * @param options
         *  - `en` set a options object for Backbone.Router.navigate().
         *  - `ja` Backbone.Router.navigate() に渡されるオプション
         */
        static navigateFromTop(to?: string | PageStack | PageStack[], transition?: string, reverse?: boolean, options?: NavigateOptions): void;
        /**
         * @ en Back to previous history. <br>
         *      It's same as browser back button's behaviour. <br>
         *      [Note] If set the jQM: data-rel="back", work as well.
         *
         * @ja 履歴を戻る <br>
         *     ブラウザの戻るボタンと同じ挙動。 <br>
         *     jQM: data-rel="back" を指定しても同じであることに注意。
         */
        static back(): void;
        /**
         * @en Store Intent object by framwork.
         * @ja Intent を格納。 フレームワークが使用する。
         *
         * @internal
         */
        static _pushIntent(intent: Intent): void;
        /**
         * @en Get Intent object by framework.
         * @ja Intent を取得。フレームワークが使用する。
         *
         * @internal
         */
        static _popIntent(): Intent;
        /**
         * @en Get query parameters. <br>
         *     It can be accessed during "pagebeforecreate" to "pagechange".
         * @ja query parameter に指定された引数の取得 <br>
         *     ページ遷移中にのみアクセス可能 (pagebeforecreate ～ pagechange)
         */
        static getQueryParameters(): any;
        /**
         * @en Begin sub flow transaction.
         * @ja sub flow トランザクションの開始
         *
         * @param url
         *  - `en` set a navigate URL. (relative path / absolute path / fragment)
         *  - `ja` 遷移 URL を指定 (相対パス/絶対パス/フラグメント)
         * @param options
         *  - `en` set a options object for Backbone.Router.navigate().
         *  - `ja` Backbone.Router.navigate() に渡されるオプション
         * @param transition
         *  - `en` set a transition string
         *  - `ja` transition に使用する effect を指定
         * @param reverse
         *  - `en` set a direction string for transition. true:reverse / false:nomal
         *  - `ja` transition に使用する direction を指定 true:reverse/false:通常
         */
        static beginSubFlow(url: string, options: NavigateOptions, transition?: string, reverse?: boolean): void;
        /**
         * @en Commit sub flow transaction.
         * @ja sub flow トランザクションの終了
         *
         * @param transition
         * - `en` set a transition string
         * - `ja` transition に使用する effect を指定
         * @param reverse
         * - `en` set a direction string for transition. true:reverse / false:nomal
         * - `ja` transition に使用する direction を指定 true:reverse/false:通常
         */
        static commitSubFlow(transition?: string, reverse?: boolean): void;
        /**
         * @en Cancel sub flow transaction.
         * @ja sub flow トランザクションのキャンセル
         *
         * @param transition
         *  - `en` set a transition string
         *  - `ja` transition に使用する effect を指定
         * @param reverse
         *  - `en` set a direction string for transition. true:reverse[default] / false:nomal
         *  - `ja` transition に使用する direction を指定 true:reverse[既定]/false:通常
         */
        static cancelSubFlow(transition?: string, reverse?: boolean): void;
        /**
         * @en Check in sub flow.
         * @ja sub flow 内であるか判定
         */
        static isInSubFlow(): boolean;
        /**
         * @en Check from hash changed navigation.
         * @ja Hash 変更によって Navigate が起こったか判定. "pagechange" が発生するまでに判定可能
         */
        static fromHashChanged(): boolean;
        /**
         * @en Register page stack. <br>
         *     Set registered route(s) to add to page stack on the basis of the present stack position.
         *
         * @ja ページスタック登録 <br>
         *     登録済みの route を指定して、現在の位置を基点にページスタックに登録
         *
         * @param pageStack
         *  - `en` PageStackOptions object or array.
         *  - `ja` PageStackOptions オブジェクト/配列
         * @param withNavigate
         *  - `en` true: with navigate final stack. (default) / false: not navigate.
         *  - `ja` true: 最後のスタックに対してページ遷移する. (default) / false: ページ遷移しない.
         * @param options
         *  - `en` set a options object for Backbone.Router.navigate().
         *  - `ja` Backbone.Router.navigate() に渡されるオプション
         * @returns
         *  - `en` true: succeeded / false: failed
         *  - `ja` true: 成功 / false: 失敗。
         */
        static registerPageStack(pageStack: PageStack, withNavigate?: boolean, options?: NavigateOptions): boolean;
        static registerPageStack(pageStack: PageStack[], withNavigate?: boolean, options?: NavigateOptions): boolean;
        /**
         * @en Get jQM's history object
         * @ja jQM の History オブジェクトの取得
         *
         * @internal
         */
        static _getJqmHistory(): any;
        /**
         * @en Override: Backbone.History.loadUrl().
         * @ja Backbone.History.loadUrl() のオーバーライド
         */
        private static customLoadUrl(fragment);
        /**
         * @en Override: $.mobile.back().
         *  - fail safe processing. <br>
         *    If using Backbone's Router, <br>
         *    this class unuses history object of jQuery Mobile 1.4, <br>
         *    and standardize as browser back button's behaviour. (jQM 1.3 comparable)
         *
         * @ja $.mobile.back() のオーバーライド
         *  - [TBD] fail safe 処理 <br>
         *    Backbone の Router を使用している場合、 <br>
         *    jQuery Mobile 1.4 以降の内部の History 管理は使用せずに <br>
         *    1.3 相当のブラウザの[戻る]の挙動に統一する。
         */
        private static customJqmBack();
        /**
         * \~english
         * Bind events.
         *
         * @private
         *
         * \~japanese
         * イベントバインド
         *
         * @private
         */
        private static bindEvents();
        /**
         * @en Store the RootContext.
         * @ja RootContext の格納
         *
         * @param name
         *  - `en` name of route
         *  - `ja` route 名
         * @param context
         *  - `en` context object
         *  - `ja` context オブジェクト
         * @returns
         *  - `en` true: succeeded / false: already registered
         *  - `ja` true: 登録成功 / false: すでに登録されている
         */
        private static pushContext(name, context);
        /**
         * @en Check if $.mobile.initializePage() is called or not, and call it if needed.
         * @ja  $.mobile.initializePage() が呼ばれているか確認し、必要なら初期化する。
         *
         * @param url
         *  - `en` set a navigate URL. (relative path / absolute path / fragment)
         *  - `ja` 遷移 URL を指定 (相対パス/絶対パス/フラグメント)
         */
        private static initFirstPageIfNeeded(url);
        /**
         * @en Check for current page is top.
         * @ja 現在のページが top に指定されているか判定
         *
         * @returns
         *  - `en` true: top page / false: not top page
         *  - `ja` true: top 指定 / false: top ではない
         */
        private static isTopPage();
        /**
         * @en Called when anchor received "vclick" event.
         * @ja anchor が vclick されたときにコールされる
         *
         * @returns
         *  - `en` true: need default processing / false: need custom processing
         *  - `ja` true: default 処理 / false: カスタム処理
         */
        private static onAnchorVclicked(event);
        /**
         * @en Anchor processing.
         * @ja anchor 処理
         */
        private static followAnchor(event);
        /**
         * @en Check default processing needed.
         * @ja 既定の処理を行わせるか判定
         *
         * @param  url
         *  - `en` url string
         *  - `ja` url 文字列
         * @returns
         *  - `en` true: need default processing / false: need not
         *  - `ja` true: 既定の処理が必要 / false: 不要
         */
        private static needDefaultOperation(url);
        /**
         * @en Check status of Backbone.Router if they can resolve route.
         * @ja Backbone.Router が route を解決可能か判定
         *
         * @param  url
         *  - `en` url string
         *  - `ja` url 文字列
         * @returns
         *  - `en` true: can resolve / false: can not
         *  - `ja` true: 解決可能 / false: 解決不可
         */
        private static canResolveRoute(url);
        /**
         * @en Check "vclick" fired at the last minute.
         * @ja 直前に vclick が呼ばれたか判定
         */
        private static isJustBeforeVclicked();
        /**
         * @en Check back button clicked.
         * @ja Back Button がクリックされたか判定
         */
        private static isBackButtonClicked(event);
        /**
         * @en It called on succeed routing triggered by changing hash.
         * @ja ハッシュ値が変更され、ルーティングが成功したときにコールされる
         *
         * @param name
         *  - `en` name of route
         *  - `ja` route 名。page の値が渡る。
         * @param args
         *  - `en` array of paramter
         *  - `ja` パラメータ配列。
         */
        private static onRouteSucceeded(name, ...args);
        /**
         * @en It called on failed routing triggered by changing hash.
         * @ja ハッシュ値が変更され、ルーティングが失敗したときにコールされる
         *
         * @param name
         *  - `en` name of route
         *  - `ja` route 名。page の値が渡る。
         * @param args
         *  - `en` array of paramters
         *  - `ja` パラメータ配列。
         */
        private static onRouteFailed(fragment);
        /**
         * @en This function just calls jQuery Mobile's navigation method.
         * @ja jQuery Mobile によるページ遷移指定
         *
         * @param path
         *  - `en` to page path
         *  - `ja` 遷移先パスを指定
         */
        private static changePage(path);
        /**
         * @en Decide direction parameter. <br>
         *     It's as same as jQM internal implement. (imperfection)
         *
         * @ja direction の判定 <br>
         *     jQM の内部実装と等価 (不完全)
         *
         * @param path
         *  - `en` to page path
         *  - `ja` 遷移先パスを指定
         */
        private static decideDirection(path);
        /**
         * @en Return additional back distance count when back destination set. (const function)
         * @ja 戻り先が指定されているとき、追加の Back 数を返す。(この関数は Router の状態を変更しない。)
         *
         * @returns
         *  - `en` count of additiona back distance.
         *  - `ja`追加で Back に必要な距離.
         */
        private static detectAdditionalBackDistance();
        /**
         * @en Start sub flow. <br>
         *     Attach SubFlowParam to jqm history stack object.
         *
         * @ja Sub Flow の開始 <br>
         *     SubFlowParam を jqm history stack にアタッチ
         *
         * @param subFlowParam
         *  - `en` Sub Flow parameter.
         *  - `ja` Sub Flow パラメータ
         */
        private static startSubFlow(subFlowParam);
        /**
         * @en End sub flow <br>
         *     navigate and delete SubFlowParam from jqm history stack object.
         *
         * @ja Sub Flow の終了 <br>
         *     遷移と SubFlowParam を jqm history stack から削除
         *
         * @param navOptions
         *  - `en` Sub Flow parameter.
         *  - `ja` Sub Flow パラメータ
         */
        private static finishSubFlow(options);
        /**
         * @en Return destination Sub Flow information. (const function)
         * @ja Sub Flow 情報を返却 (この関数は Router の状態を変更しない。)
         *
         * @returns
         *  - `en` sub flow info.
         *  - `ja` Sub Flow 情報.
         */
        private static detectSubFlowBaseInfo();
        /**
         * @en Convert path to jQM dataUrl.
         * @ja パスを jQM dataUrl に変換
         *
         * @returns jQM data url.
         */
        private static pathToJqmDataUrl(path);
        /**
         * @en Update jQM urlHistory by window.history object. <br>
         *     To be natural browsing history behavior, application needs to update jQM urlHistory <br>
         *     when clicking back or next button of browser. (imperfection for decideDirection())
         *
         * @ja ブラウザの履歴に基づき jQM urlHistory を更新 <br>
         *     [戻る]/[進む]が押下された後、ページ遷移されるとき、jQM urlHistory を更新する。(decideDirection() により不完全)
         */
        private static treatUrlHistory();
    }
}
declare namespace CDP.Framework {
    /**
     * @en Base class of all page unit.
     * @ja すべてのページの基本となる既定クラス
     */
    class Page implements IPage {
        private _url;
        private _id;
        protected _owner: IPage;
        private _$page;
        private _$header;
        private _$footer;
        private _intent;
        private _keepIntent;
        private _initialized;
        /**
         * @param _url
         *  - `en` page's URL
         *  - `ja` ページ URL
         * @param _id
         *  - `en` page's ID
         *  - `ja` ページ ID
         * @param options
         *  - `en` construction options
         *  - `ja` 構築オプション
         */
        constructor(_url: string, _id: string, options?: PageConstructOptions);
        readonly active: boolean;
        readonly url: string;
        readonly id: string;
        readonly $page: JQuery;
        readonly $header: JQuery;
        readonly $footer: JQuery;
        intent: Intent;
        onOrientationChanged(newOrientation: Orientation): void;
        onHardwareBackButton(event?: JQuery.Event): boolean;
        onBeforeRouteChange(): IPromiseBase<any>;
        onCommand(event?: JQuery.Event, kind?: string): boolean;
        onInitialize(event: JQuery.Event): void;
        onPageBeforeCreate(event: JQuery.Event): void;
        onPageInit(event: JQuery.Event): void;
        onPageBeforeShow(event: JQuery.Event, data?: ShowEventData): void;
        onPageShow(event: JQuery.Event, data?: ShowEventData): void;
        onPageBeforeHide(event: JQuery.Event, data?: HideEventData): void;
        onPageHide(event: JQuery.Event, data?: HideEventData): void;
        onPageRemove(event: JQuery.Event): void;
        private setup(options);
        private getDirection();
        private pageBeforeCreate(event);
        private pageInit(event);
        private pageBeforeShow(event, data);
        private pageShow(event, data);
        private pageBeforeHide(event, data);
        private pageHide(event, data);
        private pageRemove(event);
    }
}
