@ledgerhq/live-common 25.2.0-next.0 → 25.2.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/lib/__tests__/test-helpers/setup.js +1 -0
  2. package/lib/__tests__/test-helpers/setup.js.map +1 -1
  3. package/lib/account/helpers.d.ts.map +1 -1
  4. package/lib/account/helpers.js +1 -0
  5. package/lib/account/helpers.js.map +1 -1
  6. package/lib/account/serialization.d.ts.map +1 -1
  7. package/lib/account/serialization.js +4 -0
  8. package/lib/account/serialization.js.map +1 -1
  9. package/lib/data/icons/react/index.d.ts +1 -0
  10. package/lib/data/icons/react/index.d.ts.map +1 -1
  11. package/lib/data/icons/react/index.js +7 -5
  12. package/lib/data/icons/react/index.js.map +1 -1
  13. package/lib/data/icons/react/osmo.d.ts +8 -0
  14. package/lib/data/icons/react/osmo.d.ts.map +1 -0
  15. package/lib/data/icons/react/osmo.js +39 -0
  16. package/lib/data/icons/react/osmo.js.map +1 -0
  17. package/lib/data/icons/reactNative/index.d.ts +1 -0
  18. package/lib/data/icons/reactNative/index.d.ts.map +1 -1
  19. package/lib/data/icons/reactNative/index.js +7 -5
  20. package/lib/data/icons/reactNative/index.js.map +1 -1
  21. package/lib/data/icons/reactNative/osmo.d.ts +8 -0
  22. package/lib/data/icons/reactNative/osmo.d.ts.map +1 -0
  23. package/lib/data/icons/reactNative/osmo.js +40 -0
  24. package/lib/data/icons/reactNative/osmo.js.map +1 -0
  25. package/lib/env.d.ts +15 -5
  26. package/lib/env.d.ts.map +1 -1
  27. package/lib/env.js +10 -0
  28. package/lib/env.js.map +1 -1
  29. package/lib/env.react.d.ts +1 -1
  30. package/lib/env.react.d.ts.map +1 -1
  31. package/lib/families/cosmos/CosmosValidatorsManager.d.ts +26 -0
  32. package/lib/families/cosmos/CosmosValidatorsManager.d.ts.map +1 -0
  33. package/lib/families/cosmos/CosmosValidatorsManager.js +365 -0
  34. package/lib/families/cosmos/CosmosValidatorsManager.js.map +1 -0
  35. package/lib/families/cosmos/account.d.ts +2 -2
  36. package/lib/families/cosmos/account.d.ts.map +1 -1
  37. package/lib/families/cosmos/account.js +19 -6
  38. package/lib/families/cosmos/account.js.map +1 -1
  39. package/lib/families/cosmos/api/Cosmos.d.ts +27 -15
  40. package/lib/families/cosmos/api/Cosmos.d.ts.map +1 -1
  41. package/lib/families/cosmos/api/Cosmos.js +418 -410
  42. package/lib/families/cosmos/api/Cosmos.js.map +1 -1
  43. package/lib/families/cosmos/bridge/js.d.ts.map +1 -1
  44. package/lib/families/cosmos/bridge/js.js +5 -5
  45. package/lib/families/cosmos/bridge/js.js.map +1 -1
  46. package/lib/families/cosmos/bridge/mock.js +1 -1
  47. package/lib/families/cosmos/bridge/mock.js.map +1 -1
  48. package/lib/families/cosmos/bridge.integration.test.js +5 -5
  49. package/lib/families/cosmos/bridge.integration.test.js.map +1 -1
  50. package/lib/families/cosmos/cli-transaction.d.ts +3 -3
  51. package/lib/families/cosmos/cli-transaction.d.ts.map +1 -1
  52. package/lib/families/cosmos/cli-transaction.js +4 -5
  53. package/lib/families/cosmos/cli-transaction.js.map +1 -1
  54. package/lib/families/cosmos/js-buildTransaction.js +3 -3
  55. package/lib/families/cosmos/js-buildTransaction.js.map +1 -1
  56. package/lib/families/cosmos/js-createTransaction.js +1 -1
  57. package/lib/families/cosmos/js-createTransaction.js.map +1 -1
  58. package/lib/families/cosmos/js-getTransactionStatus.d.ts +17 -3
  59. package/lib/families/cosmos/js-getTransactionStatus.d.ts.map +1 -1
  60. package/lib/families/cosmos/js-getTransactionStatus.js +224 -176
  61. package/lib/families/cosmos/js-getTransactionStatus.js.map +1 -1
  62. package/lib/families/cosmos/js-prepareTransaction.js +2 -2
  63. package/lib/families/cosmos/js-prepareTransaction.js.map +1 -1
  64. package/lib/families/cosmos/js-signOperation.js +3 -3
  65. package/lib/families/cosmos/js-signOperation.js.map +1 -1
  66. package/lib/families/cosmos/js-synchronisation.js +2 -2
  67. package/lib/families/cosmos/js-synchronisation.js.map +1 -1
  68. package/lib/families/cosmos/logic.js +1 -1
  69. package/lib/families/cosmos/logic.js.map +1 -1
  70. package/lib/families/cosmos/mock.js +1 -1
  71. package/lib/families/cosmos/mock.js.map +1 -1
  72. package/lib/families/cosmos/react.d.ts +4 -4
  73. package/lib/families/cosmos/react.d.ts.map +1 -1
  74. package/lib/families/cosmos/react.js +59 -26
  75. package/lib/families/cosmos/react.js.map +1 -1
  76. package/lib/families/cosmos/react.test.js +17 -15
  77. package/lib/families/cosmos/react.test.js.map +1 -1
  78. package/lib/families/cosmos/specs.js +2 -2
  79. package/lib/families/cosmos/specs.js.map +1 -1
  80. package/lib/families/cosmos/speculos-deviceActions.d.ts.map +1 -1
  81. package/lib/families/cosmos/speculos-deviceActions.js +1 -1
  82. package/lib/families/cosmos/speculos-deviceActions.js.map +1 -1
  83. package/lib/families/cosmos/transaction.d.ts +2 -2
  84. package/lib/families/cosmos/transaction.d.ts.map +1 -1
  85. package/lib/families/cosmos/transaction.js +4 -4
  86. package/lib/families/cosmos/transaction.js.map +1 -1
  87. package/lib/families/cosmos/types.d.ts +31 -13
  88. package/lib/families/cosmos/types.d.ts.map +1 -1
  89. package/lib/families/cosmos/utils.d.ts +1 -0
  90. package/lib/families/cosmos/utils.d.ts.map +1 -1
  91. package/lib/families/cosmos/utils.js +7 -1
  92. package/lib/families/cosmos/utils.js.map +1 -1
  93. package/lib/families/cosmos/validators.d.ts +3 -5
  94. package/lib/families/cosmos/validators.d.ts.map +1 -1
  95. package/lib/families/cosmos/validators.js +4 -317
  96. package/lib/families/cosmos/validators.js.map +1 -1
  97. package/lib/families/osmosis/OsmosisSupplyTypes.d.ts +48 -0
  98. package/lib/families/osmosis/OsmosisSupplyTypes.d.ts.map +1 -0
  99. package/lib/families/osmosis/OsmosisSupplyTypes.js +3 -0
  100. package/lib/families/osmosis/OsmosisSupplyTypes.js.map +1 -0
  101. package/lib/families/osmosis/account.d.ts +14 -0
  102. package/lib/families/osmosis/account.d.ts.map +1 -0
  103. package/lib/families/osmosis/account.js +60 -0
  104. package/lib/families/osmosis/account.js.map +1 -0
  105. package/lib/families/osmosis/api/sdk.d.ts +35 -0
  106. package/lib/families/osmosis/api/sdk.d.ts.map +1 -0
  107. package/lib/families/osmosis/api/sdk.js +478 -0
  108. package/lib/families/osmosis/api/sdk.js.map +1 -0
  109. package/lib/families/osmosis/api/sdk.types.d.ts +57 -0
  110. package/lib/families/osmosis/api/sdk.types.d.ts.map +1 -0
  111. package/lib/families/osmosis/api/sdk.types.js +15 -0
  112. package/lib/families/osmosis/api/sdk.types.js.map +1 -0
  113. package/lib/families/osmosis/api/sdk.unit.test.d.ts +2 -0
  114. package/lib/families/osmosis/api/sdk.unit.test.d.ts.map +1 -0
  115. package/lib/families/osmosis/api/sdk.unit.test.js +50 -0
  116. package/lib/families/osmosis/api/sdk.unit.test.js.map +1 -0
  117. package/lib/families/osmosis/bridge/js.d.ts +8 -0
  118. package/lib/families/osmosis/bridge/js.d.ts.map +1 -0
  119. package/lib/families/osmosis/bridge/js.js +98 -0
  120. package/lib/families/osmosis/bridge/js.js.map +1 -0
  121. package/lib/families/osmosis/bridge.integration.test.d.ts +2 -0
  122. package/lib/families/osmosis/bridge.integration.test.d.ts.map +1 -0
  123. package/lib/families/osmosis/bridge.integration.test.js +383 -0
  124. package/lib/families/osmosis/bridge.integration.test.js.map +1 -0
  125. package/lib/families/osmosis/cli-transaction.d.ts +38 -0
  126. package/lib/families/osmosis/cli-transaction.d.ts.map +1 -0
  127. package/lib/families/osmosis/cli-transaction.js +119 -0
  128. package/lib/families/osmosis/cli-transaction.js.map +1 -0
  129. package/lib/families/osmosis/deviceTransactionConfig.d.ts +25 -0
  130. package/lib/families/osmosis/deviceTransactionConfig.d.ts.map +1 -0
  131. package/lib/families/osmosis/deviceTransactionConfig.js +132 -0
  132. package/lib/families/osmosis/deviceTransactionConfig.js.map +1 -0
  133. package/lib/families/osmosis/errors.d.ts +4 -0
  134. package/lib/families/osmosis/errors.d.ts.map +1 -0
  135. package/lib/families/osmosis/errors.js +8 -0
  136. package/lib/families/osmosis/errors.js.map +1 -0
  137. package/lib/families/osmosis/hw-getAddress.d.ts +4 -0
  138. package/lib/families/osmosis/hw-getAddress.d.ts.map +1 -0
  139. package/lib/families/osmosis/hw-getAddress.js +64 -0
  140. package/lib/families/osmosis/hw-getAddress.js.map +1 -0
  141. package/lib/families/osmosis/js-buildTransaction.d.ts +14 -0
  142. package/lib/families/osmosis/js-buildTransaction.d.ts.map +1 -0
  143. package/lib/families/osmosis/js-buildTransaction.js +303 -0
  144. package/lib/families/osmosis/js-buildTransaction.js.map +1 -0
  145. package/lib/families/osmosis/js-estimateMaxSpendable.d.ts +15 -0
  146. package/lib/families/osmosis/js-estimateMaxSpendable.d.ts.map +1 -0
  147. package/lib/families/osmosis/js-estimateMaxSpendable.js +67 -0
  148. package/lib/families/osmosis/js-estimateMaxSpendable.js.map +1 -0
  149. package/lib/families/osmosis/js-getFeesForTransaction.d.ts +15 -0
  150. package/lib/families/osmosis/js-getFeesForTransaction.d.ts.map +1 -0
  151. package/lib/families/osmosis/js-getFeesForTransaction.js +85 -0
  152. package/lib/families/osmosis/js-getFeesForTransaction.js.map +1 -0
  153. package/lib/families/osmosis/js-getTransactionStatus.d.ts +3 -0
  154. package/lib/families/osmosis/js-getTransactionStatus.d.ts.map +1 -0
  155. package/lib/families/osmosis/js-getTransactionStatus.js +10 -0
  156. package/lib/families/osmosis/js-getTransactionStatus.js.map +1 -0
  157. package/lib/families/osmosis/js-signOperation.d.ts +10 -0
  158. package/lib/families/osmosis/js-signOperation.d.ts.map +1 -0
  159. package/lib/families/osmosis/js-signOperation.js +211 -0
  160. package/lib/families/osmosis/js-signOperation.js.map +1 -0
  161. package/lib/families/osmosis/js-synchronization.d.ts +9 -0
  162. package/lib/families/osmosis/js-synchronization.d.ts.map +1 -0
  163. package/lib/families/osmosis/js-synchronization.js +176 -0
  164. package/lib/families/osmosis/js-synchronization.js.map +1 -0
  165. package/lib/families/osmosis/js-transaction.d.ts +23 -0
  166. package/lib/families/osmosis/js-transaction.d.ts.map +1 -0
  167. package/lib/families/osmosis/js-transaction.js +177 -0
  168. package/lib/families/osmosis/js-transaction.js.map +1 -0
  169. package/lib/families/osmosis/logic.d.ts +5 -0
  170. package/lib/families/osmosis/logic.d.ts.map +1 -0
  171. package/lib/families/osmosis/logic.js +22 -0
  172. package/lib/families/osmosis/logic.js.map +1 -0
  173. package/lib/families/osmosis/preloadedData.d.ts +9 -0
  174. package/lib/families/osmosis/preloadedData.d.ts.map +1 -0
  175. package/lib/families/osmosis/preloadedData.js +32 -0
  176. package/lib/families/osmosis/preloadedData.js.map +1 -0
  177. package/lib/families/osmosis/serialization.d.ts +7 -0
  178. package/lib/families/osmosis/serialization.d.ts.map +1 -0
  179. package/lib/families/osmosis/serialization.js +5 -0
  180. package/lib/families/osmosis/serialization.js.map +1 -0
  181. package/lib/families/osmosis/specs.d.ts +7 -0
  182. package/lib/families/osmosis/specs.d.ts.map +1 -0
  183. package/lib/families/osmosis/specs.js +402 -0
  184. package/lib/families/osmosis/specs.js.map +1 -0
  185. package/lib/families/osmosis/speculos-deviceActions.d.ts +7 -0
  186. package/lib/families/osmosis/speculos-deviceActions.d.ts.map +1 -0
  187. package/lib/families/osmosis/speculos-deviceActions.js +120 -0
  188. package/lib/families/osmosis/speculos-deviceActions.js.map +1 -0
  189. package/lib/families/osmosis/transaction.d.ts +10 -0
  190. package/lib/families/osmosis/transaction.d.ts.map +1 -0
  191. package/lib/families/osmosis/transaction.js +13 -0
  192. package/lib/families/osmosis/transaction.js.map +1 -0
  193. package/lib/families/osmosis/types.d.ts +38 -0
  194. package/lib/families/osmosis/types.d.ts.map +1 -0
  195. package/lib/families/osmosis/types.js +3 -0
  196. package/lib/families/osmosis/types.js.map +1 -0
  197. package/lib/families/osmosis/utils.d.ts +8 -0
  198. package/lib/families/osmosis/utils.d.ts.map +1 -0
  199. package/lib/families/osmosis/utils.js +28 -0
  200. package/lib/families/osmosis/utils.js.map +1 -0
  201. package/lib/families/osmosis/validators.d.ts +4 -0
  202. package/lib/families/osmosis/validators.d.ts.map +1 -0
  203. package/lib/families/osmosis/validators.js +131 -0
  204. package/lib/families/osmosis/validators.js.map +1 -0
  205. package/lib/featureFlags/defaultFeatures.d.ts.map +1 -1
  206. package/lib/featureFlags/defaultFeatures.js +3 -0
  207. package/lib/featureFlags/defaultFeatures.js.map +1 -1
  208. package/lib/generated/account.d.ts +7 -1
  209. package/lib/generated/account.d.ts.map +1 -1
  210. package/lib/generated/account.js +4 -2
  211. package/lib/generated/account.js.map +1 -1
  212. package/lib/generated/bridge/js.d.ts +4 -0
  213. package/lib/generated/bridge/js.d.ts.map +1 -1
  214. package/lib/generated/bridge/js.js +14 -12
  215. package/lib/generated/bridge/js.js.map +1 -1
  216. package/lib/generated/cli-transaction.d.ts +33 -2
  217. package/lib/generated/cli-transaction.d.ts.map +1 -1
  218. package/lib/generated/cli-transaction.js +14 -12
  219. package/lib/generated/cli-transaction.js.map +1 -1
  220. package/lib/generated/deviceTransactionConfig.d.ts +4 -1
  221. package/lib/generated/deviceTransactionConfig.d.ts.map +1 -1
  222. package/lib/generated/deviceTransactionConfig.js +14 -12
  223. package/lib/generated/deviceTransactionConfig.js.map +1 -1
  224. package/lib/generated/hw-getAddress.d.ts +1 -0
  225. package/lib/generated/hw-getAddress.d.ts.map +1 -1
  226. package/lib/generated/hw-getAddress.js +14 -12
  227. package/lib/generated/hw-getAddress.js.map +1 -1
  228. package/lib/generated/specs.d.ts +3 -0
  229. package/lib/generated/specs.d.ts.map +1 -1
  230. package/lib/generated/specs.js +14 -12
  231. package/lib/generated/specs.js.map +1 -1
  232. package/lib/generated/speculos-deviceActions.d.ts +3 -0
  233. package/lib/generated/speculos-deviceActions.d.ts.map +1 -1
  234. package/lib/generated/speculos-deviceActions.js +14 -12
  235. package/lib/generated/speculos-deviceActions.js.map +1 -1
  236. package/lib/generated/transaction.d.ts +9 -1
  237. package/lib/generated/transaction.d.ts.map +1 -1
  238. package/lib/generated/transaction.js +14 -12
  239. package/lib/generated/transaction.js.map +1 -1
  240. package/lib/generated/types.d.ts +8 -4
  241. package/lib/generated/types.d.ts.map +1 -1
  242. package/lib/reconciliation.d.ts.map +1 -1
  243. package/lib/reconciliation.js +9 -0
  244. package/lib/reconciliation.js.map +1 -1
  245. package/package.json +8 -3
  246. package/src/__tests__/test-helpers/setup.ts +1 -0
  247. package/src/account/helpers.ts +1 -0
  248. package/src/account/serialization.ts +6 -0
  249. package/src/data/icons/react/index.tsx +1 -0
  250. package/src/data/icons/react/osmo.tsx +14 -0
  251. package/src/data/icons/reactNative/index.tsx +1 -0
  252. package/src/data/icons/reactNative/osmo.tsx +15 -0
  253. package/src/data/icons/svg/OSMO.svg +7 -0
  254. package/src/env.ts +10 -0
  255. package/src/families/cosmos/CosmosValidatorsManager.ts +420 -0
  256. package/src/families/cosmos/account.ts +29 -10
  257. package/src/families/cosmos/api/Cosmos.ts +267 -257
  258. package/src/families/cosmos/bridge/js.ts +6 -7
  259. package/src/families/cosmos/bridge/mock.ts +1 -1
  260. package/src/families/cosmos/bridge.integration.test.ts +5 -5
  261. package/src/families/cosmos/cli-transaction.ts +7 -8
  262. package/src/families/cosmos/js-buildTransaction.ts +4 -4
  263. package/src/families/cosmos/js-createTransaction.ts +1 -1
  264. package/src/families/cosmos/js-getTransactionStatus.ts +276 -226
  265. package/src/families/cosmos/js-prepareTransaction.ts +3 -3
  266. package/src/families/cosmos/js-signOperation.ts +4 -4
  267. package/src/families/cosmos/js-synchronisation.ts +3 -3
  268. package/src/families/cosmos/logic.ts +1 -1
  269. package/src/families/cosmos/mock.ts +1 -1
  270. package/src/families/cosmos/react.test.ts +25 -14
  271. package/src/families/cosmos/react.ts +73 -21
  272. package/src/families/cosmos/specs.ts +2 -2
  273. package/src/families/cosmos/speculos-deviceActions.ts +1 -2
  274. package/src/families/cosmos/transaction.ts +4 -6
  275. package/src/families/cosmos/types.ts +41 -13
  276. package/src/families/cosmos/utils.ts +8 -0
  277. package/src/families/cosmos/validators.ts +5 -363
  278. package/src/families/osmosis/OsmosisSupplyTypes.ts +53 -0
  279. package/src/families/osmosis/__snapshots__/bridge.integration.test.ts.snap +852 -0
  280. package/src/families/osmosis/account.ts +65 -0
  281. package/src/families/osmosis/api/sdk.ts +530 -0
  282. package/src/families/osmosis/api/sdk.types.ts +65 -0
  283. package/src/families/osmosis/api/sdk.unit.test.ts +70 -0
  284. package/src/families/osmosis/bridge/js.ts +64 -0
  285. package/src/families/osmosis/bridge.integration.test.ts +467 -0
  286. package/src/families/osmosis/cli-transaction.ts +145 -0
  287. package/src/families/osmosis/deviceTransactionConfig.ts +174 -0
  288. package/src/families/osmosis/errors.ts +13 -0
  289. package/src/families/osmosis/hw-getAddress.ts +14 -0
  290. package/src/families/osmosis/js-buildTransaction.ts +306 -0
  291. package/src/families/osmosis/js-estimateMaxSpendable.ts +26 -0
  292. package/src/families/osmosis/js-getFeesForTransaction.ts +44 -0
  293. package/src/families/osmosis/js-getTransactionStatus.ts +9 -0
  294. package/src/families/osmosis/js-signOperation.ts +172 -0
  295. package/src/families/osmosis/js-synchronization.ts +122 -0
  296. package/src/families/osmosis/js-transaction.ts +96 -0
  297. package/src/families/osmosis/logic.ts +26 -0
  298. package/src/families/osmosis/preloadedData.ts +32 -0
  299. package/src/families/osmosis/serialization.ts +6 -0
  300. package/src/families/osmosis/specs.ts +393 -0
  301. package/src/families/osmosis/speculos-deviceActions.ts +94 -0
  302. package/src/families/osmosis/transaction.ts +20 -0
  303. package/src/families/osmosis/types.ts +48 -0
  304. package/src/families/osmosis/utils.ts +31 -0
  305. package/src/families/osmosis/validators.ts +79 -0
  306. package/src/featureFlags/defaultFeatures.ts +3 -0
  307. package/src/generated/account.ts +3 -0
  308. package/src/generated/bridge/js.ts +3 -0
  309. package/src/generated/cli-transaction.ts +3 -0
  310. package/src/generated/deviceTransactionConfig.ts +5 -0
  311. package/src/generated/hw-getAddress.ts +3 -0
  312. package/src/generated/specs.ts +3 -0
  313. package/src/generated/speculos-deviceActions.ts +3 -0
  314. package/src/generated/transaction.ts +3 -0
  315. package/src/generated/types.ts +8 -0
  316. package/src/reconciliation.ts +16 -0
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  },
5
5
  "name": "@ledgerhq/live-common",
