@ledgerhq/coin-solana 0.35.0-nightly.9 → 0.35.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 (199) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +28 -90
  3. package/lib/__fixtures__/solana-spl-epjfwdd5aufqssqem2qn1xzybapc8g4weggkzwytdt1v.json +50 -0
  4. package/lib/__tests__/fixtures/helpers.fixture.d.ts +138 -0
  5. package/lib/__tests__/fixtures/helpers.fixture.d.ts.map +1 -0
  6. package/lib/__tests__/fixtures/helpers.fixture.js +124 -0
  7. package/lib/__tests__/fixtures/helpers.fixture.js.map +1 -0
  8. package/lib/__tests__/scan-accounts.test.d.ts +2 -0
  9. package/lib/__tests__/scan-accounts.test.d.ts.map +1 -0
  10. package/lib/__tests__/scan-accounts.test.js +426 -0
  11. package/lib/__tests__/scan-accounts.test.js.map +1 -0
  12. package/lib/__tests__/unit/hw-signMessage.unit.test.d.ts +2 -0
  13. package/lib/__tests__/unit/hw-signMessage.unit.test.d.ts.map +1 -0
  14. package/lib/__tests__/unit/hw-signMessage.unit.test.js +91 -0
  15. package/lib/__tests__/unit/hw-signMessage.unit.test.js.map +1 -0
  16. package/lib/__tests__/unit/nftResolvers.unit.test.d.ts +2 -0
  17. package/lib/__tests__/unit/nftResolvers.unit.test.d.ts.map +1 -0
  18. package/lib/__tests__/unit/nftResolvers.unit.test.js +147 -0
  19. package/lib/__tests__/unit/nftResolvers.unit.test.js.map +1 -0
  20. package/lib/__tests__/unit/utils.unit.test.d.ts +2 -0
  21. package/lib/__tests__/unit/utils.unit.test.d.ts.map +1 -0
  22. package/lib/__tests__/unit/utils.unit.test.js +16 -0
  23. package/lib/__tests__/unit/utils.unit.test.js.map +1 -0
  24. package/lib/__tests__/unit/validator-app.unit.test.d.ts +2 -0
  25. package/lib/__tests__/unit/validator-app.unit.test.d.ts.map +1 -0
  26. package/lib/__tests__/unit/validator-app.unit.test.js +169 -0
  27. package/lib/__tests__/unit/validator-app.unit.test.js.map +1 -0
  28. package/lib/bridge.integration.test.d.ts +4 -0
  29. package/lib/bridge.integration.test.d.ts.map +1 -0
  30. package/lib/bridge.integration.test.js +870 -0
  31. package/lib/bridge.integration.test.js.map +1 -0
  32. package/lib/buildTransaction.test.d.ts +2 -0
  33. package/lib/buildTransaction.test.d.ts.map +1 -0
  34. package/lib/buildTransaction.test.js +164 -0
  35. package/lib/buildTransaction.test.js.map +1 -0
  36. package/lib/cryptoAssetsStore.test.d.ts +2 -0
  37. package/lib/cryptoAssetsStore.test.d.ts.map +1 -0
  38. package/lib/cryptoAssetsStore.test.js +15 -0
  39. package/lib/cryptoAssetsStore.test.js.map +1 -0
  40. package/lib/network/chain/account/parser.d.ts +1 -1
  41. package/lib/network/chain/account/stake.d.ts +23 -23
  42. package/lib/network/chain/account/token.d.ts +7 -7
  43. package/lib/network/chain/instruction/stake/types.d.ts +8 -8
  44. package/lib/network/chain/instruction/system/types.d.ts +14 -14
  45. package/lib/network/chain/web3.integration.test.d.ts +2 -0
  46. package/lib/network/chain/web3.integration.test.d.ts.map +1 -0
  47. package/lib/network/chain/web3.integration.test.js +70 -0
  48. package/lib/network/chain/web3.integration.test.js.map +1 -0
  49. package/lib/offchainMessage/format.unit.test.d.ts +2 -0
  50. package/lib/offchainMessage/format.unit.test.d.ts.map +1 -0
  51. package/lib/offchainMessage/format.unit.test.js +124 -0
  52. package/lib/offchainMessage/format.unit.test.js.map +1 -0
  53. package/lib/preload.test.d.ts +2 -0
  54. package/lib/preload.test.d.ts.map +1 -0
  55. package/lib/preload.test.js +9 -0
  56. package/lib/preload.test.js.map +1 -0
  57. package/lib/prepareTransaction.d.ts.map +1 -1
  58. package/lib/prepareTransaction.js +0 -4
  59. package/lib/prepareTransaction.js.map +1 -1
  60. package/lib/prepareTransaction.test.d.ts +2 -0
  61. package/lib/prepareTransaction.test.d.ts.map +1 -0
  62. package/lib/prepareTransaction.test.js +139 -0
  63. package/lib/prepareTransaction.test.js.map +1 -0
  64. package/lib/signOperation.d.ts.map +1 -1
  65. package/lib/signOperation.js +0 -2
  66. package/lib/signOperation.js.map +1 -1
  67. package/lib/signOperation.test.d.ts +3 -0
  68. package/lib/signOperation.test.d.ts.map +1 -0
  69. package/lib/signOperation.test.js +139 -0
  70. package/lib/signOperation.test.js.map +1 -0
  71. package/lib/signer.d.ts +0 -1
  72. package/lib/signer.d.ts.map +1 -1
  73. package/lib/signer.js.map +1 -1
  74. package/lib/tests/preload.fixtures.d.ts +5 -0
  75. package/lib/tests/preload.fixtures.d.ts.map +1 -0
  76. package/lib/tests/preload.fixtures.js +28 -0
  77. package/lib/tests/preload.fixtures.js.map +1 -0
  78. package/lib/tests/preload.unit.test.d.ts +2 -0
  79. package/lib/tests/preload.unit.test.d.ts.map +1 -0
  80. package/lib/tests/preload.unit.test.js +175 -0
  81. package/lib/tests/preload.unit.test.js.map +1 -0
  82. package/lib/tests/stakes-bridge.unit.test.d.ts +2 -0
  83. package/lib/tests/stakes-bridge.unit.test.d.ts.map +1 -0
  84. package/lib/tests/stakes-bridge.unit.test.js +166 -0
  85. package/lib/tests/stakes-bridge.unit.test.js.map +1 -0
  86. package/lib/tests/test-onchain-data.fixture.d.ts +20 -0
  87. package/lib/tests/test-onchain-data.fixture.d.ts.map +1 -0
  88. package/lib/tests/test-onchain-data.fixture.js +34 -0
  89. package/lib/tests/test-onchain-data.fixture.js.map +1 -0
  90. package/lib/tests/tokens-bridge.unit.test.d.ts +2 -0
  91. package/lib/tests/tokens-bridge.unit.test.d.ts.map +1 -0
  92. package/lib/tests/tokens-bridge.unit.test.js +615 -0
  93. package/lib/tests/tokens-bridge.unit.test.js.map +1 -0
  94. package/lib/tx-fees.js +0 -2
  95. package/lib/tx-fees.js.map +1 -1
  96. package/lib/types.d.ts +1 -2
  97. package/lib/types.d.ts.map +1 -1
  98. package/lib-es/__fixtures__/solana-spl-epjfwdd5aufqssqem2qn1xzybapc8g4weggkzwytdt1v.json +50 -0
  99. package/lib-es/__tests__/fixtures/helpers.fixture.d.ts +138 -0
  100. package/lib-es/__tests__/fixtures/helpers.fixture.d.ts.map +1 -0
  101. package/lib-es/__tests__/fixtures/helpers.fixture.js +110 -0
  102. package/lib-es/__tests__/fixtures/helpers.fixture.js.map +1 -0
  103. package/lib-es/__tests__/scan-accounts.test.d.ts +2 -0
  104. package/lib-es/__tests__/scan-accounts.test.d.ts.map +1 -0
  105. package/lib-es/__tests__/scan-accounts.test.js +398 -0
  106. package/lib-es/__tests__/scan-accounts.test.js.map +1 -0
  107. package/lib-es/__tests__/unit/hw-signMessage.unit.test.d.ts +2 -0
  108. package/lib-es/__tests__/unit/hw-signMessage.unit.test.d.ts.map +1 -0
  109. package/lib-es/__tests__/unit/hw-signMessage.unit.test.js +86 -0
  110. package/lib-es/__tests__/unit/hw-signMessage.unit.test.js.map +1 -0
  111. package/lib-es/__tests__/unit/nftResolvers.unit.test.d.ts +2 -0
  112. package/lib-es/__tests__/unit/nftResolvers.unit.test.d.ts.map +1 -0
  113. package/lib-es/__tests__/unit/nftResolvers.unit.test.js +142 -0
  114. package/lib-es/__tests__/unit/nftResolvers.unit.test.js.map +1 -0
  115. package/lib-es/__tests__/unit/utils.unit.test.d.ts +2 -0
  116. package/lib-es/__tests__/unit/utils.unit.test.d.ts.map +1 -0
  117. package/lib-es/__tests__/unit/utils.unit.test.js +14 -0
  118. package/lib-es/__tests__/unit/utils.unit.test.js.map +1 -0
  119. package/lib-es/__tests__/unit/validator-app.unit.test.d.ts +2 -0
  120. package/lib-es/__tests__/unit/validator-app.unit.test.d.ts.map +1 -0
  121. package/lib-es/__tests__/unit/validator-app.unit.test.js +144 -0
  122. package/lib-es/__tests__/unit/validator-app.unit.test.js.map +1 -0
  123. package/lib-es/bridge.integration.test.d.ts +4 -0
  124. package/lib-es/bridge.integration.test.d.ts.map +1 -0
  125. package/lib-es/bridge.integration.test.js +864 -0
  126. package/lib-es/bridge.integration.test.js.map +1 -0
  127. package/lib-es/buildTransaction.test.d.ts +2 -0
  128. package/lib-es/buildTransaction.test.d.ts.map +1 -0
  129. package/lib-es/buildTransaction.test.js +162 -0
  130. package/lib-es/buildTransaction.test.js.map +1 -0
  131. package/lib-es/cryptoAssetsStore.test.d.ts +2 -0
  132. package/lib-es/cryptoAssetsStore.test.d.ts.map +1 -0
  133. package/lib-es/cryptoAssetsStore.test.js +13 -0
  134. package/lib-es/cryptoAssetsStore.test.js.map +1 -0
  135. package/lib-es/network/chain/account/parser.d.ts +1 -1
  136. package/lib-es/network/chain/account/stake.d.ts +23 -23
  137. package/lib-es/network/chain/account/token.d.ts +7 -7
  138. package/lib-es/network/chain/instruction/stake/types.d.ts +8 -8
  139. package/lib-es/network/chain/instruction/system/types.d.ts +14 -14
  140. package/lib-es/network/chain/web3.integration.test.d.ts +2 -0
  141. package/lib-es/network/chain/web3.integration.test.d.ts.map +1 -0
  142. package/lib-es/network/chain/web3.integration.test.js +68 -0
  143. package/lib-es/network/chain/web3.integration.test.js.map +1 -0
  144. package/lib-es/offchainMessage/format.unit.test.d.ts +2 -0
  145. package/lib-es/offchainMessage/format.unit.test.d.ts.map +1 -0
  146. package/lib-es/offchainMessage/format.unit.test.js +122 -0
  147. package/lib-es/offchainMessage/format.unit.test.js.map +1 -0
  148. package/lib-es/preload.test.d.ts +2 -0
  149. package/lib-es/preload.test.d.ts.map +1 -0
  150. package/lib-es/preload.test.js +7 -0
  151. package/lib-es/preload.test.js.map +1 -0
  152. package/lib-es/prepareTransaction.d.ts.map +1 -1
  153. package/lib-es/prepareTransaction.js +0 -4
  154. package/lib-es/prepareTransaction.js.map +1 -1
  155. package/lib-es/prepareTransaction.test.d.ts +2 -0
  156. package/lib-es/prepareTransaction.test.d.ts.map +1 -0
  157. package/lib-es/prepareTransaction.test.js +134 -0
  158. package/lib-es/prepareTransaction.test.js.map +1 -0
  159. package/lib-es/signOperation.d.ts.map +1 -1
  160. package/lib-es/signOperation.js +0 -2
  161. package/lib-es/signOperation.js.map +1 -1
  162. package/lib-es/signOperation.test.d.ts +3 -0
  163. package/lib-es/signOperation.test.d.ts.map +1 -0
  164. package/lib-es/signOperation.test.js +135 -0
  165. package/lib-es/signOperation.test.js.map +1 -0
  166. package/lib-es/signer.d.ts +0 -1
  167. package/lib-es/signer.d.ts.map +1 -1
  168. package/lib-es/signer.js.map +1 -1
  169. package/lib-es/tests/preload.fixtures.d.ts +5 -0
  170. package/lib-es/tests/preload.fixtures.d.ts.map +1 -0
  171. package/lib-es/tests/preload.fixtures.js +25 -0
  172. package/lib-es/tests/preload.fixtures.js.map +1 -0
  173. package/lib-es/tests/preload.unit.test.d.ts +2 -0
  174. package/lib-es/tests/preload.unit.test.d.ts.map +1 -0
  175. package/lib-es/tests/preload.unit.test.js +147 -0
  176. package/lib-es/tests/preload.unit.test.js.map +1 -0
  177. package/lib-es/tests/stakes-bridge.unit.test.d.ts +2 -0
  178. package/lib-es/tests/stakes-bridge.unit.test.d.ts.map +1 -0
  179. package/lib-es/tests/stakes-bridge.unit.test.js +161 -0
  180. package/lib-es/tests/stakes-bridge.unit.test.js.map +1 -0
  181. package/lib-es/tests/test-onchain-data.fixture.d.ts +20 -0
  182. package/lib-es/tests/test-onchain-data.fixture.d.ts.map +1 -0
  183. package/lib-es/tests/test-onchain-data.fixture.js +28 -0
  184. package/lib-es/tests/test-onchain-data.fixture.js.map +1 -0
  185. package/lib-es/tests/tokens-bridge.unit.test.d.ts +2 -0
  186. package/lib-es/tests/tokens-bridge.unit.test.d.ts.map +1 -0
  187. package/lib-es/tests/tokens-bridge.unit.test.js +610 -0
  188. package/lib-es/tests/tokens-bridge.unit.test.js.map +1 -0
  189. package/lib-es/tx-fees.js +0 -2
  190. package/lib-es/tx-fees.js.map +1 -1
  191. package/lib-es/types.d.ts +1 -2
  192. package/lib-es/types.d.ts.map +1 -1
  193. package/package.json +9 -9
  194. package/src/prepareTransaction.ts +0 -4
  195. package/src/signOperation.ts +0 -2
  196. package/src/signer.ts +0 -1
  197. package/src/tests/preload.fixtures.ts +1 -1
  198. package/src/tx-fees.ts +0 -2
  199. package/src/types.ts +1 -2
