@ledgerhq/coin-casper 1.7.3 → 2.0.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 (278) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.unimportedrc.json +11 -35
  3. package/CHANGELOG.md +14 -0
  4. package/jest.config.js +2 -5
  5. package/lib/api/index.d.ts +8 -6
  6. package/lib/api/index.d.ts.map +1 -1
  7. package/lib/api/index.integ.test.js +12 -3
  8. package/lib/api/index.integ.test.js.map +1 -1
  9. package/lib/api/index.js +53 -91
  10. package/lib/api/index.js.map +1 -1
  11. package/lib/api/index.test.d.ts +2 -0
  12. package/lib/api/index.test.d.ts.map +1 -0
  13. package/lib/api/index.test.js +274 -0
  14. package/lib/api/index.test.js.map +1 -0
  15. package/lib/api/types.d.ts +2 -67
  16. package/lib/api/types.d.ts.map +1 -1
  17. package/lib/bridge/bridgeHelpers/accountShape.d.ts.map +1 -1
  18. package/lib/bridge/bridgeHelpers/accountShape.js +5 -7
  19. package/lib/bridge/bridgeHelpers/accountShape.js.map +1 -1
  20. package/lib/bridge/bridgeHelpers/accountShape.test.d.ts +2 -0
  21. package/lib/bridge/bridgeHelpers/accountShape.test.d.ts.map +1 -0
  22. package/lib/bridge/bridgeHelpers/accountShape.test.js +94 -0
  23. package/lib/bridge/bridgeHelpers/accountShape.test.js.map +1 -0
  24. package/lib/bridge/bridgeHelpers/addresses.d.ts +3 -9
  25. package/lib/bridge/bridgeHelpers/addresses.d.ts.map +1 -1
  26. package/lib/bridge/bridgeHelpers/addresses.js +5 -62
  27. package/lib/bridge/bridgeHelpers/addresses.js.map +1 -1
  28. package/lib/bridge/bridgeHelpers/txn.d.ts +2 -2
  29. package/lib/bridge/bridgeHelpers/txn.d.ts.map +1 -1
  30. package/lib/bridge/bridgeHelpers/txn.js +9 -11
  31. package/lib/bridge/bridgeHelpers/txn.js.map +1 -1
  32. package/lib/bridge/bridgeHelpers/txn.test.d.ts +2 -0
  33. package/lib/bridge/bridgeHelpers/txn.test.d.ts.map +1 -0
  34. package/lib/bridge/bridgeHelpers/txn.test.js +306 -0
  35. package/lib/bridge/bridgeHelpers/txn.test.js.map +1 -0
  36. package/lib/bridge/broadcast.d.ts.map +1 -1
  37. package/lib/bridge/broadcast.js +7 -6
  38. package/lib/bridge/broadcast.js.map +1 -1
  39. package/lib/bridge/broadcast.test.d.ts +2 -0
  40. package/lib/bridge/broadcast.test.d.ts.map +1 -0
  41. package/lib/bridge/broadcast.test.js +72 -0
  42. package/lib/bridge/broadcast.test.js.map +1 -0
  43. package/lib/bridge/buildOptimisticOperation.d.ts.map +1 -1
  44. package/lib/bridge/buildOptimisticOperation.js +2 -0
  45. package/lib/bridge/buildOptimisticOperation.js.map +1 -1
  46. package/lib/bridge/buildOptimisticOperation.test.d.ts +2 -0
  47. package/lib/bridge/buildOptimisticOperation.test.d.ts.map +1 -0
  48. package/lib/bridge/buildOptimisticOperation.test.js +76 -0
  49. package/lib/bridge/buildOptimisticOperation.test.js.map +1 -0
  50. package/lib/bridge/createTransaction.test.d.ts +2 -0
  51. package/lib/bridge/createTransaction.test.d.ts.map +1 -0
  52. package/lib/bridge/createTransaction.test.js +41 -0
  53. package/lib/bridge/createTransaction.test.js.map +1 -0
  54. package/lib/bridge/deviceTransactionConfig.d.ts.map +1 -1
  55. package/lib/bridge/deviceTransactionConfig.js +13 -0
  56. package/lib/bridge/deviceTransactionConfig.js.map +1 -1
  57. package/lib/bridge/deviceTransactionConfig.test.d.ts +2 -0
  58. package/lib/bridge/deviceTransactionConfig.test.d.ts.map +1 -0
  59. package/lib/bridge/deviceTransactionConfig.test.js +148 -0
  60. package/lib/bridge/deviceTransactionConfig.test.js.map +1 -0
  61. package/lib/bridge/estimateMaxSpendable.test.d.ts +2 -0
  62. package/lib/bridge/estimateMaxSpendable.test.d.ts.map +1 -0
  63. package/lib/bridge/estimateMaxSpendable.test.js +133 -0
  64. package/lib/bridge/estimateMaxSpendable.test.js.map +1 -0
  65. package/lib/bridge/getTransactionStatus.test.d.ts +2 -0
  66. package/lib/bridge/getTransactionStatus.test.d.ts.map +1 -0
  67. package/lib/bridge/getTransactionStatus.test.js +214 -0
  68. package/lib/bridge/getTransactionStatus.test.js.map +1 -0
  69. package/lib/bridge/index.d.ts +2 -1
  70. package/lib/bridge/index.d.ts.map +1 -1
  71. package/lib/bridge/index.js +3 -1
  72. package/lib/bridge/index.js.map +1 -1
  73. package/lib/bridge/prepareTransaction.js +1 -1
  74. package/lib/bridge/prepareTransaction.js.map +1 -1
  75. package/lib/bridge/prepareTransaction.test.d.ts +2 -0
  76. package/lib/bridge/prepareTransaction.test.d.ts.map +1 -0
  77. package/lib/bridge/prepareTransaction.test.js +159 -0
  78. package/lib/bridge/prepareTransaction.test.js.map +1 -0
  79. package/lib/bridge/signOperation.d.ts.map +1 -1
  80. package/lib/bridge/signOperation.js +14 -12
  81. package/lib/bridge/signOperation.js.map +1 -1
  82. package/lib/bridge/transaction.test.d.ts +2 -0
  83. package/lib/bridge/transaction.test.d.ts.map +1 -0
  84. package/lib/bridge/transaction.test.js +179 -0
  85. package/lib/bridge/transaction.test.js.map +1 -0
  86. package/lib/common-logic/utils.additional.test.d.ts +2 -0
  87. package/lib/common-logic/utils.additional.test.d.ts.map +1 -0
  88. package/lib/common-logic/utils.additional.test.js +58 -0
  89. package/lib/common-logic/utils.additional.test.js.map +1 -0
  90. package/lib/common-logic/utils.unit.test.js +6 -4
  91. package/lib/common-logic/utils.unit.test.js.map +1 -1
  92. package/lib/config.d.ts +10 -0
  93. package/lib/config.d.ts.map +1 -0
  94. package/lib/config.js +16 -0
  95. package/lib/config.js.map +1 -0
  96. package/lib/consts.d.ts +3 -0
  97. package/lib/consts.d.ts.map +1 -1
  98. package/lib/consts.js +5 -1
  99. package/lib/consts.js.map +1 -1
  100. package/lib/hw-signMessage.test.d.ts +2 -0
  101. package/lib/hw-signMessage.test.d.ts.map +1 -0
  102. package/lib/hw-signMessage.test.js +80 -0
  103. package/lib/hw-signMessage.test.js.map +1 -0
  104. package/lib/signer/getAddress.js +1 -1
  105. package/lib/signer/getAddress.js.map +1 -1
  106. package/lib/signer/getAddress.test.d.ts +2 -0
  107. package/lib/signer/getAddress.test.d.ts.map +1 -0
  108. package/lib/signer/getAddress.test.js +133 -0
  109. package/lib/signer/getAddress.test.js.map +1 -0
  110. package/lib/test/bot-specs.d.ts.map +1 -1
  111. package/lib/test/bot-specs.js +1 -0
  112. package/lib/test/bot-specs.js.map +1 -1
  113. package/lib/test/fixtures.d.ts +131 -0
  114. package/lib/test/fixtures.d.ts.map +1 -0
  115. package/lib/test/fixtures.js +395 -0
  116. package/lib/test/fixtures.js.map +1 -0
  117. package/lib/test/index.d.ts +2 -0
  118. package/lib/test/index.d.ts.map +1 -1
  119. package/lib/test/index.js +2 -0
  120. package/lib/test/index.js.map +1 -1
  121. package/lib/test/speculos-deviceActions.d.ts.map +1 -1
  122. package/lib/test/speculos-deviceActions.js +4 -3
  123. package/lib/test/speculos-deviceActions.js.map +1 -1
  124. package/lib-es/api/index.d.ts +8 -6
  125. package/lib-es/api/index.d.ts.map +1 -1
  126. package/lib-es/api/index.integ.test.js +13 -4
  127. package/lib-es/api/index.integ.test.js.map +1 -1
  128. package/lib-es/api/index.js +51 -90
  129. package/lib-es/api/index.js.map +1 -1
  130. package/lib-es/api/index.test.d.ts +2 -0
  131. package/lib-es/api/index.test.d.ts.map +1 -0
  132. package/lib-es/api/index.test.js +269 -0
  133. package/lib-es/api/index.test.js.map +1 -0
  134. package/lib-es/api/types.d.ts +2 -67
  135. package/lib-es/api/types.d.ts.map +1 -1
  136. package/lib-es/bridge/bridgeHelpers/accountShape.d.ts.map +1 -1
  137. package/lib-es/bridge/bridgeHelpers/accountShape.js +6 -8
  138. package/lib-es/bridge/bridgeHelpers/accountShape.js.map +1 -1
  139. package/lib-es/bridge/bridgeHelpers/accountShape.test.d.ts +2 -0
  140. package/lib-es/bridge/bridgeHelpers/accountShape.test.d.ts.map +1 -0
  141. package/lib-es/bridge/bridgeHelpers/accountShape.test.js +89 -0
  142. package/lib-es/bridge/bridgeHelpers/accountShape.test.js.map +1 -0
  143. package/lib-es/bridge/bridgeHelpers/addresses.d.ts +3 -9
  144. package/lib-es/bridge/bridgeHelpers/addresses.d.ts.map +1 -1
  145. package/lib-es/bridge/bridgeHelpers/addresses.js +5 -60
  146. package/lib-es/bridge/bridgeHelpers/addresses.js.map +1 -1
  147. package/lib-es/bridge/bridgeHelpers/txn.d.ts +2 -2
  148. package/lib-es/bridge/bridgeHelpers/txn.d.ts.map +1 -1
  149. package/lib-es/bridge/bridgeHelpers/txn.js +10 -12
  150. package/lib-es/bridge/bridgeHelpers/txn.js.map +1 -1
  151. package/lib-es/bridge/bridgeHelpers/txn.test.d.ts +2 -0
  152. package/lib-es/bridge/bridgeHelpers/txn.test.d.ts.map +1 -0
  153. package/lib-es/bridge/bridgeHelpers/txn.test.js +278 -0
  154. package/lib-es/bridge/bridgeHelpers/txn.test.js.map +1 -0
  155. package/lib-es/bridge/broadcast.d.ts.map +1 -1
  156. package/lib-es/bridge/broadcast.js +8 -7
  157. package/lib-es/bridge/broadcast.js.map +1 -1
  158. package/lib-es/bridge/broadcast.test.d.ts +2 -0
  159. package/lib-es/bridge/broadcast.test.d.ts.map +1 -0
  160. package/lib-es/bridge/broadcast.test.js +70 -0
  161. package/lib-es/bridge/broadcast.test.js.map +1 -0
  162. package/lib-es/bridge/buildOptimisticOperation.d.ts.map +1 -1
  163. package/lib-es/bridge/buildOptimisticOperation.js +2 -0
  164. package/lib-es/bridge/buildOptimisticOperation.js.map +1 -1
  165. package/lib-es/bridge/buildOptimisticOperation.test.d.ts +2 -0
  166. package/lib-es/bridge/buildOptimisticOperation.test.d.ts.map +1 -0
  167. package/lib-es/bridge/buildOptimisticOperation.test.js +74 -0
  168. package/lib-es/bridge/buildOptimisticOperation.test.js.map +1 -0
  169. package/lib-es/bridge/createTransaction.test.d.ts +2 -0
  170. package/lib-es/bridge/createTransaction.test.d.ts.map +1 -0
  171. package/lib-es/bridge/createTransaction.test.js +36 -0
  172. package/lib-es/bridge/createTransaction.test.js.map +1 -0
  173. package/lib-es/bridge/deviceTransactionConfig.d.ts.map +1 -1
  174. package/lib-es/bridge/deviceTransactionConfig.js +13 -0
  175. package/lib-es/bridge/deviceTransactionConfig.js.map +1 -1
  176. package/lib-es/bridge/deviceTransactionConfig.test.d.ts +2 -0
  177. package/lib-es/bridge/deviceTransactionConfig.test.d.ts.map +1 -0
  178. package/lib-es/bridge/deviceTransactionConfig.test.js +143 -0
  179. package/lib-es/bridge/deviceTransactionConfig.test.js.map +1 -0
  180. package/lib-es/bridge/estimateMaxSpendable.test.d.ts +2 -0
  181. package/lib-es/bridge/estimateMaxSpendable.test.d.ts.map +1 -0
  182. package/lib-es/bridge/estimateMaxSpendable.test.js +131 -0
  183. package/lib-es/bridge/estimateMaxSpendable.test.js.map +1 -0
  184. package/lib-es/bridge/getTransactionStatus.test.d.ts +2 -0
  185. package/lib-es/bridge/getTransactionStatus.test.d.ts.map +1 -0
  186. package/lib-es/bridge/getTransactionStatus.test.js +212 -0
  187. package/lib-es/bridge/getTransactionStatus.test.js.map +1 -0
  188. package/lib-es/bridge/index.d.ts +2 -1
  189. package/lib-es/bridge/index.d.ts.map +1 -1
  190. package/lib-es/bridge/index.js +3 -1
  191. package/lib-es/bridge/index.js.map +1 -1
  192. package/lib-es/bridge/prepareTransaction.js +1 -1
  193. package/lib-es/bridge/prepareTransaction.js.map +1 -1
  194. package/lib-es/bridge/prepareTransaction.test.d.ts +2 -0
  195. package/lib-es/bridge/prepareTransaction.test.d.ts.map +1 -0
  196. package/lib-es/bridge/prepareTransaction.test.js +157 -0
  197. package/lib-es/bridge/prepareTransaction.test.js.map +1 -0
  198. package/lib-es/bridge/signOperation.d.ts.map +1 -1
  199. package/lib-es/bridge/signOperation.js +16 -14
  200. package/lib-es/bridge/signOperation.js.map +1 -1
  201. package/lib-es/bridge/transaction.test.d.ts +2 -0
  202. package/lib-es/bridge/transaction.test.d.ts.map +1 -0
  203. package/lib-es/bridge/transaction.test.js +154 -0
  204. package/lib-es/bridge/transaction.test.js.map +1 -0
  205. package/lib-es/common-logic/utils.additional.test.d.ts +2 -0
  206. package/lib-es/common-logic/utils.additional.test.d.ts.map +1 -0
  207. package/lib-es/common-logic/utils.additional.test.js +56 -0
  208. package/lib-es/common-logic/utils.additional.test.js.map +1 -0
  209. package/lib-es/common-logic/utils.unit.test.js +7 -5
  210. package/lib-es/common-logic/utils.unit.test.js.map +1 -1
  211. package/lib-es/config.d.ts +10 -0
  212. package/lib-es/config.d.ts.map +1 -0
  213. package/lib-es/config.js +11 -0
  214. package/lib-es/config.js.map +1 -0
  215. package/lib-es/consts.d.ts +3 -0
  216. package/lib-es/consts.d.ts.map +1 -1
  217. package/lib-es/consts.js +4 -0
  218. package/lib-es/consts.js.map +1 -1
  219. package/lib-es/hw-signMessage.test.d.ts +2 -0
  220. package/lib-es/hw-signMessage.test.d.ts.map +1 -0
  221. package/lib-es/hw-signMessage.test.js +78 -0
  222. package/lib-es/hw-signMessage.test.js.map +1 -0
  223. package/lib-es/signer/getAddress.js +2 -2
  224. package/lib-es/signer/getAddress.js.map +1 -1
  225. package/lib-es/signer/getAddress.test.d.ts +2 -0
  226. package/lib-es/signer/getAddress.test.d.ts.map +1 -0
  227. package/lib-es/signer/getAddress.test.js +105 -0
  228. package/lib-es/signer/getAddress.test.js.map +1 -0
  229. package/lib-es/test/bot-specs.d.ts.map +1 -1
  230. package/lib-es/test/bot-specs.js +1 -0
  231. package/lib-es/test/bot-specs.js.map +1 -1
  232. package/lib-es/test/fixtures.d.ts +131 -0
  233. package/lib-es/test/fixtures.d.ts.map +1 -0
  234. package/lib-es/test/fixtures.js +381 -0
  235. package/lib-es/test/fixtures.js.map +1 -0
  236. package/lib-es/test/index.d.ts +2 -0
  237. package/lib-es/test/index.d.ts.map +1 -1
  238. package/lib-es/test/index.js +2 -0
  239. package/lib-es/test/index.js.map +1 -1
  240. package/lib-es/test/speculos-deviceActions.d.ts.map +1 -1
  241. package/lib-es/test/speculos-deviceActions.js +5 -4
  242. package/lib-es/test/speculos-deviceActions.js.map +1 -1
  243. package/package.json +17 -12
  244. package/src/api/index.integ.test.ts +14 -4
  245. package/src/api/index.test.ts +386 -0
  246. package/src/api/index.ts +59 -117
  247. package/src/api/types.ts +2 -75
  248. package/src/bridge/bridgeHelpers/accountShape.test.ts +122 -0
  249. package/src/bridge/bridgeHelpers/accountShape.ts +7 -9
  250. package/src/bridge/bridgeHelpers/addresses.ts +6 -73
  251. package/src/bridge/bridgeHelpers/txn.test.ts +339 -0
  252. package/src/bridge/bridgeHelpers/txn.ts +18 -18
  253. package/src/bridge/broadcast.test.ts +89 -0
  254. package/src/bridge/broadcast.ts +9 -7
  255. package/src/bridge/buildOptimisticOperation.test.ts +89 -0
  256. package/src/bridge/buildOptimisticOperation.ts +2 -0
  257. package/src/bridge/createTransaction.test.ts +43 -0
  258. package/src/bridge/deviceTransactionConfig.test.ts +171 -0
  259. package/src/bridge/deviceTransactionConfig.ts +14 -0
  260. package/src/bridge/estimateMaxSpendable.test.ts +155 -0
  261. package/src/bridge/getTransactionStatus.test.ts +264 -0
  262. package/src/bridge/index.ts +8 -1
  263. package/src/bridge/prepareTransaction.test.ts +174 -0
  264. package/src/bridge/prepareTransaction.ts +1 -1
  265. package/src/bridge/signOperation.ts +16 -25
  266. package/src/bridge/transaction.test.ts +182 -0
  267. package/src/common-logic/utils.additional.test.ts +75 -0
  268. package/src/common-logic/utils.unit.test.ts +9 -7
  269. package/src/config.ts +22 -0
  270. package/src/consts.ts +5 -0
  271. package/src/hw-signMessage.test.ts +123 -0
  272. package/src/signer/getAddress.test.ts +134 -0
  273. package/src/signer/getAddress.ts +2 -2
  274. package/src/test/bot-specs.ts +1 -0
  275. package/src/test/fixtures.ts +448 -0
  276. package/src/test/index.ts +2 -0
  277. package/src/test/speculos-deviceActions.ts +6 -4
  278. package/tsconfig.json +1 -4
