UNPKG

metaapi.cloud-sdk

Version:

SDK for MetaApi, a professional cloud forex API which includes MetaTrader REST API and MetaTrader websocket API. Supports both MetaTrader 5 (MT5) and MetaTrader 4 (MT4). CopyFactory copy trading API included. (https://metaapi.cloud)

83 lines (82 loc) 2.84 kB
/** * Custom event emitter implementation for use */ declare class EventEmitter<L extends ListenerSignature<L> = DefaultListener> { private _listeners; private _eventEmitterLogger; /** * Constructs instance */ constructor(); /** * Subscribes a listener to event * @param event Event to subscribe to * @param callback Listener function to subscribe */ on<U extends EventEmitter.Event<L>>(event: U, callback: L[U]): void; /** * Unsubscribes a listener from event * @param event Event to unsubscribe from * @param callback Callback to unsubscribe */ off<U extends EventEmitter.Event<L>>(event: U, callback: L[U]): void; /** * Subscribes a listener to event once * @param event Event to subscribe to * @param callback Listener function to subscribe * @param options Additional options */ once<U extends EventEmitter.Event<L>>(event: U, callback: L[U], options?: EventEmitter.OnceOptions<L[U]>): void; /** * Emits an event * @param event Event to emit * @param data Event payload * @returns Promise resolving when all listeners calls completed. Usually async version is useful if listeners may * return promises and the call should wait for them. If one of listener rejects or throws an error, it will be * logged. Async listeners called all at once */ emit<U extends EventEmitter.Event<L>>(event: U, ...args: Parameters<L[U]>): Promise<void>; /** * Returns subscribed events * @returns subscribed events */ getSubscriptions(): EventEmitter.Event<L>[]; /** * Returns subscribed event listeners * @param event Event * @returns Listeners */ getListeners<U extends EventEmitter.Event<L>>(event: U): L[U][]; /** * Returns whether has listeners on specific event * @param event Event * @returns Whether has listeners */ hasListeners<U extends EventEmitter.Event<L>>(event: U): boolean; private _callListener; } declare namespace EventEmitter { /** Method options */ type OnceOptions<Listener extends (...args: any[]) => any> = { /** * If specified, the listener will be called only if the callback returns true. Otherwise, the listener will wait * for the next matching call */ ifArgs?: (...args: Parameters<Listener>) => boolean; }; /** Infers event type of a listener */ type Event<L extends ListenerSignature<L>> = Extract<keyof L, string>; } export default EventEmitter; /** * Event emitter listener type */ export type ListenerSignature<Listeners> = { [EventName in keyof Listeners]: (...args: any[]) => any; }; /** * Default event emitter listener type */ export type DefaultListener = { [k: string]: (...args: any[]) => any; };