@bsv/wallet-toolbox 1.1.13 → 1.1.15

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 (132) hide show
  1. package/docs/README.md +8 -2
  2. package/docs/client.md +465 -346
  3. package/docs/open-rpc/index.html +46 -0
  4. package/docs/services.md +236 -211
  5. package/docs/setup.md +32 -4
  6. package/docs/storage.md +30 -5
  7. package/docs/wallet.md +465 -346
  8. package/out/src/Setup.d.ts.map +1 -1
  9. package/out/src/Setup.js.map +1 -1
  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 +19 -3
  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/storage/methods/createAction.d.ts.map +1 -1
  55. package/out/src/storage/methods/createAction.js +9 -2
  56. package/out/src/storage/methods/createAction.js.map +1 -1
  57. package/out/src/storage/methods/generateChange.d.ts +12 -1
  58. package/out/src/storage/methods/generateChange.d.ts.map +1 -1
  59. package/out/src/storage/methods/generateChange.js +24 -1
  60. package/out/src/storage/methods/generateChange.js.map +1 -1
  61. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  62. package/out/src/storage/methods/processAction.js +1 -1
  63. package/out/src/storage/methods/processAction.js.map +1 -1
  64. package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js +0 -1
  65. package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js.map +1 -1
  66. package/out/src/storage/sync/StorageMySQLDojoReader.js +1 -1
  67. package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
  68. package/out/src/utility/utilityHelpers.js +1 -1
  69. package/out/src/utility/utilityHelpers.js.map +1 -1
  70. package/out/test/Wallet/StorageClient/storageClient.man.test.js +22 -3
  71. package/out/test/Wallet/StorageClient/storageClient.man.test.js.map +1 -1
  72. package/out/test/Wallet/sync/Wallet.updateWalletLegacyTestData.man.test.js +40 -0
  73. package/out/test/Wallet/sync/Wallet.updateWalletLegacyTestData.man.test.js.map +1 -1
  74. package/out/test/services/Services.test.js +0 -31
  75. package/out/test/services/Services.test.js.map +1 -1
  76. package/out/test/utils/TestUtilsWalletStorage.d.ts +26 -18
  77. package/out/test/utils/TestUtilsWalletStorage.d.ts.map +1 -1
  78. package/out/test/utils/TestUtilsWalletStorage.js +135 -27
  79. package/out/test/utils/TestUtilsWalletStorage.js.map +1 -1
  80. package/out/test/wallet/list/listActions2.test.js +36 -2
  81. package/out/test/wallet/list/listActions2.test.js.map +1 -1
  82. package/out/tsconfig.all.tsbuildinfo +1 -1
  83. package/package.json +4 -6
  84. package/src/Setup.ts +0 -1
  85. package/src/SetupClient.ts +25 -6
  86. package/src/Wallet.ts +66 -2
  87. package/src/sdk/WalletServices.interfaces.ts +19 -14
  88. package/src/services/Services.ts +23 -62
  89. package/src/services/__tests/ARC.test.ts +110 -0
  90. package/src/services/__tests/arcServices.test.ts +8 -0
  91. package/src/services/__tests/postBeef.test.ts +47 -9
  92. package/src/services/createDefaultWalletServicesOptions.ts +19 -6
  93. package/src/services/providers/ARC.ts +289 -0
  94. package/src/services/providers/SdkWhatsOnChain.ts +96 -0
  95. package/src/services/providers/WhatsOnChain.ts +369 -0
  96. package/src/services/providers/__tests/WhatsOnChain.test.ts +227 -0
  97. package/src/storage/methods/createAction.ts +26 -4
  98. package/src/storage/methods/generateChange.ts +42 -2
  99. package/src/storage/methods/processAction.ts +2 -1
  100. package/src/storage/schema/entities/__tests/ProvenTxTests.test.ts +0 -1
  101. package/src/storage/sync/StorageMySQLDojoReader.ts +1 -1
  102. package/src/utility/utilityHelpers.ts +1 -1
  103. package/test/Wallet/StorageClient/storageClient.man.test.ts +30 -4
  104. package/test/Wallet/sync/Wallet.updateWalletLegacyTestData.man.test.ts +54 -0
  105. package/test/services/Services.test.ts +0 -30
  106. package/test/utils/TestUtilsWalletStorage.ts +174 -45
  107. package/test/wallet/list/listActions2.test.ts +4 -7
  108. package/out/src/services/__tests/postBeefToArcTaal.test.d.ts +0 -2
  109. package/out/src/services/__tests/postBeefToArcTaal.test.d.ts.map +0 -1
  110. package/out/src/services/__tests/postBeefToArcTaal.test.js +0 -479
  111. package/out/src/services/__tests/postBeefToArcTaal.test.js.map +0 -1
  112. package/out/src/services/__tests/postTxs.test.d.ts +0 -2
  113. package/out/src/services/__tests/postTxs.test.d.ts.map +0 -1
  114. package/out/src/services/__tests/postTxs.test.js +0 -28
  115. package/out/src/services/__tests/postTxs.test.js.map +0 -1
  116. package/out/src/services/providers/arcServices.d.ts +0 -62
  117. package/out/src/services/providers/arcServices.d.ts.map +0 -1
  118. package/out/src/services/providers/arcServices.js +0 -375
  119. package/out/src/services/providers/arcServices.js.map +0 -1
  120. package/out/src/services/providers/whatsonchain.d.ts +0 -17
  121. package/out/src/services/providers/whatsonchain.d.ts.map +0 -1
  122. package/out/src/services/providers/whatsonchain.js +0 -130
  123. package/out/src/services/providers/whatsonchain.js.map +0 -1
  124. package/out/test/examples/README.man.test.d.ts +0 -2
  125. package/out/test/examples/README.man.test.d.ts.map +0 -1
  126. package/out/test/examples/README.man.test.js +0 -47
  127. package/out/test/examples/README.man.test.js.map +0 -1
  128. package/src/services/__tests/postBeefToArcTaal.test.ts +0 -487
  129. package/src/services/__tests/postTxs.test.ts +0 -28
  130. package/src/services/providers/arcServices.ts +0 -578
  131. package/src/services/providers/whatsonchain.ts +0 -170
  132. package/test/examples/README.man.test.ts +0 -53
