export declare type CallbackFunction = (...args: any[]) => any;
export declare class EasyQWebChannel {
    private context;
    private deferred;
    private onceConnectedSignalName;
    /**
     * @param channelObjectName
     * @example new EasyQWebChannel('fooObj')
     */
    constructor(channelObjectName: string);
    ready(): Promise<any>;
    /**
     * @param signalName
     * @param methodName
     * @param callback
     * @returns Promise<void>
     * @example channel.answerNative(
     *  'signalName',
     *  'jsFinished',
     *  (args: any[]) => ({ jsSideResult: 'test' })
     * )
     */
    answerNative(signalName: string, methodName: string, callback: CallbackFunction): Promise<any>;
    /**
     * @param signalName
     * @param methodName
     * @param callback
     * @param skipCallMethodWhenVoid if callback returns void, skip calling methodName
     */
    answerNativeHeartBeat(signalName: string, methodName: string, callback: CallbackFunction, skipCallMethodWhenVoid?: boolean): void;
    /**
     * @param methodName
     * @param signalName
     * @param data
     * @returns Promise<any>
     * @example channel.callNative(
     *  'methodName',
     *  'nativeMethodFinished',
     *  { methodArgument: 'test' },
     * )
     */
    callNative(methodName: string, signalName: string, data: any): Promise<any>;
    /**
     * @param methodName
     * @param data
     */
    callNativeWithoutResponse(methodName: string, data: any): void;
    /**
     * @param methodName
     */
    canUseMethod(methodName: string): boolean;
    /**
     * @param signalName
     */
    canUseSignal(signalName: string): boolean;
    /**
     * @param signalName
     * @param callback
     * @example channel.once('nativeMethodFinished', (args: any[]) => {})
     */
    once(signalName: string, callback: CallbackFunction): Promise<void>;
}
