@cogcoin/client 1.1.8 → 1.1.10

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 (295) hide show
  1. package/README.md +1 -1
  2. package/dist/bitcoind/managed-bitcoind-service-config.d.ts +13 -0
  3. package/dist/bitcoind/managed-bitcoind-service-config.js +165 -0
  4. package/dist/bitcoind/managed-bitcoind-service-lifecycle.d.ts +28 -0
  5. package/dist/bitcoind/managed-bitcoind-service-lifecycle.js +290 -0
  6. package/dist/bitcoind/managed-bitcoind-service-process.d.ts +8 -0
  7. package/dist/bitcoind/managed-bitcoind-service-process.js +48 -0
  8. package/dist/bitcoind/managed-bitcoind-service-replica.d.ts +8 -0
  9. package/dist/bitcoind/managed-bitcoind-service-replica.js +142 -0
  10. package/dist/bitcoind/managed-bitcoind-service-status.d.ts +42 -0
  11. package/dist/bitcoind/managed-bitcoind-service-status.js +178 -0
  12. package/dist/bitcoind/managed-bitcoind-service-types.d.ts +36 -0
  13. package/dist/bitcoind/managed-bitcoind-service-types.js +1 -0
  14. package/dist/bitcoind/service.d.ts +7 -63
  15. package/dist/bitcoind/service.js +7 -797
  16. package/dist/cli/commands/mining-read.js +1 -1
  17. package/dist/cli/commands/wallet-mutation/anchor.d.ts +2 -0
  18. package/dist/cli/commands/wallet-mutation/anchor.js +33 -0
  19. package/dist/cli/commands/wallet-mutation/bitcoin-transfer.d.ts +2 -0
  20. package/dist/cli/commands/wallet-mutation/bitcoin-transfer.js +32 -0
  21. package/dist/cli/commands/wallet-mutation/cog.d.ts +2 -0
  22. package/dist/cli/commands/wallet-mutation/cog.js +131 -0
  23. package/dist/cli/commands/wallet-mutation/context.d.ts +3 -0
  24. package/dist/cli/commands/wallet-mutation/context.js +18 -0
  25. package/dist/cli/commands/wallet-mutation/domain-admin.d.ts +2 -0
  26. package/dist/cli/commands/wallet-mutation/domain-admin.js +173 -0
  27. package/dist/cli/commands/wallet-mutation/domain-market.d.ts +2 -0
  28. package/dist/cli/commands/wallet-mutation/domain-market.js +107 -0
  29. package/dist/cli/commands/wallet-mutation/field.d.ts +2 -0
  30. package/dist/cli/commands/wallet-mutation/field.js +125 -0
  31. package/dist/cli/commands/wallet-mutation/register.d.ts +2 -0
  32. package/dist/cli/commands/wallet-mutation/register.js +38 -0
  33. package/dist/cli/commands/wallet-mutation/registry.d.ts +3 -0
  34. package/dist/cli/commands/wallet-mutation/registry.js +39 -0
  35. package/dist/cli/commands/wallet-mutation/reputation.d.ts +2 -0
  36. package/dist/cli/commands/wallet-mutation/reputation.js +57 -0
  37. package/dist/cli/commands/wallet-mutation/types.d.ts +32 -0
  38. package/dist/cli/commands/wallet-mutation/types.js +1 -0
  39. package/dist/cli/commands/wallet-mutation.js +13 -765
  40. package/dist/cli/commands/wallet-read.js +4 -4
  41. package/dist/cli/mutation-success.d.ts +0 -2
  42. package/dist/cli/output/classify.d.ts +7 -0
  43. package/dist/cli/output/classify.js +94 -0
  44. package/dist/cli/output/render.d.ts +2 -0
  45. package/dist/cli/output/render.js +13 -0
  46. package/dist/cli/output/rules/cli-surface.d.ts +2 -0
  47. package/dist/cli/output/rules/cli-surface.js +110 -0
  48. package/dist/cli/output/rules/generic.d.ts +2 -0
  49. package/dist/cli/output/rules/generic.js +13 -0
  50. package/dist/cli/output/rules/index.d.ts +2 -0
  51. package/dist/cli/output/rules/index.js +24 -0
  52. package/dist/cli/output/rules/mining-update.d.ts +2 -0
  53. package/dist/cli/output/rules/mining-update.js +68 -0
  54. package/dist/cli/output/rules/services.d.ts +2 -0
  55. package/dist/cli/output/rules/services.js +110 -0
  56. package/dist/cli/output/rules/wallet-admin.d.ts +2 -0
  57. package/dist/cli/output/rules/wallet-admin.js +224 -0
  58. package/dist/cli/output/rules/wallet-mutations.d.ts +2 -0
  59. package/dist/cli/output/rules/wallet-mutations.js +274 -0
  60. package/dist/cli/output/types.d.ts +16 -0
  61. package/dist/cli/output/types.js +1 -0
  62. package/dist/cli/output.d.ts +2 -168
  63. package/dist/cli/output.js +6 -989
  64. package/dist/cli/pagination.d.ts +15 -0
  65. package/dist/cli/pagination.js +16 -0
  66. package/dist/cli/recommendations.d.ts +4 -0
  67. package/dist/cli/recommendations.js +108 -0
  68. package/dist/cli/wallet-format/availability.d.ts +5 -0
  69. package/dist/cli/wallet-format/availability.js +96 -0
  70. package/dist/cli/wallet-format/balance.d.ts +2 -0
  71. package/dist/cli/wallet-format/balance.js +162 -0
  72. package/dist/cli/wallet-format/domains.d.ts +8 -0
  73. package/dist/cli/wallet-format/domains.js +84 -0
  74. package/dist/cli/wallet-format/fields.d.ts +6 -0
  75. package/dist/cli/wallet-format/fields.js +61 -0
  76. package/dist/cli/wallet-format/identity.d.ts +5 -0
  77. package/dist/cli/wallet-format/identity.js +19 -0
  78. package/dist/cli/wallet-format/locks.d.ts +7 -0
  79. package/dist/cli/wallet-format/locks.js +52 -0
  80. package/dist/cli/wallet-format/overview.d.ts +2 -0
  81. package/dist/cli/wallet-format/overview.js +122 -0
  82. package/dist/cli/wallet-format/pending.d.ts +13 -0
  83. package/dist/cli/wallet-format/pending.js +101 -0
  84. package/dist/cli/wallet-format/shared.d.ts +7 -0
  85. package/dist/cli/wallet-format/shared.js +31 -0
  86. package/dist/cli/wallet-format/status.d.ts +3 -0
  87. package/dist/cli/wallet-format/status.js +27 -0
  88. package/dist/cli/wallet-format.d.ts +8 -30
  89. package/dist/cli/wallet-format.js +8 -830
  90. package/dist/cli/wallet-read-helpers.d.ts +6 -0
  91. package/dist/cli/wallet-read-helpers.js +17 -0
  92. package/dist/wallet/mining/candidate.d.ts +1 -1
  93. package/dist/wallet/mining/candidate.js +3 -3
  94. package/dist/wallet/mining/constants.d.ts +2 -2
  95. package/dist/wallet/mining/constants.js +2 -2
  96. package/dist/wallet/mining/engine-types.d.ts +1 -0
  97. package/dist/wallet/mining/engine-types.js +9 -1
  98. package/dist/wallet/mining/publish.js +3 -6
  99. package/dist/wallet/mining/runner.js +30 -18
  100. package/dist/wallet/mining/sentence-protocol.d.ts +2 -2
  101. package/dist/wallet/mining/sentences.js +8 -8
  102. package/dist/wallet/mining/visualizer.js +7 -6
  103. package/dist/wallet/read/context.d.ts +4 -10
  104. package/dist/wallet/read/context.js +4 -227
  105. package/dist/wallet/read/local-state.d.ts +28 -0
  106. package/dist/wallet/read/local-state.js +233 -0
  107. package/dist/wallet/read/managed-bitcoind.d.ts +30 -0
  108. package/dist/wallet/read/managed-bitcoind.js +138 -0
  109. package/dist/wallet/read/managed-indexer.d.ts +23 -0
  110. package/dist/wallet/read/managed-indexer.js +87 -0
  111. package/dist/wallet/read/managed-services.d.ts +6 -21
  112. package/dist/wallet/read/managed-services.js +23 -196
  113. package/dist/wallet/tx/anchor/confirm.d.ts +15 -0
  114. package/dist/wallet/tx/anchor/confirm.js +60 -0
  115. package/dist/wallet/tx/anchor/draft.d.ts +39 -0
  116. package/dist/wallet/tx/anchor/draft.js +167 -0
  117. package/dist/wallet/tx/anchor/index.d.ts +5 -0
  118. package/dist/wallet/tx/anchor/index.js +148 -0
  119. package/dist/wallet/tx/anchor/intent.d.ts +61 -0
  120. package/dist/wallet/tx/anchor/intent.js +101 -0
  121. package/dist/wallet/tx/anchor/plan.d.ts +3 -0
  122. package/dist/wallet/tx/anchor/plan.js +18 -0
  123. package/dist/wallet/tx/anchor/result.d.ts +25 -0
  124. package/dist/wallet/tx/anchor/result.js +20 -0
  125. package/dist/wallet/tx/anchor.d.ts +1 -39
  126. package/dist/wallet/tx/anchor.js +1 -494
  127. package/dist/wallet/tx/bitcoin-transfer/confirm.d.ts +7 -0
  128. package/dist/wallet/tx/bitcoin-transfer/confirm.js +11 -0
  129. package/dist/wallet/tx/bitcoin-transfer/index.d.ts +5 -0
  130. package/dist/wallet/tx/bitcoin-transfer/index.js +112 -0
  131. package/dist/wallet/tx/bitcoin-transfer/intent.d.ts +52 -0
  132. package/dist/wallet/tx/bitcoin-transfer/intent.js +74 -0
  133. package/dist/wallet/tx/bitcoin-transfer/plan.d.ts +5 -0
  134. package/dist/wallet/tx/bitcoin-transfer/plan.js +21 -0
  135. package/dist/wallet/tx/bitcoin-transfer/result.d.ts +19 -0
  136. package/dist/wallet/tx/bitcoin-transfer/result.js +16 -0
  137. package/dist/wallet/tx/bitcoin-transfer.d.ts +1 -35
  138. package/dist/wallet/tx/bitcoin-transfer.js +1 -200
  139. package/dist/wallet/tx/cog/confirm.d.ts +13 -0
  140. package/dist/wallet/tx/cog/confirm.js +59 -0
  141. package/dist/wallet/tx/cog/draft.d.ts +20 -0
  142. package/dist/wallet/tx/cog/draft.js +114 -0
  143. package/dist/wallet/tx/cog/index.d.ts +6 -0
  144. package/dist/wallet/tx/cog/index.js +117 -0
  145. package/dist/wallet/tx/cog/intent.d.ts +30 -0
  146. package/dist/wallet/tx/cog/intent.js +169 -0
  147. package/dist/wallet/tx/cog/plan.d.ts +19 -0
  148. package/dist/wallet/tx/cog/plan.js +65 -0
  149. package/dist/wallet/tx/cog/result.d.ts +27 -0
  150. package/dist/wallet/tx/cog/result.js +28 -0
  151. package/dist/wallet/tx/cog/types.d.ts +186 -0
  152. package/dist/wallet/tx/cog/types.js +2 -0
  153. package/dist/wallet/tx/cog/variants/claim.d.ts +3 -0
  154. package/dist/wallet/tx/cog/variants/claim.js +92 -0
  155. package/dist/wallet/tx/cog/variants/lock.d.ts +2 -0
  156. package/dist/wallet/tx/cog/variants/lock.js +102 -0
  157. package/dist/wallet/tx/cog/variants/send.d.ts +2 -0
  158. package/dist/wallet/tx/cog/variants/send.js +77 -0
  159. package/dist/wallet/tx/cog.d.ts +1 -96
  160. package/dist/wallet/tx/cog.js +1 -824
  161. package/dist/wallet/tx/common.d.ts +14 -199
  162. package/dist/wallet/tx/common.js +10 -493
  163. package/dist/wallet/tx/domain-admin/confirm.d.ts +17 -0
  164. package/dist/wallet/tx/domain-admin/confirm.js +58 -0
  165. package/dist/wallet/tx/domain-admin/draft.d.ts +20 -0
  166. package/dist/wallet/tx/domain-admin/draft.js +161 -0
  167. package/dist/wallet/tx/domain-admin/index.d.ts +9 -0
  168. package/dist/wallet/tx/domain-admin/index.js +150 -0
  169. package/dist/wallet/tx/domain-admin/intent.d.ts +12 -0
  170. package/dist/wallet/tx/domain-admin/intent.js +61 -0
  171. package/dist/wallet/tx/domain-admin/plan.d.ts +19 -0
  172. package/dist/wallet/tx/domain-admin/plan.js +64 -0
  173. package/dist/wallet/tx/domain-admin/result.d.ts +19 -0
  174. package/dist/wallet/tx/domain-admin/result.js +33 -0
  175. package/dist/wallet/tx/domain-admin/types.d.ts +162 -0
  176. package/dist/wallet/tx/domain-admin/types.js +1 -0
  177. package/dist/wallet/tx/domain-admin/variants/canonical.d.ts +2 -0
  178. package/dist/wallet/tx/domain-admin/variants/canonical.js +22 -0
  179. package/dist/wallet/tx/domain-admin/variants/delegate.d.ts +3 -0
  180. package/dist/wallet/tx/domain-admin/variants/delegate.js +60 -0
  181. package/dist/wallet/tx/domain-admin/variants/endpoint.d.ts +3 -0
  182. package/dist/wallet/tx/domain-admin/variants/endpoint.js +102 -0
  183. package/dist/wallet/tx/domain-admin/variants/miner.d.ts +3 -0
  184. package/dist/wallet/tx/domain-admin/variants/miner.js +59 -0
  185. package/dist/wallet/tx/domain-admin.d.ts +1 -107
  186. package/dist/wallet/tx/domain-admin.js +1 -729
  187. package/dist/wallet/tx/domain-market/confirm.d.ts +6 -0
  188. package/dist/wallet/tx/domain-market/confirm.js +52 -0
  189. package/dist/wallet/tx/domain-market/draft.d.ts +43 -0
  190. package/dist/wallet/tx/domain-market/draft.js +286 -0
  191. package/dist/wallet/tx/domain-market/index.d.ts +6 -0
  192. package/dist/wallet/tx/domain-market/index.js +145 -0
  193. package/dist/wallet/tx/domain-market/intent.d.ts +15 -0
  194. package/dist/wallet/tx/domain-market/intent.js +131 -0
  195. package/dist/wallet/tx/domain-market/plan.d.ts +31 -0
  196. package/dist/wallet/tx/domain-market/plan.js +98 -0
  197. package/dist/wallet/tx/domain-market/result.d.ts +45 -0
  198. package/dist/wallet/tx/domain-market/result.js +88 -0
  199. package/dist/wallet/tx/domain-market/types.d.ts +221 -0
  200. package/dist/wallet/tx/domain-market/types.js +1 -0
  201. package/dist/wallet/tx/domain-market/variants/buy.d.ts +2 -0
  202. package/dist/wallet/tx/domain-market/variants/buy.js +103 -0
  203. package/dist/wallet/tx/domain-market/variants/sell.d.ts +2 -0
  204. package/dist/wallet/tx/domain-market/variants/sell.js +91 -0
  205. package/dist/wallet/tx/domain-market/variants/transfer.d.ts +2 -0
  206. package/dist/wallet/tx/domain-market/variants/transfer.js +105 -0
  207. package/dist/wallet/tx/domain-market.d.ts +1 -116
  208. package/dist/wallet/tx/domain-market.js +1 -1078
  209. package/dist/wallet/tx/draft-build.d.ts +60 -0
  210. package/dist/wallet/tx/draft-build.js +127 -0
  211. package/dist/wallet/tx/executor.d.ts +6 -40
  212. package/dist/wallet/tx/executor.js +6 -100
  213. package/dist/wallet/tx/fee.d.ts +30 -0
  214. package/dist/wallet/tx/fee.js +98 -0
  215. package/dist/wallet/tx/field/confirm.d.ts +11 -0
  216. package/dist/wallet/tx/field/confirm.js +19 -0
  217. package/dist/wallet/tx/field/draft.d.ts +23 -0
  218. package/dist/wallet/tx/field/draft.js +202 -0
  219. package/dist/wallet/tx/field/index.d.ts +5 -0
  220. package/dist/wallet/tx/field/index.js +140 -0
  221. package/dist/wallet/tx/field/intent.d.ts +5 -0
  222. package/dist/wallet/tx/field/intent.js +50 -0
  223. package/dist/wallet/tx/field/plan.d.ts +20 -0
  224. package/dist/wallet/tx/field/plan.js +65 -0
  225. package/dist/wallet/tx/field/result.d.ts +29 -0
  226. package/dist/wallet/tx/field/result.js +103 -0
  227. package/dist/wallet/tx/field/types.d.ts +163 -0
  228. package/dist/wallet/tx/field/types.js +1 -0
  229. package/dist/wallet/tx/field/variants/clear.d.ts +2 -0
  230. package/dist/wallet/tx/field/variants/clear.js +60 -0
  231. package/dist/wallet/tx/field/variants/create.d.ts +2 -0
  232. package/dist/wallet/tx/field/variants/create.js +67 -0
  233. package/dist/wallet/tx/field/variants/set.d.ts +2 -0
  234. package/dist/wallet/tx/field/variants/set.js +195 -0
  235. package/dist/wallet/tx/field.d.ts +1 -95
  236. package/dist/wallet/tx/field.js +1 -920
  237. package/dist/wallet/tx/mining-preemption.d.ts +6 -0
  238. package/dist/wallet/tx/mining-preemption.js +7 -0
  239. package/dist/wallet/tx/primitives.d.ts +13 -0
  240. package/dist/wallet/tx/primitives.js +42 -0
  241. package/dist/wallet/tx/psbt-assert.d.ts +14 -0
  242. package/dist/wallet/tx/psbt-assert.js +39 -0
  243. package/dist/wallet/tx/publish.d.ts +37 -0
  244. package/dist/wallet/tx/publish.js +88 -0
  245. package/dist/wallet/tx/readiness.d.ts +7 -0
  246. package/dist/wallet/tx/readiness.js +61 -0
  247. package/dist/wallet/tx/reconcile.d.ts +24 -0
  248. package/dist/wallet/tx/reconcile.js +72 -0
  249. package/dist/wallet/tx/register/confirm.d.ts +6 -0
  250. package/dist/wallet/tx/register/confirm.js +66 -0
  251. package/dist/wallet/tx/register/draft.d.ts +42 -0
  252. package/dist/wallet/tx/register/draft.js +181 -0
  253. package/dist/wallet/tx/register/index.d.ts +6 -0
  254. package/dist/wallet/tx/register/index.js +158 -0
  255. package/dist/wallet/tx/register/intent.d.ts +74 -0
  256. package/dist/wallet/tx/register/intent.js +119 -0
  257. package/dist/wallet/tx/register/plan.d.ts +43 -0
  258. package/dist/wallet/tx/register/plan.js +168 -0
  259. package/dist/wallet/tx/register/result.d.ts +78 -0
  260. package/dist/wallet/tx/register/result.js +41 -0
  261. package/dist/wallet/tx/register.d.ts +1 -70
  262. package/dist/wallet/tx/register.js +1 -681
  263. package/dist/wallet/tx/reputation/confirm.d.ts +11 -0
  264. package/dist/wallet/tx/reputation/confirm.js +51 -0
  265. package/dist/wallet/tx/reputation/draft.d.ts +20 -0
  266. package/dist/wallet/tx/reputation/draft.js +130 -0
  267. package/dist/wallet/tx/reputation/index.d.ts +4 -0
  268. package/dist/wallet/tx/reputation/index.js +162 -0
  269. package/dist/wallet/tx/reputation/intent.d.ts +36 -0
  270. package/dist/wallet/tx/reputation/intent.js +157 -0
  271. package/dist/wallet/tx/reputation/plan.d.ts +19 -0
  272. package/dist/wallet/tx/reputation/plan.js +64 -0
  273. package/dist/wallet/tx/reputation/result.d.ts +21 -0
  274. package/dist/wallet/tx/reputation/result.js +31 -0
  275. package/dist/wallet/tx/reputation/types.d.ts +130 -0
  276. package/dist/wallet/tx/reputation/types.js +1 -0
  277. package/dist/wallet/tx/reputation.d.ts +1 -74
  278. package/dist/wallet/tx/reputation.js +1 -556
  279. package/dist/wallet/tx/signing.d.ts +18 -0
  280. package/dist/wallet/tx/signing.js +31 -0
  281. package/dist/wallet/tx/state-persist.d.ts +27 -0
  282. package/dist/wallet/tx/state-persist.js +54 -0
  283. package/dist/wallet/tx/types.d.ts +44 -0
  284. package/dist/wallet/tx/types.js +1 -0
  285. package/package.json +1 -1
  286. package/dist/cli/mining-json.d.ts +0 -20
  287. package/dist/cli/mining-json.js +0 -46
  288. package/dist/cli/mutation-json.d.ts +0 -325
  289. package/dist/cli/mutation-json.js +0 -269
  290. package/dist/cli/mutation-resolved-json.d.ts +0 -117
  291. package/dist/cli/mutation-resolved-json.js +0 -123
  292. package/dist/cli/preview-json.d.ts +0 -319
  293. package/dist/cli/preview-json.js +0 -254
  294. package/dist/cli/read-json.d.ts +0 -190
  295. package/dist/cli/read-json.js +0 -627
