@bitgo-beta/sdk-core 8.2.1-beta.71 → 8.2.1-beta.711

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 (500) hide show
  1. package/CHANGELOG.md +2555 -0
  2. package/dist/src/account-lib/baseCoin/baseTransaction.d.ts +0 -1
  3. package/dist/src/account-lib/baseCoin/baseTransaction.d.ts.map +1 -1
  4. package/dist/src/account-lib/baseCoin/baseTransactionBuilder.d.ts +0 -1
  5. package/dist/src/account-lib/baseCoin/baseTransactionBuilder.d.ts.map +1 -1
  6. package/dist/src/account-lib/baseCoin/baseTransactionBuilder.js +1 -1
  7. package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts +0 -1
  8. package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts.map +1 -1
  9. package/dist/src/account-lib/baseCoin/blsKeyPair.js +43 -29
  10. package/dist/src/account-lib/baseCoin/ed25519KeyPair.d.ts +1 -0
  11. package/dist/src/account-lib/baseCoin/ed25519KeyPair.d.ts.map +1 -1
  12. package/dist/src/account-lib/baseCoin/ed25519KeyPair.js +41 -29
  13. package/dist/src/account-lib/baseCoin/enum.d.ts +14 -2
  14. package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
  15. package/dist/src/account-lib/baseCoin/enum.js +28 -6
  16. package/dist/src/account-lib/baseCoin/errors.js +1 -1
  17. package/dist/src/account-lib/baseCoin/iface.d.ts +18 -15
  18. package/dist/src/account-lib/baseCoin/iface.d.ts.map +1 -1
  19. package/dist/src/account-lib/baseCoin/iface.js +10 -7
  20. package/dist/src/account-lib/baseCoin/index.js +6 -2
  21. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts +0 -1
  22. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts.map +1 -1
  23. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.js +33 -21
  24. package/dist/src/account-lib/index.js +23 -9
  25. package/dist/src/account-lib/mpc/curves/ed25519.d.ts +4 -18
  26. package/dist/src/account-lib/mpc/curves/ed25519.d.ts.map +1 -1
  27. package/dist/src/account-lib/mpc/curves/ed25519.js +6 -60
  28. package/dist/src/account-lib/mpc/index.d.ts +4 -4
  29. package/dist/src/account-lib/mpc/index.d.ts.map +1 -1
  30. package/dist/src/account-lib/mpc/index.js +11 -7
  31. package/dist/src/account-lib/mpc/shamir.d.ts +5 -37
  32. package/dist/src/account-lib/mpc/shamir.d.ts.map +1 -1
  33. package/dist/src/account-lib/mpc/shamir.js +6 -130
  34. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +38 -9
  35. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -1
  36. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +496 -348
  37. package/dist/src/account-lib/mpc/tss/ecdsa/index.js +23 -9
  38. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.d.ts +2 -2
  39. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.d.ts.map +1 -1
  40. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.js +3 -3
  41. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +73 -52
  42. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -1
  43. package/dist/src/account-lib/mpc/tss/ecdsa/types.js +1 -1
  44. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts +1 -2
  45. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts.map +1 -1
  46. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +65 -67
  47. package/dist/src/account-lib/mpc/tss/eddsa/index.js +23 -9
  48. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts +1 -1
  49. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts.map +1 -1
  50. package/dist/src/account-lib/mpc/tss/eddsa/types.js +1 -1
  51. package/dist/src/account-lib/mpc/tss/index.js +23 -9
  52. package/dist/src/account-lib/mpc/util.d.ts +7 -1
  53. package/dist/src/account-lib/mpc/util.d.ts.map +1 -1
  54. package/dist/src/account-lib/mpc/util.js +19 -1
  55. package/dist/src/account-lib/staking/index.js +6 -2
  56. package/dist/src/account-lib/staking/utils.js +3 -3
  57. package/dist/src/account-lib/util/crypto.d.ts +8 -2
  58. package/dist/src/account-lib/util/crypto.d.ts.map +1 -1
  59. package/dist/src/account-lib/util/crypto.js +61 -31
  60. package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts +2 -1
  61. package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts.map +1 -1
  62. package/dist/src/account-lib/util/ed25519KeyDeriver.js +5 -3
  63. package/dist/src/api/bip32path.js +2 -3
  64. package/dist/src/api/index.js +6 -2
  65. package/dist/src/api/types.d.ts +1 -0
  66. package/dist/src/api/types.d.ts.map +1 -1
  67. package/dist/src/api/types.js +1 -1
  68. package/dist/src/bitgo/address-book/address-book.d.ts +61 -0
  69. package/dist/src/bitgo/address-book/address-book.d.ts.map +1 -0
  70. package/dist/src/bitgo/address-book/address-book.js +139 -0
  71. package/dist/src/bitgo/address-book/index.d.ts +3 -0
  72. package/dist/src/bitgo/address-book/index.d.ts.map +1 -0
  73. package/dist/src/bitgo/address-book/index.js +19 -0
  74. package/dist/src/bitgo/address-book/types.d.ts +170 -0
  75. package/dist/src/bitgo/address-book/types.d.ts.map +1 -0
  76. package/dist/src/bitgo/address-book/types.js +3 -0
  77. package/dist/src/bitgo/baseCoin/baseCoin.d.ts +64 -8
  78. package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
  79. package/dist/src/bitgo/baseCoin/baseCoin.js +109 -15
  80. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +77 -19
  81. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  82. package/dist/src/bitgo/baseCoin/iBaseCoin.js +2 -2
  83. package/dist/src/bitgo/baseCoin/index.js +6 -2
  84. package/dist/src/bitgo/bip32util.d.ts +0 -1
  85. package/dist/src/bitgo/bip32util.d.ts.map +1 -1
  86. package/dist/src/bitgo/bip32util.js +25 -12
  87. package/dist/src/bitgo/bitcoin.d.ts +0 -1
  88. package/dist/src/bitgo/bitcoin.d.ts.map +1 -1
  89. package/dist/src/bitgo/bitcoin.js +26 -13
  90. package/dist/src/bitgo/bitgoBase.d.ts +4 -1
  91. package/dist/src/bitgo/bitgoBase.d.ts.map +1 -1
  92. package/dist/src/bitgo/bitgoBase.js +1 -1
  93. package/dist/src/bitgo/coinFactory.d.ts +1 -1
  94. package/dist/src/bitgo/coinFactory.d.ts.map +1 -1
  95. package/dist/src/bitgo/coinFactory.js +1 -1
  96. package/dist/src/bitgo/config.d.ts +56 -20
  97. package/dist/src/bitgo/config.d.ts.map +1 -1
  98. package/dist/src/bitgo/config.js +25 -11
  99. package/dist/src/bitgo/ecdh.d.ts +0 -1
  100. package/dist/src/bitgo/ecdh.d.ts.map +1 -1
  101. package/dist/src/bitgo/ecdh.js +26 -13
  102. package/dist/src/bitgo/enterprise/enterprise.d.ts +16 -14
  103. package/dist/src/bitgo/enterprise/enterprise.d.ts.map +1 -1
  104. package/dist/src/bitgo/enterprise/enterprise.js +64 -31
  105. package/dist/src/bitgo/enterprise/enterprises.d.ts +6 -0
  106. package/dist/src/bitgo/enterprise/enterprises.d.ts.map +1 -1
  107. package/dist/src/bitgo/enterprise/enterprises.js +48 -9
  108. package/dist/src/bitgo/enterprise/iEnterprise.d.ts +6 -7
  109. package/dist/src/bitgo/enterprise/iEnterprise.d.ts.map +1 -1
  110. package/dist/src/bitgo/enterprise/iEnterprise.js +1 -1
  111. package/dist/src/bitgo/enterprise/iEnterprises.d.ts +2 -0
  112. package/dist/src/bitgo/enterprise/iEnterprises.d.ts.map +1 -1
  113. package/dist/src/bitgo/enterprise/iEnterprises.js +1 -1
  114. package/dist/src/bitgo/enterprise/index.js +6 -2
  115. package/dist/src/bitgo/environments.d.ts +37 -5
  116. package/dist/src/bitgo/environments.d.ts.map +1 -1
  117. package/dist/src/bitgo/environments.js +54 -15
  118. package/dist/src/bitgo/errors.d.ts +3 -0
  119. package/dist/src/bitgo/errors.d.ts.map +1 -1
  120. package/dist/src/bitgo/errors.js +8 -2
  121. package/dist/src/bitgo/index.d.ts +1 -0
  122. package/dist/src/bitgo/index.d.ts.map +1 -1
  123. package/dist/src/bitgo/index.js +24 -9
  124. package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.d.ts +3 -3
  125. package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.d.ts.map +1 -1
  126. package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.js +1 -1
  127. package/dist/src/bitgo/inscriptionBuilder/index.js +6 -2
  128. package/dist/src/bitgo/internal/index.js +6 -2
  129. package/dist/src/bitgo/internal/internal.js +5 -6
  130. package/dist/src/bitgo/internal/keycard.js +6 -7
  131. package/dist/src/bitgo/keychain/decryptKeychain.d.ts +13 -0
  132. package/dist/src/bitgo/keychain/decryptKeychain.d.ts.map +1 -0
  133. package/dist/src/bitgo/keychain/decryptKeychain.js +35 -0
  134. package/dist/src/bitgo/keychain/iKeychains.d.ts +61 -4
  135. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
  136. package/dist/src/bitgo/keychain/iKeychains.js +2 -2
  137. package/dist/src/bitgo/keychain/index.d.ts +1 -0
  138. package/dist/src/bitgo/keychain/index.d.ts.map +1 -1
  139. package/dist/src/bitgo/keychain/index.js +7 -2
  140. package/dist/src/bitgo/keychain/keychains.d.ts +13 -3
  141. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  142. package/dist/src/bitgo/keychain/keychains.js +128 -30
  143. package/dist/src/bitgo/keychain/ovcJsonCodec.d.ts +3 -3
  144. package/dist/src/bitgo/keychain/ovcJsonCodec.d.ts.map +1 -1
  145. package/dist/src/bitgo/keychain/ovcJsonCodec.js +23 -9
  146. package/dist/src/bitgo/legacyBitcoin.d.ts +0 -1
  147. package/dist/src/bitgo/legacyBitcoin.d.ts.map +1 -1
  148. package/dist/src/bitgo/legacyBitcoin.js +27 -13
  149. package/dist/src/bitgo/lightning/codecs.d.ts +320 -0
  150. package/dist/src/bitgo/lightning/codecs.d.ts.map +1 -0
  151. package/dist/src/bitgo/lightning/codecs.js +211 -0
  152. package/dist/src/bitgo/lightning/{iLightning.d.ts → custodial/iLightning.d.ts} +12 -12
  153. package/dist/src/bitgo/lightning/custodial/iLightning.d.ts.map +1 -0
  154. package/dist/src/bitgo/lightning/custodial/iLightning.js +120 -0
  155. package/dist/src/bitgo/lightning/custodial/index.d.ts +5 -0
  156. package/dist/src/bitgo/lightning/custodial/index.d.ts.map +1 -0
  157. package/dist/src/bitgo/lightning/custodial/index.js +21 -0
  158. package/dist/src/bitgo/lightning/{lightning.d.ts → custodial/lightning.d.ts} +2 -2
  159. package/dist/src/bitgo/lightning/custodial/lightning.d.ts.map +1 -0
  160. package/dist/src/bitgo/lightning/custodial/lightning.js +111 -0
  161. package/dist/src/bitgo/lightning/custodial/lightningUtils.d.ts +46 -0
  162. package/dist/src/bitgo/lightning/custodial/lightningUtils.d.ts.map +1 -0
  163. package/dist/src/bitgo/lightning/custodial/lightningUtils.js +145 -0
  164. package/dist/src/bitgo/lightning/custodial/lnurlCodec.d.ts.map +1 -0
  165. package/dist/src/bitgo/lightning/custodial/lnurlCodec.js +27 -0
  166. package/dist/src/bitgo/lightning/index.d.ts +4 -3
  167. package/dist/src/bitgo/lightning/index.d.ts.map +1 -1
  168. package/dist/src/bitgo/lightning/index.js +10 -5
  169. package/dist/src/bitgo/lightning/lightningUtils.d.ts +58 -45
  170. package/dist/src/bitgo/lightning/lightningUtils.d.ts.map +1 -1
  171. package/dist/src/bitgo/lightning/lightningUtils.js +190 -99
  172. package/dist/src/bitgo/lightning/lightningWallet.d.ts +18 -0
  173. package/dist/src/bitgo/lightning/lightningWallet.d.ts.map +1 -0
  174. package/dist/src/bitgo/lightning/lightningWallet.js +65 -0
  175. package/dist/src/bitgo/lightning/signableJson.d.ts +17 -0
  176. package/dist/src/bitgo/lightning/signableJson.d.ts.map +1 -0
  177. package/dist/src/bitgo/lightning/signableJson.js +29 -0
  178. package/dist/src/bitgo/lightning/signature.d.ts +22 -0
  179. package/dist/src/bitgo/lightning/signature.d.ts.map +1 -0
  180. package/dist/src/bitgo/lightning/signature.js +69 -0
  181. package/dist/src/bitgo/market/iMarkets.d.ts +2 -2
  182. package/dist/src/bitgo/market/iMarkets.d.ts.map +1 -1
  183. package/dist/src/bitgo/market/index.js +6 -2
  184. package/dist/src/bitgo/market/markets.js +23 -9
  185. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts +2 -0
  186. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts.map +1 -1
  187. package/dist/src/bitgo/pendingApproval/iPendingApproval.js +4 -4
  188. package/dist/src/bitgo/pendingApproval/index.js +6 -2
  189. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts +20 -8
  190. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -1
  191. package/dist/src/bitgo/pendingApproval/pendingApproval.js +202 -107
  192. package/dist/src/bitgo/pendingApproval/pendingApprovals.js +23 -9
  193. package/dist/src/bitgo/recovery/index.js +6 -2
  194. package/dist/src/bitgo/recovery/initiate.d.ts +8 -2
  195. package/dist/src/bitgo/recovery/initiate.d.ts.map +1 -1
  196. package/dist/src/bitgo/recovery/initiate.js +7 -8
  197. package/dist/src/bitgo/staking/iStakingWallet.d.ts +104 -4
  198. package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
  199. package/dist/src/bitgo/staking/iStakingWallet.js +2 -2
  200. package/dist/src/bitgo/staking/index.js +6 -2
  201. package/dist/src/bitgo/staking/stakingWallet.d.ts +13 -2
  202. package/dist/src/bitgo/staking/stakingWallet.d.ts.map +1 -1
  203. package/dist/src/bitgo/staking/stakingWallet.js +45 -4
  204. package/dist/src/bitgo/trading/iTradingAccount.d.ts +2 -32
  205. package/dist/src/bitgo/trading/iTradingAccount.d.ts.map +1 -1
  206. package/dist/src/bitgo/trading/iTradingAccount.js +1 -1
  207. package/dist/src/bitgo/trading/index.d.ts +1 -15
  208. package/dist/src/bitgo/trading/index.d.ts.map +1 -1
  209. package/dist/src/bitgo/trading/index.js +7 -17
  210. package/dist/src/bitgo/trading/network/decrypt-aes-gcm.d.ts +8 -0
  211. package/dist/src/bitgo/trading/network/decrypt-aes-gcm.d.ts.map +1 -0
  212. package/dist/src/bitgo/trading/network/decrypt-aes-gcm.js +31 -0
  213. package/dist/src/bitgo/trading/network/decrypt-rsa.d.ts +8 -0
  214. package/dist/src/bitgo/trading/network/decrypt-rsa.d.ts.map +1 -0
  215. package/dist/src/bitgo/trading/network/decrypt-rsa.js +23 -0
  216. package/dist/src/bitgo/trading/network/decrypt.d.ts +14 -0
  217. package/dist/src/bitgo/trading/network/decrypt.d.ts.map +1 -0
  218. package/dist/src/bitgo/trading/network/decrypt.js +23 -0
  219. package/dist/src/bitgo/trading/network/encrypt-aes-gcm.d.ts +8 -0
  220. package/dist/src/bitgo/trading/network/encrypt-aes-gcm.d.ts.map +1 -0
  221. package/dist/src/bitgo/trading/network/encrypt-aes-gcm.js +25 -0
  222. package/dist/src/bitgo/trading/network/encrypt-rsa-browser.d.ts +8 -0
  223. package/dist/src/bitgo/trading/network/encrypt-rsa-browser.d.ts.map +1 -0
  224. package/dist/src/bitgo/trading/network/encrypt-rsa-browser.js +65 -0
  225. package/dist/src/bitgo/trading/network/encrypt-rsa.d.ts +8 -0
  226. package/dist/src/bitgo/trading/network/encrypt-rsa.d.ts.map +1 -0
  227. package/dist/src/bitgo/trading/network/encrypt-rsa.js +23 -0
  228. package/dist/src/bitgo/trading/network/encrypt.d.ts +37 -0
  229. package/dist/src/bitgo/trading/network/encrypt.d.ts.map +1 -0
  230. package/dist/src/bitgo/trading/network/encrypt.js +58 -0
  231. package/dist/src/bitgo/trading/network/index.d.ts +5 -0
  232. package/dist/src/bitgo/trading/network/index.d.ts.map +1 -0
  233. package/dist/src/bitgo/trading/network/index.js +21 -0
  234. package/dist/src/bitgo/trading/network/network.d.ts +36 -0
  235. package/dist/src/bitgo/trading/network/network.d.ts.map +1 -0
  236. package/dist/src/bitgo/trading/network/network.js +101 -0
  237. package/dist/src/bitgo/trading/network/types.d.ts +277 -0
  238. package/dist/src/bitgo/trading/network/types.d.ts.map +1 -0
  239. package/dist/src/bitgo/trading/network/types.js +3 -0
  240. package/dist/src/bitgo/trading/network/utils.d.ts +20 -0
  241. package/dist/src/bitgo/trading/network/utils.d.ts.map +1 -0
  242. package/dist/src/bitgo/trading/network/utils.js +54 -0
  243. package/dist/src/bitgo/trading/tradingAccount.d.ts +11 -35
  244. package/dist/src/bitgo/trading/tradingAccount.d.ts.map +1 -1
  245. package/dist/src/bitgo/trading/tradingAccount.js +9 -96
  246. package/dist/src/bitgo/tss/bitgoPubKeys.d.ts +27 -0
  247. package/dist/src/bitgo/tss/bitgoPubKeys.d.ts.map +1 -0
  248. package/dist/src/bitgo/tss/bitgoPubKeys.js +61 -0
  249. package/dist/src/bitgo/tss/common.d.ts +37 -5
  250. package/dist/src/bitgo/tss/common.d.ts.map +1 -1
  251. package/dist/src/bitgo/tss/common.js +103 -17
  252. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +6 -4
  253. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -1
  254. package/dist/src/bitgo/tss/ecdsa/ecdsa.js +78 -66
  255. package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.d.ts +15 -0
  256. package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -0
  257. package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.js +162 -0
  258. package/dist/src/bitgo/tss/ecdsa/index.d.ts +1 -0
  259. package/dist/src/bitgo/tss/ecdsa/index.d.ts.map +1 -1
  260. package/dist/src/bitgo/tss/ecdsa/index.js +25 -10
  261. package/dist/src/bitgo/tss/ecdsa/types.d.ts +27 -27
  262. package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -1
  263. package/dist/src/bitgo/tss/ecdsa/types.js +3 -3
  264. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts +11 -8
  265. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts.map +1 -1
  266. package/dist/src/bitgo/tss/eddsa/eddsa.js +38 -41
  267. package/dist/src/bitgo/tss/eddsa/index.js +23 -9
  268. package/dist/src/bitgo/tss/eddsa/types.d.ts +4 -4
  269. package/dist/src/bitgo/tss/eddsa/types.d.ts.map +1 -1
  270. package/dist/src/bitgo/tss/index.d.ts +3 -2
  271. package/dist/src/bitgo/tss/index.d.ts.map +1 -1
  272. package/dist/src/bitgo/tss/index.js +26 -10
  273. package/dist/src/bitgo/tss/types.d.ts +16 -1
  274. package/dist/src/bitgo/tss/types.d.ts.map +1 -1
  275. package/dist/src/bitgo/tss/types.js +2 -2
  276. package/dist/src/bitgo/types.d.ts +3 -3
  277. package/dist/src/bitgo/types.d.ts.map +1 -1
  278. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts +11 -0
  279. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts.map +1 -1
  280. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.js +66 -10
  281. package/dist/src/bitgo/utils/blsUtils.js +5 -5
  282. package/dist/src/bitgo/utils/codecProps.d.ts +7 -0
  283. package/dist/src/bitgo/utils/codecProps.d.ts.map +1 -0
  284. package/dist/src/bitgo/utils/codecProps.js +54 -0
  285. package/dist/src/bitgo/utils/decode.d.ts.map +1 -1
  286. package/dist/src/bitgo/utils/decode.js +30 -16
  287. package/dist/src/bitgo/utils/index.d.ts +2 -0
  288. package/dist/src/bitgo/utils/index.d.ts.map +1 -1
  289. package/dist/src/bitgo/utils/index.js +25 -9
  290. package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -1
  291. package/dist/src/bitgo/utils/mpcUtils.js +17 -12
  292. package/dist/src/bitgo/utils/notEmpty.d.ts +2 -0
  293. package/dist/src/bitgo/utils/notEmpty.d.ts.map +1 -0
  294. package/dist/src/bitgo/utils/notEmpty.js +7 -0
  295. package/dist/src/bitgo/utils/opengpgUtils.d.ts +11 -4
  296. package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -1
  297. package/dist/src/bitgo/utils/opengpgUtils.js +70 -57
  298. package/dist/src/bitgo/utils/postWithCodec.d.ts +18 -0
  299. package/dist/src/bitgo/utils/postWithCodec.d.ts.map +1 -0
  300. package/dist/src/bitgo/utils/postWithCodec.js +25 -0
  301. package/dist/src/bitgo/utils/promise-utils.d.ts +1 -1
  302. package/dist/src/bitgo/utils/promise-utils.d.ts.map +1 -1
  303. package/dist/src/bitgo/utils/promise-utils.js +2 -3
  304. package/dist/src/bitgo/utils/triple.d.ts +1 -1
  305. package/dist/src/bitgo/utils/triple.d.ts.map +1 -1
  306. package/dist/src/bitgo/utils/triple.js +2 -3
  307. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +54 -8
  308. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
  309. package/dist/src/bitgo/utils/tss/baseTSSUtils.js +170 -28
  310. package/dist/src/bitgo/utils/tss/baseTypes.d.ts +239 -31
  311. package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
  312. package/dist/src/bitgo/utils/tss/baseTypes.js +35 -19
  313. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.d.ts +23 -0
  314. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.d.ts.map +1 -0
  315. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.js +157 -0
  316. package/dist/src/bitgo/utils/tss/ecdsa/base.d.ts +30 -0
  317. package/dist/src/bitgo/utils/tss/ecdsa/base.d.ts.map +1 -0
  318. package/dist/src/bitgo/utils/tss/ecdsa/base.js +51 -0
  319. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts +48 -32
  320. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
  321. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +272 -172
  322. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +199 -0
  323. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -0
  324. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +930 -0
  325. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts +8 -0
  326. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts.map +1 -0
  327. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.js +13 -0
  328. package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts +4 -0
  329. package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts.map +1 -1
  330. package/dist/src/bitgo/utils/tss/ecdsa/index.js +10 -2
  331. package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts +15 -7
  332. package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts.map +1 -1
  333. package/dist/src/bitgo/utils/tss/ecdsa/types.js +1 -1
  334. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts +107 -0
  335. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts.map +1 -0
  336. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.js +55 -0
  337. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +5 -3
  338. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
  339. package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +67 -58
  340. package/dist/src/bitgo/utils/tss/eddsa/index.js +23 -9
  341. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts +7 -7
  342. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts.map +1 -1
  343. package/dist/src/bitgo/utils/tss/index.js +23 -9
  344. package/dist/src/bitgo/utils/txRequest.d.ts +10 -0
  345. package/dist/src/bitgo/utils/txRequest.d.ts.map +1 -0
  346. package/dist/src/bitgo/utils/txRequest.js +47 -0
  347. package/dist/src/bitgo/utils/util.js +24 -10
  348. package/dist/src/bitgo/utils/wallet.d.ts +7 -0
  349. package/dist/src/bitgo/utils/wallet.d.ts.map +1 -0
  350. package/dist/src/bitgo/utils/wallet.js +48 -0
  351. package/dist/src/bitgo/wallet/BuildParams.d.ts +119 -0
  352. package/dist/src/bitgo/wallet/BuildParams.d.ts.map +1 -0
  353. package/dist/src/bitgo/wallet/BuildParams.js +140 -0
  354. package/dist/src/bitgo/wallet/iWallet.d.ts +187 -16
  355. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  356. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  357. package/dist/src/bitgo/wallet/iWallets.d.ts +62 -13
  358. package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
  359. package/dist/src/bitgo/wallet/iWallets.js +42 -2
  360. package/dist/src/bitgo/wallet/index.js +6 -2
  361. package/dist/src/bitgo/wallet/lightning.d.ts +20 -0
  362. package/dist/src/bitgo/wallet/lightning.d.ts.map +1 -0
  363. package/dist/src/bitgo/wallet/lightning.js +16 -0
  364. package/dist/src/bitgo/wallet/wallet.d.ts +172 -19
  365. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  366. package/dist/src/bitgo/wallet/wallet.js +836 -317
  367. package/dist/src/bitgo/wallet/wallets.d.ts +66 -8
  368. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
  369. package/dist/src/bitgo/wallet/wallets.js +598 -189
  370. package/dist/src/bitgo/webhook/index.js +6 -2
  371. package/dist/src/bitgo/webhook/webhooks.js +23 -9
  372. package/dist/src/coins/fiateur.d.ts +0 -1
  373. package/dist/src/coins/fiateur.d.ts.map +1 -1
  374. package/dist/src/coins/fiatgbp.d.ts +0 -1
  375. package/dist/src/coins/fiatgbp.d.ts.map +1 -1
  376. package/dist/src/coins/fiatusd.d.ts +0 -1
  377. package/dist/src/coins/fiatusd.d.ts.map +1 -1
  378. package/dist/src/coins/index.js +6 -2
  379. package/dist/src/coins/ofc.d.ts +0 -1
  380. package/dist/src/coins/ofc.d.ts.map +1 -1
  381. package/dist/src/coins/ofc.js +2 -2
  382. package/dist/src/coins/ofcToken.js +2 -2
  383. package/dist/src/coins/susd.d.ts +0 -1
  384. package/dist/src/coins/susd.d.ts.map +1 -1
  385. package/dist/src/common.js +27 -13
  386. package/dist/src/index.d.ts +6 -1
  387. package/dist/src/index.d.ts.map +1 -1
  388. package/dist/src/index.js +28 -11
  389. package/dist/src/units.js +5 -6
  390. package/dist/test/node.utils.d.ts +2 -0
  391. package/dist/test/node.utils.d.ts.map +1 -0
  392. package/dist/test/node.utils.js +5 -0
  393. package/dist/test/unit/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +2 -0
  394. package/dist/test/unit/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -0
  395. package/dist/test/unit/account-lib/mpc/tss/ecdsa/ecdsa.js +233 -0
  396. package/dist/test/unit/account-lib/mpc/tss/ecdsa/fixtures.d.ts +3 -0
  397. package/dist/test/unit/account-lib/mpc/tss/ecdsa/fixtures.d.ts.map +1 -0
  398. package/dist/test/unit/account-lib/mpc/tss/ecdsa/fixtures.js +24 -0
  399. package/dist/test/unit/bitgo/lightning/codecs.d.ts +2 -0
  400. package/dist/test/unit/bitgo/lightning/codecs.d.ts.map +1 -0
  401. package/dist/test/unit/bitgo/lightning/codecs.js +147 -0
  402. package/dist/test/unit/bitgo/lightning/createWatchOnlyFixture.d.ts +4 -0
  403. package/dist/test/unit/bitgo/lightning/createWatchOnlyFixture.d.ts.map +1 -0
  404. package/dist/test/unit/bitgo/lightning/createWatchOnlyFixture.js +1562 -0
  405. package/dist/test/unit/bitgo/lightning/lightningUtils.d.ts +2 -0
  406. package/dist/test/unit/bitgo/lightning/lightningUtils.d.ts.map +1 -0
  407. package/dist/test/unit/bitgo/lightning/lightningUtils.js +104 -0
  408. package/dist/test/unit/bitgo/lightning/signableJson.d.ts +2 -0
  409. package/dist/test/unit/bitgo/lightning/signableJson.d.ts.map +1 -0
  410. package/dist/test/unit/bitgo/lightning/signableJson.js +52 -0
  411. package/dist/test/unit/bitgo/lightning/signature.d.ts +2 -0
  412. package/dist/test/unit/bitgo/lightning/signature.d.ts.map +1 -0
  413. package/dist/test/unit/bitgo/lightning/signature.js +91 -0
  414. package/dist/test/unit/bitgo/trading/network/encrypt.d.ts +2 -0
  415. package/dist/test/unit/bitgo/trading/network/encrypt.d.ts.map +1 -0
  416. package/dist/test/unit/bitgo/trading/network/encrypt.js +71 -0
  417. package/dist/test/unit/bitgo/utils/abstractUtxoCoinUtil.d.ts +2 -0
  418. package/dist/test/unit/bitgo/utils/abstractUtxoCoinUtil.d.ts.map +1 -0
  419. package/dist/test/unit/bitgo/utils/abstractUtxoCoinUtil.js +45 -0
  420. package/dist/test/unit/bitgo/utils/notEmpty.d.ts +2 -0
  421. package/dist/test/unit/bitgo/utils/notEmpty.d.ts.map +1 -0
  422. package/dist/test/unit/bitgo/utils/notEmpty.js +15 -0
  423. package/dist/test/unit/bitgo/utils/postWithCodec.d.ts +2 -0
  424. package/dist/test/unit/bitgo/utils/postWithCodec.d.ts.map +1 -0
  425. package/dist/test/unit/bitgo/utils/postWithCodec.js +73 -0
  426. package/dist/test/unit/bitgo/utils/txRequest.d.ts +2 -0
  427. package/dist/test/unit/bitgo/utils/txRequest.d.ts.map +1 -0
  428. package/dist/test/unit/bitgo/utils/txRequest.js +105 -0
  429. package/dist/test/unit/bitgo/wallet/BuildParams.d.ts +2 -0
  430. package/dist/test/unit/bitgo/wallet/BuildParams.d.ts.map +1 -0
  431. package/dist/test/unit/bitgo/wallet/BuildParams.js +68 -0
  432. package/dist/test/unit/bitgo/wallet/SendTransactionRequest.d.ts +2 -0
  433. package/dist/test/unit/bitgo/wallet/SendTransactionRequest.d.ts.map +1 -0
  434. package/dist/test/unit/bitgo/wallet/SendTransactionRequest.js +58 -0
  435. package/dist/test/unit/units.d.ts +2 -0
  436. package/dist/test/unit/units.d.ts.map +1 -0
  437. package/dist/test/unit/units.js +98 -0
  438. package/dist/tsconfig.tsbuildinfo +1 -1
  439. package/package.json +28 -17
  440. package/dist/src/account-lib/mpc/hdTree.d.ts +0 -31
  441. package/dist/src/account-lib/mpc/hdTree.d.ts.map +0 -1
  442. package/dist/src/account-lib/mpc/hdTree.js +0 -141
  443. package/dist/src/account-lib/mpc/types.d.ts +0 -5
  444. package/dist/src/account-lib/mpc/types.d.ts.map +0 -1
  445. package/dist/src/account-lib/mpc/types.js +0 -3
  446. package/dist/src/bitgo/lightning/iLightning.d.ts.map +0 -1
  447. package/dist/src/bitgo/lightning/iLightning.js +0 -106
  448. package/dist/src/bitgo/lightning/lightning.d.ts.map +0 -1
  449. package/dist/src/bitgo/lightning/lightning.js +0 -111
  450. package/dist/src/bitgo/lightning/lnurlCodec.d.ts.map +0 -1
  451. package/dist/src/bitgo/lightning/lnurlCodec.js +0 -28
  452. package/dist/src/bitgo/trading/affirmation.d.ts +0 -35
  453. package/dist/src/bitgo/trading/affirmation.d.ts.map +0 -1
  454. package/dist/src/bitgo/trading/affirmation.js +0 -53
  455. package/dist/src/bitgo/trading/affirmations.d.ts +0 -23
  456. package/dist/src/bitgo/trading/affirmations.d.ts.map +0 -1
  457. package/dist/src/bitgo/trading/affirmations.js +0 -45
  458. package/dist/src/bitgo/trading/iAffirmation.d.ts +0 -15
  459. package/dist/src/bitgo/trading/iAffirmation.d.ts.map +0 -1
  460. package/dist/src/bitgo/trading/iAffirmation.js +0 -13
  461. package/dist/src/bitgo/trading/iAffirmations.d.ts +0 -10
  462. package/dist/src/bitgo/trading/iAffirmations.d.ts.map +0 -1
  463. package/dist/src/bitgo/trading/iAffirmations.js +0 -3
  464. package/dist/src/bitgo/trading/iSettlement.d.ts +0 -25
  465. package/dist/src/bitgo/trading/iSettlement.d.ts.map +0 -1
  466. package/dist/src/bitgo/trading/iSettlement.js +0 -17
  467. package/dist/src/bitgo/trading/iSettlements.d.ts +0 -19
  468. package/dist/src/bitgo/trading/iSettlements.d.ts.map +0 -1
  469. package/dist/src/bitgo/trading/iSettlements.js +0 -3
  470. package/dist/src/bitgo/trading/iTradingPartner.d.ts +0 -14
  471. package/dist/src/bitgo/trading/iTradingPartner.d.ts.map +0 -1
  472. package/dist/src/bitgo/trading/iTradingPartner.js +0 -17
  473. package/dist/src/bitgo/trading/iTradingPartners.d.ts +0 -15
  474. package/dist/src/bitgo/trading/iTradingPartners.d.ts.map +0 -1
  475. package/dist/src/bitgo/trading/iTradingPartners.js +0 -9
  476. package/dist/src/bitgo/trading/lock.d.ts +0 -16
  477. package/dist/src/bitgo/trading/lock.d.ts.map +0 -1
  478. package/dist/src/bitgo/trading/lock.js +0 -12
  479. package/dist/src/bitgo/trading/payload.d.ts +0 -22
  480. package/dist/src/bitgo/trading/payload.d.ts.map +0 -1
  481. package/dist/src/bitgo/trading/payload.js +0 -3
  482. package/dist/src/bitgo/trading/settlement.d.ts +0 -16
  483. package/dist/src/bitgo/trading/settlement.d.ts.map +0 -1
  484. package/dist/src/bitgo/trading/settlement.js +0 -21
  485. package/dist/src/bitgo/trading/settlements.d.ts +0 -32
  486. package/dist/src/bitgo/trading/settlements.d.ts.map +0 -1
  487. package/dist/src/bitgo/trading/settlements.js +0 -61
  488. package/dist/src/bitgo/trading/trade.d.ts +0 -29
  489. package/dist/src/bitgo/trading/trade.d.ts.map +0 -1
  490. package/dist/src/bitgo/trading/trade.js +0 -11
  491. package/dist/src/bitgo/trading/tradingPartner.d.ts +0 -26
  492. package/dist/src/bitgo/trading/tradingPartner.d.ts.map +0 -1
  493. package/dist/src/bitgo/trading/tradingPartner.js +0 -31
  494. package/dist/src/bitgo/trading/tradingPartners.d.ts +0 -24
  495. package/dist/src/bitgo/trading/tradingPartners.d.ts.map +0 -1
  496. package/dist/src/bitgo/trading/tradingPartners.js +0 -32
  497. package/dist/src/openssl/index.d.ts +0 -5
  498. package/dist/src/openssl/index.d.ts.map +0 -1
  499. package/dist/src/openssl/index.js +0 -9
  500. /package/dist/src/bitgo/lightning/{lnurlCodec.d.ts → custodial/lnurlCodec.d.ts} +0 -0
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -11,123 +15,210 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
11
15
  }) : function(o, v) {
12
16
  o["default"] = v;
13
17
  });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
