From 2003cfda61cdc7104f0906b64dad5752578f919f Mon Sep 17 00:00:00 2001 From: Amrit Jain Date: Wed, 6 Sep 2023 16:09:43 +0530 Subject: [PATCH] feat: fix lint issues,premium,collateralIn/Out,etc --- deployment/deployment.json | 24 +- subgraphs/kwenta/README.md | 4 + .../kwenta-optimism/configurations.json | 1 - .../config/templates/kwenta.template.yaml | 129 +---------- subgraphs/kwenta/src/mappings/handlers.ts | 205 ++++-------------- subgraphs/kwenta/src/mappings/helpers.ts | 100 ++++++++- .../kwenta/src/prices/config/arbitrum.ts | 1 + subgraphs/kwenta/src/prices/config/aurora.ts | 1 + .../kwenta/src/prices/config/avalanche.ts | 1 + subgraphs/kwenta/src/prices/config/bsc.ts | 1 + subgraphs/kwenta/src/prices/config/celo.ts | 1 + subgraphs/kwenta/src/prices/config/cronos.ts | 1 + subgraphs/kwenta/src/prices/config/fantom.ts | 1 + subgraphs/kwenta/src/prices/config/fuse.ts | 1 + subgraphs/kwenta/src/prices/config/gnosis.ts | 1 + subgraphs/kwenta/src/prices/config/harmony.ts | 1 + subgraphs/kwenta/src/prices/config/mainnet.ts | 1 + .../kwenta/src/prices/config/moonbeam.ts | 1 + .../kwenta/src/prices/config/optimism.ts | 1 + subgraphs/kwenta/src/prices/config/polygon.ts | 1 + .../kwenta/src/prices/config/template.ts | 1 + .../kwenta/src/prices/routers/CurveRouter.ts | 1 + .../src/prices/routers/UniswapForksRouter.ts | 1 + .../src/sdk/protocols/perpfutures/position.ts | 12 +- 24 files changed, 168 insertions(+), 324 deletions(-) diff --git a/deployment/deployment.json b/deployment/deployment.json index 5fc63f7c76..15b0fa6d65 100644 --- a/deployment/deployment.json +++ b/deployment/deployment.json @@ -459,28 +459,6 @@ } } }, - "aave-v3-metis": { - "network": "metis", - "status": "dev", - "versions": { - "schema": "3.0.1", - "subgraph": "2.0.2", - "methodology": "1.1.0" - }, - "files": { - "template": "aave.v3.template.yaml" - }, - "options": { - "prepare:yaml": true, - "prepare:constants": false - }, - "services": { - "hosted-service": { - "slug": "aave-v3-metis", - "query-id": "aave-v3-metis" - } - } - }, "aave-v3-ethereum": { "network": "ethereum", "status": "prod", @@ -8825,7 +8803,7 @@ "network": "optimism", "status": "dev", "versions": { - "schema": "1.2.1", + "schema": "1.3.3", "subgraph": "1.0.0", "methodology": "1.0.0" }, diff --git a/subgraphs/kwenta/README.md b/subgraphs/kwenta/README.md index 37c8302bec..ad97f45bba 100644 --- a/subgraphs/kwenta/README.md +++ b/subgraphs/kwenta/README.md @@ -59,3 +59,7 @@ Total Revenue = Total Fees - Other official and unofficial data sources: https://kwenta.eth.limo/stats/, https://tokenterminal.com/terminal/projects/kwenta - Documentation: https://docs.kwenta.io/ + +## Note + +We are only tracking v2 markets because v1 markets are deprecated and have almost no liquidity, and the current method to calculate open interest is not supported by v1 markets diff --git a/subgraphs/kwenta/protocols/kwenta/config/deployments/kwenta-optimism/configurations.json b/subgraphs/kwenta/protocols/kwenta/config/deployments/kwenta-optimism/configurations.json index a6a9ddbdd6..a32a9bec4a 100644 --- a/subgraphs/kwenta/protocols/kwenta/config/deployments/kwenta-optimism/configurations.json +++ b/subgraphs/kwenta/protocols/kwenta/config/deployments/kwenta-optimism/configurations.json @@ -1,7 +1,6 @@ { "deployment": "KWENTA_OPTIMISM", "network": "optimism", - "marketManagerV1": [], "marketManagerV2": [ { "name": "FuturesMarketManager2", diff --git a/subgraphs/kwenta/protocols/kwenta/config/templates/kwenta.template.yaml b/subgraphs/kwenta/protocols/kwenta/config/templates/kwenta.template.yaml index 5d3572ece3..1d25793110 100644 --- a/subgraphs/kwenta/protocols/kwenta/config/templates/kwenta.template.yaml +++ b/subgraphs/kwenta/protocols/kwenta/config/templates/kwenta.template.yaml @@ -10,64 +10,6 @@ graft: block: {{graftStartBlock}} # Block number {{/graftEnabled}} dataSources: - {{#marketManagerV1}} - - kind: ethereum/contract - name: {{ name }} - network: {{ network }} - source: - address: "{{ address }}" - abi: FuturesMarketManager - startBlock: {{ startBlock }} - mapping: - kind: ethereum/events - apiVersion: 0.0.7 - language: wasm/assemblyscript - entities: - - DerivPerpProtocol - abis: - - name: FuturesMarket - file: ./abis/kwenta/FuturesMarket.json - - name: FuturesMarketManager - file: ./abis/kwenta/FuturesMarketManager.json - - - ########################################### - ############## Price Oracle ############### - ########################################### - # ERC20 - - name: _ERC20 - file: ./abis/Prices/ERC20.json - # Curve Contracts - - name: CurvePool - file: ./abis/Prices/Curve/Pool.json - - name: CurveRegistry - file: ./abis/Prices/Curve/Registry.json - - name: CalculationsCurve - file: ./abis/Prices/Calculations/Curve.json - # YearnLens Contracts - - name: YearnLensContract - file: ./abis/Prices/YearnLens.json - # Aave Oracle Contract - - name: AaveOracleContract - file: ./abis/Prices/AaveOracle.json - # SushiSwap Contracts - - name: CalculationsSushiSwap - file: ./abis/Prices/Calculations/SushiSwap.json - # ChainLink Contracts - - name: ChainLinkContract - file: ./abis/Prices/ChainLink.json - # Uniswap Contracts - - name: UniswapRouter - file: ./abis/Prices/Uniswap/Router.json - - name: UniswapFactory - file: ./abis/Prices/Uniswap/Factory.json - - name: UniswapPair - file: ./abis/Prices/Uniswap/Pair.json - eventHandlers: - - event: 'MarketAdded(address,indexed bytes32,indexed bytes32)' - handler: 'handleV1MarketAdded' - file: ./src/mappings/handlers.ts - {{/marketManagerV1}} {{#marketManagerV2}} - kind: ethereum/contract name: {{ name }} @@ -123,7 +65,7 @@ dataSources: file: ./abis/Prices/Uniswap/Pair.json eventHandlers: - event: 'MarketAdded(address,indexed bytes32,indexed bytes32)' - handler: 'handleV2MarketAdded' + handler: 'handleMarketAdded' file: ./src/mappings/handlers.ts {{/marketManagerV2}} {{#smartMarginFactory}} @@ -151,67 +93,6 @@ dataSources: templates: - - kind: ethereum/contract - name: FuturesV1Market - network: {{ network }} - source: - abi: FuturesMarket - mapping: - kind: ethereum/events - apiVersion: 0.0.7 - language: wasm/assemblyscript - entities: - - LiquidityPool - abis: - - name: FuturesMarket - file: ./abis/kwenta/FuturesMarket.json - - - - ########################################### - ############## Price Oracle ############### - ########################################### - # ERC20 - - name: _ERC20 - file: ./abis/Prices/ERC20.json - # Curve Contracts - - name: CurvePool - file: ./abis/Prices/Curve/Pool.json - - name: CurveRegistry - file: ./abis/Prices/Curve/Registry.json - - name: CalculationsCurve - file: ./abis/Prices/Calculations/Curve.json - # YearnLens Contracts - - name: YearnLensContract - file: ./abis/Prices/YearnLens.json - # Aave Oracle Contract - - name: AaveOracleContract - file: ./abis/Prices/AaveOracle.json - # SushiSwap Contracts - - name: CalculationsSushiSwap - file: ./abis/Prices/Calculations/SushiSwap.json - # ChainLink Contracts - - name: ChainLinkContract - file: ./abis/Prices/ChainLink.json - # Uniswap Contracts - - name: UniswapRouter - file: ./abis/Prices/Uniswap/Router.json - - name: UniswapFactory - file: ./abis/Prices/Uniswap/Factory.json - - name: UniswapPair - file: ./abis/Prices/Uniswap/Pair.json - eventHandlers: - - event: 'MarginTransferred(indexed address,int256)' - handler: 'handleMarginTransferred' - - event: 'PositionModified(indexed uint256,indexed address,uint256,int256,int256,uint256,uint256,uint256)' - handler: 'handlePositionModified' - - event: 'PositionLiquidated(indexed uint256,indexed address,indexed address,int256,uint256,uint256)' - handler: 'handlePositionLiquidated' - - event: 'FundingRecomputed(int256,uint256,uint256)' - handler: 'handleFundingRecomputed' - # - event: 'ParameterUpdated(bytes32,bytes32,uint256)' - # handler: handleParameterUpdated - file: ./src/mappings/handlers.ts - kind: ethereum/contract name: PerpsV2Market network: {{ network }} @@ -262,14 +143,10 @@ templates: eventHandlers: - event: 'MarginTransferred(indexed address,int256)' handler: 'handleMarginTransferred' - - event: 'PositionModified(indexed uint256,indexed address,uint256,int256,int256,uint256,uint256,uint256)' - handler: 'handlePositionModified' - event: 'PositionModified(indexed uint256,indexed address,uint256,int256,int256,uint256,uint256,uint256,int256)' - handler: 'handlePositionModifiedV2' - - event: 'PositionLiquidated(uint256,address,address,int256,uint256,uint256)' - handler: 'handlePositionLiquidated' + handler: 'handlePositionModified' - event: 'PositionLiquidated(uint256,address,address,int256,uint256,uint256,uint256,uint256)' - handler: 'handlePositionLiquidatedV2' + handler: 'handlePositionLiquidated' - event: 'FundingRecomputed(int256,int256,uint256,uint256)' handler: 'handleFundingRecomputed' file: ./src/mappings/handlers.ts \ No newline at end of file diff --git a/subgraphs/kwenta/src/mappings/handlers.ts b/subgraphs/kwenta/src/mappings/handlers.ts index 73b684e38e..37e57e37d7 100644 --- a/subgraphs/kwenta/src/mappings/handlers.ts +++ b/subgraphs/kwenta/src/mappings/handlers.ts @@ -28,27 +28,27 @@ import { PositionSide, BIGINT_ZERO, BIGINT_TEN_TO_EIGHTEENTH, - LiquidityPoolFeeType, } from "../sdk/util/constants"; import { MarketAdded as MarketAddedEvent } from "../../generated/FuturesMarketManager2/FuturesMarketManager"; import { - FundingRecomputed as FundingRecomputedEvent, + PositionLiquidated1 as PositionLiquidatedEvent, + PositionModified1 as PositionModifiedEvent, MarginTransferred as MarginTransferredEvent, - PositionLiquidated as PositionLiquidatedEvent, - PositionModified as PositionModifiedEvent, -} from "../../generated/templates/FuturesV1Market/FuturesMarket"; -import { - PerpsV2MarketProxyable, - PositionLiquidated1 as PositionLiquidatedV2Event, - PositionModified1 as PositionModifiedV2Event, + FundingRecomputed as FundingRecomputedEvent, } from "../../generated/templates/PerpsV2Market/PerpsV2MarketProxyable"; -import { FuturesV1Market, PerpsV2Market } from "../../generated/templates"; -import { createTokenAmountArray, getFundingRateId } from "./helpers"; +import { PerpsV2Market } from "../../generated/templates"; +import { + createTokenAmountArray, + getFundingRateId, + updateOpenInterest, + liquidation, +} from "./helpers"; import { NewAccount as NewSmartMarginAccountEvent } from "../../generated/SmartMarginFactory1/SmartMarginFactory"; -import { Pool } from "../sdk/protocols/perpfutures/pool"; +import { TransactionType } from "../sdk/protocols/perpfutures/enums"; class Pricer implements TokenPricer { getTokenPrice(token: Token, block: ethereum.Block): BigDecimal { + log.info("Block: {}", [block.number.toString()]); const price = getUsdPricePerToken(Address.fromBytes(token.id)); return price.usdPrice; } @@ -58,6 +58,7 @@ class Pricer implements TokenPricer { amount: BigInt, block: ethereum.Block ): BigDecimal { + log.info("Block: {}", [block.number.toString()]); const _amount = bigIntToBigDecimal(amount, token.decimals); return getUsdPrice(Address.fromBytes(token.id), _amount); } @@ -86,40 +87,10 @@ const conf = new ProtocolConfig( ); /* - This function is called when a new v1 market added - We just checks if it is a v1 market, and then stores it -*/ -export function handleV1MarketAdded(event: MarketAddedEvent): void { - const marketKey = event.params.marketKey.toString(); - const sdk = SDK.initializeFromEvent( - conf, - new Pricer(), - new TokenInit(), - event - ); - - // check that it's a v1 market before adding - if (marketKey.startsWith("s") && !marketKey.endsWith("PERP")) { - log.info("New V1 market added: {}", [marketKey]); - - const pool = sdk.Pools.loadPool(event.params.market); - if (!pool.isInitialized) { - const token = sdk.Tokens.getOrCreateToken( - NetworkConfigs.getSUSDAddress() - ); - pool.initialize(marketKey, marketKey, [token], null, "chainlink"); - } - - // futures v1 market - FuturesV1Market.create(event.params.market); - } -} - -/* - This function is called when a new v2 market added - We just checks if it is a v2 market, and then stores it + This function is called when a new market added + We just checks if it is a market, and then stores it */ -export function handleV2MarketAdded(event: MarketAddedEvent): void { +export function handleMarketAdded(event: MarketAddedEvent): void { const marketKey = event.params.marketKey.toString(); const sdk = SDK.initializeFromEvent( conf, @@ -130,7 +101,7 @@ export function handleV2MarketAdded(event: MarketAddedEvent): void { // check that it's a v1 market before adding if (marketKey.endsWith("PERP")) { - log.info("New V2 market added: {}", [marketKey]); + log.info("New market added: {}", [marketKey]); const pool = sdk.Pools.loadPool(event.params.market); if (!pool.isInitialized) { @@ -138,9 +109,6 @@ export function handleV2MarketAdded(event: MarketAddedEvent): void { NetworkConfigs.getSUSDAddress() ); pool.initialize(marketKey, marketKey, [token], null, "chainlink"); - - // keeper dynamic fees - pool.setPoolFee(LiquidityPoolFeeType.DYNAMIC_LP_FEE, null); } // perps v2 market @@ -216,8 +184,6 @@ export function handleMarginTransferred(event: MarginTransferredEvent): void { if (marginDelta.lt(BIGINT_ZERO)) { account.withdraw(pool, amounts, BIGINT_ZERO); - pool.addOutflowVolumeByToken(token, marginDelta.abs()); - pool.addInputTokenBalances( amounts.map((amount) => amount.times(BIGINT_MINUS_ONE)) ); @@ -305,6 +271,8 @@ export function handlePositionModified(event: PositionModifiedEvent): void { const oldPositionSize = position.getSize(); const oldPositionPrice = position.getPrice(); + const margin = event.params.margin; + const amounts = createTokenAmountArray(pool, [token], [margin]); let fundingAccrued = BIGINT_ZERO; let currentFundingRate = BIGINT_ZERO; @@ -338,24 +306,35 @@ export function handlePositionModified(event: PositionModifiedEvent): void { .plus(fundingAccrued) .minus(fees); - const totalMarginRemaining = event.params.margin; - position.setBalanceClosed(token, totalMarginRemaining); - position.setCollateralBalanceClosed(token, totalMarginRemaining); + account.collateralOut(pool, position.getBytesID(), amounts, BIGINT_ZERO); + + position.setBalanceClosed(token, margin); + position.setCollateralBalanceClosed(token, margin); position.setRealisedPnlUsdClosed(bigIntToBigDecimal(pnl)); position.setFundingrateClosed(bigIntToBigDecimal(currentFundingRate)); + position.addCollateralOutCount(); position.closePosition(); + + pool.addPremiumByToken(token, fees, TransactionType.COLLATERAL_OUT); + pool.addOutflowVolumeByToken(token, margin); } else { const totalMarginRemaining = event.params.margin; const positionTotalPrice = event.params.lastPrice.times(newPositionSize); const leverage = positionTotalPrice.div(totalMarginRemaining); + account.collateralIn(pool, position.getBytesID(), amounts, BIGINT_ZERO); + position.setBalance(token, totalMarginRemaining); position.setCollateralBalance(token, totalMarginRemaining); position.setPrice(event.params.lastPrice); position.setSize(event.params.size); position.setFundingIndex(event.params.fundingIndex); position.setLeverage(bigIntToBigDecimal(leverage)); + position.addCollateralInCount(); + + pool.addPremiumByToken(token, fees, TransactionType.COLLATERAL_IN); + pool.addInflowVolumeByToken(token, margin); } const volume = event.params.lastPrice .times(newPositionSize) @@ -367,125 +346,25 @@ export function handlePositionModified(event: PositionModifiedEvent): void { pool.addRevenueByToken(token, BIGINT_ZERO, fees, BIGINT_ZERO); } -/* - This function is fired when a position is modified in v2 markets, - everything else similar to v1 market position modified event -*/ -export function handlePositionModifiedV2(event: PositionModifiedV2Event): void { - const v1Params = event.parameters.filter((value) => { - return value.name !== "skew"; - }); - - const v1Event = new PositionModifiedEvent( - event.address, - event.logIndex, - event.transactionLogIndex, - event.logType, - event.block, - event.transaction, - v1Params, - event.receipt - ); - handlePositionModified(v1Event); -} - /* - This function is fired when a position is liquidated in v1 market + This function is fired when a position is liquidated */ export function handlePositionLiquidated(event: PositionLiquidatedEvent): void { - liquidation( - event, - event.params.account, - event.params.liquidator, - event.params.fee - ); -} - -/* - This function is fired when a position is liquidated in v2 market -*/ -export function handlePositionLiquidatedV2( - event: PositionLiquidatedV2Event -): void { const totalFee = event.params.flaggerFee .plus(event.params.liquidatorFee) .plus(event.params.stakersFee); - - liquidation(event, event.params.account, event.params.liquidator, totalFee); -} - -// common liquidation logic -function liquidation( - event: ethereum.Event, - sendingAccount: Address, - liquidator: Address, - totalFees: BigInt -): void { const sdk = SDK.initializeFromEvent( conf, new Pricer(), new TokenInit(), event ); - const pool = sdk.Pools.loadPool(dataSource.address()); - const smartMarginAccount = _SmartMarginAccount.load(sendingAccount.toHex()); - const accountAddress = smartMarginAccount - ? Address.fromBytes(smartMarginAccount.owner) - : sendingAccount; - - const loadAccountResponse = sdk.Accounts.loadAccount(accountAddress); - const account = loadAccountResponse.account; - if (loadAccountResponse.isNewUser) { - const protocol = sdk.Protocol; - protocol.addUser(); - pool.addUser(); - } - const token = sdk.Tokens.getOrCreateToken(NetworkConfigs.getSUSDAddress()); - - const position = sdk.Positions.loadLastPosition(pool, account, token, token); - if (position != null) { - const pnl = position - .getRealisedPnlUsd() - .minus(bigIntToBigDecimal(totalFees)); - account.liquidate( - pool, - Address.fromBytes(token.id), - Address.fromBytes(token.id), - position.position.collateralBalance, - liquidator, - accountAddress, - position.getBytesID(), - pnl - ); - position.addLiquidationCount(); - position.setBalanceClosed(token, BIGINT_ZERO); - position.setCollateralBalanceClosed(token, BIGINT_ZERO); - position.setRealisedPnlUsdClosed(pnl); - position.closePosition(); - } -} - -function updateOpenInterest( - marketAddress: Address, - pool: Pool, - lastPrice: BigInt -): void { - const contract = PerpsV2MarketProxyable.bind(marketAddress); - const marketSizeCall = contract.try_marketSize(); - const marketSkewCall = contract.try_marketSkew(); - let marketSize = BIGINT_ZERO; - let marketSkew = BIGINT_ZERO; - if (!marketSizeCall.reverted && !marketSkewCall.reverted) { - marketSize = marketSizeCall.value; - marketSkew = marketSkewCall.value; - } - - const shortOpenInterstAmount = marketSize - .minus(marketSkew) - .div(BigInt.fromI32(2)); - const longOpenInterstAmount = marketSize - .plus(marketSkew) - .div(BigInt.fromI32(2)); - pool.setLongOpenInterest(longOpenInterstAmount, lastPrice); - pool.setShortOpenInterest(shortOpenInterstAmount, lastPrice); + liquidation( + event, + event.params.account, + event.params.liquidator, + totalFee, + event.params.stakersFee, + sdk + ); } diff --git a/subgraphs/kwenta/src/mappings/helpers.ts b/subgraphs/kwenta/src/mappings/helpers.ts index a2de6688af..b36f09c09b 100644 --- a/subgraphs/kwenta/src/mappings/helpers.ts +++ b/subgraphs/kwenta/src/mappings/helpers.ts @@ -1,9 +1,23 @@ -import { BigInt, Bytes } from "@graphprotocol/graph-ts"; +import { + Address, + BigInt, + Bytes, + dataSource, + ethereum, +} from "@graphprotocol/graph-ts"; import { Pool } from "../sdk/protocols/perpfutures/pool"; import { BIGINT_ZERO } from "../sdk/util/constants"; -import { Token } from "../../generated/schema"; +import { + Token, + _FundingRate, + _SmartMarginAccount, +} from "../../generated/schema"; +import { SDK } from "../sdk/protocols/perpfutures"; +import { NetworkConfigs } from "../../configurations/configure"; +import { bigIntToBigDecimal } from "../sdk/util/numbers"; +import { PerpsV2MarketProxyable } from "../../generated/templates/PerpsV2Market/PerpsV2MarketProxyable"; export function createTokenAmountArray( pool: Pool, @@ -32,3 +46,85 @@ export function getFundingRateId(pool: Pool, fundingIndex: BigInt): Bytes { .concat(Bytes.fromUTF8("-")) .concat(Bytes.fromByteArray(Bytes.fromBigInt(fundingIndex))); } + +export function liquidation( + event: ethereum.Event, + sendingAccount: Address, + liquidator: Address, + totalFees: BigInt, + stakerFees: BigInt, + sdk: SDK +): void { + const pool = sdk.Pools.loadPool(dataSource.address()); + const smartMarginAccount = _SmartMarginAccount.load(sendingAccount.toHex()); + const accountAddress = smartMarginAccount + ? Address.fromBytes(smartMarginAccount.owner) + : sendingAccount; + + const loadAccountResponse = sdk.Accounts.loadAccount(accountAddress); + const account = loadAccountResponse.account; + if (loadAccountResponse.isNewUser) { + const protocol = sdk.Protocol; + protocol.addUser(); + pool.addUser(); + } + const token = sdk.Tokens.getOrCreateToken(NetworkConfigs.getSUSDAddress()); + + const position = sdk.Positions.loadLastPosition(pool, account); + if (position != null) { + let fundingRate = BIGINT_ZERO; + + const positionFunding = _FundingRate.load( + getFundingRateId(pool, position.getFundingIndex()) + ); + if (positionFunding != null) { + fundingRate = positionFunding.funding; + } + const pnl = position + .getRealisedPnlUsd() + .minus(bigIntToBigDecimal(totalFees)); + account.liquidate( + pool, + Address.fromBytes(token.id), + Address.fromBytes(token.id), + position.position.collateralBalance, + liquidator, + accountAddress, + position.getBytesID(), + pnl + ); + position.addLiquidationCount(); + position.setBalanceClosed(token, BIGINT_ZERO); + position.setCollateralBalanceClosed(token, BIGINT_ZERO); + position.setRealisedPnlUsdClosed(pnl); + position.setFundingrateClosed(bigIntToBigDecimal(fundingRate)); + + position.closePosition(); + pool.addClosedInflowVolumeByToken(token, stakerFees); + } +} + +export function updateOpenInterest( + marketAddress: Address, + pool: Pool, + lastPrice: BigInt +): void { + const contract = PerpsV2MarketProxyable.bind(marketAddress); + const marketSizeCall = contract.try_marketSize(); + const marketSkewCall = contract.try_marketSkew(); + let marketSize = BIGINT_ZERO; + let marketSkew = BIGINT_ZERO; + if (!marketSizeCall.reverted && !marketSkewCall.reverted) { + marketSize = marketSizeCall.value; + marketSkew = marketSkewCall.value; + } + + const shortOpenInterstAmount = marketSize + .minus(marketSkew) + .div(BigInt.fromI32(2)); + const longOpenInterstAmount = marketSize + .plus(marketSkew) + .div(BigInt.fromI32(2)); + pool.setLongOpenInterest(longOpenInterstAmount, lastPrice); + pool.setShortOpenInterest(shortOpenInterstAmount, lastPrice); +} diff --git a/subgraphs/kwenta/src/prices/config/arbitrum.ts b/subgraphs/kwenta/src/prices/config/arbitrum.ts index 2c0b11099c..dd5815120c 100644 --- a/subgraphs/kwenta/src/prices/config/arbitrum.ts +++ b/subgraphs/kwenta/src/prices/config/arbitrum.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-magic-numbers, @typescript-eslint/no-unused-vars */ import { Address, BigInt } from "@graphprotocol/graph-ts"; import { Configurations, OracleContract } from "../common/types"; diff --git a/subgraphs/kwenta/src/prices/config/aurora.ts b/subgraphs/kwenta/src/prices/config/aurora.ts index 833b94911b..8baf3fdc86 100644 --- a/subgraphs/kwenta/src/prices/config/aurora.ts +++ b/subgraphs/kwenta/src/prices/config/aurora.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-magic-numbers, @typescript-eslint/no-unused-vars */ import { Address, BigInt } from "@graphprotocol/graph-ts"; import { Configurations, OracleContract } from "../common/types"; diff --git a/subgraphs/kwenta/src/prices/config/avalanche.ts b/subgraphs/kwenta/src/prices/config/avalanche.ts index f012ea6af4..2bdf3fb97b 100644 --- a/subgraphs/kwenta/src/prices/config/avalanche.ts +++ b/subgraphs/kwenta/src/prices/config/avalanche.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-magic-numbers, @typescript-eslint/no-unused-vars */ import { Address, BigInt } from "@graphprotocol/graph-ts"; import { Configurations, OracleContract } from "../common/types"; diff --git a/subgraphs/kwenta/src/prices/config/bsc.ts b/subgraphs/kwenta/src/prices/config/bsc.ts index db5cb1d2b1..c61cdce480 100644 --- a/subgraphs/kwenta/src/prices/config/bsc.ts +++ b/subgraphs/kwenta/src/prices/config/bsc.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-magic-numbers, @typescript-eslint/no-unused-vars */ import * as constants from "../common/constants"; import { Address, BigInt } from "@graphprotocol/graph-ts"; import { Configurations, OracleContract } from "../common/types"; diff --git a/subgraphs/kwenta/src/prices/config/celo.ts b/subgraphs/kwenta/src/prices/config/celo.ts index 035dcf448b..40f8475a92 100644 --- a/subgraphs/kwenta/src/prices/config/celo.ts +++ b/subgraphs/kwenta/src/prices/config/celo.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-magic-numbers, @typescript-eslint/no-unused-vars */ import { Address, BigInt } from "@graphprotocol/graph-ts"; import { Configurations, OracleContract } from "../common/types"; diff --git a/subgraphs/kwenta/src/prices/config/cronos.ts b/subgraphs/kwenta/src/prices/config/cronos.ts index f0be429d49..804a968e00 100644 --- a/subgraphs/kwenta/src/prices/config/cronos.ts +++ b/subgraphs/kwenta/src/prices/config/cronos.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-magic-numbers, @typescript-eslint/no-unused-vars */ import { Address, BigInt } from "@graphprotocol/graph-ts"; import { Configurations, OracleContract } from "../common/types"; diff --git a/subgraphs/kwenta/src/prices/config/fantom.ts b/subgraphs/kwenta/src/prices/config/fantom.ts index c43f5497a7..4c56c3c145 100644 --- a/subgraphs/kwenta/src/prices/config/fantom.ts +++ b/subgraphs/kwenta/src/prices/config/fantom.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-magic-numbers, @typescript-eslint/no-unused-vars */ import { Address, BigInt } from "@graphprotocol/graph-ts"; import { Configurations, OracleContract } from "../common/types"; diff --git a/subgraphs/kwenta/src/prices/config/fuse.ts b/subgraphs/kwenta/src/prices/config/fuse.ts index eee170f6a5..8515add327 100644 --- a/subgraphs/kwenta/src/prices/config/fuse.ts +++ b/subgraphs/kwenta/src/prices/config/fuse.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-magic-numbers, @typescript-eslint/no-unused-vars */ import { Address, BigInt } from "@graphprotocol/graph-ts"; import { Configurations, OracleContract } from "../common/types"; diff --git a/subgraphs/kwenta/src/prices/config/gnosis.ts b/subgraphs/kwenta/src/prices/config/gnosis.ts index 7e326f9717..a63419ab88 100644 --- a/subgraphs/kwenta/src/prices/config/gnosis.ts +++ b/subgraphs/kwenta/src/prices/config/gnosis.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-magic-numbers, @typescript-eslint/no-unused-vars */ import { Address, BigInt } from "@graphprotocol/graph-ts"; import { Configurations, OracleContract } from "../common/types"; diff --git a/subgraphs/kwenta/src/prices/config/harmony.ts b/subgraphs/kwenta/src/prices/config/harmony.ts index 39d4b0b16c..bc4997cfaa 100644 --- a/subgraphs/kwenta/src/prices/config/harmony.ts +++ b/subgraphs/kwenta/src/prices/config/harmony.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-magic-numbers, @typescript-eslint/no-unused-vars */ import { Address, BigInt } from "@graphprotocol/graph-ts"; import { Configurations, OracleContract } from "../common/types"; diff --git a/subgraphs/kwenta/src/prices/config/mainnet.ts b/subgraphs/kwenta/src/prices/config/mainnet.ts index 4614a69788..eff3e0d6c4 100644 --- a/subgraphs/kwenta/src/prices/config/mainnet.ts +++ b/subgraphs/kwenta/src/prices/config/mainnet.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-magic-numbers, @typescript-eslint/no-unused-vars */ import { Address, BigInt } from "@graphprotocol/graph-ts"; import { Configurations, OracleContract } from "../common/types"; diff --git a/subgraphs/kwenta/src/prices/config/moonbeam.ts b/subgraphs/kwenta/src/prices/config/moonbeam.ts index f3009cdb3c..1c1893801e 100644 --- a/subgraphs/kwenta/src/prices/config/moonbeam.ts +++ b/subgraphs/kwenta/src/prices/config/moonbeam.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-magic-numbers, @typescript-eslint/no-unused-vars */ import { Address, BigInt } from "@graphprotocol/graph-ts"; import { Configurations, OracleContract } from "../common/types"; diff --git a/subgraphs/kwenta/src/prices/config/optimism.ts b/subgraphs/kwenta/src/prices/config/optimism.ts index a270efacc3..4b46ec094c 100644 --- a/subgraphs/kwenta/src/prices/config/optimism.ts +++ b/subgraphs/kwenta/src/prices/config/optimism.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-magic-numbers, @typescript-eslint/no-unused-vars */ import { Address, BigInt } from "@graphprotocol/graph-ts"; import { Configurations, OracleContract } from "../common/types"; diff --git a/subgraphs/kwenta/src/prices/config/polygon.ts b/subgraphs/kwenta/src/prices/config/polygon.ts index c8d174fdf9..35f3f0eb35 100644 --- a/subgraphs/kwenta/src/prices/config/polygon.ts +++ b/subgraphs/kwenta/src/prices/config/polygon.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-magic-numbers, @typescript-eslint/no-unused-vars */ import { BigInt, Address } from "@graphprotocol/graph-ts"; import { Configurations, OracleContract } from "../common/types"; diff --git a/subgraphs/kwenta/src/prices/config/template.ts b/subgraphs/kwenta/src/prices/config/template.ts index 1916693083..36645a0067 100644 --- a/subgraphs/kwenta/src/prices/config/template.ts +++ b/subgraphs/kwenta/src/prices/config/template.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-magic-numbers, @typescript-eslint/no-unused-vars */ import * as constants from "../common/constants"; import { Address, BigInt } from "@graphprotocol/graph-ts"; import { Configurations, OracleContract } from "../common/types"; diff --git a/subgraphs/kwenta/src/prices/routers/CurveRouter.ts b/subgraphs/kwenta/src/prices/routers/CurveRouter.ts index 77801cd97b..2426532d84 100644 --- a/subgraphs/kwenta/src/prices/routers/CurveRouter.ts +++ b/subgraphs/kwenta/src/prices/routers/CurveRouter.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-magic-numbers, @typescript-eslint/no-unused-vars */ import { getUsdPricePerToken } from ".."; import * as utils from "../common/utils"; import * as constants from "../common/constants"; diff --git a/subgraphs/kwenta/src/prices/routers/UniswapForksRouter.ts b/subgraphs/kwenta/src/prices/routers/UniswapForksRouter.ts index d3a3cffd00..beed2cd46a 100644 --- a/subgraphs/kwenta/src/prices/routers/UniswapForksRouter.ts +++ b/subgraphs/kwenta/src/prices/routers/UniswapForksRouter.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-magic-numbers, @typescript-eslint/no-unused-vars */ import * as utils from "../common/utils"; import * as constants from "../common/constants"; import { CustomPriceType } from "../common/types"; diff --git a/subgraphs/kwenta/src/sdk/protocols/perpfutures/position.ts b/subgraphs/kwenta/src/sdk/protocols/perpfutures/position.ts index d975e652df..29e100fb00 100644 --- a/subgraphs/kwenta/src/sdk/protocols/perpfutures/position.ts +++ b/subgraphs/kwenta/src/sdk/protocols/perpfutures/position.ts @@ -1,4 +1,4 @@ -import { BigDecimal, BigInt, Bytes, log } from "@graphprotocol/graph-ts"; +import { BigDecimal, BigInt, Bytes } from "@graphprotocol/graph-ts"; import { Pool } from "./pool"; import { Account } from "./account"; @@ -12,8 +12,7 @@ import { _PositionCounter, Position as PositionSchema, } from "../../../../generated/schema"; -import { PositionModified } from "../../../../generated/templates/FuturesV1Market/FuturesMarket"; - +import { PositionModified1 as PositionModified } from "../../../../generated/templates/PerpsV2Market/PerpsV2MarketProxyable"; /** * This file contains the Position class, which is used to * make all of the storage changes that occur in the position and @@ -68,12 +67,7 @@ export class PositionManager { .concat(Bytes.fromUTF8("-")) .concatI32(positionCounter.nextCount); } - loadLastPosition( - pool: Pool, - account: Account, - asset: Token, - collateral: Token - ): Position | null { + loadLastPosition(pool: Pool, account: Account): Position | null { const positionId = this.getPositionId(pool, account, true); const entity = PositionSchema.load(positionId); if (entity != null) {