@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,87 @@
1
+ import { bytesToHex, bytesToNumberBE, hexToBytes, } from "@noble/curves/abstract/utils";
2
+ import { schnorr, secp256k1 } from "@noble/curves/secp256k1";
3
+ import * as btc from "@scure/btc-signer";
4
+ import { sha256 } from "@scure/btc-signer/utils";
5
+ import { getNetwork } from "./network.js";
6
+ // const t = tapTweak(pubKey, h); // t = int_from_bytes(tagged_hash("TapTweak", pubkey + h)
7
+ // const P = u.lift_x(u.bytesToNumberBE(pubKey)); // P = lift_x(int_from_bytes(pubkey))
8
+ // const Q = P.add(Point.fromPrivateKey(t)); // Q = point_add(P, point_mul(G, t))
9
+ export function computeTaprootKeyNoScript(pubkey) {
10
+ if (pubkey.length !== 32) {
11
+ throw new Error("Public key must be 32 bytes");
12
+ }
13
+ const taggedHash = schnorr.utils.taggedHash("TapTweak", pubkey);
14
+ const tweak = bytesToNumberBE(taggedHash);
15
+ // Get the original point
16
+ const P = schnorr.utils.lift_x(schnorr.utils.bytesToNumberBE(pubkey));
17
+ // Add the tweak times the generator point
18
+ const Q = P.add(secp256k1.ProjectivePoint.fromPrivateKey(tweak));
19
+ return Q.toRawBytes();
20
+ }
21
+ export function getP2TRScriptFromPublicKey(pubKey, network) {
22
+ if (pubKey.length !== 33) {
23
+ throw new Error("Public key must be 33 bytes");
24
+ }
25
+ const internalKey = secp256k1.ProjectivePoint.fromHex(pubKey);
26
+ const script = btc.p2tr(internalKey.toRawBytes().slice(1, 33), undefined, getNetwork(network)).script;
27
+ if (!script) {
28
+ throw new Error("Failed to get P2TR address");
29
+ }
30
+ return script;
31
+ }
32
+ export function getP2TRAddressFromPublicKey(pubKey, network) {
33
+ if (pubKey.length !== 33) {
34
+ throw new Error("Public key must be 33 bytes");
35
+ }
36
+ const internalKey = secp256k1.ProjectivePoint.fromHex(pubKey);
37
+ const address = btc.p2tr(internalKey.toRawBytes().slice(1, 33), undefined, getNetwork(network)).address;
38
+ if (!address) {
39
+ throw new Error("Failed to get P2TR address");
40
+ }
41
+ return address;
42
+ }
43
+ export function getP2TRAddressFromPkScript(pkScript, network) {
44
+ if (pkScript.length !== 34 || pkScript[0] !== 0x51 || pkScript[1] !== 0x20) {
45
+ throw new Error("Invalid pkscript");
46
+ }
47
+ const parsedScript = btc.OutScript.decode(pkScript);
48
+ return btc.Address(getNetwork(network)).encode(parsedScript);
49
+ }
50
+ export function getTxFromRawTxHex(rawTxHex) {
51
+ const txBytes = hexToBytes(rawTxHex);
52
+ const tx = btc.Transaction.fromRaw(txBytes, {
53
+ allowUnknownOutputs: true,
54
+ });
55
+ if (!tx) {
56
+ throw new Error("Failed to parse transaction");
57
+ }
58
+ return tx;
59
+ }
60
+ export function getTxFromRawTxBytes(rawTxBytes) {
61
+ const tx = btc.Transaction.fromRaw(rawTxBytes, {
62
+ allowUnknownOutputs: true,
63
+ });
64
+ if (!tx) {
65
+ throw new Error("Failed to parse transaction");
66
+ }
67
+ return tx;
68
+ }
69
+ export function getSigHashFromTx(tx, inputIndex, prevOutput) {
70
+ // For Taproot, we use preimageWitnessV1 with SIGHASH_DEFAULT (0x00)
71
+ const prevScript = prevOutput.script;
72
+ if (!prevScript) {
73
+ throw new Error("No script found in prevOutput");
74
+ }
75
+ const amount = prevOutput.amount;
76
+ if (!amount) {
77
+ throw new Error("No amount found in prevOutput");
78
+ }
79
+ return tx.preimageWitnessV1(inputIndex, new Array(tx.inputsLength).fill(prevScript), btc.SigHash.DEFAULT, new Array(tx.inputsLength).fill(amount));
80
+ }
81
+ export function getTxId(tx) {
82
+ return bytesToHex(sha256(sha256(tx.unsignedTx)).reverse());
83
+ }
84
+ export function getTxIdNoReverse(tx) {
85
+ return bytesToHex(sha256(sha256(tx.unsignedTx)));
86
+ }
87
+ //# sourceMappingURL=bitcoin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitcoin.js","sourceRoot":"","sources":["../../src/utils/bitcoin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const getCrypto: () => Crypto;
@@ -0,0 +1,14 @@
1
+ import crypto from "crypto";
2
+ export const getCrypto = () => {
3
+ // Browser environment
4
+ if (typeof window !== "undefined" && window.crypto) {
5
+ return window.crypto;
6
+ }
7
+ // Node.js environment
8
+ if (typeof global !== "undefined" && global.crypto) {
9
+ return global.crypto;
10
+ }
11
+ // Node.js environment without global.crypto (older versions)
12
+ return crypto;
13
+ };
14
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/utils/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,CAAC,MAAM,SAAS,GAAG,GAAW,EAAE;IACpC,sBAAsB;IACtB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACnD,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;IACD,sBAAsB;IACtB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACnD,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;IACD,6DAA6D;IAC7D,OAAO,MAAgB,CAAC;AAC1B,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ export * from "./adaptor-signature.js";
2
+ export * from "./bitcoin.js";
3
+ export * from "./keys.js";
4
+ export * from "./network.js";
5
+ export * from "./proof.js";
6
+ export * from "./response-validation.js";
7
+ export * from "./secret-sharing.js";
8
+ export * from "./signing.js";
9
+ export * from "./token-hashing.js";
10
+ export * from "./token-keyshares.js";
11
+ export * from "./token-transactions.js";
12
+ export * from "./transaction.js";
13
+ export * from "./wasm-wrapper.js";
14
+ export * from "./wasm.js";
@@ -0,0 +1,15 @@
1
+ export * from "./adaptor-signature.js";
2
+ export * from "./bitcoin.js";
3
+ export * from "./keys.js";
4
+ export * from "./network.js";
5
+ export * from "./proof.js";
6
+ export * from "./response-validation.js";
7
+ export * from "./secret-sharing.js";
8
+ export * from "./signing.js";
9
+ export * from "./token-hashing.js";
10
+ export * from "./token-keyshares.js";
11
+ export * from "./token-transactions.js";
12
+ export * from "./transaction.js";
13
+ export * from "./wasm-wrapper.js";
14
+ export * from "./wasm.js";
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare function addPublicKeys(a: Uint8Array, b: Uint8Array): Uint8Array;
2
+ export declare function applyAdditiveTweakToPublicKey(pubkey: Uint8Array, tweak: Uint8Array): Uint8Array<ArrayBufferLike>;
3
+ export declare function subtractPublicKeys(a: Uint8Array, b: Uint8Array): Uint8Array<ArrayBufferLike>;
4
+ export declare function addPrivateKeys(a: Uint8Array, b: Uint8Array): Uint8Array<ArrayBufferLike>;
5
+ export declare function subtractPrivateKeys(a: Uint8Array, b: Uint8Array): Uint8Array<ArrayBufferLike>;
6
+ export declare function sumOfPrivateKeys(keys: Uint8Array[]): Uint8Array<ArrayBufferLike>;
7
+ export declare function lastKeyWithTarget(target: Uint8Array, keys: Uint8Array[]): Uint8Array<ArrayBufferLike>;
@@ -0,0 +1,68 @@
1
+ import { secp256k1 } from "@noble/curves/secp256k1";
2
+ import { numberToBytesBE } from "@noble/curves/abstract/utils";
3
+ export function addPublicKeys(a, b) {
4
+ if (a.length !== 33 || b.length !== 33) {
5
+ throw new Error("Public keys must be 33 bytes");
6
+ }
7
+ const pubkeyA = secp256k1.ProjectivePoint.fromHex(a);
8
+ const pubkeyB = secp256k1.ProjectivePoint.fromHex(b);
9
+ return pubkeyA.add(pubkeyB).toRawBytes(true);
10
+ }
11
+ export function applyAdditiveTweakToPublicKey(pubkey, tweak) {
12
+ if (pubkey.length !== 33) {
13
+ throw new Error("Public key must be 33 bytes");
14
+ }
15
+ if (tweak.length !== 32) {
16
+ throw new Error("Tweak must be 32 bytes");
17
+ }
18
+ const pubkeyPoint = secp256k1.ProjectivePoint.fromHex(pubkey);
19
+ const privTweek = secp256k1.utils.normPrivateKeyToScalar(tweak);
20
+ const pubTweek = secp256k1.getPublicKey(privTweek, true);
21
+ const tweekPoint = secp256k1.ProjectivePoint.fromHex(pubTweek);
22
+ return pubkeyPoint.add(tweekPoint).toRawBytes(true);
23
+ }
24
+ export function subtractPublicKeys(a, b) {
25
+ if (a.length !== 33 || b.length !== 33) {
26
+ throw new Error("Public keys must be 33 bytes");
27
+ }
28
+ const pubkeyA = secp256k1.ProjectivePoint.fromHex(a);
29
+ const pubkeyB = secp256k1.ProjectivePoint.fromHex(b);
30
+ return pubkeyA.subtract(pubkeyB).toRawBytes(true);
31
+ }
32
+ export function addPrivateKeys(a, b) {
33
+ if (a.length !== 32 || b.length !== 32) {
34
+ throw new Error("Private keys must be 32 bytes");
35
+ }
36
+ // Convert private keys to scalars (big integers)
37
+ const privA = secp256k1.utils.normPrivateKeyToScalar(a);
38
+ const privB = secp256k1.utils.normPrivateKeyToScalar(b);
39
+ // Add the scalars and reduce modulo the curve order
40
+ const sum = (privA + privB) % secp256k1.CURVE.n;
41
+ // Convert back to bytes
42
+ return numberToBytesBE(sum, 32);
43
+ }
44
+ export function subtractPrivateKeys(a, b) {
45
+ if (a.length !== 32 || b.length !== 32) {
46
+ throw new Error("Private keys must be 32 bytes");
47
+ }
48
+ const privA = secp256k1.utils.normPrivateKeyToScalar(a);
49
+ const privB = secp256k1.utils.normPrivateKeyToScalar(b);
50
+ const sum = (secp256k1.CURVE.n - privB + privA) % secp256k1.CURVE.n;
51
+ return numberToBytesBE(sum, 32);
52
+ }
53
+ export function sumOfPrivateKeys(keys) {
54
+ return keys.reduce((sum, key) => {
55
+ if (key.length !== 32) {
56
+ throw new Error("Private keys must be 32 bytes");
57
+ }
58
+ return addPrivateKeys(sum, key);
59
+ });
60
+ }
61
+ export function lastKeyWithTarget(target, keys) {
62
+ if (target.length !== 32) {
63
+ throw new Error("Target must be 32 bytes");
64
+ }
65
+ const sum = sumOfPrivateKeys(keys);
66
+ return subtractPrivateKeys(target, sum);
67
+ }
68
+ //# sourceMappingURL=keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/utils/keys.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import * as btc from "@scure/btc-signer";
2
+ import { Network as NetworkProto } from "../proto/spark.js";
3
+ export declare enum Network {
4
+ MAINNET = 0,
5
+ TESTNET = 1,
6
+ SIGNET = 2,
7
+ REGTEST = 3,
8
+ LOCAL = 4
9
+ }
10
+ export declare const NetworkToProto: Record<Network, NetworkProto>;
11
+ export declare const getNetwork: (network: Network) => typeof btc.NETWORK;
@@ -0,0 +1,26 @@
1
+ import * as btc from "@scure/btc-signer";
2
+ import { Network as NetworkProto } from "../proto/spark.js";
3
+ export var Network;
4
+ (function (Network) {
5
+ Network[Network["MAINNET"] = 0] = "MAINNET";
6
+ Network[Network["TESTNET"] = 1] = "TESTNET";
7
+ Network[Network["SIGNET"] = 2] = "SIGNET";
8
+ Network[Network["REGTEST"] = 3] = "REGTEST";
9
+ Network[Network["LOCAL"] = 4] = "LOCAL";
10
+ })(Network || (Network = {}));
11
+ export const NetworkToProto = {
12
+ [Network.MAINNET]: NetworkProto.MAINNET,
13
+ [Network.TESTNET]: NetworkProto.TESTNET,
14
+ [Network.SIGNET]: NetworkProto.SIGNET,
15
+ [Network.REGTEST]: NetworkProto.REGTEST,
16
+ [Network.LOCAL]: NetworkProto.REGTEST,
17
+ };
18
+ const NetworkConfig = {
19
+ [Network.MAINNET]: btc.NETWORK,
20
+ [Network.TESTNET]: btc.TEST_NETWORK,
21
+ [Network.SIGNET]: btc.TEST_NETWORK,
22
+ [Network.REGTEST]: { ...btc.TEST_NETWORK, bech32: "bcrt" },
23
+ [Network.LOCAL]: { ...btc.TEST_NETWORK, bech32: "bcrt" },
24
+ };
25
+ export const getNetwork = (network) => NetworkConfig[network];
26
+ //# sourceMappingURL=network.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/utils/network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,CAAN,IAAY,OAMX;AAND,WAAY,OAAO;IACjB,2CAAO,CAAA;IACP,2CAAO,CAAA;IACP,yCAAM,CAAA;IACN,2CAAO,CAAA;IACP,uCAAK,CAAA;AACP,CAAC,EANW,OAAO,KAAP,OAAO,QAMlB;AAED,MAAM,CAAC,MAAM,cAAc,GAAkC;IAC3D,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,OAAO;IACvC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,OAAO;IACvC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,MAAM;IACrC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,OAAO;IACvC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,OAAO;CACtC,CAAC;AAEF,MAAM,aAAa,GAAwC;IACzD,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,OAAO;IAC9B,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,YAAY;IACnC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,YAAY;IAClC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE;IAC1D,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE;CACzD,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAgB,EAAsB,EAAE,CACjE,aAAa,CAAC,OAAO,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function proofOfPossessionMessageHashForDepositAddress(userPubkey: Uint8Array, operatorPubkey: Uint8Array, depositAddress: string): Uint8Array;
@@ -0,0 +1,12 @@
1
+ import { sha256 } from "@scure/btc-signer/utils";
2
+ export function proofOfPossessionMessageHashForDepositAddress(userPubkey, operatorPubkey, depositAddress) {
3
+ const encoder = new TextEncoder();
4
+ const depositAddressBytes = encoder.encode(depositAddress);
5
+ const proofMsg = new Uint8Array([
6
+ ...userPubkey,
7
+ ...operatorPubkey,
8
+ ...depositAddressBytes,
9
+ ]);
10
+ return sha256(proofMsg);
11
+ }
12
+ //# sourceMappingURL=proof.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proof.js","sourceRoot":"","sources":["../../src/utils/proof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,MAAM,UAAU,6CAA6C,CAC3D,UAAsB,EACtB,cAA0B,EAC1B,cAAsB;IAEtB,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAE3D,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC;QAC9B,GAAG,UAAU;QACb,GAAG,cAAc;QACjB,GAAG,mBAAmB;KACvB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function validateResponses<T>(responses: PromiseSettledResult<T>[]): T[];
@@ -0,0 +1,16 @@
1
+ export function validateResponses(responses) {
2
+ // Get successful responses
3
+ const successfulResponses = responses
4
+ .filter((result) => result.status === "fulfilled")
5
+ .map((result) => result.value);
6
+ // If no successful responses, throw with all errors
7
+ if (successfulResponses.length === 0) {
8
+ const errors = responses
9
+ .filter((result) => result.status === "rejected")
10
+ .map((result) => result.reason)
11
+ .join("\n");
12
+ throw new Error(`All requests failed.\nErrors:\n${errors}`);
13
+ }
14
+ return successfulResponses;
15
+ }
16
+ //# sourceMappingURL=response-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-validation.js","sourceRoot":"","sources":["../../src/utils/response-validation.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,iBAAiB,CAC/B,SAAoC;IAEpC,2BAA2B;IAC3B,MAAM,mBAAmB,GAAG,SAAS;SAClC,MAAM,CACL,CAAC,MAAM,EAAuC,EAAE,CAC9C,MAAM,CAAC,MAAM,KAAK,WAAW,CAChC;SACA,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEjC,oDAAoD;IACpD,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,SAAS;aACrB,MAAM,CACL,CAAC,MAAM,EAAmC,EAAE,CAC1C,MAAM,CAAC,MAAM,KAAK,UAAU,CAC/B;aACA,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,MAAM,IAAI,KAAK,CACb,kCAAkC,MAAM,EAAE,CAC3C,CAAC;IACJ,CAAC;IAED,OAAO,mBAAmB,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,26 @@
1
+ type Polynomial = {
2
+ fieldModulus: bigint;
3
+ coefficients: bigint[];
4
+ proofs: Uint8Array[];
5
+ };
6
+ type SecretShare = {
7
+ fieldModulus: bigint;
8
+ threshold: number;
9
+ index: bigint;
10
+ share: bigint;
11
+ };
12
+ export type VerifiableSecretShare = SecretShare & {
13
+ proofs: Uint8Array[];
14
+ };
15
+ export declare function getRandomBigInt(max: bigint): bigint;
16
+ export declare function modInverse(a: bigint, m: bigint): bigint;
17
+ export declare function evaluatePolynomial(polynomial: Polynomial, x: bigint): bigint;
18
+ export declare function fieldDiv(numerator: bigint, denominator: bigint, fieldModulus: bigint): bigint;
19
+ export declare function computerLagrangeCoefficients(index: bigint, points: SecretShare[]): bigint;
20
+ export declare function generatePolynomialForSecretSharing(fieldModulus: bigint, secret: bigint, degree: number): Polynomial;
21
+ export declare function splitSecret(fieldModulus: bigint, secret: bigint, threshold: number, numberOfShares: number): SecretShare[];
22
+ export declare function splitSecretWithProofs(secret: bigint, fieldModulus: bigint, threshold: number, numberOfShares: number): VerifiableSecretShare[];
23
+ export declare function recoverSecret(shares: VerifiableSecretShare[]): bigint;
24
+ export declare function validateShare(share: VerifiableSecretShare): void;
25
+ export declare function bigIntToPrivateKey(value: bigint): Uint8Array;
26
+ export {};
@@ -0,0 +1,175 @@
1
+ import { bytesToHex, equalBytes } from "@noble/curves/abstract/utils";
2
+ import { secp256k1 } from "@noble/curves/secp256k1";
3
+ import { getCrypto } from "./crypto.js";
4
+ const crypto = getCrypto();
5
+ // Generate a secure random bigint using crypto.getRandomValues
6
+ export function getRandomBigInt(max) {
7
+ const byteLength = (max.toString(2).length + 7) >> 3;
8
+ const maxBigInt = max;
9
+ const mask = (1n << BigInt(max.toString(2).length)) - 1n;
10
+ while (true) {
11
+ const randBytes = crypto.getRandomValues(new Uint8Array(byteLength + 1));
12
+ const randValue = BigInt("0x" + bytesToHex(randBytes)) & mask;
13
+ if (randValue < maxBigInt) {
14
+ return randValue;
15
+ }
16
+ }
17
+ }
18
+ // Modular inverse using extended euclidean algorithm
19
+ export function modInverse(a, m) {
20
+ // Handle negative numbers by making them positive
21
+ a = ((a % m) + m) % m;
22
+ let [old_r, r] = [a, m];
23
+ let [old_s, s] = [1n, 0n];
24
+ let [old_t, t] = [0n, 1n];
25
+ while (r !== 0n) {
26
+ const quotient = old_r / r;
27
+ [old_r, r] = [r, old_r - quotient * r];
28
+ [old_s, s] = [s, old_s - quotient * s];
29
+ [old_t, t] = [t, old_t - quotient * t];
30
+ }
31
+ if (old_r !== 1n) {
32
+ throw new Error("Modular inverse does not exist");
33
+ }
34
+ return ((old_s % m) + m) % m;
35
+ }
36
+ // Evaluates a polynomial at a given point
37
+ export function evaluatePolynomial(polynomial, x) {
38
+ let result = 0n;
39
+ for (let i = 0; i < polynomial.coefficients.length; i++) {
40
+ const coeff = polynomial.coefficients[i];
41
+ if (!coeff) {
42
+ throw new Error("Coefficient is undefined");
43
+ }
44
+ const xPow = x ** BigInt(i) % polynomial.fieldModulus;
45
+ result = (result + xPow * coeff) % polynomial.fieldModulus;
46
+ }
47
+ return result;
48
+ }
49
+ // Divides two numbers in a given field modulus
50
+ export function fieldDiv(numerator, denominator, fieldModulus) {
51
+ if (denominator === 0n) {
52
+ throw new Error("Division by zero");
53
+ }
54
+ const inverse = modInverse(denominator, fieldModulus);
55
+ return (numerator * inverse) % fieldModulus;
56
+ }
57
+ // Computes the Lagrange coefficient for a given index and a set of points
58
+ export function computerLagrangeCoefficients(index, points) {
59
+ let numerator = 1n;
60
+ let denominator = 1n;
61
+ let fieldModulus = points[0]?.fieldModulus;
62
+ if (!fieldModulus) {
63
+ throw new Error("Field modulus is undefined");
64
+ }
65
+ for (const point of points) {
66
+ if (point.index === index) {
67
+ continue;
68
+ }
69
+ numerator = numerator * point.index;
70
+ const value = point.index - index;
71
+ denominator = denominator * value;
72
+ }
73
+ return fieldDiv(numerator, denominator, fieldModulus);
74
+ }
75
+ // Generates a polynomial for secret sharing
76
+ export function generatePolynomialForSecretSharing(fieldModulus, secret, degree) {
77
+ const coefficients = new Array(degree);
78
+ const proofs = new Array(degree);
79
+ coefficients[0] = secret;
80
+ proofs[0] = secp256k1.ProjectivePoint.fromPrivateKey(secret).toRawBytes(true);
81
+ for (let i = 1; i < degree; i++) {
82
+ const coefficient = getRandomBigInt(fieldModulus);
83
+ coefficients[i] = coefficient;
84
+ proofs[i] =
85
+ secp256k1.ProjectivePoint.fromPrivateKey(coefficient).toRawBytes(true);
86
+ }
87
+ return {
88
+ fieldModulus,
89
+ coefficients,
90
+ proofs: proofs,
91
+ };
92
+ }
93
+ // Splits a secret into a list of shares
94
+ export function splitSecret(fieldModulus, secret, threshold, numberOfShares) {
95
+ const polynomial = generatePolynomialForSecretSharing(fieldModulus, secret, threshold);
96
+ const shares = [];
97
+ for (let i = 1; i <= numberOfShares; i++) {
98
+ const share = evaluatePolynomial(polynomial, BigInt(i));
99
+ shares.push({
100
+ fieldModulus,
101
+ threshold,
102
+ index: BigInt(i),
103
+ share,
104
+ });
105
+ }
106
+ return shares;
107
+ }
108
+ // Splits a secret into a list of shares with proofs
109
+ export function splitSecretWithProofs(secret, fieldModulus, threshold, numberOfShares) {
110
+ const polynomial = generatePolynomialForSecretSharing(fieldModulus, secret, threshold - 1);
111
+ const shares = [];
112
+ for (let i = 1; i <= numberOfShares; i++) {
113
+ const share = evaluatePolynomial(polynomial, BigInt(i));
114
+ shares.push({
115
+ fieldModulus,
116
+ threshold,
117
+ index: BigInt(i),
118
+ share,
119
+ proofs: polynomial.proofs,
120
+ });
121
+ }
122
+ return shares;
123
+ }
124
+ // Recovers a secret from a list of shares
125
+ export function recoverSecret(shares) {
126
+ if (shares.length === 0)
127
+ return 0n;
128
+ const threshold = shares[0]?.threshold;
129
+ const fieldModulus = shares[0]?.fieldModulus;
130
+ if (!threshold || !fieldModulus) {
131
+ throw new Error("Shares are not valid");
132
+ }
133
+ if (shares.length < threshold) {
134
+ throw new Error("Not enough shares to recover secret");
135
+ }
136
+ let result = 0n;
137
+ for (const share of shares) {
138
+ const coeff = computerLagrangeCoefficients(share.index, shares);
139
+ const item = (share.share * coeff) % fieldModulus;
140
+ result = (result + item) % fieldModulus;
141
+ }
142
+ return result;
143
+ }
144
+ // Validates a share of a secret
145
+ export function validateShare(share) {
146
+ const targetPubkey = secp256k1.ProjectivePoint.fromPrivateKey(share.share).toRawBytes(true);
147
+ let resultPubkey = share.proofs[0];
148
+ if (!resultPubkey) {
149
+ throw new Error("Result pubkey is not valid");
150
+ }
151
+ for (let i = 1; i < share.proofs.length; i++) {
152
+ const pubkey = share.proofs[i];
153
+ if (!pubkey) {
154
+ throw new Error("Pubkey is not valid");
155
+ }
156
+ const value = share.index ** BigInt(i) % share.fieldModulus;
157
+ const scaledPoint = secp256k1.ProjectivePoint.fromHex(pubkey).multiply(value);
158
+ resultPubkey = secp256k1.ProjectivePoint.fromHex(resultPubkey)
159
+ .add(scaledPoint)
160
+ .toRawBytes(true);
161
+ }
162
+ if (!equalBytes(resultPubkey, targetPubkey)) {
163
+ throw new Error("Share is not valid");
164
+ }
165
+ }
166
+ // Converts a bigint to a private key since imported package doesn't support bigint
167
+ export function bigIntToPrivateKey(value) {
168
+ const hex = value.toString(16).padStart(64, "0");
169
+ const bytes = new Uint8Array(32);
170
+ for (let i = 0; i < 32; i++) {
171
+ bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);
172
+ }
173
+ return bytes;
174
+ }
175
+ //# sourceMappingURL=secret-sharing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret-sharing.js","sourceRoot":"","sources":["../../src/utils/secret-sharing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { SigningCommitment, SigningNonce } from "../signer/signer.js";
2
+ import { SigningCommitment as WasmSigningCommitment, SigningNonce as WasmSigningNonce } from "../wasm/spark_bindings.js";
3
+ export declare function getRandomSigningNonce(): SigningNonce;
4
+ export declare function createSigningNonce(binding: Uint8Array, hiding: Uint8Array): SigningNonce;
5
+ export declare function getSigningCommitmentFromNonce(nonce: SigningNonce): SigningCommitment;
6
+ export declare function encodeSigningNonceToBytes(nonce: SigningNonce): Uint8Array;
7
+ export declare function decodeBytesToSigningNonce(bytes: Uint8Array): SigningNonce;
8
+ export declare function createSigningCommitment(binding: Uint8Array, hiding: Uint8Array): SigningCommitment;
9
+ export declare function encodeSigningCommitmentToBytes(commitment: SigningCommitment): Uint8Array;
10
+ export declare function decodeBytesToSigningCommitment(bytes: Uint8Array): SigningCommitment;
11
+ export declare function createWasmSigningNonce(nonce: SigningNonce): WasmSigningNonce;
12
+ export declare function createWasmSigningCommitment(commitment: SigningCommitment): WasmSigningCommitment;
@@ -0,0 +1,67 @@
1
+ import { secp256k1 } from "@noble/curves/secp256k1";
2
+ import { SigningCommitment as WasmSigningCommitment, SigningNonce as WasmSigningNonce, } from "../wasm/spark_bindings.js";
3
+ export function getRandomSigningNonce() {
4
+ const binding = secp256k1.utils.randomPrivateKey();
5
+ const hiding = secp256k1.utils.randomPrivateKey();
6
+ return createSigningNonce(binding, hiding);
7
+ }
8
+ export function createSigningNonce(binding, hiding) {
9
+ if (binding.length !== 32 || hiding.length !== 32) {
10
+ throw new Error("Invalid nonce length");
11
+ }
12
+ return {
13
+ binding,
14
+ hiding,
15
+ };
16
+ }
17
+ export function getSigningCommitmentFromNonce(nonce) {
18
+ const bindingPubKey = secp256k1.getPublicKey(nonce.binding, true);
19
+ const hidingPubKey = secp256k1.getPublicKey(nonce.hiding, true);
20
+ return {
21
+ binding: bindingPubKey,
22
+ hiding: hidingPubKey,
23
+ };
24
+ }
25
+ export function encodeSigningNonceToBytes(nonce) {
26
+ return new Uint8Array([...nonce.binding, ...nonce.hiding]);
27
+ }
28
+ export function decodeBytesToSigningNonce(bytes) {
29
+ if (bytes.length !== 64) {
30
+ throw new Error("Invalid nonce length");
31
+ }
32
+ return {
33
+ binding: bytes.slice(32, 64),
34
+ hiding: bytes.slice(0, 32),
35
+ };
36
+ }
37
+ export function createSigningCommitment(binding, hiding) {
38
+ if (binding.length !== 33 || hiding.length !== 33) {
39
+ throw new Error("Invalid nonce commitment length");
40
+ }
41
+ return {
42
+ binding,
43
+ hiding,
44
+ };
45
+ }
46
+ export function encodeSigningCommitmentToBytes(commitment) {
47
+ if (commitment.binding.length !== 33 || commitment.hiding.length !== 33) {
48
+ throw new Error("Invalid nonce commitment length");
49
+ }
50
+ return new Uint8Array([...commitment.binding, ...commitment.hiding]);
51
+ }
52
+ export function decodeBytesToSigningCommitment(bytes) {
53
+ if (bytes.length !== 66) {
54
+ throw new Error("Invalid nonce commitment length");
55
+ }
56
+ return {
57
+ binding: bytes.slice(33, 66),
58
+ hiding: bytes.slice(0, 33),
59
+ };
60
+ }
61
+ export function createWasmSigningNonce(nonce) {
62
+ return new WasmSigningNonce(nonce.hiding, nonce.binding);
63
+ }
64
+ export function createWasmSigningCommitment(commitment) {
65
+ return new WasmSigningCommitment(commitment.hiding, commitment.binding);
66
+ }
67
+ //# sourceMappingURL=signing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signing.js","sourceRoot":"","sources":["../../src/utils/signing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { OperatorSpecificTokenTransactionSignablePayload, TokenTransaction } from "../proto/spark.js";
2
+ export declare function hashTokenTransaction(tokenTransaction: TokenTransaction, partialHash?: boolean): Uint8Array;
3
+ export declare function hashOperatorSpecificTokenTransactionSignablePayload(payload: OperatorSpecificTokenTransactionSignablePayload): Uint8Array;