@@ -1144,6 +1144,73 @@ describe('WarpCore', () => {
11441144 }
11451145 } ) ;
11461146
1147+ it ( 'Treats Sealevel cross-collateral to EVM cross-collateral as transferRemoteTo route' , async ( ) => {
1148+ const sealevelCrossCollateral = new Token ( {
1149+ chainName : testSealevelChain . name ,
1150+ standard : TokenStandard . SealevelHypCrossCollateral ,
1151+ addressOrDenom : '4UMNyNWW75zo69hxoJaRX5iXNUa5FdRPZZa9vDVCiESg' ,
1152+ collateralAddressOrDenom : 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v' ,
1153+ decimals : 6 ,
1154+ symbol : 'USDC' ,
1155+ name : 'USDC' ,
1156+ } ) ;
1157+ const evmCrossCollateral = new Token ( {
1158+ chainName : test2 . name ,
1159+ standard : TokenStandard . EvmHypCrossCollateralRouter ,
1160+ addressOrDenom : '0x8358D8291e3bEDb04804975eEa0fe9fe0fAfB147' ,
1161+ collateralAddressOrDenom : '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' ,
1162+ decimals : 6 ,
1163+ symbol : 'USDC' ,
1164+ name : 'USDC' ,
1165+ } ) ;
1166+ sealevelCrossCollateral . addConnection ( { token : evmCrossCollateral } ) ;
1167+ evmCrossCollateral . addConnection ( { token : sealevelCrossCollateral } ) ;
1168+
1169+ const crossCollateralWarpCore = new WarpCore ( multiProvider , [
1170+ sealevelCrossCollateral ,
1171+ evmCrossCollateral ,
1172+ ] ) ;
1173+ const quoteTransferRemoteToGas = sinon . stub ( ) . resolves ( {
1174+ igpQuote : { amount : 1n } ,
1175+ tokenFeeQuote : { amount : 0n } ,
1176+ } ) ;
1177+ const populateTransferRemoteToTx = sinon . stub ( ) . resolves ( { } ) ;
1178+ const populateTransferRemoteTx = sinon . stub ( ) . resolves ( { } ) ;
1179+ const originAdapterStub = sinon
1180+ . stub ( sealevelCrossCollateral , 'getHypAdapter' )
1181+ . returns ( {
1182+ quoteTransferRemoteToGas,
1183+ populateTransferRemoteToTx,
1184+ populateTransferRemoteTx,
1185+ isApproveRequired : sinon . stub ( ) . resolves ( false ) ,
1186+ isRevokeApprovalRequired : sinon . stub ( ) . resolves ( false ) ,
1187+ } as any ) ;
1188+
1189+ try {
1190+ expect (
1191+ crossCollateralWarpCore . isCrossCollateralTransfer (
1192+ sealevelCrossCollateral ,
1193+ evmCrossCollateral ,
1194+ ) ,
1195+ ) . to . equal ( true ) ;
1196+
1197+ const result = await crossCollateralWarpCore . getTransferRemoteTxs ( {
1198+ originTokenAmount : sealevelCrossCollateral . amount ( TRANSFER_AMOUNT ) ,
1199+ destination : test2 . name ,
1200+ sender : MOCK_ADDRESS ,
1201+ recipient : MOCK_ADDRESS ,
1202+ destinationToken : evmCrossCollateral ,
1203+ } ) ;
1204+
1205+ expect ( result ) . to . have . length ( 1 ) ;
1206+ expect ( result [ 0 ] . category ) . to . equal ( WarpTxCategory . Transfer ) ;
1207+ sinon . assert . calledOnce ( populateTransferRemoteToTx ) ;
1208+ sinon . assert . notCalled ( populateTransferRemoteTx ) ;
1209+ } finally {
1210+ originAdapterStub . restore ( ) ;
1211+ }
1212+ } ) ;
1213+
11471214 it ( 'Converts destination minimum transfer amount into origin decimals correctly' , async ( ) => {
11481215 const destinationAdapterStub = sinon
11491216 . stub ( sealevelHypSynthetic , 'getAdapter' )
0 commit comments