@shieldedtech/moth-cli 0.2.0

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 (173) hide show
  1. package/README.md +67 -0
  2. package/dist/adapters/passphrase.d.ts +2 -0
  3. package/dist/adapters/passphrase.d.ts.map +1 -0
  4. package/dist/adapters/passphrase.js +62 -0
  5. package/dist/adapters/passphrase.js.map +1 -0
  6. package/dist/base-command.d.ts +155 -0
  7. package/dist/base-command.d.ts.map +1 -0
  8. package/dist/base-command.js +497 -0
  9. package/dist/base-command.js.map +1 -0
  10. package/dist/commands/airdrop.d.ts +18 -0
  11. package/dist/commands/airdrop.d.ts.map +1 -0
  12. package/dist/commands/airdrop.js +36 -0
  13. package/dist/commands/airdrop.js.map +1 -0
  14. package/dist/commands/balance.d.ts +18 -0
  15. package/dist/commands/balance.d.ts.map +1 -0
  16. package/dist/commands/balance.js +124 -0
  17. package/dist/commands/balance.js.map +1 -0
  18. package/dist/commands/call.d.ts +26 -0
  19. package/dist/commands/call.d.ts.map +1 -0
  20. package/dist/commands/call.js +102 -0
  21. package/dist/commands/call.js.map +1 -0
  22. package/dist/commands/config.d.ts +22 -0
  23. package/dist/commands/config.d.ts.map +1 -0
  24. package/dist/commands/config.js +50 -0
  25. package/dist/commands/config.js.map +1 -0
  26. package/dist/commands/daemon/call.d.ts +27 -0
  27. package/dist/commands/daemon/call.d.ts.map +1 -0
  28. package/dist/commands/daemon/call.js +108 -0
  29. package/dist/commands/daemon/call.js.map +1 -0
  30. package/dist/commands/daemon/deploy.d.ts +27 -0
  31. package/dist/commands/daemon/deploy.d.ts.map +1 -0
  32. package/dist/commands/daemon/deploy.js +105 -0
  33. package/dist/commands/daemon/deploy.js.map +1 -0
  34. package/dist/commands/daemon/dust/deregister.d.ts +19 -0
  35. package/dist/commands/daemon/dust/deregister.d.ts.map +1 -0
  36. package/dist/commands/daemon/dust/deregister.js +52 -0
  37. package/dist/commands/daemon/dust/deregister.js.map +1 -0
  38. package/dist/commands/daemon/dust/register.d.ts +20 -0
  39. package/dist/commands/daemon/dust/register.d.ts.map +1 -0
  40. package/dist/commands/daemon/dust/register.js +60 -0
  41. package/dist/commands/daemon/dust/register.js.map +1 -0
  42. package/dist/commands/daemon/key/gen.d.ts +19 -0
  43. package/dist/commands/daemon/key/gen.d.ts.map +1 -0
  44. package/dist/commands/daemon/key/gen.js +66 -0
  45. package/dist/commands/daemon/key/gen.js.map +1 -0
  46. package/dist/commands/daemon/key/list.d.ts +17 -0
  47. package/dist/commands/daemon/key/list.d.ts.map +1 -0
  48. package/dist/commands/daemon/key/list.js +43 -0
  49. package/dist/commands/daemon/key/list.js.map +1 -0
  50. package/dist/commands/daemon/key/revoke.d.ts +20 -0
  51. package/dist/commands/daemon/key/revoke.d.ts.map +1 -0
  52. package/dist/commands/daemon/key/revoke.js +37 -0
  53. package/dist/commands/daemon/key/revoke.js.map +1 -0
  54. package/dist/commands/daemon/maintenance/insert-vk.d.ts +24 -0
  55. package/dist/commands/daemon/maintenance/insert-vk.d.ts.map +1 -0
  56. package/dist/commands/daemon/maintenance/insert-vk.js +87 -0
  57. package/dist/commands/daemon/maintenance/insert-vk.js.map +1 -0
  58. package/dist/commands/daemon/maintenance/insert-vks-batch.d.ts +24 -0
  59. package/dist/commands/daemon/maintenance/insert-vks-batch.d.ts.map +1 -0
  60. package/dist/commands/daemon/maintenance/insert-vks-batch.js +117 -0
  61. package/dist/commands/daemon/maintenance/insert-vks-batch.js.map +1 -0
  62. package/dist/commands/daemon/serve.d.ts +23 -0
  63. package/dist/commands/daemon/serve.d.ts.map +1 -0
  64. package/dist/commands/daemon/serve.js +289 -0
  65. package/dist/commands/daemon/serve.js.map +1 -0
  66. package/dist/commands/daemon/submit-tx.d.ts +22 -0
  67. package/dist/commands/daemon/submit-tx.d.ts.map +1 -0
  68. package/dist/commands/daemon/submit-tx.js +89 -0
  69. package/dist/commands/daemon/submit-tx.js.map +1 -0
  70. package/dist/commands/daemon/transfer.d.ts +24 -0
  71. package/dist/commands/daemon/transfer.d.ts.map +1 -0
  72. package/dist/commands/daemon/transfer.js +135 -0
  73. package/dist/commands/daemon/transfer.js.map +1 -0
  74. package/dist/commands/deploy.d.ts +26 -0
  75. package/dist/commands/deploy.d.ts.map +1 -0
  76. package/dist/commands/deploy.js +135 -0
  77. package/dist/commands/deploy.js.map +1 -0
  78. package/dist/commands/dust/deregister.d.ts +18 -0
  79. package/dist/commands/dust/deregister.d.ts.map +1 -0
  80. package/dist/commands/dust/deregister.js +48 -0
  81. package/dist/commands/dust/deregister.js.map +1 -0
  82. package/dist/commands/dust/register.d.ts +21 -0
  83. package/dist/commands/dust/register.d.ts.map +1 -0
  84. package/dist/commands/dust/register.js +120 -0
  85. package/dist/commands/dust/register.js.map +1 -0
  86. package/dist/commands/dust/status.d.ts +17 -0
  87. package/dist/commands/dust/status.d.ts.map +1 -0
  88. package/dist/commands/dust/status.js +47 -0
  89. package/dist/commands/dust/status.js.map +1 -0
  90. package/dist/commands/info.d.ts +17 -0
  91. package/dist/commands/info.d.ts.map +1 -0
  92. package/dist/commands/info.js +37 -0
  93. package/dist/commands/info.js.map +1 -0
  94. package/dist/commands/maintenance/insert-vk.d.ts +23 -0
  95. package/dist/commands/maintenance/insert-vk.d.ts.map +1 -0
  96. package/dist/commands/maintenance/insert-vk.js +92 -0
  97. package/dist/commands/maintenance/insert-vk.js.map +1 -0
  98. package/dist/commands/maintenance/insert-vks-batch.d.ts +23 -0
  99. package/dist/commands/maintenance/insert-vks-batch.d.ts.map +1 -0
  100. package/dist/commands/maintenance/insert-vks-batch.js +130 -0
  101. package/dist/commands/maintenance/insert-vks-batch.js.map +1 -0
  102. package/dist/commands/mint.d.ts +24 -0
  103. package/dist/commands/mint.d.ts.map +1 -0
  104. package/dist/commands/mint.js +116 -0
  105. package/dist/commands/mint.js.map +1 -0
  106. package/dist/commands/state.d.ts +20 -0
  107. package/dist/commands/state.d.ts.map +1 -0
  108. package/dist/commands/state.js +36 -0
  109. package/dist/commands/state.js.map +1 -0
  110. package/dist/commands/transfer/batch.d.ts +21 -0
  111. package/dist/commands/transfer/batch.d.ts.map +1 -0
  112. package/dist/commands/transfer/batch.js +71 -0
  113. package/dist/commands/transfer/batch.js.map +1 -0
  114. package/dist/commands/transfer.d.ts +24 -0
  115. package/dist/commands/transfer.d.ts.map +1 -0
  116. package/dist/commands/transfer.js +123 -0
  117. package/dist/commands/transfer.js.map +1 -0
  118. package/dist/commands/tui.d.ts +17 -0
  119. package/dist/commands/tui.d.ts.map +1 -0
  120. package/dist/commands/tui.js +18 -0
  121. package/dist/commands/tui.js.map +1 -0
  122. package/dist/commands/wallet/address.d.ts +25 -0
  123. package/dist/commands/wallet/address.d.ts.map +1 -0
  124. package/dist/commands/wallet/address.js +47 -0
  125. package/dist/commands/wallet/address.js.map +1 -0
  126. package/dist/commands/wallet/generate.d.ts +20 -0
  127. package/dist/commands/wallet/generate.d.ts.map +1 -0
  128. package/dist/commands/wallet/generate.js +75 -0
  129. package/dist/commands/wallet/generate.js.map +1 -0
  130. package/dist/commands/wallet/import.d.ts +20 -0
  131. package/dist/commands/wallet/import.d.ts.map +1 -0
  132. package/dist/commands/wallet/import.js +85 -0
  133. package/dist/commands/wallet/import.js.map +1 -0
  134. package/dist/commands/wallet/list.d.ts +17 -0
  135. package/dist/commands/wallet/list.d.ts.map +1 -0
  136. package/dist/commands/wallet/list.js +23 -0
  137. package/dist/commands/wallet/list.js.map +1 -0
  138. package/dist/commands/wallet/remove.d.ts +21 -0
  139. package/dist/commands/wallet/remove.d.ts.map +1 -0
  140. package/dist/commands/wallet/remove.js +31 -0
  141. package/dist/commands/wallet/remove.js.map +1 -0
  142. package/dist/commands/wallet/status.d.ts +18 -0
  143. package/dist/commands/wallet/status.d.ts.map +1 -0
  144. package/dist/commands/wallet/status.js +62 -0
  145. package/dist/commands/wallet/status.js.map +1 -0
  146. package/dist/commands/wallet/use.d.ts +20 -0
  147. package/dist/commands/wallet/use.d.ts.map +1 -0
  148. package/dist/commands/wallet/use.js +19 -0
  149. package/dist/commands/wallet/use.js.map +1 -0
  150. package/dist/formatters/index.d.ts +5 -0
  151. package/dist/formatters/index.d.ts.map +1 -0
  152. package/dist/formatters/index.js +68 -0
  153. package/dist/formatters/index.js.map +1 -0
  154. package/dist/index.d.ts +3 -0
  155. package/dist/index.d.ts.map +1 -0
  156. package/dist/index.js +4 -0
  157. package/dist/index.js.map +1 -0
  158. package/package.json +53 -0
  159. package/templates/dapp/api/package.json +21 -0
  160. package/templates/dapp/api/src/index.ts +2 -0
  161. package/templates/dapp/api/src/providers.ts +23 -0
  162. package/templates/dapp/api/src/types.ts +23 -0
  163. package/templates/dapp/api/tsconfig.json +11 -0
  164. package/templates/dapp/root/README.md +20 -0
  165. package/templates/dapp/root/tsconfig.json +15 -0
  166. package/templates/dapp/ui/index.html +13 -0
  167. package/templates/dapp/ui/package.json +24 -0
  168. package/templates/dapp/ui/public/vite.svg +1 -0
  169. package/templates/dapp/ui/src/App.tsx +36 -0
  170. package/templates/dapp/ui/src/index.css +29 -0
  171. package/templates/dapp/ui/src/main.tsx +10 -0
  172. package/templates/dapp/ui/tsconfig.json +8 -0
  173. package/templates/dapp/ui/vite.config.ts +14 -0
