@drift-labs/sdk
Version:
SDK for Drift Protocol
70 lines • 3.95 kB
TypeScript
/// <reference types="node" />
import { AccountToPoll, DataAndSlot, DelistedMarketSetting, DriftClientAccountEvents, DriftClientAccountSubscriber, OraclesToPoll } from './types';
import { Program } from '@coral-xyz/anchor';
import StrictEventEmitter from 'strict-event-emitter-types';
import { EventEmitter } from 'events';
import { PerpMarketAccount, SpotMarketAccount, StateAccount, UserAccount } from '../types';
import { BulkAccountLoader } from './bulkAccountLoader';
import { PublicKey } from '@solana/web3.js';
import { OracleInfo, OraclePriceData } from '../oracles/types';
import { OracleClientCache } from '../oracles/oracleClientCache';
export declare class PollingDriftClientAccountSubscriber implements DriftClientAccountSubscriber {
isSubscribed: boolean;
program: Program;
perpMarketIndexes: number[];
spotMarketIndexes: number[];
oracleInfos: OracleInfo[];
oracleClientCache: OracleClientCache;
shouldFindAllMarketsAndOracles: boolean;
eventEmitter: StrictEventEmitter<EventEmitter, DriftClientAccountEvents>;
accountLoader: BulkAccountLoader;
accountsToPoll: Map<string, AccountToPoll>;
oraclesToPoll: Map<string, OraclesToPoll>;
errorCallbackId?: string;
state?: DataAndSlot<StateAccount>;
perpMarket: Map<number, DataAndSlot<PerpMarketAccount>>;
perpOracleMap: Map<number, PublicKey>;
perpOracleStringMap: Map<number, string>;
spotMarket: Map<number, DataAndSlot<SpotMarketAccount>>;
spotOracleMap: Map<number, PublicKey>;
spotOracleStringMap: Map<number, string>;
oracles: Map<string, DataAndSlot<OraclePriceData>>;
user?: DataAndSlot<UserAccount>;
delistedMarketSetting: DelistedMarketSetting;
private isSubscribing;
private subscriptionPromise;
private subscriptionPromiseResolver;
constructor(program: Program, accountLoader: BulkAccountLoader, perpMarketIndexes: number[], spotMarketIndexes: number[], oracleInfos: OracleInfo[], shouldFindAllMarketsAndOracles: boolean, delistedMarketSetting: DelistedMarketSetting);
subscribe(): Promise<boolean>;
updateAccountsToPoll(): Promise<void>;
updatePerpMarketAccountsToPoll(): Promise<boolean>;
addPerpMarketAccountToPoll(marketIndex: number): Promise<boolean>;
updateSpotMarketAccountsToPoll(): Promise<boolean>;
addSpotMarketAccountToPoll(marketIndex: number): Promise<boolean>;
updateOraclesToPoll(): boolean;
addOracleToPoll(oracleInfo: OracleInfo): boolean;
addToAccountLoader(): Promise<void>;
addAccountToAccountLoader(accountToPoll: AccountToPoll): Promise<void>;
addOracleToAccountLoader(oracleToPoll: OraclesToPoll): Promise<void>;
fetch(): Promise<void>;
didSubscriptionSucceed(): boolean;
unsubscribe(): Promise<void>;
addSpotMarket(marketIndex: number): Promise<boolean>;
addPerpMarket(marketIndex: number): Promise<boolean>;
addOracle(oracleInfo: OracleInfo): Promise<boolean>;
private pauseForOracleToBeAdded;
setPerpOracleMap(): Promise<void>;
setSpotOracleMap(): Promise<void>;
handleDelistedMarkets(): void;
assertIsSubscribed(): void;
getStateAccountAndSlot(): DataAndSlot<StateAccount>;
getMarketAccountAndSlot(marketIndex: number): DataAndSlot<PerpMarketAccount> | undefined;
getMarketAccountsAndSlots(): DataAndSlot<PerpMarketAccount>[];
getSpotMarketAccountAndSlot(marketIndex: number): DataAndSlot<SpotMarketAccount> | undefined;
getSpotMarketAccountsAndSlots(): DataAndSlot<SpotMarketAccount>[];
getOraclePriceDataAndSlot(oracleId: string): DataAndSlot<OraclePriceData> | undefined;
getOraclePriceDataAndSlotForPerpMarket(marketIndex: number): DataAndSlot<OraclePriceData> | undefined;
getOraclePriceDataAndSlotForSpotMarket(marketIndex: number): DataAndSlot<OraclePriceData> | undefined;
updateAccountLoaderPollingFrequency(pollingFrequency: number): void;
}
//# sourceMappingURL=pollingDriftClientAccountSubscriber.d.ts.map