6
6
  "description": "Common ground for the Ledger Live apps",
7
- "version": "25.2.0-next.0",
7
+ "version": "25.2.0-next.1",
8
8
  "repository": {
9
9
  "type": "git",
10
10
  "url": "https://github.com/LedgerHQ/ledger-live.git"
@@ -101,20 +101,23 @@
101
101
  "@celo/wallet-ledger": "^1.5.2",
102
102
  "@cosmjs/amino": "^0.28.4",
103
103
  "@cosmjs/crypto": "^0.26.5",
104
+ "@cosmjs/launchpad": "^0.26.5",
105
+ "@cosmjs/ledger-amino": "^0.26.5",
104
106
  "@cosmjs/proto-signing": "^0.26.5",
105
107
  "@cosmjs/stargate": "^0.26.5",
106
108
  "@crypto-com/chain-jslib": "0.0.19",
107
109
  "@ethereumjs/common": "^2.6.2",
108
110
  "@ethereumjs/tx": "^3.5.0",
109
111
  "@hashgraph/sdk": "^2.10.1",
112
+ "@keplr-wallet/cosmos": "^0.9.16",
110
113
  "@ledgerhq/compressjs": "github:LedgerHQ/compressjs#d9e8e4d994923e0ea76a32b97289bcccfe71b82e",
111
- "@ledgerhq/cryptoassets": "^6.32.0-next.0",
114
+ "@ledgerhq/cryptoassets": "^6.32.0-next.1",
112
115
  "@ledgerhq/devices": "^7.0.0",
113
116
  "@ledgerhq/errors": "^6.10.1",
114
117
  "@ledgerhq/hw-app-algorand": "^6.27.2",
115
118
  "@ledgerhq/hw-app-btc": "^8.0.0",
116
119
  "@ledgerhq/hw-app-cosmos": "^6.27.2",
117
- "@ledgerhq/hw-app-eth": "^6.29.4-next.0",
120
+ "@ledgerhq/hw-app-eth": "^6.29.4-next.1",
118
121
  "@ledgerhq/hw-app-polkadot": "^6.27.2",
119
122
  "@ledgerhq/hw-app-solana": "^6.27.2",
120
123
  "@ledgerhq/hw-app-str": "^6.27.2",
@@ -213,6 +216,7 @@
213
216
  "zcash-bitcore-lib": "^0.13.20-rc3"
214
217
  },
