Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mini refactoring #28

Open
wants to merge 14 commits into
base: master
Choose a base branch
from
116 changes: 36 additions & 80 deletions synthetics-stats/src/entities/claims.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,51 +5,37 @@ import {
ClaimRef,
ClaimableFundingFeeInfo,
Order,
Transaction,
Transaction
} from "../../generated/schema";
import { EventData } from "../utils/eventData";
import { Ctx } from "../utils/eventData";
import { orderTypes } from "./orders";

let ZERO = BigInt.fromI32(0);
let ONE = BigInt.fromI32(1);

export function saveClaimActionOnOrderCreated(
transaction: Transaction,
eventData: EventData
): void {
let orderId = eventData.getBytes32Item("key")!.toHexString();
export function saveClaimActionOnOrderCreated(ctx: Ctx): void {
let orderId = ctx.getBytes32Item("key").toHexString();

let claimAction = getOrCreateClaimAction(
"SettleFundingFeeCreated",
eventData,
transaction
);
let claimAction = getOrCreateClaimAction("SettleFundingFeeCreated", ctx);

let marketAddress = eventData.getAddressItemString("market")!;
let marketAddress = ctx.getAddressItemString("market");
let marketAddresses = claimAction.marketAddresses;
marketAddresses.push(marketAddress);
claimAction.marketAddresses = marketAddresses;

let isLongOrders = claimAction.isLongOrders;
isLongOrders.push(eventData.getBoolItem("isLong"));
isLongOrders.push(ctx.getBoolItemOrFalse("isLong"));
claimAction.isLongOrders = isLongOrders;

claimAction.save();

createClaimRefIfNotExists(orderId);
}

export function saveClaimActionOnOrderCancelled(
transaction: Transaction,
eventData: EventData
): void {
let claimAction = getOrCreateClaimAction(
"SettleFundingFeeCancelled",
eventData,
transaction
);
export function saveClaimActionOnOrderCancelled(ctx: Ctx): void {
let claimAction = getOrCreateClaimAction("SettleFundingFeeCancelled", ctx);

let orderId = eventData.getBytes32Item("key")!.toHexString();
let orderId = ctx.getBytes32Item("key").toHexString();
let order = Order.load(orderId);

if (!order) throw new Error("Order not found");
Expand All @@ -65,25 +51,16 @@ export function saveClaimActionOnOrderCancelled(
claimAction.save();
}

export function saveClaimActionOnOrderExecuted(
transaction: Transaction,
eventData: EventData
): void {
let claimAction = getOrCreateClaimAction(
"SettleFundingFeeExecuted",
eventData,
transaction
);
let orderId = eventData.getBytes32Item("key")!.toHexString();
export function saveClaimActionOnOrderExecuted(ctx: Ctx): void {
let claimAction = getOrCreateClaimAction("SettleFundingFeeExecuted", ctx);
let orderId = ctx.getBytes32Item("key").toHexString();
let order = Order.load(orderId);

if (!order) throw new Error("Order not found");

let account = eventData.getAddressItemString("account")!;
let claimableFundingFeeInfoId = transaction.id + ":" + account;
let claimableFundingFeeInfo = ClaimableFundingFeeInfo.load(
claimableFundingFeeInfoId
);
let account = ctx.getAddressItemString("account");
let claimableFundingFeeInfoId = ctx.transaction.id + ":" + account;
let claimableFundingFeeInfo = ClaimableFundingFeeInfo.load(claimableFundingFeeInfoId);

// if position has no pending funding fees ClaimableFundingUpdated is not emitted
if (!claimableFundingFeeInfo) {
Expand Down Expand Up @@ -124,33 +101,19 @@ export function saveClaimActionOnOrderExecuted(
claimAction.save();
}

export function handleCollateralClaimAction(
eventName: string,
eventData: EventData,
transaction: Transaction
): void {
let claimCollateralAction = getOrCreateClaimCollateralAction(
eventName,
eventData,
transaction
);
let claimAction = getOrCreateClaimAction(eventName, eventData, transaction);
export function handleCollateralClaimAction(eventName: string, ctx: Ctx, transaction: Transaction): void {
let claimCollateralAction = getOrCreateClaimCollateralAction(eventName, ctx, transaction);
let claimAction = getOrCreateClaimAction(eventName, ctx);

addFieldsToCollateralLikeClaimAction(claimAction, eventData);
addFieldsToCollateralLikeClaimAction(
claimCollateralAction as ClaimAction,
eventData
);
addFieldsToCollateralLikeClaimAction(claimAction, ctx);
addFieldsToCollateralLikeClaimAction(claimCollateralAction as ClaimAction, ctx);

claimCollateralAction.save();
claimAction.save();
}

export function saveClaimableFundingFeeInfo(
eventData: EventData,
transaction: Transaction
): ClaimableFundingFeeInfo {
let account = eventData.getAddressItemString("account")!;
export function saveClaimableFundingFeeInfo(ctx: Ctx, transaction: Transaction): ClaimableFundingFeeInfo {
let account = ctx.getAddressItemString("account");
let id = transaction.id + ":" + account;
let entity = ClaimableFundingFeeInfo.load(id);

Expand All @@ -162,45 +125,42 @@ export function saveClaimableFundingFeeInfo(
}

let marketAddresses = entity.marketAddresses;
marketAddresses.push(eventData.getAddressItemString("market")!);
marketAddresses.push(ctx.getAddressItemString("market"));
entity.marketAddresses = marketAddresses;

let tokenAddresses = entity.tokenAddresses;
tokenAddresses.push(eventData.getAddressItemString("token")!);
tokenAddresses.push(ctx.getAddressItemString("token"));
entity.tokenAddresses = tokenAddresses;

let amounts = entity.amounts;
amounts.push(eventData.getUintItem("delta")!);
amounts.push(ctx.getUintItem("delta"));
entity.amounts = amounts;

entity.save();

return entity!;
}

function addFieldsToCollateralLikeClaimAction(
claimAction: ClaimAction,
eventData: EventData
): void {
function addFieldsToCollateralLikeClaimAction(claimAction: ClaimAction, ctx: Ctx): void {
let marketAddresses = claimAction.marketAddresses;
marketAddresses.push(eventData.getAddressItemString("market")!);
marketAddresses.push(ctx.getAddressItemString("market"));
claimAction.marketAddresses = marketAddresses;

let tokenAddresses = claimAction.tokenAddresses;
tokenAddresses.push(eventData.getAddressItemString("token")!);
tokenAddresses.push(ctx.getAddressItemString("token"));
claimAction.tokenAddresses = tokenAddresses;

let amounts = claimAction.amounts;
amounts.push(eventData.getUintItem("amount")!);
amounts.push(ctx.getUintItem("amount"));
claimAction.amounts = amounts;
}

function getOrCreateClaimCollateralAction(
eventName: string,
eventData: EventData,
ctx: Ctx,
transaction: Transaction
): ClaimCollateralAction {
let account = eventData.getAddressItemString("account")!;
let account = ctx.getAddressItemString("account");
let id = transaction.id + ":" + account + ":" + eventName;
let entity = ClaimCollateralAction.load(id);

Expand All @@ -219,13 +179,9 @@ function getOrCreateClaimCollateralAction(
return entity as ClaimCollateralAction;
}

function getOrCreateClaimAction(
eventName: string,
eventData: EventData,
transaction: Transaction
): ClaimAction {
let account = eventData.getAddressItemString("account")!;
let id = transaction.id + ":" + account + ":" + eventName;
function getOrCreateClaimAction(eventName: string, ctx: Ctx): ClaimAction {
let account = ctx.getAddressItemString("account");
let id = ctx.transaction.id + ":" + account + ":" + eventName;
let entity = ClaimAction.load(id);

if (!entity) {
Expand All @@ -237,7 +193,7 @@ function getOrCreateClaimAction(

entity.eventName = eventName;
entity.account = account;
entity.transaction = transaction.id;
entity.transaction = ctx.transaction.id;
entity.save();
}

Expand Down
73 changes: 33 additions & 40 deletions synthetics-stats/src/entities/fees.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@ import {
Transaction
} from "../../generated/schema";
import { getMarketPoolValueFromContract } from "../contracts/getMarketPoolValueFromContract";
import { SwapFeesCollectedEventData } from "../utils/eventData/SwapFeesCollectedEventData";
import { getMarketTokensSupplyFromContract } from "../contracts/getMarketTokensSupplyFromContract";
import { EventData } from "../utils/eventData";
import { Ctx } from "../utils/eventData";
import { PositionImpactPoolDistributedEventData } from "../utils/eventData/PositionImpactPoolDistributedEventData";
import { timestampToPeriodStart } from "../utils/time";
import { getTokenPrice } from "./prices";
Expand Down Expand Up @@ -55,18 +56,18 @@ function updateCollectedFeesFractions(
feesEntity.cumulativeFeeUsdPerGmToken = totalFeesEntity.feeUsdPerGmToken;
}

export function saveSwapFeesInfo(eventData: EventData, eventId: string, transaction: Transaction): SwapFeesInfo {
let swapFeesInfo = new SwapFeesInfo(eventId);
export function saveSwapFeesInfo(data: SwapFeesCollectedEventData, ctx: Ctx): SwapFeesInfo {
let swapFeesInfo = new SwapFeesInfo(ctx.eventId);

swapFeesInfo.marketAddress = eventData.getAddressItemString("market")!;
swapFeesInfo.tokenAddress = eventData.getAddressItemString("token")!;
swapFeesInfo.marketAddress = data.market;
swapFeesInfo.tokenAddress = data.token;

let swapFeeType = eventData.getBytes32Item("swapFeeType");
let swapFeeType = data.swapFeeType;

if (swapFeeType != null) {
swapFeesInfo.swapFeeType = swapFeeType.toHexString();
} else {
let action = eventData.getStringItem("action");
let action = data.action;

if (action == "deposit") {
swapFeesInfo.swapFeeType = swapFeeTypes.get("DEPOSIT_FEE_TYPE")!;
Expand All @@ -77,50 +78,46 @@ export function saveSwapFeesInfo(eventData: EventData, eventId: string, transact
}
}

swapFeesInfo.tokenPrice = eventData.getUintItem("tokenPrice")!;
swapFeesInfo.feeReceiverAmount = eventData.getUintItem("feeReceiverAmount")!;
swapFeesInfo.feeUsdForPool = eventData.getUintItem("feeAmountForPool")!.times(swapFeesInfo.tokenPrice);
swapFeesInfo.tokenPrice = data.tokenPrice;
swapFeesInfo.feeReceiverAmount = data.feeReceiverAmount;
swapFeesInfo.feeUsdForPool = data.feeAmountForPool.times(swapFeesInfo.tokenPrice);

swapFeesInfo.transaction = transaction.id;
swapFeesInfo.transaction = ctx.transaction.id;

swapFeesInfo.save();

return swapFeesInfo;
}

export function savePositionFeesInfo(
eventData: EventData,
eventName: string,
transaction: Transaction
): PositionFeesInfo {
let orderKey = eventData.getBytes32Item("orderKey")!.toHexString();
export function savePositionFeesInfo(ctx: Ctx): PositionFeesInfo {
let orderKey = ctx.getBytes32Item("orderKey").toHexString();

let id = orderKey + ":" + eventName;
let id = orderKey + ":" + ctx.eventName;

let feesInfo = new PositionFeesInfo(id);

feesInfo.orderKey = orderKey;
feesInfo.eventName = eventName;
feesInfo.marketAddress = eventData.getAddressItemString("market")!;
feesInfo.collateralTokenAddress = eventData.getAddressItemString("collateralToken")!;
feesInfo.eventName = ctx.eventName;
feesInfo.marketAddress = ctx.getAddressItemString("market");
feesInfo.collateralTokenAddress = ctx.getAddressItemString("collateralToken");

feesInfo.trader = eventData.getAddressItemString("trader")!;
feesInfo.affiliate = eventData.getAddressItemString("affiliate")!;
feesInfo.trader = ctx.getAddressItemString("trader");
feesInfo.affiliate = ctx.getAddressItemString("affiliate");

feesInfo.collateralTokenPriceMin = eventData.getUintItem("collateralTokenPrice.min")!;
feesInfo.collateralTokenPriceMax = eventData.getUintItem("collateralTokenPrice.max")!;
feesInfo.collateralTokenPriceMin = ctx.getUintItem("collateralTokenPrice.min");
feesInfo.collateralTokenPriceMax = ctx.getUintItem("collateralTokenPrice.max");

feesInfo.positionFeeAmount = eventData.getUintItem("positionFeeAmount")!;
feesInfo.borrowingFeeAmount = eventData.getUintItem("borrowingFeeAmount")!;
feesInfo.fundingFeeAmount = eventData.getUintItem("fundingFeeAmount")!;
feesInfo.feeUsdForPool = eventData.getUintItem("feeAmountForPool")!.times(feesInfo.collateralTokenPriceMin);
feesInfo.positionFeeAmount = ctx.getUintItem("positionFeeAmount");
feesInfo.borrowingFeeAmount = ctx.getUintItem("borrowingFeeAmount");
feesInfo.fundingFeeAmount = ctx.getUintItem("fundingFeeAmount");
feesInfo.feeUsdForPool = ctx.getUintItem("feeAmountForPool").times(feesInfo.collateralTokenPriceMin);

feesInfo.totalRebateAmount = eventData.getUintItem("totalRebateAmount")!;
feesInfo.totalRebateFactor = eventData.getUintItem("totalRebateFactor")!;
feesInfo.traderDiscountAmount = eventData.getUintItem("traderDiscountAmount")!;
feesInfo.affiliateRewardAmount = eventData.getUintItem("affiliateRewardAmount")!;
feesInfo.totalRebateAmount = ctx.getUintItem("totalRebateAmount");
feesInfo.totalRebateFactor = ctx.getUintItem("totalRebateFactor");
feesInfo.traderDiscountAmount = ctx.getUintItem("traderDiscountAmount");
feesInfo.affiliateRewardAmount = ctx.getUintItem("affiliateRewardAmount");

feesInfo.transaction = transaction.id;
feesInfo.transaction = ctx.transaction.id;

feesInfo.save();

Expand Down Expand Up @@ -271,12 +268,8 @@ export function saveCollectedMarketFees(
feesForPeriod.save();
}

export function handlePositionImpactPoolDistributed(
eventData: EventData,
transaction: Transaction,
network: string
): void {
let data = new PositionImpactPoolDistributedEventData(eventData);
export function handlePositionImpactPoolDistributed(ctx: Ctx, transaction: Transaction, network: string): void {
let data = new PositionImpactPoolDistributedEventData(ctx);
let marketInfo = MarketInfo.load(data.market);

if (!marketInfo) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {
UserMarketInfo,
GlpGmMigrationStat
} from "../../../generated/schema";
import { EventData } from "../../utils/eventData";
import { Ctx } from "../../utils/eventData";
import { periodToSeconds, timestampToPeriodStart } from "../../utils/time";
import { EventLog1 } from "../../../generated/EventEmitter/EventEmitter";
import { getMarketInfo } from "../markets";
Expand Down Expand Up @@ -75,7 +75,7 @@ export function saveLiquidityProviderIncentivesStat(
entity.save();
}

export function saveMarketIncentivesStat(eventData: EventData, event: EventLog1): void {
export function saveMarketIncentivesStat(ctx: Ctx, event: EventLog1): void {
if (!_incentivesActive(event.block.timestamp.toI32())) {
return;
}
Expand All @@ -92,7 +92,7 @@ export function saveMarketIncentivesStat(eventData: EventData, event: EventLog1)
// cumulative product is increased on each deposit or withdrawal:
// cumulative product = cumulative product + (previous tokens supply * time since last deposit/withdrawal)

let data = new MarketPoolValueUpdatedEventData(eventData);
let data = new MarketPoolValueUpdatedEventData(ctx);

let marketTokensSupply = data.marketTokensSupply;
let marketAddress = data.market;
Expand Down
12 changes: 6 additions & 6 deletions synthetics-stats/src/entities/markets.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
import { log, BigInt } from "@graphprotocol/graph-ts";
import { MarketInfo } from "../../generated/schema";
import { marketConfigs } from "../config/markets";
import { EventData } from "../utils/eventData";
import { Ctx } from "../utils/eventData";

let ZERO = BigInt.fromI32(0);

export function saveMarketInfo(eventData: EventData): MarketInfo {
let id = eventData.getAddressItemString("marketToken")!;
export function saveMarketInfo(ctx: Ctx): MarketInfo {
let id = ctx.getAddressItemString("marketToken");
let marketInfo = new MarketInfo(id);
marketInfo.marketToken = id;
marketInfo.indexToken = eventData.getAddressItemString("indexToken")!;
marketInfo.longToken = eventData.getAddressItemString("longToken")!;
marketInfo.shortToken = eventData.getAddressItemString("shortToken")!;
marketInfo.indexToken = ctx.getAddressItemString("indexToken");
marketInfo.longToken = ctx.getAddressItemString("longToken");
marketInfo.shortToken = ctx.getAddressItemString("shortToken");
marketInfo.marketTokensSupply = BigInt.fromI32(0);
marketInfo.save();

Expand Down
Loading