UNPKG

@drift-labs/sdk

Version:
56 lines 2.49 kB
/// <reference types="node" /> /** * EventSubscriber — streams and parses Drift program events from transaction logs. * * Decodes all program events (OrderActionRecord, DepositRecord, LiquidationRecord, * FundingPaymentRecord, etc.) from `state/events.rs` into typed TypeScript objects. * Supports WebSocket and polling log providers; events are surfaced via an EventEmitter. * See `events/types.ts` for the full event type union and `events/parse.ts` for log parsing. */ import { Connection, TransactionSignature } from '@solana/web3.js'; import { Program } from '../isomorphic/anchor'; import { EventSubscriptionOptions, EventType, WrappedEvents, EventMap, EventSubscriberEvents, LogProviderType } from './types'; import { EventList } from './eventList'; import { EventEmitter } from 'events'; import StrictEventEmitter from 'strict-event-emitter-types'; export declare class EventSubscriber { private connection; private program; private options; private address; private eventListMap; private txEventCache; private awaitTxPromises; private awaitTxResolver; private logProvider; private _currentProviderType; eventEmitter: StrictEventEmitter<EventEmitter, EventSubscriberEvents>; private lastSeenSlot; private lastSeenBlockTime; lastSeenTxSig: string; constructor(connection: Connection, program: Program, options?: EventSubscriptionOptions); get currentProviderType(): LogProviderType; private initializeLogProvider; private populateInitialEventListMap; /** * Implements fallback logic for reconnecting to LogProvider. Currently terminates at polling, * could be improved to try the original type again after some cooldown. */ private updateFallbackProviderType; subscribe(): Promise<boolean>; private handleTxLogs; fetchPreviousTx(fetchMax?: boolean): Promise<void>; unsubscribe(): Promise<boolean>; private parseEventsFromLogs; awaitTx(txSig: TransactionSignature): Promise<void>; getEventList<Type extends keyof EventMap>(eventType: Type): EventList<Type>; /** * This requires the EventList be cast to an array, which requires reallocation of memory. * Would bias to using getEventList over getEvents * * @param eventType */ getEventsArray<Type extends EventType>(eventType: Type): EventMap[Type][]; getEventsByTx(txSig: TransactionSignature): WrappedEvents | undefined; } //# sourceMappingURL=eventSubscriber.d.ts.map