Skip to content

Commit 73cb0ac

Browse files
committed
add minimal SignedMsgOrderParamsMessage variant
1 parent 52eeb85 commit 73cb0ac

File tree

4 files changed

+166
-5
lines changed

4 files changed

+166
-5
lines changed

programs/drift/src/state/order_params.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -856,6 +856,18 @@ impl OrderParams {
856856
}
857857
}
858858

859+
/// contains minimal fields for message to aid in client decoding. Excludes fields
860+
/// added after the fact such as max_margin_ratio.
861+
#[derive(AnchorSerialize, AnchorDeserialize, Clone, Default, Eq, PartialEq, Debug)]
862+
pub struct SignedMsgOrderParamsMessageMinimal {
863+
pub signed_msg_order_params: OrderParams,
864+
pub sub_account_id: u16,
865+
pub slot: u64,
866+
pub uuid: [u8; 8],
867+
pub take_profit_order_params: Option<SignedMsgTriggerOrderParams>,
868+
pub stop_loss_order_params: Option<SignedMsgTriggerOrderParams>,
869+
}
870+
859871
#[derive(AnchorSerialize, AnchorDeserialize, Clone, Default, Eq, PartialEq, Debug)]
860872
pub struct SignedMsgOrderParamsMessage {
861873
pub signed_msg_order_params: OrderParams,
@@ -867,6 +879,18 @@ pub struct SignedMsgOrderParamsMessage {
867879
pub max_margin_ratio: Option<u16>,
868880
}
869881

882+
/// contains minimal fields for delegate message to aid in client decoding. Excludes fields
883+
/// added after the fact such as max_margin_ratio.
884+
#[derive(AnchorSerialize, AnchorDeserialize, Clone, Default, Eq, PartialEq, Debug)]
885+
pub struct SignedMsgOrderParamsDelegateMessageMinimal {
886+
pub signed_msg_order_params: OrderParams,
887+
pub taker_pubkey: Pubkey,
888+
pub slot: u64,
889+
pub uuid: [u8; 8],
890+
pub take_profit_order_params: Option<SignedMsgTriggerOrderParams>,
891+
pub stop_loss_order_params: Option<SignedMsgTriggerOrderParams>,
892+
}
893+
870894
#[derive(AnchorSerialize, AnchorDeserialize, Clone, Default, Eq, PartialEq, Debug)]
871895
pub struct SignedMsgOrderParamsDelegateMessage {
872896
pub signed_msg_order_params: OrderParams,

sdk/src/driftClient.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ import {
6565
SignedMsgOrderParamsDelegateMessage,
6666
TokenProgramFlag,
6767
PostOnlyParams,
68+
SignedMsgOrderParamsDelegateMessageMinimal,
69+
SignedMsgOrderParamsMessageMinimal,
6870
} from './types';
6971
import driftIDL from './idl/drift.json';
7072

@@ -6564,6 +6566,24 @@ export class DriftClient {
65646566
return buf;
65656567
}
65666568

6569+
/*
6570+
* Decode signedMsg taker order params from borsh buffer. Only includes minimal fields.
6571+
*/
6572+
public decodeSignedMsgOrderParamsMessageMinimal(
6573+
encodedMessage: Buffer,
6574+
delegateSigner?: boolean
6575+
):
6576+
| SignedMsgOrderParamsMessageMinimal
6577+
| SignedMsgOrderParamsDelegateMessageMinimal {
6578+
const decodeStr = delegateSigner
6579+
? 'SignedMsgOrderParamsDelegateMessageMinimal'
6580+
: 'SignedMsgOrderParamsMessageMinimal';
6581+
return this.program.coder.types.decode(
6582+
decodeStr,
6583+
encodedMessage.slice(8) // assumes discriminator
6584+
);
6585+
}
6586+
65676587
/*
65686588
* Decode signedMsg taker order params from borsh buffer
65696589
*/

sdk/src/idl/drift.json

Lines changed: 104 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10096,6 +10096,57 @@
1009610096
]
1009710097
}
1009810098
},
10099+
{
10100+
"name": "SignedMsgOrderParamsMessageMinimal",
10101+
"docs": [
10102+
"contains minimal fields for message to aid in client decoding. Excludes fields",
10103+
"added after the fact such as max_margin_ratio."
10104+
],
10105+
"type": {
10106+
"kind": "struct",
10107+
"fields": [
10108+
{
10109+
"name": "signedMsgOrderParams",
10110+
"type": {
10111+
"defined": "OrderParams"
10112+
}
10113+
},
10114+
{
10115+
"name": "subAccountId",
10116+
"type": "u16"
10117+
},
10118+
{
10119+
"name": "slot",
10120+
"type": "u64"
10121+
},
10122+
{
10123+
"name": "uuid",
10124+
"type": {
10125+
"array": [
10126+
"u8",
10127+
8
10128+
]
10129+
}
10130+
},
10131+
{
10132+
"name": "takeProfitOrderParams",
10133+
"type": {
10134+
"option": {
10135+
"defined": "SignedMsgTriggerOrderParams"
10136+
}
10137+
}
10138+
},
10139+
{
10140+
"name": "stopLossOrderParams",
10141+
"type": {
10142+
"option": {
10143+
"defined": "SignedMsgTriggerOrderParams"
10144+
}
10145+
}
10146+
}
10147+
]
10148+
}
10149+
},
1009910150
{
1010010151
"name": "SignedMsgOrderParamsMessage",
1010110152
"type": {
@@ -10149,6 +10200,57 @@
1014910200
]
1015010201
}
1015110202
},
10203+
{
10204+
"name": "SignedMsgOrderParamsDelegateMessageMinimal",
10205+
"docs": [
10206+
"contains minimal fields for delegate message to aid in client decoding. Excludes fields",
10207+
"added after the fact such as max_margin_ratio."
10208+
],
10209+
"type": {
10210+
"kind": "struct",
10211+
"fields": [
10212+
{
10213+
"name": "signedMsgOrderParams",
10214+
"type": {
10215+
"defined": "OrderParams"
10216+
}
10217+
},
10218+
{
10219+
"name": "takerPubkey",
10220+
"type": "publicKey"
10221+
},
10222+
{
10223+
"name": "slot",
10224+
"type": "u64"
10225+
},
10226+
{
10227+
"name": "uuid",
10228+
"type": {
10229+
"array": [
10230+
"u8",
10231+
8
10232+
]
10233+
}
10234+
},
10235+
{
10236+
"name": "takeProfitOrderParams",
10237+
"type": {
10238+
"option": {
10239+
"defined": "SignedMsgTriggerOrderParams"
10240+
}
10241+
}
10242+
},
10243+
{
10244+
"name": "stopLossOrderParams",
10245+
"type": {
10246+
"option": {
10247+
"defined": "SignedMsgTriggerOrderParams"
10248+
}
10249+
}
10250+
}
10251+
]
10252+
}
10253+
},
1015210254
{
1015310255
"name": "SignedMsgOrderParamsDelegateMessage",
1015410256
"type": {
@@ -15974,8 +16076,5 @@
1597416076
"name": "InvalidIfRebalanceSwap",
1597516077
"msg": "Invalid If Rebalance Swap"
1597616078
}
15977-
],
15978-
"metadata": {
15979-
"address": "dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"
15980-
}
15981-
}
16079+
]
16080+
}

