@ledgerhq/coin-solana 0.35.0-nightly.6 → 0.35.0-nightly.8

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 (167) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +18 -0
  3. package/lib/network/chain/account/parser.d.ts +1 -1
  4. package/lib/network/chain/account/stake.d.ts +23 -23
  5. package/lib/network/chain/account/token.d.ts +7 -7
  6. package/lib/network/chain/instruction/stake/types.d.ts +8 -8
  7. package/lib/network/chain/instruction/system/types.d.ts +10 -10
  8. package/lib-es/network/chain/account/parser.d.ts +1 -1
  9. package/lib-es/network/chain/account/stake.d.ts +23 -23
  10. package/lib-es/network/chain/account/token.d.ts +7 -7
  11. package/lib-es/network/chain/instruction/stake/types.d.ts +8 -8
  12. package/lib-es/network/chain/instruction/system/types.d.ts +10 -10
  13. package/package.json +6 -6
  14. package/lib/__fixtures__/solana-spl-epjfwdd5aufqssqem2qn1xzybapc8g4weggkzwytdt1v.json +0 -50
  15. package/lib/__tests__/fixtures/helpers.fixture.d.ts +0 -138
  16. package/lib/__tests__/fixtures/helpers.fixture.d.ts.map +0 -1
  17. package/lib/__tests__/fixtures/helpers.fixture.js +0 -124
  18. package/lib/__tests__/fixtures/helpers.fixture.js.map +0 -1
  19. package/lib/__tests__/scan-accounts.test.d.ts +0 -2
  20. package/lib/__tests__/scan-accounts.test.d.ts.map +0 -1
  21. package/lib/__tests__/scan-accounts.test.js +0 -426
  22. package/lib/__tests__/scan-accounts.test.js.map +0 -1
  23. package/lib/__tests__/unit/hw-signMessage.unit.test.d.ts +0 -2
  24. package/lib/__tests__/unit/hw-signMessage.unit.test.d.ts.map +0 -1
  25. package/lib/__tests__/unit/hw-signMessage.unit.test.js +0 -91
  26. package/lib/__tests__/unit/hw-signMessage.unit.test.js.map +0 -1
  27. package/lib/__tests__/unit/nftResolvers.unit.test.d.ts +0 -2
  28. package/lib/__tests__/unit/nftResolvers.unit.test.d.ts.map +0 -1
  29. package/lib/__tests__/unit/nftResolvers.unit.test.js +0 -147
  30. package/lib/__tests__/unit/nftResolvers.unit.test.js.map +0 -1
  31. package/lib/__tests__/unit/utils.unit.test.d.ts +0 -2
  32. package/lib/__tests__/unit/utils.unit.test.d.ts.map +0 -1
  33. package/lib/__tests__/unit/utils.unit.test.js +0 -16
  34. package/lib/__tests__/unit/utils.unit.test.js.map +0 -1
  35. package/lib/__tests__/unit/validator-app.unit.test.d.ts +0 -2
  36. package/lib/__tests__/unit/validator-app.unit.test.d.ts.map +0 -1
  37. package/lib/__tests__/unit/validator-app.unit.test.js +0 -169
  38. package/lib/__tests__/unit/validator-app.unit.test.js.map +0 -1
  39. package/lib/bridge.integration.test.d.ts +0 -4
  40. package/lib/bridge.integration.test.d.ts.map +0 -1
  41. package/lib/bridge.integration.test.js +0 -870
  42. package/lib/bridge.integration.test.js.map +0 -1
  43. package/lib/buildTransaction.test.d.ts +0 -2
  44. package/lib/buildTransaction.test.d.ts.map +0 -1
  45. package/lib/buildTransaction.test.js +0 -164
  46. package/lib/buildTransaction.test.js.map +0 -1
  47. package/lib/cryptoAssetsStore.test.d.ts +0 -2
  48. package/lib/cryptoAssetsStore.test.d.ts.map +0 -1
  49. package/lib/cryptoAssetsStore.test.js +0 -15
  50. package/lib/cryptoAssetsStore.test.js.map +0 -1
  51. package/lib/network/chain/web3.integration.test.d.ts +0 -2
  52. package/lib/network/chain/web3.integration.test.d.ts.map +0 -1
  53. package/lib/network/chain/web3.integration.test.js +0 -70
  54. package/lib/network/chain/web3.integration.test.js.map +0 -1
  55. package/lib/offchainMessage/format.unit.test.d.ts +0 -2
  56. package/lib/offchainMessage/format.unit.test.d.ts.map +0 -1
  57. package/lib/offchainMessage/format.unit.test.js +0 -124
  58. package/lib/offchainMessage/format.unit.test.js.map +0 -1
  59. package/lib/preload.test.d.ts +0 -2
  60. package/lib/preload.test.d.ts.map +0 -1
  61. package/lib/preload.test.js +0 -9
  62. package/lib/preload.test.js.map +0 -1
  63. package/lib/prepareTransaction.test.d.ts +0 -2
  64. package/lib/prepareTransaction.test.d.ts.map +0 -1
  65. package/lib/prepareTransaction.test.js +0 -139
  66. package/lib/prepareTransaction.test.js.map +0 -1
  67. package/lib/signOperation.test.d.ts +0 -3
  68. package/lib/signOperation.test.d.ts.map +0 -1
  69. package/lib/signOperation.test.js +0 -139
  70. package/lib/signOperation.test.js.map +0 -1
  71. package/lib/tests/preload.fixtures.d.ts +0 -5
  72. package/lib/tests/preload.fixtures.d.ts.map +0 -1
  73. package/lib/tests/preload.fixtures.js +0 -28
  74. package/lib/tests/preload.fixtures.js.map +0 -1
  75. package/lib/tests/preload.unit.test.d.ts +0 -2
  76. package/lib/tests/preload.unit.test.d.ts.map +0 -1
  77. package/lib/tests/preload.unit.test.js +0 -175
  78. package/lib/tests/preload.unit.test.js.map +0 -1
  79. package/lib/tests/stakes-bridge.unit.test.d.ts +0 -2
  80. package/lib/tests/stakes-bridge.unit.test.d.ts.map +0 -1
  81. package/lib/tests/stakes-bridge.unit.test.js +0 -166
  82. package/lib/tests/stakes-bridge.unit.test.js.map +0 -1
  83. package/lib/tests/test-onchain-data.fixture.d.ts +0 -20
  84. package/lib/tests/test-onchain-data.fixture.d.ts.map +0 -1
  85. package/lib/tests/test-onchain-data.fixture.js +0 -34
  86. package/lib/tests/test-onchain-data.fixture.js.map +0 -1
  87. package/lib/tests/tokens-bridge.unit.test.d.ts +0 -2
  88. package/lib/tests/tokens-bridge.unit.test.d.ts.map +0 -1
  89. package/lib/tests/tokens-bridge.unit.test.js +0 -615
  90. package/lib/tests/tokens-bridge.unit.test.js.map +0 -1
  91. package/lib-es/__fixtures__/solana-spl-epjfwdd5aufqssqem2qn1xzybapc8g4weggkzwytdt1v.json +0 -50
  92. package/lib-es/__tests__/fixtures/helpers.fixture.d.ts +0 -138
  93. package/lib-es/__tests__/fixtures/helpers.fixture.d.ts.map +0 -1
  94. package/lib-es/__tests__/fixtures/helpers.fixture.js +0 -110
  95. package/lib-es/__tests__/fixtures/helpers.fixture.js.map +0 -1
  96. package/lib-es/__tests__/scan-accounts.test.d.ts +0 -2
  97. package/lib-es/__tests__/scan-accounts.test.d.ts.map +0 -1
  98. package/lib-es/__tests__/scan-accounts.test.js +0 -398
  99. package/lib-es/__tests__/scan-accounts.test.js.map +0 -1
  100. package/lib-es/__tests__/unit/hw-signMessage.unit.test.d.ts +0 -2
  101. package/lib-es/__tests__/unit/hw-signMessage.unit.test.d.ts.map +0 -1
  102. package/lib-es/__tests__/unit/hw-signMessage.unit.test.js +0 -86
  103. package/lib-es/__tests__/unit/hw-signMessage.unit.test.js.map +0 -1
  104. package/lib-es/__tests__/unit/nftResolvers.unit.test.d.ts +0 -2
  105. package/lib-es/__tests__/unit/nftResolvers.unit.test.d.ts.map +0 -1
  106. package/lib-es/__tests__/unit/nftResolvers.unit.test.js +0 -142
  107. package/lib-es/__tests__/unit/nftResolvers.unit.test.js.map +0 -1
  108. package/lib-es/__tests__/unit/utils.unit.test.d.ts +0 -2
  109. package/lib-es/__tests__/unit/utils.unit.test.d.ts.map +0 -1
  110. package/lib-es/__tests__/unit/utils.unit.test.js +0 -14
  111. package/lib-es/__tests__/unit/utils.unit.test.js.map +0 -1
  112. package/lib-es/__tests__/unit/validator-app.unit.test.d.ts +0 -2
  113. package/lib-es/__tests__/unit/validator-app.unit.test.d.ts.map +0 -1
  114. package/lib-es/__tests__/unit/validator-app.unit.test.js +0 -144
  115. package/lib-es/__tests__/unit/validator-app.unit.test.js.map +0 -1
  116. package/lib-es/bridge.integration.test.d.ts +0 -4
  117. package/lib-es/bridge.integration.test.d.ts.map +0 -1
  118. package/lib-es/bridge.integration.test.js +0 -864
  119. package/lib-es/bridge.integration.test.js.map +0 -1
  120. package/lib-es/buildTransaction.test.d.ts +0 -2
  121. package/lib-es/buildTransaction.test.d.ts.map +0 -1
  122. package/lib-es/buildTransaction.test.js +0 -162
  123. package/lib-es/buildTransaction.test.js.map +0 -1
  124. package/lib-es/cryptoAssetsStore.test.d.ts +0 -2
  125. package/lib-es/cryptoAssetsStore.test.d.ts.map +0 -1
  126. package/lib-es/cryptoAssetsStore.test.js +0 -13
  127. package/lib-es/cryptoAssetsStore.test.js.map +0 -1
  128. package/lib-es/network/chain/web3.integration.test.d.ts +0 -2
  129. package/lib-es/network/chain/web3.integration.test.d.ts.map +0 -1
  130. package/lib-es/network/chain/web3.integration.test.js +0 -68
  131. package/lib-es/network/chain/web3.integration.test.js.map +0 -1
  132. package/lib-es/offchainMessage/format.unit.test.d.ts +0 -2
  133. package/lib-es/offchainMessage/format.unit.test.d.ts.map +0 -1
  134. package/lib-es/offchainMessage/format.unit.test.js +0 -122
  135. package/lib-es/offchainMessage/format.unit.test.js.map +0 -1
  136. package/lib-es/preload.test.d.ts +0 -2
  137. package/lib-es/preload.test.d.ts.map +0 -1
  138. package/lib-es/preload.test.js +0 -7
  139. package/lib-es/preload.test.js.map +0 -1
  140. package/lib-es/prepareTransaction.test.d.ts +0 -2
  141. package/lib-es/prepareTransaction.test.d.ts.map +0 -1
  142. package/lib-es/prepareTransaction.test.js +0 -134
  143. package/lib-es/prepareTransaction.test.js.map +0 -1
  144. package/lib-es/signOperation.test.d.ts +0 -3
  145. package/lib-es/signOperation.test.d.ts.map +0 -1
  146. package/lib-es/signOperation.test.js +0 -135
  147. package/lib-es/signOperation.test.js.map +0 -1
  148. package/lib-es/tests/preload.fixtures.d.ts +0 -5
  149. package/lib-es/tests/preload.fixtures.d.ts.map +0 -1
  150. package/lib-es/tests/preload.fixtures.js +0 -25
  151. package/lib-es/tests/preload.fixtures.js.map +0 -1
  152. package/lib-es/tests/preload.unit.test.d.ts +0 -2
  153. package/lib-es/tests/preload.unit.test.d.ts.map +0 -1
  154. package/lib-es/tests/preload.unit.test.js +0 -147
  155. package/lib-es/tests/preload.unit.test.js.map +0 -1
  156. package/lib-es/tests/stakes-bridge.unit.test.d.ts +0 -2
  157. package/lib-es/tests/stakes-bridge.unit.test.d.ts.map +0 -1
  158. package/lib-es/tests/stakes-bridge.unit.test.js +0 -161
  159. package/lib-es/tests/stakes-bridge.unit.test.js.map +0 -1
  160. package/lib-es/tests/test-onchain-data.fixture.d.ts +0 -20
  161. package/lib-es/tests/test-onchain-data.fixture.d.ts.map +0 -1
  162. package/lib-es/tests/test-onchain-data.fixture.js +0 -28
  163. package/lib-es/tests/test-onchain-data.fixture.js.map +0 -1
  164. package/lib-es/tests/tokens-bridge.unit.test.d.ts +0 -2
  165. package/lib-es/tests/tokens-bridge.unit.test.d.ts.map +0 -1
  166. package/lib-es/tests/tokens-bridge.unit.test.js +0 -610
  167. package/lib-es/tests/tokens-bridge.unit.test.js.map +0 -1
