@glowlabs-org/utils 0.0.8 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/publish.yml +14 -4
- package/dist/cjs/constants/regex.d.ts +1 -0
- package/dist/cjs/constants/urls.d.ts +2 -0
- package/dist/cjs/constants/weights.d.ts +12 -0
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.js +19091 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/lib/create-weekly-report/index.d.ts +73 -0
- package/dist/cjs/lib/create-weekly-report/types/Audit.d.ts +40 -0
- package/dist/cjs/lib/create-weekly-report/types/RewardSplit.d.ts +5 -0
- package/dist/cjs/lib/create-weekly-report/types/RewardSplits.d.ts +2 -0
- package/dist/cjs/lib/create-weekly-report/types/index.d.ts +7 -0
- package/dist/cjs/lib/create-weekly-report/types/merkle.d.ts +10 -0
- package/dist/cjs/lib/create-weekly-report/utils/accumulate-leaf-weights.d.ts +2 -0
- package/dist/cjs/lib/create-weekly-report/utils/custom-to-fixed.d.ts +1 -0
- package/dist/cjs/lib/create-weekly-report/utils/fetch-farms-for-week.d.ts +12 -0
- package/dist/cjs/lib/create-weekly-report/utils/from-bigint.d.ts +7 -0
- package/dist/cjs/lib/create-weekly-report/utils/greater-than-max-deviation.d.ts +1 -0
- package/dist/cjs/lib/create-weekly-report/utils/multiply-bigInt-by-decimal-percentage.d.ts +1 -0
- package/dist/cjs/lib/create-weekly-report/utils/to-bigint.d.ts +7 -0
- package/dist/cjs/utils/custom-to-fixed.d.ts +1 -0
- package/dist/cjs/utils/greater-than-max-deviation.d.ts +1 -0
- package/dist/cjs/utils/hash-leaf.d.ts +7 -0
- package/dist/esm/constants/index.d.ts +1 -0
- package/dist/esm/constants/regex.d.ts +1 -0
- package/dist/esm/constants/urls.d.ts +2 -0
- package/dist/esm/constants/weights.d.ts +12 -0
- package/dist/esm/default-values/gca-to-server-urls.d.ts +0 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +19088 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/create-weekly-report/index.d.ts +73 -0
- package/dist/esm/lib/create-weekly-report/types/Audit.d.ts +40 -0
- package/dist/esm/lib/create-weekly-report/types/AuditCompleted.d.ts +3 -0
- package/dist/esm/lib/create-weekly-report/types/AuditInherited.d.ts +6 -0
- package/dist/esm/lib/create-weekly-report/types/Device.d.ts +5 -0
- package/dist/esm/lib/create-weekly-report/types/DuplicatedButPastAuditCompleted.d.ts +8 -0
- package/dist/esm/lib/create-weekly-report/types/Farm.d.ts +20 -0
- package/dist/esm/lib/create-weekly-report/types/FarmStatus.d.ts +14 -0
- package/dist/esm/lib/create-weekly-report/types/GCAServerResponse.d.ts +6 -0
- package/dist/esm/lib/create-weekly-report/types/GetEquipmentDataHandlerParams.d.ts +5 -0
- package/dist/esm/lib/create-weekly-report/types/PayoutWalletAndSplit.d.ts +17 -0
- package/dist/esm/lib/create-weekly-report/types/PayoutWalletAndSplitWithRewardSplits.d.ts +15 -0
- package/dist/esm/lib/create-weekly-report/types/RewardSplit copy.d.ts +5 -0
- package/dist/esm/lib/create-weekly-report/types/RewardSplit.d.ts +5 -0
- package/dist/esm/lib/create-weekly-report/types/RewardSplits copy.d.ts +2 -0
- package/dist/esm/lib/create-weekly-report/types/RewardSplits.d.ts +2 -0
- package/dist/esm/lib/create-weekly-report/types/SlotRange.d.ts +4 -0
- package/dist/esm/lib/create-weekly-report/types/WeekAndSlotRange.d.ts +5 -0
- package/dist/esm/lib/create-weekly-report/types/index.d.ts +7 -0
- package/dist/esm/lib/create-weekly-report/types/merkle.d.ts +10 -0
- package/dist/esm/lib/create-weekly-report/types/stashed-Farm.d.ts +20 -0
- package/dist/esm/lib/create-weekly-report/utils/accumulate-leaf-weights.d.ts +2 -0
- package/dist/esm/lib/create-weekly-report/utils/custom-to-fixed.d.ts +1 -0
- package/dist/esm/lib/create-weekly-report/utils/fetch-farms-for-week.d.ts +12 -0
- package/dist/esm/lib/create-weekly-report/utils/from-bigint.d.ts +7 -0
- package/dist/esm/lib/create-weekly-report/utils/greater-than-max-deviation.d.ts +1 -0
- package/dist/esm/lib/create-weekly-report/utils/hashLeaf.d.ts +7 -0
- package/dist/esm/lib/create-weekly-report/utils/multiply-bigInt-by-decimal-percentage.d.ts +1 -0
- package/dist/esm/lib/create-weekly-report/utils/to-bigint.d.ts +7 -0
- package/dist/esm/utils/custom-to-fixed.d.ts +1 -0
- package/dist/esm/utils/greater-than-max-deviation.d.ts +1 -0
- package/dist/esm/utils/hash-leaf.d.ts +7 -0
- package/package.json +22 -22
- package/rollup.config.js +28 -0
- package/src/constants/regex.ts +2 -0
- package/src/constants/urls.ts +3 -0
- package/src/constants/weights.ts +15 -0
- package/src/index.ts +2 -257
- package/src/lib/create-weekly-report/index.ts +691 -0
- package/src/lib/create-weekly-report/types/Audit.ts +41 -0
- package/src/{types → lib/create-weekly-report/types}/AuditCompleted.ts +3 -1
- package/src/lib/create-weekly-report/types/AuditInherited.ts +8 -0
- package/src/lib/create-weekly-report/types/Device.ts +7 -0
- package/src/lib/create-weekly-report/types/DuplicatedButPastAuditCompleted.ts +10 -0
- package/src/lib/create-weekly-report/types/Farm.ts +22 -0
- package/src/{types → lib/create-weekly-report/types}/FarmStatus.ts +6 -6
- package/src/{types → lib/create-weekly-report/types}/GCAServerResponse.ts +5 -1
- package/src/lib/create-weekly-report/types/GetEquipmentDataHandlerParams.ts +7 -0
- package/src/lib/create-weekly-report/types/PayoutWalletAndSplit.ts +25 -0
- package/src/lib/create-weekly-report/types/PayoutWalletAndSplitWithRewardSplits.ts +23 -0
- package/src/lib/create-weekly-report/types/RewardSplit copy.ts +7 -0
- package/src/lib/create-weekly-report/types/RewardSplit.ts +7 -0
- package/{dist/types/Device.js → src/lib/create-weekly-report/types/RewardSplits copy.ts } +3 -2
- package/src/{types → lib/create-weekly-report/types}/RewardSplits.ts +1 -1
- package/src/{types → lib/create-weekly-report/types}/SlotRange.ts +4 -1
- package/src/{types → lib/create-weekly-report/types}/WeekAndSlotRange.ts +4 -1
- package/src/lib/create-weekly-report/types/index.ts +7 -0
- package/src/lib/create-weekly-report/types/merkle.ts +11 -0
- package/src/lib/create-weekly-report/types/stashed-Farm.ts +22 -0
- package/src/lib/create-weekly-report/utils/accumulate-leaf-weights.ts +17 -0
- package/src/lib/create-weekly-report/utils/custom-to-fixed.ts +9 -0
- package/src/lib/create-weekly-report/utils/fetch-farms-for-week.ts +30 -0
- package/src/lib/create-weekly-report/utils/from-bigint.ts +12 -0
- package/src/lib/create-weekly-report/utils/greater-than-max-deviation.ts +9 -0
- package/src/lib/create-weekly-report/utils/hashLeaf.ts +20 -0
- package/src/lib/create-weekly-report/utils/multiply-bigInt-by-decimal-percentage.ts +15 -0
- package/src/lib/create-weekly-report/utils/to-bigint.ts +16 -0
- package/src/utils/custom-to-fixed.ts +9 -0
- package/src/utils/greater-than-max-deviation.ts +9 -0
- package/tsconfig.json +4 -4
- package/dist/constants/index.js +0 -2
- package/dist/constants/index.js.map +0 -1
- package/dist/default-values/gca-to-server-urls.js +0 -9
- package/dist/default-values/gca-to-server-urls.js.map +0 -1
- package/dist/hash-leaf.js +0 -12
- package/dist/hash-leaf.js.map +0 -1
- package/dist/index.d.ts +0 -44
- package/dist/index.js +0 -176
- package/dist/index.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/types/AuditCompleted.js +0 -3
- package/dist/types/AuditCompleted.js.map +0 -1
- package/dist/types/AuditInherited.js +0 -3
- package/dist/types/AuditInherited.js.map +0 -1
- package/dist/types/Device.js.map +0 -1
- package/dist/types/DuplicatedButPastAuditCompleted.js +0 -2
- package/dist/types/DuplicatedButPastAuditCompleted.js.map +0 -1
- package/dist/types/Farm.js +0 -2
- package/dist/types/Farm.js.map +0 -1
- package/dist/types/FarmStatus.js +0 -2
- package/dist/types/FarmStatus.js.map +0 -1
- package/dist/types/GCAAndServerUrl.d.ts +0 -5
- package/dist/types/GCAAndServerUrl.js +0 -2
- package/dist/types/GCAAndServerUrl.js.map +0 -1
- package/dist/types/GCAServerResponse.js +0 -2
- package/dist/types/GCAServerResponse.js.map +0 -1
- package/dist/types/GetEquipmentDataHandlerParams.js +0 -3
- package/dist/types/GetEquipmentDataHandlerParams.js.map +0 -1
- package/dist/types/PayoutWalletAndSplit.js +0 -2
- package/dist/types/PayoutWalletAndSplit.js.map +0 -1
- package/dist/types/PayoutWalletAndSplitWithRewardSplits.js +0 -2
- package/dist/types/PayoutWalletAndSplitWithRewardSplits.js.map +0 -1
- package/dist/types/RewardSplit.js +0 -3
- package/dist/types/RewardSplit.js.map +0 -1
- package/dist/types/RewardSplits.js +0 -2
- package/dist/types/RewardSplits.js.map +0 -1
- package/dist/types/SlotRange.js +0 -3
- package/dist/types/SlotRange.js.map +0 -1
- package/dist/types/WeekAndSlotRange.js +0 -2
- package/dist/types/WeekAndSlotRange.js.map +0 -1
- package/dist/types/index.d.ts +0 -14
- package/dist/types/index.js +0 -15
- package/dist/types/index.js.map +0 -1
- package/dist/types/stashed-Farm.js +0 -2
- package/dist/types/stashed-Farm.js.map +0 -1
- package/src/types/AuditInherited.ts +0 -3
- package/src/types/Device.ts +0 -3
- package/src/types/DuplicatedButPastAuditCompleted.ts +0 -4
- package/src/types/Farm.ts +0 -22
- package/src/types/GCAAndServerUrl.ts +0 -5
- package/src/types/GetEquipmentDataHandlerParams.ts +0 -3
- package/src/types/PayoutWalletAndSplit.ts +0 -5
- package/src/types/PayoutWalletAndSplitWithRewardSplits.ts +0 -6
- package/src/types/RewardSplit.ts +0 -3
- package/src/types/index.ts +0 -14
- package/src/types/stashed-Farm.ts +0 -22
- /package/dist/{constants → cjs/constants}/index.d.ts +0 -0
- /package/dist/{default-values → cjs/default-values}/gca-to-server-urls.d.ts +0 -0
- /package/dist/{types → cjs/lib/create-weekly-report/types}/AuditCompleted.d.ts +0 -0
- /package/dist/{types → cjs/lib/create-weekly-report/types}/AuditInherited.d.ts +0 -0
- /package/dist/{types → cjs/lib/create-weekly-report/types}/Device.d.ts +0 -0
- /package/dist/{types → cjs/lib/create-weekly-report/types}/DuplicatedButPastAuditCompleted.d.ts +0 -0
- /package/dist/{types → cjs/lib/create-weekly-report/types}/Farm.d.ts +0 -0
- /package/dist/{types → cjs/lib/create-weekly-report/types}/FarmStatus.d.ts +0 -0
- /package/dist/{types → cjs/lib/create-weekly-report/types}/GCAServerResponse.d.ts +0 -0
- /package/dist/{types → cjs/lib/create-weekly-report/types}/GetEquipmentDataHandlerParams.d.ts +0 -0
- /package/dist/{types → cjs/lib/create-weekly-report/types}/PayoutWalletAndSplit.d.ts +0 -0
- /package/dist/{types → cjs/lib/create-weekly-report/types}/PayoutWalletAndSplitWithRewardSplits.d.ts +0 -0
- /package/dist/{types/RewardSplit.d.ts → cjs/lib/create-weekly-report/types/RewardSplit copy.d.ts} +0 -0
- /package/dist/{types/RewardSplits.d.ts → cjs/lib/create-weekly-report/types/RewardSplits copy.d.ts} +0 -0
- /package/dist/{types → cjs/lib/create-weekly-report/types}/SlotRange.d.ts +0 -0
- /package/dist/{types → cjs/lib/create-weekly-report/types}/WeekAndSlotRange.d.ts +0 -0
- /package/dist/{types → cjs/lib/create-weekly-report/types}/stashed-Farm.d.ts +0 -0
- /package/dist/{hash-leaf.d.ts → cjs/lib/create-weekly-report/utils/hashLeaf.d.ts} +0 -0
- /package/src/{hash-leaf.ts → utils/hash-leaf.ts} +0 -0
package/src/index.ts
CHANGED
@@ -1,258 +1,3 @@
|
|
1
|
-
export * from "./types/index";
|
1
|
+
export * from "./lib/create-weekly-report/types/index";
|
2
2
|
export * from "./constants/index";
|
3
|
-
|
4
|
-
import { BigNumber, ethers } from "ethers";
|
5
|
-
|
6
|
-
import { formatUnits, parseUnits } from "viem";
|
7
|
-
import { Farm, GCAServerResponse } from "./types";
|
8
|
-
import { hashLeaf } from "./hash-leaf";
|
9
|
-
|
10
|
-
export type ApiRes = {
|
11
|
-
filteredFarms: Farm[];
|
12
|
-
rawData: GCAServerResponse;
|
13
|
-
multiplier: number;
|
14
|
-
};
|
15
|
-
|
16
|
-
export type MerkleLeafIntermediary = {
|
17
|
-
wallet: string;
|
18
|
-
glowWeight: number;
|
19
|
-
usdgWeight: number;
|
20
|
-
};
|
21
|
-
|
22
|
-
export type FinalLeaf = {
|
23
|
-
wallet: string;
|
24
|
-
glowWeight: string;
|
25
|
-
usdgWeight: string;
|
26
|
-
};
|
27
|
-
|
28
|
-
/**
|
29
|
-
* @dev This is actually not as intuitive as it seems.
|
30
|
-
* Glow actually has 18 decimals, but glow weight is based on the amount of protocol fees (USDC) that the farm paid
|
31
|
-
* Therefore, the weight is based on the amount of USDC that was paid, which has 6 decimals
|
32
|
-
*/
|
33
|
-
const GLOW_WEIGHT_DECIMAL_PRECISION = 6;
|
34
|
-
|
35
|
-
/**
|
36
|
-
* @dev This is actually not as intuitive as it seems.
|
37
|
-
* USDG weight is based on the amount of carbon credits produced, but the max value of a weight is ((2*64)-1) / 5 so we need to choose sensible precision to make sure that number never overflows
|
38
|
-
*/
|
39
|
-
const USDG_WEIGHT_DECIMAL_PRECISION = 6;
|
40
|
-
export type CreateWeeklyReportArgs = {
|
41
|
-
week: number;
|
42
|
-
gcaUrls: string[];
|
43
|
-
apiUrl: string;
|
44
|
-
};
|
45
|
-
// const GCA_URLS = ["http://95.217.194.59:35015"];
|
46
|
-
async function getFarmsForWeek(args: CreateWeeklyReportArgs): Promise<ApiRes> {
|
47
|
-
const { week: weekNumber, gcaUrls, apiUrl } = args;
|
48
|
-
const url = apiUrl;
|
49
|
-
// const url = "http://0.0.0.0:3005/headline_farm_stats";
|
50
|
-
const body = {
|
51
|
-
urls: gcaUrls,
|
52
|
-
week_number: weekNumber,
|
53
|
-
with_full_data: true,
|
54
|
-
include_unassigned_farms: false,
|
55
|
-
with_raw_data: true,
|
56
|
-
};
|
57
|
-
|
58
|
-
const res = await fetch(url, {
|
59
|
-
method: "POST",
|
60
|
-
body: JSON.stringify(body),
|
61
|
-
headers: {
|
62
|
-
"Content-Type": "application/json",
|
63
|
-
},
|
64
|
-
});
|
65
|
-
if (!res.ok) {
|
66
|
-
const errorText = await res.text();
|
67
|
-
throw new Error(
|
68
|
-
`Failed to fetch farms for week ${weekNumber}: ${
|
69
|
-
errorText || res.statusText
|
70
|
-
}`
|
71
|
-
);
|
72
|
-
}
|
73
|
-
const _json = await res.json();
|
74
|
-
return _json as ApiRes;
|
75
|
-
}
|
76
|
-
|
77
|
-
export async function createWeeklyReport(args: CreateWeeklyReportArgs) {
|
78
|
-
const map = new Map<string, MerkleLeafIntermediary>();
|
79
|
-
|
80
|
-
function addValueToMap(
|
81
|
-
key: string,
|
82
|
-
value: MerkleLeafIntermediary,
|
83
|
-
map: Map<string, MerkleLeafIntermediary>
|
84
|
-
) {
|
85
|
-
if (map.has(key)) {
|
86
|
-
//+= everything
|
87
|
-
const existingValue = map.get(key)!;
|
88
|
-
existingValue.glowWeight += value.glowWeight;
|
89
|
-
existingValue.usdgWeight += value.usdgWeight;
|
90
|
-
map.set(key, existingValue);
|
91
|
-
} else {
|
92
|
-
map.set(key, value);
|
93
|
-
}
|
94
|
-
}
|
95
|
-
const apiResposne = await getFarmsForWeek(args);
|
96
|
-
const farms = apiResposne.filteredFarms;
|
97
|
-
const rawData = apiResposne.rawData;
|
98
|
-
let totalCreditsProduced: number = 0;
|
99
|
-
//log the total farms in farms
|
100
|
-
for (const farm of farms) {
|
101
|
-
// const {
|
102
|
-
// shortId,
|
103
|
-
// payoutWallet,
|
104
|
-
// installerGlowFeePercent,
|
105
|
-
// installerUsdgFeePercent,
|
106
|
-
// } = farm;
|
107
|
-
// const key = farm.payoutWallet;
|
108
|
-
// farm.carbonCreditsProduced =
|
109
|
-
farm.status === "Unassigned" ? 0 : farm.carbonCreditsProduced;
|
110
|
-
console.log(farm.status);
|
111
|
-
if (farm.carbonCreditsProduced < 0) {
|
112
|
-
throw new Error("Carbon credits produced is less than 0");
|
113
|
-
}
|
114
|
-
totalCreditsProduced += farm.carbonCreditsProduced;
|
115
|
-
// const value = {
|
116
|
-
// wallet: payoutWallet,
|
117
|
-
// glowWeight: farm.weeklyPayment * (1 - installerGlowFeePercent),
|
118
|
-
// usdgWeight: farm.carbonCreditsProduced * (1 - installerUsdgFeePercent),
|
119
|
-
// };
|
120
|
-
|
121
|
-
// const installerKey = farm.installerWallet;
|
122
|
-
// const installerValue = {
|
123
|
-
// wallet: farm.installerWallet,
|
124
|
-
// glowWeight: farm.weeklyPayment * installerGlowFeePercent,
|
125
|
-
// usdgWeight: farm.carbonCreditsProduced * installerUsdgFeePercent,
|
126
|
-
// };
|
127
|
-
if (!farm.rewardSplits) throw new Error("No reward splits");
|
128
|
-
const sumOfRewardSplitsGlowWeight = farm.rewardSplits.reduce(
|
129
|
-
(acc, rewardSplit) => acc + rewardSplit.glowSplitPercent,
|
130
|
-
0
|
131
|
-
);
|
132
|
-
const sumOfRewardSplitsUSDGWeight = farm.rewardSplits.reduce(
|
133
|
-
(acc, rewardSplit) => acc + rewardSplit.usdgSplitPercent,
|
134
|
-
0
|
135
|
-
);
|
136
|
-
if (sumOfRewardSplitsGlowWeight !== 1)
|
137
|
-
throw new Error("Glow weight splits do not add up to 1");
|
138
|
-
if (sumOfRewardSplitsUSDGWeight !== 1)
|
139
|
-
throw new Error("USDG weight splits do not add up to 1");
|
140
|
-
for (const rewardSplit of farm.rewardSplits) {
|
141
|
-
const value = {
|
142
|
-
wallet: rewardSplit.walletAddress,
|
143
|
-
glowWeight: farm.weeklyPayment * rewardSplit.glowSplitPercent,
|
144
|
-
usdgWeight: farm.carbonCreditsProduced * rewardSplit.usdgSplitPercent,
|
145
|
-
};
|
146
|
-
|
147
|
-
addValueToMap(rewardSplit.walletAddress, value, map);
|
148
|
-
}
|
149
|
-
// addValueToMap(key, value, map);
|
150
|
-
// addValueToMap(installerKey, installerValue, map);
|
151
|
-
}
|
152
|
-
|
153
|
-
const merkleLeaves = Array.from(map.values());
|
154
|
-
const finalLeaves: FinalLeaf[] = merkleLeaves.map(
|
155
|
-
({ wallet, glowWeight, usdgWeight }) => ({
|
156
|
-
wallet,
|
157
|
-
glowWeight: parseUnits(
|
158
|
-
glowWeight.toString(),
|
159
|
-
GLOW_WEIGHT_DECIMAL_PRECISION
|
160
|
-
).toString(),
|
161
|
-
usdgWeight: parseUnits(
|
162
|
-
usdgWeight.toString(),
|
163
|
-
USDG_WEIGHT_DECIMAL_PRECISION
|
164
|
-
).toString(),
|
165
|
-
})
|
166
|
-
);
|
167
|
-
const leaves = finalLeaves.map((leaf) =>
|
168
|
-
hashLeaf({
|
169
|
-
address: leaf.wallet,
|
170
|
-
glowWeight: leaf.glowWeight,
|
171
|
-
usdcWeight: leaf.usdgWeight,
|
172
|
-
})
|
173
|
-
);
|
174
|
-
|
175
|
-
const tree = new MerkleTree(leaves, ethers.utils.keccak256, { sort: true });
|
176
|
-
const root = tree.getHexRoot();
|
177
|
-
|
178
|
-
const totalGlowWeightFinalizedLeavesSum = finalLeaves.reduce(
|
179
|
-
(acc, { glowWeight }) => acc.add(glowWeight),
|
180
|
-
ethers.BigNumber.from(0)
|
181
|
-
);
|
182
|
-
const totalGCCWeightFinalizedLeavesSum = finalLeaves.reduce(
|
183
|
-
(acc, { usdgWeight }) => acc.add(usdgWeight),
|
184
|
-
ethers.BigNumber.from(0)
|
185
|
-
);
|
186
|
-
|
187
|
-
const headlineStats = {
|
188
|
-
weekNumber: args.week,
|
189
|
-
totalCreditsProduced,
|
190
|
-
totalCreditsProducedBN: parseUnits(
|
191
|
-
totalCreditsProduced.toString(),
|
192
|
-
18
|
193
|
-
).toString(),
|
194
|
-
totalGlowWeightInFinalized: totalGlowWeightFinalizedLeavesSum.toString(),
|
195
|
-
totalGlowWeightHuman: formatUnits(
|
196
|
-
BigInt(totalGlowWeightFinalizedLeavesSum.toString()),
|
197
|
-
GLOW_WEIGHT_DECIMAL_PRECISION
|
198
|
-
).toString(),
|
199
|
-
totalUSDGWeightInFinalized: totalGCCWeightFinalizedLeavesSum.toString(),
|
200
|
-
totalUSDGWeightHuman: formatUnits(
|
201
|
-
BigInt(totalGCCWeightFinalizedLeavesSum.toString()),
|
202
|
-
USDG_WEIGHT_DECIMAL_PRECISION
|
203
|
-
).toString(),
|
204
|
-
root: root,
|
205
|
-
};
|
206
|
-
|
207
|
-
const farmsWithMerkleProofs = finalLeaves.map((leaf) => {
|
208
|
-
const hashedLeaf = hashLeaf({
|
209
|
-
address: leaf.wallet,
|
210
|
-
glowWeight: leaf.glowWeight,
|
211
|
-
usdcWeight: leaf.usdgWeight,
|
212
|
-
});
|
213
|
-
const proof = tree.getHexProof(hashedLeaf);
|
214
|
-
const isValid = tree.verify(proof, hashedLeaf, root);
|
215
|
-
if (!isValid) {
|
216
|
-
throw new Error("Invalid proof");
|
217
|
-
}
|
218
|
-
return {
|
219
|
-
...leaf,
|
220
|
-
proof,
|
221
|
-
};
|
222
|
-
});
|
223
|
-
|
224
|
-
//-----------------------------------------------------//
|
225
|
-
//-Some invariant tests in case something got messed up//
|
226
|
-
//-----------------------------------------------------//
|
227
|
-
//Make sure that the sum of all the glow weight is equal to the sum of all the glow weight in the final leaves
|
228
|
-
let forLoopedGlowWeightSum: ethers.BigNumber = ethers.BigNumber.from(0);
|
229
|
-
for (const farm of farmsWithMerkleProofs) {
|
230
|
-
forLoopedGlowWeightSum = forLoopedGlowWeightSum.add(
|
231
|
-
BigNumber.from(farm.glowWeight)
|
232
|
-
);
|
233
|
-
}
|
234
|
-
|
235
|
-
if (!forLoopedGlowWeightSum.eq(totalGlowWeightFinalizedLeavesSum)) {
|
236
|
-
throw new Error("Glow weight sum is not equal");
|
237
|
-
}
|
238
|
-
|
239
|
-
//do the same for gcc
|
240
|
-
let forLoopedGCCWeightSum: ethers.BigNumber = ethers.BigNumber.from(0);
|
241
|
-
for (const farm of farmsWithMerkleProofs) {
|
242
|
-
forLoopedGCCWeightSum = forLoopedGCCWeightSum.add(
|
243
|
-
BigNumber.from(farm.usdgWeight)
|
244
|
-
);
|
245
|
-
}
|
246
|
-
|
247
|
-
if (!forLoopedGCCWeightSum.eq(totalGCCWeightFinalizedLeavesSum)) {
|
248
|
-
throw new Error("GCC weight sum is not equal");
|
249
|
-
}
|
250
|
-
|
251
|
-
return {
|
252
|
-
headlineStats,
|
253
|
-
finalLeaves,
|
254
|
-
farmsWithMerkleProofs,
|
255
|
-
farms,
|
256
|
-
rawData,
|
257
|
-
};
|
258
|
-
}
|
3
|
+
export { createWeeklyReport } from "./lib/create-weekly-report/index";
|