UNPKG

@drift-labs/sdk-browser

Version:
66 lines (65 loc) 3.58 kB
/// <reference types="node" /> import StrictEventEmitter from 'strict-event-emitter-types'; import { EventEmitter } from 'events'; import { OracleInfo, OraclePriceData } from '../oracles/types'; import { Program } from '@coral-xyz/anchor'; import { PublicKey } from '@solana/web3.js'; import { AccountSubscriber, DataAndSlot, DelistedMarketSetting, DriftClientAccountEvents, DriftClientAccountSubscriber, GrpcConfigs, ResubOpts } from './types'; import { PerpMarketAccount, SpotMarketAccount, StateAccount } from '../types'; import { OracleClientCache } from '../oracles/oracleClientCache'; export declare class grpcDriftClientAccountSubscriberV2 implements DriftClientAccountSubscriber { private grpcConfigs; private perpMarketsSubscriber?; private spotMarketsSubscriber?; private oracleMultiSubscriber?; private perpMarketIndexToAccountPubkeyMap; private spotMarketIndexToAccountPubkeyMap; private delistedMarketSetting; eventEmitter: StrictEventEmitter<EventEmitter, DriftClientAccountEvents>; isSubscribed: boolean; isSubscribing: boolean; program: Program; perpMarketIndexes: number[]; spotMarketIndexes: number[]; shouldFindAllMarketsAndOracles: boolean; oracleInfos: OracleInfo[]; initialPerpMarketAccountData: Map<number, PerpMarketAccount>; initialSpotMarketAccountData: Map<number, SpotMarketAccount>; initialOraclePriceData: Map<string, OraclePriceData>; perpOracleMap: Map<number, PublicKey>; perpOracleStringMap: Map<number, string>; spotOracleMap: Map<number, PublicKey>; spotOracleStringMap: Map<number, string>; private oracleIdToOracleDataMap; stateAccountSubscriber?: AccountSubscriber<StateAccount>; oracleClientCache: OracleClientCache; private resubOpts?; private subscriptionPromise; protected subscriptionPromiseResolver: (val: boolean) => void; constructor(grpcConfigs: GrpcConfigs, program: Program, perpMarketIndexes: number[], spotMarketIndexes: number[], oracleInfos: OracleInfo[], shouldFindAllMarketsAndOracles: boolean, delistedMarketSetting: DelistedMarketSetting, resubOpts?: ResubOpts); chunks: <T>(array: readonly T[], size: number) => T[][]; setInitialData(): Promise<void>; addPerpMarket(_marketIndex: number): Promise<boolean>; addSpotMarket(_marketIndex: number): Promise<boolean>; addOracle(oracleInfo: OracleInfo): Promise<boolean>; subscribe(): Promise<boolean>; fetch(): Promise<void>; private assertIsSubscribed; getStateAccountAndSlot(): DataAndSlot<StateAccount>; getMarketAccountsAndSlots(): DataAndSlot<PerpMarketAccount>[]; getSpotMarketAccountsAndSlots(): DataAndSlot<SpotMarketAccount>[]; getMarketAccountAndSlot(marketIndex: number): DataAndSlot<PerpMarketAccount> | undefined; getSpotMarketAccountAndSlot(marketIndex: number): DataAndSlot<SpotMarketAccount> | undefined; getOraclePriceDataAndSlot(oracleId: string): DataAndSlot<OraclePriceData> | undefined; getOraclePriceDataAndSlotForPerpMarket(marketIndex: number): DataAndSlot<OraclePriceData> | undefined; getOraclePriceDataAndSlotForSpotMarket(marketIndex: number): DataAndSlot<OraclePriceData> | undefined; setPerpOracleMap(): Promise<void>; setSpotOracleMap(): Promise<void>; subscribeToPerpMarketAccounts(): Promise<boolean>; subscribeToSpotMarketAccounts(): Promise<boolean>; subscribeToOracles(): Promise<boolean>; handleDelistedMarkets(): Promise<void>; removeInitialData(): void; unsubscribeFromOracles(): Promise<void>; unsubscribe(): Promise<void>; }