@@ -1,170 +0,0 @@
1
- import { asArray, asString, sdk, validateScriptHash } from '../../index.client'
2
- import { convertProofToMerklePath } from '../../utility/tscProofToMerklePath'
3
-
4
- import axios from 'axios'
5
- import Whatsonchain from 'whatsonchain'
6
-
7
- /**
8
- * WhatOnChain.com has their own "hash/pos/R/L" proof format and a more TSC compliant proof format.
9
- *
10
- * The "/proof/tsc" endpoint is much closer to the TSC specification. It provides "index" directly and each node is just the provided hash value.
11
- * The "targetType" is unspecified and thus defaults to block header hash, requiring a Chaintracks lookup to get the merkleRoot...
12
- * Duplicate hash values are provided in full instead of being replaced by "*".
13
- *
14
- * @param txid
15
- * @param chain
16
- * @returns
17
- */
18
- export async function getMerklePathFromWhatsOnChainTsc(
19
- txid: string,
20
- chain: sdk.Chain,
21
- services: sdk.WalletServices
22
- ): Promise<sdk.GetMerklePathResult> {
23
- const r: sdk.GetMerklePathResult = { name: 'WoCTsc' }
24
-
25
- try {
26
- const url = `https://api.whatsonchain.com/v1/bsv/${chain}/tx/${txid}/proof/tsc`
27
- let { data } = await axios.get(url)
28
- if (!data || data.length < 1) return r
29
-
30
- if (!data['target']) data = data[0]
31
- const p = data
32
- const header = await services.hashToHeader(p.target)
33
- if (!header)
34
- throw new sdk.WERR_INVALID_PARAMETER(
35
- 'blockhash',
36
- 'a valid on-chain block hash'
37
- )
38
- const proof = { index: p.index, nodes: p.nodes, height: header.height }
39
- r.merklePath = convertProofToMerklePath(txid, proof)
40
- r.header = header
41
- } catch (err: unknown) {
42
- r.error = sdk.WalletError.fromUnknown(err)
43
- }
44
-
45
- return r
46
- }
47
-
48
- interface WhatsOnChainProofTsc {
49
- index: number
50
- txOrId: string
51
- target: string
52
- nodes: string[]
53
- }
54
-
55
- export async function getRawTxFromWhatsOnChain(
56
- txid: string,
57
- chain: sdk.Chain
58
- ): Promise<sdk.GetRawTxResult> {
59
- const r: sdk.GetRawTxResult = { name: 'WoC', txid: asString(txid) }
60
-
61
- try {
62
- const url = `https://api.whatsonchain.com/v1/bsv/${chain}/tx/${txid}/hex`
63
- const { data } = await axios.get(url)
64
- if (!data) return r
65
-
66
- r.rawTx = asArray(data)
67
- } catch (err: unknown) {
68
- r.error = sdk.WalletError.fromUnknown(err)
69
- }
70
-
71
- return r
72
- }
73
-
74
- interface WhatsOnChainUtxoStatus {
75
- value: number
76
- height: number
77
- tx_pos: number
78
- tx_hash: string
79
- }
80
-
81
- export async function getUtxoStatusFromWhatsOnChain(
82
- output: string,
83
- chain: sdk.Chain,
84
- outputFormat?: sdk.GetUtxoStatusOutputFormat
85
- ): Promise<sdk.GetUtxoStatusResult> {
86
- const r: sdk.GetUtxoStatusResult = {
87
- name: 'WoC',
88
- status: 'error',
89
- error: new sdk.WERR_INTERNAL(),
90
- details: []
91
- }
92
-
93
- for (let retry = 0; ; retry++) {
94
- let url: string = ''
95
-
96
- try {
97
- const scriptHash = validateScriptHash(output, outputFormat)
98
-
99
- url = `https://api.whatsonchain.com/v1/bsv/${chain}/script/${scriptHash}/unspent`
100
-
101
- const { data } = await axios.get(url)
102
-
103
- if (Array.isArray(data)) {
104
- if (data.length === 0) {
105
- r.status = 'success'
106
- r.error = undefined
107
- r.isUtxo = false
108
- } else {
109
- r.status = 'success'
110
- r.error = undefined
111
- r.isUtxo = true
112
- for (const s of <WhatsOnChainUtxoStatus[]>data) {
113
- r.details.push({
114
- txid: s.tx_hash,
115
- satoshis: s.value,
116
- height: s.height,
117
- index: s.tx_pos
118
- })
119
- }
120
- }
121
- } else {
122
- throw new sdk.WERR_INTERNAL('data is not an array')
123
- }
124
-
125
- return r
126
- } catch (eu: unknown) {
127
- const e = sdk.WalletError.fromUnknown(eu)
128
- if (e.code !== 'ECONNRESET' || retry > 2) {
129
- r.error = new sdk.WERR_INTERNAL(
130
- `service failure: ${url}, error: ${JSON.stringify(sdk.WalletError.fromUnknown(eu))}`
131
- )
132
- return r
133
- }
134
- }
135
- }
136
- return r
137
- }
138
-
139
- interface WhatsOnChainScriptHistory {
140
- fee?: number
141
- height?: number
142
- tx_hash: string
143
- }
144
-
145
- export async function updateBsvExchangeRate(
146
- rate?: sdk.BsvExchangeRate,
147
- updateMsecs?: number
148
- ): Promise<sdk.BsvExchangeRate> {
149
- if (rate) {
150
- // Check if the rate we know is stale enough to update.
151
- updateMsecs ||= 1000 * 60 * 15
152
- if (new Date(Date.now() - updateMsecs) < rate.timestamp) return rate
153
- }
154
-
155
- // TODO: Expand to redundant services with caching...
156
- const woc = new Whatsonchain()
157
- const r = await woc.exchangeRate()
158
- const wocrate = <{ rate: number; time: number; currency: string }>r
159
- if (wocrate.currency !== 'USD') wocrate.rate = NaN
160
-
161
- const newRate: sdk.BsvExchangeRate = {
162
- timestamp: new Date(),
163
- base: 'USD',
164
- rate: wocrate.rate
165
- }
166
-
167
- //console.log(`new bsv rate=${JSON.stringify(newRate)}`)
168
-
169
- return newRate
170
- }
@@ -1,53 +0,0 @@
1
- import { InternalizeActionArgs, PrivateKey, Utils } from '@bsv/sdk'
2
- import { Setup } from '../../src'
3
-
4
- describe('examples README tests', () => {
5
- jest.setTimeout(99999999)
6
-
7
- it('0 makeEnv', async () => {
8
- const envString = Setup.makeEnv()
9
- })
10
-
11
- it('1 internalize wallet payment', async () => {
12
- const env = Setup.getEnv('test')
13
-
14
- const { wallet } = await Setup.createWalletSQLite({
15
- env,
16
- filePath: './myTestWallet.sqlite',
17
- databaseName: 'myTestWallet'
18
- })
19
-
20
- // Obtain a Wallet Payment for your new wallet from a testnet funding faucet.
21
- // Update or replace the values in the following example object with your actual funding payment.
22
- // Note that the values below will not be accepted as they are not intended for your new wallet.
23
- const r = {
24
- senderIdentityKey:
25
- '03ac2d10bdb0023f4145cc2eba2fcd2ad3070cb2107b0b48170c46a9440e4cc3fe',
26
- vout: 0,
27
- txid: '942f094cee517276182e5857369ea53d64763a327d433489312a9606db188dfb',
28
- derivationPrefix: 'jSlU588BWkw=',
29
- derivationSuffix: 'l37vv/Bn4Lw=',
30
- atomicBEEF:
31
- '01010101942f094cee517276182e5857369ea53d64763a327d433489312a9606db188dfb0200beef01fee100190003020602f1fdbfa55c7227d2d9f93b7c2b83596a8e336ced483c1616dd98e8a32054dc6307010102009602f0b0959d085cbfda1a0958f65882b1a2829d66853582c0a530586dd00e930100002a7f27bd83b7d490f6641bbd3a8bdeff31490c14430597302ba579392be33f730201000100000001faba5977e9d7894778490ad3d3cf3ff0144da2920f6b31869dbcc026b693061b000000006a473044022050b2a300cad0e4b4c5ecaf93445937f21f6ec61d0c1726ac46bfb5bc2419af2102205d53e70fbdb0d1181a3cb1ef437ae27a73320367fdb78e8cadbfcbf82054e696412102480166f272ee9b639317c16ee60a2254ece67d0c7190fedbd26d57ac30f69d65ffffffff1da861000000000000c421029b09fdddfae493e309d3d97b919f6ab2902a789158f6f78489ad903b7a14baeaac2131546f446f44744b7265457a6248594b466a6d6f42756475466d53585855475a4735840423b7e26b5fd304a88f2ea28c9cf04d6c0a6c52a3174b69ea097039a355dbc6d95e702ac325c3f07518c9b4370796f90ad74e1c46304402206cd8228dd5102f7d8bd781e71dbf60df6559e90df9b79ed1c2b51d0316432f5502207a8713e899232190322dd4fdac6384f6b416ffa10b4196cdc7edbaf751b4a1156d7502000000000000001976a914ee8f77d351270123065a30a13e30394cbb4a6a2b88ace8030000000000001976a9147c8d0d51b07812872049e60e65a28d1041affc1f88ace8030000000000001976a914494c42ae91ebb8d4df662b0c2c98acfcbf14aff388ac93070000000000001976a9149619d3a2c3669335175d6fbd1d785719418cd69588acef030000000000001976a91435aabdafdc475012b7e2b7ab42e8f0fd9e8b665588ac59da0000000000001976a914c05b882ce290b3c19fbb0fca21e416f204d855a188acf3030000000000001976a9146ccff9f5e40844b784f1a68269afe30f5ec84c5d88accb340d00000000001976a914baf2186a8228a9581e0af744e28424343c6a464d88ace9030000000000001976a914a9c3b08f698df167c352f56aad483c907a0e64f488ac61140000000000001976a914f391b03543456ca68f3953b5ef4883f1299b4a2c88ac44c10500000000001976a914e6631bf6d96f93db48fb51daeace803ad805c09788ace9030000000000001976a9148cac2669fc696f5fb39aa59360a2cd20a6daffac88ac49b00400000000001976a9142c16b8a63604c66aa51f47f499024e327657ab5388acd7d50100000000001976a914ca5b56f03f796f55583c7cdd612c02f8d232669388ac42050000000000001976a914175a6812dbf2a550b1bf0d21594b96f9daf60d7988ac15040000000000001976a9147422a7237bb0fa77691047abf930e0274d193fe788ace9030000000000001976a9141a32c1c07dd4f9c632ce6b43dd28c8b27a37d81588ace8030000000000001976a914d9433de1883950578e9a29013aedb1e66d900bdc88ac39190000000000001976a9149fcdbc118b0114d2cc086a75eb14d880e3e25a9e88ac55390200000000001976a914cccf036ec7ae05690461c9d1be10193b6427055588ac1d010000000000001976a9148578396af7a6783824ff680315cc0a1375d9586e88acb3090000000000001976a9147c63cace8600f5400c8678cb2c843400c0c8ac2788acc55d0000000000001976a9148bf6991866b525f36dda54f7ca393c3a56cfff7188acc9100b00000000001976a914af41bf9bbf9d345f6b7cb37958d4cf43e88b17ef88acda040000000000001976a914ad818fcb671cc5b85dc22056d97a9b31aede4f3288ace8030000000000001976a91403ae9f7e41baee27ab7e66a323e73ee6801b5e1688ac59040000000000001976a9149f19356274a53ffdfb755bd81d40a97fe79b5e9b88ac10340000000000001976a914504dff507fccce4005f2d374cbdb6d5d493ceda288ac00000000000100000001f1fdbfa55c7227d2d9f93b7c2b83596a8e336ced483c1616dd98e8a32054dc63180000006a47304402206550da6e33b684167bc266d6912ddb350b18a0dd95093f1873d891c25f522f2d02200e6560bdc51cfd6bcdb235f4a4d67b8d78aa1ca2bc9a336a6f60d36c66485bc1412102051fd97fa4579069e77a450695d31d3396ce8baba0a59ac8b782ed60339b79d4ffffffff0220a10700000000001976a914492bcac81ce4af60976fbfa692e46d81279ce75888aca86f0300000000001976a914b29d56273f6c1df90cd8f383c8117680f2bdd05188ac00000000'
32
- }
33
-
34
- const args: InternalizeActionArgs = {
35
- tx: Utils.toArray(r.atomicBEEF, 'hex'),
36
- outputs: [
37
- {
38
- outputIndex: r.vout,
39
- protocol: 'wallet payment',
40
- paymentRemittance: {
41
- derivationPrefix: r.derivationPrefix,
42
- derivationSuffix: r.derivationSuffix,
43
- senderIdentityKey: r.senderIdentityKey
44
- }
45
- }
46
- ],
47
- description: 'from faucet'
48
- }
49
-
50
- const rw = await wallet.internalizeAction(args)
51
- console.log(rw.accepted)
52
- })
53
- })