@buildonspark/spark-sdk 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (314) hide show
  1. package/dist/graphql/client.d.ts +24 -0
  2. package/dist/graphql/client.js +177 -0
  3. package/dist/graphql/client.js.map +1 -0
  4. package/dist/graphql/mutations/CompleteCoopExit.d.ts +1 -0
  5. package/dist/graphql/mutations/CompleteCoopExit.js +19 -0
  6. package/dist/graphql/mutations/CompleteCoopExit.js.map +1 -0
  7. package/dist/graphql/mutations/CompleteLeavesSwap.d.ts +1 -0
  8. package/dist/graphql/mutations/CompleteLeavesSwap.js +17 -0
  9. package/dist/graphql/mutations/CompleteLeavesSwap.js.map +1 -0
  10. package/dist/graphql/mutations/RequestCoopExit.d.ts +1 -0
  11. package/dist/graphql/mutations/RequestCoopExit.js +20 -0
  12. package/dist/graphql/mutations/RequestCoopExit.js.map +1 -0
  13. package/dist/graphql/mutations/RequestLightningReceive.d.ts +1 -0
  14. package/dist/graphql/mutations/RequestLightningReceive.js +26 -0
  15. package/dist/graphql/mutations/RequestLightningReceive.js.map +1 -0
  16. package/dist/graphql/mutations/RequestLightningSend.d.ts +1 -0
  17. package/dist/graphql/mutations/RequestLightningSend.js +18 -0
  18. package/dist/graphql/mutations/RequestLightningSend.js.map +1 -0
  19. package/dist/graphql/mutations/RequestSwapLeaves.d.ts +1 -0
  20. package/dist/graphql/mutations/RequestSwapLeaves.js +26 -0
  21. package/dist/graphql/mutations/RequestSwapLeaves.js.map +1 -0
  22. package/dist/graphql/objects/BitcoinNetwork.d.ts +17 -0
  23. package/dist/graphql/objects/BitcoinNetwork.js +20 -0
  24. package/dist/graphql/objects/BitcoinNetwork.js.map +1 -0
  25. package/dist/graphql/objects/CompleteCoopExitInput.d.ts +7 -0
  26. package/dist/graphql/objects/CompleteCoopExitInput.js +14 -0
  27. package/dist/graphql/objects/CompleteCoopExitInput.js.map +1 -0
  28. package/dist/graphql/objects/CompleteCoopExitOutput.d.ts +7 -0
  29. package/dist/graphql/objects/CompleteCoopExitOutput.js +19 -0
  30. package/dist/graphql/objects/CompleteCoopExitOutput.js.map +1 -0
  31. package/dist/graphql/objects/CompleteLeavesSwapInput.d.ts +8 -0
  32. package/dist/graphql/objects/CompleteLeavesSwapInput.js +16 -0
  33. package/dist/graphql/objects/CompleteLeavesSwapInput.js.map +1 -0
  34. package/dist/graphql/objects/CompleteLeavesSwapOutput.d.ts +7 -0
  35. package/dist/graphql/objects/CompleteLeavesSwapOutput.js +19 -0
  36. package/dist/graphql/objects/CompleteLeavesSwapOutput.js.map +1 -0
  37. package/dist/graphql/objects/Connection.d.ts +16 -0
  38. package/dist/graphql/objects/Connection.js +56 -0
  39. package/dist/graphql/objects/Connection.js.map +1 -0
  40. package/dist/graphql/objects/CoopExitFeeEstimateInput.d.ts +7 -0
  41. package/dist/graphql/objects/CoopExitFeeEstimateInput.js +14 -0
  42. package/dist/graphql/objects/CoopExitFeeEstimateInput.js.map +1 -0
  43. package/dist/graphql/objects/CoopExitFeeEstimateOutput.d.ts +8 -0
  44. package/dist/graphql/objects/CoopExitFeeEstimateOutput.js +26 -0
  45. package/dist/graphql/objects/CoopExitFeeEstimateOutput.js.map +1 -0
  46. package/dist/graphql/objects/CoopExitRequest.d.ts +32 -0
  47. package/dist/graphql/objects/CoopExitRequest.js +64 -0
  48. package/dist/graphql/objects/CoopExitRequest.js.map +1 -0
  49. package/dist/graphql/objects/CurrencyAmount.d.ts +24 -0
  50. package/dist/graphql/objects/CurrencyAmount.js +30 -0
  51. package/dist/graphql/objects/CurrencyAmount.js.map +1 -0
  52. package/dist/graphql/objects/CurrencyUnit.d.ts +27 -0
  53. package/dist/graphql/objects/CurrencyUnit.js +30 -0
  54. package/dist/graphql/objects/CurrencyUnit.js.map +1 -0
  55. package/dist/graphql/objects/Entity.d.ts +16 -0
  56. package/dist/graphql/objects/Entity.js +141 -0
  57. package/dist/graphql/objects/Entity.js.map +1 -0
  58. package/dist/graphql/objects/Invoice.d.ts +15 -0
  59. package/dist/graphql/objects/Invoice.js +45 -0
  60. package/dist/graphql/objects/Invoice.js.map +1 -0
  61. package/dist/graphql/objects/Leaf.d.ts +11 -0
  62. package/dist/graphql/objects/Leaf.js +29 -0
  63. package/dist/graphql/objects/Leaf.js.map +1 -0
  64. package/dist/graphql/objects/LeavesSwapFeeEstimateInput.d.ts +6 -0
  65. package/dist/graphql/objects/LeavesSwapFeeEstimateInput.js +12 -0
  66. package/dist/graphql/objects/LeavesSwapFeeEstimateInput.js.map +1 -0
  67. package/dist/graphql/objects/LeavesSwapFeeEstimateOutput.d.ts +8 -0
  68. package/dist/graphql/objects/LeavesSwapFeeEstimateOutput.js +26 -0
  69. package/dist/graphql/objects/LeavesSwapFeeEstimateOutput.js.map +1 -0
  70. package/dist/graphql/objects/LeavesSwapRequest.d.ts +32 -0
  71. package/dist/graphql/objects/LeavesSwapRequest.js +87 -0
  72. package/dist/graphql/objects/LeavesSwapRequest.js.map +1 -0
  73. package/dist/graphql/objects/LightningReceiveFeeEstimateInput.d.ts +8 -0
  74. package/dist/graphql/objects/LightningReceiveFeeEstimateInput.js +15 -0
  75. package/dist/graphql/objects/LightningReceiveFeeEstimateInput.js.map +1 -0
  76. package/dist/graphql/objects/LightningReceiveFeeEstimateOutput.d.ts +8 -0
  77. package/dist/graphql/objects/LightningReceiveFeeEstimateOutput.js +26 -0
  78. package/dist/graphql/objects/LightningReceiveFeeEstimateOutput.js.map +1 -0
  79. package/dist/graphql/objects/LightningReceiveRequest.d.ts +31 -0
  80. package/dist/graphql/objects/LightningReceiveRequest.js +93 -0
  81. package/dist/graphql/objects/LightningReceiveRequest.js.map +1 -0
  82. package/dist/graphql/objects/LightningReceiveRequestStatus.d.ts +16 -0
  83. package/dist/graphql/objects/LightningReceiveRequestStatus.js +19 -0
  84. package/dist/graphql/objects/LightningReceiveRequestStatus.js.map +1 -0
  85. package/dist/graphql/objects/LightningSendFeeEstimateInput.d.ts +6 -0
  86. package/dist/graphql/objects/LightningSendFeeEstimateInput.js +12 -0
  87. package/dist/graphql/objects/LightningSendFeeEstimateInput.js.map +1 -0
  88. package/dist/graphql/objects/LightningSendFeeEstimateOutput.d.ts +8 -0
  89. package/dist/graphql/objects/LightningSendFeeEstimateOutput.js +26 -0
  90. package/dist/graphql/objects/LightningSendFeeEstimateOutput.js.map +1 -0
  91. package/dist/graphql/objects/LightningSendRequest.d.ts +32 -0
  92. package/dist/graphql/objects/LightningSendRequest.js +78 -0
  93. package/dist/graphql/objects/LightningSendRequest.js.map +1 -0
  94. package/dist/graphql/objects/LightningSendRequestStatus.d.ts +15 -0
  95. package/dist/graphql/objects/LightningSendRequestStatus.js +18 -0
  96. package/dist/graphql/objects/LightningSendRequestStatus.js.map +1 -0
  97. package/dist/graphql/objects/PageInfo.d.ts +11 -0
  98. package/dist/graphql/objects/PageInfo.js +26 -0
  99. package/dist/graphql/objects/PageInfo.js.map +1 -0
  100. package/dist/graphql/objects/RequestCoopExitInput.d.ts +7 -0
  101. package/dist/graphql/objects/RequestCoopExitInput.js +14 -0
  102. package/dist/graphql/objects/RequestCoopExitInput.js.map +1 -0
  103. package/dist/graphql/objects/RequestCoopExitOutput.d.ts +7 -0
  104. package/dist/graphql/objects/RequestCoopExitOutput.js +19 -0
  105. package/dist/graphql/objects/RequestCoopExitOutput.js.map +1 -0
  106. package/dist/graphql/objects/RequestLeavesSwapInput.d.ts +13 -0
  107. package/dist/graphql/objects/RequestLeavesSwapInput.js +25 -0
  108. package/dist/graphql/objects/RequestLeavesSwapInput.js.map +1 -0
  109. package/dist/graphql/objects/RequestLeavesSwapOutput.d.ts +7 -0
  110. package/dist/graphql/objects/RequestLeavesSwapOutput.js +19 -0
  111. package/dist/graphql/objects/RequestLeavesSwapOutput.js.map +1 -0
  112. package/dist/graphql/objects/RequestLightningReceiveInput.d.ts +16 -0
  113. package/dist/graphql/objects/RequestLightningReceiveInput.js +21 -0
  114. package/dist/graphql/objects/RequestLightningReceiveInput.js.map +1 -0
  115. package/dist/graphql/objects/RequestLightningReceiveOutput.d.ts +7 -0
  116. package/dist/graphql/objects/RequestLightningReceiveOutput.js +19 -0
  117. package/dist/graphql/objects/RequestLightningReceiveOutput.js.map +1 -0
  118. package/dist/graphql/objects/RequestLightningSendInput.d.ts +7 -0
  119. package/dist/graphql/objects/RequestLightningSendInput.js +14 -0
  120. package/dist/graphql/objects/RequestLightningSendInput.js.map +1 -0
  121. package/dist/graphql/objects/RequestLightningSendOutput.d.ts +7 -0
  122. package/dist/graphql/objects/RequestLightningSendOutput.js +19 -0
  123. package/dist/graphql/objects/RequestLightningSendOutput.js.map +1 -0
  124. package/dist/graphql/objects/SparkCoopExitRequestStatus.d.ts +11 -0
  125. package/dist/graphql/objects/SparkCoopExitRequestStatus.js +14 -0
  126. package/dist/graphql/objects/SparkCoopExitRequestStatus.js.map +1 -0
  127. package/dist/graphql/objects/SparkLeavesSwapRequestStatus.d.ts +11 -0
  128. package/dist/graphql/objects/SparkLeavesSwapRequestStatus.js +14 -0
  129. package/dist/graphql/objects/SparkLeavesSwapRequestStatus.js.map +1 -0
  130. package/dist/graphql/objects/SparkTransferToLeavesConnection.d.ts +19 -0
  131. package/dist/graphql/objects/SparkTransferToLeavesConnection.js +45 -0
  132. package/dist/graphql/objects/SparkTransferToLeavesConnection.js.map +1 -0
  133. package/dist/graphql/objects/SwapLeaf.d.ts +9 -0
  134. package/dist/graphql/objects/SwapLeaf.js +23 -0
  135. package/dist/graphql/objects/SwapLeaf.js.map +1 -0
  136. package/dist/graphql/objects/Transfer.d.ts +24 -0
  137. package/dist/graphql/objects/Transfer.js +82 -0
  138. package/dist/graphql/objects/Transfer.js.map +1 -0
  139. package/dist/graphql/objects/UserLeafInput.d.ts +8 -0
  140. package/dist/graphql/objects/UserLeafInput.js +16 -0
  141. package/dist/graphql/objects/UserLeafInput.js.map +1 -0
  142. package/dist/graphql/objects/WalletUser.d.ts +21 -0
  143. package/dist/graphql/objects/WalletUser.js +48 -0
  144. package/dist/graphql/objects/WalletUser.js.map +1 -0
  145. package/dist/graphql/objects/index.d.ts +41 -0
  146. package/dist/graphql/objects/index.js +13 -0
  147. package/dist/graphql/objects/index.js.map +1 -0
  148. package/dist/graphql/queries/CoopExitFeeEstimate.d.ts +1 -0
  149. package/dist/graphql/queries/CoopExitFeeEstimate.js +18 -0
  150. package/dist/graphql/queries/CoopExitFeeEstimate.js.map +1 -0
  151. package/dist/graphql/queries/CurrentUser.d.ts +1 -0
  152. package/dist/graphql/queries/CurrentUser.js +10 -0
  153. package/dist/graphql/queries/CurrentUser.js.map +1 -0
  154. package/dist/graphql/queries/LightningReceiveFeeEstimate.d.ts +1 -0
  155. package/dist/graphql/queries/LightningReceiveFeeEstimate.js +18 -0
  156. package/dist/graphql/queries/LightningReceiveFeeEstimate.js.map +1 -0
  157. package/dist/graphql/queries/LightningSendFeeEstimate.d.ts +1 -0
  158. package/dist/graphql/queries/LightningSendFeeEstimate.js +16 -0
  159. package/dist/graphql/queries/LightningSendFeeEstimate.js.map +1 -0
  160. package/dist/proto/common.d.ts +58 -0
  161. package/dist/proto/common.js +350 -0
  162. package/dist/proto/common.js.map +1 -0
  163. package/dist/proto/google/protobuf/descriptor.d.ts +1228 -0
  164. package/dist/proto/google/protobuf/descriptor.js +5070 -0
  165. package/dist/proto/google/protobuf/descriptor.js.map +1 -0
  166. package/dist/proto/google/protobuf/duration.d.ts +99 -0
  167. package/dist/proto/google/protobuf/duration.js +90 -0
  168. package/dist/proto/google/protobuf/duration.js.map +1 -0
  169. package/dist/proto/google/protobuf/empty.d.ts +33 -0
  170. package/dist/proto/google/protobuf/empty.js +46 -0
  171. package/dist/proto/google/protobuf/empty.js.map +1 -0
  172. package/dist/proto/google/protobuf/timestamp.d.ts +128 -0
  173. package/dist/proto/google/protobuf/timestamp.js +90 -0
  174. package/dist/proto/google/protobuf/timestamp.js.map +1 -0
  175. package/dist/proto/mock.d.ts +48 -0
  176. package/dist/proto/mock.js +103 -0
  177. package/dist/proto/mock.js.map +1 -0
  178. package/dist/proto/spark.d.ts +1101 -0
  179. package/dist/proto/spark.js +9565 -0
  180. package/dist/proto/spark.js.map +1 -0
  181. package/dist/proto/spark_authn.d.ts +111 -0
  182. package/dist/proto/spark_authn.js +517 -0
  183. package/dist/proto/spark_authn.js.map +1 -0
  184. package/dist/proto/validate/validate.d.ts +1087 -0
  185. package/dist/proto/validate/validate.js +4437 -0
  186. package/dist/proto/validate/validate.js.map +1 -0
  187. package/dist/services/config.d.ts +24 -0
  188. package/dist/services/config.js +29 -0
  189. package/dist/services/config.js.map +1 -0
  190. package/dist/services/connection.d.ts +21 -0
  191. package/dist/services/connection.js +154 -0
  192. package/dist/services/connection.js.map +1 -0
  193. package/dist/services/coop-exit.d.ts +20 -0
  194. package/dist/services/coop-exit.js +102 -0
  195. package/dist/services/coop-exit.js.map +1 -0
  196. package/dist/services/deposit.d.ts +21 -0
  197. package/dist/services/deposit.js +214 -0
  198. package/dist/services/deposit.js.map +1 -0
  199. package/dist/services/lightning.d.ts +31 -0
  200. package/dist/services/lightning.js +196 -0
  201. package/dist/services/lightning.js.map +1 -0
  202. package/dist/services/token-transactions.d.ts +17 -0
  203. package/dist/services/token-transactions.js +297 -0
  204. package/dist/services/token-transactions.js.map +1 -0
  205. package/dist/services/transfer.d.ts +63 -0
  206. package/dist/services/transfer.js +499 -0
  207. package/dist/services/transfer.js.map +1 -0
  208. package/dist/services/tree-creation.d.ts +30 -0
  209. package/dist/services/tree-creation.js +404 -0
  210. package/dist/services/tree-creation.js.map +1 -0
  211. package/dist/signer/signer.d.ts +97 -0
  212. package/dist/signer/signer.js +239 -0
  213. package/dist/signer/signer.js.map +1 -0
  214. package/dist/spark-sdk.d.ts +87 -0
  215. package/dist/spark-sdk.js +675 -0
  216. package/dist/spark-sdk.js.map +1 -0
  217. package/dist/tests/adaptor-signature.test.d.ts +1 -0
  218. package/dist/tests/adaptor-signature.test.js +34 -0
  219. package/dist/tests/adaptor-signature.test.js.map +1 -0
  220. package/dist/tests/bitcoin.test.d.ts +1 -0
  221. package/dist/tests/bitcoin.test.js +77 -0
  222. package/dist/tests/bitcoin.test.js.map +1 -0
  223. package/dist/tests/coop-exit.test.d.ts +1 -0
  224. package/dist/tests/coop-exit.test.js +140 -0
  225. package/dist/tests/coop-exit.test.js.map +1 -0
  226. package/dist/tests/deposit.test.d.ts +1 -0
  227. package/dist/tests/deposit.test.js +57 -0
  228. package/dist/tests/deposit.test.js.map +1 -0
  229. package/dist/tests/keys.test.d.ts +1 -0
  230. package/dist/tests/keys.test.js +53 -0
  231. package/dist/tests/keys.test.js.map +1 -0
  232. package/dist/tests/lightning.test.d.ts +1 -0
  233. package/dist/tests/lightning.test.js +175 -0
  234. package/dist/tests/lightning.test.js.map +1 -0
  235. package/dist/tests/secret-sharing.test.d.ts +1 -0
  236. package/dist/tests/secret-sharing.test.js +41 -0
  237. package/dist/tests/secret-sharing.test.js.map +1 -0
  238. package/dist/tests/swap.test.d.ts +1 -0
  239. package/dist/tests/swap.test.js +131 -0
  240. package/dist/tests/swap.test.js.map +1 -0
  241. package/dist/tests/test-util.d.ts +24 -0
  242. package/dist/tests/test-util.js +137 -0
  243. package/dist/tests/test-util.js.map +1 -0
  244. package/dist/tests/tokens.test.d.ts +1 -0
  245. package/dist/tests/tokens.test.js +42 -0
  246. package/dist/tests/tokens.test.js.map +1 -0
  247. package/dist/tests/transfer.test.d.ts +1 -0
  248. package/dist/tests/transfer.test.js +175 -0
  249. package/dist/tests/transfer.test.js.map +1 -0
  250. package/dist/tests/tree-creation.test.d.ts +1 -0
  251. package/dist/tests/tree-creation.test.js +32 -0
  252. package/dist/tests/tree-creation.test.js.map +1 -0
  253. package/dist/tests/utils/spark-testing-wallet.d.ts +14 -0
  254. package/dist/tests/utils/spark-testing-wallet.js +13 -0
  255. package/dist/tests/utils/spark-testing-wallet.js.map +1 -0
  256. package/dist/tests/utils/test-faucet.d.ts +22 -0
  257. package/dist/tests/utils/test-faucet.js +148 -0
  258. package/dist/tests/utils/test-faucet.js.map +1 -0
  259. package/dist/types/index.d.ts +3 -0
  260. package/dist/types/index.js +4 -0
  261. package/dist/types/index.js.map +1 -0
  262. package/dist/utils/adaptor-signature.d.ts +7 -0
  263. package/dist/utils/adaptor-signature.js +114 -0
  264. package/dist/utils/adaptor-signature.js.map +1 -0
  265. package/dist/utils/bitcoin.d.ts +12 -0
  266. package/dist/utils/bitcoin.js +87 -0
  267. package/dist/utils/bitcoin.js.map +1 -0
  268. package/dist/utils/crypto.d.ts +1 -0
  269. package/dist/utils/crypto.js +14 -0
  270. package/dist/utils/crypto.js.map +1 -0
  271. package/dist/utils/index.d.ts +14 -0
  272. package/dist/utils/index.js +15 -0
  273. package/dist/utils/index.js.map +1 -0
  274. package/dist/utils/keys.d.ts +7 -0
  275. package/dist/utils/keys.js +68 -0
  276. package/dist/utils/keys.js.map +1 -0
  277. package/dist/utils/network.d.ts +11 -0
  278. package/dist/utils/network.js +26 -0
  279. package/dist/utils/network.js.map +1 -0
  280. package/dist/utils/proof.d.ts +1 -0
  281. package/dist/utils/proof.js +12 -0
  282. package/dist/utils/proof.js.map +1 -0
  283. package/dist/utils/response-validation.d.ts +1 -0
  284. package/dist/utils/response-validation.js +16 -0
  285. package/dist/utils/response-validation.js.map +1 -0
  286. package/dist/utils/secret-sharing.d.ts +26 -0
  287. package/dist/utils/secret-sharing.js +175 -0
  288. package/dist/utils/secret-sharing.js.map +1 -0
  289. package/dist/utils/signing.d.ts +12 -0
  290. package/dist/utils/signing.js +67 -0
  291. package/dist/utils/signing.js.map +1 -0
  292. package/dist/utils/token-hashing.d.ts +3 -0
  293. package/dist/utils/token-hashing.js +117 -0
  294. package/dist/utils/token-hashing.js.map +1 -0
  295. package/dist/utils/token-keyshares.d.ts +5 -0
  296. package/dist/utils/token-keyshares.js +17 -0
  297. package/dist/utils/token-keyshares.js.map +1 -0
  298. package/dist/utils/token-transactions.d.ts +5 -0
  299. package/dist/utils/token-transactions.js +40 -0
  300. package/dist/utils/token-transactions.js.map +1 -0
  301. package/dist/utils/transaction.d.ts +8 -0
  302. package/dist/utils/transaction.js +33 -0
  303. package/dist/utils/transaction.js.map +1 -0
  304. package/dist/utils/wasm-wrapper.d.ts +2 -0
  305. package/dist/utils/wasm-wrapper.js +36 -0
  306. package/dist/utils/wasm-wrapper.js.map +1 -0
  307. package/dist/utils/wasm.d.ts +54 -0
  308. package/dist/utils/wasm.js +26 -0
  309. package/dist/utils/wasm.js.map +1 -0
  310. package/dist/wasm/spark_bindings.d.ts +229 -0
  311. package/dist/wasm/spark_bindings.js +1097 -0
  312. package/dist/wasm/spark_bindings.js.map +1 -0
  313. package/dist/wasm/spark_bindings_bg.wasm +0 -0
  314. package/package.json +140 -0