@@ -0,0 +1,274 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const logs_1 = require("@ledgerhq/logs");
7
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
8
+ const live_network_1 = __importDefault(require("@ledgerhq/live-network"));
9
+ const casper_js_sdk_1 = require("casper-js-sdk");
10
+ const _1 = require(".");
11
+ const config_1 = require("../config");
12
+ const fixtures_1 = require("../test/fixtures");
13
+ const consts_1 = require("../consts");
14
+ // Constants
15
+ const MOCK_NODE_URL = "https://mock.casper.node";
16
+ const MOCK_INDEXER_URL = "https://mock.casper.indexer";
17
+ const MOCK_PUBLIC_KEY = fixtures_1.TEST_ADDRESSES.SECP256K1;
18
+ const MOCK_PURSE_UREF = "uref-1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef-007";
19
+ const MOCK_ACCOUNT_HASH = "account-hash-1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef";
20
+ const DEFAULT_LIMIT = 100;
21
+ // Mock dependencies
22
+ jest.mock("@ledgerhq/logs", () => ({
23
+ log: jest.fn(),
24
+ }));
25
+ jest.mock("@ledgerhq/live-network", () => ({
26
+ __esModule: true,
27
+ default: jest.fn(),
28
+ }));
29
+ jest.mock("../config", () => ({
30
+ getCoinConfig: jest.fn(),
31
+ }));
32
+ // Helper functions for creating mocks
33
+ const createMockRpcClient = (methodOverrides) => {
34
+ const defaultMethods = {
35
+ getAccountInfo: jest.fn(),
36
+ getStateRootHashLatest: jest.fn(),
37
+ getBalanceByStateRootHash: jest.fn(),
38
+ getLatestBlock: jest.fn(),
39
+ putTransaction: jest.fn(),
40
+ };
41
+ // Create a combined mock with defaultMethods overridden by methodOverrides
42
+ const combinedMock = { ...defaultMethods, ...methodOverrides };
43
+ // Mock the RpcClient implementation to return our mock methods
44
+ jest.mocked(casper_js_sdk_1.RpcClient).mockImplementation(() => combinedMock);
45
+ return combinedMock;
46
+ };
47
+ const createNetworkMock = (responseData, pageCount = 1, itemCount = responseData.length) => ({
48
+ data: {
49
+ data: responseData,
50
+ pageCount,
51
+ itemCount,
52
+ pages: [],
53
+ },
54
+ status: 200,
55
+ });
56
+ // Mock casper-js-sdk
57
+ jest.mock("casper-js-sdk", () => {
58
+ const originalModule = jest.requireActual("casper-js-sdk");
59
+ return {
60
+ ...originalModule,
61
+ RpcClient: jest.fn(),
62
+ HttpHandler: jest.fn(),
63
+ AccountIdentifier: jest.fn(),
64
+ PublicKey: {
65
+ fromHex: jest.fn(),
66
+ },
67
+ };
68
+ });
69
+ describe("Casper API Unit Tests", () => {
70
+ beforeEach(() => {
71
+ jest.clearAllMocks();
72
+ // Setup config mock
73
+ jest.mocked(config_1.getCoinConfig).mockReturnValue({
74
+ infra: {
75
+ API_CASPER_NODE_ENDPOINT: MOCK_NODE_URL,
76
+ API_CASPER_INDEXER: MOCK_INDEXER_URL,
77
+ },
78
+ });
79
+ });
80
+ describe("getCasperNodeRpcClient", () => {
81
+ it("should create RPC client with correct URL", () => {
82
+ (0, _1.getCasperNodeRpcClient)();
83
+ expect(casper_js_sdk_1.HttpHandler).toHaveBeenCalledWith(MOCK_NODE_URL);
84
+ expect(casper_js_sdk_1.RpcClient).toHaveBeenCalled();
85
+ });
86
+ it("should throw error if API base URL is not available", () => {
87
+ jest.mocked(config_1.getCoinConfig).mockReturnValueOnce({
88
+ infra: {},
89
+ });
90
+ expect(() => (0, _1.getCasperNodeRpcClient)()).toThrow("API base URL not available");
91
+ });
92
+ });
93
+ describe("fetchAccountStateInfo", () => {
94
+ it("should fetch account state info successfully", async () => {
95
+ // Mock PublicKey
96
+ const mockPublicKeyInstance = { fromHex: () => ({ fromHex: true }) };
97
+ jest.mocked(casper_js_sdk_1.PublicKey.fromHex).mockReturnValue(mockPublicKeyInstance);
98
+ // Mock AccountIdentifier
99
+ const mockAccountIdentifier = {};
100
+ jest
101
+ .mocked(casper_js_sdk_1.AccountIdentifier)
102
+ .mockReturnValue(mockAccountIdentifier);
103
+ // Mock RpcClient.getAccountInfo
104
+ const mockGetAccountInfo = jest.fn().mockResolvedValue({
105
+ account: {
106
+ accountHash: { toHex: () => MOCK_ACCOUNT_HASH },
107
+ mainPurse: { toPrefixedString: () => MOCK_PURSE_UREF },
108
+ },
109
+ });
110
+ createMockRpcClient({
111
+ getAccountInfo: mockGetAccountInfo,
112
+ });
113
+ const result = await (0, _1.fetchAccountStateInfo)(MOCK_PUBLIC_KEY);
114
+ expect(casper_js_sdk_1.PublicKey.fromHex).toHaveBeenCalledWith(MOCK_PUBLIC_KEY);
115
+ expect(casper_js_sdk_1.AccountIdentifier).toHaveBeenCalledWith(undefined, mockPublicKeyInstance);
116
+ expect(mockGetAccountInfo).toHaveBeenCalledWith(null, mockAccountIdentifier);
117
+ expect(result).toEqual({
118
+ purseUref: MOCK_PURSE_UREF,
119
+ accountHash: MOCK_ACCOUNT_HASH,
120
+ });
121
+ });
122
+ it("should return undefined values when account not found", async () => {
123
+ // Mock error with account not found status code
124
+ const mockError = new Error("Account not found");
125
+ mockError.statusCode = consts_1.NodeErrorCodeAccountNotFound;
126
+ createMockRpcClient({
127
+ getAccountInfo: jest.fn().mockRejectedValue(mockError),
128
+ });
129
+ const result = await (0, _1.fetchAccountStateInfo)(MOCK_PUBLIC_KEY);
130
+ expect(result).toEqual({
131
+ purseUref: undefined,
132
+ accountHash: undefined,
133
+ });
134
+ });
135
+ it("should throw error for other error cases", async () => {
136
+ const mockError = new Error("General error");
137
+ createMockRpcClient({
138
+ getAccountInfo: jest.fn().mockRejectedValue(mockError),
139
+ });
140
+ await expect((0, _1.fetchAccountStateInfo)(MOCK_PUBLIC_KEY)).rejects.toThrow("General error");
141
+ });
142
+ });
143
+ describe("fetchBalance", () => {
144
+ it("should fetch balance successfully", async () => {
145
+ const mockBalanceValue = "10000000000";
146
+ const mockRootHash = "mocked-root-hash";
147
+ // Create mock methods with implementations that return expected values
148
+ const mockGetStateRootHashLatest = jest.fn().mockResolvedValue({
149
+ stateRootHash: { toHex: () => mockRootHash },
150
+ });
151
+ const mockGetBalanceByStateRootHash = jest.fn().mockResolvedValue({
152
+ balanceValue: mockBalanceValue,
153
+ });
154
+ // Create the mock RPC client with our implementations
155
+ const mockMethods = createMockRpcClient({
156
+ getStateRootHashLatest: mockGetStateRootHashLatest,
157
+ getBalanceByStateRootHash: mockGetBalanceByStateRootHash,
158
+ });
159
+ const result = await (0, _1.fetchBalance)(MOCK_PURSE_UREF);
160
+ expect(mockMethods.getStateRootHashLatest).toHaveBeenCalled();
161
+ expect(mockMethods.getBalanceByStateRootHash).toHaveBeenCalledWith(MOCK_PURSE_UREF, mockRootHash);
162
+ expect(result).toEqual(new bignumber_js_1.default(mockBalanceValue));
163
+ });
164
+ it("should throw error when balance fetch fails", async () => {
165
+ const mockError = new Error("Failed to fetch balance");
166
+ createMockRpcClient({
167
+ getStateRootHashLatest: jest.fn().mockRejectedValue(mockError),
168
+ });
169
+ await expect((0, _1.fetchBalance)(MOCK_PURSE_UREF)).rejects.toThrow("Failed to fetch balance");
170
+ expect(logs_1.log).toHaveBeenCalledWith("error", "Failed to fetch balance", mockError);
171
+ });
172
+ });
173
+ describe("fetchBlockHeight", () => {
174
+ it("should fetch block height successfully", async () => {
175
+ const mockHeight = 12345;
176
+ createMockRpcClient({
177
+ getLatestBlock: jest.fn().mockResolvedValue({
178
+ block: { height: mockHeight },
179
+ }),
180
+ });
181
+ const result = await (0, _1.fetchBlockHeight)();
182
+ expect(result).toBe(mockHeight);
183
+ });
184
+ it("should throw error when block height fetch fails", async () => {
185
+ const mockError = new Error("Failed to fetch block height");
186
+ createMockRpcClient({
187
+ getLatestBlock: jest.fn().mockRejectedValue(mockError),
188
+ });
189
+ await expect((0, _1.fetchBlockHeight)()).rejects.toThrow("Failed to fetch block height");
190
+ expect(logs_1.log).toHaveBeenCalledWith("error", "Failed to fetch block height", mockError);
191
+ });
192
+ });
193
+ describe("fetchTxs", () => {
194
+ const createMockTxData = (hash) => ({
195
+ deploy_hash: hash,
196
+ block_hash: "block-hash-1",
197
+ caller_public_key: MOCK_PUBLIC_KEY,
198
+ execution_type_id: 1,
199
+ cost: "10000",
200
+ payment_amount: "100000000",
201
+ timestamp: "2023-01-01T12:00:00Z",
202
+ status: "success",
203
+ args: {
204
+ id: {
205
+ parsed: 12345,
206
+ cl_type: {
207
+ Option: "U64",
208
+ },
209
+ },
210
+ amount: {
211
+ parsed: "500000000",
212
+ cl_type: "U512",
213
+ },
214
+ target: {
215
+ parsed: fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1,
216
+ cl_type: "PublicKey",
217
+ },
218
+ },
219
+ amount: "500000000",
220
+ });
221
+ const mockTxData = [createMockTxData("deploy-hash-1")];
222
+ const getExpectedNetworkCall = (page) => ({
223
+ method: "GET",
224
+ url: `${MOCK_INDEXER_URL}/accounts/${MOCK_PUBLIC_KEY}/ledgerlive-deploys?limit=${DEFAULT_LIMIT}&page=${page}`,
225
+ });
226
+ it("should fetch transactions successfully (single page)", async () => {
227
+ jest.mocked(live_network_1.default).mockResolvedValueOnce(createNetworkMock(mockTxData));
228
+ const result = await (0, _1.fetchTxs)(MOCK_PUBLIC_KEY);
229
+ expect(live_network_1.default).toHaveBeenCalledWith(getExpectedNetworkCall(1));
230
+ expect(result).toEqual(mockTxData);
231
+ });
232
+ it("should fetch transactions successfully (multiple pages)", async () => {
233
+ // Mock first page
234
+ jest.mocked(live_network_1.default).mockResolvedValueOnce(createNetworkMock([mockTxData[0]], 2, 2));
235
+ // Mock second page
236
+ const secondPageTx = createMockTxData("deploy-hash-2");
237
+ jest.mocked(live_network_1.default).mockResolvedValueOnce(createNetworkMock([secondPageTx], 2, 2));
238
+ const result = await (0, _1.fetchTxs)(MOCK_PUBLIC_KEY);
239
+ expect(live_network_1.default).toHaveBeenCalledTimes(2);
240
+ expect(live_network_1.default).toHaveBeenNthCalledWith(1, getExpectedNetworkCall(1));
241
+ expect(live_network_1.default).toHaveBeenNthCalledWith(2, getExpectedNetworkCall(2));
242
+ expect(result).toEqual([mockTxData[0], secondPageTx]);
243
+ });
244
+ it("should throw error when transactions fetch fails", async () => {
245
+ const mockError = new Error("Failed to fetch transactions");
246
+ jest.mocked(live_network_1.default).mockRejectedValueOnce(mockError);
247
+ await expect((0, _1.fetchTxs)(MOCK_PUBLIC_KEY)).rejects.toThrow("Failed to fetch transactions");
248
+ expect(logs_1.log).toHaveBeenCalledWith("error", "Casper indexer error: ", mockError);
249
+ });
250
+ });
251
+ describe("broadcastTx", () => {
252
+ it("should broadcast transaction successfully", async () => {
253
+ const mockTransaction = {};
254
+ const mockTxHash = "0123456789abcdef";
255
+ createMockRpcClient({
256
+ putTransaction: jest.fn().mockResolvedValue({
257
+ transactionHash: { toHex: () => mockTxHash },
258
+ }),
259
+ });
260
+ const result = await (0, _1.broadcastTx)(mockTransaction);
261
+ expect(result).toBe(mockTxHash);
262
+ });
263
+ it("should throw error when broadcast fails", async () => {
264
+ const mockTransaction = {};
265
+ const mockError = new Error("Failed to broadcast transaction");
266
+ createMockRpcClient({
267
+ putTransaction: jest.fn().mockRejectedValue(mockError),
268
+ });
269
+ await expect((0, _1.broadcastTx)(mockTransaction)).rejects.toThrow("Failed to broadcast transaction");
270
+ expect(logs_1.log).toHaveBeenCalledWith("error", "Failed to broadcast transaction", mockError);
271
+ });
272
+ });
273
+ });
274
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/api/index.test.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,3 @@
1
- export interface NodeRPCPayload {
2
- jsonrpc: "2.0";
3
- method: "info_get_status" | "chain_get_state_root_hash" | "state_get_account_info" | "state_get_balance" | "account_put_deploy";
4
- params: any;
5
- id: 1;
6
- }
7
1
  export interface IndexerResponseRoot<T> {
8
2
  data: T[];
9
3
  pageCount: number;
@@ -45,66 +39,7 @@ export interface ITxnHistoryData {
45
39
  };
46
40
  amount: string;
47
41
  }
