import { ParamsBase, ProviderInfoBase } from './MessagingConfig';
/**
 * MessageChannel is the top level class for external messaging. Most of the implementation comes from the
 * [[MessageChannelProvider]] class but the MessageChannel is still valuable because the sdk
 * uses [[MessageChannelDecorator]]s liberally which delegate their function calls to the [[MessageChannelProvider]]
 * they are decorating rather then provide their own implementation.
 */
declare abstract class MessageChannel<CP extends ParamsBase<ProviderInfoBase>> {
    protected _clientInfo: any;
    abstract initialize(callback?: Function): void;
    abstract setEventHandler(originatorId: string, event: string | RegExp, handler: Function): void;
    abstract setSessionActiveEventHandler(handler: Function): void;
    abstract setErrorCallback(callback: Function): void;
    abstract removeEventHandlers(originatorId: string): boolean;
    abstract removeEventHandler(originatorId: string, event: string | RegExp): boolean;
    abstract onMessage(message: object): void;
    abstract notifyMessage(message: object): void;
    abstract publish(message: object): void;
    abstract reset(): void;
    abstract getProviderInfo(): string;
    abstract unsubscribeFromChannels(): void;
    abstract getChannelParams(): CP;
    abstract updateSettings(settings: object): void;
    sendMessageRequest(originator: string, requestName: string, requestCallback: Function, content: object): void;
    /**
     * Should return information about the client device
     */
    abstract get clientInfo(): any;
}
export default MessageChannel;
//# sourceMappingURL=MessageChannel.d.ts.map