@shieldedtech/moth-tui 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 (194) hide show
  1. package/README.md +65 -0
  2. package/dist/app.d.ts +7 -0
  3. package/dist/app.d.ts.map +1 -0
  4. package/dist/app.js +474 -0
  5. package/dist/app.js.map +1 -0
  6. package/dist/components/BackHint.d.ts +5 -0
  7. package/dist/components/BackHint.d.ts.map +1 -0
  8. package/dist/components/BackHint.js +6 -0
  9. package/dist/components/BackHint.js.map +1 -0
  10. package/dist/components/BalanceTable.d.ts +9 -0
  11. package/dist/components/BalanceTable.d.ts.map +1 -0
  12. package/dist/components/BalanceTable.js +8 -0
  13. package/dist/components/BalanceTable.js.map +1 -0
  14. package/dist/components/ConfirmationModal.d.ts +8 -0
  15. package/dist/components/ConfirmationModal.d.ts.map +1 -0
  16. package/dist/components/ConfirmationModal.js +33 -0
  17. package/dist/components/ConfirmationModal.js.map +1 -0
  18. package/dist/components/HelpFooter.d.ts +16 -0
  19. package/dist/components/HelpFooter.d.ts.map +1 -0
  20. package/dist/components/HelpFooter.js +7 -0
  21. package/dist/components/HelpFooter.js.map +1 -0
  22. package/dist/components/Loader.d.ts +5 -0
  23. package/dist/components/Loader.d.ts.map +1 -0
  24. package/dist/components/Loader.js +7 -0
  25. package/dist/components/Loader.js.map +1 -0
  26. package/dist/components/SectionHeader.d.ts +19 -0
  27. package/dist/components/SectionHeader.d.ts.map +1 -0
  28. package/dist/components/SectionHeader.js +11 -0
  29. package/dist/components/SectionHeader.js.map +1 -0
  30. package/dist/components/Select.d.ts +35 -0
  31. package/dist/components/Select.d.ts.map +1 -0
  32. package/dist/components/Select.js +49 -0
  33. package/dist/components/Select.js.map +1 -0
  34. package/dist/components/TxStatus.d.ts +8 -0
  35. package/dist/components/TxStatus.d.ts.map +1 -0
  36. package/dist/components/TxStatus.js +22 -0
  37. package/dist/components/TxStatus.js.map +1 -0
  38. package/dist/hooks/useBalance.d.ts +19 -0
  39. package/dist/hooks/useBalance.d.ts.map +1 -0
  40. package/dist/hooks/useBalance.js +119 -0
  41. package/dist/hooks/useBalance.js.map +1 -0
  42. package/dist/hooks/useChainStatus.d.ts +13 -0
  43. package/dist/hooks/useChainStatus.d.ts.map +1 -0
  44. package/dist/hooks/useChainStatus.js +97 -0
  45. package/dist/hooks/useChainStatus.js.map +1 -0
  46. package/dist/hooks/useDaemonHost.d.ts +30 -0
  47. package/dist/hooks/useDaemonHost.d.ts.map +1 -0
  48. package/dist/hooks/useDaemonHost.js +122 -0
  49. package/dist/hooks/useDaemonHost.js.map +1 -0
  50. package/dist/hooks/useLogs.d.ts +11 -0
  51. package/dist/hooks/useLogs.d.ts.map +1 -0
  52. package/dist/hooks/useLogs.js +44 -0
  53. package/dist/hooks/useLogs.js.map +1 -0
  54. package/dist/hooks/useNetwork.d.ts +14 -0
  55. package/dist/hooks/useNetwork.d.ts.map +1 -0
  56. package/dist/hooks/useNetwork.js +100 -0
  57. package/dist/hooks/useNetwork.js.map +1 -0
  58. package/dist/hooks/useWallet.d.ts +29 -0
  59. package/dist/hooks/useWallet.d.ts.map +1 -0
  60. package/dist/hooks/useWallet.js +135 -0
  61. package/dist/hooks/useWallet.js.map +1 -0
  62. package/dist/index.d.ts +4 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +2 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/navigation/index.d.ts +3 -0
  67. package/dist/navigation/index.d.ts.map +1 -0
  68. package/dist/navigation/index.js +2 -0
  69. package/dist/navigation/index.js.map +1 -0
  70. package/dist/navigation/types.d.ts +84 -0
  71. package/dist/navigation/types.d.ts.map +1 -0
  72. package/dist/navigation/types.js +3 -0
  73. package/dist/navigation/types.js.map +1 -0
  74. package/dist/navigation/useStackNavigator.d.ts +3 -0
  75. package/dist/navigation/useStackNavigator.d.ts.map +1 -0
  76. package/dist/navigation/useStackNavigator.js +20 -0
  77. package/dist/navigation/useStackNavigator.js.map +1 -0
  78. package/dist/persistent-log.d.ts +5 -0
  79. package/dist/persistent-log.d.ts.map +1 -0
  80. package/dist/persistent-log.js +55 -0
  81. package/dist/persistent-log.js.map +1 -0
  82. package/dist/screens/contract.d.ts +8 -0
  83. package/dist/screens/contract.d.ts.map +1 -0
  84. package/dist/screens/contract.js +104 -0
  85. package/dist/screens/contract.js.map +1 -0
  86. package/dist/screens/dashboard/DashboardHub.d.ts +35 -0
  87. package/dist/screens/dashboard/DashboardHub.d.ts.map +1 -0
  88. package/dist/screens/dashboard/DashboardHub.js +67 -0
  89. package/dist/screens/dashboard/DashboardHub.js.map +1 -0
  90. package/dist/screens/dashboard/StateView.d.ts +24 -0
  91. package/dist/screens/dashboard/StateView.d.ts.map +1 -0
  92. package/dist/screens/dashboard/StateView.js +79 -0
  93. package/dist/screens/dashboard/StateView.js.map +1 -0
  94. package/dist/screens/dashboard/index.d.ts +3 -0
  95. package/dist/screens/dashboard/index.d.ts.map +1 -0
  96. package/dist/screens/dashboard/index.js +3 -0
  97. package/dist/screens/dashboard/index.js.map +1 -0
  98. package/dist/screens/deploy.d.ts +8 -0
  99. package/dist/screens/deploy.d.ts.map +1 -0
  100. package/dist/screens/deploy.js +125 -0
  101. package/dist/screens/deploy.js.map +1 -0
  102. package/dist/screens/dust.d.ts +21 -0
  103. package/dist/screens/dust.d.ts.map +1 -0
  104. package/dist/screens/dust.js +289 -0
  105. package/dist/screens/dust.js.map +1 -0
  106. package/dist/screens/keys.d.ts +21 -0
  107. package/dist/screens/keys.d.ts.map +1 -0
  108. package/dist/screens/keys.js +126 -0
  109. package/dist/screens/keys.js.map +1 -0
  110. package/dist/screens/logs.d.ts +10 -0
  111. package/dist/screens/logs.d.ts.map +1 -0
  112. package/dist/screens/logs.js +62 -0
  113. package/dist/screens/logs.js.map +1 -0
  114. package/dist/screens/mint.d.ts +13 -0
  115. package/dist/screens/mint.d.ts.map +1 -0
  116. package/dist/screens/mint.js +151 -0
  117. package/dist/screens/mint.js.map +1 -0
  118. package/dist/screens/network.d.ts +12 -0
  119. package/dist/screens/network.d.ts.map +1 -0
  120. package/dist/screens/network.js +117 -0
  121. package/dist/screens/network.js.map +1 -0
  122. package/dist/screens/onboarding/InitializingScreen.d.ts +10 -0
  123. package/dist/screens/onboarding/InitializingScreen.d.ts.map +1 -0
  124. package/dist/screens/onboarding/InitializingScreen.js +7 -0
  125. package/dist/screens/onboarding/InitializingScreen.js.map +1 -0
  126. package/dist/screens/onboarding/MnemonicDisplayScreen.d.ts +9 -0
  127. package/dist/screens/onboarding/MnemonicDisplayScreen.d.ts.map +1 -0
  128. package/dist/screens/onboarding/MnemonicDisplayScreen.js +23 -0
  129. package/dist/screens/onboarding/MnemonicDisplayScreen.js.map +1 -0
  130. package/dist/screens/onboarding/NameScreen.d.ts +9 -0
  131. package/dist/screens/onboarding/NameScreen.d.ts.map +1 -0
  132. package/dist/screens/onboarding/NameScreen.js +32 -0
  133. package/dist/screens/onboarding/NameScreen.js.map +1 -0
  134. package/dist/screens/onboarding/NetworkSelectScreen.d.ts +9 -0
  135. package/dist/screens/onboarding/NetworkSelectScreen.d.ts.map +1 -0
  136. package/dist/screens/onboarding/NetworkSelectScreen.js +20 -0
  137. package/dist/screens/onboarding/NetworkSelectScreen.js.map +1 -0
  138. package/dist/screens/onboarding/OnboardingHost.d.ts +15 -0
  139. package/dist/screens/onboarding/OnboardingHost.d.ts.map +1 -0
  140. package/dist/screens/onboarding/OnboardingHost.js +42 -0
  141. package/dist/screens/onboarding/OnboardingHost.js.map +1 -0
  142. package/dist/screens/onboarding/PassphraseScreen.d.ts +9 -0
  143. package/dist/screens/onboarding/PassphraseScreen.d.ts.map +1 -0
  144. package/dist/screens/onboarding/PassphraseScreen.js +46 -0
  145. package/dist/screens/onboarding/PassphraseScreen.js.map +1 -0
  146. package/dist/screens/onboarding/SeedEntryScreen.d.ts +9 -0
  147. package/dist/screens/onboarding/SeedEntryScreen.d.ts.map +1 -0
  148. package/dist/screens/onboarding/SeedEntryScreen.js +49 -0
  149. package/dist/screens/onboarding/SeedEntryScreen.js.map +1 -0
  150. package/dist/screens/onboarding/SeedSourceScreen.d.ts +9 -0
  151. package/dist/screens/onboarding/SeedSourceScreen.d.ts.map +1 -0
  152. package/dist/screens/onboarding/SeedSourceScreen.js +22 -0
  153. package/dist/screens/onboarding/SeedSourceScreen.js.map +1 -0
  154. package/dist/screens/onboarding/UnlockScreen.d.ts +9 -0
  155. package/dist/screens/onboarding/UnlockScreen.d.ts.map +1 -0
  156. package/dist/screens/onboarding/UnlockScreen.js +29 -0
  157. package/dist/screens/onboarding/UnlockScreen.js.map +1 -0
  158. package/dist/screens/onboarding/WalletSelectScreen.d.ts +9 -0
  159. package/dist/screens/onboarding/WalletSelectScreen.d.ts.map +1 -0
  160. package/dist/screens/onboarding/WalletSelectScreen.js +30 -0
  161. package/dist/screens/onboarding/WalletSelectScreen.js.map +1 -0
  162. package/dist/screens/onboarding/index.d.ts +2 -0
  163. package/dist/screens/onboarding/index.d.ts.map +1 -0
  164. package/dist/screens/onboarding/index.js +2 -0
  165. package/dist/screens/onboarding/index.js.map +1 -0
  166. package/dist/screens/send.d.ts +12 -0
  167. package/dist/screens/send.d.ts.map +1 -0
  168. package/dist/screens/send.js +187 -0
  169. package/dist/screens/send.js.map +1 -0
  170. package/dist/settings.d.ts +16 -0
  171. package/dist/settings.d.ts.map +1 -0
  172. package/dist/settings.js +23 -0
  173. package/dist/settings.js.map +1 -0
  174. package/dist/types.d.ts +30 -0
  175. package/dist/types.d.ts.map +1 -0
  176. package/dist/types.js +2 -0
  177. package/dist/types.js.map +1 -0
  178. package/dist/utils/balance.d.ts +48 -0
  179. package/dist/utils/balance.d.ts.map +1 -0
  180. package/dist/utils/balance.js +61 -0
  181. package/dist/utils/balance.js.map +1 -0
  182. package/dist/utils/display.d.ts +3 -0
  183. package/dist/utils/display.d.ts.map +1 -0
  184. package/dist/utils/display.js +17 -0
  185. package/dist/utils/display.js.map +1 -0
  186. package/dist/utils/sync.d.ts +7 -0
  187. package/dist/utils/sync.d.ts.map +1 -0
  188. package/dist/utils/sync.js +11 -0
  189. package/dist/utils/sync.js.map +1 -0
  190. package/dist/utils/synced-wallet-stub.d.ts +3 -0
  191. package/dist/utils/synced-wallet-stub.d.ts.map +1 -0
  192. package/dist/utils/synced-wallet-stub.js +35 -0
  193. package/dist/utils/synced-wallet-stub.js.map +1 -0
  194. package/package.json +42 -0
