@arkade-os/sdk 0.3.13 → 0.4.0-next.1

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 (270) hide show
  1. package/README.md +586 -54
  2. package/dist/cjs/asset/assetGroup.js +141 -0
  3. package/dist/cjs/asset/assetId.js +88 -0
  4. package/dist/cjs/asset/assetInput.js +204 -0
  5. package/dist/cjs/asset/assetOutput.js +159 -0
  6. package/dist/cjs/asset/assetRef.js +82 -0
  7. package/dist/cjs/asset/index.js +24 -0
  8. package/dist/cjs/asset/metadata.js +172 -0
  9. package/dist/cjs/asset/packet.js +164 -0
  10. package/dist/cjs/asset/types.js +25 -0
  11. package/dist/cjs/asset/utils.js +105 -0
  12. package/dist/cjs/bip322/index.js +270 -0
  13. package/dist/cjs/contracts/arkcontract.js +148 -0
  14. package/dist/cjs/contracts/contractManager.js +436 -0
  15. package/dist/cjs/contracts/contractWatcher.js +567 -0
  16. package/dist/cjs/contracts/handlers/default.js +85 -0
  17. package/dist/cjs/contracts/handlers/delegate.js +89 -0
  18. package/dist/cjs/contracts/handlers/helpers.js +105 -0
  19. package/dist/cjs/contracts/handlers/index.js +19 -0
  20. package/dist/cjs/contracts/handlers/registry.js +89 -0
  21. package/dist/cjs/contracts/handlers/vhtlc.js +193 -0
  22. package/dist/cjs/contracts/index.js +41 -0
  23. package/dist/cjs/contracts/types.js +2 -0
  24. package/dist/cjs/forfeit.js +12 -8
  25. package/dist/cjs/identity/index.js +1 -0
  26. package/dist/cjs/identity/seedIdentity.js +255 -0
  27. package/dist/cjs/index.js +72 -14
  28. package/dist/cjs/intent/index.js +47 -11
  29. package/dist/cjs/providers/ark.js +7 -0
  30. package/dist/cjs/providers/delegator.js +66 -0
  31. package/dist/cjs/providers/expoIndexer.js +5 -0
  32. package/dist/cjs/providers/indexer.js +68 -1
  33. package/dist/cjs/providers/utils.js +1 -0
  34. package/dist/cjs/repositories/contractRepository.js +0 -103
  35. package/dist/cjs/repositories/inMemory/contractRepository.js +55 -0
  36. package/dist/cjs/repositories/inMemory/walletRepository.js +80 -0
  37. package/dist/cjs/repositories/index.js +16 -0
  38. package/dist/cjs/repositories/indexedDB/contractRepository.js +187 -0
  39. package/dist/cjs/repositories/indexedDB/db.js +19 -0
  40. package/dist/cjs/repositories/indexedDB/manager.js +97 -0
  41. package/dist/cjs/repositories/indexedDB/schema.js +159 -0
  42. package/dist/cjs/repositories/indexedDB/walletRepository.js +338 -0
  43. package/dist/cjs/repositories/indexedDB/websqlAdapter.js +144 -0
  44. package/dist/cjs/repositories/migrations/contractRepositoryImpl.js +127 -0
  45. package/dist/cjs/repositories/migrations/fromStorageAdapter.js +66 -0
  46. package/dist/cjs/repositories/migrations/walletRepositoryImpl.js +180 -0
  47. package/dist/cjs/repositories/realm/contractRepository.js +120 -0
  48. package/dist/cjs/repositories/realm/index.js +9 -0
  49. package/dist/cjs/repositories/realm/schemas.js +108 -0
  50. package/dist/cjs/repositories/realm/types.js +7 -0
  51. package/dist/cjs/repositories/realm/walletRepository.js +273 -0
  52. package/dist/cjs/repositories/serialization.js +49 -0
  53. package/dist/cjs/repositories/sqlite/contractRepository.js +139 -0
  54. package/dist/cjs/repositories/sqlite/index.js +7 -0
  55. package/dist/cjs/repositories/sqlite/types.js +2 -0
  56. package/dist/cjs/repositories/sqlite/walletRepository.js +328 -0
  57. package/dist/cjs/repositories/walletRepository.js +0 -169
  58. package/dist/cjs/script/base.js +54 -0
  59. package/dist/cjs/script/delegate.js +49 -0
  60. package/dist/cjs/storage/asyncStorage.js +4 -1
  61. package/dist/cjs/storage/fileSystem.js +3 -0
  62. package/dist/cjs/storage/inMemory.js +3 -0
  63. package/dist/cjs/storage/indexedDB.js +5 -1
  64. package/dist/cjs/storage/localStorage.js +3 -0
  65. package/dist/cjs/utils/arkTransaction.js +16 -0
  66. package/dist/cjs/utils/transactionHistory.js +50 -0
  67. package/dist/cjs/wallet/asset-manager.js +338 -0
  68. package/dist/cjs/wallet/asset.js +117 -0
  69. package/dist/cjs/wallet/batch.js +1 -1
  70. package/dist/cjs/wallet/delegator.js +235 -0
  71. package/dist/cjs/wallet/expo/background.js +133 -0
  72. package/dist/cjs/wallet/expo/index.js +9 -0
  73. package/dist/cjs/wallet/expo/wallet.js +231 -0
  74. package/dist/cjs/wallet/serviceWorker/wallet-message-handler.js +568 -0
  75. package/dist/cjs/wallet/serviceWorker/wallet.js +383 -102
  76. package/dist/cjs/wallet/utils.js +58 -0
  77. package/dist/cjs/wallet/validation.js +151 -0
  78. package/dist/cjs/wallet/vtxo-manager.js +8 -1
  79. package/dist/cjs/wallet/wallet.js +702 -260
  80. package/dist/cjs/worker/browser/service-worker-manager.js +82 -0
  81. package/dist/cjs/{wallet/serviceWorker → worker/browser}/utils.js +2 -1
  82. package/dist/cjs/worker/expo/asyncStorageTaskQueue.js +78 -0
  83. package/dist/cjs/worker/expo/index.js +12 -0
  84. package/dist/cjs/worker/expo/processors/contractPollProcessor.js +61 -0
  85. package/dist/cjs/worker/expo/processors/index.js +6 -0
  86. package/dist/cjs/worker/expo/taskQueue.js +41 -0
  87. package/dist/cjs/worker/expo/taskRunner.js +57 -0
  88. package/dist/cjs/worker/messageBus.js +252 -0
  89. package/dist/esm/asset/assetGroup.js +137 -0
  90. package/dist/esm/asset/assetId.js +84 -0
  91. package/dist/esm/asset/assetInput.js +199 -0
  92. package/dist/esm/asset/assetOutput.js +154 -0
  93. package/dist/esm/asset/assetRef.js +78 -0
  94. package/dist/esm/asset/index.js +8 -0
  95. package/dist/esm/asset/metadata.js +167 -0
  96. package/dist/esm/asset/packet.js +159 -0
  97. package/dist/esm/asset/types.js +22 -0
  98. package/dist/esm/asset/utils.js +99 -0
  99. package/dist/esm/bip322/index.js +267 -0
  100. package/dist/esm/contracts/arkcontract.js +141 -0
  101. package/dist/esm/contracts/contractManager.js +432 -0
  102. package/dist/esm/contracts/contractWatcher.js +563 -0
  103. package/dist/esm/contracts/handlers/default.js +82 -0
  104. package/dist/esm/contracts/handlers/delegate.js +86 -0
  105. package/dist/esm/contracts/handlers/helpers.js +66 -0
  106. package/dist/esm/contracts/handlers/index.js +12 -0
  107. package/dist/esm/contracts/handlers/registry.js +86 -0
  108. package/dist/esm/contracts/handlers/vhtlc.js +190 -0
  109. package/dist/esm/contracts/index.js +13 -0
  110. package/dist/esm/contracts/types.js +1 -0
  111. package/dist/esm/forfeit.js +11 -8
  112. package/dist/esm/identity/index.js +1 -0
  113. package/dist/esm/identity/seedIdentity.js +249 -0
  114. package/dist/esm/index.js +28 -15
  115. package/dist/esm/intent/index.js +44 -9
  116. package/dist/esm/providers/ark.js +7 -0
  117. package/dist/esm/providers/delegator.js +62 -0
  118. package/dist/esm/providers/expoIndexer.js +5 -0
  119. package/dist/esm/providers/indexer.js +68 -1
  120. package/dist/esm/providers/utils.js +1 -0
  121. package/dist/esm/repositories/contractRepository.js +1 -101
  122. package/dist/esm/repositories/inMemory/contractRepository.js +51 -0
  123. package/dist/esm/repositories/inMemory/walletRepository.js +76 -0
  124. package/dist/esm/repositories/index.js +8 -0
  125. package/dist/esm/repositories/indexedDB/contractRepository.js +183 -0
  126. package/dist/esm/repositories/indexedDB/db.js +4 -0
  127. package/dist/esm/repositories/indexedDB/manager.js +92 -0
  128. package/dist/esm/repositories/indexedDB/schema.js +155 -0
  129. package/dist/esm/repositories/indexedDB/walletRepository.js +334 -0
  130. package/dist/esm/repositories/indexedDB/websqlAdapter.js +138 -0
  131. package/dist/esm/repositories/migrations/contractRepositoryImpl.js +121 -0
  132. package/dist/esm/repositories/migrations/fromStorageAdapter.js +58 -0
  133. package/dist/esm/repositories/migrations/walletRepositoryImpl.js +176 -0
  134. package/dist/esm/repositories/realm/contractRepository.js +116 -0
  135. package/dist/esm/repositories/realm/index.js +3 -0
  136. package/dist/esm/repositories/realm/schemas.js +105 -0
  137. package/dist/esm/repositories/realm/types.js +6 -0
  138. package/dist/esm/repositories/realm/walletRepository.js +269 -0
  139. package/dist/esm/repositories/serialization.js +40 -0
  140. package/dist/esm/repositories/sqlite/contractRepository.js +135 -0
  141. package/dist/esm/repositories/sqlite/index.js +2 -0
  142. package/dist/esm/repositories/sqlite/types.js +1 -0
  143. package/dist/esm/repositories/sqlite/walletRepository.js +324 -0
  144. package/dist/esm/repositories/walletRepository.js +1 -167
  145. package/dist/esm/script/base.js +21 -1
  146. package/dist/esm/script/delegate.js +46 -0
  147. package/dist/esm/storage/asyncStorage.js +4 -1
  148. package/dist/esm/storage/fileSystem.js +3 -0
  149. package/dist/esm/storage/inMemory.js +3 -0
  150. package/dist/esm/storage/indexedDB.js +5 -1
  151. package/dist/esm/storage/localStorage.js +3 -0
  152. package/dist/esm/utils/arkTransaction.js +15 -0
  153. package/dist/esm/utils/transactionHistory.js +50 -0
  154. package/dist/esm/wallet/asset-manager.js +333 -0
  155. package/dist/esm/wallet/asset.js +111 -0
  156. package/dist/esm/wallet/batch.js +1 -1
  157. package/dist/esm/wallet/delegator.js +231 -0
  158. package/dist/esm/wallet/expo/background.js +128 -0
  159. package/dist/esm/wallet/expo/index.js +2 -0
  160. package/dist/esm/wallet/expo/wallet.js +194 -0
  161. package/dist/esm/wallet/serviceWorker/wallet-message-handler.js +564 -0
  162. package/dist/esm/wallet/serviceWorker/wallet.js +382 -101
  163. package/dist/esm/wallet/utils.js +54 -0
  164. package/dist/esm/wallet/validation.js +139 -0
  165. package/dist/esm/wallet/vtxo-manager.js +8 -1
  166. package/dist/esm/wallet/wallet.js +704 -229
  167. package/dist/esm/worker/browser/service-worker-manager.js +76 -0
  168. package/dist/esm/{wallet/serviceWorker → worker/browser}/utils.js +2 -1
  169. package/dist/esm/worker/expo/asyncStorageTaskQueue.js +74 -0
  170. package/dist/esm/worker/expo/index.js +4 -0
  171. package/dist/esm/worker/expo/processors/contractPollProcessor.js +58 -0
  172. package/dist/esm/worker/expo/processors/index.js +1 -0
  173. package/dist/esm/worker/expo/taskQueue.js +37 -0
  174. package/dist/esm/worker/expo/taskRunner.js +54 -0
  175. package/dist/esm/worker/messageBus.js +248 -0
  176. package/dist/types/asset/assetGroup.d.ts +28 -0
  177. package/dist/types/asset/assetId.d.ts +19 -0
  178. package/dist/types/asset/assetInput.d.ts +46 -0
  179. package/dist/types/asset/assetOutput.d.ts +39 -0
  180. package/dist/types/asset/assetRef.d.ts +25 -0
  181. package/dist/types/asset/index.d.ts +8 -0
  182. package/dist/types/asset/metadata.d.ts +37 -0
  183. package/dist/types/asset/packet.d.ts +27 -0
  184. package/dist/types/asset/types.d.ts +18 -0
  185. package/dist/types/asset/utils.d.ts +21 -0
  186. package/dist/types/bip322/index.d.ts +55 -0
  187. package/dist/types/contracts/arkcontract.d.ts +101 -0
  188. package/dist/types/contracts/contractManager.d.ts +331 -0
  189. package/dist/types/contracts/contractWatcher.d.ts +192 -0
  190. package/dist/types/contracts/handlers/default.d.ts +19 -0
  191. package/dist/types/contracts/handlers/delegate.d.ts +21 -0
  192. package/dist/types/contracts/handlers/helpers.d.ts +18 -0
  193. package/dist/types/contracts/handlers/index.d.ts +7 -0
  194. package/dist/types/contracts/handlers/registry.d.ts +65 -0
  195. package/dist/types/contracts/handlers/vhtlc.d.ts +32 -0
  196. package/dist/types/contracts/index.d.ts +14 -0
  197. package/dist/types/contracts/types.d.ts +222 -0
  198. package/dist/types/forfeit.d.ts +2 -1
  199. package/dist/types/identity/index.d.ts +1 -0
  200. package/dist/types/identity/seedIdentity.d.ts +128 -0
  201. package/dist/types/index.d.ts +22 -12
  202. package/dist/types/intent/index.d.ts +15 -1
  203. package/dist/types/providers/ark.d.ts +11 -2
  204. package/dist/types/providers/delegator.d.ts +29 -0
  205. package/dist/types/providers/indexer.d.ts +11 -1
  206. package/dist/types/repositories/contractRepository.d.ts +30 -19
  207. package/dist/types/repositories/inMemory/contractRepository.d.ts +17 -0
  208. package/dist/types/repositories/inMemory/walletRepository.d.ts +26 -0
  209. package/dist/types/repositories/index.d.ts +7 -0
  210. package/dist/types/repositories/indexedDB/contractRepository.d.ts +21 -0
  211. package/dist/types/repositories/indexedDB/db.d.ts +4 -0
  212. package/dist/types/repositories/indexedDB/manager.d.ts +22 -0
  213. package/dist/types/repositories/indexedDB/schema.d.ts +8 -0
  214. package/dist/types/repositories/indexedDB/walletRepository.d.ts +25 -0
  215. package/dist/types/repositories/indexedDB/websqlAdapter.d.ts +49 -0
  216. package/dist/types/repositories/migrations/contractRepositoryImpl.d.ts +24 -0
  217. package/dist/types/repositories/migrations/fromStorageAdapter.d.ts +19 -0
  218. package/dist/types/repositories/migrations/walletRepositoryImpl.d.ts +27 -0
  219. package/dist/types/repositories/realm/contractRepository.d.ts +24 -0
  220. package/dist/types/repositories/realm/index.d.ts +4 -0
  221. package/dist/types/repositories/realm/schemas.d.ts +208 -0
  222. package/dist/types/repositories/realm/types.d.ts +16 -0
  223. package/dist/types/repositories/realm/walletRepository.d.ts +31 -0
  224. package/dist/types/repositories/serialization.d.ts +40 -0
  225. package/dist/types/repositories/sqlite/contractRepository.d.ts +33 -0
  226. package/dist/types/repositories/sqlite/index.d.ts +3 -0
  227. package/dist/types/repositories/sqlite/types.d.ts +18 -0
  228. package/dist/types/repositories/sqlite/walletRepository.d.ts +40 -0
  229. package/dist/types/repositories/walletRepository.d.ts +13 -24
  230. package/dist/types/script/base.d.ts +1 -0
  231. package/dist/types/script/delegate.d.ts +36 -0
  232. package/dist/types/storage/asyncStorage.d.ts +4 -0
  233. package/dist/types/storage/fileSystem.d.ts +3 -0
  234. package/dist/types/storage/inMemory.d.ts +3 -0
  235. package/dist/types/storage/index.d.ts +3 -0
  236. package/dist/types/storage/indexedDB.d.ts +3 -0
  237. package/dist/types/storage/localStorage.d.ts +3 -0
  238. package/dist/types/utils/arkTransaction.d.ts +6 -0
  239. package/dist/types/wallet/asset-manager.d.ts +78 -0
  240. package/dist/types/wallet/asset.d.ts +21 -0
  241. package/dist/types/wallet/batch.d.ts +1 -1
  242. package/dist/types/wallet/delegator.d.ts +24 -0
  243. package/dist/types/wallet/expo/background.d.ts +66 -0
  244. package/dist/types/wallet/expo/index.d.ts +4 -0
  245. package/dist/types/wallet/expo/wallet.d.ts +97 -0
  246. package/dist/types/wallet/index.d.ts +75 -2
  247. package/dist/types/wallet/serviceWorker/wallet-message-handler.d.ts +366 -0
  248. package/dist/types/wallet/serviceWorker/wallet.d.ts +20 -11
  249. package/dist/types/wallet/utils.d.ts +12 -1
  250. package/dist/types/wallet/validation.d.ts +24 -0
  251. package/dist/types/wallet/wallet.d.ts +111 -17
  252. package/dist/types/worker/browser/service-worker-manager.d.ts +21 -0
  253. package/dist/types/{wallet/serviceWorker → worker/browser}/utils.d.ts +2 -1
  254. package/dist/types/worker/expo/asyncStorageTaskQueue.d.ts +46 -0
  255. package/dist/types/worker/expo/index.d.ts +7 -0
  256. package/dist/types/worker/expo/processors/contractPollProcessor.d.ts +14 -0
  257. package/dist/types/worker/expo/processors/index.d.ts +1 -0
  258. package/dist/types/worker/expo/taskQueue.d.ts +50 -0
  259. package/dist/types/worker/expo/taskRunner.d.ts +42 -0
  260. package/dist/types/worker/messageBus.d.ts +109 -0
  261. package/package.json +69 -11
  262. package/dist/cjs/wallet/serviceWorker/request.js +0 -78
  263. package/dist/cjs/wallet/serviceWorker/response.js +0 -222
  264. package/dist/cjs/wallet/serviceWorker/worker.js +0 -655
  265. package/dist/esm/wallet/serviceWorker/request.js +0 -75
  266. package/dist/esm/wallet/serviceWorker/response.js +0 -219
  267. package/dist/esm/wallet/serviceWorker/worker.js +0 -651
  268. package/dist/types/wallet/serviceWorker/request.d.ts +0 -74
  269. package/dist/types/wallet/serviceWorker/response.d.ts +0 -123
  270. package/dist/types/wallet/serviceWorker/worker.d.ts +0 -53
