@lidofinance/lsv-cli 1.0.0-alpha.60 → 1.0.0-alpha.61

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.
Files changed (114) hide show
  1. package/README.md +25 -13
  2. package/dist/abi/LazyOracle.d.ts +14 -26
  3. package/dist/abi/LazyOracle.js +18 -34
  4. package/dist/abi/LazyOracle.js.map +1 -1
  5. package/dist/abi/VaultViewer.d.ts +173 -86
  6. package/dist/abi/VaultViewer.js +212 -100
  7. package/dist/abi/VaultViewer.js.map +1 -1
  8. package/dist/command/index.js +2 -0
  9. package/dist/command/index.js.map +1 -1
  10. package/dist/configs/constants.d.ts +1 -0
  11. package/dist/contracts/vault-viewer.d.ts +3651 -1529
  12. package/dist/contracts/vault-viewer.js +1 -1
  13. package/dist/features/deposits/no-pdg.js +5 -5
  14. package/dist/features/deposits/no-pdg.js.map +1 -1
  15. package/dist/features/mint-burn/allowance.js +1 -1
  16. package/dist/features/mint-burn/allowance.js.map +1 -1
  17. package/dist/features/utils/get-address.js +1 -1
  18. package/dist/features/utils/get-address.js.map +1 -1
  19. package/dist/features/vault-operations/create-vault.js +2 -2
  20. package/dist/features/vault-operations/create-vault.js.map +1 -1
  21. package/dist/features/vault-operations/vault-roles.js +4 -2
  22. package/dist/features/vault-operations/vault-roles.js.map +1 -1
  23. package/dist/features/vault-operations/vaults-by-role.d.ts +0 -2
  24. package/dist/features/vault-operations/vaults-by-role.js +8 -6
  25. package/dist/features/vault-operations/vaults-by-role.js.map +1 -1
  26. package/dist/programs/account/read.js +3 -3
  27. package/dist/programs/account/read.js.map +1 -1
  28. package/dist/programs/account/write.js +13 -5
  29. package/dist/programs/account/write.js.map +1 -1
  30. package/dist/programs/contracts/dashboard/read.js +1 -1
  31. package/dist/programs/contracts/dashboard/read.js.map +1 -1
  32. package/dist/programs/contracts/dashboard/write.js +18 -1
  33. package/dist/programs/contracts/dashboard/write.js.map +1 -1
  34. package/dist/programs/contracts/index.d.ts +1 -0
  35. package/dist/programs/contracts/index.js +1 -0
  36. package/dist/programs/contracts/index.js.map +1 -1
  37. package/dist/programs/contracts/lazy-oracle/config.d.ts +3 -0
  38. package/dist/programs/contracts/lazy-oracle/config.js +57 -0
  39. package/dist/programs/contracts/lazy-oracle/config.js.map +1 -0
  40. package/dist/programs/contracts/lazy-oracle/index.d.ts +2 -0
  41. package/dist/programs/contracts/lazy-oracle/index.js +3 -0
  42. package/dist/programs/contracts/lazy-oracle/index.js.map +1 -0
  43. package/dist/programs/contracts/lazy-oracle/main.d.ts +1 -0
  44. package/dist/programs/contracts/lazy-oracle/main.js +5 -0
  45. package/dist/programs/contracts/lazy-oracle/main.js.map +1 -0
  46. package/dist/programs/contracts/lazy-oracle/read.d.ts +1 -0
  47. package/dist/programs/contracts/lazy-oracle/read.js +17 -0
  48. package/dist/programs/contracts/lazy-oracle/read.js.map +1 -0
  49. package/dist/programs/contracts/operator-grid/write.js +4 -4
  50. package/dist/programs/contracts/operator-grid/write.js.map +1 -1
  51. package/dist/programs/contracts/pdg/write.js +2 -2
  52. package/dist/programs/contracts/pdg/write.js.map +1 -1
  53. package/dist/programs/contracts/vault-viewer/read.js +4 -4
  54. package/dist/programs/contracts/vault-viewer/read.js.map +1 -1
  55. package/dist/programs/use-cases/deposits/read.js +1 -1
  56. package/dist/programs/use-cases/deposits/read.js.map +1 -1
  57. package/dist/programs/use-cases/metrics/read.js +64 -6
  58. package/dist/programs/use-cases/metrics/read.js.map +1 -1
  59. package/dist/programs/use-cases/report/write.js +43 -62
  60. package/dist/programs/use-cases/report/write.js.map +1 -1
  61. package/dist/programs/use-cases/vault-operations/write.js +30 -8
  62. package/dist/programs/use-cases/vault-operations/write.js.map +1 -1
  63. package/dist/providers/wallet.d.ts +7670 -3
  64. package/dist/providers/wallet.js +25 -5
  65. package/dist/providers/wallet.js.map +1 -1
  66. package/dist/tests/utils/ipfs.test.js +22 -10
  67. package/dist/tests/utils/ipfs.test.js.map +1 -1
  68. package/dist/types/config.d.ts +1 -0
  69. package/dist/utils/charts/blessed/datasets/prepare-metrics.d.ts +4 -0
  70. package/dist/utils/charts/blessed/datasets/prepare-metrics.js +15 -1
  71. package/dist/utils/charts/blessed/datasets/prepare-metrics.js.map +1 -1
  72. package/dist/utils/commands/confirmations.d.ts +2 -2
  73. package/dist/utils/commands/confirmations.js +3 -4
  74. package/dist/utils/commands/confirmations.js.map +1 -1
  75. package/dist/utils/csv-file.d.ts +6 -0
  76. package/dist/utils/csv-file.js +48 -0
  77. package/dist/utils/csv-file.js.map +1 -0
  78. package/dist/utils/index.d.ts +3 -1
  79. package/dist/utils/index.js +3 -1
  80. package/dist/utils/index.js.map +1 -1
  81. package/dist/utils/ipfs.js +1 -1
  82. package/dist/utils/ipfs.js.map +1 -1
  83. package/dist/utils/logging/console.d.ts +1 -0
  84. package/dist/utils/logging/console.js +9 -1
  85. package/dist/utils/logging/console.js.map +1 -1
  86. package/dist/utils/report/report-proof.d.ts +3 -0
  87. package/dist/utils/report/report-proof.js +2 -2
  88. package/dist/utils/report/report-proof.js.map +1 -1
  89. package/dist/utils/report/report.d.ts +1 -1
  90. package/dist/utils/report/report.js +5 -4
  91. package/dist/utils/report/report.js.map +1 -1
  92. package/dist/utils/report/types.d.ts +1 -0
  93. package/dist/utils/timestamp.d.ts +1 -1
  94. package/dist/utils/timestamp.js +9 -2
  95. package/dist/utils/timestamp.js.map +1 -1
  96. package/dist/utils/transactions/index.d.ts +3 -0
  97. package/dist/utils/transactions/index.js +4 -0
  98. package/dist/utils/transactions/index.js.map +1 -0
  99. package/dist/utils/transactions/tx-private-key.d.ts +26 -0
  100. package/dist/utils/{contract.js → transactions/tx-private-key.js} +105 -9
  101. package/dist/utils/transactions/tx-private-key.js.map +1 -0
  102. package/dist/utils/transactions/tx-wc.d.ts +34 -0
  103. package/dist/utils/transactions/tx-wc.js +174 -0
  104. package/dist/utils/transactions/tx-wc.js.map +1 -0
  105. package/dist/utils/transactions/types.d.ts +40 -0
  106. package/dist/utils/transactions/types.js +2 -0
  107. package/dist/utils/transactions/types.js.map +1 -0
  108. package/dist/utils/wallet-connect.d.ts +7677 -0
  109. package/dist/utils/wallet-connect.js +179 -0
  110. package/dist/utils/wallet-connect.js.map +1 -0
  111. package/dist/version/index.js +1 -1
  112. package/package.json +9 -5
  113. package/dist/utils/contract.d.ts +0 -59
  114. package/dist/utils/contract.js.map +0 -1
