@drift-labs/sdk
Version:
SDK for Drift Protocol
48 lines (47 loc) • 2 kB
TypeScript
/// <reference types="node" />
import { Connection, TransactionSignature } from '@solana/web3.js';
import { Program } from '@coral-xyz/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;
}