@ledgerhq/coin-tezos 6.7.0-nightly.7 → 6.7.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 (105) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +30 -55
  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 +201 -0
  6. package/lib/api/index.integ.test.js.map +1 -0
  7. package/lib/api/index.test.d.ts +2 -0
  8. package/lib/api/index.test.d.ts.map +1 -0
  9. package/lib/api/index.test.js +203 -0
  10. package/lib/api/index.test.js.map +1 -0
  11. package/lib/logic/craftTransaction.integ.test.d.ts +2 -0
  12. package/lib/logic/craftTransaction.integ.test.d.ts.map +1 -0
  13. package/lib/logic/craftTransaction.integ.test.js +86 -0
  14. package/lib/logic/craftTransaction.integ.test.js.map +1 -0
  15. package/lib/logic/craftTransaction.test.d.ts +2 -0
  16. package/lib/logic/craftTransaction.test.d.ts.map +1 -0
  17. package/lib/logic/craftTransaction.test.js +153 -0
  18. package/lib/logic/craftTransaction.test.js.map +1 -0
  19. package/lib/logic/estimateFees.integ.test.d.ts +2 -0
  20. package/lib/logic/estimateFees.integ.test.d.ts.map +1 -0
  21. package/lib/logic/estimateFees.integ.test.js +71 -0
  22. package/lib/logic/estimateFees.integ.test.js.map +1 -0
  23. package/lib/logic/getBalance.test.d.ts +2 -0
  24. package/lib/logic/getBalance.test.d.ts.map +1 -0
  25. package/lib/logic/getBalance.test.js +23 -0
  26. package/lib/logic/getBalance.test.js.map +1 -0
  27. package/lib/logic/getStakes.test.d.ts +2 -0
  28. package/lib/logic/getStakes.test.d.ts.map +1 -0
  29. package/lib/logic/getStakes.test.js +133 -0
  30. package/lib/logic/getStakes.test.js.map +1 -0
  31. package/lib/logic/listOperations.js +1 -1
  32. package/lib/logic/listOperations.js.map +1 -1
  33. package/lib/logic/listOperations.test.d.ts +2 -0
  34. package/lib/logic/listOperations.test.d.ts.map +1 -0
  35. package/lib/logic/listOperations.test.js +196 -0
  36. package/lib/logic/listOperations.test.js.map +1 -0
  37. package/lib/logic/validateIntent.d.ts.map +1 -1
  38. package/lib/logic/validateIntent.js +6 -5
  39. package/lib/logic/validateIntent.js.map +1 -1
  40. package/lib/logic/validateIntent.test.d.ts +2 -0
  41. package/lib/logic/validateIntent.test.d.ts.map +1 -0
  42. package/lib/logic/validateIntent.test.js +279 -0
  43. package/lib/logic/validateIntent.test.js.map +1 -0
  44. package/lib/network/bakers.integration.test.d.ts +2 -0
  45. package/lib/network/bakers.integration.test.d.ts.map +1 -0
  46. package/lib/network/bakers.integration.test.js +57 -0
  47. package/lib/network/bakers.integration.test.js.map +1 -0
  48. package/lib/network/bakers.test.d.ts +2 -0
  49. package/lib/network/bakers.test.d.ts.map +1 -0
  50. package/lib/network/bakers.test.js +209 -0
  51. package/lib/network/bakers.test.js.map +1 -0
  52. package/lib-es/api/index.integ.test.d.ts +2 -0
  53. package/lib-es/api/index.integ.test.d.ts.map +1 -0
  54. package/lib-es/api/index.integ.test.js +199 -0
  55. package/lib-es/api/index.integ.test.js.map +1 -0
  56. package/lib-es/api/index.test.d.ts +2 -0
  57. package/lib-es/api/index.test.d.ts.map +1 -0
  58. package/lib-es/api/index.test.js +198 -0
  59. package/lib-es/api/index.test.js.map +1 -0
  60. package/lib-es/logic/craftTransaction.integ.test.d.ts +2 -0
  61. package/lib-es/logic/craftTransaction.integ.test.d.ts.map +1 -0
  62. package/lib-es/logic/craftTransaction.integ.test.js +81 -0
  63. package/lib-es/logic/craftTransaction.integ.test.js.map +1 -0
  64. package/lib-es/logic/craftTransaction.test.d.ts +2 -0
  65. package/lib-es/logic/craftTransaction.test.d.ts.map +1 -0
  66. package/lib-es/logic/craftTransaction.test.js +148 -0
  67. package/lib-es/logic/craftTransaction.test.js.map +1 -0
  68. package/lib-es/logic/estimateFees.integ.test.d.ts +2 -0
  69. package/lib-es/logic/estimateFees.integ.test.d.ts.map +1 -0
  70. package/lib-es/logic/estimateFees.integ.test.js +66 -0
  71. package/lib-es/logic/estimateFees.integ.test.js.map +1 -0
  72. package/lib-es/logic/getBalance.test.d.ts +2 -0
  73. package/lib-es/logic/getBalance.test.d.ts.map +1 -0
  74. package/lib-es/logic/getBalance.test.js +18 -0
  75. package/lib-es/logic/getBalance.test.js.map +1 -0
  76. package/lib-es/logic/getStakes.test.d.ts +2 -0
  77. package/lib-es/logic/getStakes.test.d.ts.map +1 -0
  78. package/lib-es/logic/getStakes.test.js +128 -0
  79. package/lib-es/logic/getStakes.test.js.map +1 -0
  80. package/lib-es/logic/listOperations.js +1 -1
  81. package/lib-es/logic/listOperations.js.map +1 -1
  82. package/lib-es/logic/listOperations.test.d.ts +2 -0
  83. package/lib-es/logic/listOperations.test.d.ts.map +1 -0
  84. package/lib-es/logic/listOperations.test.js +194 -0
  85. package/lib-es/logic/listOperations.test.js.map +1 -0
  86. package/lib-es/logic/validateIntent.d.ts.map +1 -1
  87. package/lib-es/logic/validateIntent.js +6 -5
  88. package/lib-es/logic/validateIntent.js.map +1 -1
  89. package/lib-es/logic/validateIntent.test.d.ts +2 -0
  90. package/lib-es/logic/validateIntent.test.d.ts.map +1 -0
  91. package/lib-es/logic/validateIntent.test.js +251 -0
  92. package/lib-es/logic/validateIntent.test.js.map +1 -0
  93. package/lib-es/network/bakers.integration.test.d.ts +2 -0
  94. package/lib-es/network/bakers.integration.test.d.ts.map +1 -0
  95. package/lib-es/network/bakers.integration.test.js +52 -0
  96. package/lib-es/network/bakers.integration.test.js.map +1 -0
  97. package/lib-es/network/bakers.test.d.ts +2 -0
  98. package/lib-es/network/bakers.test.d.ts.map +1 -0
  99. package/lib-es/network/bakers.test.js +204 -0
  100. package/lib-es/network/bakers.test.js.map +1 -0
  101. package/package.json +8 -8
  102. package/src/logic/listOperations.test.ts +5 -5
  103. package/src/logic/listOperations.ts +2 -1
  104. package/src/logic/validateIntent.test.ts +23 -0
  105. package/src/logic/validateIntent.ts +6 -4
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const listOperations_1 = require("./listOperations");
4
+ const mockNetworkGetTransactions = jest.fn();
5
+ jest.mock("../network", () => ({
6
+ tzkt: {
7
+ getAccountOperations: async () => {
8
+ return mockNetworkGetTransactions();
9
+ },
10
+ },
11
+ }));
12
+ const options = {
13
+ sort: "Ascending",
14
+ minHeight: 0,
15
+ };
16
+ describe("listOperations", () => {
17
+ afterEach(() => {
18
+ mockNetworkGetTransactions.mockClear();
19
+ });
20
+ it("should return no operations", async () => {
21
+ // Given
22
+ mockNetworkGetTransactions.mockResolvedValue([]);
23
+ // When
24
+ const [results, token] = await (0, listOperations_1.listOperations)("any address", options);
25
+ // Then
26
+ expect(results).toEqual([]);
27
+ expect(token).toEqual("");
28
+ });
29
+ const someDestinationAddress = "tz3Vq38qYD3GEbWcXHMLt5PaASZrkDtEiA8D";
30
+ const someSenderAddress = "tz2CVMDVA16dD9A7kpWym2ptGDhs5zUhwWXr";
31
+ const someHash = "ooY7YKLgWE8mrELbsDLEtPsxFNaLdqRbbRR1b1FXDA6DwasAFe4";
32
+ const commonTx = {
33
+ counter: 65214462,
34
+ hash: someHash,
35
+ gasLimit: 4,
36
+ storageLimit: 5,
37
+ level: 2702551,
38
+ block: "BMJ1ZQ6",
39
+ timestamp: "2022-09-12T01:36:59Z",
40
+ sender: {
41
+ address: someSenderAddress,
42
+ },
43
+ };
44
+ const delegate = {
45
+ ...commonTx,
46
+ type: "delegation",
47
+ id: 111,
48
+ amount: 724846,
49
+ prevDelegate: {
50
+ address: someDestinationAddress,
51
+ },
52
+ newDelegate: null,
53
+ storageFee: 1,
54
+ bakerFee: 2,
55
+ allocationFee: 3,
56
+ };
57
+ const undelegate = {
58
+ ...delegate,
59
+ id: 222,
60
+ prevDelegate: null,
61
+ newDelegate: { address: someDestinationAddress },
62
+ };
63
+ const transfer = {
64
+ ...delegate,
65
+ id: 333,
66
+ initiator: null,
67
+ type: "transaction",
68
+ target: { address: someDestinationAddress },
69
+ };
70
+ const reveal = {
71
+ ...commonTx,
72
+ id: 444,
73
+ type: "reveal",
74
+ bakerFee: 4700,
75
+ status: "applied",
76
+ };
77
+ it.each([
78
+ ["undelegate", undelegate, "DELEGATE", "DELEGATE", 0n],
79
+ ["delegate", delegate, "UNDELEGATE", "UNDELEGATE", 0n],
80
+ ["transfer", transfer, "OUT", undefined, 724846n],
81
+ ])("should return %s operation with proper recipient list", async (_label, operation, expectedType, expectedLedgerOpType, expectedAmount) => {
82
+ // Given
83
+ mockNetworkGetTransactions.mockResolvedValue([operation]);
84
+ // When
85
+ const [results] = await (0, listOperations_1.listOperations)("any address", options);
86
+ // Then
87
+ expect(results).toEqual([
88
+ {
89
+ id: `${operation.hash}-${operation.id}`,
90
+ asset: { type: "native" },
91
+ details: {
92
+ counter: operation.counter,
93
+ gasLimit: operation.gasLimit,
94
+ storageLimit: operation.storageLimit,
95
+ status: operation.status,
96
+ ledgerOpType: expectedLedgerOpType,
97
+ },
98
+ senders: [someSenderAddress],
99
+ recipients: [someDestinationAddress],
100
+ tx: {
101
+ block: {
102
+ hash: operation.block,
103
+ height: operation.level,
104
+ time: new Date(operation.timestamp),
105
+ },
106
+ date: new Date(operation.timestamp),
107
+ hash: operation.hash,
108
+ fees: BigInt((operation.allocationFee ?? 0) +
109
+ (operation.bakerFee ?? 0) +
110
+ (operation.storageFee ?? 0)),
111
+ },
112
+ type: expectedType,
113
+ value: expectedAmount,
114
+ },
115
+ ]);
116
+ });
117
+ it.each([
118
+ ["undelegate", undelegate],
119
+ ["delegate", delegate],
120
+ ["transfer", transfer],
121
+ ["reveal", reveal],
122
+ ])("should return %s operation with pagination equal to operation id", async (_label, operation) => {
123
+ // Given
124
+ mockNetworkGetTransactions.mockResolvedValue([operation]);
125
+ // When
126
+ const [results, token] = await (0, listOperations_1.listOperations)("any address", options);
127
+ // Then
128
+ expect(results.length).toEqual(1);
129
+ expect(token).toEqual(JSON.stringify(operation.id));
130
+ });
131
+ it.each([
132
+ ["undelegate", undelegate, "DELEGATE"],
133
+ ["delegate", delegate, "UNDELEGATE"],
134
+ ["transfer", transfer, undefined],
135
+ ["reveal", reveal, "REVEAL"],
136
+ ])("should return %s operation with expected details", async (_label, operation, expectedLedgerOpType) => {
137
+ // Given
138
+ mockNetworkGetTransactions.mockResolvedValue([operation]);
139
+ // When
140
+ const [results, _] = await (0, listOperations_1.listOperations)("any address", options);
141
+ // Then
142
+ expect(results.length).toEqual(1);
143
+ expect(results[0].details).toEqual({
144
+ counter: 65214462,
145
+ gasLimit: 4,
146
+ storageLimit: 5,
147
+ status: operation.status,
148
+ ledgerOpType: expectedLedgerOpType,
149
+ });
150
+ });
151
+ it.each([
152
+ { ...undelegate, newDelegate: null, prevDelegate: null },
153
+ { ...transfer, target: null },
154
+ ])("should return empty recipient list when no target can be found", async (operation) => {
155
+ // Given
156
+ mockNetworkGetTransactions.mockResolvedValue([operation]);
157
+ // When
158
+ const [results, token] = await (0, listOperations_1.listOperations)("any address", options);
159
+ // Then
160
+ expect(results.length).toEqual(1);
161
+ expect(results[0].recipients).toEqual([]);
162
+ expect(token).toEqual(JSON.stringify(operation.id));
163
+ });
164
+ it.each([
165
+ ["undelegate", { ...undelegate, storageFee: 1, bakerFee: 2, allocationFee: 3 }],
166
+ ["delegate", { ...delegate, storageFee: 1, bakerFee: 2, allocationFee: 3 }],
167
+ ["transfer", { ...transfer, storageFee: 1, bakerFee: 2, allocationFee: 3 }],
168
+ ])("should compute the fees properly for %s operation", async (_label, operation) => {
169
+ // Given
170
+ mockNetworkGetTransactions.mockResolvedValue([operation]);
171
+ // When
172
+ const [results, _] = await (0, listOperations_1.listOperations)("any address", options);
173
+ // Then
174
+ expect(results.length).toEqual(1);
175
+ expect(results[0].tx.fees).toEqual(BigInt(6));
176
+ });
177
+ it("should return empty sender list when no sender can be found", async () => {
178
+ // Given
179
+ const operation = { ...undelegate, sender: null };
180
+ mockNetworkGetTransactions.mockResolvedValue([operation]);
181
+ // When
182
+ const [results, token] = await (0, listOperations_1.listOperations)("any address", options);
183
+ // Then
184
+ expect(results.length).toEqual(1);
185
+ expect(results[0].senders).toEqual([]);
186
+ expect(token).toEqual(JSON.stringify(operation.id));
187
+ });
188
+ it("should order the results in descending order even if the sort option is set to ascending", async () => {
189
+ const op1 = { ...undelegate, level: "1", timestamp: "2022-09-12T01:00:00Z" };
190
+ const op2 = { ...undelegate, level: "2", timestamp: "2022-09-12T01:01:00Z" };
191
+ mockNetworkGetTransactions.mockResolvedValue([op1, op2]);
192
+ const [results, _] = await (0, listOperations_1.listOperations)("any address", options);
193
+ expect(results.map(op => op.tx.block.height)).toEqual(["2", "1"]);
194
+ });
195
+ });
196
+ //# sourceMappingURL=listOperations.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listOperations.test.js","sourceRoot":"","sources":["../../src/logic/listOperations.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validateIntent.d.ts","sourceRoot":"","sources":["../../src/logic/validateIntent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAuInG,wBAAsB,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAuE9F"}
1
+ {"version":3,"file":"validateIntent.d.ts","sourceRoot":"","sources":["../../src/logic/validateIntent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAuInG,wBAAsB,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAyE9F"}
@@ -82,15 +82,14 @@ function mapTaquitoErrors(taquitoError, intentType) {
82
82
  /**
83
83
  * Calculates final amounts based on transaction type
84
84
  */
85
- function calculateAmounts(intent, senderInfo, estimatedFees) {
85
+ function calculateAmounts(intent, senderInfo, estimatedFees, estimatedAmount) {
86
86
  if (intent.type === "stake" || intent.type === "unstake") {
87
- const amount = BigInt(senderInfo.type === "user" ? senderInfo.balance : 0);
88
- return { amount, totalSpent: estimatedFees };
87
+ return { amount: 0n, totalSpent: estimatedFees };
89
88
  }
90
89
  if (intent.type === "send" && intent.useAllAmount) {
91
90
  if (senderInfo.type === "user") {
92
91
  const balance = BigInt(senderInfo.balance);
93
- const amount = balance > estimatedFees ? balance - estimatedFees : 0n;
92
+ const amount = estimatedAmount ?? (balance > estimatedFees ? balance - estimatedFees : 0n);
94
93
  return { amount, totalSpent: amount + estimatedFees };
95
94
  }
96
95
  return { amount: 0n, totalSpent: 0n };
@@ -115,6 +114,7 @@ async function validateIntent(intent) {
115
114
  const errors = {};
116
115
  const warnings = {};
117
116
  let estimatedFees;
117
+ let estimatedAmount;
118
118
  let amount;
119
119
  let totalSpent;
120
120
  // Basic validation for send transactions
@@ -151,6 +151,7 @@ async function validateIntent(intent) {
151
151
  },
152
152
  });
153
153
  estimatedFees = estimation.estimatedFees;
154
+ estimatedAmount = estimation.amount;
154
155
  // Handle Taquito errors
155
156
  if (estimation.taquitoError) {
156
157
  const taquitoErrors = mapTaquitoErrors(estimation.taquitoError, intent.type);
@@ -161,7 +162,7 @@ async function validateIntent(intent) {
161
162
  estimatedFees = 2000n;
162
163
  }
163
164
  // Calculate final amounts
164
- const amounts = calculateAmounts(intent, senderInfo, estimatedFees);
165
+ const amounts = calculateAmounts(intent, senderInfo, estimatedFees, estimatedAmount);
165
166
  amount = amounts.amount;
166
167
  totalSpent = amounts.totalSpent;
167
168
  // Final balance validation
@@ -1 +1 @@
1
- {"version":3,"file":"validateIntent.js","sourceRoot":"","sources":["../../src/logic/validateIntent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validateIntent.js","sourceRoot":"","sources":["../../src/logic/validateIntent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=validateIntent.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateIntent.test.d.ts","sourceRoot":"","sources":["../../src/logic/validateIntent.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,279 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const validateIntent_1 = require("./validateIntent");
30
+ const estimateFeesModule = __importStar(require("./estimateFees"));
31
+ const tzkt_1 = __importDefault(require("../network/tzkt"));
32
+ const config_1 = __importDefault(require("../config"));
33
+ const errors_1 = require("@ledgerhq/errors");
34
+ describe("validateIntent", () => {
35
+ const senderAddress = "tz1TzrmTBSuiVHV2VfMnGRMYvTEPCP42oSM8";
36
+ const validRecipient = "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx";
37
+ const mockEstimateFees = jest.spyOn(estimateFeesModule, "estimateFees");
38
+ const mockGetAccountByAddress = jest.spyOn(tzkt_1.default, "getAccountByAddress");
39
+ beforeEach(() => {
40
+ jest.clearAllMocks();
41
+ config_1.default.setCoinConfig(() => ({
42
+ status: { type: "active" },
43
+ baker: { url: "http://baker.example.com" },
44
+ explorer: { url: "http://tezos.explorer.com", maxTxQuery: 100 },
45
+ node: { url: "http://tezos.node.com" },
46
+ fees: {
47
+ minGasLimit: 600,
48
+ minRevealGasLimit: 300,
49
+ minStorageLimit: 0,
50
+ minFees: 500,
51
+ minEstimatedFees: 500,
52
+ },
53
+ }));
54
+ mockEstimateFees.mockResolvedValue({
55
+ fees: BigInt(1000),
56
+ gasLimit: BigInt(10000),
57
+ storageLimit: BigInt(0),
58
+ estimatedFees: BigInt(1000),
59
+ });
60
+ mockGetAccountByAddress.mockResolvedValue({
61
+ type: "user",
62
+ address: senderAddress,
63
+ publicKey: "edpk...",
64
+ balance: 5000000,
65
+ revealed: true,
66
+ counter: 0,
67
+ delegationLevel: 0,
68
+ delegationTime: "2021-01-01T00:00:00Z",
69
+ numTransactions: 0,
70
+ firstActivityTime: "2021-01-01T00:00:00Z",
71
+ });
72
+ });
73
+ describe("recipient validation", () => {
74
+ it("should return RecipientRequired error when recipient is missing", async () => {
75
+ const result = await (0, validateIntent_1.validateIntent)({
76
+ intentType: "transaction",
77
+ asset: { type: "native" },
78
+ type: "send",
79
+ sender: senderAddress,
80
+ recipient: "",
81
+ amount: BigInt(1000),
82
+ });
83
+ expect(result.errors.recipient).toBeInstanceOf(errors_1.RecipientRequired);
84
+ });
85
+ it("should return InvalidAddress error for invalid recipient", async () => {
86
+ const result = await (0, validateIntent_1.validateIntent)({
87
+ intentType: "transaction",
88
+ asset: { type: "native" },
89
+ type: "send",
90
+ sender: senderAddress,
91
+ recipient: "invalid_address",
92
+ amount: BigInt(1000),
93
+ });
94
+ expect(result.errors.recipient).toBeInstanceOf(errors_1.InvalidAddress);
95
+ });
96
+ it("should return InvalidAddressBecauseDestinationIsAlsoSource when sender equals recipient", async () => {
97
+ const result = await (0, validateIntent_1.validateIntent)({
98
+ intentType: "transaction",
99
+ asset: { type: "native" },
100
+ type: "send",
101
+ sender: senderAddress,
102
+ recipient: senderAddress,
103
+ amount: BigInt(1000),
104
+ });
105
+ expect(result.errors.recipient).toBeInstanceOf(errors_1.InvalidAddressBecauseDestinationIsAlsoSource);
106
+ });
107
+ });
108
+ describe("amount validation", () => {
109
+ it("should return AmountRequired error when amount is zero and not useAllAmount", async () => {
110
+ const result = await (0, validateIntent_1.validateIntent)({
111
+ intentType: "transaction",
112
+ asset: { type: "native" },
113
+ type: "send",
114
+ sender: senderAddress,
115
+ recipient: validRecipient,
116
+ amount: BigInt(0),
117
+ useAllAmount: false,
118
+ });
119
+ expect(result.errors.amount).toBeInstanceOf(errors_1.AmountRequired);
120
+ });
121
+ it("should not return AmountRequired error when useAllAmount is true", async () => {
122
+ const result = await (0, validateIntent_1.validateIntent)({
123
+ intentType: "transaction",
124
+ asset: { type: "native" },
125
+ type: "send",
126
+ sender: senderAddress,
127
+ recipient: validRecipient,
128
+ amount: BigInt(0),
129
+ useAllAmount: true,
130
+ });
131
+ expect(result.errors.amount).toBeUndefined();
132
+ });
133
+ it.each([["stake"], ["unstake"]])("returns 0 as amount when the transaction intent is '%s'", async (intentType) => {
134
+ const result = await (0, validateIntent_1.validateIntent)({
135
+ intentType: "transaction",
136
+ asset: { type: "native" },
137
+ type: intentType,
138
+ sender: "tz1TzrmTBSuiVHV2VfMnGRMYvTEPCP42oSM8",
139
+ recipient: "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx",
140
+ amount: BigInt(0),
141
+ useAllAmount: true,
142
+ });
143
+ expect(result).toEqual({
144
+ errors: {},
145
+ warnings: {},
146
+ estimatedFees: 1000n,
147
+ amount: 0n,
148
+ totalSpent: 1000n,
149
+ });
150
+ });
151
+ });
152
+ describe("balance validation", () => {
153
+ it("should return NotEnoughBalance error when amount exceeds balance", async () => {
154
+ const balance = 1000000; // 1 XTZ
155
+ const amount = 2000000; // 2 XTZ
156
+ mockGetAccountByAddress.mockResolvedValue({
157
+ type: "user",
158
+ address: senderAddress,
159
+ publicKey: "edpk...",
160
+ balance,
161
+ revealed: true,
162
+ counter: 0,
163
+ delegationLevel: 0,
164
+ delegationTime: "2021-01-01T00:00:00Z",
165
+ numTransactions: 0,
166
+ firstActivityTime: "2021-01-01T00:00:00Z",
167
+ });
168
+ const result = await (0, validateIntent_1.validateIntent)({
169
+ intentType: "transaction",
170
+ asset: { type: "native" },
171
+ type: "send",
172
+ sender: senderAddress,
173
+ recipient: validRecipient,
174
+ amount: BigInt(amount),
175
+ });
176
+ expect(result.errors.amount).toBeInstanceOf(errors_1.NotEnoughBalance);
177
+ });
178
+ it("should pass validation when amount is within balance", async () => {
179
+ const balance = 5000000; // 5 XTZ
180
+ const amount = 1000000; // 1 XTZ
181
+ mockGetAccountByAddress.mockResolvedValue({
182
+ type: "user",
183
+ address: senderAddress,
184
+ publicKey: "edpk...",
185
+ balance,
186
+ revealed: true,
187
+ counter: 0,
188
+ delegationLevel: 0,
189
+ delegationTime: "2021-01-01T00:00:00Z",
190
+ numTransactions: 0,
191
+ firstActivityTime: "2021-01-01T00:00:00Z",
192
+ });
193
+ const result = await (0, validateIntent_1.validateIntent)({
194
+ intentType: "transaction",
195
+ asset: { type: "native" },
196
+ type: "send",
197
+ sender: senderAddress,
198
+ recipient: validRecipient,
199
+ amount: BigInt(amount),
200
+ });
201
+ expect(result.errors.amount).toBeUndefined();
202
+ expect(result.amount).toBe(BigInt(amount));
203
+ });
204
+ });
205
+ describe("transaction types", () => {
206
+ it("should pass validation for delegate transaction", async () => {
207
+ const result = await (0, validateIntent_1.validateIntent)({
208
+ intentType: "staking",
209
+ asset: { type: "native" },
210
+ type: "delegate",
211
+ sender: senderAddress,
212
+ recipient: validRecipient,
213
+ amount: BigInt(0),
214
+ });
215
+ expect(result.errors).toEqual({});
216
+ });
217
+ it("should pass validation for undelegate transaction", async () => {
218
+ const result = await (0, validateIntent_1.validateIntent)({
219
+ intentType: "staking",
220
+ asset: { type: "native" },
221
+ type: "undelegate",
222
+ sender: senderAddress,
223
+ recipient: "",
224
+ amount: BigInt(0),
225
+ });
226
+ expect(result.errors).toEqual({});
227
+ });
228
+ it("should handle stake intent (mapped to delegate)", async () => {
229
+ const result = await (0, validateIntent_1.validateIntent)({
230
+ intentType: "staking",
231
+ asset: { type: "native" },
232
+ type: "stake",
233
+ sender: senderAddress,
234
+ recipient: validRecipient,
235
+ amount: BigInt(0),
236
+ });
237
+ expect(result.errors).toEqual({});
238
+ });
239
+ it("should handle unstake intent (mapped to undelegate)", async () => {
240
+ const result = await (0, validateIntent_1.validateIntent)({
241
+ intentType: "staking",
242
+ asset: { type: "native" },
243
+ type: "unstake",
244
+ sender: senderAddress,
245
+ recipient: "",
246
+ amount: BigInt(0),
247
+ });
248
+ expect(result.errors).toEqual({});
249
+ });
250
+ });
251
+ describe("successful validation", () => {
252
+ it("should return valid result with correct values", async () => {
253
+ const amount = BigInt(1000000);
254
+ const estimatedFees = BigInt(1500);
255
+ mockEstimateFees.mockResolvedValue({
256
+ fees: BigInt(1000),
257
+ gasLimit: BigInt(10000),
258
+ storageLimit: BigInt(0),
259
+ estimatedFees,
260
+ });
261
+ const result = await (0, validateIntent_1.validateIntent)({
262
+ intentType: "transaction",
263
+ asset: { type: "native" },
264
+ type: "send",
265
+ sender: senderAddress,
266
+ recipient: validRecipient,
267
+ amount,
268
+ });
269
+ expect(result).toMatchObject({
270
+ errors: {},
271
+ warnings: {},
272
+ estimatedFees,
273
+ amount,
274
+ totalSpent: amount + estimatedFees,
275
+ });
276
+ });
277
+ });
278
+ });
279
+ //# sourceMappingURL=validateIntent.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateIntent.test.js","sourceRoot":"","sources":["../../src/logic/validateIntent.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bakers.integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bakers.integration.test.d.ts","sourceRoot":"","sources":["../../src/network/bakers.integration.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,57 @@
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 serialization_1 = require("@ledgerhq/coin-framework/serialization");
7
+ const bakers_1 = require("../network/bakers");
8
+ const bakers_whitelist_default_1 = __importDefault(require("../network/bakers.whitelist-default"));
9
+ const config_1 = __importDefault(require("../config"));
10
+ const config_2 = require("../test/config");
11
+ function makeAccountRaw(name, pubkey, address, derivationMode) {
12
+ return {
13
+ id: `js:2:tezos:${pubkey}:${derivationMode}`,
14
+ seedIdentifier: address,
15
+ name: "Tezos " + name,
16
+ derivationMode,
17
+ index: 0,
18
+ freshAddress: address,
19
+ freshAddressPath: "",
20
+ blockHeight: 0,
21
+ operations: [],
22
+ pendingOperations: [],
23
+ currencyId: "tezos",
24
+ lastSyncDate: "",
25
+ balance: "0",
26
+ xpub: pubkey,
27
+ subAccounts: [],
28
+ tezosResources: { revealed: true, counter: 0 },
29
+ };
30
+ }
31
+ const accountTZrevealedDelegating = makeAccountRaw("TZrevealedDelegating", "02389ffd73423626894cb151416e51c72ec285376673daf83545eb5edb45b261ce", "tz1boBHAVpwcvKkNFAQHYr7mjxAz1PpVgKq7", "tezbox");
32
+ describe("tezos bakers", () => {
33
+ beforeAll(() => {
34
+ config_1.default.setCoinConfig(() => config_2.mockConfig);
35
+ });
36
+ test("atleast 10 whitelisted bakers are online", async () => {
37
+ const bakers = await (0, bakers_1.listBakers)(bakers_whitelist_default_1.default);
38
+ const retrievedAddresses = bakers.map(o => o.address);
39
+ let available = 0;
40
+ for (const whitelisted of bakers_whitelist_default_1.default) {
41
+ if (retrievedAddresses.includes(whitelisted)) {
42
+ available++;
43
+ }
44
+ else {
45
+ console.warn(`Baker ${whitelisted} no longer online !`);
46
+ }
47
+ }
48
+ expect(available).toBeGreaterThan(10);
49
+ });
50
+ // TODO we'll need two accounts to test diff cases
51
+ test("load account baker info", async () => {
52
+ const account = (0, serialization_1.fromAccountRaw)(accountTZrevealedDelegating);
53
+ const delegation = await (0, bakers_1.loadAccountDelegation)(account);
54
+ expect(delegation).toBe(null);
55
+ });
56
+ });
57
+ //# sourceMappingURL=bakers.integration.test.js.map