-
Notifications
You must be signed in to change notification settings - Fork 27
/
subgraph.config.ts
123 lines (113 loc) · 3.09 KB
/
subgraph.config.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import {
Configurator,
Contexts,
DataSourceTemplateUserDeclaration,
DataSourceUserDeclaration,
SdkUserDeclaration,
Template,
} from '@enzymefinance/subgraph-cli';
import { getEnvironment } from '@enzymefinance/environment/all';
import { Deployment } from '@enzymefinance/environment';
interface Variables {
dispatcher: string;
weth: string;
savingsDai: string;
start: number;
}
const name = 'enzyme-vault-balances';
const deployments = {
ethereum: getEnvironment(Deployment.ETHEREUM),
polygon: getEnvironment(Deployment.POLYGON),
testnet: getEnvironment(Deployment.TESTNET),
};
export const contexts: Contexts<Variables> = {
arbitrum: {
name: `${name}-arbitrum`,
network: 'arbitrum-one',
variables: {
dispatcher: '0x8da28441a4c594fd2fac72726c1412d8cf9e4a19',
weth: '0x82af49447d8a07e3bd95bd0d56f35241523fbab1',
savingsDai: '0x0000000000000000000000000000000000000000',
start: 230330283,
},
},
ethereum: {
name,
network: 'mainnet',
variables: {
dispatcher: deployments.ethereum.contracts.Dispatcher,
weth: deployments.ethereum.namedTokens.weth.id,
savingsDai: '0x83f20f44975d03b1b09e64809b757c47f942beea',
start: 11681281,
},
},
polygon: {
name: `${name}-polygon`,
network: 'matic',
variables: {
dispatcher: deployments.polygon.contracts.Dispatcher,
weth: deployments.polygon.namedTokens.weth.id,
savingsDai: '0x0000000000000000000000000000000000000000',
start: 26191606,
},
},
testnet: {
name: `${name}-testnet`,
network: 'matic',
variables: {
dispatcher: deployments.testnet.contracts.Dispatcher,
weth: deployments.testnet.namedTokens.weth.id,
savingsDai: '0x0000000000000000000000000000000000000000',
start: 25731749,
},
},
};
export const templates: Template[] = [
{
template: 'templates/addresses.ts',
destination: 'generated/addresses.ts',
},
];
export const configure: Configurator<Variables> = (variables) => {
const sdks: SdkUserDeclaration[] = [
{
name: 'ERC20',
abis: {
ERC20: 'abis/ERC20.json',
},
functions: (abis) => [abis.ERC20.getFunction('decimals'), abis.ERC20.getFunction('balanceOf')],
},
];
const sources: DataSourceUserDeclaration[] = [
{
name: 'Dispatcher',
block: variables.start,
address: variables.dispatcher,
events: (abi) => [abi.getEvent('VaultProxyDeployed')],
},
{
name: 'Asset',
abi: 'abis/ERC20.json',
block: variables.start,
events: (abi) => [abi.getEvent('Transfer')],
},
{
name: 'SavingsDai',
abi: 'abis/SavingsDai.json',
block: variables.start,
address: variables.savingsDai,
events: (abi) => [abi.getEvent('Deposit'), abi.getEvent('Withdraw')],
},
];
const templates: DataSourceTemplateUserDeclaration[] = [
{
name: 'Vault',
events: (abi) => [
abi.getEvent('TrackedAssetAdded'),
abi.getEvent('TrackedAssetRemoved'),
abi.getEvent('EthReceived'),
],
},
];
return { sdks, sources, templates };
};