@shieldedtech/moth-wallet 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 (230) hide show
  1. package/README.md +62 -0
  2. package/dist/contract/args-parser.d.ts +29 -0
  3. package/dist/contract/args-parser.d.ts.map +1 -0
  4. package/dist/contract/args-parser.js +123 -0
  5. package/dist/contract/args-parser.js.map +1 -0
  6. package/dist/contract/artifact-loader.d.ts +26 -0
  7. package/dist/contract/artifact-loader.d.ts.map +1 -0
  8. package/dist/contract/artifact-loader.js +129 -0
  9. package/dist/contract/artifact-loader.js.map +1 -0
  10. package/dist/contract/call.d.ts +32 -0
  11. package/dist/contract/call.d.ts.map +1 -0
  12. package/dist/contract/call.js +245 -0
  13. package/dist/contract/call.js.map +1 -0
  14. package/dist/contract/deploy.d.ts +36 -0
  15. package/dist/contract/deploy.d.ts.map +1 -0
  16. package/dist/contract/deploy.js +388 -0
  17. package/dist/contract/deploy.js.map +1 -0
  18. package/dist/contract/fungible-token.d.ts +40 -0
  19. package/dist/contract/fungible-token.d.ts.map +1 -0
  20. package/dist/contract/fungible-token.js +88 -0
  21. package/dist/contract/fungible-token.js.map +1 -0
  22. package/dist/contract/initial-private-state.d.ts +18 -0
  23. package/dist/contract/initial-private-state.d.ts.map +1 -0
  24. package/dist/contract/initial-private-state.js +44 -0
  25. package/dist/contract/initial-private-state.js.map +1 -0
  26. package/dist/contract/maintenance.d.ts +72 -0
  27. package/dist/contract/maintenance.d.ts.map +1 -0
  28. package/dist/contract/maintenance.js +430 -0
  29. package/dist/contract/maintenance.js.map +1 -0
  30. package/dist/contract/state.d.ts +16 -0
  31. package/dist/contract/state.d.ts.map +1 -0
  32. package/dist/contract/state.js +18 -0
  33. package/dist/contract/state.js.map +1 -0
  34. package/dist/contract/witness-loader.d.ts +3 -0
  35. package/dist/contract/witness-loader.d.ts.map +1 -0
  36. package/dist/contract/witness-loader.js +27 -0
  37. package/dist/contract/witness-loader.js.map +1 -0
  38. package/dist/daemon/api-keys.d.ts +66 -0
  39. package/dist/daemon/api-keys.d.ts.map +1 -0
  40. package/dist/daemon/api-keys.js +222 -0
  41. package/dist/daemon/api-keys.js.map +1 -0
  42. package/dist/daemon/audit-log.d.ts +65 -0
  43. package/dist/daemon/audit-log.d.ts.map +1 -0
  44. package/dist/daemon/audit-log.js +73 -0
  45. package/dist/daemon/audit-log.js.map +1 -0
  46. package/dist/daemon/client.d.ts +63 -0
  47. package/dist/daemon/client.d.ts.map +1 -0
  48. package/dist/daemon/client.js +214 -0
  49. package/dist/daemon/client.js.map +1 -0
  50. package/dist/daemon/confirmation-queue.d.ts +46 -0
  51. package/dist/daemon/confirmation-queue.d.ts.map +1 -0
  52. package/dist/daemon/confirmation-queue.js +92 -0
  53. package/dist/daemon/confirmation-queue.js.map +1 -0
  54. package/dist/daemon/index.d.ts +23 -0
  55. package/dist/daemon/index.d.ts.map +1 -0
  56. package/dist/daemon/index.js +26 -0
  57. package/dist/daemon/index.js.map +1 -0
  58. package/dist/daemon/protocol.d.ts +40 -0
  59. package/dist/daemon/protocol.d.ts.map +1 -0
  60. package/dist/daemon/protocol.js +104 -0
  61. package/dist/daemon/protocol.js.map +1 -0
  62. package/dist/daemon/server.d.ts +158 -0
  63. package/dist/daemon/server.d.ts.map +1 -0
  64. package/dist/daemon/server.js +297 -0
  65. package/dist/daemon/server.js.map +1 -0
  66. package/dist/daemon/wallet-handlers.d.ts +37 -0
  67. package/dist/daemon/wallet-handlers.d.ts.map +1 -0
  68. package/dist/daemon/wallet-handlers.js +533 -0
  69. package/dist/daemon/wallet-handlers.js.map +1 -0
  70. package/dist/daemon/wallet-rpc-parsers.d.ts +14 -0
  71. package/dist/daemon/wallet-rpc-parsers.d.ts.map +1 -0
  72. package/dist/daemon/wallet-rpc-parsers.js +259 -0
  73. package/dist/daemon/wallet-rpc-parsers.js.map +1 -0
  74. package/dist/daemon/wallet-rpc-types.d.ts +138 -0
  75. package/dist/daemon/wallet-rpc-types.d.ts.map +1 -0
  76. package/dist/daemon/wallet-rpc-types.js +11 -0
  77. package/dist/daemon/wallet-rpc-types.js.map +1 -0
  78. package/dist/diagnostics/fs-timing-store.d.ts +29 -0
  79. package/dist/diagnostics/fs-timing-store.d.ts.map +1 -0
  80. package/dist/diagnostics/fs-timing-store.js +81 -0
  81. package/dist/diagnostics/fs-timing-store.js.map +1 -0
  82. package/dist/diagnostics/timings.d.ts +64 -0
  83. package/dist/diagnostics/timings.d.ts.map +1 -0
  84. package/dist/diagnostics/timings.js +100 -0
  85. package/dist/diagnostics/timings.js.map +1 -0
  86. package/dist/index.d.ts +37 -0
  87. package/dist/index.d.ts.map +1 -0
  88. package/dist/index.js +47 -0
  89. package/dist/index.js.map +1 -0
  90. package/dist/network/indexer-client.d.ts +66 -0
  91. package/dist/network/indexer-client.d.ts.map +1 -0
  92. package/dist/network/indexer-client.js +112 -0
  93. package/dist/network/indexer-client.js.map +1 -0
  94. package/dist/network/node-client.d.ts +27 -0
  95. package/dist/network/node-client.d.ts.map +1 -0
  96. package/dist/network/node-client.js +94 -0
  97. package/dist/network/node-client.js.map +1 -0
  98. package/dist/proof/client.d.ts +15 -0
  99. package/dist/proof/client.d.ts.map +1 -0
  100. package/dist/proof/client.js +77 -0
  101. package/dist/proof/client.js.map +1 -0
  102. package/dist/proof/provider.d.ts +12 -0
  103. package/dist/proof/provider.d.ts.map +1 -0
  104. package/dist/proof/provider.js +96 -0
  105. package/dist/proof/provider.js.map +1 -0
  106. package/dist/providers/index.d.ts +2 -0
  107. package/dist/providers/index.d.ts.map +1 -0
  108. package/dist/providers/index.js +2 -0
  109. package/dist/providers/index.js.map +1 -0
  110. package/dist/providers/midnight-provider.d.ts +11 -0
  111. package/dist/providers/midnight-provider.d.ts.map +1 -0
  112. package/dist/providers/midnight-provider.js +30 -0
  113. package/dist/providers/midnight-provider.js.map +1 -0
  114. package/dist/storage/adapter.d.ts +8 -0
  115. package/dist/storage/adapter.d.ts.map +1 -0
  116. package/dist/storage/adapter.js +2 -0
  117. package/dist/storage/adapter.js.map +1 -0
  118. package/dist/storage/fs-adapter.d.ts +14 -0
  119. package/dist/storage/fs-adapter.d.ts.map +1 -0
  120. package/dist/storage/fs-adapter.js +126 -0
  121. package/dist/storage/fs-adapter.js.map +1 -0
  122. package/dist/storage/safe-path.d.ts +13 -0
  123. package/dist/storage/safe-path.d.ts.map +1 -0
  124. package/dist/storage/safe-path.js +35 -0
  125. package/dist/storage/safe-path.js.map +1 -0
  126. package/dist/sync/activity.d.ts +53 -0
  127. package/dist/sync/activity.d.ts.map +1 -0
  128. package/dist/sync/activity.js +92 -0
  129. package/dist/sync/activity.js.map +1 -0
  130. package/dist/sync/dust-registration-estimate.d.ts +54 -0
  131. package/dist/sync/dust-registration-estimate.d.ts.map +1 -0
  132. package/dist/sync/dust-registration-estimate.js +103 -0
  133. package/dist/sync/dust-registration-estimate.js.map +1 -0
  134. package/dist/sync/node-sync-store.d.ts +10 -0
  135. package/dist/sync/node-sync-store.d.ts.map +1 -0
  136. package/dist/sync/node-sync-store.js +42 -0
  137. package/dist/sync/node-sync-store.js.map +1 -0
  138. package/dist/sync/operations.d.ts +138 -0
  139. package/dist/sync/operations.d.ts.map +1 -0
  140. package/dist/sync/operations.js +395 -0
  141. package/dist/sync/operations.js.map +1 -0
  142. package/dist/sync/preseed-parts.d.ts +18 -0
  143. package/dist/sync/preseed-parts.d.ts.map +1 -0
  144. package/dist/sync/preseed-parts.js +33 -0
  145. package/dist/sync/preseed-parts.js.map +1 -0
  146. package/dist/sync/preseed.d.ts +95 -0
  147. package/dist/sync/preseed.d.ts.map +1 -0
  148. package/dist/sync/preseed.js +365 -0
  149. package/dist/sync/preseed.js.map +1 -0
  150. package/dist/sync/progress.d.ts +45 -0
  151. package/dist/sync/progress.d.ts.map +1 -0
  152. package/dist/sync/progress.js +51 -0
  153. package/dist/sync/progress.js.map +1 -0
  154. package/dist/sync/sdk-dedup.d.ts +53 -0
  155. package/dist/sync/sdk-dedup.d.ts.map +1 -0
  156. package/dist/sync/sdk-dedup.js +134 -0
  157. package/dist/sync/sdk-dedup.js.map +1 -0
  158. package/dist/sync/sync-store.d.ts +33 -0
  159. package/dist/sync/sync-store.d.ts.map +1 -0
  160. package/dist/sync/sync-store.js +45 -0
  161. package/dist/sync/sync-store.js.map +1 -0
  162. package/dist/sync/wallet-sync.d.ts +153 -0
  163. package/dist/sync/wallet-sync.d.ts.map +1 -0
  164. package/dist/sync/wallet-sync.js +943 -0
  165. package/dist/sync/wallet-sync.js.map +1 -0
  166. package/dist/types/errors.d.ts +18 -0
  167. package/dist/types/errors.d.ts.map +1 -0
  168. package/dist/types/errors.js +33 -0
  169. package/dist/types/errors.js.map +1 -0
  170. package/dist/types/exit-codes.d.ts +8 -0
  171. package/dist/types/exit-codes.d.ts.map +1 -0
  172. package/dist/types/exit-codes.js +7 -0
  173. package/dist/types/exit-codes.js.map +1 -0
  174. package/dist/types/index.d.ts +6 -0
  175. package/dist/types/index.d.ts.map +1 -0
  176. package/dist/types/index.js +3 -0
  177. package/dist/types/index.js.map +1 -0
  178. package/dist/types/network.d.ts +65 -0
  179. package/dist/types/network.d.ts.map +1 -0
  180. package/dist/types/network.js +108 -0
  181. package/dist/types/network.js.map +1 -0
  182. package/dist/types/tokens.d.ts +3 -0
  183. package/dist/types/tokens.d.ts.map +1 -0
  184. package/dist/types/tokens.js +11 -0
  185. package/dist/types/tokens.js.map +1 -0
  186. package/dist/types/transaction.d.ts +13 -0
  187. package/dist/types/transaction.d.ts.map +1 -0
  188. package/dist/types/transaction.js +2 -0
  189. package/dist/types/transaction.js.map +1 -0
  190. package/dist/types/wallet.d.ts +82 -0
  191. package/dist/types/wallet.d.ts.map +1 -0
  192. package/dist/types/wallet.js +2 -0
  193. package/dist/types/wallet.js.map +1 -0
  194. package/dist/wallet/address-validate.d.ts +7 -0
  195. package/dist/wallet/address-validate.d.ts.map +1 -0
  196. package/dist/wallet/address-validate.js +28 -0
  197. package/dist/wallet/address-validate.js.map +1 -0
  198. package/dist/wallet/address.d.ts +32 -0
  199. package/dist/wallet/address.d.ts.map +1 -0
  200. package/dist/wallet/address.js +107 -0
  201. package/dist/wallet/address.js.map +1 -0
  202. package/dist/wallet/app-secret.d.ts +15 -0
  203. package/dist/wallet/app-secret.d.ts.map +1 -0
  204. package/dist/wallet/app-secret.js +45 -0
  205. package/dist/wallet/app-secret.js.map +1 -0
  206. package/dist/wallet/balance-format.d.ts +12 -0
  207. package/dist/wallet/balance-format.d.ts.map +1 -0
  208. package/dist/wallet/balance-format.js +51 -0
  209. package/dist/wallet/balance-format.js.map +1 -0
  210. package/dist/wallet/batch-transfer.d.ts +36 -0
  211. package/dist/wallet/batch-transfer.d.ts.map +1 -0
  212. package/dist/wallet/batch-transfer.js +93 -0
  213. package/dist/wallet/batch-transfer.js.map +1 -0
  214. package/dist/wallet/keystore.d.ts +16 -0
  215. package/dist/wallet/keystore.d.ts.map +1 -0
  216. package/dist/wallet/keystore.js +76 -0
  217. package/dist/wallet/keystore.js.map +1 -0
  218. package/dist/wallet/manager.d.ts +77 -0
  219. package/dist/wallet/manager.d.ts.map +1 -0
  220. package/dist/wallet/manager.js +474 -0
  221. package/dist/wallet/manager.js.map +1 -0
  222. package/dist/wallet/mnemonic.d.ts +5 -0
  223. package/dist/wallet/mnemonic.d.ts.map +1 -0
  224. package/dist/wallet/mnemonic.js +28 -0
  225. package/dist/wallet/mnemonic.js.map +1 -0
  226. package/dist/wallet/sign-message.d.ts +20 -0
  227. package/dist/wallet/sign-message.d.ts.map +1 -0
  228. package/dist/wallet/sign-message.js +58 -0
  229. package/dist/wallet/sign-message.js.map +1 -0
  230. package/package.json +55 -0
