@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
@@ -0,0 +1,70 @@
1
+ import BigNumber from "bignumber.js";
2
+ import { getOperationValue, convertTransactionToOperation } from "./sdk";
3
+ import type {
4
+ OsmosisSendEventContent,
5
+ OsmosisAmount,
6
+ OsmosisAccountTransaction,
7
+ OsmosisEvent,
8
+ } from "./sdk.types";
9
+ import { OsmosisTransactionTypeEnum } from "./sdk.types";
10
+ jest.mock("../../../network");
11
+
12
+ const mockOsmosisAmount: OsmosisAmount = {
13
+ text: "",
14
+ currency: "",
15
+ numeric: "300",
16
+ };
17
+ const mockOsmosisSendEventContent: OsmosisSendEventContent = {
18
+ type: ["", ""],
19
+ module: "",
20
+ sender: [{ account: {}, amounts: [mockOsmosisAmount] }],
21
+ recipient: [{ account: {}, amounts: [mockOsmosisAmount] }],
22
+ transfers: [],
23
+ };
24
+
25
+ const mockOsmosisEvent: OsmosisEvent = {
26
+ id: "",
27
+ kind: OsmosisTransactionTypeEnum,
28
+ sub: [mockOsmosisSendEventContent],
29
+ };
30
+
31
+ const mockOsmosisAccountTransaction: OsmosisAccountTransaction = {
32
+ id: "",
33
+ hash: "",
34
+ block_hash: "",
35
+ height: 0,
36
+ chain_id: "",
37
+ time: new Date(),
38
+ transaction_fee: [mockOsmosisAmount],
39
+ gas_wanted: 0,
40
+ gas_used: 0,
41
+ version: "",
42
+ events: [mockOsmosisEvent],
43
+ has_errors: false,
44
+ memo: "",
45
+ };
46
+
47
+ test("getOperationValue", () => {
48
+ expect(
49
+ getOperationValue(
50
+ mockOsmosisSendEventContent,
51
+ "UNKNOWN",
52
+ new BigNumber(100)
53
+ ).toString()
54
+ ).toBe("0");
55
+ });
56
+
57
+ test("convertTransactionToOperation", () => {
58
+ const result = convertTransactionToOperation(
59
+ "test",
60
+ "OUT",
61
+ new BigNumber(123),
62
+ mockOsmosisAccountTransaction,
63
+ ["test_sender"],
64
+ ["test_recipient"],
65
+ {}
66
+ );
67
+
68
+ expect(result.senders.length).toBe(1);
69
+ expect(result.recipients.length).toBe(1);
70
+ });
@@ -0,0 +1,64 @@
1
+ import type { AccountBridge, CurrencyBridge } from "@ledgerhq/types-live";
2
+ import type { Transaction } from "../types";
3
+ import { makeAccountBridgeReceive } from "../../../bridge/jsHelpers";
4
+ import { sync, scanAccounts } from "../js-synchronization";
5
+ import {
6
+ createTransaction,
7
+ updateTransaction,
8
+ prepareTransaction,
9
+ } from "../js-transaction";
10
+ import getTransactionStatus from "../js-getTransactionStatus";
11
+ import signOperation from "../js-signOperation";
12
+ import { osmosisAPI } from "../api/sdk";
13
+ import osmosisValidatorsManager from "../validators";
14
+ import estimateMaxSpendable from "../js-estimateMaxSpendable";
15
+ import { CosmosValidatorItem } from "../../cosmos/types";
16
+ import {
17
+ asSafeOsmosisPreloadData,
18
+ setOsmosisPreloadData,
19
+ } from "../../osmosis/preloadedData";
20
+
21
+ const receive = makeAccountBridgeReceive();
22
+ const getPreloadStrategy = (_currency) => ({
23
+ preloadMaxAge: 30 * 1000,
24
+ });
25
+
26
+ const currencyBridge: CurrencyBridge = {
27
+ getPreloadStrategy,
28
+ preload: async () => {
29
+ const validators = await osmosisValidatorsManager.getValidators();
30
+ setOsmosisPreloadData({
31
+ validators,
32
+ });
33
+ return Promise.resolve({
34
+ validators,
35
+ });
36
+ },
37
+ hydrate: (data: { validators?: CosmosValidatorItem[] }) => {
38
+ if (!data || typeof data !== "object") return;
39
+ const { validators } = data;
40
+ if (
41
+ !validators ||
42
+ typeof validators !== "object" ||
43
+ !Array.isArray(validators)
44
+ )
45
+ return;
46
+ osmosisValidatorsManager.hydrateValidators(validators);
47
+ setOsmosisPreloadData(asSafeOsmosisPreloadData(data));
48
+ },
49
+ scanAccounts,
50
+ };
51
+
52
+ const accountBridge: AccountBridge<Transaction> = {
53
+ estimateMaxSpendable,
54
+ createTransaction,
55
+ updateTransaction,
56
+ getTransactionStatus,
57
+ prepareTransaction,
58
+ sync,
59
+ receive,
60
+ signOperation,
61
+ broadcast: osmosisAPI?.broadcast,
62
+ };
63
+
64
+ export default { currencyBridge, accountBridge };
@@ -0,0 +1,467 @@
1
+ import "../../__tests__/test-helpers/setup";
2
+ import { testBridge } from "../../__tests__/test-helpers/bridge";
3
+ import { BigNumber } from "bignumber.js";
4
+ import type {
5
+ AccountRaw,
6
+ CurrenciesData,
7
+ DatasetTest,
8
+ } from "@ledgerhq/types-live";
9
+ import {
10
+ InvalidAddress,
11
+ InvalidAddressBecauseDestinationIsAlsoSource,
12
+ NotEnoughBalance,
13
+ AmountRequired,
14
+ } from "@ledgerhq/errors";
15
+ import { ClaimRewardsFeesWarning } from "../../errors";
16
+ import invariant from "invariant";
17
+ import type { Transaction } from "./types";
18
+ import transactionTransformer from "./transaction";
19
+ import { CosmosAccount } from "../cosmos/types";
20
+
21
+ const osmosis: CurrenciesData<Transaction> = {
22
+ FIXME_ignoreAccountFields: [
23
+ "cosmosResources.unbondingBalance", // They move once all unbonding are done
24
+ "cosmosResources.pendingRewardsBalance", // They are always movings
25
+ "cosmosResources.delegations", // They are always movings because of pending Rewards
26
+ "cosmosResources.redelegations", // will change ince a redelegation it's done
27
+ "cosmosResources.unbondings", // will change once a unbonding it's done
28
+ "spendableBalance", // will change with the rewards that automatically up
29
+ ],
30
+ scanAccounts: [
31
+ {
32
+ name: "osmo seed 1",
33
+ apdus: `
34
+ => 5504000019046f736d6f2c00008076000080000000800000000000000000
35
+ <= 02dc75cfe8137450ae2259dc7f29fd8767951956cc943adb4387e91c37a058a9f06f736d6f3137676d6378796335636364356b77717161747067666467683338307732686337377a6d307a779000
36
+ => 5504000019046f736d6f2c00008076000080000000800000000000000000
37
+ <= 02dc75cfe8137450ae2259dc7f29fd8767951956cc943adb4387e91c37a058a9f06f736d6f3137676d6378796335636364356b77717161747067666467683338307732686337377a6d307a779000
38
+ => 5504000019046f736d6f2c00008076000080010000800000000000000000
39
+ <= 0246b68a4f546af213bca96b0a0d0319b1ffa3c194cd89b16e48c349492e3b36e66f736d6f3139683863656e6e726b663039736a78717433366c6d6b3933667a7972637772667877373834799000
40
+ `,
41
+ },
42
+ ],
43
+ accounts: [
44
+ {
45
+ FIXME_tests: ["balance is sum of ops"],
46
+ raw: {
47
+ id: "js:2:osmo:osmo10h50supk4en682vrjkc6wkgkpcyxyqn4vxjy2c:",
48
+ seedIdentifier:
49
+ "0283de657d9e283a5c31d64a4c4afbcc48ee79fdd7648bcdde6a1d0d7ae9f9bea1",
50
+ xpub: "osmo10h50supk4en682vrjkc6wkgkpcyxyqn4vxjy2c",
51
+ derivationMode: "",
52
+ index: 0,
53
+ freshAddress: "osmo10h50supk4en682vrjkc6wkgkpcyxyqn4vxjy2c",
54
+ freshAddressPath: "44'/118'/0'/0/0",
55
+ freshAddresses: [
56
+ {
57
+ address: "osmo10h50supk4en682vrjkc6wkgkpcyxyqn4vxjy2c",
58
+ derivationPath: "44'/118'/0'/0/0",
59
+ },
60
+ ],
61
+ name: "Osmosis 1 - Nano X",
62
+ balance: "500250",
63
+ spendableBalance: "500250",
64
+ blockHeight: 5417468,
65
+ currencyId: "osmo",
66
+ unitMagnitude: 6,
67
+ operationsCount: 2,
68
+ operations: [],
69
+ pendingOperations: [],
70
+ lastSyncDate: "",
71
+ },
72
+ transactions: [
73
+ {
74
+ name: "Same as Recipient",
75
+ transaction: (t) => ({
76
+ ...t,
77
+ amount: new BigNumber(100),
78
+ recipient: "osmo10h50supk4en682vrjkc6wkgkpcyxyqn4vxjy2c",
79
+ }),
80
+ expectedStatus: {
81
+ errors: {
82
+ recipient: new InvalidAddressBecauseDestinationIsAlsoSource(),
83
+ },
84
+ warnings: {},
85
+ },
86
+ },
87
+ {
88
+ name: "Invalid Address",
89
+ transaction: (t) => ({
90
+ ...t,
91
+ amount: new BigNumber(100),
92
+ recipient: "dsadasdasdasdas",
93
+ }),
94
+ expectedStatus: {
95
+ errors: {
96
+ recipient: new InvalidAddress(),
97
+ },
98
+ warnings: {},
99
+ },
100
+ },
101
+ {
102
+ name: "send max",
103
+ transaction: transactionTransformer.fromTransactionRaw({
104
+ amount: "0",
105
+ recipient: "osmo10c792arqxymu8fghu3dfwsacxdvqd8glh8j30p",
106
+ useAllAmount: true,
107
+ family: "osmosis",
108
+ networkInfo: null,
109
+ validators: [],
110
+ sourceValidator: null,
111
+ fees: null,
112
+ gas: null,
113
+ memo: null,
114
+ mode: "send",
115
+ }) as Transaction,
116
+ expectedStatus: (account) => {
117
+ const { cosmosResources } = account as CosmosAccount;
118
+ if (!cosmosResources)
119
+ throw new Error("Should exist because it's osmosis");
120
+ const totalSpent = account.balance.minus(
121
+ cosmosResources.unbondingBalance.plus(
122
+ cosmosResources.delegatedBalance
123
+ )
124
+ );
125
+ return {
126
+ errors: {},
127
+ warnings: {},
128
+ totalSpent,
129
+ };
130
+ },
131
+ },
132
+ {
133
+ name: "send with memo",
134
+ transaction: transactionTransformer.fromTransactionRaw({
135
+ amount: "0",
136
+ recipient: "osmo10c792arqxymu8fghu3dfwsacxdvqd8glh8j30p",
137
+ useAllAmount: true,
138
+ family: "osmosis",
139
+ networkInfo: null,
140
+ validators: [],
141
+ sourceValidator: null,
142
+ fees: null,
143
+ gas: null,
144
+ memo: "test",
145
+ mode: "send",
146
+ }) as Transaction,
147
+ expectedStatus: (account, t) => {
148
+ const { cosmosResources } = account as CosmosAccount;
149
+ if (!cosmosResources)
150
+ throw new Error("Should exist because it's osmosis");
151
+ invariant(t.memo === "test", "Should have a memo");
152
+ const totalSpent = account.balance.minus(
153
+ cosmosResources.unbondingBalance.plus(
154
+ cosmosResources.delegatedBalance
155
+ )
156
+ );
157
+ return {
158
+ errors: {},
159
+ warnings: {},
160
+ totalSpent,
161
+ };
162
+ },
163
+ },
164
+ {
165
+ name: "Not Enough balance",
166
+ transaction: (t) => ({
167
+ ...t,
168
+ amount: new BigNumber("99999999999999999"),
169
+ recipient: "osmo10c792arqxymu8fghu3dfwsacxdvqd8glh8j30p",
170
+ }),
171
+ expectedStatus: {
172
+ errors: {
173
+ amount: new NotEnoughBalance(),
174
+ },
175
+ warnings: {},
176
+ },
177
+ },
178
+ {
179
+ name: "Redelegation - success",
180
+ transaction: (t) => ({
181
+ ...t,
182
+ amount: new BigNumber(100),
183
+ validators: [
184
+ {
185
+ address: "osmovaloper1hjct6q7npsspsg3dgvzk3sdf89spmlpf6t4agt",
186
+ amount: new BigNumber(100),
187
+ },
188
+ ],
189
+ sourceValidator:
190
+ "osmovaloper1hjct6q7npsspsg3dgvzk3sdf89spmlpf6t4agt",
191
+ mode: "redelegate",
192
+ }),
193
+ expectedStatus: (a, t) => {
194
+ invariant(t.memo === "Ledger Live", "Should have a memo");
195
+ return {
196
+ errors: {},
197
+ warnings: {},
198
+ };
199
+ },
200
+ },
201
+ {
202
+ name: "redelegation - AmountRequired",
203
+ transaction: (t) => ({
204
+ ...t,
205
+ mode: "redelegate",
206
+ validators: [
207
+ {
208
+ address: "osmovaloper1hjct6q7npsspsg3dgvzk3sdf89spmlpf6t4agt",
209
+ amount: new BigNumber(0),
210
+ },
211
+ ],
212
+ sourceValidator:
213
+ "osmovaloper1hjct6q7npsspsg3dgvzk3sdf89spmlpf6t4agt",
214
+ }),
215
+ expectedStatus: {
216
+ errors: {
217
+ amount: new AmountRequired(),
218
+ },
219
+ warnings: {},
220
+ },
221
+ },
222
+ {
223
+ name: "redelegation - Source is Destination",
224
+ transaction: (t) => ({
225
+ ...t,
226
+ mode: "redelegate",
227
+ validators: [
228
+ {
229
+ address: "osmovaloper1hjct6q7npsspsg3dgvzk3sdf89spmlpf6t4agt",
230
+ amount: new BigNumber(100),
231
+ },
232
+ ],
233
+ sourceValidator:
234
+ "osmovaloper1hjct6q7npsspsg3dgvzk3sdf89spmlpf6t4agt",
235
+ }),
236
+ expectedStatus: {
237
+ errors: {
238
+ redelegation: new InvalidAddressBecauseDestinationIsAlsoSource(),
239
+ },
240
+ warnings: {},
241
+ },
242
+ },
243
+ {
244
+ name: "Unbonding - success",
245
+ transaction: (t) => ({
246
+ ...t,
247
+ mode: "undelegate",
248
+ validators: [
249
+ {
250
+ address: "osmovaloper1hjct6q7npsspsg3dgvzk3sdf89spmlpf6t4agt",
251
+ amount: new BigNumber(100),
252
+ },
253
+ ],
254
+ }),
255
+ expectedStatus: (a, t) => {
256
+ invariant(t.memo === "Ledger Live", "Should have a memo");
257
+ return {
258
+ errors: {},
259
+ warnings: {},
260
+ };
261
+ },
262
+ },
263
+ {
264
+ name: "Unbonding - AmountRequired",
265
+ transaction: (t) => ({
266
+ ...t,
267
+ mode: "undelegate",
268
+ validators: [
269
+ {
270
+ address: "osmovaloper1hjct6q7npsspsg3dgvzk3sdf89spmlpf6t4agt",
271
+ amount: new BigNumber(0),
272
+ },
273
+ ],
274
+ }),
275
+ expectedStatus: {
276
+ errors: {
277
+ amount: new AmountRequired(),
278
+ },
279
+ warnings: {},
280
+ },
281
+ },
282
+ {
283
+ name: "Delegate - success",
284
+ transaction: (t) => ({
285
+ ...t,
286
+ mode: "delegate",
287
+ validators: [
288
+ {
289
+ address: "osmovaloper1hjct6q7npsspsg3dgvzk3sdf89spmlpf6t4agt",
290
+ amount: new BigNumber(105),
291
+ },
292
+ ],
293
+ }),
294
+ expectedStatus: (a, t) => {
295
+ invariant(t.memo === "Ledger Live", "Should have a memo");
296
+ return {
297
+ errors: {},
298
+ warnings: {},
299
+ };
300
+ },
301
+ },
302
+ {
303
+ name: "Delegate - not a valid",
304
+ transaction: (t) => ({
305
+ ...t,
306
+ mode: "delegate",
307
+ validators: [
308
+ {
309
+ address: "osmo10c792arqxymu8fghu3dfwsacxdvqd8glh8j30p",
310
+ amount: new BigNumber(100),
311
+ },
312
+ ],
313
+ }),
314
+ expectedStatus: {
315
+ errors: {
316
+ recipient: new InvalidAddress(),
317
+ },
318
+ warnings: {},
319
+ },
320
+ },
321
+ {
322
+ name: "ClaimReward - success",
323
+ transaction: (t) => ({
324
+ ...t,
325
+ validators: [
326
+ {
327
+ address: "osmovaloper1hjct6q7npsspsg3dgvzk3sdf89spmlpf6t4agt",
328
+ amount: new BigNumber(0),
329
+ },
330
+ ],
331
+ mode: "claimReward",
332
+ }),
333
+ expectedStatus: (a, t) => {
334
+ invariant(t.memo === "Ledger Live", "Should have a memo");
335
+ return {
336
+ errors: {},
337
+ warnings: {},
338
+ };
339
+ },
340
+ },
341
+ {
342
+ name: "ClaimReward - Warning",
343
+ transaction: (t) => ({
344
+ ...t,
345
+ validators: [
346
+ {
347
+ address: "osmovaloper1hjct6q7npsspsg3dgvzk3sdf89spmlpf6t4agt",
348
+ amount: new BigNumber(0),
349
+ },
350
+ ],
351
+ fees: new BigNumber(9999999999999999),
352
+ mode: "claimReward",
353
+ }),
354
+ expectedStatus: {
355
+ errors: {},
356
+ warnings: {
357
+ claimReward: new ClaimRewardsFeesWarning(),
358
+ },
359
+ },
360
+ },
361
+ {
362
+ name: "ClaimReward - not a osmovaloper",
363
+ transaction: (t) => ({
364
+ ...t,
365
+ validators: [
366
+ {
367
+ address: "osmo10c792arqxymu8fghu3dfwsacxdvqd8glh8j30p",
368
+ amount: new BigNumber(0),
369
+ },
370
+ ],
371
+ mode: "claimReward",
372
+ }),
373
+ expectedStatus: {
374
+ errors: {
375
+ recipient: new InvalidAddress(),
376
+ },
377
+ warnings: {},
378
+ },
379
+ },
380
+ {
381
+ name: "claimRewardCompound - success",
382
+ transaction: (t) => ({
383
+ ...t,
384
+ validators: [
385
+ {
386
+ address: "osmovaloper1hjct6q7npsspsg3dgvzk3sdf89spmlpf6t4agt",
387
+ amount: new BigNumber(100),
388
+ },
389
+ ],
390
+ mode: "claimRewardCompound",
391
+ }),
392
+ expectedStatus: (a, t) => {
393
+ invariant(t.memo === "Ledger Live", "Should have a memo");
394
+ return {
395
+ errors: {},
396
+ warnings: {},
397
+ };
398
+ },
399
+ },
400
+ {
401
+ name: "ClaimRewardCompound - Warning",
402
+ transaction: (t) => ({
403
+ ...t,
404
+ validators: [
405
+ {
406
+ address: "osmovaloper1hjct6q7npsspsg3dgvzk3sdf89spmlpf6t4agt",
407
+ amount: new BigNumber(100),
408
+ },
409
+ ],
410
+ fees: new BigNumber(99999999999999999999),
411
+ mode: "claimRewardCompound",
412
+ }),
413
+ expectedStatus: {
414
+ errors: {},
415
+ warnings: {
416
+ claimReward: new ClaimRewardsFeesWarning(),
417
+ },
418
+ },
419
+ },
420
+ ],
421
+ },
422
+ {
423
+ FIXME_tests: ["balance is sum of ops"],
424
+ raw: {
425
+ id: "js:2:osmo:osmo1xx72kqjlf2qqj88h0wakwv6rp0v8fwh74z9q89:",
426
+ seedIdentifier:
427
+ "0283de657d9e283a5c31d64a4c4afbcc48ee79fdd7648bcdde6a1d0d7ae9f9bea1",
428
+ name: "Osmosis 2 - Nano X Static Account",
429
+ starred: true,
430
+ derivationMode: "",
431
+ index: 1,
432
+ freshAddress: "osmo1xx72kqjlf2qqj88h0wakwv6rp0v8fwh74z9q89",
433
+ freshAddressPath: "44'/118'/1'/0/0",
434
+ freshAddresses: [],
435
+ blockHeight: 5417472,
436
+ creationDate: "2022-08-02T16:09:08.906Z",
437
+ operationsCount: 1,
438
+ operations: [],
439
+ pendingOperations: [],
440
+ currencyId: "osmo",
441
+ unitMagnitude: 6,
442
+ lastSyncDate: "2022-08-02T16:11:47.343Z",
443
+ balance: "200250",
444
+ spendableBalance: "200250",
445
+ xpub: "osmo1xx72kqjlf2qqj88h0wakwv6rp0v8fwh74z9q89",
446
+ cosmosResources: {
447
+ delegations: [],
448
+ redelegations: [],
449
+ unbondings: [],
450
+ delegatedBalance: "0",
451
+ pendingRewardsBalance: "0",
452
+ unbondingBalance: "0",
453
+ withdrawAddress: "",
454
+ },
455
+ } as AccountRaw,
456
+ },
457
+ ],
458
+ };
459
+
460
+ const dataset: DatasetTest<Transaction> = {
461
+ implementations: ["js"],
462
+ currencies: {
463
+ osmosis,
464
+ },
465
+ };
466
+
467
+ testBridge(dataset);