@ledgerhq/coin-mina 1.3.0-nightly.7 → 1.3.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 (107) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +21 -63
  3. package/lib/api/index.integ.test.d.ts +2 -0
  4. package/lib/api/index.integ.test.d.ts.map +1 -0
  5. package/lib/api/index.integ.test.js +57 -0
  6. package/lib/api/index.integ.test.js.map +1 -0
  7. package/lib/api/rosetta/utils.test.d.ts +2 -0
  8. package/lib/api/rosetta/utils.test.d.ts.map +1 -0
  9. package/lib/api/rosetta/utils.test.js +82 -0
  10. package/lib/api/rosetta/utils.test.js.map +1 -0
  11. package/lib/bridge/broadcast.test.d.ts +2 -0
  12. package/lib/bridge/broadcast.test.d.ts.map +1 -0
  13. package/lib/bridge/broadcast.test.js +36 -0
  14. package/lib/bridge/broadcast.test.js.map +1 -0
  15. package/lib/bridge/buildTransaction.test.d.ts +2 -0
  16. package/lib/bridge/buildTransaction.test.d.ts.map +1 -0
  17. package/lib/bridge/buildTransaction.test.js +57 -0
  18. package/lib/bridge/buildTransaction.test.js.map +1 -0
  19. package/lib/bridge/createTransaction.test.d.ts +2 -0
  20. package/lib/bridge/createTransaction.test.d.ts.map +1 -0
  21. package/lib/bridge/createTransaction.test.js +24 -0
  22. package/lib/bridge/createTransaction.test.js.map +1 -0
  23. package/lib/bridge/getTransactionStatus.test.d.ts +2 -0
  24. package/lib/bridge/getTransactionStatus.test.d.ts.map +1 -0
  25. package/lib/bridge/getTransactionStatus.test.js +138 -0
  26. package/lib/bridge/getTransactionStatus.test.js.map +1 -0
  27. package/lib/bridge/index.test.d.ts +2 -0
  28. package/lib/bridge/index.test.d.ts.map +1 -0
  29. package/lib/bridge/index.test.js +32 -0
  30. package/lib/bridge/index.test.js.map +1 -0
  31. package/lib/bridge/prepareTransaction.test.d.ts +2 -0
  32. package/lib/bridge/prepareTransaction.test.d.ts.map +1 -0
  33. package/lib/bridge/prepareTransaction.test.js +43 -0
  34. package/lib/bridge/prepareTransaction.test.js.map +1 -0
  35. package/lib/bridge/signOperation.test.d.ts +2 -0
  36. package/lib/bridge/signOperation.test.d.ts.map +1 -0
  37. package/lib/bridge/signOperation.test.js +129 -0
  38. package/lib/bridge/signOperation.test.js.map +1 -0
  39. package/lib/bridge/synchronisation.test.d.ts +2 -0
  40. package/lib/bridge/synchronisation.test.d.ts.map +1 -0
  41. package/lib/bridge/synchronisation.test.js +164 -0
  42. package/lib/bridge/synchronisation.test.js.map +1 -0
  43. package/lib/common-logic/index.test.d.ts +2 -0
  44. package/lib/common-logic/index.test.d.ts.map +1 -0
  45. package/lib/common-logic/index.test.js +181 -0
  46. package/lib/common-logic/index.test.js.map +1 -0
  47. package/lib/signer/getAddress.test.d.ts +2 -0
  48. package/lib/signer/getAddress.test.d.ts.map +1 -0
  49. package/lib/signer/getAddress.test.js +106 -0
  50. package/lib/signer/getAddress.test.js.map +1 -0
  51. package/lib/test/testUtils.test.d.ts +2 -0
  52. package/lib/test/testUtils.test.d.ts.map +1 -0
  53. package/lib/test/testUtils.test.js +11 -0
  54. package/lib/test/testUtils.test.js.map +1 -0
  55. package/lib-es/api/index.integ.test.d.ts +2 -0
  56. package/lib-es/api/index.integ.test.d.ts.map +1 -0
  57. package/lib-es/api/index.integ.test.js +55 -0
  58. package/lib-es/api/index.integ.test.js.map +1 -0
  59. package/lib-es/api/rosetta/utils.test.d.ts +2 -0
  60. package/lib-es/api/rosetta/utils.test.d.ts.map +1 -0
  61. package/lib-es/api/rosetta/utils.test.js +80 -0
  62. package/lib-es/api/rosetta/utils.test.js.map +1 -0
  63. package/lib-es/bridge/broadcast.test.d.ts +2 -0
  64. package/lib-es/bridge/broadcast.test.d.ts.map +1 -0
  65. package/lib-es/bridge/broadcast.test.js +31 -0
  66. package/lib-es/bridge/broadcast.test.js.map +1 -0
  67. package/lib-es/bridge/buildTransaction.test.d.ts +2 -0
  68. package/lib-es/bridge/buildTransaction.test.d.ts.map +1 -0
  69. package/lib-es/bridge/buildTransaction.test.js +55 -0
  70. package/lib-es/bridge/buildTransaction.test.js.map +1 -0
  71. package/lib-es/bridge/createTransaction.test.d.ts +2 -0
  72. package/lib-es/bridge/createTransaction.test.d.ts.map +1 -0
  73. package/lib-es/bridge/createTransaction.test.js +19 -0
  74. package/lib-es/bridge/createTransaction.test.js.map +1 -0
  75. package/lib-es/bridge/getTransactionStatus.test.d.ts +2 -0
  76. package/lib-es/bridge/getTransactionStatus.test.d.ts.map +1 -0
  77. package/lib-es/bridge/getTransactionStatus.test.js +133 -0
  78. package/lib-es/bridge/getTransactionStatus.test.js.map +1 -0
  79. package/lib-es/bridge/index.test.d.ts +2 -0
  80. package/lib-es/bridge/index.test.d.ts.map +1 -0
  81. package/lib-es/bridge/index.test.js +30 -0
  82. package/lib-es/bridge/index.test.js.map +1 -0
  83. package/lib-es/bridge/prepareTransaction.test.d.ts +2 -0
  84. package/lib-es/bridge/prepareTransaction.test.d.ts.map +1 -0
  85. package/lib-es/bridge/prepareTransaction.test.js +38 -0
  86. package/lib-es/bridge/prepareTransaction.test.js.map +1 -0
  87. package/lib-es/bridge/signOperation.test.d.ts +2 -0
  88. package/lib-es/bridge/signOperation.test.d.ts.map +1 -0
  89. package/lib-es/bridge/signOperation.test.js +127 -0
  90. package/lib-es/bridge/signOperation.test.js.map +1 -0
  91. package/lib-es/bridge/synchronisation.test.d.ts +2 -0
  92. package/lib-es/bridge/synchronisation.test.d.ts.map +1 -0
  93. package/lib-es/bridge/synchronisation.test.js +159 -0
  94. package/lib-es/bridge/synchronisation.test.js.map +1 -0
  95. package/lib-es/common-logic/index.test.d.ts +2 -0
  96. package/lib-es/common-logic/index.test.d.ts.map +1 -0
  97. package/lib-es/common-logic/index.test.js +179 -0
  98. package/lib-es/common-logic/index.test.js.map +1 -0
  99. package/lib-es/signer/getAddress.test.d.ts +2 -0
  100. package/lib-es/signer/getAddress.test.d.ts.map +1 -0
  101. package/lib-es/signer/getAddress.test.js +101 -0
  102. package/lib-es/signer/getAddress.test.js.map +1 -0
  103. package/lib-es/test/testUtils.test.d.ts +2 -0
  104. package/lib-es/test/testUtils.test.d.ts.map +1 -0
  105. package/lib-es/test/testUtils.test.js +9 -0
  106. package/lib-es/test/testUtils.test.js.map +1 -0
  107. package/package.json +8 -8
