/// /// import { PublicKey } from '@solana/web3.js'; import { DriftClientAccountEvents, AccountSubscriber } from './types'; import { StateAccount, PerpMarketAccount, SpotMarketAccount } from '../types'; import { OracleInfo, OraclePriceData } from '../oracles/types'; import { AxiosInstance } from 'axios'; import StrictEventEmitter from 'strict-event-emitter-types'; import { EventEmitter } from 'events'; export type MarketInfo = { marketIndex: number; publicKey: PublicKey; }; export type PublicAccountInfo = { statePublicKey: PublicKey; perpMarketInfos: MarketInfo[]; spotMarketInfos: MarketInfo[]; oracleInfos: OracleInfo[]; }; export type PublicData = { channel: string; symbol: string; data: string; }; export declare enum AccountType { STATE = "state", PERP = "perpMarket", SPOT = "spotMarket", ORACLE = "oracle" } export declare enum EventType { UPDATE = "update", STATE_ACCOUNT_UPDATE = "stateAccountUpdate", PERP_MARKET_UPDATE = "perpMarketAccountUpdate", SPOT_MARKET_UPDATE = "spotMarketAccountUpdate", ORACLE_PRICE_UPDATE = "oraclePriceUpdate" } export declare function log(data: string): void; export default class RemoteUtil { restUrl: string; wsUrl: string; http: AxiosInstance; webSocket: any; httpTimeoutMs: number; pingTimeoutId?: NodeJS.Timeout; wsPingTimeoutMs: number; connectTimeoutId?: NodeJS.Timeout; wsConnectTimeoutMs: number; eventEmitter: StrictEventEmitter; stateAccountSubscriber: AccountSubscriber; perpMarketAccountSubscribers: Map>; spotMarketAccountSubscribers: Map>; oracleSubscribers: Map>; publicAccountInfo: PublicAccountInfo; perpPublicKeyMarketMap: Map; spotPublicKeyMarketMap: Map; constructor(eventEmitter: StrictEventEmitter, perpMarketAccountSubscribers: Map>, spotMarketAccountSubscribers: Map>, oracleSubscribers: Map>); setStateAccountSubscriber(stateAccountSubscriber: AccountSubscriber): void; getPublicAccountInfo(): Promise; connect(): Promise; private initData; private updateData; private subscribe; private httpGet; private setPingTimeout; private setConnectTimeout; private formatPublicAccountInfo; }