import { Rpc } from './rpc';
import { RpcChannel } from './rpc-channel';
import { RpcOutbound } from './rpc-outbound';
export declare class RpcOutboundClient {
    /**
     * The generic command to make outbound request of RPC.
     * (From shell to module or from parent to child window.)
     *
     * @param rpc the rpc instance.
     * @param command the command name.
     * @param version the version string.
     * @param data the TData object.
     * @return Promise<TResult> the promise object.
     */
    static call<TData, TResult>(rpc: Rpc, command: string, version: string, data: TData): Promise<TResult>;
    /**
     * The generic command to make outbound request of outbound instance.
     * (From shell to module or from parent to child window.)
     *
     * @param rpcChannel the rpc channel instance.
     * @param outbound the RPC outbound instance.
     * @param command the command name.
     * @param version the version string.
     * @param data the TData object.
     * @return Promise<TResult> the promise object.
     */
    static callOutbound<TData, TResult>(rpcChannel: RpcChannel, outbound: RpcOutbound, command: string, version: string, data: TData): Promise<TResult>;
}
