11import { TokenRouter } from "@wormhole-foundation/example-liquidity-layer-definitions" ;
2- import { Network , nativeChainIds , toChainId } from "@wormhole-foundation/sdk-base" ;
2+ import { Network , encoding , toChainId } from "@wormhole-foundation/sdk-base" ;
33import {
44 CircleBridge ,
55 Contracts ,
66 UnsignedTransaction ,
77 VAA ,
8+ serialize ,
89} from "@wormhole-foundation/sdk-definitions" ;
910import {
1011 AnyEvmAddress ,
@@ -13,34 +14,30 @@ import {
1314 EvmUnsignedTransaction ,
1415} from "@wormhole-foundation/sdk-evm" ;
1516import { ethers } from "ethers" ;
16- import { EvmTokenRouter as _EvmTokenRouter } from "../TokenRouter" ;
17+ import { TokenRouter as _TokenRouter } from "../TokenRouter" ;
1718
1819export class EvmTokenRouter < N extends Network , C extends EvmChains >
19- extends _EvmTokenRouter
20+ extends _TokenRouter
2021 implements TokenRouter < N , C >
2122{
22- private _chainId : number ;
2323 constructor (
2424 readonly network : N ,
2525 readonly chain : C ,
2626 readonly provider : ethers . Provider ,
2727 readonly contracts : Contracts & TokenRouter . Addresses ,
2828 ) {
2929 super ( provider , contracts . tokenRouter , contracts . cctp . tokenMessenger ) ;
30- this . _chainId = 0 ; //nativeChainIds.networkChainToNativeChainId(network, chain);
3130 }
3231
33- async * placeMarketOrder (
34- sender : AnyEvmAddress ,
35- order : TokenRouter . OrderRequest ,
36- ) : AsyncGenerator < UnsignedTransaction < N , C > , any , unknown > {
32+ async * placeMarketOrder ( sender : AnyEvmAddress , order : TokenRouter . OrderRequest ) {
33+ const from = new EvmAddress ( sender ) . unwrap ( ) ;
3734 const msg = order . redeemerMessage ? order . redeemerMessage : new Uint8Array ( ) ;
3835
3936 const refundAddress = order . refundAddress
4037 ? new EvmAddress ( order . refundAddress ) . unwrap ( )
4138 : undefined ;
4239
43- const tx = await this . placeMarketOrderTx (
40+ const txReq = await this . placeMarketOrderTx (
4441 order . amountIn ,
4542 toChainId ( order . targetChain ) ,
4643 order . redeemer . toUint8Array ( ) ,
@@ -49,29 +46,30 @@ export class EvmTokenRouter<N extends Network, C extends EvmChains>
4946 refundAddress ,
5047 ) ;
5148
52- yield this . createUnsignedTx ( tx , "TokenRouter.placeMarketOrder" ) ;
49+ yield this . createUnsignedTx ( { ... txReq , from } , "TokenRouter.placeMarketOrder" ) ;
5350 }
51+
5452 async * redeemFill (
5553 sender : AnyEvmAddress ,
56- vaa :
57- | VAA < "FastTransfer:CctpDeposit" >
58- | VAA < "FastTransfer:FastMarketOrder" >
59- | VAA < "FastTransfer:FastFill" > ,
54+ vaa : VAA < "FastTransfer:CctpDeposit" > ,
6055 cctp : CircleBridge . Attestation ,
61- ) : AsyncGenerator < UnsignedTransaction < N , C > , any , unknown > {
62- throw new Error ( "Method not implemented." ) ;
56+ ) {
57+ const from = new EvmAddress ( sender ) . unwrap ( ) ;
58+ const txReq = await this . redeemFillTx ( {
59+ encodedWormholeMessage : serialize ( vaa ) ,
60+ circleBridgeMessage : CircleBridge . serialize ( cctp . message ) ,
61+ circleAttestation : encoding . hex . decode ( cctp . attestation ! ) ,
62+ } ) ;
63+ yield this . createUnsignedTx ( { ...txReq , from } , "TokenRouter.redeemFill" ) ;
6364 }
6465
6566 private createUnsignedTx (
66- txReq : ethers . ContractTransaction ,
67+ txReq : ethers . TransactionRequest ,
6768 description : string ,
6869 parallelizable : boolean = false ,
69- ) : EvmUnsignedTransaction < N , C > {
70- //txReq.chainId = this._chainId;
71-
70+ ) : UnsignedTransaction < N , C > {
7271 return new EvmUnsignedTransaction (
73- // txReq,
74- { } ,
72+ txReq ,
7573 this . network ,
7674 this . chain ,
7775 description ,
0 commit comments