import { Subscription } from "../connection/Subscription";
/**
 * Classes which implement this interface can bind
 * specific control elements to publish messages
 */
export declare abstract class IBehaviour {
    protected readonly target: HTMLElement;
    protected subscription: Subscription | null;
    protected bindings: BehaviorBinding[];
    channelId: string | null;
    protected constructor(target: HTMLElement, bindings: BehaviorBinding | BehaviorBinding[]);
    init(channelId: string): void;
    /**
     * Adds event listeners to the invoker.
     * The user is able to publish a message by
     * clicking the invoker.
     *
     * @param gateway the {@link Subscription}
     */
    bind(gateway: Subscription): void;
    isValueValid: (value: string) => boolean | "" | null;
    /**
     * Removes the active event listeners
     */
    unbind(): void;
}
declare type BehaviorBinding = {
    type: string;
    handler: (event: Event) => void;
};
export {};