@@ -0,0 +1,117 @@
1
+ import { sha256 } from "@scure/btc-signer/utils";
2
+ export function hashTokenTransaction(tokenTransaction, partialHash = false) {
3
+ if (!tokenTransaction) {
4
+ throw new Error("token transaction cannot be nil");
5
+ }
6
+ let allHashes = [];
7
+ // Hash input leaves if a transfer
8
+ if (tokenTransaction.tokenInput?.$case === "transferInput") {
9
+ // Hash leaves_to_spend
10
+ for (const leaf of tokenTransaction.tokenInput.transferInput
11
+ .leavesToSpend || []) {
12
+ const hashObj = sha256.create();
13
+ if (leaf.prevTokenTransactionHash) {
14
+ hashObj.update(leaf.prevTokenTransactionHash);
15
+ }
16
+ const voutBytes = new Uint8Array(4);
17
+ new DataView(voutBytes.buffer).setUint32(0, leaf.prevTokenTransactionLeafVout, false); // false for big-endian
18
+ hashObj.update(voutBytes);
19
+ allHashes.push(hashObj.digest());
20
+ }
21
+ }
22
+ // Hash input issuance if an issuance
23
+ if (tokenTransaction.tokenInput?.$case === "mintInput") {
24
+ const hashObj = sha256.create();
25
+ if (tokenTransaction.tokenInput.mintInput.issuerPublicKey) {
26
+ hashObj.update(tokenTransaction.tokenInput.mintInput.issuerPublicKey);
27
+ }
28
+ if (tokenTransaction.tokenInput.mintInput.issuerProvidedTimestamp) {
29
+ const timestampBytes = new Uint8Array(8);
30
+ new DataView(timestampBytes.buffer).setBigUint64(0, BigInt(tokenTransaction.tokenInput.mintInput.issuerProvidedTimestamp), true // true for little-endian to match Go implementation
31
+ );
32
+ hashObj.update(timestampBytes);
33
+ }
34
+ allHashes.push(hashObj.digest());
35
+ }
36
+ // Hash output leaves
37
+ for (const leaf of tokenTransaction.outputLeaves || []) {
38
+ const hashObj = sha256.create();
39
+ // Only hash ID if it's not empty and not in partial hash mode
40
+ if (leaf.id && !partialHash) {
41
+ hashObj.update(new TextEncoder().encode(leaf.id));
42
+ }
43
+ if (leaf.ownerPublicKey) {
44
+ hashObj.update(leaf.ownerPublicKey);
45
+ }
46
+ if (leaf.revocationPublicKey && !partialHash) {
47
+ hashObj.update(leaf.revocationPublicKey);
48
+ }
49
+ if (leaf.withdrawBondSats && !partialHash) {
50
+ const bondBytes = new Uint8Array(8);
51
+ new DataView(bondBytes.buffer).setBigUint64(0, BigInt(leaf.withdrawBondSats), false);
52
+ hashObj.update(bondBytes);
53
+ }
54
+ if (leaf.withdrawRelativeBlockLocktime && !partialHash) {
55
+ const locktimeBytes = new Uint8Array(8);
56
+ new DataView(locktimeBytes.buffer).setBigUint64(0, BigInt(leaf.withdrawRelativeBlockLocktime), false);
57
+ hashObj.update(locktimeBytes);
58
+ }
59
+ if (leaf.tokenPublicKey) {
60
+ hashObj.update(leaf.tokenPublicKey);
61
+ }
62
+ if (leaf.tokenAmount) {
63
+ hashObj.update(leaf.tokenAmount);
64
+ }
65
+ allHashes.push(hashObj.digest());
66
+ }
67
+ // Sort operator public keys before hashing
68
+ const sortedPubKeys = [
69
+ ...(tokenTransaction.sparkOperatorIdentityPublicKeys || []),
70
+ ].sort((a, b) => {
71
+ for (let i = 0; i < a.length && i < b.length; i++) {
72
+ // @ts-ignore - i < a and b length
73
+ if (a[i] !== b[i])
74
+ return a[i] - b[i];
75
+ }
76
+ return a.length - b.length;
77
+ });
78
+ // Hash spark operator identity public keys
79
+ for (const pubKey of sortedPubKeys) {
80
+ const hashObj = sha256.create();
81
+ if (pubKey) {
82
+ hashObj.update(pubKey);
83
+ }
84
+ allHashes.push(hashObj.digest());
85
+ }
86
+ // Final hash of all concatenated hashes
87
+ const finalHashObj = sha256.create();
88
+ const concatenatedHashes = new Uint8Array(allHashes.reduce((sum, hash) => sum + hash.length, 0));
89
+ let offset = 0;
90
+ for (const hash of allHashes) {
91
+ concatenatedHashes.set(hash, offset);
92
+ offset += hash.length;
93
+ }
94
+ finalHashObj.update(concatenatedHashes);
95
+ return finalHashObj.digest();
96
+ }
97
+ export function hashOperatorSpecificTokenTransactionSignablePayload(payload) {
98
+ if (!payload) {
99
+ throw new Error("revocation keyshare signable payload cannot be nil");
100
+ }
101
+ let allHashes = new Uint8Array(0);
102
+ // Hash final_token_transaction_hash
103
+ const hash1 = sha256(payload.finalTokenTransactionHash || new Uint8Array(0));
104
+ allHashes = concatenateUint8Arrays(allHashes, hash1);
105
+ // Hash operator_identity_public_key
106
+ const hash2 = sha256(payload.operatorIdentityPublicKey || new Uint8Array(0));
107
+ allHashes = concatenateUint8Arrays(allHashes, hash2);
108
+ // Final hash of all concatenated hashes
109
+ return sha256(allHashes);
110
+ }
111
+ function concatenateUint8Arrays(array1, array2) {
112
+ const result = new Uint8Array(array1.length + array2.length);
113
+ result.set(array1, 0);
114
+ result.set(array2, array1.length);
115
+ return result;
116
+ }
117
+ //# sourceMappingURL=token-hashing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-hashing.js","sourceRoot":"","sources":["../../src/utils/token-hashing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export interface KeyshareWithOperatorIndex {
2
+ index: number;
3
+ keyshare: Uint8Array;
4
+ }
5
+ export declare function recoverPrivateKeyFromKeyshares(keyshares: KeyshareWithOperatorIndex[], threshold: number): Uint8Array;
@@ -0,0 +1,17 @@
1
+ import { secp256k1 } from "@noble/curves/secp256k1";
2
+ import { bigIntToPrivateKey, recoverSecret, } from "./secret-sharing.js";
3
+ export function recoverPrivateKeyFromKeyshares(keyshares, threshold) {
4
+ // Convert keyshares to secret shares format
5
+ const shares = keyshares.map((keyshare) => ({
6
+ fieldModulus: BigInt("0x" + secp256k1.CURVE.n.toString(16)), // secp256k1 curve order
7
+ threshold,
8
+ index: BigInt(keyshare.index),
9
+ share: BigInt("0x" + Buffer.from(keyshare.keyshare).toString("hex")),
10
+ proofs: [],
11
+ }));
12
+ // Recover the secret
13
+ const recoveredKey = recoverSecret(shares);
14
+ // Convert to bytes
15
+ return bigIntToPrivateKey(recoveredKey);
16
+ }
17
+ //# sourceMappingURL=token-keyshares.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-keyshares.js","sourceRoot":"","sources":["../../src/utils/token-keyshares.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EACL,kBAAkB,EAClB,aAAa,GAEd,MAAM,qBAAqB,CAAC;AAO7B,MAAM,UAAU,8BAA8B,CAC5C,SAAsC,EACtC,SAAiB;IAEjB,4CAA4C;IAC5C,MAAM,MAAM,GAA4B,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACnE,YAAY,EAAE,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,wBAAwB;QACrF,SAAS;QACT,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC7B,KAAK,EAAE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpE,MAAM,EAAE,EAAE;KACX,CAAC,CAAC,CAAC;IAEJ,qBAAqB;IACrB,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAE3C,mBAAmB;IACnB,OAAO,kBAAkB,CAAC,YAAY,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { LeafWithPreviousTransactionData, TokenTransaction } from "../proto/spark.js";
2
+ export declare function getTokenLeavesSum(leaves: LeafWithPreviousTransactionData[]): bigint;
3
+ export declare function extractOutputLeaves(fullTokenTransaction: TokenTransaction): LeafWithPreviousTransactionData[];
4
+ export declare function calculateAvailableTokenAmount(outputLeaves: LeafWithPreviousTransactionData[]): bigint;
5
+ export declare function checkIfSelectedLeavesAreAvailable(selectedLeaves: LeafWithPreviousTransactionData[], tokenLeaves: Map<string, LeafWithPreviousTransactionData[]>, tokenPublicKey: Uint8Array): boolean;
@@ -0,0 +1,40 @@
1
+ import { bytesToHex, bytesToNumberBE } from "@noble/curves/abstract/utils";
2
+ import { hashTokenTransaction } from "./token-hashing.js";
3
+ export function getTokenLeavesSum(leaves) {
4
+ return leaves.reduce((sum, leaf) => sum + BigInt(bytesToNumberBE(leaf.leaf.tokenAmount)), BigInt(0));
5
+ }
6
+ export function extractOutputLeaves(fullTokenTransaction) {
7
+ const outputLeaves = [];
8
+ const hash = hashTokenTransaction(fullTokenTransaction, true);
9
+ fullTokenTransaction.outputLeaves.forEach((output, index) => {
10
+ outputLeaves.push({
11
+ leaf: output,
12
+ previousTransactionHash: hash,
13
+ previousTransactionVout: index,
14
+ });
15
+ });
16
+ return outputLeaves;
17
+ }
18
+ export function calculateAvailableTokenAmount(outputLeaves) {
19
+ return outputLeaves.reduce((sum, leaf) => sum + BigInt(bytesToNumberBE(leaf.leaf.tokenAmount)), BigInt(0));
20
+ }
21
+ export function checkIfSelectedLeavesAreAvailable(selectedLeaves, tokenLeaves, tokenPublicKey) {
22
+ const tokenPubKeyHex = bytesToHex(tokenPublicKey);
23
+ const tokenLeavesAvailable = tokenLeaves.get(tokenPubKeyHex);
24
+ if (!tokenLeavesAvailable) {
25
+ return false;
26
+ }
27
+ if (selectedLeaves.length === 0 ||
28
+ tokenLeavesAvailable.length < selectedLeaves.length) {
29
+ return false;
30
+ }
31
+ // Create a Set of available leaf IDs for O(n + m) lookup
32
+ const availableLeafIds = new Set(tokenLeavesAvailable.map((leaf) => leaf.leaf.id));
33
+ for (const selectedLeaf of selectedLeaves) {
34
+ if (!selectedLeaf.leaf?.id || !availableLeafIds.has(selectedLeaf.leaf.id)) {
35
+ return false;
36
+ }
37
+ }
38
+ return true;
39
+ }
40
+ //# sourceMappingURL=token-transactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-transactions.js","sourceRoot":"","sources":["../../src/utils/token-transactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAK3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,UAAU,iBAAiB,CAC/B,MAAyC;IAEzC,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAK,CAAC,WAAY,CAAC,CAAC,EACrE,MAAM,CAAC,CAAC,CAAC,CACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,oBAAsC;IAEtC,MAAM,YAAY,GAAsC,EAAE,CAAC;IAC3D,MAAM,IAAI,GAAG,oBAAoB,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IAE9D,oBAAoB,CAAC,YAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAC3D,YAAY,CAAC,IAAI,CAAC;YAChB,IAAI,EAAE,MAAM;YACZ,uBAAuB,EAAE,IAAK;YAC9B,uBAAuB,EAAE,KAAK;SAC/B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,YAA+C;IAE/C,OAAO,YAAY,CAAC,MAAM,CACxB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAK,CAAC,WAAY,CAAC,CAAC,EACrE,MAAM,CAAC,CAAC,CAAC,CACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,cAAiD,EACjD,WAA2D,EAC3D,cAA0B;IAE1B,MAAM,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAClD,MAAM,oBAAoB,GAAG,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC7D,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IACE,cAAc,CAAC,MAAM,KAAK,CAAC;QAC3B,oBAAoB,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,EACnD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yDAAyD;IACzD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAC9B,oBAAoB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAK,CAAC,EAAE,CAAC,CAClD,CAAC;IAEF,KAAK,MAAM,YAAY,IAAI,cAAc,EAAE,CAAC;QAC1C,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1E,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { Transaction } from "@scure/btc-signer";
2
+ import { TreeNode } from "../proto/spark.js";
3
+ import { Network } from "./network.js";
4
+ export declare function createRefundTx(leaf: TreeNode, receivingPubkey: Uint8Array, network: Network): {
5
+ refundTx: Transaction;
6
+ sighash: Uint8Array;
7
+ };
8
+ export declare function getNextTransactionSequence(currSequence?: number): number;
@@ -0,0 +1,33 @@
1
+ import { Transaction } from "@scure/btc-signer";
2
+ import { getP2TRScriptFromPublicKey, getSigHashFromTx, getTxFromRawTxBytes, getTxId, } from "./bitcoin.js";
3
+ const TIME_LOCK_INTERVAL = 100;
4
+ export function createRefundTx(leaf, receivingPubkey, network) {
5
+ const tx = getTxFromRawTxBytes(leaf.nodeTx);
6
+ const refundTx = getTxFromRawTxBytes(leaf.refundTx);
7
+ const newRefundTx = new Transaction();
8
+ const sequence = getNextTransactionSequence(refundTx.getInput(0).sequence);
9
+ newRefundTx.addInput({
10
+ txid: getTxId(tx),
11
+ index: 0,
12
+ sequence,
13
+ });
14
+ const refundPkScript = getP2TRScriptFromPublicKey(receivingPubkey, network);
15
+ const amount = refundTx.getOutput(0).amount;
16
+ if (!amount) {
17
+ throw new Error(`Amount not found for refund tx`);
18
+ }
19
+ newRefundTx.addOutput({
20
+ script: refundPkScript,
21
+ amount,
22
+ });
23
+ const sighash = getSigHashFromTx(newRefundTx, 0, tx.getOutput(0));
24
+ return { refundTx: newRefundTx, sighash };
25
+ }
26
+ export function getNextTransactionSequence(currSequence) {
27
+ const currentTimelock = (currSequence || 0) & 0xffff;
28
+ if (currentTimelock - TIME_LOCK_INTERVAL <= 0) {
29
+ throw new Error("timelock interval is less or equal to 0");
30
+ }
31
+ return (1 << 30) | (currentTimelock - TIME_LOCK_INTERVAL);
32
+ }
33
+ //# sourceMappingURL=transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../src/utils/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACL,0BAA0B,EAC1B,gBAAgB,EAChB,mBAAmB,EACnB,OAAO,GACR,MAAM,cAAc,CAAC;AAGtB,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,MAAM,UAAU,cAAc,CAC5B,IAAc,EACd,eAA2B,EAC3B,OAAgB;IAEhB,MAAM,EAAE,GAAG,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEpD,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,0BAA0B,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC3E,WAAW,CAAC,QAAQ,CAAC;QACnB,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;QACjB,KAAK,EAAE,CAAC;QACR,QAAQ;KACT,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,0BAA0B,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IAE5E,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IACD,WAAW,CAAC,SAAS,CAAC;QACpB,MAAM,EAAE,cAAc;QACtB,MAAM;KACP,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAElE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,YAAqB;IAC9D,MAAM,eAAe,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;IACrD,IAAI,eAAe,GAAG,kBAAkB,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,eAAe,GAAG,kBAAkB,CAAC,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { InitOutput } from "../wasm/spark_bindings.js";
2
+ export declare function initWasm(): Promise<InitOutput>;
@@ -0,0 +1,36 @@
1
+ import path from "path";
2
+ import init from "../wasm/spark_bindings.js";
3
+ import fs from "fs/promises";
4
+ import { fileURLToPath } from "url";
5
+ export async function initWasm() {
6
+ let wasmModule;
7
+ try {
8
+ if (typeof window === "undefined") {
9
+ // Node.js environment
10
+ const __filename = fileURLToPath(import.meta.url);
11
+ const __dirname = path.dirname(__filename);
12
+ const wasmPath = path.resolve(__dirname, "../wasm/spark_bindings_bg.wasm");
13
+ const wasmBuffer = await fs.readFile(wasmPath);
14
+ // Initialize with proper memory configuration for Node.js
15
+ wasmModule = await init(wasmBuffer).catch((e) => {
16
+ console.error("WASM initialization error:", e);
17
+ throw e;
18
+ });
19
+ return wasmModule;
20
+ }
21
+ else {
22
+ // Browser environment
23
+ wasmModule = await init();
24
+ }
25
+ }
26
+ catch (e) {
27
+ console.error("WASM initialization error:", e);
28
+ throw e;
29
+ }
30
+ // Verify the module is properly initialized
31
+ if (!wasmModule || typeof wasmModule !== "object") {
32
+ throw new Error("WASM module not properly initialized");
33
+ }
34
+ return wasmModule;
35
+ }
36
+ //# sourceMappingURL=wasm-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasm-wrapper.js","sourceRoot":"","sources":["../../src/utils/wasm-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,IAAoB,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,IAAI,UAAsB,CAAC;IAE3B,IAAI,CAAC;QACH,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,sBAAsB;YACtB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAE3C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAC3B,SAAS,EACT,gCAAgC,CACjC,CAAC;YAEF,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAE/C,0DAA0D;YAC1D,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC9C,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,CAAC,CAAC,CAAC;gBAC/C,MAAM,CAAC,CAAC;YACV,CAAC,CAAC,CAAC;YAEH,OAAO,UAAU,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,sBAAsB;YACtB,UAAU,GAAG,MAAM,IAAI,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,CAAC;IACV,CAAC;IAED,4CAA4C;IAC5C,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { DummyTx, KeyPackage, SigningCommitment, SigningNonce, TransactionResult } from "../wasm/spark_bindings.js";
2
+ export type SignFrostParams = {
3
+ msg: Uint8Array;
4
+ keyPackage: KeyPackage;
5
+ nonce: SigningNonce;
6
+ selfCommitment: SigningCommitment;
7
+ statechainCommitments: any;
8
+ adaptorPubKey?: Uint8Array | undefined;
9
+ };
10
+ export type AggregateFrostParams = {
11
+ msg: Uint8Array;
12
+ statechainCommitments: any;
13
+ selfCommitment: SigningCommitment;
14
+ statechainSignatures: any;
15
+ selfSignature: Uint8Array;
16
+ statechainPublicKeys: any;
17
+ selfPublicKey: Uint8Array;
18
+ verifyingKey: Uint8Array;
19
+ adaptorPubKey?: Uint8Array | undefined;
20
+ };
21
+ export type ConstructNodeTxParams = {
22
+ tx: Uint8Array;
23
+ vout: number;
24
+ address: string;
25
+ locktime: number;
26
+ };
27
+ export declare function signFrost({ msg, keyPackage, nonce, selfCommitment, statechainCommitments, adaptorPubKey, }: SignFrostParams): Uint8Array;
28
+ export declare function aggregateFrost({ msg, statechainCommitments, selfCommitment, statechainSignatures, selfSignature, statechainPublicKeys, selfPublicKey, verifyingKey, adaptorPubKey, }: AggregateFrostParams): Uint8Array;
29
+ export declare function constructNodeTx({ tx, vout, address, locktime, }: ConstructNodeTxParams): TransactionResult;
30
+ export declare function constructRefundTx({ tx, vout, pubkey, network, locktime, }: {
31
+ tx: Uint8Array;
32
+ vout: number;
33
+ pubkey: Uint8Array;
34
+ network: string;
35
+ locktime: number;
36
+ }): TransactionResult;
37
+ export declare function constructSplitTx({ tx, vout, addresses, locktime, }: {
38
+ tx: Uint8Array;
39
+ vout: number;
40
+ addresses: string[];
41
+ locktime: number;
42
+ }): TransactionResult;
43
+ export declare function createDummyTx({ address, amountSats, }: {
44
+ address: string;
45
+ amountSats: bigint;
46
+ }): DummyTx;
47
+ export declare function encryptEcies({ msg, publicKey, }: {
48
+ msg: Uint8Array;
49
+ publicKey: Uint8Array;
50
+ }): Uint8Array;
51
+ export declare function decryptEcies({ encryptedMsg, privateKey, }: {
52
+ encryptedMsg: Uint8Array;
53
+ privateKey: Uint8Array;
54
+ }): Uint8Array;
@@ -0,0 +1,26 @@
1
+ import { construct_node_tx, construct_refund_tx, construct_split_tx, create_dummy_tx, decrypt_ecies, encrypt_ecies, wasm_aggregate_frost, wasm_sign_frost, } from "../wasm/spark_bindings.js";
2
+ export function signFrost({ msg, keyPackage, nonce, selfCommitment, statechainCommitments, adaptorPubKey, }) {
3
+ return wasm_sign_frost(msg, keyPackage, nonce, selfCommitment, statechainCommitments, adaptorPubKey);
4
+ }
5
+ export function aggregateFrost({ msg, statechainCommitments, selfCommitment, statechainSignatures, selfSignature, statechainPublicKeys, selfPublicKey, verifyingKey, adaptorPubKey, }) {
6
+ return wasm_aggregate_frost(msg, statechainCommitments, selfCommitment, statechainSignatures, selfSignature, statechainPublicKeys, selfPublicKey, verifyingKey, adaptorPubKey);
7
+ }
8
+ export function constructNodeTx({ tx, vout, address, locktime, }) {
9
+ return construct_node_tx(tx, vout, address, locktime);
10
+ }
11
+ export function constructRefundTx({ tx, vout, pubkey, network, locktime, }) {
12
+ return construct_refund_tx(tx, vout, pubkey, network, locktime);
13
+ }
14
+ export function constructSplitTx({ tx, vout, addresses, locktime, }) {
15
+ return construct_split_tx(tx, vout, addresses, locktime);
16
+ }
17
+ export function createDummyTx({ address, amountSats, }) {
18
+ return create_dummy_tx(address, amountSats);
19
+ }
20
+ export function encryptEcies({ msg, publicKey, }) {
21
+ return encrypt_ecies(msg, publicKey);
22
+ }
23
+ export function decryptEcies({ encryptedMsg, privateKey, }) {
24
+ return decrypt_ecies(encryptedMsg, privateKey);
25
+ }
26
+ //# sourceMappingURL=wasm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasm.js","sourceRoot":"","sources":["../../src/utils/wasm.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,aAAa,EAEb,aAAa,EAKb,oBAAoB,EACpB,eAAe,GAChB,MAAM,2BAA2B,CAAC;AA8BnC,MAAM,UAAU,SAAS,CAAC,EACxB,GAAG,EACH,UAAU,EACV,KAAK,EACL,cAAc,EACd,qBAAqB,EACrB,aAAa,GACG;IAChB,OAAO,eAAe,CACpB,GAAG,EACH,UAAU,EACV,KAAK,EACL,cAAc,EACd,qBAAqB,EACrB,aAAa,CACd,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAC7B,GAAG,EACH,qBAAqB,EACrB,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,aAAa,GACQ;IACrB,OAAO,oBAAoB,CACzB,GAAG,EACH,qBAAqB,EACrB,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,aAAa,CACd,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAC9B,EAAE,EACF,IAAI,EACJ,OAAO,EACP,QAAQ,GACc;IACtB,OAAO,iBAAiB,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAChC,EAAE,EACF,IAAI,EACJ,MAAM,EACN,OAAO,EACP,QAAQ,GAOT;IACC,OAAO,mBAAmB,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAC/B,EAAE,EACF,IAAI,EACJ,SAAS,EACT,QAAQ,GAMT;IACC,OAAO,kBAAkB,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAC5B,OAAO,EACP,UAAU,GAIX;IACC,OAAO,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAC3B,GAAG,EACH,SAAS,GAIV;IACC,OAAO,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAC3B,YAAY,EACZ,UAAU,GAIX;IACC,OAAO,aAAa,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,229 @@
1
+ /**
2
+ * @param {KeyPackage} key_package
3
+ * @returns {NonceResult}
4
+ */
5
+ export function frost_nonce(key_package: KeyPackage): NonceResult;
6
+ /**
7
+ * @param {Uint8Array} msg
8
+ * @param {KeyPackage} key_package
9
+ * @param {SigningNonce} nonce
10
+ * @param {SigningCommitment} self_commitment
11
+ * @param {any} statechain_commitments
12
+ * @param {Uint8Array | null} [adaptor_public_key]
13
+ * @returns {Uint8Array}
14
+ */
15
+ export function wasm_sign_frost(msg: Uint8Array, key_package: KeyPackage, nonce: SigningNonce, self_commitment: SigningCommitment, statechain_commitments: any, adaptor_public_key?: Uint8Array | null): Uint8Array;
16
+ /**
17
+ * @param {Uint8Array} msg
18
+ * @param {any} statechain_commitments
19
+ * @param {SigningCommitment} self_commitment
20
+ * @param {any} statechain_signatures
21
+ * @param {Uint8Array} self_signature
22
+ * @param {any} statechain_public_keys
23
+ * @param {Uint8Array} self_public_key
24
+ * @param {Uint8Array} verifying_key
25
+ * @param {Uint8Array | null} [adaptor_public_key]
26
+ * @returns {Uint8Array}
27
+ */
28
+ export function wasm_aggregate_frost(msg: Uint8Array, statechain_commitments: any, self_commitment: SigningCommitment, statechain_signatures: any, self_signature: Uint8Array, statechain_public_keys: any, self_public_key: Uint8Array, verifying_key: Uint8Array, adaptor_public_key?: Uint8Array | null): Uint8Array;
29
+ /**
30
+ * @param {Uint8Array} tx
31
+ * @param {number} vout
32
+ * @param {string} address
33
+ * @param {number} locktime
34
+ * @returns {TransactionResult}
35
+ */
36
+ export function construct_node_tx(tx: Uint8Array, vout: number, address: string, locktime: number): TransactionResult;
37
+ /**
38
+ * @param {Uint8Array} tx
39
+ * @param {number} vout
40
+ * @param {Uint8Array} pubkey
41
+ * @param {string} network
42
+ * @param {number} locktime
43
+ * @returns {TransactionResult}
44
+ */
45
+ export function construct_refund_tx(tx: Uint8Array, vout: number, pubkey: Uint8Array, network: string, locktime: number): TransactionResult;
46
+ /**
47
+ * @param {Uint8Array} tx
48
+ * @param {number} vout
49
+ * @param {string[]} addresses
50
+ * @param {number} locktime
51
+ * @returns {TransactionResult}
52
+ */
53
+ export function construct_split_tx(tx: Uint8Array, vout: number, addresses: string[], locktime: number): TransactionResult;
54
+ /**
55
+ * @param {string} address
56
+ * @param {bigint} amount_sats
57
+ * @returns {DummyTx}
58
+ */
59
+ export function create_dummy_tx(address: string, amount_sats: bigint): DummyTx;
60
+ /**
61
+ * @param {Uint8Array} msg
62
+ * @param {Uint8Array} public_key_bytes
63
+ * @returns {Uint8Array}
64
+ */
65
+ export function encrypt_ecies(msg: Uint8Array, public_key_bytes: Uint8Array): Uint8Array;
66
+ /**
67
+ * @param {Uint8Array} encrypted_msg
68
+ * @param {Uint8Array} private_key_bytes
69
+ * @returns {Uint8Array}
70
+ */
71
+ export function decrypt_ecies(encrypted_msg: Uint8Array, private_key_bytes: Uint8Array): Uint8Array;
72
+ export class DummyTx {
73
+ static __wrap(ptr: any): any;
74
+ __destroy_into_raw(): number | undefined;
75
+ __wbg_ptr: number | undefined;
76
+ free(): void;
77
+ /**
78
+ * @param {Uint8Array} arg0
79
+ */
80
+ set tx(arg0: Uint8Array);
81
+ /**
82
+ * @returns {Uint8Array}
83
+ */
84
+ get tx(): Uint8Array;
85
+ /**
86
+ * @param {string} arg0
87
+ */
88
+ set txid(arg0: string);
89
+ /**
90
+ * @returns {string}
91
+ */
92
+ get txid(): string;
93
+ }
94
+ export class KeyPackage {
95
+ /**
96
+ * @param {Uint8Array} secret_key
97
+ * @param {Uint8Array} public_key
98
+ * @param {Uint8Array} verifying_key
99
+ */
100
+ constructor(secret_key: Uint8Array, public_key: Uint8Array, verifying_key: Uint8Array);
101
+ __destroy_into_raw(): number;
102
+ __wbg_ptr: number;
103
+ free(): void;
104
+ /**
105
+ * @param {Uint8Array} arg0
106
+ */
107
+ set secret_key(arg0: Uint8Array);
108
+ /**
109
+ * @returns {Uint8Array}
110
+ */
111
+ get secret_key(): Uint8Array;
112
+ /**
113
+ * @param {Uint8Array} arg0
114
+ */
115
+ set public_key(arg0: Uint8Array);
116
+ /**
117
+ * @returns {Uint8Array}
118
+ */
119
+ get public_key(): Uint8Array;
120
+ /**
121
+ * @param {Uint8Array} arg0
122
+ */
123
+ set verifying_key(arg0: Uint8Array);
124
+ /**
125
+ * @returns {Uint8Array}
126
+ */
127
+ get verifying_key(): Uint8Array;
128
+ }
129
+ export class NonceResult {
130
+ static __wrap(ptr: any): any;
131
+ __destroy_into_raw(): number | undefined;
132
+ __wbg_ptr: number | undefined;
133
+ free(): void;
134
+ /**
135
+ * @param {SigningNonce} arg0
136
+ */
137
+ set nonce(arg0: SigningNonce);
138
+ /**
139
+ * @returns {SigningNonce}
140
+ */
141
+ get nonce(): SigningNonce;
142
+ /**
143
+ * @param {SigningCommitment} arg0
144
+ */
145
+ set commitment(arg0: SigningCommitment);
146
+ /**
147
+ * @returns {SigningCommitment}
148
+ */
149
+ get commitment(): SigningCommitment;
150
+ }
151
+ export class SigningCommitment {
152
+ static __wrap(ptr: any): any;
153
+ /**
154
+ * @param {Uint8Array} hiding
155
+ * @param {Uint8Array} binding
156
+ */
157
+ constructor(hiding: Uint8Array, binding: Uint8Array);
158
+ __destroy_into_raw(): number;
159
+ __wbg_ptr: number;
160
+ free(): void;
161
+ /**
162
+ * @param {Uint8Array} arg0
163
+ */
164
+ set hiding(arg0: Uint8Array);
165
+ /**
166
+ * @returns {Uint8Array}
167
+ */
168
+ get hiding(): Uint8Array;
169
+ /**
170
+ * @param {Uint8Array} arg0
171
+ */
172
+ set binding(arg0: Uint8Array);
173
+ /**
174
+ * @returns {Uint8Array}
175
+ */
176
+ get binding(): Uint8Array;
177
+ }
178
+ export class SigningNonce {
179
+ static __wrap(ptr: any): any;
180
+ /**
181
+ * @param {Uint8Array} hiding
182
+ * @param {Uint8Array} binding
183
+ */
184
+ constructor(hiding: Uint8Array, binding: Uint8Array);
185
+ __destroy_into_raw(): number;
186
+ __wbg_ptr: number;
187
+ free(): void;
188
+ /**
189
+ * @param {Uint8Array} arg0
190
+ */
191
+ set hiding(arg0: Uint8Array);
192
+ /**
193
+ * @returns {Uint8Array}
194
+ */
195
+ get hiding(): Uint8Array;
196
+ /**
197
+ * @param {Uint8Array} arg0
198
+ */
199
+ set binding(arg0: Uint8Array);
200
+ /**
201
+ * @returns {Uint8Array}
202
+ */
203
+ get binding(): Uint8Array;
204
+ }
205
+ export class TransactionResult {
206
+ static __wrap(ptr: any): any;
207
+ __destroy_into_raw(): number | undefined;
208
+ __wbg_ptr: number | undefined;
209
+ free(): void;
210
+ /**
211
+ * @param {Uint8Array} arg0
212
+ */
213
+ set tx(arg0: Uint8Array);
214
+ /**
215
+ * @returns {Uint8Array}
216
+ */
217
+ get tx(): Uint8Array;
218
+ /**
219
+ * @param {Uint8Array} arg0
220
+ */
221
+ set sighash(arg0: Uint8Array);
222
+ /**
223
+ * @returns {Uint8Array}
224
+ */
225
+ get sighash(): Uint8Array;
226
+ }
227
+ export default __wbg_init;
228
+ export function initSync(module: any): any;
229
+ declare function __wbg_init(module_or_path: any): Promise<any>;