48
- export interface NodeResponseRoot<T> {
49
- jsonrpc: string;
50
- id: string;
51
- result?: T;
52
- error?: {
53
- code: number;
54
- message: string;
55
- data: string;
56
- };
57
- }
58
- export interface NNetworkStatusResponse {
59
- api_version: string;
60
- chainspec_name: string;
61
- starting_state_root_hash: string;
62
- peers: {
63
- node_id: string;
64
- address: string;
65
- }[];
66
- last_added_block_info: {
67
- hash: string;
68
- timestamp: string;
69
- era_id: number;
70
- height: number;
71
- state_root_hash: string;
72
- creator: string;
73
- };
74
- our_public_signing_key: string;
75
- round_length?: any;
76
- next_upgrade?: any;
77
- build_version: string;
78
- uptime: string;
79
- }
80
- export interface NStateRootHashResponse {
81
- api_version: string;
82
- state_root_hash: string;
83
- }
84
- export interface NAccountBalance {
85
- api_version: string;
86
- balance_value: string;
87
- merkle_proof: string;
88
- }
89
- export interface NAccountInfo {
90
- api_version: string;
91
- account: {
92
- account_hash: string;
93
- named_keys: any[];
94
- main_purse: string;
95
- associated_keys: {
96
- account_hash: string;
97
- weight: number;
98
- }[];
99
- action_thresholds: {
100
- deployment: number;
101
- key_management: number;
102
- };
103
- };
104
- merkle_proof: string;
105
- }
106
- export interface NDeployMessagePutResponse {
107
- api_version: string;
108
- deploy_hash: string;
42
+ export interface RpcError extends Error {
43
+ statusCode: number;
109
44
  }
110
45
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,qBAAqB,CAAC,EAAE,GAAG,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE;QACJ,EAAE,EAAE;YACF,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,OAAO,EAAE;gBACP,MAAM,EAAE,MAAM,CAAC;aAChB,CAAC;SACH,CAAC;QACF,MAAM,EAAE;YACN,MAAM,EAAE,MAAM,CAAC;YACf,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,MAAM,EAAE;YACN,MAAM,EAAE,MAAM,CAAC;YACf,OAAO,EACH;gBACE,SAAS,EAAE,MAAM,CAAC;aACnB,GACD,MAAM,CAAC;SACZ,CAAC;KACH,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAS,SAAQ,KAAK;IACrC,UAAU,EAAE,MAAM,CAAC;CACpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"accountShape.d.ts","sourceRoot":"","sources":["../../../src/bridge/bridgeHelpers/accountShape.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAK5E,eAAO,MAAM,eAAe,EAAE,eA6B7B,CAAC"}
1
+ {"version":3,"file":"accountShape.d.ts","sourceRoot":"","sources":["../../../src/bridge/bridgeHelpers/accountShape.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAK5E,eAAO,MAAM,eAAe,EAAE,eA2B7B,CAAC"}
@@ -21,17 +21,15 @@ const getAccountShape = async (info) => {
21
21
  });
22
22
  (0, logs_1.log)("debug", `Generation account shape for ${address}`);
23
23
  const { purseUref, accountHash } = await (0, index_2.fetchAccountStateInfo)(address);
24
- const blockHeight = await (0, index_2.fetchNetworkStatus)();
25
- const balance = purseUref
26
- ? await (0, index_2.fetchBalance)(purseUref)
27
- : { balance_value: "0", api_version: "", merkle_proof: "" };
24
+ const blockHeight = await (0, index_2.fetchBlockHeight)();
25
+ const balance = purseUref ? await (0, index_2.fetchBalance)(purseUref) : new bignumber_js_1.default(0);
28
26
  const txs = purseUref ? await (0, index_2.fetchTxs)(address) : [];
29
27
  return {
30
28
  id: accountId,
31
- balance: new bignumber_js_1.default(balance.balance_value),
32
- spendableBalance: new bignumber_js_1.default(balance.balance_value),
29
+ balance,
30
+ spendableBalance: balance,
33
31
  operations: (0, flatMap_1.default)(txs, (0, txn_1.mapTxToOps)(accountId, accountHash ?? "")),
34
- blockHeight: blockHeight.last_added_block_info.height,
32
+ blockHeight,
35
33
  };
36
34
  };