@@ -0,0 +1,179 @@
1
+ import { SignClient } from '@walletconnect/sign-client';
2
+ import qrcode from 'qrcode-terminal';
3
+ import { createWalletClient, custom, } from 'viem';
4
+ import { getConfig, getChain } from '../configs/index.js';
5
+ import { logInfo, logError } from '../utils/logging/index.js';
6
+ import { sleep } from '../utils/sleep.js';
7
+ const DESCRIPTION = 'Lido Staking Vault CLI';
8
+ const URL = 'https://github.com/lidofinance/lido-staking-vault-cli';
9
+ const ICONS = [
10
+ 'https://github.com/lidofinance/lido-staking-vault-cli/blob/develop/docs/static/img/favicon.png',
11
+ ];
12
+ const NAME = 'Lido Staking Vault CLI';
13
+ // Retry settings
14
+ const DEFAULT_MAX_RETRIES = 3;
15
+ const DEFAULT_CONNECTION_TIMEOUT = 180_000; // 180 seconds
16
+ // Cache for the wallet connect client
17
+ let cachedWalletConnectClient = null;
18
+ let cachedSignClient = null;
19
+ // TODO: fix this type
20
+ let cachedSession = null;
21
+ // Create a wallet connect client
22
+ export const createWalletConnectClient = async () => {
23
+ try {
24
+ const chain = getChain();
25
+ // If the wallet connect client is already created, return it
26
+ if (cachedWalletConnectClient) {
27
+ return cachedWalletConnectClient;
28
+ }
29
+ const { session, accounts } = await connectWalletConnectWithRetry();
30
+ logInfo('Found accounts:', accounts.length);
31
+ // Get the address from the accounts
32
+ const address = accounts[0]?.split(':')[2];
33
+ // If no address is found, throw an error
34
+ if (!address) {
35
+ throw new Error('No address found. Check your wallet and try again.');
36
+ }
37
+ // Log the connected account
38
+ logInfo('Connected to WalletConnect with the following account:', address);
39
+ logInfo('Waiting for transaction...');
40
+ // Create an account object
41
+ const account = {
42
+ address,
43
+ type: 'json-rpc',
44
+ };
45
+ // Create a wallet connect client
46
+ const walletConnectClient = createWalletClient({
47
+ account,
48
+ chain: getChain(),
49
+ transport: custom({
50
+ async request({ method, params }) {
51
+ return await cachedSignClient?.request({
52
+ topic: session.topic,
53
+ chainId: `eip155:${chain.id}`,
54
+ request: { method, params },
55
+ });
56
+ },
57
+ }),
58
+ });
59
+ // Cache the wallet connect client and account
60
+ cachedWalletConnectClient = walletConnectClient;
61
+ return cachedWalletConnectClient;
62
+ }
63
+ catch (error) {
64
+ logError('Error creating wallet connect client:', error);
65
+ throw error;
66
+ }
67
+ };
68
+ export const connectWalletConnectWithRetry = async (options = {}) => {
69
+ const { maxRetries = DEFAULT_MAX_RETRIES, connectionTimeout = DEFAULT_CONNECTION_TIMEOUT, } = options;
70
+ let lastError = null;
71
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
72
+ try {
73
+ logInfo(`WalletConnect connection attempt ${attempt}/${maxRetries}...`);
74
+ const result = await connectWalletConnectWithTimeout(connectionTimeout);
75
+ logInfo('✅ WalletConnect connected successfully!');
76
+ return result;
77
+ }
78
+ catch (error) {
79
+ lastError = error;
80
+ logError(`❌ Attempt ${attempt} failed:`, lastError.message);
81
+ if (attempt < maxRetries) {
82
+ logInfo(`⏳ Retrying in 2 seconds...`);
83
+ await sleep(2000);
84
+ // Clear the cache for a new attempt
85
+ cachedSignClient = null;
86
+ cachedWalletConnectClient = null;
87
+ }
88
+ }
89
+ }
90
+ throw new Error(`Failed to connect to WalletConnect after ${maxRetries} attempts. Last error: ${lastError?.message}`);
91
+ };
92
+ const connectWalletConnectWithTimeout = async (timeout) => {
93
+ // eslint-disable-next-line no-async-promise-executor
94
+ return new Promise(async (resolve, reject) => {
95
+ const timeoutId = setTimeout(() => {
96
+ reject(new Error(`Connection timeout after ${timeout}ms`));
97
+ }, timeout);
98
+ try {
99
+ const result = await connectWalletConnect();
100
+ clearTimeout(timeoutId);
101
+ resolve(result);
102
+ }
103
+ catch (error) {
104
+ clearTimeout(timeoutId);
105
+ reject(error);
106
+ }
107
+ });
108
+ };
109
+ const connectWalletConnect = async () => {
110
+ const chain = getChain();
111
+ const { WALLET_CONNECT_PROJECT_ID } = getConfig();
112
+ // Initialize the wallet connect client
113
+ const signClient = await SignClient.init({
114
+ projectId: WALLET_CONNECT_PROJECT_ID,
115
+ logger: 'error',
116
+ metadata: {
117
+ description: DESCRIPTION,
118
+ url: URL,
119
+ icons: ICONS,
120
+ name: NAME,
121
+ },
122
+ });
123
+ cachedSignClient = signClient;
124
+ logInfo('Used Chain:', chain.id);
125
+ logInfo('Connecting to WalletConnect...');
126
+ // Connect to WalletConnect
127
+ const { uri, approval } = await signClient.connect({
128
+ optionalNamespaces: {
129
+ eip155: {
130
+ methods: [
131
+ 'eth_sendTransaction',
132
+ 'eth_signTransaction',
133
+ 'eth_accounts',
134
+ 'eth_sign',
135
+ 'eth_chainId',
136
+ 'wallet_sendCalls',
137
+ 'wallet_getCallsStatus',
138
+ ],
139
+ chains: [`eip155:${chain.id}`],
140
+ events: ['chainChanged', 'accountsChanged'],
141
+ },
142
+ },
143
+ });
144
+ // If no URI is found, throw an error
145
+ if (!uri) {
146
+ throw new Error('No WalletConnect URI found. Try again.');
147
+ }
148
+ // Log the WalletConnect URI
149
+ logInfo(`\nPlease navigate to url:\n\n${uri}\n\nor scan QR code:\n`);
150
+ qrcode.generate(uri, { small: true });
151
+ logInfo('Waiting for approval...');
152
+ // Wait for the user to approve the connection
153
+ const session = await approval();
154
+ cachedSession = session;
155
+ const accounts = session.namespaces.eip155?.accounts;
156
+ logInfo('Session topic:', session.topic);
157
+ logInfo(`Session expiration: ${new Date(session.expiry * 1000).toLocaleString()}`);
158
+ // If no accounts are found, throw an error
159
+ if (!accounts) {
160
+ throw new Error('No accounts found. Check your wallet and try again.');
161
+ }
162
+ return {
163
+ session,
164
+ accounts,
165
+ };
166
+ };
167
+ export const disconnectWalletConnect = async () => {
168
+ await cachedSignClient?.disconnect({
169
+ topic: cachedSession?.topic,
170
+ reason: {
171
+ code: 4001,
172
+ message: 'Disconnect from app',
173
+ },
174
+ });
175
+ cachedSignClient = null;
176
+ cachedWalletConnectClient = null;
177
+ cachedSession = null;
178
+ };
179
+ //# sourceMappingURL=wallet-connect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-connect.js","sourceRoot":"","sources":["../../utils/wallet-connect.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export const version = 'v1.0.0-alpha.60'
1
+ export const version = 'v1.0.0-alpha.61'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lidofinance/lsv-cli",
3
- "version": "1.0.0-alpha.60",
3
+ "version": "1.0.0-alpha.61",
4
4
  "main": "dist/index.js",
