Parent Class PerpetualDataHandler
PerpetualDataHandler
Parent class for MarketData and WriteAccessHandler that handles common data and chain operations.
Kind: global class
PerpetualDataHandler
new PerpetualDataHandler(config)
instance
.getOrderBookContract(symbol) ⇒
.getPerpetuals(ids, overrides) ⇒
.getLiquidityPools(fromIdx, toIdx, overrides) ⇒
._fillSymbolMaps()
.getSymbolFromPoolId(poolId) ⇒
symbol
.getPoolIdFromSymbol(symbol) ⇒
number
.getPerpIdFromSymbol(symbol) ⇒
number
.getSymbolFromPerpId(perpId) ⇒
string
.symbol4BToLongSymbol(sym) ⇒
string
.fetchPriceSubmissionInfoForPerpetual(symbol) ⇒
.getIndexSymbols(symbol) ⇒
.fetchLatestFeedPriceInfo(symbol) ⇒
.getPriceIds(symbol) ⇒
.getPerpetualSymbolsInPool(poolSymbol) ⇒
.getAllOpenOrders(symbol) ⇒
.numberOfOpenOrders(symbol) ⇒
number
.pollLimitOrders(symbol, numElements, [startAfter]) ⇒
.getPoolStaticInfoIndexFromSymbol(symbol) ⇒
.getMarginTokenFromSymbol(symbol) ⇒
.getMarginTokenDecimalsFromSymbol(symbol) ⇒
.getABI(contract) ⇒
static
.getPerpetualStaticInfo(_proxyContract, nestedPerpetualIDs, symbolList) ⇒
.nestedIDsToChunks(chunkSize, nestedIDs) ⇒
Array.<Array.<number>>
._getLiquidityPools(ids, _proxyContract, _symbolList, overrides) ⇒
._getPerpetuals(ids, _proxyContract, _symbolList, overrides) ⇒
.getMarginAccount(traderAddr, symbol, symbolToPerpStaticInfo, _proxyContract, _pxS2S3, overrides) ⇒
.getMarginAccounts(traderAddrs, symbols, symbolToPerpStaticInfo, _multicall, _proxyContract, _pxS2S3s, overrides) ⇒
._calculateLiquidationPrice(symbol, traderState, S2, symbolToPerpStaticInfo) ⇒
.symbolToPerpetualId(symbol, symbolToPerpStaticInfo) ⇒
.toSmartContractOrder(order, traderAddr, symbolToPerpetualMap) ⇒
.fromSmartContratOrderToClientOrder(scOrder, parentChildIds) ⇒
.toClientOrder(order, parentChildIds) ⇒
.fromClientOrder(obOrder) ⇒
._orderTypeToFlag(order) ⇒
.readSDKConfig(configNameOrfileLocation, version) ⇒
.getConfigByName(name, version) ⇒
.getConfigByLocation(filename, version) ⇒
.getConfigByChainId(chainId, version) ⇒
.getAvailableConfigs() ⇒
._getABIFromContract(contract, functionName) ⇒
.checkOrder(order, traderAccount, perpStaticInfo)
.fromClientOrderToTypeSafeOrder(order) ⇒
new PerpetualDataHandler(config)
Constructor
Param | Type | Description |
---|---|---|
config |
| Configuration object, see PerpetualDataHandler.readSDKConfig. |
perpetualDataHandler.getOrderBookContract(symbol) ⇒
Returns the order-book contract for the symbol if found or fails
Kind: instance method of PerpetualDataHandler
Returns:
order book contract for the perpetual
Param | Description |
---|---|
symbol | symbol of the form ETH-USD-MATIC |
perpetualDataHandler.getPerpetuals(ids, overrides) ⇒
Get perpetuals for the given ids from onchain
Kind: instance method of PerpetualDataHandler
Returns:
array of PerpetualData converted into decimals
Param | Description |
---|---|
ids | perpetual ids |
overrides | optional |
perpetualDataHandler.getLiquidityPools(fromIdx, toIdx, overrides) ⇒
Get liquidity pools data
Kind: instance method of PerpetualDataHandler
Returns:
array of LiquidityPoolData converted into decimals
Param | Description |
---|---|
fromIdx | starting index (>=1) |
toIdx | to index (inclusive) |
overrides | optional |
perpetualDataHandler._fillSymbolMaps()
Called when initializing. This function fills this.symbolToTokenAddrMap, and this.nestedPerpetualIDs and this.symbolToPerpStaticInfo
Kind: instance method of PerpetualDataHandler
perpetualDataHandler.getSymbolFromPoolId(poolId) ⇒ symbol
symbol
Get pool symbol given a pool Id.
Kind: instance method of PerpetualDataHandler
Returns: symbol
-
Pool symbol, e.g. "USDC".
Param | Type | Description |
---|---|---|
poolId |
| Pool Id. |
perpetualDataHandler.getPoolIdFromSymbol(symbol) ⇒ number
number
Get pool Id given a pool symbol. Pool IDs start at 1.
Kind: instance method of PerpetualDataHandler
Returns: number
-
Pool Id.
Param | Type | Description |
---|---|---|
symbol |
| Pool symbol. |
perpetualDataHandler.getPerpIdFromSymbol(symbol) ⇒ number
number
Get perpetual Id given a perpetual symbol.
Kind: instance method of PerpetualDataHandler
Returns: number
-
Perpetual Id.
Param | Type | Description |
---|---|---|
symbol |
| Perpetual symbol, e.g. "BTC-USD-MATIC". |
perpetualDataHandler.getSymbolFromPerpId(perpId) ⇒ string
string
Get the symbol in long format of the perpetual id
Kind: instance method of PerpetualDataHandler
Returns: string
-
Symbol
Param | Type | Description |
---|---|---|
perpId |
| perpetual id |
perpetualDataHandler.symbol4BToLongSymbol(sym) ⇒ string
string
Kind: instance method of PerpetualDataHandler
Returns: string
-
Long symbol
Param | Type | Description |
---|---|---|
sym |
| Short symbol |
perpetualDataHandler.fetchPriceSubmissionInfoForPerpetual(symbol) ⇒
Get PriceFeedSubmission data required for blockchain queries that involve price data, and the corresponding triangulated prices for the indices S2 and S3
Kind: instance method of PerpetualDataHandler
Returns:
PriceFeedSubmission and prices for S2 and S3. [S2price, 0] if S3 not defined.
Param | Description |
---|---|
symbol | pool symbol of the form "ETH-USD-MATIC" |
perpetualDataHandler.getIndexSymbols(symbol) ⇒
Get the symbols required as indices for the given perpetual
Kind: instance method of PerpetualDataHandler
Returns:
name of underlying index prices, e.g. ["MATIC-USD", ""]
Param | Description |
---|---|
symbol | of the form ETH-USD-MATIC, specifying the perpetual |
perpetualDataHandler.fetchLatestFeedPriceInfo(symbol) ⇒
Get the latest prices for a given perpetual from the offchain oracle networks
Kind: instance method of PerpetualDataHandler
Returns:
array of price feed updates that can be submitted to the smart contract and corresponding price information
Param | Description |
---|---|
symbol | perpetual symbol of the form BTC-USD-MATIC |
perpetualDataHandler.getPriceIds(symbol) ⇒
Get list of required pyth price source IDs for given perpetual
Kind: instance method of PerpetualDataHandler
Returns:
list of required pyth price sources for this perpetual
Param | Description |
---|---|
symbol | perpetual symbol, e.g., BTC-USD-MATIC |
perpetualDataHandler.getPerpetualSymbolsInPool(poolSymbol) ⇒
Get perpetual symbols for a given pool
Kind: instance method of PerpetualDataHandler
Returns:
array of perpetual symbols in this pool
Param | Description |
---|---|
poolSymbol | pool symbol such as "MATIC" |
perpetualDataHandler.getAllOpenOrders(symbol) ⇒
All the orders in the order book for a given symbol that are currently open.
Kind: instance method of PerpetualDataHandler
Returns:
Array with all open orders and their IDs.
Param | Type | Description |
---|---|---|
symbol |
| Symbol of the form ETH-USD-MATIC. |
Example
perpetualDataHandler.numberOfOpenOrders(symbol) ⇒ number
number
Total number of limit orders for this symbol, excluding those that have been cancelled/removed.
Kind: instance method of PerpetualDataHandler
Returns: number
-
Number of open orders.
Param | Type | Description |
---|---|---|
symbol |
| Symbol of the form ETH-USD-MATIC. |
Example
perpetualDataHandler.pollLimitOrders(symbol, numElements, [startAfter]) ⇒
Get a list of active conditional orders in the order book. This a read-only action and does not incur in gas costs.
Kind: instance method of PerpetualDataHandler
Returns:
Array of orders and corresponding order IDs
Param | Type | Description |
---|---|---|
symbol |
| Symbol of the form ETH-USD-MATIC. |
numElements |
| Maximum number of orders to poll. |
[startAfter] |
| Optional order ID from where to start polling. Defaults to the first order. |
Example
perpetualDataHandler.getPoolStaticInfoIndexFromSymbol(symbol) ⇒
Gets the pool index (starting at 0 in exchangeInfo, not ID!) corresponding to a given symbol.
Kind: instance method of PerpetualDataHandler
Returns:
Pool index
Param | Description |
---|---|
symbol | Symbol of the form ETH-USD-MATIC |
perpetualDataHandler.getMarginTokenFromSymbol(symbol) ⇒
Kind: instance method of PerpetualDataHandler
Returns:
Address of the corresponding token
Param | Description |
---|---|
symbol | Symbol of the form USDC |
perpetualDataHandler.getMarginTokenDecimalsFromSymbol(symbol) ⇒
Kind: instance method of PerpetualDataHandler
Returns:
Decimals of the corresponding token
Param | Description |
---|---|
symbol | Symbol of the form USDC |
perpetualDataHandler.getABI(contract) ⇒
Get ABI for LimitOrderBook, Proxy, or Share Pool Token
Kind: instance method of PerpetualDataHandler
Returns:
ABI for the requested contract
Param | Description |
---|---|
contract | name of contract: proxy |
PerpetualDataHandler.getPerpetualStaticInfo(_proxyContract, nestedPerpetualIDs, symbolList) ⇒
Collect all perpetuals static info
Kind: static method of PerpetualDataHandler
Returns:
array with PerpetualStaticInfo for each perpetual
Param | Type | Description |
---|---|---|
_proxyContract |
| perpetuals contract with getter |
nestedPerpetualIDs |
| perpetual id-array for each pool |
symbolList |
| mapping of symbols to convert long-format <-> blockchain-format |
PerpetualDataHandler.nestedIDsToChunks(chunkSize, nestedIDs) ⇒ Array.<Array.<number>>
Array.<Array.<number>>
Breaks up an array of nested arrays into chunks of a specified size.
Kind: static method of PerpetualDataHandler
Returns: Array.<Array.<number>>
-
An array of subarrays, each containing chunkSize
or fewer elements from nestedIDs
.
Param | Type | Description |
---|---|---|
chunkSize |
| The size of each chunk. |
nestedIDs |
| The array of nested arrays to chunk. |
PerpetualDataHandler._getLiquidityPools(ids, _proxyContract, _symbolList, overrides) ⇒
Query perpetuals
Kind: static method of PerpetualDataHandler
Returns:
array of PerpetualData converted into decimals
Param | Description |
---|---|
ids | perpetual ids |
_proxyContract | proxy contract instance |
_symbolList | symbol mappings to convert the bytes encoded symbol name to string |
overrides | optional |
PerpetualDataHandler._getPerpetuals(ids, _proxyContract, _symbolList, overrides) ⇒
Query perpetuals
Kind: static method of PerpetualDataHandler
Returns:
array of PerpetualData converted into decimals
Param | Description |
---|---|
ids | perpetual ids |
_proxyContract | proxy contract instance |
_symbolList | symbol mappings to convert the bytes encoded symbol name to string |
overrides | optional |
PerpetualDataHandler.getMarginAccount(traderAddr, symbol, symbolToPerpStaticInfo, _proxyContract, _pxS2S3, overrides) ⇒
Get trader state from the blockchain and parse into a human-readable margin account
Kind: static method of PerpetualDataHandler
Returns:
A Margin account
Param | Description |
---|---|
traderAddr | Trader address |
symbol | Perpetual symbol |
symbolToPerpStaticInfo | Symbol to perp static info mapping |
_proxyContract | Proxy contract instance |
_pxS2S3 | Prices [S2, S3] |
overrides | Optional overrides for eth_call |
PerpetualDataHandler.getMarginAccounts(traderAddrs, symbols, symbolToPerpStaticInfo, _multicall, _proxyContract, _pxS2S3s, overrides) ⇒
Get trader states from the blockchain and parse into a list of human-readable margin accounts
Kind: static method of PerpetualDataHandler
Returns:
List of margin accounts
Param | Description |
---|---|
traderAddrs | List of trader addresses |
symbols | List of symbols |
symbolToPerpStaticInfo | Symbol to perp static info mapping |
_multicall | Multicall3 contract instance |
_proxyContract | Proxy contract instance |
_pxS2S3s | List of price pairs, [[S2, S3] (1st perp), [S2, S3] (2nd perp), ... ] |
overrides | Optional eth_call overrides |
PerpetualDataHandler._calculateLiquidationPrice(symbol, traderState, S2, symbolToPerpStaticInfo) ⇒
Liquidation price
Kind: static method of PerpetualDataHandler
Returns:
liquidation mark-price, corresponding collateral/quote conversion
Param | Description |
---|---|
symbol | symbol of the form BTC-USD-MATIC |
traderState | BigInt array according to smart contract |
S2 | number, index price S2 |
symbolToPerpStaticInfo | mapping symbol->PerpStaticInfo |
PerpetualDataHandler.symbolToPerpetualId(symbol, symbolToPerpStaticInfo) ⇒
Finds the perpetual id for a symbol of the form
--. The function first converts the token names into bytes4 representation
Kind: static method of PerpetualDataHandler
Returns:
perpetual id or it fails
Param | Description |
---|---|
symbol | symbol (e.g., BTC-USD-MATC) |
symbolToPerpStaticInfo | map that contains the bytes4-symbol to PerpetualStaticInfo including id mapping |
PerpetualDataHandler.toSmartContractOrder(order, traderAddr, symbolToPerpetualMap) ⇒
Transform the convenient form of the order into a smart-contract accepted type of order
Kind: static method of PerpetualDataHandler
Returns:
SmartContractOrder
Param | Description |
---|---|
order | order type |
traderAddr | address of the trader |
symbolToPerpetualMap | mapping of symbol to perpetual Id |
PerpetualDataHandler.fromSmartContratOrderToClientOrder(scOrder, parentChildIds) ⇒
Converts a smart contract order to a client order
Kind: static method of PerpetualDataHandler
Returns:
Client order that can be submitted to the corresponding LOB
Param | Description |
---|---|
scOrder | Smart contract order |
parentChildIds | Optional parent-child dependency |
PerpetualDataHandler.toClientOrder(order, parentChildIds) ⇒
Converts a user-friendly order to a client order
Kind: static method of PerpetualDataHandler
Returns:
Client order that can be submitted to the corresponding LOB
Param | Description |
---|---|
order | Order |
parentChildIds | Optional parent-child dependency |
PerpetualDataHandler.fromClientOrder(obOrder) ⇒
Converts an order as stored in the LOB smart contract into a user-friendly order type
Kind: static method of PerpetualDataHandler
Returns:
User friendly order struct
Param | Description |
---|---|
obOrder | Order-book contract order type |
PerpetualDataHandler._orderTypeToFlag(order) ⇒
Determine the correct order flags based on the order-properties. Checks for some misspecifications.
Kind: static method of PerpetualDataHandler
Returns:
BigNumber flags
Param | Description |
---|---|
order | order type |
PerpetualDataHandler.readSDKConfig(configNameOrfileLocation, version) ⇒
Get NodeSDKConfig from a chain ID, known config name, or custom file location..
Kind: static method of PerpetualDataHandler
Returns:
NodeSDKConfig
Param | Description |
---|---|
configNameOrfileLocation | Name of a known default config, or chain ID, or json-file with required variables for config |
version | Config version number. Defaults to highest version if name or chain ID are not unique |
PerpetualDataHandler.getConfigByName(name, version) ⇒
Get a NodeSDKConfig from its name
Kind: static method of PerpetualDataHandler
Returns:
NodeSDKConfig
Param | Description |
---|---|
name | Name of the known config |
version | Version of the config. Defaults to highest available. |
PerpetualDataHandler.getConfigByLocation(filename, version) ⇒
Get a NodeSDKConfig from a json file.
Kind: static method of PerpetualDataHandler
Returns:
NodeSDKConfig
Param | Description |
---|---|
filename | Location of the file |
version | Version of the config. Defaults to highest available. |
PerpetualDataHandler.getConfigByChainId(chainId, version) ⇒
Get a NodeSDKConfig from its chain Id
Kind: static method of PerpetualDataHandler
Returns:
NodeSDKConfig
Param | Description |
---|---|
chainId | Chain Id |
version | Version of the config. Defaults to highest available. |
PerpetualDataHandler.getAvailableConfigs() ⇒
Get available configurations in a Set. You can use the output to determine the config file that you get via 'let config = PerpetualDataHandler.readSDKConfig(196);'
Kind: static method of PerpetualDataHandler
Returns:
set of chain-ids and name separated by ;
Example
PerpetualDataHandler._getABIFromContract(contract, functionName) ⇒
Get the ABI of a function in a given contract
Kind: static method of PerpetualDataHandler
Returns:
Function ABI as a single JSON string
Param | Description |
---|---|
contract | A contract instance, e.g. this.proxyContract |
functionName | Name of the function whose ABI we want |
PerpetualDataHandler.checkOrder(order, traderAccount, perpStaticInfo)
Performs basic validity checks on a given order
Kind: static method of PerpetualDataHandler
Param | Description |
---|---|
order | Order struct |
traderAccount | Trader account |
perpStaticInfo | Symbol to perpetual info map |
PerpetualDataHandler.fromClientOrderToTypeSafeOrder(order) ⇒
Converts a client order (with BigNumberish types) to a type-safe order (with number/bigint types)
Kind: static method of PerpetualDataHandler
Returns:
Order that can be submitted to the corresponding LOB via ethers v6 or viem
Param | Description |
---|---|
order | Client order |