Skip to content

Commit cfe4bb3

Browse files
committed
feat: update getPlaceSignedMsgTakerPerpOrderIxs for iso position deposit
1 parent 2eedeac commit cfe4bb3

File tree

3 files changed

+234
-29
lines changed

3 files changed

+234
-29
lines changed

sdk/src/driftClient.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7355,25 +7355,27 @@ export class DriftClient {
73557355
precedingIxs: TransactionInstruction[] = [],
73567356
overrideCustomIxIndex?: number
73577357
): Promise<TransactionInstruction[]> {
7358-
const remainingAccounts = this.getRemainingAccounts({
7359-
userAccounts: [takerInfo.takerUserAccount],
7360-
useMarketLastSlotCache: false,
7361-
readablePerpMarketIndex: marketIndex,
7362-
});
7363-
73647358
const isDelegateSigner = takerInfo.signingAuthority.equals(
73657359
takerInfo.takerUserAccount.delegate
73667360
);
7367-
7361+
73687362
const borshBuf = Buffer.from(
73697363
signedSignedMsgOrderParams.orderParams.toString(),
73707364
'hex'
73717365
);
7372-
7366+
73737367
const signedMessage = this.decodeSignedMsgOrderParamsMessage(
73747368
borshBuf,
73757369
isDelegateSigner
73767370
);
7371+
7372+
const remainingAccounts = this.getRemainingAccounts({
7373+
userAccounts: [takerInfo.takerUserAccount],
7374+
useMarketLastSlotCache: false,
7375+
readablePerpMarketIndex: marketIndex,
7376+
writableSpotMarketIndexes: signedMessage.isolatedPositionDeposit?.gt(new BN(0)) ? [QUOTE_SPOT_MARKET_INDEX] : undefined,
7377+
});
7378+
73777379
if (isUpdateHighLeverageMode(signedMessage.signedMsgOrderParams.bitFlags)) {
73787380
remainingAccounts.push({
73797381
pubkey: getHighLeverageModeConfigPublicKey(this.program.programId),

sdk/src/idl/drift.json

Lines changed: 222 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -652,6 +652,163 @@
652652
}
653653
]
654654
},
655+
{
656+
"name": "depositIntoIsolatedPerpPosition",
657+
"accounts": [
658+
{
659+
"name": "state",
660+
"isMut": false,
661+
"isSigner": false
662+
},
663+
{
664+
"name": "user",
665+
"isMut": true,
666+
"isSigner": false
667+
},
668+
{
669+
"name": "userStats",
670+
"isMut": true,
671+
"isSigner": false
672+
},
673+
{
674+
"name": "authority",
675+
"isMut": false,
676+
"isSigner": true
677+
},
678+
{
679+
"name": "spotMarketVault",
680+
"isMut": true,
681+
"isSigner": false
682+
},
683+
{
684+
"name": "userTokenAccount",
685+
"isMut": true,
686+
"isSigner": false
687+
},
688+
{
689+
"name": "tokenProgram",
690+
"isMut": false,
691+
"isSigner": false
692+
}
693+
],
694+
"args": [
695+
{
696+
"name": "spotMarketIndex",
697+
"type": "u16"
698+
},
699+
{
700+
"name": "perpMarketIndex",
701+
"type": "u16"
702+
},
703+
{
704+
"name": "amount",
705+
"type": "u64"
706+
}
707+
]
708+
},
709+
{
710+
"name": "transferIsolatedPerpPositionDeposit",
711+
"accounts": [
712+
{
713+
"name": "user",
714+
"isMut": true,
715+
"isSigner": false
716+
},
717+
{
718+
"name": "userStats",
719+
"isMut": true,
720+
"isSigner": false
721+
},
722+
{
723+
"name": "authority",
724+
"isMut": false,
725+
"isSigner": true
726+
},
727+
{
728+
"name": "state",
729+
"isMut": false,
730+
"isSigner": false
731+
},
732+
{
733+
"name": "spotMarketVault",
734+
"isMut": false,
735+
"isSigner": false
736+
}
737+
],
738+
"args": [
739+
{
740+
"name": "spotMarketIndex",
741+
"type": "u16"
742+
},
743+
{
744+
"name": "perpMarketIndex",
745+
"type": "u16"
746+
},
747+
{
748+
"name": "amount",
749+
"type": "i64"
750+
}
751+
]
752+
},
753+
{
754+
"name": "withdrawFromIsolatedPerpPosition",
755+
"accounts": [
756+
{
757+
"name": "state",
758+
"isMut": false,
759+
"isSigner": false
760+
},
761+
{
762+
"name": "user",
763+
"isMut": true,
764+
"isSigner": false
765+
},
766+
{
767+
"name": "userStats",
768+
"isMut": true,
769+
"isSigner": false
770+
},
771+
{
772+
"name": "authority",
773+
"isMut": false,
774+
"isSigner": true
775+
},
776+
{
777+
"name": "spotMarketVault",
778+
"isMut": true,
779+
"isSigner": false
780+
},
781+
{
782+
"name": "driftSigner",
783+
"isMut": false,
784+
"isSigner": false
785+
},
786+
{
787+
"name": "userTokenAccount",
788+
"isMut": true,
789+
"isSigner": false
790+
},
791+
{
792+
"name": "tokenProgram",
793+
"isMut": false,
794+
"isSigner": false
795+
}
796+
],
797+
"args": [
798+
{
799+
"name": "spotMarketIndex",
800+
"type": "u16"
801+
},
802+
{
803+
"name": "perpMarketIndex",
804+
"type": "u16"
805+
},
806+
{
807+
"name": "amount",
808+
"type": "u64"
809+
}
810+
]
811+
},
655812
{
656813
"name": "placePerpOrder",
657814
"accounts": [
@@ -10334,6 +10491,12 @@
1033410491
"type": {
1033510492
"option": "u16"
1033610493
}
10494+
},
10495+
{
10496+
"name": "isolatedPositionDeposit",
10497+
"type": {
10498+
"option": "u64"
10499+
}
1033710500
}
1033810501
]
1033910502
}
@@ -10399,6 +10562,12 @@
1039910562
"type": {
1040010563
"option": "u16"
1040110564
}
10565+
},
10566+
{
10567+
"name": "isolatedPositionDeposit",
10568+
"type": {
10569+
"option": "u64"
10570+
}
1040210571
}
1040310572
]
1040410573
}
@@ -11863,13 +12032,13 @@
1186312032
"type": "u64"
1186412033
},
1186512034
{
11866-
"name": "lastBaseAssetAmountPerLp",
12035+
"name": "isolatedPositionScaledBalance",
1186712036
"docs": [
1186812037
"The last base asset amount per lp the amm had",
1186912038
"Used to settle the users lp position",
11870-
"precision: BASE_PRECISION"
12039+
"precision: SPOT_BALANCE_PRECISION"
1187112040
],
11872-
"type": "i64"
12041+
"type": "u64"
1187312042
},
1187412043
{
1187512044
"name": "lastQuoteAssetAmountPerLp",
@@ -11908,8 +12077,8 @@
1190812077
"type": "u8"
1190912078
},
1191012079
{
11911-
"name": "perLpBase",
11912-
"type": "i8"
12080+
"name": "positionFlag",
12081+
"type": "u8"
1191312082
}
1191412083
]
1191512084
}
@@ -12560,6 +12729,17 @@
1256012729
]
1256112730
}
1256212731
},
12732+
{
12733+
"name": "LiquidationBitFlag",
12734+
"type": {
12735+
"kind": "enum",
12736+
"variants": [
12737+
{
12738+
"name": "IsolatedPosition"
12739+
}
12740+
]
12741+
}
12742+
},
1256312743
{
1256412744
"name": "SettlePnlExplanation",
1256512745
"type": {
@@ -12675,13 +12855,7 @@
1267512855
"kind": "enum",
1267612856
"variants": [
1267712857
{
12678-
"name": "Standard",
12679-
"fields": [
12680-
{
12681-
"name": "trackOpenOrdersFraction",
12682-
"type": "bool"
12683-
}
12684-
]
12858+
"name": "Standard"
1268512859
},
1268612860
{
1268712861
"name": "Liquidation",
@@ -13255,6 +13429,23 @@
1325513429
]
1325613430
}
1325713431
},
13432+
{
13433+
"name": "PositionFlag",
13434+
"type": {
13435+
"kind": "enum",
13436+
"variants": [
13437+
{
13438+
"name": "IsolatedPosition"
13439+
},
13440+
{
13441+
"name": "BeingLiquidated"
13442+
},
13443+
{
13444+
"name": "Bankrupt"
13445+
}
13446+
]
13447+
}
13448+
},
1325813449
{
1325913450
"name": "ReferrerStatus",
1326013451
"type": {
@@ -14219,6 +14410,11 @@
1421914410
"defined": "SpotBankruptcyRecord"
1422014411
},
1422114412
"index": false
14413+
},
14414+
{
14415+
"name": "bitFlags",
14416+
"type": "u8",
14417+
"index": false
1422214418
}
1422314419
]
1422414420
},
@@ -15655,8 +15851,8 @@
1565515851
},
1565615852
{
1565715853
"code": 6094,
15658-
"name": "CantUpdatePoolBalanceType",
15659-
"msg": "CantUpdatePoolBalanceType"
15854+
"name": "CantUpdateSpotBalanceType",
15855+
"msg": "CantUpdateSpotBalanceType"
1566015856
},
1566115857
{
1566215858
"code": 6095,
@@ -16770,41 +16966,46 @@
1677016966
},
1677116967
{
1677216968
"code": 6317,
16969+
"name": "InvalidIsolatedPerpMarket",
16970+
"msg": "Invalid Isolated Perp Market"
16971+
},
16972+
{
16973+
"code": 6318,
1677316974
"name": "InvalidRevenueShareResize",
1677416975
"msg": "Invalid RevenueShare resize"
1677516976
},
1677616977
{
16777-
"code": 6318,
16978+
"code": 6319,
1677816979
"name": "BuilderRevoked",
1677916980
"msg": "Builder has been revoked"
1678016981
},
1678116982
{
16782-
"code": 6319,
16983+
"code": 6320,
1678316984
"name": "InvalidBuilderFee",
1678416985
"msg": "Builder fee is greater than max fee bps"
1678516986
},
1678616987
{
16787-
"code": 6320,
16988+
"code": 6321,
1678816989
"name": "RevenueShareEscrowAuthorityMismatch",
1678916990
"msg": "RevenueShareEscrow authority mismatch"
1679016991
},
1679116992
{
16792-
"code": 6321,
16993+
"code": 6322,
1679316994
"name": "RevenueShareEscrowOrdersAccountFull",
1679416995
"msg": "RevenueShareEscrow has too many active orders"
1679516996
},
1679616997
{
16797-
"code": 6322,
16998+
"code": 6323,
1679816999
"name": "InvalidRevenueShareAccount",
1679917000
"msg": "Invalid RevenueShareAccount"
1680017001
},
1680117002
{
16802-
"code": 6323,
17003+
"code": 6324,
1680317004
"name": "CannotRevokeBuilderWithOpenOrders",
1680417005
"msg": "Cannot revoke builder with open orders"
1680517006
},
1680617007
{
16807-
"code": 6324,
17008+
"code": 6325,
1680817009
"name": "UnableToLoadRevenueShareAccount",
1680917010
"msg": "Unable to load builder account"
1681017011
}

0 commit comments

Comments
 (0)