@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.
- package/README.md +65 -0
- package/dist/app.d.ts +7 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +474 -0
- package/dist/app.js.map +1 -0
- package/dist/components/BackHint.d.ts +5 -0
- package/dist/components/BackHint.d.ts.map +1 -0
- package/dist/components/BackHint.js +6 -0
- package/dist/components/BackHint.js.map +1 -0
- package/dist/components/BalanceTable.d.ts +9 -0
- package/dist/components/BalanceTable.d.ts.map +1 -0
- package/dist/components/BalanceTable.js +8 -0
- package/dist/components/BalanceTable.js.map +1 -0
- package/dist/components/ConfirmationModal.d.ts +8 -0
- package/dist/components/ConfirmationModal.d.ts.map +1 -0
- package/dist/components/ConfirmationModal.js +33 -0
- package/dist/components/ConfirmationModal.js.map +1 -0
- package/dist/components/HelpFooter.d.ts +16 -0
- package/dist/components/HelpFooter.d.ts.map +1 -0
- package/dist/components/HelpFooter.js +7 -0
- package/dist/components/HelpFooter.js.map +1 -0
- package/dist/components/Loader.d.ts +5 -0
- package/dist/components/Loader.d.ts.map +1 -0
- package/dist/components/Loader.js +7 -0
- package/dist/components/Loader.js.map +1 -0
- package/dist/components/SectionHeader.d.ts +19 -0
- package/dist/components/SectionHeader.d.ts.map +1 -0
- package/dist/components/SectionHeader.js +11 -0
- package/dist/components/SectionHeader.js.map +1 -0
- package/dist/components/Select.d.ts +35 -0
- package/dist/components/Select.d.ts.map +1 -0
- package/dist/components/Select.js +49 -0
- package/dist/components/Select.js.map +1 -0
- package/dist/components/TxStatus.d.ts +8 -0
- package/dist/components/TxStatus.d.ts.map +1 -0
- package/dist/components/TxStatus.js +22 -0
- package/dist/components/TxStatus.js.map +1 -0
- package/dist/hooks/useBalance.d.ts +19 -0
- package/dist/hooks/useBalance.d.ts.map +1 -0
- package/dist/hooks/useBalance.js +119 -0
- package/dist/hooks/useBalance.js.map +1 -0
- package/dist/hooks/useChainStatus.d.ts +13 -0
- package/dist/hooks/useChainStatus.d.ts.map +1 -0
- package/dist/hooks/useChainStatus.js +97 -0
- package/dist/hooks/useChainStatus.js.map +1 -0
- package/dist/hooks/useDaemonHost.d.ts +30 -0
- package/dist/hooks/useDaemonHost.d.ts.map +1 -0
- package/dist/hooks/useDaemonHost.js +122 -0
- package/dist/hooks/useDaemonHost.js.map +1 -0
- package/dist/hooks/useLogs.d.ts +11 -0
- package/dist/hooks/useLogs.d.ts.map +1 -0
- package/dist/hooks/useLogs.js +44 -0
- package/dist/hooks/useLogs.js.map +1 -0
- package/dist/hooks/useNetwork.d.ts +14 -0
- package/dist/hooks/useNetwork.d.ts.map +1 -0
- package/dist/hooks/useNetwork.js +100 -0
- package/dist/hooks/useNetwork.js.map +1 -0
- package/dist/hooks/useWallet.d.ts +29 -0
- package/dist/hooks/useWallet.d.ts.map +1 -0
- package/dist/hooks/useWallet.js +135 -0
- package/dist/hooks/useWallet.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/navigation/index.d.ts +3 -0
- package/dist/navigation/index.d.ts.map +1 -0
- package/dist/navigation/index.js +2 -0
- package/dist/navigation/index.js.map +1 -0
- package/dist/navigation/types.d.ts +84 -0
- package/dist/navigation/types.d.ts.map +1 -0
- package/dist/navigation/types.js +3 -0
- package/dist/navigation/types.js.map +1 -0
- package/dist/navigation/useStackNavigator.d.ts +3 -0
- package/dist/navigation/useStackNavigator.d.ts.map +1 -0
- package/dist/navigation/useStackNavigator.js +20 -0
- package/dist/navigation/useStackNavigator.js.map +1 -0
- package/dist/persistent-log.d.ts +5 -0
- package/dist/persistent-log.d.ts.map +1 -0
- package/dist/persistent-log.js +55 -0
- package/dist/persistent-log.js.map +1 -0
- package/dist/screens/contract.d.ts +8 -0
- package/dist/screens/contract.d.ts.map +1 -0
- package/dist/screens/contract.js +104 -0
- package/dist/screens/contract.js.map +1 -0
- package/dist/screens/dashboard/DashboardHub.d.ts +35 -0
- package/dist/screens/dashboard/DashboardHub.d.ts.map +1 -0
- package/dist/screens/dashboard/DashboardHub.js +67 -0
- package/dist/screens/dashboard/DashboardHub.js.map +1 -0
- package/dist/screens/dashboard/StateView.d.ts +24 -0
- package/dist/screens/dashboard/StateView.d.ts.map +1 -0
- package/dist/screens/dashboard/StateView.js +79 -0
- package/dist/screens/dashboard/StateView.js.map +1 -0
- package/dist/screens/dashboard/index.d.ts +3 -0
- package/dist/screens/dashboard/index.d.ts.map +1 -0
- package/dist/screens/dashboard/index.js +3 -0
- package/dist/screens/dashboard/index.js.map +1 -0
- package/dist/screens/deploy.d.ts +8 -0
- package/dist/screens/deploy.d.ts.map +1 -0
- package/dist/screens/deploy.js +125 -0
- package/dist/screens/deploy.js.map +1 -0
- package/dist/screens/dust.d.ts +21 -0
- package/dist/screens/dust.d.ts.map +1 -0
- package/dist/screens/dust.js +289 -0
- package/dist/screens/dust.js.map +1 -0
- package/dist/screens/keys.d.ts +21 -0
- package/dist/screens/keys.d.ts.map +1 -0
- package/dist/screens/keys.js +126 -0
- package/dist/screens/keys.js.map +1 -0
- package/dist/screens/logs.d.ts +10 -0
- package/dist/screens/logs.d.ts.map +1 -0
- package/dist/screens/logs.js +62 -0
- package/dist/screens/logs.js.map +1 -0
- package/dist/screens/mint.d.ts +13 -0
- package/dist/screens/mint.d.ts.map +1 -0
- package/dist/screens/mint.js +151 -0
- package/dist/screens/mint.js.map +1 -0
- package/dist/screens/network.d.ts +12 -0
- package/dist/screens/network.d.ts.map +1 -0
- package/dist/screens/network.js +117 -0
- package/dist/screens/network.js.map +1 -0
- package/dist/screens/onboarding/InitializingScreen.d.ts +10 -0
- package/dist/screens/onboarding/InitializingScreen.d.ts.map +1 -0
- package/dist/screens/onboarding/InitializingScreen.js +7 -0
- package/dist/screens/onboarding/InitializingScreen.js.map +1 -0
- package/dist/screens/onboarding/MnemonicDisplayScreen.d.ts +9 -0
- package/dist/screens/onboarding/MnemonicDisplayScreen.d.ts.map +1 -0
- package/dist/screens/onboarding/MnemonicDisplayScreen.js +23 -0
- package/dist/screens/onboarding/MnemonicDisplayScreen.js.map +1 -0
- package/dist/screens/onboarding/NameScreen.d.ts +9 -0
- package/dist/screens/onboarding/NameScreen.d.ts.map +1 -0
- package/dist/screens/onboarding/NameScreen.js +32 -0
- package/dist/screens/onboarding/NameScreen.js.map +1 -0
- package/dist/screens/onboarding/NetworkSelectScreen.d.ts +9 -0
- package/dist/screens/onboarding/NetworkSelectScreen.d.ts.map +1 -0
- package/dist/screens/onboarding/NetworkSelectScreen.js +20 -0
- package/dist/screens/onboarding/NetworkSelectScreen.js.map +1 -0
- package/dist/screens/onboarding/OnboardingHost.d.ts +15 -0
- package/dist/screens/onboarding/OnboardingHost.d.ts.map +1 -0
- package/dist/screens/onboarding/OnboardingHost.js +42 -0
- package/dist/screens/onboarding/OnboardingHost.js.map +1 -0
- package/dist/screens/onboarding/PassphraseScreen.d.ts +9 -0
- package/dist/screens/onboarding/PassphraseScreen.d.ts.map +1 -0
- package/dist/screens/onboarding/PassphraseScreen.js +46 -0
- package/dist/screens/onboarding/PassphraseScreen.js.map +1 -0
- package/dist/screens/onboarding/SeedEntryScreen.d.ts +9 -0
- package/dist/screens/onboarding/SeedEntryScreen.d.ts.map +1 -0
- package/dist/screens/onboarding/SeedEntryScreen.js +49 -0
- package/dist/screens/onboarding/SeedEntryScreen.js.map +1 -0
- package/dist/screens/onboarding/SeedSourceScreen.d.ts +9 -0
- package/dist/screens/onboarding/SeedSourceScreen.d.ts.map +1 -0
- package/dist/screens/onboarding/SeedSourceScreen.js +22 -0
- package/dist/screens/onboarding/SeedSourceScreen.js.map +1 -0
- package/dist/screens/onboarding/UnlockScreen.d.ts +9 -0
- package/dist/screens/onboarding/UnlockScreen.d.ts.map +1 -0
- package/dist/screens/onboarding/UnlockScreen.js +29 -0
- package/dist/screens/onboarding/UnlockScreen.js.map +1 -0
- package/dist/screens/onboarding/WalletSelectScreen.d.ts +9 -0
- package/dist/screens/onboarding/WalletSelectScreen.d.ts.map +1 -0
- package/dist/screens/onboarding/WalletSelectScreen.js +30 -0
- package/dist/screens/onboarding/WalletSelectScreen.js.map +1 -0
- package/dist/screens/onboarding/index.d.ts +2 -0
- package/dist/screens/onboarding/index.d.ts.map +1 -0
- package/dist/screens/onboarding/index.js +2 -0
- package/dist/screens/onboarding/index.js.map +1 -0
- package/dist/screens/send.d.ts +12 -0
- package/dist/screens/send.d.ts.map +1 -0
- package/dist/screens/send.js +187 -0
- package/dist/screens/send.js.map +1 -0
- package/dist/settings.d.ts +16 -0
- package/dist/settings.d.ts.map +1 -0
- package/dist/settings.js +23 -0
- package/dist/settings.js.map +1 -0
- package/dist/types.d.ts +30 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/balance.d.ts +48 -0
- package/dist/utils/balance.d.ts.map +1 -0
- package/dist/utils/balance.js +61 -0
- package/dist/utils/balance.js.map +1 -0
- package/dist/utils/display.d.ts +3 -0
- package/dist/utils/display.d.ts.map +1 -0
- package/dist/utils/display.js +17 -0
- package/dist/utils/display.js.map +1 -0
- package/dist/utils/sync.d.ts +7 -0
- package/dist/utils/sync.d.ts.map +1 -0
- package/dist/utils/sync.js +11 -0
- package/dist/utils/sync.js.map +1 -0
- package/dist/utils/synced-wallet-stub.d.ts +3 -0
- package/dist/utils/synced-wallet-stub.d.ts.map +1 -0
- package/dist/utils/synced-wallet-stub.js +35 -0
- package/dist/utils/synced-wallet-stub.js.map +1 -0
- package/package.json +42 -0
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|