5
5
  "files": [
6
6
  "dist"
@@ -38,6 +38,7 @@
38
38
  "@chainsafe/ssz": "^1.0.2",
39
39
  "@lodestar/types": "^1.27.1",
40
40
  "@openzeppelin/merkle-tree": "^1.0.8",
41
+ "@walletconnect/sign-client": "^2.21.6",
41
42
  "blessed": "^0.1.81",
42
43
  "blessed-contrib": "^4.11.0",
43
44
  "blockstore-core": "^5.0.2",
@@ -46,19 +47,20 @@
46
47
  "cli-table3": "^0.6.5",
47
48
  "commander": "^12.1.0",
48
49
  "dotenv": "^16.4.5",
49
- "ethers": "^6.14.3",
50
50
  "fs-extra": "^11.3.0",
51
51
  "ipfs-unixfs-importer": "^15.3.2",
52
52
  "json-bigint": "^1.0.0",
53
53
  "log-update": "^6.1.0",
54
54
  "multiformats": "^13.3.2",
55
+ "ox": "^0.8.6",
55
56
  "prompts": "^2.4.2",
56
- "viem": "^2.21.37"
57
+ "qrcode-terminal": "^0.12.0",
58
+ "viem": "^2.33.2"
57
59
  },
58
60
  "devDependencies": {
59
61
  "@commitlint/cli": "^17.4.4",
60
62
  "@commitlint/config-conventional": "^17.4.4",
61
- "@commitlint/prompt": "^17.4.4",
63
+ "@commitlint/prompt": "^19.8.1",
62
64
  "@jest/globals": "^29.7.0",
63
65
  "@lidofinance/eslint-config": "^0.48.0",
64
66
  "@swc/core": "^1.11.21",
@@ -69,6 +71,7 @@
69
71
  "@types/log-update": "^3.1.0",
70
72
  "@types/node": "^22.14.1",
71
73
  "@types/prompts": "^2.4.9",
74
+ "@types/qrcode-terminal": "^0.12.2",
72
75
  "@typescript-eslint/eslint-plugin": "^5",
73
76
  "@typescript-eslint/parser": "^5.46.0",
74
77
  "eslint": "^8.46.0",
@@ -96,7 +99,8 @@
96
99
  "typescript": "^5.7.2"
97
100
  },
