@d8x/perpetuals-sdk 1.2.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/abi/IPerpetualManager.json +7 -2
- package/dist/cjs/config/priceFeedConfig.json +12 -6
- package/dist/cjs/config/priceFeedOnChain.json +11 -0
- package/dist/cjs/config/settlement.json +12 -0
- package/dist/cjs/contracts/IPerpetualManager.d.ts +6 -3
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.d.ts +6 -2
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.js +7 -2
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.js.map +1 -1
- package/dist/cjs/marketData.d.ts +2 -1
- package/dist/cjs/marketData.js +18 -8
- package/dist/cjs/marketData.js.map +1 -1
- package/dist/cjs/nodeSDKTypes.d.ts +21 -2
- package/dist/cjs/onChainPxFactory.js +8 -2
- package/dist/cjs/onChainPxFactory.js.map +1 -1
- package/dist/cjs/onChainPxFeed.d.ts +9 -13
- package/dist/cjs/onChainPxFeed.js +8 -45
- package/dist/cjs/onChainPxFeed.js.map +1 -1
- package/dist/cjs/onChainPxFeedAngle.d.ts +18 -0
- package/dist/cjs/onChainPxFeedAngle.js +74 -0
- package/dist/cjs/onChainPxFeedAngle.js.map +1 -0
- package/dist/cjs/onChainPxFeedRedStone.d.ts +13 -0
- package/dist/cjs/onChainPxFeedRedStone.js +52 -0
- package/dist/cjs/onChainPxFeedRedStone.js.map +1 -0
- package/dist/cjs/perpetualDataHandler.d.ts +31 -3
- package/dist/cjs/perpetualDataHandler.js +118 -7
- package/dist/cjs/perpetualDataHandler.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/abi/IPerpetualManager.json +7 -2
- package/dist/esm/config/priceFeedConfig.json +12 -6
- package/dist/esm/config/priceFeedOnChain.json +11 -0
- package/dist/esm/config/settlement.json +12 -0
- package/dist/esm/contracts/IPerpetualManager.d.ts +6 -3
- package/dist/esm/contracts/factories/IPerpetualManager__factory.d.ts +6 -2
- package/dist/esm/contracts/factories/IPerpetualManager__factory.js +7 -2
- package/dist/esm/contracts/factories/IPerpetualManager__factory.js.map +1 -1
- package/dist/{cjs/contracts/factories/MockToken__factory.d.ts → esm/contracts/factories/PerpStorage__factory.d.ts} +115 -128
- package/dist/esm/contracts/factories/{MockToken__factory.js → PerpStorage__factory.js} +128 -139
- package/dist/esm/contracts/factories/PerpStorage__factory.js.map +1 -0
- package/dist/esm/marketData.d.ts +2 -1
- package/dist/esm/marketData.js +18 -8
- package/dist/esm/marketData.js.map +1 -1
- package/dist/esm/nodeSDKTypes.d.ts +21 -2
- package/dist/esm/onChainPxFactory.js +8 -2
- package/dist/esm/onChainPxFactory.js.map +1 -1
- package/dist/esm/onChainPxFeed.d.ts +9 -13
- package/dist/esm/onChainPxFeed.js +8 -45
- package/dist/esm/onChainPxFeed.js.map +1 -1
- package/dist/esm/onChainPxFeedAngle.d.ts +18 -0
- package/dist/esm/onChainPxFeedAngle.js +66 -0
- package/dist/esm/onChainPxFeedAngle.js.map +1 -0
- package/dist/esm/onChainPxFeedRedStone.d.ts +13 -0
- package/dist/esm/onChainPxFeedRedStone.js +46 -0
- package/dist/esm/onChainPxFeedRedStone.js.map +1 -0
- package/dist/esm/perpetualDataHandler.d.ts +31 -3
- package/dist/esm/perpetualDataHandler.js +118 -7
- package/dist/esm/perpetualDataHandler.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/doc/d8x-perpetuals-sdk.md +550 -20
- package/doc/marketData.md +2 -1
- package/doc/perpetualDataHandler.md +53 -2
- package/package.json +1 -1
- package/src/abi/IPerpetualManager.json +5263 -5258
- package/src/config/priceFeedConfig.json +12 -6
- package/src/config/priceFeedOnChain.json +11 -0
- package/src/config/settlement.json +12 -0
- package/src/contracts/IPerpetualManager.ts +6 -3
- package/src/contracts/factories/IPerpetualManager__factory.ts +7 -2
- package/src/marketData.ts +18 -9
- package/src/nodeSDKTypes.ts +23 -2
- package/src/onChainPxFactory.ts +7 -1
- package/src/onChainPxFeed.ts +16 -55
- package/src/onChainPxFeedAngle.ts +74 -0
- package/src/onChainPxFeedRedStone.ts +55 -0
- package/src/perpetualDataHandler.ts +125 -9
- package/src/version.ts +1 -1
- package/dist/cjs/abi/Maintainer.json +0 -774
- package/dist/cjs/abi/MockToken.json +0 -347
- package/dist/cjs/abi/UUPSUpgradeable.json +0 -104
- package/dist/cjs/abi/WeETH.json +0 -310
- package/dist/cjs/abi-zkevm/LimitOrderBook.json +0 -910
- package/dist/cjs/abi-zkevm/LimitOrderBookFactory.json +0 -236
- package/dist/cjs/contracts/Maintainer.d.ts +0 -799
- package/dist/cjs/contracts/Maintainer.js +0 -3
- package/dist/cjs/contracts/Maintainer.js.map +0 -1
- package/dist/cjs/contracts/MockToken.d.ts +0 -263
- package/dist/cjs/contracts/MockToken.js +0 -3
- package/dist/cjs/contracts/MockToken.js.map +0 -1
- package/dist/cjs/contracts/UUPSUpgradeable.d.ts +0 -118
- package/dist/cjs/contracts/UUPSUpgradeable.js +0 -3
- package/dist/cjs/contracts/UUPSUpgradeable.js.map +0 -1
- package/dist/cjs/contracts/WeETH.d.ts +0 -503
- package/dist/cjs/contracts/WeETH.js +0 -3
- package/dist/cjs/contracts/WeETH.js.map +0 -1
- package/dist/cjs/contracts/factories/Maintainer__factory.d.ts +0 -609
- package/dist/cjs/contracts/factories/Maintainer__factory.js +0 -792
- package/dist/cjs/contracts/factories/Maintainer__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/MockToken__factory.js +0 -365
- package/dist/cjs/contracts/factories/MockToken__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.d.ts +0 -87
- package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js +0 -122
- package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/WeETH__factory.d.ts +0 -545
- package/dist/cjs/contracts/factories/WeETH__factory.js +0 -721
- package/dist/cjs/contracts/factories/WeETH__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.d.ts +0 -4136
- package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js +0 -5324
- package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +0 -189
- package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js +0 -254
- package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.d.ts +0 -715
- package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js +0 -928
- package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/lean0/ShareToken__factory.d.ts +0 -344
- package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js +0 -456
- package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/lean0/index.d.ts +0 -4
- package/dist/cjs/contracts/factories/lean0/index.js +0 -15
- package/dist/cjs/contracts/factories/lean0/index.js.map +0 -1
- package/dist/cjs/contracts/lean0/IPerpetualManager.d.ts +0 -2821
- package/dist/cjs/contracts/lean0/IPerpetualManager.js +0 -3
- package/dist/cjs/contracts/lean0/IPerpetualManager.js.map +0 -1
- package/dist/cjs/contracts/lean0/LimitOrderBook.d.ts +0 -533
- package/dist/cjs/contracts/lean0/LimitOrderBook.js +0 -3
- package/dist/cjs/contracts/lean0/LimitOrderBook.js.map +0 -1
- package/dist/cjs/contracts/lean0/LimitOrderBookFactory.d.ts +0 -210
- package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js +0 -3
- package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js.map +0 -1
- package/dist/cjs/contracts/lean0/ShareToken.d.ts +0 -320
- package/dist/cjs/contracts/lean0/ShareToken.js +0 -3
- package/dist/cjs/contracts/lean0/ShareToken.js.map +0 -1
- package/dist/cjs/contracts/lean0/index.d.ts +0 -4
- package/dist/cjs/contracts/lean0/index.js +0 -3
- package/dist/cjs/contracts/lean0/index.js.map +0 -1
- package/dist/esm/abi/Maintainer.json +0 -774
- package/dist/esm/abi/MockToken.json +0 -347
- package/dist/esm/abi/UUPSUpgradeable.json +0 -104
- package/dist/esm/abi/WeETH.json +0 -310
- package/dist/esm/abi/lean0/IPerpetualManager.json +0 -5306
- package/dist/esm/abi/lean0/LimitOrderBook.json +0 -910
- package/dist/esm/abi/lean0/LimitOrderBookFactory.json +0 -236
- package/dist/esm/abi/lean0/ShareToken.json +0 -438
- package/dist/esm/abi-zkevm/LimitOrderBook.json +0 -910
- package/dist/esm/abi-zkevm/LimitOrderBookFactory.json +0 -236
- package/dist/esm/contracts/Maintainer.d.ts +0 -799
- package/dist/esm/contracts/Maintainer.js +0 -2
- package/dist/esm/contracts/Maintainer.js.map +0 -1
- package/dist/esm/contracts/MockToken.d.ts +0 -263
- package/dist/esm/contracts/MockToken.js +0 -2
- package/dist/esm/contracts/MockToken.js.map +0 -1
- package/dist/esm/contracts/UUPSUpgradeable.d.ts +0 -118
- package/dist/esm/contracts/UUPSUpgradeable.js +0 -2
- package/dist/esm/contracts/UUPSUpgradeable.js.map +0 -1
- package/dist/esm/contracts/WeETH.d.ts +0 -503
- package/dist/esm/contracts/WeETH.js +0 -2
- package/dist/esm/contracts/WeETH.js.map +0 -1
- package/dist/esm/contracts/factories/Maintainer__factory.d.ts +0 -609
- package/dist/esm/contracts/factories/Maintainer__factory.js +0 -788
- package/dist/esm/contracts/factories/Maintainer__factory.js.map +0 -1
- package/dist/esm/contracts/factories/MockToken__factory.d.ts +0 -273
- package/dist/esm/contracts/factories/MockToken__factory.js.map +0 -1
- package/dist/esm/contracts/factories/UUPSUpgradeable__factory.d.ts +0 -87
- package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js +0 -118
- package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js.map +0 -1
- package/dist/esm/contracts/factories/WeETH__factory.d.ts +0 -545
- package/dist/esm/contracts/factories/WeETH__factory.js +0 -717
- package/dist/esm/contracts/factories/WeETH__factory.js.map +0 -1
- package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.d.ts +0 -4136
- package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js +0 -5320
- package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js.map +0 -1
- package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +0 -189
- package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js +0 -250
- package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +0 -1
- package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.d.ts +0 -715
- package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js +0 -924
- package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js.map +0 -1
- package/dist/esm/contracts/factories/lean0/ShareToken__factory.d.ts +0 -344
- package/dist/esm/contracts/factories/lean0/ShareToken__factory.js +0 -452
- package/dist/esm/contracts/factories/lean0/ShareToken__factory.js.map +0 -1
- package/dist/esm/contracts/factories/lean0/index.d.ts +0 -4
- package/dist/esm/contracts/factories/lean0/index.js +0 -8
- package/dist/esm/contracts/factories/lean0/index.js.map +0 -1
- package/dist/esm/contracts/lean0/IPerpetualManager.d.ts +0 -2821
- package/dist/esm/contracts/lean0/IPerpetualManager.js +0 -2
- package/dist/esm/contracts/lean0/IPerpetualManager.js.map +0 -1
- package/dist/esm/contracts/lean0/LimitOrderBook.d.ts +0 -533
- package/dist/esm/contracts/lean0/LimitOrderBook.js +0 -2
- package/dist/esm/contracts/lean0/LimitOrderBook.js.map +0 -1
- package/dist/esm/contracts/lean0/LimitOrderBookFactory.d.ts +0 -210
- package/dist/esm/contracts/lean0/LimitOrderBookFactory.js +0 -2
- package/dist/esm/contracts/lean0/LimitOrderBookFactory.js.map +0 -1
- package/dist/esm/contracts/lean0/ShareToken.d.ts +0 -320
- package/dist/esm/contracts/lean0/ShareToken.js +0 -2
- package/dist/esm/contracts/lean0/ShareToken.js.map +0 -1
- package/dist/esm/contracts/lean0/index.d.ts +0 -4
- package/dist/esm/contracts/lean0/index.js +0 -2
- package/dist/esm/contracts/lean0/index.js.map +0 -1
- package/src/contracts/MockToken.ts +0 -581
- package/src/contracts/UUPSUpgradeable.ts +0 -228
- package/src/contracts/WeETH.ts +0 -1104
- package/src/contracts/factories/MockToken__factory.ts +0 -368
- package/src/contracts/factories/UUPSUpgradeable__factory.ts +0 -128
- package/src/contracts/factories/WeETH__factory.ts +0 -721
|
@@ -67,6 +67,8 @@ import {
|
|
|
67
67
|
type SmartContractOrder,
|
|
68
68
|
type PerpetualData,
|
|
69
69
|
LiquidityPoolData,
|
|
70
|
+
SettlementConfig,
|
|
71
|
+
SettlementCcyItem,
|
|
70
72
|
} from "./nodeSDKTypes";
|
|
71
73
|
import PriceFeeds from "./priceFeeds";
|
|
72
74
|
import {
|
|
@@ -91,7 +93,7 @@ export default class PerpetualDataHandler {
|
|
|
91
93
|
protected perpetualIdToSymbol: Map<number, string>; // maps unique perpetual id to symbol of the form BTC-USD-MATIC
|
|
92
94
|
protected poolStaticInfos: Array<PoolStaticInfo>;
|
|
93
95
|
protected symbolList: Map<string, string>; //mapping 4-digit symbol <-> long format
|
|
94
|
-
|
|
96
|
+
protected settlementConfig: SettlementConfig;
|
|
95
97
|
// config
|
|
96
98
|
public config: NodeSDKConfig;
|
|
97
99
|
//map margin token of the form MATIC or ETH or USDC into
|
|
@@ -132,6 +134,7 @@ export default class PerpetualDataHandler {
|
|
|
132
134
|
* PerpetualDataHandler.readSDKConfig.
|
|
133
135
|
*/
|
|
134
136
|
public constructor(config: NodeSDKConfig) {
|
|
137
|
+
this.settlementConfig = require("./config/settlement.json") as SettlementConfig;
|
|
135
138
|
this.config = config;
|
|
136
139
|
this.symbolToPerpStaticInfo = new Map<string, PerpetualStaticInfo>();
|
|
137
140
|
this.poolStaticInfos = new Array<PoolStaticInfo>();
|
|
@@ -240,7 +243,7 @@ export default class PerpetualDataHandler {
|
|
|
240
243
|
|
|
241
244
|
const proxyCalls: Multicall3.Call3Struct[] = poolInfo.poolMarginTokenAddr.map((tokenAddr) => ({
|
|
242
245
|
target: tokenAddr,
|
|
243
|
-
allowFailure:
|
|
246
|
+
allowFailure: false,
|
|
244
247
|
callData: IERC20.encodeFunctionData("decimals"),
|
|
245
248
|
}));
|
|
246
249
|
proxyCalls.push({
|
|
@@ -259,18 +262,19 @@ export default class PerpetualDataHandler {
|
|
|
259
262
|
|
|
260
263
|
// decimals
|
|
261
264
|
for (let j = 0; j < poolInfo.nestedPerpetualIDs.length; j++) {
|
|
262
|
-
const decimals =
|
|
263
|
-
poolInfo.poolMarginTokenAddr[j] == ZERO_ADDRESS
|
|
264
|
-
? undefined
|
|
265
|
-
: (IERC20.decodeFunctionResult("decimals", encodedResults[j].returnData)[0] as number);
|
|
265
|
+
const decimals = IERC20.decodeFunctionResult("decimals", encodedResults[j].returnData)[0] as number;
|
|
266
266
|
let info: PoolStaticInfo = {
|
|
267
267
|
poolId: j + 1,
|
|
268
268
|
poolMarginSymbol: "", //fill later
|
|
269
269
|
poolMarginTokenAddr: poolInfo.poolMarginTokenAddr[j],
|
|
270
270
|
poolMarginTokenDecimals: decimals,
|
|
271
|
+
poolSettleSymbol: "", //fill later
|
|
272
|
+
poolSettleTokenAddr: poolInfo.poolMarginTokenAddr[j], //correct later
|
|
273
|
+
poolSettleTokenDecimals: decimals, //correct later
|
|
271
274
|
shareTokenAddr: poolInfo.poolShareTokenAddr[j],
|
|
272
275
|
oracleFactoryAddr: poolInfo.oracleFactory,
|
|
273
276
|
isRunning: poolInfo.poolShareTokenAddr[j] != AddressZero,
|
|
277
|
+
MgnToSettleTriangulation: ["*", "1"], // correct later
|
|
274
278
|
};
|
|
275
279
|
this.poolStaticInfos.push(info);
|
|
276
280
|
}
|
|
@@ -351,6 +355,9 @@ export default class PerpetualDataHandler {
|
|
|
351
355
|
this.symbolToTokenAddrMap.set(effectivePoolCCY, this.poolStaticInfos[perp.poolId - 1].poolMarginTokenAddr);
|
|
352
356
|
this.symbolToPerpStaticInfo.set(currentSymbol3, perpStaticInfos[j]);
|
|
353
357
|
}
|
|
358
|
+
|
|
359
|
+
// handle settlement token.
|
|
360
|
+
this.initSettlementToken(perpStaticInfos);
|
|
354
361
|
// pre-calculate all triangulation paths so we can easily get from
|
|
355
362
|
// the prices of price-feeds to the index price required, e.g.
|
|
356
363
|
// BTC-USDC : BTC-USD / USDC-USD
|
|
@@ -363,6 +370,47 @@ export default class PerpetualDataHandler {
|
|
|
363
370
|
}
|
|
364
371
|
}
|
|
365
372
|
|
|
373
|
+
/**
|
|
374
|
+
* Initializes settlement currency for all pools by
|
|
375
|
+
* completing this.poolStaticInfos with settlement currency info
|
|
376
|
+
* @param perpStaticInfos PerpetualStaticInfo array from contract call
|
|
377
|
+
*/
|
|
378
|
+
private initSettlementToken(perpStaticInfos: PerpetualStaticInfo[]) {
|
|
379
|
+
let currPoolId = -1;
|
|
380
|
+
for (let j = 0; j < perpStaticInfos.length; j++) {
|
|
381
|
+
const poolId = perpStaticInfos[j].poolId;
|
|
382
|
+
if (poolId == currPoolId) {
|
|
383
|
+
continue;
|
|
384
|
+
}
|
|
385
|
+
currPoolId = poolId;
|
|
386
|
+
// We only assume the flag to be correct
|
|
387
|
+
// in the first perpetual of the pool
|
|
388
|
+
const flag = BigNumber.from(perpStaticInfos[j].perpFlags.toString());
|
|
389
|
+
// find settlement setting for this flag
|
|
390
|
+
let s: SettlementCcyItem | undefined = undefined;
|
|
391
|
+
for (let j = 0; j < this.settlementConfig.length; j++) {
|
|
392
|
+
const masked = flag.and(BigNumber.from(this.settlementConfig[j].perpFlags.toString()));
|
|
393
|
+
if (!masked.isZero()) {
|
|
394
|
+
s = this.settlementConfig[j];
|
|
395
|
+
break;
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
if (s == undefined) {
|
|
399
|
+
// no setting for given flag, settlement token = margin token
|
|
400
|
+
this.poolStaticInfos[poolId - 1].poolSettleSymbol = this.poolStaticInfos[poolId - 1].poolMarginSymbol;
|
|
401
|
+
this.poolStaticInfos[poolId - 1].poolSettleTokenAddr = this.poolStaticInfos[poolId - 1].poolMarginTokenAddr;
|
|
402
|
+
this.poolStaticInfos[poolId - 1].poolSettleTokenDecimals =
|
|
403
|
+
this.poolStaticInfos[poolId - 1].poolMarginTokenDecimals;
|
|
404
|
+
this.poolStaticInfos[poolId - 1].MgnToSettleTriangulation = ["*", "1"];
|
|
405
|
+
} else {
|
|
406
|
+
this.poolStaticInfos[poolId - 1].poolSettleSymbol = s.settleCCY;
|
|
407
|
+
this.poolStaticInfos[poolId - 1].poolSettleTokenAddr = s.settleCCYAddr;
|
|
408
|
+
this.poolStaticInfos[poolId - 1].poolSettleTokenDecimals = s.settleTokenDecimals;
|
|
409
|
+
this.poolStaticInfos[poolId - 1].MgnToSettleTriangulation = s.triangulation;
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
|
|
366
414
|
/**
|
|
367
415
|
* Utility function to export mapping and re-use in other objects.
|
|
368
416
|
* @ignore
|
|
@@ -460,6 +508,34 @@ export default class PerpetualDataHandler {
|
|
|
460
508
|
return await this.priceFeedGetter.fetchLatestFeedPriceInfoForPerpetual(symbol);
|
|
461
509
|
}
|
|
462
510
|
|
|
511
|
+
/**
|
|
512
|
+
* fetchCollateralToSettlementConversion returns the price which converts the collateral
|
|
513
|
+
* currency into settlement currency. For example if BTC-USD-STUSD has settlement currency
|
|
514
|
+
* USDC, we get
|
|
515
|
+
* let px = fetchCollateralToSettlementConversion("BTC-USD-STUSD")
|
|
516
|
+
* valueInUSDC = collateralInSTUSD * px
|
|
517
|
+
* @param symbol either perpetual symbol of the form BTC-USD-MATIC or just collateral token
|
|
518
|
+
*/
|
|
519
|
+
public async fetchCollateralToSettlementConversion(symbol: string): Promise<number> {
|
|
520
|
+
let j = this.getPoolStaticInfoIndexFromSymbol(symbol);
|
|
521
|
+
if (this.poolStaticInfos[j].poolMarginSymbol == this.poolStaticInfos[j].poolSettleSymbol) {
|
|
522
|
+
// settlement currency = collateral currency
|
|
523
|
+
return 1;
|
|
524
|
+
}
|
|
525
|
+
const triang = this.poolStaticInfos[j].MgnToSettleTriangulation;
|
|
526
|
+
let v = 1;
|
|
527
|
+
for (let k = 0; k < triang.length; k = k + 2) {
|
|
528
|
+
const sym = triang[k + 1];
|
|
529
|
+
const pxMap = await this.priceFeedGetter.fetchFeedPrices([sym]);
|
|
530
|
+
const vpxinfo = pxMap.get(sym);
|
|
531
|
+
if (vpxinfo == undefined) {
|
|
532
|
+
throw Error(`price ${sym} not available`);
|
|
533
|
+
}
|
|
534
|
+
v = triang[k] == "*" ? v * vpxinfo[0] : v / vpxinfo[0];
|
|
535
|
+
}
|
|
536
|
+
return v;
|
|
537
|
+
}
|
|
538
|
+
|
|
463
539
|
/**
|
|
464
540
|
* Get list of required pyth price source IDs for given perpetual
|
|
465
541
|
* @param symbol perpetual symbol, e.g., BTC-USD-MATIC
|
|
@@ -555,6 +631,8 @@ export default class PerpetualDataHandler {
|
|
|
555
631
|
lotSizeBC: ABK64x64ToFloat(perpInfos[j].fLotSizeBC),
|
|
556
632
|
referralRebate: ABK64x64ToFloat(perpInfos[j].fReferralRebateCC),
|
|
557
633
|
priceIds: perpInfos[j].priceIds,
|
|
634
|
+
isPyth: perpInfos[j].isPyth,
|
|
635
|
+
perpFlags: perpInfos[j].perpFlags,
|
|
558
636
|
};
|
|
559
637
|
infoArr.push(info);
|
|
560
638
|
}
|
|
@@ -692,7 +770,7 @@ export default class PerpetualDataHandler {
|
|
|
692
770
|
fTargetDFSize: ABK64x64ToFloat(BigNumber.from(orig.fTargetDFSize)), // target default fund size
|
|
693
771
|
fkStar: ABK64x64ToFloat(BigNumber.from(orig.fkStar)), // signed trade size that minimizes the AMM risk
|
|
694
772
|
fAMMTargetDD: ABK64x64ToFloat(BigNumber.from(orig.fAMMTargetDD)), // parameter: target distance to default (=inverse of default probability)
|
|
695
|
-
|
|
773
|
+
perpFlags: Number(orig.perpFlags?.toString()), // flags for perpetual
|
|
696
774
|
fMinimalTraderExposureEMA: ABK64x64ToFloat(BigNumber.from(orig.fMinimalTraderExposureEMA)), // parameter: minimal value for fCurrentTraderExposureEMA that we don't want to undershoot
|
|
697
775
|
fMinimalAMMExposureEMA: ABK64x64ToFloat(BigNumber.from(orig.fMinimalAMMExposureEMA)), // parameter: minimal abs value for fCurrentAMMExposureEMA that we don't want to undershoot
|
|
698
776
|
fSettlementS3PriceData: ABK64x64ToFloat(BigNumber.from(orig.fSettlementS3PriceData)), //quanto index
|
|
@@ -1645,7 +1723,7 @@ export default class PerpetualDataHandler {
|
|
|
1645
1723
|
/**
|
|
1646
1724
|
*
|
|
1647
1725
|
* @param symbol Symbol of the form USDC
|
|
1648
|
-
* @returns Address of the corresponding token
|
|
1726
|
+
* @returns Address of the corresponding margin token
|
|
1649
1727
|
*/
|
|
1650
1728
|
public getMarginTokenFromSymbol(symbol: string): string | undefined {
|
|
1651
1729
|
let pools = this.poolStaticInfos!;
|
|
@@ -1661,10 +1739,29 @@ export default class PerpetualDataHandler {
|
|
|
1661
1739
|
return undefined;
|
|
1662
1740
|
}
|
|
1663
1741
|
|
|
1742
|
+
/**
|
|
1743
|
+
*
|
|
1744
|
+
* @param symbol Symbol of the form ETH-USD-WEETH
|
|
1745
|
+
* @returns Address of the corresponding settlement token
|
|
1746
|
+
*/
|
|
1747
|
+
public getSettlementTokenFromSymbol(symbol: string): string | undefined {
|
|
1748
|
+
let pools = this.poolStaticInfos!;
|
|
1749
|
+
let poolId = PerpetualDataHandler._getPoolIdFromSymbol(symbol, this.poolStaticInfos);
|
|
1750
|
+
let k = 0;
|
|
1751
|
+
while (k < pools.length) {
|
|
1752
|
+
if (pools[k].poolId == poolId) {
|
|
1753
|
+
// pool found
|
|
1754
|
+
return pools[k].poolSettleTokenAddr;
|
|
1755
|
+
}
|
|
1756
|
+
k++;
|
|
1757
|
+
}
|
|
1758
|
+
return undefined;
|
|
1759
|
+
}
|
|
1760
|
+
|
|
1664
1761
|
/**
|
|
1665
1762
|
*
|
|
1666
1763
|
* @param symbol Symbol of the form USDC
|
|
1667
|
-
* @returns Decimals of the corresponding token
|
|
1764
|
+
* @returns Decimals of the corresponding margin token
|
|
1668
1765
|
*/
|
|
1669
1766
|
public getMarginTokenDecimalsFromSymbol(symbol: string): number | undefined {
|
|
1670
1767
|
let pools = this.poolStaticInfos!;
|
|
@@ -1680,6 +1777,25 @@ export default class PerpetualDataHandler {
|
|
|
1680
1777
|
return undefined;
|
|
1681
1778
|
}
|
|
1682
1779
|
|
|
1780
|
+
/**
|
|
1781
|
+
*
|
|
1782
|
+
* @param symbol Symbol of the form ETH-USD-WEETH
|
|
1783
|
+
* @returns Decimals of the corresponding settlement token
|
|
1784
|
+
*/
|
|
1785
|
+
public getSettlementTokenDecimalsFromSymbol(symbol: string): number | undefined {
|
|
1786
|
+
let pools = this.poolStaticInfos!;
|
|
1787
|
+
let poolId = PerpetualDataHandler._getPoolIdFromSymbol(symbol, this.poolStaticInfos);
|
|
1788
|
+
let k = 0;
|
|
1789
|
+
while (k < pools.length) {
|
|
1790
|
+
if (pools[k].poolId == poolId) {
|
|
1791
|
+
// pool found
|
|
1792
|
+
return pools[k].poolSettleTokenDecimals;
|
|
1793
|
+
}
|
|
1794
|
+
k++;
|
|
1795
|
+
}
|
|
1796
|
+
return undefined;
|
|
1797
|
+
}
|
|
1798
|
+
|
|
1683
1799
|
/**
|
|
1684
1800
|
* Get ABI for LimitOrderBook, Proxy, or Share Pool Token
|
|
1685
1801
|
* @param contract name of contract: proxy|lob|sharetoken
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const D8X_SDK_VERSION = "1.
|
|
1
|
+
export const D8X_SDK_VERSION = "1.3.0";
|