@@ -257,6 +257,37 @@ func TestFetchReceiptTokenTransfers(t *testing.T) {
257257 require .Equal (t , 2 , len (uniswapBalances ))
258258 })
259259
260+ // This is a similar as case 4 with the fix applied to Trails sweep
261+ // https://arbiscan.io/tx/0x6e06f9053b3ecad8372716f1a1f0b3c1dcd773542ac9d37ea371dac014782e1c
262+ t .Run ("Case 4b: Trails swap intent call" , func (t * testing.T ) {
263+ provider , err := ethrpc .NewProvider ("https://nodes.sequence.app/arbitrum" )
264+ require .NoError (t , err )
265+
266+ txnHash := common .HexToHash ("0x6e06f9053b3ecad8372716f1a1f0b3c1dcd773542ac9d37ea371dac014782e1c" )
267+ receipt , transfers , err := receipts .FetchReceiptTokenTransfers (context .Background (), provider , txnHash )
268+ require .NoError (t , err )
269+ require .NotNil (t , receipt )
270+ require .Greater (t , len (transfers ), 0 )
271+ require .Equal (t , 36 , len (receipt .Logs ))
272+
273+ // Trails intent
274+ require .Equal (t , 13 , len (transfers ))
275+ // spew.Dump(transfers)
276+
277+ // Get the balance outputs from the transfer logs
278+ balances := transfers .ComputeBalanceOutputs () //.OmitZeroBalances()
279+ require .NotNil (t , balances )
280+ // require.Equal(t, 15, len(balances))
281+ // spew.Dump(balances)
282+
283+ trailsRouter := common .HexToAddress ("0xF8A739B9F24E297a98b7aba7A9cdFDBD457F6fF8" )
284+ usdc := common .HexToAddress ("0xaf88d065e77c8cC2239327C5EDb3A432268e5831" )
285+
286+ require .Equal (t , usdc , balances [6 ].Token )
287+ require .Equal (t , trailsRouter , balances [6 ].Account )
288+ require .Equal (t , makeBigInt (t , "0" ), balances [6 ].Balance )
289+ })
290+
260291 // Case 5: vault bridge USDC .. lets check the token transfer event, prob just erc20 too
261292 // https://katanascan.com/tx/0x7bcd0068a5c3352cf4e1d75c7c4f78d99f02b8b2f5f96b2c407972f43e724f52
262293 t .Run ("Case 5: Vault bridge USDC transfer" , func (t * testing.T ) {
0 commit comments