@@ -0,0 +1,106 @@
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 getAddress_1 = __importDefault(require("./getAddress"));
7
+ const currencies_1 = require("@ledgerhq/cryptoassets/lib/currencies");
8
+ describe("Mina getAddress resolver", () => {
9
+ // Mock the signer context
10
+ const mockSigner = {
11
+ getAddress: jest.fn(),
12
+ signTransaction: jest.fn(),
13
+ };
14
+ const commonOptions = {
15
+ currency: (0, currencies_1.getCryptoCurrencyById)("mina"),
16
+ derivationMode: "minabip44",
17
+ };
18
+ const mockSignerContext = jest.fn(async (deviceId, callback) => {
19
+ return callback(mockSigner);
20
+ });
21
+ beforeEach(() => {
22
+ jest.clearAllMocks();
23
+ });
24
+ it("should call the signer with the correct account number", async () => {
25
+ const options = {
26
+ ...commonOptions,
27
+ path: "44'/12586'/0'/0/0",
28
+ verify: false,
29
+ };
30
+ // Mock response from signer
31
+ mockSigner.getAddress.mockResolvedValue({
32
+ publicKey: "testPublicKey123",
33
+ });
34
+ const getAddress = (0, getAddress_1.default)(mockSignerContext);
35
+ await getAddress("device1", options);
36
+ expect(mockSigner.getAddress).toHaveBeenCalledWith(0, false);
37
+ });
38
+ it("should pass the verify flag correctly", async () => {
39
+ const options = {
40
+ path: "44'/12586'/2'/0/0",
41
+ verify: true,
42
+ ...commonOptions,
43
+ };
44
+ // Mock response from signer
45
+ mockSigner.getAddress.mockResolvedValue({
46
+ publicKey: "testPublicKey456",
47
+ });
48
+ const getAddress = (0, getAddress_1.default)(mockSignerContext);
49
+ await getAddress("device1", options);
50
+ expect(mockSigner.getAddress).toHaveBeenCalledWith(2, true);
51
+ });
52
+ it("should default to verify=false when not provided", async () => {
53
+ const options = {
54
+ path: "44'/12586'/1'/0/0",
55
+ ...commonOptions,
56
+ };
57
+ // Mock response from signer
58
+ mockSigner.getAddress.mockResolvedValue({
59
+ publicKey: "testPublicKey789",
60
+ });
61
+ const getAddress = (0, getAddress_1.default)(mockSignerContext);
62
+ await getAddress("device1", options);
63
+ expect(mockSigner.getAddress).toHaveBeenCalledWith(1, false);
64
+ });
65
+ it("should return the correct address format", async () => {
66
+ const options = {
67
+ path: "44'/12586'/3'/0/0",
68
+ ...commonOptions,
69
+ };
70
+ const expectedPublicKey = "minaPublicKeyABC123";
71
+ // Mock response from signer
72
+ mockSigner.getAddress.mockResolvedValue({
73
+ publicKey: expectedPublicKey,
74
+ });
75
+ const getAddress = (0, getAddress_1.default)(mockSignerContext);
76
+ const result = await getAddress("device1", options);
77
+ expect(result).toEqual({
78
+ address: expectedPublicKey,
79
+ publicKey: expectedPublicKey,
80
+ path: options.path,
81
+ });
82
+ });
83
+ it("should throw an error for invalid path", async () => {
84
+ const options = {
85
+ path: "44'/789'/0'/0/0", // Invalid coin type for Mina
86
+ verify: false,
87
+ ...commonOptions,
88
+ };
89
+ const getAddress = (0, getAddress_1.default)(mockSignerContext);
90
+ await expect(getAddress("device1", options)).rejects.toThrow();
91
+ });
92
+ it("should throw an error when publicKey is undefined", async () => {
93
+ const options = {
94
+ path: "44'/12586'/0'/0/0",
95
+ verify: false,
96
+ ...commonOptions,
97
+ };
98
+ // Mock response from signer with undefined publicKey
99
+ mockSigner.getAddress.mockResolvedValue({
100
+ publicKey: undefined,
101
+ });
102
+ const getAddress = (0, getAddress_1.default)(mockSignerContext);
103
+ await expect(getAddress("device1", options)).rejects.toThrow("[mina] getAddress: expected publicKey to be defined");
104
+ });
105
+ });
106
+ //# sourceMappingURL=getAddress.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAddress.test.js","sourceRoot":"","sources":["../../src/signer/getAddress.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=testUtils.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testUtils.test.d.ts","sourceRoot":"","sources":["../../src/test/testUtils.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const testUtils_1 = require("./testUtils");
4
+ describe("testUtils", () => {
5
+ it("getRandomTransferID", () => {
6
+ const id = (0, testUtils_1.getRandomTransferID)();
7
+ expect(id).toBeDefined();
8
+ expect(id.length).toBeGreaterThan(0);
9
+ });
10
+ });
11
+ //# sourceMappingURL=testUtils.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testUtils.test.js","sourceRoot":"","sources":["../../src/test/testUtils.test.ts"],"names":[],"mappings":";;AAAA,2CAAkD;AAElD,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,EAAE,GAAG,IAAA,+BAAmB,GAAE,CAAC;QACjC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.integ.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.integ.test.d.ts","sourceRoot":"","sources":["../../src/api/index.integ.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,55 @@
1
+ import { getAccount, getBlockInfo, getTransactions } from ".";
2
+ import { getCoinConfig } from "../config";
3
+ jest.mock("../config");
4
+ describe("backend api tests", () => {
5
+ jest.mocked(getCoinConfig).mockReturnValue({
6
+ ...{},
7
+ infra: {
8
+ API_MINA_ROSETTA_NODE: "https://mina.coin.ledger.com/node",
9
+ },
10
+ });
11
+ const validAddress = ["B62qjWLs1W3J2fFGixeX49w1o7VvSGuMBNotnFhzs3PZ7PbtdFbhdeD"];
12
+ const invalidAddress = [
13
+ "B62qkdFWJSW8zaTBZjTVtmeU3rVxyUkNxPhKKW8T2JBtpj5XfdywLJM",
14
+ "novalidaddress",
15
+ ];
16
+ it("getAccount for valid address", async () => {
17
+ const account = await getAccount(validAddress[0]);
18
+ expect(account).toBeDefined();
19
+ expect(account.balance.toNumber()).toBeGreaterThan(0);
20
+ });
21
+ it("get block info", async () => {
22
+ const blockInfo = await getBlockInfo(1);
23
+ expect(blockInfo).toBeDefined();
24
+ expect(blockInfo.block.block_identifier.index).toBe(1);
25
+ });
26
+ it("get balance should fail for invalid address", async () => {
27
+ for (const address of invalidAddress) {
28
+ const account = await getAccount(address);
29
+ expect(account).toBeDefined();
30
+ expect(account.balance.toNumber()).toBe(0);
31
+ }
32
+ }, 10000);
33
+ it("get balance should succeed for valid address", async () => {
34
+ for (const address of validAddress) {
35
+ const account = await getAccount(address);
36
+ expect(account).toBeDefined();
37
+ expect(account.balance.toNumber()).toBeGreaterThan(0);
38
+ }
39
+ });
40
+ it("get transactions should not fail for invalid address", async () => {
41
+ for (const address of invalidAddress) {
42
+ const transactions = await getTransactions(address);
43
+ expect(transactions).toBeDefined();
44
+ expect(transactions.length).toBe(0);
45
+ }
46
+ });
47
+ it("get transactions should succeed for valid address", async () => {
48
+ for (const address of validAddress) {
49
+ const transactions = await getTransactions(address);
50
+ expect(transactions).toBeDefined();
51
+ expect(transactions.length).toBeGreaterThan(0);
52
+ }
53
+ });
54
+ });
55
+ //# sourceMappingURL=index.integ.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.integ.test.js","sourceRoot":"","sources":["../../src/api/index.integ.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=utils.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.test.d.ts","sourceRoot":"","sources":["../../../src/api/rosetta/utils.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,80 @@
1
+ import { addNetworkIdentifier, buildAccountIdentifier, makeTransferPayload } from "./utils";
2
+ import { MINA_DECIMALS, MINA_SYMBOL, MINA_TOKEN_ID, MAINNET_NETWORK_IDENTIFIER, } from "../../consts";
3
+ describe("addNetworkIdentifier", () => {
4
+ it("should add network identifier to an empty object", () => {
5
+ const result = addNetworkIdentifier({});
6
+ expect(result).toEqual(MAINNET_NETWORK_IDENTIFIER);
7
+ });
8
+ it("should add network identifier to an object with existing properties", () => {
9
+ const testObj = { test: "value" };
10
+ const result = addNetworkIdentifier(testObj);
11
+ expect(result).toEqual({
12
+ ...MAINNET_NETWORK_IDENTIFIER,
13
+ test: "value",
14
+ });
15
+ });
16
+ it("should override network identifier properties if they exist in input object", () => {
17
+ // Assuming MAINNET_NETWORK_IDENTIFIER has a property like { blockchain: 'Mina' }
18
+ const testObj = { blockchain: "mina" };
19
+ const result = addNetworkIdentifier(testObj);
20
+ expect(result.network_identifier.blockchain).toEqual("mina");
21
+ });
22
+ });
23
+ describe("buildAccountIdentifier", () => {
24
+ it("should build correct account identifier with given address", () => {
25
+ const testAddress = "B62qrPN5Y5yq8kGE3FbVKbGTdTAJNdtNtB5sNVpxyRwWGcDEhpMzc8g";
26
+ const result = buildAccountIdentifier(testAddress);
27
+ expect(result).toEqual({
28
+ account_identifier: {
29
+ address: testAddress,
30
+ metadata: {
31
+ token_id: MINA_TOKEN_ID,
32
+ },
33
+ },
34
+ });
35
+ });
36
+ });
37
+ describe("makeTransferPayload", () => {
38
+ const fromAddr = "sender-address";
39
+ const toAddr = "recipient-address";
40
+ const feeNano = 1000000;
41
+ const valueNano = 5000000;
42
+ it("should create a valid transfer payload with three operations", () => {
43
+ const result = makeTransferPayload(fromAddr, toAddr, feeNano, valueNano);
44
+ expect(result.operations).toHaveLength(3);
45
+ });
46
+ it("should correctly create fee payment operation", () => {
47
+ const result = makeTransferPayload(fromAddr, toAddr, feeNano, valueNano);
48
+ const feeOp = result.operations[0];
49
+ expect(feeOp.operation_identifier.index).toBe(0);
50
+ expect(feeOp.type).toBe("fee_payment");
51
+ expect(feeOp.account.address).toBe(fromAddr);
52
+ expect(feeOp.amount.value).toBe("-" + feeNano.toString());
53
+ expect(feeOp.amount.currency.symbol).toBe(MINA_SYMBOL);
54
+ expect(feeOp.amount.currency.decimals).toBe(MINA_DECIMALS);
55
+ });
56
+ it("should correctly create payment source operation", () => {
57
+ const result = makeTransferPayload(fromAddr, toAddr, feeNano, valueNano);
58
+ const sourceOp = result.operations[1];
59
+ expect(sourceOp.operation_identifier.index).toBe(1);
60
+ expect(sourceOp.type).toBe("payment_source_dec");
61
+ expect(sourceOp.account.address).toBe(fromAddr);
62
+ expect(sourceOp.amount.value).toBe("-" + valueNano.toString());
63
+ });
64
+ it("should correctly create payment receiver operation with related operation", () => {
65
+ const result = makeTransferPayload(fromAddr, toAddr, feeNano, valueNano);
66
+ const receiverOp = result.operations[2];
67
+ expect(receiverOp.operation_identifier.index).toBe(2);
68
+ expect(receiverOp.type).toBe("payment_receiver_inc");
69
+ expect(receiverOp.account.address).toBe(toAddr);
70
+ expect(receiverOp.amount.value).toBe(valueNano.toString());
71
+ expect(receiverOp.relatedOps.related_operations).toEqual([{ index: 1 }]);
72
+ });
73
+ it("should handle zero values correctly", () => {
74
+ const result = makeTransferPayload(fromAddr, toAddr, 0, 0);
75
+ expect(result.operations[0].amount.value).toBe("-0");
76
+ expect(result.operations[1].amount.value).toBe("-0");
77
+ expect(result.operations[2].amount.value).toBe("0");
78
+ });
79
+ });
80
+ //# sourceMappingURL=utils.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../../src/api/rosetta/utils.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC5F,OAAO,EACL,aAAa,EACb,WAAW,EACX,aAAa,EACb,0BAA0B,GAC3B,MAAM,cAAc,CAAC;AAEtB,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,MAAM,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,GAAG,0BAA0B;YAC7B,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,iFAAiF;QACjF,MAAM,OAAO,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,WAAW,GAAG,yDAAyD,CAAC;QAC9E,MAAM,MAAM,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;QAEnD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,kBAAkB,EAAE;gBAClB,OAAO,EAAE,WAAW;gBACpB,QAAQ,EAAE;oBACR,QAAQ,EAAE,aAAa;iBACxB;aACF;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,MAAM,QAAQ,GAAG,gBAAgB,CAAC;IAClC,MAAM,MAAM,GAAG,mBAAmB,CAAC;IACnC,MAAM,OAAO,GAAG,OAAO,CAAC;IACxB,MAAM,SAAS,GAAG,OAAO,CAAC;IAE1B,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAEzE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAEzE,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAEzE,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjD,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;QACnF,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAEzE,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACrD,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE3D,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=broadcast.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broadcast.test.d.ts","sourceRoot":"","sources":["../../src/bridge/broadcast.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,31 @@
1
+ import broadcast from "./broadcast";
2
+ jest.mock("@ledgerhq/coin-framework/operation");
3
+ jest.mock("../api");
4
+ import { patchOperationWithHash } from "@ledgerhq/coin-framework/operation";
5
+ import { broadcastTransaction as broadcastLogic } from "../api";
6
+ describe("broadcast", () => {
7
+ let patchOperationSpy;
8
+ let broadcastSpy;
9
+ beforeEach(() => {
10
+ patchOperationSpy = jest.spyOn({ patchOperationWithHash }, "patchOperationWithHash");
11
+ broadcastSpy = jest.spyOn({ broadcastLogic }, "broadcastLogic");
12
+ broadcastSpy.mockResolvedValue("hash");
13
+ });
14
+ const signedOperation = {
15
+ signature: JSON.stringify({}),
16
+ operation: undefined,
17
+ };
18
+ it("should broadcast", () => {
19
+ broadcast({
20
+ signedOperation,
21
+ });
22
+ expect(broadcastLogic).toHaveBeenCalledTimes(1);
23
+ });
24
+ it("should patch operation with hash", () => {
25
+ broadcast({
26
+ signedOperation,
27
+ });
28
+ expect(patchOperationSpy).toHaveBeenCalledWith(undefined, "hash");
29
+ });
30
+ });
31
+ //# sourceMappingURL=broadcast.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broadcast.test.js","sourceRoot":"","sources":["../../src/bridge/broadcast.test.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;AAChD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,IAAI,cAAc,EAAE,MAAM,QAAQ,CAAC;AAEhE,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,IAAI,iBAAmC,CAAC;IACxC,IAAI,YAA8B,CAAC;IACnC,UAAU,CAAC,GAAG,EAAE;QACd,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,sBAAsB,EAAE,EAAE,wBAAwB,CAAC,CAAC;QACrF,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,cAAc,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAChE,YAAY,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG;QACtB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,SAAS,EAAE,SAAS;KACrB,CAAC;IAEF,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,SAAS,CAAC;YACR,eAAe;SACoB,CAAC,CAAC;QACvC,MAAM,CAAC,cAAc,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,SAAS,CAAC;YACR,eAAe;SACoB,CAAC,CAAC;QACvC,MAAM,CAAC,iBAAiB,CAAC,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=buildTransaction.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildTransaction.test.d.ts","sourceRoot":"","sources":["../../src/bridge/buildTransaction.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,55 @@
1
+ import { buildTransaction } from "./buildTransaction";
2
+ import { MINA_MAINNET_NETWORK_ID, MINA_PAYMENT_TYPE_ID } from "../consts";
3
+ import { getAccountNumFromPath } from "../common-logic";
4
+ import { BigNumber } from "bignumber.js";
5
+ jest.mock("../common-logic");
6
+ describe("buildTransaction", () => {
7
+ let getAccountNumSpy;
8
+ beforeEach(() => {
9
+ getAccountNumSpy = jest.spyOn({ getAccountNumFromPath }, "getAccountNumFromPath");
10
+ getAccountNumSpy.mockReturnValue(42); // Mock account number
11
+ });
12
+ const mockAccount = {
13
+ freshAddress: "B62qrPN5Y5yq8kGE3FbVKbGTdTAJNdHm8qSqZhhtiu1Dq56Cmuo2aJ4",
14
+ freshAddressPath: "44'/12586'/0'/0/0",
15
+ };
16
+ const mockTransaction = {
17
+ recipient: "B62qoDWfBZUxKpaoQCoMPJEysXXWv7reVgo7CEAjqx1xAYs3CsT8Gtz",
18
+ amount: new BigNumber(1000000000),
19
+ fees: {
20
+ fee: new BigNumber(1000000),
21
+ accountCreationFee: new BigNumber(0),
22
+ },
23
+ nonce: 5,
24
+ memo: "test transaction",
25
+ family: "mina",
26
+ };
27
+ it("should build a transaction correctly", async () => {
28
+ const result = await buildTransaction(mockAccount, mockTransaction);
29
+ expect(result).toEqual({
30
+ txType: MINA_PAYMENT_TYPE_ID,
31
+ senderAccount: 42,
32
+ senderAddress: mockAccount.freshAddress,
33
+ receiverAddress: mockTransaction.recipient,
34
+ amount: mockTransaction.amount.toNumber(),
35
+ fee: mockTransaction.fees.fee.toNumber(),
36
+ nonce: mockTransaction.nonce,
37
+ memo: mockTransaction.memo,
38
+ networkId: MINA_MAINNET_NETWORK_ID,
39
+ });
40
+ expect(getAccountNumFromPath).toHaveBeenCalledWith(mockAccount.freshAddressPath);
41
+ });
42
+ it("should handle empty memo", async () => {
43
+ const txWithoutMemo = {
44
+ ...mockTransaction,
45
+ memo: undefined,
46
+ };
47
+ const result = await buildTransaction(mockAccount, txWithoutMemo);
48
+ expect(result.memo).toBe("");
49
+ });
50
+ it("should throw error if accountNum is undefined", async () => {
51
+ getAccountNumSpy.mockReturnValue(undefined);
52
+ await expect(buildTransaction(mockAccount, mockTransaction)).rejects.toThrow();
53
+ });
54
+ });
55
+ //# sourceMappingURL=buildTransaction.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildTransaction.test.js","sourceRoot":"","sources":["../../src/bridge/buildTransaction.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAE7B,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,gBAAkC,CAAC;IAEvC,UAAU,CAAC,GAAG,EAAE;QACd,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,qBAAqB,EAAE,EAAE,uBAAuB,CAAC,CAAC;QAClF,gBAAgB,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB;IAC9D,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAqB;QACpC,YAAY,EAAE,yDAAyD;QACvE,gBAAgB,EAAE,mBAAmB;KACtC,CAAC;IAEF,MAAM,eAAe,GAAgB;QACnC,SAAS,EAAE,yDAAyD;QACpE,MAAM,EAAE,IAAI,SAAS,CAAC,UAAU,CAAC;QACjC,IAAI,EAAE;YACJ,GAAG,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC;YAC3B,kBAAkB,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC;SACrC;QACD,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,kBAAkB;QACxB,MAAM,EAAE,MAAM;KACf,CAAC;IAEF,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,WAAsB,EAAE,eAAe,CAAC,CAAC;QAE/E,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,MAAM,EAAE,oBAAoB;YAC5B,aAAa,EAAE,EAAE;YACjB,aAAa,EAAE,WAAW,CAAC,YAAY;YACvC,eAAe,EAAE,eAAe,CAAC,SAAS;YAC1C,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE;YACzC,GAAG,EAAE,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;YACxC,KAAK,EAAE,eAAe,CAAC,KAAK;YAC5B,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,SAAS,EAAE,uBAAuB;SACnC,CAAC,CAAC;QAEH,MAAM,CAAC,qBAAqB,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,aAAa,GAAG;YACpB,GAAG,eAAe;YAClB,IAAI,EAAE,SAAS;SAChB,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,WAAsB,EAAE,aAAa,CAAC,CAAC;QAE7E,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,gBAAgB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAE5C,MAAM,MAAM,CAAC,gBAAgB,CAAC,WAAsB,EAAE,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAC5F,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=createTransaction.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTransaction.test.d.ts","sourceRoot":"","sources":["../../src/bridge/createTransaction.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import { createTransaction } from "./createTransaction";
2
+ import BigNumber from "bignumber.js";
3
+ describe("createTransaction", () => {
4
+ it("should create a 0 amount transaction", () => {
5
+ expect(createTransaction({}).amount.toNumber()).toEqual(0);
6
+ expect(createTransaction({}).recipient).toEqual("");
7
+ expect(createTransaction({}).useAllAmount).toEqual(false);
8
+ expect(createTransaction({}).fees).toEqual({
9
+ fee: new BigNumber(0),
10
+ accountCreationFee: new BigNumber(0),
11
+ });
12
+ expect(createTransaction({}).memo).toEqual(undefined);
13
+ expect(createTransaction({}).nonce).toEqual(0);
14
+ });
15
+ it("should create a transaction with boilerplate family", () => {
16
+ expect(createTransaction({}).family).toEqual("mina");
17
+ });
18
+ });
19
+ //# sourceMappingURL=createTransaction.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTransaction.test.js","sourceRoot":"","sources":["../../src/bridge/createTransaction.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,iBAAiB,CAAC,EAA0B,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACnF,MAAM,CAAC,iBAAiB,CAAC,EAA0B,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5E,MAAM,CAAC,iBAAiB,CAAC,EAA0B,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClF,MAAM,CAAC,iBAAiB,CAAC,EAA0B,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YACjE,GAAG,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC;YACrB,kBAAkB,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC;SACrC,CAAC,CAAC;QACH,MAAM,CAAC,iBAAiB,CAAC,EAA0B,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC9E,MAAM,CAAC,iBAAiB,CAAC,EAA0B,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,iBAAiB,CAAC,EAA0B,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=getTransactionStatus.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTransactionStatus.test.d.ts","sourceRoot":"","sources":["../../src/bridge/getTransactionStatus.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,133 @@
1
+ import { BigNumber } from "bignumber.js";
2
+ import { NotEnoughBalance, RecipientRequired, InvalidAddress, FeeNotLoaded, AmountRequired, InvalidAddressBecauseDestinationIsAlsoSource, } from "@ledgerhq/errors";
3
+ import { AccountCreationFeeWarning, InvalidMemoMina, AmountTooSmall } from "./errors";
4
+ import getTransactionStatus from "./getTransactionStatus";
5
+ import { createMockAccount, createMockTransaction } from "../test/fixtures";
6
+ import { formatCurrencyUnit } from "@ledgerhq/coin-framework/currencies";
7
+ import getEstimatedFees from "./getEstimatedFees";
8
+ // Mock dependencies
9
+ jest.mock("@ledgerhq/coin-framework/currencies", () => ({
10
+ formatCurrencyUnit: jest.fn().mockReturnValue("0.1 MINA"),
11
+ }));
12
+ jest.mock("./getEstimatedFees");
13
+ describe("getTransactionStatus", () => {
14
+ // Standard test fixtures
15
+ const mockAccount = createMockAccount();
16
+ const mockTransaction = createMockTransaction({ amount: new BigNumber(800) });
17
+ beforeEach(() => {
18
+ jest.clearAllMocks();
19
+ });
20
+ it("should return a valid transaction status with no errors for valid inputs", async () => {
21
+ const result = await getTransactionStatus(mockAccount, mockTransaction);
22
+ expect(result.errors).toEqual({});
23
+ expect(result.warnings).toEqual({});
24
+ expect(result.estimatedFees).toEqual(new BigNumber(10));
25
+ expect(result.amount).toEqual(new BigNumber(800));
26
+ expect(result.totalSpent).toEqual(new BigNumber(810)); // amount + fee
27
+ });
28
+ it("should handle missing fees with FeeNotLoaded error", async () => {
29
+ getEstimatedFees.mockResolvedValue({
30
+ fee: new BigNumber(10),
31
+ accountCreationFee: new BigNumber(0),
32
+ });
33
+ // Using Type casting to handle the null fees for testing purposes
34
+ const txWithoutFees = {
35
+ ...mockTransaction,
36
+ fees: {
37
+ fee: new BigNumber(0),
38
+ accountCreationFee: new BigNumber(0),
39
+ },
40
+ };
41
+ const result = await getTransactionStatus(mockAccount, txWithoutFees);
42
+ expect(result.errors.fees).toBeInstanceOf(FeeNotLoaded);
43
+ });
44
+ it("should handle missing recipient with RecipientRequired error", async () => {
45
+ const txWithoutRecipient = {
46
+ ...mockTransaction,
47
+ recipient: "",
48
+ };
49
+ const result = await getTransactionStatus(mockAccount, txWithoutRecipient);
50
+ expect(result.errors.recipient).toBeInstanceOf(RecipientRequired);
51
+ });
52
+ it("should handle invalid recipient address with InvalidAddress error", async () => {
53
+ const txWithInvalidRecipient = {
54
+ ...mockTransaction,
55
+ recipient: "invalid-address",
56
+ };
57
+ const result = await getTransactionStatus(mockAccount, txWithInvalidRecipient);
58
+ expect(result.errors.recipient).toBeInstanceOf(InvalidAddress);
59
+ });
60
+ it("should handle self-transfer with InvalidAddressBecauseDestinationIsAlsoSource error", async () => {
61
+ const txWithSelfTransfer = {
62
+ ...mockTransaction,
63
+ recipient: mockAccount.freshAddress,
64
+ };
65
+ const result = await getTransactionStatus(mockAccount, txWithSelfTransfer);
66
+ expect(result.errors.recipient).toBeInstanceOf(InvalidAddressBecauseDestinationIsAlsoSource);
67
+ });
68
+ it("should handle invalid memo with InvalidMemoMina error", async () => {
69
+ const veryLongMemo = "a".repeat(33); // Create memo longer than MAX_MEMO_LENGTH (32)
70
+ const txWithInvalidMemo = {
71
+ ...mockTransaction,
72
+ memo: veryLongMemo,
73
+ };
74
+ const result = await getTransactionStatus(mockAccount, txWithInvalidMemo);
75
+ expect(result.errors.transaction).toBeInstanceOf(InvalidMemoMina);
76
+ });
77
+ it("should add AccountCreationFeeWarning when account creation fee is present", async () => {
78
+ const txWithAccountCreationFee = {
79
+ ...mockTransaction,
80
+ fees: {
81
+ fee: new BigNumber(10),
82
+ accountCreationFee: new BigNumber(100),
83
+ },
84
+ };
85
+ const result = await getTransactionStatus(mockAccount, txWithAccountCreationFee);
86
+ expect(result.warnings.recipient).toBeInstanceOf(AccountCreationFeeWarning);
87
+ expect(formatCurrencyUnit).toHaveBeenCalled();
88
+ });
89
+ it("should add AmountTooSmall error when amount is less than account creation fee", async () => {
90
+ const txWithSmallAmount = {
91
+ ...mockTransaction,
92
+ amount: new BigNumber(50),
93
+ fees: {
94
+ fee: new BigNumber(10),
95
+ accountCreationFee: new BigNumber(100),
96
+ },
97
+ };
98
+ const result = await getTransactionStatus(mockAccount, txWithSmallAmount);
99
+ expect(result.errors.amount).toBeInstanceOf(AmountTooSmall);
100
+ });
101
+ it("should handle zero amount with AmountRequired error when useAllAmount is false", async () => {
102
+ const txWithZeroAmount = {
103
+ ...mockTransaction,
104
+ amount: new BigNumber(0),
105
+ useAllAmount: false,
106
+ };
107
+ const result = await getTransactionStatus(mockAccount, txWithZeroAmount);
108
+ expect(result.errors.amount).toBeInstanceOf(AmountRequired);
109
+ });
110
+ it("should handle amount greater than max with NotEnoughBalance error", async () => {
111
+ // Account has spendable balance of 900
112
+ const txWithTooLargeAmount = {
113
+ ...mockTransaction,
114
+ amount: new BigNumber(1000),
115
+ useAllAmount: false,
116
+ };
117
+ const result = await getTransactionStatus(mockAccount, txWithTooLargeAmount);
118
+ expect(result.errors.amount).toBeInstanceOf(NotEnoughBalance);
119
+ });
120
+ it("should calculate correct amount and totalSpent when useAllAmount is true", async () => {
121
+ const txWithUseAllAmount = {
122
+ ...mockTransaction,
123
+ amount: new BigNumber(0), // Amount should be ignored when useAllAmount is true
124
+ useAllAmount: true,
125
+ };
126
+ const result = await getTransactionStatus(mockAccount, txWithUseAllAmount);
127
+ // Should return spendableBalance - fee as the amount
128
+ expect(result.amount).toEqual(new BigNumber(890)); // spendableBalance(900) - fee(10)
129
+ expect(result.totalSpent).toEqual(new BigNumber(900)); // spendableBalance
130
+ expect(result.errors).toEqual({});
131
+ });
132
+ });
133
+ //# sourceMappingURL=getTransactionStatus.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTransactionStatus.test.js","sourceRoot":"","sources":["../../src/bridge/getTransactionStatus.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../src/bridge/index.test.ts"],"names":[],"mappings":""}