@d8x/perpetuals-sdk 2.5.13 → 2.5.15
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 +93 -16
- package/dist/cjs/abi/PerpetualManagerProxy.json +1 -1
- package/dist/cjs/constants.d.ts +1 -0
- package/dist/cjs/constants.js +2 -1
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/contracts/IPerpetualManager.d.ts +20 -13
- package/dist/cjs/contracts/PerpetualManagerProxy.d.ts +3 -3
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.d.ts +74 -13
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.js +93 -16
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.d.ts +1 -1
- package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.js +1 -1
- package/dist/cjs/marketData.js +5 -2
- package/dist/cjs/marketData.js.map +1 -1
- package/dist/cjs/nodeSDKTypes.d.ts +1 -0
- package/dist/cjs/nodeSDKTypes.js.map +1 -1
- package/dist/cjs/perpetualDataHandler.d.ts +23 -0
- package/dist/cjs/perpetualDataHandler.js +56 -2
- package/dist/cjs/perpetualDataHandler.js.map +1 -1
- package/dist/cjs/priceFeeds.js +1 -1
- package/dist/cjs/priceFeeds.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 +93 -16
- package/dist/esm/abi/PerpetualManagerProxy.json +1 -1
- package/dist/esm/constants.d.ts +1 -0
- package/dist/esm/constants.js +1 -0
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/contracts/IPerpetualManager.d.ts +20 -13
- package/dist/esm/contracts/PerpetualManagerProxy.d.ts +3 -3
- package/dist/esm/contracts/factories/IPerpetualManager__factory.d.ts +74 -13
- package/dist/esm/contracts/factories/IPerpetualManager__factory.js +93 -16
- package/dist/esm/contracts/factories/IPerpetualManager__factory.js.map +1 -1
- package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.d.ts +1 -1
- package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.js +1 -1
- package/dist/esm/marketData.js +5 -2
- package/dist/esm/marketData.js.map +1 -1
- package/dist/esm/nodeSDKTypes.d.ts +1 -0
- package/dist/esm/nodeSDKTypes.js.map +1 -1
- package/dist/esm/perpetualDataHandler.d.ts +23 -0
- package/dist/esm/perpetualDataHandler.js +56 -2
- package/dist/esm/perpetualDataHandler.js.map +1 -1
- package/dist/esm/priceFeeds.js +1 -1
- package/dist/esm/priceFeeds.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +1 -1
- package/src/abi/IPerpetualManager.json +5589 -5512
- package/src/abi/PerpetualManagerProxy.json +1597 -1597
- package/src/constants.ts +2 -0
- package/src/contracts/IPerpetualManager.ts +29 -22
- package/src/contracts/PerpetualManagerProxy.ts +3 -3
- package/src/contracts/factories/IPerpetualManager__factory.ts +93 -16
- package/src/contracts/factories/PerpetualManagerProxy__factory.ts +1 -1
- package/src/marketData.ts +5 -3
- package/src/nodeSDKTypes.ts +1 -0
- package/src/perpetualDataHandler.ts +60 -3
- package/src/priceFeeds.ts +1 -1
- package/src/version.ts +1 -1
package/src/constants.ts
CHANGED
|
@@ -32,6 +32,8 @@ export const MASK_STOP_ORDER = BigInt("0x20000000");
|
|
|
32
32
|
export const MASK_KEEP_POS_LEVERAGE = BigInt("0x08000000");
|
|
33
33
|
export const MASK_PREDICTION_MARKET = 2n;
|
|
34
34
|
export const MASK_LOW_LIQUIDITY_MARKET = 4n;
|
|
35
|
+
export const MASK_TRADFI_MARKET = 8n;
|
|
36
|
+
|
|
35
37
|
|
|
36
38
|
export const ORDER_TYPE_LIMIT = "LIMIT";
|
|
37
39
|
export const ORDER_TYPE_MARKET = "MARKET";
|
|
@@ -253,7 +253,7 @@ export declare namespace PerpStorage {
|
|
|
253
253
|
fMinimalAMMExposureEMA: BigNumberish;
|
|
254
254
|
fSettlementS3PriceData: BigNumberish;
|
|
255
255
|
fSettlementS2PriceData: BigNumberish;
|
|
256
|
-
|
|
256
|
+
fParams: BigNumberish;
|
|
257
257
|
fMarkPriceEMALambda: BigNumberish;
|
|
258
258
|
fFundingRateClamp: BigNumberish;
|
|
259
259
|
fMaximalTradeSizeBumpUp: BigNumberish;
|
|
@@ -300,7 +300,7 @@ export declare namespace PerpStorage {
|
|
|
300
300
|
fMinimalAMMExposureEMA: bigint,
|
|
301
301
|
fSettlementS3PriceData: bigint,
|
|
302
302
|
fSettlementS2PriceData: bigint,
|
|
303
|
-
|
|
303
|
+
fParams: bigint,
|
|
304
304
|
fMarkPriceEMALambda: bigint,
|
|
305
305
|
fFundingRateClamp: bigint,
|
|
306
306
|
fMaximalTradeSizeBumpUp: bigint,
|
|
@@ -345,7 +345,7 @@ export declare namespace PerpStorage {
|
|
|
345
345
|
fMinimalAMMExposureEMA: bigint;
|
|
346
346
|
fSettlementS3PriceData: bigint;
|
|
347
347
|
fSettlementS2PriceData: bigint;
|
|
348
|
-
|
|
348
|
+
fParams: bigint;
|
|
349
349
|
fMarkPriceEMALambda: bigint;
|
|
350
350
|
fFundingRateClamp: bigint;
|
|
351
351
|
fMaximalTradeSizeBumpUp: bigint;
|
|
@@ -386,6 +386,7 @@ export declare namespace IPerpetualInfo {
|
|
|
386
386
|
priceIds: BytesLike[];
|
|
387
387
|
isPyth: boolean[];
|
|
388
388
|
perpFlags: BigNumberish;
|
|
389
|
+
fAMMTargetDD: BigNumberish;
|
|
389
390
|
};
|
|
390
391
|
|
|
391
392
|
export type PerpetualStaticInfoStructOutput = [
|
|
@@ -403,7 +404,8 @@ export declare namespace IPerpetualInfo {
|
|
|
403
404
|
fReferralRebateCC: bigint,
|
|
404
405
|
priceIds: string[],
|
|
405
406
|
isPyth: boolean[],
|
|
406
|
-
perpFlags: bigint
|
|
407
|
+
perpFlags: bigint,
|
|
408
|
+
fAMMTargetDD: bigint
|
|
407
409
|
] & {
|
|
408
410
|
id: bigint;
|
|
409
411
|
limitOrderBookAddr: string;
|
|
@@ -420,6 +422,7 @@ export declare namespace IPerpetualInfo {
|
|
|
420
422
|
priceIds: string[];
|
|
421
423
|
isPyth: boolean[];
|
|
422
424
|
perpFlags: bigint;
|
|
425
|
+
fAMMTargetDD: bigint;
|
|
423
426
|
};
|
|
424
427
|
}
|
|
425
428
|
|
|
@@ -544,6 +547,7 @@ export interface IPerpetualManagerInterface extends Interface {
|
|
|
544
547
|
| "settleNextTraderInPool"
|
|
545
548
|
| "settleTraders"
|
|
546
549
|
| "splitProtocolFee"
|
|
550
|
+
| "testTradeEvent"
|
|
547
551
|
| "togglePerpEmergencyState"
|
|
548
552
|
| "tradeViaOrderBook"
|
|
549
553
|
| "transferBrokerLots"
|
|
@@ -552,7 +556,6 @@ export interface IPerpetualManagerInterface extends Interface {
|
|
|
552
556
|
| "transferValueToTreasury"
|
|
553
557
|
| "updateAMMTargetFundSize"
|
|
554
558
|
| "updateDefaultFundTargetSize"
|
|
555
|
-
| "updateDefaultFundTargetSizeRandom"
|
|
556
559
|
| "updateFundingAndPricesAfter"
|
|
557
560
|
| "updateFundingAndPricesBefore"
|
|
558
561
|
| "updatePriceFeeds"
|
|
@@ -1162,6 +1165,10 @@ export interface IPerpetualManagerInterface extends Interface {
|
|
|
1162
1165
|
functionFragment: "splitProtocolFee",
|
|
1163
1166
|
values: [BigNumberish]
|
|
1164
1167
|
): string;
|
|
1168
|
+
encodeFunctionData(
|
|
1169
|
+
functionFragment: "testTradeEvent",
|
|
1170
|
+
values: [IPerpetualOrder.OrderStruct]
|
|
1171
|
+
): string;
|
|
1165
1172
|
encodeFunctionData(
|
|
1166
1173
|
functionFragment: "togglePerpEmergencyState",
|
|
1167
1174
|
values: [BigNumberish]
|
|
@@ -1194,10 +1201,6 @@ export interface IPerpetualManagerInterface extends Interface {
|
|
|
1194
1201
|
functionFragment: "updateDefaultFundTargetSize",
|
|
1195
1202
|
values: [BigNumberish]
|
|
1196
1203
|
): string;
|
|
1197
|
-
encodeFunctionData(
|
|
1198
|
-
functionFragment: "updateDefaultFundTargetSizeRandom",
|
|
1199
|
-
values: [BigNumberish]
|
|
1200
|
-
): string;
|
|
1201
1204
|
encodeFunctionData(
|
|
1202
1205
|
functionFragment: "updateFundingAndPricesAfter",
|
|
1203
1206
|
values: [BigNumberish]
|
|
@@ -1699,6 +1702,10 @@ export interface IPerpetualManagerInterface extends Interface {
|
|
|
1699
1702
|
functionFragment: "splitProtocolFee",
|
|
1700
1703
|
data: BytesLike
|
|
1701
1704
|
): Result;
|
|
1705
|
+
decodeFunctionResult(
|
|
1706
|
+
functionFragment: "testTradeEvent",
|
|
1707
|
+
data: BytesLike
|
|
1708
|
+
): Result;
|
|
1702
1709
|
decodeFunctionResult(
|
|
1703
1710
|
functionFragment: "togglePerpEmergencyState",
|
|
1704
1711
|
data: BytesLike
|
|
@@ -1731,10 +1738,6 @@ export interface IPerpetualManagerInterface extends Interface {
|
|
|
1731
1738
|
functionFragment: "updateDefaultFundTargetSize",
|
|
1732
1739
|
data: BytesLike
|
|
1733
1740
|
): Result;
|
|
1734
|
-
decodeFunctionResult(
|
|
1735
|
-
functionFragment: "updateDefaultFundTargetSizeRandom",
|
|
1736
|
-
data: BytesLike
|
|
1737
|
-
): Result;
|
|
1738
1741
|
decodeFunctionResult(
|
|
1739
1742
|
functionFragment: "updateFundingAndPricesAfter",
|
|
1740
1743
|
data: BytesLike
|
|
@@ -3454,6 +3457,12 @@ export interface IPerpetualManager extends BaseContract {
|
|
|
3454
3457
|
"view"
|
|
3455
3458
|
>;
|
|
3456
3459
|
|
|
3460
|
+
testTradeEvent: TypedContractMethod<
|
|
3461
|
+
[_order: IPerpetualOrder.OrderStruct],
|
|
3462
|
+
[void],
|
|
3463
|
+
"nonpayable"
|
|
3464
|
+
>;
|
|
3465
|
+
|
|
3457
3466
|
togglePerpEmergencyState: TypedContractMethod<
|
|
3458
3467
|
[_perpetualId: BigNumberish],
|
|
3459
3468
|
[void],
|
|
@@ -3498,12 +3507,6 @@ export interface IPerpetualManager extends BaseContract {
|
|
|
3498
3507
|
"nonpayable"
|
|
3499
3508
|
>;
|
|
3500
3509
|
|
|
3501
|
-
updateDefaultFundTargetSizeRandom: TypedContractMethod<
|
|
3502
|
-
[_iPoolIndex: BigNumberish],
|
|
3503
|
-
[void],
|
|
3504
|
-
"nonpayable"
|
|
3505
|
-
>;
|
|
3506
|
-
|
|
3507
3510
|
updateFundingAndPricesAfter: TypedContractMethod<
|
|
3508
3511
|
[_iPerpetualId: BigNumberish],
|
|
3509
3512
|
[void],
|
|
@@ -4417,6 +4420,13 @@ export interface IPerpetualManager extends BaseContract {
|
|
|
4417
4420
|
getFunction(
|
|
4418
4421
|
nameOrSignature: "splitProtocolFee"
|
|
4419
4422
|
): TypedContractMethod<[fee: BigNumberish], [[bigint, bigint]], "view">;
|
|
4423
|
+
getFunction(
|
|
4424
|
+
nameOrSignature: "testTradeEvent"
|
|
4425
|
+
): TypedContractMethod<
|
|
4426
|
+
[_order: IPerpetualOrder.OrderStruct],
|
|
4427
|
+
[void],
|
|
4428
|
+
"nonpayable"
|
|
4429
|
+
>;
|
|
4420
4430
|
getFunction(
|
|
4421
4431
|
nameOrSignature: "togglePerpEmergencyState"
|
|
4422
4432
|
): TypedContractMethod<[_perpetualId: BigNumberish], [void], "nonpayable">;
|
|
@@ -4457,9 +4467,6 @@ export interface IPerpetualManager extends BaseContract {
|
|
|
4457
4467
|
getFunction(
|
|
4458
4468
|
nameOrSignature: "updateDefaultFundTargetSize"
|
|
4459
4469
|
): TypedContractMethod<[_iPerpetualId: BigNumberish], [void], "nonpayable">;
|
|
4460
|
-
getFunction(
|
|
4461
|
-
nameOrSignature: "updateDefaultFundTargetSizeRandom"
|
|
4462
|
-
): TypedContractMethod<[_iPoolIndex: BigNumberish], [void], "nonpayable">;
|
|
4463
4470
|
getFunction(
|
|
4464
4471
|
nameOrSignature: "updateFundingAndPricesAfter"
|
|
4465
4472
|
): TypedContractMethod<[_iPerpetualId: BigNumberish], [void], "nonpayable">;
|
|
@@ -1206,19 +1206,19 @@ export namespace UpdateMarkPriceEvent {
|
|
|
1206
1206
|
perpetualId: BigNumberish,
|
|
1207
1207
|
fMidPricePremium: BigNumberish,
|
|
1208
1208
|
fMarkPricePremium: BigNumberish,
|
|
1209
|
-
|
|
1209
|
+
fMarkIndexPrice: BigNumberish
|
|
1210
1210
|
];
|
|
1211
1211
|
export type OutputTuple = [
|
|
1212
1212
|
perpetualId: bigint,
|
|
1213
1213
|
fMidPricePremium: bigint,
|
|
1214
1214
|
fMarkPricePremium: bigint,
|
|
1215
|
-
|
|
1215
|
+
fMarkIndexPrice: bigint
|
|
1216
1216
|
];
|
|
1217
1217
|
export interface OutputObject {
|
|
1218
1218
|
perpetualId: bigint;
|
|
1219
1219
|
fMidPricePremium: bigint;
|
|
1220
1220
|
fMarkPricePremium: bigint;
|
|
1221
|
-
|
|
1221
|
+
fMarkIndexPrice: bigint;
|
|
1222
1222
|
}
|
|
1223
1223
|
export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
|
|
1224
1224
|
export type Filter = TypedDeferredTopicFilter<Event>;
|
|
@@ -3188,7 +3188,7 @@ const _abi = [
|
|
|
3188
3188
|
},
|
|
3189
3189
|
{
|
|
3190
3190
|
internalType: "int128",
|
|
3191
|
-
name: "
|
|
3191
|
+
name: "fParams",
|
|
3192
3192
|
type: "int128",
|
|
3193
3193
|
},
|
|
3194
3194
|
{
|
|
@@ -3370,6 +3370,11 @@ const _abi = [
|
|
|
3370
3370
|
name: "perpFlags",
|
|
3371
3371
|
type: "int128",
|
|
3372
3372
|
},
|
|
3373
|
+
{
|
|
3374
|
+
internalType: "int128",
|
|
3375
|
+
name: "fAMMTargetDD",
|
|
3376
|
+
type: "int128",
|
|
3377
|
+
},
|
|
3373
3378
|
],
|
|
3374
3379
|
internalType: "struct IPerpetualInfo.PerpetualStaticInfo[]",
|
|
3375
3380
|
name: "",
|
|
@@ -3453,7 +3458,7 @@ const _abi = [
|
|
|
3453
3458
|
},
|
|
3454
3459
|
{
|
|
3455
3460
|
internalType: "uint16",
|
|
3456
|
-
name: "
|
|
3461
|
+
name: "minimalSpreadBps",
|
|
3457
3462
|
type: "uint16",
|
|
3458
3463
|
},
|
|
3459
3464
|
{
|
|
@@ -3580,7 +3585,7 @@ const _abi = [
|
|
|
3580
3585
|
},
|
|
3581
3586
|
{
|
|
3582
3587
|
internalType: "int128",
|
|
3583
|
-
name: "
|
|
3588
|
+
name: "fParams",
|
|
3584
3589
|
type: "int128",
|
|
3585
3590
|
},
|
|
3586
3591
|
{
|
|
@@ -5084,6 +5089,91 @@ const _abi = [
|
|
|
5084
5089
|
stateMutability: "pure",
|
|
5085
5090
|
type: "function",
|
|
5086
5091
|
},
|
|
5092
|
+
{
|
|
5093
|
+
inputs: [
|
|
5094
|
+
{
|
|
5095
|
+
components: [
|
|
5096
|
+
{
|
|
5097
|
+
internalType: "uint16",
|
|
5098
|
+
name: "leverageTDR",
|
|
5099
|
+
type: "uint16",
|
|
5100
|
+
},
|
|
5101
|
+
{
|
|
5102
|
+
internalType: "uint16",
|
|
5103
|
+
name: "brokerFeeTbps",
|
|
5104
|
+
type: "uint16",
|
|
5105
|
+
},
|
|
5106
|
+
{
|
|
5107
|
+
internalType: "uint24",
|
|
5108
|
+
name: "iPerpetualId",
|
|
5109
|
+
type: "uint24",
|
|
5110
|
+
},
|
|
5111
|
+
{
|
|
5112
|
+
internalType: "address",
|
|
5113
|
+
name: "traderAddr",
|
|
5114
|
+
type: "address",
|
|
5115
|
+
},
|
|
5116
|
+
{
|
|
5117
|
+
internalType: "uint32",
|
|
5118
|
+
name: "executionTimestamp",
|
|
5119
|
+
type: "uint32",
|
|
5120
|
+
},
|
|
5121
|
+
{
|
|
5122
|
+
internalType: "address",
|
|
5123
|
+
name: "brokerAddr",
|
|
5124
|
+
type: "address",
|
|
5125
|
+
},
|
|
5126
|
+
{
|
|
5127
|
+
internalType: "uint32",
|
|
5128
|
+
name: "submittedTimestamp",
|
|
5129
|
+
type: "uint32",
|
|
5130
|
+
},
|
|
5131
|
+
{
|
|
5132
|
+
internalType: "uint32",
|
|
5133
|
+
name: "flags",
|
|
5134
|
+
type: "uint32",
|
|
5135
|
+
},
|
|
5136
|
+
{
|
|
5137
|
+
internalType: "uint32",
|
|
5138
|
+
name: "iDeadline",
|
|
5139
|
+
type: "uint32",
|
|
5140
|
+
},
|
|
5141
|
+
{
|
|
5142
|
+
internalType: "address",
|
|
5143
|
+
name: "executorAddr",
|
|
5144
|
+
type: "address",
|
|
5145
|
+
},
|
|
5146
|
+
{
|
|
5147
|
+
internalType: "int128",
|
|
5148
|
+
name: "fAmount",
|
|
5149
|
+
type: "int128",
|
|
5150
|
+
},
|
|
5151
|
+
{
|
|
5152
|
+
internalType: "int128",
|
|
5153
|
+
name: "fLimitPrice",
|
|
5154
|
+
type: "int128",
|
|
5155
|
+
},
|
|
5156
|
+
{
|
|
5157
|
+
internalType: "int128",
|
|
5158
|
+
name: "fTriggerPrice",
|
|
5159
|
+
type: "int128",
|
|
5160
|
+
},
|
|
5161
|
+
{
|
|
5162
|
+
internalType: "bytes",
|
|
5163
|
+
name: "brokerSignature",
|
|
5164
|
+
type: "bytes",
|
|
5165
|
+
},
|
|
5166
|
+
],
|
|
5167
|
+
internalType: "struct IPerpetualOrder.Order",
|
|
5168
|
+
name: "_order",
|
|
5169
|
+
type: "tuple",
|
|
5170
|
+
},
|
|
5171
|
+
],
|
|
5172
|
+
name: "testTradeEvent",
|
|
5173
|
+
outputs: [],
|
|
5174
|
+
stateMutability: "nonpayable",
|
|
5175
|
+
type: "function",
|
|
5176
|
+
},
|
|
5087
5177
|
{
|
|
5088
5178
|
inputs: [
|
|
5089
5179
|
{
|
|
@@ -5291,19 +5381,6 @@ const _abi = [
|
|
|
5291
5381
|
stateMutability: "nonpayable",
|
|
5292
5382
|
type: "function",
|
|
5293
5383
|
},
|
|
5294
|
-
{
|
|
5295
|
-
inputs: [
|
|
5296
|
-
{
|
|
5297
|
-
internalType: "uint8",
|
|
5298
|
-
name: "_iPoolIndex",
|
|
5299
|
-
type: "uint8",
|
|
5300
|
-
},
|
|
5301
|
-
],
|
|
5302
|
-
name: "updateDefaultFundTargetSizeRandom",
|
|
5303
|
-
outputs: [],
|
|
5304
|
-
stateMutability: "nonpayable",
|
|
5305
|
-
type: "function",
|
|
5306
|
-
},
|
|
5307
5384
|
{
|
|
5308
5385
|
inputs: [
|
|
5309
5386
|
{
|
package/src/marketData.ts
CHANGED
|
@@ -988,7 +988,6 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
988
988
|
): [number, number | undefined, number] {
|
|
989
989
|
let S2Liq: number, S3Liq: number | undefined;
|
|
990
990
|
const staticInfo = symbolToPerpStaticInfo.get(symbol)!;
|
|
991
|
-
let tau = staticInfo.maintenanceMarginRate;
|
|
992
991
|
let ccyType = staticInfo.collateralCurrencyType;
|
|
993
992
|
const isPred = MarketData.isPredictionMarketStatic(staticInfo);
|
|
994
993
|
const idx_availableCashCC = 2;
|
|
@@ -997,14 +996,16 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
997
996
|
const idx_locked_in = 5;
|
|
998
997
|
const idx_mark_price = 8;
|
|
999
998
|
const idx_s3 = 9;
|
|
1000
|
-
|
|
999
|
+
const idx_maint_mgn_rate = 10;
|
|
1000
|
+
let traderState = new Array<bigint>(11);
|
|
1001
1001
|
traderState[idx_availableCashCC] = floatToABK64x64(marginCashCC);
|
|
1002
1002
|
traderState[idx_cash] = traderState[idx_availableCashCC];
|
|
1003
1003
|
traderState[idx_notional] = floatToABK64x64(signedPositionBC);
|
|
1004
1004
|
traderState[idx_locked_in] = floatToABK64x64(lockedInQC);
|
|
1005
1005
|
traderState[idx_mark_price] = floatToABK64x64(markPrice);
|
|
1006
1006
|
traderState[idx_s3] = floatToABK64x64(collToQuoteConversion);
|
|
1007
|
-
|
|
1007
|
+
traderState[idx_maint_mgn_rate] = floatToABK64x64(PerpetualDataHandler.getMaintenanceMarginRate(staticInfo));
|
|
1008
|
+
let tau;
|
|
1008
1009
|
[S2Liq, S3Liq, tau, ,] = MarketData._calculateLiquidationPrice(
|
|
1009
1010
|
symbol,
|
|
1010
1011
|
traderState,
|
|
@@ -1735,6 +1736,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1735
1736
|
priceIds: perpInfo.priceIds,
|
|
1736
1737
|
isPyth: perpInfo.isPyth,
|
|
1737
1738
|
perpFlags: perpInfo.perpFlags,
|
|
1739
|
+
fAMMTargetDD: perpInfo.fAMMTargetDD,
|
|
1738
1740
|
};
|
|
1739
1741
|
return res;
|
|
1740
1742
|
}
|
package/src/nodeSDKTypes.ts
CHANGED
|
@@ -698,6 +698,7 @@ export default class PerpetualDataHandler {
|
|
|
698
698
|
priceIds: perpInfos[j].priceIds,
|
|
699
699
|
isPyth: perpInfos[j].isPyth,
|
|
700
700
|
perpFlags: BigInt(perpInfos[j].perpFlags?.toString() ?? 0),
|
|
701
|
+
fAMMTargetDD: perpInfos[j].fAMMTargetDD
|
|
701
702
|
};
|
|
702
703
|
infoArr.push(info);
|
|
703
704
|
}
|
|
@@ -834,7 +835,7 @@ export default class PerpetualDataHandler {
|
|
|
834
835
|
fMinimalAMMExposureEMA: ABK64x64ToFloat(BigInt(orig.fMinimalAMMExposureEMA)), // parameter: minimal abs value for fCurrentAMMExposureEMA that we don't want to undershoot
|
|
835
836
|
fSettlementS3PriceData: ABK64x64ToFloat(BigInt(orig.fSettlementS3PriceData)), //quanto index
|
|
836
837
|
fSettlementS2PriceData: ABK64x64ToFloat(BigInt(orig.fSettlementS2PriceData)), //base-quote pair. Used as last price in normal state.
|
|
837
|
-
fTotalMarginBalance: ABK64x64ToFloat(BigInt(orig.
|
|
838
|
+
fTotalMarginBalance: ABK64x64ToFloat(BigInt(orig.fParams)), //calculated for settlement, in collateral currency
|
|
838
839
|
fMarkPriceEMALambda: ABK64x64ToFloat(Number(orig.fMarkPriceEMALambda)), // parameter: Lambda parameter for EMA used in mark-price for funding rates
|
|
839
840
|
fFundingRateClamp: ABK64x64ToFloat(Number(orig.fFundingRateClamp)), // parameter: funding rate clamp between which we charge 1bps
|
|
840
841
|
fMaximalTradeSizeBumpUp: ABK64x64ToFloat(Number(orig.fMaximalTradeSizeBumpUp)), // parameter: >1, users can create a maximal position of size fMaximalTradeSizeBumpUp*fCurrentAMMExposureEMA
|
|
@@ -1401,6 +1402,7 @@ export default class PerpetualDataHandler {
|
|
|
1401
1402
|
const idx_locked_in = 5;
|
|
1402
1403
|
const idx_mark_price = 8;
|
|
1403
1404
|
const idx_s3 = 9;
|
|
1405
|
+
const idx_maint_mgn_rate = 10;
|
|
1404
1406
|
// const idx_s2 = 10;
|
|
1405
1407
|
let S2Liq: number;
|
|
1406
1408
|
let S3Liq: number = ABK64x64ToFloat(traderState[idx_s3]);
|
|
@@ -1408,7 +1410,7 @@ export default class PerpetualDataHandler {
|
|
|
1408
1410
|
if (perpInfo == undefined) {
|
|
1409
1411
|
throw new Error(`no info for perpetual ${symbol}`);
|
|
1410
1412
|
}
|
|
1411
|
-
const tau =
|
|
1413
|
+
const tau = ABK64x64ToFloat(traderState[idx_maint_mgn_rate]);
|
|
1412
1414
|
const lockedInValueQC = ABK64x64ToFloat(traderState[idx_locked_in]);
|
|
1413
1415
|
const position = ABK64x64ToFloat(traderState[idx_notional]);
|
|
1414
1416
|
const cashCC = ABK64x64ToFloat(traderState[idx_availableCashCC]);
|
|
@@ -2099,6 +2101,15 @@ export default class PerpetualDataHandler {
|
|
|
2099
2101
|
}
|
|
2100
2102
|
return containsFlag(staticInfo.perpFlags, MASK_LOW_LIQUIDITY_MARKET);
|
|
2101
2103
|
}
|
|
2104
|
+
/**
|
|
2105
|
+
* Determines whether a given perpetual represents a tradfi market
|
|
2106
|
+
* which has open/close times
|
|
2107
|
+
* @param staticInfo Perpetual static info
|
|
2108
|
+
* @returns True if perp has tradfi market flag set
|
|
2109
|
+
*/
|
|
2110
|
+
public static isTradFiMarketStatic(staticInfo: PerpetualStaticInfo) {
|
|
2111
|
+
return containsFlag(staticInfo.perpFlags, MASK_PREDICTION_MARKET);
|
|
2112
|
+
}
|
|
2102
2113
|
|
|
2103
2114
|
/**
|
|
2104
2115
|
* Determines whether a given perpetual represents a prediction market
|
|
@@ -2108,4 +2119,50 @@ export default class PerpetualDataHandler {
|
|
|
2108
2119
|
public static isPredictionMarketStatic(staticInfo: PerpetualStaticInfo) {
|
|
2109
2120
|
return containsFlag(staticInfo.perpFlags, MASK_PREDICTION_MARKET);
|
|
2110
2121
|
}
|
|
2111
|
-
|
|
2122
|
+
|
|
2123
|
+
/**
|
|
2124
|
+
* Get initial margin rate from static data considering open/close of tradfi markets
|
|
2125
|
+
* @param staticInfo static info
|
|
2126
|
+
* @returns initial margin rate in decimals
|
|
2127
|
+
*/
|
|
2128
|
+
public static getInitialMarginRate(staticInfo: PerpetualStaticInfo) : number {
|
|
2129
|
+
if (!PerpetualDataHandler.isTradFiMarketStatic(staticInfo)) {
|
|
2130
|
+
return staticInfo.initialMarginRate;
|
|
2131
|
+
}
|
|
2132
|
+
const t = (Date.now()/1000) % 86_400;
|
|
2133
|
+
let oc = PerpetualDataHandler.decodeOpenCloseSeconds(staticInfo.fAMMTargetDD);
|
|
2134
|
+
const isOpen = (t > oc.openSec) != (t > oc.closeSec) != (oc.openSec > oc.closeSec);
|
|
2135
|
+
if (isOpen) {
|
|
2136
|
+
return staticInfo.initialMarginRate;
|
|
2137
|
+
}
|
|
2138
|
+
return 0.2;//5x
|
|
2139
|
+
}
|
|
2140
|
+
|
|
2141
|
+
/**
|
|
2142
|
+
* Get maintenance margin rate from static data considering open/close of tradfi markets
|
|
2143
|
+
* @param staticInfo static info
|
|
2144
|
+
* @returns maintenance margin rate in decimals
|
|
2145
|
+
*/
|
|
2146
|
+
public static getMaintenanceMarginRate(staticInfo: PerpetualStaticInfo) : number {
|
|
2147
|
+
if (!PerpetualDataHandler.isTradFiMarketStatic(staticInfo)) {
|
|
2148
|
+
return staticInfo.maintenanceMarginRate;
|
|
2149
|
+
}
|
|
2150
|
+
const t = (Date.now()/1000) % 86_400;
|
|
2151
|
+
let oc = PerpetualDataHandler.decodeOpenCloseSeconds(staticInfo.fAMMTargetDD);
|
|
2152
|
+
const isOpen = (t > oc.openSec) != (t > oc.closeSec) != (oc.openSec > oc.closeSec);
|
|
2153
|
+
if (isOpen) {
|
|
2154
|
+
return staticInfo.maintenanceMarginRate;
|
|
2155
|
+
}
|
|
2156
|
+
return 0.1;//10x
|
|
2157
|
+
}
|
|
2158
|
+
|
|
2159
|
+
public static decodeOpenCloseSeconds(packed: bigint): { openSec: number; closeSec: number } {
|
|
2160
|
+
const MASK = 0x7Fn; // 7-bit mask
|
|
2161
|
+
const closeSlot = Number(packed & MASK);
|
|
2162
|
+
const openSlot = Number((packed >> 7n) & MASK);
|
|
2163
|
+
return {
|
|
2164
|
+
openSec: openSlot * 900, // 15 * 60
|
|
2165
|
+
closeSec: closeSlot * 900,
|
|
2166
|
+
}
|
|
2167
|
+
}
|
|
2168
|
+
}
|
package/src/priceFeeds.ts
CHANGED
|
@@ -300,7 +300,7 @@ export default class PriceFeeds {
|
|
|
300
300
|
ema: decNToFloat(s2EmaInfo?.price ?? 0n, -(s2EmaInfo?.expo ?? 1)),
|
|
301
301
|
s2MktClosed: mktClosed[0],
|
|
302
302
|
s3MktClosed: mktClosed[1],
|
|
303
|
-
conf: s2Info?.conf ?? 0n,
|
|
303
|
+
conf: BigInt(s2Info?.conf ?? 0n),
|
|
304
304
|
predMktCLOBParams: s2EmaInfo?.conf ?? 0n,
|
|
305
305
|
} as IdxPriceInfo;
|
|
306
306
|
} else {
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const D8X_SDK_VERSION = "2.5.
|
|
1
|
+
export const D8X_SDK_VERSION = "2.5.15";
|