98
101
  "resolutions": {
99
- "xml2js": "^0.5.0"
102
+ "xml2js": "^0.5.0",
103
+ "tmp": "^0.2.4"
100
104
  },
101
105
  "lint-staged": {
102
106
  "./**/*.{ts,tsx}": [
@@ -1,59 +0,0 @@
1
- import { Address, SimulateContractReturnType, TransactionReceipt, Hex, Abi } from 'viem';
2
- export type ReadContract = {
3
- address: Address;
4
- read: Record<string, (...args: any[]) => Promise<any>>;
5
- };
6
- export type PartialContract = ReadContract & {
7
- simulate: Record<string, (...args: any[]) => Promise<any>>;
8
- write: Record<string, (...args: any[]) => Promise<any>>;
9
- abi: Abi;
10
- };
11
- type Writeable<T> = {
12
- -readonly [P in keyof T]: T[P];
13
- };
14
- type GetFirst<T extends unknown[]> = T extends [infer First, infer _Second] ? First : T extends any ? [] : T;
15
- export declare const callSimulateWriteMethod: <T extends PartialContract, M extends keyof T["simulate"] & string>(args: {
16
- contract: T;
17
- methodName: M;
18
- payload: Writeable<GetFirst<Parameters<T["simulate"][M]>>> | never[];
19
- value?: bigint;
20
- withSpinner?: boolean;
21
- skipError?: boolean;
22
- }) => Promise<SimulateContractReturnType>;
23
- export declare const callWriteMethod: <T extends PartialContract, M extends keyof T["write"] & string>(args: {
24
- contract: T;
25
- methodName: M;
26
- payload: Writeable<GetFirst<Parameters<T["write"][M]>>> | never[];
27
- value?: bigint;
28
- withSpinner?: boolean;
29
- silent?: boolean;
30
- skipError?: boolean;
31
- }) => Promise<Address>;
32
- export declare const callReadMethod: <T extends ReadContract, M extends keyof T["read"] & string>(contract: T, methodName: M, ...payload: [...Parameters<T["read"][M]>, {
33
- silent?: boolean;
34
- }?]) => Promise<ReturnType<T["read"][M]>>;
35
- export declare const callReadMethodSilent: <T extends ReadContract, M extends keyof T["read"] & string>(contract: T, methodName: M, ...payload: Parameters<T["read"][M]>) => Promise<ReturnType<T["read"][M]>>;
36
- export declare const isContractAddress: (address: Address) => Promise<boolean>;
37
- export declare const populateWriteTx: <T extends PartialContract, M extends keyof T["write"] & string>(args: {
38
- contract: T;
39
- methodName: M;
40
- payload: Writeable<GetFirst<Parameters<T["write"][M]>>> | never[];
41
- value?: bigint;
42
- }) => Promise<{
43
- to: Address;
44
- value: bigint;
45
- data: Hex;
46
- }>;
47
- export declare const callWriteMethodWithReceipt: <T extends PartialContract, M extends keyof T["write"] & string>(args: {
48
- contract: T;
49
- methodName: M;
50
- payload: Writeable<GetFirst<Parameters<T["write"][M]>>> | never[];
51
- value?: bigint;
52
- withSpinner?: boolean;
53
- silent?: boolean;
54
- skipError?: boolean;
55
- }) => Promise<{
56
- receipt: TransactionReceipt;
57
- tx: Address;
58
- }>;
59
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../utils/contract.ts"],"names":[],"mappings":"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"}