@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,89 @@
1
+ // Submit a pre-built finalized transaction through the running TUI's
2
+ // daemon. The CLI never sees or holds spending keys for this path —
3
+ // the caller produced the tx elsewhere (e.g., `moth transfer
4
+ // --no-submit --output-hex` once that flag exists, or via the SDK
5
+ // directly) and the TUI's facade does the actual on-chain submission
6
+ // after the human approves in the L3 modal.
7
+ import { Flags } from '@oclif/core';
8
+ import { BaseCommand, daemonClientFlags } from '../../base-command.js';
9
+ export default class DaemonSubmitTx extends BaseCommand {
10
+ static description = 'Submit a pre-built finalized transaction through the running TUI daemon. The TUI surfaces an L3 confirmation modal; the call hangs until the user answers.';
11
+ static flags = {
12
+ ...BaseCommand.baseFlags,
13
+ ...daemonClientFlags,
14
+ hex: Flags.string({
15
+ description: 'Hex-encoded FinalizedTransaction. Omit to read from stdin.',
16
+ }),
17
+ summary: Flags.string({
18
+ description: 'Short description shown in the TUI confirmation modal',
19
+ default: 'External CLI requested a transaction submit',
20
+ }),
21
+ detail: Flags.string({
22
+ description: 'Additional context lines for the modal (repeatable)',
23
+ multiple: true,
24
+ }),
25
+ 'timeout-ms': Flags.integer({
26
+ description: 'Override the RPC timeout (default: 120000)',
27
+ default: 120_000,
28
+ }),
29
+ };
30
+ async run() {
31
+ const { flags } = await this.parse(DaemonSubmitTx);
32
+ this.outputFormat = flags.output ?? 'text';
33
+ this.verbose = flags.verbose;
34
+ const walletName = await this.resolveWalletName(flags);
35
+ const network = await this.getNetworkConfig(flags.network, this.getNetworkOverrides(flags));
36
+ // Hex from --hex, else from stdin. CLI args are visible in `ps`, so a
37
+ // tx hex containing nullifiers / commitments shouldn't go on the
38
+ // command line — stdin is the recommended path.
39
+ let hex = flags.hex;
40
+ if (!hex) {
41
+ if (process.stdin.isTTY) {
42
+ this.outputError('INVALID_INPUT', 'No --hex provided and stdin is a TTY. Pipe the hex: moth transfer --no-submit ... | moth daemon submit-tx');
43
+ this.exit(2);
44
+ return;
45
+ }
46
+ const chunks = [];
47
+ for await (const chunk of process.stdin)
48
+ chunks.push(chunk);
49
+ hex = Buffer.concat(chunks).toString('utf-8').trim();
50
+ }
51
+ if (!hex) {
52
+ this.outputError('INVALID_INPUT', 'Empty transaction hex');
53
+ this.exit(2);
54
+ return;
55
+ }
56
+ const client = await this.connectDaemonOrExit(network.id, walletName, { bind: flags.bind });
57
+ if (!client)
58
+ return;
59
+ try {
60
+ // Pre-flight: if the daemon's wallet facade isn't ready yet (TUI
61
+ // just started, wallet still unlocking, etc.), short-circuit
62
+ // before we trigger a confirmation modal that can't proceed.
63
+ const state = await client.call('getState');
64
+ if (!state.ready) {
65
+ this.outputError('WALLET_ERROR', `TUI is running but the wallet facade for "${walletName}" is still initializing on ${network.id}. Wait for the TUI to finish unlocking / starting sync and retry.`);
66
+ this.exit(1);
67
+ return;
68
+ }
69
+ this.log_verbose(`Sending submitTransaction (${Math.floor(hex.length / 2)} bytes) via daemon ${client.daemonVersion}`);
70
+ const result = await client.call('submitTransaction', { hex, summary: flags.summary, details: flags.detail }, { timeoutMs: flags['timeout-ms'] });
71
+ if (this.outputFormat === 'json') {
72
+ this.outputSuccess(result);
73
+ }
74
+ else {
75
+ this.log(`Submitted. Transaction id: ${result.txId}`);
76
+ }
77
+ }
78
+ catch (err) {
79
+ const { category, message } = this.renderDaemonError(err);
80
+ this.outputError(category, message);
81
+ this.exit(1);
82
+ return;
83
+ }
84
+ finally {
85
+ client.close();
86
+ }
87
+ }
88
+ }
89
+ //# sourceMappingURL=submit-tx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submit-tx.js","sourceRoot":"","sources":["../../../src/commands/daemon/submit-tx.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class DaemonTransfer extends BaseCommand {
3
+ static description: string;
4
+ static flags: {
5
+ to: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
6
+ 'token-id': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
7
+ type: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
+ amount: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ night: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ 'timeout-ms': import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
11
+ bind: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
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=transfer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../../src/commands/daemon/transfer.ts"],"names":[],"mappings":"AAWA,OAAO,EAAC,WAAW,EAAoB,MAAM,uBAAuB,CAAC;AASrE,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,WAAW;IACrD,OAAgB,WAAW,SAC4N;IAEvP,OAAgB,KAAK;;;;;;;;;;;;;;;;;MA4BnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA6G3B"}
@@ -0,0 +1,135 @@
1
+ // High-level transfer through the TUI's daemon. The CLI sends operation
2
+ // intent (recipient + token + amount); the TUI's facade does the whole
3
+ // pipeline — balance, prove via the proof server, sign, submit — and
4
+ // returns the on-chain tx hash. Spending keys never leave the TUI.
5
+ //
6
+ // Amount input: the wire format is always raw smallest-unit decimal.
7
+ // On the CLI side, --amount is raw; --night is a convenience shortcut
8
+ // that multiplies a NIGHT decimal by 10^6 (STARS per NIGHT) and only
9
+ // works when the resolved tokenId is NIGHT.
10
+ import { Flags } from '@oclif/core';
11
+ import { BaseCommand, daemonClientFlags } from '../../base-command.js';
12
+ const NIGHT_TOKEN_ID = '0'.repeat(64);
13
+ const STARS_PER_NIGHT = 1000000n;
14
+ export default class DaemonTransfer extends BaseCommand {
15
+ static description = 'Transfer tokens through the running TUI daemon. The TUI builds, balances, proves (via the proof server) and submits the transaction; spending keys never leave the TUI. Triggers an L3 confirmation modal in the TUI before the transfer goes out.';
16
+ static flags = {
17
+ ...BaseCommand.baseFlags,
18
+ ...daemonClientFlags,
19
+ to: Flags.string({
20
+ description: 'Recipient bech32m address',
21
+ required: true,
22
+ }),
23
+ 'token-id': Flags.string({
24
+ description: 'Token id (64-char hex). Defaults to NIGHT.',
25
+ default: NIGHT_TOKEN_ID,
26
+ }),
27
+ type: Flags.string({
28
+ description: 'Transfer path',
29
+ options: ['shielded', 'unshielded'],
30
+ default: 'unshielded',
31
+ }),
32
+ amount: Flags.string({
33
+ description: 'Raw amount in the token\'s smallest unit (STARS for NIGHT). Mutually exclusive with --night.',
34
+ }),
35
+ night: Flags.string({
36
+ description: 'Convenience: amount expressed as NIGHT (will be multiplied by 10^6 STARS). Rejected if --token-id is not NIGHT. Mutually exclusive with --amount.',
37
+ }),
38
+ 'timeout-ms': Flags.integer({
39
+ description: 'Override the RPC timeout (default: 600000)',
40
+ default: 600_000,
41
+ }),
42
+ };
43
+ async run() {
44
+ const { flags } = await this.parse(DaemonTransfer);
45
+ this.outputFormat = flags.output ?? 'text';
46
+ this.verbose = flags.verbose;
47
+ const walletName = await this.resolveWalletName(flags);
48
+ const network = await this.getNetworkConfig(flags.network, this.getNetworkOverrides(flags));
49
+ const tokenId = flags['token-id'].toLowerCase();
50
+ if (!/^[0-9a-f]{64}$/.test(tokenId)) {
51
+ this.outputError('INVALID_INPUT', '--token-id must be a 64-char hex string');
52
+ this.exit(2);
53
+ return;
54
+ }
55
+ // Resolve amount. Exactly one of --amount or --night must be set.
56
+ let rawAmount;
57
+ if (flags.amount && flags.night) {
58
+ this.outputError('INVALID_INPUT', '--amount and --night are mutually exclusive');
59
+ this.exit(2);
60
+ return;
61
+ }
62
+ if (flags.amount) {
63
+ if (!/^\d+$/.test(flags.amount)) {
64
+ this.outputError('INVALID_INPUT', '--amount must be a non-negative decimal');
65
+ this.exit(2);
66
+ return;
67
+ }
68
+ rawAmount = BigInt(flags.amount);
69
+ }
70
+ else if (flags.night) {
71
+ if (tokenId !== NIGHT_TOKEN_ID) {
72
+ this.outputError('INVALID_INPUT', '--night is only valid when --token-id is NIGHT. For other tokens use --amount with the raw smallest-unit value.');
73
+ this.exit(2);
74
+ return;
75
+ }
76
+ // Parse as decimal NIGHT, multiply by 10^6 STARS. We support up to
77
+ // 6 decimal places (one STAR). More than that is silently truncated
78
+ // — but we reject anything that doesn't even look like a decimal.
79
+ const m = flags.night.match(/^(\d+)(?:\.(\d{1,6}))?$/);
80
+ if (!m) {
81
+ this.outputError('INVALID_INPUT', '--night must be a decimal with at most 6 fractional digits');
82
+ this.exit(2);
83
+ return;
84
+ }
85
+ const whole = BigInt(m[1]);
86
+ const frac = m[2] ? BigInt(m[2].padEnd(6, '0')) : 0n;
87
+ rawAmount = whole * STARS_PER_NIGHT + frac;
88
+ }
89
+ else {
90
+ this.outputError('INVALID_INPUT', 'one of --amount or --night is required');
91
+ this.exit(2);
92
+ return;
93
+ }
94
+ if (rawAmount <= 0n) {
95
+ this.outputError('INVALID_INPUT', 'amount must be greater than zero');
96
+ this.exit(2);
97
+ return;
98
+ }
99
+ const client = await this.connectDaemonOrExit(network.id, walletName, { bind: flags.bind });
100
+ if (!client)
101
+ return;
102
+ try {
103
+ // Pre-flight: short-circuit if the daemon's facade isn't ready.
104
+ const state = await client.call('getState');
105
+ if (!state.ready) {
106
+ this.outputError('WALLET_ERROR', `TUI is running but the wallet facade for "${walletName}" is still initializing on ${network.id}. Wait for the TUI to finish unlocking / starting sync and retry.`);
107
+ this.exit(1);
108
+ return;
109
+ }
110
+ this.log_verbose(`Sending transferTokens (${flags.type}, ${rawAmount.toString()} raw of token ${tokenId.slice(0, 8)}…) via daemon ${client.daemonVersion}`);
111
+ const result = await client.call('transferTokens', {
112
+ type: flags.type,
113
+ tokenId,
114
+ amount: rawAmount.toString(),
115
+ to: flags.to,
116
+ }, { timeoutMs: flags['timeout-ms'] });
117
+ if (this.outputFormat === 'json') {
118
+ this.outputSuccess(result);
119
+ }
120
+ else {
121
+ this.log(`Submitted. Transaction id: ${result.txId}`);
122
+ }
123
+ }
124
+ catch (err) {
125
+ const { category, message } = this.renderDaemonError(err);
126
+ this.outputError(category, message);
127
+ this.exit(1);
128
+ return;
129
+ }
130
+ finally {
131
+ client.close();
132
+ }
133
+ }
134
+ }
135
+ //# sourceMappingURL=transfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../../src/commands/daemon/transfer.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,uEAAuE;AACvE,qEAAqE;AACrE,mEAAmE;AACnE,EAAE;AACF,qEAAqE;AACrE,sEAAsE;AACtE,qEAAqE;AACrE,4CAA4C;AAE5C,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAC;AAClC,OAAO,EAAC,WAAW,EAAE,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAErE,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACtC,MAAM,eAAe,GAAG,QAAU,CAAC;AAMnC,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,WAAW;IACrD,MAAM,CAAU,WAAW,GACzB,oPAAoP,CAAC;IAEvP,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,WAAW,CAAC,SAAS;QACxB,GAAG,iBAAiB;QACpB,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC;YACf,WAAW,EAAE,2BAA2B;YACxC,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC;YACvB,WAAW,EAAE,4CAA4C;YACzD,OAAO,EAAE,cAAc;SACxB,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,WAAW,EAAE,eAAe;YAC5B,OAAO,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC;YACnC,OAAO,EAAE,YAAY;SACtB,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,WAAW,EACT,8FAA8F;SACjG,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,WAAW,EACT,mJAAmJ;SACtJ,CAAC;QACF,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;YAC1B,WAAW,EAAE,4CAA4C;YACzD,OAAO,EAAE,OAAO;SACjB,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACjD,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,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;QAE5F,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QAChD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,yCAAyC,CAAC,CAAC;YAC7E,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,OAAO;QACT,CAAC;QAED,kEAAkE;QAClE,IAAI,SAAiB,CAAC;QACtB,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,6CAA6C,CAAC,CAAC;YACjF,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,yCAAyC,CAAC,CAAC;gBAC7E,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACb,OAAO;YACT,CAAC;YACD,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;aAAM,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACvB,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;gBAC/B,IAAI,CAAC,WAAW,CACd,eAAe,EACf,iHAAiH,CAClH,CAAC;gBACF,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACb,OAAO;YACT,CAAC;YACD,mEAAmE;YACnE,oEAAoE;YACpE,kEAAkE;YAClE,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YACvD,IAAI,CAAC,CAAC,EAAE,CAAC;gBACP,IAAI,CAAC,WAAW,CACd,eAAe,EACf,4DAA4D,CAC7D,CAAC;gBACF,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACb,OAAO;YACT,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;YAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,SAAS,GAAG,KAAK,GAAG,eAAe,GAAG,IAAI,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,wCAAwC,CAAC,CAAC;YAC5E,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,OAAO;QACT,CAAC;QAED,IAAI,SAAS,IAAI,EAAE,EAAE,CAAC;YACpB,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,kCAAkC,CAAC,CAAC;YACtE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,EAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAC,CAAC,CAAC;QAC1F,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,IAAI,CAAC;YACH,gEAAgE;YAChE,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,IAAI,CAAmB,UAAU,CAAC,CAAC;YAC9D,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACjB,IAAI,CAAC,WAAW,CACd,cAAc,EACd,6CAA6C,UAAU,8BAA8B,OAAO,CAAC,EAAE,mEAAmE,CACnK,CAAC;gBACF,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACb,OAAO;YACT,CAAC;YAED,IAAI,CAAC,WAAW,CACd,2BAA2B,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ,EAAE,iBAAiB,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,iBAAiB,MAAM,CAAC,aAAa,EAAE,CAC1I,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAC9B,gBAAgB,EAChB;gBACE,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO;gBACP,MAAM,EAAE,SAAS,CAAC,QAAQ,EAAE;gBAC5B,EAAE,EAAE,KAAK,CAAC,EAAE;aACb,EACD,EAAC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,EAAC,CACjC,CAAC;YAEF,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;gBACjC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,8BAA8B,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,EAAC,QAAQ,EAAE,OAAO,EAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;YACxD,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,OAAO;QACT,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;IACH,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { BaseCommand } from '../base-command.js';
2
+ export default class Deploy extends BaseCommand {
3
+ static description: string;
4
+ static args: {
5
+ artifact: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
6
+ };
7
+ static flags: {
8
+ witnesses: 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
+ name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ args: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ 'private-state': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ yes: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
15
+ network: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
16
+ wallet: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
+ timeout: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
19
+ 'proof-server': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
20
+ prover: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
21
+ indexer: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
22
+ 'node-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
23
+ };
24
+ run(): Promise<void>;
25
+ }
26
+ //# sourceMappingURL=deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAcjD,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAAW;IAC7C,OAAgB,WAAW,SAkBd;IAEb,OAAgB,IAAI;;MAKlB;IAEF,OAAgB,KAAK;;;;;;;;;;;;;;;;MA8BnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAuF3B"}
@@ -0,0 +1,135 @@
1
+ import { Args, Flags } from '@oclif/core';
2
+ import { BaseCommand } from '../base-command.js';
3
+ import { loadContractArtifact, deployContract, describeProver, resolveProverConfig, startWalletSync, parseArgs, toPositionalArgs, resolveInitialPrivateState, } from '@shieldedtech/moth-wallet';
4
+ import { getPassphrase } from '../adapters/passphrase.js';
5
+ import { resolve } from 'node:path';
6
+ export default class Deploy extends BaseCommand {
7
+ static description = [
8
+ 'Deploy a compiled Compact contract.',
9
+ '',
10
+ 'Constructor arguments (for parameterized constructors) are supplied via --args, using',
11
+ 'the same JSON convention as `moth call --args`: inline JSON or "@file.json", with',
12
+ 'Bytes<N> values encoded as hex strings matching /^0x[0-9a-fA-F]+$/ (e.g. "0x0011..."),',
13
+ 'which are decoded to Uint8Array. Uint<..>/Field values MUST be encoded as bigint-literal',
14
+ 'strings matching /^-?\\d+n$/ (e.g. "5000000n") — a bare JSON number like 5000000 is passed',
15
+ 'through as a JS number and will fail at proving time, since the contract expects bigint.',
16
+ 'A JSON array supplies positional constructor arguments in the order defined by the',
17
+ 'contract; a single non-array value is treated as one argument.',
18
+ '',
19
+ 'Initial private state (for contracts with non-trivial private state) can be supplied',
20
+ 'three ways, in this precedence order: (1) --private-state, parsed with the same JSON',
21
+ 'convention as --args; (2) the --witnesses module exporting a zero-arg',
22
+ '`makeInitialPrivateState()` factory function, called to produce the value; (3) the',
23
+ '--witnesses module exporting a plain `initialPrivateState` value, used as-is. If none',
24
+ 'apply, the initial private state defaults to `{}`.',
25
+ ].join('\n');
26
+ static args = {
27
+ artifact: Args.string({
28
+ description: 'Path to compiled contract artifact directory',
29
+ required: false,
30
+ }),
31
+ };
32
+ static flags = {
33
+ ...BaseCommand.baseFlags,
34
+ witnesses: Flags.string({
35
+ description: 'Path to witness provider JS file. May also export a zero-arg makeInitialPrivateState() ' +
36
+ 'factory or a plain initialPrivateState value, used when --private-state is not given.',
37
+ }),
38
+ 'project-dir': Flags.string({
39
+ description: 'Contract project directory (for resolving SDK dependencies)',
40
+ env: 'MOTH_PROJECT_DIR',
41
+ }),
42
+ name: Flags.string({
43
+ description: 'Label for the deployed contract',
44
+ }),
45
+ args: Flags.string({
46
+ description: 'Constructor arguments as JSON or @file.json (same convention as `call --args`). ' +
47
+ 'A JSON array supplies positional arguments in constructor order; Bytes<N> values are ' +
48
+ 'hex strings like "0x0011...".',
49
+ }),
50
+ 'private-state': Flags.string({
51
+ description: 'Initial private state as JSON or @file.json. Overrides any initial private state ' +
52
+ 'exported by --witnesses. Defaults to {} if neither is given.',
53
+ }),
54
+ yes: Flags.boolean({
55
+ char: 'y',
56
+ description: 'Skip confirmation prompt',
57
+ default: false,
58
+ }),
59
+ };
60
+ async run() {
61
+ const { args, flags } = await this.parse(Deploy);
62
+ this.outputFormat = flags.output ?? 'text';
63
+ this.verbose = flags.verbose;
64
+ const artifactInput = await this.promptIfMissing(args.artifact, 'Path to compiled contract artifact');
65
+ const artifactPath = resolve(artifactInput);
66
+ this.log_verbose(`Loading artifact from ${artifactPath}`);
67
+ const artifact = await loadContractArtifact(artifactPath);
68
+ this.log_verbose(`Found circuits: ${artifact.circuits.join(', ')}`);
69
+ const constructorArgs = toPositionalArgs(flags.args ? await parseArgs(flags.args) : undefined);
70
+ this.log_verbose(`Constructor arguments: ${constructorArgs.length}`);
71
+ const witnessPath = flags.witnesses ? resolve(flags.witnesses) : undefined;
72
+ const initialPrivateState = await resolveInitialPrivateState(flags['private-state'], witnessPath, {
73
+ onVerbose: (msg) => this.log_verbose(msg),
74
+ });
75
+ const walletName = await this.resolveWalletName(flags);
76
+ const passphrase = await getPassphrase();
77
+ const wallet = await this.walletManager.unlock(walletName, passphrase);
78
+ const network = await this.getNetworkConfig(flags.network, this.getNetworkOverrides(flags));
79
+ // Project directory for resolving SDK dependencies (handled by core via createRequire)
80
+ const projectDir = flags['project-dir']
81
+ ? resolve(flags['project-dir'])
82
+ : resolve(artifactPath, '..', '..'); // Default: assume managed/ is 2 levels inside project
83
+ this.log_verbose(`Project dir: ${projectDir}`);
84
+ this.log_verbose(`Deploying to ${network.id} via ${describeProver(resolveProverConfig(network))}`);
85
+ // SR-003: Confirm transaction before proceeding
86
+ await this.confirmTransaction({
87
+ 'Operation': 'Deploy contract',
88
+ 'Artifact': artifactPath,
89
+ 'Network': network.id,
90
+ 'Wallet': walletName,
91
+ 'Prover': describeProver(resolveProverConfig(network)),
92
+ 'Constructor args': flags.args ?? '(none)',
93
+ }, flags);
94
+ // Deploy requires a synced wallet for transaction balancing
95
+ process.stderr.write('Syncing wallet before deploy...\n');
96
+ const syncedWallet = await startWalletSync(wallet.walletKeys, network, (msg) => {
97
+ this.log_verbose(msg);
98
+ // Show sync progress inline (overwrite same line)
99
+ if (msg.includes('syncing') || msg.includes('synced')) {
100
+ process.stderr.write(`\r ${msg}${''.padEnd(20)}`);
101
+ }
102
+ }, walletName);
103
+ process.stderr.write('\n');
104
+ try {
105
+ process.stderr.write('Deploying contract...\n');
106
+ const result = await deployContract({
107
+ artifact,
108
+ walletKeys: wallet.walletKeys,
109
+ network,
110
+ syncedWallet,
111
+ witnessPath,
112
+ projectDir: projectDir,
113
+ timeoutMs: flags.timeout ? flags.timeout * 1000 : 120_000,
114
+ args: constructorArgs,
115
+ initialPrivateState,
116
+ onProgress: (stage) => {
117
+ process.stderr.write(`Deploy: ${stage}\n`);
118
+ },
119
+ });
120
+ this.outputSuccess({
121
+ contractAddress: result.contractAddress,
122
+ txHash: result.hash,
123
+ status: result.status,
124
+ blockHash: result.blockHash,
125
+ blockHeight: result.blockHeight,
126
+ fees: result.fees,
127
+ });
128
+ }
129
+ finally {
130
+ await syncedWallet.stop();
131
+ wallet.lock();
132
+ }
133
+ }
134
+ }
135
+ //# sourceMappingURL=deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class DustDeregister extends BaseCommand {
3
+ static description: string;
4
+ static flags: {
5
+ yes: import("@oclif/core/interfaces").BooleanFlag<boolean>;
6
+ output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
7
+ network: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
+ wallet: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ timeout: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ 'proof-server': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ prover: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ indexer: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ 'node-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ };
16
+ run(): Promise<void>;
17
+ }
18
+ //# sourceMappingURL=deregister.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deregister.d.ts","sourceRoot":"","sources":["../../../src/commands/dust/deregister.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,WAAW;IACrD,OAAgB,WAAW,SAA4C;IAEvE,OAAgB,KAAK;;;;;;;;;;;MAOnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAyC3B"}
@@ -0,0 +1,48 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { BaseCommand } from '../../base-command.js';
3
+ import { getPassphrase } from '../../adapters/passphrase.js';
4
+ import { dedesignateFromDustWithKeys, startWalletSync } from '@shieldedtech/moth-wallet';
5
+ export default class DustDeregister extends BaseCommand {
6
+ static description = 'Deregister wallet from DUST generation';
7
+ static flags = {
8
+ ...BaseCommand.baseFlags,
9
+ yes: Flags.boolean({
10
+ char: 'y',
11
+ default: false,
12
+ description: 'Skip confirmation prompt',
13
+ }),
14
+ };
15
+ async run() {
16
+ const { flags } = await this.parse(DustDeregister);
17
+ this.outputFormat = flags.output ?? 'text';
18
+ this.verbose = flags.verbose;
19
+ const walletName = await this.resolveWalletName(flags);
20
+ const passphrase = await getPassphrase();
21
+ const wallet = await this.walletManager.unlock(walletName, passphrase);
22
+ const network = await this.getNetworkConfig(flags.network, this.getNetworkOverrides(flags));
23
+ // SR-003: Confirm transaction
24
+ await this.confirmTransaction({
25
+ 'Operation': 'Deregister from DUST generation',
26
+ 'Network': network.id,
27
+ 'Wallet': walletName,
28
+ }, flags);
29
+ process.stderr.write('Syncing wallet before deregistration...\n');
30
+ const syncedWallet = await startWalletSync(wallet.walletKeys, network, (msg) => {
31
+ this.log_verbose(msg);
32
+ }, walletName);
33
+ try {
34
+ const txHash = await dedesignateFromDustWithKeys(syncedWallet.facade, wallet.walletKeys, network.id, (stage) => { process.stderr.write(`DUST deregister: ${stage}\n`); });
35
+ this.outputSuccess({
36
+ status: 'deregistered',
37
+ txHash,
38
+ wallet: walletName,
39
+ network: network.id,
40
+ });
41
+ }
42
+ finally {
43
+ await syncedWallet.stop();
44
+ wallet.lock();
45
+ }
46
+ }
47
+ }
48
+ //# sourceMappingURL=deregister.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deregister.js","sourceRoot":"","sources":["../../../src/commands/dust/deregister.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEzF,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,WAAW;IACrD,MAAM,CAAU,WAAW,GAAG,wCAAwC,CAAC;IAEvE,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,WAAW,CAAC,SAAS;QACxB,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC;YACjB,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,0BAA0B;SACxC,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACnD,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,UAAU,GAAG,MAAM,aAAa,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;QAE5F,8BAA8B;QAC9B,MAAM,IAAI,CAAC,kBAAkB,CAAC;YAC5B,WAAW,EAAE,iCAAiC;YAC9C,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,QAAQ,EAAE,UAAU;SACrB,EAAE,KAAK,CAAC,CAAC;QAEV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAClE,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC7E,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC,EAAE,UAAU,CAAC,CAAC;QAEf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAC9C,YAAY,CAAC,MAAM,EACnB,MAAM,CAAC,UAAU,EACjB,OAAO,CAAC,EAAE,EACV,CAAC,KAAK,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CACpE,CAAC;YAEF,IAAI,CAAC,aAAa,CAAC;gBACjB,MAAM,EAAE,cAAc;gBACtB,MAAM;gBACN,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,OAAO,CAAC,EAAE;aACpB,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,CAAC;IACH,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class DustRegister extends BaseCommand {
3
+ static description: string;
4
+ static flags: {
5
+ receiver: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
6
+ yes: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ wait: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
+ 'wait-timeout': import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
9
+ output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
10
+ network: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
+ wallet: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ timeout: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ 'proof-server': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ prover: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
+ indexer: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
+ 'node-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
+ };
19
+ run(): Promise<void>;
20
+ }
21
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/commands/dust/register.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAUpD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,WAAW;IACnD,OAAgB,WAAW,SAAyC;IAEpE,OAAgB,KAAK;;;;;;;;;;;;;;MAsBnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA6G3B"}