import { BroadcasterError } from "../utils/Errors";
/**
 * **Broadcaster Bridge**
 *
 * Abstract class responsible for remote communication via serialized messages.
 * ____
 *
 * @private
 */
export declare abstract class BroadcasterBridge<Payload, State> {
    /**
     * Message, state and error subscriptions.
     */
    private subscriptions;
    /**
     * Called when connection to a stream is required
     *
     * @param channelName
     */
    abstract connect(channelName: string): void;
    /**
     * Disconnects from a stream and removes all subscriptions
     */
    destroy(): void;
    /**
     * Teardown method called, when bridge will be destroyed
     */
    protected abstract disconnect(): void;
    /**
     * Sends a message to all broadcasters.
     *
     * @param message
     */
    abstract postMessage(message: Payload): void;
    /**
     * Sends new error to a broadcaster via error subscription
     *
     * @param error BroadcasterError
     */
    protected readonly pushErrorMessage: (error: BroadcasterError) => void;
    /**
     * Sends new message to a broadcaster via message subscription
     *
     * @param message
     */
    protected readonly pushMessage: (message: Payload) => void;
    /**
     * Sends new state to a broadcaster via state subscription
     *
     * @param state
     */
    protected readonly pushState: (state: State) => void;
    /**
     * Notifies all broadcasters about state change in this instance.
     *
     * @param state
     */
    abstract setState(state: State): void;
    /**
     * Subscribes to a message, state and error stream.
     *
     * @param subscriptions catalogue of all subscriptions
     */
    subscribe(subscriptions: BroadcasterBridge<Payload, State>["subscriptions"]): void;
}
