@ledgerhq/coin-cardano 0.1.0-next.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 (377) hide show
  1. package/.eslintrc.js +20 -0
  2. package/.turbo/turbo-build.log +4 -0
  3. package/.unimportedrc.json +35 -0
  4. package/CHANGELOG.md +19 -0
  5. package/LICENSE.txt +21 -0
  6. package/jest.config.js +8 -0
  7. package/lib/account.d.ts +7 -0
  8. package/lib/account.d.ts.map +1 -0
  9. package/lib/account.js +41 -0
  10. package/lib/account.js.map +1 -0
  11. package/lib/address.unit.test.d.ts +2 -0
  12. package/lib/address.unit.test.d.ts.map +1 -0
  13. package/lib/address.unit.test.js +21 -0
  14. package/lib/address.unit.test.js.map +1 -0
  15. package/lib/api/api-types.d.ts +106 -0
  16. package/lib/api/api-types.d.ts.map +1 -0
  17. package/lib/api/api-types.js +9 -0
  18. package/lib/api/api-types.js.map +1 -0
  19. package/lib/api/getDelegationInfo.d.ts +4 -0
  20. package/lib/api/getDelegationInfo.d.ts.map +1 -0
  21. package/lib/api/getDelegationInfo.js +48 -0
  22. package/lib/api/getDelegationInfo.js.map +1 -0
  23. package/lib/api/getNetworkInfo.d.ts +5 -0
  24. package/lib/api/getNetworkInfo.d.ts.map +1 -0
  25. package/lib/api/getNetworkInfo.js +46 -0
  26. package/lib/api/getNetworkInfo.js.map +1 -0
  27. package/lib/api/getPools.d.ts +5 -0
  28. package/lib/api/getPools.d.ts.map +1 -0
  29. package/lib/api/getPools.js +45 -0
  30. package/lib/api/getPools.js.map +1 -0
  31. package/lib/api/getTransactions.d.ts +10 -0
  32. package/lib/api/getTransactions.d.ts.map +1 -0
  33. package/lib/api/getTransactions.js +139 -0
  34. package/lib/api/getTransactions.js.map +1 -0
  35. package/lib/api/submitTransaction.d.ts +7 -0
  36. package/lib/api/submitTransaction.d.ts.map +1 -0
  37. package/lib/api/submitTransaction.js +34 -0
  38. package/lib/api/submitTransaction.js.map +1 -0
  39. package/lib/bridge/index.d.ts +11 -0
  40. package/lib/bridge/index.d.ts.map +1 -0
  41. package/lib/bridge/index.js +70 -0
  42. package/lib/bridge/index.js.map +1 -0
  43. package/lib/bridge.integration.test.d.ts +4 -0
  44. package/lib/bridge.integration.test.d.ts.map +1 -0
  45. package/lib/bridge.integration.test.js +113 -0
  46. package/lib/bridge.integration.test.js.map +1 -0
  47. package/lib/broadcast.d.ts +8 -0
  48. package/lib/broadcast.d.ts.map +1 -0
  49. package/lib/broadcast.js +28 -0
  50. package/lib/broadcast.js.map +1 -0
  51. package/lib/buildOptimisticOperation.d.ts +4 -0
  52. package/lib/buildOptimisticOperation.d.ts.map +1 -0
  53. package/lib/buildOptimisticOperation.js +125 -0
  54. package/lib/buildOptimisticOperation.js.map +1 -0
  55. package/lib/buildSubAccounts.d.ts +26 -0
  56. package/lib/buildSubAccounts.d.ts.map +1 -0
  57. package/lib/buildSubAccounts.js +124 -0
  58. package/lib/buildSubAccounts.js.map +1 -0
  59. package/lib/buildTransaction.d.ts +11 -0
  60. package/lib/buildTransaction.d.ts.map +1 -0
  61. package/lib/buildTransaction.js +342 -0
  62. package/lib/buildTransaction.js.map +1 -0
  63. package/lib/cli-transaction.d.ts +18 -0
  64. package/lib/cli-transaction.d.ts.map +1 -0
  65. package/lib/cli-transaction.js +66 -0
  66. package/lib/cli-transaction.js.map +1 -0
  67. package/lib/constants.d.ts +8 -0
  68. package/lib/constants.d.ts.map +1 -0
  69. package/lib/constants.js +12 -0
  70. package/lib/constants.js.map +1 -0
  71. package/lib/createTransaction.d.ts +9 -0
  72. package/lib/createTransaction.d.ts.map +1 -0
  73. package/lib/createTransaction.js +23 -0
  74. package/lib/createTransaction.js.map +1 -0
  75. package/lib/datasets/rawAccount.1.d.ts +3 -0
  76. package/lib/datasets/rawAccount.1.d.ts.map +1 -0
  77. package/lib/datasets/rawAccount.1.js +20 -0
  78. package/lib/datasets/rawAccount.1.js.map +1 -0
  79. package/lib/datasets/scanAccounts.d.ts +5 -0
  80. package/lib/datasets/scanAccounts.d.ts.map +1 -0
  81. package/lib/datasets/scanAccounts.js +27 -0
  82. package/lib/datasets/scanAccounts.js.map +1 -0
  83. package/lib/deviceTransactionConfig.d.ts +11 -0
  84. package/lib/deviceTransactionConfig.d.ts.map +1 -0
  85. package/lib/deviceTransactionConfig.js +106 -0
  86. package/lib/deviceTransactionConfig.js.map +1 -0
  87. package/lib/errors.d.ts +22 -0
  88. package/lib/errors.d.ts.map +1 -0
  89. package/lib/errors.js +18 -0
  90. package/lib/errors.js.map +1 -0
  91. package/lib/estimateMaxSpendable.d.ts +9 -0
  92. package/lib/estimateMaxSpendable.d.ts.map +1 -0
  93. package/lib/estimateMaxSpendable.js +53 -0
  94. package/lib/estimateMaxSpendable.js.map +1 -0
  95. package/lib/getTransactionStatus.d.ts +4 -0
  96. package/lib/getTransactionStatus.d.ts.map +1 -0
  97. package/lib/getTransactionStatus.js +214 -0
  98. package/lib/getTransactionStatus.js.map +1 -0
  99. package/lib/getTransactionStatus.unit.test.d.ts +2 -0
  100. package/lib/getTransactionStatus.unit.test.d.ts.map +1 -0
  101. package/lib/getTransactionStatus.unit.test.js +54 -0
  102. package/lib/getTransactionStatus.unit.test.js.map +1 -0
  103. package/lib/hw-getAddress.d.ts +6 -0
  104. package/lib/hw-getAddress.d.ts.map +1 -0
  105. package/lib/hw-getAddress.js +37 -0
  106. package/lib/hw-getAddress.js.map +1 -0
  107. package/lib/logic.d.ts +88 -0
  108. package/lib/logic.d.ts.map +1 -0
  109. package/lib/logic.js +264 -0
  110. package/lib/logic.js.map +1 -0
  111. package/lib/logic.unit.test.d.ts +2 -0
  112. package/lib/logic.unit.test.d.ts.map +1 -0
  113. package/lib/logic.unit.test.js +40 -0
  114. package/lib/logic.unit.test.js.map +1 -0
  115. package/lib/networks.d.ts +3 -0
  116. package/lib/networks.d.ts.map +1 -0
  117. package/lib/networks.js +36 -0
  118. package/lib/networks.js.map +1 -0
  119. package/lib/postSyncPatch.d.ts +6 -0
  120. package/lib/postSyncPatch.d.ts.map +1 -0
  121. package/lib/postSyncPatch.js +35 -0
  122. package/lib/postSyncPatch.js.map +1 -0
  123. package/lib/prepareTransaction.d.ts +10 -0
  124. package/lib/prepareTransaction.d.ts.map +1 -0
  125. package/lib/prepareTransaction.js +44 -0
  126. package/lib/prepareTransaction.js.map +1 -0
  127. package/lib/serialization.d.ts +7 -0
  128. package/lib/serialization.d.ts.map +1 -0
  129. package/lib/serialization.js +146 -0
  130. package/lib/serialization.js.map +1 -0
  131. package/lib/signOperation.d.ts +9 -0
  132. package/lib/signOperation.d.ts.map +1 -0
  133. package/lib/signOperation.js +71 -0
  134. package/lib/signOperation.js.map +1 -0
  135. package/lib/signer.d.ts +92 -0
  136. package/lib/signer.d.ts.map +1 -0
  137. package/lib/signer.js +3 -0
  138. package/lib/signer.js.map +1 -0
  139. package/lib/specs.d.ts +7 -0
  140. package/lib/specs.d.ts.map +1 -0
  141. package/lib/specs.js +218 -0
  142. package/lib/specs.js.map +1 -0
  143. package/lib/speculos-deviceActions.d.ts +4 -0
  144. package/lib/speculos-deviceActions.d.ts.map +1 -0
  145. package/lib/speculos-deviceActions.js +128 -0
  146. package/lib/speculos-deviceActions.js.map +1 -0
  147. package/lib/synchronisation.d.ts +6 -0
  148. package/lib/synchronisation.d.ts.map +1 -0
  149. package/lib/synchronisation.js +237 -0
  150. package/lib/synchronisation.js.map +1 -0
  151. package/lib/synchronisation.unit.test.d.ts +2 -0
  152. package/lib/synchronisation.unit.test.d.ts.map +1 -0
  153. package/lib/synchronisation.unit.test.js +129 -0
  154. package/lib/synchronisation.unit.test.js.map +1 -0
  155. package/lib/transaction.d.ts +15 -0
  156. package/lib/transaction.d.ts.map +1 -0
  157. package/lib/transaction.js +43 -0
  158. package/lib/transaction.js.map +1 -0
  159. package/lib/types.d.ts +188 -0
  160. package/lib/types.d.ts.map +1 -0
  161. package/lib/types.js +18 -0
  162. package/lib/types.js.map +1 -0
  163. package/lib/typhonSerializer.d.ts +17 -0
  164. package/lib/typhonSerializer.d.ts.map +1 -0
  165. package/lib/typhonSerializer.js +213 -0
  166. package/lib/typhonSerializer.js.map +1 -0
  167. package/lib/utils.d.ts +2 -0
  168. package/lib/utils.d.ts.map +1 -0
  169. package/lib/utils.js +8 -0
  170. package/lib/utils.js.map +1 -0
  171. package/lib-es/account.d.ts +7 -0
  172. package/lib-es/account.d.ts.map +1 -0
  173. package/lib-es/account.js +34 -0
  174. package/lib-es/account.js.map +1 -0
  175. package/lib-es/address.unit.test.d.ts +2 -0
  176. package/lib-es/address.unit.test.d.ts.map +1 -0
  177. package/lib-es/address.unit.test.js +19 -0
  178. package/lib-es/address.unit.test.js.map +1 -0
  179. package/lib-es/api/api-types.d.ts +106 -0
  180. package/lib-es/api/api-types.d.ts.map +1 -0
  181. package/lib-es/api/api-types.js +6 -0
  182. package/lib-es/api/api-types.js.map +1 -0
  183. package/lib-es/api/getDelegationInfo.d.ts +4 -0
  184. package/lib-es/api/getDelegationInfo.d.ts.map +1 -0
  185. package/lib-es/api/getDelegationInfo.js +41 -0
  186. package/lib-es/api/getDelegationInfo.js.map +1 -0
  187. package/lib-es/api/getNetworkInfo.d.ts +5 -0
  188. package/lib-es/api/getNetworkInfo.d.ts.map +1 -0
  189. package/lib-es/api/getNetworkInfo.js +39 -0
  190. package/lib-es/api/getNetworkInfo.js.map +1 -0
  191. package/lib-es/api/getPools.d.ts +5 -0
  192. package/lib-es/api/getPools.d.ts.map +1 -0
  193. package/lib-es/api/getPools.js +37 -0
  194. package/lib-es/api/getPools.js.map +1 -0
  195. package/lib-es/api/getTransactions.d.ts +10 -0
  196. package/lib-es/api/getTransactions.d.ts.map +1 -0
  197. package/lib-es/api/getTransactions.js +132 -0
  198. package/lib-es/api/getTransactions.js.map +1 -0
  199. package/lib-es/api/submitTransaction.d.ts +7 -0
  200. package/lib-es/api/submitTransaction.d.ts.map +1 -0
  201. package/lib-es/api/submitTransaction.js +27 -0
  202. package/lib-es/api/submitTransaction.js.map +1 -0
  203. package/lib-es/bridge/index.d.ts +11 -0
  204. package/lib-es/bridge/index.d.ts.map +1 -0
  205. package/lib-es/bridge/index.js +61 -0
  206. package/lib-es/bridge/index.js.map +1 -0
  207. package/lib-es/bridge.integration.test.d.ts +4 -0
  208. package/lib-es/bridge.integration.test.d.ts.map +1 -0
  209. package/lib-es/bridge.integration.test.js +107 -0
  210. package/lib-es/bridge.integration.test.js.map +1 -0
  211. package/lib-es/broadcast.d.ts +8 -0
  212. package/lib-es/broadcast.d.ts.map +1 -0
  213. package/lib-es/broadcast.js +24 -0
  214. package/lib-es/broadcast.js.map +1 -0
  215. package/lib-es/buildOptimisticOperation.d.ts +4 -0
  216. package/lib-es/buildOptimisticOperation.d.ts.map +1 -0
  217. package/lib-es/buildOptimisticOperation.js +118 -0
  218. package/lib-es/buildOptimisticOperation.js.map +1 -0
  219. package/lib-es/buildSubAccounts.d.ts +26 -0
  220. package/lib-es/buildSubAccounts.d.ts.map +1 -0
  221. package/lib-es/buildSubAccounts.js +114 -0
  222. package/lib-es/buildSubAccounts.js.map +1 -0
  223. package/lib-es/buildTransaction.d.ts +11 -0
  224. package/lib-es/buildTransaction.d.ts.map +1 -0
  225. package/lib-es/buildTransaction.js +335 -0
  226. package/lib-es/buildTransaction.js.map +1 -0
  227. package/lib-es/cli-transaction.d.ts +18 -0
  228. package/lib-es/cli-transaction.d.ts.map +1 -0
  229. package/lib-es/cli-transaction.js +60 -0
  230. package/lib-es/cli-transaction.js.map +1 -0
  231. package/lib-es/constants.d.ts +8 -0
  232. package/lib-es/constants.d.ts.map +1 -0
  233. package/lib-es/constants.js +9 -0
  234. package/lib-es/constants.js.map +1 -0
  235. package/lib-es/createTransaction.d.ts +9 -0
  236. package/lib-es/createTransaction.d.ts.map +1 -0
  237. package/lib-es/createTransaction.js +16 -0
  238. package/lib-es/createTransaction.js.map +1 -0
  239. package/lib-es/datasets/rawAccount.1.d.ts +3 -0
  240. package/lib-es/datasets/rawAccount.1.d.ts.map +1 -0
  241. package/lib-es/datasets/rawAccount.1.js +17 -0
  242. package/lib-es/datasets/rawAccount.1.js.map +1 -0
  243. package/lib-es/datasets/scanAccounts.d.ts +5 -0
  244. package/lib-es/datasets/scanAccounts.d.ts.map +1 -0
  245. package/lib-es/datasets/scanAccounts.js +24 -0
  246. package/lib-es/datasets/scanAccounts.js.map +1 -0
  247. package/lib-es/deviceTransactionConfig.d.ts +11 -0
  248. package/lib-es/deviceTransactionConfig.d.ts.map +1 -0
  249. package/lib-es/deviceTransactionConfig.js +101 -0
  250. package/lib-es/deviceTransactionConfig.js.map +1 -0
  251. package/lib-es/errors.d.ts +22 -0
  252. package/lib-es/errors.d.ts.map +1 -0
  253. package/lib-es/errors.js +15 -0
  254. package/lib-es/errors.js.map +1 -0
  255. package/lib-es/estimateMaxSpendable.d.ts +9 -0
  256. package/lib-es/estimateMaxSpendable.d.ts.map +1 -0
  257. package/lib-es/estimateMaxSpendable.js +49 -0
  258. package/lib-es/estimateMaxSpendable.js.map +1 -0
  259. package/lib-es/getTransactionStatus.d.ts +4 -0
  260. package/lib-es/getTransactionStatus.d.ts.map +1 -0
  261. package/lib-es/getTransactionStatus.js +210 -0
  262. package/lib-es/getTransactionStatus.js.map +1 -0
  263. package/lib-es/getTransactionStatus.unit.test.d.ts +2 -0
  264. package/lib-es/getTransactionStatus.unit.test.d.ts.map +1 -0
  265. package/lib-es/getTransactionStatus.unit.test.js +49 -0
  266. package/lib-es/getTransactionStatus.unit.test.js.map +1 -0
  267. package/lib-es/hw-getAddress.d.ts +6 -0
  268. package/lib-es/hw-getAddress.d.ts.map +1 -0
  269. package/lib-es/hw-getAddress.js +35 -0
  270. package/lib-es/hw-getAddress.js.map +1 -0
  271. package/lib-es/logic.d.ts +88 -0
  272. package/lib-es/logic.d.ts.map +1 -0
  273. package/lib-es/logic.js +236 -0
  274. package/lib-es/logic.js.map +1 -0
  275. package/lib-es/logic.unit.test.d.ts +2 -0
  276. package/lib-es/logic.unit.test.d.ts.map +1 -0
  277. package/lib-es/logic.unit.test.js +35 -0
  278. package/lib-es/logic.unit.test.js.map +1 -0
  279. package/lib-es/networks.d.ts +3 -0
  280. package/lib-es/networks.d.ts.map +1 -0
  281. package/lib-es/networks.js +32 -0
  282. package/lib-es/networks.js.map +1 -0
  283. package/lib-es/postSyncPatch.d.ts +6 -0
  284. package/lib-es/postSyncPatch.d.ts.map +1 -0
  285. package/lib-es/postSyncPatch.js +31 -0
  286. package/lib-es/postSyncPatch.js.map +1 -0
  287. package/lib-es/prepareTransaction.d.ts +10 -0
  288. package/lib-es/prepareTransaction.d.ts.map +1 -0
  289. package/lib-es/prepareTransaction.js +40 -0
  290. package/lib-es/prepareTransaction.js.map +1 -0
  291. package/lib-es/serialization.d.ts +7 -0
  292. package/lib-es/serialization.d.ts.map +1 -0
  293. package/lib-es/serialization.js +139 -0
  294. package/lib-es/serialization.js.map +1 -0
  295. package/lib-es/signOperation.d.ts +9 -0
  296. package/lib-es/signOperation.d.ts.map +1 -0
  297. package/lib-es/signOperation.js +64 -0
  298. package/lib-es/signOperation.js.map +1 -0
  299. package/lib-es/signer.d.ts +92 -0
  300. package/lib-es/signer.d.ts.map +1 -0
  301. package/lib-es/signer.js +2 -0
  302. package/lib-es/signer.js.map +1 -0
  303. package/lib-es/specs.d.ts +7 -0
  304. package/lib-es/specs.d.ts.map +1 -0
  305. package/lib-es/specs.js +213 -0
  306. package/lib-es/specs.js.map +1 -0
  307. package/lib-es/speculos-deviceActions.d.ts +4 -0
  308. package/lib-es/speculos-deviceActions.d.ts.map +1 -0
  309. package/lib-es/speculos-deviceActions.js +125 -0
  310. package/lib-es/speculos-deviceActions.js.map +1 -0
  311. package/lib-es/synchronisation.d.ts +6 -0
  312. package/lib-es/synchronisation.d.ts.map +1 -0
  313. package/lib-es/synchronisation.js +230 -0
  314. package/lib-es/synchronisation.js.map +1 -0
  315. package/lib-es/synchronisation.unit.test.d.ts +2 -0
  316. package/lib-es/synchronisation.unit.test.d.ts.map +1 -0
  317. package/lib-es/synchronisation.unit.test.js +124 -0
  318. package/lib-es/synchronisation.unit.test.js.map +1 -0
  319. package/lib-es/transaction.d.ts +15 -0
  320. package/lib-es/transaction.d.ts.map +1 -0
  321. package/lib-es/transaction.js +37 -0
  322. package/lib-es/transaction.js.map +1 -0
  323. package/lib-es/types.d.ts +188 -0
  324. package/lib-es/types.d.ts.map +1 -0
  325. package/lib-es/types.js +15 -0
  326. package/lib-es/types.js.map +1 -0
  327. package/lib-es/typhonSerializer.d.ts +17 -0
  328. package/lib-es/typhonSerializer.d.ts.map +1 -0
  329. package/lib-es/typhonSerializer.js +207 -0
  330. package/lib-es/typhonSerializer.js.map +1 -0
  331. package/lib-es/utils.d.ts +2 -0
  332. package/lib-es/utils.d.ts.map +1 -0
  333. package/lib-es/utils.js +5 -0
  334. package/lib-es/utils.js.map +1 -0
  335. package/package.json +91 -0
  336. package/src/account.ts +39 -0
  337. package/src/address.unit.test.ts +32 -0
  338. package/src/api/api-types.ts +115 -0
  339. package/src/api/getDelegationInfo.ts +39 -0
  340. package/src/api/getNetworkInfo.ts +34 -0
  341. package/src/api/getPools.ts +35 -0
  342. package/src/api/getTransactions.ts +218 -0
  343. package/src/api/submitTransaction.ts +24 -0
  344. package/src/bridge/index.ts +69 -0
  345. package/src/bridge.integration.test.ts +113 -0
  346. package/src/broadcast.ts +21 -0
  347. package/src/buildOptimisticOperation.ts +181 -0
  348. package/src/buildSubAccounts.ts +170 -0
  349. package/src/buildTransaction.ts +435 -0
  350. package/src/cli-transaction.ts +82 -0
  351. package/src/constants.ts +10 -0
  352. package/src/createTransaction.ts +18 -0
  353. package/src/datasets/rawAccount.1.ts +19 -0
  354. package/src/datasets/scanAccounts.ts +23 -0
  355. package/src/deviceTransactionConfig.ts +128 -0
  356. package/src/errors.ts +18 -0
  357. package/src/estimateMaxSpendable.ts +61 -0
  358. package/src/getTransactionStatus.ts +251 -0
  359. package/src/getTransactionStatus.unit.test.ts +45 -0
  360. package/src/hw-getAddress.ts +37 -0
  361. package/src/logic.ts +330 -0
  362. package/src/logic.unit.test.ts +39 -0
  363. package/src/networks.ts +33 -0
  364. package/src/postSyncPatch.ts +42 -0
  365. package/src/prepareTransaction.ts +41 -0
  366. package/src/serialization.ts +219 -0
  367. package/src/signOperation.ts +82 -0
  368. package/src/signer.ts +98 -0
  369. package/src/specs.ts +253 -0
  370. package/src/speculos-deviceActions.ts +132 -0
  371. package/src/synchronisation.ts +347 -0
  372. package/src/synchronisation.unit.test.ts +137 -0
  373. package/src/transaction.ts +66 -0
  374. package/src/types.ts +227 -0
  375. package/src/typhonSerializer.ts +259 -0
  376. package/src/utils.ts +4 -0
  377. package/tsconfig.json +12 -0
