@drift-labs/sdk 0.2.0-master.33 → 0.2.0-master.35
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/lib/admin.d.ts +1 -0
- package/lib/admin.js +9 -0
- package/lib/clearingHouse.d.ts +8 -8
- package/lib/clearingHouse.js +20 -20
- package/lib/clearingHouseUser.js +1 -1
- package/lib/config.js +1 -1
- package/lib/constants/numericConstants.d.ts +1 -0
- package/lib/constants/numericConstants.js +4 -2
- package/lib/idl/clearing_house.json +57 -4
- package/lib/types.d.ts +0 -3
- package/package.json +1 -1
- package/src/admin.ts +19 -0
- package/src/clearingHouse.ts +28 -20
- package/src/clearingHouseUser.ts +1 -1
- package/src/config.ts +1 -1
- package/src/constants/numericConstants.ts +4 -1
- package/src/idl/clearing_house.json +57 -4
- package/src/types.ts +0 -3
- package/tests/dlob/helpers.ts +1 -4
- package/tests/dlob/test.ts +5 -5
package/lib/admin.d.ts
CHANGED
|
@@ -52,5 +52,6 @@ export declare class Admin extends ClearingHouse {
|
|
|
52
52
|
updatePerpMarketMaxFillReserveFraction(perpMarketIndex: number, maxBaseAssetAmountRatio: number): Promise<TransactionSignature>;
|
|
53
53
|
updateMaxSlippageRatio(perpMarketIndex: number, maxSlippageRatio: number): Promise<TransactionSignature>;
|
|
54
54
|
updatePerpMarketMaxImbalances(perpMarketIndex: number, unrealizedMaxImbalance: BN, maxRevenueWithdrawPerPeriod: BN, quoteMaxInsurance: BN): Promise<TransactionSignature>;
|
|
55
|
+
updatePerpMarketMaxOpenInterest(perpMarketIndex: number, maxOpenInterest: BN): Promise<TransactionSignature>;
|
|
55
56
|
updateSerumVault(srmVault: PublicKey): Promise<TransactionSignature>;
|
|
56
57
|
}
|
package/lib/admin.js
CHANGED
|
@@ -541,6 +541,15 @@ class Admin extends clearingHouse_1.ClearingHouse {
|
|
|
541
541
|
},
|
|
542
542
|
});
|
|
543
543
|
}
|
|
544
|
+
async updatePerpMarketMaxOpenInterest(perpMarketIndex, maxOpenInterest) {
|
|
545
|
+
return await this.program.rpc.updatePerpMarketMaxOpenInterest(maxOpenInterest, {
|
|
546
|
+
accounts: {
|
|
547
|
+
admin: this.wallet.publicKey,
|
|
548
|
+
state: await this.getStatePublicKey(),
|
|
549
|
+
perpMarket: await (0, pda_1.getPerpMarketPublicKey)(this.program.programId, perpMarketIndex),
|
|
550
|
+
},
|
|
551
|
+
});
|
|
552
|
+
}
|
|
544
553
|
async updateSerumVault(srmVault) {
|
|
545
554
|
return await this.program.rpc.updateSerumVault({
|
|
546
555
|
accounts: {
|
package/lib/clearingHouse.d.ts
CHANGED
|
@@ -147,9 +147,9 @@ export declare class ClearingHouse {
|
|
|
147
147
|
txSig: TransactionSignature;
|
|
148
148
|
signedFillTx: Transaction;
|
|
149
149
|
}>;
|
|
150
|
-
|
|
150
|
+
placePerpOrder(orderParams: OptionalOrderParams): Promise<TransactionSignature>;
|
|
151
151
|
getOrderParams(optionalOrderParams: OptionalOrderParams, marketType: MarketType): OrderParams;
|
|
152
|
-
|
|
152
|
+
getPlacePerpOrderIx(orderParams: OptionalOrderParams): Promise<TransactionInstruction>;
|
|
153
153
|
updateAMMs(marketIndexes: number[]): Promise<TransactionSignature>;
|
|
154
154
|
getUpdateAMMsIx(marketIndexes: number[]): Promise<TransactionInstruction>;
|
|
155
155
|
settleExpiredMarket(marketIndex: number): Promise<TransactionSignature>;
|
|
@@ -161,8 +161,8 @@ export declare class ClearingHouse {
|
|
|
161
161
|
getCancelOrderByUserIdIx(userOrderId: number): Promise<TransactionInstruction>;
|
|
162
162
|
cancelOrders(marketType?: MarketType, marketIndex?: number, direction?: PositionDirection): Promise<TransactionSignature>;
|
|
163
163
|
getCancelOrdersIx(marketType: MarketType | null, marketIndex: number | null, direction: PositionDirection | null): Promise<TransactionInstruction>;
|
|
164
|
-
|
|
165
|
-
|
|
164
|
+
fillPerpOrder(userAccountPublicKey: PublicKey, user: UserAccount, order?: Pick<Order, 'marketIndex' | 'orderId'>, makerInfo?: MakerInfo, referrerInfo?: ReferrerInfo): Promise<TransactionSignature>;
|
|
165
|
+
getFillPerpOrderIx(userAccountPublicKey: PublicKey, userAccount: UserAccount, order: Pick<Order, 'marketIndex' | 'orderId'>, makerInfo?: MakerInfo, referrerInfo?: ReferrerInfo): Promise<TransactionInstruction>;
|
|
166
166
|
placeSpotOrder(orderParams: OptionalOrderParams): Promise<TransactionSignature>;
|
|
167
167
|
getPlaceSpotOrderIx(orderParams: OptionalOrderParams): Promise<TransactionInstruction>;
|
|
168
168
|
fillSpotOrder(userAccountPublicKey: PublicKey, user: UserAccount, order?: Order, fulfillmentConfig?: SerumV3FulfillmentConfigAccount, makerInfo?: MakerInfo, referrerInfo?: ReferrerInfo): Promise<TransactionSignature>;
|
|
@@ -170,10 +170,10 @@ export declare class ClearingHouse {
|
|
|
170
170
|
addSerumRemainingAccounts(marketIndex: number, remainingAccounts: AccountMeta[], fulfillmentConfig: SerumV3FulfillmentConfigAccount): void;
|
|
171
171
|
triggerOrder(userAccountPublicKey: PublicKey, user: UserAccount, order: Order): Promise<TransactionSignature>;
|
|
172
172
|
getTriggerOrderIx(userAccountPublicKey: PublicKey, userAccount: UserAccount, order: Order): Promise<TransactionInstruction>;
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
173
|
+
placeAndTakePerpOrder(orderParams: OptionalOrderParams, makerInfo?: MakerInfo, referrerInfo?: ReferrerInfo): Promise<TransactionSignature>;
|
|
174
|
+
getPlaceAndTakePerpOrderIx(orderParams: OptionalOrderParams, makerInfo?: MakerInfo, referrerInfo?: ReferrerInfo): Promise<TransactionInstruction>;
|
|
175
|
+
placeAndMakePerpOrder(orderParams: OptionalOrderParams, takerInfo: TakerInfo, referrerInfo?: ReferrerInfo): Promise<TransactionSignature>;
|
|
176
|
+
getPlaceAndMakePerpOrderIx(orderParams: OptionalOrderParams, takerInfo: TakerInfo, referrerInfo?: ReferrerInfo): Promise<TransactionInstruction>;
|
|
177
177
|
placeAndTakeSpotOrder(orderParams: OptionalOrderParams, fulfillmentConfig?: SerumV3FulfillmentConfigAccount, makerInfo?: MakerInfo, referrerInfo?: ReferrerInfo): Promise<TransactionSignature>;
|
|
178
178
|
getPlaceAndTakeSpotOrderIx(orderParams: OptionalOrderParams, fulfillmentConfig?: SerumV3FulfillmentConfigAccount, makerInfo?: MakerInfo, referrerInfo?: ReferrerInfo): Promise<TransactionInstruction>;
|
|
179
179
|
placeAndMakeSpotOrder(orderParams: OptionalOrderParams, takerInfo: TakerInfo, referrerInfo?: ReferrerInfo): Promise<TransactionSignature>;
|
package/lib/clearingHouse.js
CHANGED
|
@@ -891,7 +891,7 @@ class ClearingHouse {
|
|
|
891
891
|
});
|
|
892
892
|
}
|
|
893
893
|
async openPosition(direction, amount, marketIndex, limitPrice) {
|
|
894
|
-
return await this.
|
|
894
|
+
return await this.placeAndTakePerpOrder({
|
|
895
895
|
orderType: types_1.OrderType.MARKET,
|
|
896
896
|
marketIndex,
|
|
897
897
|
direction,
|
|
@@ -913,8 +913,8 @@ class ClearingHouse {
|
|
|
913
913
|
async sendMarketOrderAndGetSignedFillTx(orderParams, userAccountPublicKey, userAccount) {
|
|
914
914
|
const marketIndex = orderParams.marketIndex;
|
|
915
915
|
const orderId = userAccount.nextOrderId;
|
|
916
|
-
const marketOrderTx = (0, utils_1.wrapInTx)(await this.
|
|
917
|
-
const fillTx = (0, utils_1.wrapInTx)(await this.
|
|
916
|
+
const marketOrderTx = (0, utils_1.wrapInTx)(await this.getPlacePerpOrderIx(orderParams));
|
|
917
|
+
const fillTx = (0, utils_1.wrapInTx)(await this.getFillPerpOrderIx(userAccountPublicKey, userAccount, {
|
|
918
918
|
orderId,
|
|
919
919
|
marketIndex,
|
|
920
920
|
}));
|
|
@@ -929,8 +929,8 @@ class ClearingHouse {
|
|
|
929
929
|
this.marketLastSlotCache.set(orderParams.marketIndex, slot);
|
|
930
930
|
return { txSig, signedFillTx };
|
|
931
931
|
}
|
|
932
|
-
async
|
|
933
|
-
const { txSig, slot } = await this.txSender.send((0, utils_1.wrapInTx)(await this.
|
|
932
|
+
async placePerpOrder(orderParams) {
|
|
933
|
+
const { txSig, slot } = await this.txSender.send((0, utils_1.wrapInTx)(await this.getPlacePerpOrderIx(orderParams)), [], this.opts);
|
|
934
934
|
this.marketLastSlotCache.set(orderParams.marketIndex, slot);
|
|
935
935
|
return txSig;
|
|
936
936
|
}
|
|
@@ -939,7 +939,7 @@ class ClearingHouse {
|
|
|
939
939
|
marketType,
|
|
940
940
|
});
|
|
941
941
|
}
|
|
942
|
-
async
|
|
942
|
+
async getPlacePerpOrderIx(orderParams) {
|
|
943
943
|
orderParams = this.getOrderParams(orderParams, types_1.MarketType.PERP);
|
|
944
944
|
const userAccountPublicKey = await this.getUserAccountPublicKey();
|
|
945
945
|
const remainingAccounts = this.getRemainingAccounts({
|
|
@@ -947,7 +947,7 @@ class ClearingHouse {
|
|
|
947
947
|
useMarketLastSlotCache: true,
|
|
948
948
|
readablePerpMarketIndex: orderParams.marketIndex,
|
|
949
949
|
});
|
|
950
|
-
return await this.program.instruction.
|
|
950
|
+
return await this.program.instruction.placePerpOrder(orderParams, {
|
|
951
951
|
accounts: {
|
|
952
952
|
state: await this.getStatePublicKey(),
|
|
953
953
|
user: userAccountPublicKey,
|
|
@@ -1100,11 +1100,11 @@ class ClearingHouse {
|
|
|
1100
1100
|
remainingAccounts,
|
|
1101
1101
|
});
|
|
1102
1102
|
}
|
|
1103
|
-
async
|
|
1104
|
-
const { txSig } = await this.txSender.send((0, utils_1.wrapInTx)(await this.
|
|
1103
|
+
async fillPerpOrder(userAccountPublicKey, user, order, makerInfo, referrerInfo) {
|
|
1104
|
+
const { txSig } = await this.txSender.send((0, utils_1.wrapInTx)(await this.getFillPerpOrderIx(userAccountPublicKey, user, order, makerInfo, referrerInfo)), [], this.opts);
|
|
1105
1105
|
return txSig;
|
|
1106
1106
|
}
|
|
1107
|
-
async
|
|
1107
|
+
async getFillPerpOrderIx(userAccountPublicKey, userAccount, order, makerInfo, referrerInfo) {
|
|
1108
1108
|
const userStatsPublicKey = (0, pda_1.getUserStatsAccountPublicKey)(this.program.programId, userAccount.authority);
|
|
1109
1109
|
const fillerPublicKey = await this.getUserAccountPublicKey();
|
|
1110
1110
|
const fillerStatsPublicKey = this.getUserStatsAccountPublicKey();
|
|
@@ -1145,7 +1145,7 @@ class ClearingHouse {
|
|
|
1145
1145
|
}
|
|
1146
1146
|
const orderId = order.orderId;
|
|
1147
1147
|
const makerOrderId = makerInfo ? makerInfo.order.orderId : null;
|
|
1148
|
-
return await this.program.instruction.
|
|
1148
|
+
return await this.program.instruction.fillPerpOrder(orderId, makerOrderId, {
|
|
1149
1149
|
accounts: {
|
|
1150
1150
|
state: await this.getStatePublicKey(),
|
|
1151
1151
|
filler: fillerPublicKey,
|
|
@@ -1352,12 +1352,12 @@ class ClearingHouse {
|
|
|
1352
1352
|
remainingAccounts,
|
|
1353
1353
|
});
|
|
1354
1354
|
}
|
|
1355
|
-
async
|
|
1356
|
-
const { txSig, slot } = await this.txSender.send((0, utils_1.wrapInTx)(await this.
|
|
1355
|
+
async placeAndTakePerpOrder(orderParams, makerInfo, referrerInfo) {
|
|
1356
|
+
const { txSig, slot } = await this.txSender.send((0, utils_1.wrapInTx)(await this.getPlaceAndTakePerpOrderIx(orderParams, makerInfo, referrerInfo)), [], this.opts);
|
|
1357
1357
|
this.marketLastSlotCache.set(orderParams.marketIndex, slot);
|
|
1358
1358
|
return txSig;
|
|
1359
1359
|
}
|
|
1360
|
-
async
|
|
1360
|
+
async getPlaceAndTakePerpOrderIx(orderParams, makerInfo, referrerInfo) {
|
|
1361
1361
|
orderParams = this.getOrderParams(orderParams, types_1.MarketType.PERP);
|
|
1362
1362
|
const userStatsPublicKey = await this.getUserStatsAccountPublicKey();
|
|
1363
1363
|
const userAccountPublicKey = await this.getUserAccountPublicKey();
|
|
@@ -1396,7 +1396,7 @@ class ClearingHouse {
|
|
|
1396
1396
|
isSigner: false,
|
|
1397
1397
|
});
|
|
1398
1398
|
}
|
|
1399
|
-
return await this.program.instruction.
|
|
1399
|
+
return await this.program.instruction.placeAndTakePerpOrder(orderParams, makerOrderId, {
|
|
1400
1400
|
accounts: {
|
|
1401
1401
|
state: await this.getStatePublicKey(),
|
|
1402
1402
|
user: userAccountPublicKey,
|
|
@@ -1406,12 +1406,12 @@ class ClearingHouse {
|
|
|
1406
1406
|
remainingAccounts,
|
|
1407
1407
|
});
|
|
1408
1408
|
}
|
|
1409
|
-
async
|
|
1410
|
-
const { txSig, slot } = await this.txSender.send((0, utils_1.wrapInTx)(await this.
|
|
1409
|
+
async placeAndMakePerpOrder(orderParams, takerInfo, referrerInfo) {
|
|
1410
|
+
const { txSig, slot } = await this.txSender.send((0, utils_1.wrapInTx)(await this.getPlaceAndMakePerpOrderIx(orderParams, takerInfo, referrerInfo)), [], this.opts);
|
|
1411
1411
|
this.marketLastSlotCache.set(orderParams.marketIndex, slot);
|
|
1412
1412
|
return txSig;
|
|
1413
1413
|
}
|
|
1414
|
-
async
|
|
1414
|
+
async getPlaceAndMakePerpOrderIx(orderParams, takerInfo, referrerInfo) {
|
|
1415
1415
|
orderParams = this.getOrderParams(orderParams, types_1.MarketType.PERP);
|
|
1416
1416
|
const userStatsPublicKey = this.getUserStatsAccountPublicKey();
|
|
1417
1417
|
const userAccountPublicKey = await this.getUserAccountPublicKey();
|
|
@@ -1433,7 +1433,7 @@ class ClearingHouse {
|
|
|
1433
1433
|
});
|
|
1434
1434
|
}
|
|
1435
1435
|
const takerOrderId = takerInfo.order.orderId;
|
|
1436
|
-
return await this.program.instruction.
|
|
1436
|
+
return await this.program.instruction.placeAndMakePerpOrder(orderParams, takerOrderId, {
|
|
1437
1437
|
accounts: {
|
|
1438
1438
|
state: await this.getStatePublicKey(),
|
|
1439
1439
|
user: userAccountPublicKey,
|
|
@@ -1555,7 +1555,7 @@ class ClearingHouse {
|
|
|
1555
1555
|
if (!userPosition) {
|
|
1556
1556
|
throw Error(`No position in market ${marketIndex.toString()}`);
|
|
1557
1557
|
}
|
|
1558
|
-
return await this.
|
|
1558
|
+
return await this.placeAndTakePerpOrder({
|
|
1559
1559
|
orderType: types_1.OrderType.MARKET,
|
|
1560
1560
|
marketIndex,
|
|
1561
1561
|
direction: (0, position_1.findDirectionToClose)(userPosition),
|
package/lib/clearingHouseUser.js
CHANGED
|
@@ -114,7 +114,7 @@ class ClearingHouseUser {
|
|
|
114
114
|
const position = this.getUserPosition(marketIndex);
|
|
115
115
|
const [lpOpenBids, lpOpenAsks] = this.getLPBidAsks(marketIndex);
|
|
116
116
|
const totalOpenBids = lpOpenBids.add(position.openBids);
|
|
117
|
-
const totalOpenAsks = lpOpenAsks.
|
|
117
|
+
const totalOpenAsks = lpOpenAsks.add(position.openAsks);
|
|
118
118
|
return [totalOpenBids, totalOpenAsks];
|
|
119
119
|
}
|
|
120
120
|
/**
|
package/lib/config.js
CHANGED
|
@@ -7,7 +7,7 @@ exports.configs = {
|
|
|
7
7
|
devnet: {
|
|
8
8
|
ENV: 'devnet',
|
|
9
9
|
PYTH_ORACLE_MAPPING_ADDRESS: 'BmA9Z6FjioHJPpjT39QazZyhDRUdZy2ezwx4GiDdE2u2',
|
|
10
|
-
CLEARING_HOUSE_PROGRAM_ID: '
|
|
10
|
+
CLEARING_HOUSE_PROGRAM_ID: 'BJG3o4CURrokB7huNyiHptYepAtHXj4YfefJiPgzUULV',
|
|
11
11
|
USDC_MINT_ADDRESS: '8zGuJQqwhZafTah7Uc7Z4tXRnguqkn5KLFAP8oV6PHe2',
|
|
12
12
|
SERUM_V3: 'DESVgJVGajEgKGXhb6XmqDHGz3VjdgP7rEVESBgxmroY',
|
|
13
13
|
V2_ALPHA_TICKET_MINT_ADDRESS: 'DeEiGWfCMP9psnLGkxGrBBMEAW5Jv8bBGMN8DCtFRCyB',
|
|
@@ -35,6 +35,7 @@ export declare const SPOT_MARKET_IMF_PRECISION: BN;
|
|
|
35
35
|
export declare const LIQUIDATION_FEE_PRECISION: BN;
|
|
36
36
|
export declare const QUOTE_PRECISION: BN;
|
|
37
37
|
export declare const PRICE_PRECISION: BN;
|
|
38
|
+
export declare const FUNDING_RATE_PRECISION: BN;
|
|
38
39
|
export declare const FUNDING_RATE_BUFFER_PRECISION: BN;
|
|
39
40
|
export declare const PEG_PRECISION: BN;
|
|
40
41
|
export declare const AMM_RESERVE_PRECISION: BN;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.LAMPORTS_PRECISION = exports.QUOTE_SPOT_MARKET_INDEX = exports.ONE_YEAR = exports.BID_ASK_SPREAD_PRECISION = exports.MARGIN_PRECISION = exports.AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO = exports.PRICE_TO_QUOTE_PRECISION = exports.PRICE_DIV_PEG = exports.AMM_TO_QUOTE_PRECISION_RATIO = exports.BASE_PRECISION_EXP = exports.BASE_PRECISION = exports.AMM_RESERVE_PRECISION = exports.PEG_PRECISION = exports.FUNDING_RATE_BUFFER_PRECISION = exports.FUNDING_RATE_PRECISION = exports.PRICE_PRECISION = exports.QUOTE_PRECISION = exports.LIQUIDATION_FEE_PRECISION = exports.SPOT_MARKET_IMF_PRECISION = exports.SPOT_MARKET_IMF_PRECISION_EXP = exports.SPOT_MARKET_BALANCE_PRECISION = exports.SPOT_MARKET_BALANCE_PRECISION_EXP = exports.SPOT_MARKET_WEIGHT_PRECISION = exports.SPOT_MARKET_UTILIZATION_PRECISION = exports.SPOT_MARKET_UTILIZATION_PRECISION_EXP = exports.SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION = exports.SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION_EXP = exports.SPOT_MARKET_RATE_PRECISION = exports.SPOT_MARKET_RATE_PRECISION_EXP = exports.AMM_RESERVE_PRECISION_EXP = exports.PEG_PRECISION_EXP = exports.FUNDING_RATE_PRECISION_EXP = exports.PRICE_PRECISION_EXP = exports.FUNDING_RATE_BUFFER_PRECISION_EXP = exports.QUOTE_PRECISION_EXP = exports.MAX_LEVERAGE = exports.TEN_MILLION = exports.BN_MAX = exports.TEN_THOUSAND = exports.TEN = exports.NINE = exports.EIGHT = exports.SEVEN = exports.SIX = exports.FIVE = exports.FOUR = exports.THREE = exports.TWO = exports.ONE = exports.ZERO = void 0;
|
|
4
|
+
exports.LAMPORTS_EXP = void 0;
|
|
4
5
|
const web3_js_1 = require("@solana/web3.js");
|
|
5
6
|
const __1 = require("../");
|
|
6
7
|
exports.ZERO = new __1.BN(0);
|
|
@@ -21,7 +22,7 @@ exports.MAX_LEVERAGE = new __1.BN(5);
|
|
|
21
22
|
exports.QUOTE_PRECISION_EXP = new __1.BN(6);
|
|
22
23
|
exports.FUNDING_RATE_BUFFER_PRECISION_EXP = new __1.BN(3);
|
|
23
24
|
exports.PRICE_PRECISION_EXP = new __1.BN(6);
|
|
24
|
-
exports.FUNDING_RATE_PRECISION_EXP = exports.PRICE_PRECISION_EXP.
|
|
25
|
+
exports.FUNDING_RATE_PRECISION_EXP = exports.PRICE_PRECISION_EXP.add(exports.FUNDING_RATE_BUFFER_PRECISION_EXP);
|
|
25
26
|
exports.PEG_PRECISION_EXP = new __1.BN(6);
|
|
26
27
|
exports.AMM_RESERVE_PRECISION_EXP = new __1.BN(9);
|
|
27
28
|
exports.SPOT_MARKET_RATE_PRECISION_EXP = new __1.BN(6);
|
|
@@ -38,6 +39,7 @@ exports.SPOT_MARKET_IMF_PRECISION = new __1.BN(10).pow(exports.SPOT_MARKET_IMF_P
|
|
|
38
39
|
exports.LIQUIDATION_FEE_PRECISION = new __1.BN(1000000);
|
|
39
40
|
exports.QUOTE_PRECISION = new __1.BN(10).pow(exports.QUOTE_PRECISION_EXP);
|
|
40
41
|
exports.PRICE_PRECISION = new __1.BN(10).pow(exports.PRICE_PRECISION_EXP);
|
|
42
|
+
exports.FUNDING_RATE_PRECISION = new __1.BN(10).pow(exports.FUNDING_RATE_PRECISION_EXP);
|
|
41
43
|
exports.FUNDING_RATE_BUFFER_PRECISION = new __1.BN(10).pow(exports.FUNDING_RATE_BUFFER_PRECISION_EXP);
|
|
42
44
|
exports.PEG_PRECISION = new __1.BN(10).pow(exports.PEG_PRECISION_EXP);
|
|
43
45
|
exports.AMM_RESERVE_PRECISION = new __1.BN(10).pow(exports.AMM_RESERVE_PRECISION_EXP);
|
|
@@ -247,7 +247,7 @@
|
|
|
247
247
|
]
|
|
248
248
|
},
|
|
249
249
|
{
|
|
250
|
-
"name": "
|
|
250
|
+
"name": "placePerpOrder",
|
|
251
251
|
"accounts": [
|
|
252
252
|
{
|
|
253
253
|
"name": "state",
|
|
@@ -373,7 +373,7 @@
|
|
|
373
373
|
]
|
|
374
374
|
},
|
|
375
375
|
{
|
|
376
|
-
"name": "
|
|
376
|
+
"name": "placeAndTakePerpOrder",
|
|
377
377
|
"accounts": [
|
|
378
378
|
{
|
|
379
379
|
"name": "state",
|
|
@@ -412,7 +412,7 @@
|
|
|
412
412
|
]
|
|
413
413
|
},
|
|
414
414
|
{
|
|
415
|
-
"name": "
|
|
415
|
+
"name": "placeAndMakePerpOrder",
|
|
416
416
|
"accounts": [
|
|
417
417
|
{
|
|
418
418
|
"name": "state",
|
|
@@ -772,7 +772,7 @@
|
|
|
772
772
|
"args": []
|
|
773
773
|
},
|
|
774
774
|
{
|
|
775
|
-
"name": "
|
|
775
|
+
"name": "fillPerpOrder",
|
|
776
776
|
"accounts": [
|
|
777
777
|
{
|
|
778
778
|
"name": "state",
|
|
@@ -3276,6 +3276,32 @@
|
|
|
3276
3276
|
}
|
|
3277
3277
|
]
|
|
3278
3278
|
},
|
|
3279
|
+
{
|
|
3280
|
+
"name": "updatePerpMarketMaxOpenInterest",
|
|
3281
|
+
"accounts": [
|
|
3282
|
+
{
|
|
3283
|
+
"name": "admin",
|
|
3284
|
+
"isMut": false,
|
|
3285
|
+
"isSigner": true
|
|
3286
|
+
},
|
|
3287
|
+
{
|
|
3288
|
+
"name": "state",
|
|
3289
|
+
"isMut": false,
|
|
3290
|
+
"isSigner": false
|
|
3291
|
+
},
|
|
3292
|
+
{
|
|
3293
|
+
"name": "perpMarket",
|
|
3294
|
+
"isMut": true,
|
|
3295
|
+
"isSigner": false
|
|
3296
|
+
}
|
|
3297
|
+
],
|
|
3298
|
+
"args": [
|
|
3299
|
+
{
|
|
3300
|
+
"name": "maxOpenInterest",
|
|
3301
|
+
"type": "u128"
|
|
3302
|
+
}
|
|
3303
|
+
]
|
|
3304
|
+
},
|
|
3279
3305
|
{
|
|
3280
3306
|
"name": "updateAdmin",
|
|
3281
3307
|
"accounts": [
|
|
@@ -4089,6 +4115,10 @@
|
|
|
4089
4115
|
"name": "settledPerpPnl",
|
|
4090
4116
|
"type": "i64"
|
|
4091
4117
|
},
|
|
4118
|
+
{
|
|
4119
|
+
"name": "cumulativeSpotFees",
|
|
4120
|
+
"type": "i64"
|
|
4121
|
+
},
|
|
4092
4122
|
{
|
|
4093
4123
|
"name": "nextOrderId",
|
|
4094
4124
|
"type": "u32"
|
|
@@ -4684,6 +4714,10 @@
|
|
|
4684
4714
|
"name": "baseAssetAmountWithUnsettledLp",
|
|
4685
4715
|
"type": "i128"
|
|
4686
4716
|
},
|
|
4717
|
+
{
|
|
4718
|
+
"name": "maxOpenInterest",
|
|
4719
|
+
"type": "u128"
|
|
4720
|
+
},
|
|
4687
4721
|
{
|
|
4688
4722
|
"name": "quoteAssetAmountLong",
|
|
4689
4723
|
"type": "i128"
|
|
@@ -5371,6 +5405,15 @@
|
|
|
5371
5405
|
{
|
|
5372
5406
|
"name": "auctionDuration",
|
|
5373
5407
|
"type": "u8"
|
|
5408
|
+
},
|
|
5409
|
+
{
|
|
5410
|
+
"name": "padding",
|
|
5411
|
+
"type": {
|
|
5412
|
+
"array": [
|
|
5413
|
+
"u8",
|
|
5414
|
+
2
|
|
5415
|
+
]
|
|
5416
|
+
}
|
|
5374
5417
|
}
|
|
5375
5418
|
]
|
|
5376
5419
|
}
|
|
@@ -7568,6 +7611,16 @@
|
|
|
7568
7611
|
"code": 6134,
|
|
7569
7612
|
"name": "ReduceOnlyWithdrawIncreasedRisk",
|
|
7570
7613
|
"msg": "Reduce Only Withdraw Increased Risk"
|
|
7614
|
+
},
|
|
7615
|
+
{
|
|
7616
|
+
"code": 6135,
|
|
7617
|
+
"name": "MaxOpenInterest",
|
|
7618
|
+
"msg": "Max Open Interest"
|
|
7619
|
+
},
|
|
7620
|
+
{
|
|
7621
|
+
"code": 6136,
|
|
7622
|
+
"name": "CantResolvePerpBankruptcy",
|
|
7623
|
+
"msg": "Cant Resolve Perp Bankruptcy"
|
|
7571
7624
|
}
|
|
7572
7625
|
]
|
|
7573
7626
|
}
|
package/lib/types.d.ts
CHANGED
|
@@ -630,9 +630,6 @@ export declare type AMM = {
|
|
|
630
630
|
totalFeeMinusDistributions: BN;
|
|
631
631
|
totalFeeWithdrawn: BN;
|
|
632
632
|
totalFee: BN;
|
|
633
|
-
cumulativeFundingPaymentPerLp: BN;
|
|
634
|
-
cumulativeFeePerLp: BN;
|
|
635
|
-
cumulativeNetBaseAssetAmountPerLp: BN;
|
|
636
633
|
userLpShares: BN;
|
|
637
634
|
baseAssetAmountWithUnsettledLp: BN;
|
|
638
635
|
orderStepSize: BN;
|
package/package.json
CHANGED
package/src/admin.ts
CHANGED
|
@@ -1007,6 +1007,25 @@ export class Admin extends ClearingHouse {
|
|
|
1007
1007
|
);
|
|
1008
1008
|
}
|
|
1009
1009
|
|
|
1010
|
+
public async updatePerpMarketMaxOpenInterest(
|
|
1011
|
+
perpMarketIndex: number,
|
|
1012
|
+
maxOpenInterest: BN
|
|
1013
|
+
): Promise<TransactionSignature> {
|
|
1014
|
+
return await this.program.rpc.updatePerpMarketMaxOpenInterest(
|
|
1015
|
+
maxOpenInterest,
|
|
1016
|
+
{
|
|
1017
|
+
accounts: {
|
|
1018
|
+
admin: this.wallet.publicKey,
|
|
1019
|
+
state: await this.getStatePublicKey(),
|
|
1020
|
+
perpMarket: await getPerpMarketPublicKey(
|
|
1021
|
+
this.program.programId,
|
|
1022
|
+
perpMarketIndex
|
|
1023
|
+
),
|
|
1024
|
+
},
|
|
1025
|
+
}
|
|
1026
|
+
);
|
|
1027
|
+
}
|
|
1028
|
+
|
|
1010
1029
|
public async updateSerumVault(
|
|
1011
1030
|
srmVault: PublicKey
|
|
1012
1031
|
): Promise<TransactionSignature> {
|
package/src/clearingHouse.ts
CHANGED
|
@@ -1561,7 +1561,7 @@ export class ClearingHouse {
|
|
|
1561
1561
|
marketIndex: number,
|
|
1562
1562
|
limitPrice?: BN
|
|
1563
1563
|
): Promise<TransactionSignature> {
|
|
1564
|
-
return await this.
|
|
1564
|
+
return await this.placeAndTakePerpOrder({
|
|
1565
1565
|
orderType: OrderType.MARKET,
|
|
1566
1566
|
marketIndex,
|
|
1567
1567
|
direction,
|
|
@@ -1591,9 +1591,9 @@ export class ClearingHouse {
|
|
|
1591
1591
|
const marketIndex = orderParams.marketIndex;
|
|
1592
1592
|
const orderId = userAccount.nextOrderId;
|
|
1593
1593
|
|
|
1594
|
-
const marketOrderTx = wrapInTx(await this.
|
|
1594
|
+
const marketOrderTx = wrapInTx(await this.getPlacePerpOrderIx(orderParams));
|
|
1595
1595
|
const fillTx = wrapInTx(
|
|
1596
|
-
await this.
|
|
1596
|
+
await this.getFillPerpOrderIx(userAccountPublicKey, userAccount, {
|
|
1597
1597
|
orderId,
|
|
1598
1598
|
marketIndex,
|
|
1599
1599
|
})
|
|
@@ -1624,11 +1624,11 @@ export class ClearingHouse {
|
|
|
1624
1624
|
return { txSig, signedFillTx };
|
|
1625
1625
|
}
|
|
1626
1626
|
|
|
1627
|
-
public async
|
|
1627
|
+
public async placePerpOrder(
|
|
1628
1628
|
orderParams: OptionalOrderParams
|
|
1629
1629
|
): Promise<TransactionSignature> {
|
|
1630
1630
|
const { txSig, slot } = await this.txSender.send(
|
|
1631
|
-
wrapInTx(await this.
|
|
1631
|
+
wrapInTx(await this.getPlacePerpOrderIx(orderParams)),
|
|
1632
1632
|
[],
|
|
1633
1633
|
this.opts
|
|
1634
1634
|
);
|
|
@@ -1645,7 +1645,7 @@ export class ClearingHouse {
|
|
|
1645
1645
|
});
|
|
1646
1646
|
}
|
|
1647
1647
|
|
|
1648
|
-
public async
|
|
1648
|
+
public async getPlacePerpOrderIx(
|
|
1649
1649
|
orderParams: OptionalOrderParams
|
|
1650
1650
|
): Promise<TransactionInstruction> {
|
|
1651
1651
|
orderParams = this.getOrderParams(orderParams, MarketType.PERP);
|
|
@@ -1657,7 +1657,7 @@ export class ClearingHouse {
|
|
|
1657
1657
|
readablePerpMarketIndex: orderParams.marketIndex,
|
|
1658
1658
|
});
|
|
1659
1659
|
|
|
1660
|
-
return await this.program.instruction.
|
|
1660
|
+
return await this.program.instruction.placePerpOrder(orderParams, {
|
|
1661
1661
|
accounts: {
|
|
1662
1662
|
state: await this.getStatePublicKey(),
|
|
1663
1663
|
user: userAccountPublicKey,
|
|
@@ -1895,7 +1895,7 @@ export class ClearingHouse {
|
|
|
1895
1895
|
);
|
|
1896
1896
|
}
|
|
1897
1897
|
|
|
1898
|
-
public async
|
|
1898
|
+
public async fillPerpOrder(
|
|
1899
1899
|
userAccountPublicKey: PublicKey,
|
|
1900
1900
|
user: UserAccount,
|
|
1901
1901
|
order?: Pick<Order, 'marketIndex' | 'orderId'>,
|
|
@@ -1904,7 +1904,7 @@ export class ClearingHouse {
|
|
|
1904
1904
|
): Promise<TransactionSignature> {
|
|
1905
1905
|
const { txSig } = await this.txSender.send(
|
|
1906
1906
|
wrapInTx(
|
|
1907
|
-
await this.
|
|
1907
|
+
await this.getFillPerpOrderIx(
|
|
1908
1908
|
userAccountPublicKey,
|
|
1909
1909
|
user,
|
|
1910
1910
|
order,
|
|
@@ -1918,7 +1918,7 @@ export class ClearingHouse {
|
|
|
1918
1918
|
return txSig;
|
|
1919
1919
|
}
|
|
1920
1920
|
|
|
1921
|
-
public async
|
|
1921
|
+
public async getFillPerpOrderIx(
|
|
1922
1922
|
userAccountPublicKey: PublicKey,
|
|
1923
1923
|
userAccount: UserAccount,
|
|
1924
1924
|
order: Pick<Order, 'marketIndex' | 'orderId'>,
|
|
@@ -1977,7 +1977,7 @@ export class ClearingHouse {
|
|
|
1977
1977
|
const orderId = order.orderId;
|
|
1978
1978
|
const makerOrderId = makerInfo ? makerInfo.order.orderId : null;
|
|
1979
1979
|
|
|
1980
|
-
return await this.program.instruction.
|
|
1980
|
+
return await this.program.instruction.fillPerpOrder(orderId, makerOrderId, {
|
|
1981
1981
|
accounts: {
|
|
1982
1982
|
state: await this.getStatePublicKey(),
|
|
1983
1983
|
filler: fillerPublicKey,
|
|
@@ -2275,14 +2275,18 @@ export class ClearingHouse {
|
|
|
2275
2275
|
});
|
|
2276
2276
|
}
|
|
2277
2277
|
|
|
2278
|
-
public async
|
|
2278
|
+
public async placeAndTakePerpOrder(
|
|
2279
2279
|
orderParams: OptionalOrderParams,
|
|
2280
2280
|
makerInfo?: MakerInfo,
|
|
2281
2281
|
referrerInfo?: ReferrerInfo
|
|
2282
2282
|
): Promise<TransactionSignature> {
|
|
2283
2283
|
const { txSig, slot } = await this.txSender.send(
|
|
2284
2284
|
wrapInTx(
|
|
2285
|
-
await this.
|
|
2285
|
+
await this.getPlaceAndTakePerpOrderIx(
|
|
2286
|
+
orderParams,
|
|
2287
|
+
makerInfo,
|
|
2288
|
+
referrerInfo
|
|
2289
|
+
)
|
|
2286
2290
|
),
|
|
2287
2291
|
[],
|
|
2288
2292
|
this.opts
|
|
@@ -2291,7 +2295,7 @@ export class ClearingHouse {
|
|
|
2291
2295
|
return txSig;
|
|
2292
2296
|
}
|
|
2293
2297
|
|
|
2294
|
-
public async
|
|
2298
|
+
public async getPlaceAndTakePerpOrderIx(
|
|
2295
2299
|
orderParams: OptionalOrderParams,
|
|
2296
2300
|
makerInfo?: MakerInfo,
|
|
2297
2301
|
referrerInfo?: ReferrerInfo
|
|
@@ -2338,7 +2342,7 @@ export class ClearingHouse {
|
|
|
2338
2342
|
});
|
|
2339
2343
|
}
|
|
2340
2344
|
|
|
2341
|
-
return await this.program.instruction.
|
|
2345
|
+
return await this.program.instruction.placeAndTakePerpOrder(
|
|
2342
2346
|
orderParams,
|
|
2343
2347
|
makerOrderId,
|
|
2344
2348
|
{
|
|
@@ -2353,14 +2357,18 @@ export class ClearingHouse {
|
|
|
2353
2357
|
);
|
|
2354
2358
|
}
|
|
2355
2359
|
|
|
2356
|
-
public async
|
|
2360
|
+
public async placeAndMakePerpOrder(
|
|
2357
2361
|
orderParams: OptionalOrderParams,
|
|
2358
2362
|
takerInfo: TakerInfo,
|
|
2359
2363
|
referrerInfo?: ReferrerInfo
|
|
2360
2364
|
): Promise<TransactionSignature> {
|
|
2361
2365
|
const { txSig, slot } = await this.txSender.send(
|
|
2362
2366
|
wrapInTx(
|
|
2363
|
-
await this.
|
|
2367
|
+
await this.getPlaceAndMakePerpOrderIx(
|
|
2368
|
+
orderParams,
|
|
2369
|
+
takerInfo,
|
|
2370
|
+
referrerInfo
|
|
2371
|
+
)
|
|
2364
2372
|
),
|
|
2365
2373
|
[],
|
|
2366
2374
|
this.opts
|
|
@@ -2371,7 +2379,7 @@ export class ClearingHouse {
|
|
|
2371
2379
|
return txSig;
|
|
2372
2380
|
}
|
|
2373
2381
|
|
|
2374
|
-
public async
|
|
2382
|
+
public async getPlaceAndMakePerpOrderIx(
|
|
2375
2383
|
orderParams: OptionalOrderParams,
|
|
2376
2384
|
takerInfo: TakerInfo,
|
|
2377
2385
|
referrerInfo?: ReferrerInfo
|
|
@@ -2400,7 +2408,7 @@ export class ClearingHouse {
|
|
|
2400
2408
|
}
|
|
2401
2409
|
|
|
2402
2410
|
const takerOrderId = takerInfo.order.orderId;
|
|
2403
|
-
return await this.program.instruction.
|
|
2411
|
+
return await this.program.instruction.placeAndMakePerpOrder(
|
|
2404
2412
|
orderParams,
|
|
2405
2413
|
takerOrderId,
|
|
2406
2414
|
{
|
|
@@ -2596,7 +2604,7 @@ export class ClearingHouse {
|
|
|
2596
2604
|
throw Error(`No position in market ${marketIndex.toString()}`);
|
|
2597
2605
|
}
|
|
2598
2606
|
|
|
2599
|
-
return await this.
|
|
2607
|
+
return await this.placeAndTakePerpOrder({
|
|
2600
2608
|
orderType: OrderType.MARKET,
|
|
2601
2609
|
marketIndex,
|
|
2602
2610
|
direction: findDirectionToClose(userPosition),
|
package/src/clearingHouseUser.ts
CHANGED
|
@@ -201,7 +201,7 @@ export class ClearingHouseUser {
|
|
|
201
201
|
const [lpOpenBids, lpOpenAsks] = this.getLPBidAsks(marketIndex);
|
|
202
202
|
|
|
203
203
|
const totalOpenBids = lpOpenBids.add(position.openBids);
|
|
204
|
-
const totalOpenAsks = lpOpenAsks.
|
|
204
|
+
const totalOpenAsks = lpOpenAsks.add(position.openAsks);
|
|
205
205
|
|
|
206
206
|
return [totalOpenBids, totalOpenAsks];
|
|
207
207
|
}
|
package/src/config.ts
CHANGED
|
@@ -29,7 +29,7 @@ export const configs: { [key in DriftEnv]: DriftConfig } = {
|
|
|
29
29
|
devnet: {
|
|
30
30
|
ENV: 'devnet',
|
|
31
31
|
PYTH_ORACLE_MAPPING_ADDRESS: 'BmA9Z6FjioHJPpjT39QazZyhDRUdZy2ezwx4GiDdE2u2',
|
|
32
|
-
CLEARING_HOUSE_PROGRAM_ID: '
|
|
32
|
+
CLEARING_HOUSE_PROGRAM_ID: 'BJG3o4CURrokB7huNyiHptYepAtHXj4YfefJiPgzUULV',
|
|
33
33
|
USDC_MINT_ADDRESS: '8zGuJQqwhZafTah7Uc7Z4tXRnguqkn5KLFAP8oV6PHe2',
|
|
34
34
|
SERUM_V3: 'DESVgJVGajEgKGXhb6XmqDHGz3VjdgP7rEVESBgxmroY',
|
|
35
35
|
V2_ALPHA_TICKET_MINT_ADDRESS:
|
|
@@ -21,7 +21,7 @@ export const MAX_LEVERAGE = new BN(5);
|
|
|
21
21
|
export const QUOTE_PRECISION_EXP = new BN(6);
|
|
22
22
|
export const FUNDING_RATE_BUFFER_PRECISION_EXP = new BN(3);
|
|
23
23
|
export const PRICE_PRECISION_EXP = new BN(6);
|
|
24
|
-
export const FUNDING_RATE_PRECISION_EXP = PRICE_PRECISION_EXP.
|
|
24
|
+
export const FUNDING_RATE_PRECISION_EXP = PRICE_PRECISION_EXP.add(
|
|
25
25
|
FUNDING_RATE_BUFFER_PRECISION_EXP
|
|
26
26
|
);
|
|
27
27
|
export const PEG_PRECISION_EXP = new BN(6);
|
|
@@ -56,6 +56,9 @@ export const LIQUIDATION_FEE_PRECISION = new BN(1000000);
|
|
|
56
56
|
|
|
57
57
|
export const QUOTE_PRECISION = new BN(10).pow(QUOTE_PRECISION_EXP);
|
|
58
58
|
export const PRICE_PRECISION = new BN(10).pow(PRICE_PRECISION_EXP);
|
|
59
|
+
export const FUNDING_RATE_PRECISION = new BN(10).pow(
|
|
60
|
+
FUNDING_RATE_PRECISION_EXP
|
|
61
|
+
);
|
|
59
62
|
export const FUNDING_RATE_BUFFER_PRECISION = new BN(10).pow(
|
|
60
63
|
FUNDING_RATE_BUFFER_PRECISION_EXP
|
|
61
64
|
);
|
|
@@ -247,7 +247,7 @@
|
|
|
247
247
|
]
|
|
248
248
|
},
|
|
249
249
|
{
|
|
250
|
-
"name": "
|
|
250
|
+
"name": "placePerpOrder",
|
|
251
251
|
"accounts": [
|
|
252
252
|
{
|
|
253
253
|
"name": "state",
|
|
@@ -373,7 +373,7 @@
|
|
|
373
373
|
]
|
|
374
374
|
},
|
|
375
375
|
{
|
|
376
|
-
"name": "
|
|
376
|
+
"name": "placeAndTakePerpOrder",
|
|
377
377
|
"accounts": [
|
|
378
378
|
{
|
|
379
379
|
"name": "state",
|
|
@@ -412,7 +412,7 @@
|
|
|
412
412
|
]
|
|
413
413
|
},
|
|
414
414
|
{
|
|
415
|
-
"name": "
|
|
415
|
+
"name": "placeAndMakePerpOrder",
|
|
416
416
|
"accounts": [
|
|
417
417
|
{
|
|
418
418
|
"name": "state",
|
|
@@ -772,7 +772,7 @@
|
|
|
772
772
|
"args": []
|
|
773
773
|
},
|
|
774
774
|
{
|
|
775
|
-
"name": "
|
|
775
|
+
"name": "fillPerpOrder",
|
|
776
776
|
"accounts": [
|
|
777
777
|
{
|
|
778
778
|
"name": "state",
|
|
@@ -3276,6 +3276,32 @@
|
|
|
3276
3276
|
}
|
|
3277
3277
|
]
|
|
3278
3278
|
},
|
|
3279
|
+
{
|
|
3280
|
+
"name": "updatePerpMarketMaxOpenInterest",
|
|
3281
|
+
"accounts": [
|
|
3282
|
+
{
|
|
3283
|
+
"name": "admin",
|
|
3284
|
+
"isMut": false,
|
|
3285
|
+
"isSigner": true
|
|
3286
|
+
},
|
|
3287
|
+
{
|
|
3288
|
+
"name": "state",
|
|
3289
|
+
"isMut": false,
|
|
3290
|
+
"isSigner": false
|
|
3291
|
+
},
|
|
3292
|
+
{
|
|
3293
|
+
"name": "perpMarket",
|
|
3294
|
+
"isMut": true,
|
|
3295
|
+
"isSigner": false
|
|
3296
|
+
}
|
|
3297
|
+
],
|
|
3298
|
+
"args": [
|
|
3299
|
+
{
|
|
3300
|
+
"name": "maxOpenInterest",
|
|
3301
|
+
"type": "u128"
|
|
3302
|
+
}
|
|
3303
|
+
]
|
|
3304
|
+
},
|
|
3279
3305
|
{
|
|
3280
3306
|
"name": "updateAdmin",
|
|
3281
3307
|
"accounts": [
|
|
@@ -4089,6 +4115,10 @@
|
|
|
4089
4115
|
"name": "settledPerpPnl",
|
|
4090
4116
|
"type": "i64"
|
|
4091
4117
|
},
|
|
4118
|
+
{
|
|
4119
|
+
"name": "cumulativeSpotFees",
|
|
4120
|
+
"type": "i64"
|
|
4121
|
+
},
|
|
4092
4122
|
{
|
|
4093
4123
|
"name": "nextOrderId",
|
|
4094
4124
|
"type": "u32"
|
|
@@ -4684,6 +4714,10 @@
|
|
|
4684
4714
|
"name": "baseAssetAmountWithUnsettledLp",
|
|
4685
4715
|
"type": "i128"
|
|
4686
4716
|
},
|
|
4717
|
+
{
|
|
4718
|
+
"name": "maxOpenInterest",
|
|
4719
|
+
"type": "u128"
|
|
4720
|
+
},
|
|
4687
4721
|
{
|
|
4688
4722
|
"name": "quoteAssetAmountLong",
|
|
4689
4723
|
"type": "i128"
|
|
@@ -5371,6 +5405,15 @@
|
|
|
5371
5405
|
{
|
|
5372
5406
|
"name": "auctionDuration",
|
|
5373
5407
|
"type": "u8"
|
|
5408
|
+
},
|
|
5409
|
+
{
|
|
5410
|
+
"name": "padding",
|
|
5411
|
+
"type": {
|
|
5412
|
+
"array": [
|
|
5413
|
+
"u8",
|
|
5414
|
+
2
|
|
5415
|
+
]
|
|
5416
|
+
}
|
|
5374
5417
|
}
|
|
5375
5418
|
]
|
|
5376
5419
|
}
|
|
@@ -7568,6 +7611,16 @@
|
|
|
7568
7611
|
"code": 6134,
|
|
7569
7612
|
"name": "ReduceOnlyWithdrawIncreasedRisk",
|
|
7570
7613
|
"msg": "Reduce Only Withdraw Increased Risk"
|
|
7614
|
+
},
|
|
7615
|
+
{
|
|
7616
|
+
"code": 6135,
|
|
7617
|
+
"name": "MaxOpenInterest",
|
|
7618
|
+
"msg": "Max Open Interest"
|
|
7619
|
+
},
|
|
7620
|
+
{
|
|
7621
|
+
"code": 6136,
|
|
7622
|
+
"name": "CantResolvePerpBankruptcy",
|
|
7623
|
+
"msg": "Cant Resolve Perp Bankruptcy"
|
|
7571
7624
|
}
|
|
7572
7625
|
]
|
|
7573
7626
|
}
|
package/src/types.ts
CHANGED
|
@@ -576,9 +576,6 @@ export type AMM = {
|
|
|
576
576
|
totalFeeMinusDistributions: BN;
|
|
577
577
|
totalFeeWithdrawn: BN;
|
|
578
578
|
totalFee: BN;
|
|
579
|
-
cumulativeFundingPaymentPerLp: BN;
|
|
580
|
-
cumulativeFeePerLp: BN;
|
|
581
|
-
cumulativeNetBaseAssetAmountPerLp: BN;
|
|
582
579
|
userLpShares: BN;
|
|
583
580
|
baseAssetAmountWithUnsettledLp: BN;
|
|
584
581
|
orderStepSize: BN;
|
package/tests/dlob/helpers.ts
CHANGED
|
@@ -19,8 +19,8 @@ import {
|
|
|
19
19
|
UserMapInterface,
|
|
20
20
|
Wallet,
|
|
21
21
|
OrderRecord,
|
|
22
|
+
ExchangeStatus,
|
|
22
23
|
} from '../../src';
|
|
23
|
-
import { ExchangeStatus } from '../../lib';
|
|
24
24
|
|
|
25
25
|
export const mockPerpPosition: PerpPosition = {
|
|
26
26
|
baseAssetAmount: new BN(0),
|
|
@@ -73,9 +73,6 @@ export const mockAMM: AMM = {
|
|
|
73
73
|
totalFeeMinusDistributions: new BN(0),
|
|
74
74
|
totalFeeWithdrawn: new BN(0),
|
|
75
75
|
totalFee: new BN(0),
|
|
76
|
-
cumulativeFundingPaymentPerLp: new BN(0),
|
|
77
|
-
cumulativeFeePerLp: new BN(0),
|
|
78
|
-
cumulativeNetBaseAssetAmountPerLp: new BN(0),
|
|
79
76
|
userLpShares: new BN(0),
|
|
80
77
|
baseAssetAmountWithUnsettledLp: new BN(0),
|
|
81
78
|
orderStepSize: new BN(0),
|
package/tests/dlob/test.ts
CHANGED
|
@@ -19,6 +19,7 @@ import {
|
|
|
19
19
|
Order,
|
|
20
20
|
isMarketOrder,
|
|
21
21
|
isLimitOrder,
|
|
22
|
+
ZERO,
|
|
22
23
|
} from '../../src';
|
|
23
24
|
|
|
24
25
|
import {
|
|
@@ -27,7 +28,6 @@ import {
|
|
|
27
28
|
mockStateAccount,
|
|
28
29
|
MockUserMap,
|
|
29
30
|
} from './helpers';
|
|
30
|
-
import { ZERO } from '../../lib';
|
|
31
31
|
|
|
32
32
|
function insertOrderToDLOB(
|
|
33
33
|
dlob: DLOB,
|
|
@@ -194,14 +194,14 @@ function printCrossedNodes(n: NodeToFill, slot: number) {
|
|
|
194
194
|
}`
|
|
195
195
|
);
|
|
196
196
|
console.log(
|
|
197
|
-
`node: (mkt: ${isMarketOrder(n.node.order)}, lim: ${isLimitOrder(
|
|
198
|
-
n.node.order
|
|
197
|
+
`node: (mkt: ${isMarketOrder(n.node.order!)}, lim: ${isLimitOrder(
|
|
198
|
+
n.node.order!
|
|
199
199
|
)})`
|
|
200
200
|
);
|
|
201
201
|
if (n.makerNode) {
|
|
202
202
|
console.log(
|
|
203
|
-
`mkrnode: (mkt: ${isMarketOrder(n.makerNode.order)}, lim: ${isLimitOrder(
|
|
204
|
-
n.makerNode.order
|
|
203
|
+
`mkrnode: (mkt: ${isMarketOrder(n.makerNode.order!)}, lim: ${isLimitOrder(
|
|
204
|
+
n.makerNode.order!
|
|
205
205
|
)})`
|
|
206
206
|
);
|
|
207
207
|
}
|