diff --git a/schema.graphql b/schema.graphql index c0ba684..2988cec 100644 --- a/schema.graphql +++ b/schema.graphql @@ -257,6 +257,9 @@ type FixedRateExchangeSwap @entity { block: Int! createdTimestamp: Int! tx: String! + oceanFeeAmount: BigDecimal! + marketFeeAmount: BigDecimal! + consumeMarketFeeAmount: BigDecimal! } diff --git a/src/mappings/fixedRateExchange.ts b/src/mappings/fixedRateExchange.ts index 36e1247..50725b5 100644 --- a/src/mappings/fixedRateExchange.ts +++ b/src/mappings/fixedRateExchange.ts @@ -191,6 +191,20 @@ export function handleSwap(event: Swapped): void { BigInt.fromI32(18).toI32() ) + // Track fees + swap.oceanFeeAmount = weiToDecimal( + event.params.oceanFeeAmount.toBigDecimal(), + BigInt.fromI32(baseToken.decimals).toI32() + ) + swap.marketFeeAmount = weiToDecimal( + event.params.marketFeeAmount.toBigDecimal(), + BigInt.fromI32(baseToken.decimals).toI32() + ) + swap.consumeMarketFeeAmount = weiToDecimal( + event.params.consumeMarketFeeAmount.toBigDecimal(), + BigInt.fromI32(baseToken.decimals).toI32() + ) + swap.save() updateFixedRateExchangeSupply(event.params.exchangeId, event.address) diff --git a/test/integration/FixedRateExchange.test.ts b/test/integration/FixedRateExchange.test.ts index 7b8e8e7..278f4cd 100644 --- a/test/integration/FixedRateExchange.test.ts +++ b/test/integration/FixedRateExchange.test.ts @@ -584,6 +584,9 @@ describe('Fixed Rate Exchange tests', async () => { block createdTimestamp tx + oceanFeeAmount + marketFeeAmount + consumeMarketFeeAmount __typename } }}` @@ -626,6 +629,17 @@ describe('Fixed Rate Exchange tests', async () => { const tx = ( await fixedRate.buyDatatokens(user1, exchangeId, dtAmount, '100') ).events?.Swapped + + const oceanFeeAmount = web3.utils.fromWei( + new BN(tx.returnValues.oceanFeeAmount) + ) + const marketFeeAmount = web3.utils.fromWei( + new BN(tx.returnValues.marketFeeAmount) + ) + const consumeMarketFeeAmount = web3.utils.fromWei( + new BN(tx.returnValues.consumeMarketFeeAmount) + ) + await sleep(sleepMs) user1Balance = await datatoken.balance(datatokenAddress, user1) // user1 has 1 datatoken @@ -648,6 +662,12 @@ describe('Fixed Rate Exchange tests', async () => { assert(swaps.block === tx.blockNumber, 'incorrect value for: block') assert(swaps.createdTimestamp >= time, 'incorrect: createdTimestamp') assert(swaps.createdTimestamp < time + 25, 'incorrect: createdTimestamp 2') + assert(swaps.oceanFeeAmount === oceanFeeAmount, 'incorrect: oceanFeeAmount') + assert(swaps.marketFeeAmount === marketFeeAmount, 'wrong marketFeeAmount') + assert( + swaps.consumeMarketFeeAmount === consumeMarketFeeAmount, + 'wrong consumeMarketFeeAmount' + ) assert(swaps.tx === tx.transactionHash, 'incorrect value for: tx') assert(swaps.__typename === 'FixedRateExchangeSwap', 'incorrect __typename') }) @@ -655,6 +675,9 @@ describe('Fixed Rate Exchange tests', async () => { await datatoken.approve(datatokenAddress, fixedRateAddress, dtAmount, user1) const tx = (await fixedRate.sellDatatokens(user1, exchangeId, '10', '9')) .events?.Swapped + const oceanFeeAmount = web3.utils.fromWei( + new BN(tx.returnValues.oceanFeeAmount) + ) assert(tx != null) await sleep(sleepMs) const swapsQuery = { @@ -668,6 +691,7 @@ describe('Fixed Rate Exchange tests', async () => { block createdTimestamp tx + oceanFeeAmount __typename } }}` @@ -689,6 +713,7 @@ describe('Fixed Rate Exchange tests', async () => { assert(swaps.block === tx.blockNumber, 'incorrect value for: block') assert(swaps.createdTimestamp >= time, 'incorrect: createdTimestamp') assert(swaps.createdTimestamp < time + 25, 'incorrect: createdTimestamp 2') + assert(swaps.oceanFeeAmount === oceanFeeAmount, 'incorrect: oceanFeeAmount') assert(swaps.tx === tx.transactionHash, 'incorrect value for: tx') assert(swaps.__typename === 'FixedRateExchangeSwap', 'incorrect __typename') })