mirror of
https://github.com/Instadapp/fla-fees-subgraph.git
synced 2024-07-29 21:57:15 +00:00
Initial commit
This commit is contained in:
commit
5f94d4bd88
116
abis/FLA.json
Normal file
116
abis/FLA.json
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"inputs": [
|
||||||
|
{ "internalType": "address", "name": "_logic", "type": "address" },
|
||||||
|
{ "internalType": "address", "name": "admin_", "type": "address" },
|
||||||
|
{ "internalType": "bytes", "name": "_data", "type": "bytes" }
|
||||||
|
],
|
||||||
|
"stateMutability": "nonpayable",
|
||||||
|
"type": "constructor"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"anonymous": false,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"indexed": false,
|
||||||
|
"internalType": "address",
|
||||||
|
"name": "previousAdmin",
|
||||||
|
"type": "address"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"indexed": false,
|
||||||
|
"internalType": "address",
|
||||||
|
"name": "newAdmin",
|
||||||
|
"type": "address"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "AdminChanged",
|
||||||
|
"type": "event"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"anonymous": false,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"indexed": true,
|
||||||
|
"internalType": "address",
|
||||||
|
"name": "beacon",
|
||||||
|
"type": "address"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "BeaconUpgraded",
|
||||||
|
"type": "event"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"anonymous": false,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"indexed": true,
|
||||||
|
"internalType": "address",
|
||||||
|
"name": "implementation",
|
||||||
|
"type": "address"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "Upgraded",
|
||||||
|
"type": "event"
|
||||||
|
},
|
||||||
|
{ "stateMutability": "payable", "type": "fallback" },
|
||||||
|
{
|
||||||
|
"inputs": [],
|
||||||
|
"name": "admin",
|
||||||
|
"outputs": [
|
||||||
|
{ "internalType": "address", "name": "admin_", "type": "address" }
|
||||||
|
],
|
||||||
|
"stateMutability": "nonpayable",
|
||||||
|
"type": "function"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"inputs": [
|
||||||
|
{ "internalType": "address", "name": "newAdmin", "type": "address" }
|
||||||
|
],
|
||||||
|
"name": "changeAdmin",
|
||||||
|
"outputs": [],
|
||||||
|
"stateMutability": "nonpayable",
|
||||||
|
"type": "function"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"inputs": [],
|
||||||
|
"name": "implementation",
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"internalType": "address",
|
||||||
|
"name": "implementation_",
|
||||||
|
"type": "address"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"stateMutability": "nonpayable",
|
||||||
|
"type": "function"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"internalType": "address",
|
||||||
|
"name": "newImplementation",
|
||||||
|
"type": "address"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "upgradeTo",
|
||||||
|
"outputs": [],
|
||||||
|
"stateMutability": "nonpayable",
|
||||||
|
"type": "function"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"internalType": "address",
|
||||||
|
"name": "newImplementation",
|
||||||
|
"type": "address"
|
||||||
|
},
|
||||||
|
{ "internalType": "bytes", "name": "data", "type": "bytes" }
|
||||||
|
],
|
||||||
|
"name": "upgradeToAndCall",
|
||||||
|
"outputs": [],
|
||||||
|
"stateMutability": "payable",
|
||||||
|
"type": "function"
|
||||||
|
},
|
||||||
|
{ "stateMutability": "payable", "type": "receive" }
|
||||||
|
]
|
7
networks.json
Normal file
7
networks.json
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"mainnet": {
|
||||||
|
"FLA": {
|
||||||
|
"address": "0x619Ad2D02dBeE6ebA3CDbDA3F98430410e892882"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
18
package.json
Normal file
18
package.json
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
"name": "fla-fees-mainnet",
|
||||||
|
"license": "UNLICENSED",
|
||||||
|
"scripts": {
|
||||||
|
"codegen": "graph codegen",
|
||||||
|
"build": "graph build",
|
||||||
|
"deploy": "graph deploy --node https://api.thegraph.com/deploy/ Richa-iitr/fla-fees-mainnet",
|
||||||
|
"create-local": "graph create --node http://localhost:8020/ Richa-iitr/fla-fees-mainnet",
|
||||||
|
"remove-local": "graph remove --node http://localhost:8020/ Richa-iitr/fla-fees-mainnet",
|
||||||
|
"deploy-local": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 Richa-iitr/fla-fees-mainnet",
|
||||||
|
"test": "graph test"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@graphprotocol/graph-cli": "0.33.1",
|
||||||
|
"@graphprotocol/graph-ts": "0.27.0"
|
||||||
|
},
|
||||||
|
"devDependencies": { "matchstick-as": "0.5.0" }
|
||||||
|
}
|
6
schema.graphql
Normal file
6
schema.graphql
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
type ExampleEntity @entity {
|
||||||
|
id: ID!
|
||||||
|
count: BigInt!
|
||||||
|
previousAdmin: Bytes! # address
|
||||||
|
newAdmin: Bytes! # address
|
||||||
|
}
|
55
src/fla.ts
Normal file
55
src/fla.ts
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
import { BigInt } from "@graphprotocol/graph-ts"
|
||||||
|
import {
|
||||||
|
FLA,
|
||||||
|
AdminChanged,
|
||||||
|
BeaconUpgraded,
|
||||||
|
Upgraded
|
||||||
|
} from "../generated/FLA/FLA"
|
||||||
|
import { ExampleEntity } from "../generated/schema"
|
||||||
|
|
||||||
|
export function handleAdminChanged(event: AdminChanged): void {
|
||||||
|
// Entities can be loaded from the store using a string ID; this ID
|
||||||
|
// needs to be unique across all entities of the same type
|
||||||
|
let entity = ExampleEntity.load(event.transaction.from.toHex())
|
||||||
|
|
||||||
|
// Entities only exist after they have been saved to the store;
|
||||||
|
// `null` checks allow to create entities on demand
|
||||||
|
if (!entity) {
|
||||||
|
entity = new ExampleEntity(event.transaction.from.toHex())
|
||||||
|
|
||||||
|
// Entity fields can be set using simple assignments
|
||||||
|
entity.count = BigInt.fromI32(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
// BigInt and BigDecimal math are supported
|
||||||
|
entity.count = entity.count + BigInt.fromI32(1)
|
||||||
|
|
||||||
|
// Entity fields can be set based on event parameters
|
||||||
|
entity.previousAdmin = event.params.previousAdmin
|
||||||
|
entity.newAdmin = event.params.newAdmin
|
||||||
|
|
||||||
|
// Entities can be written to the store with `.save()`
|
||||||
|
entity.save()
|
||||||
|
|
||||||
|
// Note: If a handler doesn't require existing field values, it is faster
|
||||||
|
// _not_ to load the entity from the store. Instead, create it fresh with
|
||||||
|
// `new Entity(...)`, set the fields that should be updated and save the
|
||||||
|
// entity back to the store. Fields that were not set or unset remain
|
||||||
|
// unchanged, allowing for partial updates to be applied.
|
||||||
|
|
||||||
|
// It is also possible to access smart contracts from mappings. For
|
||||||
|
// example, the contract that has emitted the event can be connected to
|
||||||
|
// with:
|
||||||
|
//
|
||||||
|
// let contract = Contract.bind(event.address)
|
||||||
|
//
|
||||||
|
// The following functions can then be called on this contract to access
|
||||||
|
// state variables and other data:
|
||||||
|
//
|
||||||
|
// - contract.admin(...)
|
||||||
|
// - contract.implementation(...)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function handleBeaconUpgraded(event: BeaconUpgraded): void {}
|
||||||
|
|
||||||
|
export function handleUpgraded(event: Upgraded): void {}
|
29
subgraph.yaml
Normal file
29
subgraph.yaml
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
specVersion: 0.0.1
|
||||||
|
schema:
|
||||||
|
file: ./schema.graphql
|
||||||
|
dataSources:
|
||||||
|
- kind: ethereum
|
||||||
|
name: FLA
|
||||||
|
network: mainnet
|
||||||
|
source:
|
||||||
|
address: "0x619Ad2D02dBeE6ebA3CDbDA3F98430410e892882"
|
||||||
|
abi: FLA
|
||||||
|
mapping:
|
||||||
|
kind: ethereum/events
|
||||||
|
apiVersion: 0.0.5
|
||||||
|
language: wasm/assemblyscript
|
||||||
|
entities:
|
||||||
|
- AdminChanged
|
||||||
|
- BeaconUpgraded
|
||||||
|
- Upgraded
|
||||||
|
abis:
|
||||||
|
- name: FLA
|
||||||
|
file: ./abis/FLA.json
|
||||||
|
eventHandlers:
|
||||||
|
- event: AdminChanged(address,address)
|
||||||
|
handler: handleAdminChanged
|
||||||
|
- event: BeaconUpgraded(indexed address)
|
||||||
|
handler: handleBeaconUpgraded
|
||||||
|
- event: Upgraded(indexed address)
|
||||||
|
handler: handleUpgraded
|
||||||
|
file: ./src/fla.ts
|
51
tests/fla-utils.ts
Normal file
51
tests/fla-utils.ts
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
import { newMockEvent } from "matchstick-as"
|
||||||
|
import { ethereum, Address } from "@graphprotocol/graph-ts"
|
||||||
|
import { AdminChanged, BeaconUpgraded, Upgraded } from "../generated/FLA/FLA"
|
||||||
|
|
||||||
|
export function createAdminChangedEvent(
|
||||||
|
previousAdmin: Address,
|
||||||
|
newAdmin: Address
|
||||||
|
): AdminChanged {
|
||||||
|
let adminChangedEvent = changetype<AdminChanged>(newMockEvent())
|
||||||
|
|
||||||
|
adminChangedEvent.parameters = new Array()
|
||||||
|
|
||||||
|
adminChangedEvent.parameters.push(
|
||||||
|
new ethereum.EventParam(
|
||||||
|
"previousAdmin",
|
||||||
|
ethereum.Value.fromAddress(previousAdmin)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
adminChangedEvent.parameters.push(
|
||||||
|
new ethereum.EventParam("newAdmin", ethereum.Value.fromAddress(newAdmin))
|
||||||
|
)
|
||||||
|
|
||||||
|
return adminChangedEvent
|
||||||
|
}
|
||||||
|
|
||||||
|
export function createBeaconUpgradedEvent(beacon: Address): BeaconUpgraded {
|
||||||
|
let beaconUpgradedEvent = changetype<BeaconUpgraded>(newMockEvent())
|
||||||
|
|
||||||
|
beaconUpgradedEvent.parameters = new Array()
|
||||||
|
|
||||||
|
beaconUpgradedEvent.parameters.push(
|
||||||
|
new ethereum.EventParam("beacon", ethereum.Value.fromAddress(beacon))
|
||||||
|
)
|
||||||
|
|
||||||
|
return beaconUpgradedEvent
|
||||||
|
}
|
||||||
|
|
||||||
|
export function createUpgradedEvent(implementation: Address): Upgraded {
|
||||||
|
let upgradedEvent = changetype<Upgraded>(newMockEvent())
|
||||||
|
|
||||||
|
upgradedEvent.parameters = new Array()
|
||||||
|
|
||||||
|
upgradedEvent.parameters.push(
|
||||||
|
new ethereum.EventParam(
|
||||||
|
"implementation",
|
||||||
|
ethereum.Value.fromAddress(implementation)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
return upgradedEvent
|
||||||
|
}
|
57
tests/fla.test.ts
Normal file
57
tests/fla.test.ts
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
import {
|
||||||
|
assert,
|
||||||
|
describe,
|
||||||
|
test,
|
||||||
|
clearStore,
|
||||||
|
beforeAll,
|
||||||
|
afterAll
|
||||||
|
} from "matchstick-as/assembly/index"
|
||||||
|
import { Address } from "@graphprotocol/graph-ts"
|
||||||
|
import { ExampleEntity } from "../generated/schema"
|
||||||
|
import { AdminChanged } from "../generated/FLA/FLA"
|
||||||
|
import { handleAdminChanged } from "../src/fla"
|
||||||
|
import { createAdminChangedEvent } from "./fla-utils"
|
||||||
|
|
||||||
|
// Tests structure (matchstick-as >=0.5.0)
|
||||||
|
// https://thegraph.com/docs/en/developer/matchstick/#tests-structure-0-5-0
|
||||||
|
|
||||||
|
describe("Describe entity assertions", () => {
|
||||||
|
beforeAll(() => {
|
||||||
|
let previousAdmin = Address.fromString(
|
||||||
|
"0x0000000000000000000000000000000000000001"
|
||||||
|
)
|
||||||
|
let newAdmin = Address.fromString(
|
||||||
|
"0x0000000000000000000000000000000000000001"
|
||||||
|
)
|
||||||
|
let newAdminChangedEvent = createAdminChangedEvent(previousAdmin, newAdmin)
|
||||||
|
handleAdminChanged(newAdminChangedEvent)
|
||||||
|
})
|
||||||
|
|
||||||
|
afterAll(() => {
|
||||||
|
clearStore()
|
||||||
|
})
|
||||||
|
|
||||||
|
// For more test scenarios, see:
|
||||||
|
// https://thegraph.com/docs/en/developer/matchstick/#write-a-unit-test
|
||||||
|
|
||||||
|
test("ExampleEntity created and stored", () => {
|
||||||
|
assert.entityCount("ExampleEntity", 1)
|
||||||
|
|
||||||
|
// 0xa16081f360e3847006db660bae1c6d1b2e17ec2a is the default address used in newMockEvent() function
|
||||||
|
assert.fieldEquals(
|
||||||
|
"ExampleEntity",
|
||||||
|
"0xa16081f360e3847006db660bae1c6d1b2e17ec2a",
|
||||||
|
"previousAdmin",
|
||||||
|
"0x0000000000000000000000000000000000000001"
|
||||||
|
)
|
||||||
|
assert.fieldEquals(
|
||||||
|
"ExampleEntity",
|
||||||
|
"0xa16081f360e3847006db660bae1c6d1b2e17ec2a",
|
||||||
|
"newAdmin",
|
||||||
|
"0x0000000000000000000000000000000000000001"
|
||||||
|
)
|
||||||
|
|
||||||
|
// More assert options:
|
||||||
|
// https://thegraph.com/docs/en/developer/matchstick/#asserts
|
||||||
|
})
|
||||||
|
})
|
4
tsconfig.json
Normal file
4
tsconfig.json
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"extends": "@graphprotocol/graph-ts/types/tsconfig.base.json",
|
||||||
|
"include": ["src"]
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user