import Task from '@dojo/core/async/Task';
import { RemoteEvents } from '../RemoteSuite';
export default abstract class BaseChannel {
    readonly url: string;
    readonly sessionId: string;
    constructor(options: ChannelOptions);
    sendMessage(name: keyof RemoteEvents, data: any): Task<any>;
    protected abstract _sendData(name: keyof RemoteEvents, data: any): Task<any>;
}
export interface ChannelOptions {
    sessionId: string;
    url: string;
    port?: number;
    timeout?: number;
}
export declare function isChannel(value: any): value is BaseChannel;
export interface ChannelOptions {
    sessionId: string;
    url: string;
    port?: number;
    timeout?: number;
}
export interface Message {
    sessionId: string;
    id: string;
    name: string;
    data: any;
}
