* OPC fees
This commit is contained in:
Alex Coseru 2022-02-18 17:38:51 +02:00 committed by GitHub
parent 772b723d8a
commit cb16470c9a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 85 additions and 3 deletions

View File

@ -470,6 +470,17 @@ type GlobalStatistic @entity {
dispenserCount: Int!
}
type OPC @entity {
id: ID!
"fee in percent for swaps involving OPC approved tokens"
swapOceanFee: BigDecimal
"fee in percent for swaps involving non OPC approved tokens"
swapNonOceanFee: BigDecimal
"fee in percent taken by OPC from consumeFees"
consumeFee: BigDecimal
"fee in percent taken by OPC from providerFees"
providerFee: BigDecimal
}
enum NftUpdateType {
METADATA_CREATED,

View File

@ -1,7 +1,14 @@
import { NewPool } from '../@types/FactoryRouter/FactoryRouter'
import {
NewPool,
TokenAdded,
OPCFeeChanged,
FactoryRouter
} from '../@types/FactoryRouter/FactoryRouter'
import { BigInt } from '@graphprotocol/graph-ts'
import { Pool } from '../@types/schema'
import { BPool } from '../@types/templates'
import { addPool } from './utils/globalUtils'
import { addPool, getOPC } from './utils/globalUtils'
import { weiToDecimal } from './utils/generic'
export function handleNewPool(event: NewPool): void {
BPool.create(event.params.poolAddress)
@ -9,3 +16,51 @@ export function handleNewPool(event: NewPool): void {
pool.save()
addPool()
}
export function handleOPCFeeChanged(event: OPCFeeChanged): void {
const opc = getOPC()
const decimals = BigInt.fromI32(18).toI32()
opc.swapOceanFee = weiToDecimal(
event.params.newSwapOceanFee.toBigDecimal(),
decimals
)
opc.swapNonOceanFee = weiToDecimal(
event.params.newSwapNonOceanFee.toBigDecimal(),
decimals
)
opc.consumeFee = weiToDecimal(
event.params.newConsumeFee.toBigDecimal(),
decimals
)
opc.providerFee = weiToDecimal(
event.params.newProviderFee.toBigDecimal(),
decimals
)
opc.save()
}
export function handleTokenAdded(event: TokenAdded): void {
const contract = FactoryRouter.bind(event.address)
const oceanFees = contract.try_getOPCFees()
if (oceanFees.reverted) return
const opc = getOPC()
const decimals = BigInt.fromI32(18).toI32()
opc.swapOceanFee = weiToDecimal(
oceanFees.value.value0.toBigDecimal(),
decimals
)
opc.swapNonOceanFee = weiToDecimal(
oceanFees.value.value1.toBigDecimal(),
decimals
)
const newConsumeFee = contract.try_getOPCConsumeFee()
if (newConsumeFee.reverted) return
const newProviderFee = contract.try_getOPCProviderFee()
if (newProviderFee.reverted) return
opc.consumeFee = weiToDecimal(newConsumeFee.value.toBigDecimal(), decimals)
opc.providerFee = weiToDecimal(newProviderFee.value.toBigDecimal(), decimals)
opc.save()
}

View File

@ -3,7 +3,8 @@ import {
GlobalStatistic,
GlobalTotalFixedSwapPair,
GlobalTotalLiquidityPair,
GlobalTotalPoolSwapPair
GlobalTotalPoolSwapPair,
OPC
} from '../../@types/schema'
const GLOBAL_ID = '1'
@ -16,6 +17,16 @@ export function getGlobalStats(): GlobalStatistic {
}
return globalStats
}
export function getOPC(): OPC {
let globalStats = OPC.load(GLOBAL_ID)
if (!globalStats) {
globalStats = new OPC(GLOBAL_ID)
globalStats.save()
}
return globalStats
}
export function addOrder(): void {
const globalStats = getGlobalStats()
globalStats.orderCount = globalStats.orderCount + 1

View File

@ -119,6 +119,11 @@ dataSources:
eventHandlers:
- event: NewPool(indexed address,bool)
handler: handleNewPool
- event: TokenAdded(indexed address,indexed address)
handler: handleTokenAdded
- event: OPCFeeChanged(indexed address,uint256,uint256,uint256,uint256)
handler: handleOPCFeeChanged
templates:
- name: ERC20Template