@@ -68,6 +68,9 @@ import {
6868 toUniversalAddress ,
6969 waitUntilSlot ,
7070 waitUntilTimestamp ,
71+ getSdkSigner ,
72+ SDKSigner ,
73+ postLiquidityLayerVaav2 ,
7174} from "../src/testing" ;
7275import { VaaAccount } from "../src/wormhole" ;
7376
@@ -78,32 +81,21 @@ chai.config.truncateThreshold = 0;
7881// Set to true to add debug logs for Signer
7982const SIGNER_DEBUG = false ;
8083
81- type SDKSigner = SolanaSendSigner < "Devnet" , "Solana" > ;
82-
83- function getSdkStuff (
84- connection : Connection ,
85- key : Keypair ,
86- ) : { signer : SDKSigner ; address : SolanaAddress } {
87- const signer = new SolanaSendSigner ( connection , "Solana" , key , SIGNER_DEBUG , { } ) ;
88- const address = new SolanaAddress ( key . publicKey ) ;
89- return { signer, address } ;
90- }
91-
9284describe ( "Matching Engine" , function ( ) {
9385 const connection = new Connection ( LOCALHOST , "processed" ) ;
9486
9587 // owner is also the recipient in all tests
9688 const payer = PAYER_KEYPAIR ;
97- const { signer : payerSigner , address : payerAddress } = getSdkStuff ( connection , payer ) ;
89+ const { signer : payerSigner , address : payerAddress } = getSdkSigner ( connection , payer ) ;
9890
9991 const owner = OWNER_KEYPAIR ;
100- const { signer : ownerSigner , address : ownerAddress } = getSdkStuff ( connection , owner ) ;
92+ const { signer : ownerSigner , address : ownerAddress } = getSdkSigner ( connection , owner ) ;
10193
10294 const relayer = Keypair . generate ( ) ;
103- const { signer : relayerSigner , address : relayerAddress } = getSdkStuff ( connection , relayer ) ;
95+ const { signer : relayerSigner , address : relayerAddress } = getSdkSigner ( connection , relayer ) ;
10496
10597 const ownerAssistant = OWNER_ASSISTANT_KEYPAIR ;
106- const { signer : ownerAssistantSigner , address : ownerAssistantAddress } = getSdkStuff (
98+ const { signer : ownerAssistantSigner , address : ownerAssistantAddress } = getSdkSigner (
10799 connection ,
108100 ownerAssistant ,
109101 ) ;
@@ -116,17 +108,17 @@ describe("Matching Engine", function () {
116108 ) ;
117109 const newFeeRecipient = Keypair . generate ( ) . publicKey ;
118110 const playerOne = PLAYER_ONE_KEYPAIR ;
119- const { signer : playerOneSigner , address : playerOneAddress } = getSdkStuff (
111+ const { signer : playerOneSigner , address : playerOneAddress } = getSdkSigner (
120112 connection ,
121113 playerOne ,
122114 ) ;
123115 const playerTwo = Keypair . generate ( ) ;
124- const { signer : playerTwoSigner , address : playerTwoAddress } = getSdkStuff (
116+ const { signer : playerTwoSigner , address : playerTwoAddress } = getSdkSigner (
125117 connection ,
126118 playerTwo ,
127119 ) ;
128120 const liquidator = Keypair . generate ( ) ;
129- const { signer : liquidatorSigner , address : liquidatorAddress } = getSdkStuff (
121+ const { signer : liquidatorSigner , address : liquidatorAddress } = getSdkSigner (
130122 connection ,
131123 liquidator ,
132124 ) ;
@@ -1447,18 +1439,15 @@ describe("Matching Engine", function () {
14471439 } ) ;
14481440
14491441 it ( "Cannot Place Initial Offer (Invalid VAA)" , async function ( ) {
1450- const fastVaa = await postLiquidityLayerVaa (
1442+ const { address : fastVaa , account : account } = await postLiquidityLayerVaav2 (
14511443 connection ,
1452- playerOne ,
1453- MOCK_GUARDIANS ,
1444+ playerOneSigner ,
14541445 ethRouter ,
14551446 wormholeSequence ++ ,
14561447 Buffer . from ( "deadbeef" , "hex" ) ,
14571448 ) ;
14581449
1459- const auction = await VaaAccount . fetch ( connection , fastVaa ) . then ( ( vaa ) =>
1460- engine . auctionAddress ( vaa . digest ( ) ) ,
1461- ) ;
1450+ const auction = engine . auctionAddress ( account . digest ( ) ) ;
14621451 await placeInitialOfferCctpForTest (
14631452 {
14641453 payer : playerOne . publicKey ,
@@ -1559,10 +1548,9 @@ describe("Matching Engine", function () {
15591548 } ) ;
15601549
15611550 it ( "Cannot Place Initial Offer (Invalid Payload)" , async function ( ) {
1562- const fastVaa = await postLiquidityLayerVaa (
1551+ const { address : fastVaa , account } = await postLiquidityLayerVaav2 (
15631552 connection ,
1564- playerOne ,
1565- MOCK_GUARDIANS ,
1553+ playerOneSigner ,
15661554 ethRouter ,
15671555 wormholeSequence ++ ,
15681556 new LiquidityLayerMessage ( {
@@ -1585,9 +1573,7 @@ describe("Matching Engine", function () {
15851573 } ) ,
15861574 ) ;
15871575
1588- const auction = await VaaAccount . fetch ( connection , fastVaa ) . then ( ( vaa ) =>
1589- engine . auctionAddress ( vaa . digest ( ) ) ,
1590- ) ;
1576+ const auction = engine . auctionAddress ( account . digest ( ) ) ;
15911577 await placeInitialOfferCctpForTest (
15921578 {
15931579 payer : playerOne . publicKey ,
@@ -2438,7 +2424,7 @@ describe("Matching Engine", function () {
24382424
24392425 it ( "Execute Fast Order After Grace Period with Liquidator (Initial Offer Token is Closed)" , async function ( ) {
24402426 const tmpOwner = Keypair . generate ( ) ;
2441- const { signer : tmpOwnerSiner } = getSdkStuff ( connection , tmpOwner ) ;
2427+ const { signer : tmpOwnerSiner } = getSdkSigner ( connection , tmpOwner ) ;
24422428 const transferLamportsToTmpOwnerIx = SystemProgram . transfer ( {
24432429 fromPubkey : payer . publicKey ,
24442430 toPubkey : tmpOwner . publicKey ,
@@ -4369,13 +4355,13 @@ describe("Matching Engine", function () {
43694355 } ) ;
43704356
43714357 interface TestOptions {
4372- signers ?: SDKSigner [ ] ;
4358+ signers ?: SDKSigner < "Devnet" > [ ] ;
43734359 errorMsg ?: string | null ;
43744360 }
43754361
43764362 function addDefaultOptions < T extends TestOptions > (
43774363 opts : T ,
4378- ) : [ { signers : SDKSigner [ ] ; errorMsg : string | null } , Omit < T , keyof TestOptions > ] {
4364+ ) : [ { signers : SDKSigner < "Devnet" > [ ] ; errorMsg : string | null } , Omit < T , keyof TestOptions > ] {
43794365 let { signers, errorMsg } = opts ;
43804366 signers ??= [ payerSigner ] ;
43814367 delete opts . signers ;
@@ -4445,6 +4431,7 @@ describe("Matching Engine", function () {
44454431 // Place the initial offer.
44464432 const txs = engine . placeInitialOffer (
44474433 new SolanaAddress ( accounts . payer ) ,
4434+ // @ts -expect-error may be Uint8Array typed for payload
44484435 fastMarketOrderVAA ,
44494436 args . offerPrice ,
44504437 args . totalDeposit ,
@@ -4454,6 +4441,10 @@ describe("Matching Engine", function () {
44544441 return expectTxsErr ( signers [ 0 ] , txs , errorMsg ) ;
44554442 }
44564443
4444+ // If we still have a Uint8Array, we failed to deserialize it earlier but it was accepted
4445+ // and not caught by the above error check. Why?
4446+ if ( fastMarketOrderVAA . payloadLiteral === "Uint8Array" ) throw "Invalid VAA" ;
4447+
44574448 const offerToken =
44584449 accounts . offerToken ??
44594450 splToken . getAssociatedTokenAddressSync ( USDC_MINT_ADDRESS , accounts . payer ) ;
@@ -4486,7 +4477,7 @@ describe("Matching Engine", function () {
44864477
44874478 const auctionCustodyBalanceAfter = await engine . fetchAuctionCustodyTokenBalance ( auction ) ;
44884479
4489- const { fastMarketOrder } = LiquidityLayerMessage . decode ( fast . vaaAccount . payload ( ) ) ;
4480+ const fastMarketOrder = fastMarketOrderVAA . payload ;
44904481 expect ( fastMarketOrder ) . is . not . undefined ;
44914482 const { amountIn, maxFee, targetChain, redeemerMessage } = fastMarketOrder ! ;
44924483
@@ -5172,20 +5163,6 @@ describe("Matching Engine", function () {
51725163 } ;
51735164 }
51745165
5175- type VaaResult = {
5176- vaa : PublicKey ;
5177- vaaAccount : VaaAccount ;
5178- } ;
5179-
5180- type FastObservedResult = VaaResult & {
5181- fastMarketOrder : FastMarketOrder ;
5182- } ;
5183-
5184- type FinalizedObservedResult = VaaResult & {
5185- slowOrderResponse : SlowOrderResponse ;
5186- cctp : CctpMessageArgs ;
5187- } ;
5188-
51895166 type ObserveCctpOrderVaasOpts = {
51905167 sourceChain ?: Chain ;
51915168 emitter ?: Array < number > ;
@@ -5199,10 +5176,7 @@ describe("Matching Engine", function () {
51995176 finalizedVaaTimestamp ?: number ;
52005177 } ;
52015178
5202- async function observeCctpOrderVaas ( opts : ObserveCctpOrderVaasOpts = { } ) : Promise < {
5203- fast : FastObservedResult ;
5204- finalized ?: FinalizedObservedResult ;
5205- } > {
5179+ async function observeCctpOrderVaas ( opts : ObserveCctpOrderVaasOpts = { } ) {
52065180 let {
52075181 sourceChain,
52085182 emitter,
@@ -5231,18 +5205,14 @@ describe("Matching Engine", function () {
52315205 throw new Error ( `Invalid source chain: ${ sourceChain } ` ) ;
52325206 }
52335207
5234- const fastVaa = await postLiquidityLayerVaa (
5208+ const { address : fastVaa , account : fastVaaAccount } = await postLiquidityLayerVaav2 (
52355209 connection ,
5236- payer ,
5237- MOCK_GUARDIANS ,
5210+ payerSigner ,
52385211 emitter ,
52395212 wormholeSequence ++ ,
5240- new LiquidityLayerMessage ( {
5241- fastMarketOrder,
5242- } ) ,
5213+ new LiquidityLayerMessage ( { fastMarketOrder } ) ,
52435214 { sourceChain, timestamp : vaaTimestamp } ,
52445215 ) ;
5245- const fastVaaAccount = await VaaAccount . fetch ( connection , fastVaa ) ;
52465216 const fast = { fastMarketOrder, vaa : fastVaa , vaaAccount : fastVaaAccount } ;
52475217
52485218 if ( finalized ) {
@@ -5266,16 +5236,15 @@ describe("Matching Engine", function () {
52665236 } ) ,
52675237 } ) ;
52685238
5269- const finalizedVaa = await postLiquidityLayerVaa (
5270- connection ,
5271- payer ,
5272- MOCK_GUARDIANS ,
5273- finalizedEmitter ,
5274- finalizedSequence ,
5275- finalizedMessage ,
5276- { sourceChain : finalizedSourceChain , timestamp : finalizedVaaTimestamp } ,
5277- ) ;
5278- const finalizedVaaAccount = await VaaAccount . fetch ( connection , finalizedVaa ) ;
5239+ const { address : finalizedVaa , account : finalizedVaaAccount } =
5240+ await postLiquidityLayerVaav2 (
5241+ connection ,
5242+ payerSigner ,
5243+ finalizedEmitter ,
5244+ finalizedSequence ,
5245+ finalizedMessage ,
5246+ { sourceChain : finalizedSourceChain , timestamp : finalizedVaaTimestamp } ,
5247+ ) ;
52795248 return {
52805249 fast,
52815250 finalized : {
0 commit comments