@@ -199,26 +199,43 @@ const (
199199 EVMFamilySelector = "2812d52c"
200200 SVMFamilySelector = "1e10bdc4"
201201 AptosFamilySelector = "ac77ffec"
202+ TVMFamilySelector = "647e2ba9"
203+ SuiFamilySelector = "c4e05953"
202204)
203205
206+ // DefaultFeeQuoterDestChainConfig returns the default FeeQuoter dest chain config.
207+ // If destChainSelector is provided, family-specific values (ChainFamilySelector,
208+ // NetworkFeeUSDCents, DefaultTokenFeeUSDCents) are set accordingly.
204209func DefaultFeeQuoterDestChainConfig (configEnabled bool , destChainSelector ... uint64 ) fee_quoter.FeeQuoterDestChainConfig {
205- familySelector , _ := hex .DecodeString (EVMFamilySelector ) // evm
210+ familySelector , _ := hex .DecodeString (EVMFamilySelector )
211+ networkFeeUSDCents := uint32 (10 )
212+ defaultTokenFeeUSDCents := uint16 (25 )
206213 if len (destChainSelector ) > 0 {
207214 destFamily , _ := chain_selectors .GetSelectorFamily (destChainSelector [0 ])
208215 switch destFamily {
209216 case chain_selectors .FamilySolana :
210- familySelector , _ = hex .DecodeString (SVMFamilySelector ) // solana
217+ familySelector , _ = hex .DecodeString (SVMFamilySelector )
218+ defaultTokenFeeUSDCents = 35
211219 case chain_selectors .FamilyAptos :
212- familySelector , _ = hex .DecodeString (AptosFamilySelector ) // aptos
220+ familySelector , _ = hex .DecodeString (AptosFamilySelector )
221+ case chain_selectors .FamilyTon :
222+ familySelector , _ = hex .DecodeString (TVMFamilySelector )
223+ case chain_selectors .FamilySui :
224+ familySelector , _ = hex .DecodeString (SuiFamilySelector )
225+ case chain_selectors .FamilyEVM :
226+ if isEthereumChain (destChainSelector [0 ]) {
227+ networkFeeUSDCents = 50
228+ defaultTokenFeeUSDCents = 150
229+ }
213230 }
214231 }
215232 return fee_quoter.FeeQuoterDestChainConfig {
216233 IsEnabled : configEnabled ,
217234 MaxNumberOfTokensPerMsg : 10 ,
218235 MaxDataBytes : 30_000 ,
219- MaxPerMsgGasLimit : 3_000_000 , // TODO: this needs to be updated based on RMN sig verification per chain?! 220/250K
236+ MaxPerMsgGasLimit : 3_000_000 ,
220237 DestGasOverhead : ccipevm .DestGasOverhead ,
221- DefaultTokenFeeUSDCents : 25 ,
238+ DefaultTokenFeeUSDCents : defaultTokenFeeUSDCents ,
222239 DestGasPerPayloadByteBase : ccipevm .CalldataGasPerByteBase ,
223240 DestGasPerPayloadByteHigh : ccipevm .CalldataGasPerByteHigh ,
224241 DestGasPerPayloadByteThreshold : ccipevm .CalldataGasPerByteThreshold ,
@@ -227,9 +244,15 @@ func DefaultFeeQuoterDestChainConfig(configEnabled bool, destChainSelector ...ui
227244 DestDataAvailabilityMultiplierBps : 1 ,
228245 DefaultTokenDestGasOverhead : 90_000 ,
229246 DefaultTxGasLimit : 200_000 ,
230- GasMultiplierWeiPerEth : 11e17 , // Gas multiplier in wei per eth is scaled by 1e18, so 11e17 is 1.1 = 110%
231- NetworkFeeUSDCents : 10 ,
247+ GasMultiplierWeiPerEth : 11e17 ,
248+ NetworkFeeUSDCents : networkFeeUSDCents ,
232249 ChainFamilySelector : [4 ]byte (familySelector ),
233250 GasPriceStalenessThreshold : 90000 ,
234251 }
235252}
253+
254+ func isEthereumChain (selector uint64 ) bool {
255+ return selector == chain_selectors .ETHEREUM_MAINNET .Selector ||
256+ selector == chain_selectors .ETHEREUM_TESTNET_SEPOLIA .Selector ||
257+ selector == chain_selectors .ETHEREUM_TESTNET_HOODI .Selector
258+ }
0 commit comments