@@ -0,0 +1,366 @@
1
+ import { SettlementEvent } from "../../providers/ark";
2
+ import type { Contract, ContractEvent, ContractWithVtxos, GetContractsFilter, PathSelection } from "../../contracts";
3
+ import type { CreateContractParams, GetAllSpendingPathsOptions, GetSpendablePathsOptions } from "../../contracts/contractManager";
4
+ import { ArkTransaction, AssetDetails, BurnParams, ExtendedCoin, GetVtxosFilter, IssuanceParams, IssuanceResult, IWallet, Recipient, ReissuanceParams, SendBitcoinParams, SettleParams, WalletBalance } from "../index";
5
+ import { MessageHandler, RequestEnvelope, ResponseEnvelope } from "../../worker/messageBus";
6
+ import { Transaction } from "../../utils/transaction";
7
+ export declare const DEFAULT_MESSAGE_TAG = "WALLET_UPDATER";
8
+ export type RequestInitWallet = RequestEnvelope & {
9
+ type: "INIT_WALLET";
10
+ payload: {
11
+ key: {
12
+ privateKey: string;
13
+ } | {
14
+ publicKey: string;
15
+ };
16
+ arkServerUrl: string;
17
+ arkServerPublicKey?: string;
18
+ };
19
+ };
20
+ export type ResponseInitWallet = ResponseEnvelope & {
21
+ type: "WALLET_INITIALIZED";
22
+ };
23
+ export type RequestSettle = RequestEnvelope & {
24
+ type: "SETTLE";
25
+ payload: {
26
+ params?: SettleParams;
27
+ };
28
+ };
29
+ export type ResponseSettle = ResponseEnvelope & {
30
+ type: "SETTLE_SUCCESS";
31
+ payload: {
32
+ txid: string;
33
+ };
34
+ };
35
+ export type RequestSendBitcoin = RequestEnvelope & {
36
+ type: "SEND_BITCOIN";
37
+ payload: SendBitcoinParams;
38
+ };
39
+ export type ResponseSendBitcoin = ResponseEnvelope & {
40
+ type: "SEND_BITCOIN_SUCCESS";
41
+ payload: {
42
+ txid: string;
43
+ };
44
+ };
45
+ export type RequestGetAddress = RequestEnvelope & {
46
+ type: "GET_ADDRESS";
47
+ };
48
+ export type ResponseGetAddress = ResponseEnvelope & {
49
+ type: "ADDRESS";
50
+ payload: {
51
+ address: string;
52
+ };
53
+ };
54
+ export type RequestGetBoardingAddress = RequestEnvelope & {
55
+ type: "GET_BOARDING_ADDRESS";
56
+ };
57
+ export type ResponseGetBoardingAddress = ResponseEnvelope & {
58
+ type: "BOARDING_ADDRESS";
59
+ payload: {
60
+ address: string;
61
+ };
62
+ };
63
+ export type RequestGetBalance = RequestEnvelope & {
64
+ type: "GET_BALANCE";
65
+ };
66
+ export type ResponseGetBalance = ResponseEnvelope & {
67
+ type: "BALANCE";
68
+ payload: WalletBalance;
69
+ };
70
+ export type RequestGetVtxos = RequestEnvelope & {
71
+ type: "GET_VTXOS";
72
+ payload: {
73
+ filter?: GetVtxosFilter;
74
+ };
75
+ };
76
+ export type ResponseGetVtxos = ResponseEnvelope & {
77
+ type: "VTXOS";
78
+ payload: {
79
+ vtxos: Awaited<ReturnType<IWallet["getVtxos"]>>;
80
+ };
81
+ };
82
+ export type RequestGetBoardingUtxos = RequestEnvelope & {
83
+ type: "GET_BOARDING_UTXOS";
84
+ };
85
+ export type ResponseGetBoardingUtxos = ResponseEnvelope & {
86
+ type: "BOARDING_UTXOS";
87
+ payload: {
88
+ utxos: ExtendedCoin[];
89
+ };
90
+ };
91
+ export type RequestGetTransactionHistory = RequestEnvelope & {
92
+ type: "GET_TRANSACTION_HISTORY";
93
+ };
94
+ export type ResponseGetTransactionHistory = ResponseEnvelope & {
95
+ type: "TRANSACTION_HISTORY";
96
+ payload: {
97
+ transactions: ArkTransaction[];
98
+ };
99
+ };
100
+ export type RequestGetStatus = RequestEnvelope & {
101
+ type: "GET_STATUS";
102
+ };
103
+ export type ResponseGetStatus = ResponseEnvelope & {
104
+ type: "WALLET_STATUS";
105
+ payload: {
106
+ walletInitialized: boolean;
107
+ xOnlyPublicKey: Uint8Array | undefined;
108
+ };
109
+ };
110
+ export type RequestClear = RequestEnvelope & {
111
+ type: "CLEAR";
112
+ };
113
+ export type ResponseClear = ResponseEnvelope & {
114
+ type: "CLEAR_SUCCESS";
115
+ payload: {
116
+ cleared: boolean;
117
+ };
118
+ };
119
+ export type RequestSignTransaction = RequestEnvelope & {
120
+ type: "SIGN_TRANSACTION";
121
+ payload: {
122
+ tx: Transaction;
123
+ inputIndexes?: number[];
124
+ };
125
+ };
126
+ export type ResponseSignTransaction = ResponseEnvelope & {
127
+ type: "SIGN_TRANSACTION";
128
+ payload: {
129
+ tx: Transaction;
130
+ };
131
+ };
132
+ export type RequestReloadWallet = RequestEnvelope & {
133
+ type: "RELOAD_WALLET";
134
+ };
135
+ export type ResponseReloadWallet = ResponseEnvelope & {
136
+ type: "RELOAD_SUCCESS";
137
+ payload: {
138
+ reloaded: boolean;
139
+ };
140
+ };
141
+ export type RequestCreateContract = RequestEnvelope & {
142
+ type: "CREATE_CONTRACT";
143
+ payload: CreateContractParams;
144
+ };
145
+ export type ResponseCreateContract = ResponseEnvelope & {
146
+ type: "CONTRACT_CREATED";
147
+ payload: {
148
+ contract: Contract;
149
+ };
150
+ };
151
+ export type RequestGetContracts = RequestEnvelope & {
152
+ type: "GET_CONTRACTS";
153
+ payload: {
154
+ filter?: GetContractsFilter;
155
+ };
156
+ };
157
+ export type ResponseGetContracts = ResponseEnvelope & {
158
+ type: "CONTRACTS";
159
+ payload: {
160
+ contracts: Contract[];
161
+ };
162
+ };
163
+ export type RequestGetContractsWithVtxos = RequestEnvelope & {
164
+ type: "GET_CONTRACTS_WITH_VTXOS";
165
+ payload: {
166
+ filter?: GetContractsFilter;
167
+ };
168
+ };
169
+ export type ResponseGetContractsWithVtxos = ResponseEnvelope & {
170
+ type: "CONTRACTS_WITH_VTXOS";
171
+ payload: {
172
+ contracts: ContractWithVtxos[];
173
+ };
174
+ };
175
+ export type RequestUpdateContract = RequestEnvelope & {
176
+ type: "UPDATE_CONTRACT";
177
+ payload: {
178
+ script: string;
179
+ updates: Partial<Omit<Contract, "id" | "createdAt">>;
180
+ };
181
+ };
182
+ export type ResponseUpdateContract = ResponseEnvelope & {
183
+ type: "CONTRACT_UPDATED";
184
+ payload: {
185
+ contract: Contract;
186
+ };
187
+ };
188
+ export type RequestDeleteContract = RequestEnvelope & {
189
+ type: "DELETE_CONTRACT";
190
+ payload: {
191
+ script: string;
192
+ };
193
+ };
194
+ export type ResponseDeleteContract = ResponseEnvelope & {
195
+ type: "CONTRACT_DELETED";
196
+ payload: {
197
+ deleted: boolean;
198
+ };
199
+ };
200
+ export type RequestGetSpendablePaths = RequestEnvelope & {
201
+ type: "GET_SPENDABLE_PATHS";
202
+ payload: {
203
+ options: GetSpendablePathsOptions;
204
+ };
205
+ };
206
+ export type ResponseGetSpendablePaths = ResponseEnvelope & {
207
+ type: "SPENDABLE_PATHS";
208
+ payload: {
209
+ paths: PathSelection[];
210
+ };
211
+ };
212
+ export type RequestIsContractManagerWatching = RequestEnvelope & {
213
+ type: "IS_CONTRACT_MANAGER_WATCHING";
214
+ };
215
+ export type ResponseIsContractManagerWatching = ResponseEnvelope & {
216
+ type: "CONTRACT_WATCHING";
217
+ payload: {
218
+ isWatching: boolean;
219
+ };
220
+ };
221
+ export type RequestGetAllSpendingPaths = RequestEnvelope & {
222
+ type: "GET_ALL_SPENDING_PATHS";
223
+ payload: {
224
+ options: GetAllSpendingPathsOptions;
225
+ };
226
+ };
227
+ export type ResponseGetAllSpendingPaths = ResponseEnvelope & {
228
+ type: "ALL_SPENDING_PATHS";
229
+ payload: {
230
+ paths: PathSelection[];
231
+ };
232
+ };
233
+ export type ResponseSettleEvent = ResponseEnvelope & {
234
+ broadcast: true;
235
+ type: "SETTLE_EVENT";
236
+ payload: SettlementEvent;
237
+ };
238
+ export type ResponseUtxoUpdate = ResponseEnvelope & {
239
+ broadcast: true;
240
+ type: "UTXO_UPDATE";
241
+ payload: {
242
+ coins: ExtendedCoin[];
243
+ };
244
+ };
245
+ export type ResponseVtxoUpdate = ResponseEnvelope & {
246
+ broadcast: true;
247
+ type: "VTXO_UPDATE";
248
+ payload: {
249
+ newVtxos: ExtendedCoin[];
250
+ spentVtxos: ExtendedCoin[];
251
+ };
252
+ };
253
+ export type ResponseContractEvent = ResponseEnvelope & {
254
+ tag: string;
255
+ broadcast: true;
256
+ type: "CONTRACT_EVENT";
257
+ payload: {
258
+ event: ContractEvent;
259
+ };
260
+ };
261
+ export type RequestSend = RequestEnvelope & {
262
+ type: "SEND";
263
+ payload: {
264
+ recipients: Recipient[];
265
+ };
266
+ };
267
+ export type ResponseSend = ResponseEnvelope & {
268
+ type: "SEND_SUCCESS";
269
+ payload: {
270
+ txid: string;
271
+ };
272
+ };
273
+ export type RequestGetAssetDetails = RequestEnvelope & {
274
+ type: "GET_ASSET_DETAILS";
275
+ payload: {
276
+ assetId: string;
277
+ };
278
+ };
279
+ export type ResponseGetAssetDetails = ResponseEnvelope & {
280
+ type: "ASSET_DETAILS";
281
+ payload: {
282
+ assetDetails: AssetDetails;
283
+ };
284
+ };
285
+ export type RequestIssue = RequestEnvelope & {
286
+ type: "ISSUE";
287
+ payload: {
288
+ params: IssuanceParams;
289
+ };
290
+ };
291
+ export type ResponseIssue = ResponseEnvelope & {
292
+ type: "ISSUE_SUCCESS";
293
+ payload: {
294
+ result: IssuanceResult;
295
+ };
296
+ };
297
+ export type RequestReissue = RequestEnvelope & {
298
+ type: "REISSUE";
299
+ payload: {
300
+ params: ReissuanceParams;
301
+ };
302
+ };
303
+ export type ResponseReissue = ResponseEnvelope & {
304
+ type: "REISSUE_SUCCESS";
305
+ payload: {
306
+ txid: string;
307
+ };
308
+ };
309
+ export type RequestBurn = RequestEnvelope & {
310
+ type: "BURN";
311
+ payload: {
312
+ params: BurnParams;
313
+ };
314
+ };
315
+ export type ResponseBurn = ResponseEnvelope & {
316
+ type: "BURN_SUCCESS";
317
+ payload: {
318
+ txid: string;
319
+ };
320
+ };
321
+ export type WalletUpdaterRequest = RequestInitWallet | RequestSettle | RequestSendBitcoin | RequestGetAddress | RequestGetBoardingAddress | RequestGetBalance | RequestGetVtxos | RequestGetBoardingUtxos | RequestGetTransactionHistory | RequestGetStatus | RequestClear | RequestReloadWallet | RequestSignTransaction | RequestCreateContract | RequestGetContracts | RequestGetContractsWithVtxos | RequestUpdateContract | RequestDeleteContract | RequestGetSpendablePaths | RequestGetAllSpendingPaths | RequestIsContractManagerWatching | RequestSend | RequestGetAssetDetails | RequestIssue | RequestReissue | RequestBurn;
322
+ export type WalletUpdaterResponse = ResponseEnvelope & (ResponseInitWallet | ResponseSettle | ResponseSettleEvent | ResponseSendBitcoin | ResponseGetAddress | ResponseGetBoardingAddress | ResponseGetBalance | ResponseGetVtxos | ResponseGetBoardingUtxos | ResponseGetTransactionHistory | ResponseGetStatus | ResponseClear | ResponseReloadWallet | ResponseUtxoUpdate | ResponseVtxoUpdate | ResponseSignTransaction | ResponseCreateContract | ResponseGetContracts | ResponseGetContractsWithVtxos | ResponseUpdateContract | ResponseDeleteContract | ResponseGetSpendablePaths | ResponseGetAllSpendingPaths | ResponseIsContractManagerWatching | ResponseContractEvent | ResponseSend | ResponseGetAssetDetails | ResponseIssue | ResponseReissue | ResponseBurn);
323
+ export declare class WalletMessageHandler implements MessageHandler<WalletUpdaterRequest, WalletUpdaterResponse> {
324
+ readonly messageTag: string;
325
+ private wallet;
326
+ private readonlyWallet;
327
+ private arkProvider;
328
+ private indexerProvider;
329
+ private walletRepository;
330
+ private incomingFundsSubscription;
331
+ private contractEventsSubscription;
332
+ private onNextTick;
333
+ /**
334
+ * Instantiate a new WalletUpdater.
335
+ * Can override the default `messageTag` allowing more than one updater to run in parallel.
336
+ * Note that the default ServiceWorkerWallet sends messages to the default WalletUpdater tag.
337
+ */
338
+ constructor(options?: {
339
+ messageTag?: string;
340
+ });
341
+ start(...params: Parameters<MessageHandler["start"]>): Promise<void>;
342
+ stop(): Promise<void>;
343
+ tick(_now: number): Promise<WalletUpdaterResponse[]>;
344
+ private scheduleForNextTick;
345
+ private requireWallet;
346
+ private tagged;
347
+ handleMessage(message: WalletUpdaterRequest): Promise<WalletUpdaterResponse>;
348
+ private handleInitWallet;
349
+ private handleGetBalance;
350
+ private getAllBoardingUtxos;
351
+ /**
352
+ * Get spendable vtxos for the current wallet address
353
+ */
354
+ private getSpendableVtxos;
355
+ /**
356
+ * Get swept vtxos for the current wallet address
357
+ */
358
+ private getSweptVtxos;
359
+ private onWalletInitialized;
360
+ private handleSettle;
361
+ private handleSendBitcoin;
362
+ private handleSignTransaction;
363
+ private handleGetVtxos;
364
+ private clear;
365
+ private ensureContractEventBroadcasting;
366
+ }
@@ -1,10 +1,10 @@
1
- import { IWallet, WalletBalance, SendBitcoinParams, SettleParams, ArkTransaction, ExtendedCoin, ExtendedVirtualCoin, GetVtxosFilter, IReadonlyWallet } from "..";
2
- import { Request } from "./request";
3
- import { Response } from "./response";
1
+ import { IWallet, WalletBalance, SendBitcoinParams, SettleParams, ArkTransaction, ExtendedCoin, ExtendedVirtualCoin, GetVtxosFilter, StorageConfig, IReadonlyWallet, IReadonlyAssetManager, IAssetManager, Recipient } from "..";
4
2
  import { SettlementEvent } from "../../providers/ark";