21
35
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.parseLightningInvoice = exports.validateLnurlInvoice = exports.fetchLnurlPayInvoice = exports.decodeLnurlPay = void 0;
23
- const bolt11 = __importStar(require("bolt11"));
24
- const crypto = __importStar(require("crypto"));
25
- const request = __importStar(require("superagent"));
26
- const iLightning_1 = require("./iLightning");
27
- const lnurlCodec_1 = require("./lnurlCodec");
28
- const decode_1 = require("../utils/decode");
36
+ exports.lightningNetworkName = exports.signerMacaroonPermissions = void 0;
37
+ exports.isLightningCoinName = isLightningCoinName;
38
+ exports.getLightningNetwork = getLightningNetwork;
39
+ exports.getLightningCoinName = getLightningCoinName;
40
+ exports.isValidLightningNetworkName = isValidLightningNetworkName;
41
+ exports.isValidLightningNetwork = isValidLightningNetwork;
42
+ exports.getStaticsLightningNetwork = getStaticsLightningNetwork;
43
+ exports.getUtxolibNetwork = getUtxolibNetwork;
44
+ exports.unwrapLightningCoinSpecific = unwrapLightningCoinSpecific;
45
+ exports.addIPCaveatToMacaroon = addIPCaveatToMacaroon;
46
+ exports.createWatchOnly = createWatchOnly;
47
+ exports.deriveLightningServiceSharedSecret = deriveLightningServiceSharedSecret;
48
+ const statics = __importStar(require("@bitgo-beta/statics"));
49
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
50
+ const macaroon_1 = require("macaroon");
51
+ const bs58check = __importStar(require("bs58check"));
52
+ const ecdh_1 = require("../ecdh");
53
+ // https://github.com/lightningnetwork/lnd/blob/master/docs/remote-signing.md#the-signer-node
54
+ exports.signerMacaroonPermissions = [
55
+ {
56
+ entity: 'message',
57
+ action: 'write',
58
+ },
59
+ {
60
+ entity: 'signer',
61
+ action: 'generate',
62
+ },
63
+ {
64
+ entity: 'address',
65
+ action: 'read',
66
+ },
67
+ {
68
+ entity: 'onchain',
69
+ action: 'write',
70
+ },
71
+ ];
72
+ exports.lightningNetworkName = ['bitcoin', 'testnet'];
29
73
  /**
30
- * Decodes an LNURL-pay request and makes an HTTP request to the decoded url
31
- * to retrieve details for the requested payment.
32
- * @param lnurl A bech32 encoded LNURL-pay request string
33
- * @returns {DecodedLnurlPayRequest} An LNURL-pay request message specifying
34
- * a min and max amount for the payment, metadata describing what the payment
35
- * is for, and a callback that can be used to fetch a lightning invoice for
36
- * the payment.
74
+ * Checks if the coin name is a lightning coin name.
37
75
  */
