@bsv/wallet-toolbox 1.1.25 → 1.1.27

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 (209) hide show
  1. package/docs/client.md +78 -2313
  2. package/docs/setup.md +15 -19
  3. package/docs/wallet.md +78 -2313
  4. package/out/src/Setup.d.ts +4 -0
  5. package/out/src/Setup.d.ts.map +1 -1
  6. package/out/src/Setup.js +19 -9
  7. package/out/src/Setup.js.map +1 -1
  8. package/out/src/Wallet.d.ts +1 -6
  9. package/out/src/Wallet.d.ts.map +1 -1
  10. package/out/src/Wallet.js +2 -29
  11. package/out/src/Wallet.js.map +1 -1
  12. package/out/src/index.all.d.ts +0 -9
  13. package/out/src/index.all.d.ts.map +1 -1
  14. package/out/src/index.all.js +0 -9
  15. package/out/src/index.all.js.map +1 -1
  16. package/out/src/index.client.d.ts +0 -9
  17. package/out/src/index.client.d.ts.map +1 -1
  18. package/out/src/index.client.js +0 -9
  19. package/out/src/index.client.js.map +1 -1
  20. package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  21. package/out/src/storage/WalletStorageManager.js +2 -0
  22. package/out/src/storage/WalletStorageManager.js.map +1 -1
  23. package/out/test/examples/backup.test.d.ts +14 -0
  24. package/out/test/examples/backup.test.d.ts.map +1 -0
  25. package/out/test/examples/backup.test.js +59 -0
  26. package/out/test/examples/backup.test.js.map +1 -0
  27. package/out/test/wallet/action/abortAction.test.d.ts.map +1 -0
  28. package/out/test/{Wallet → wallet}/action/abortAction.test.js.map +1 -1
  29. package/out/test/wallet/action/createAction.test.d.ts.map +1 -0
  30. package/out/test/{Wallet → wallet}/action/createAction.test.js.map +1 -1
  31. package/out/test/{Wallet → wallet}/action/createAction2.test.d.ts.map +1 -1
  32. package/out/test/{Wallet → wallet}/action/createAction2.test.js.map +1 -1
  33. package/out/test/wallet/action/createActionToGenerateBeefs.man.test.d.ts.map +1 -0
  34. package/out/test/{Wallet → wallet}/action/createActionToGenerateBeefs.man.test.js.map +1 -1
  35. package/out/test/wallet/action/internalizeAction.test.d.ts.map +1 -0
  36. package/out/test/{Wallet → wallet}/action/internalizeAction.test.js.map +1 -1
  37. package/out/test/wallet/action/relinquishOutput.test.d.ts.map +1 -0
  38. package/out/test/{Wallet → wallet}/action/relinquishOutput.test.js.map +1 -1
  39. package/out/test/wallet/construct/Wallet.constructor.test.d.ts.map +1 -0
  40. package/out/test/{Wallet → wallet}/construct/Wallet.constructor.test.js.map +1 -1
  41. package/out/test/wallet/list/listActions.test.d.ts.map +1 -0
  42. package/out/test/{Wallet → wallet}/list/listActions.test.js.map +1 -1
  43. package/out/test/wallet/list/listActions2.test.d.ts.map +1 -0
  44. package/out/test/{Wallet → wallet}/list/listActions2.test.js.map +1 -1
  45. package/out/test/wallet/list/listCertificates.test.d.ts.map +1 -0
  46. package/out/test/{Wallet → wallet}/list/listCertificates.test.js.map +1 -1
  47. package/out/test/wallet/list/listOutputs.test.d.ts.map +1 -0
  48. package/out/test/{Wallet → wallet}/list/listOutputs.test.js.map +1 -1
  49. package/out/test/wallet/sync/Wallet.sync.test.d.ts.map +1 -0
  50. package/out/test/{Wallet → wallet}/sync/Wallet.sync.test.js.map +1 -1
  51. package/out/tsconfig.all.tsbuildinfo +1 -1
  52. package/package.json +3 -3
  53. package/src/Setup.ts +22 -9
  54. package/src/Wallet.ts +3 -47
  55. package/src/index.all.ts +0 -9
  56. package/src/index.client.ts +0 -9
  57. package/src/storage/WalletStorageManager.ts +1 -0
  58. package/test/examples/backup.test.ts +66 -0
  59. package/out/src/CWIStyleWalletManager.d.ts +0 -411
  60. package/out/src/CWIStyleWalletManager.d.ts.map +0 -1
  61. package/out/src/CWIStyleWalletManager.js +0 -1131
  62. package/out/src/CWIStyleWalletManager.js.map +0 -1
  63. package/out/src/SetupClient.d.ts +0 -249
  64. package/out/src/SetupClient.d.ts.map +0 -1
  65. package/out/src/SetupClient.js +0 -252
  66. package/out/src/SetupClient.js.map +0 -1
  67. package/out/src/SimpleWalletManager.d.ts +0 -169
  68. package/out/src/SimpleWalletManager.d.ts.map +0 -1
  69. package/out/src/SimpleWalletManager.js +0 -315
  70. package/out/src/SimpleWalletManager.js.map +0 -1
  71. package/out/src/WalletAuthenticationManager.d.ts +0 -33
  72. package/out/src/WalletAuthenticationManager.d.ts.map +0 -1
  73. package/out/src/WalletAuthenticationManager.js +0 -107
  74. package/out/src/WalletAuthenticationManager.js.map +0 -1
  75. package/out/src/WalletPermissionsManager.d.ts +0 -575
  76. package/out/src/WalletPermissionsManager.d.ts.map +0 -1
  77. package/out/src/WalletPermissionsManager.js +0 -1807
  78. package/out/src/WalletPermissionsManager.js.map +0 -1
  79. package/out/src/WalletSettingsManager.d.ts +0 -59
  80. package/out/src/WalletSettingsManager.d.ts.map +0 -1
  81. package/out/src/WalletSettingsManager.js +0 -168
  82. package/out/src/WalletSettingsManager.js.map +0 -1
  83. package/out/src/__tests/CWIStyleWalletManager.test.d.ts +0 -2
  84. package/out/src/__tests/CWIStyleWalletManager.test.d.ts.map +0 -1
  85. package/out/src/__tests/CWIStyleWalletManager.test.js +0 -472
  86. package/out/src/__tests/CWIStyleWalletManager.test.js.map +0 -1
  87. package/out/src/__tests/WalletPermissionsManager.callbacks.test.d.ts +0 -2
  88. package/out/src/__tests/WalletPermissionsManager.callbacks.test.d.ts.map +0 -1
  89. package/out/src/__tests/WalletPermissionsManager.callbacks.test.js +0 -239
  90. package/out/src/__tests/WalletPermissionsManager.callbacks.test.js.map +0 -1
  91. package/out/src/__tests/WalletPermissionsManager.checks.test.d.ts +0 -2
  92. package/out/src/__tests/WalletPermissionsManager.checks.test.d.ts.map +0 -1
  93. package/out/src/__tests/WalletPermissionsManager.checks.test.js +0 -644
  94. package/out/src/__tests/WalletPermissionsManager.checks.test.js.map +0 -1
  95. package/out/src/__tests/WalletPermissionsManager.encryption.test.d.ts +0 -2
  96. package/out/src/__tests/WalletPermissionsManager.encryption.test.d.ts.map +0 -1
  97. package/out/src/__tests/WalletPermissionsManager.encryption.test.js +0 -295
  98. package/out/src/__tests/WalletPermissionsManager.encryption.test.js.map +0 -1
  99. package/out/src/__tests/WalletPermissionsManager.fixtures.d.ts +0 -82
  100. package/out/src/__tests/WalletPermissionsManager.fixtures.d.ts.map +0 -1
  101. package/out/src/__tests/WalletPermissionsManager.fixtures.js +0 -260
  102. package/out/src/__tests/WalletPermissionsManager.fixtures.js.map +0 -1
  103. package/out/src/__tests/WalletPermissionsManager.flows.test.d.ts +0 -2
  104. package/out/src/__tests/WalletPermissionsManager.flows.test.d.ts.map +0 -1
  105. package/out/src/__tests/WalletPermissionsManager.flows.test.js +0 -389
  106. package/out/src/__tests/WalletPermissionsManager.flows.test.js.map +0 -1
  107. package/out/src/__tests/WalletPermissionsManager.initialization.test.d.ts +0 -2
  108. package/out/src/__tests/WalletPermissionsManager.initialization.test.d.ts.map +0 -1
  109. package/out/src/__tests/WalletPermissionsManager.initialization.test.js +0 -227
  110. package/out/src/__tests/WalletPermissionsManager.initialization.test.js.map +0 -1
  111. package/out/src/__tests/WalletPermissionsManager.proxying.test.d.ts +0 -2
  112. package/out/src/__tests/WalletPermissionsManager.proxying.test.d.ts.map +0 -1
  113. package/out/src/__tests/WalletPermissionsManager.proxying.test.js +0 -566
  114. package/out/src/__tests/WalletPermissionsManager.proxying.test.js.map +0 -1
  115. package/out/src/__tests/WalletPermissionsManager.tokens.test.d.ts +0 -2
  116. package/out/src/__tests/WalletPermissionsManager.tokens.test.d.ts.map +0 -1
  117. package/out/src/__tests/WalletPermissionsManager.tokens.test.js +0 -460
  118. package/out/src/__tests/WalletPermissionsManager.tokens.test.js.map +0 -1
  119. package/out/src/utility/identityUtils.d.ts +0 -31
  120. package/out/src/utility/identityUtils.d.ts.map +0 -1
  121. package/out/src/utility/identityUtils.js +0 -114
  122. package/out/src/utility/identityUtils.js.map +0 -1
  123. package/out/src/wab-client/WABClient.d.ts +0 -38
  124. package/out/src/wab-client/WABClient.d.ts.map +0 -1
  125. package/out/src/wab-client/WABClient.js +0 -95
  126. package/out/src/wab-client/WABClient.js.map +0 -1
  127. package/out/src/wab-client/__tests/WABClient.test.d.ts +0 -2
  128. package/out/src/wab-client/__tests/WABClient.test.d.ts.map +0 -1
  129. package/out/src/wab-client/__tests/WABClient.test.js +0 -47
  130. package/out/src/wab-client/__tests/WABClient.test.js.map +0 -1
  131. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts +0 -34
  132. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +0 -1
  133. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js +0 -16
  134. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +0 -1
  135. package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.d.ts +0 -7
  136. package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.d.ts.map +0 -1
  137. package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.js +0 -40
  138. package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.js.map +0 -1
  139. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.d.ts +0 -28
  140. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.d.ts.map +0 -1
  141. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js +0 -73
  142. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js.map +0 -1
  143. package/out/test/Wallet/action/abortAction.test.d.ts.map +0 -1
  144. package/out/test/Wallet/action/createAction.test.d.ts.map +0 -1
  145. package/out/test/Wallet/action/createActionToGenerateBeefs.man.test.d.ts.map +0 -1
  146. package/out/test/Wallet/action/internalizeAction.test.d.ts.map +0 -1
  147. package/out/test/Wallet/action/relinquishOutput.test.d.ts.map +0 -1
  148. package/out/test/Wallet/construct/Wallet.constructor.test.d.ts.map +0 -1
  149. package/out/test/Wallet/list/listActions.test.d.ts.map +0 -1
  150. package/out/test/Wallet/list/listActions2.test.d.ts.map +0 -1
  151. package/out/test/Wallet/list/listCertificates.test.d.ts.map +0 -1
  152. package/out/test/Wallet/list/listOutputs.test.d.ts.map +0 -1
  153. package/out/test/Wallet/sync/Wallet.sync.test.d.ts.map +0 -1
  154. package/src/CWIStyleWalletManager.ts +0 -1891
  155. package/src/SimpleWalletManager.ts +0 -553
  156. package/src/WalletAuthenticationManager.ts +0 -183
  157. package/src/WalletPermissionsManager.ts +0 -2639
  158. package/src/WalletSettingsManager.ts +0 -241
  159. package/src/__tests/CWIStyleWalletManager.test.ts +0 -709
  160. package/src/__tests/WalletPermissionsManager.callbacks.test.ts +0 -328
  161. package/src/__tests/WalletPermissionsManager.checks.test.ts +0 -857
  162. package/src/__tests/WalletPermissionsManager.encryption.test.ts +0 -407
  163. package/src/__tests/WalletPermissionsManager.fixtures.ts +0 -283
  164. package/src/__tests/WalletPermissionsManager.flows.test.ts +0 -490
  165. package/src/__tests/WalletPermissionsManager.initialization.test.ts +0 -333
  166. package/src/__tests/WalletPermissionsManager.proxying.test.ts +0 -753
  167. package/src/__tests/WalletPermissionsManager.tokens.test.ts +0 -584
  168. package/src/utility/identityUtils.ts +0 -170
  169. package/src/wab-client/WABClient.ts +0 -103
  170. package/src/wab-client/__tests/WABClient.test.ts +0 -58
  171. package/src/wab-client/auth-method-interactors/AuthMethodInteractor.ts +0 -47
  172. package/src/wab-client/auth-method-interactors/PersonaIDInteractor.ts +0 -45
  173. package/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.ts +0 -82
  174. /package/out/test/{Wallet → wallet}/action/abortAction.test.d.ts +0 -0
  175. /package/out/test/{Wallet → wallet}/action/abortAction.test.js +0 -0
  176. /package/out/test/{Wallet → wallet}/action/createAction.test.d.ts +0 -0
  177. /package/out/test/{Wallet → wallet}/action/createAction.test.js +0 -0
  178. /package/out/test/{Wallet → wallet}/action/createAction2.test.d.ts +0 -0
  179. /package/out/test/{Wallet → wallet}/action/createAction2.test.js +0 -0
  180. /package/out/test/{Wallet → wallet}/action/createActionToGenerateBeefs.man.test.d.ts +0 -0
  181. /package/out/test/{Wallet → wallet}/action/createActionToGenerateBeefs.man.test.js +0 -0
  182. /package/out/test/{Wallet → wallet}/action/internalizeAction.test.d.ts +0 -0
  183. /package/out/test/{Wallet → wallet}/action/internalizeAction.test.js +0 -0
  184. /package/out/test/{Wallet → wallet}/action/relinquishOutput.test.d.ts +0 -0
  185. /package/out/test/{Wallet → wallet}/action/relinquishOutput.test.js +0 -0
  186. /package/out/test/{Wallet → wallet}/construct/Wallet.constructor.test.d.ts +0 -0
  187. /package/out/test/{Wallet → wallet}/construct/Wallet.constructor.test.js +0 -0
  188. /package/out/test/{Wallet → wallet}/list/listActions.test.d.ts +0 -0
  189. /package/out/test/{Wallet → wallet}/list/listActions.test.js +0 -0
  190. /package/out/test/{Wallet → wallet}/list/listActions2.test.d.ts +0 -0
  191. /package/out/test/{Wallet → wallet}/list/listActions2.test.js +0 -0
  192. /package/out/test/{Wallet → wallet}/list/listCertificates.test.d.ts +0 -0
  193. /package/out/test/{Wallet → wallet}/list/listCertificates.test.js +0 -0
  194. /package/out/test/{Wallet → wallet}/list/listOutputs.test.d.ts +0 -0
  195. /package/out/test/{Wallet → wallet}/list/listOutputs.test.js +0 -0
  196. /package/out/test/{Wallet → wallet}/sync/Wallet.sync.test.d.ts +0 -0
  197. /package/out/test/{Wallet → wallet}/sync/Wallet.sync.test.js +0 -0
  198. /package/test/{Wallet → wallet}/action/abortAction.test.ts +0 -0
  199. /package/test/{Wallet → wallet}/action/createAction.test.ts +0 -0
  200. /package/test/{Wallet → wallet}/action/createAction2.test.ts +0 -0
  201. /package/test/{Wallet → wallet}/action/createActionToGenerateBeefs.man.test.ts +0 -0
  202. /package/test/{Wallet → wallet}/action/internalizeAction.test.ts +0 -0
  203. /package/test/{Wallet → wallet}/action/relinquishOutput.test.ts +0 -0
  204. /package/test/{Wallet → wallet}/construct/Wallet.constructor.test.ts +0 -0
  205. /package/test/{Wallet → wallet}/list/listActions.test.ts +0 -0
  206. /package/test/{Wallet → wallet}/list/listActions2.test.ts +0 -0
  207. /package/test/{Wallet → wallet}/list/listCertificates.test.ts +0 -0
  208. /package/test/{Wallet → wallet}/list/listOutputs.test.ts +0 -0
  209. /package/test/{Wallet → wallet}/sync/Wallet.sync.test.ts +0 -0
