@bsv/wallet-toolbox 1.1.12 → 1.1.14

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 (157) hide show
  1. package/.github/workflows/push.yaml +2 -2
  2. package/README.md +3 -22
  3. package/docs/README.md +16 -10
  4. package/docs/client.md +490 -382
  5. package/docs/open-rpc/index.html +46 -0
  6. package/docs/services.md +236 -211
  7. package/docs/setup.md +51 -34
  8. package/docs/storage.md +30 -5
  9. package/docs/wallet.md +490 -382
  10. package/out/src/SetupClient.d.ts +9 -0
  11. package/out/src/SetupClient.d.ts.map +1 -1
  12. package/out/src/SetupClient.js +34 -18
  13. package/out/src/SetupClient.js.map +1 -1
  14. package/out/src/Wallet.d.ts +6 -0
  15. package/out/src/Wallet.d.ts.map +1 -1
  16. package/out/src/Wallet.js +57 -0
  17. package/out/src/Wallet.js.map +1 -1
  18. package/out/src/sdk/WalletServices.interfaces.d.ts +18 -13
  19. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  20. package/out/src/services/Services.d.ts +4 -11
  21. package/out/src/services/Services.d.ts.map +1 -1
  22. package/out/src/services/Services.js +19 -37
  23. package/out/src/services/Services.js.map +1 -1
  24. package/out/src/services/__tests/ARC.test.d.ts +2 -0
  25. package/out/src/services/__tests/ARC.test.d.ts.map +1 -0
  26. package/out/src/services/__tests/ARC.test.js +98 -0
  27. package/out/src/services/__tests/ARC.test.js.map +1 -0
  28. package/out/src/services/__tests/arcServices.test.d.ts +2 -0
  29. package/out/src/services/__tests/arcServices.test.d.ts.map +1 -0
  30. package/out/src/services/__tests/arcServices.test.js +7 -0
  31. package/out/src/services/__tests/arcServices.test.js.map +1 -0
  32. package/out/src/services/__tests/postBeef.test.js +45 -7
  33. package/out/src/services/__tests/postBeef.test.js.map +1 -1
  34. package/out/src/services/createDefaultWalletServicesOptions.d.ts +1 -0
  35. package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
  36. package/out/src/services/createDefaultWalletServicesOptions.js +16 -4
  37. package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  38. package/out/src/services/providers/ARC.d.ts +91 -0
  39. package/out/src/services/providers/ARC.d.ts.map +1 -0
  40. package/out/src/services/providers/ARC.js +192 -0
  41. package/out/src/services/providers/ARC.js.map +1 -0
  42. package/out/src/services/providers/SdkWhatsOnChain.d.ts +21 -0
  43. package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -0
  44. package/out/src/services/providers/SdkWhatsOnChain.js +67 -0
  45. package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -0
  46. package/out/src/services/providers/WhatsOnChain.d.ts +35 -0
  47. package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -0
  48. package/out/src/services/providers/WhatsOnChain.js +266 -0
  49. package/out/src/services/providers/WhatsOnChain.js.map +1 -0
  50. package/out/src/services/providers/__tests/WhatsOnChain.test.d.ts +2 -0
  51. package/out/src/services/providers/__tests/WhatsOnChain.test.d.ts.map +1 -0
  52. package/out/src/services/providers/__tests/WhatsOnChain.test.js +176 -0
  53. package/out/src/services/providers/__tests/WhatsOnChain.test.js.map +1 -0
  54. package/out/src/signer/methods/createAction.js +3 -3
  55. package/out/src/signer/methods/createAction.js.map +1 -1
  56. package/out/src/signer/methods/signAction.js +1 -1
  57. package/out/src/signer/methods/signAction.js.map +1 -1
  58. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  59. package/out/src/storage/methods/createAction.js +9 -2
  60. package/out/src/storage/methods/createAction.js.map +1 -1
  61. package/out/src/storage/methods/generateChange.d.ts +12 -1
  62. package/out/src/storage/methods/generateChange.d.ts.map +1 -1
  63. package/out/src/storage/methods/generateChange.js +24 -1
  64. package/out/src/storage/methods/generateChange.js.map +1 -1
  65. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  66. package/out/src/storage/methods/processAction.js +1 -1
  67. package/out/src/storage/methods/processAction.js.map +1 -1
  68. package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js +0 -1
  69. package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js.map +1 -1
  70. package/out/src/storage/sync/StorageMySQLDojoReader.js +1 -1
  71. package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
  72. package/out/src/utility/{ScriptTemplateSABPPP.d.ts → ScriptTemplateBRC29.d.ts} +6 -6
  73. package/out/src/utility/ScriptTemplateBRC29.d.ts.map +1 -0
  74. package/out/src/utility/{ScriptTemplateSABPPP.js → ScriptTemplateBRC29.js} +4 -4
  75. package/out/src/utility/ScriptTemplateBRC29.js.map +1 -0
  76. package/out/src/utility/index.all.d.ts +1 -1
  77. package/out/src/utility/index.all.d.ts.map +1 -1
  78. package/out/src/utility/index.all.js +1 -1
  79. package/out/src/utility/index.all.js.map +1 -1
  80. package/out/src/utility/index.client.d.ts +1 -1
  81. package/out/src/utility/index.client.d.ts.map +1 -1
  82. package/out/src/utility/index.client.js +1 -1
  83. package/out/src/utility/index.client.js.map +1 -1
  84. package/out/src/utility/utilityHelpers.js +1 -1
  85. package/out/src/utility/utilityHelpers.js.map +1 -1
  86. package/out/test/Wallet/StorageClient/storageClient.man.test.js +22 -3
  87. package/out/test/Wallet/StorageClient/storageClient.man.test.js.map +1 -1
  88. package/out/test/Wallet/live/walletLive.man.test.js +2 -2
  89. package/out/test/Wallet/live/walletLive.man.test.js.map +1 -1
  90. package/out/test/Wallet/sync/Wallet.updateWalletLegacyTestData.man.test.js +40 -0
  91. package/out/test/Wallet/sync/Wallet.updateWalletLegacyTestData.man.test.js.map +1 -1
  92. package/out/test/services/Services.test.js +0 -31
  93. package/out/test/services/Services.test.js.map +1 -1
  94. package/out/test/utils/TestUtilsWalletStorage.d.ts +26 -18
  95. package/out/test/utils/TestUtilsWalletStorage.d.ts.map +1 -1
  96. package/out/test/utils/TestUtilsWalletStorage.js +135 -27
  97. package/out/test/utils/TestUtilsWalletStorage.js.map +1 -1
  98. package/out/test/wallet/list/listActions2.test.js +36 -2
  99. package/out/test/wallet/list/listActions2.test.js.map +1 -1
  100. package/out/tsconfig.all.tsbuildinfo +1 -1
  101. package/package.json +5 -7
  102. package/src/SetupClient.ts +41 -21
  103. package/src/Wallet.ts +66 -2
  104. package/src/sdk/WalletServices.interfaces.ts +19 -14
  105. package/src/services/Services.ts +23 -62
  106. package/src/services/__tests/ARC.test.ts +110 -0
  107. package/src/services/__tests/arcServices.test.ts +8 -0
  108. package/src/services/__tests/postBeef.test.ts +47 -9
  109. package/src/services/createDefaultWalletServicesOptions.ts +19 -6
  110. package/src/services/providers/ARC.ts +289 -0
  111. package/src/services/providers/SdkWhatsOnChain.ts +96 -0
  112. package/src/services/providers/WhatsOnChain.ts +369 -0
  113. package/src/services/providers/__tests/WhatsOnChain.test.ts +227 -0
  114. package/src/signer/methods/createAction.ts +4 -4
  115. package/src/signer/methods/signAction.ts +2 -2
  116. package/src/storage/methods/createAction.ts +26 -4
  117. package/src/storage/methods/generateChange.ts +42 -2
  118. package/src/storage/methods/processAction.ts +2 -1
  119. package/src/storage/schema/entities/__tests/ProvenTxTests.test.ts +0 -1
  120. package/src/storage/sync/StorageMySQLDojoReader.ts +1 -1
  121. package/src/utility/{ScriptTemplateSABPPP.ts → ScriptTemplateBRC29.ts} +6 -8
  122. package/src/utility/index.all.ts +1 -1
  123. package/src/utility/index.client.ts +1 -1
  124. package/src/utility/utilityHelpers.ts +1 -1
  125. package/test/Wallet/StorageClient/storageClient.man.test.ts +30 -4
  126. package/test/Wallet/live/walletLive.man.test.ts +3 -3
  127. package/test/Wallet/sync/Wallet.updateWalletLegacyTestData.man.test.ts +54 -0
  128. package/test/services/Services.test.ts +0 -30
  129. package/test/utils/TestUtilsWalletStorage.ts +175 -45
  130. package/test/wallet/list/listActions2.test.ts +4 -7
  131. package/out/src/services/__tests/postBeefToArcTaal.test.d.ts +0 -2
  132. package/out/src/services/__tests/postBeefToArcTaal.test.d.ts.map +0 -1
  133. package/out/src/services/__tests/postBeefToArcTaal.test.js +0 -479
  134. package/out/src/services/__tests/postBeefToArcTaal.test.js.map +0 -1
  135. package/out/src/services/__tests/postTxs.test.d.ts +0 -2
  136. package/out/src/services/__tests/postTxs.test.d.ts.map +0 -1
  137. package/out/src/services/__tests/postTxs.test.js +0 -28
  138. package/out/src/services/__tests/postTxs.test.js.map +0 -1
  139. package/out/src/services/providers/arcServices.d.ts +0 -62
  140. package/out/src/services/providers/arcServices.d.ts.map +0 -1
  141. package/out/src/services/providers/arcServices.js +0 -375
  142. package/out/src/services/providers/arcServices.js.map +0 -1
  143. package/out/src/services/providers/whatsonchain.d.ts +0 -17
  144. package/out/src/services/providers/whatsonchain.d.ts.map +0 -1
  145. package/out/src/services/providers/whatsonchain.js +0 -130
  146. package/out/src/services/providers/whatsonchain.js.map +0 -1
  147. package/out/src/utility/ScriptTemplateSABPPP.d.ts.map +0 -1
  148. package/out/src/utility/ScriptTemplateSABPPP.js.map +0 -1
  149. package/out/test/examples/README.man.test.d.ts +0 -2
  150. package/out/test/examples/README.man.test.d.ts.map +0 -1
  151. package/out/test/examples/README.man.test.js +0 -47
  152. package/out/test/examples/README.man.test.js.map +0 -1
  153. package/src/services/__tests/postBeefToArcTaal.test.ts +0 -487
  154. package/src/services/__tests/postTxs.test.ts +0 -28
  155. package/src/services/providers/arcServices.ts +0 -578
  156. package/src/services/providers/whatsonchain.ts +0 -170
  157. package/test/examples/README.man.test.ts +0 -53