5
3
  import { Identity, ReadonlyIdentity } from "../../identity";
6
4
  import { WalletRepository } from "../../repositories/walletRepository";
7
5
  import { ContractRepository } from "../../repositories/contractRepository";
6
+ import { ResponseGetStatus, WalletUpdaterRequest, WalletUpdaterResponse } from "./wallet-message-handler";
7
+ import type { IContractManager } from "../../contracts/contractManager";
8
8
  type PrivateKeyIdentity = Identity & {
9
9
  toHex(): string;
10
10
  };
@@ -27,10 +27,10 @@ type PrivateKeyIdentity = Identity & {
27
27
  * });
28
28
  *
29
29
  * // ADVANCED: Manual setup with service worker control
30
- * const serviceWorker = await setupServiceWorker("/service-worker.js");
30
+ * const worker = await setupServiceWorker("/service-worker.js");
31
31
  * const identity = SingleKey.fromHex('your_private_key_hex');
32
32
  * const wallet = await ServiceWorkerWallet.create({
33
- * serviceWorker,
33
+ * worker,
34
34
  * identity,
35
35
  * arkServerUrl: 'https://mutinynet.arkade.sh'
36
36
  * });
@@ -44,9 +44,11 @@ interface ServiceWorkerWalletOptions {
44
44
  arkServerPublicKey?: string;
45
45
  arkServerUrl: string;
46
46
  esploraUrl?: string;
47
- dbName?: string;
48
- dbVersion?: number;
47
+ storage?: StorageConfig;
49
48
  identity: ReadonlyIdentity | Identity;
49
+ delegatorUrl?: string;
50
+ walletUpdaterTag?: string;
51
+ messageBusTimeoutMs?: number;
50
52
  }
