@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.
- package/README.md +25 -13
- package/dist/abi/LazyOracle.d.ts +14 -26
- package/dist/abi/LazyOracle.js +18 -34
- package/dist/abi/LazyOracle.js.map +1 -1
- package/dist/abi/VaultViewer.d.ts +173 -86
- package/dist/abi/VaultViewer.js +212 -100
- package/dist/abi/VaultViewer.js.map +1 -1
- package/dist/command/index.js +2 -0
- package/dist/command/index.js.map +1 -1
- package/dist/configs/constants.d.ts +1 -0
- package/dist/contracts/vault-viewer.d.ts +3651 -1529
- package/dist/contracts/vault-viewer.js +1 -1
- package/dist/features/deposits/no-pdg.js +5 -5
- package/dist/features/deposits/no-pdg.js.map +1 -1
- package/dist/features/mint-burn/allowance.js +1 -1
- package/dist/features/mint-burn/allowance.js.map +1 -1
- package/dist/features/utils/get-address.js +1 -1
- package/dist/features/utils/get-address.js.map +1 -1
- package/dist/features/vault-operations/create-vault.js +2 -2
- package/dist/features/vault-operations/create-vault.js.map +1 -1
- package/dist/features/vault-operations/vault-roles.js +4 -2
- package/dist/features/vault-operations/vault-roles.js.map +1 -1
- package/dist/features/vault-operations/vaults-by-role.d.ts +0 -2
- package/dist/features/vault-operations/vaults-by-role.js +8 -6
- package/dist/features/vault-operations/vaults-by-role.js.map +1 -1
- package/dist/programs/account/read.js +3 -3
- package/dist/programs/account/read.js.map +1 -1
- package/dist/programs/account/write.js +13 -5
- package/dist/programs/account/write.js.map +1 -1
- package/dist/programs/contracts/dashboard/read.js +1 -1
- package/dist/programs/contracts/dashboard/read.js.map +1 -1
- package/dist/programs/contracts/dashboard/write.js +18 -1
- package/dist/programs/contracts/dashboard/write.js.map +1 -1
- package/dist/programs/contracts/index.d.ts +1 -0
- package/dist/programs/contracts/index.js +1 -0
- package/dist/programs/contracts/index.js.map +1 -1
- package/dist/programs/contracts/lazy-oracle/config.d.ts +3 -0
- package/dist/programs/contracts/lazy-oracle/config.js +57 -0
- package/dist/programs/contracts/lazy-oracle/config.js.map +1 -0
- package/dist/programs/contracts/lazy-oracle/index.d.ts +2 -0
- package/dist/programs/contracts/lazy-oracle/index.js +3 -0
- package/dist/programs/contracts/lazy-oracle/index.js.map +1 -0
- package/dist/programs/contracts/lazy-oracle/main.d.ts +1 -0
- package/dist/programs/contracts/lazy-oracle/main.js +5 -0
- package/dist/programs/contracts/lazy-oracle/main.js.map +1 -0
- package/dist/programs/contracts/lazy-oracle/read.d.ts +1 -0
- package/dist/programs/contracts/lazy-oracle/read.js +17 -0
- package/dist/programs/contracts/lazy-oracle/read.js.map +1 -0
- package/dist/programs/contracts/operator-grid/write.js +4 -4
- package/dist/programs/contracts/operator-grid/write.js.map +1 -1
- package/dist/programs/contracts/pdg/write.js +2 -2
- package/dist/programs/contracts/pdg/write.js.map +1 -1
- package/dist/programs/contracts/vault-viewer/read.js +4 -4
- package/dist/programs/contracts/vault-viewer/read.js.map +1 -1
- package/dist/programs/use-cases/deposits/read.js +1 -1
- package/dist/programs/use-cases/deposits/read.js.map +1 -1
- package/dist/programs/use-cases/metrics/read.js +64 -6
- package/dist/programs/use-cases/metrics/read.js.map +1 -1
- package/dist/programs/use-cases/report/write.js +43 -62
- package/dist/programs/use-cases/report/write.js.map +1 -1
- package/dist/programs/use-cases/vault-operations/write.js +30 -8
- package/dist/programs/use-cases/vault-operations/write.js.map +1 -1
- package/dist/providers/wallet.d.ts +7670 -3
- package/dist/providers/wallet.js +25 -5
- package/dist/providers/wallet.js.map +1 -1
- package/dist/tests/utils/ipfs.test.js +22 -10
- package/dist/tests/utils/ipfs.test.js.map +1 -1
- package/dist/types/config.d.ts +1 -0
- package/dist/utils/charts/blessed/datasets/prepare-metrics.d.ts +4 -0
- package/dist/utils/charts/blessed/datasets/prepare-metrics.js +15 -1
- package/dist/utils/charts/blessed/datasets/prepare-metrics.js.map +1 -1
- package/dist/utils/commands/confirmations.d.ts +2 -2
- package/dist/utils/commands/confirmations.js +3 -4
- package/dist/utils/commands/confirmations.js.map +1 -1
- package/dist/utils/csv-file.d.ts +6 -0
- package/dist/utils/csv-file.js +48 -0
- package/dist/utils/csv-file.js.map +1 -0
- package/dist/utils/index.d.ts +3 -1
- package/dist/utils/index.js +3 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/ipfs.js +1 -1
- package/dist/utils/ipfs.js.map +1 -1
- package/dist/utils/logging/console.d.ts +1 -0
- package/dist/utils/logging/console.js +9 -1
- package/dist/utils/logging/console.js.map +1 -1
- package/dist/utils/report/report-proof.d.ts +3 -0
- package/dist/utils/report/report-proof.js +2 -2
- package/dist/utils/report/report-proof.js.map +1 -1
- package/dist/utils/report/report.d.ts +1 -1
- package/dist/utils/report/report.js +5 -4
- package/dist/utils/report/report.js.map +1 -1
- package/dist/utils/report/types.d.ts +1 -0
- package/dist/utils/timestamp.d.ts +1 -1
- package/dist/utils/timestamp.js +9 -2
- package/dist/utils/timestamp.js.map +1 -1
- package/dist/utils/transactions/index.d.ts +3 -0
- package/dist/utils/transactions/index.js +4 -0
- package/dist/utils/transactions/index.js.map +1 -0
- package/dist/utils/transactions/tx-private-key.d.ts +26 -0
- package/dist/utils/{contract.js → transactions/tx-private-key.js} +105 -9
- package/dist/utils/transactions/tx-private-key.js.map +1 -0
- package/dist/utils/transactions/tx-wc.d.ts +34 -0
- package/dist/utils/transactions/tx-wc.js +174 -0
- package/dist/utils/transactions/tx-wc.js.map +1 -0
- package/dist/utils/transactions/types.d.ts +40 -0
- package/dist/utils/transactions/types.js +2 -0
- package/dist/utils/transactions/types.js.map +1 -0
- package/dist/utils/wallet-connect.d.ts +7677 -0
- package/dist/utils/wallet-connect.js +179 -0
- package/dist/utils/wallet-connect.js.map +1 -0
- package/dist/version/index.js +1 -1
- package/package.json +9 -5
- package/dist/utils/contract.d.ts +0 -59
- 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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"}
|
package/dist/version/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = 'v1.0.0-alpha.
|
|
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.
|
|
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
|
-
"
|
|
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": "^
|
|
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}": [
|
package/dist/utils/contract.d.ts
DELETED
|
@@ -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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"}
|