@vultisig/cli 0.1.0-alpha.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.
Files changed (60) hide show
  1. package/README.md +391 -0
  2. package/dist/adapters/cli-context.js +25 -0
  3. package/dist/adapters/cli-context.js.map +1 -0
  4. package/dist/adapters/cli-runner.js +47 -0
  5. package/dist/adapters/cli-runner.js.map +1 -0
  6. package/dist/adapters/index.js +6 -0
  7. package/dist/adapters/index.js.map +1 -0
  8. package/dist/commands/balance.js +65 -0
  9. package/dist/commands/balance.js.map +1 -0
  10. package/dist/commands/chains.js +46 -0
  11. package/dist/commands/chains.js.map +1 -0
  12. package/dist/commands/index.js +12 -0
  13. package/dist/commands/index.js.map +1 -0
  14. package/dist/commands/settings.js +151 -0
  15. package/dist/commands/settings.js.map +1 -0
  16. package/dist/commands/swap.js +180 -0
  17. package/dist/commands/swap.js.map +1 -0
  18. package/dist/commands/tokens.js +116 -0
  19. package/dist/commands/tokens.js.map +1 -0
  20. package/dist/commands/transaction.js +99 -0
  21. package/dist/commands/transaction.js.map +1 -0
  22. package/dist/commands/vault-management.js +360 -0
  23. package/dist/commands/vault-management.js.map +1 -0
  24. package/dist/core/command-context.js +81 -0
  25. package/dist/core/command-context.js.map +1 -0
  26. package/dist/core/index.js +7 -0
  27. package/dist/core/index.js.map +1 -0
  28. package/dist/core/password-manager.js +92 -0
  29. package/dist/core/password-manager.js.map +1 -0
  30. package/dist/core/types.js +2 -0
  31. package/dist/core/types.js.map +1 -0
  32. package/dist/index.js +440 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/interactive/completer.js +170 -0
  35. package/dist/interactive/completer.js.map +1 -0
  36. package/dist/interactive/event-buffer.js +186 -0
  37. package/dist/interactive/event-buffer.js.map +1 -0
  38. package/dist/interactive/index.js +9 -0
  39. package/dist/interactive/index.js.map +1 -0
  40. package/dist/interactive/session.js +525 -0
  41. package/dist/interactive/session.js.map +1 -0
  42. package/dist/interactive/shell-commands.js +167 -0
  43. package/dist/interactive/shell-commands.js.map +1 -0
  44. package/dist/interactive/shell-context.js +112 -0
  45. package/dist/interactive/shell-context.js.map +1 -0
  46. package/dist/lib/completion.js +375 -0
  47. package/dist/lib/completion.js.map +1 -0
  48. package/dist/lib/config.js +172 -0
  49. package/dist/lib/config.js.map +1 -0
  50. package/dist/lib/errors.js +163 -0
  51. package/dist/lib/errors.js.map +1 -0
  52. package/dist/lib/index.js +9 -0
  53. package/dist/lib/index.js.map +1 -0
  54. package/dist/lib/output.js +155 -0
  55. package/dist/lib/output.js.map +1 -0
  56. package/dist/lib/version.js +210 -0
  57. package/dist/lib/version.js.map +1 -0
  58. package/dist/ui.js +286 -0
  59. package/dist/ui.js.map +1 -0
  60. package/package.json +76 -0