package/docs/services.md CHANGED
@@ -23,63 +23,84 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
23
23
 
24
24
  | |
25
25
  | --- |
26
+ | [ArcConfig](#interface-arcconfig) |
26
27
  | [ArcMinerGetTxData](#interface-arcminergettxdata) |
27
- | [ArcMinerPostBeefDataApi](#interface-arcminerpostbeefdataapi) |
28
- | [ArcMinerPostTxsData](#interface-arcminerposttxsdata) |
29
- | [ArcServiceConfig](#interface-arcserviceconfig) |
30
28
  | [ExchangeRatesIoApi](#interface-exchangeratesioapi) |
31
29
 
32
30
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
33
31
 
34
32
  ---
35
33
 
36
- ##### Interface: ArcMinerGetTxData
34
+ ##### Interface: ArcConfig
35
+
36
+ Configuration options for the ARC broadcaster.
37
37
 
38
38
  ```ts
39
- export interface ArcMinerGetTxData {
40
- status: number;
41
- title: string;
42
- blockHash: string;
43
- blockHeight: number;
44
- competingTxs: null | string[];
45
- extraInfo: string;
46
- merklePath: string;
47
- timestamp: string;
48
- txid: string;
49
- txStatus: string;
39
+ export interface ArcConfig {
40
+ apiKey?: string;
41
+ httpClient?: HttpClient;
42
+ deploymentId?: string;
43
+ callbackUrl?: string;
44
+ callbackToken?: string;
45
+ headers?: Record<string, string>;
50
46
  }
51
47
  ```
52
48
 
53
- Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
49
+ ###### Property apiKey
54
50
 
55
- ---
56
- ##### Interface: ArcMinerPostBeefDataApi
51
+ Authentication token for the ARC API
57
52
 
58
53
  ```ts
59
- export interface ArcMinerPostBeefDataApi {
60
- status: number;
61
- title: string;
62
- blockHash?: string;
63
- blockHeight?: number;
64
- competingTxs?: null;
65
- extraInfo: string;
66
- merklePath?: string;
67
- timestamp?: string;
68
- txid?: string;
69
- txStatus?: string;
70
- type?: string;
71
- detail?: string;
72
- instance?: string;
73
- }
54
+ apiKey?: string
55
+ ```
56
+
57
+ ###### Property callbackToken
58
+
59
+ default access token for notification callback endpoint. It will be used as a Authorization header for the http callback
60
+
61
+ ```ts
62
+ callbackToken?: string
63
+ ```
64
+
65
+ ###### Property callbackUrl
66
+
67
+ notification callback endpoint for proofs and double spend notification
68
+
69
+ ```ts
70
+ callbackUrl?: string
71
+ ```
72
+
73
+ ###### Property deploymentId
74
+
75
+ Deployment id used annotating api calls in XDeployment-ID header - this value will be randomly generated if not set
76
+
77
+ ```ts
78
+ deploymentId?: string
79
+ ```
80
+
81
+ ###### Property headers
82
+
83
+ additional headers to be attached to all tx submissions.
84
+
85
+ ```ts
86
+ headers?: Record<string, string>
87
+ ```
88
+
89
+ ###### Property httpClient
90
+
91
+ The HTTP client used to make requests to the ARC API.
92
+
93
+ ```ts
94
+ httpClient?: HttpClient
74
95
  ```
75
96
 
76
97
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
77
98
 
78
99
  ---
79
- ##### Interface: ArcMinerPostTxsData
100
+ ##### Interface: ArcMinerGetTxData
80
101
 
81
102
  ```ts
82
- export interface ArcMinerPostTxsData {
103
+ export interface ArcMinerGetTxData {
83
104
  status: number;
84
105
  title: string;
85
106
  blockHash: string;
@@ -95,19 +116,6 @@ export interface ArcMinerPostTxsData {
95
116
 
96
117
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
97
118
 
98
- ---
99
- ##### Interface: ArcServiceConfig
100
-
101
- ```ts
102
- export interface ArcServiceConfig {
103
- name: string;
104
- url: string;
105
- arcConfig: ArcConfig;
106
- }
107
- ```
108
-
109
- Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
110
-
111
119
  ---
112
120
  ##### Interface: ExchangeRatesIoApi
113
121
 
@@ -128,13 +136,144 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
128
136
 
129
137
  | |
130
138
  | --- |
139
+ | [ARC](#class-arc) |
140
+ | [SdkWhatsOnChain](#class-sdkwhatsonchain) |
131
141
  | [ServiceCollection](#class-servicecollection) |
132
142
  | [Services](#class-services) |
143
+ | [WhatsOnChain](#class-whatsonchain) |
144
+
145
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
146
+
147
+ ---
148
+
149
+ ##### Class: ARC
150
+
151
+ Represents an ARC transaction broadcaster.
152
+
153
+ ```ts
154
+ export default class ARC {
155
+ readonly URL: string;
156
+ readonly apiKey: string | undefined;
157
+ readonly deploymentId: string;
158
+ readonly callbackUrl: string | undefined;
159
+ readonly callbackToken: string | undefined;
160
+ readonly headers: Record<string, string> | undefined;
161
+ constructor(URL: string, config?: ArcConfig);
162
+ constructor(URL: string, apiKey?: string);
163
+ constructor(URL: string, config?: string | ArcConfig)
164
+ async postRawTx(rawTx: HexString, txids?: string[]): Promise<sdk.PostTxResultForTxid>
165
+ async postBeef(beef: Beef, txids: string[]): Promise<sdk.PostBeefResult>
166
+ async getTxData(txid: string): Promise<ArcMinerGetTxData>
167
+ }
168
+ ```
169
+
170
+ See also: [ArcConfig](./services.md#interface-arcconfig), [ArcMinerGetTxData](./services.md#interface-arcminergettxdata), [PostBeefResult](./client.md#interface-postbeefresult), [PostTxResultForTxid](./client.md#interface-posttxresultfortxid)
171
+
172
+ ###### Constructor
173
+
174
+ Constructs an instance of the ARC broadcaster.
175
+
176
+ ```ts
177
+ constructor(URL: string, config?: ArcConfig)
178
+ ```
179
+ See also: [ArcConfig](./services.md#interface-arcconfig)
180
+
181
+ Argument Details
182
+
183
+ + **URL**
184
+ + The URL endpoint for the ARC API.
185
+ + **config**
186
+ + Configuration options for the ARC broadcaster.
187
+
188
+ ###### Constructor
189
+
190
+ Constructs an instance of the ARC broadcaster.
191
+
192
+ ```ts
193
+ constructor(URL: string, apiKey?: string)
194
+ ```
195
+
196
+ Argument Details
197
+
198
+ + **URL**
199
+ + The URL endpoint for the ARC API.
200
+ + **apiKey**
201
+ + The API key used for authorization with the ARC API.
202
+
203
+ ###### Method getTxData
204
+
205
+ This seems to only work for recently submitted txids...but that's all we need to complete postBeef!
206
+
207
+ ```ts
208
+ async getTxData(txid: string): Promise<ArcMinerGetTxData>
209
+ ```
210
+ See also: [ArcMinerGetTxData](./services.md#interface-arcminergettxdata)
211
+
212
+ ###### Method postBeef
213
+
214
+ ARC does not natively support a postBeef end-point aware of multiple txids of interest in the Beef.
215
+
216
+ It does process multiple new transactions, however, which allows results for all txids of interest
217
+ to be collected by the `/v1/tx/${txid}` endpoint.
218
+
219
+ ```ts
220
+ async postBeef(beef: Beef, txids: string[]): Promise<sdk.PostBeefResult>
221
+ ```
222
+ See also: [PostBeefResult](./client.md#interface-postbeefresult)
223
+
224
+ ###### Method postRawTx
225
+
226
+ The ARC '/v1/tx' endpoint, as of 2025-02-17 supports all of the following hex string formats:
227
+ 1. Single serialized raw transaction.
228
+ 2. Single EF serialized raw transaction (untested).
229
+ 3. V1 serialized Beef (results returned reflect only the last transaction in the beef)
230
+
231
+ The ARC '/v1/tx' endpoint, as of 2025-02-17 DOES NOT support the following hex string formats:
232
+ 1. V2 serialized Beef
233
+
234
+ ```ts
235
+ async postRawTx(rawTx: HexString, txids?: string[]): Promise<sdk.PostTxResultForTxid>
236
+ ```
237
+ See also: [PostTxResultForTxid](./client.md#interface-posttxresultfortxid)
133
238
 
134
239
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
135
240
 
136
241
  ---
242
+ ##### Class: SdkWhatsOnChain
243
+
244
+ Represents a chain tracker based on What's On Chain .
245
+
246
+ ```ts
247
+ export default class SdkWhatsOnChain implements ChainTracker {
248
+ readonly network: string;
249
+ readonly apiKey: string;
250
+ protected readonly URL: string;
251
+ protected readonly httpClient: HttpClient;
252
+ constructor(network: "main" | "test" | "stn" = "main", config: WhatsOnChainConfig = {})
253
+ async isValidRootForHeight(root: string, height: number): Promise<boolean>
254
+ async currentHeight(): Promise<number>
255
+ protected getHttpHeaders(): Record<string, string>
256
+ }
257
+ ```
258
+
259
+ ###### Constructor
260
+
261
+ Constructs an instance of the WhatsOnChain ChainTracker.
262
+
263
+ ```ts
264
+ constructor(network: "main" | "test" | "stn" = "main", config: WhatsOnChainConfig = {})
265
+ ```
266
+
267
+ Argument Details
137
268
 
269
+ + **network**
270
+ + The BSV network to use when calling the WhatsOnChain API.
271
+ + **config**
272
+ + Configuration options for the WhatsOnChain ChainTracker.
273
+
274
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
275
+
276
+ ---
138
277
  ##### Class: ServiceCollection
139
278
 
140
279
  ```ts
@@ -173,9 +312,10 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
173
312
  export class Services implements sdk.WalletServices {
174
313
  static createDefaultOptions(chain: sdk.Chain): sdk.WalletServicesOptions
175
314
  options: sdk.WalletServicesOptions;
315
+ whatsonchain: WhatsOnChain;
316
+ arc: ARC;
176
317
  getMerklePathServices: ServiceCollection<sdk.GetMerklePathService>;
177
318
  getRawTxServices: ServiceCollection<sdk.GetRawTxService>;
178
- postTxsServices: ServiceCollection<sdk.PostTxsService>;
179
319
  postBeefServices: ServiceCollection<sdk.PostBeefService>;
180
320
  getUtxoStatusServices: ServiceCollection<sdk.GetUtxoStatusService>;
181
321
  updateFiatExchangeRateServices: ServiceCollection<sdk.UpdateFiatExchangeRateService>;
@@ -186,11 +326,9 @@ export class Services implements sdk.WalletServices {
186
326
  async getFiatExchangeRate(currency: "USD" | "GBP" | "EUR", base?: "USD" | "GBP" | "EUR"): Promise<number>
187
327
  get getProofsCount()
188
328
  get getRawTxsCount()
189
- get postTxsServicesCount()
190
329
  get postBeefServicesCount()
191
330
  get getUtxoStatsCount()
192
331
  async getUtxoStatus(output: string, outputFormat?: sdk.GetUtxoStatusOutputFormat, useNext?: boolean): Promise<sdk.GetUtxoStatusResult>
193
- async postTxs(beef: Beef, txids: string[]): Promise<sdk.PostTxsResult[]>
194
332
  async postBeef(beef: Beef, txids: string[]): Promise<sdk.PostBeefResult[]>
195
333
  async getRawTx(txid: string, useNext?: boolean): Promise<sdk.GetRawTxResult>
196
334
  async invokeChaintracksWithRetry<R>(method: () => Promise<R>): Promise<R>
@@ -204,213 +342,111 @@ export class Services implements sdk.WalletServices {
204
342
  }
205
343
  ```
206
344
 
207
- See also: [BlockHeader](./client.md#interface-blockheader), [Chain](./client.md#type-chain), [FiatExchangeRates](./client.md#interface-fiatexchangerates), [GetMerklePathResult](./client.md#interface-getmerklepathresult), [GetMerklePathService](./client.md#type-getmerklepathservice), [GetRawTxResult](./client.md#interface-getrawtxresult), [GetRawTxService](./client.md#type-getrawtxservice), [GetUtxoStatusOutputFormat](./client.md#type-getutxostatusoutputformat), [GetUtxoStatusResult](./client.md#interface-getutxostatusresult), [GetUtxoStatusService](./client.md#type-getutxostatusservice), [PostBeefResult](./client.md#interface-postbeefresult), [PostBeefService](./client.md#type-postbeefservice), [PostTxsResult](./client.md#interface-posttxsresult), [PostTxsService](./client.md#type-posttxsservice), [ServiceCollection](./services.md#class-servicecollection), [UpdateFiatExchangeRateService](./client.md#type-updatefiatexchangerateservice), [WalletServices](./client.md#interface-walletservices), [WalletServicesOptions](./client.md#interface-walletservicesoptions)
208
-
209
- ###### Method postTxs
210
-
211
- The beef must contain at least each rawTx for each txid.
212
- Some services may require input transactions as well.
213
- These will be fetched if missing, greatly extending the service response time.
214
-
215
- ```ts
216
- async postTxs(beef: Beef, txids: string[]): Promise<sdk.PostTxsResult[]>
217
- ```
218
- See also: [PostTxsResult](./client.md#interface-posttxsresult)
219
-
220
- Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
221
-
222
- ---
223
- #### Functions
224
-
225
- | | |
226
- | --- | --- |
227
- | [createDefaultWalletServicesOptions](#function-createdefaultwalletservicesoptions) | [makePostBeefToTaalARC](#function-makepostbeeftotaalarc) |
228
- | [getExchangeRatesIo](#function-getexchangeratesio) | [makePostTxsToTaalARC](#function-makeposttxstotaalarc) |
229
- | [getMerklePathFromTaalARC](#function-getmerklepathfromtaalarc) | [postBeefToArcMiner](#function-postbeeftoarcminer) |
230
- | [getMerklePathFromWhatsOnChainTsc](#function-getmerklepathfromwhatsonchaintsc) | [postBeefToTaalArcMiner](#function-postbeeftotaalarcminer) |
231
- | [getRawTxFromWhatsOnChain](#function-getrawtxfromwhatsonchain) | [postTxsToTaalArcMiner](#function-posttxstotaalarcminer) |
232
- | [getTaalArcServiceConfig](#function-gettaalarcserviceconfig) | [toBinaryBaseBlockHeader](#function-tobinarybaseblockheader) |
233
- | [getUtxoStatusFromWhatsOnChain](#function-getutxostatusfromwhatsonchain) | [updateBsvExchangeRate](#function-updatebsvexchangerate) |
234
- | [makeErrorResult](#function-makeerrorresult) | [updateChaintracksFiatExchangeRates](#function-updatechaintracksfiatexchangerates) |
235
- | [makeGetMerklePathFromTaalARC](#function-makegetmerklepathfromtaalarc) | [updateExchangeratesapi](#function-updateexchangeratesapi) |
236
- | [makePostBeefResult](#function-makepostbeefresult) | [validateScriptHash](#function-validatescripthash) |
237
-
238
- Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
239
-
240
- ---
241
-
242
- ##### Function: createDefaultWalletServicesOptions
243
-
244
- ```ts
245
- export function createDefaultWalletServicesOptions(chain: sdk.Chain): sdk.WalletServicesOptions
246
- ```
247
-
248
- See also: [Chain](./client.md#type-chain), [WalletServicesOptions](./client.md#interface-walletservicesoptions)
249
-
250
- Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
251
-
252
- ---
253
- ##### Function: getExchangeRatesIo
254
-
255
- ```ts
256
- export async function getExchangeRatesIo(key: string): Promise<ExchangeRatesIoApi>
257
- ```
258
-
259
- See also: [ExchangeRatesIoApi](./services.md#interface-exchangeratesioapi)
260
-
261
- Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
262
-
263
- ---
264
- ##### Function: getMerklePathFromTaalARC
265
-
266
- ```ts
267
- export async function getMerklePathFromTaalARC(txid: string, config: ArcServiceConfig, services: sdk.WalletServices): Promise<sdk.GetMerklePathResult>
268
- ```
269
-
270
- See also: [ArcServiceConfig](./services.md#interface-arcserviceconfig), [GetMerklePathResult](./client.md#interface-getmerklepathresult), [WalletServices](./client.md#interface-walletservices)
271
-
272
- Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
273
-
274
- ---
275
- ##### Function: getMerklePathFromWhatsOnChainTsc
276
-
277
- WhatOnChain.com has their own "hash/pos/R/L" proof format and a more TSC compliant proof format.
278
-
279
- The "/proof/tsc" endpoint is much closer to the TSC specification. It provides "index" directly and each node is just the provided hash value.
280
- The "targetType" is unspecified and thus defaults to block header hash, requiring a Chaintracks lookup to get the merkleRoot...
281
- Duplicate hash values are provided in full instead of being replaced by "*".
282
-
283
- ```ts
284
- export async function getMerklePathFromWhatsOnChainTsc(txid: string, chain: sdk.Chain, services: sdk.WalletServices): Promise<sdk.GetMerklePathResult>
285
- ```
286
-
287
- See also: [Chain](./client.md#type-chain), [GetMerklePathResult](./client.md#interface-getmerklepathresult), [WalletServices](./client.md#interface-walletservices)
345
+ See also: [ARC](./services.md#class-arc), [BlockHeader](./client.md#interface-blockheader), [Chain](./client.md#type-chain), [FiatExchangeRates](./client.md#interface-fiatexchangerates), [GetMerklePathResult](./client.md#interface-getmerklepathresult), [GetMerklePathService](./client.md#type-getmerklepathservice), [GetRawTxResult](./client.md#interface-getrawtxresult), [GetRawTxService](./client.md#type-getrawtxservice), [GetUtxoStatusOutputFormat](./client.md#type-getutxostatusoutputformat), [GetUtxoStatusResult](./client.md#interface-getutxostatusresult), [GetUtxoStatusService](./client.md#type-getutxostatusservice), [PostBeefResult](./client.md#interface-postbeefresult), [PostBeefService](./client.md#type-postbeefservice), [ServiceCollection](./services.md#class-servicecollection), [UpdateFiatExchangeRateService](./client.md#type-updatefiatexchangerateservice), [WalletServices](./client.md#interface-walletservices), [WalletServicesOptions](./client.md#interface-walletservicesoptions), [WhatsOnChain](./services.md#class-whatsonchain)
288
346
 
289
347
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
290
348
 
291
349
  ---
292
- ##### Function: getRawTxFromWhatsOnChain
350
+ ##### Class: WhatsOnChain
293
351
 
294
352
  ```ts
295
- export async function getRawTxFromWhatsOnChain(txid: string, chain: sdk.Chain): Promise<sdk.GetRawTxResult>
353
+ export class WhatsOnChain extends SdkWhatsOnChain {
354
+ constructor(chain: sdk.Chain = "main", config: WhatsOnChainConfig = {})
355
+ async getTxPropagation(txid: string): Promise<number>
356
+ async getRawTx(txid: string): Promise<string | undefined>
357
+ async getRawTxResult(txid: string): Promise<sdk.GetRawTxResult>
358
+ async postRawTx(rawTx: HexString): Promise<string>
359
+ async getMerklePath(txid: string, services: sdk.WalletServices): Promise<sdk.GetMerklePathResult>
360
+ async updateBsvExchangeRate(rate?: sdk.BsvExchangeRate, updateMsecs?: number): Promise<sdk.BsvExchangeRate>
361
+ async getUtxoStatus(output: string, outputFormat?: sdk.GetUtxoStatusOutputFormat): Promise<sdk.GetUtxoStatusResult>
362
+ }
296
363
  ```
297
364
 
298
- See also: [Chain](./client.md#type-chain), [GetRawTxResult](./client.md#interface-getrawtxresult)
365
+ See also: [BsvExchangeRate](./client.md#interface-bsvexchangerate), [Chain](./client.md#type-chain), [GetMerklePathResult](./client.md#interface-getmerklepathresult), [GetRawTxResult](./client.md#interface-getrawtxresult), [GetUtxoStatusOutputFormat](./client.md#type-getutxostatusoutputformat), [GetUtxoStatusResult](./client.md#interface-getutxostatusresult), [SdkWhatsOnChain](./services.md#class-sdkwhatsonchain), [WalletServices](./client.md#interface-walletservices)
299
366
 
300
- Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
367
+ ###### Method getRawTx
301
368
 
302
- ---
303
- ##### Function: getTaalArcServiceConfig
369
+ May return undefined for unmined transactions that are in the mempool.
304
370
 
305
371
  ```ts
306
- export function getTaalArcServiceConfig(chain: sdk.Chain, apiKey: string): ArcServiceConfig
372
+ async getRawTx(txid: string): Promise<string | undefined>
307
373
  ```
308
374
 
309
- See also: [ArcServiceConfig](./services.md#interface-arcserviceconfig), [Chain](./client.md#type-chain)
310
-
311
- Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
312
-
313
- ---
314
- ##### Function: getUtxoStatusFromWhatsOnChain
315
-
316
- ```ts
317
- export async function getUtxoStatusFromWhatsOnChain(output: string, chain: sdk.Chain, outputFormat?: sdk.GetUtxoStatusOutputFormat): Promise<sdk.GetUtxoStatusResult>
318
- ```
375
+ Returns
319
376
 
320
- See also: [Chain](./client.md#type-chain), [GetUtxoStatusOutputFormat](./client.md#type-getutxostatusoutputformat), [GetUtxoStatusResult](./client.md#interface-getutxostatusresult)
377
+ raw transaction as hex string or undefined if txid not found in mined block.
321
378
 
322
- Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
379
+ ###### Method getTxPropagation
323
380
 
324
- ---
325
- ##### Function: makeErrorResult
381
+ 2025-02-16 throwing internal server error 500.
326
382
 
327
383
  ```ts
328
- export function makeErrorResult(error: sdk.WalletError, miner: ArcServiceConfig, beef: number[], txids: string[], dd?: ArcMinerPostBeefDataApi): sdk.PostBeefResult
384
+ async getTxPropagation(txid: string): Promise<number>
329
385
  ```
330
386
 
331
- See also: [ArcMinerPostBeefDataApi](./services.md#interface-arcminerpostbeefdataapi), [ArcServiceConfig](./services.md#interface-arcserviceconfig), [PostBeefResult](./client.md#interface-postbeefresult), [WalletError](./client.md#class-walleterror)
332
-
333
- Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
334
-
335
- ---
336
- ##### Function: makeGetMerklePathFromTaalARC
387
+ ###### Method postRawTx
337
388
 
338
389
  ```ts
339
- export function makeGetMerklePathFromTaalARC(config: ArcServiceConfig): sdk.GetMerklePathService
390
+ async postRawTx(rawTx: HexString): Promise<string>
340
391
  ```
341
392
 
342
- See also: [ArcServiceConfig](./services.md#interface-arcserviceconfig), [GetMerklePathService](./client.md#type-getmerklepathservice)
343
-
344
- Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
393
+ Returns
345
394
 
346
- ---
347
- ##### Function: makePostBeefResult
395
+ txid returned by transaction processor of transaction broadcast
348
396
 
349
- ```ts
350
- export function makePostBeefResult(dd: ArcMinerPostBeefDataApi, miner: ArcServiceConfig, beef: number[], txids: string[]): sdk.PostBeefResult
351
- ```
397
+ Argument Details
352
398
 
353
- See also: [ArcMinerPostBeefDataApi](./services.md#interface-arcminerpostbeefdataapi), [ArcServiceConfig](./services.md#interface-arcserviceconfig), [PostBeefResult](./client.md#interface-postbeefresult)
399
+ + **rawTx**
400
+ + raw transaction to broadcast as hex string
354
401
 
355
402
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
356
403
 
357
404
  ---
358
- ##### Function: makePostBeefToTaalARC
359
-
360
- ```ts
361
- export function makePostBeefToTaalARC(config: ArcServiceConfig): sdk.PostBeefService
362
- ```
405
+ #### Functions
363
406
 
364
- See also: [ArcServiceConfig](./services.md#interface-arcserviceconfig), [PostBeefService](./client.md#type-postbeefservice)
407
+ | |
408
+ | --- |
409
+ | [arcDefaultUrl](#function-arcdefaulturl) |
410
+ | [createDefaultWalletServicesOptions](#function-createdefaultwalletservicesoptions) |
411
+ | [getExchangeRatesIo](#function-getexchangeratesio) |
412
+ | [toBinaryBaseBlockHeader](#function-tobinarybaseblockheader) |
413
+ | [updateChaintracksFiatExchangeRates](#function-updatechaintracksfiatexchangerates) |
414
+ | [updateExchangeratesapi](#function-updateexchangeratesapi) |
415
+ | [validateScriptHash](#function-validatescripthash) |
365
416
 
366
417
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
367
418
 
368
419
  ---
369
- ##### Function: makePostTxsToTaalARC
370
-
371
- ```ts
372
- export function makePostTxsToTaalARC(config: ArcServiceConfig): sdk.PostTxsService
373
- ```
374
-
375
- See also: [ArcServiceConfig](./services.md#interface-arcserviceconfig), [PostTxsService](./client.md#type-posttxsservice)
376
420
 
377
- Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
378
-
379
- ---
380
- ##### Function: postBeefToArcMiner
421
+ ##### Function: arcDefaultUrl
381
422
 
382
423
  ```ts
383
- export async function postBeefToArcMiner(beef: Beef | number[], txids: string[], config: ArcServiceConfig): Promise<sdk.PostBeefResult>
424
+ export function arcDefaultUrl(chain: sdk.Chain): string
384
425
  ```
385
426
 
386
- See also: [ArcServiceConfig](./services.md#interface-arcserviceconfig), [PostBeefResult](./client.md#interface-postbeefresult)
427
+ See also: [Chain](./client.md#type-chain)
387
428
 
388
429
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
389
430
 
390
431
  ---
391
- ##### Function: postBeefToTaalArcMiner
432
+ ##### Function: createDefaultWalletServicesOptions
392
433
 
393
434
  ```ts
394
- export async function postBeefToTaalArcMiner(beef: Beef, txids: string[], config: ArcServiceConfig, services: sdk.WalletServices): Promise<sdk.PostBeefResult>
435
+ export function createDefaultWalletServicesOptions(chain: sdk.Chain): sdk.WalletServicesOptions
395
436
  ```
396
437
 
397
- See also: [ArcServiceConfig](./services.md#interface-arcserviceconfig), [PostBeefResult](./client.md#interface-postbeefresult), [WalletServices](./client.md#interface-walletservices)
438
+ See also: [Chain](./client.md#type-chain), [WalletServicesOptions](./client.md#interface-walletservicesoptions)
398
439
 
399
440
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
400
441
 
401
442
  ---
402
- ##### Function: postTxsToTaalArcMiner
443
+ ##### Function: getExchangeRatesIo
403
444
 
404
445
  ```ts
405
- export async function postTxsToTaalArcMiner(beef: Beef, txids: string[], config: ArcServiceConfig, services: sdk.WalletServices): Promise<sdk.PostTxsResult>
446
+ export async function getExchangeRatesIo(key: string): Promise<ExchangeRatesIoApi>
406
447
  ```
407
448
 
408
- See also: [ArcServiceConfig](./services.md#interface-arcserviceconfig), [PostTxsResult](./client.md#interface-posttxsresult), [WalletServices](./client.md#interface-walletservices)
409
-
410
- Argument Details
411
-
412
- + **txs**
413
- + All transactions must have source transactions. Will just source locking scripts and satoshis do?? toHexEF() is used.
449
+ See also: [ExchangeRatesIoApi](./services.md#interface-exchangeratesioapi)
414
450
 
415
451
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
416
452
 
@@ -444,17 +480,6 @@ Returns
444
480
 
445
481
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
446
482
 
447
- ---
448
- ##### Function: updateBsvExchangeRate
449
-
450
- ```ts
451
- export async function updateBsvExchangeRate(rate?: sdk.BsvExchangeRate, updateMsecs?: number): Promise<sdk.BsvExchangeRate>
452
- ```
453
-
454
- See also: [BsvExchangeRate](./client.md#interface-bsvexchangerate)
455
-
456
- Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
457
-
458
483
  ---
459
484
  ##### Function: updateChaintracksFiatExchangeRates
460
485