@lidofinance/lsv-cli 1.0.0-alpha.57 → 1.0.0-alpha.59
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/dist/features/deposits/no-pdg.d.ts +2 -1
- package/dist/features/deposits/no-pdg.js +13 -2
- package/dist/features/deposits/no-pdg.js.map +1 -1
- package/dist/features/pdg.js +6 -2
- package/dist/features/pdg.js.map +1 -1
- package/dist/features/utils/index.d.ts +1 -0
- package/dist/features/utils/index.js +1 -0
- package/dist/features/utils/index.js.map +1 -1
- package/dist/features/utils/quarantine.d.ts +23 -0
- package/dist/features/utils/quarantine.js +47 -0
- package/dist/features/utils/quarantine.js.map +1 -0
- package/dist/features/utils/report-fresh.d.ts +1 -0
- package/dist/features/utils/report-fresh.js +18 -0
- package/dist/features/utils/report-fresh.js.map +1 -1
- package/dist/features/vault-operations/vault-health.js +4 -1
- package/dist/features/vault-operations/vault-health.js.map +1 -1
- package/dist/features/vault-operations/vault-info.js +5 -3
- package/dist/features/vault-operations/vault-info.js.map +1 -1
- package/dist/features/vault-operations/vault-overview.js +4 -2
- package/dist/features/vault-operations/vault-overview.js.map +1 -1
- package/dist/features/vault-operations/vault-roles.d.ts +1 -2
- package/dist/features/vault-operations/vaults-by-role.js +7 -6
- package/dist/features/vault-operations/vaults-by-role.js.map +1 -1
- package/dist/programs/account/read.js +1 -35
- package/dist/programs/account/read.js.map +1 -1
- package/dist/programs/account/write.js +8 -8
- package/dist/programs/account/write.js.map +1 -1
- package/dist/programs/contracts/dashboard/config.js +0 -4
- package/dist/programs/contracts/dashboard/config.js.map +1 -1
- package/dist/programs/contracts/dashboard/read.js +32 -4
- package/dist/programs/contracts/dashboard/read.js.map +1 -1
- package/dist/programs/contracts/dashboard/write.js +19 -2
- package/dist/programs/contracts/dashboard/write.js.map +1 -1
- package/dist/programs/pdg-helpers.js +1 -1
- package/dist/programs/pdg-helpers.js.map +1 -1
- package/dist/programs/use-cases/deposits/read.js +65 -1
- package/dist/programs/use-cases/deposits/read.js.map +1 -1
- package/dist/programs/use-cases/deposits/write.js +4 -3
- package/dist/programs/use-cases/deposits/write.js.map +1 -1
- package/dist/programs/use-cases/metrics/read.js +66 -6
- package/dist/programs/use-cases/metrics/read.js.map +1 -1
- package/dist/programs/use-cases/report/read.js +30 -10
- package/dist/programs/use-cases/report/read.js.map +1 -1
- package/dist/programs/use-cases/report/write.js +4 -4
- package/dist/programs/use-cases/report/write.js.map +1 -1
- package/dist/programs/use-cases/vault-operations/read.js +17 -5
- package/dist/programs/use-cases/vault-operations/read.js.map +1 -1
- package/dist/programs/use-cases/vault-operations/write.js +52 -2
- package/dist/programs/use-cases/vault-operations/write.js.map +1 -1
- package/dist/tests/utils/ipfs.test.js +3 -3
- package/dist/tests/utils/ipfs.test.js.map +1 -1
- package/dist/utils/charts/blessed/charts-apr.d.ts +2 -2
- package/dist/utils/charts/blessed/charts-apr.js +12 -12
- package/dist/utils/charts/blessed/charts-apr.js.map +1 -1
- package/dist/utils/charts/blessed/charts-rewards.js +3 -3
- package/dist/utils/charts/blessed/charts-rewards.js.map +1 -1
- package/dist/utils/charts/blessed/constants.d.ts +1 -1
- package/dist/utils/charts/blessed/constants.js +1 -1
- package/dist/utils/charts/blessed/constants.js.map +1 -1
- package/dist/utils/charts/blessed/datasets/bottom-line.js +3 -2
- package/dist/utils/charts/blessed/datasets/bottom-line.js.map +1 -1
- package/dist/utils/charts/blessed/datasets/{efficiency.d.ts → carry-spread.d.ts} +1 -1
- package/dist/utils/charts/blessed/datasets/{efficiency.js → carry-spread.js} +9 -8
- package/dist/utils/charts/blessed/datasets/carry-spread.js.map +1 -0
- package/dist/utils/charts/blessed/datasets/gross-staking-apr.js +4 -3
- package/dist/utils/charts/blessed/datasets/gross-staking-apr.js.map +1 -1
- package/dist/utils/charts/blessed/datasets/gross-staking-rewards.js +4 -3
- package/dist/utils/charts/blessed/datasets/gross-staking-rewards.js.map +1 -1
- package/dist/utils/charts/blessed/datasets/index.d.ts +1 -1
- package/dist/utils/charts/blessed/datasets/index.js +1 -1
- package/dist/utils/charts/blessed/datasets/index.js.map +1 -1
- package/dist/utils/charts/blessed/datasets/lido-apr.js +3 -2
- package/dist/utils/charts/blessed/datasets/lido-apr.js.map +1 -1
- package/dist/utils/charts/blessed/datasets/net-staking-apr.js +4 -3
- package/dist/utils/charts/blessed/datasets/net-staking-apr.js.map +1 -1
- package/dist/utils/charts/blessed/datasets/net-staking-rewards.js +4 -3
- package/dist/utils/charts/blessed/datasets/net-staking-rewards.js.map +1 -1
- package/dist/utils/charts/blessed/datasets/node-operator-rewards.js +4 -3
- package/dist/utils/charts/blessed/datasets/node-operator-rewards.js.map +1 -1
- package/dist/utils/charts/blessed/datasets/prepare-metrics.d.ts +15 -15
- package/dist/utils/charts/blessed/datasets/prepare-metrics.js +15 -15
- package/dist/utils/charts/blessed/datasets/prepare-metrics.js.map +1 -1
- package/dist/utils/charts/blessed/datasets/types.d.ts +1 -1
- package/dist/utils/charts/blessed/utils.d.ts +0 -1
- package/dist/utils/charts/blessed/utils.js +0 -5
- package/dist/utils/charts/blessed/utils.js.map +1 -1
- package/dist/utils/charts/metrics.d.ts +1 -1
- package/dist/utils/charts/metrics.js +2 -2
- package/dist/utils/charts/metrics.js.map +1 -1
- package/dist/utils/charts/simple/simple-charts.js +6 -10
- package/dist/utils/charts/simple/simple-charts.js.map +1 -1
- package/dist/utils/commands/confirmations.d.ts +3 -1
- package/dist/utils/commands/confirmations.js +3 -0
- package/dist/utils/commands/confirmations.js.map +1 -1
- package/dist/utils/commands/report.js +11 -5
- package/dist/utils/commands/report.js.map +1 -1
- package/dist/utils/fetchCL.js +20 -8
- package/dist/utils/fetchCL.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/ipfs.d.ts +6 -3
- package/dist/utils/ipfs.js +21 -15
- package/dist/utils/ipfs.js.map +1 -1
- package/dist/utils/report/report-proof.d.ts +3 -9
- package/dist/utils/report/report-proof.js +8 -8
- package/dist/utils/report/report-proof.js.map +1 -1
- package/dist/utils/report/report.d.ts +0 -30
- package/dist/utils/report/report.js +19 -46
- package/dist/utils/report/report.js.map +1 -1
- package/dist/utils/report/statistic-data.d.ts +1 -1
- package/dist/utils/report/types.d.ts +1 -23
- package/dist/utils/statistic/report-statistic.d.ts +2 -2
- package/dist/utils/statistic/report-statistic.js +5 -5
- package/dist/utils/statistic/report-statistic.js.map +1 -1
- package/dist/utils/timestamp.d.ts +1 -0
- package/dist/utils/timestamp.js +10 -0
- package/dist/utils/timestamp.js.map +1 -0
- package/dist/version/index.js +1 -1
- package/package.json +1 -1
- package/dist/utils/charts/blessed/datasets/efficiency.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simple-charts.js","sourceRoot":"","sources":["../../../../utils/charts/simple/simple-charts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,WAAW,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EACL,QAAQ,EACR,OAAO,EACP,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,EACL,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,
|
|
1
|
+
{"version":3,"file":"simple-charts.js","sourceRoot":"","sources":["../../../../utils/charts/simple/simple-charts.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,11 +4,13 @@ type FunctionArgsMap = {
|
|
|
4
4
|
setConfirmExpiry: readonly [bigint];
|
|
5
5
|
setNodeOperatorFeeBP: readonly [bigint];
|
|
6
6
|
changeTier: readonly [Address, bigint, bigint];
|
|
7
|
+
transferVaultOwnership: readonly [Address];
|
|
7
8
|
};
|
|
8
9
|
export declare const CONFIRM_METHODS_MAP: {
|
|
9
10
|
readonly setConfirmExpiry: (args: FunctionArgsMap["setConfirmExpiry"]) => string;
|
|
10
11
|
readonly setNodeOperatorFeeBP: (args: FunctionArgsMap["setNodeOperatorFeeBP"]) => string;
|
|
11
12
|
readonly changeTier: (args: FunctionArgsMap["changeTier"]) => string;
|
|
13
|
+
readonly transferVaultOwnership: (args: FunctionArgsMap["transferVaultOwnership"]) => string;
|
|
12
14
|
};
|
|
13
15
|
type FunctionName = keyof typeof CONFIRM_METHODS_MAP;
|
|
14
16
|
type DecodedData = {
|
|
@@ -27,7 +29,7 @@ type ConfirmationsInfo = {
|
|
|
27
29
|
};
|
|
28
30
|
export type LogsData = Record<Hex, ConfirmationsInfo>;
|
|
29
31
|
type ConfirmationContract = GetContractReturnType<typeof AccessControlConfirmableAbi, WalletClient>;
|
|
30
|
-
export declare const formatConfirmationArgs: (args: readonly [bigint] | readonly [Address, bigint, bigint], functionName: FunctionName) => string;
|
|
32
|
+
export declare const formatConfirmationArgs: (args: readonly [bigint] | readonly [Address, bigint, bigint] | readonly [Address], functionName: FunctionName) => string;
|
|
31
33
|
export declare const getConfirmationsInfo: <T extends ConfirmationContract>(contract: T) => Promise<LogsData | undefined>;
|
|
32
34
|
export declare const confirmProposal: <T extends ConfirmationContract>(contract: T) => Promise<ConfirmationsInfo | undefined>;
|
|
33
35
|
export {};
|
|
@@ -8,6 +8,7 @@ export const CONFIRM_METHODS_MAP = {
|
|
|
8
8
|
setConfirmExpiry: (args) => `${Number(args[0]) / 3600} hours`,
|
|
9
9
|
setNodeOperatorFeeBP: (args) => formatBP(args[0]),
|
|
10
10
|
changeTier: (args) => `vault: ${args[0]}, tier: ${args[1]}, requested share limit: ${formatEther(args[2])} shares`,
|
|
11
|
+
transferVaultOwnership: (args) => `new owner: ${args[0]}`,
|
|
11
12
|
};
|
|
12
13
|
export const formatConfirmationArgs = (args, functionName) => {
|
|
13
14
|
switch (functionName) {
|
|
@@ -17,6 +18,8 @@ export const formatConfirmationArgs = (args, functionName) => {
|
|
|
17
18
|
return CONFIRM_METHODS_MAP.setNodeOperatorFeeBP(args);
|
|
18
19
|
case 'changeTier':
|
|
19
20
|
return CONFIRM_METHODS_MAP.changeTier(args);
|
|
21
|
+
case 'transferVaultOwnership':
|
|
22
|
+
return CONFIRM_METHODS_MAP.transferVaultOwnership(args);
|
|
20
23
|
default:
|
|
21
24
|
throw new Error(`Unknown function: ${functionName}`);
|
|
22
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirmations.js","sourceRoot":"","sources":["../../../utils/commands/confirmations.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAIlB,WAAW,GACZ,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EACL,gBAAgB,EAChB,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,mBAAmB,GACpB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,YAAY,EAA+B,MAAM,KAAK,CAAC;AAEhE,MAAM,kBAAkB,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"confirmations.js","sourceRoot":"","sources":["../../../utils/commands/confirmations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { program } from '../../command/index.js';
|
|
2
|
+
import { getLazyOracleContract, getVaultHubContract } from '../../contracts/index.js';
|
|
3
|
+
import { callReadMethod, callReadMethodSilent, logCancel, callWriteMethodWithReceipt, confirmOperation, getReportProofByVault, } from '../index.js';
|
|
3
4
|
export const submitReport = async ({ vault, gateway, }) => {
|
|
4
5
|
const lazyOracleContract = await getLazyOracleContract();
|
|
6
|
+
const vaultHubContract = await getVaultHubContract();
|
|
5
7
|
const [_vaultsDataTimestamp, _vaultsDataTreeRoot, vaultsDataReportCid] = await callReadMethod(lazyOracleContract, 'latestReportData');
|
|
6
|
-
await
|
|
8
|
+
const isReportFresh = await callReadMethodSilent(vaultHubContract, 'isReportFresh', [vault]);
|
|
9
|
+
if (isReportFresh) {
|
|
10
|
+
logCancel('Report is fresh. You dont need to submit it again');
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const { cacheUse } = program.opts();
|
|
7
14
|
const proof = await getReportProofByVault({
|
|
8
15
|
vault,
|
|
9
16
|
cid: vaultsDataReportCid,
|
|
10
17
|
gateway,
|
|
11
|
-
});
|
|
12
|
-
await fetchAndVerifyFile(vaultsDataReportCid, gateway);
|
|
18
|
+
}, cacheUse);
|
|
13
19
|
const confirm = await confirmOperation(`Are you sure you want to submit report for vault ${vault}?
|
|
14
20
|
Total value wei: ${proof.data.totalValueWei}
|
|
15
21
|
Fee: ${proof.data.fee}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../../utils/commands/report.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../../utils/commands/report.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACvE,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,SAAS,EACT,0BAA0B,EAC1B,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,OAAO,CAAC;AAOf,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,EACjC,KAAK,EACL,OAAO,GACU,EAAiB,EAAE;IACpC,MAAM,kBAAkB,GAAG,MAAM,qBAAqB,EAAE,CAAC;IACzD,MAAM,gBAAgB,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAErD,MAAM,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,GACpE,MAAM,cAAc,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;IAC/D,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAC9C,gBAAgB,EAChB,eAAe,EACf,CAAC,KAAK,CAAC,CACR,CAAC;IAEF,IAAI,aAAa,EAAE,CAAC;QAClB,SAAS,CAAC,mDAAmD,CAAC,CAAC;QAC/D,OAAO;IACT,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IACpC,MAAM,KAAK,GAAG,MAAM,qBAAqB,CACvC;QACE,KAAK;QACL,GAAG,EAAE,mBAAmB;QACxB,OAAO;KACR,EACD,QAAQ,CACT,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,gBAAgB,CACpC,oDAAoD,KAAK;2BAClC,KAAK,CAAC,IAAI,CAAC,aAAa;eACpC,KAAK,CAAC,IAAI,CAAC,GAAG;4BACD,KAAK,CAAC,IAAI,CAAC,eAAe;4BAC1B,KAAK,CAAC,IAAI,CAAC,eAAe;SAC7C,CACN,CAAC;IACF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,SAAS,CAAC,sBAAsB,CAAC,CAAC;QAClC,OAAO;IACT,CAAC;IAED,MAAM,0BAA0B,CAAC;QAC/B,QAAQ,EAAE,kBAAkB;QAC5B,UAAU,EAAE,iBAAiB;QAC7B,OAAO,EAAE;YACP,KAAK;YACL,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;YACtB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;YAClC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;YAClC,KAAK,CAAC,KAAK;SACZ;KACF,CAAC,CAAC;AACL,CAAC,CAAC"}
|
package/dist/utils/fetchCL.js
CHANGED
|
@@ -14,19 +14,25 @@ export const SupportedFork = {
|
|
|
14
14
|
};
|
|
15
15
|
export const fetchBeaconHeader = async (stateId, clURL) => {
|
|
16
16
|
const url = clURL || getConfig().CL_URL;
|
|
17
|
+
if (!url) {
|
|
18
|
+
throw new Error('CL_URL is not set. CL_URL is required for fetching beacon header');
|
|
19
|
+
}
|
|
17
20
|
try {
|
|
18
|
-
const beaconHeaderResp = await fetch(`${url}${endpoints.beaconHeader(stateId)}`);
|
|
21
|
+
const beaconHeaderResp = await fetch(`${url.endsWith('/') ? url : url + '/'}${endpoints.beaconHeader(stateId)}`);
|
|
19
22
|
return beaconHeaderResp.json();
|
|
20
23
|
}
|
|
21
24
|
catch (error) {
|
|
22
|
-
printError(error,
|
|
25
|
+
printError(error, `Error fetching beacon header. Used URL: ${url}, stateId: ${stateId}. Please check if the CL_URL environment variable is correct or try to use another CL.`);
|
|
23
26
|
throw error;
|
|
24
27
|
}
|
|
25
28
|
};
|
|
26
29
|
export const fetchBeaconState = async (stateId, clURL) => {
|
|
27
30
|
const url = clURL || getConfig().CL_URL;
|
|
31
|
+
if (!url) {
|
|
32
|
+
throw new Error('CL_URL is not set. CL_URL is required for fetching beacon state');
|
|
33
|
+
}
|
|
28
34
|
try {
|
|
29
|
-
const beaconStateResp = await fetch(`${url}${endpoints.state(stateId)}`, {
|
|
35
|
+
const beaconStateResp = await fetch(`${url.endsWith('/') ? url : url + '/'}${endpoints.state(stateId)}`, {
|
|
30
36
|
headers: { accept: 'application/octet-stream' },
|
|
31
37
|
});
|
|
32
38
|
const { headers } = beaconStateResp;
|
|
@@ -40,29 +46,35 @@ export const fetchBeaconState = async (stateId, clURL) => {
|
|
|
40
46
|
return { stateBodyBytes, forkName };
|
|
41
47
|
}
|
|
42
48
|
catch (error) {
|
|
43
|
-
printError(error,
|
|
49
|
+
printError(error, `Error fetching beacon state. Used URL: ${url}, stateId: ${stateId}. Please check if the CL_URL environment variable is correct or try to use another CL.`);
|
|
44
50
|
throw error;
|
|
45
51
|
}
|
|
46
52
|
};
|
|
47
53
|
export const fetchBeaconHeaderByParentRoot = async (parentRoot, clURL) => {
|
|
48
54
|
const url = clURL || getConfig().CL_URL;
|
|
55
|
+
if (!url) {
|
|
56
|
+
throw new Error('CL_URL is not set. CL_URL is required for fetching beacon header by parent root');
|
|
57
|
+
}
|
|
49
58
|
try {
|
|
50
|
-
const beaconHeaderResp = await fetch(`${url}${endpoints.beaconHeadersByParentRoot(parentRoot)}`);
|
|
59
|
+
const beaconHeaderResp = await fetch(`${url.endsWith('/') ? url : url + '/'}${endpoints.beaconHeadersByParentRoot(parentRoot)}`);
|
|
51
60
|
return beaconHeaderResp.json();
|
|
52
61
|
}
|
|
53
62
|
catch (error) {
|
|
54
|
-
printError(error,
|
|
63
|
+
printError(error, `Error fetching beacon header by parent root. Used URL: ${url}, parentRoot: ${parentRoot}. Please check if the CL_URL environment variable is correct or try to use another CL.`);
|
|
55
64
|
throw error;
|
|
56
65
|
}
|
|
57
66
|
};
|
|
58
67
|
export const fetchValidatorInfo = async (validatorPubkey, clURL) => {
|
|
59
68
|
const url = clURL || getConfig().CL_URL;
|
|
69
|
+
if (!url) {
|
|
70
|
+
throw new Error('CL_URL is not set. CL_URL is required for fetching validator info');
|
|
71
|
+
}
|
|
60
72
|
try {
|
|
61
|
-
const validatorInfoResp = await fetch(`${url}${endpoints.validatorInfo(validatorPubkey)}`);
|
|
73
|
+
const validatorInfoResp = await fetch(`${url.endsWith('/') ? url : url + '/'}${endpoints.validatorInfo(validatorPubkey)}`);
|
|
62
74
|
return validatorInfoResp.json();
|
|
63
75
|
}
|
|
64
76
|
catch (error) {
|
|
65
|
-
printError(error,
|
|
77
|
+
printError(error, `Error fetching validator info. Used URL: ${url}, validatorPubkey: ${validatorPubkey}. Please check if the CL_URL environment variable is correct or try to use another CL.`);
|
|
66
78
|
throw error;
|
|
67
79
|
}
|
|
68
80
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchCL.js","sourceRoot":"","sources":["../../utils/fetchCL.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAgCnC,MAAM,SAAS,GAAG;IAChB,OAAO,EAAE,uBAAuB;IAChC,YAAY,EAAE,CAAC,OAAgB,EAAU,EAAE,CACzC,yBAAyB,OAAO,EAAE;IACpC,yBAAyB,EAAE,CAAC,UAAmB,EAAU,EAAE,CACzD,qCAAqC,UAAU,EAAE;IACnD,KAAK,EAAE,CAAC,OAAgB,EAAU,EAAE,CAAC,8BAA8B,OAAO,EAAE;IAC5E,aAAa,EAAE,CAAC,eAAoB,EAAU,EAAE,CAC9C,wCAAwC,eAAe,EAAE;CAC5D,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,OAAgB,EAAE,KAAc,EAAE,EAAE;IAC1E,MAAM,GAAG,GAAG,KAAK,IAAI,SAAS,EAAE,CAAC,MAAM,CAAC;IAExC,IAAI,CAAC;QACH,MAAM,gBAAgB,GAAG,MAAM,KAAK,CAClC,GAAG,GAAG,GAAG,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"fetchCL.js","sourceRoot":"","sources":["../../utils/fetchCL.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAgCnC,MAAM,SAAS,GAAG;IAChB,OAAO,EAAE,uBAAuB;IAChC,YAAY,EAAE,CAAC,OAAgB,EAAU,EAAE,CACzC,yBAAyB,OAAO,EAAE;IACpC,yBAAyB,EAAE,CAAC,UAAmB,EAAU,EAAE,CACzD,qCAAqC,UAAU,EAAE;IACnD,KAAK,EAAE,CAAC,OAAgB,EAAU,EAAE,CAAC,8BAA8B,OAAO,EAAE;IAC5E,aAAa,EAAE,CAAC,eAAoB,EAAU,EAAE,CAC9C,wCAAwC,eAAe,EAAE;CAC5D,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,OAAgB,EAAE,KAAc,EAAE,EAAE;IAC1E,MAAM,GAAG,GAAG,KAAK,IAAI,SAAS,EAAE,CAAC,MAAM,CAAC;IAExC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,gBAAgB,GAAG,MAAM,KAAK,CAClC,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAC3E,CAAC;QAEF,OAAO,gBAAgB,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CACR,KAAK,EACL,2CAA2C,GAAG,cAAc,OAAO,wFAAwF,CAC5J,CAAC;QACF,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,OAAgB,EAChB,KAAc,EAIb,EAAE;IACH,MAAM,GAAG,GAAG,KAAK,IAAI,SAAS,EAAE,CAAC,MAAM,CAAC;IAExC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,MAAM,KAAK,CACjC,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EACnE;YACE,OAAO,EAAE,EAAE,MAAM,EAAE,0BAA0B,EAAE;SAChD,CACF,CAAC;QAEF,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC;QACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAC1B,uBAAuB,CACM,CAAC;QAEhC,SAAS;QACT,IAAI,CAAC,CAAC,QAAQ,IAAI,aAAa,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,cAAc,QAAQ,oBAAoB,CAAC,CAAC;QAE9D,MAAM,cAAc,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,CAAC;QAC3D,IAAI,CAAC,cAAc;YACjB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAE3D,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CACR,KAAK,EACL,0CAA0C,GAAG,cAAc,OAAO,wFAAwF,CAC3J,CAAC;QACF,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,EAChD,UAAmB,EACnB,KAAc,EACd,EAAE;IACF,MAAM,GAAG,GAAG,KAAK,IAAI,SAAS,EAAE,CAAC,MAAM,CAAC;IAExC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,iFAAiF,CAClF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,gBAAgB,GAAG,MAAM,KAAK,CAClC,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC,yBAAyB,CAAC,UAAU,CAAC,EAAE,CAC3F,CAAC;QAEF,OAAO,gBAAgB,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CACR,KAAK,EACL,0DAA0D,GAAG,iBAAiB,UAAU,wFAAwF,CACjL,CAAC;QAEF,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,eAAoB,EACpB,KAAc,EACU,EAAE;IAC1B,MAAM,GAAG,GAAG,KAAK,IAAI,SAAS,EAAE,CAAC,MAAM,CAAC;IAExC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,iBAAiB,GAAG,MAAM,KAAK,CACnC,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,CACpF,CAAC;QAEF,OAAO,iBAAiB,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CACR,KAAK,EACL,4CAA4C,GAAG,sBAAsB,eAAe,wFAAwF,CAC7K,CAAC;QACF,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC"}
|
package/dist/utils/index.d.ts
CHANGED
package/dist/utils/index.js
CHANGED
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC"}
|
package/dist/utils/ipfs.d.ts
CHANGED
|
@@ -8,7 +8,10 @@ export type ReportFetchArgs = {
|
|
|
8
8
|
};
|
|
9
9
|
export declare const fetchIPFS: <T>(args: ReportFetchArgs, cache?: boolean) => Promise<T>;
|
|
10
10
|
export declare const fetchIPFSDirect: <T>(args: ReportFetchArgs) => Promise<T>;
|
|
11
|
-
export declare const fetchIPFSBuffer: (
|
|
11
|
+
export declare const fetchIPFSBuffer: (args: ReportFetchArgs) => Promise<Uint8Array>;
|
|
12
12
|
export declare const calculateIPFSAddCID: (fileContent: Uint8Array) => Promise<CID>;
|
|
13
|
-
export declare const
|
|
14
|
-
|
|
13
|
+
export declare const fetchIPFSDirectAndVerify: <T>(cid: string, gateway?: string) => Promise<{
|
|
14
|
+
json: T;
|
|
15
|
+
fileContent: Uint8Array;
|
|
16
|
+
}>;
|
|
17
|
+
export declare const fetchIPFSWithCacheAndVerify: <T>(cid: string, gateway?: string) => Promise<T>;
|
package/dist/utils/ipfs.js
CHANGED
|
@@ -8,12 +8,11 @@ import { logInfo, logTable } from './logging/console.js';
|
|
|
8
8
|
export const IPFS_GATEWAY = 'https://ipfs.io/ipfs';
|
|
9
9
|
const IPFS_CACHE_DIR = path.resolve('ipfs-cache');
|
|
10
10
|
export const fetchIPFS = async (args, cache = true) => {
|
|
11
|
-
const { cid, gateway = IPFS_GATEWAY
|
|
12
|
-
const ipfsUrl = `${gateway}/${cid}`;
|
|
13
|
-
logInfo('Fetching content from', ipfsUrl);
|
|
11
|
+
const { cid, gateway = IPFS_GATEWAY } = args;
|
|
14
12
|
if (cache)
|
|
15
|
-
return
|
|
16
|
-
|
|
13
|
+
return fetchIPFSWithCacheAndVerify(cid, gateway);
|
|
14
|
+
const { json } = await fetchIPFSDirectAndVerify(cid, gateway);
|
|
15
|
+
return json;
|
|
17
16
|
};
|
|
18
17
|
// Fetching content by CID through IPFS gateway
|
|
19
18
|
export const fetchIPFSDirect = async (args) => {
|
|
@@ -32,8 +31,11 @@ export const fetchIPFSDirect = async (args) => {
|
|
|
32
31
|
return parsed;
|
|
33
32
|
};
|
|
34
33
|
// Fetching buffer content by CID through IPFS gateway
|
|
35
|
-
export const fetchIPFSBuffer = async (
|
|
36
|
-
const
|
|
34
|
+
export const fetchIPFSBuffer = async (args) => {
|
|
35
|
+
const { cid, gateway = IPFS_GATEWAY } = args;
|
|
36
|
+
const ipfsUrl = `${gateway}/${cid}`;
|
|
37
|
+
logInfo('Fetching content from', ipfsUrl);
|
|
38
|
+
const response = await fetch(ipfsUrl);
|
|
37
39
|
if (!response.ok) {
|
|
38
40
|
throw new Error(`Failed to fetch content: ${response.statusText}`);
|
|
39
41
|
}
|
|
@@ -57,9 +59,9 @@ export const calculateIPFSAddCID = async (fileContent) => {
|
|
|
57
59
|
return lastCid;
|
|
58
60
|
};
|
|
59
61
|
// Downloading file from IPFS and checking its integrity
|
|
60
|
-
export const
|
|
62
|
+
export const fetchIPFSDirectAndVerify = async (cid, gateway = IPFS_GATEWAY) => {
|
|
61
63
|
const originalCID = CID.parse(cid);
|
|
62
|
-
const fileContent = await fetchIPFSBuffer(cid, gateway);
|
|
64
|
+
const fileContent = await fetchIPFSBuffer({ cid, gateway });
|
|
63
65
|
const calculatedCID = await calculateIPFSAddCID(fileContent);
|
|
64
66
|
if (!calculatedCID.equals(originalCID)) {
|
|
65
67
|
throw new Error(`❌ CID mismatch! Expected ${originalCID}, but got ${calculatedCID}`);
|
|
@@ -74,21 +76,25 @@ export const fetchAndVerifyFile = async (cid, gateway = IPFS_GATEWAY) => {
|
|
|
74
76
|
head: ['Type', 'CID'],
|
|
75
77
|
},
|
|
76
78
|
});
|
|
77
|
-
|
|
79
|
+
const json = JSON.parse(new TextDecoder().decode(fileContent));
|
|
80
|
+
return {
|
|
81
|
+
fileContent,
|
|
82
|
+
json,
|
|
83
|
+
};
|
|
78
84
|
};
|
|
79
|
-
export const
|
|
80
|
-
const { cid, gateway = IPFS_GATEWAY, bigNumberType = 'string' } = args;
|
|
85
|
+
export const fetchIPFSWithCacheAndVerify = async (cid, gateway = IPFS_GATEWAY) => {
|
|
81
86
|
await fs.mkdir(IPFS_CACHE_DIR, { recursive: true });
|
|
82
87
|
const cacheFile = path.join(IPFS_CACHE_DIR, `${cid}.json`);
|
|
83
88
|
try {
|
|
89
|
+
logInfo('Trying to get content from cache', cid);
|
|
84
90
|
const data = await fs.readFile(cacheFile, 'utf-8');
|
|
85
91
|
return JSON.parse(data);
|
|
86
92
|
}
|
|
87
93
|
catch {
|
|
88
94
|
// Not in cache, fetch from IPFS
|
|
89
|
-
const
|
|
90
|
-
await fs.writeFile(cacheFile, JSON.stringify(
|
|
91
|
-
return
|
|
95
|
+
const { json } = await fetchIPFSDirectAndVerify(cid, gateway);
|
|
96
|
+
await fs.writeFile(cacheFile, JSON.stringify(json), 'utf-8');
|
|
97
|
+
return json;
|
|
92
98
|
}
|
|
93
99
|
};
|
|
94
100
|
//# sourceMappingURL=ipfs.js.map
|
package/dist/utils/ipfs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipfs.js","sourceRoot":"","sources":["../../utils/ipfs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,CAAC,MAAM,YAAY,GAAG,sBAAsB,CAAC;AASnD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAElD,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAC5B,IAAqB,EACrB,KAAK,GAAG,IAAI,EACA,EAAE;IACd,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"ipfs.js","sourceRoot":"","sources":["../../utils/ipfs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Address, Hex } from 'viem';
|
|
2
2
|
import { VaultReportArgs } from './types.js';
|
|
3
|
-
export declare const getReportProofByVault: (args: VaultReportArgs) => Promise<{
|
|
3
|
+
export declare const getReportProofByVault: (args: VaultReportArgs, cache?: boolean) => Promise<{
|
|
4
4
|
proof: Hex[];
|
|
5
5
|
data: import("../index.js").LeafDataFields;
|
|
6
6
|
extraData: import("../index.js").ExtraDataFields;
|
|
@@ -8,14 +8,12 @@ export declare const getReportProofByVault: (args: VaultReportArgs) => Promise<{
|
|
|
8
8
|
refSlot: number;
|
|
9
9
|
blockNumber: number;
|
|
10
10
|
timestamp: number;
|
|
11
|
-
proofsCID: string;
|
|
12
11
|
prevTreeCID: string;
|
|
13
|
-
merkleTreeRoot: string;
|
|
14
12
|
}>;
|
|
15
13
|
type GetReportProofByVaultsArgs = Omit<VaultReportArgs, 'vault'> & {
|
|
16
14
|
vaults: Address[];
|
|
17
15
|
};
|
|
18
|
-
export declare const getReportProofByVaults: (args: GetReportProofByVaultsArgs) => Promise<{
|
|
16
|
+
export declare const getReportProofByVaults: (args: GetReportProofByVaultsArgs, cache?: boolean) => Promise<{
|
|
19
17
|
proof: Hex[];
|
|
20
18
|
data: import("../index.js").LeafDataFields;
|
|
21
19
|
extraData: import("../index.js").ExtraDataFields;
|
|
@@ -23,11 +21,9 @@ export declare const getReportProofByVaults: (args: GetReportProofByVaultsArgs)
|
|
|
23
21
|
refSlot: number;
|
|
24
22
|
blockNumber: number;
|
|
25
23
|
timestamp: number;
|
|
26
|
-
proofsCID: string;
|
|
27
24
|
prevTreeCID: string;
|
|
28
|
-
merkleTreeRoot: string;
|
|
29
25
|
}[]>;
|
|
30
|
-
export declare const getReportProofs: (args: Omit<VaultReportArgs, "vault"
|
|
26
|
+
export declare const getReportProofs: (args: Omit<VaultReportArgs, "vault">, cache?: boolean) => Promise<{
|
|
31
27
|
proof: Hex[];
|
|
32
28
|
data: import("../index.js").LeafDataFields;
|
|
33
29
|
extraData: import("../index.js").ExtraDataFields;
|
|
@@ -35,8 +31,6 @@ export declare const getReportProofs: (args: Omit<VaultReportArgs, "vault">) =>
|
|
|
35
31
|
refSlot: number;
|
|
36
32
|
blockNumber: number;
|
|
37
33
|
timestamp: number;
|
|
38
|
-
proofsCID: string;
|
|
39
34
|
prevTreeCID: string;
|
|
40
|
-
merkleTreeRoot: string;
|
|
41
35
|
}[]>;
|
|
42
36
|
export {};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { StandardMerkleTree } from '@openzeppelin/merkle-tree';
|
|
2
|
-
import { fetchIPFS
|
|
2
|
+
import { fetchIPFS } from '../index.js';
|
|
3
3
|
import { getVaultData } from './report.js';
|
|
4
|
-
export const getReportProofByVault = async (args) => {
|
|
4
|
+
export const getReportProofByVault = async (args, cache = true) => {
|
|
5
5
|
const { vault } = args;
|
|
6
|
-
const IPFSReportData = await
|
|
6
|
+
const IPFSReportData = await fetchIPFS(args, cache);
|
|
7
7
|
const merkleTree = StandardMerkleTree.load({
|
|
8
8
|
...IPFSReportData,
|
|
9
9
|
values: IPFSReportData.values.map(({ treeIndex, value }) => {
|
|
@@ -23,16 +23,16 @@ export const getReportProofByVault = async (args) => {
|
|
|
23
23
|
proof: merkleTree.getProof(vaultIndex),
|
|
24
24
|
};
|
|
25
25
|
};
|
|
26
|
-
export const getReportProofByVaults = async (args) => {
|
|
26
|
+
export const getReportProofByVaults = async (args, cache = true) => {
|
|
27
27
|
const { vaults } = args;
|
|
28
|
-
const proofs = await Promise.all(vaults.map((vault) => getReportProofByVault({ ...args, vault })));
|
|
28
|
+
const proofs = await Promise.all(vaults.map((vault) => getReportProofByVault({ ...args, vault }, cache)));
|
|
29
29
|
return proofs;
|
|
30
30
|
};
|
|
31
|
-
export const getReportProofs = async (args) => {
|
|
32
|
-
const report = await fetchIPFS(args);
|
|
31
|
+
export const getReportProofs = async (args, cache = true) => {
|
|
32
|
+
const report = await fetchIPFS(args, cache);
|
|
33
33
|
const vaultReports = report.values.map((value) => getVaultData(report, value.value[0]).data);
|
|
34
34
|
const vaults = vaultReports.map((vault) => vault.vaultAddress);
|
|
35
|
-
const proofs = await Promise.all(vaults.map((vault) => getReportProofByVault({ ...args, vault: vault })));
|
|
35
|
+
const proofs = await Promise.all(vaults.map((vault) => getReportProofByVault({ ...args, vault: vault }, cache)));
|
|
36
36
|
return proofs;
|
|
37
37
|
};
|
|
38
38
|
//# sourceMappingURL=report-proof.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report-proof.js","sourceRoot":"","sources":["../../../utils/report/report-proof.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"report-proof.js","sourceRoot":"","sources":["../../../utils/report/report-proof.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EACxC,IAAqB,EACrB,KAAK,GAAG,IAAI,EACZ,EAAE;IACF,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAEvB,MAAM,cAAc,GAAG,MAAM,SAAS,CAAS,IAAI,EAAE,KAAK,CAAC,CAAC;IAE5D,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC;QACzC,GAAG,cAAc;QACjB,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;YACzD,OAAO;gBACL,KAAK;gBACL,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC;aAC7B,CAAC;QACJ,CAAC,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,SAAS,CAChD,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAC9D,CAAC;IAEF,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,sBAAsB,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,UAAU,GAAG,YAAY,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAEvD,OAAO;QACL,GAAG,UAAU;QACb,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAU;KAChD,CAAC;AACJ,CAAC,CAAC;AAMF,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EACzC,IAAgC,EAChC,KAAK,GAAG,IAAI,EACZ,EAAE;IACF,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAExB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC,CACxE,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,IAAoC,EACpC,KAAK,GAAG,IAAI,EACZ,EAAE;IACF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAS,IAAI,EAAE,KAAK,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CACpC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CACrD,CAAC;IACF,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAE/D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACnB,qBAAqB,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,KAAgB,EAAE,EAAE,KAAK,CAAC,CACnE,CACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -3,38 +3,8 @@ import type { VaultReport, VaultReportArgs, Report, LeafDataFields } from './typ
|
|
|
3
3
|
export declare const getVaultReport: (args: VaultReportArgs, cache?: boolean) => Promise<VaultReport>;
|
|
4
4
|
export declare const getVaultPreviousReport: (args: VaultReportArgs, cache?: boolean) => Promise<VaultReport>;
|
|
5
5
|
export declare const getVaultData: (report: Report, vault: Address) => VaultReport;
|
|
6
|
-
export declare const getVaultReportProof: (args: VaultReportArgs, cache?: boolean) => Promise<{
|
|
7
|
-
id: number;
|
|
8
|
-
totalValueWei: bigint;
|
|
9
|
-
inOutDelta: bigint;
|
|
10
|
-
fee: bigint;
|
|
11
|
-
liabilityShares: bigint;
|
|
12
|
-
leaf: string;
|
|
13
|
-
proof: string[];
|
|
14
|
-
}>;
|
|
15
|
-
export declare const getVaultReportProofByCid: (args: VaultReportArgs, cache?: boolean) => Promise<{
|
|
16
|
-
id: number;
|
|
17
|
-
totalValueWei: bigint;
|
|
18
|
-
inOutDelta: bigint;
|
|
19
|
-
fee: bigint;
|
|
20
|
-
liabilityShares: bigint;
|
|
21
|
-
leaf: string;
|
|
22
|
-
proof: string[];
|
|
23
|
-
}>;
|
|
24
|
-
export declare const getAllVaultsReportProofs: (args: Omit<VaultReportArgs, "vault">, cache?: boolean) => Promise<{
|
|
25
|
-
[key: string]: {
|
|
26
|
-
id: number;
|
|
27
|
-
totalValueWei: bigint;
|
|
28
|
-
inOutDelta: bigint;
|
|
29
|
-
fee: bigint;
|
|
30
|
-
liabilityShares: bigint;
|
|
31
|
-
leaf: string;
|
|
32
|
-
proof: string[];
|
|
33
|
-
};
|
|
34
|
-
}>;
|
|
35
6
|
export declare const getAllVaultsReports: (args: Omit<VaultReportArgs, "vault">, cache?: boolean) => Promise<{
|
|
36
7
|
vaultReports: LeafDataFields[];
|
|
37
|
-
proofsCID: string;
|
|
38
8
|
prevTreeCID: string;
|
|
39
9
|
}>;
|
|
40
10
|
/**
|
|
@@ -41,13 +41,28 @@ export const getVaultData = (report, vault) => {
|
|
|
41
41
|
};
|
|
42
42
|
// TODO: for old reports without extraValues
|
|
43
43
|
const extraData = report.extraValues?.[vault] || { inOutDelta: '0' };
|
|
44
|
-
for (const [
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
for (const [_key, _index] of Object.entries(report.leafIndexToData)) {
|
|
45
|
+
let index;
|
|
46
|
+
let fieldName;
|
|
47
|
+
// new report format
|
|
48
|
+
// leafIndexToData: { "vaultAddress": 0, ...
|
|
49
|
+
if (typeof _index === 'number') {
|
|
50
|
+
index = _index;
|
|
51
|
+
fieldName = _key;
|
|
52
|
+
}
|
|
53
|
+
// TODO: remove soon
|
|
54
|
+
// old report format
|
|
55
|
+
// leafIndexToData: { "0": "vaultAddress", ...
|
|
56
|
+
else {
|
|
57
|
+
index = Number(_key);
|
|
58
|
+
fieldName = _index;
|
|
59
|
+
}
|
|
60
|
+
const valueByIndex = match.value[index];
|
|
61
|
+
if (valueByIndex === undefined) {
|
|
47
62
|
throw new Error(`Missing value at index ${index} for field "${fieldName}"`);
|
|
48
63
|
}
|
|
49
64
|
const camelCaseFieldName = snakeToCamel(fieldName);
|
|
50
|
-
data[camelCaseFieldName] =
|
|
65
|
+
data[camelCaseFieldName] = valueByIndex.toString();
|
|
51
66
|
}
|
|
52
67
|
return {
|
|
53
68
|
data,
|
|
@@ -56,50 +71,9 @@ export const getVaultData = (report, vault) => {
|
|
|
56
71
|
refSlot: report.refSlot,
|
|
57
72
|
blockNumber: Number(report.blockNumber),
|
|
58
73
|
timestamp: report.timestamp,
|
|
59
|
-
proofsCID: report.proofsCID,
|
|
60
|
-
merkleTreeRoot: report.merkleTreeRoot,
|
|
61
74
|
prevTreeCID: report.prevTreeCID,
|
|
62
75
|
};
|
|
63
76
|
};
|
|
64
|
-
export const getVaultReportProof = async (args, cache = true) => {
|
|
65
|
-
const { vault, cid, gateway = IPFS_GATEWAY, bigNumberType = 'string' } = args;
|
|
66
|
-
const report = await fetchIPFS({
|
|
67
|
-
cid,
|
|
68
|
-
gateway,
|
|
69
|
-
bigNumberType,
|
|
70
|
-
}, cache);
|
|
71
|
-
const proofCID = report.proofsCID;
|
|
72
|
-
const data = await fetchIPFS({
|
|
73
|
-
cid: proofCID,
|
|
74
|
-
gateway,
|
|
75
|
-
bigNumberType,
|
|
76
|
-
}, cache);
|
|
77
|
-
const proofByVault = data.proofs[vault];
|
|
78
|
-
if (!proofByVault)
|
|
79
|
-
throw new Error('Proof not found');
|
|
80
|
-
return proofByVault;
|
|
81
|
-
};
|
|
82
|
-
export const getVaultReportProofByCid = async (args, cache = true) => {
|
|
83
|
-
const { vault, cid, gateway = IPFS_GATEWAY, bigNumberType = 'string' } = args;
|
|
84
|
-
const proof = await fetchIPFS({
|
|
85
|
-
cid,
|
|
86
|
-
gateway,
|
|
87
|
-
bigNumberType,
|
|
88
|
-
}, cache);
|
|
89
|
-
const proofByVault = proof.proofs[vault];
|
|
90
|
-
if (!proofByVault)
|
|
91
|
-
throw new Error('Proof not found');
|
|
92
|
-
return proofByVault;
|
|
93
|
-
};
|
|
94
|
-
export const getAllVaultsReportProofs = async (args, cache = true) => {
|
|
95
|
-
const { cid, gateway = IPFS_GATEWAY, bigNumberType = 'string' } = args;
|
|
96
|
-
const proof = await fetchIPFS({
|
|
97
|
-
cid,
|
|
98
|
-
gateway,
|
|
99
|
-
bigNumberType,
|
|
100
|
-
}, cache);
|
|
101
|
-
return proof.proofs;
|
|
102
|
-
};
|
|
103
77
|
export const getAllVaultsReports = async (args, cache = true) => {
|
|
104
78
|
const { cid, gateway = IPFS_GATEWAY, bigNumberType = 'string' } = args;
|
|
105
79
|
const report = await fetchIPFS({
|
|
@@ -110,7 +84,6 @@ export const getAllVaultsReports = async (args, cache = true) => {
|
|
|
110
84
|
const vaultReports = report.values.map((value) => getVaultData(report, value.value[0]).data);
|
|
111
85
|
return {
|
|
112
86
|
vaultReports,
|
|
113
|
-
proofsCID: report.proofsCID,
|
|
114
87
|
prevTreeCID: report.prevTreeCID,
|
|
115
88
|
};
|
|
116
89
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../../utils/report/report.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../../utils/report/report.ts"],"names":[],"mappings":"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"}
|