@cogcoin/client 0.5.14 → 1.0.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 (172) hide show
  1. package/README.md +80 -25
  2. package/dist/app-paths.d.ts +5 -6
  3. package/dist/app-paths.js +8 -16
  4. package/dist/art/balance.txt +10 -0
  5. package/dist/art/welcome.txt +16 -0
  6. package/dist/bitcoind/bootstrap/controller.d.ts +1 -0
  7. package/dist/bitcoind/bootstrap/controller.js +53 -1
  8. package/dist/bitcoind/client/follow-block-times.d.ts +1 -0
  9. package/dist/bitcoind/client/follow-block-times.js +1 -1
  10. package/dist/bitcoind/client/internal-types.d.ts +7 -3
  11. package/dist/bitcoind/client/managed-client.d.ts +4 -2
  12. package/dist/bitcoind/client/managed-client.js +14 -0
  13. package/dist/bitcoind/client/sync-engine.js +72 -11
  14. package/dist/bitcoind/hash-order.d.ts +4 -0
  15. package/dist/bitcoind/hash-order.js +13 -0
  16. package/dist/bitcoind/indexer-daemon-main.js +11 -3
  17. package/dist/bitcoind/normalize.js +3 -2
  18. package/dist/bitcoind/processing-start-height.d.ts +5 -0
  19. package/dist/bitcoind/processing-start-height.js +7 -0
  20. package/dist/bitcoind/progress/constants.d.ts +4 -0
  21. package/dist/bitcoind/progress/constants.js +4 -0
  22. package/dist/bitcoind/progress/controller.d.ts +2 -1
  23. package/dist/bitcoind/progress/controller.js +3 -3
  24. package/dist/bitcoind/progress/follow-scene.d.ts +6 -2
  25. package/dist/bitcoind/progress/follow-scene.js +29 -6
  26. package/dist/bitcoind/progress/formatting.d.ts +1 -0
  27. package/dist/bitcoind/progress/formatting.js +6 -0
  28. package/dist/bitcoind/progress/train-scene.js +37 -18
  29. package/dist/bitcoind/progress/tty-renderer.d.ts +6 -1
  30. package/dist/bitcoind/progress/tty-renderer.js +8 -4
  31. package/dist/bitcoind/rpc.d.ts +2 -1
  32. package/dist/bitcoind/rpc.js +3 -0
  33. package/dist/bitcoind/types.d.ts +16 -0
  34. package/dist/bytes.d.ts +1 -0
  35. package/dist/bytes.js +3 -0
  36. package/dist/cli/art.d.ts +2 -0
  37. package/dist/cli/art.js +37 -0
  38. package/dist/cli/commands/client-admin.d.ts +2 -0
  39. package/dist/cli/commands/client-admin.js +91 -0
  40. package/dist/cli/commands/follow.js +0 -2
  41. package/dist/cli/commands/mining-admin.js +6 -47
  42. package/dist/cli/commands/mining-read.js +11 -50
  43. package/dist/cli/commands/mining-runtime.js +38 -3
  44. package/dist/cli/commands/service-runtime.js +0 -2
  45. package/dist/cli/commands/status.js +8 -2
  46. package/dist/cli/commands/sync.js +51 -4
  47. package/dist/cli/commands/wallet-admin.js +142 -136
  48. package/dist/cli/commands/wallet-mutation.js +91 -79
  49. package/dist/cli/commands/wallet-read.js +15 -18
  50. package/dist/cli/context.js +4 -14
  51. package/dist/cli/mining-format.d.ts +0 -1
  52. package/dist/cli/mining-format.js +5 -37
  53. package/dist/cli/mining-json.d.ts +0 -18
  54. package/dist/cli/mining-json.js +0 -35
  55. package/dist/cli/mutation-command-groups.d.ts +1 -2
  56. package/dist/cli/mutation-command-groups.js +0 -5
  57. package/dist/cli/mutation-json.d.ts +24 -145
  58. package/dist/cli/mutation-json.js +30 -136
  59. package/dist/cli/mutation-resolved-json.d.ts +0 -7
  60. package/dist/cli/mutation-resolved-json.js +4 -10
  61. package/dist/cli/mutation-success.d.ts +2 -0
  62. package/dist/cli/mutation-success.js +11 -1
  63. package/dist/cli/mutation-text-format.js +1 -3
  64. package/dist/cli/output.d.ts +1 -1
  65. package/dist/cli/output.js +254 -231
  66. package/dist/cli/parse.d.ts +1 -1
  67. package/dist/cli/parse.js +93 -122
  68. package/dist/cli/preview-json.d.ts +17 -120
  69. package/dist/cli/preview-json.js +14 -97
  70. package/dist/cli/prompt.js +8 -13
  71. package/dist/cli/read-json.d.ts +15 -37
  72. package/dist/cli/read-json.js +44 -140
  73. package/dist/cli/runner.js +10 -13
  74. package/dist/cli/types.d.ts +8 -17
  75. package/dist/cli/types.js +0 -2
  76. package/dist/cli/wallet-format.d.ts +1 -0
  77. package/dist/cli/wallet-format.js +205 -144
  78. package/dist/cli/workflow-hints.d.ts +3 -3
  79. package/dist/cli/workflow-hints.js +11 -8
  80. package/dist/client/default-client.d.ts +3 -1
  81. package/dist/client/default-client.js +45 -2
  82. package/dist/client/factory.js +1 -1
  83. package/dist/client/initialization.js +23 -0
  84. package/dist/client/persistence.js +5 -5
  85. package/dist/client/store-adapter.js +1 -0
  86. package/dist/sqlite/checkpoints.d.ts +1 -0
  87. package/dist/sqlite/checkpoints.js +7 -0
  88. package/dist/sqlite/store.js +14 -1
  89. package/dist/types.d.ts +1 -0
  90. package/dist/wallet/coin-control.d.ts +41 -11
  91. package/dist/wallet/coin-control.js +100 -357
  92. package/dist/wallet/descriptor-normalization.d.ts +1 -3
  93. package/dist/wallet/descriptor-normalization.js +0 -16
  94. package/dist/wallet/lifecycle.d.ts +7 -99
  95. package/dist/wallet/lifecycle.js +513 -968
  96. package/dist/wallet/managed-core-wallet.d.ts +13 -0
  97. package/dist/wallet/managed-core-wallet.js +20 -0
  98. package/dist/wallet/mining/constants.d.ts +5 -12
  99. package/dist/wallet/mining/constants.js +5 -12
  100. package/dist/wallet/mining/control.d.ts +1 -13
  101. package/dist/wallet/mining/control.js +45 -349
  102. package/dist/wallet/mining/index.d.ts +3 -4
  103. package/dist/wallet/mining/index.js +1 -2
  104. package/dist/wallet/mining/runner.d.ts +179 -6
  105. package/dist/wallet/mining/runner.js +891 -501
  106. package/dist/wallet/mining/runtime-artifacts.js +23 -3
  107. package/dist/wallet/mining/sentence-protocol.d.ts +44 -0
  108. package/dist/wallet/mining/sentence-protocol.js +123 -0
  109. package/dist/wallet/mining/sentences.d.ts +4 -8
  110. package/dist/wallet/mining/sentences.js +3 -52
  111. package/dist/wallet/mining/state.d.ts +11 -6
  112. package/dist/wallet/mining/state.js +7 -6
  113. package/dist/wallet/mining/types.d.ts +2 -30
  114. package/dist/wallet/mining/visualizer.d.ts +31 -3
  115. package/dist/wallet/mining/visualizer.js +135 -13
  116. package/dist/wallet/read/context.d.ts +0 -2
  117. package/dist/wallet/read/context.js +119 -140
  118. package/dist/wallet/read/filter.js +2 -11
  119. package/dist/wallet/read/index.d.ts +1 -1
  120. package/dist/wallet/read/project.js +24 -77
  121. package/dist/wallet/read/types.d.ts +10 -25
  122. package/dist/wallet/reset.d.ts +0 -1
  123. package/dist/wallet/reset.js +60 -138
  124. package/dist/wallet/root-resolution.d.ts +1 -5
  125. package/dist/wallet/root-resolution.js +0 -18
  126. package/dist/wallet/runtime.d.ts +0 -6
  127. package/dist/wallet/runtime.js +0 -8
  128. package/dist/wallet/state/client-password-agent.js +208 -0
  129. package/dist/wallet/state/client-password.d.ts +65 -0
  130. package/dist/wallet/state/client-password.js +952 -0
  131. package/dist/wallet/state/crypto.d.ts +1 -20
  132. package/dist/wallet/state/crypto.js +0 -63
  133. package/dist/wallet/state/provider.d.ts +23 -11
  134. package/dist/wallet/state/provider.js +248 -290
  135. package/dist/wallet/state/storage.d.ts +2 -2
  136. package/dist/wallet/state/storage.js +48 -16
  137. package/dist/wallet/tx/anchor.d.ts +3 -28
  138. package/dist/wallet/tx/anchor.js +349 -1240
  139. package/dist/wallet/tx/bitcoin-transfer.d.ts +35 -0
  140. package/dist/wallet/tx/bitcoin-transfer.js +200 -0
  141. package/dist/wallet/tx/cog.d.ts +5 -1
  142. package/dist/wallet/tx/cog.js +149 -185
  143. package/dist/wallet/tx/common.d.ts +74 -10
  144. package/dist/wallet/tx/common.js +315 -138
  145. package/dist/wallet/tx/domain-admin.d.ts +3 -1
  146. package/dist/wallet/tx/domain-admin.js +61 -99
  147. package/dist/wallet/tx/domain-market.d.ts +5 -1
  148. package/dist/wallet/tx/domain-market.js +221 -228
  149. package/dist/wallet/tx/field.d.ts +4 -10
  150. package/dist/wallet/tx/field.js +84 -914
  151. package/dist/wallet/tx/identity-selector.d.ts +9 -3
  152. package/dist/wallet/tx/identity-selector.js +17 -35
  153. package/dist/wallet/tx/index.d.ts +3 -1
  154. package/dist/wallet/tx/index.js +2 -1
  155. package/dist/wallet/tx/register.d.ts +3 -1
  156. package/dist/wallet/tx/register.js +62 -220
  157. package/dist/wallet/tx/reputation.d.ts +3 -1
  158. package/dist/wallet/tx/reputation.js +58 -95
  159. package/dist/wallet/types.d.ts +8 -122
  160. package/package.json +5 -5
  161. package/dist/wallet/archive.d.ts +0 -4
  162. package/dist/wallet/archive.js +0 -41
  163. package/dist/wallet/mining/hook-protocol.d.ts +0 -47
  164. package/dist/wallet/mining/hook-protocol.js +0 -161
  165. package/dist/wallet/mining/hook-runner.js +0 -52
  166. package/dist/wallet/mining/hooks.d.ts +0 -38
  167. package/dist/wallet/mining/hooks.js +0 -520
  168. package/dist/wallet/state/explicit-lock.d.ts +0 -4
  169. package/dist/wallet/state/explicit-lock.js +0 -19
  170. package/dist/wallet/state/session.d.ts +0 -12
  171. package/dist/wallet/state/session.js +0 -23
  172. /package/dist/wallet/{mining/hook-runner.d.ts → state/client-password-agent.d.ts} +0 -0