215
218
  "devDependencies": {
219
+ "@keplr-wallet/proto-types": "^0.10.4",
216
220
  "@ledgerhq/types-cryptoassets": "^6.23.0-next.0",
217
221
  "@ledgerhq/types-devices": "^6.22.0",
218
222
  "@ledgerhq/types-live": "^6.23.0-next.0",
@@ -248,6 +252,7 @@
248
252
  "jest": "^28.1.1",
249
253
  "jest-environment-jsdom": "28",
250
254
  "jest-file-snapshot": "^0.5.0",
255
+ "long": "^4.0.0",
251
256
  "prettier": "2.3.2",
252
257
  "react": "^17.0.2",
253
258
  "react-dom": "17.0.2",
@@ -64,6 +64,7 @@ setSupportedCurrencies([
64
64
  "hedera",
65
65
  "cardano",
66
66
  "cardano_testnet",
67
+ "osmosis",
67
68
  ]);
68
69
 
69
70
  for (const k in process.env) setEnvUnsafe(k as EnvName, process.env[k]);
@@ -248,6 +248,7 @@ export const getVotesCount = (
248
248
  return isAccountDelegating(account) ? 1 : 0;
249
249
  case "tron":
250
250
  return (mainAccount as TronAccount)?.tronResources?.votes.length || 0;
251
+ case "osmosis":
251
252
  case "cosmos":
252
253
  return (
253
254
  (mainAccount as CosmosAccount)?.cosmosResources?.delegations.length || 0
@@ -785,6 +785,7 @@ export function fromAccountRaw(rawAccount: AccountRaw): Account {
785
785
  }
786
786
  break;
787
787
  }
788
+ case "osmosis":
788
789
  case "cosmos": {
789
790
  const cosmosResourcesRaw = (rawAccount as CosmosAccountRaw)
790
791
  .cosmosResources;
@@ -951,6 +952,11 @@ export function toAccountRaw(account: Account): AccountRaw {
951
952
  (account as CosmosAccount).cosmosResources
952
953
  );
953
954
  break;
955
+ case "osmosis":
956
+ (res as CosmosAccountRaw).cosmosResources = toCosmosResourcesRaw(
957
+ (account as CosmosAccount).cosmosResources
958
+ );
959
+ break;
954
960
  case "tezos":
955
961
  (res as TezosAccountRaw).tezosResources = toTezosResourcesRaw(
956
962
  (account as TezosAccount).tezosResources
@@ -283,6 +283,7 @@ export { default as omni } from "./omni";
283
283
  export { default as ong } from "./ong";
284
284
  export { default as ont } from "./ont";
285
285
  export { default as oot } from "./oot";
286
+ export { default as osmo } from "./osmo";
286
287
  export { default as ost } from "./ost";
287
288
  export { default as ox } from "./ox";
288
289
  export { default as oxt } from "./oxt";
@@ -0,0 +1,14 @@
1
+
2
+ // @ts-nocheck
3
+
4
+ import * as React from "react";
5
+ interface Props {
6
+ size: number;
7
+ color?: string;
8
+ };
9
+
10
+ function osmo({size, color = "currentColor"}: Props) {
11
+ return <svg width={size} height={size} viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M10.8577 15.9773C7.64675 16.4415 5.27967 15.4823 4.42188 14.3886C4.68126 17.7191 7.46987 20.1446 10.8598 20.1446C14.362 20.1446 17.152 17.5558 17.2425 14.0549C17.0018 14.1663 16.6738 14.2464 16.2951 14.3389C15.9609 14.4205 15.5872 14.5117 15.1992 14.6426C14.8764 14.7537 14.5645 14.8786 14.2419 15.0077C13.3483 15.3655 12.3726 15.7561 10.8577 15.9773Z" fill={color} /><path d="M17.2443 13.046C17.2443 12.3224 15.9631 11.9072 14.2589 11.7648C13.0261 11.6699 11.7811 11.7885 10.3549 12.2156C9.12203 12.5715 8.01005 12.5122 7.20025 12.4173C5.39931 12.2156 4.4082 12.1919 4.4082 13.046C4.4082 14.2798 6.97059 15.822 10.8142 15.2882C12.2439 15.0877 13.1647 14.7336 14.0081 14.4092C14.3126 14.2921 14.607 14.1788 14.9116 14.0781C15.2779 13.9595 15.6305 13.8767 15.9459 13.8028C16.7024 13.6253 17.2443 13.4982 17.2443 13.046Z" fill={color} /><path d="M13.3169 8.66806C13.3169 9.36142 12.7668 9.92351 12.0881 9.92351C11.4095 9.92351 10.8594 9.36142 10.8594 8.66806C10.8594 7.97469 11.4095 7.4126 12.0881 7.4126C12.7668 7.4126 13.3169 7.97469 13.3169 8.66806Z" fill={color} /><path d="M14.0955 10.8582C14.382 10.8582 14.6143 10.6209 14.6143 10.3282C14.6143 10.0354 14.382 9.7981 14.0955 9.7981C13.8089 9.7981 13.5767 10.0354 13.5767 10.3282C13.5767 10.6209 13.8089 10.8582 14.0955 10.8582Z" fill={color} /><path fillRule="evenodd" clipRule="evenodd" d="M18.6996 3.27303C17.6708 2.56177 16.5673 2.1306 15.6005 2.02508C14.6537 1.92175 13.7187 2.12611 13.2197 2.85424C12.7208 3.58238 13.018 4.50963 13.4522 5.36104C13.4661 5.38843 13.4804 5.41564 13.4951 5.44268C12.6745 5.16483 11.7975 5.0144 10.8869 5.0144C6.2965 5.0144 2.58447 8.81388 2.58447 13.4923C2.58447 18.1707 6.2965 21.9702 10.8869 21.9702C15.4772 21.9702 19.1893 18.1707 19.1893 13.4923C19.1893 11.7776 18.6888 10.1811 17.8295 8.84636C17.8406 8.80734 17.8525 8.76657 17.8652 8.72426C18.1204 8.79782 18.3758 8.84908 18.6341 8.87728C19.5809 8.98061 20.5469 8.99288 21.0459 8.26475C21.5448 7.53662 21.401 6.58646 20.9668 5.73505C20.5235 4.86569 19.7285 3.98429 18.6996 3.27303ZM18.0785 8.08784C18.3154 8.15239 18.5439 8.19644 18.7596 8.21999C19.5759 8.30908 20.0956 8.10104 20.3249 7.76635C20.5543 7.43165 20.5622 6.8698 20.1879 6.1358C19.8227 5.41974 19.1367 4.64232 18.2034 3.99714C17.2702 3.35197 16.3022 2.98591 15.5059 2.899C14.6897 2.80992 14.17 3.01796 13.9406 3.35265C13.7113 3.68734 13.7034 4.24919 14.0777 4.98319C14.1559 5.1365 14.2488 5.29261 14.3556 5.44964C14.4346 5.40003 14.5181 5.34628 14.6048 5.289C14.5119 5.11119 14.4425 4.92877 14.4086 4.74762C14.3602 4.48885 14.38 4.19902 14.5511 3.94931C14.7222 3.6996 14.9847 3.57758 15.2426 3.53056C15.4982 3.48395 15.7817 3.50332 16.0652 3.56249C16.6342 3.68121 17.2919 3.97874 17.9189 4.4122C18.5458 4.84566 19.0574 5.35644 19.371 5.84787C19.5272 6.09276 19.6465 6.35177 19.6944 6.60824C19.7428 6.86702 19.723 7.15685 19.5519 7.40655C19.3808 7.65626 19.1183 7.77828 18.8604 7.82531C18.6479 7.86405 18.4161 7.8572 18.1811 7.81979C18.1451 7.9103 18.1109 7.99997 18.0785 8.08784ZM18.567 6.97219C18.6195 6.9717 18.6652 6.96746 18.7041 6.96038C18.7569 6.95074 18.7895 6.93723 18.8076 6.9269C18.8243 6.91742 18.8293 6.91054 18.831 6.90815C18.8326 6.90576 18.8372 6.89859 18.8401 6.87955C18.8432 6.85882 18.8441 6.82346 18.8342 6.77044C18.8252 6.72237 18.8085 6.66603 18.7825 6.60218C18.7095 6.7147 18.6373 6.8393 18.567 6.97219ZM18.3503 5.94898C18.1132 5.6786 17.799 5.3965 17.4226 5.13631C17.1399 4.94085 16.8582 4.78271 16.5931 4.66273C16.2207 5.0301 15.697 5.42938 15.2211 5.75589C15.0834 5.85035 14.9465 5.94095 14.8154 6.02455C15.7696 6.5499 16.6123 7.26042 17.2968 8.10883C17.3607 7.92191 17.4334 7.72413 17.5131 7.52472C17.7326 6.97547 18.021 6.37445 18.3503 5.94898ZM15.7919 4.40542C15.6227 4.37789 15.4914 4.37863 15.3989 4.39548C15.3461 4.40512 15.3135 4.41864 15.2954 4.42896C15.2787 4.43845 15.2737 4.44533 15.272 4.44771C15.2704 4.4501 15.2658 4.45728 15.2629 4.47632C15.2598 4.49705 15.2589 4.5324 15.2688 4.58543C15.2788 4.63909 15.2985 4.70305 15.33 4.77627C15.4926 4.65305 15.6493 4.52785 15.7919 4.40542ZM10.8869 5.91444C6.79396 5.91444 3.47473 9.29888 3.47473 13.4923C3.47473 17.6857 6.79396 21.0702 10.8869 21.0702C14.9664 21.0702 18.299 17.6854 18.299 13.4923C18.299 9.29888 14.9798 5.91444 10.8869 5.91444Z" fill={color} /></svg>;
12
+ }
13
+
14
+ export default osmo;
@@ -283,6 +283,7 @@ export { default as omni } from "./omni";
283
283
  export { default as ong } from "./ong";
284
284
  export { default as ont } from "./ont";
285
285
  export { default as oot } from "./oot";
286
+ export { default as osmo } from "./osmo";
286
287
  export { default as ost } from "./ost";
287
288
  export { default as ox } from "./ox";
288
289
  export { default as oxt } from "./oxt";
@@ -0,0 +1,15 @@
1
+
2
+ // @ts-nocheck
3
+
4
+ import * as React from "react";
5
+ import Svg, { Path } from "react-native-svg";
6
+ interface Props {
7
+ size: number;
8
+ color: string;
9
+ };
10
+
11
+ function osmo({ size, color }: Props) {
12
+ return <Svg width={size} height={size} viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><Path d="M10.8577 15.9773C7.64675 16.4415 5.27967 15.4823 4.42188 14.3886C4.68126 17.7191 7.46987 20.1446 10.8598 20.1446C14.362 20.1446 17.152 17.5558 17.2425 14.0549C17.0018 14.1663 16.6738 14.2464 16.2951 14.3389C15.9609 14.4205 15.5872 14.5117 15.1992 14.6426C14.8764 14.7537 14.5645 14.8786 14.2419 15.0077C13.3483 15.3655 12.3726 15.7561 10.8577 15.9773Z" fill={color} /><Path d="M17.2443 13.046C17.2443 12.3224 15.9631 11.9072 14.2589 11.7648C13.0261 11.6699 11.7811 11.7885 10.3549 12.2156C9.12203 12.5715 8.01005 12.5122 7.20025 12.4173C5.39931 12.2156 4.4082 12.1919 4.4082 13.046C4.4082 14.2798 6.97059 15.822 10.8142 15.2882C12.2439 15.0877 13.1647 14.7336 14.0081 14.4092C14.3126 14.2921 14.607 14.1788 14.9116 14.0781C15.2779 13.9595 15.6305 13.8767 15.9459 13.8028C16.7024 13.6253 17.2443 13.4982 17.2443 13.046Z" fill={color} /><Path d="M13.3169 8.66806C13.3169 9.36142 12.7668 9.92351 12.0881 9.92351C11.4095 9.92351 10.8594 9.36142 10.8594 8.66806C10.8594 7.97469 11.4095 7.4126 12.0881 7.4126C12.7668 7.4126 13.3169 7.97469 13.3169 8.66806Z" fill={color} /><Path d="M14.0955 10.8582C14.382 10.8582 14.6143 10.6209 14.6143 10.3282C14.6143 10.0354 14.382 9.7981 14.0955 9.7981C13.8089 9.7981 13.5767 10.0354 13.5767 10.3282C13.5767 10.6209 13.8089 10.8582 14.0955 10.8582Z" fill={color} /><Path fillRule="evenodd" clipRule="evenodd" d="M18.6996 3.27303C17.6708 2.56177 16.5673 2.1306 15.6005 2.02508C14.6537 1.92175 13.7187 2.12611 13.2197 2.85424C12.7208 3.58238 13.018 4.50963 13.4522 5.36104C13.4661 5.38843 13.4804 5.41564 13.4951 5.44268C12.6745 5.16483 11.7975 5.0144 10.8869 5.0144C6.2965 5.0144 2.58447 8.81388 2.58447 13.4923C2.58447 18.1707 6.2965 21.9702 10.8869 21.9702C15.4772 21.9702 19.1893 18.1707 19.1893 13.4923C19.1893 11.7776 18.6888 10.1811 17.8295 8.84636C17.8406 8.80734 17.8525 8.76657 17.8652 8.72426C18.1204 8.79782 18.3758 8.84908 18.6341 8.87728C19.5809 8.98061 20.5469 8.99288 21.0459 8.26475C21.5448 7.53662 21.401 6.58646 20.9668 5.73505C20.5235 4.86569 19.7285 3.98429 18.6996 3.27303ZM18.0785 8.08784C18.3154 8.15239 18.5439 8.19644 18.7596 8.21999C19.5759 8.30908 20.0956 8.10104 20.3249 7.76635C20.5543 7.43165 20.5622 6.8698 20.1879 6.1358C19.8227 5.41974 19.1367 4.64232 18.2034 3.99714C17.2702 3.35197 16.3022 2.98591 15.5059 2.899C14.6897 2.80992 14.17 3.01796 13.9406 3.35265C13.7113 3.68734 13.7034 4.24919 14.0777 4.98319C14.1559 5.1365 14.2488 5.29261 14.3556 5.44964C14.4346 5.40003 14.5181 5.34628 14.6048 5.289C14.5119 5.11119 14.4425 4.92877 14.4086 4.74762C14.3602 4.48885 14.38 4.19902 14.5511 3.94931C14.7222 3.6996 14.9847 3.57758 15.2426 3.53056C15.4982 3.48395 15.7817 3.50332 16.0652 3.56249C16.6342 3.68121 17.2919 3.97874 17.9189 4.4122C18.5458 4.84566 19.0574 5.35644 19.371 5.84787C19.5272 6.09276 19.6465 6.35177 19.6944 6.60824C19.7428 6.86702 19.723 7.15685 19.5519 7.40655C19.3808 7.65626 19.1183 7.77828 18.8604 7.82531C18.6479 7.86405 18.4161 7.8572 18.1811 7.81979C18.1451 7.9103 18.1109 7.99997 18.0785 8.08784ZM18.567 6.97219C18.6195 6.9717 18.6652 6.96746 18.7041 6.96038C18.7569 6.95074 18.7895 6.93723 18.8076 6.9269C18.8243 6.91742 18.8293 6.91054 18.831 6.90815C18.8326 6.90576 18.8372 6.89859 18.8401 6.87955C18.8432 6.85882 18.8441 6.82346 18.8342 6.77044C18.8252 6.72237 18.8085 6.66603 18.7825 6.60218C18.7095 6.7147 18.6373 6.8393 18.567 6.97219ZM18.3503 5.94898C18.1132 5.6786 17.799 5.3965 17.4226 5.13631C17.1399 4.94085 16.8582 4.78271 16.5931 4.66273C16.2207 5.0301 15.697 5.42938 15.2211 5.75589C15.0834 5.85035 14.9465 5.94095 14.8154 6.02455C15.7696 6.5499 16.6123 7.26042 17.2968 8.10883C17.3607 7.92191 17.4334 7.72413 17.5131 7.52472C17.7326 6.97547 18.021 6.37445 18.3503 5.94898ZM15.7919 4.40542C15.6227 4.37789 15.4914 4.37863 15.3989 4.39548C15.3461 4.40512 15.3135 4.41864 15.2954 4.42896C15.2787 4.43845 15.2737 4.44533 15.272 4.44771C15.2704 4.4501 15.2658 4.45728 15.2629 4.47632C15.2598 4.49705 15.2589 4.5324 15.2688 4.58543C15.2788 4.63909 15.2985 4.70305 15.33 4.77627C15.4926 4.65305 15.6493 4.52785 15.7919 4.40542ZM10.8869 5.91444C6.79396 5.91444 3.47473 9.29888 3.47473 13.4923C3.47473 17.6857 6.79396 21.0702 10.8869 21.0702C14.9664 21.0702 18.299 17.6854 18.299 13.4923C18.299 9.29888 14.9798 5.91444 10.8869 5.91444Z" fill={color} /></Svg>;
13
+ }
14
+
15
+ export default osmo;
@@ -0,0 +1,7 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M10.8577 15.9773C7.64675 16.4415 5.27967 15.4823 4.42188 14.3886C4.68126 17.7191 7.46987 20.1446 10.8598 20.1446C14.362 20.1446 17.152 17.5558 17.2425 14.0549C17.0018 14.1663 16.6738 14.2464 16.2951 14.3389C15.9609 14.4205 15.5872 14.5117 15.1992 14.6426C14.8764 14.7537 14.5645 14.8786 14.2419 15.0077C13.3483 15.3655 12.3726 15.7561 10.8577 15.9773Z" fill="#302DBB"/>
3
+ <path d="M17.2443 13.046C17.2443 12.3224 15.9631 11.9072 14.2589 11.7648C13.0261 11.6699 11.7811 11.7885 10.3549 12.2156C9.12203 12.5715 8.01005 12.5122 7.20025 12.4173C5.39931 12.2156 4.4082 12.1919 4.4082 13.046C4.4082 14.2798 6.97059 15.822 10.8142 15.2882C12.2439 15.0877 13.1647 14.7336 14.0081 14.4092C14.3126 14.2921 14.607 14.1788 14.9116 14.0781C15.2779 13.9595 15.6305 13.8767 15.9459 13.8028C16.7024 13.6253 17.2443 13.4982 17.2443 13.046Z" fill="#302DBB"/>
4
+ <path d="M13.3169 8.66806C13.3169 9.36142 12.7668 9.92351 12.0881 9.92351C11.4095 9.92351 10.8594 9.36142 10.8594 8.66806C10.8594 7.97469 11.4095 7.4126 12.0881 7.4126C12.7668 7.4126 13.3169 7.97469 13.3169 8.66806Z" fill="#302DBB"/>
5
+ <path d="M14.0955 10.8582C14.382 10.8582 14.6143 10.6209 14.6143 10.3282C14.6143 10.0354 14.382 9.7981 14.0955 9.7981C13.8089 9.7981 13.5767 10.0354 13.5767 10.3282C13.5767 10.6209 13.8089 10.8582 14.0955 10.8582Z" fill="#302DBB"/>
6
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M18.6996 3.27303C17.6708 2.56177 16.5673 2.1306 15.6005 2.02508C14.6537 1.92175 13.7187 2.12611 13.2197 2.85424C12.7208 3.58238 13.018 4.50963 13.4522 5.36104C13.4661 5.38843 13.4804 5.41564 13.4951 5.44268C12.6745 5.16483 11.7975 5.0144 10.8869 5.0144C6.2965 5.0144 2.58447 8.81388 2.58447 13.4923C2.58447 18.1707 6.2965 21.9702 10.8869 21.9702C15.4772 21.9702 19.1893 18.1707 19.1893 13.4923C19.1893 11.7776 18.6888 10.1811 17.8295 8.84636C17.8406 8.80734 17.8525 8.76657 17.8652 8.72426C18.1204 8.79782 18.3758 8.84908 18.6341 8.87728C19.5809 8.98061 20.5469 8.99288 21.0459 8.26475C21.5448 7.53662 21.401 6.58646 20.9668 5.73505C20.5235 4.86569 19.7285 3.98429 18.6996 3.27303ZM18.0785 8.08784C18.3154 8.15239 18.5439 8.19644 18.7596 8.21999C19.5759 8.30908 20.0956 8.10104 20.3249 7.76635C20.5543 7.43165 20.5622 6.8698 20.1879 6.1358C19.8227 5.41974 19.1367 4.64232 18.2034 3.99714C17.2702 3.35197 16.3022 2.98591 15.5059 2.899C14.6897 2.80992 14.17 3.01796 13.9406 3.35265C13.7113 3.68734 13.7034 4.24919 14.0777 4.98319C14.1559 5.1365 14.2488 5.29261 14.3556 5.44964C14.4346 5.40003 14.5181 5.34628 14.6048 5.289C14.5119 5.11119 14.4425 4.92877 14.4086 4.74762C14.3602 4.48885 14.38 4.19902 14.5511 3.94931C14.7222 3.6996 14.9847 3.57758 15.2426 3.53056C15.4982 3.48395 15.7817 3.50332 16.0652 3.56249C16.6342 3.68121 17.2919 3.97874 17.9189 4.4122C18.5458 4.84566 19.0574 5.35644 19.371 5.84787C19.5272 6.09276 19.6465 6.35177 19.6944 6.60824C19.7428 6.86702 19.723 7.15685 19.5519 7.40655C19.3808 7.65626 19.1183 7.77828 18.8604 7.82531C18.6479 7.86405 18.4161 7.8572 18.1811 7.81979C18.1451 7.9103 18.1109 7.99997 18.0785 8.08784ZM18.567 6.97219C18.6195 6.9717 18.6652 6.96746 18.7041 6.96038C18.7569 6.95074 18.7895 6.93723 18.8076 6.9269C18.8243 6.91742 18.8293 6.91054 18.831 6.90815C18.8326 6.90576 18.8372 6.89859 18.8401 6.87955C18.8432 6.85882 18.8441 6.82346 18.8342 6.77044C18.8252 6.72237 18.8085 6.66603 18.7825 6.60218C18.7095 6.7147 18.6373 6.8393 18.567 6.97219ZM18.3503 5.94898C18.1132 5.6786 17.799 5.3965 17.4226 5.13631C17.1399 4.94085 16.8582 4.78271 16.5931 4.66273C16.2207 5.0301 15.697 5.42938 15.2211 5.75589C15.0834 5.85035 14.9465 5.94095 14.8154 6.02455C15.7696 6.5499 16.6123 7.26042 17.2968 8.10883C17.3607 7.92191 17.4334 7.72413 17.5131 7.52472C17.7326 6.97547 18.021 6.37445 18.3503 5.94898ZM15.7919 4.40542C15.6227 4.37789 15.4914 4.37863 15.3989 4.39548C15.3461 4.40512 15.3135 4.41864 15.2954 4.42896C15.2787 4.43845 15.2737 4.44533 15.272 4.44771C15.2704 4.4501 15.2658 4.45728 15.2629 4.47632C15.2598 4.49705 15.2589 4.5324 15.2688 4.58543C15.2788 4.63909 15.2985 4.70305 15.33 4.77627C15.4926 4.65305 15.6493 4.52785 15.7919 4.40542ZM10.8869 5.91444C6.79396 5.91444 3.47473 9.29888 3.47473 13.4923C3.47473 17.6857 6.79396 21.0702 10.8869 21.0702C14.9664 21.0702 18.299 17.6854 18.299 13.4923C18.299 9.29888 14.9798 5.91444 10.8869 5.91444Z" fill="#302DBB"/>
7
+ </svg>
package/src/env.ts CHANGED
@@ -110,6 +110,16 @@ const envDefinitions = {
110
110
  parser: boolParser,
111
111
  desc: "Static fee for Stellar account",
112
112
  },
113
+ API_OSMOSIS_INDEXER: {
114
+ def: "https://osmosis.coin.ledger.com/indexer",
115
+ parser: stringParser,
116
+ desc: "Endpoint for Transaction Explorer/Indexer for Osmosis",
117
+ },
118
+ API_OSMOSIS_NODE: {
119
+ def: "https://osmosis.coin.ledger.com/node",
120
+ parser: stringParser,
121
+ desc: "Endpoint for Osmosis Node",
122
+ },
113
123
  API_TEZOS_BAKER: {
114
124
  parser: stringParser,
115
125
  def: "https://tezos-bakers.api.live.ledger.com",
@@ -0,0 +1,420 @@
1
+ import network from "../../network";
2
+ import { log } from "@ledgerhq/logs";
3
+ import { EnvName, EnvValue, getEnv } from "../../env";
4
+ import { makeLRUCache } from "../../cache";
5
+ import type { CosmosValidatorItem, CosmosRewardsState } from "./types";
6
+ import type { CryptoCurrency } from "@ledgerhq/types-cryptoassets";
7
+
8
+ // Utils
9
+ const getBaseApiUrl = (currency: CryptoCurrency) => {
10
+ if (currency.id === "cosmos_testnet") {
11
+ return getEnv("API_COSMOS_TESTNET_BLOCKCHAIN_EXPLORER_API_ENDPOINT");
12
+ } else {
13
+ return getEnv("API_COSMOS_BLOCKCHAIN_EXPLORER_API_ENDPOINT");
14
+ }
15
+ };
16
+
17
+ const isStargate = (currency: CryptoCurrency) => {
18
+ if (currency.id === "cosmos_testnet") {
19
+ return getEnv("API_COSMOS_TESTNET_NODE") == "STARGATE_NODE";
20
+ } else {
21
+ return getEnv("API_COSMOS_NODE") == "STARGATE_NODE";
22
+ }
23
+ };
24
+
25
+ const parseUatomStrAsAtomNumber = (uatoms: string) => {
26
+ return parseFloat(uatoms) / 1000000.0;
27
+ };
28
+
29
+ export class CosmosValidatorsManager {
30
+ protected _namespace = "cosmos";
31
+ protected _version = "v1beta1";
32
+ protected _currency!: CryptoCurrency;
33
+ protected _minDenom!: string;
34
+ protected _endPoint: EnvValue<EnvName> | undefined;
35
+ protected _rewardsState: any | undefined;
36
+
37
+ constructor(
38
+ currency: CryptoCurrency,
39
+ options?: {
40
+ namespace?: string;
41
+ // version?: string;
42
+ endPoint?: EnvValue<EnvName>;
43
+ rewardsState?: any;
44
+ }
45
+ ) {
46
+ this._currency = currency;
47
+ this._endPoint = getBaseApiUrl(this._currency);
48
+ this._minDenom = currency.id === "cosmos_testnet" ? "umuon" : "uatom";
49
+
50
+ if (options?.namespace) {
51
+ this._namespace = options.namespace;
52
+ }
53
+ // if (options?.version) {
54
+ // this._version = options.version;
55
+ // }
56
+ if (options?.endPoint) {
57
+ this._endPoint = options.endPoint;
58
+ // TODO this is a hack for now
59
+ this._minDenom = currency.units[1].code; // this will be uosmo for Osmosis
60
+ }
61
+
62
+ if (options?.rewardsState) {
63
+ this._rewardsState = options.rewardsState;
64
+ }
65
+ }
66
+
67
+ private cacheValidators = makeLRUCache(
68
+ async (rewardState: CosmosRewardsState): Promise<CosmosValidatorItem[]> => {
69
+ const currency = this._currency;
70
+ if (isStargate(currency)) {
71
+ const url = `${this._endPoint}/cosmos/staking/${this._version}/validators?status=BOND_STATUS_BONDED&pagination.limit=175`;
72
+ const { data } = await network({
73
+ url,
74
+ method: "GET",
75
+ });
76
+ const validators = data.validators.map((validator) => {
77
+ const commission = parseFloat(
78
+ validator.commission.commission_rates.rate
79
+ );
80
+ return {
81
+ validatorAddress: validator.operator_address,
82
+ name: validator.description.moniker,
83
+ tokens: parseFloat(validator.tokens),
84
+ votingPower: this.validatorVotingPower(
85
+ validator.tokens,
86
+ rewardState
87
+ ),
88
+ commission,
89
+ estimatedYearlyRewardsRate: this.validatorEstimatedRate(
90
+ commission,
91
+ rewardState
92
+ ),
93
+ };
94
+ });
95
+ return validators;
96
+ } else {
97
+ const url = `${this._endPoint}/staking/validators`;
98
+ const { data } = await network({
99
+ url,
100
+ method: "GET",
101
+ });
102
+ const validators = data.result.map((validator) => {
103
+ const commission = parseFloat(
104
+ validator.commission.commission_rates.rate
105
+ );
106
+ return {
107
+ validatorAddress: validator.operator_address,
108
+ name: validator.description.moniker,
109
+ tokens: parseFloat(validator.tokens),
110
+ votingPower: this.validatorVotingPower(
111
+ validator.tokens,
112
+ rewardState
113
+ ),
114
+ commission,
115
+ estimatedYearlyRewardsRate: this.validatorEstimatedRate(
116
+ commission,
117
+ rewardState
118
+ ),
119
+ };
120
+ });
121
+ return validators;
122
+ }
123
+ },
124
+ (_: CosmosRewardsState) => this._currency.id
125
+ );
126
+
127
+ getValidators = async (): Promise<CosmosValidatorItem[]> => {
128
+ if (isStargate(this._currency)) {
129
+ const rewardsState = this._rewardsState
130
+ ? await this._rewardsState()
131
+ : await this.getStargateRewardsState();
132
+
133
+ // validators need the rewardsState ONLY to compute voting power as
134
+ // percentage instead of raw uatoms amounts
135
+ return await this.cacheValidators(rewardsState);
136
+ } else {
137
+ const rewardsState = await this.getRewardsState();
138
+ // validators need the rewardsState ONLY to compute voting power as
139
+ // percentage instead of raw uatoms amounts
140
+ return await this.cacheValidators(rewardsState);
141
+ }
142
+ };
143
+
144
+ private getRewardsState = makeLRUCache(
145
+ async () => {
146
+ // All obtained values are strings ; so sometimes we will need to parse them as numbers
147
+ const inflationUrl = `${this._endPoint}/minting/inflation`;
148
+ const { data: inflationData } = await network({
149
+ url: inflationUrl,
150
+ method: "GET",
151
+ });
152
+ const currentValueInflation = parseFloat(inflationData.result);
153
+ const inflationParametersUrl = `${this._endPoint}/minting/parameters`;
154
+ const { data: inflationParametersData } = await network({
155
+ url: inflationParametersUrl,
156
+ method: "GET",
157
+ });
158
+ const inflationRateChange = parseFloat(
159
+ inflationParametersData.result.inflation_rate_change
160
+ );
161
+ const inflationMaxRate = parseFloat(
162
+ inflationParametersData.result.inflation_max
163
+ );
164
+ const inflationMinRate = parseFloat(
165
+ inflationParametersData.result.inflation_min
166
+ );
167
+ const targetBondedRatio = parseFloat(
168
+ inflationParametersData.result.goal_bonded
169
+ );
170
+ // Source for seconds per year : https://github.com/gavinly/CosmosParametersWiki/blob/master/Mint.md#notes-3
171
+ // 365.24 (days) * 24 (hours) * 60 (minutes) * 60 (seconds) = 31556736 seconds
172
+ const assumedTimePerBlock =
173
+ 31556736.0 / parseFloat(inflationParametersData.result.blocks_per_year);
174
+ const communityTaxUrl = `${this._endPoint}/distribution/parameters`;
175
+ const { data: communityTax } = await network({
176
+ url: communityTaxUrl,
177
+ method: "GET",
178
+ });
179
+ const communityPoolCommission = parseFloat(
180
+ communityTax.result.community_tax
181
+ );
182
+ const supplyUrl = `${this._endPoint}/supply/total`;
183
+ const { data: totalSupplyData } = await network({
184
+ url: supplyUrl,
185
+ method: "GET",
186
+ });
187
+ const totalSupply = parseUatomStrAsAtomNumber(
188
+ totalSupplyData.result[0].amount
189
+ );
190
+ const ratioUrl = `${this._endPoint}/staking/pool`;
191
+ const { data: ratioData } = await network({
192
+ url: ratioUrl,
193
+ method: "GET",
194
+ });
195
+ const actualBondedRatio =
196
+ parseUatomStrAsAtomNumber(ratioData.result.bonded_tokens) / totalSupply;
197
+ // Arbitrary value in ATOM.
198
+ const averageDailyFees = 20;
199
+ // Arbitrary value in seconds
200
+ const averageTimePerBlock = 7.5;
201
+ return {
202
+ targetBondedRatio,
203
+ communityPoolCommission,
204
+ assumedTimePerBlock,
205
+ inflationRateChange,
206
+ inflationMaxRate,
207
+ inflationMinRate,
208
+ actualBondedRatio,
209
+ averageTimePerBlock,
210
+ totalSupply,
211
+ averageDailyFees,
212
+ currentValueInflation,
213
+ };
214
+ },
215
+ () => this._currency.id
216
+ );
217
+
218
+ private getStargateRewardsState = makeLRUCache(
219
+ async () => {
220
+ /*
221
+ return {
222
+ targetBondedRatio: 0.01,
223
+ communityPoolCommission: 0.0,
224
+ assumedTimePerBlock: 7,
225
+ inflationRateChange: 0.01,
226
+ inflationMaxRate: 0.01,
227
+ inflationMinRate: 0.01,
228
+ actualBondedRatio: 0.01,
229
+ averageTimePerBlock: 7,
230
+ totalSupply: 0,
231
+ averageDailyFees: 0,
232
+ currentValueInflation: 0.01,
233
+ };
234
+ */
235
+
236
+ // All obtained values are strings ; so sometimes we will need to parse them as numbers
237
+ const inflationUrl = `${this._endPoint}/cosmos/mint/v1beta1/inflation`;
238
+
239
+ const { data: inflationData } = await network({
240
+ url: inflationUrl,
241
+ method: "GET",
242
+ });
243
+
244
+ const currentValueInflation = parseFloat(inflationData.inflation);
245
+
246
+ const inflationParametersUrl = `${this._endPoint}/cosmos/mint/v1beta1/params`;
247
+
248
+ const { data: inflationParametersData } = await network({
249
+ url: inflationParametersUrl,
250
+ method: "GET",
251
+ });
252
+
253
+ const inflationRateChange = parseFloat(
254
+ inflationParametersData.params.inflation_rate_change
255
+ );
256
+
257
+ const inflationMaxRate = parseFloat(
258
+ inflationParametersData.params.inflation_max
259
+ );
260
+
261
+ const inflationMinRate = parseFloat(
262
+ inflationParametersData.params.inflation_min
263
+ );
264
+
265
+ const targetBondedRatio = parseFloat(
266
+ inflationParametersData.params.goal_bonded
267
+ );
268
+
269
+ // Source for seconds per year : https://github.com/gavinly/CosmosParametersWiki/blob/master/Mint.md#notes-3
270
+ // 365.24 (days) * 24 (hours) * 60 (minutes) * 60 (seconds) = 31556736 seconds
271
+ const assumedTimePerBlock =
272
+ 31556736.0 / parseFloat(inflationParametersData.params.blocks_per_year);
273
+
274
+ const communityTaxUrl = `${this._endPoint}/cosmos/distribution/v1beta1/params`;
275
+
276
+ const { data: communityTax } = await network({
277
+ url: communityTaxUrl,
278
+ method: "GET",
279
+ });
280
+
281
+ const communityPoolCommission = parseFloat(
282
+ communityTax.params.community_tax
283
+ );
284
+
285
+ const supplyUrl = `${this._endPoint}/cosmos/bank/v1beta1/supply/${this._minDenom}`;
286
+
287
+ const { data: totalSupplyData } = await network({
288
+ url: supplyUrl,
289
+ method: "GET",
290
+ });
291
+
292
+ const totalSupply = parseUatomStrAsAtomNumber(
293
+ totalSupplyData.amount.amount
294
+ );
295
+
296
+ const ratioUrl = `${this._endPoint}/cosmos/staking/v1beta1/pool`;
297
+
298
+ const { data: ratioData } = await network({
299
+ url: ratioUrl,
300
+ method: "GET",
301
+ });
302
+
303
+ const actualBondedRatio =
304
+ parseUatomStrAsAtomNumber(ratioData.pool.bonded_tokens) / totalSupply;
305
+
306
+ // Arbitrary value in ATOM.
307
+ const averageDailyFees = 20;
308
+
309
+ // Arbitrary value in seconds
310
+ const averageTimePerBlock = 7.5;
311
+
312
+ return {
313
+ targetBondedRatio,
314
+ communityPoolCommission,
315
+ assumedTimePerBlock,
316
+ inflationRateChange,
317
+ inflationMaxRate,
318
+ inflationMinRate,
319
+ actualBondedRatio,
320
+ averageTimePerBlock,
321
+ totalSupply,
322
+ averageDailyFees,
323
+ currentValueInflation,
324
+ };
325
+ },
326
+ () => this._currency.id
327
+ );
328
+
329
+ private computeAvgYearlyInflation = (rewardsState: CosmosRewardsState) => {
330
+ // Return invalid rewardsState if
331
+ // rewardsState.currentValueInflation is not between inflationMinRate and inflationMaxRate
332
+ const inflationSlope =
333
+ (1 - rewardsState.actualBondedRatio / rewardsState.targetBondedRatio) *
334
+ rewardsState.inflationRateChange;
335
+ const unrestrictedEndOfYearInflation =
336
+ rewardsState.currentValueInflation * (1 + inflationSlope);
337
+
338
+ if (
339
+ unrestrictedEndOfYearInflation <= rewardsState.inflationMaxRate &&
340
+ unrestrictedEndOfYearInflation >= rewardsState.inflationMinRate
341
+ ) {
342
+ return (
343
+ (rewardsState.currentValueInflation + unrestrictedEndOfYearInflation) /
344
+ 2
345
+ );
346
+ }
347
+
348
+ if (unrestrictedEndOfYearInflation > rewardsState.inflationMaxRate) {
349
+ const diffToMax =
350
+ rewardsState.inflationMaxRate - rewardsState.currentValueInflation;
351
+ const maxPoint = diffToMax / inflationSlope;
352
+ const averageInflation =
353
+ (1 - maxPoint / 2) * rewardsState.inflationMaxRate +
354
+ (maxPoint / 2) * rewardsState.currentValueInflation;
355
+ return averageInflation;
356
+ }
357
+
358
+ if (unrestrictedEndOfYearInflation < rewardsState.inflationMinRate) {
359
+ const diffToMin =
360
+ rewardsState.currentValueInflation - rewardsState.inflationMinRate;
361
+ const minPoint = diffToMin / inflationSlope;
362
+ const averageInflation =
363
+ (1 - minPoint / 2) * rewardsState.inflationMinRate +
364
+ (minPoint / 2) * rewardsState.currentValueInflation;
365
+ return averageInflation;
366
+ }
367
+
368
+ throw new Error("Unreachable code");
369
+ };
370
+
371
+ validatorVotingPower = (
372
+ validatorTokens: string,
373
+ rewardsState: CosmosRewardsState
374
+ ): number => {
375
+ return (
376
+ parseFloat(validatorTokens) /
377
+ (rewardsState.actualBondedRatio * rewardsState.totalSupply * 1000000) // TODO validate that this is correct for Osmosis. Just because we get a valid number doesn't mean it's correct
378
+ );
379
+ };
380
+
381
+ _osmoValidatorEstimatedRate = (_: number, __: CosmosRewardsState): number => {
382
+ return 0.15; // todo fix this obviously
383
+ };
384
+
385
+ validatorEstimatedRate = (
386
+ validatorCommission: number,
387
+ rewardsState: CosmosRewardsState
388
+ ): number => {
389
+ if (this._namespace === "osmosis") {
390
+ return this._osmoValidatorEstimatedRate(
391
+ validatorCommission,
392
+ rewardsState
393
+ );
394
+ }
395
+
396
+ // This correction changes how inflation is computed vs. the value the network advertises
397
+ const inexactBlockTimeCorrection =
398
+ rewardsState.assumedTimePerBlock / rewardsState.averageTimePerBlock;
399
+ // This correction assumes a constant bonded_ratio, this changes the yearly inflation
400
+ const yearlyInflation = this.computeAvgYearlyInflation(rewardsState);
401
+ // This correction adds the fees to the rate computation
402
+ const yearlyFeeRate =
403
+ (rewardsState.averageDailyFees * 365.24) / rewardsState.totalSupply;
404
+ return (
405
+ inexactBlockTimeCorrection *
406
+ (yearlyInflation + yearlyFeeRate) *
407
+ (1 / rewardsState.actualBondedRatio) *
408
+ (1 - rewardsState.communityPoolCommission) *
409
+ (1 - validatorCommission)
410
+ );
411
+ };
412
+
413
+ hydrateValidators = (validators: CosmosValidatorItem[]): void => {
414
+ log(
415
+ `${this._namespace}/validators`,
416
+ "hydrate " + validators.length + " validators"
417
+ );
418
+ this.cacheValidators.hydrate("", validators);
419
+ };
420
+ }