@@ -1,91 +0,0 @@
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 hw_signMessage_1 = require("../../hw-signMessage");
7
- const signer_1 = require("../../signer");
8
- const config_1 = __importDefault(require("../../config"));
9
- const bs58_1 = __importDefault(require("bs58"));
10
- config_1.default.setCoinConfig(() => ({
11
- legacyOCMSMaxVersion: "1.8.0",
12
- queuedInterval: 1,
13
- token2022Enabled: false,
14
- status: { type: "active" },
15
- }));
16
- describe("Testing call to hardware off-chain sign message on Solana", () => {
17
- it("should sign a message off-chain on hardware and return the generated signature", async () => {
18
- const APP_VERSION = "1.8.2";
19
- const SIGNATURE = "4gVuB1KsM58fb3vRpnDucwW4Vi6fVGA51QDQd9ARvx4GH5yYVDPzDnvzUbSJf3YLWWdsX7zCMSN9N1GMnTYwWiJf";
20
- const BASE58_SIGNATURE = "23mXB2pc8EQzc2mT3VJR4KkBFZaUVL9Pn7LUn8NMKeHKbS1hMj1QqGsUHHD3JMGhAWtFfcmnPhFSpPttChTNzsB9";
21
- const BASE58_ENVELOPE = "LwsiJTXpooGk31Y4CaV1Qs12wTabaF83J9Tg32kPb7kk9BXc8ncpoDBzV1NPSumKckhx7dVwFH729vdvB71f8KGpp18g29N2XAD3MUiNz9tPJu36GGN4pkL7vXurXUeQqMTXdJMdH2tzaXkT3vQ9hSLDfBPhQ7Vx9Echz5CYu5u4hZapaytx177WNke8oWDTqABnqQZ3YDGt7vYDoJ2LkiGHqcqXfeVmmsAtuALSxqo75zrWi7EXadQ9CZWWX7tFnXHLY6kEksqVj2ERM9RZEyNQ3tt";
22
- const getAppConfigurationMock = jest.fn(() => {
23
- return Promise.resolve({
24
- version: APP_VERSION,
25
- blindSigningEnabled: false,
26
- pubKeyDisplayMode: signer_1.PubKeyDisplayMode.LONG,
27
- });
28
- });
29
- const signMessageMock = jest.fn((_deviceId, _messageHex) => {
30
- return Promise.resolve({ signature: Buffer.from(SIGNATURE) });
31
- });
32
- const solanaSigner = {
33
- getAppConfiguration: getAppConfigurationMock,
34
- getAddress: jest.fn(),
35
- signTransaction: jest.fn(),
36
- signMessage: signMessageMock,
37
- };
38
- const signerContext = (_, fn) => fn(solanaSigner);
39
- const accountFreshAddressPath = "44'/501'/0'/0/0";
40
- const freshAddress = "8DpKDisipx6f76cEmuGvCX9TrA3SjeR76HaTRePxHBDe";
41
- const messageHex = "54657374696E67206F6E20536F6C616E61";
42
- const offchainMessage = "ff736f6c616e61206f6666636861696e00000000000000000000000000000000000000000000000000000000000000000000016b4a46c53959cac0eff146ab323053cfc503321adfd453a7c67c91a24be03235220035343635373337343639364536373230364636453230353336463643363136453631";
43
- const result = await (0, hw_signMessage_1.signMessage)(signerContext)("", { freshAddressPath: accountFreshAddressPath, freshAddress }, { message: messageHex });
44
- expect(result.signature).toEqual(BASE58_ENVELOPE);
45
- expect(bs58_1.default.encode(bs58_1.default.decode(result.signature).subarray(1, 65))).toEqual(BASE58_SIGNATURE);
46
- expect(signMessageMock).toHaveBeenCalledTimes(1);
47
- expect(signMessageMock).toHaveBeenCalledWith(accountFreshAddressPath, offchainMessage);
48
- });
49
- it("should sign a message off-chain on legacy hardware and return the generated signature", async () => {
50
- const APP_VERSION = "1.7.1";
51
- const SIGNATURE = "4gVuB1KsM58fb3vRpnDucwW4Vi6fVGA51QDQd9ARvx4GH5yYVDPzDnvzUbSJf3YLWWdsX7zCMSN9N1GMnTYwWiJf";
52
- const BASE58_SIGNATURE = "23mXB2pc8EQzc2mT3VJR4KkBFZaUVL9Pn7LUn8NMKeHKbS1hMj1QqGsUHHD3JMGhAWtFfcmnPhFSpPttChTNzsB9";
53
- const BASE58_ENVELOPE = "tDAHsdMRLpSiAFbdWRS6d7TyG64QSwJFuRSHNH6UyjE8wQwDgawYRsUsau2n9s5drPkmDLTJdTrkA5uRYsHmmfzuMsBQvo6e72LwNjfNhmVko8ffmfM1ZNKZmyiurvDb2nfoFsLXmYTainNmRKwS6iGSBvWBYHRDMwUiX2z15gBokN2iMhuCvDsFHHVn7H4vQG";
54
- const getAppConfigurationMock = jest.fn(() => {
55
- return Promise.resolve({
56
- version: APP_VERSION,
57
- blindSigningEnabled: false,
58
- pubKeyDisplayMode: signer_1.PubKeyDisplayMode.LONG,
59
- });
60
- });
61
- const signMessageMock = jest.fn((_deviceId, _messageHex) => {
62
- return Promise.resolve({ signature: Buffer.from(SIGNATURE) });
63
- });
64
- const solanaSigner = {
65
- getAppConfiguration: getAppConfigurationMock,
66
- getAddress: jest.fn(),
67
- signTransaction: jest.fn(),
68
- signMessage: signMessageMock,
69
- };
70
- const signerContext = (_, fn) => fn(solanaSigner);
71
- const accountFreshAddressPath = "44'/501'/0'/0/0";
72
- const freshAddress = "8DpKDisipx6f76cEmuGvCX9TrA3SjeR76HaTRePxHBDe";
73
- const messageHex = "54657374696E67206F6E20536F6C616E61";
74
- const offchainMessage = "ff736f6c616e61206f6666636861696e0000220035343635373337343639364536373230364636453230353336463643363136453631";
75
- const result = await (0, hw_signMessage_1.signMessage)(signerContext)("", { freshAddressPath: accountFreshAddressPath, freshAddress }, { message: messageHex });
76
- expect(result.signature).toEqual(BASE58_ENVELOPE);
77
- expect(bs58_1.default.encode(bs58_1.default.decode(result.signature).subarray(1, 65))).toEqual(BASE58_SIGNATURE);
78
- expect(signMessageMock).toHaveBeenCalledTimes(1);
79
- expect(signMessageMock).toHaveBeenCalledWith(accountFreshAddressPath, offchainMessage);
80
- });
81
- it.each([{}, {}])("should throw an error when message options have not DefaultMessage type", async (messageOptions) => {
82
- const signerContext = (_, fn) => fn({
83
- getAppConfiguration: jest.fn(),
84
- getAddress: jest.fn(),
85
- signTransaction: jest.fn(),
86
- signMessage: jest.fn(),
87
- });
88
- await expect((0, hw_signMessage_1.signMessage)(signerContext)("", {}, messageOptions)).rejects.toThrow("Sign off-chain message on Solana must be only used with DefaultMessage type");
89
- });
90
- });
91
- //# sourceMappingURL=hw-signMessage.unit.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hw-signMessage.unit.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/hw-signMessage.unit.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=nftResolvers.unit.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nftResolvers.unit.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/nftResolvers.unit.test.ts"],"names":[],"mappings":""}
@@ -1,147 +0,0 @@
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 assert_1 = require("assert");
7
- const axios_1 = __importDefault(require("axios"));
8
- const live_env_1 = require("@ledgerhq/live-env");
9
- const nftResolvers_1 = require("../../nftResolvers");
10
- jest.mock("axios");
11
- const mockedAxios = jest.mocked(axios_1.default);
12
- // Add solana manually to the env until officially supported
13
- (0, live_env_1.setEnv)("NFT_CURRENCIES", [...(0, live_env_1.getEnv)("NFT_CURRENCIES"), "solana"]);
14
- const currencyId = "solana";
15
- const wrongCurrencyId = "bitcoin";
16
- const randomNftContract = "13vQFDKvvmebfFQdN4XVS7jDuzXoThm2DMn5SxPJhWmA";
17
- const randomTokenId = "0";
18
- const metadata = {
19
- description: "desc",
20
- links: {
21
- explorer: "explorer",
22
- opensea: null,
23
- rarible: null,
24
- etherscan: null,
25
- },
26
- medias: {
27
- big: {
28
- mediaType: "png",
29
- uri: "big",
30
- },
31
- original: {
32
- mediaType: "png",
33
- uri: "original",
34
- },
35
- preview: {
36
- mediaType: "png",
37
- uri: "preview",
38
- },
39
- },
40
- nftName: "name",
41
- properties: [],
42
- tokenName: "collectionName",
43
- };
44
- describe("Solana Family", () => {
45
- beforeAll(() => {
46
- mockedAxios.mockResolvedValue({ data: [{}] });
47
- });
48
- beforeEach(() => {
49
- jest.clearAllMocks();
50
- });
51
- afterAll(() => {
52
- jest.restoreAllMocks();
53
- });
54
- describe("nftResolvers", () => {
55
- describe("nftMetadata", () => {
56
- it("should reject a currency when NFT is not activated on it", async () => {
57
- try {
58
- await (0, nftResolvers_1.nftMetadata)({
59
- contract: randomNftContract,
60
- currencyId: wrongCurrencyId,
61
- tokenId: randomTokenId,
62
- });
63
- (0, assert_1.fail)("Promise should have been rejected");
64
- }
65
- catch (e) {
66
- if (e instanceof assert_1.AssertionError) {
67
- throw e;
68
- }
69
- expect(e).toBeInstanceOf(Error);
70
- expect(e.message).toBe(`Solana Bridge NFT Resolver: Unsupported currency (${wrongCurrencyId})`);
71
- expect(axios_1.default).not.toHaveBeenCalled();
72
- }
73
- });
74
- it("should return nft metadata", async () => {
75
- mockedAxios.mockResolvedValueOnce({
76
- data: [
77
- {
78
- status: 200,
79
- result: {
80
- contract: randomNftContract,
81
- tokenId: randomTokenId,
82
- ...metadata,
83
- },
84
- },
85
- ],
86
- });
87
- const result = await (0, nftResolvers_1.nftMetadata)({
88
- contract: randomNftContract,
89
- currencyId,
90
- tokenId: randomTokenId,
91
- });
92
- expect(result).toEqual({
93
- status: 200,
94
- result: {
95
- contract: randomNftContract,
96
- tokenId: randomTokenId,
97
- ...metadata,
98
- },
99
- });
100
- });
101
- });
102
- describe("collectionMetadata", () => {
103
- it("should reject a currency when NFT is not activated on it", async () => {
104
- try {
105
- await (0, nftResolvers_1.collectionMetadata)({
106
- contract: randomNftContract,
107
- currencyId: wrongCurrencyId,
108
- });
109
- (0, assert_1.fail)("Promise should have been rejected");
110
- }
111
- catch (e) {
112
- if (e instanceof assert_1.AssertionError) {
113
- throw e;
114
- }
115
- expect(e).toBeInstanceOf(Error);
116
- expect(e.message).toBe(`Solana Bridge NFT Resolver: Unsupported currency (${wrongCurrencyId})`);
117
- expect(axios_1.default).not.toHaveBeenCalled();
118
- }
119
- });
120
- it("should return nft metadata", async () => {
121
- mockedAxios.mockResolvedValueOnce({
122
- data: [
123
- {
124
- status: 200,
125
- result: {
126
- contract: randomNftContract,
127
- tokenName: "CollectionName",
128
- },
129
- },
130
- ],
131
- });
132
- const result = await (0, nftResolvers_1.collectionMetadata)({
133
- contract: randomNftContract,
134
- currencyId,
135
- });
136
- expect(result).toEqual({
137
- status: 200,
138
- result: {
139
- contract: randomNftContract,
140
- tokenName: "CollectionName",
141
- },
142
- });
143
- });
144
- });
145
- });
146
- });
147
- //# sourceMappingURL=nftResolvers.unit.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nftResolvers.unit.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/nftResolvers.unit.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=utils.unit.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.unit.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/utils.unit.test.ts"],"names":[],"mappings":""}
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const utils_1 = require("../../utils");
4
- describe("utils - Default Validators", () => {
5
- it("should have APY property", () => {
6
- expect(utils_1.LEDGER_VALIDATOR_BY_FIGMENT).toMatchObject({ apy: expect.any(Number) });
7
- expect(utils_1.LEDGER_VALIDATOR_BY_CHORUS_ONE).toMatchObject({ apy: expect.any(Number) });
8
- });
9
- it("should have different APY values", () => {
10
- expect(utils_1.LEDGER_VALIDATOR_BY_FIGMENT.apy).not.toBe(utils_1.LEDGER_VALIDATOR_BY_CHORUS_ONE.apy);
11
- });
12
- it("should reference correct default", () => {
13
- expect(utils_1.LEDGER_VALIDATOR_DEFAULT).toBe(utils_1.LEDGER_VALIDATOR_BY_FIGMENT);
14
- });
15
- });
16
- //# sourceMappingURL=utils.unit.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.unit.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/utils.unit.test.ts"],"names":[],"mappings":";;AAAA,uCAIqB;AAErB,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,CAAC,mCAA2B,CAAC,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/E,MAAM,CAAC,sCAA8B,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,mCAA2B,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,sCAA8B,CAAC,GAAG,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,gCAAwB,CAAC,CAAC,IAAI,CAAC,mCAA2B,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=validator-app.unit.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validator-app.unit.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/validator-app.unit.test.ts"],"names":[],"mappings":""}
@@ -1,169 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- const validator_app_1 = require("../../network/validator-app");
27
- const network = __importStar(require("@ledgerhq/live-network"));
28
- const live_env_1 = require("@ledgerhq/live-env");
29
- jest.spyOn({ getEnv: live_env_1.getEnv }, "getEnv").mockImplementation((key) => {
30
- const testUrls = {
31
- SOLANA_VALIDATORS_APP_BASE_URL: "https://validators-solana.coin.ledger.com/api/v1/validators",
32
- SOLANA_TESTNET_VALIDATORS_APP_BASE_URL: "https://validators-solana.coin.ledger.com/api/v1/validators",
33
- SOLANA_VALIDATORS_SUMMARY_BASE_URL: "https://earn-dashboard.aws.stg.ldg-tech.com/figment/solana/validators_summary",
34
- };
35
- return testUrls[key] || "";
36
- });
37
- const mockValidator = (overrides = {}) => ({
38
- active_stake: 1000000,
39
- commission: 5,
40
- total_score: 8,
41
- vote_account: "test-validator",
42
- name: "Test Validator",
43
- delinquent: false,
44
- ...overrides,
45
- });
46
- const mockApyData = (overrides = {}) => ({
47
- address: "test-validator",
48
- delegator_apy: 0.075,
49
- name: "Test Validator",
50
- ...overrides,
51
- });
52
- describe("validator-app", () => {
53
- beforeEach(() => {
54
- jest.clearAllMocks();
55
- // Suppress console.warn for cleaner test output
56
- jest.spyOn(console, "warn").mockImplementation(() => { });
57
- });
58
- describe("APY integration", () => {
59
- it("should work for testnet without APY", async () => {
60
- jest.spyOn(network, "default").mockResolvedValue({ status: 200, data: [] });
61
- const result = await (0, validator_app_1.getValidators)("testnet");
62
- expect(network.default).toHaveBeenCalledTimes(1);
63
- expect(network.default).toHaveBeenCalledWith({
64
- method: "GET",
65
- url: "https://validators-solana.coin.ledger.com/api/v1/validators/testnet.json?order=score&limit=1000",
66
- });
67
- expect(result).toEqual([]);
68
- });
69
- it("should fetch and integrate APY for mainnet", async () => {
70
- const validator = mockValidator();
71
- const apyData = mockApyData();
72
- jest
73
- .spyOn(network, "default")
74
- .mockResolvedValueOnce({ status: 200, data: [validator] })
75
- .mockResolvedValueOnce({ status: 200, data: [apyData] });
76
- const result = await (0, validator_app_1.getValidators)("mainnet-beta");
77
- expect(network.default).toHaveBeenCalledTimes(2);
78
- expect(result[0]).toMatchObject({
79
- activeStake: 1000000,
80
- voteAccount: "test-validator",
81
- apy: 0.075,
82
- });
83
- });
84
- it("should handle APY fetch errors gracefully", async () => {
85
- const validator = mockValidator();
86
- jest
87
- .spyOn(network, "default")
88
- .mockResolvedValueOnce({ status: 200, data: [validator] })
89
- .mockRejectedValueOnce(new Error("Network error"));
90
- const result = await (0, validator_app_1.getValidators)("mainnet-beta");
91
- expect(result[0]).toMatchObject({
92
- name: "Test Validator",
93
- apy: undefined,
94
- });
95
- });
96
- it("should handle invalid APY data", async () => {
97
- const validator = mockValidator();
98
- jest
99
- .spyOn(network, "default")
100
- .mockResolvedValueOnce({ status: 200, data: [validator] })
101
- .mockResolvedValueOnce({ status: 200, data: "invalid" });
102
- const result = await (0, validator_app_1.getValidators)("mainnet-beta");
103
- expect(result[0]).toMatchObject({
104
- name: "Test Validator",
105
- apy: undefined,
106
- });
107
- });
108
- it("should filter invalid APY entries", async () => {
109
- const validator = mockValidator({ vote_account: "valid-validator" });
110
- const apyData = [
111
- mockApyData({ address: "valid-validator", delegator_apy: 0.075 }),
112
- mockApyData({ address: null, delegator_apy: 0.08 }),
113
- mockApyData({ address: "other", delegator_apy: "invalid" }),
114
- ];
115
- jest
116
- .spyOn(network, "default")
117
- .mockResolvedValueOnce({ status: 200, data: [validator] })
118
- .mockResolvedValueOnce({ status: 200, data: apyData });
119
- const result = await (0, validator_app_1.getValidators)("mainnet-beta");
120
- expect(result).toEqual([
121
- {
122
- activeStake: 1000000,
123
- voteAccount: "valid-validator",
124
- apy: 0.075,
125
- name: "Test Validator",
126
- avatarUrl: undefined,
127
- wwwUrl: undefined,
128
- totalScore: 8,
129
- commission: 5,
130
- },
131
- ]);
132
- });
133
- });
134
- describe("validator filtering", () => {
135
- it("should filter delinquent and incomplete validators", async () => {
136
- const validators = [
137
- mockValidator({ vote_account: "good", delinquent: false }),
138
- mockValidator({ vote_account: "bad", delinquent: true }),
139
- mockValidator({ vote_account: "incomplete", active_stake: null }),
140
- ];
141
- jest
142
- .spyOn(network, "default")
143
- .mockResolvedValueOnce({ status: 200, data: validators })
144
- .mockResolvedValueOnce({ status: 200, data: [] });
145
- const result = await (0, validator_app_1.getValidators)("mainnet-beta");
146
- expect(result).toEqual([
147
- {
148
- activeStake: 1000000,
149
- commission: 5,
150
- totalScore: 8,
151
- voteAccount: "good",
152
- name: "Test Validator",
153
- avatarUrl: undefined,
154
- wwwUrl: undefined,
155
- apy: undefined,
156
- },
157
- ]);
158
- });
159
- it("should handle failed API calls", async () => {
160
- jest
161
- .spyOn(network, "default")
162
- .mockResolvedValueOnce({ status: 500, data: null })
163
- .mockResolvedValueOnce({ status: 200, data: [] });
164
- const result = await (0, validator_app_1.getValidators)("mainnet-beta");
165
- expect(result).toHaveLength(0);
166
- });
167
- });
168
- });
169
- //# sourceMappingURL=validator-app.unit.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validator-app.unit.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/validator-app.unit.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+DAA4D;AAC5D,gEAAkD;AAClD,iDAA4C;AAE5C,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAN,iBAAM,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,IAAA,6BAAa,EAAC,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,IAAA,6BAAa,EAAC,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,IAAA,6BAAa,EAAC,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,IAAA,6BAAa,EAAC,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,IAAA,6BAAa,EAAC,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,IAAA,6BAAa,EAAC,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,IAAA,6BAAa,EAAC,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"}
@@ -1,4 +0,0 @@
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
@@ -1 +0,0 @@
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"}