@@ -0,0 +1,100 @@
1
+ // Phase timings: a storage-agnostic recorder for "where did the wall clock go".
2
+ //
3
+ // The wallet already announces every phase it moves through — sync progress
4
+ // messages from core, transaction stages from the transaction paths. Stamping
5
+ // those at whatever boundary a surface has turns them into a timeline with no
6
+ // further instrumentation: the gap between two labels IS the cost of the phase
7
+ // between them. That technique localised the pre-seed reference cost to a single
8
+ // 46.7s DustLocalState.deserialize with every other startup stage at 0.0s.
9
+ //
10
+ // The arithmetic and the policy (enabled/disabled, bounded history, never throw)
11
+ // are identical everywhere; only the persistence differs — storage.local in the
12
+ // extension, a file under ~/.moth for the CLI, TUI and daemon, memory in tests.
13
+ // So the store is an interface and everything else lives here, isomorphic and
14
+ // dependency-free: no node builtins, no extension APIs, no WASM. See
15
+ // storage/adapter.ts for the same split applied to wallet state.
16
+ /** Oldest entries are dropped past this. Bounded so an always-on session cannot
17
+ * grow storage without limit; ~500 is several unlock+sync runs. */
18
+ export const DEFAULT_MAX_ENTRIES = 500;
19
+ /**
20
+ * Build a recorder over any store.
21
+ *
22
+ * `now` is injectable so the arithmetic is testable without faking the clock
23
+ * globally; it defaults to Date.now.
24
+ *
25
+ * Every method is best-effort by design: a failed read or write must never
26
+ * disturb the thing being measured, and an instrument that can break the wallet
27
+ * is worse than no instrument. That is why `record` swallows everything rather
28
+ * than propagating — callers stamp phases on hot paths and cannot be asked to
29
+ * wrap each one.
30
+ */
31
+ export function createTimingRecorder(store, options) {
32
+ const maxEntries = options?.maxEntries ?? DEFAULT_MAX_ENTRIES;
33
+ const now = options?.now ?? (() => Date.now());
34
+ // Cached so the hot path (every ~1s sync emission) does not hit storage just to
35
+ // ask whether it should be recording.
36
+ let enabledCache = null;
37
+ const isEnabled = async () => {
38
+ if (enabledCache !== null)
39
+ return enabledCache;
40
+ try {
41
+ enabledCache = await store.isEnabled();
42
+ }
43
+ catch {
44
+ // A store that cannot answer is treated as off: recording is the optional
45
+ // behaviour, so the failure mode is "no data", never "broken wallet".
46
+ enabledCache = false;
47
+ }
48
+ return enabledCache;
49
+ };
50
+ const setEnabled = async (on) => {
51
+ enabledCache = on;
52
+ await store.setEnabled(on);
53
+ await record('marker', on ? 'timings: enabled' : 'timings: disabled');
54
+ };
55
+ async function record(source, label, detail) {
56
+ try {
57
+ if (!(await isEnabled()))
58
+ return;
59
+ const entries = await store.read();
60
+ const at = now();
61
+ // First entry of a run has no predecessor, so its delta is 0 rather than
62
+ // the time since the epoch.
63
+ const previous = entries.length > 0 ? entries[entries.length - 1].at : at;
64
+ entries.push({ at, deltaMs: at - previous, label, source, ...(detail ? { detail } : {}) });
65
+ await store.write(entries.slice(-maxEntries));
66
+ }
67
+ catch {
68
+ /* never let instrumentation break the path it measures */
69
+ }
70
+ }
71
+ return {
72
+ record,
73
+ isEnabled,
74
+ setEnabled,
75
+ list: () => store.read().catch(() => []),
76
+ clear: () => store.clear(),
77
+ };
78
+ }
79
+ /**
80
+ * In-memory store. For tests, and for a short-lived process that only wants the
81
+ * timeline it prints at exit.
82
+ */
83
+ export function createMemoryTimingStore(initiallyEnabled = false) {
84
+ let enabled = initiallyEnabled;
85
+ let entries = [];
86
+ return {
87
+ isEnabled: async () => enabled,
88
+ setEnabled: async (on) => {
89
+ enabled = on;
90
+ },
91
+ read: async () => [...entries],
92
+ write: async (next) => {
93
+ entries = [...next];
94
+ },
95
+ clear: async () => {
96
+ entries = [];
97
+ },
98
+ };
99
+ }
100
+ //# sourceMappingURL=timings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timings.js","sourceRoot":"","sources":["../../src/diagnostics/timings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ export * from './types/index.js';
2
+ export type { NetworkConfig, NetworkEndpoints, ProverConfig } from './types/network.js';
3
+ export { DEFAULT_NETWORKS, validateNetworkUrl, validateNetworkConfig, serverProver, resolveProverConfig, isProverConfig, proverConfigsEqual, describeProver, } from './types/network.js';
4
+ export { WalletManager } from './wallet/manager.js';
5
+ export { NIGHT_DENOMINATION, DUST_DENOMINATION, formatBalance, formatDustBalance, } from './wallet/balance-format.js';
6
+ export { generateMnemonic24, validateMnemonic, mnemonicToSeed, hexSeedToUint8Array } from './wallet/mnemonic.js';
7
+ export { Roles } from './wallet/address.js';
8
+ export { encryptKeystore, decryptKeystore, type EncryptedKeystore } from './wallet/keystore.js';
9
+ export { deriveAllAddressesFromSeed, deriveRawKeys, deriveShieldedPublicKeys, decodeBech32mAddress } from './wallet/address.js';
10
+ export { signMessage, signedMessageBytes, type SignEncoding, type SignedMessage } from './wallet/sign-message.js';
11
+ export { deriveAppSecret } from './wallet/app-secret.js';
12
+ export { loadBatchFile, executeBatchTransfer, batchExitCode, type BatchTransferEntry, type BatchTransferResult, type BatchTransferSummary } from './wallet/batch-transfer.js';
13
+ export type { StorageAdapter } from './storage/adapter.js';
14
+ export { FilesystemStorageAdapter } from './storage/fs-adapter.js';
15
+ export { JsonRpcNodeClient, type NodeClient } from './network/node-client.js';
16
+ export { IndexerClient } from './network/indexer-client.js';
17
+ export type { Block, ContractAction, DustGenerationStatus, TransactionInfo } from './network/indexer-client.js';
18
+ export { ProofClient, type ProofServerStatus } from './proof/client.js';
19
+ export { createProvingProvider, createProofProvider, createWalletProvingService, ensureProverReady, } from './proof/provider.js';
20
+ export { startWalletSync, formatNight, NIGHT_TOKEN_ID, clearSyncCache, clearDustSyncCache, resolveSyncStore, EMPTY_COINS, EMPTY_SUB_PROGRESS, type WalletSyncOptions, type WalletBalances, type SyncedWallet, type DustGeneration, type SyncProgress, type SubWalletSyncProgress, type SubWalletProgress, type WalletCoinDetails, type ShieldedCoinInfo, type UnshieldedCoinInfo, type DustCoinInfo, } from './sync/wallet-sync.js';
21
+ export { sendTokens, sendTokensWithKeys, deriveWalletKeys, buildTransferTransaction, estimateTransferFee, submitFinalizedTransaction, designateForDust, designateForDustWithKeys, estimateDustRegistration, dedesignateFromDust, dedesignateFromDustWithKeys, listNightUtxos, type SendRequest, type TxStage, type NightUtxo, type FinalizedTransaction, type WalletKeys, } from './sync/operations.js';
22
+ export { InMemorySyncStateStore, syncStateKey, emptyRefStateKey, emptyRefMnemonicKey, emptyRefHeightKey, type SyncStateStore, type WalletPart, } from './sync/sync-store.js';
23
+ export { deriveActivity, deriveActivityEntry, sortActivity, type ActivityEntry, type ActivityDelta, type ActivityKind, type ActivityStatus, } from './sync/activity.js';
24
+ export { estimateRegistrationAffordability, describeWait, DustRegistrationNotYetError, type DustGenerationSlice, type DustRegistrationEstimate, } from './sync/dust-registration-estimate.js';
25
+ export { ensureEmptyRefCache, warmEmptyRefCache, refreshEmptyRefCache, preseedReferenceStatus, preSeedNewWallet, type WarmProgress } from './sync/preseed.js';
26
+ export { loadContractArtifact, type ContractArtifact } from './contract/artifact-loader.js';
27
+ export { loadWitnessProvider, type WitnessProvider } from './contract/witness-loader.js';
28
+ export { deployContract, type DeployOptions } from './contract/deploy.js';
29
+ export { callCircuit, type CallOptions } from './contract/call.js';
30
+ export { insertVerifierKey, type InsertVerifierKeyOptions, insertVerifierKeys, type InsertVerifierKeysOptions, type BatchEntryResult, type BatchInsertResult, } from './contract/maintenance.js';
31
+ export { queryContractState, type ContractState } from './contract/state.js';
32
+ export { deployFungibleToken, mintFungibleToken, FUNGIBLE_TOKEN_ARTIFACT_DIR, type DeployFungibleTokenOptions, type MintFungibleTokenOptions, } from './contract/fungible-token.js';
33
+ export { parseArgs, toPositionalArgs } from './contract/args-parser.js';
34
+ export { resolveInitialPrivateState, type ResolveInitialPrivateStateOptions, } from './contract/initial-private-state.js';
35
+ export { createMidnightProvider } from './providers/midnight-provider.js';
36
+ export { startDaemon, connectDaemon, connectDaemonTcp, connectDaemonBind, daemonSocketPath, PROTOCOL_VERSION as DAEMON_PROTOCOL_VERSION, DaemonProtocolError, ConfirmationQueue, buildWalletHandlers, AuditLog, ApiKeyStore, parseSubmitTransactionParams, parseTransferTokensParams, parseCallCircuitParams, parseDeployContractParams, parseDustRegisterParams, parseDustDeregisterParams, parseInsertVerifierKeyParams, parseInsertVerifierKeysBatchParams, shortenHex, shortenAddress, type DaemonHandle, type DaemonOptions, type DaemonClient, type DaemonBind, type RpcHandler, type ConnectionContext, type RpcErrorCode, type AuthHandler, type AuthResult, type Scope, type ConfirmationRequest, type ConfirmationQueueOptions, type WalletHandlerDeps, type DaemonGetStateResult, type DaemonSubmitTransactionParams, type DaemonSubmitTransactionResult, type DaemonTransferTokensParams, type DaemonTransferTokensResult, type DaemonCallCircuitParams, type DaemonCallCircuitResult, type DaemonDeployContractParams, type DaemonDeployContractResult, type DaemonDustRegisterParams, type DaemonDustRegisterResult, type DaemonDustDeregisterParams, type DaemonDustDeregisterResult, type DaemonInsertVerifierKeyParams, type DaemonInsertVerifierKeyResult, type DaemonInsertVerifierKeysBatchParams, type DaemonInsertVerifierKeysBatchResult, type AuditEntry, type AuditRpcEntry, type AuditLifecycleEntry, type AuditDecision, type AuditLogOptions, type ApiKeyRecord, type ApiKeyGenerated, type ApiKeyAuthResult, } from './daemon/index.js';
37
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,47 @@
1
+ // Types
2
+ export * from './types/index.js';
3
+ export { DEFAULT_NETWORKS, validateNetworkUrl, validateNetworkConfig, serverProver, resolveProverConfig, isProverConfig, proverConfigsEqual, describeProver, } from './types/network.js';
4
+ // Wallet
5
+ export { WalletManager } from './wallet/manager.js';
6
+ export { NIGHT_DENOMINATION, DUST_DENOMINATION, formatBalance, formatDustBalance, } from './wallet/balance-format.js';
7
+ export { generateMnemonic24, validateMnemonic, mnemonicToSeed, hexSeedToUint8Array } from './wallet/mnemonic.js';
8
+ export { Roles } from './wallet/address.js';
9
+ export { encryptKeystore, decryptKeystore } from './wallet/keystore.js';
10
+ export { deriveAllAddressesFromSeed, deriveRawKeys, deriveShieldedPublicKeys, decodeBech32mAddress } from './wallet/address.js';
11
+ export { signMessage, signedMessageBytes } from './wallet/sign-message.js';
12
+ export { deriveAppSecret } from './wallet/app-secret.js';
13
+ export { loadBatchFile, executeBatchTransfer, batchExitCode } from './wallet/batch-transfer.js';
14
+ export { FilesystemStorageAdapter } from './storage/fs-adapter.js';
15
+ // Network
16
+ export { JsonRpcNodeClient } from './network/node-client.js';
17
+ export { IndexerClient } from './network/indexer-client.js';
18
+ // Proof
19
+ export { ProofClient } from './proof/client.js';
20
+ export { createProvingProvider, createProofProvider, createWalletProvingService, ensureProverReady, } from './proof/provider.js';
21
+ // Sync
22
+ export { startWalletSync, formatNight, NIGHT_TOKEN_ID, clearSyncCache, clearDustSyncCache, resolveSyncStore, EMPTY_COINS, EMPTY_SUB_PROGRESS, } from './sync/wallet-sync.js';
23
+ export {
24
+ // Union of both lines: main's build/estimate/submit + batch types the
25
+ // extension imports, plus v8's derive-and-drop walletKeys write paths.
26
+ sendTokens, sendTokensWithKeys, deriveWalletKeys, buildTransferTransaction, estimateTransferFee, submitFinalizedTransaction, designateForDust, designateForDustWithKeys, estimateDustRegistration, dedesignateFromDust, dedesignateFromDustWithKeys, listNightUtxos, } from './sync/operations.js';
27
+ export { InMemorySyncStateStore, syncStateKey, emptyRefStateKey, emptyRefMnemonicKey, emptyRefHeightKey, } from './sync/sync-store.js';
28
+ export { deriveActivity, deriveActivityEntry, sortActivity, } from './sync/activity.js';
29
+ export { estimateRegistrationAffordability, describeWait, DustRegistrationNotYetError, } from './sync/dust-registration-estimate.js';
30
+ export { ensureEmptyRefCache, warmEmptyRefCache, refreshEmptyRefCache, preseedReferenceStatus, preSeedNewWallet } from './sync/preseed.js';
31
+ // Contract
32
+ export { loadContractArtifact } from './contract/artifact-loader.js';
33
+ export { loadWitnessProvider } from './contract/witness-loader.js';
34
+ export { deployContract } from './contract/deploy.js';
35
+ export { callCircuit } from './contract/call.js';
36
+ export { insertVerifierKey, insertVerifierKeys, } from './contract/maintenance.js';
37
+ export { queryContractState } from './contract/state.js';
38
+ export { deployFungibleToken, mintFungibleToken, FUNGIBLE_TOKEN_ARTIFACT_DIR, } from './contract/fungible-token.js';
39
+ export { parseArgs, toPositionalArgs } from './contract/args-parser.js';
40
+ export { resolveInitialPrivateState, } from './contract/initial-private-state.js';
41
+ // Providers — bridge SDK interfaces with our infrastructure
42
+ export { createMidnightProvider } from './providers/midnight-provider.js';
43
+ // Daemon — opt-in Unix-socket RPC for sharing a live wallet between the TUI
44
+ // host and CLI clients. L1 perms enforced at the socket; L3 confirmation is
45
+ // the host's responsibility (see packages/tui).
46
+ export { startDaemon, connectDaemon, connectDaemonTcp, connectDaemonBind, daemonSocketPath, PROTOCOL_VERSION as DAEMON_PROTOCOL_VERSION, DaemonProtocolError, ConfirmationQueue, buildWalletHandlers, AuditLog, ApiKeyStore, parseSubmitTransactionParams, parseTransferTokensParams, parseCallCircuitParams, parseDeployContractParams, parseDustRegisterParams, parseDustDeregisterParams, parseInsertVerifierKeyParams, parseInsertVerifierKeysBatchParams, shortenHex, shortenAddress, } from './daemon/index.js';
47
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ export interface Block {
2
+ hash: string;
3
+ height: number;
4
+ timestamp: number;
5
+ protocolVersion: number;
6
+ }
7
+ export interface ContractAction {
8
+ address: string;
9
+ state: string;
10
+ zswapState: string;
11
+ entryPoint?: string;
12
+ unshieldedBalances: Array<{
13
+ tokenType: string;
14
+ amount: string;
15
+ }>;
16
+ transaction: {
17
+ hash: string;
18
+ id: number;
19
+ };
20
+ block: {
21
+ hash: string;
22
+ height: number;
23
+ };
24
+ }
25
+ export interface DustGenerationStatus {
26
+ cardanoRewardAddress: string;
27
+ dustAddress: string | null;
28
+ registered: boolean;
29
+ nightBalance: string;
30
+ generationRate: string;
31
+ maxCapacity: string;
32
+ currentCapacity: string;
33
+ }
34
+ export interface TransactionInfo {
35
+ id: number;
36
+ hash: string;
37
+ protocolVersion: number;
38
+ raw: string;
39
+ block: Block;
40
+ }
41
+ export declare class IndexerClient {
42
+ private url;
43
+ constructor(url: string);
44
+ getBlock(offset?: {
45
+ hash?: string;
46
+ height?: number;
47
+ }): Promise<Block | null>;
48
+ getTransactions(offset: {
49
+ hash?: string;
50
+ identifier?: string;
51
+ }): Promise<TransactionInfo[]>;
52
+ getContractAction(address: string, offset?: {
53
+ blockOffset?: {
54
+ hash?: string;
55
+ height?: number;
56
+ };
57
+ transactionOffset?: {
58
+ hash?: string;
59
+ };
60
+ }): Promise<ContractAction | null>;
61
+ getDustGenerationStatus(cardanoRewardAddresses: string[]): Promise<DustGenerationStatus[]>;
62
+ connect(viewingKey: string): Promise<string>;
63
+ disconnect(sessionId: string): Promise<void>;
64
+ private query;
65
+ }
66
+ //# sourceMappingURL=indexer-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexer-client.d.ts","sourceRoot":"","sources":["../../src/network/indexer-client.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjE,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACzC;AAED,MAAM,WAAW,oBAAoB;IACnC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;CACd;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,GAAG,CAAS;gBAER,GAAG,EAAE,MAAM;IAIjB,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAY5E,eAAe,CAAC,MAAM,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAa3F,iBAAiB,CACrB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,iBAAiB,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,GACnG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAoB3B,uBAAuB,CAAC,sBAAsB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAe1F,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM5C,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAKpC,KAAK;CAwCpB"}
@@ -0,0 +1,112 @@
1
+ import { NetworkError } from '../types/errors.js';
2
+ export class IndexerClient {
3
+ url;
4
+ constructor(url) {
5
+ this.url = url;
6
+ }
7
+ async getBlock(offset) {
8
+ const query = `
9
+ query ($offset: BlockOffset) {
10
+ block(offset: $offset) {
11
+ hash height timestamp protocolVersion
12
+ }
13
+ }
14
+ `;
15
+ const result = await this.query(query, { offset: offset ?? null });
16
+ return result.block;
17
+ }
18
+ async getTransactions(offset) {
19
+ const query = `
20
+ query ($offset: TransactionOffset!) {
21
+ transactions(offset: $offset) {
22
+ id hash protocolVersion raw
23
+ block { hash height timestamp protocolVersion }
24
+ }
25
+ }
26
+ `;
27
+ const result = await this.query(query, { offset });
28
+ return result.transactions;
29
+ }
30
+ async getContractAction(address, offset) {
31
+ const query = `
32
+ query ($address: HexEncoded!, $offset: ContractActionOffset) {
33
+ contractAction(address: $address, offset: $offset) {
34
+ address state zswapState
35
+ ... on ContractCall { entryPoint }
36
+ unshieldedBalances { tokenType amount }
37
+ transaction { hash }
38
+ ... on ContractDeploy { transaction { hash } }
39
+ ... on ContractCall { transaction { hash } deploy { address } }
40
+ }
41
+ }
42
+ `;
43
+ const result = await this.query(query, {
44
+ address,
45
+ offset: offset ?? null,
46
+ });
47
+ return result.contractAction;
48
+ }
49
+ async getDustGenerationStatus(cardanoRewardAddresses) {
50
+ const query = `
51
+ query ($addresses: [CardanoRewardAddress!]!) {
52
+ dustGenerationStatus(cardanoRewardAddresses: $addresses) {
53
+ cardanoRewardAddress dustAddress registered
54
+ nightBalance generationRate maxCapacity currentCapacity
55
+ }
56
+ }
57
+ `;
58
+ const result = await this.query(query, {
59
+ addresses: cardanoRewardAddresses,
60
+ });
61
+ return result.dustGenerationStatus;
62
+ }
63
+ async connect(viewingKey) {
64
+ const query = `mutation ($viewingKey: ViewingKey!) { connect(viewingKey: $viewingKey) }`;
65
+ const result = await this.query(query, { viewingKey });
66
+ return result.connect;
67
+ }
68
+ async disconnect(sessionId) {
69
+ const query = `mutation ($sessionId: HexEncoded!) { disconnect(sessionId: $sessionId) }`;
70
+ await this.query(query, { sessionId });
71
+ }
72
+ async query(query, variables) {
73
+ const controller = new AbortController();
74
+ const timeout = setTimeout(() => controller.abort(), 10_000);
75
+ try {
76
+ const response = await fetch(this.url, {
77
+ method: 'POST',
78
+ headers: { 'Content-Type': 'application/json' },
79
+ body: JSON.stringify({ query, variables }),
80
+ signal: controller.signal,
81
+ });
82
+ if (!response.ok) {
83
+ throw new NetworkError(`Indexer request failed: HTTP ${response.status}`);
84
+ }
85
+ const json = await response.json();
86
+ // SR-002: Validate GraphQL response structure before acting on data
87
+ if (typeof json !== 'object' || json === null) {
88
+ throw new NetworkError('Indexer response is not a valid JSON object');
89
+ }
90
+ const errors = json.errors;
91
+ if (Array.isArray(errors) && errors.length > 0) {
92
+ throw new NetworkError(`Indexer error: ${errors[0]?.message ?? 'unknown'}`);
93
+ }
94
+ if (!('data' in json)) {
95
+ throw new NetworkError('Indexer response missing data field');
96
+ }
97
+ return json.data;
98
+ }
99
+ catch (err) {
100
+ if (err instanceof NetworkError)
101
+ throw err;
102
+ if (err instanceof Error && err.name === 'AbortError') {
103
+ throw new NetworkError(`Indexer timeout after 10s to ${this.url}`);
104
+ }
105
+ throw new NetworkError(`Indexer query failed: ${err}`, err);
106
+ }
107
+ finally {
108
+ clearTimeout(timeout);
109
+ }
110
+ }
111
+ }
112
+ //# sourceMappingURL=indexer-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexer-client.js","sourceRoot":"","sources":["../../src/network/indexer-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { NetworkConfig } from '../types/network.js';
2
+ export interface NodeClient {
3
+ connect(config: NetworkConfig): Promise<void>;
4
+ disconnect(): Promise<void>;
5
+ getBlockHeight(): Promise<number>;
6
+ getGenesisHash(): Promise<string>;
7
+ isConnected(): boolean;
8
+ }
9
+ /**
10
+ * Minimal JSON-RPC client for read-only chain status queries
11
+ * (block height, genesis hash, ledger version, contract state).
12
+ * Transaction submission is handled by @midnightntwrk/wallet-sdk-node-client
13
+ * via createMidnightProvider.
14
+ */
15
+ export declare class JsonRpcNodeClient implements NodeClient {
16
+ private nodeUrl;
17
+ private connected;
18
+ connect(config: NetworkConfig): Promise<void>;
19
+ disconnect(): Promise<void>;
20
+ isConnected(): boolean;
21
+ getBlockHeight(): Promise<number>;
22
+ getGenesisHash(): Promise<string>;
23
+ getContractState(address: string): Promise<string | null>;
24
+ getLedgerVersion(): Promise<string>;
25
+ private rpcCall;
26
+ }
27
+ //# sourceMappingURL=node-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-client.d.ts","sourceRoot":"","sources":["../../src/network/node-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAGvD,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,WAAW,IAAI,OAAO,CAAC;CACxB;AAED;;;;;GAKG;AACH,qBAAa,iBAAkB,YAAW,UAAU;IAClD,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,SAAS,CAAS;IAEpB,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAW7C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,WAAW,IAAI,OAAO;IAIhB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAKjC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIjC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQzD,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;YAI3B,OAAO;CAgDtB"}
@@ -0,0 +1,94 @@
1
+ import { NetworkError } from '../types/errors.js';
2
+ /**
3
+ * Minimal JSON-RPC client for read-only chain status queries
4
+ * (block height, genesis hash, ledger version, contract state).
5
+ * Transaction submission is handled by @midnightntwrk/wallet-sdk-node-client
6
+ * via createMidnightProvider.
7
+ */
8
+ export class JsonRpcNodeClient {
9
+ nodeUrl = '';
10
+ connected = false;
11
+ async connect(config) {
12
+ this.nodeUrl = config.nodeUrl.replace('ws://', 'http://').replace('wss://', 'https://');
13
+ // Verify connectivity with a simple RPC call
14
+ try {
15
+ await this.rpcCall('system_health', []);
16
+ this.connected = true;
17
+ }
18
+ catch (err) {
19
+ throw new NetworkError(`Could not connect to node at ${config.nodeUrl}`, err);
20
+ }
21
+ }
22
+ async disconnect() {
23
+ this.connected = false;
24
+ }
25
+ isConnected() {
26
+ return this.connected;
27
+ }
28
+ async getBlockHeight() {
29
+ const header = await this.rpcCall('chain_getHeader', []);
30
+ return parseInt(header.number, 16);
31
+ }
32
+ async getGenesisHash() {
33
+ return this.rpcCall('chain_getBlockHash', [0]);
34
+ }
35
+ async getContractState(address) {
36
+ try {
37
+ return await this.rpcCall('midnight_contractState', [address]);
38
+ }
39
+ catch {
40
+ return null;
41
+ }
42
+ }
43
+ async getLedgerVersion() {
44
+ return this.rpcCall('midnight_ledgerVersion', []);
45
+ }
46
+ async rpcCall(method, params) {
47
+ const controller = new AbortController();
48
+ const timeout = setTimeout(() => controller.abort(), 10_000);
49
+ try {
50
+ const response = await fetch(this.nodeUrl, {
51
+ method: 'POST',
52
+ headers: { 'Content-Type': 'application/json' },
53
+ body: JSON.stringify({
54
+ jsonrpc: '2.0',
55
+ id: 1,
56
+ method,
57
+ params,
58
+ }),
59
+ signal: controller.signal,
60
+ });
61
+ if (!response.ok) {
62
+ throw new NetworkError(`RPC request failed: HTTP ${response.status}`);
63
+ }
64
+ const json = (await response.json());
65
+ // SR-002: Validate RPC response structure before acting on data
66
+ if (typeof json !== 'object' || json === null) {
67
+ throw new NetworkError(`RPC response is not a valid JSON object`);
68
+ }
69
+ if (json.jsonrpc !== '2.0') {
70
+ throw new NetworkError(`RPC response missing jsonrpc 2.0 field`);
71
+ }
72
+ if (json.error) {
73
+ const err = json.error;
74
+ throw new NetworkError(`RPC error: ${err.message ?? 'unknown'}`);
75
+ }
76
+ if (!('result' in json)) {
77
+ throw new NetworkError(`RPC response missing result field for method ${method}`);
78
+ }
79
+ return json.result;
80
+ }
81
+ catch (err) {
82
+ if (err instanceof NetworkError)
83
+ throw err;
84
+ if (err instanceof Error && err.name === 'AbortError') {
85
+ throw new NetworkError(`Connection timeout after 10s to ${this.nodeUrl}`);
86
+ }
87
+ throw new NetworkError(`RPC call failed: ${err}`, err);
88
+ }
89
+ finally {
90
+ clearTimeout(timeout);
91
+ }
92
+ }
93
+ }
94
+ //# sourceMappingURL=node-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-client.js","sourceRoot":"","sources":["../../src/network/node-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAUhD;;;;;GAKG;AACH,MAAM,OAAO,iBAAiB;IACpB,OAAO,GAAG,EAAE,CAAC;IACb,SAAS,GAAG,KAAK,CAAC;IAE1B,KAAK,CAAC,OAAO,CAAC,MAAqB;QACjC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACxF,6CAA6C;QAC7C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,YAAY,CAAC,gCAAgC,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAmB,iBAAiB,EAAE,EAAE,CAAC,CAAC;QAC3E,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAO,IAAI,CAAC,OAAO,CAAS,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAAe;QACpC,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,OAAO,CAAS,wBAAwB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QACzE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,OAAO,IAAI,CAAC,OAAO,CAAS,wBAAwB,EAAE,EAAE,CAAC,CAAC;IAC5D,CAAC;IAEO,KAAK,CAAC,OAAO,CAAI,MAAc,EAAE,MAAiB;QACxD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;QAE7D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE;gBACzC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAC,cAAc,EAAE,kBAAkB,EAAC;gBAC7C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,OAAO,EAAE,KAAK;oBACd,EAAE,EAAE,CAAC;oBACL,MAAM;oBACN,MAAM;iBACP,CAAC;gBACF,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,YAAY,CAAC,4BAA4B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YACxE,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA4B,CAAC;YAEhE,gEAAgE;YAChE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC9C,MAAM,IAAI,YAAY,CAAC,yCAAyC,CAAC,CAAC;YACpE,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,YAAY,CAAC,wCAAwC,CAAC,CAAC;YACnE,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,GAAG,GAAG,IAAI,CAAC,KAA2B,CAAC;gBAC7C,MAAM,IAAI,YAAY,CAAC,cAAc,GAAG,CAAC,OAAO,IAAI,SAAS,EAAE,CAAC,CAAC;YACnE,CAAC;YACD,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,YAAY,CAAC,gDAAgD,MAAM,EAAE,CAAC,CAAC;YACnF,CAAC;YACD,OAAO,IAAI,CAAC,MAAW,CAAC;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,YAAY;gBAAE,MAAM,GAAG,CAAC;YAC3C,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACtD,MAAM,IAAI,YAAY,CAAC,mCAAmC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5E,CAAC;YACD,MAAM,IAAI,YAAY,CAAC,oBAAoB,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;QACzD,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ export interface ProofServerStatus {
2
+ healthy: boolean;
3
+ jobsProcessing: number;
4
+ jobsPending: number;
5
+ jobCapacity: number;
6
+ }
7
+ export declare class ProofClient {
8
+ private readonly url;
9
+ private readonly timeoutMs;
10
+ constructor(url: string, timeoutMs?: number);
11
+ healthCheck(): Promise<ProofServerStatus>;
12
+ ensureReady(): Promise<void>;
13
+ check(preimage: Uint8Array): Promise<(bigint | undefined)[]>;
14
+ }
15
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/proof/client.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,GAAG,EAAE,MAAM,EAAE,SAAS,SAAU;IAKtC,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAoCzC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAe5B,KAAK,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;CA2BnE"}
@@ -0,0 +1,77 @@
1
+ import { ProofError, NetworkError } from '../types/errors.js';
2
+ export class ProofClient {
3
+ url;
4
+ timeoutMs;
5
+ constructor(url, timeoutMs = 300_000) {
6
+ this.url = url;
7
+ this.timeoutMs = timeoutMs;
8
+ }
9
+ async healthCheck() {
10
+ const controller = new AbortController();
11
+ const timeout = setTimeout(() => controller.abort(), 5_000);
12
+ try {
13
+ const response = await fetch(`${this.url}/ready`, {
14
+ signal: controller.signal,
15
+ });
16
+ if (response.status === 503) {
17
+ const json = await response.json();
18
+ return { ...json, healthy: false };
19
+ }
20
+ if (!response.ok) {
21
+ throw new ProofError(`Proof server returned HTTP ${response.status}`);
22
+ }
23
+ const json = await response.json();
24
+ return { ...json, healthy: true };
25
+ }
26
+ catch (err) {
27
+ if (err instanceof ProofError)
28
+ throw err;
29
+ if (err instanceof Error && err.name === 'AbortError') {
30
+ throw new NetworkError(`Proof server not reachable at ${this.url}. Start with: moth proof-server start`);
31
+ }
32
+ throw new NetworkError(`Proof server not reachable at ${this.url}. Start with: moth proof-server start`, err);
33
+ }
34
+ finally {
35
+ clearTimeout(timeout);
36
+ }
37
+ }
38
+ async ensureReady() {
39
+ const status = await this.healthCheck();
40
+ if (!status.healthy) {
41
+ throw new ProofError(`Proof server at ${this.url} is busy (${status.jobsProcessing} jobs processing, ${status.jobsPending} pending)`);
42
+ }
43
+ }
44
+ // The raw `prove()` method (POST of a bare serialized transaction to /prove)
45
+ // is deliberately gone: it predated payload versioning — ledger-v8 rejects
46
+ // the unversioned circuit-call proofs it produced — and all proving now
47
+ // flows through the SDK proof provider (see proof/provider.ts). Removed
48
+ // rather than left exported so the old request format can't be wired back in.
49
+ async check(preimage) {
50
+ const controller = new AbortController();
51
+ const timeout = setTimeout(() => controller.abort(), this.timeoutMs);
52
+ try {
53
+ const response = await fetch(`${this.url}/check`, {
54
+ method: 'POST',
55
+ body: preimage,
56
+ signal: controller.signal,
57
+ });
58
+ if (!response.ok) {
59
+ const text = await response.text();
60
+ throw new ProofError(`Proof check failed: ${text}`);
61
+ }
62
+ const buffer = await response.arrayBuffer();
63
+ // Parse check result — format depends on ledger serialization
64
+ // Placeholder: return raw bytes interpretation
65
+ return [BigInt(new Uint8Array(buffer).length)];
66
+ }
67
+ catch (err) {
68
+ if (err instanceof ProofError)
69
+ throw err;
70
+ throw new ProofError(`Proof check failed: ${err}`, err);
71
+ }
72
+ finally {
73
+ clearTimeout(timeout);
74
+ }
75
+ }
76
+ }
77
+ //# sourceMappingURL=client.js.map