37
35
  exports.getAccountShape = getAccountShape;
@@ -1 +1 @@
1
- {"version":3,"file":"accountShape.js","sourceRoot":"","sources":["../../../src/bridge/bridgeHelpers/accountShape.ts"],"names":[],"mappings":";;;;;;AAAA,6DAAqC;AACrC,yCAAqC;AACrC,gEAAqC;AACrC,kEAAyE;AAEzE,2CAAoG;AACpG,+BAAmC;AAG5B,MAAM,eAAe,GAAoB,KAAK,EAAC,IAAI,EAAC,EAAE;IAC3D,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAEnD,MAAM,SAAS,GAAG,IAAA,uBAAe,EAAC;QAChC,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,GAAG;QACZ,UAAU,EAAE,QAAQ,CAAC,EAAE;QACvB,aAAa,EAAE,OAAO;QACtB,cAAc;KACf,CAAC,CAAC;IAEH,IAAA,UAAG,EAAC,OAAO,EAAE,gCAAgC,OAAO,EAAE,CAAC,CAAC;IAExD,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,MAAM,IAAA,6BAAqB,EAAC,OAAO,CAAC,CAAC;IAExE,MAAM,WAAW,GAAG,MAAM,IAAA,0BAAkB,GAAE,CAAC;IAE/C,MAAM,OAAO,GAAoB,SAAS;QACxC,CAAC,CAAC,MAAM,IAAA,oBAAY,EAAC,SAAS,CAAC;QAC/B,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IAC9D,MAAM,GAAG,GAAsB,SAAS,CAAC,CAAC,CAAC,MAAM,IAAA,gBAAQ,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAExE,OAAO;QACL,EAAE,EAAE,SAAS;QACb,OAAO,EAAE,IAAI,sBAAS,CAAC,OAAO,CAAC,aAAa,CAAC;QAC7C,gBAAgB,EAAE,IAAI,sBAAS,CAAC,OAAO,CAAC,aAAa,CAAC;QACtD,UAAU,EAAE,IAAA,iBAAO,EAAC,GAAG,EAAE,IAAA,gBAAU,EAAC,SAAS,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC;QAClE,WAAW,EAAE,WAAW,CAAC,qBAAqB,CAAC,MAAM;KACtD,CAAC;AACJ,CAAC,CAAC;AA7BW,QAAA,eAAe,mBA6B1B"}
1
+ {"version":3,"file":"accountShape.js","sourceRoot":"","sources":["../../../src/bridge/bridgeHelpers/accountShape.ts"],"names":[],"mappings":";;;;;;AAAA,6DAAqC;AACrC,yCAAqC;AACrC,gEAAqC;AACrC,kEAAyE;AAEzE,2CAAkG;AAClG,+BAAmC;AAG5B,MAAM,eAAe,GAAoB,KAAK,EAAC,IAAI,EAAC,EAAE;IAC3D,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAEnD,MAAM,SAAS,GAAG,IAAA,uBAAe,EAAC;QAChC,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,GAAG;QACZ,UAAU,EAAE,QAAQ,CAAC,EAAE;QACvB,aAAa,EAAE,OAAO;QACtB,cAAc;KACf,CAAC,CAAC;IAEH,IAAA,UAAG,EAAC,OAAO,EAAE,gCAAgC,OAAO,EAAE,CAAC,CAAC;IAExD,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,MAAM,IAAA,6BAAqB,EAAC,OAAO,CAAC,CAAC;IAExE,MAAM,WAAW,GAAG,MAAM,IAAA,wBAAgB,GAAE,CAAC;IAE7C,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,IAAA,oBAAY,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,sBAAS,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,GAAG,GAAsB,SAAS,CAAC,CAAC,CAAC,MAAM,IAAA,gBAAQ,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAExE,OAAO;QACL,EAAE,EAAE,SAAS;QACb,OAAO;QACP,gBAAgB,EAAE,OAAO;QACzB,UAAU,EAAE,IAAA,iBAAO,EAAC,GAAG,EAAE,IAAA,gBAAU,EAAC,SAAS,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC;QAClE,WAAW;KACZ,CAAC;AACJ,CAAC,CAAC;AA3BW,QAAA,eAAe,mBA2B1B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=accountShape.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accountShape.test.d.ts","sourceRoot":"","sources":["../../../src/bridge/bridgeHelpers/accountShape.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
7
+ const index_1 = require("../../api/index");
8
+ const txn_1 = require("./txn");
9
+ const accountShape_1 = require("./accountShape");
10
+ const fixtures_1 = require("../../test/fixtures");
11
+ // Mock dependencies
12
+ jest.mock("../../api/index");
13
+ jest.mock("./txn");
14
+ describe("getAccountShape", () => {
15
+ const { mockAddress, mockAccountInfo, mockAccountId, mockBlockHeight, mockPurseUref, mockAccountHash, mockBalance, mockTxs, mockOperations, } = (0, fixtures_1.createMockAccountShapeData)();
16
+ // Define a mock SyncConfig as required by the getAccountShape function
17
+ const mockSyncConfig = {
18
+ paginationConfig: {},
19
+ };
20
+ beforeEach(() => {
21
+ jest.clearAllMocks();
22
+ // Default mock implementations
23
+ index_1.fetchAccountStateInfo.mockResolvedValue({
24
+ purseUref: mockPurseUref,
25
+ accountHash: mockAccountHash,
26
+ });
27
+ index_1.fetchBlockHeight.mockResolvedValue(mockBlockHeight);
28
+ index_1.fetchBalance.mockResolvedValue(mockBalance);
29
+ index_1.fetchTxs.mockResolvedValue(mockTxs);
30
+ txn_1.mapTxToOps.mockImplementation(() => () => mockOperations);
31
+ });
32
+ test("should return the correct account shape for an account with balance", async () => {
33
+ const accountShape = await (0, accountShape_1.getAccountShape)(mockAccountInfo, mockSyncConfig);
34
+ expect(index_1.fetchAccountStateInfo).toHaveBeenCalledWith(mockAddress);
35
+ expect(index_1.fetchBlockHeight).toHaveBeenCalled();
36
+ expect(index_1.fetchBalance).toHaveBeenCalledWith(mockPurseUref);
37
+ expect(index_1.fetchTxs).toHaveBeenCalledWith(mockAddress);
38
+ expect(txn_1.mapTxToOps).toHaveBeenCalledWith(mockAccountId, mockAccountHash);
39
+ expect(accountShape).toEqual({
40
+ id: mockAccountId,
41
+ balance: mockBalance,
42
+ spendableBalance: mockBalance,
43
+ operations: mockOperations,
44
+ blockHeight: mockBlockHeight,
45
+ });
46
+ });
47
+ test("should return account with zero balance when purseUref is not found", async () => {
48
+ index_1.fetchAccountStateInfo.mockResolvedValue({
49
+ purseUref: undefined,
50
+ accountHash: mockAccountHash,
51
+ });
52
+ const accountShape = await (0, accountShape_1.getAccountShape)(mockAccountInfo, mockSyncConfig);
53
+ expect(index_1.fetchAccountStateInfo).toHaveBeenCalledWith(mockAddress);
54
+ expect(index_1.fetchBlockHeight).toHaveBeenCalled();
55
+ expect(index_1.fetchBalance).not.toHaveBeenCalled();
56
+ expect(index_1.fetchTxs).not.toHaveBeenCalled();
57
+ expect(accountShape).toEqual({
58
+ id: mockAccountId,
59
+ balance: new bignumber_js_1.default(0),
60
+ spendableBalance: new bignumber_js_1.default(0),
61
+ operations: [],
62
+ blockHeight: mockBlockHeight,
63
+ });
64
+ });
65
+ test("should return account with operations even when accountHash is not found", async () => {
66
+ index_1.fetchAccountStateInfo.mockResolvedValue({
67
+ purseUref: mockPurseUref,
68
+ accountHash: undefined,
69
+ });
70
+ const accountShape = await (0, accountShape_1.getAccountShape)(mockAccountInfo, mockSyncConfig);
71
+ expect(index_1.fetchAccountStateInfo).toHaveBeenCalledWith(mockAddress);
72
+ expect(index_1.fetchBlockHeight).toHaveBeenCalled();
73
+ expect(index_1.fetchBalance).toHaveBeenCalledWith(mockPurseUref);
74
+ expect(index_1.fetchTxs).toHaveBeenCalledWith(mockAddress);
75
+ expect(txn_1.mapTxToOps).toHaveBeenCalledWith(mockAccountId, "");
76
+ expect(accountShape).toEqual({
77
+ id: mockAccountId,
78
+ balance: mockBalance,
79
+ spendableBalance: mockBalance,
80
+ operations: mockOperations,
81
+ blockHeight: mockBlockHeight,
82
+ });
83
+ });
84
+ test("should handle API errors appropriately", async () => {
85
+ const errorMessage = "API Error";
86
+ index_1.fetchAccountStateInfo.mockRejectedValue(new Error(errorMessage));
87
+ await expect((0, accountShape_1.getAccountShape)(mockAccountInfo, mockSyncConfig)).rejects.toThrow(errorMessage);
88
+ expect(index_1.fetchAccountStateInfo).toHaveBeenCalledWith(mockAddress);
89
+ expect(index_1.fetchBlockHeight).not.toHaveBeenCalled();
90
+ expect(index_1.fetchBalance).not.toHaveBeenCalled();
91
+ expect(index_1.fetchTxs).not.toHaveBeenCalled();
92
+ });
93
+ });
94
+ //# sourceMappingURL=accountShape.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accountShape.test.js","sourceRoot":"","sources":["../../../src/bridge/bridgeHelpers/accountShape.test.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,12 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
3
  import { Account } from "@ledgerhq/types-live";
4
- import { CLPublicKey, CLPublicKeyTag } from "casper-js-sdk";
4
+ import { KeyAlgorithm } from "casper-js-sdk";
5
5
  export declare const getAddress: (a: Account) => {
6
6
  address: string;
7
7
  derivationPath: string;
8
8
  };
9
9
  export declare function isAddressValid(pubKey: string): boolean;
10
- export declare function casperGetCLPublicKey(pubkey: string): CLPublicKey;
11
- export declare function casperAccountHashFromPublicKey(pubKey: string, checksummed?: boolean): string;
12
- export declare function casperAddressFromPubKey(pubkey: Buffer, keySig: CLPublicKeyTag): string;
13
- /**
14
- * Returns the bytes encoded as hexadecimal with mixed-case based checksums following a scheme
15
- * similar to [EIP-55](https://eips.ethereum.org/EIPS/eip-55).
16
- */
17
- export declare function casperAddressEncode(inputBytes: Buffer): string;
10
+ export declare function casperAccountHashFromPublicKey(pubKey: string): string;
11
+ export declare function casperAddressFromPubKey(pubkey: Buffer, keySig: KeyAlgorithm): string;
18
12
  //# sourceMappingURL=addresses.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"addresses.d.ts","sourceRoot":"","sources":["../../../src/bridge/bridgeHelpers/addresses.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG5D,eAAO,MAAM,UAAU,MAClB,OAAO,KACT;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CAC6C,CAAC;AAEvE,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAOtD;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAOhE;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,MAAM,EACd,WAAW,GAAE,OAAe,GAC3B,MAAM,CAMR;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,CAEtF;AAqBD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAyB9D"}
1
+ {"version":3,"file":"addresses.d.ts","sourceRoot":"","sources":["../../../src/bridge/bridgeHelpers/addresses.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAa,YAAY,EAAE,MAAM,eAAe,CAAC;AAExD,eAAO,MAAM,UAAU,MAClB,OAAO,KACT;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CAC6C,CAAC;AAEvE,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAQtD;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAEpF"}
@@ -1,14 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.casperAddressEncode = exports.casperAddressFromPubKey = exports.casperAccountHashFromPublicKey = exports.casperGetCLPublicKey = exports.isAddressValid = exports.getAddress = void 0;
4
- const blakejs_1 = require("blakejs");
3
+ exports.casperAddressFromPubKey = exports.casperAccountHashFromPublicKey = exports.isAddressValid = exports.getAddress = void 0;
5
4
  const casper_js_sdk_1 = require("casper-js-sdk");
6
- const consts_1 = require("../../consts");
7
5
  const getAddress = (a) => ({ address: a.freshAddress, derivationPath: a.freshAddressPath });
8
6
  exports.getAddress = getAddress;
9
7
  function isAddressValid(pubKey) {
8
+ const checksummed = pubKey.toLowerCase() !== pubKey && pubKey.toUpperCase() !== pubKey;
10
9
  try {
11
- casperGetCLPublicKey(pubKey);
10
+ casper_js_sdk_1.PublicKey.fromHex(pubKey, checksummed).accountHash().toHex();
12
11
  return true;
13
12
  }
14
13
  catch (err) {
@@ -16,68 +15,12 @@ function isAddressValid(pubKey) {
16
15
  }
17
16
  }
18
17
  exports.isAddressValid = isAddressValid;
19
- function casperGetCLPublicKey(pubkey) {
20
- let checksummed = true;
21
- if (pubkey.toLowerCase() === pubkey)
22
- checksummed = false;
23
- if (pubkey.toUpperCase() === pubkey)
24
- checksummed = false;
25
- return casper_js_sdk_1.CLPublicKey.fromHex(pubkey, checksummed);
26
- }
27
- exports.casperGetCLPublicKey = casperGetCLPublicKey;
28
- function casperAccountHashFromPublicKey(pubKey, checksummed = false) {
29
- const accountHashBuff = casperGetCLPublicKey(pubKey).toAccountHash();
30
- if (checksummed === false)
31
- return Buffer.from(accountHashBuff).toString("hex");
32
- return casperAddressEncode(Buffer.from(accountHashBuff));
18
+ function casperAccountHashFromPublicKey(pubKey) {
19
+ return casper_js_sdk_1.PublicKey.fromHex(pubKey).accountHash().toHex();
33
20
  }
34
21
  exports.casperAccountHashFromPublicKey = casperAccountHashFromPublicKey;
35
22
  function casperAddressFromPubKey(pubkey, keySig) {
36
23
  return `${keySig.toString().padStart(2, "0")}${Buffer.from(pubkey).toString("hex")}`;
37
24
  }
38
25
  exports.casperAddressFromPubKey = casperAddressFromPubKey;
39
- function numberToBin(num) {
40
- let binStr = (num >>> 0).toString(2);
41
- while (binStr.length < 8) {
42
- binStr = "0" + binStr;
43
- }
44
- return binStr.split("").reverse().join("");
45
- }
46
- function bytesToBitsString(buf) {
47
- const bitsArray = [];
48
- for (const num of buf) {
49
- const bin = numberToBin(num);
50
- bitsArray.push(bin);
51
- }
52
- return bitsArray.join("");
53
- }
54
- /**
55
- * Returns the bytes encoded as hexadecimal with mixed-case based checksums following a scheme
56
- * similar to [EIP-55](https://eips.ethereum.org/EIPS/eip-55).
57
- */
58
- function casperAddressEncode(inputBytes) {
59
- const context = (0, blakejs_1.blake2bInit)(consts_1.CASPER_CHECKSUM_HEX_LEN);
60
- (0, blakejs_1.blake2bUpdate)(context, inputBytes);
61
- const blakeHash = (0, blakejs_1.blake2bFinal)(context);
62
- const nibbles = inputBytes
63
- .toString("hex")
64
- .split("")
65
- .map(v => parseInt(v, 16));
66
- const bitsArray = bytesToBitsString(blakeHash);
67
- const res = [];
68
- let steamIndex = -1;
69
- for (const num of nibbles) {
70
- if (num < 10)
71
- res.push(num);
72
- else {
73
- steamIndex += 1;
74
- if (parseInt(bitsArray[steamIndex], 10))
75
- res.push(num.toString(16).toUpperCase());
76
- else
77
- res.push(num.toString(16).toLowerCase());
78
- }
79
- }
80
- return res.join("");
81
- }
82
- exports.casperAddressEncode = casperAddressEncode;
83
26
  //# sourceMappingURL=addresses.js.map