1- import { TENDERLY_API_URL , ETH_NULL_ADDRESS , APP_NAME } from 'const'
1+ import { APP_NAME , NATIVE_TOKEN_ADDRESS_LOWERCASE , TENDERLY_API_URL } from 'const'
22import { Network } from 'types'
33import { fetchQuery } from 'api/baseApi'
44import {
55 Account ,
66 Contract ,
7- Trace ,
8- PublicTrade as Trade ,
9- Transfer ,
10- TypeOfTrace ,
117 IndexTradeInput ,
128 IndexTransferInput ,
9+ PublicTrade as Trade ,
10+ Trace ,
11+ Transfer ,
1312 TxTradesAndTransfers ,
13+ TypeOfTrace ,
1414} from './types'
1515import { abbreviateString } from 'utils'
1616import { SPECIAL_ADDRESSES } from 'apps/explorer/const'
@@ -58,13 +58,21 @@ function _fetchTradesAccounts(networkId: Network, txHash: string): Promise<Contr
5858 return fetchQuery < Array < Contract > > ( { get : ( ) => _get ( networkId , queryString ) } , queryString )
5959}
6060
61+ export async function getTransactionTrace ( networkId : Network , txHash : string ) : Promise < Trace > {
62+ return _fetchTrace ( networkId , txHash )
63+ }
64+
65+ export async function getTransactionContracts ( networkId : Network , txHash : string ) : Promise < Contract [ ] > {
66+ return _fetchTradesAccounts ( networkId , txHash )
67+ }
68+
6169export async function getTradesAndTransfers ( networkId : Network , txHash : string ) : Promise < TxTradesAndTransfers > {
6270 const trace = await _fetchTrace ( networkId , txHash )
6371
64- return traceToTransfersTrades ( trace )
72+ return traceToTransfersAndTrades ( trace )
6573}
6674
67- export function traceToTransfersTrades ( trace : Trace ) : TxTradesAndTransfers {
75+ export function traceToTransfersAndTrades ( trace : Trace ) : TxTradesAndTransfers {
6876 const transfers : Array < Transfer > = [ ]
6977 const trades : Array < Trade > = [ ]
7078
@@ -90,15 +98,24 @@ export function traceToTransfersTrades(trace: Trace): TxTradesAndTransfers {
9098 feeAmount : log . inputs [ IndexTradeInput . feeAmount ] . value ,
9199 orderUid : log . inputs [ IndexTradeInput . orderUid ] . value ,
92100 }
93- if ( trade . buyToken === ETH_NULL_ADDRESS ) {
101+ if ( trade . buyToken === NATIVE_TOKEN_ADDRESS_LOWERCASE ) {
94102 //ETH transfers are not captured by ERC20 events, so we need to manually add them to the Transfer list
95103 transfers . push ( {
96- token : ETH_NULL_ADDRESS ,
104+ token : NATIVE_TOKEN_ADDRESS_LOWERCASE ,
97105 from : log . raw . address ,
98106 to : trade . owner ,
99107 value : trade . buyAmount ,
100108 isInternal : log . raw . address === trade . owner ,
101109 } )
110+ } else if ( trade . sellToken === NATIVE_TOKEN_ADDRESS_LOWERCASE ) {
111+ //ETH transfers are not captured by ERC20 events, so we need to manually add them to the Transfer list
112+ transfers . push ( {
113+ token : NATIVE_TOKEN_ADDRESS_LOWERCASE ,
114+ from : trade . owner ,
115+ to : log . raw . address ,
116+ value : trade . sellAmount ,
117+ isInternal : log . raw . address === trade . owner ,
118+ } )
102119 }
103120 trades . push ( trade )
104121 }
0 commit comments