@@ -0,0 +1,120 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { BaseCommand } from '../../base-command.js';
3
+ import { getPassphrase } from '../../adapters/passphrase.js';
4
+ import { designateForDustWithKeys, estimateDustRegistration, describeWait, DustRegistrationNotYetError, startWalletSync, } from '@shieldedtech/moth-wallet';
5
+ export default class DustRegister extends BaseCommand {
6
+ static description = 'Register wallet for DUST generation';
7
+ static flags = {
8
+ ...BaseCommand.baseFlags,
9
+ receiver: Flags.string({
10
+ description: 'DUST receiver address override (default: own DUST address)',
11
+ }),
12
+ yes: Flags.boolean({
13
+ char: 'y',
14
+ default: false,
15
+ description: 'Skip confirmation prompt',
16
+ }),
17
+ // Registration self-funds from the DUST its NIGHT would already have
18
+ // generated, so a freshly funded wallet has to wait. Without this the only
19
+ // option is to re-run the command — which re-syncs first, so the wait costs
20
+ // far more than it should.
21
+ wait: Flags.boolean({
22
+ default: false,
23
+ description: 'Wait until the registration fee is covered, instead of exiting',
24
+ }),
25
+ 'wait-timeout': Flags.integer({
26
+ default: 3600,
27
+ description: 'Seconds to keep waiting with --wait before giving up',
28
+ }),
29
+ };
30
+ async run() {
31
+ const { flags } = await this.parse(DustRegister);
32
+ this.outputFormat = flags.output ?? 'text';
33
+ this.verbose = flags.verbose;
34
+ const walletName = await this.resolveWalletName(flags);
35
+ const passphrase = await getPassphrase();
36
+ const wallet = await this.walletManager.unlock(walletName, passphrase);
37
+ const network = await this.getNetworkConfig(flags.network, this.getNetworkOverrides(flags));
38
+ // SR-003: Confirm transaction
39
+ await this.confirmTransaction({
40
+ 'Operation': 'Register for DUST generation',
41
+ 'Network': network.id,
42
+ 'Wallet': walletName,
43
+ ...(flags.receiver ? { 'Receiver': flags.receiver } : {}),
44
+ }, flags);
45
+ process.stderr.write('Syncing wallet before registration...\n');
46
+ const syncedWallet = await startWalletSync(wallet.walletKeys, network, (msg) => {
47
+ this.log_verbose(msg);
48
+ }, walletName);
49
+ try {
50
+ // Ask before building. The estimate is the only place the wait is
51
+ // knowable, and finding out by failing means paying for a sync first.
52
+ let estimate = await estimateDustRegistration(syncedWallet.facade);
53
+ if (!estimate.affordable) {
54
+ if (estimate.secondsUntilAffordable === null) {
55
+ this.outputError('WALLET_ERROR', 'This wallet does not hold enough NIGHT to cover the registration fee, and waiting will not change that.', 'Registration pays its own fee from the DUST its NIGHT would already have generated; that amount is capped by how much NIGHT you hold. Fund the wallet with more NIGHT.');
56
+ this.exit(1);
57
+ }
58
+ if (!flags.wait) {
59
+ this.outputSuccess({
60
+ status: 'not_yet',
61
+ message: `Registration pays its own fee from the DUST this NIGHT has generated since it arrived. ` +
62
+ `Ready in ${describeWait(estimate.secondsUntilAffordable)}. Re-run with --wait to block until then.`,
63
+ feeSpecks: estimate.fee.toString(),
64
+ availableSpecks: estimate.available.toString(),
65
+ secondsUntilAffordable: estimate.secondsUntilAffordable,
66
+ wallet: walletName,
67
+ network: network.id,
68
+ });
69
+ return;
70
+ }
71
+ // Poll rather than sleeping the whole predicted wait in one go: the
72
+ // estimate moves if the wallet's NIGHT changes under us, and a long
73
+ // blind sleep would report success or failure minutes late either way.
74
+ const deadline = Date.now() + flags['wait-timeout'] * 1_000;
75
+ while (!estimate.affordable) {
76
+ if (Date.now() >= deadline) {
77
+ this.outputError('WALLET_ERROR', `Still short of the registration fee after ${flags['wait-timeout']}s.`, `Needed ${describeWait(estimate.secondsUntilAffordable ?? 0)} at the last check; raise --wait-timeout or hold more NIGHT.`);
78
+ this.exit(1);
79
+ }
80
+ const remaining = estimate.secondsUntilAffordable ?? 30;
81
+ const sleepSeconds = Math.min(Math.max(remaining, 5), 30);
82
+ process.stderr.write(`Waiting for generated DUST to cover the fee — ${describeWait(remaining)} to go...\n`);
83
+ await new Promise((r) => setTimeout(r, sleepSeconds * 1_000));
84
+ estimate = await estimateDustRegistration(syncedWallet.facade);
85
+ }
86
+ }
87
+ const txHash = await designateForDustWithKeys(syncedWallet.facade, wallet.walletKeys, network.id, flags.receiver, (stage) => { process.stderr.write(`DUST register: ${stage}\n`); });
88
+ if (txHash) {
89
+ this.outputSuccess({
90
+ status: 'registered',
91
+ txHash,
92
+ wallet: walletName,
93
+ network: network.id,
94
+ });
95
+ }
96
+ else {
97
+ this.outputSuccess({
98
+ status: 'already_registered',
99
+ message: 'All NIGHT UTXOs already registered for DUST generation',
100
+ wallet: walletName,
101
+ });
102
+ }
103
+ }
104
+ catch (err) {
105
+ // Belt and braces: the pre-flight above should have caught this, but the
106
+ // wallet's NIGHT can change between the estimate and the build. Report it
107
+ // as "not yet" rather than as a stack trace either way.
108
+ if (err instanceof DustRegistrationNotYetError) {
109
+ this.outputError('WALLET_ERROR', err.message, 'Re-run with --wait to block until the fee is covered.');
110
+ this.exit(1);
111
+ }
112
+ throw err;
113
+ }
114
+ finally {
115
+ await syncedWallet.stop();
116
+ wallet.lock();
117
+ }
118
+ }
119
+ }
120
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/commands/dust/register.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class DustStatus extends BaseCommand {
3
+ static description: string;
4
+ static flags: {
5
+ output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
6
+ network: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
7
+ wallet: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
+ timeout: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ 'proof-server': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ prover: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ indexer: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ 'node-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ };
15
+ run(): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/dust/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,WAAW;IACjD,OAAgB,WAAW,SAAiC;IAE5D,OAAgB,KAAK;;;;;;;;;;MAEnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA4C3B"}
@@ -0,0 +1,47 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ import { IndexerClient } from '@shieldedtech/moth-wallet';
3
+ export default class DustStatus extends BaseCommand {
4
+ static description = 'Show DUST generation status';
5
+ static flags = {
6
+ ...BaseCommand.baseFlags,
7
+ };
8
+ async run() {
9
+ const { flags } = await this.parse(DustStatus);
10
+ this.outputFormat = flags.output ?? 'text';
11
+ this.verbose = flags.verbose;
12
+ const walletName = await this.resolveWalletName(flags);
13
+ const wallets = await this.walletManager.list();
14
+ const wallet = wallets.find((w) => w.name === walletName);
15
+ if (!wallet) {
16
+ this.outputError('WALLET_ERROR', `Wallet "${walletName}" not found`);
17
+ this.exit(1);
18
+ return;
19
+ }
20
+ const network = await this.getNetworkConfig(flags.network, this.getNetworkOverrides(flags));
21
+ const client = new IndexerClient(network.indexerUrl);
22
+ // Query DUST status — requires the Cardano reward address
23
+ // For now, use the wallet address as a placeholder
24
+ const statuses = await client.getDustGenerationStatus([wallet.address]);
25
+ if (statuses.length === 0) {
26
+ this.outputSuccess({
27
+ registered: false,
28
+ dustAddress: null,
29
+ nightBalance: '0',
30
+ generationRate: '0',
31
+ maxCapacity: '0',
32
+ currentCapacity: '0',
33
+ });
34
+ return;
35
+ }
36
+ const status = statuses[0];
37
+ this.outputSuccess({
38
+ registered: status.registered,
39
+ dustAddress: status.dustAddress,
40
+ nightBalance: status.nightBalance,
41
+ generationRate: status.generationRate,
42
+ maxCapacity: status.maxCapacity,
43
+ currentCapacity: status.currentCapacity,
44
+ });
45
+ }
46
+ }
47
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/dust/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,WAAW;IACjD,MAAM,CAAU,WAAW,GAAG,6BAA6B,CAAC;IAE5D,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,WAAW,CAAC,SAAS;KACzB,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAI,KAAK,CAAC,MAA0B,IAAI,MAAM,CAAC;QAChE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAE7B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAE5E,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,WAAW,UAAU,aAAa,CAAC,CAAC;YACrE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5F,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAErD,0DAA0D;QAC1D,mDAAmD;QACnD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAExE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAC;gBACjB,UAAU,EAAE,KAAK;gBACjB,WAAW,EAAE,IAAI;gBACjB,YAAY,EAAE,GAAG;gBACjB,cAAc,EAAE,GAAG;gBACnB,WAAW,EAAE,GAAG;gBAChB,eAAe,EAAE,GAAG;aACrB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,aAAa,CAAC;YACjB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,eAAe,EAAE,MAAM,CAAC,eAAe;SACxC,CAAC,CAAC;IACL,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { BaseCommand } from '../base-command.js';
2
+ export default class Info extends BaseCommand {
3
+ static description: string;
4
+ static flags: {
5
+ output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
6
+ network: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
7
+ wallet: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
+ timeout: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ 'proof-server': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ prover: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ indexer: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ 'node-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ };
15
+ run(): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,WAAW;IAC3C,OAAgB,WAAW,SAAuC;IAElE,OAAgB,KAAK;;;;;;;;;;MAEnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA+B3B"}
@@ -0,0 +1,37 @@
1
+ import { BaseCommand } from '../base-command.js';
2
+ import { JsonRpcNodeClient, resolveProverConfig } from '@shieldedtech/moth-wallet';
3
+ export default class Info extends BaseCommand {
4
+ static description = 'Show network and node information';
5
+ static flags = {
6
+ ...BaseCommand.baseFlags,
7
+ };
8
+ async run() {
9
+ const { flags } = await this.parse(Info);
10
+ this.outputFormat = flags.output ?? 'text';
11
+ this.verbose = flags.verbose;
12
+ const network = await this.getNetworkConfig(flags.network, this.getNetworkOverrides(flags));
13
+ let blockHeight = 'unknown';
14
+ let syncStatus = 'disconnected';
15
+ try {
16
+ const client = new JsonRpcNodeClient();
17
+ await client.connect(network);
18
+ blockHeight = await client.getBlockHeight();
19
+ syncStatus = 'connected';
20
+ await client.disconnect();
21
+ }
22
+ catch {
23
+ syncStatus = 'unreachable';
24
+ }
25
+ const prover = resolveProverConfig(network);
26
+ this.outputSuccess({
27
+ network: network.id,
28
+ nodeUrl: network.nodeUrl,
29
+ indexerUrl: network.indexerUrl,
30
+ prover: prover.type,
31
+ proofServerUrl: prover.type === 'server' ? prover.url : null,
32
+ blockHeight,
33
+ syncStatus,
34
+ });
35
+ }
36
+ }
37
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEnF,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,WAAW;IAC3C,MAAM,CAAU,WAAW,GAAG,mCAAmC,CAAC;IAElE,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,WAAW,CAAC,SAAS;KACzB,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,YAAY,GAAI,KAAK,CAAC,MAA0B,IAAI,MAAM,CAAC;QAChE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAE7B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;QAE5F,IAAI,WAAW,GAAoB,SAAS,CAAC;QAC7C,IAAI,UAAU,GAAG,cAAc,CAAC;QAEhC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;YACvC,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC9B,WAAW,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;YAC5C,UAAU,GAAG,WAAW,CAAC;YACzB,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,UAAU,GAAG,aAAa,CAAC;QAC7B,CAAC;QAED,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,aAAa,CAAC;YACjB,OAAO,EAAE,OAAO,CAAC,EAAE;YACnB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,MAAM,CAAC,IAAI;YACnB,cAAc,EAAE,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;YAC5D,WAAW;YACX,UAAU;SACX,CAAC,CAAC;IACL,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class MaintenanceInsertVk extends BaseCommand {
3
+ static description: string;
4
+ static flags: {
5
+ address: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
6
+ 'circuit-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ 'vk-file': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ artifact: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ 'project-dir': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ yes: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
12
+ network: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
13
+ wallet: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ timeout: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
+ 'proof-server': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
+ prover: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
+ indexer: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
19
+ 'node-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
20
+ };
21
+ run(): Promise<void>;
22
+ }
23
+ //# sourceMappingURL=insert-vk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert-vk.d.ts","sourceRoot":"","sources":["../../../src/commands/maintenance/insert-vk.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAUpD,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,WAAW;IAC1D,OAAgB,WAAW,SAAqF;IAEhH,OAAgB,KAAK;;;;;;;;;;;;;;;;MAuBnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAiE3B"}
@@ -0,0 +1,92 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { resolve } from 'node:path';
3
+ import { BaseCommand } from '../../base-command.js';
4
+ import { describeProver, insertVerifierKey, loadContractArtifact, resolveProverConfig, startWalletSync, } from '@shieldedtech/moth-wallet';
5
+ import { getPassphrase } from '../../adapters/passphrase.js';
6
+ export default class MaintenanceInsertVk extends BaseCommand {
7
+ static description = 'Insert a verifier key for a circuit on a deployed contract (maintenance update)';
8
+ static flags = {
9
+ ...BaseCommand.baseFlags,
10
+ address: Flags.string({
11
+ required: false,
12
+ description: 'Deployed contract address',
13
+ }),
14
+ 'circuit-id': Flags.string({
15
+ required: false,
16
+ description: 'Name of the circuit whose verifier key is being inserted',
17
+ }),
18
+ 'vk-file': Flags.string({
19
+ required: false,
20
+ description: 'Path to the .verifier file (raw bytes from compact compile)',
21
+ }),
22
+ artifact: Flags.string({
23
+ required: false,
24
+ description: 'Path to the FULL compiled contract artifact directory (the one declaring this circuit)',
25
+ }),
26
+ 'project-dir': Flags.string({
27
+ description: 'Project directory for SDK dependency resolution',
28
+ env: 'MOTH_PROJECT_DIR',
29
+ }),
30
+ yes: Flags.boolean({ char: 'y', description: 'Skip confirmation prompt', default: false }),
31
+ };
32
+ async run() {
33
+ const { flags } = await this.parse(MaintenanceInsertVk);
34
+ this.outputFormat = flags.output ?? 'text';
35
+ this.verbose = flags.verbose;
36
+ const address = await this.promptIfMissing(flags.address, 'Contract address');
37
+ const circuitId = await this.promptIfMissing(flags['circuit-id'], 'Circuit ID');
38
+ const vkPath = await this.promptIfMissing(flags['vk-file'], 'Verifier key file (.verifier)');
39
+ const artifactPath = await this.promptIfMissing(flags.artifact, 'Full compiled contract artifact directory');
40
+ const artifact = await loadContractArtifact(resolve(artifactPath));
41
+ this.log_verbose(`Loaded artifact: ${artifact.path}`);
42
+ const walletName = await this.resolveWalletName(flags);
43
+ const passphrase = await getPassphrase();
44
+ const wallet = await this.walletManager.unlock(walletName, passphrase);
45
+ const network = await this.getNetworkConfig(flags.network, this.getNetworkOverrides(flags));
46
+ await this.confirmTransaction({
47
+ 'Operation': `Insert verifier key for circuit "${circuitId}"`,
48
+ 'Contract': address,
49
+ 'Verifier key file': resolve(vkPath),
50
+ 'Artifact': artifact.path,
51
+ 'Network': network.id,
52
+ 'Wallet': walletName,
53
+ 'Prover': describeProver(resolveProverConfig(network)),
54
+ }, flags);
55
+ process.stderr.write('Syncing wallet before maintenance update...\n');
56
+ const syncedWallet = await startWalletSync(wallet.walletKeys, network, (msg) => {
57
+ this.log_verbose(msg);
58
+ if (msg.includes('syncing') || msg.includes('synced')) {
59
+ process.stderr.write(`\r ${msg}${''.padEnd(20)}`);
60
+ }
61
+ }, walletName);
62
+ process.stderr.write('\n');
63
+ try {
64
+ process.stderr.write(`Inserting verifier key for "${circuitId}"...\n`);
65
+ const result = await insertVerifierKey({
66
+ contractAddress: address,
67
+ circuitId,
68
+ verifierKeyPath: resolve(vkPath),
69
+ keys: wallet.keys,
70
+ walletKeys: wallet.walletKeys,
71
+ network,
72
+ syncedWallet,
73
+ artifactPath: artifact.path,
74
+ projectDir: flags['project-dir'] ? resolve(flags['project-dir']) : undefined,
75
+ timeoutMs: flags.timeout ? flags.timeout * 1000 : 120_000,
76
+ });
77
+ this.outputSuccess({
78
+ txHash: result.hash,
79
+ status: result.status,
80
+ blockHash: result.blockHash,
81
+ blockHeight: result.blockHeight,
82
+ circuitId,
83
+ contractAddress: result.contractAddress,
84
+ });
85
+ }
86
+ finally {
87
+ await syncedWallet.stop();
88
+ wallet.lock();
89
+ }
90
+ }
91
+ }
92
+ //# sourceMappingURL=insert-vk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert-vk.js","sourceRoot":"","sources":["../../../src/commands/maintenance/insert-vk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class MaintenanceInsertVksBatch extends BaseCommand {
3
+ static description: string;
4
+ static flags: {
5
+ address: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
6
+ artifact: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ circuits: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ 'skip-existing': import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
+ 'project-dir': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ yes: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
12
+ network: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
13
+ wallet: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ timeout: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
+ 'proof-server': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
+ prover: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
+ indexer: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
19
+ 'node-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
20
+ };
21
+ run(): Promise<void>;
22
+ }
23
+ //# sourceMappingURL=insert-vks-batch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert-vks-batch.d.ts","sourceRoot":"","sources":["../../../src/commands/maintenance/insert-vks-batch.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAUpD,MAAM,CAAC,OAAO,OAAO,yBAA0B,SAAQ,WAAW;IAChE,OAAgB,WAAW,SAG0C;IAErE,OAAgB,KAAK;;;;;;;;;;;;;;;;MAoBnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA0G3B"}
@@ -0,0 +1,130 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { resolve, join } from 'node:path';
3
+ import { readdirSync, existsSync } from 'node:fs';
4
+ import { BaseCommand } from '../../base-command.js';
5
+ import { describeProver, insertVerifierKeys, loadContractArtifact, resolveProverConfig, startWalletSync, } from '@shieldedtech/moth-wallet';
6
+ import { getPassphrase } from '../../adapters/passphrase.js';
7
+ export default class MaintenanceInsertVksBatch extends BaseCommand {
8
+ static description = 'Insert multiple verifier keys for a deployed contract in one command (Level 1 batching — '
9
+ + 'one tx per VK, shared wallet sync). Use for staged deployment of contracts whose '
10
+ + 'verifier-key payload would exceed the per-tx block weight cap.';
11
+ static flags = {
12
+ ...BaseCommand.baseFlags,
13
+ address: Flags.string({ required: false, description: 'Deployed contract address' }),
14
+ artifact: Flags.string({
15
+ required: false,
16
+ description: 'Path to the FULL compiled artifact directory (contains keys/*.verifier)',
17
+ }),
18
+ circuits: Flags.string({
19
+ required: false,
20
+ description: 'Comma-separated circuit names to insert. Default: every .verifier in <artifact>/keys.',
21
+ }),
22
+ 'skip-existing': Flags.boolean({
23
+ default: false,
24
+ description: 'Query the chain first and skip circuits already on-chain.',
25
+ }),
26
+ 'project-dir': Flags.string({
27
+ description: 'Project directory for SDK dep resolution',
28
+ env: 'MOTH_PROJECT_DIR',
29
+ }),
30
+ yes: Flags.boolean({ char: 'y', description: 'Skip confirmation prompt', default: false }),
31
+ };
32
+ async run() {
33
+ const { flags } = await this.parse(MaintenanceInsertVksBatch);
34
+ this.outputFormat = flags.output ?? 'text';
35
+ this.verbose = flags.verbose;
36
+ const address = await this.promptIfMissing(flags.address, 'Contract address');
37
+ const artifactPath = await this.promptIfMissing(flags.artifact, 'Full compiled artifact directory');
38
+ const artifact = await loadContractArtifact(resolve(artifactPath));
39
+ this.log_verbose(`Loaded artifact: ${artifact.path}`);
40
+ // Resolve circuit list
41
+ const keysDir = join(artifact.path, 'keys');
42
+ if (!existsSync(keysDir)) {
43
+ this.error(`No keys/ directory in artifact: ${keysDir}`);
44
+ }
45
+ const allKeyFiles = readdirSync(keysDir).filter(f => f.endsWith('.verifier'));
46
+ const allCircuitNames = allKeyFiles.map(f => f.replace(/\.verifier$/, ''));
47
+ let circuitsToInsert;
48
+ if (flags.circuits && flags.circuits.trim()) {
49
+ circuitsToInsert = flags.circuits.split(',').map(s => s.trim()).filter(Boolean);
50
+ const missing = circuitsToInsert.filter(c => !allCircuitNames.includes(c));
51
+ if (missing.length > 0) {
52
+ this.error(`Requested circuits not found in artifact keys/: ${missing.join(', ')}`);
53
+ }
54
+ }
55
+ else {
56
+ circuitsToInsert = allCircuitNames;
57
+ }
58
+ if (circuitsToInsert.length === 0) {
59
+ this.error('No circuits to insert.');
60
+ }
61
+ const entries = circuitsToInsert.map(circuitId => ({
62
+ circuitId,
63
+ verifierKeyPath: join(keysDir, `${circuitId}.verifier`),
64
+ }));
65
+ const walletName = await this.resolveWalletName(flags);
66
+ const passphrase = await getPassphrase();
67
+ const wallet = await this.walletManager.unlock(walletName, passphrase);
68
+ const network = await this.getNetworkConfig(flags.network, this.getNetworkOverrides(flags));
69
+ await this.confirmTransaction({
70
+ 'Operation': `Insert ${entries.length} verifier key(s)`,
71
+ 'Contract': address,
72
+ 'Artifact': artifact.path,
73
+ 'Circuits': entries.map(e => e.circuitId).join(', '),
74
+ 'Skip already-defined': flags['skip-existing'] ? 'yes' : 'no',
75
+ 'Network': network.id,
76
+ 'Wallet': walletName,
77
+ 'Prover': describeProver(resolveProverConfig(network)),
78
+ }, flags);
79
+ process.stderr.write('Syncing wallet before batch maintenance update...\n');
80
+ const syncedWallet = await startWalletSync(wallet.walletKeys, network, (msg) => {
81
+ this.log_verbose(msg);
82
+ if (msg.includes('syncing') || msg.includes('synced')) {
83
+ process.stderr.write(`\r ${msg}${''.padEnd(20)}`);
84
+ }
85
+ }, walletName);
86
+ process.stderr.write('\n');
87
+ try {
88
+ const result = await insertVerifierKeys({
89
+ contractAddress: address,
90
+ entries,
91
+ keys: wallet.keys,
92
+ walletKeys: wallet.walletKeys,
93
+ network,
94
+ syncedWallet,
95
+ artifactPath: artifact.path,
96
+ skipExisting: flags['skip-existing'],
97
+ projectDir: flags['project-dir'] ? resolve(flags['project-dir']) : undefined,
98
+ timeoutMs: flags.timeout ? flags.timeout * 1000 : 120_000,
99
+ onProgress: (e) => {
100
+ if (e.status === 'inserted') {
101
+ process.stderr.write(` ✓ ${e.circuitId} — tx ${e.txHash?.slice(0, 12) ?? ''} @ block ${e.blockHeight}\n`);
102
+ }
103
+ else if (e.status === 'skipped-existing') {
104
+ process.stderr.write(` · ${e.circuitId} — already on chain, skipped\n`);
105
+ }
106
+ else {
107
+ process.stderr.write(` ✗ ${e.circuitId} — ${e.error}\n`);
108
+ }
109
+ },
110
+ });
111
+ this.outputSuccess({
112
+ contractAddress: result.contractAddress,
113
+ total: result.total,
114
+ inserted: result.inserted,
115
+ skipped: result.skipped,
116
+ failed: result.failed,
117
+ entries: result.entries,
118
+ });
119
+ if (result.failed > 0) {
120
+ process.stderr.write(`\n${result.failed} circuit(s) failed. Re-run with --skip-existing to retry only the missing ones.\n`);
121
+ process.exit(2);
122
+ }
123
+ }
124
+ finally {
125
+ await syncedWallet.stop();
126
+ wallet.lock();
127
+ }
128
+ }
129
+ }
130
+ //# sourceMappingURL=insert-vks-batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert-vks-batch.js","sourceRoot":"","sources":["../../../src/commands/maintenance/insert-vks-batch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { BaseCommand } from '../base-command.js';
2
+ export default class Mint extends BaseCommand {
3
+ static description: string;
4
+ static args: {
5
+ amount: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
+ };
7
+ static flags: {
8
+ address: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ recipient: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ unshielded: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ yes: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
+ output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
13
+ network: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
14
+ wallet: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ timeout: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
+ 'proof-server': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
+ prover: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
19
+ indexer: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
20
+ 'node-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
21
+ };
22
+ run(): Promise<void>;
23
+ }
24
+ //# sourceMappingURL=mint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mint.d.ts","sourceRoot":"","sources":["../../src/commands/mint.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAUjD,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,WAAW;IAC3C,OAAgB,WAAW,SAOd;IAEb,OAAgB,IAAI;;MAElB;IAEF,OAAgB,KAAK;;;;;;;;;;;;;;MAanB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA6F3B"}