@@ -0,0 +1,142 @@
1
+ import { AssertionError, fail } from "assert";
2
+ import axios from "axios";
3
+ import { getEnv, setEnv } from "@ledgerhq/live-env";
4
+ import { collectionMetadata, nftMetadata } from "../../nftResolvers";
5
+ jest.mock("axios");
6
+ const mockedAxios = jest.mocked(axios);
7
+ // Add solana manually to the env until officially supported
8
+ setEnv("NFT_CURRENCIES", [...getEnv("NFT_CURRENCIES"), "solana"]);
9
+ const currencyId = "solana";
10
+ const wrongCurrencyId = "bitcoin";
11
+ const randomNftContract = "13vQFDKvvmebfFQdN4XVS7jDuzXoThm2DMn5SxPJhWmA";
12
+ const randomTokenId = "0";
13
+ const metadata = {
14
+ description: "desc",
15
+ links: {
16
+ explorer: "explorer",
17
+ opensea: null,
18
+ rarible: null,
19
+ etherscan: null,
20
+ },
21
+ medias: {
22
+ big: {
23
+ mediaType: "png",
24
+ uri: "big",
25
+ },
26
+ original: {
27
+ mediaType: "png",
28
+ uri: "original",
29
+ },
30
+ preview: {
31
+ mediaType: "png",
32
+ uri: "preview",
33
+ },
34
+ },
35
+ nftName: "name",
36
+ properties: [],
37
+ tokenName: "collectionName",
38
+ };
39
+ describe("Solana Family", () => {
40
+ beforeAll(() => {
41
+ mockedAxios.mockResolvedValue({ data: [{}] });
42
+ });
43
+ beforeEach(() => {
44
+ jest.clearAllMocks();
45
+ });
46
+ afterAll(() => {
47
+ jest.restoreAllMocks();
48
+ });
49
+ describe("nftResolvers", () => {
50
+ describe("nftMetadata", () => {
51
+ it("should reject a currency when NFT is not activated on it", async () => {
52
+ try {
53
+ await nftMetadata({
54
+ contract: randomNftContract,
55
+ currencyId: wrongCurrencyId,
56
+ tokenId: randomTokenId,
57
+ });
58
+ fail("Promise should have been rejected");
59
+ }
60
+ catch (e) {
61
+ if (e instanceof AssertionError) {
62
+ throw e;
63
+ }
64
+ expect(e).toBeInstanceOf(Error);
65
+ expect(e.message).toBe(`Solana Bridge NFT Resolver: Unsupported currency (${wrongCurrencyId})`);
66
+ expect(axios).not.toHaveBeenCalled();
67
+ }
68
+ });
69
+ it("should return nft metadata", async () => {
70
+ mockedAxios.mockResolvedValueOnce({
71
+ data: [
72
+ {
73
+ status: 200,
74
+ result: {
75
+ contract: randomNftContract,
76
+ tokenId: randomTokenId,
77
+ ...metadata,
78
+ },
79
+ },
80
+ ],
81
+ });
82
+ const result = await nftMetadata({
83
+ contract: randomNftContract,
84
+ currencyId,
85
+ tokenId: randomTokenId,
86
+ });
87
+ expect(result).toEqual({
88
+ status: 200,
89
+ result: {
90
+ contract: randomNftContract,
91
+ tokenId: randomTokenId,
92
+ ...metadata,
93
+ },
94
+ });
95
+ });
96
+ });
97
+ describe("collectionMetadata", () => {
98
+ it("should reject a currency when NFT is not activated on it", async () => {
99
+ try {
100
+ await collectionMetadata({
101
+ contract: randomNftContract,
102
+ currencyId: wrongCurrencyId,
103
+ });
104
+ fail("Promise should have been rejected");
105
+ }
106
+ catch (e) {
107
+ if (e instanceof AssertionError) {
108
+ throw e;
109
+ }
110
+ expect(e).toBeInstanceOf(Error);
111
+ expect(e.message).toBe(`Solana Bridge NFT Resolver: Unsupported currency (${wrongCurrencyId})`);
112
+ expect(axios).not.toHaveBeenCalled();
113
+ }
114
+ });
115
+ it("should return nft metadata", async () => {
116
+ mockedAxios.mockResolvedValueOnce({
117
+ data: [
118
+ {
119
+ status: 200,
120
+ result: {
121
+ contract: randomNftContract,
122
+ tokenName: "CollectionName",
123
+ },
124
+ },
125
+ ],
126
+ });
127
+ const result = await collectionMetadata({
128
+ contract: randomNftContract,
129
+ currencyId,
130
+ });
131
+ expect(result).toEqual({
132
+ status: 200,
133
+ result: {
134
+ contract: randomNftContract,
135
+ tokenName: "CollectionName",
136
+ },
137
+ });
138
+ });
139
+ });
140
+ });
141
+ });
142
+ //# sourceMappingURL=nftResolvers.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nftResolvers.unit.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/nftResolvers.unit.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=utils.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.unit.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/utils.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import { LEDGER_VALIDATOR_BY_FIGMENT, LEDGER_VALIDATOR_BY_CHORUS_ONE, LEDGER_VALIDATOR_DEFAULT, } from "../../utils";
2
+ describe("utils - Default Validators", () => {
3
+ it("should have APY property", () => {
4
+ expect(LEDGER_VALIDATOR_BY_FIGMENT).toMatchObject({ apy: expect.any(Number) });
5
+ expect(LEDGER_VALIDATOR_BY_CHORUS_ONE).toMatchObject({ apy: expect.any(Number) });
6
+ });
7
+ it("should have different APY values", () => {
8
+ expect(LEDGER_VALIDATOR_BY_FIGMENT.apy).not.toBe(LEDGER_VALIDATOR_BY_CHORUS_ONE.apy);
9
+ });
10
+ it("should reference correct default", () => {
11
+ expect(LEDGER_VALIDATOR_DEFAULT).toBe(LEDGER_VALIDATOR_BY_FIGMENT);
12
+ });
13
+ });
14
+ //# sourceMappingURL=utils.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.unit.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/utils.unit.test.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,EAC9B,wBAAwB,GACzB,MAAM,aAAa,CAAC;AAErB,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,CAAC,2BAA2B,CAAC,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/E,MAAM,CAAC,8BAA8B,CAAC,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=validator-app.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator-app.unit.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/validator-app.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,144 @@
1
+ import { getValidators } from "../../network/validator-app";
2
+ import * as network from "@ledgerhq/live-network";
3
+ import { getEnv } from "@ledgerhq/live-env";
4
+ jest.spyOn({ getEnv }, "getEnv").mockImplementation((key) => {
5
+ const testUrls = {
6
+ SOLANA_VALIDATORS_APP_BASE_URL: "https://validators-solana.coin.ledger.com/api/v1/validators",
7
+ SOLANA_TESTNET_VALIDATORS_APP_BASE_URL: "https://validators-solana.coin.ledger.com/api/v1/validators",
8
+ SOLANA_VALIDATORS_SUMMARY_BASE_URL: "https://earn-dashboard.aws.stg.ldg-tech.com/figment/solana/validators_summary",
9
+ };
10
+ return testUrls[key] || "";
11
+ });
12
+ const mockValidator = (overrides = {}) => ({
13
+ active_stake: 1000000,
14
+ commission: 5,
15
+ total_score: 8,
16
+ vote_account: "test-validator",
17
+ name: "Test Validator",
18
+ delinquent: false,
19
+ ...overrides,
20
+ });
21
+ const mockApyData = (overrides = {}) => ({
22
+ address: "test-validator",
23
+ delegator_apy: 0.075,
24
+ name: "Test Validator",
25
+ ...overrides,
26
+ });
27
+ describe("validator-app", () => {
28
+ beforeEach(() => {
29
+ jest.clearAllMocks();
30
+ // Suppress console.warn for cleaner test output
31
+ jest.spyOn(console, "warn").mockImplementation(() => { });
32
+ });
33
+ describe("APY integration", () => {
34
+ it("should work for testnet without APY", async () => {
35
+ jest.spyOn(network, "default").mockResolvedValue({ status: 200, data: [] });
36
+ const result = await getValidators("testnet");
37
+ expect(network.default).toHaveBeenCalledTimes(1);
38
+ expect(network.default).toHaveBeenCalledWith({
39
+ method: "GET",
40
+ url: "https://validators-solana.coin.ledger.com/api/v1/validators/testnet.json?order=score&limit=1000",
41
+ });
42
+ expect(result).toEqual([]);
43
+ });
44
+ it("should fetch and integrate APY for mainnet", async () => {
45
+ const validator = mockValidator();
46
+ const apyData = mockApyData();
47
+ jest
48
+ .spyOn(network, "default")
49
+ .mockResolvedValueOnce({ status: 200, data: [validator] })
50
+ .mockResolvedValueOnce({ status: 200, data: [apyData] });
51
+ const result = await getValidators("mainnet-beta");
52
+ expect(network.default).toHaveBeenCalledTimes(2);
53
+ expect(result[0]).toMatchObject({
54
+ activeStake: 1000000,
55
+ voteAccount: "test-validator",
56
+ apy: 0.075,
57
+ });
58
+ });
59
+ it("should handle APY fetch errors gracefully", async () => {
60
+ const validator = mockValidator();
61
+ jest
62
+ .spyOn(network, "default")
63
+ .mockResolvedValueOnce({ status: 200, data: [validator] })
64
+ .mockRejectedValueOnce(new Error("Network error"));
65
+ const result = await getValidators("mainnet-beta");
66
+ expect(result[0]).toMatchObject({
67
+ name: "Test Validator",
68
+ apy: undefined,
69
+ });
70
+ });
71
+ it("should handle invalid APY data", async () => {
72
+ const validator = mockValidator();
73
+ jest
74
+ .spyOn(network, "default")
75
+ .mockResolvedValueOnce({ status: 200, data: [validator] })
76
+ .mockResolvedValueOnce({ status: 200, data: "invalid" });
77
+ const result = await getValidators("mainnet-beta");
78
+ expect(result[0]).toMatchObject({
79
+ name: "Test Validator",
80
+ apy: undefined,
81
+ });
82
+ });
83
+ it("should filter invalid APY entries", async () => {
84
+ const validator = mockValidator({ vote_account: "valid-validator" });
85
+ const apyData = [
86
+ mockApyData({ address: "valid-validator", delegator_apy: 0.075 }),
87
+ mockApyData({ address: null, delegator_apy: 0.08 }),
88
+ mockApyData({ address: "other", delegator_apy: "invalid" }),
89
+ ];
90
+ jest
91
+ .spyOn(network, "default")
92
+ .mockResolvedValueOnce({ status: 200, data: [validator] })
93
+ .mockResolvedValueOnce({ status: 200, data: apyData });
94
+ const result = await getValidators("mainnet-beta");
95
+ expect(result).toEqual([
96
+ {
97
+ activeStake: 1000000,
98
+ voteAccount: "valid-validator",
99
+ apy: 0.075,
100
+ name: "Test Validator",
101
+ avatarUrl: undefined,
102
+ wwwUrl: undefined,
103
+ totalScore: 8,
104
+ commission: 5,
105
+ },
106
+ ]);
107
+ });
108
+ });
109
+ describe("validator filtering", () => {
110
+ it("should filter delinquent and incomplete validators", async () => {
111
+ const validators = [
112
+ mockValidator({ vote_account: "good", delinquent: false }),
113
+ mockValidator({ vote_account: "bad", delinquent: true }),
114
+ mockValidator({ vote_account: "incomplete", active_stake: null }),
115
+ ];
116
+ jest
117
+ .spyOn(network, "default")
118
+ .mockResolvedValueOnce({ status: 200, data: validators })
119
+ .mockResolvedValueOnce({ status: 200, data: [] });
120
+ const result = await getValidators("mainnet-beta");
121
+ expect(result).toEqual([
122
+ {
123
+ activeStake: 1000000,
124
+ commission: 5,
125
+ totalScore: 8,
126
+ voteAccount: "good",
127
+ name: "Test Validator",
128
+ avatarUrl: undefined,
129
+ wwwUrl: undefined,
130
+ apy: undefined,
131
+ },
132
+ ]);
133
+ });
134
+ it("should handle failed API calls", async () => {
135
+ jest
136
+ .spyOn(network, "default")
137
+ .mockResolvedValueOnce({ status: 500, data: null })
138
+ .mockResolvedValueOnce({ status: 200, data: [] });
139
+ const result = await getValidators("mainnet-beta");
140
+ expect(result).toHaveLength(0);
141
+ });
142
+ });
143
+ });
144
+ //# sourceMappingURL=validator-app.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator-app.unit.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/validator-app.unit.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAW,EAAE,EAAE;IAClE,MAAM,QAAQ,GAA2B;QACvC,8BAA8B,EAAE,6DAA6D;QAC7F,sCAAsC,EACpC,6DAA6D;QAC/D,kCAAkC,EAChC,+EAA+E;KAClF,CAAC;IACF,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,CAAC,SAAS,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IACzC,YAAY,EAAE,OAAO;IACrB,UAAU,EAAE,CAAC;IACb,WAAW,EAAE,CAAC;IACd,YAAY,EAAE,gBAAgB;IAC9B,IAAI,EAAE,gBAAgB;IACtB,UAAU,EAAE,KAAK;IACjB,GAAG,SAAS;CACb,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAC,SAAS,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IACvC,OAAO,EAAE,gBAAgB;IACzB,aAAa,EAAE,KAAK;IACpB,IAAI,EAAE,gBAAgB;IACtB,GAAG,SAAS;CACb,CAAC,CAAC;AAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,gDAAgD;QAChD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAE5E,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;YAE9C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC;gBAC3C,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,iGAAiG;aACvG,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;YAE9B,IAAI;iBACD,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC;iBACzB,qBAAqB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzD,qBAAqB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAE3D,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,cAAc,CAAC,CAAC;YAEnD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;gBAC9B,WAAW,EAAE,OAAO;gBACpB,WAAW,EAAE,gBAAgB;gBAC7B,GAAG,EAAE,KAAK;aACX,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;YAClC,IAAI;iBACD,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC;iBACzB,qBAAqB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzD,qBAAqB,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;YAErD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,cAAc,CAAC,CAAC;YAEnD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;gBAC9B,IAAI,EAAE,gBAAgB;gBACtB,GAAG,EAAE,SAAS;aACf,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;YAClC,IAAI;iBACD,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC;iBACzB,qBAAqB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzD,qBAAqB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YAE3D,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,cAAc,CAAC,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;gBAC9B,IAAI,EAAE,gBAAgB;gBACtB,GAAG,EAAE,SAAS;aACf,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,SAAS,GAAG,aAAa,CAAC,EAAE,YAAY,EAAE,iBAAiB,EAAE,CAAC,CAAC;YACrE,MAAM,OAAO,GAAG;gBACd,WAAW,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;gBACjE,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;gBACnD,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC;aAC5D,CAAC;YAEF,IAAI;iBACD,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC;iBACzB,qBAAqB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzD,qBAAqB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAEzD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,cAAc,CAAC,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB;oBACE,WAAW,EAAE,OAAO;oBACpB,WAAW,EAAE,iBAAiB;oBAC9B,GAAG,EAAE,KAAK;oBACV,IAAI,EAAE,gBAAgB;oBACtB,SAAS,EAAE,SAAS;oBACpB,MAAM,EAAE,SAAS;oBACjB,UAAU,EAAE,CAAC;oBACb,UAAU,EAAE,CAAC;iBACd;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,UAAU,GAAG;gBACjB,aAAa,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;gBAC1D,aAAa,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;gBACxD,aAAa,CAAC,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;aAClE,CAAC;YAEF,IAAI;iBACD,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC;iBACzB,qBAAqB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;iBACxD,qBAAqB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAEpD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,cAAc,CAAC,CAAC;YAEnD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB;oBACE,WAAW,EAAE,OAAO;oBACpB,UAAU,EAAE,CAAC;oBACb,UAAU,EAAE,CAAC;oBACb,WAAW,EAAE,MAAM;oBACnB,IAAI,EAAE,gBAAgB;oBACtB,SAAS,EAAE,SAAS;oBACpB,MAAM,EAAE,SAAS;oBACjB,GAAG,EAAE,SAAS;iBACf;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,IAAI;iBACD,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC;iBACzB,qBAAqB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;iBAClD,qBAAqB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAEpD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,cAAc,CAAC,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Transaction } from "./types";
2
+ import type { DatasetTest } from "@ledgerhq/types-live";
3
+ export declare const dataset: DatasetTest<Transaction>;
4
+ //# sourceMappingURL=bridge.integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.integration.test.d.ts","sourceRoot":"","sources":["../src/bridge.integration.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,WAAW,EAAoB,MAAM,SAAS,CAAC;AAU/E,OAAO,KAAK,EAA8B,WAAW,EAAE,MAAM,sBAAsB,CAAC;AA0FpF,eAAO,MAAM,OAAO,EAAE,WAAW,CAAC,WAAW,CAK5C,CAAC"}