@@ -0,0 +1,3 @@
1
+ import type { Route, Navigator } from './types.js';
2
+ export declare function useStackNavigator(initialRoute: Route): Navigator;
3
+ //# sourceMappingURL=useStackNavigator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useStackNavigator.d.ts","sourceRoot":"","sources":["../../src/navigation/useStackNavigator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAqB,SAAS,EAAE,MAAM,YAAY,CAAC;AAEtE,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,KAAK,GAAG,SAAS,CA2BhE"}
@@ -0,0 +1,20 @@
1
+ import { useState, useCallback, useMemo } from 'react';
2
+ export function useStackNavigator(initialRoute) {
3
+ const [stack, setStack] = useState([initialRoute]);
4
+ const route = stack[stack.length - 1];
5
+ const push = useCallback((name, params) => {
6
+ setStack((prev) => [...prev, { name, params }]);
7
+ }, []);
8
+ const replace = useCallback((name, params) => {
9
+ setStack((prev) => [...prev.slice(0, -1), { name, params }]);
10
+ }, []);
11
+ const pop = useCallback(() => {
12
+ setStack((prev) => (prev.length > 1 ? prev.slice(0, -1) : prev));
13
+ }, []);
14
+ const reset = useCallback((name, params) => {
15
+ setStack([{ name, params }]);
16
+ }, []);
17
+ const canGoBack = useCallback(() => stack.length > 1, [stack.length]);
18
+ return useMemo(() => ({ route, stack, push, replace, reset, pop, canGoBack }), [route, stack, push, replace, reset, pop, canGoBack]);
19
+ }
20
+ //# sourceMappingURL=useStackNavigator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useStackNavigator.js","sourceRoot":"","sources":["../../src/navigation/useStackNavigator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGvD,MAAM,UAAU,iBAAiB,CAAC,YAAmB;IACnD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAU,CAAC,YAAY,CAAC,CAAC,CAAC;IAE5D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEtC,MAAM,IAAI,GAAG,WAAW,CAAC,CAAsB,IAAO,EAAE,MAAiB,EAAE,EAAE;QAC3E,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAW,CAAC,CAAC,CAAC;IAC3D,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,OAAO,GAAG,WAAW,CAAC,CAAsB,IAAO,EAAE,MAAiB,EAAE,EAAE;QAC9E,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAW,CAAC,CAAC,CAAC;IACxE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE;QAC3B,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,KAAK,GAAG,WAAW,CAAC,CAAsB,IAAO,EAAE,MAAiB,EAAE,EAAE;QAC5E,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAW,CAAC,CAAC,CAAC;IACxC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAEtE,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAC9D,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,CACrD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function appendLog(level: string, message: string): void;
2
+ export declare function readLogTail(lines?: number): string[];
3
+ export declare function clearLog(): void;
4
+ export declare function getLogPath(): string;
5
+ //# sourceMappingURL=persistent-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistent-log.d.ts","sourceRoot":"","sources":["../src/persistent-log.ts"],"names":[],"mappings":"AA6BA,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAM9D;AAED,wBAAgB,WAAW,CAAC,KAAK,SAAM,GAAG,MAAM,EAAE,CAQjD;AAED,wBAAgB,QAAQ,IAAI,IAAI,CAM/B;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC"}
@@ -0,0 +1,55 @@
1
+ import { appendFileSync, statSync, writeFileSync, mkdirSync, existsSync, readFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { homedir } from 'node:os';
4
+ const LOG_DIR = join(homedir(), '.moth');
5
+ const LOG_FILE = join(LOG_DIR, 'moth.log');
6
+ const MAX_SIZE = 1_048_576; // 1 MB
7
+ function ensureDir() {
8
+ if (!existsSync(LOG_DIR)) {
9
+ mkdirSync(LOG_DIR, { recursive: true });
10
+ }
11
+ }
12
+ function rotateIfNeeded() {
13
+ try {
14
+ const stat = statSync(LOG_FILE);
15
+ if (stat.size >= MAX_SIZE) {
16
+ // Keep the last half of the file
17
+ const content = readFileSync(LOG_FILE, 'utf-8');
18
+ const lines = content.split('\n');
19
+ const halfIndex = Math.floor(lines.length / 2);
20
+ writeFileSync(LOG_FILE, lines.slice(halfIndex).join('\n'));
21
+ }
22
+ }
23
+ catch {
24
+ // File doesn't exist yet — fine
25
+ }
26
+ }
27
+ export function appendLog(level, message) {
28
+ ensureDir();
29
+ rotateIfNeeded();
30
+ const ts = new Date().toISOString();
31
+ const line = `${ts} [${level.toUpperCase().padEnd(5)}] ${message}\n`;
32
+ appendFileSync(LOG_FILE, line);
33
+ }
34
+ export function readLogTail(lines = 200) {
35
+ try {
36
+ const content = readFileSync(LOG_FILE, 'utf-8');
37
+ const allLines = content.split('\n').filter(l => l.length > 0);
38
+ return allLines.slice(-lines);
39
+ }
40
+ catch {
41
+ return [];
42
+ }
43
+ }
44
+ export function clearLog() {
45
+ try {
46
+ writeFileSync(LOG_FILE, '');
47
+ }
48
+ catch {
49
+ // Ignore
50
+ }
51
+ }
52
+ export function getLogPath() {
53
+ return LOG_FILE;
54
+ }
55
+ //# sourceMappingURL=persistent-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistent-log.js","sourceRoot":"","sources":["../src/persistent-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvG,OAAO,EAAE,IAAI,EAAW,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;AACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC3C,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,OAAO;AAEnC,SAAS,SAAS;IAChB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,IAAI,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC1B,iCAAiC;YACjC,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC/C,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gCAAgC;IAClC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,OAAe;IACtD,SAAS,EAAE,CAAC;IACZ,cAAc,EAAE,CAAC;IACjB,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,GAAG,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,CAAC;IACrE,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAK,GAAG,GAAG;IACrC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/D,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,IAAI,CAAC;QACH,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ interface ContractProps {
3
+ indexerUrl: string;
4
+ onBack: () => void;
5
+ }
6
+ export declare function Contract({ indexerUrl, onBack }: ContractProps): React.JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/screens/contract.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAQnD,UAAU,aAAa;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAID,wBAAgB,QAAQ,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,aAAa,qBA6H7D"}
@@ -0,0 +1,104 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ // Contract state viewer with optional managed/ decoder.
3
+ // Layout inspired by mn-tui. See NOTICE for attribution.
4
+ import { useState } from 'react';
5
+ import { Box, Text, useInput } from 'ink';
6
+ import TextInput from 'ink-text-input';
7
+ import { IndexerClient } from '@shieldedtech/moth-wallet';
8
+ import { pathToFileURL } from 'node:url';
9
+ import { SectionHeader } from '../components/SectionHeader.js';
10
+ import { HelpFooter } from '../components/HelpFooter.js';
11
+ export function Contract({ indexerUrl, onBack }) {
12
+ const [step, setStep] = useState('address');
13
+ const [address, setAddress] = useState('');
14
+ const [managedPath, setManagedPath] = useState('');
15
+ const [rawState, setRawState] = useState(null);
16
+ const [decodedState, setDecodedState] = useState(null);
17
+ const [zswapState, setZswapState] = useState(null);
18
+ const [balances, setBalances] = useState([]);
19
+ const [error, setError] = useState('');
20
+ const [loading, setLoading] = useState(false);
21
+ useInput((input, key) => {
22
+ if (key.escape) {
23
+ if (step === 'result') {
24
+ setStep('address');
25
+ setRawState(null);
26
+ setDecodedState(null);
27
+ return;
28
+ }
29
+ if (step === 'managed') {
30
+ setStep('address');
31
+ return;
32
+ }
33
+ onBack();
34
+ }
35
+ if (step === 'result') {
36
+ if (input === 'r')
37
+ fetchState();
38
+ if (input === 'n') {
39
+ setStep('address');
40
+ setAddress('');
41
+ setRawState(null);
42
+ setDecodedState(null);
43
+ }
44
+ }
45
+ });
46
+ const fetchState = async () => {
47
+ setLoading(true);
48
+ setError('');
49
+ setDecodedState(null);
50
+ try {
51
+ const client = new IndexerClient(indexerUrl);
52
+ const action = await client.getContractAction(address);
53
+ if (!action) {
54
+ setError('No contract found at this address');
55
+ setLoading(false);
56
+ return;
57
+ }
58
+ setRawState(action.state);
59
+ setZswapState(action.zswapState);
60
+ setBalances(action.unshieldedBalances);
61
+ // Try to decode with managed/ path if provided
62
+ if (managedPath) {
63
+ try {
64
+ const contractUrl = pathToFileURL(`${managedPath}/contract/index.cjs`).href;
65
+ const mod = await import(contractUrl);
66
+ const ledgerFn = mod.ledger ?? mod.default?.ledger;
67
+ if (ledgerFn) {
68
+ const decoded = ledgerFn(Buffer.from(action.state, 'hex'));
69
+ setDecodedState(stringifyComplex(decoded));
70
+ }
71
+ }
72
+ catch (err) {
73
+ setDecodedState(`(decode failed: ${err})`);
74
+ }
75
+ }
76
+ setStep('result');
77
+ }
78
+ catch (err) {
79
+ setError(String(err));
80
+ }
81
+ finally {
82
+ setLoading(false);
83
+ }
84
+ };
85
+ return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(SectionHeader, { title: "Contract State" }), _jsxs(Box, { flexDirection: "column", paddingLeft: 2, children: [step === 'address' && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { children: "Contract address:" }), _jsx(TextInput, { value: address, onChange: setAddress, onSubmit: () => setStep('managed'), placeholder: "0x..." })] })), step === 'managed' && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { children: "Managed/ path (optional, for decoded view):" }), _jsx(TextInput, { value: managedPath, onChange: setManagedPath, onSubmit: fetchState, placeholder: "./build/my-contract or press Enter to skip" })] })), loading && _jsx(Text, { color: "yellow", children: "Loading..." }), error && _jsx(Text, { color: "red", children: error }), step === 'result' && rawState && (_jsxs(Box, { flexDirection: "column", children: [decodedState ? (_jsxs(_Fragment, { children: [_jsx(Text, { bold: true, children: "Decoded State:" }), _jsx(Text, { wrap: "wrap", children: decodedState })] })) : (_jsxs(_Fragment, { children: [_jsx(Text, { bold: true, children: "Raw State (hex):" }), _jsxs(Text, { dimColor: true, wrap: "truncate-end", children: [rawState.slice(0, 200), rawState.length > 200 ? '...' : ''] })] })), zswapState && (_jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Zswap State:" }), _jsxs(Text, { dimColor: true, wrap: "truncate-end", children: [zswapState.slice(0, 120), zswapState.length > 120 ? '...' : ''] })] })), balances.length > 0 && (_jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Unshielded Balances:" }), balances.map((b, i) => (_jsxs(Box, { children: [_jsxs(Text, { children: [" ", b.tokenType.slice(0, 16), "...: "] }), _jsx(Text, { color: "yellow", children: b.amount })] }, i)))] })), _jsx(HelpFooter, { hints: [
86
+ { key: 'r', label: 'refresh' },
87
+ { key: 'n', label: 'new address' },
88
+ { key: 'ESC', label: 'back' },
89
+ ] })] }))] })] }));
90
+ }
91
+ function stringifyComplex(value, indent = 2) {
92
+ return JSON.stringify(value, (_key, val) => {
93
+ if (typeof val === 'bigint')
94
+ return val.toString();
95
+ if (val instanceof Uint8Array)
96
+ return '0x' + Array.from(val).map(b => b.toString(16).padStart(2, '0')).join('');
97
+ if (val instanceof Map)
98
+ return Object.fromEntries(val);
99
+ if (val instanceof Set)
100
+ return [...val];
101
+ return val;
102
+ }, indent);
103
+ }
104
+ //# sourceMappingURL=contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/screens/contract.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import React from 'react';
2
+ import type { WalletState, NetworkState } from '../../types.js';
3
+ import type { ChainStatus } from '../../hooks/useChainStatus.js';
4
+ import type { WalletCoinDetails, SubWalletProgress } from '@shieldedtech/moth-wallet';
5
+ interface DashboardHubProps {
6
+ wallet: WalletState | null;
7
+ isUnlocked: boolean;
8
+ network: NetworkState;
9
+ chain: ChainStatus;
10
+ paused?: boolean;
11
+ addresses?: {
12
+ unshielded: string;
13
+ shielded: string;
14
+ dust: string;
15
+ };
16
+ shieldedBalances?: Record<string, bigint>;
17
+ unshieldedBalances?: Record<string, bigint>;
18
+ dustBalance?: bigint;
19
+ coins?: WalletCoinDetails;
20
+ subProgress?: SubWalletProgress;
21
+ unreadLogs?: number;
22
+ renderSend: (onBack: () => void) => React.ReactNode;
23
+ renderDeploy: (onBack: () => void) => React.ReactNode;
24
+ renderMint: (onBack: () => void) => React.ReactNode;
25
+ renderContract: (onBack: () => void) => React.ReactNode;
26
+ renderKeys: (onBack: () => void) => React.ReactNode;
27
+ renderDust: (onBack: () => void) => React.ReactNode;
28
+ renderNetwork: (onBack: () => void) => React.ReactNode;
29
+ renderLogs: (onBack: () => void) => React.ReactNode;
30
+ onQuit: () => void;
31
+ onViewLogs?: () => void;
32
+ }
33
+ export declare function DashboardHub(props: DashboardHubProps): React.JSX.Element;
34
+ export {};
35
+ //# sourceMappingURL=DashboardHub.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardHub.d.ts","sourceRoot":"","sources":["../../../src/screens/dashboard/DashboardHub.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAIxC,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AA8BtF,UAAU,iBAAiB;IAEzB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACnE,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC;IACpD,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC;IACtD,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC;IACpD,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC;IACxD,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC;IACpD,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC;IACpD,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC;IACvD,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC;IAEpD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,qBA2DpD"}
@@ -0,0 +1,67 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // Dashboard hub — the single top-level screen. Hosts the state view and all
3
+ // sub-views (send/deploy/mint/contract/keys/dust/network/logs). Letter
4
+ // shortcuts switch sub-views; Esc returns to state. Pattern mirrors
5
+ // midnight-wallet-cli's DashboardScreen.
6
+ import { useState } from 'react';
7
+ import { Box, useInput } from 'ink';
8
+ import { StateView } from './StateView.js';
9
+ import { HelpFooter } from '../../components/HelpFooter.js';
10
+ const SHORTCUTS = [
11
+ { key: 's', view: 'send', label: 'send' },
12
+ { key: 'd', view: 'deploy', label: 'deploy' },
13
+ { key: 'm', view: 'mint', label: 'mint' },
14
+ { key: 'c', view: 'contract', label: 'contract' },
15
+ { key: 'k', view: 'keys', label: 'keys' },
16
+ { key: 'u', view: 'dust', label: 'dust' },
17
+ { key: 'n', view: 'network', label: 'network' },
18
+ { key: 'l', view: 'logs', label: 'logs' },
19
+ ];
20
+ export function DashboardHub(props) {
21
+ const [currentView, setCurrentView] = useState('state');
22
+ // Letter shortcuts only fire when we're on the state view. Sub-views own
23
+ // their own input (text fields, selects, etc.). Esc handled in app.tsx
24
+ // for any view; we provide back-to-state via the render-prop callback.
25
+ useInput((input) => {
26
+ if (currentView !== 'state')
27
+ return;
28
+ if (input === 'q') {
29
+ props.onQuit();
30
+ return;
31
+ }
32
+ const hit = SHORTCUTS.find((s) => s.key === input);
33
+ if (hit) {
34
+ setCurrentView(hit.view);
35
+ if (hit.view === 'logs')
36
+ props.onViewLogs?.();
37
+ }
38
+ });
39
+ const onBack = () => setCurrentView('state');
40
+ if (currentView === 'send')
41
+ return _jsx(_Fragment, { children: props.renderSend(onBack) });
42
+ if (currentView === 'deploy')
43
+ return _jsx(_Fragment, { children: props.renderDeploy(onBack) });
44
+ if (currentView === 'mint')
45
+ return _jsx(_Fragment, { children: props.renderMint(onBack) });
46
+ if (currentView === 'contract')
47
+ return _jsx(_Fragment, { children: props.renderContract(onBack) });
48
+ if (currentView === 'keys')
49
+ return _jsx(_Fragment, { children: props.renderKeys(onBack) });
50
+ if (currentView === 'dust')
51
+ return _jsx(_Fragment, { children: props.renderDust(onBack) });
52
+ if (currentView === 'network')
53
+ return _jsx(_Fragment, { children: props.renderNetwork(onBack) });
54
+ if (currentView === 'logs')
55
+ return _jsx(_Fragment, { children: props.renderLogs(onBack) });
56
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(StateView, { wallet: props.wallet, network: props.network, chain: props.chain, isUnlocked: props.isUnlocked, paused: props.paused, addresses: props.addresses, shieldedBalances: props.shieldedBalances, unshieldedBalances: props.unshieldedBalances, dustBalance: props.dustBalance, coins: props.coins, subProgress: props.subProgress }), _jsx(Box, { paddingX: 2, children: _jsx(HelpFooter, { hints: [
57
+ ...SHORTCUTS.map((s) => ({
58
+ key: s.key,
59
+ label: s.label,
60
+ ...(s.view === 'logs' && (props.unreadLogs ?? 0) > 0
61
+ ? { badge: String(props.unreadLogs) }
62
+ : {}),
63
+ })),
64
+ { key: 'q', label: 'quit' },
65
+ ] }) })] }));
66
+ }
67
+ //# sourceMappingURL=DashboardHub.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardHub.js","sourceRoot":"","sources":["../../../src/screens/dashboard/DashboardHub.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ import type { WalletState, NetworkState } from '../../types.js';
3
+ import type { ChainStatus } from '../../hooks/useChainStatus.js';
4
+ import type { WalletCoinDetails, SubWalletProgress } from '@shieldedtech/moth-wallet';
5
+ interface StateViewProps {
6
+ wallet: WalletState | null;
7
+ network: NetworkState;
8
+ chain: ChainStatus;
9
+ isUnlocked: boolean;
10
+ paused?: boolean;
11
+ addresses?: {
12
+ unshielded: string;
13
+ shielded: string;
14
+ dust: string;
15
+ };
16
+ shieldedBalances?: Record<string, bigint>;
17
+ unshieldedBalances?: Record<string, bigint>;
18
+ dustBalance?: bigint;
19
+ coins?: WalletCoinDetails;
20
+ subProgress?: SubWalletProgress;
21
+ }
22
+ export declare function StateView({ wallet, network, chain, isUnlocked, paused, addresses, shieldedBalances: _sb, unshieldedBalances: _ub, dustBalance, coins, subProgress, }: StateViewProps): React.JSX.Element;
23
+ export {};
24
+ //# sourceMappingURL=StateView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateView.d.ts","sourceRoot":"","sources":["../../../src/screens/dashboard/StateView.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EACV,iBAAiB,EAAE,iBAAiB,EAErC,MAAM,2BAA2B,CAAC;AAKnC,UAAU,cAAc;IACtB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACnE,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACjC;AAsLD,wBAAgB,SAAS,CAAC,EACxB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAC1C,SAAS,EAAE,gBAAgB,EAAE,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,WAAW,EACtE,KAAK,EAAE,WAAW,GACnB,EAAE,cAAc,qBAsHhB"}
@@ -0,0 +1,79 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import { SectionHeader } from '../../components/SectionHeader.js';
4
+ import { NIGHT_TOKEN_ID } from '@shieldedtech/moth-wallet';
5
+ import { formatBalanceForToken, formatDustBalance, groupCoinsForDisplay } from '../../utils/balance.js';
6
+ import { formatTimeRemaining } from '../../utils/display.js';
7
+ // Common label width so Address / Sync / Balance / Pending line up vertically.
8
+ const LABEL_WIDTH = 10;
9
+ function Label({ children }) {
10
+ return _jsx(Text, { dimColor: true, children: children.padEnd(LABEL_WIDTH) });
11
+ }
12
+ /** Colored ▸ + bold title sub-section marker. */
13
+ function SubHeading({ color, label }) {
14
+ return (_jsxs(Box, { children: [_jsx(Text, { color: color, children: "\u25B8 " }), _jsx(Text, { bold: true, color: color, children: label })] }));
15
+ }
16
+ /** Sync row — ● synced / ○ syncing with applied/total + %. */
17
+ function SyncRow({ progress }) {
18
+ const applied = progress?.applied ?? 0;
19
+ const total = progress?.total ?? 0;
20
+ // 0/0 means the sub-wallet has nothing to sync (e.g. empty unshielded wallet) — treat as synced.
21
+ const synced = applied >= total;
22
+ const pct = total === 0 ? 100 : Math.floor((applied / total) * 100);
23
+ return (_jsxs(Box, { children: [_jsx(Label, { children: "Sync" }), _jsx(Text, { color: synced ? 'green' : 'yellow', children: synced ? '● synced' : '○ syncing' }), _jsx(Text, { dimColor: true, children: " \u00B7 " }), _jsxs(Text, { children: [applied.toLocaleString(), " / ", total.toLocaleString()] }), !synced && (_jsxs(Text, { dimColor: true, children: [" (", pct, "%)"] }))] }));
24
+ }
25
+ function pluralCoins(n) { return `${n} coin${n === 1 ? '' : 's'}`; }
26
+ function groupByToken(coins) {
27
+ const map = new Map();
28
+ for (const c of coins) {
29
+ const existing = map.get(c.type);
30
+ if (existing) {
31
+ existing.total += c.value;
32
+ existing.coins.push(c);
33
+ }
34
+ else {
35
+ map.set(c.type, { token: c.type, total: c.value, coins: [c] });
36
+ }
37
+ }
38
+ return Array.from(map.values());
39
+ }
40
+ // Fungible grouping (which folds booked coins into the total) lives in
41
+ // utils/balance.ts as groupCoinsForDisplay so the arithmetic is unit-testable
42
+ // without rendering Ink. groupByToken above still serves the dust block.
43
+ /** Shared "Balance" block for shielded + unshielded — grouped by token, nested coins. */
44
+ function FungibleBalanceBlock({ available, booked = [], tokenType, }) {
45
+ if (available.length === 0 && booked.length === 0) {
46
+ return (_jsxs(Box, { children: [_jsx(Label, { children: "Balance" }), _jsx(Text, { dimColor: true, children: "(none)" })] }));
47
+ }
48
+ const groups = groupCoinsForDisplay(available, booked, tokenType);
49
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { children: _jsx(Label, { children: "Balance" }) }), _jsx(Box, { marginLeft: 2, flexDirection: "column", children: groups.map((g) => {
50
+ const display = g.token === NIGHT_TOKEN_ID && tokenType === 'unshielded' ? 'NIGHT' : g.token;
51
+ // Itemise for more than one coin, or when a lone coin carries a flag.
52
+ const itemise = g.coins.length > 1 || g.coins.some((c) => c.registered || c.booked);
53
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { children: display }), _jsx(Text, { children: " " }), _jsx(Text, { bold: true, children: formatBalanceForToken(g.total, g.token, tokenType) }), _jsxs(Text, { dimColor: true, children: [" (", pluralCoins(g.coins.length), ")"] })] }), itemise && g.coins.map((coin, idx) => (_jsxs(Box, { marginLeft: 2, children: [_jsx(Text, { dimColor: true, children: "\u00B7 " }), _jsx(Text, { children: formatBalanceForToken(coin.value, coin.type, tokenType) }), coin.registered && _jsx(Text, { color: "yellow", children: " [Registered for Dust]" }), coin.booked && _jsx(Text, { color: "cyan", children: " [in flight]" })] }, idx)))] }, g.token));
54
+ }) })] }));
55
+ }
56
+ /** Dust "Balance" block — single DUST token with per-coin generation status. */
57
+ function DustBalanceBlock({ totalDust, available, }) {
58
+ if (available.length === 0) {
59
+ return (_jsxs(Box, { children: [_jsx(Label, { children: "Balance" }), _jsx(Text, { bold: true, children: formatDustBalance(totalDust) }), _jsx(Text, { dimColor: true, children: " DUST" })] }));
60
+ }
61
+ const now = new Date();
62
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Label, { children: "Balance" }), _jsx(Text, { bold: true, children: formatDustBalance(totalDust) }), _jsxs(Text, { dimColor: true, children: [" DUST (", pluralCoins(available.length), ")"] })] }), _jsx(Box, { marginLeft: LABEL_WIDTH, flexDirection: "column", children: available.map((coin, idx) => {
63
+ const timeRemaining = formatTimeRemaining(coin.maxCapReachedAt, now);
64
+ const isComplete = coin.generatedNow >= coin.maxCap;
65
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: "\u00B7 " }), _jsx(Text, { children: formatDustBalance(coin.generatedNow) }), _jsxs(Text, { dimColor: true, children: [" / ", formatDustBalance(coin.maxCap), " max"] }), !coin.dtime && (_jsxs(Text, { color: isComplete ? 'green' : 'cyan', children: [" (", timeRemaining, ")"] }))] }), coin.dtime && (_jsx(Box, { marginLeft: 2, children: _jsxs(Text, { dimColor: true, children: ["Deregistered: ", coin.dtime.toLocaleString()] }) }))] }, idx));
66
+ }) })] }));
67
+ }
68
+ function PendingRow({ count }) {
69
+ if (count === 0)
70
+ return null;
71
+ return (_jsxs(Box, { children: [_jsx(Label, { children: "Pending" }), _jsx(Text, { children: pluralCoins(count) })] }));
72
+ }
73
+ export function StateView({ wallet, network, chain, isUnlocked, paused, addresses, shieldedBalances: _sb, unshieldedBalances: _ub, dustBalance, coins, subProgress, }) {
74
+ const showWallets = isUnlocked && wallet && addresses;
75
+ const headerHint = wallet ? `${network.id} · ${wallet.name}` : network.id;
76
+ const chips = paused ? [{ label: 'PAUSED', color: 'yellow' }] : undefined;
77
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(SectionHeader, { title: "Wallet State", hint: headerHint, chips: chips }), _jsxs(Box, { flexDirection: "column", paddingLeft: 2, children: [_jsxs(Box, { flexDirection: "column", marginBottom: 2, children: [_jsx(SubHeading, { color: "green", label: "Network" }), _jsxs(Box, { marginLeft: 2, flexDirection: "column", marginTop: 1, children: [_jsxs(Box, { children: [_jsx(Label, { children: "Node" }), _jsx(Text, { color: chain.connected ? 'green' : 'red', children: chain.connected ? '● connected' : '○ disconnected' }), _jsx(Text, { dimColor: true, children: " \u00B7 " }), _jsx(Text, { children: chain.peers }), _jsx(Text, { dimColor: true, children: " peers" })] }), _jsxs(Box, { children: [_jsx(Label, { children: "Block" }), _jsx(Text, { children: chain.blockHeight }), _jsx(Text, { dimColor: true, children: " (epoch " }), _jsx(Text, { children: chain.epoch }), _jsx(Text, { dimColor: true, children: ", slot " }), _jsx(Text, { children: chain.slot }), _jsx(Text, { dimColor: true, children: ")" })] })] })] }), !showWallets && (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(SubHeading, { color: "cyan", label: "Wallet" }), _jsx(Box, { marginLeft: 2, flexDirection: "column", marginTop: 1, children: !wallet ? (_jsxs(Text, { dimColor: true, children: ["No wallet. Press ", _jsx(Text, { bold: true, color: "cyan", children: "k" }), " to manage keys."] })) : !isUnlocked ? (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Label, { children: "Name" }), _jsx(Text, { color: "cyan", children: wallet.name }), _jsx(Text, { color: "red", children: " \u00B7 locked" })] }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "Press " }), _jsx(Text, { bold: true, color: "cyan", children: "k" }), _jsx(Text, { dimColor: true, children: " to unlock from the Keys screen." })] })] })) : null })] })), showWallets && (_jsxs(_Fragment, { children: [_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(SubHeading, { color: "magenta", label: "Shielded Wallet" }), _jsxs(Box, { marginLeft: 2, flexDirection: "column", marginTop: 1, children: [_jsxs(Box, { children: [_jsx(Label, { children: "Address" }), _jsx(Text, { children: addresses.shielded })] }), _jsx(SyncRow, { progress: subProgress?.shielded }), _jsx(FungibleBalanceBlock, { available: coins?.shielded.available ?? [], tokenType: "shielded" }), _jsx(PendingRow, { count: coins?.shielded.pending.length ?? 0 })] })] }), _jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(SubHeading, { color: "blue", label: "Unshielded Wallet" }), _jsxs(Box, { marginLeft: 2, flexDirection: "column", marginTop: 1, children: [_jsxs(Box, { children: [_jsx(Label, { children: "Address" }), _jsx(Text, { children: addresses.unshielded })] }), _jsx(SyncRow, { progress: subProgress?.unshielded }), _jsx(FungibleBalanceBlock, { available: coins?.unshielded.available ?? [], booked: coins?.unshielded.pending ?? [], tokenType: "unshielded" }), _jsx(PendingRow, { count: coins?.unshielded.pending.length ?? 0 })] })] }), _jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(SubHeading, { color: "yellow", label: "Dust Wallet" }), _jsxs(Box, { marginLeft: 2, flexDirection: "column", marginTop: 1, children: [_jsxs(Box, { children: [_jsx(Label, { children: "Address" }), _jsx(Text, { children: addresses.dust })] }), _jsx(SyncRow, { progress: subProgress?.dust }), _jsx(DustBalanceBlock, { totalDust: dustBalance ?? 0n, available: coins?.dust.available ?? [] }), _jsx(PendingRow, { count: coins?.dust.pending.length ?? 0 })] })] })] }))] })] }));
78
+ }
79
+ //# sourceMappingURL=StateView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateView.js","sourceRoot":"","sources":["../../../src/screens/dashboard/StateView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { DashboardHub } from './DashboardHub.js';
2
+ export { StateView } from './StateView.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/screens/dashboard/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { DashboardHub } from './DashboardHub.js';
2
+ export { StateView } from './StateView.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/screens/dashboard/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ interface DeployProps {
3
+ onDeploy: (artifactPath: string, witnessPath?: string, projectDir?: string) => Promise<string>;
4
+ onBack: () => void;
5
+ }
6
+ export declare function Deploy({ onDeploy, onBack }: DeployProps): React.JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/screens/deploy.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAQxC,UAAU,WAAW;IACnB,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/F,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAmBD,wBAAgB,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,qBAwJvD"}