Skip to content

Commit

Permalink
ggp vault
Browse files Browse the repository at this point in the history
  • Loading branch information
Namaskar-1F64F committed Apr 25, 2024
1 parent f1b316c commit a5e0d15
Show file tree
Hide file tree
Showing 6 changed files with 301 additions and 93 deletions.
51 changes: 10 additions & 41 deletions src/actions-local/ggpvault.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,47 +3,16 @@ import { TestRuntime } from "@tenderly/actions-test";

import { beforeAll, describe, test } from "vitest";

import { depositOrWithdraw, stakingTransactions, stateVariablesUpdated } from "../actions/ggpvault";
import {
depositOrWithdraw,
rewardsDistributed,
stakingTransactions,
stateVariablesUpdated,
} from "../actions/ggpvault";
import { getRewardsDistributedEvent } from "../actions/logParsing";

config();
/*

export interface XGGPDeposit extends Event {
sender: string;
owner: string;
assets: BigNumber;
shares: BigNumber;
}
export interface XGGPWithdraw extends Event {
sender: string;
receiver: string;
owner: string;
assets: BigNumber;
shares: BigNumber;
}
export interface GGPCapUpdated extends Event {
newMax: BigNumber;
}
export interface TargetAPRUpdated extends Event {
newTargetAPR: BigNumber;
}
export interface WithdrawnForStaking extends Event {
caller: string;
assets: BigNumber;
}
export interface DepositedFromStaking extends Event {
caller: string;
amount: BigNumber;
}
export interface RewardsDistributed extends Event {
amount: BigNumber;
}*/
describe("GGP Vault", () => {
const testRuntime = new TestRuntime();
beforeAll(() => {
Expand Down Expand Up @@ -100,11 +69,11 @@ describe("GGP Vault", () => {
);
});
});
describe.skip("rewards", () => {
describe("rewards", () => {
test.concurrent("distributed", async () => {
await testRuntime.execute(
depositOrWithdraw,
require("./payload/payload-ggpvault-rewards.json")
rewardsDistributed,
require("./payload/payload-ggpvault-distribute-rewards.json")
);
});
});
Expand Down
134 changes: 134 additions & 0 deletions src/actions-local/payload/payload-ggpvault-distribute-rewards.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
{
"transactionHash": "0xb8622cee02bb97f1f116872b4cdccb90c3eb493bbb28282fa7b15db5cef8c487",
"transactionIndex": "0x3",
"blockHash": "0x3710adeed0ad8f214c8d53f1519b31c453524ef4c5a57c2ed0d6da95acab3df3",
"blockNumber": "0x2a7c04d",
"from": "0x2ff60357027861f25c7a6650564c2a606d23369d",
"to": "0xdf34022e8a280fc79499ca560439bb6f9797ebd8",
"cumulativeGasUsed": "0x4d583",
"gasUsed": "0x31c28",
"contractAddress": null,
"logs": [
{
"address": "0x69260b9483f9871ca57f81a90d91e2f96c2cd11d",
"topics": [
"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
"0x000000000000000000000000df34022e8a280fc79499ca560439bb6f9797ebd8",
"0x000000000000000000000000b6ddbf75e2f0c7fc363b47b84b5c03959526aecb"
],
"data": "0x000000000000000000000000000000000000000000000000032af52def715997",
"blockHash": "0x3710adeed0ad8f214c8d53f1519b31c453524ef4c5a57c2ed0d6da95acab3df3",
"blockNumber": "0x2a7c04d",
"transactionHash": "0xb8622cee02bb97f1f116872b4cdccb90c3eb493bbb28282fa7b15db5cef8c487",
"transactionIndex": "0x3",
"logIndex": "0x2",
"removed": false
},
{
"address": "0x69260b9483f9871ca57f81a90d91e2f96c2cd11d",
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
"0x000000000000000000000000df34022e8a280fc79499ca560439bb6f9797ebd8",
"0x000000000000000000000000b6ddbf75e2f0c7fc363b47b84b5c03959526aecb"
],
"data": "0x000000000000000000000000000000000000000000000000032af52def715997",
"blockHash": "0x3710adeed0ad8f214c8d53f1519b31c453524ef4c5a57c2ed0d6da95acab3df3",
"blockNumber": "0x2a7c04d",
"transactionHash": "0xb8622cee02bb97f1f116872b4cdccb90c3eb493bbb28282fa7b15db5cef8c487",
"transactionIndex": "0x3",
"logIndex": "0x3",
"removed": false
},
{
"address": "0xb6ddbf75e2f0c7fc363b47b84b5c03959526aecb",
"topics": [
"0x3cd32fbc628a7c1c5a309e823125e5a4b8d98b9b31ad71d8338cc5f05829b199",
"0x0000000000000000000000002ff60357027861f25c7a6650564c2a606d23369d"
],
"data": "0x000000000000000000000000000000000000000000000000032af52def715997",
"blockHash": "0x3710adeed0ad8f214c8d53f1519b31c453524ef4c5a57c2ed0d6da95acab3df3",
"blockNumber": "0x2a7c04d",
"transactionHash": "0xb8622cee02bb97f1f116872b4cdccb90c3eb493bbb28282fa7b15db5cef8c487",
"transactionIndex": "0x3",
"logIndex": "0x4",
"removed": false
},
{
"address": "0x69260b9483f9871ca57f81a90d91e2f96c2cd11d",
"topics": [
"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
"0x000000000000000000000000b6ddbf75e2f0c7fc363b47b84b5c03959526aecb",
"0x000000000000000000000000d45cb6f5aca41afaaaebdbe4efba49c1bc41e6ba"
],
"data": "0x000000000000000000000000000000000000000000000000032af52def715997",
"blockHash": "0x3710adeed0ad8f214c8d53f1519b31c453524ef4c5a57c2ed0d6da95acab3df3",
"blockNumber": "0x2a7c04d",
"transactionHash": "0xb8622cee02bb97f1f116872b4cdccb90c3eb493bbb28282fa7b15db5cef8c487",
"transactionIndex": "0x3",
"logIndex": "0x5",
"removed": false
},
{
"address": "0xd45cb6f5aca41afaaaebdbe4efba49c1bc41e6ba",
"topics": [
"0xc4c24354aa86aa3532ebd9da7ff92230de931c78c77fcdf84544f11bf8fae753",
"0xbea235ff677e781f981db3b8d8193dd2280c06e039b6f51dbfdad43fc6338e17",
"0x00000000000000000000000069260b9483f9871ca57f81a90d91e2f96c2cd11d"
],
"data": "0x000000000000000000000000000000000000000000000000032af52def715997",
"blockHash": "0x3710adeed0ad8f214c8d53f1519b31c453524ef4c5a57c2ed0d6da95acab3df3",
"blockNumber": "0x2a7c04d",
"transactionHash": "0xb8622cee02bb97f1f116872b4cdccb90c3eb493bbb28282fa7b15db5cef8c487",
"transactionIndex": "0x3",
"logIndex": "0x6",
"removed": false
},
{
"address": "0x69260b9483f9871ca57f81a90d91e2f96c2cd11d",
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
"0x000000000000000000000000b6ddbf75e2f0c7fc363b47b84b5c03959526aecb",
"0x000000000000000000000000d45cb6f5aca41afaaaebdbe4efba49c1bc41e6ba"
],
"data": "0x000000000000000000000000000000000000000000000000032af52def715997",
"blockHash": "0x3710adeed0ad8f214c8d53f1519b31c453524ef4c5a57c2ed0d6da95acab3df3",
"blockNumber": "0x2a7c04d",
"transactionHash": "0xb8622cee02bb97f1f116872b4cdccb90c3eb493bbb28282fa7b15db5cef8c487",
"transactionIndex": "0x3",
"logIndex": "0x7",
"removed": false
},
{
"address": "0xdf34022e8a280fc79499ca560439bb6f9797ebd8",
"topics": [
"0x14438a8606c512fda07a1e9dfefc371418ed542946338bfa1c87788e903b4d68",
"0x0000000000000000000000002ff60357027861f25c7a6650564c2a606d23369d"
],
"data": "0x000000000000000000000000000000000000000000000000032af52def715997",
"blockHash": "0x3710adeed0ad8f214c8d53f1519b31c453524ef4c5a57c2ed0d6da95acab3df3",
"blockNumber": "0x2a7c04d",
"transactionHash": "0xb8622cee02bb97f1f116872b4cdccb90c3eb493bbb28282fa7b15db5cef8c487",
"transactionIndex": "0x3",
"logIndex": "0x8",
"removed": false
},
{
"address": "0xdf34022e8a280fc79499ca560439bb6f9797ebd8",
"topics": [
"0x6d1c76d614228b523baa4dcd9539e2c713b54ff4ab3ff2d1627e7f6cd32be442"
],
"data": "0x000000000000000000000000000000000000000000000004b54f66bb299cad17",
"blockHash": "0x3710adeed0ad8f214c8d53f1519b31c453524ef4c5a57c2ed0d6da95acab3df3",
"blockNumber": "0x2a7c04d",
"transactionHash": "0xb8622cee02bb97f1f116872b4cdccb90c3eb493bbb28282fa7b15db5cef8c487",
"transactionIndex": "0x3",
"logIndex": "0x9",
"removed": false
}
],
"status": "0x1",
"logsBloom": "0x00020001100000020000001000000000000000000000000000008000000080000000000000000000000400200000000000000000000000000004000000222000018000100c04000000000008080000000000080000000010000000000004000000000000040000000000400000000000000000000000008000000010001000000020000000000080000000800000000000000000000100000000080000000002020000800000000000008000000000000000000000000000000000000000000004000002000000000000000000000008000800000000010000000000000002000010000000000000000000000000000000000000080000000000000000010008",
"type": "0x2",
"effectiveGasPrice": "0x62b85e900",
"deposit_nonce": null
}
33 changes: 31 additions & 2 deletions src/actions/ggpvault.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { Context, Event, TransactionEvent } from "@tenderly/actions";
import {
getDepositedFromStakingEvent,
getRewardsDistributedEvent,
getTargetAPRUpdatedEvent,
getWithdrawnForStakingEvent,
getXggpCapUpdatedEvent,
Expand All @@ -11,13 +12,15 @@ import {
XGGP_DEPOSIT_DISPLAY_TEMPLATE,
XGGP_GGP_CAP_UPDATED_TEMPLATE,
XGGP_STAKING_DEPOSIT_TEMPLATE,
XGGP_STAKING_REWARD_TEMPLATE,
XGGP_STAKING_WITHDRAW_TEMPLATE,
XGGP_TARGET_APR_UPDATED_TEMPLATE,
XGGP_WITHDRAW_DISPLAY_TEMPLATE,
} from "./templates";
import {
DepositedFromStaking,
GGPCapUpdated,
RewardsDistributed,
TargetAPRUpdated,
WithdrawnForStaking,
XGGPDeposit,
Expand All @@ -39,8 +42,10 @@ const handleXggpWithdrawEvent = async (
transactionEvent: TransactionEvent,
ggpWithdrawnEvent: XGGPWithdraw
) => {
const { assets } = ggpWithdrawnEvent;
await emitter.emit(XGGP_WITHDRAW_DISPLAY_TEMPLATE(transactionEvent, assets));
const { assets, address } = ggpWithdrawnEvent;
await emitter.emit(
XGGP_WITHDRAW_DISPLAY_TEMPLATE(transactionEvent, assets, address)
);
};

const handleXggpCapUpdatedEvent = async (capUpdatedEvent: GGPCapUpdated) => {
Expand Down Expand Up @@ -69,6 +74,16 @@ const handleXggpStakingWithdrawEvent = async (
await emitter.emit(XGGP_STAKING_WITHDRAW_TEMPLATE(assets, caller));
};

const handleXggpRewardsDistributedEvent = async (
transactionEvent: TransactionEvent,
rewardsDistributedEvent: RewardsDistributed
) => {
const { amount } = rewardsDistributedEvent;
await emitter.emit(
XGGP_STAKING_REWARD_TEMPLATE(transactionEvent, amount)
);
};

export const depositOrWithdraw = async (context: Context, event: Event) => {
await initServices(context);
const transactionEvent = event as TransactionEvent;
Expand Down Expand Up @@ -102,6 +117,20 @@ export const stateVariablesUpdated = async (context: Context, event: Event) => {
await handleXggpTargetAprUpdatedEvent(targetAprUpdatedEvent);
}
};
export const rewardsDistributed = async (context: Context, event: Event) => {
await initServices(context);
const transactionEvent = event as TransactionEvent;

const rewardsDistributedEvent = await getRewardsDistributedEvent(
transactionEvent
);
if (rewardsDistributedEvent) {
await handleXggpRewardsDistributedEvent(
transactionEvent,
rewardsDistributedEvent
);
}
};

export const stakingTransactions = async (context: Context, event: Event) => {
await initServices(context);
Expand Down
5 changes: 3 additions & 2 deletions src/actions/logParsing.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import {
GGPCapUpdated,
GGPStaked,
GGPWithdrawn,
RewardsDistributed,
TargetAPRUpdated,
WithdrawnForStaking,
XGGPDeposit,
Expand Down Expand Up @@ -235,9 +236,9 @@ export const getWithdrawnForStakingEvent = async (

export const getRewardsDistributedEvent = async (
transactionEvent: TransactionEvent
): Promise<{ amount: string } | undefined> => {
): Promise<RewardsDistributed | undefined> => {
try {
return await getMatchingEvent<{ amount: string }>(
return await getMatchingEvent<RewardsDistributed>(
transactionEvent,
GGP_VAULT_INTERFACE,
"RewardsDistributed"
Expand Down
Loading

0 comments on commit a5e0d15

Please sign in to comment.