import { SubscribeEventDescriptor, PublishEventDescriptor, MessageListener, FFIFunctionCall, HermesOptions } from './types'; /** * An abstract Hermes API subset. */ export default class ApiSubset { protected call: FFIFunctionCall; destroy(): void; private listeners; private ffiCallbacks; protected options: HermesOptions; protected facade: Buffer | null; protected subscribeEvents: { [key: string]: SubscribeEventDescriptor; }; publishEvents: { [key: string]: PublishEventDescriptor; }; publishMessagesList: { [key: string]: any; }; subscribeMessagesList: { [key: string]: any; }; protected constructor(protocolHandler: Buffer, call: FFIFunctionCall, options: HermesOptions, facadeName: string); private makeSubscriptionCallback; /** * Subscribes a message listener to a given hermes event. * * @param eventName - The event name to subscribe to. * @param listener - A callback triggered when receiving a message. * @returns A reference to the listener. */ on(eventName: T, listener: MessageListener): MessageListener; /** * Add a message listener that will only get called **once** for a given hermes event, then unsubscribe. * * @param eventName - The event name to subscribe to. * @param listener - A callback triggered when receiving a message. * @returns A reference to the wrapped listener. */ once(eventName: T, listener: MessageListener): (message: this["subscribeMessagesList"][T], ...args: any[]) => void; /** * Removes an existing message listener for a given hermes event. * * @param eventName - The event name that was subscribed to. * @param listener - A reference to the listener callback to remove. * @returns True if succeeded, false otherwise. */ off(eventName: T, listener: MessageListener): boolean; /** * Publish a message. * * @param eventName - Name of the publishing event. * @param message - Contents of the message. */ publish(eventName: T, message?: this['publishMessagesList'][T]): void; }