@@ -1,25 +1,42 @@
1
- import type { RpcDecodedPsbt, RpcFinalizePsbtResult, RpcListUnspentEntry, RpcLockedUnspent, RpcTestMempoolAcceptResult, RpcTransaction, RpcVin, RpcWalletCreateFundedPsbtResult, RpcWalletProcessPsbtResult } from "../../bitcoind/types.js";
1
+ import type { RpcDecodedPsbt, RpcEstimateSmartFeeResult, RpcFinalizePsbtResult, RpcListUnspentEntry, RpcLockedUnspent, RpcMempoolEntry, RpcTestMempoolAcceptResult, RpcTransaction, RpcVin, RpcWalletCreateFundedPsbtResult, RpcWalletTransaction, RpcWalletProcessPsbtResult } from "../../bitcoind/types.js";
2
2
  import { type WalletSecretProvider } from "../state/provider.js";
3
3
  import type { OutpointRecord, PendingMutationRecord, PendingMutationStatus, WalletStateV1 } from "../types.js";
4
4
  import type { WalletReadContext } from "../read/index.js";
5
5
  import type { WalletRuntimePaths } from "../runtime.js";
6
6
  import { type MiningPreemptionHandle } from "../mining/coordination.js";
7
7
  export declare const DEFAULT_WALLET_MUTATION_FEE_RATE_SAT_VB = 10;