@@ -1,627 +0,0 @@
1
- import { getBalance } from "@cogcoin/indexer/queries";
2
- import { findDomainField, findWalletDomain, listDomainFields, listWalletLocks, } from "../wallet/read/index.js";
3
- import { getAddressNextSteps, getBootstrapSyncNextStep, getFundingQuickstartGuidance, getIdsNextSteps, getLocksNextSteps, } from "./workflow-hints.js";
4
- import { getClientUnlockRecommendation, getMutationRecommendation, getRepairRecommendation, } from "./wallet-format.js";
5
- function decimalOrNull(value) {
6
- return value === null || value === undefined ? null : value.toString();
7
- }
8
- function nonEmptyMessage(value) {
9
- return value === null || value === undefined || value.length === 0 ? null : value;
10
- }
11
- function isBitcoindAvailable(health) {
12
- return health === "ready" || health === "starting";
13
- }
14
- function createBaseMessages(context) {
15
- const warnings = [];
16
- const explanations = [];
17
- const nextSteps = [];
18
- if (context.localState.availability !== "ready") {
19
- warnings.push(`Wallet state is ${context.localState.availability}.`);
20
- }
21
- if (context.nodeHealth !== "synced") {
22
- warnings.push(`Bitcoin publishability is ${context.nodeHealth}.`);
23
- }
24
- if (context.bitcoind.health !== "ready") {
25
- warnings.push(`Managed bitcoind is ${context.bitcoind.health}.`);
26
- }
27
- if (context.indexer.health !== "synced") {
28
- warnings.push(`Indexer service is ${context.indexer.health}.`);
29
- }
30
- const repairRecommendation = getRepairRecommendation(context);
31
- if (repairRecommendation !== null) {
32
- nextSteps.push(repairRecommendation);
33
- }
34
- const clientUnlockRecommendation = repairRecommendation === null
35
- ? getClientUnlockRecommendation(context)
36
- : null;
37
- if (clientUnlockRecommendation !== null) {
38
- nextSteps.push(clientUnlockRecommendation);
39
- }
40
- if (repairRecommendation === null && clientUnlockRecommendation === null) {
41
- const bootstrapSync = getBootstrapSyncNextStep(context);
42
- if (bootstrapSync !== null) {
43
- nextSteps.push(bootstrapSync);
44
- }
45
- }
46
- const mutationRecommendation = getMutationRecommendation(context);
47
- if (mutationRecommendation !== null) {
48
- nextSteps.push(mutationRecommendation);
49
- }
50
- const localMessage = nonEmptyMessage(context.localState.message);
51
- if (localMessage !== null) {
52
- explanations.push(localMessage);
53
- }
54
- const nodeMessage = nonEmptyMessage(context.nodeMessage);
55
- if (nodeMessage !== null) {
56
- explanations.push(nodeMessage);
57
- }
58
- const bitcoindMessage = nonEmptyMessage(context.bitcoind.message);
59
- if (bitcoindMessage !== null) {
60
- explanations.push(bitcoindMessage);
61
- }
62
- const indexerMessage = nonEmptyMessage(context.indexer.message);
63
- if (indexerMessage !== null) {
64
- explanations.push(indexerMessage);
65
- }
66
- if (context.mining?.runtime.note !== null && context.mining?.runtime.note !== undefined) {
67
- explanations.push(context.mining.runtime.note);
68
- }
69
- return {
70
- warnings: dedupeStrings(warnings),
71
- explanations: dedupeStrings(explanations),
72
- nextSteps: dedupeStrings(nextSteps),
73
- };
74
- }
75
- function dedupeStrings(values) {
76
- return [...new Set(values.filter((value) => value.length > 0))];
77
- }
78
- export function buildAvailability(context) {
79
- const availability = {
80
- wallet: {
81
- available: context.localState.availability === "ready",
82
- stale: false,
83
- reason: context.localState.message,
84
- state: context.localState.availability,
85
- },
86
- bitcoind: {
87
- available: isBitcoindAvailable(context.bitcoind.health),
88
- stale: context.bitcoind.health === "starting",
89
- reason: context.bitcoind.message,
90
- state: context.bitcoind.health,
91
- publishState: context.nodeHealth,
92
- replicaStatus: context.nodeStatus?.walletReplica?.proofStatus ?? context.bitcoind.status?.walletReplica?.proofStatus ?? null,
93
- serviceApiVersion: context.bitcoind.status?.serviceApiVersion ?? null,
94
- binaryVersion: context.bitcoind.status?.binaryVersion ?? null,
95
- buildId: context.bitcoind.status?.buildId ?? null,
96
- serviceInstanceId: context.bitcoind.status?.serviceInstanceId ?? null,
97
- processId: context.bitcoind.status?.processId ?? null,
98
- walletRootId: context.bitcoind.status?.walletRootId ?? context.nodeStatus?.walletRootId ?? null,
99
- chain: context.bitcoind.status?.chain ?? context.nodeStatus?.chain ?? null,
100
- dataDir: context.bitcoind.status?.dataDir ?? context.dataDir,
101
- runtimeRoot: context.bitcoind.status?.runtimeRoot ?? null,
102
- startedAtUnixMs: context.bitcoind.status?.startedAtUnixMs ?? null,
103
- heartbeatAtUnixMs: context.bitcoind.status?.heartbeatAtUnixMs ?? null,
104
- updatedAtUnixMs: context.bitcoind.status?.updatedAtUnixMs ?? null,
105
- lastError: context.bitcoind.status?.lastError ?? null,
106
- coreBestHeight: context.nodeStatus?.nodeBestHeight ?? null,
107
- coreBestHash: context.nodeStatus?.nodeBestHashHex ?? null,
108
- },
109
- indexer: {
110
- available: context.indexer.health !== "unavailable"
111
- && context.indexer.health !== "failed"
112
- && context.indexer.health !== "schema-mismatch"
113
- && context.indexer.health !== "service-version-mismatch"
114
- && context.indexer.health !== "wallet-root-mismatch",
115
- stale: context.indexer.health === "stale-heartbeat"
116
- || context.indexer.health === "catching-up"
117
- || context.indexer.health === "reorging"
118
- || context.indexer.health === "starting",
119
- reason: context.indexer.message,
120
- state: context.indexer.health,
121
- source: context.indexer.source ?? (context.indexer.status === null ? "none" : "probe"),
122
- serviceApiVersion: context.indexer.status?.serviceApiVersion ?? null,
123
- binaryVersion: context.indexer.status?.binaryVersion ?? null,
124
- buildId: context.indexer.status?.buildId ?? null,
125
- schemaVersion: context.indexer.status?.schemaVersion ?? null,
126
- daemonInstanceId: context.indexer.daemonInstanceId ?? context.indexer.status?.daemonInstanceId ?? null,
127
- processId: context.indexer.status?.processId ?? null,
128
- walletRootId: context.indexer.status?.walletRootId ?? null,
129
- startedAtUnixMs: context.indexer.status?.startedAtUnixMs ?? null,
130
- updatedAtUnixMs: context.indexer.status?.updatedAtUnixMs ?? null,
131
- snapshotSeq: context.indexer.snapshotSeq ?? context.indexer.status?.snapshotSeq ?? null,
132
- openedAtUnixMs: context.indexer.openedAtUnixMs,
133
- heartbeatAtUnixMs: context.indexer.status?.heartbeatAtUnixMs ?? null,
134
- activeSnapshotCount: context.indexer.status?.activeSnapshotCount ?? null,
135
- backlogBlocks: context.indexer.status?.backlogBlocks ?? null,
136
- reorgDepth: context.indexer.status?.reorgDepth ?? null,
137
- lastError: context.indexer.status?.lastError ?? null,
138
- appliedTipHeight: context.indexer.snapshotTip?.height ?? context.indexer.status?.appliedTipHeight ?? null,
139
- appliedTipHash: context.indexer.snapshotTip?.blockHashHex ?? context.indexer.status?.appliedTipHash ?? null,
140
- coreBestHeight: context.nodeStatus?.nodeBestHeight ?? context.indexer.status?.coreBestHeight ?? null,
141
- coreBestHash: context.nodeStatus?.nodeBestHashHex ?? context.indexer.status?.coreBestHash ?? null,
142
- },
143
- };
144
- if (context.mining !== undefined) {
145
- availability.backgroundWorker = {
146
- available: context.mining.runtime.backgroundWorkerPid !== null,
147
- stale: context.mining.runtime.backgroundWorkerHealth === "stale-heartbeat"
148
- || context.mining.runtime.backgroundWorkerHealth === "stale-pid"
149
- || context.mining.runtime.backgroundWorkerHealth === "version-mismatch",
150
- reason: context.mining.runtime.note,
151
- state: context.mining.runtime.backgroundWorkerHealth,
152
- };
153
- }
154
- return availability;
155
- }
156
- function walletCogBalance(context) {
157
- if (context.snapshot === null || context.model === null) {
158
- return null;
159
- }
160
- return getBalance(context.snapshot.state, new Uint8Array(Buffer.from(context.model.walletScriptPubKeyHex, "hex")));
161
- }
162
- function mapWalletAddress(context) {
163
- const localDomains = context.model === null
164
- ? []
165
- : context.model.domains
166
- .filter((domain) => domain.localRelationship === "local")
167
- .map((domain) => domain.name)
168
- .sort((left, right) => left.localeCompare(right));
169
- return {
170
- address: context.model?.walletAddress ?? null,
171
- scriptPubKeyHex: context.model?.walletScriptPubKeyHex ?? null,
172
- localDomains,
173
- observedCogBalance: decimalOrNull(walletCogBalance(context)),
174
- };
175
- }
176
- function mapDomain(domain) {
177
- return {
178
- name: domain.name,
179
- domainId: domain.domainId,
180
- anchored: domain.anchored,
181
- ownerScriptPubKeyHex: domain.ownerScriptPubKeyHex,
182
- ownerAddress: domain.ownerAddress,
183
- localRelationship: domain.localRelationship,
184
- chainStatus: domain.chainStatus,
185
- foundingMessageText: domain.foundingMessageText,
186
- endpointText: domain.endpointText,
187
- delegateScriptPubKeyHex: domain.delegateScriptPubKeyHex,
188
- minerScriptPubKeyHex: domain.minerScriptPubKeyHex,
189
- fieldCount: domain.fieldCount,
190
- listingPriceCogtoshi: decimalOrNull(domain.listingPriceCogtoshi),
191
- activeLockCount: domain.activeLockCount,
192
- selfStakeCogtoshi: decimalOrNull(domain.selfStakeCogtoshi),
193
- supportedStakeCogtoshi: decimalOrNull(domain.supportedStakeCogtoshi),
194
- totalSupportedCogtoshi: decimalOrNull(domain.totalSupportedCogtoshi),
195
- totalRevokedCogtoshi: decimalOrNull(domain.totalRevokedCogtoshi),
196
- readOnly: domain.readOnly,
197
- };
198
- }
199
- function mapField(field) {
200
- return {
201
- domainName: field.domainName,
202
- domainId: field.domainId,
203
- fieldId: field.fieldId,
204
- name: field.name,
205
- permanent: field.permanent,
206
- hasValue: field.hasValue,
207
- format: field.format,
208
- preview: field.preview,
209
- rawValueHex: field.rawValueHex,
210
- };
211
- }
212
- function mapLock(lock) {
213
- return {
214
- lockId: lock.lockId,
215
- status: lock.status,
216
- amountCogtoshi: lock.amountCogtoshi.toString(),
217
- timeoutHeight: lock.timeoutHeight,
218
- lockerScriptPubKeyHex: lock.lockerScriptPubKeyHex,
219
- lockerLocalIndex: lock.lockerLocalIndex,
220
- recipientDomainId: lock.recipientDomainId,
221
- recipientDomainName: lock.recipientDomainName,
222
- recipientLocal: lock.recipientLocal,
223
- claimableNow: lock.claimableNow,
224
- reclaimableNow: lock.reclaimableNow,
225
- };
226
- }
227
- function listPendingMutationsForDomain(context, domainName) {
228
- return (context.localState.state?.pendingMutations ?? [])
229
- .filter((mutation) => (mutation.domainName === domainName || mutation.recipientDomainName === domainName)
230
- && mutation.status !== "confirmed"
231
- && mutation.status !== "canceled");
232
- }
233
- function mapPendingMutation(mutation) {
234
- return {
235
- kind: mutation.kind,
236
- domainName: mutation.domainName,
237
- recipientDomainName: mutation.recipientDomainName ?? null,
238
- fieldName: mutation.fieldName ?? null,
239
- status: mutation.status,
240
- senderScriptPubKeyHex: mutation.senderScriptPubKeyHex,
241
- recipientScriptPubKeyHex: mutation.recipientScriptPubKeyHex ?? null,
242
- amountCogtoshi: decimalOrNull(mutation.amountCogtoshi),
243
- priceCogtoshi: decimalOrNull(mutation.priceCogtoshi),
244
- lockId: mutation.lockId ?? null,
245
- txid: mutation.attemptedTxid ?? null,
246
- wtxid: mutation.attemptedWtxid ?? null,
247
- reviewPresent: mutation.reviewPayloadHex !== null && mutation.reviewPayloadHex !== undefined,
248
- };
249
- }
250
- function buildMiningStatusData(mining) {
251
- return {
252
- runMode: mining.runtime.runMode,
253
- state: mining.runtime.miningState,
254
- bitcoindHealth: mining.runtime.bitcoindHealth,
255
- bitcoindServiceState: mining.runtime.bitcoindServiceState,
256
- managedCoreReplicaStatus: mining.runtime.bitcoindReplicaStatus,
257
- publishHealth: mining.runtime.nodeHealth,
258
- indexerHealth: mining.runtime.indexerHealth,
259
- indexerDaemonState: mining.runtime.indexerDaemonState,
260
- indexerTruthSource: mining.runtime.indexerTruthSource,
261
- indexerDaemonInstanceId: mining.runtime.indexerDaemonInstanceId,
262
- indexerSnapshotSeq: mining.runtime.indexerSnapshotSeq,
263
- indexerSnapshotOpenedAtUnixMs: mining.runtime.indexerSnapshotOpenedAtUnixMs,
264
- indexerReorgDepth: mining.runtime.indexerReorgDepth,
265
- tipHeight: mining.runtime.indexerTipHeight ?? mining.runtime.coreBestHeight,
266
- referencedBlockHashDisplay: mining.runtime.referencedBlockHashDisplay,
267
- currentDomain: mining.runtime.currentDomainName === null && mining.runtime.currentDomainId === null
268
- ? null
269
- : {
270
- domainId: mining.runtime.currentDomainId,
271
- name: mining.runtime.currentDomainName,
272
- },
273
- livePublishInMempool: mining.runtime.livePublishInMempool,
274
- publishDecision: mining.runtime.currentPublishDecision,
275
- fees: {
276
- currentFeeRateSatVb: mining.runtime.currentFeeRateSatVb,
277
- currentAbsoluteFeeSats: mining.runtime.currentAbsoluteFeeSats === null ? null : String(mining.runtime.currentAbsoluteFeeSats),
278
- currentBlockFeeSpentSats: mining.runtime.currentBlockFeeSpentSats,
279
- sessionFeeSpentSats: mining.runtime.sessionFeeSpentSats,
280
- lifetimeFeeSpentSats: mining.runtime.lifetimeFeeSpentSats,
281
- },
282
- worker: {
283
- pid: mining.runtime.backgroundWorkerPid,
284
- runId: mining.runtime.backgroundWorkerRunId,
285
- heartbeatAtUnixMs: mining.runtime.backgroundWorkerHeartbeatAtUnixMs,
286
- health: mining.runtime.backgroundWorkerHealth,
287
- },
288
- phase: mining.runtime.currentPhase,
289
- lastSuspendDetectedAtUnixMs: mining.runtime.lastSuspendDetectedAtUnixMs,
290
- pauseReason: mining.runtime.pauseReason,
291
- provider: {
292
- configured: mining.provider.configured,
293
- kind: mining.provider.provider,
294
- modelId: mining.provider.modelId,
295
- effectiveModel: mining.provider.effectiveModel,
296
- modelOverride: mining.provider.modelOverride,
297
- modelSelectionSource: mining.provider.modelSelectionSource,
298
- usingDefaultModel: mining.provider.usingDefaultModel,
299
- extraPromptConfigured: mining.provider.extraPromptConfigured,
300
- estimatedDailyCostUsd: mining.provider.estimatedDailyCostUsd,
301
- estimatedDailyCostDisplay: mining.provider.estimatedDailyCostDisplay,
302
- },
303
- providerState: mining.runtime.providerState,
304
- tipsAligned: mining.runtime.tipsAligned,
305
- sameDomainCompetitorSuppressed: mining.runtime.sameDomainCompetitorSuppressed,
306
- higherRankedCompetitorDomainCount: mining.runtime.higherRankedCompetitorDomainCount,
307
- dedupedCompetitorDomainCount: mining.runtime.dedupedCompetitorDomainCount,
308
- competitivenessGateIndeterminate: mining.runtime.competitivenessGateIndeterminate,
309
- mempoolSequenceCacheStatus: mining.runtime.mempoolSequenceCacheStatus,
310
- note: mining.runtime.note,
311
- };
312
- }
313
- export function buildStatusJson(context) {
314
- const messages = createBaseMessages(context);
315
- return {
316
- ...messages,
317
- data: {
318
- wallet: {
319
- availability: context.localState.availability,
320
- walletRootId: context.model?.walletRootId ?? context.localState.walletRootId ?? context.nodeStatus?.walletRootId ?? null,
321
- managedCoreReplicaStatus: context.nodeStatus?.walletReplica?.proofStatus ?? null,
322
- },
323
- btc: {
324
- serviceHealth: context.nodeHealth,
325
- managedServiceHealth: context.bitcoind.health,
326
- managedServiceState: context.bitcoind.status?.state ?? null,
327
- managedCoreReplicaStatus: context.nodeStatus?.walletReplica?.proofStatus ?? null,
328
- bestHeight: context.nodeStatus?.nodeBestHeight ?? null,
329
- bestHashHex: context.nodeStatus?.nodeBestHashHex ?? null,
330
- headerHeight: context.nodeStatus?.nodeHeaderHeight ?? null,
331
- },
332
- cog: {
333
- indexerHealth: context.indexer.health,
334
- indexerDaemonState: context.indexer.status?.state ?? null,
335
- indexerTruthSource: context.indexer.source ?? (context.indexer.status === null ? "none" : "probe"),
336
- indexerDaemonInstanceId: context.indexer.daemonInstanceId ?? context.indexer.status?.daemonInstanceId ?? null,
337
- indexerSnapshotSeq: context.indexer.snapshotSeq ?? context.indexer.status?.snapshotSeq ?? null,
338
- indexerSnapshotOpenedAtUnixMs: context.indexer.openedAtUnixMs,
339
- reorgDepth: context.indexer.status?.reorgDepth ?? null,
340
- tipHeight: context.indexer.snapshotTip?.height ?? null,
341
- tipHashHex: context.indexer.snapshotTip?.blockHashHex ?? null,
342
- },
343
- domains: {
344
- relatedCount: context.model?.domains.length ?? null,
345
- readOnlyIdentityCount: 0,
346
- pendingMutationCount: (context.localState.state?.pendingMutations ?? []).filter((mutation) => mutation.status !== "confirmed" && mutation.status !== "canceled").length ?? null,
347
- pendingFamilyCount: 0,
348
- },
349
- mining: context.mining === undefined ? null : buildMiningStatusData(context.mining),
350
- availability: buildAvailability(context),
351
- },
352
- };
353
- }
354
- export function buildAddressJson(context) {
355
- const messages = createBaseMessages(context);
356
- return {
357
- ...messages,
358
- explanations: dedupeStrings([
359
- ...messages.explanations,
360
- ...(context.model?.walletAddress == null ? [] : [getFundingQuickstartGuidance()]),
361
- ]),
362
- nextSteps: dedupeStrings([
363
- ...messages.nextSteps,
364
- ...getAddressNextSteps(context, context.model?.walletAddress ?? null),
365
- ]),
366
- data: {
367
- address: context.model?.walletAddress ?? null,
368
- scriptPubKeyHex: context.model?.walletScriptPubKeyHex ?? null,
369
- network: context.localState.state?.network ?? context.nodeStatus?.chain ?? null,
370
- availability: buildAvailability(context),
371
- },
372
- };
373
- }
374
- export function buildIdsJson(context, page) {
375
- const messages = createBaseMessages(context);
376
- return {
377
- ...messages,
378
- nextSteps: dedupeStrings([
379
- ...messages.nextSteps,
380
- ...getIdsNextSteps(context.model?.walletAddress ?? null),
381
- ]),
382
- data: {
383
- addresses: context.model === null ? null : [mapWalletAddress(context)],
384
- page,
385
- availability: buildAvailability(context),
386
- },
387
- };
388
- }
389
- export function buildWalletStatusJson(context) {
390
- const messages = createBaseMessages(context);
391
- return {
392
- ...messages,
393
- data: {
394
- availability: context.localState.availability,
395
- walletAddress: context.model?.walletAddress ?? null,
396
- walletScriptPubKeyHex: context.model?.walletScriptPubKeyHex ?? null,
397
- services: buildAvailability(context),
398
- },
399
- };
400
- }
401
- export function buildMineStatusJson(mining) {
402
- const warnings = [];
403
- const explanations = [];
404
- const nextSteps = [];
405
- if (mining.runtime.miningState === "repair-required") {
406
- nextSteps.push("Run `cogcoin repair` before mining again.");
407
- }
408
- else if (mining.runtime.providerState === "not-found") {
409
- nextSteps.push(mining.provider.usingDefaultModel === false
410
- ? "Run `cogcoin mine setup` and clear or correct the provider model."
411
- : "Run `cogcoin mine setup` and choose a valid provider model.");
412
- }
413
- else if (mining.runtime.currentPublishDecision === "publish-paused-insufficient-funds") {
414
- nextSteps.push("Wait for enough safe BTC funding to become spendable for the next publish; mining resumes automatically.");
415
- }
416
- else if (mining.runtime.pauseReason === "zero-reward") {
417
- nextSteps.push("Wait for the next positive-reward target height; mining resumes automatically.");
418
- }
419
- else if (mining.runtime.currentPhase === "resuming") {
420
- nextSteps.push("Wait for mining to finish rechecking health after the local runtime resumed.");
421
- }
422
- else if (mining.runtime.miningState === "paused-stale" || mining.runtime.miningState === "paused") {
423
- nextSteps.push("Wait for the live mining publish to settle, or rerun mining when you want replacements to resume.");
424
- }
425
- if (mining.runtime.note !== null) {
426
- explanations.push(mining.runtime.note);
427
- }
428
- if (mining.runtime.lastError !== null) {
429
- warnings.push(mining.runtime.lastError);
430
- }
431
- return {
432
- warnings: dedupeStrings(warnings),
433
- explanations: dedupeStrings(explanations),
434
- nextSteps: dedupeStrings(nextSteps),
435
- data: {
436
- ...buildMiningStatusData(mining),
437
- availability: {
438
- bitcoind: {
439
- available: mining.runtime.bitcoindHealth === "ready" || mining.runtime.bitcoindHealth === "starting",
440
- stale: mining.runtime.bitcoindHealth === "starting",
441
- reason: mining.runtime.note,
442
- state: mining.runtime.bitcoindHealth,
443
- publishState: mining.runtime.nodeHealth,
444
- replicaStatus: mining.runtime.bitcoindReplicaStatus,
445
- coreBestHeight: mining.runtime.coreBestHeight,
446
- coreBestHash: mining.runtime.coreBestHash,
447
- },
448
- indexer: {
449
- available: mining.runtime.indexerHealth !== "unavailable"
450
- && mining.runtime.indexerHealth !== "failed"
451
- && mining.runtime.indexerHealth !== "schema-mismatch"
452
- && mining.runtime.indexerHealth !== "service-version-mismatch"
453
- && mining.runtime.indexerHealth !== "wallet-root-mismatch",
454
- stale: mining.runtime.indexerHealth === "stale-heartbeat"
455
- || mining.runtime.indexerHealth === "catching-up"
456
- || mining.runtime.indexerHealth === "reorging"
457
- || mining.runtime.indexerHealth === "starting",
458
- reason: mining.runtime.note,
459
- state: mining.runtime.indexerHealth,
460
- source: mining.runtime.indexerTruthSource,
461
- daemonInstanceId: mining.runtime.indexerDaemonInstanceId,
462
- snapshotSeq: mining.runtime.indexerSnapshotSeq,
463
- openedAtUnixMs: mining.runtime.indexerSnapshotOpenedAtUnixMs,
464
- reorgDepth: mining.runtime.indexerReorgDepth,
465
- appliedTipHeight: mining.runtime.indexerTipHeight,
466
- appliedTipHash: mining.runtime.indexerTipHash,
467
- coreBestHeight: mining.runtime.coreBestHeight,
468
- coreBestHash: mining.runtime.coreBestHash,
469
- },
470
- backgroundWorker: {
471
- available: mining.runtime.backgroundWorkerPid !== null,
472
- stale: mining.runtime.backgroundWorkerHealth === "stale-heartbeat"
473
- || mining.runtime.backgroundWorkerHealth === "stale-pid"
474
- || mining.runtime.backgroundWorkerHealth === "version-mismatch",
475
- reason: mining.runtime.note,
476
- state: mining.runtime.backgroundWorkerHealth,
477
- },
478
- },
479
- },
480
- };
481
- }
482
- export function buildMineLogJson(events, page, rotation) {
483
- return {
484
- warnings: [],
485
- explanations: [],
486
- nextSteps: [],
487
- data: {
488
- events,
489
- truncated: page.truncated,
490
- rotation,
491
- page,
492
- },
493
- };
494
- }
495
- export function buildMinePromptListJson(result) {
496
- const explanations = [];
497
- const nextSteps = [];
498
- if (result.prompts.length === 0) {
499
- explanations.push("No mineable root domains or stored per-domain mining prompts are configured.");
500
- nextSteps.push("Run `cogcoin domains --mineable` to see eligible mining domains.");
501
- }
502
- else {
503
- const nextDomainPrompt = result.prompts.find((entry) => entry.mineable && entry.prompt === null);
504
- if (nextDomainPrompt !== undefined) {
505
- nextSteps.push(`cogcoin mine prompt ${nextDomainPrompt.domain.name}`);
506
- }
507
- }
508
- return {
509
- warnings: [],
510
- explanations,
511
- nextSteps,
512
- data: {
513
- fallbackPromptConfigured: result.fallbackPromptConfigured,
514
- prompts: result.prompts.map((entry) => ({
515
- domain: entry.domain,
516
- mineable: entry.mineable,
517
- prompt: entry.prompt,
518
- effectivePromptSource: entry.effectivePromptSource,
519
- })),
520
- },
521
- };
522
- }
523
- export function buildBalanceJson(context) {
524
- const messages = createBaseMessages(context);
525
- const total = walletCogBalance(context);
526
- return {
527
- ...messages,
528
- data: {
529
- assetLabel: "COG",
530
- totalCogtoshi: decimalOrNull(total),
531
- walletAddress: context.model?.walletAddress ?? null,
532
- walletScriptPubKeyHex: context.model?.walletScriptPubKeyHex ?? null,
533
- pending: (context.localState.state?.pendingMutations ?? [])
534
- .filter((mutation) => (mutation.kind === "send" || mutation.kind === "lock" || mutation.kind === "claim")
535
- && mutation.status !== "confirmed"
536
- && mutation.status !== "canceled")
537
- .map(mapPendingMutation),
538
- availability: buildAvailability(context),
539
- },
540
- };
541
- }
542
- export function buildLocksJson(context, locks, page) {
543
- const messages = createBaseMessages(context);
544
- return {
545
- ...messages,
546
- nextSteps: dedupeStrings([
547
- ...messages.nextSteps,
548
- ...getLocksNextSteps(locks),
549
- ]),
550
- data: {
551
- assetLabel: "COG",
552
- locks: locks?.map(mapLock) ?? null,
553
- pending: (context.localState.state?.pendingMutations ?? [])
554
- .filter((mutation) => (mutation.kind === "lock" || mutation.kind === "claim")
555
- && mutation.status !== "confirmed"
556
- && mutation.status !== "canceled")
557
- .map(mapPendingMutation),
558
- page,
559
- availability: buildAvailability(context),
560
- },
561
- };
562
- }
563
- export function buildDomainsJson(context, domains, page) {
564
- const messages = createBaseMessages(context);
565
- return {
566
- ...messages,
567
- data: {
568
- domains: domains?.map(mapDomain) ?? null,
569
- page,
570
- availability: buildAvailability(context),
571
- },
572
- };
573
- }
574
- export function buildShowJson(context, domainName) {
575
- const messages = createBaseMessages(context);
576
- const found = findWalletDomain(context, domainName);
577
- return {
578
- ...messages,
579
- data: {
580
- domain: found === null
581
- ? null
582
- : {
583
- ...mapDomain(found.domain),
584
- pendingMutations: listPendingMutationsForDomain(context, domainName).map(mapPendingMutation),
585
- },
586
- availability: buildAvailability(context),
587
- },
588
- };
589
- }
590
- export function buildFieldsJson(context, domainName, fields, page) {
591
- const messages = createBaseMessages(context);
592
- return {
593
- ...messages,
594
- data: {
595
- fields: fields?.map(mapField) ?? null,
596
- page,
597
- availability: buildAvailability(context),
598
- },
599
- };
600
- }
601
- export function buildFieldJson(context, domainName, fieldName) {
602
- const messages = createBaseMessages(context);
603
- const field = findDomainField(context, domainName, fieldName);
604
- return {
605
- ...messages,
606
- data: {
607
- field: field === null ? null : mapField(field),
608
- availability: buildAvailability(context),
609
- },
610
- };
611
- }
612
- export function listLocksForJson(context, options) {
613
- const locks = listWalletLocks(context);
614
- if (locks === null) {
615
- return null;
616
- }
617
- if (options.claimableOnly) {
618
- return locks.filter((lock) => lock.claimableNow);
619
- }
620
- if (options.reclaimableOnly) {
621
- return locks.filter((lock) => lock.reclaimableNow);
622
- }
623
- return locks;
624
- }
625
- export function listFieldsForJson(context, domainName) {
626
- return listDomainFields(context, domainName);
627
- }