@@ -1,241 +0,0 @@
1
- import {
2
- LockingScript,
3
- PubKeyHex,
4
- PushDrop,
5
- Transaction,
6
- Utils,
7
- WalletInterface,
8
- WalletProtocol
9
- } from '@bsv/sdk'
10
-
11
- export interface Certifier {
12
- name: string
13
- description: string
14
- identityKey: PubKeyHex
15
- trust: number
16
- iconUrl?: string
17
- baseURL?: string // ?
18
- }
19
- export interface TrustSettings {
20
- trustLevel: number
21
- trustedCertifiers: Certifier[]
22
- }
23
- export interface WalletTheme {
24
- mode: string
25
- }
26
- export interface WalletSettings {
27
- trustSettings: TrustSettings
28
- theme?: WalletTheme
29
- }
30
- export interface WalletSettingsManagerConfig {
31
- defaultSettings: WalletSettings
32
- }
33
-
34
- const PROTOCOL_ID: WalletProtocol = [2, 'wallet settings']
35
- const KEY_ID = '1'
36
- const SETTINGS_BASKET = 'wallet settings'
37
- const TOKEN_AMOUNT = 1
38
- const OUTPUT_INDEX = 0
39
-
40
- // Defaults can be overridden as needed
41
- export const DEFAULT_SETTINGS = {
42
- trustSettings: {
43
- trustLevel: 2,
44
- trustedCertifiers: [
45
- {
46
- name: 'Babbage Trust Services',
47
- description:
48
- 'Resolves identity information for Babbage-run APIs and Bitcoin infrastructure.',
49
- iconUrl: 'https://projectbabbage.com/favicon.ico',
50
- identityKey:
51
- '028703956178067ea7ca405111f1ca698290a0112a3d7cf3d843e195bf58a7cfa6',
52
- trust: 4
53
- },
54
- {
55
- name: 'IdentiCert',
56
- description: 'Certifies legal first and last name, and photos',
57
- iconUrl: 'https://identicert.me/favicon.ico',
58
- trust: 5,
59
- identityKey:
60
- '0295bf1c7842d14babf60daf2c733956c331f9dcb2c79e41f85fd1dda6a3fa4549'
61
- },
62
- {
63
- name: 'SocialCert',
64
- description: 'Certifies social media handles, phone numbers and emails',
65
- iconUrl: 'https://socialcert.net/favicon.ico',
66
- trust: 3,
67
- identityKey:
68
- '03285263f06139b66fb27f51cf8a92e9dd007c4c4b83876ad6c3e7028db450a4c2'
69
- }
70
- ]
71
- },
72
- theme: { mode: 'dark' }
73
- } as WalletSettings
74
-
75
- // Mapping of certifier names to their testnet identity keys
76
- const TESTNET_IDENTITY_KEYS: Record<string, string> = {
77
- 'Babbage Trust Services':
78
- '03d0b36b5c98b000ec9ffed9a2cf005e279244edf6a19cf90545cdebe873162761',
79
- IdentiCert:
80
- '036dc48522aba1705afbb43df3c04dbd1da373b6154341a875bceaa2a3e7f21528',
81
- SocialCert:
82
- '02cf6cdf466951d8dfc9e7c9367511d0007ed6fba35ed42d425cc412fd6cfd4a17'
83
- }
84
-
85
- // Define defaults that can be imported for a testnet environment
86
- export const TESTNET_DEFAULT_SETTINGS: WalletSettings = {
87
- ...DEFAULT_SETTINGS,
88
- trustSettings: {
89
- ...DEFAULT_SETTINGS.trustSettings,
90
- trustedCertifiers: DEFAULT_SETTINGS.trustSettings.trustedCertifiers.map(
91
- certifier => ({
92
- ...certifier,
93
- // Use the testnet key if provided, otherwise fallback to the default
94
- identityKey:
95
- TESTNET_IDENTITY_KEYS[certifier.name] || certifier.identityKey
96
- })
97
- )
98
- }
99
- }
100
-
101
- /**
102
- * Manages wallet settings
103
- */
104
- export class WalletSettingsManager {
105
- constructor(
106
- private wallet: WalletInterface,
107
- private config: WalletSettingsManagerConfig = {
108
- defaultSettings: DEFAULT_SETTINGS
109
- }
110
- ) {}
111
-
112
- /**
113
- * Returns a user's wallet settings
114
- *
115
- * @returns - Wallet settings object
116
- */
117
- async get(): Promise<WalletSettings> {
118
- // List outputs in the 'wallet-settings' basket
119
- const results = await this.wallet.listOutputs({
120
- basket: SETTINGS_BASKET,
121
- include: 'locking scripts',
122
- limit: 1 // There should only be one settings token
123
- })
124
-
125
- // Return defaults if no settings token is found
126
- if (!results.outputs.length) {
127
- return this.config.defaultSettings
128
- }
129
-
130
- const { fields } = PushDrop.decode(
131
- LockingScript.fromHex(results.outputs[OUTPUT_INDEX].lockingScript!)
132
- )
133
- // Parse and return settings token
134
- return JSON.parse(Utils.toUTF8(fields[0]))
135
- }
136
-
137
- /**
138
- * Creates (or updates) the user's settings token.
139
- *
140
- * @param settings - The wallet settings to be stored.
141
- */
142
- async set(settings: WalletSettings): Promise<void> {
143
- const pushdrop = new PushDrop(this.wallet)
144
-
145
- // Build the new locking script with the updated settings JSON.
146
- const lockingScript = await pushdrop.lock(
147
- [Utils.toArray(JSON.stringify(settings), 'utf8')],
148
- PROTOCOL_ID,
149
- KEY_ID,
150
- 'self'
151
- )
152
-
153
- // Consume any existing token and create a new one with the new locking script.
154
- await this.consumeToken(lockingScript)
155
- }
156
-
157
- /**
158
- * Deletes the user's settings token.
159
- */
160
- async delete(): Promise<void> {
161
- // Consume the token; if none exists, consumeToken simply returns.
162
- await this.consumeToken()
163
- }
164
-
165
- /**
166
- * Consumes an existing settings token.
167
- * If a new locking script is provided, a new token is created with that script.
168
- * Otherwise, the token is simply consumed (deleted).
169
- *
170
- * @param newLockingScript - Optional locking script for creating a new settings token.
171
- * @returns {Promise<boolean>} - Returns false if no token was found; otherwise true.
172
- */
173
- private async consumeToken(
174
- newLockingScript?: LockingScript
175
- ): Promise<boolean> {
176
- const pushdrop = new PushDrop(this.wallet)
177
-
178
- // 1. List the existing token UTXO(s) for the settings basket.
179
- const existingUtxos = await this.wallet.listOutputs({
180
- basket: SETTINGS_BASKET,
181
- limit: 1
182
- })
183
- if (!existingUtxos.outputs.length) {
184
- // No token exists – nothing to consume.
185
- return false
186
- }
187
-
188
- // 2. Prepare the token UTXO for consumption.
189
- const tokenOutput = existingUtxos.outputs[OUTPUT_INDEX]
190
- const inputToConsume = {
191
- outpoint: tokenOutput.outpoint,
192
- unlockingScriptLength: 73,
193
- inputDescription: 'Consume old settings token',
194
- lockingScript: tokenOutput.lockingScript
195
- }
196
-
197
- // 3. Build the outputs array: if a new locking script is provided, add an output.
198
- const outputs = newLockingScript
199
- ? [
200
- {
201
- satoshis: TOKEN_AMOUNT,
202
- lockingScript: newLockingScript.toHex(),
203
- outputDescription: 'Wallet settings token',
204
- basket: SETTINGS_BASKET
205
- }
206
- ]
207
- : []
208
-
209
- // 4. Create a signable transaction action using the inputs and (optionally) outputs.
210
- const { signableTransaction } = await this.wallet.createAction({
211
- description: '',
212
- inputs: [inputToConsume],
213
- outputs
214
- })
215
- const tx = Transaction.fromBEEF(signableTransaction!.tx)
216
-
217
- // 5. Build and sign the unlocking script for the token being consumed.
218
- const unlocker = pushdrop.unlock(
219
- PROTOCOL_ID,
220
- KEY_ID,
221
- 'self',
222
- 'all',
223
- false,
224
- TOKEN_AMOUNT,
225
- LockingScript.fromHex(tokenOutput.lockingScript!)
226
- )
227
- const unlockingScript = await unlocker.sign(tx, OUTPUT_INDEX)
228
-
229
- // 6. Sign the transaction using our unlocking script.
230
- await this.wallet.signAction({
231
- reference: signableTransaction!.reference,
232
- spends: {
233
- [OUTPUT_INDEX]: {
234
- unlockingScript: unlockingScript.toHex()
235
- }
236
- }
237
- })
238
-
239
- return true
240
- }
241
- }