8
+ export declare const NEXT_BLOCK_FEE_CONFIRM_TARGET = 1;
9
+ export type WalletMutationFeeSelectionSource = "custom-satvb" | "estimated-next-block-plus-one" | "fallback-default";
10
+ export interface WalletMutationFeeSelection {
11
+ feeRateSatVb: number;
12
+ source: WalletMutationFeeSelectionSource;
13
+ }
14
+ export interface WalletMutationFeeSummary extends WalletMutationFeeSelection {
15
+ feeSats: string | null;
16
+ }
8
17
  export interface MutationSender {
9
18
  localIndex: number;
10
19
  scriptPubKeyHex: string;
11
20
  address: string;
12
21
  }
22
+ export declare function isLocalWalletScript(state: WalletStateV1, scriptPubKeyHex: string | null | undefined): boolean;
23
+ export declare function createFundingMutationSender(state: WalletStateV1): MutationSender;
13
24
  export interface WalletMutationRpcClient {
14
25
  listUnspent(walletName: string, minConf?: number): Promise<RpcListUnspentEntry[]>;
15
- listLockUnspent(walletName: string): Promise<RpcLockedUnspent[]>;
16
- lockUnspent(walletName: string, unlock: boolean, outputs: RpcLockedUnspent[]): Promise<boolean>;
26
+ listLockUnspent?(walletName: string): Promise<RpcLockedUnspent[]>;
27
+ lockUnspent?(walletName: string, unlock: boolean, outputs: RpcLockedUnspent[]): Promise<boolean>;
28
+ getTransaction?(walletName: string, txid: string): Promise<RpcWalletTransaction>;
29
+ getRawTransaction?(txid: string, verbose?: boolean): Promise<RpcTransaction>;
30
+ getMempoolEntry?(txid: string): Promise<RpcMempoolEntry>;
31
+ estimateSmartFee?(confirmTarget: number, mode: "conservative" | "economical"): Promise<RpcEstimateSmartFeeResult>;
17
32
  walletCreateFundedPsbt(walletName: string, inputs: Array<{
18
33
  txid: string;
19
34
  vout: number;
20
35
  }>, outputs: unknown[], locktime: number, options: Record<string, unknown>, bip32Derivs?: boolean): Promise<RpcWalletCreateFundedPsbtResult>;
21
36
  decodePsbt(psbt: string): Promise<RpcDecodedPsbt>;
37
+ walletPassphrase(walletName: string, passphrase: string, timeoutSeconds: number): Promise<null>;
22
38
  walletProcessPsbt(walletName: string, psbt: string, sign?: boolean, sighashType?: string): Promise<RpcWalletProcessPsbtResult>;
39
+ walletLock(walletName: string): Promise<null>;
23
40
  finalizePsbt(psbt: string, extract?: boolean): Promise<RpcFinalizePsbtResult>;
24
41
  decodeRawTransaction(hex: string): Promise<RpcTransaction>;
25
42
  testMempoolAccept(rawTransactions: string[]): Promise<RpcTestMempoolAcceptResult[]>;
@@ -35,28 +52,69 @@ export interface BuiltWalletMutationTransaction {
35
52
  }
36
53
  export interface FixedWalletInput extends OutpointRecord {
37
54
  }
55
+ export declare function formatSatVb(value: number): string;
56
+ export declare function createWalletMutationFeeMetadata(selection: WalletMutationFeeSelection): {
57
+ selectedFeeRateSatVb: number;
58
+ feeSelectionSource: WalletMutationFeeSelectionSource;
59
+ };
60
+ export declare function resolveWalletMutationFeeSelection(options: {
61
+ rpc: Pick<WalletMutationRpcClient, "estimateSmartFee">;
62
+ feeRateSatVb?: number | null;
63
+ }): Promise<WalletMutationFeeSelection>;
64
+ export declare function createWalletMutationFeeSummary(selection: WalletMutationFeeSelection, feeSats: string | null): WalletMutationFeeSummary;
65
+ export declare function createBuiltWalletMutationFeeSummary(options: {
66
+ selection: WalletMutationFeeSelection;
67
+ built: BuiltWalletMutationTransaction;
68
+ }): WalletMutationFeeSummary;
69
+ export declare function resolvePendingMutationFeeSummary(options: {
70
+ rpc: Pick<WalletMutationRpcClient, "getMempoolEntry">;
71
+ mutation: PendingMutationRecord;
72
+ }): Promise<WalletMutationFeeSummary>;
73
+ export declare function loadAttemptedMutationFixedInputs(options: {
74
+ rpc: Pick<WalletMutationRpcClient, "getTransaction" | "getRawTransaction">;
75
+ walletName: string;
76
+ mutation: PendingMutationRecord;
77
+ }): Promise<FixedWalletInput[] | null>;
78
+ export declare function resolvePendingMutationReuseDecision(options: {
79
+ rpc: Pick<WalletMutationRpcClient, "getMempoolEntry" | "getTransaction" | "getRawTransaction">;
80
+ walletName: string;
81
+ mutation: PendingMutationRecord;
82
+ nextFeeSelection: WalletMutationFeeSelection;
83
+ }): Promise<{
84
+ reuseExisting: boolean;
85
+ fees: WalletMutationFeeSummary;
86
+ replacementFixedInputs: FixedWalletInput[] | null;
87
+ }>;
88
+ export declare function mergeFixedWalletInputs(fixedInputs: readonly FixedWalletInput[], replacementInputs: readonly FixedWalletInput[] | null): FixedWalletInput[];
38
89
  export declare function saveWalletStatePreservingUnlock(options: {
39
90
  state: WalletStateV1;
40
91
  provider: WalletSecretProvider;
41
- unlockUntilUnixMs: number;
42
- nowUnixMs: number;
92
+ nowUnixMs?: number;
43
93
  paths: WalletRuntimePaths;
44
94
  }): Promise<void>;
45
95
  export declare function formatCogAmount(value: bigint): string;
46
96
  export declare function outpointKey(outpoint: OutpointRecord): string;
97
+ export declare function findSpendableFundingInputsFromTransaction(options: {
98
+ allUtxos: RpcListUnspentEntry[];
99
+ txid: string;
100
+ fundingScriptPubKeyHex: string;
101
+ minConf?: number;
102
+ }): FixedWalletInput[];
47
103
  export declare function updateMutationRecord(mutation: PendingMutationRecord, status: PendingMutationStatus, nowUnixMs: number, options?: {
48
104
  attemptedTxid?: string | null;
49
105
  attemptedWtxid?: string | null;
50
106
  temporaryBuilderLockedOutpoints?: OutpointRecord[];
107
+ selectedFeeRateSatVb?: number | null;
108
+ feeSelectionSource?: WalletMutationFeeSelectionSource | null;
51
109
  }): PendingMutationRecord;
52
110
  export declare function unlockTemporaryBuilderLocks(rpc: Pick<WalletMutationRpcClient, "lockUnspent">, walletName: string, outpoints: OutpointRecord[]): Promise<void>;
53
111
  export declare function diffTemporaryLockedOutpoints(before: RpcLockedUnspent[], after: RpcLockedUnspent[]): OutpointRecord[];
54
- export declare function getDecodedInputScriptPubKeyHex(input: RpcVin): string | null;
55
112
  export declare function getDecodedInputVout(input: RpcVin): number | null;
113
+ export declare function getDecodedInputScriptPubKeyHex(decoded: RpcDecodedPsbt, inputIndex: number): string | null;
56
114
  export declare function inputMatchesOutpoint(input: RpcVin, outpoint: OutpointRecord): boolean;
57
115
  export declare function assertFixedInputPrefixMatches(inputs: RpcVin[], fixedInputs: FixedWalletInput[], errorCode: string): void;
58
116
  export declare function assertFundingInputsAfterFixedPrefix(options: {
59
- inputs: RpcVin[];
117
+ decoded: RpcDecodedPsbt;
60
118
  fixedInputs: FixedWalletInput[];
61
119
  allowedFundingScriptPubKeyHex: string;
62
120
  eligibleFundingOutpointKeys: Set<string>;
@@ -77,11 +135,16 @@ export declare function assertWalletMutationContextReady(context: WalletReadCont
77
135
  localState: {
78
136
  availability: "ready";
79
137
  state: WalletStateV1;
80
- unlockUntilUnixMs: number;
81
138
  };
82
139
  snapshot: NonNullable<WalletReadContext["snapshot"]>;
83
140
  model: NonNullable<WalletReadContext["model"]>;
84
141
  };
142
+ export declare function assertWalletBitcoinTransferContextReady(context: WalletReadContext, errorPrefix: string): asserts context is WalletReadContext & {
143
+ localState: {
144
+ availability: "ready";
145
+ state: WalletStateV1;
146
+ };
147
+ };
85
148
  export declare function pauseMiningForWalletMutation(options: {
86
149
  paths: WalletRuntimePaths;
87
150
  reason: string;
@@ -94,7 +157,7 @@ export declare function buildWalletMutationTransaction<TPlan>(options: {
94
157
  fixedInputs: FixedWalletInput[];
95
158
  outputs: unknown[];
96
159
  changeAddress: string;
97
- changePosition: number;
160
+ changePosition?: number | null;
98
161
  allowedFundingScriptPubKeyHex: string;
99
162
  eligibleFundingOutpointKeys: Set<string>;
100
163
  };
@@ -102,6 +165,7 @@ export declare function buildWalletMutationTransaction<TPlan>(options: {
102
165
  finalizeErrorCode: string;
103
166
  mempoolRejectPrefix: string;
104
167
  feeRate?: number;
168
+ availableFundingMinConf?: number;
105
169
  temporarilyUnlockedPolicyOutpoints?: readonly OutpointRecord[];
106
170
  }): Promise<BuiltWalletMutationTransaction>;
107
171
  export declare function buildWalletMutationTransactionWithReserveFallback<TPlan>(options: {
@@ -120,5 +184,5 @@ export declare function buildWalletMutationTransactionWithReserveFallback<TPlan>
120
184
  finalizeErrorCode: string;
121
185
  mempoolRejectPrefix: string;
122
186
  feeRate?: number;
123
- reserveCandidates: readonly OutpointRecord[];
187
+ availableFundingMinConf?: number;
124
188
  }): Promise<BuiltWalletMutationTransaction>;