// Generated by dts-bundle v0.7.3

declare module 'page-communication' {
    export * from "page-communication/communication";
    export * from "page-communication/event";
    export * from "page-communication/handler";
}

declare module 'page-communication/communication' {
    import { EventEmitter } from 'page-communication/event';
    export class PageSocket extends EventEmitter {
            /**
                * socket communication between pages
                * @param context otherwindow
                * @param target otherwindow origin
                */
            constructor(context: any, target: string);
            /**
                * send data to the destination page
                * @param data string or arraybuffer
                */
            send(data: any): void;
    }
}

declare module 'page-communication/event' {
    /**
     * @author confiner
     * @desc 可调度事件的所有类的基类。
     */
    export class Event {
            static readonly Message: string;
            static readonly Error: string;
    }
    export class EventEmitter {
            /**
                * 检查 EvetEmitter 对象是否为特定事件类型注册了任何侦听器。
                * @param	type 事件的类型。
                * @return 如果指定类型的侦听器已注册，则值为 true；否则，值为 false。
                */
            hasListener(type: string): boolean;
            /**
                * 派发事件。
                * @param type	事件类型。
                * @param data	（可选）回调数据。<b>注意：</b>如果是需要传递多个参数 p1,p2,p3,...可以使用数组结构如：[p1,p2,p3,...] ；如果需要回调单个参数 p ，且 p 是一个数组，则需要使用结构如：[p]，其他的单个参数 p ，可以直接传入参数 p。
                * @return 此事件类型是否有侦听者，如果有侦听者则值为 true，否则值为 false。
                */
            event(type: string, data?: any): boolean;
            /**
                * 使用 EventEmmiter 对象注册指定类型的事件侦听器对象，以使侦听器能够接收事件通知。
                * @param type		事件的类型。
                * @param caller	事件侦听函数的执行域。
                * @param listener	事件侦听函数。
                * @param args		（可选）事件侦听函数的回调参数。
                * @return 此 EvetEmitter 对象。
                */
            on(type: string, caller: any, listener: Function, args?: any): EventEmitter;
            /**
                * 使用 EventEmitter 对象注册指定类型的事件侦听器对象，以使侦听器能够接收事件通知，此侦听事件响应一次后自动移除。
                * @param type		事件的类型。
                * @param caller	事件侦听函数的执行域。
                * @param listener	事件侦听函数。
                * @param args		（可选）事件侦听函数的回调参数。
                * @return 此 EventEmitter 对象。
                */
            once(type: string, caller: any, listener: Function, args?: any): EventEmitter;
            /**@private */
            _createListener(type: string, caller: any, listener: Function, args: any, once: boolean, offBefore?: Boolean): EventEmitter;
            /**
                * 从 EventEmitter 对象中删除侦听器。
                * @param type		事件的类型。
                * @param caller	事件侦听函数的执行域。
                * @param listener	事件侦听函数。
                * @param onceOnly	（可选）如果值为 true ,则只移除通过 once 方法添加的侦听器。
                * @return 此 EventEmitter 对象。
                */
            off(type: string, caller: any, listener: Function, onceOnly?: boolean): EventEmitter;
            /**
                * 从 EventEmitter 对象中删除指定事件类型的所有侦听器。
                * @param type	（可选）事件类型，如果值为 null，则移除本对象所有类型的侦听器。
                * @return 此 EventEmitter 对象。
                */
            offAll(type?: string | null): EventEmitter;
    }
}

declare module 'page-communication/handler' {
    export class Handler {
            caller: any;
            method: Function | null;
            args: Array<any> | null;
            once: Boolean;
            protected _id: number;
            /**
                * 根据指定的属性值，创建一个 <code>Handler</code> 类的实例。
                * @param	caller 执行域。
                * @param	method 处理函数。
                * @param	args 函数参数。
                * @param	once 是否只执行一次。
                */
            constructor(caller?: any, method?: Function | null, args?: Array<any> | null, once?: Boolean);
            /**
                * 设置此对象的指定属性值。
                * @param	caller 执行域(this)。
                * @param	method 回调方法。
                * @param	args 携带的参数。
                * @param	once 是否只执行一次，如果为true，执行后执行recover()进行回收。
                * @return  返回 handler 本身。
                */
            setTo(caller: any, method: Function | null, args: Array<any> | null, once: Boolean): Handler;
            /**
                * 执行处理器。
                */
            run(): any;
            /**
                * 执行处理器，携带额外数据。
                * @param	data 附加的回调数据，Array
                */
            runWith(data: any): any;
            /**
                * 清理对象引用。
                */
            clear(): Handler;
            /**
                * 清理并回收到 Handler 对象池内。
                */
            recover(): void;
            /**
                * 从对象池内创建一个Handler，默认会执行一次并立即回收，如果不需要自动回收，设置once参数为false。
                * @param	caller 执行域(this)。
                * @param	method 回调方法。
                * @param	args 携带的参数。
                * @param	once 是否只执行一次，如果为true，回调后执行recover()进行回收，默认为true。
                * @return  返回创建的handler实例。
                */
            static create(caller: any, method: Function, args?: any, once?: Boolean): Handler;
    }
}