51
53
  export type ServiceWorkerWalletCreateOptions = ServiceWorkerWalletOptions & {
52
54
  serviceWorker: ServiceWorker;
@@ -56,10 +58,13 @@ export type ServiceWorkerWalletSetupOptions = ServiceWorkerWalletOptions & {
56
58
  };
57
59
  export declare class ServiceWorkerReadonlyWallet implements IReadonlyWallet {
58
60
  readonly serviceWorker: ServiceWorker;
61
+ protected readonly messageTag: string;
59
62
  readonly walletRepository: WalletRepository;
60
63
  readonly contractRepository: ContractRepository;
61
64
  readonly identity: ReadonlyIdentity;
62
- protected constructor(serviceWorker: ServiceWorker, identity: ReadonlyIdentity, walletRepository: WalletRepository, contractRepository: ContractRepository);
65
+ private readonly _readonlyAssetManager;
66
+ get assetManager(): IReadonlyAssetManager;
67
+ protected constructor(serviceWorker: ServiceWorker, identity: ReadonlyIdentity, walletRepository: WalletRepository, contractRepository: ContractRepository, messageTag: string);
63
68
  static create(options: ServiceWorkerWalletCreateOptions): Promise<ServiceWorkerReadonlyWallet>;
64
69
  /**
65
70
  * Simplified setup method that handles service worker registration,
@@ -83,23 +88,26 @@ export declare class ServiceWorkerReadonlyWallet implements IReadonlyWallet {
83
88
  * ```
84
89
  */
85
90
  static setup(options: ServiceWorkerWalletSetupOptions): Promise<ServiceWorkerReadonlyWallet>;
86
- protected sendMessage<T extends Request.Base>(message: T): Promise<Response.Base>;
91
+ protected sendMessage(request: WalletUpdaterRequest): Promise<WalletUpdaterResponse>;
87
92
  clear(): Promise<void>;
88
93
  getAddress(): Promise<string>;
89
94
  getBoardingAddress(): Promise<string>;
90
95
  getBalance(): Promise<WalletBalance>;
91
96
  getBoardingUtxos(): Promise<ExtendedCoin[]>;
92
- getStatus(): Promise<Response.WalletStatus["status"]>;
97
+ getStatus(): Promise<ResponseGetStatus["payload"]>;
93
98
  getTransactionHistory(): Promise<ArkTransaction[]>;
94
99
  getVtxos(filter?: GetVtxosFilter): Promise<ExtendedVirtualCoin[]>;
95
100
  reload(): Promise<boolean>;
101
+ getContractManager(): Promise<IContractManager>;
96
102
  }
97
103
  export declare class ServiceWorkerWallet extends ServiceWorkerReadonlyWallet implements IWallet {
98
104
  readonly serviceWorker: ServiceWorker;
99
105
  readonly walletRepository: WalletRepository;
100
106
  readonly contractRepository: ContractRepository;
101
107
  readonly identity: Identity;
102
- protected constructor(serviceWorker: ServiceWorker, identity: PrivateKeyIdentity, walletRepository: WalletRepository, contractRepository: ContractRepository);
108
+ private readonly _assetManager;
109
+ protected constructor(serviceWorker: ServiceWorker, identity: PrivateKeyIdentity, walletRepository: WalletRepository, contractRepository: ContractRepository, messageTag: string);
110
+ get assetManager(): IAssetManager;
103
111
  static create(options: ServiceWorkerWalletCreateOptions): Promise<ServiceWorkerWallet>;
104
112
  /**
105
113
  * Simplified setup method that handles service worker registration,
@@ -125,5 +133,6 @@ export declare class ServiceWorkerWallet extends ServiceWorkerReadonlyWallet imp
125
133
  static setup(options: ServiceWorkerWalletSetupOptions): Promise<ServiceWorkerWallet>;
126
134
  sendBitcoin(params: SendBitcoinParams): Promise<string>;
127
135
  settle(params?: SettleParams, callback?: (event: SettlementEvent) => void): Promise<string>;
136
+ send(...recipients: Recipient[]): Promise<string>;
128
137
  }
129
138
  export {};
@@ -1,5 +1,8 @@
1
- import type { Coin, ExtendedCoin, ExtendedVirtualCoin, VirtualCoin } from "..";
1
+ import { Recipient } from ".";
2
+ import { type Coin, type ExtendedCoin, type ExtendedVirtualCoin, type VirtualCoin } from "..";
3
+ import type { Contract } from "../contracts/types";
2
4
  import { ReadonlyWallet } from "./wallet";
5
+ import { Bytes } from "@scure/btc-signer/utils";
3
6
  export declare const DUST_AMOUNT = 546;
4
7
  export declare function extendVirtualCoin(wallet: {
5
8
  offchainTapscript: ReadonlyWallet["offchainTapscript"];
@@ -7,3 +10,11 @@ export declare function extendVirtualCoin(wallet: {
7
10
  export declare function extendCoin(wallet: {
8
11
  boardingTapscript: ReadonlyWallet["boardingTapscript"];
9
12
  }, utxo: Coin): ExtendedCoin;
13
+ export declare function extendVtxoFromContract(vtxo: VirtualCoin, contract: Contract): ExtendedVirtualCoin;
14
+ export declare function getRandomId(): string;
15
+ export declare function isValidArkAddress(address: string): boolean;
16
+ type ValidatedRecipient = Required<Recipient> & {
17
+ script: Bytes;
18
+ };
19
+ export declare function validateRecipients(recipients: Recipient[], dustAmount: number): ValidatedRecipient[];
20
+ export {};
@@ -0,0 +1,24 @@
1
+ import { Recipient } from ".";
2
+ import { Transaction } from "../utils/transaction";
3
+ import type { Network } from "../networks";
4
+ export declare const ErrOffchainOutputNotFound: (address: string) => Error;
5
+ export declare const ErrInvalidAssetOutputAmount: (got: bigint, want: bigint, assetId: string) => Error;
6
+ export declare const ErrAssetGroupNotFound: (assetId: string) => Error;
7
+ export declare const ErrAssetOutputNotFound: (assetId: string, outputIndex: number) => Error;
8
+ export declare const ErrInvalidOnchainOutputAmount: (address: string) => Error;
9
+ export declare const ErrInvalidOnchainOutputAssets: (address: string) => Error;
10
+ export declare const ErrOnchainOutputNotFound: (address: string) => Error;
11
+ export declare const ErrInvalidOffchainOutputAmount: (address: string) => Error;
12
+ /**
13
+ * Validates both offchain and onchain recipients.
14
+ * Offchain recipients are checked against vtxo tree leaves for correct amounts and assets.
15
+ * Onchain recipients are validated against the round transaction outputs (amounts and scripts)
16
+ * via validateOnchainRecipient.
17
+ *
18
+ * @param commitmentTx - The commitment transaction to validate against
19
+ * @param vtxoTreeLeaves - The vtxo tree leaves to validate against
20
+ * @param recipients - The expected recipients to validate (both offchain and onchain)
21
+ * @param network - Network for decoding onchain addresses (e.g. mainnet, testnet)
22
+ * @throws {Error} if a recipient is not present or invalid in the vtxo tree or commitment tx
23
+ */
24
+ export declare function validateBatchRecipients(commitmentTx: Transaction, vtxoTreeLeaves: Transaction[], recipients: Recipient[], network: Network): void;