@@ -64,6 +64,7 @@ import {
6464import type { LeafHasher } from '../hasher/common.ts'
6565import { supportedChains } from '../supported-chains.ts'
6666import {
67+ type AnyMessage ,
6768 type CCIPExecution ,
6869 type CCIPMessage ,
6970 type CCIPRequest ,
@@ -117,10 +118,10 @@ import {
117118} from './messages.ts'
118119import { encodeEVMOffchainTokenData , fetchEVMOffchainTokenData } from './offchain.ts'
119120import {
121+ buildMessageForDest ,
120122 getMessageById ,
121123 getMessagesInBatch ,
122124 getMessagesInTx ,
123- populateDefaultMessageForDest ,
124125} from '../requests.ts'
125126import type { UnsignedEVMTx } from './types.ts'
126127export type { UnsignedEVMTx }
@@ -965,18 +966,20 @@ export class EVMChain extends Chain<typeof ChainFamily.EVM> {
965966 destChainSelector,
966967 message,
967968 } : Parameters < Chain [ 'getFee' ] > [ 0 ] ) : Promise < bigint > {
968- const message_ = populateDefaultMessageForDest ( message , networkInfo ( destChainSelector ) . family )
969+ const populatedMessage = buildMessageForDest ( message , networkInfo ( destChainSelector ) . family )
969970 const contract = new Contract (
970971 router ,
971972 interfaces . Router ,
972973 this . provider ,
973974 ) as unknown as TypedContract < typeof Router_ABI >
974975 return contract . getFee ( destChainSelector , {
975- receiver : zeroPadValue ( getAddressBytes ( message . receiver ) , 32 ) ,
976- data : hexlify ( message_ . data ?? '0x' ) ,
977- tokenAmounts : message . tokenAmounts ?? [ ] ,
978- feeToken : message . feeToken ?? ZeroAddress ,
979- extraArgs : hexlify ( ( this . constructor as typeof EVMChain ) . encodeExtraArgs ( message . extraArgs ) ) ,
976+ receiver : zeroPadValue ( getAddressBytes ( populatedMessage . receiver ) , 32 ) ,
977+ data : hexlify ( populatedMessage . data ?? '0x' ) ,
978+ tokenAmounts : populatedMessage . tokenAmounts ?? [ ] ,
979+ feeToken : populatedMessage . feeToken ?? ZeroAddress ,
980+ extraArgs : hexlify (
981+ ( this . constructor as typeof EVMChain ) . encodeExtraArgs ( populatedMessage . extraArgs ) ,
982+ ) ,
980983 } )
981984 }
982985
@@ -988,15 +991,21 @@ export class EVMChain extends Chain<typeof ChainFamily.EVM> {
988991 async generateUnsignedSendMessage (
989992 opts : Parameters < Chain [ 'generateUnsignedSendMessage' ] > [ 0 ] ,
990993 ) : Promise < UnsignedEVMTx > {
991- const { sender, router, destChainSelector, message } = opts
992- if ( ! message . fee ) message . fee = await this . getFee ( opts )
994+ const { sender, router, destChainSelector } = opts
995+ const populatedMessage = buildMessageForDest (
996+ opts . message ,
997+ networkInfo ( destChainSelector ) . family ,
998+ )
999+ const message = {
1000+ ...populatedMessage ,
1001+ fee : opts . message . fee ?? ( await this . getFee ( { ...opts , message : populatedMessage } ) ) ,
1002+ }
1003+
9931004 const feeToken = message . feeToken ?? ZeroAddress
9941005 const receiver = zeroPadValue ( getAddressBytes ( message . receiver ) , 32 )
995-
996- const message_ = populateDefaultMessageForDest ( message , networkInfo ( destChainSelector ) . family )
997- const data = hexlify ( message_ . data ?? '0x' )
1006+ const data = hexlify ( message . data ?? '0x' )
9981007 const extraArgs = hexlify (
999- ( this . constructor as typeof EVMChain ) . encodeExtraArgs ( message_ . extraArgs ) ,
1008+ ( this . constructor as typeof EVMChain ) . encodeExtraArgs ( message . extraArgs ) ,
10001009 )
10011010
10021011 // make sure to approve once per token, for the total amount (including fee, if needed)
0 commit comments