import { EmbedChartEvent, EventHandler, EventHandlerPayload, EventHandlerOptions, EventSender } from '../types';
export declare function EventSource<S extends EventSender>(Sender: S): {
    new (...args: any[]): {
        /** @ignore */
        _eventHandlers: Record<EmbedChartEvent, Record<string, {
            handle: EventHandler;
            options: EventHandlerOptions;
        }>>;
        /**
         * Handle the event sent from embedded app.
         */
        _handleEvent(event: EmbedChartEvent, payload: EventHandlerPayload, handlerIds: string[]): void;
        /**
         * Sets an event listener
         * @param event - the event you are subscribing to
         * @param eventHandler - the callback to be executed when the event is triggered
         * @param options - optional options object, can be used to customise when handler is called
         */
        addEventListener(event: EmbedChartEvent, eventHandler: EventHandler, options?: EventHandlerOptions): Promise<unknown>;
        /**
         * Removes an event listener
         * @param event - the event you are unsubscribing from
         * @param eventHandler - the event listener function you are unsubscribing from
         * @param options - optional options object used when addEventListener
         */
        removeEventListener(event: EmbedChartEvent, eventHandler: EventHandler, options?: EventHandlerOptions): Promise<unknown>;
        _send(msgName: string, ...payload: unknown[]): Promise<[unknown]>;
    };
} & S;