sdk/src/types.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1240,6 +1240,15 @@ export const DefaultOrderParams: OrderParams = {
12401240
auctionEndPrice: null,
12411241
};
12421242

1243+
export type SignedMsgOrderParamsMessageMinimal = {
1244+
signedMsgOrderParams: OrderParams;
1245+
subAccountId: number;
1246+
slot: BN;
1247+
uuid: Uint8Array;
1248+
takeProfitOrderParams: SignedMsgTriggerOrderParams | null;
1249+
stopLossOrderParams: SignedMsgTriggerOrderParams | null;
1250+
};
1251+
12431252
export type SignedMsgOrderParamsMessage = {
12441253
signedMsgOrderParams: OrderParams;
12451254
subAccountId: number;
@@ -1250,6 +1259,15 @@ export type SignedMsgOrderParamsMessage = {
12501259
maxMarginRatio?: number | null;
12511260
};
12521261

1262+
export type SignedMsgOrderParamsDelegateMessageMinimal = {
1263+
signedMsgOrderParams: OrderParams;
1264+
slot: BN;
1265+
uuid: Uint8Array;
1266+
takerPubkey: PublicKey;
1267+
takeProfitOrderParams: SignedMsgTriggerOrderParams | null;
1268+
stopLossOrderParams: SignedMsgTriggerOrderParams | null;
1269+
};
1270+
12531271
export type SignedMsgOrderParamsDelegateMessage = {
12541272
signedMsgOrderParams: OrderParams;
12551273
slot: BN;

0 commit comments

Comments
 (0)