Skip to content

Commit 6cc68a0

Browse files
committed
feat: update getPlaceSignedMsgTakerPerpOrderIxs for iso position deposit
1 parent 151cd42 commit 6cc68a0

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
@@ -7055,25 +7055,27 @@ export class DriftClient {
70557055
precedingIxs: TransactionInstruction[] = [],
70567056
overrideCustomIxIndex?: number
70577057
): Promise<TransactionInstruction[]> {
7058-
const remainingAccounts = this.getRemainingAccounts({
7059-
userAccounts: [takerInfo.takerUserAccount],
7060-
useMarketLastSlotCache: false,
7061-
readablePerpMarketIndex: marketIndex,
7062-
});
7063-
70647058
const isDelegateSigner = takerInfo.signingAuthority.equals(
70657059
takerInfo.takerUserAccount.delegate
70667060
);
7067-
7061+
70687062
const borshBuf = Buffer.from(
70697063
signedSignedMsgOrderParams.orderParams.toString(),
70707064
'hex'
70717065
);
7072-
7066+
70737067
const signedMessage = this.decodeSignedMsgOrderParamsMessage(
70747068
borshBuf,
70757069
isDelegateSigner
70767070
);
7071+
7072+
const remainingAccounts = this.getRemainingAccounts({
7073+
userAccounts: [takerInfo.takerUserAccount],
7074+
useMarketLastSlotCache: false,
7075+
readablePerpMarketIndex: marketIndex,
7076+
writableSpotMarketIndexes: signedMessage.isolatedPositionDeposit?.gt(new BN(0)) ? [QUOTE_SPOT_MARKET_INDEX] : undefined,
7077+
});
7078+
70777079
if (isUpdateHighLeverageMode(signedMessage.signedMsgOrderParams.bitFlags)) {
70787080
remainingAccounts.push({
70797081
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
}
@@ -12547,6 +12716,17 @@
1254712716
]
1254812717
}
1254912718
},
12719+
{
12720+
"name": "LiquidationBitFlag",
12721+
"type": {
12722+
"kind": "enum",
12723+
"variants": [
12724+
{
12725+
"name": "IsolatedPosition"
12726+
}
12727+
]
12728+
}
12729+
},
1255012730
{
1255112731
"name": "SettlePnlExplanation",
1255212732
"type": {
@@ -12662,13 +12842,7 @@
1266212842
"kind": "enum",
1266312843
"variants": [
1266412844
{
12665-
"name": "Standard",
12666-
"fields": [
12667-
{
12668-
"name": "trackOpenOrdersFraction",
12669-
"type": "bool"
12670-
}
12671-
]
12845+
"name": "Standard"
1267212846
},
1267312847
{
1267412848
"name": "Liquidation",
@@ -13259,6 +13433,23 @@
1325913433
]
1326013434
}
1326113435
},
13436+
{
13437+
"name": "PositionFlag",
13438+
"type": {
13439+
"kind": "enum",
13440+
"variants": [
13441+
{
13442+
"name": "IsolatedPosition"
13443+
},
13444+
{
13445+
"name": "BeingLiquidated"
13446+
},
13447+
{
13448+
"name": "Bankrupt"
13449+
}
13450+
]
13451+
}
13452+
},
1326213453
{
1326313454
"name": "ReferrerStatus",
1326413455
"type": {
@@ -14223,6 +14414,11 @@
1422314414
"defined": "SpotBankruptcyRecord"
1422414415
},
1422514416
"index": false
14417+
},
14418+
{
14419+
"name": "bitFlags",
14420+
"type": "u8",
14421+
"index": false
1422614422
}
1422714423
]
1422814424
},
@@ -15659,8 +15855,8 @@
1565915855
},
1566015856
{
1566115857
"code": 6094,
15662-
"name": "CantUpdatePoolBalanceType",
15663-
"msg": "CantUpdatePoolBalanceType"
15858+
"name": "CantUpdateSpotBalanceType",
15859+
"msg": "CantUpdateSpotBalanceType"
1566415860
},
1566515861
{
1566615862
"code": 6095,
@@ -16774,41 +16970,46 @@
1677416970
},
1677516971
{
1677616972
"code": 6317,
16973+
"name": "InvalidIsolatedPerpMarket",
16974+
"msg": "Invalid Isolated Perp Market"
16975+
},
16976+
{
16977+
"code": 6318,
1677716978
"name": "InvalidRevenueShareResize",
1677816979
"msg": "Invalid RevenueShare resize"
1677916980
},
1678016981
{
16781-
"code": 6318,
16982+
"code": 6319,
1678216983
"name": "BuilderRevoked",
1678316984
"msg": "Builder has been revoked"
1678416985
},
1678516986
{
16786-
"code": 6319,
16987+
"code": 6320,
1678716988
"name": "InvalidBuilderFee",
1678816989
"msg": "Builder fee is greater than max fee bps"
1678916990
},
1679016991
{
16791-
"code": 6320,
16992+
"code": 6321,
1679216993
"name": "RevenueShareEscrowAuthorityMismatch",
1679316994
"msg": "RevenueShareEscrow authority mismatch"
1679416995
},
1679516996
{
16796-
"code": 6321,
16997+
"code": 6322,
1679716998
"name": "RevenueShareEscrowOrdersAccountFull",
1679816999
"msg": "RevenueShareEscrow has too many active orders"
1679917000
},
1680017001
{
16801-
"code": 6322,
17002+
"code": 6323,
1680217003
"name": "InvalidRevenueShareAccount",
1680317004
"msg": "Invalid RevenueShareAccount"
1680417005
},
1680517006
{
16806-
"code": 6323,
17007+
"code": 6324,
1680717008
"name": "CannotRevokeBuilderWithOpenOrders",
1680817009
"msg": "Cannot revoke builder with open orders"
1680917010
},
1681017011
{
16811-
"code": 6324,
17012+
"code": 6325,
1681217013
"name": "UnableToLoadRevenueShareAccount",
1681317014
"msg": "Unable to load builder account"
1681417015
}

0 commit comments

Comments
 (0)