@drift-labs/sdk
Version:
SDK for Drift Protocol
54 lines • 2.44 kB
TypeScript
/// <reference types="node" />
/// <reference types="node" />
import { BufferAndSlot, ProgramAccountSubscriber, ResubOpts } from './types';
import { Program } from '@coral-xyz/anchor';
import { Commitment, Context, MemcmpFilter, PublicKey } from '@solana/web3.js';
import { AccountInfoBase, AccountInfoWithBase58EncodedData, AccountInfoWithBase64EncodedData } from 'gill';
export declare class WebSocketProgramAccountSubscriberV2<T> implements ProgramAccountSubscriber<T> {
subscriptionName: string;
accountDiscriminator: string;
bufferAndSlot?: BufferAndSlot;
bufferAndSlotMap: Map<string, BufferAndSlot>;
program: Program;
decodeBuffer: (accountName: string, ix: Buffer) => T;
onChange: (accountId: PublicKey, data: T, context: Context, buffer: Buffer) => void;
listenerId?: number;
resubOpts?: ResubOpts;
isUnsubscribing: boolean;
timeoutId?: ReturnType<typeof setTimeout>;
options: {
filters: MemcmpFilter[];
commitment?: Commitment;
};
receivingData: boolean;
private rpc;
private rpcSubscriptions;
private abortController?;
private accountsToMonitor;
private pollingIntervalMs;
private pollingTimeouts;
private lastWsNotificationTime;
private accountsCurrentlyPolling;
private batchPollingTimeout?;
constructor(subscriptionName: string, accountDiscriminator: string, program: Program, decodeBufferFn: (accountName: string, ix: Buffer) => T, options?: {
filters: MemcmpFilter[];
commitment?: Commitment;
}, resubOpts?: ResubOpts, accountsToMonitor?: PublicKey[]);
subscribe(onChange: (accountId: PublicKey, data: T, context: Context, buffer: Buffer) => void): Promise<void>;
protected setTimeout(): void;
handleRpcResponse(context: {
slot: bigint;
}, accountInfo?: AccountInfoBase & (AccountInfoWithBase58EncodedData | AccountInfoWithBase64EncodedData)): void;
private startMonitoringForAccounts;
private startMonitoringForAccount;
private startPollingForAccount;
private startBatchPolling;
private pollAllAccounts;
private pollAccount;
private clearPollingTimeouts;
unsubscribe(onResub?: boolean): Promise<void>;
addAccountToMonitor(accountId: PublicKey): void;
removeAccountFromMonitor(accountId: PublicKey): void;
setPollingInterval(intervalMs: number): void;
}
//# sourceMappingURL=webSocketProgramAccountSubscriberV2.d.ts.map