@@ -24,6 +24,8 @@ import {
24
24
ZERO ,
25
25
isSignedMsgOrder ,
26
26
OrderTriggerCondition ,
27
+ SignedMsgOrderParamsDelegateMessage ,
28
+ SignedMsgOrderParamsMessage ,
27
29
} from '@drift-labs/sdk' ;
28
30
import { decodeUTF8 } from 'tweetnacl-util' ;
29
31
@@ -210,9 +212,8 @@ export abstract class BaseJitter {
210
212
) ;
211
213
await this . slotSubscriber ?. subscribe ( ) ;
212
214
await this . swiftOrderSubscriber ?. subscribe (
213
- async ( orderMessageRaw , signedMsgOrderParamsMessage ) => {
214
- const signedMsgOrderParams =
215
- signedMsgOrderParamsMessage . signedMsgOrderParams ;
215
+ async ( orderMessageRaw , signedMessage , isDelegateSigner ) => {
216
+ const signedMsgOrderParams = signedMessage . signedMsgOrderParams ;
216
217
217
218
if (
218
219
! signedMsgOrderParams . auctionDuration ||
@@ -231,26 +232,27 @@ export abstract class BaseJitter {
231
232
const signedMsgOrderParamsBufHex = Buffer . from (
232
233
orderMessageRaw [ 'order_message' ]
233
234
) ;
234
- const takerSubaccountId = signedMsgOrderParamsMessage . subAccountId ;
235
235
236
236
const takerAuthority = new PublicKey (
237
237
orderMessageRaw [ 'taker_authority' ]
238
238
) ;
239
239
const signingAuthority = new PublicKey (
240
240
orderMessageRaw [ 'signing_authority' ]
241
241
) ;
242
- const takerUserPubkey = await getUserAccountPublicKey (
243
- this . driftClient . program . programId ,
244
- takerAuthority ,
245
- takerSubaccountId
246
- ) ;
242
+ const takerUserPubkey = isDelegateSigner
243
+ ? ( signedMessage as SignedMsgOrderParamsDelegateMessage ) . takerPubkey
244
+ : await getUserAccountPublicKey (
245
+ this . driftClient . program . programId ,
246
+ takerAuthority ,
247
+ ( signedMessage as SignedMsgOrderParamsMessage ) . subAccountId
248
+ ) ;
247
249
const takerUserPubkeyString = takerUserPubkey . toBase58 ( ) ;
248
250
const takerUserAccount =
249
251
await this . swiftOrderSubscriber . userAccountGetter . mustGetUserAccount (
250
252
takerUserPubkey . toString ( )
251
253
) ;
252
254
const orderSlot = Math . min (
253
- signedMsgOrderParamsMessage . slot . toNumber ( ) ,
255
+ signedMessage . slot . toNumber ( ) ,
254
256
this . slotSubscriber . getSlot ( )
255
257
) ;
256
258
0 commit comments