38
- async function decodeLnurlPay(lnurl) {
39
- const url = lnurlCodec_1.decodeLnurl(lnurl);
40
- const { body } = await request.get(url);
41
- const decodedRes = decode_1.decodeOrElse(iLightning_1.LnurlPayResponse.name, iLightning_1.LnurlPayResponse, body, (errors) => {
42
- throw new Error(`error(s) parsing lnurl response: ${errors}`);
43
- });
44
- const domain = new URL(url).hostname;
45
- return {
46
- ...decodedRes,
47
- domain,
48
- };
76
+ function isLightningCoinName(coinName) {
77
+ return coinName === 'lnbtc' || coinName === 'tlnbtc';
49
78
  }
50
- exports.decodeLnurlPay = decodeLnurlPay;
51
79
  /**
52
- * Fetches a lightning invoice from an LNURL-pay callback server for a specified
53
- * amount of millisatoshis.
54
- * @param params {LnurlPayParams} An object specifying an amount and a callback
55
- * url with which to request a lightning invoice for an LNURL-pay request.
56
- * @returns {string} A BOLT #11 encoded lightning invoice
80
+ * Get the utxolib network for a lightning network.
57
81
  */
58
- async function fetchLnurlPayInvoice(params) {
59
- const { callback, millisatAmount, metadata } = params;
60
- const { pr: invoice } = callback.includes('?')
61
- ? (await request.get(callback + `&amount=${millisatAmount}`)).body
62
- : (await request.get(callback).query({ amount: millisatAmount })).body;
63
- const parsedInvoice = parseLightningInvoice(invoice);
64
- validateLnurlInvoice(parsedInvoice, millisatAmount, metadata);
65
- return invoice;
82
+ function getLightningNetwork(networkName) {
83
+ return utxolib.networks[networkName];
66
84
  }
67
- exports.fetchLnurlPayInvoice = fetchLnurlPayInvoice;
68
- function getNetworkForInvoice(invoice) {
69
- if (invoice.startsWith('lntbs')) {
70
- // signet invoices are not supported by our bolt11 dependency
71
- // because the `tbs` prefix used for the invoice does not match the `tb`
72
- // prefix used by on-chain signet addresses
73
- // see: https://github.com/bitcoinjs/bolt11/pull/58#issuecomment-1106495709
74
- // we can still decode the invoice however using a custom network
75
- return {
76
- bech32: 'tbs',
77
- pubKeyHash: 0x6f,
78
- scriptHash: 0xc4,
79
- validWitnessVersions: [0, 1],
80
- };
81
- }
82
- return undefined;
85
+ /**
86
+ * Get the lightning coin name for a utxolib network.
87
+ */
88
+ function getLightningCoinName(network) {
89
+ return network === utxolib.networks.bitcoin ? 'lnbtc' : 'tlnbtc';
83
90
  }
84
91
  /**
85
- * @param {ParsedLightningInvoice} invoice - a parsed lightning invoice
86
- * @param {number} amount - amount intended to pay for the invoice
87
- * @param {string} metadata - metadata that is used to verify the fetched invoice
88
- * @throws error for invoice that does not match with amount and metadata
92
+ * Checks if the network name is a valid lightning network name.
89
93
  */
90
- function validateLnurlInvoice(invoice, millisatAmount, metadata) {
91
- const { millisatoshis, descriptionHash } = invoice;
92
- if (millisatoshis !== millisatAmount) {
93
- throw new Error('amount of invoice does not match with given amount');
94
+ function isValidLightningNetworkName(networkName) {
95
+ return exports.lightningNetworkName.includes(networkName);
96
+ }
97
+ /**
98
+ * Checks if the network is a valid lightning network.
99
+ */
100
+ function isValidLightningNetwork(network) {
101
+ return utxolib.isValidNetwork(network) && isValidLightningNetworkName(utxolib.getNetworkName(network));
102
+ }
103
+ /**
104
+ * Returns the statics network data for a lightning coin.
105
+ */
106
+ function getStaticsLightningNetwork(coinName) {
107
+ if (!isLightningCoinName(coinName)) {
108
+ throw new Error(`${coinName} is not a lightning coin`);
94
109
  }
95
- const hash = crypto.createHash('sha256').update(metadata).digest('hex');
96
- if (descriptionHash !== hash) {
97
- throw new Error('invoice h tag does not match with hash of metadata');
110
+ const coin = statics.coins.get(coinName);
111
+ if (!(coin instanceof statics.LightningCoin)) {
112
+ throw new Error('coin is not a lightning coin');
98
113
  }
114
+ return coin.network;
99
115
  }
100
- exports.validateLnurlInvoice = validateLnurlInvoice;
101
116
  /**
102
- * @param {unknown} invoiceStr - a lightning invoice
103
- * @return {ParsedLightningInvoice}
104
- * @throws error for invalid lightning invoice
117
+ * Returns the utxolib network for a lightning coin.
105
118
  */
106
- function parseLightningInvoice(invoiceStr) {
107
- var _a, _b;
108
- if (typeof invoiceStr !== 'string') {
109
- throw new Error('invoice is malformed');
119
+ function getUtxolibNetwork(coinName) {
120
+ const networkName = getStaticsLightningNetwork(coinName).utxolibName;
121
+ if (!isValidLightningNetworkName(networkName)) {
122
+ throw new Error('invalid lightning network');
110
123
  }
111
- const decodedInvoice = bolt11.decode(invoiceStr, getNetworkForInvoice(invoiceStr));
112
- if (decodedInvoice.network === undefined) {
113
- throw new Error('invoice network is invalid');
124
+ return getLightningNetwork(networkName);
125
+ }
126
+ /**
127
+ * Returns coin specific data for a lightning coin.
128
+ */
129
+ function unwrapLightningCoinSpecific(obj, coinSpecificPath) {
130
+ if (coinSpecificPath !== 'lnbtc' && coinSpecificPath !== 'tlnbtc') {
131
+ throw new Error(`invalid coinSpecificPath ${coinSpecificPath} for lightning coin`);
114
132
  }
115
- const { millisatoshis, tags, payeeNodeKey } = decodedInvoice;
116
- const paymentHash = (_a = tags.find((tag) => tag.tagName === 'payment_hash')) === null || _a === void 0 ? void 0 : _a.data;
117
- if (paymentHash === undefined || typeof paymentHash !== 'string') {
118
- throw new Error('invoice payment hash is invalid');
133
+ if (coinSpecificPath === 'lnbtc' && 'lnbtc' in obj) {
134
+ return obj.lnbtc;
119
135
  }
120
- if (payeeNodeKey === undefined) {
121
- throw new Error('invoice payee pub key is invalid');
136
+ if (coinSpecificPath === 'tlnbtc' && 'tlnbtc' in obj) {
137
+ return obj.tlnbtc;
122
138
  }
123
- if (millisatoshis === undefined) {
124
- throw new Error('invoice millisatoshis amount is invalid');
139
+ throw new Error('invalid lightning coin specific');
140
+ }
141
+ /**
142
+ * Adds an IP caveat to a macaroon and returns the modified macaroon as a Base64 string.
143
+ */
144
+ function addIPCaveatToMacaroon(macaroonBase64, ip) {
145
+ const macaroon = (0, macaroon_1.importMacaroon)(macaroonBase64);
146
+ macaroon.addFirstPartyCaveat(`ipaddr ${ip}`);
147
+ return (0, macaroon_1.bytesToBase64)(macaroon.exportBinary());
148
+ }
149
+ const PURPOSE_WRAPPED_P2WKH = 49;
150
+ const PURPOSE_P2WKH = 84;
151
+ const PURPOSE_P2TR = 86;
152
+ const PURPOSE_ALL_OTHERS = 1017;
153
+ /**
154
+ * Converts an extended public key (xpub) to the appropriate prefix (ypub, vpub, etc.) based on its purpose and network.
155
+ */
156
+ function convertXpubPrefix(xpub, purpose, isMainnet) {
157
+ if (purpose === PURPOSE_P2TR || purpose === PURPOSE_ALL_OTHERS) {
158
+ return xpub;
159
+ }
160
+ const data = bs58check.decode(xpub);
161
+ let versionBytes;
162
+ switch (purpose) {
163
+ case PURPOSE_WRAPPED_P2WKH:
164
+ versionBytes = isMainnet ? Buffer.from([0x04, 0x9d, 0x7c, 0xb2]) : Buffer.from([0x04, 0x4a, 0x52, 0x62]); // ypub/upub for p2sh-p2wpkh
165
+ break;
166
+ case PURPOSE_P2WKH:
167
+ versionBytes = isMainnet ? Buffer.from([0x04, 0xb2, 0x47, 0x46]) : Buffer.from([0x04, 0x5f, 0x1c, 0xf6]); // zpub/vpub for p2wpkh
168
+ break;
169
+ default:
170
+ throw new Error('Unsupported purpose');
125
171
  }
126
- const descriptionHash = (_b = tags.find((tag) => tag.tagName === 'purpose_commit_hash')) === null || _b === void 0 ? void 0 : _b.data;
127
- if (descriptionHash !== undefined && typeof descriptionHash !== 'string') {
128
- throw new Error('invoice description hash is invalid');
172
+ versionBytes.copy(data, 0, 0, 4);
173
+ return bs58check.encode(data);
174
+ }
175
+ /**
176
+ * Derives watch-only accounts from the master HD node for the given purposes and network.
177
+ */
178
+ function deriveWatchOnlyAccounts(masterHDNode, isMainnet) {
179
+ // https://github.com/lightningnetwork/lnd/blob/master/docs/remote-signing.md#required-accounts
180
+ if (masterHDNode.isNeutered()) {
181
+ throw new Error('masterHDNode must not be neutered');
129
182
  }
130
- return { millisatoshis, paymentHash, payeeNodeKey, descriptionHash };
183
+ const purposes = [PURPOSE_WRAPPED_P2WKH, PURPOSE_P2WKH, PURPOSE_P2TR, PURPOSE_ALL_OTHERS];
184
+ return purposes.flatMap((purpose) => {
185
+ const maxAccount = purpose === PURPOSE_ALL_OTHERS ? 255 : 0;
186
+ const coinType = purpose !== PURPOSE_ALL_OTHERS || isMainnet ? 0 : 1;
187
+ return Array.from({ length: maxAccount + 1 }, (_, account) => {
188
+ const path = `m/${purpose}'/${coinType}'/${account}'`;
189
+ const derivedNode = masterHDNode.derivePath(path);
190
+ // Ensure the node is neutered (i.e., converted to public key only)
191
+ const neuteredNode = derivedNode.neutered();
192
+ const xpub = convertXpubPrefix(neuteredNode.toBase58(), purpose, isMainnet);
193
+ return {
194
+ purpose,
195
+ coin_type: coinType,
196
+ account,
197
+ xpub,
198
+ };
199
+ });
200
+ });
201
+ }
202
+ /**
203
+ * Creates a watch-only wallet init data from the provided signer root key and network.
204
+ */
205
+ function createWatchOnly(signerRootKey, network) {
206
+ const masterHDNode = utxolib.bip32.fromBase58(signerRootKey, network);
207
+ const getCurrentUnixTimestamp = () => {
208
+ return Math.floor(Date.now() / 1000);
209
+ };
210
+ const master_key_birthday_timestamp = getCurrentUnixTimestamp().toString();
211
+ const master_key_fingerprint = masterHDNode.fingerprint.toString('hex');
212
+ const accounts = deriveWatchOnlyAccounts(masterHDNode, utxolib.isMainnet(network));
213
+ return { master_key_birthday_timestamp, master_key_fingerprint, accounts };
214
+ }
215
+ /**
216
+ * Derives the shared Elliptic Curve Diffie-Hellman (ECDH) secret between the user's auth extended private key
217
+ * and the Lightning service's public key for secure communication.
218
+ */
219
+ function deriveLightningServiceSharedSecret(coinName, userAuthXprv) {
220
+ const publicKey = Buffer.from(getStaticsLightningNetwork(coinName).lightningServicePubKey, 'hex');
221
+ const userAuthHdNode = utxolib.bip32.fromBase58(userAuthXprv);
222
+ return (0, ecdh_1.getSharedSecret)(userAuthHdNode, publicKey);
131
223
  }
132
- exports.parseLightningInvoice = parseLightningInvoice;
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vbGlnaHRuaW5nL2xpZ2h0bmluZ1V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBaUM7QUFDakMsK0NBQWlDO0FBQ2pDLG9EQUFzQztBQUN0Qyw2Q0FBd0Y7QUFDeEYsNkNBQTJDO0FBQzNDLDRDQUErQztBQWdCL0M7Ozs7Ozs7O0dBUUc7QUFDSSxLQUFLLFVBQVUsY0FBYyxDQUFDLEtBQWE7SUFDaEQsTUFBTSxHQUFHLEdBQUcsd0JBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sVUFBVSxHQUFHLHFCQUFZLENBQUMsNkJBQWdCLENBQUMsSUFBSSxFQUFFLDZCQUFnQixFQUFFLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ3hGLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQyxDQUFDLENBQUM7SUFDSCxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFFckMsT0FBTztRQUNMLEdBQUcsVUFBVTtRQUNiLE1BQU07S0FDUCxDQUFDO0FBQ0osQ0FBQztBQVpELHdDQVlDO0FBRUQ7Ozs7OztHQU1HO0FBQ0ksS0FBSyxVQUFVLG9CQUFvQixDQUFDLE1BQXNCO0lBQy9ELE1BQU0sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUN0RCxNQUFNLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1FBQzVDLENBQUMsQ0FB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QUFHLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sS0FBSyxxQkFBcUIsQ0FBQywwQ0FBRSxJQUFJLENBQUM7SUFDeEYsSUFBSSxlQUFlLEtBQUssU0FBUyxJQUFJLE9BQU8sZUFBZSxLQUFLLFFBQVEsRUFBRTtRQUN4RSxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7S0FDeEQ7SUFFRCxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLENBQUM7QUFDdkUsQ0FBQztBQTlCRCxzREE4QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBib2x0MTEgZnJvbSAnYm9sdDExJztcbmltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0ICogYXMgcmVxdWVzdCBmcm9tICdzdXBlcmFnZW50JztcbmltcG9ydCB7IERlY29kZWRMbnVybFBheVJlcXVlc3QsIExudXJsUGF5UGFyYW1zLCBMbnVybFBheVJlc3BvbnNlIH0gZnJvbSAnLi9pTGlnaHRuaW5nJztcbmltcG9ydCB7IGRlY29kZUxudXJsIH0gZnJvbSAnLi9sbnVybENvZGVjJztcbmltcG9ydCB7IGRlY29kZU9yRWxzZSB9IGZyb20gJy4uL3V0aWxzL2RlY29kZSc7XG5cbmV4cG9ydCB0eXBlIFBhcnNlZExpZ2h0bmluZ0ludm9pY2UgPSB7XG4gIC8qKlxuICAgKiBUaGUgYW1vdW50IG9mIG1pbGxpc2F0b3NoaSByZXF1ZXN0ZWQgYnkgdGhpcyBpbnZvaWNlLiBJZiBudWxsIHRoZW5cbiAgICogdGhlIGludm9pY2UgZG9lcyBub3Qgc3BlY2lmeSBhbiBhbW91bnQgYW5kIHdpbGwgYWNjZXB0IGFueSBwYXltZW50LlxuICAgKi9cbiAgbWlsbGlzYXRvc2hpczogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFRoZSBoZXggZW5jb2RlZCBwYXltZW50IGhhc2ggZm9yIHRoZSBpbnZvaWNlICovXG4gIHBheW1lbnRIYXNoOiBzdHJpbmc7XG4gIC8qKiBUaGUgaGV4IGVuY29kZWQgbm9kZSBwdWIga2V5IG9mIHRoZSBwYXllZSB0aGF0IGNyZWF0ZWQgdGhlIGludm9pY2UgKi9cbiAgcGF5ZWVOb2RlS2V5OiBzdHJpbmc7XG4gIC8qKiBUaGUgaGV4IGVuY29kZWQgU0hBMjU2IGhhc2ggb2YgdGhlIGRlc2NyaXB0aW9uIG9mIHdoYXQgdGhlIGludm9pY2UgaXMgZm9yICovXG4gIGRlc2NyaXB0aW9uSGFzaD86IHN0cmluZztcbn07XG5cbi8qKlxuICogRGVjb2RlcyBhbiBMTlVSTC1wYXkgcmVxdWVzdCBhbmQgbWFrZXMgYW4gSFRUUCByZXF1ZXN0IHRvIHRoZSBkZWNvZGVkIHVybFxuICogdG8gcmV0cmlldmUgZGV0YWlscyBmb3IgdGhlIHJlcXVlc3RlZCBwYXltZW50LlxuICogQHBhcmFtIGxudXJsIEEgYmVjaDMyIGVuY29kZWQgTE5VUkwtcGF5IHJlcXVlc3Qgc3RyaW5nXG4gKiBAcmV0dXJucyB7RGVjb2RlZExudXJsUGF5UmVxdWVzdH0gQW4gTE5VUkwtcGF5IHJlcXVlc3QgbWVzc2FnZSBzcGVjaWZ5aW5nXG4gKiBhIG1pbiBhbmQgbWF4IGFtb3VudCBmb3IgdGhlIHBheW1lbnQsIG1ldGFkYXRhIGRlc2NyaWJpbmcgd2hhdCB0aGUgcGF5bWVudFxuICogaXMgZm9yLCBhbmQgYSBjYWxsYmFjayB0aGF0IGNhbiBiZSB1c2VkIHRvIGZldGNoIGEgbGlnaHRuaW5nIGludm9pY2UgZm9yXG4gKiB0aGUgcGF5bWVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlY29kZUxudXJsUGF5KGxudXJsOiBzdHJpbmcpOiBQcm9taXNlPERlY29kZWRMbnVybFBheVJlcXVlc3Q+IHtcbiAgY29uc3QgdXJsID0gZGVjb2RlTG51cmwobG51cmwpO1xuICBjb25zdCB7IGJvZHkgfSA9IGF3YWl0IHJlcXVlc3QuZ2V0KHVybCk7XG4gIGNvbnN0IGRlY29kZWRSZXMgPSBkZWNvZGVPckVsc2UoTG51cmxQYXlSZXNwb25zZS5uYW1lLCBMbnVybFBheVJlc3BvbnNlLCBib2R5LCAoZXJyb3JzKSA9PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBlcnJvcihzKSBwYXJzaW5nIGxudXJsIHJlc3BvbnNlOiAke2Vycm9yc31gKTtcbiAgfSk7XG4gIGNvbnN0IGRvbWFpbiA9IG5ldyBVUkwodXJsKS5ob3N0bmFtZTtcblxuICByZXR1cm4ge1xuICAgIC4uLmRlY29kZWRSZXMsXG4gICAgZG9tYWluLFxuICB9O1xufVxuXG4vKipcbiAqIEZldGNoZXMgYSBsaWdodG5pbmcgaW52b2ljZSBmcm9tIGFuIExOVVJMLXBheSBjYWxsYmFjayBzZXJ2ZXIgZm9yIGEgc3BlY2lmaWVkXG4gKiBhbW91bnQgb2YgbWlsbGlzYXRvc2hpcy5cbiAqIEBwYXJhbSBwYXJhbXMge0xudXJsUGF5UGFyYW1zfSBBbiBvYmplY3Qgc3BlY2lmeWluZyBhbiBhbW91bnQgYW5kIGEgY2FsbGJhY2tcbiAqIHVybCB3aXRoIHdoaWNoIHRvIHJlcXVlc3QgYSBsaWdodG5pbmcgaW52b2ljZSBmb3IgYW4gTE5VUkwtcGF5IHJlcXVlc3QuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIEJPTFQgIzExIGVuY29kZWQgbGlnaHRuaW5nIGludm9pY2VcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoTG51cmxQYXlJbnZvaWNlKHBhcmFtczogTG51cmxQYXlQYXJhbXMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB7IGNhbGxiYWNrLCBtaWxsaXNhdEFtb3VudCwgbWV0YWRhdGEgfSA9IHBhcmFtcztcbiAgY29uc3QgeyBwcjogaW52b2ljZSB9ID0gY2FsbGJhY2suaW5jbHVkZXMoJz8nKVxuICAgID8gKGF3YWl0IHJlcXVlc3QuZ2V0KGNhbGxiYWNrICsgYCZhbW91bnQ9JHttaWxsaXNhdEFtb3VudH1gKSkuYm9keVxuICAgIDogKGF3YWl0IHJlcXVlc3QuZ2V0KGNhbGxiYWNrKS5xdWVyeSh7IGFtb3VudDogbWlsbGlzYXRBbW91bnQgfSkpLmJvZHk7XG4gIGNvbnN0IHBhcnNlZEludm9pY2UgPSBwYXJzZUxpZ2h0bmluZ0ludm9pY2UoaW52b2ljZSk7XG4gIHZhbGlkYXRlTG51cmxJbnZvaWNlKHBhcnNlZEludm9pY2UsIG1pbGxpc2F0QW1vdW50LCBtZXRhZGF0YSk7XG5cbiAgcmV0dXJuIGludm9pY2U7XG59XG5cbmZ1bmN0aW9uIGdldE5ldHdvcmtGb3JJbnZvaWNlKGludm9pY2U6IHN0cmluZykge1xuICBpZiAoaW52b2ljZS5zdGFydHNXaXRoKCdsbnRicycpKSB7XG4gICAgLy8gc2lnbmV0IGludm9pY2VzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IG91ciBib2x0MTEgZGVwZW5kZW5jeVxuICAgIC8vIGJlY2F1c2UgdGhlIGB0YnNgIHByZWZpeCB1c2VkIGZvciB0aGUgaW52b2ljZSBkb2VzIG5vdCBtYXRjaCB0aGUgYHRiYFxuICAgIC8vIHByZWZpeCB1c2VkIGJ5IG9uLWNoYWluIHNpZ25ldCBhZGRyZXNzZXNcbiAgICAvLyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luanMvYm9sdDExL3B1bGwvNTgjaXNzdWVjb21tZW50LTExMDY0OTU3MDlcbiAgICAvLyB3ZSBjYW4gc3RpbGwgZGVjb2RlIHRoZSBpbnZvaWNlIGhvd2V2ZXIgdXNpbmcgYSBjdXN0b20gbmV0d29ya1xuICAgIHJldHVybiB7XG4gICAgICBiZWNoMzI6ICd0YnMnLFxuICAgICAgcHViS2V5SGFzaDogMHg2ZixcbiAgICAgIHNjcmlwdEhhc2g6IDB4YzQsXG4gICAgICB2YWxpZFdpdG5lc3NWZXJzaW9uczogWzAsIDFdLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7UGFyc2VkTGlnaHRuaW5nSW52b2ljZX0gaW52b2ljZSAtIGEgcGFyc2VkIGxpZ2h0bmluZyBpbnZvaWNlXG4gKiBAcGFyYW0ge251bWJlcn0gYW1vdW50IC0gYW1vdW50IGludGVuZGVkIHRvIHBheSBmb3IgdGhlIGludm9pY2VcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXRhZGF0YSAtIG1ldGFkYXRhIHRoYXQgaXMgdXNlZCB0byB2ZXJpZnkgdGhlIGZldGNoZWQgaW52b2ljZVxuICogQHRocm93cyBlcnJvciBmb3IgaW52b2ljZSB0aGF0IGRvZXMgbm90IG1hdGNoIHdpdGggYW1vdW50IGFuZCBtZXRhZGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVMbnVybEludm9pY2UoaW52b2ljZTogUGFyc2VkTGlnaHRuaW5nSW52b2ljZSwgbWlsbGlzYXRBbW91bnQ6IHN0cmluZywgbWV0YWRhdGE6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCB7IG1pbGxpc2F0b3NoaXMsIGRlc2NyaXB0aW9uSGFzaCB9ID0gaW52b2ljZTtcbiAgaWYgKG1pbGxpc2F0b3NoaXMgIT09IG1pbGxpc2F0QW1vdW50KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdhbW91bnQgb2YgaW52b2ljZSBkb2VzIG5vdCBtYXRjaCB3aXRoIGdpdmVuIGFtb3VudCcpO1xuICB9XG5cbiAgY29uc3QgaGFzaCA9IGNyeXB0by5jcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUobWV0YWRhdGEpLmRpZ2VzdCgnaGV4Jyk7XG4gIGlmIChkZXNjcmlwdGlvbkhhc2ggIT09IGhhc2gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludm9pY2UgaCB0YWcgZG9lcyBub3QgbWF0Y2ggd2l0aCBoYXNoIG9mIG1ldGFkYXRhJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge3Vua25vd259IGludm9pY2VTdHIgLSBhIGxpZ2h0bmluZyBpbnZvaWNlXG4gKiBAcmV0dXJuIHtQYXJzZWRMaWdodG5pbmdJbnZvaWNlfVxuICogQHRocm93cyBlcnJvciBmb3IgaW52YWxpZCBsaWdodG5pbmcgaW52b2ljZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VMaWdodG5pbmdJbnZvaWNlKGludm9pY2VTdHI6IHVua25vd24pOiBQYXJzZWRMaWdodG5pbmdJbnZvaWNlIHtcbiAgaWYgKHR5cGVvZiBpbnZvaWNlU3RyICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52b2ljZSBpcyBtYWxmb3JtZWQnKTtcbiAgfVxuXG4gIGNvbnN0IGRlY29kZWRJbnZvaWNlID0gYm9sdDExLmRlY29kZShpbnZvaWNlU3RyLCBnZXROZXR3b3JrRm9ySW52b2ljZShpbnZvaWNlU3RyKSk7XG5cbiAgaWYgKGRlY29kZWRJbnZvaWNlLm5ldHdvcmsgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52b2ljZSBuZXR3b3JrIGlzIGludmFsaWQnKTtcbiAgfVxuXG4gIGNvbnN0IHsgbWlsbGlzYXRvc2hpcywgdGFncywgcGF5ZWVOb2RlS2V5IH0gPSBkZWNvZGVkSW52b2ljZTtcblxuICBjb25zdCBwYXltZW50SGFzaCA9IHRhZ3MuZmluZCgodGFnKSA9PiB0YWcudGFnTmFtZSA9PT0gJ3BheW1lbnRfaGFzaCcpPy5kYXRhO1xuICBpZiAocGF5bWVudEhhc2ggPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgcGF5bWVudEhhc2ggIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZvaWNlIHBheW1lbnQgaGFzaCBpcyBpbnZhbGlkJyk7XG4gIH1cbiAgaWYgKHBheWVlTm9kZUtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZvaWNlIHBheWVlIHB1YiBrZXkgaXMgaW52YWxpZCcpO1xuICB9XG4gIGlmIChtaWxsaXNhdG9zaGlzID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludm9pY2UgbWlsbGlzYXRvc2hpcyBhbW91bnQgaXMgaW52YWxpZCcpO1xuICB9XG5cbiAgY29uc3QgZGVzY3JpcHRpb25IYXNoID0gdGFncy5maW5kKCh0YWcpID0+IHRhZy50YWdOYW1lID09PSAncHVycG9zZV9jb21taXRfaGFzaCcpPy5kYXRhO1xuICBpZiAoZGVzY3JpcHRpb25IYXNoICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGRlc2NyaXB0aW9uSGFzaCAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludm9pY2UgZGVzY3JpcHRpb24gaGFzaCBpcyBpbnZhbGlkJyk7XG4gIH1cblxuICByZXR1cm4geyBtaWxsaXNhdG9zaGlzLCBwYXltZW50SGFzaCwgcGF5ZWVOb2RlS2V5LCBkZXNjcmlwdGlvbkhhc2ggfTtcbn1cbiJdfQ==
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vbGlnaHRuaW5nL2xpZ2h0bmluZ1V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlDQSxrREFFQztBQUtELGtEQUVDO0FBS0Qsb0RBRUM7QUFLRCxrRUFFQztBQUtELDBEQUVDO0FBS0QsZ0VBU0M7QUFLRCw4Q0FNQztBQUtELGtFQVdDO0FBS0Qsc0RBSUM7QUEyRUQsMENBU0M7QUFNRCxnRkFJQztBQS9NRCw2REFBK0M7QUFDL0MsOERBQWdEO0FBQ2hELHVDQUF5RDtBQUN6RCxxREFBdUM7QUFFdkMsa0NBQTBDO0FBRTFDLDZGQUE2RjtBQUNoRixRQUFBLHlCQUF5QixHQUFHO0lBQ3ZDO1FBQ0UsTUFBTSxFQUFFLFNBQVM7UUFDakIsTUFBTSxFQUFFLE9BQU87S0FDaEI7SUFDRDtRQUNFLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLE1BQU0sRUFBRSxVQUFVO0tBQ25CO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsU0FBUztRQUNqQixNQUFNLEVBQUUsTUFBTTtLQUNmO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsU0FBUztRQUNqQixNQUFNLEVBQUUsT0FBTztLQUNoQjtDQUNGLENBQUM7QUFFVyxRQUFBLG9CQUFvQixHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBVSxDQUFDO0FBR3BFOztHQUVHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQUMsUUFBaUI7SUFDbkQsT0FBTyxRQUFRLEtBQUssT0FBTyxJQUFJLFFBQVEsS0FBSyxRQUFRLENBQUM7QUFDdkQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQUMsV0FBaUM7SUFDbkUsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3ZDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLG9CQUFvQixDQUFDLE9BQXdCO0lBQzNELE9BQU8sT0FBTyxLQUFLLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUNuRSxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQiwyQkFBMkIsQ0FBQyxXQUFvQjtJQUM5RCxPQUFPLDRCQUFvQixDQUFDLFFBQVEsQ0FBQyxXQUFtQyxDQUFDLENBQUM7QUFDNUUsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsdUJBQXVCLENBQUMsT0FBZ0I7SUFDdEQsT0FBTyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN6RyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQiwwQkFBMEIsQ0FBQyxRQUFnQjtJQUN6RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsUUFBUSwwQkFBMEIsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDRCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QyxJQUFJLENBQUMsQ0FBQyxJQUFJLFlBQVksT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7UUFDN0MsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDdEIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQUMsUUFBZ0I7SUFDaEQsTUFBTSxXQUFXLEdBQUcsMEJBQTBCLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDO0lBQ3JFLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1FBQzlDLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsT0FBTyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQiwyQkFBMkIsQ0FBSSxHQUFpQyxFQUFFLGdCQUF3QjtJQUN4RyxJQUFJLGdCQUFnQixLQUFLLE9BQU8sSUFBSSxnQkFBZ0IsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNsRSxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixnQkFBZ0IscUJBQXFCLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBQ0QsSUFBSSxnQkFBZ0IsS0FBSyxPQUFPLElBQUksT0FBTyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ25ELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQztJQUNuQixDQUFDO0lBQ0QsSUFBSSxnQkFBZ0IsS0FBSyxRQUFRLElBQUksUUFBUSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3JELE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUNwQixDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLGNBQXNCLEVBQUUsRUFBVTtJQUN0RSxNQUFNLFFBQVEsR0FBRyxJQUFBLHlCQUFjLEVBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEQsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3QyxPQUFPLElBQUEsd0JBQWEsRUFBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztBQUNoRCxDQUFDO0FBRUQsTUFBTSxxQkFBcUIsR0FBRyxFQUFFLENBQUM7QUFDakMsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0FBQ3pCLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUN4QixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQztBQVFoQzs7R0FFRztBQUNILFNBQVMsaUJBQWlCLENBQUMsSUFBWSxFQUFFLE9BQTJCLEVBQUUsU0FBa0I7SUFDdEYsSUFBSSxPQUFPLEtBQUssWUFBWSxJQUFJLE9BQU8sS0FBSyxrQkFBa0IsRUFBRSxDQUFDO1FBQy9ELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFcEMsSUFBSSxZQUFvQixDQUFDO0lBRXpCLFFBQVEsT0FBTyxFQUFFLENBQUM7UUFDaEIsS0FBSyxxQkFBcUI7WUFDeEIsWUFBWSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsNEJBQTRCO1lBQ3RJLE1BQU07UUFDUixLQUFLLGFBQWE7WUFDaEIsWUFBWSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCO1lBQ2pJLE1BQU07UUFDUjtZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQyxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDaEMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyx1QkFBdUIsQ0FBQyxZQUFvQyxFQUFFLFNBQWtCO0lBQ3ZGLCtGQUErRjtJQUMvRixJQUFJLFlBQVksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixDQUFVLENBQUM7SUFFbkcsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDbEMsTUFBTSxVQUFVLEdBQUcsT0FBTyxLQUFLLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RCxNQUFNLFFBQVEsR0FBRyxPQUFPLEtBQUssa0JBQWtCLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVyRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQzNELE1BQU0sSUFBSSxHQUFHLEtBQUssT0FBTyxLQUFLLFFBQVEsS0FBSyxPQUFPLEdBQUcsQ0FBQztZQUN0RCxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRWxELG1FQUFtRTtZQUNuRSxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDNUMsTUFBTSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztZQUU1RSxPQUFPO2dCQUNMLE9BQU87Z0JBQ1AsU0FBUyxFQUFFLFFBQVE7Z0JBQ25CLE9BQU87Z0JBQ1AsSUFBSTthQUNMLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLGFBQXFCLEVBQUUsT0FBd0I7SUFDN0UsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RFLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxFQUFFO1FBQ25DLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQyxDQUFDO0lBQ0YsTUFBTSw2QkFBNkIsR0FBRyx1QkFBdUIsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNFLE1BQU0sc0JBQXNCLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEUsTUFBTSxRQUFRLEdBQUcsdUJBQXVCLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNuRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLENBQUM7QUFDN0UsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLGtDQUFrQyxDQUFDLFFBQTRCLEVBQUUsWUFBb0I7SUFDbkcsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNsRyxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM5RCxPQUFPLElBQUEsc0JBQWUsRUFBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHN0YXRpY3MgZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IGltcG9ydE1hY2Fyb29uLCBieXRlc1RvQmFzZTY0IH0gZnJvbSAnbWFjYXJvb24nO1xuaW1wb3J0ICogYXMgYnM1OGNoZWNrIGZyb20gJ2JzNThjaGVjayc7XG5pbXBvcnQgeyBXYXRjaE9ubHksIFdhdGNoT25seUFjY291bnQgfSBmcm9tICcuL2NvZGVjcyc7XG5pbXBvcnQgeyBnZXRTaGFyZWRTZWNyZXQgfSBmcm9tICcuLi9lY2RoJztcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2xpZ2h0bmluZ25ldHdvcmsvbG5kL2Jsb2IvbWFzdGVyL2RvY3MvcmVtb3RlLXNpZ25pbmcubWQjdGhlLXNpZ25lci1ub2RlXG5leHBvcnQgY29uc3Qgc2lnbmVyTWFjYXJvb25QZXJtaXNzaW9ucyA9IFtcbiAge1xuICAgIGVudGl0eTogJ21lc3NhZ2UnLFxuICAgIGFjdGlvbjogJ3dyaXRlJyxcbiAgfSxcbiAge1xuICAgIGVudGl0eTogJ3NpZ25lcicsXG4gICAgYWN0aW9uOiAnZ2VuZXJhdGUnLFxuICB9LFxuICB7XG4gICAgZW50aXR5OiAnYWRkcmVzcycsXG4gICAgYWN0aW9uOiAncmVhZCcsXG4gIH0sXG4gIHtcbiAgICBlbnRpdHk6ICdvbmNoYWluJyxcbiAgICBhY3Rpb246ICd3cml0ZScsXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3QgbGlnaHRuaW5nTmV0d29ya05hbWUgPSBbJ2JpdGNvaW4nLCAndGVzdG5ldCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgTGlnaHRuaW5nTmV0d29ya05hbWUgPSAodHlwZW9mIGxpZ2h0bmluZ05ldHdvcmtOYW1lKVtudW1iZXJdO1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY29pbiBuYW1lIGlzIGEgbGlnaHRuaW5nIGNvaW4gbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTGlnaHRuaW5nQ29pbk5hbWUoY29pbk5hbWU6IHVua25vd24pOiBjb2luTmFtZSBpcyAnbG5idGMnIHwgJ3RsbmJ0Yycge1xuICByZXR1cm4gY29pbk5hbWUgPT09ICdsbmJ0YycgfHwgY29pbk5hbWUgPT09ICd0bG5idGMnO1xufVxuXG4vKipcbiAqIEdldCB0aGUgdXR4b2xpYiBuZXR3b3JrIGZvciBhIGxpZ2h0bmluZyBuZXR3b3JrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGlnaHRuaW5nTmV0d29yayhuZXR3b3JrTmFtZTogTGlnaHRuaW5nTmV0d29ya05hbWUpOiB1dHhvbGliLk5ldHdvcmsge1xuICByZXR1cm4gdXR4b2xpYi5uZXR3b3Jrc1tuZXR3b3JrTmFtZV07XG59XG5cbi8qKlxuICogR2V0IHRoZSBsaWdodG5pbmcgY29pbiBuYW1lIGZvciBhIHV0eG9saWIgbmV0d29yay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExpZ2h0bmluZ0NvaW5OYW1lKG5ldHdvcms6IHV0eG9saWIuTmV0d29yayk6IHN0cmluZyB7XG4gIHJldHVybiBuZXR3b3JrID09PSB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4gPyAnbG5idGMnIDogJ3RsbmJ0Yyc7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBuZXR3b3JrIG5hbWUgaXMgYSB2YWxpZCBsaWdodG5pbmcgbmV0d29yayBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZExpZ2h0bmluZ05ldHdvcmtOYW1lKG5ldHdvcmtOYW1lOiB1bmtub3duKTogbmV0d29ya05hbWUgaXMgTGlnaHRuaW5nTmV0d29ya05hbWUge1xuICByZXR1cm4gbGlnaHRuaW5nTmV0d29ya05hbWUuaW5jbHVkZXMobmV0d29ya05hbWUgYXMgTGlnaHRuaW5nTmV0d29ya05hbWUpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgbmV0d29yayBpcyBhIHZhbGlkIGxpZ2h0bmluZyBuZXR3b3JrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZExpZ2h0bmluZ05ldHdvcmsobmV0d29yazogdW5rbm93bik6IG5ldHdvcmsgaXMgdXR4b2xpYi5OZXR3b3JrIHtcbiAgcmV0dXJuIHV0eG9saWIuaXNWYWxpZE5ldHdvcmsobmV0d29yaykgJiYgaXNWYWxpZExpZ2h0bmluZ05ldHdvcmtOYW1lKHV0eG9saWIuZ2V0TmV0d29ya05hbWUobmV0d29yaykpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHN0YXRpY3MgbmV0d29yayBkYXRhIGZvciBhIGxpZ2h0bmluZyBjb2luLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdGljc0xpZ2h0bmluZ05ldHdvcmsoY29pbk5hbWU6IHN0cmluZyk6IHN0YXRpY3MuTGlnaHRuaW5nTmV0d29yayB7XG4gIGlmICghaXNMaWdodG5pbmdDb2luTmFtZShjb2luTmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7Y29pbk5hbWV9IGlzIG5vdCBhIGxpZ2h0bmluZyBjb2luYCk7XG4gIH1cbiAgY29uc3QgY29pbiA9IHN0YXRpY3MuY29pbnMuZ2V0KGNvaW5OYW1lKTtcbiAgaWYgKCEoY29pbiBpbnN0YW5jZW9mIHN0YXRpY3MuTGlnaHRuaW5nQ29pbikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvaW4gaXMgbm90IGEgbGlnaHRuaW5nIGNvaW4nKTtcbiAgfVxuICByZXR1cm4gY29pbi5uZXR3b3JrO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHV0eG9saWIgbmV0d29yayBmb3IgYSBsaWdodG5pbmcgY29pbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFV0eG9saWJOZXR3b3JrKGNvaW5OYW1lOiBzdHJpbmcpOiB1dHhvbGliLk5ldHdvcmsge1xuICBjb25zdCBuZXR3b3JrTmFtZSA9IGdldFN0YXRpY3NMaWdodG5pbmdOZXR3b3JrKGNvaW5OYW1lKS51dHhvbGliTmFtZTtcbiAgaWYgKCFpc1ZhbGlkTGlnaHRuaW5nTmV0d29ya05hbWUobmV0d29ya05hbWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGxpZ2h0bmluZyBuZXR3b3JrJyk7XG4gIH1cbiAgcmV0dXJuIGdldExpZ2h0bmluZ05ldHdvcmsobmV0d29ya05hbWUpO1xufVxuXG4vKipcbiAqIFJldHVybnMgY29pbiBzcGVjaWZpYyBkYXRhIGZvciBhIGxpZ2h0bmluZyBjb2luLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW53cmFwTGlnaHRuaW5nQ29pblNwZWNpZmljPFY+KG9iajogeyBsbmJ0YzogViB9IHwgeyB0bG5idGM6IFYgfSwgY29pblNwZWNpZmljUGF0aDogc3RyaW5nKTogViB7XG4gIGlmIChjb2luU3BlY2lmaWNQYXRoICE9PSAnbG5idGMnICYmIGNvaW5TcGVjaWZpY1BhdGggIT09ICd0bG5idGMnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGNvaW5TcGVjaWZpY1BhdGggJHtjb2luU3BlY2lmaWNQYXRofSBmb3IgbGlnaHRuaW5nIGNvaW5gKTtcbiAgfVxuICBpZiAoY29pblNwZWNpZmljUGF0aCA9PT0gJ2xuYnRjJyAmJiAnbG5idGMnIGluIG9iaikge1xuICAgIHJldHVybiBvYmoubG5idGM7XG4gIH1cbiAgaWYgKGNvaW5TcGVjaWZpY1BhdGggPT09ICd0bG5idGMnICYmICd0bG5idGMnIGluIG9iaikge1xuICAgIHJldHVybiBvYmoudGxuYnRjO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBsaWdodG5pbmcgY29pbiBzcGVjaWZpYycpO1xufVxuXG4vKipcbiAqIEFkZHMgYW4gSVAgY2F2ZWF0IHRvIGEgbWFjYXJvb24gYW5kIHJldHVybnMgdGhlIG1vZGlmaWVkIG1hY2Fyb29uIGFzIGEgQmFzZTY0IHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZElQQ2F2ZWF0VG9NYWNhcm9vbihtYWNhcm9vbkJhc2U2NDogc3RyaW5nLCBpcDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbWFjYXJvb24gPSBpbXBvcnRNYWNhcm9vbihtYWNhcm9vbkJhc2U2NCk7XG4gIG1hY2Fyb29uLmFkZEZpcnN0UGFydHlDYXZlYXQoYGlwYWRkciAke2lwfWApO1xuICByZXR1cm4gYnl0ZXNUb0Jhc2U2NChtYWNhcm9vbi5leHBvcnRCaW5hcnkoKSk7XG59XG5cbmNvbnN0IFBVUlBPU0VfV1JBUFBFRF9QMldLSCA9IDQ5O1xuY29uc3QgUFVSUE9TRV9QMldLSCA9IDg0O1xuY29uc3QgUFVSUE9TRV9QMlRSID0gODY7XG5jb25zdCBQVVJQT1NFX0FMTF9PVEhFUlMgPSAxMDE3O1xuXG50eXBlIEV4dGVuZGVkS2V5UHVycG9zZSA9XG4gIHwgdHlwZW9mIFBVUlBPU0VfV1JBUFBFRF9QMldLSFxuICB8IHR5cGVvZiBQVVJQT1NFX1AyV0tIXG4gIHwgdHlwZW9mIFBVUlBPU0VfUDJUUlxuICB8IHR5cGVvZiBQVVJQT1NFX0FMTF9PVEhFUlM7XG5cbi8qKlxuICogQ29udmVydHMgYW4gZXh0ZW5kZWQgcHVibGljIGtleSAoeHB1YikgdG8gdGhlIGFwcHJvcHJpYXRlIHByZWZpeCAoeXB1YiwgdnB1YiwgZXRjLikgYmFzZWQgb24gaXRzIHB1cnBvc2UgYW5kIG5ldHdvcmsuXG4gKi9cbmZ1bmN0aW9uIGNvbnZlcnRYcHViUHJlZml4KHhwdWI6IHN0cmluZywgcHVycG9zZTogRXh0ZW5kZWRLZXlQdXJwb3NlLCBpc01haW5uZXQ6IGJvb2xlYW4pOiBzdHJpbmcge1xuICBpZiAocHVycG9zZSA9PT0gUFVSUE9TRV9QMlRSIHx8IHB1cnBvc2UgPT09IFBVUlBPU0VfQUxMX09USEVSUykge1xuICAgIHJldHVybiB4cHViO1xuICB9XG4gIGNvbnN0IGRhdGEgPSBiczU4Y2hlY2suZGVjb2RlKHhwdWIpO1xuXG4gIGxldCB2ZXJzaW9uQnl0ZXM6IEJ1ZmZlcjtcblxuICBzd2l0Y2ggKHB1cnBvc2UpIHtcbiAgICBjYXNlIFBVUlBPU0VfV1JBUFBFRF9QMldLSDpcbiAgICAgIHZlcnNpb25CeXRlcyA9IGlzTWFpbm5ldCA/IEJ1ZmZlci5mcm9tKFsweDA0LCAweDlkLCAweDdjLCAweGIyXSkgOiBCdWZmZXIuZnJvbShbMHgwNCwgMHg0YSwgMHg1MiwgMHg2Ml0pOyAvLyB5cHViL3VwdWIgZm9yIHAyc2gtcDJ3cGtoXG4gICAgICBicmVhaztcbiAgICBjYXNlIFBVUlBPU0VfUDJXS0g6XG4gICAgICB2ZXJzaW9uQnl0ZXMgPSBpc01haW5uZXQgPyBCdWZmZXIuZnJvbShbMHgwNCwgMHhiMiwgMHg0NywgMHg0Nl0pIDogQnVmZmVyLmZyb20oWzB4MDQsIDB4NWYsIDB4MWMsIDB4ZjZdKTsgLy8genB1Yi92cHViIGZvciBwMndwa2hcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHB1cnBvc2UnKTtcbiAgfVxuXG4gIHZlcnNpb25CeXRlcy5jb3B5KGRhdGEsIDAsIDAsIDQpO1xuICByZXR1cm4gYnM1OGNoZWNrLmVuY29kZShkYXRhKTtcbn1cblxuLyoqXG4gKiBEZXJpdmVzIHdhdGNoLW9ubHkgYWNjb3VudHMgZnJvbSB0aGUgbWFzdGVyIEhEIG5vZGUgZm9yIHRoZSBnaXZlbiBwdXJwb3NlcyBhbmQgbmV0d29yay5cbiAqL1xuZnVuY3Rpb24gZGVyaXZlV2F0Y2hPbmx5QWNjb3VudHMobWFzdGVySEROb2RlOiB1dHhvbGliLkJJUDMySW50ZXJmYWNlLCBpc01haW5uZXQ6IGJvb2xlYW4pOiBXYXRjaE9ubHlBY2NvdW50W10ge1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbGlnaHRuaW5nbmV0d29yay9sbmQvYmxvYi9tYXN0ZXIvZG9jcy9yZW1vdGUtc2lnbmluZy5tZCNyZXF1aXJlZC1hY2NvdW50c1xuICBpZiAobWFzdGVySEROb2RlLmlzTmV1dGVyZWQoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignbWFzdGVySEROb2RlIG11c3Qgbm90IGJlIG5ldXRlcmVkJyk7XG4gIH1cblxuICBjb25zdCBwdXJwb3NlcyA9IFtQVVJQT1NFX1dSQVBQRURfUDJXS0gsIFBVUlBPU0VfUDJXS0gsIFBVUlBPU0VfUDJUUiwgUFVSUE9TRV9BTExfT1RIRVJTXSBhcyBjb25zdDtcblxuICByZXR1cm4gcHVycG9zZXMuZmxhdE1hcCgocHVycG9zZSkgPT4ge1xuICAgIGNvbnN0IG1heEFjY291bnQgPSBwdXJwb3NlID09PSBQVVJQT1NFX0FMTF9PVEhFUlMgPyAyNTUgOiAwO1xuICAgIGNvbnN0IGNvaW5UeXBlID0gcHVycG9zZSAhPT0gUFVSUE9TRV9BTExfT1RIRVJTIHx8IGlzTWFpbm5ldCA/IDAgOiAxO1xuXG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IG1heEFjY291bnQgKyAxIH0sIChfLCBhY2NvdW50KSA9PiB7XG4gICAgICBjb25zdCBwYXRoID0gYG0vJHtwdXJwb3NlfScvJHtjb2luVHlwZX0nLyR7YWNjb3VudH0nYDtcbiAgICAgIGNvbnN0IGRlcml2ZWROb2RlID0gbWFzdGVySEROb2RlLmRlcml2ZVBhdGgocGF0aCk7XG5cbiAgICAgIC8vIEVuc3VyZSB0aGUgbm9kZSBpcyBuZXV0ZXJlZCAoaS5lLiwgY29udmVydGVkIHRvIHB1YmxpYyBrZXkgb25seSlcbiAgICAgIGNvbnN0IG5ldXRlcmVkTm9kZSA9IGRlcml2ZWROb2RlLm5ldXRlcmVkKCk7XG4gICAgICBjb25zdCB4cHViID0gY29udmVydFhwdWJQcmVmaXgobmV1dGVyZWROb2RlLnRvQmFzZTU4KCksIHB1cnBvc2UsIGlzTWFpbm5ldCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHB1cnBvc2UsXG4gICAgICAgIGNvaW5fdHlwZTogY29pblR5cGUsXG4gICAgICAgIGFjY291bnQsXG4gICAgICAgIHhwdWIsXG4gICAgICB9O1xuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgd2F0Y2gtb25seSB3YWxsZXQgaW5pdCBkYXRhIGZyb20gdGhlIHByb3ZpZGVkIHNpZ25lciByb290IGtleSBhbmQgbmV0d29yay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVdhdGNoT25seShzaWduZXJSb290S2V5OiBzdHJpbmcsIG5ldHdvcms6IHV0eG9saWIuTmV0d29yayk6IFdhdGNoT25seSB7XG4gIGNvbnN0IG1hc3RlckhETm9kZSA9IHV0eG9saWIuYmlwMzIuZnJvbUJhc2U1OChzaWduZXJSb290S2V5LCBuZXR3b3JrKTtcbiAgY29uc3QgZ2V0Q3VycmVudFVuaXhUaW1lc3RhbXAgPSAoKSA9PiB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApO1xuICB9O1xuICBjb25zdCBtYXN0ZXJfa2V5X2JpcnRoZGF5X3RpbWVzdGFtcCA9IGdldEN1cnJlbnRVbml4VGltZXN0YW1wKCkudG9TdHJpbmcoKTtcbiAgY29uc3QgbWFzdGVyX2tleV9maW5nZXJwcmludCA9IG1hc3RlckhETm9kZS5maW5nZXJwcmludC50b1N0cmluZygnaGV4Jyk7XG4gIGNvbnN0IGFjY291bnRzID0gZGVyaXZlV2F0Y2hPbmx5QWNjb3VudHMobWFzdGVySEROb2RlLCB1dHhvbGliLmlzTWFpbm5ldChuZXR3b3JrKSk7XG4gIHJldHVybiB7IG1hc3Rlcl9rZXlfYmlydGhkYXlfdGltZXN0YW1wLCBtYXN0ZXJfa2V5X2ZpbmdlcnByaW50LCBhY2NvdW50cyB9O1xufVxuXG4vKipcbiAqIERlcml2ZXMgdGhlIHNoYXJlZCBFbGxpcHRpYyBDdXJ2ZSBEaWZmaWUtSGVsbG1hbiAoRUNESCkgc2VjcmV0IGJldHdlZW4gdGhlIHVzZXIncyBhdXRoIGV4dGVuZGVkIHByaXZhdGUga2V5XG4gKiBhbmQgdGhlIExpZ2h0bmluZyBzZXJ2aWNlJ3MgcHVibGljIGtleSBmb3Igc2VjdXJlIGNvbW11bmljYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXJpdmVMaWdodG5pbmdTZXJ2aWNlU2hhcmVkU2VjcmV0KGNvaW5OYW1lOiAnbG5idGMnIHwgJ3RsbmJ0YycsIHVzZXJBdXRoWHBydjogc3RyaW5nKTogQnVmZmVyIHtcbiAgY29uc3QgcHVibGljS2V5ID0gQnVmZmVyLmZyb20oZ2V0U3RhdGljc0xpZ2h0bmluZ05ldHdvcmsoY29pbk5hbWUpLmxpZ2h0bmluZ1NlcnZpY2VQdWJLZXksICdoZXgnKTtcbiAgY29uc3QgdXNlckF1dGhIZE5vZGUgPSB1dHhvbGliLmJpcDMyLmZyb21CYXNlNTgodXNlckF1dGhYcHJ2KTtcbiAgcmV0dXJuIGdldFNoYXJlZFNlY3JldCh1c2VyQXV0aEhkTm9kZSwgcHVibGljS2V5KTtcbn1cbiJdfQ==
@@ -0,0 +1,18 @@
1
+ import { Wallet } from '../wallet';
2
+ import { LightningAuthKeychain, LightningKeychain, UpdateLightningWallet } from './codecs';
3
+ /**
4
+ * Get the lightning keychain for the given wallet.
5
+ */
6
+ export declare function getLightningKeychain(wallet: Wallet): Promise<LightningKeychain>;
7
+ /**
8
+ * Get the lightning auth keychains for the given wallet.
9
+ */
10
+ export declare function getLightningAuthKeychains(wallet: Wallet): Promise<{
11
+ userAuthKey: LightningAuthKeychain;
12
+ nodeAuthKey: LightningAuthKeychain;
13
+ }>;
14
+ /**
15
+ * Update the lightning wallet with the given data.
16
+ */
17
+ export declare function updateLightningWallet(wallet: Wallet, data: UpdateLightningWallet): Promise<unknown>;
18
+ //# sourceMappingURL=lightningWallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lightningWallet.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/lightning/lightningWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAI3F;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAcrF;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,WAAW,EAAE,qBAAqB,CAAC;IAAC,WAAW,EAAE,qBAAqB,CAAA;CAAE,CAAC,CA2BrF;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,CAMzG"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getLightningKeychain = getLightningKeychain;
4
+ exports.getLightningAuthKeychains = getLightningAuthKeychains;
5
+ exports.updateLightningWallet = updateLightningWallet;
6
+ const codecs_1 = require("./codecs");
7
+ const utils_1 = require("../utils");
8
+ const lightningUtils_1 = require("./lightningUtils");
9
+ /**
10
+ * Get the lightning keychain for the given wallet.
11
+ */
12
+ async function getLightningKeychain(wallet) {
13
+ const coin = wallet.baseCoin;
14
+ if (coin.getFamily() !== 'lnbtc') {
15
+ throw new Error(`Invalid coin to get lightning Keychain: ${coin.getFamily()}`);
16
+ }
17
+ const keyIds = wallet.keyIds();
18
+ if (keyIds.length !== 1) {
19
+ throw new Error(`Invalid number of key in lightning wallet: ${keyIds.length}`);
20
+ }
21
+ const keychain = await coin.keychains().get({ id: keyIds[0] });
22
+ return (0, utils_1.decodeOrElse)(codecs_1.LightningKeychain.name, codecs_1.LightningKeychain, keychain, (_) => {
23
+ // DON'T throw errors from decodeOrElse. It could leak sensitive information.
24
+ throw new Error(`Invalid user key`);
25
+ });
26
+ }
27
+ /**
28
+ * Get the lightning auth keychains for the given wallet.
29
+ */
30
+ async function getLightningAuthKeychains(wallet) {
31
+ const coin = wallet.baseCoin;
32
+ if (coin.getFamily() !== 'lnbtc') {
33
+ throw new Error(`Invalid coin to get lightning auth keychains: ${coin.getFamily()}`);
34
+ }
35
+ const authKeyIds = wallet.coinSpecific()?.keys;
36
+ if (authKeyIds?.length !== 2) {
37
+ throw new Error(`Invalid number of auth keys in lightning wallet: ${authKeyIds?.length}`);
38
+ }
39
+ const keychains = await Promise.all(authKeyIds.map((id) => coin.keychains().get({ id })));
40
+ const authKeychains = keychains.map((keychain) => {
41
+ return (0, utils_1.decodeOrElse)(codecs_1.LightningAuthKeychain.name, codecs_1.LightningAuthKeychain, keychain, (_) => {
42
+ // DON'T throw errors from decodeOrElse. It could leak sensitive information.
43
+ throw new Error(`Invalid lightning auth key: ${keychain?.id}`);
44
+ });
45
+ });
46
+ const [userAuthKey, nodeAuthKey] = ['userAuth', 'nodeAuth'].map((purpose) => {
47
+ const keychain = authKeychains.find((k) => (0, lightningUtils_1.unwrapLightningCoinSpecific)(k.coinSpecific, coin.getChain()).purpose === purpose);
48
+ if (!keychain) {
49
+ throw new Error(`Missing ${purpose} key`);
50
+ }
51
+ return keychain;
52
+ });
53
+ return { userAuthKey, nodeAuthKey };
54
+ }
55
+ /**
56
+ * Update the lightning wallet with the given data.
57
+ */
58
+ async function updateLightningWallet(wallet, data) {
59
+ const coin = wallet.baseCoin;
60
+ if (coin.getFamily() !== 'lnbtc') {
61
+ throw new Error(`Invalid coin to update lightning wallet: ${coin.getFamily()}`);
62
+ }
63
+ return await wallet.bitgo.put(wallet.url()).send(data).result();
64
+ }
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nV2FsbGV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL2xpZ2h0bmluZy9saWdodG5pbmdXYWxsZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFRQSxvREFjQztBQUtELDhEQTZCQztBQUtELHNEQU1DO0FBbEVELHFDQUEyRjtBQUMzRixvQ0FBd0M7QUFDeEMscURBQStEO0FBRS9EOztHQUVHO0FBQ0ksS0FBSyxVQUFVLG9CQUFvQixDQUFDLE1BQWM7SUFDdkQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztJQUM3QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDL0IsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFDRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvRCxPQUFPLElBQUEsb0JBQVksRUFBQywwQkFBaUIsQ0FBQyxJQUFJLEVBQUUsMEJBQWlCLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDN0UsNkVBQTZFO1FBQzdFLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN0QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7R0FFRztBQUNJLEtBQUssVUFBVSx5QkFBeUIsQ0FDN0MsTUFBYztJQUVkLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDN0IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBQ0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxFQUFFLElBQUksQ0FBQztJQUMvQyxJQUFJLFVBQVUsRUFBRSxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUNELE1BQU0sU0FBUyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUYsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1FBQy9DLE9BQU8sSUFBQSxvQkFBWSxFQUFDLDhCQUFxQixDQUFDLElBQUksRUFBRSw4QkFBcUIsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNyRiw2RUFBNkU7WUFDN0UsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNILE1BQU0sQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLEdBQUksQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDckYsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FDakMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUEsNENBQTJCLEVBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUN4RixDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLE9BQU8sTUFBTSxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQztBQUN0QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSSxLQUFLLFVBQVUscUJBQXFCLENBQUMsTUFBYyxFQUFFLElBQTJCO0lBQ3JGLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDN0IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBQ0QsT0FBTyxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgV2FsbGV0IH0gZnJvbSAnLi4vd2FsbGV0JztcbmltcG9ydCB7IExpZ2h0bmluZ0F1dGhLZXljaGFpbiwgTGlnaHRuaW5nS2V5Y2hhaW4sIFVwZGF0ZUxpZ2h0bmluZ1dhbGxldCB9IGZyb20gJy4vY29kZWNzJztcbmltcG9ydCB7IGRlY29kZU9yRWxzZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IHVud3JhcExpZ2h0bmluZ0NvaW5TcGVjaWZpYyB9IGZyb20gJy4vbGlnaHRuaW5nVXRpbHMnO1xuXG4vKipcbiAqIEdldCB0aGUgbGlnaHRuaW5nIGtleWNoYWluIGZvciB0aGUgZ2l2ZW4gd2FsbGV0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0TGlnaHRuaW5nS2V5Y2hhaW4od2FsbGV0OiBXYWxsZXQpOiBQcm9taXNlPExpZ2h0bmluZ0tleWNoYWluPiB7XG4gIGNvbnN0IGNvaW4gPSB3YWxsZXQuYmFzZUNvaW47XG4gIGlmIChjb2luLmdldEZhbWlseSgpICE9PSAnbG5idGMnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGNvaW4gdG8gZ2V0IGxpZ2h0bmluZyBLZXljaGFpbjogJHtjb2luLmdldEZhbWlseSgpfWApO1xuICB9XG4gIGNvbnN0IGtleUlkcyA9IHdhbGxldC5rZXlJZHMoKTtcbiAgaWYgKGtleUlkcy5sZW5ndGggIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgbnVtYmVyIG9mIGtleSBpbiBsaWdodG5pbmcgd2FsbGV0OiAke2tleUlkcy5sZW5ndGh9YCk7XG4gIH1cbiAgY29uc3Qga2V5Y2hhaW4gPSBhd2FpdCBjb2luLmtleWNoYWlucygpLmdldCh7IGlkOiBrZXlJZHNbMF0gfSk7XG4gIHJldHVybiBkZWNvZGVPckVsc2UoTGlnaHRuaW5nS2V5Y2hhaW4ubmFtZSwgTGlnaHRuaW5nS2V5Y2hhaW4sIGtleWNoYWluLCAoXykgPT4ge1xuICAgIC8vIERPTidUIHRocm93IGVycm9ycyBmcm9tIGRlY29kZU9yRWxzZS4gSXQgY291bGQgbGVhayBzZW5zaXRpdmUgaW5mb3JtYXRpb24uXG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHVzZXIga2V5YCk7XG4gIH0pO1xufVxuXG4vKipcbiAqIEdldCB0aGUgbGlnaHRuaW5nIGF1dGgga2V5Y2hhaW5zIGZvciB0aGUgZ2l2ZW4gd2FsbGV0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0TGlnaHRuaW5nQXV0aEtleWNoYWlucyhcbiAgd2FsbGV0OiBXYWxsZXRcbik6IFByb21pc2U8eyB1c2VyQXV0aEtleTogTGlnaHRuaW5nQXV0aEtleWNoYWluOyBub2RlQXV0aEtleTogTGlnaHRuaW5nQXV0aEtleWNoYWluIH0+IHtcbiAgY29uc3QgY29pbiA9IHdhbGxldC5iYXNlQ29pbjtcbiAgaWYgKGNvaW4uZ2V0RmFtaWx5KCkgIT09ICdsbmJ0YycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgY29pbiB0byBnZXQgbGlnaHRuaW5nIGF1dGgga2V5Y2hhaW5zOiAke2NvaW4uZ2V0RmFtaWx5KCl9YCk7XG4gIH1cbiAgY29uc3QgYXV0aEtleUlkcyA9IHdhbGxldC5jb2luU3BlY2lmaWMoKT8ua2V5cztcbiAgaWYgKGF1dGhLZXlJZHM/Lmxlbmd0aCAhPT0gMikge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBudW1iZXIgb2YgYXV0aCBrZXlzIGluIGxpZ2h0bmluZyB3YWxsZXQ6ICR7YXV0aEtleUlkcz8ubGVuZ3RofWApO1xuICB9XG4gIGNvbnN0IGtleWNoYWlucyA9IGF3YWl0IFByb21pc2UuYWxsKGF1dGhLZXlJZHMubWFwKChpZCkgPT4gY29pbi5rZXljaGFpbnMoKS5nZXQoeyBpZCB9KSkpO1xuICBjb25zdCBhdXRoS2V5Y2hhaW5zID0ga2V5Y2hhaW5zLm1hcCgoa2V5Y2hhaW4pID0+IHtcbiAgICByZXR1cm4gZGVjb2RlT3JFbHNlKExpZ2h0bmluZ0F1dGhLZXljaGFpbi5uYW1lLCBMaWdodG5pbmdBdXRoS2V5Y2hhaW4sIGtleWNoYWluLCAoXykgPT4ge1xuICAgICAgLy8gRE9OJ1QgdGhyb3cgZXJyb3JzIGZyb20gZGVjb2RlT3JFbHNlLiBJdCBjb3VsZCBsZWFrIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbi5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBsaWdodG5pbmcgYXV0aCBrZXk6ICR7a2V5Y2hhaW4/LmlkfWApO1xuICAgIH0pO1xuICB9KTtcbiAgY29uc3QgW3VzZXJBdXRoS2V5LCBub2RlQXV0aEtleV0gPSAoWyd1c2VyQXV0aCcsICdub2RlQXV0aCddIGFzIGNvbnN0KS5tYXAoKHB1cnBvc2UpID0+IHtcbiAgICBjb25zdCBrZXljaGFpbiA9IGF1dGhLZXljaGFpbnMuZmluZChcbiAgICAgIChrKSA9PiB1bndyYXBMaWdodG5pbmdDb2luU3BlY2lmaWMoay5jb2luU3BlY2lmaWMsIGNvaW4uZ2V0Q2hhaW4oKSkucHVycG9zZSA9PT0gcHVycG9zZVxuICAgICk7XG4gICAgaWYgKCFrZXljaGFpbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nICR7cHVycG9zZX0ga2V5YCk7XG4gICAgfVxuICAgIHJldHVybiBrZXljaGFpbjtcbiAgfSk7XG5cbiAgcmV0dXJuIHsgdXNlckF1dGhLZXksIG5vZGVBdXRoS2V5IH07XG59XG5cbi8qKlxuICogVXBkYXRlIHRoZSBsaWdodG5pbmcgd2FsbGV0IHdpdGggdGhlIGdpdmVuIGRhdGEuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1cGRhdGVMaWdodG5pbmdXYWxsZXQod2FsbGV0OiBXYWxsZXQsIGRhdGE6IFVwZGF0ZUxpZ2h0bmluZ1dhbGxldCk6IFByb21pc2U8dW5rbm93bj4ge1xuICBjb25zdCBjb2luID0gd2FsbGV0LmJhc2VDb2luO1xuICBpZiAoY29pbi5nZXRGYW1pbHkoKSAhPT0gJ2xuYnRjJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBjb2luIHRvIHVwZGF0ZSBsaWdodG5pbmcgd2FsbGV0OiAke2NvaW4uZ2V0RmFtaWx5KCl9YCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHdhbGxldC5iaXRnby5wdXQod2FsbGV0LnVybCgpKS5zZW5kKGRhdGEpLnJlc3VsdCgpO1xufVxuIl19
@@ -0,0 +1,17 @@
1
+ export type Signable = boolean | number | string | SignableRecord | SignableArray;
2
+ export interface SignableRecord {
3
+ [key: string]: Signable;
4
+ }
5
+ export interface SignableArray {
6
+ [key: number]: Signable;
7
+ }
8
+ /**
9
+ * Recursively canonicalizes an object by sorting its keys.
10
+ *
11
+ * @param obj - The object to be canonicalized. It can be a boolean, number, string,
12
+ * a record of signable values, or an array of signable values.
13
+ * @returns The canonicalized object with sorted keys.
14
+ * @throws Will throw an error if the object type is invalid.
15
+ */
16
+ export declare function canonicalizeObject(obj: Signable): Signable;
17
+ //# sourceMappingURL=signableJson.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signableJson.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/lightning/signableJson.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,cAAc,GAAG,aAAa,CAAC;AAElF,MAAM,WAAW,cAAc;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAmB1D"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.canonicalizeObject = canonicalizeObject;
4
+ /**
5
+ * Recursively canonicalizes an object by sorting its keys.
6
+ *
7
+ * @param obj - The object to be canonicalized. It can be a boolean, number, string,
8
+ * a record of signable values, or an array of signable values.
9
+ * @returns The canonicalized object with sorted keys.
10
+ * @throws Will throw an error if the object type is invalid.
11
+ */
12
+ function canonicalizeObject(obj) {
13
+ if (typeof obj === 'boolean' || typeof obj === 'number' || typeof obj === 'string') {
14
+ return obj;
15
+ }
16
+ if (Array.isArray(obj)) {
17
+ return obj.map(canonicalizeObject);
18
+ }
19
+ if (obj !== null && typeof obj === 'object') {
20
+ return Object.keys(obj)
21
+ .sort()
22
+ .reduce((result, key) => {
23
+ result[key] = canonicalizeObject(obj[key]);
24
+ return result;
25
+ }, {});
26
+ }
27
+ throw new Error('Invalid object type');
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFibGVKc29uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL2xpZ2h0bmluZy9zaWduYWJsZUpzb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFrQkEsZ0RBbUJDO0FBM0JEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxHQUFhO0lBQzlDLElBQUksT0FBTyxHQUFHLEtBQUssU0FBUyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNuRixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN2QixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzVDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7YUFDcEIsSUFBSSxFQUFFO2FBQ04sTUFBTSxDQUFDLENBQUMsTUFBZ0MsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNoRCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsa0JBQWtCLENBQUUsR0FBbUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzVFLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDekMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFNpZ25hYmxlID0gYm9vbGVhbiB8IG51bWJlciB8IHN0cmluZyB8IFNpZ25hYmxlUmVjb3JkIHwgU2lnbmFibGVBcnJheTtcblxuZXhwb3J0IGludGVyZmFjZSBTaWduYWJsZVJlY29yZCB7XG4gIFtrZXk6IHN0cmluZ106IFNpZ25hYmxlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25hYmxlQXJyYXkge1xuICBba2V5OiBudW1iZXJdOiBTaWduYWJsZTtcbn1cblxuLyoqXG4gKiBSZWN1cnNpdmVseSBjYW5vbmljYWxpemVzIGFuIG9iamVjdCBieSBzb3J0aW5nIGl0cyBrZXlzLlxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGJlIGNhbm9uaWNhbGl6ZWQuIEl0IGNhbiBiZSBhIGJvb2xlYW4sIG51bWJlciwgc3RyaW5nLFxuICogICAgICAgICAgICAgIGEgcmVjb3JkIG9mIHNpZ25hYmxlIHZhbHVlcywgb3IgYW4gYXJyYXkgb2Ygc2lnbmFibGUgdmFsdWVzLlxuICogQHJldHVybnMgVGhlIGNhbm9uaWNhbGl6ZWQgb2JqZWN0IHdpdGggc29ydGVkIGtleXMuXG4gKiBAdGhyb3dzIFdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIG9iamVjdCB0eXBlIGlzIGludmFsaWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYW5vbmljYWxpemVPYmplY3Qob2JqOiBTaWduYWJsZSk6IFNpZ25hYmxlIHtcbiAgaWYgKHR5cGVvZiBvYmogPT09ICdib29sZWFuJyB8fCB0eXBlb2Ygb2JqID09PSAnbnVtYmVyJyB8fCB0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgcmV0dXJuIG9iai5tYXAoY2Fub25pY2FsaXplT2JqZWN0KTtcbiAgfVxuXG4gIGlmIChvYmogIT09IG51bGwgJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKVxuICAgICAgLnNvcnQoKVxuICAgICAgLnJlZHVjZSgocmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBTaWduYWJsZT4sIGtleSkgPT4ge1xuICAgICAgICByZXN1bHRba2V5XSA9IGNhbm9uaWNhbGl6ZU9iamVjdCgob2JqIGFzIHsgW2tleTogc3RyaW5nXTogU2lnbmFibGUgfSlba2V5XSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9LCB7fSk7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb2JqZWN0IHR5cGUnKTtcbn1cbiJdfQ==
@@ -0,0 +1,22 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ import { Signable } from './signableJson';
3
+ /**
4
+ * Verifies a signature for a given message.
5
+ *
6
+ * @param {Signable} message - The message to verify.
7
+ * @param {string} signature - The signature to verify, in hexadecimal format.
8
+ * @param {string} pub - The public key in BIP32 format.
9
+ * @param {utxolib.Network} network - The network to use for verification.
10
+ * @returns {boolean} - Returns true if the signature is valid, false otherwise.
11
+ */
12
+ export declare function verifyMessageSignature(message: Signable, signature: string, pub: string, network?: utxolib.Network): boolean;
13
+ /**
14
+ * Creates a signature for a given message.
15
+ *
16
+ * @param {Signable} message - The message to sign.
17
+ * @param {string} prv - The private key in BIP32 format.
18
+ * @param {utxolib.Network} network - The network to use for signing.
19
+ * @returns {string} - Returns the signature in hexadecimal format.
20
+ */
21
+ export declare function createMessageSignature(message: Signable, prv: string, network?: utxolib.Network): string;
22
+ //# sourceMappingURL=signature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/lightning/signature.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAsB,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG9D;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,OAAO,CAAC,OAAkC,GAClD,OAAO,CAKT;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,QAAQ,EACjB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,OAAO,CAAC,OAAkC,GAClD,MAAM,CAIR"}