@@ -0,0 +1,210 @@
1
+ /**
2
+ * Version Management for Vultisig CLI
3
+ *
4
+ * Provides version display and update checking functionality
5
+ */
6
+ import chalk from 'chalk';
7
+ import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'fs';
8
+ import { homedir } from 'os';
9
+ import { join } from 'path';
10
+ import { info } from './output';
11
+ // Package version (will be replaced during build or read from package.json)
12
+ let cachedVersion = null;
13
+ /**
14
+ * Get the current CLI version
15
+ */
16
+ export function getVersion() {
17
+ if (cachedVersion)
18
+ return cachedVersion;
19
+ try {
20
+ // Try to read from package.json in the installed location
21
+ const packagePath = new URL('../../package.json', import.meta.url);
22
+ const pkg = JSON.parse(readFileSync(packagePath, 'utf-8'));
23
+ cachedVersion = pkg.version;
24
+ return cachedVersion;
25
+ }
26
+ catch {
27
+ // Fallback version
28
+ cachedVersion = '0.1.0-beta.1';
29
+ return cachedVersion;
30
+ }
31
+ }
32
+ const CACHE_DIR = join(homedir(), '.vultisig', 'cache');
33
+ const VERSION_CACHE_FILE = join(CACHE_DIR, 'version-check.json');
34
+ const CACHE_TTL_MS = 24 * 60 * 60 * 1000; // 24 hours
35
+ /**
36
+ * Read version cache
37
+ */
38
+ function readVersionCache() {
39
+ try {
40
+ if (!existsSync(VERSION_CACHE_FILE))
41
+ return null;
42
+ const data = readFileSync(VERSION_CACHE_FILE, 'utf-8');
43
+ return JSON.parse(data);
44
+ }
45
+ catch {
46
+ return null;
47
+ }
48
+ }
49
+ /**
50
+ * Write version cache
51
+ */
52
+ function writeVersionCache(cache) {
53
+ try {
54
+ if (!existsSync(CACHE_DIR)) {
55
+ mkdirSync(CACHE_DIR, { recursive: true });
56
+ }
57
+ writeFileSync(VERSION_CACHE_FILE, JSON.stringify(cache, null, 2));
58
+ }
59
+ catch {
60
+ // Ignore cache write errors
61
+ }
62
+ }
63
+ /**
64
+ * Check npm registry for latest version
65
+ */
66
+ async function fetchLatestVersion() {
67
+ try {
68
+ const controller = new AbortController();
69
+ const timeout = setTimeout(() => controller.abort(), 5000); // 5 second timeout
70
+ const response = await fetch('https://registry.npmjs.org/@vultisig/cli/latest', {
71
+ signal: controller.signal,
72
+ headers: {
73
+ Accept: 'application/json',
74
+ },
75
+ });
76
+ clearTimeout(timeout);
77
+ if (!response.ok)
78
+ return null;
79
+ const data = (await response.json());
80
+ return data.version ?? null;
81
+ }
82
+ catch {
83
+ return null;
84
+ }
85
+ }
86
+ /**
87
+ * Compare semantic versions
88
+ * Returns true if v2 is newer than v1
89
+ */
90
+ function isNewerVersion(v1, v2) {
91
+ const parse = (v) => {
92
+ // Remove 'v' prefix and beta/alpha suffixes for comparison
93
+ const clean = v.replace(/^v/, '').replace(/-.*$/, '');
94
+ return clean.split('.').map(n => parseInt(n, 10) || 0);
95
+ };
96
+ const p1 = parse(v1);
97
+ const p2 = parse(v2);
98
+ for (let i = 0; i < 3; i++) {
99
+ const n1 = p1[i] ?? 0;
100
+ const n2 = p2[i] ?? 0;
101
+ if (n2 > n1)
102
+ return true;
103
+ if (n2 < n1)
104
+ return false;
105
+ }
106
+ // Check if v2 is stable while v1 is beta/alpha
107
+ if (v1.includes('-') && !v2.includes('-'))
108
+ return true;
109
+ return false;
110
+ }
111
+ /**
112
+ * Check for updates (non-blocking, returns immediately if cached)
113
+ */
114
+ export async function checkForUpdates() {
115
+ // Skip if update check is disabled
116
+ if (process.env.VULTISIG_NO_UPDATE_CHECK === '1') {
117
+ return null;
118
+ }
119
+ const currentVersion = getVersion();
120
+ const cache = readVersionCache();
121
+ // Use cached result if still valid
122
+ if (cache && Date.now() - cache.lastCheck < CACHE_TTL_MS) {
123
+ return {
124
+ currentVersion,
125
+ latestVersion: cache.latestVersion,
126
+ updateAvailable: cache.latestVersion ? isNewerVersion(currentVersion, cache.latestVersion) : false,
127
+ };
128
+ }
129
+ // Fetch in background, don't block
130
+ const latestVersion = await fetchLatestVersion();
131
+ // Update cache
132
+ writeVersionCache({
133
+ lastCheck: Date.now(),
134
+ latestVersion,
135
+ });
136
+ return {
137
+ currentVersion,
138
+ latestVersion,
139
+ updateAvailable: latestVersion ? isNewerVersion(currentVersion, latestVersion) : false,
140
+ };
141
+ }
142
+ /**
143
+ * Print update notification if available
144
+ */
145
+ export async function printUpdateNotification() {
146
+ try {
147
+ const result = await checkForUpdates();
148
+ if (result?.updateAvailable && result.latestVersion) {
149
+ info('');
150
+ info(chalk.yellow(`Update available: ${result.currentVersion} -> ${result.latestVersion}`));
151
+ info(chalk.gray(`Run "vultisig update" or "npm update -g @vultisig/cli" to update`));
152
+ info('');
153
+ }
154
+ }
155
+ catch {
156
+ // Silently ignore update check failures
157
+ }
158
+ }
159
+ /**
160
+ * Format version output for --version flag
161
+ */
162
+ export function formatVersionShort() {
163
+ return `vultisig/${getVersion()}`;
164
+ }
165
+ /**
166
+ * Format detailed version output for 'version' command
167
+ */
168
+ export function formatVersionDetailed() {
169
+ const lines = [];
170
+ lines.push(chalk.bold(`Vultisig CLI v${getVersion()}`));
171
+ lines.push('');
172
+ lines.push(` Node.js: ${process.version}`);
173
+ lines.push(` Platform: ${process.platform}-${process.arch}`);
174
+ lines.push(` Config: ~/.vultisig/`);
175
+ return lines.join('\n');
176
+ }
177
+ export function detectInstallMethod() {
178
+ const execPath = process.execPath;
179
+ if (execPath.includes('homebrew') || execPath.includes('Cellar')) {
180
+ return 'homebrew';
181
+ }
182
+ if (process.env.npm_execpath?.includes('yarn')) {
183
+ return 'yarn';
184
+ }
185
+ if (process.env.npm_config_user_agent?.includes('npm')) {
186
+ return 'npm';
187
+ }
188
+ // Check if running from global npm/yarn
189
+ if (execPath.includes('node_modules')) {
190
+ return 'npm';
191
+ }
192
+ return 'unknown';
193
+ }
194
+ /**
195
+ * Get update command for detected install method
196
+ */
197
+ export function getUpdateCommand() {
198
+ const method = detectInstallMethod();
199
+ switch (method) {
200
+ case 'npm':
201
+ return 'npm update -g @vultisig/cli';
202
+ case 'yarn':
203
+ return 'yarn global upgrade @vultisig/cli';
204
+ case 'homebrew':
205
+ return 'brew upgrade vultisig';
206
+ default:
207
+ return 'npm update -g @vultisig/cli';
208
+ }
209
+ }
210
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":"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"}
package/dist/ui.js ADDED
@@ -0,0 +1,286 @@
1
+ import { fiatCurrencyNameRecord, Vultisig } from '@vultisig/sdk';
2
+ import chalk from 'chalk';
3
+ import inquirer from 'inquirer';
4
+ // Import output helpers
5
+ import { info, isJsonOutput, printError, printResult, printTable, warn } from './lib/output';
6
+ // ============================================================================
7
+ // Display Formatters
8
+ // ============================================================================
9
+ export function displayBalance(chain, balance) {
10
+ printResult(chalk.cyan(`\n${chain} Balance:`));
11
+ printResult(` Amount: ${balance.amount} ${balance.symbol}`);
12
+ if (balance.fiatValue && balance.fiatCurrency) {
13
+ printResult(` Value: ${balance.fiatValue.toFixed(2)} ${balance.fiatCurrency}`);
14
+ }
15
+ }
16
+ export function displayBalancesTable(balances) {
17
+ printResult(chalk.cyan('\nPortfolio Balances:\n'));
18
+ const tableData = Object.entries(balances).map(([chain, balance]) => ({
19
+ Chain: chain,
20
+ Amount: balance.amount,
21
+ Symbol: balance.symbol,
22
+ Value: balance.fiatValue && balance.fiatCurrency ? `${balance.fiatValue.toFixed(2)} ${balance.fiatCurrency}` : 'N/A',
23
+ }));
24
+ printTable(tableData);
25
+ }
26
+ export function displayPortfolio(portfolio, currency) {
27
+ const currencyName = fiatCurrencyNameRecord[currency];
28
+ // Display total value
29
+ printResult(chalk.cyan('\n+----------------------------------------+'));
30
+ printResult(chalk.cyan(`| Portfolio Total Value (${currencyName}) |`));
31
+ printResult(chalk.cyan('+----------------------------------------+'));
32
+ const totalDisplay = portfolio.totalValue.amount.padEnd(20) + portfolio.totalValue.currency.toUpperCase().padStart(16);
33
+ printResult(chalk.cyan('| ') + chalk.bold.green(totalDisplay) + chalk.cyan(' |'));
34
+ printResult(chalk.cyan('+----------------------------------------+\n'));
35
+ // Display breakdown by chain
36
+ printResult(chalk.bold('Chain Breakdown:\n'));
37
+ const table = portfolio.chainBalances.map(({ chain, balance, value }) => ({
38
+ Chain: chain,
39
+ Amount: balance.amount,
40
+ Symbol: balance.symbol,
41
+ Value: value ? `${value.amount} ${value.currency.toUpperCase()}` : 'N/A',
42
+ }));
43
+ printTable(table);
44
+ }
45
+ export function displayAddresses(addresses) {
46
+ printResult(chalk.cyan('\nVault Addresses:\n'));
47
+ const table = Object.entries(addresses).map(([chain, address]) => ({
48
+ Chain: chain,
49
+ Address: address,
50
+ }));
51
+ printTable(table);
52
+ }
53
+ export function displayVaultInfo(vault) {
54
+ printResult(chalk.cyan('\n+----------------------------------------+'));
55
+ printResult(chalk.cyan('| Vault Information |'));
56
+ printResult(chalk.cyan('+----------------------------------------+\n'));
57
+ // Basic info
58
+ printResult(chalk.bold('Basic Information:'));
59
+ printResult(` Name: ${chalk.green(vault.name)}`);
60
+ printResult(` ID: ${vault.id}`);
61
+ printResult(` Type: ${chalk.yellow(vault.type)}`);
62
+ printResult(` Created: ${new Date(vault.createdAt).toLocaleString()}`);
63
+ printResult(` Last Modified: ${new Date(vault.lastModified).toLocaleString()}`);
64
+ // Security info
65
+ printResult(chalk.bold('\nSecurity:'));
66
+ printResult(` Encrypted: ${vault.isEncrypted ? chalk.green('Yes') : chalk.gray('No')}`);
67
+ printResult(` Backed Up: ${vault.isBackedUp ? chalk.green('Yes') : chalk.yellow('No')}`);
68
+ // MPC info
69
+ printResult(chalk.bold('\nMPC Configuration:'));
70
+ printResult(` Library Type: ${vault.libType}`);
71
+ printResult(` Threshold: ${chalk.cyan(vault.threshold)} of ${chalk.cyan(vault.totalSigners)}`);
72
+ printResult(` Local Party: ${vault.localPartyId}`);
73
+ printResult(` Total Signers: ${vault.totalSigners}`);
74
+ // Signing modes
75
+ const modes = vault.availableSigningModes;
76
+ printResult(chalk.bold('\nSigning Modes:'));
77
+ modes.forEach(mode => {
78
+ printResult(` - ${mode}`);
79
+ });
80
+ // Chains
81
+ const chains = vault.chains;
82
+ printResult(chalk.bold('\nChains:'));
83
+ printResult(` Total: ${chains.length}`);
84
+ chains.forEach((chain) => {
85
+ printResult(` - ${chain}`);
86
+ });
87
+ // Currency
88
+ printResult(chalk.bold('\nPreferences:'));
89
+ printResult(` Currency: ${vault.currency.toUpperCase()}`);
90
+ // Public keys
91
+ printResult(chalk.bold('\nPublic Keys:'));
92
+ printResult(` ECDSA: ${vault.publicKeys.ecdsa.substring(0, 20)}...`);
93
+ printResult(` EdDSA: ${vault.publicKeys.eddsa.substring(0, 20)}...`);
94
+ printResult(` Chain Code: ${vault.hexChainCode.substring(0, 20)}...\n`);
95
+ }
96
+ export function displayTransactionPreview(fromAddress, toAddress, amount, symbol, chain, memo, gas) {
97
+ if (gas) {
98
+ const bigIntReplacer = (_k, v) => (typeof v === 'bigint' ? v.toString() : v);
99
+ info(chalk.blue(`\nEstimated gas: ${JSON.stringify(gas, bigIntReplacer, 2)}`));
100
+ }
101
+ printResult(chalk.cyan('\nTransaction Preview:'));
102
+ printResult(` From: ${fromAddress}`);
103
+ printResult(` To: ${toAddress}`);
104
+ printResult(` Amount: ${amount} ${symbol}`);
105
+ printResult(` Chain: ${chain}`);
106
+ if (memo) {
107
+ printResult(` Memo: ${memo}`);
108
+ }
109
+ }
110
+ export function displayTransactionResult(chain, txHash) {
111
+ const explorerUrl = Vultisig.getTxExplorerUrl(chain, txHash);
112
+ printResult(txHash);
113
+ printResult(explorerUrl);
114
+ }
115
+ export function displayVaultsList(vaults, activeVault) {
116
+ printResult(chalk.cyan('\nStored Vaults:\n'));
117
+ const table = vaults.map(vault => ({
118
+ ID: vault.id,
119
+ Name: vault.name === activeVault?.name ? chalk.green(`${vault.name} (active)`) : vault.name,
120
+ Type: vault.type,
121
+ Chains: vault.chains.length,
122
+ Created: new Date(vault.createdAt).toLocaleDateString(),
123
+ }));
124
+ printTable(table);
125
+ }
126
+ // ============================================================================
127
+ // User Prompts
128
+ // ============================================================================
129
+ export async function confirmTransaction() {
130
+ const { confirmed } = await inquirer.prompt([
131
+ {
132
+ type: 'confirm',
133
+ name: 'confirmed',
134
+ message: 'Proceed with this transaction?',
135
+ default: false,
136
+ },
137
+ ]);
138
+ return confirmed;
139
+ }
140
+ export async function promptForPassword(message = 'Enter password:') {
141
+ const { password } = await inquirer.prompt([
142
+ {
143
+ type: 'password',
144
+ name: 'password',
145
+ message,
146
+ mask: '*',
147
+ },
148
+ ]);
149
+ return password;
150
+ }
151
+ // ============================================================================
152
+ // Vault Event Handlers
153
+ // ============================================================================
154
+ export function setupVaultEvents(vault) {
155
+ // Balance updates
156
+ vault.on('balanceUpdated', ({ chain, balance, tokenId }) => {
157
+ const asset = tokenId ? `${balance.symbol} token` : balance.symbol;
158
+ info(chalk.blue(`i Balance updated for ${chain} (${asset}): ${balance.amount}`));
159
+ });
160
+ // Transaction broadcast
161
+ vault.on('transactionBroadcast', ({ chain, txHash }) => {
162
+ info(chalk.green(`+ Transaction broadcast on ${chain}`));
163
+ info(chalk.blue(` TX Hash: ${txHash}`));
164
+ });
165
+ // Chain added
166
+ vault.on('chainAdded', ({ chain }) => {
167
+ info(chalk.green(`+ Chain added: ${chain}`));
168
+ });
169
+ // Chain removed
170
+ vault.on('chainRemoved', ({ chain }) => {
171
+ warn(chalk.yellow(`i Chain removed: ${chain}`));
172
+ });
173
+ // Token added
174
+ vault.on('tokenAdded', ({ chain, token }) => {
175
+ info(chalk.green(`+ Token added: ${token.symbol} on ${chain}`));
176
+ });
177
+ // Values updated
178
+ vault.on('valuesUpdated', ({ chain }) => {
179
+ if (chain === 'all') {
180
+ info(chalk.blue('i Portfolio values updated'));
181
+ }
182
+ else {
183
+ info(chalk.blue(`i Values updated for ${chain}`));
184
+ }
185
+ });
186
+ // Errors - skip in JSON mode (errors are reported via JSON response)
187
+ if (!isJsonOutput()) {
188
+ vault.on('error', (err) => {
189
+ printError(chalk.red(`x Vault error: ${err.message}`));
190
+ });
191
+ }
192
+ }
193
+ // ============================================================================
194
+ // Swap Display Helpers
195
+ // ============================================================================
196
+ /**
197
+ * Format bigint amount to human-readable string
198
+ */
199
+ function formatBigintAmount(amount, decimals) {
200
+ if (amount === 0n)
201
+ return '0';
202
+ const divisor = BigInt(10 ** decimals);
203
+ const whole = amount / divisor;
204
+ const fraction = amount % divisor;
205
+ if (fraction === 0n) {
206
+ return whole.toString();
207
+ }
208
+ const fractionStr = fraction.toString().padStart(decimals, '0');
209
+ // Trim trailing zeros
210
+ const trimmed = fractionStr.replace(/0+$/, '');
211
+ return `${whole}.${trimmed}`;
212
+ }
213
+ export function displaySwapPreview(quote, fromAmount, fromSymbol, toSymbol, options) {
214
+ const estimatedOutputFormatted = formatBigintAmount(quote.estimatedOutput, options.toDecimals);
215
+ printResult(chalk.cyan('\nSwap Preview:'));
216
+ printResult(` From: ${fromAmount} ${fromSymbol}`);
217
+ printResult(` To: ${estimatedOutputFormatted} ${toSymbol}`);
218
+ // Show fiat value if available
219
+ if (quote.estimatedOutputFiat !== undefined) {
220
+ printResult(` (~$${quote.estimatedOutputFiat.toFixed(2)})`);
221
+ }
222
+ printResult(` Provider: ${quote.provider}`);
223
+ if (quote.fees) {
224
+ const networkFeeFormatted = formatBigintAmount(quote.fees.network, options.feeDecimals);
225
+ const totalFeeFormatted = formatBigintAmount(quote.fees.total, options.feeDecimals);
226
+ printResult(chalk.bold('\n Fees:'));
227
+ printResult(` Network: ${networkFeeFormatted} ${options.feeSymbol}`);
228
+ // Show fiat fee if available
229
+ if (quote.feesFiat) {
230
+ printResult(` (~$${quote.feesFiat.network.toFixed(2)})`);
231
+ }
232
+ if (quote.fees.affiliate && quote.fees.affiliate > 0n) {
233
+ const affiliateFeeFormatted = formatBigintAmount(quote.fees.affiliate, options.feeDecimals);
234
+ printResult(` Affiliate: ${affiliateFeeFormatted} ${options.feeSymbol}`);
235
+ if (quote.feesFiat?.affiliate) {
236
+ printResult(` (~$${quote.feesFiat.affiliate.toFixed(2)})`);
237
+ }
238
+ }
239
+ printResult(` Total: ${totalFeeFormatted} ${options.feeSymbol}`);
240
+ if (quote.feesFiat) {
241
+ printResult(` (~$${quote.feesFiat.total.toFixed(2)})`);
242
+ }
243
+ }
244
+ if (quote.warnings && quote.warnings.length > 0) {
245
+ printResult(chalk.yellow('\n Warnings:'));
246
+ quote.warnings.forEach(warning => {
247
+ printResult(chalk.yellow(` - ${warning}`));
248
+ });
249
+ }
250
+ if (quote.requiresApproval) {
251
+ printResult(chalk.yellow('\n Token approval required before swap'));
252
+ if (quote.approvalInfo) {
253
+ printResult(` Spender: ${quote.approvalInfo.spender}`);
254
+ }
255
+ }
256
+ // Show expiry
257
+ const expiresIn = Math.max(0, Math.floor((quote.expiresAt - Date.now()) / 1000));
258
+ info(chalk.gray(`\n Quote expires in ${expiresIn}s`));
259
+ }
260
+ export function displaySwapResult(fromChain, _toChain, txHash, quote, toDecimals) {
261
+ const explorerUrl = Vultisig.getTxExplorerUrl(fromChain, txHash);
262
+ const estimatedOutputFormatted = formatBigintAmount(quote.estimatedOutput, toDecimals);
263
+ printResult(txHash);
264
+ printResult(explorerUrl);
265
+ printResult(estimatedOutputFormatted);
266
+ }
267
+ export function displaySwapChains(chains) {
268
+ printResult(chalk.cyan('\nSupported Swap Chains:\n'));
269
+ const table = chains.map(chain => ({
270
+ Chain: chain,
271
+ }));
272
+ printTable(table);
273
+ printResult(`\nTotal: ${chains.length} chains`);
274
+ }
275
+ export async function confirmSwap() {
276
+ const { confirmed } = await inquirer.prompt([
277
+ {
278
+ type: 'confirm',
279
+ name: 'confirmed',
280
+ message: 'Proceed with this swap?',
281
+ default: false,
282
+ },
283
+ ]);
284
+ return confirmed;
285
+ }
286
+ //# sourceMappingURL=ui.js.map
package/dist/ui.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,76 @@
1
+ {
2
+ "name": "@vultisig/cli",
3
+ "version": "0.1.0-alpha.1",
4
+ "description": "Command-line wallet for Vultisig - multi-chain MPC wallet management",
5
+ "type": "module",
6
+ "bin": {
7
+ "vsig": "./dist/index.js",
8
+ "vultisig": "./dist/index.js"
9
+ },
10
+ "main": "dist/index.js",
11
+ "files": [
12
+ "dist",
13
+ "README.md",
14
+ "LICENSE"
15
+ ],
16
+ "scripts": {
17
+ "build": "tsc",
18
+ "start": "node dist/index.js",
19
+ "dev": "npx tsx src/index.ts",
20
+ "cli": "npx tsx src/index.ts",
21
+ "cli:interactive": "npx tsx src/index.ts --interactive",
22
+ "repl": "npx tsx src/index.ts --interactive",
23
+ "typecheck": "tsc --noEmit",
24
+ "prepublishOnly": "npm run build"
25
+ },
26
+ "keywords": [
27
+ "vultisig",
28
+ "wallet",
29
+ "cli",
30
+ "blockchain",
31
+ "crypto",
32
+ "mpc",
33
+ "multi-party-computation"
34
+ ],
35
+ "author": {
36
+ "name": "Vultisig",
37
+ "email": "info@vultisig.com",
38
+ "url": "https://vultisig.com"
39
+ },
40
+ "license": "MIT",
41
+ "repository": {
42
+ "type": "git",
43
+ "url": "https://github.com/vultisig/vultisig-sdk.git",
44
+ "directory": "clients/cli"
45
+ },
46
+ "bugs": {
47
+ "url": "https://github.com/vultisig/vultisig-sdk/issues"
48
+ },
49
+ "homepage": "https://vultisig.com",
50
+ "dependencies": {
51
+ "@vultisig/sdk": "workspace:*",
52
+ "chalk": "^5.3.0",
53
+ "cli-table3": "^0.6.5",
54
+ "commander": "^12.0.0",
55
+ "dotenv": "^16.4.0",
56
+ "inquirer": "^9.2.0",
57
+ "ora": "^8.0.0",
58
+ "tabtab": "^3.0.2",
59
+ "ws": "^8.18.3"
60
+ },
61
+ "devDependencies": {
62
+ "@types/inquirer": "^9.0.0",
63
+ "@types/node": "^22.13.10",
64
+ "@types/tabtab": "^3.0.4",
65
+ "@types/ws": "^8.18.1",
66
+ "tsx": "^4.7.0",
67
+ "typescript": "^5.8.2"
68
+ },
69
+ "engines": {
70
+ "node": ">=18.0.0"
71
+ },
72
+ "publishConfig": {
73
+ "access": "public",
74
+ "registry": "https://registry.npmjs.org/"
75
+ }
76
+ }