@@ -0,0 +1,188 @@
1
+ import type { BigNumber } from "bignumber.js";
2
+ import { types as TyphonTypes } from "@stricahq/typhonjs";
3
+ import type { Account, AccountRaw, Operation, OperationRaw, TransactionCommon, TransactionCommonRaw, TransactionStatusCommon, TransactionStatusCommonRaw } from "@ledgerhq/types-live";
4
+ export declare enum PaymentChain {
5
+ external = 0,
6
+ internal = 1
7
+ }
8
+ export declare enum StakeChain {
9
+ stake = 2
10
+ }
11
+ export declare enum NetworkId {
12
+ testnet = 0,
13
+ mainnet = 1
14
+ }
15
+ export type BipPath = {
16
+ purpose: number;
17
+ coin: number;
18
+ account: number;
19
+ chain: PaymentChain | StakeChain;
20
+ index: number;
21
+ };
22
+ export type BipPathRaw = {
23
+ purpose: number;
24
+ coin: number;
25
+ account: number;
26
+ chain: PaymentChain | StakeChain;
27
+ index: number;
28
+ };
29
+ export type Token = {
30
+ assetName: string;
31
+ policyId: string;
32
+ amount: BigNumber;
33
+ };
34
+ export type TokenRaw = {
35
+ assetName: string;
36
+ policyId: string;
37
+ amount: string;
38
+ };
39
+ export type PaymentKeyPath = {
40
+ key: string;
41
+ path: BipPath;
42
+ };
43
+ export type PaymentCredential = {
44
+ isUsed: boolean;
45
+ key: string;
46
+ path: BipPath;
47
+ };
48
+ export type PaymentCredentialRaw = {
49
+ isUsed: boolean;
50
+ key: string;
51
+ path: BipPathRaw;
52
+ };
53
+ export type StakeCredential = {
54
+ key: string;
55
+ path: BipPath;
56
+ };
57
+ export type CardanoOutput = {
58
+ hash: string;
59
+ index: number;
60
+ address: string;
61
+ amount: BigNumber;
62
+ tokens: Array<Token>;
63
+ paymentCredential: {
64
+ key: string;
65
+ path: BipPath;
66
+ };
67
+ };
68
+ export type CardanoOutputRaw = {
69
+ hash: string;
70
+ index: number;
71
+ address: string;
72
+ amount: string;
73
+ tokens: Array<TokenRaw>;
74
+ paymentCredential: {
75
+ key: string;
76
+ path: BipPath;
77
+ };
78
+ };
79
+ export type ProtocolParams = {
80
+ minFeeA: string;
81
+ minFeeB: string;
82
+ stakeKeyDeposit: string;
83
+ lovelacePerUtxoWord: string;
84
+ collateralPercent: string;
85
+ priceSteps: string;
86
+ priceMem: string;
87
+ languageView: TyphonTypes.LanguageView;
88
+ };
89
+ export type ProtocolParamsRaw = {
90
+ minFeeA: string;
91
+ minFeeB: string;
92
+ stakeKeyDeposit: string;
93
+ lovelacePerUtxoWord: string;
94
+ collateralPercent: string;
95
+ priceSteps: string;
96
+ priceMem: string;
97
+ languageView: TyphonTypes.LanguageView;
98
+ };
99
+ export type CardanoDelegation = {
100
+ status: boolean;
101
+ poolId: string;
102
+ ticker: string;
103
+ name: string;
104
+ rewards: BigNumber;
105
+ };
106
+ export type CardanoDelegationRaw = {
107
+ status: boolean;
108
+ poolId: string;
109
+ ticker: string;
110
+ name: string;
111
+ rewards: string;
112
+ };
113
+ /**
114
+ * Cardano account resources
115
+ */
116
+ export type CardanoResources = {
117
+ externalCredentials: Array<PaymentCredential>;
118
+ internalCredentials: Array<PaymentCredential>;
119
+ delegation: CardanoDelegation | undefined;
120
+ utxos: Array<CardanoOutput>;
121
+ protocolParams: ProtocolParams;
122
+ };
123
+ /**
124
+ * Cardano account resources from raw JSON
125
+ */
126
+ export type CardanoResourcesRaw = {
127
+ externalCredentials: Array<PaymentCredentialRaw>;
128
+ internalCredentials: Array<PaymentCredentialRaw>;
129
+ delegation: CardanoDelegationRaw | undefined;
130
+ utxos: Array<CardanoOutputRaw>;
131
+ protocolParams: ProtocolParamsRaw;
132
+ };
133
+ export type CardanoOperationMode = "send" | "delegate" | "undelegate";
134
+ /**
135
+ * Cardano transaction
136
+ */
137
+ export type Transaction = TransactionCommon & {
138
+ mode: CardanoOperationMode;
139
+ family: "cardano";
140
+ fees?: BigNumber;
141
+ memo?: string;
142
+ poolId: string | undefined;
143
+ };
144
+ /**
145
+ * Cardano transaction from a raw JSON
146
+ */
147
+ export type TransactionRaw = TransactionCommonRaw & {
148
+ family: "cardano";
149
+ mode: CardanoOperationMode;
150
+ fees?: string;
151
+ memo?: string;
152
+ poolId: string | undefined;
153
+ };
154
+ export type CardanoLikeNetworkParameters = {
155
+ identifier: string;
156
+ networkId: number;
157
+ chainStartTime: number;
158
+ byronSlotDuration: number;
159
+ byronSlotsPerEpoch: number;
160
+ shelleyStartEpoch: number;
161
+ shelleySlotDuration: number;
162
+ shelleySlotsPerEpoch: number;
163
+ addressPrefix: string;
164
+ poolIdPrefix: string;
165
+ };
166
+ /**
167
+ * Cardano currency data that will be preloaded.
168
+ */
169
+ export type CardanoPreloadData = {
170
+ protocolParams: ProtocolParams;
171
+ };
172
+ export type CardanoAccount = Account & {
173
+ cardanoResources: CardanoResources;
174
+ };
175
+ export type CardanoAccountRaw = AccountRaw & {
176
+ cardanoResources: CardanoResourcesRaw;
177
+ };
178
+ export type TransactionStatus = TransactionStatusCommon;
179
+ export type TransactionStatusRaw = TransactionStatusCommonRaw;
180
+ export type CardanoOperation = Operation<CardanoOperationExtra>;
181
+ export type CardanoOperationRaw = OperationRaw<CardanoOperationExtra>;
182
+ export type CardanoOperationExtra = {
183
+ memo?: string;
184
+ deposit?: string;
185
+ refund?: string;
186
+ rewards?: string;
187
+ };
188
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export var PaymentChain;
2
+ (function (PaymentChain) {
3
+ PaymentChain[PaymentChain["external"] = 0] = "external";
4
+ PaymentChain[PaymentChain["internal"] = 1] = "internal";
5
+ })(PaymentChain || (PaymentChain = {}));
6
+ export var StakeChain;
7
+ (function (StakeChain) {
8
+ StakeChain[StakeChain["stake"] = 2] = "stake";
9
+ })(StakeChain || (StakeChain = {}));
10
+ export var NetworkId;
11
+ (function (NetworkId) {
12
+ NetworkId[NetworkId["testnet"] = 0] = "testnet";
13
+ NetworkId[NetworkId["mainnet"] = 1] = "mainnet";
14
+ })(NetworkId || (NetworkId = {}));
15
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAaA,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,uDAAY,CAAA;IACZ,uDAAY,CAAA;AACd,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;AAED,MAAM,CAAN,IAAY,UAEX;AAFD,WAAY,UAAU;IACpB,6CAAS,CAAA;AACX,CAAC,EAFW,UAAU,KAAV,UAAU,QAErB;AAED,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,+CAAW,CAAA;IACX,+CAAW,CAAA;AACb,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB"}
@@ -0,0 +1,17 @@
1
+ import { Transaction as TyphonTransaction } from "@stricahq/typhonjs";
2
+ import { SignerTxCertificate, SignerTxInput, SignerTxOutput, SignerTxWithdrawal } from "./signer";
3
+ /**
4
+ * Convert StricaTypes Transaction into a simpler types.
5
+ * We are keeping the minimal necessary for a signer.
6
+ */
7
+ export default function (transaction: TyphonTransaction, accountIndex: number): {
8
+ inputs: SignerTxInput[];
9
+ outputs: SignerTxOutput[];
10
+ certificates: SignerTxCertificate[];
11
+ withdrawals: SignerTxWithdrawal[];
12
+ fee: string;
13
+ ttl: string | undefined;
14
+ validityIntervalStart: null;
15
+ auxiliaryData: string | null;
16
+ };
17
+ //# sourceMappingURL=typhonSerializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typhonSerializer.d.ts","sourceRoot":"","sources":["../src/typhonSerializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,WAAW,IAAI,iBAAiB,EACjC,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAElG;;;GAGG;AACH,MAAM,CAAC,OAAO,WAAW,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM;;;;;;;;;EAiB5E"}
@@ -0,0 +1,207 @@
1
+ import { types as TyphonTypes, address as TyphonAddress, } from "@stricahq/typhonjs";
2
+ import groupBy from "lodash/groupBy";
3
+ import { getBipPathString } from "./logic";
4
+ import { CertificateType } from "@stricahq/typhonjs/dist/types";
5
+ /**
6
+ * Convert StricaTypes Transaction into a simpler types.
7
+ * We are keeping the minimal necessary for a signer.
8
+ */
9
+ export default function (transaction, accountIndex) {
10
+ var _a;
11
+ const ledgerAppInputs = transaction.getInputs().map(prepareLedgerInput(accountIndex));
12
+ const ledgerAppOutputs = transaction.getOutputs().map(prepareLedgerOutput(accountIndex));
13
+ const ledgerCertificates = transaction.getCertificates().map(prepareCertificate);
14
+ const ledgerWithdrawals = transaction.getWithdrawals().map(prepareWithdrawal);
15
+ const auxiliaryDataHashHex = transaction.getAuxiliaryDataHashHex();
16
+ return {
17
+ inputs: ledgerAppInputs,
18
+ outputs: ledgerAppOutputs,
19
+ certificates: ledgerCertificates,
20
+ withdrawals: ledgerWithdrawals,
21
+ fee: transaction.getFee().toString(),
22
+ ttl: (_a = transaction.getTTL()) === null || _a === void 0 ? void 0 : _a.toString(),
23
+ validityIntervalStart: null,
24
+ auxiliaryData: auxiliaryDataHashHex !== null && auxiliaryDataHashHex !== void 0 ? auxiliaryDataHashHex : null,
25
+ };
26
+ }
27
+ /**
28
+ * returns the formatted transactionInput for ledger cardano app
29
+ *
30
+ * @param {TyphonTypes.Input} input
31
+ * @param {number} accountIndex
32
+ * @returns {TxInput}
33
+ */
34
+ const prepareLedgerInput = (accountIndex) => (input) => {
35
+ const paymentKeyPath = input.address.paymentCredential.type === TyphonTypes.HashType.ADDRESS
36
+ ? input.address.paymentCredential.bipPath
37
+ : undefined;
38
+ return {
39
+ txHashHex: input.txId,
40
+ outputIndex: input.index,
41
+ path: paymentKeyPath
42
+ ? getBipPathString({
43
+ account: accountIndex,
44
+ chain: paymentKeyPath.chain,
45
+ index: paymentKeyPath.index,
46
+ })
47
+ : null,
48
+ };
49
+ };
50
+ /**
51
+ * returns the formatted transactionOutput for ledger cardano app
52
+ *
53
+ * @param output
54
+ * @param accountIndex
55
+ * @returns {TxOutput}
56
+ */
57
+ const prepareLedgerOutput = (accountIndex) => (output) => {
58
+ const isByronAddress = output.address instanceof TyphonAddress.ByronAddress;
59
+ let isDeviceOwnedAddress = false;
60
+ if (!isByronAddress) {
61
+ const address = output.address;
62
+ isDeviceOwnedAddress =
63
+ address.paymentCredential &&
64
+ address.paymentCredential.type === TyphonTypes.HashType.ADDRESS &&
65
+ address.paymentCredential.bipPath !== undefined;
66
+ }
67
+ let destination;
68
+ if (isDeviceOwnedAddress) {
69
+ const address = output.address;
70
+ const paymentKeyPath = address.paymentCredential
71
+ .bipPath;
72
+ const stakingKeyPath = address.stakeCredential
73
+ .bipPath;
74
+ const paymentKeyPathString = getBipPathString({
75
+ account: accountIndex,
76
+ chain: paymentKeyPath.chain,
77
+ index: paymentKeyPath.index,
78
+ });
79
+ const stakingKeyPathString = getBipPathString({
80
+ account: accountIndex,
81
+ chain: stakingKeyPath.chain,
82
+ index: stakingKeyPath.index,
83
+ });
84
+ destination = {
85
+ isDeviceOwnedAddress,
86
+ params: {
87
+ spendingPath: paymentKeyPathString,
88
+ stakingPath: stakingKeyPathString,
89
+ },
90
+ };
91
+ }
92
+ else {
93
+ const address = output.address;
94
+ destination = {
95
+ isDeviceOwnedAddress,
96
+ params: {
97
+ addressHex: address.getHex(),
98
+ },
99
+ };
100
+ }
101
+ const tokenBundle = Object.values(groupBy(output.tokens, ({ policyId }) => policyId)).map(tokens => ({
102
+ policyIdHex: tokens[0].policyId,
103
+ tokens: tokens.map(token => ({
104
+ assetNameHex: token.assetName,
105
+ amount: token.amount.toString(),
106
+ })),
107
+ }));
108
+ return {
109
+ amount: output.amount.toString(),
110
+ destination,
111
+ tokenBundle,
112
+ };
113
+ };
114
+ function prepareCertificate(cert) {
115
+ if (cert.certType === CertificateType.STAKE_REGISTRATION) {
116
+ return prepareStakeRegistrationCertificate(cert);
117
+ }
118
+ else if (cert.certType === CertificateType.STAKE_DELEGATION) {
119
+ return prepareStakeDelegationCertificate(cert);
120
+ }
121
+ else if (cert.certType === CertificateType.STAKE_DE_REGISTRATION) {
122
+ return prepareStakeDeRegistrationCertificate(cert);
123
+ }
124
+ else {
125
+ throw new Error("Invalid Certificate type");
126
+ }
127
+ }
128
+ function prepareStakeRegistrationCertificate(certificate) {
129
+ if (certificate.stakeCredential.type === TyphonTypes.HashType.ADDRESS &&
130
+ certificate.stakeCredential.bipPath) {
131
+ return {
132
+ type: "REGISTRATION",
133
+ params: {
134
+ stakeCredential: {
135
+ keyPath: getBipPathString({
136
+ account: certificate.stakeCredential.bipPath.account,
137
+ chain: certificate.stakeCredential.bipPath.chain,
138
+ index: certificate.stakeCredential.bipPath.index,
139
+ }),
140
+ },
141
+ },
142
+ };
143
+ }
144
+ else {
145
+ throw new Error("Invalid stakeKey type");
146
+ }
147
+ }
148
+ function prepareStakeDelegationCertificate(certificate) {
149
+ if (certificate.stakeCredential.type === TyphonTypes.HashType.ADDRESS &&
150
+ certificate.stakeCredential.bipPath) {
151
+ return {
152
+ type: "DELEGATION",
153
+ params: {
154
+ stakeCredential: {
155
+ keyPath: getBipPathString({
156
+ account: certificate.stakeCredential.bipPath.account,
157
+ chain: certificate.stakeCredential.bipPath.chain,
158
+ index: certificate.stakeCredential.bipPath.index,
159
+ }),
160
+ },
161
+ poolKeyHashHex: certificate.poolHash,
162
+ },
163
+ };
164
+ }
165
+ else {
166
+ throw new Error("Invalid stakeKey type");
167
+ }
168
+ }
169
+ function prepareStakeDeRegistrationCertificate(certificate) {
170
+ if (certificate.stakeCredential.type === TyphonTypes.HashType.ADDRESS &&
171
+ certificate.stakeCredential.bipPath) {
172
+ return {
173
+ type: "DEREGISTRATION",
174
+ params: {
175
+ stakeCredential: {
176
+ keyPath: getBipPathString({
177
+ account: certificate.stakeCredential.bipPath.account,
178
+ chain: certificate.stakeCredential.bipPath.chain,
179
+ index: certificate.stakeCredential.bipPath.index,
180
+ }),
181
+ },
182
+ },
183
+ };
184
+ }
185
+ else {
186
+ throw new Error("Invalid stakeKey type");
187
+ }
188
+ }
189
+ function prepareWithdrawal(withdrawal) {
190
+ if (withdrawal.rewardAccount.stakeCredential.type === TyphonTypes.HashType.ADDRESS &&
191
+ withdrawal.rewardAccount.stakeCredential.bipPath) {
192
+ return {
193
+ stakeCredential: {
194
+ keyPath: getBipPathString({
195
+ account: withdrawal.rewardAccount.stakeCredential.bipPath.account,
196
+ chain: withdrawal.rewardAccount.stakeCredential.bipPath.chain,
197
+ index: withdrawal.rewardAccount.stakeCredential.bipPath.index,
198
+ }),
199
+ },
200
+ amount: withdrawal.amount.toString(),
201
+ };
202
+ }
203
+ else {
204
+ throw new Error("Invalid stakeKey type");
205
+ }
206
+ }
207
+ //# sourceMappingURL=typhonSerializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typhonSerializer.js","sourceRoot":"","sources":["../src/typhonSerializer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const LEDGER_POOL_IDS: Array<string>;
2
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,MAAM,CAEzC,CAAC"}
@@ -0,0 +1,5 @@
1
+ // the IDs of ledger stake pools to shows in lld and llm
2
+ export const LEDGER_POOL_IDS = [
3
+ "4a9c9902c9538da900b10b716d5d1b214487455fdb06028b32ffa180",
4
+ ];
5
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,MAAM,CAAC,MAAM,eAAe,GAAkB;IAC5C,0DAA0D;CAC3D,CAAC"}
package/package.json ADDED
@@ -0,0 +1,91 @@
1
+ {
2
+ "name": "@ledgerhq/coin-cardano",
3
+ "version": "0.1.0-next.0",
4
+ "description": "Ledger Cardano Coin integration",
5
+ "keywords": [
6
+ "Ledger",
7
+ "LedgerWallet",
8
+ "ada",
9
+ "Cardano",
10
+ "Hardware Wallet"
11
+ ],
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "https://github.com/LedgerHQ/ledger-live.git"
15
+ },
16
+ "bugs": {
17
+ "url": "https://github.com/LedgerHQ/ledger-live/issues"
18
+ },
19
+ "homepage": "https://github.com/LedgerHQ/ledger-live/tree/develop/libs/coin-modules/coin-cardano",
20
+ "publishConfig": {
21
+ "access": "public"
22
+ },
23
+ "typesVersions": {
24
+ "*": {
25
+ "lib/*": [
26
+ "lib/*"
27
+ ],
28
+ "lib-es/*": [
29
+ "lib-es/*"
30
+ ],
31
+ "bridge": [
32
+ "lib/bridge/index"
33
+ ],
34
+ "*": [
35
+ "lib/*"
36
+ ]
37
+ }
38
+ },
39
+ "exports": {
40
+ "./lib/*": "./lib/*.js",
41
+ "./lib-es/*": "./lib-es/*.js",
42
+ "./bridge": {
43
+ "require": "./lib/bridge/index.js",
44
+ "default": "./lib-es/bridge/index.js"
45
+ },
46
+ "./*": {
47
+ "require": "./lib/*.js",
48
+ "default": "./lib-es/*.js"
49
+ },
50
+ "./package.json": "./package.json"
51
+ },
52
+ "license": "Apache-2.0",
53
+ "dependencies": {
54
+ "@stricahq/bip32ed25519": "^1.0.3",
55
+ "@stricahq/typhonjs": "^1.2.6",
56
+ "bech32": "^1.1.3",
57
+ "bignumber.js": "^9.1.2",
58
+ "expect": "^27.4.6",
59
+ "invariant": "^2.2.2",
60
+ "lodash": "^4.17.21",
61
+ "rxjs": "^7.8.1",
62
+ "@ledgerhq/coin-framework": "^0.14.0-next.0",
63
+ "@ledgerhq/cryptoassets": "^13.1.0-next.0",
64
+ "@ledgerhq/devices": "^8.4.0-next.0",
65
+ "@ledgerhq/errors": "^6.17.0-next.0",
66
+ "@ledgerhq/live-env": "^2.1.0-next.0",
67
+ "@ledgerhq/live-network": "^1.3.0-next.0",
68
+ "@ledgerhq/logs": "^6.12.0",
69
+ "@ledgerhq/types-cryptoassets": "^7.13.0-next.0",
70
+ "@ledgerhq/types-live": "^6.48.0-next.0"
71
+ },
72
+ "devDependencies": {
73
+ "@types/invariant": "^2.2.2",
74
+ "@types/jest": "^29.5.10",
75
+ "@types/lodash": "^4.14.191",
76
+ "jest": "^29.7.0",
77
+ "ts-jest": "^29.1.1"
78
+ },
79
+ "scripts": {
80
+ "clean": "rimraf lib lib-es",
81
+ "build": "tsc && tsc -m ES6 --outDir lib-es",
82
+ "coverage": "jest --coverage --testPathIgnorePatterns='/bridge.integration.test.ts|node_modules|lib-es|lib/' --passWithNoTests && mv coverage/coverage-final.json coverage/coverage-cardano.json",
83
+ "prewatch": "pnpm build",
84
+ "watch": "tsc --watch",
85
+ "doc": "documentation readme src/** --section=API --pe ts --re ts --re d.ts",
86
+ "lint": "eslint ./src --no-error-on-unmatched-pattern --ext .ts,.tsx --cache",
87
+ "lint:fix": "pnpm lint --fix",
88
+ "test": "jest",
89
+ "unimported": "unimported"
90
+ }
91
+ }
package/src/account.ts ADDED
@@ -0,0 +1,39 @@
1
+ import invariant from "invariant";
2
+ import { getAccountCurrency } from "@ledgerhq/coin-framework/account/index";
3
+ import { formatCurrencyUnit } from "@ledgerhq/coin-framework/currencies/index";
4
+ import { CardanoAccount } from "./types";
5
+
6
+ export function formatAccountSpecifics(account: CardanoAccount): string {
7
+ const { cardanoResources } = account;
8
+ invariant(cardanoResources, "cardano account expected");
9
+
10
+ const unit = getAccountCurrency(account).units[0];
11
+ const formatConfig = {
12
+ disableRounding: true,
13
+ alwaysShowSign: false,
14
+ showCode: true,
15
+ };
16
+ let str = " ";
17
+
18
+ if (cardanoResources?.delegation?.poolId) {
19
+ str += formatCurrencyUnit(unit, account.balance, formatConfig) + " delegated to ";
20
+ }
21
+
22
+ if (cardanoResources.delegation?.name) str += cardanoResources.delegation.name + " ";
23
+
24
+ if (cardanoResources.delegation?.ticker) str += "(" + cardanoResources.delegation.ticker + ") ";
25
+
26
+ if (cardanoResources.delegation?.poolId) str += cardanoResources.delegation.poolId + ". ";
27
+
28
+ if (cardanoResources.delegation?.rewards)
29
+ str +=
30
+ "Total " +
31
+ formatCurrencyUnit(unit, cardanoResources.delegation.rewards, formatConfig) +
32
+ " rewards available.";
33
+
34
+ return str;
35
+ }
36
+
37
+ export default {
38
+ formatAccountSpecifics,
39
+ };
@@ -0,0 +1,32 @@
1
+ import { isValidAddress } from "./logic";
2
+ import { NetworkId } from "./types";
3
+
4
+ describe("address validation", () => {
5
+ it("should check for invalid address", () => {
6
+ const isValid = isValidAddress("bnb136ns6lfw4zs5hg4n85vdthaad7hq5m4gtkgf23", NetworkId.mainnet);
7
+ expect(isValid).toEqual(false);
8
+ });
9
+
10
+ it("should check for valid byron address", () => {
11
+ const isValidByronAddress1 = isValidAddress(
12
+ "Ae2tdPwUPEZFBgKrLT9pn8JPJVbefcL4kuznpQxQpxKfTVuHJ9gLAmxKk4w",
13
+ NetworkId.mainnet,
14
+ );
15
+ expect(isValidByronAddress1).toEqual(true);
16
+
17
+ const isValidByronAddress2 = isValidAddress(
18
+ "DdzFFzCqrhst6mdc3hmFeWu77FZdYNjV7tTGVtEBXQzE3iCqyZWn9SSWCBrjRbbhj94VHAyGU96khi8qGM1B29nGs1jZRZEWKg2MwbVb",
19
+ NetworkId.mainnet,
20
+ );
21
+ expect(isValidByronAddress2).toEqual(true);
22
+ });
23
+
24
+ it("should check for valid shelley address", () => {
25
+ const isValidShelleyAddress = isValidAddress(
26
+ "addr1q8mgw8geggkl2hs0m6rq3pgt69uxttpqcgu6euxje5tt6plxjtjrnskhhtt03g6l3sr98p9t8mtlajr26vmwjzep77pqxn8cms",
27
+ NetworkId.mainnet,
28
+ );
29
+
30
+ expect(isValidShelleyAddress).toEqual(true);
31
+ });
32
+ });