@ledgerhq/coin-tezos 6.7.0-nightly.8 → 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 -62
  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,194 @@
1
+ import { listOperations } from "./listOperations";
2
+ const mockNetworkGetTransactions = jest.fn();
3
+ jest.mock("../network", () => ({
4
+ tzkt: {
5
+ getAccountOperations: async () => {
6
+ return mockNetworkGetTransactions();
7
+ },
8
+ },
9
+ }));
10
+ const options = {
11
+ sort: "Ascending",
12
+ minHeight: 0,
13
+ };
14
+ describe("listOperations", () => {
15
+ afterEach(() => {
16
+ mockNetworkGetTransactions.mockClear();
17
+ });
18
+ it("should return no operations", async () => {
19
+ // Given
20
+ mockNetworkGetTransactions.mockResolvedValue([]);
21
+ // When
22
+ const [results, token] = await listOperations("any address", options);
23
+ // Then
24
+ expect(results).toEqual([]);
25
+ expect(token).toEqual("");
26
+ });
27
+ const someDestinationAddress = "tz3Vq38qYD3GEbWcXHMLt5PaASZrkDtEiA8D";
28
+ const someSenderAddress = "tz2CVMDVA16dD9A7kpWym2ptGDhs5zUhwWXr";
29
+ const someHash = "ooY7YKLgWE8mrELbsDLEtPsxFNaLdqRbbRR1b1FXDA6DwasAFe4";
30
+ const commonTx = {
31
+ counter: 65214462,
32
+ hash: someHash,
33
+ gasLimit: 4,
34
+ storageLimit: 5,
35
+ level: 2702551,
36
+ block: "BMJ1ZQ6",
37
+ timestamp: "2022-09-12T01:36:59Z",
38
+ sender: {
39
+ address: someSenderAddress,
40
+ },
41
+ };
42
+ const delegate = {
43
+ ...commonTx,
44
+ type: "delegation",
45
+ id: 111,
46
+ amount: 724846,
47
+ prevDelegate: {
48
+ address: someDestinationAddress,
49
+ },
50
+ newDelegate: null,
51
+ storageFee: 1,
52
+ bakerFee: 2,
53
+ allocationFee: 3,
54
+ };
55
+ const undelegate = {
56
+ ...delegate,
57
+ id: 222,
58
+ prevDelegate: null,
59
+ newDelegate: { address: someDestinationAddress },
60
+ };
61
+ const transfer = {
62
+ ...delegate,
63
+ id: 333,
64
+ initiator: null,
65
+ type: "transaction",
66
+ target: { address: someDestinationAddress },
67
+ };
68
+ const reveal = {
69
+ ...commonTx,
70
+ id: 444,
71
+ type: "reveal",
72
+ bakerFee: 4700,
73
+ status: "applied",
74
+ };
75
+ it.each([
76
+ ["undelegate", undelegate, "DELEGATE", "DELEGATE", 0n],
77
+ ["delegate", delegate, "UNDELEGATE", "UNDELEGATE", 0n],
78
+ ["transfer", transfer, "OUT", undefined, 724846n],
79
+ ])("should return %s operation with proper recipient list", async (_label, operation, expectedType, expectedLedgerOpType, expectedAmount) => {
80
+ // Given
81
+ mockNetworkGetTransactions.mockResolvedValue([operation]);
82
+ // When
83
+ const [results] = await listOperations("any address", options);
84
+ // Then
85
+ expect(results).toEqual([
86
+ {
87
+ id: `${operation.hash}-${operation.id}`,
88
+ asset: { type: "native" },
89
+ details: {
90
+ counter: operation.counter,
91
+ gasLimit: operation.gasLimit,
92
+ storageLimit: operation.storageLimit,
93
+ status: operation.status,
94
+ ledgerOpType: expectedLedgerOpType,
95
+ },
96
+ senders: [someSenderAddress],
97
+ recipients: [someDestinationAddress],
98
+ tx: {
99
+ block: {
100
+ hash: operation.block,
101
+ height: operation.level,
102
+ time: new Date(operation.timestamp),
103
+ },
104
+ date: new Date(operation.timestamp),
105
+ hash: operation.hash,
106
+ fees: BigInt((operation.allocationFee ?? 0) +
107
+ (operation.bakerFee ?? 0) +
108
+ (operation.storageFee ?? 0)),
109
+ },
110
+ type: expectedType,
111
+ value: expectedAmount,
112
+ },
113
+ ]);
114
+ });
115
+ it.each([
116
+ ["undelegate", undelegate],
117
+ ["delegate", delegate],
118
+ ["transfer", transfer],
119
+ ["reveal", reveal],
120
+ ])("should return %s operation with pagination equal to operation id", async (_label, operation) => {
121
+ // Given
122
+ mockNetworkGetTransactions.mockResolvedValue([operation]);
123
+ // When
124
+ const [results, token] = await listOperations("any address", options);
125
+ // Then
126
+ expect(results.length).toEqual(1);
127
+ expect(token).toEqual(JSON.stringify(operation.id));
128
+ });
129
+ it.each([
130
+ ["undelegate", undelegate, "DELEGATE"],
131
+ ["delegate", delegate, "UNDELEGATE"],
132
+ ["transfer", transfer, undefined],
133
+ ["reveal", reveal, "REVEAL"],
134
+ ])("should return %s operation with expected details", async (_label, operation, expectedLedgerOpType) => {
135
+ // Given
136
+ mockNetworkGetTransactions.mockResolvedValue([operation]);
137
+ // When
138
+ const [results, _] = await listOperations("any address", options);
139
+ // Then
140
+ expect(results.length).toEqual(1);
141
+ expect(results[0].details).toEqual({
142
+ counter: 65214462,
143
+ gasLimit: 4,
144
+ storageLimit: 5,
145
+ status: operation.status,
146
+ ledgerOpType: expectedLedgerOpType,
147
+ });
148
+ });
149
+ it.each([
150
+ { ...undelegate, newDelegate: null, prevDelegate: null },
151
+ { ...transfer, target: null },
152
+ ])("should return empty recipient list when no target can be found", async (operation) => {
153
+ // Given
154
+ mockNetworkGetTransactions.mockResolvedValue([operation]);
155
+ // When
156
+ const [results, token] = await listOperations("any address", options);
157
+ // Then
158
+ expect(results.length).toEqual(1);
159
+ expect(results[0].recipients).toEqual([]);
160
+ expect(token).toEqual(JSON.stringify(operation.id));
161
+ });
162
+ it.each([
163
+ ["undelegate", { ...undelegate, storageFee: 1, bakerFee: 2, allocationFee: 3 }],
164
+ ["delegate", { ...delegate, storageFee: 1, bakerFee: 2, allocationFee: 3 }],
165
+ ["transfer", { ...transfer, storageFee: 1, bakerFee: 2, allocationFee: 3 }],
166
+ ])("should compute the fees properly for %s operation", async (_label, operation) => {
167
+ // Given
168
+ mockNetworkGetTransactions.mockResolvedValue([operation]);
169
+ // When
170
+ const [results, _] = await listOperations("any address", options);
171
+ // Then
172
+ expect(results.length).toEqual(1);
173
+ expect(results[0].tx.fees).toEqual(BigInt(6));
174
+ });
175
+ it("should return empty sender list when no sender can be found", async () => {
176
+ // Given
177
+ const operation = { ...undelegate, sender: null };
178
+ mockNetworkGetTransactions.mockResolvedValue([operation]);
179
+ // When
180
+ const [results, token] = await listOperations("any address", options);
181
+ // Then
182
+ expect(results.length).toEqual(1);
183
+ expect(results[0].senders).toEqual([]);
184
+ expect(token).toEqual(JSON.stringify(operation.id));
185
+ });
186
+ it("should order the results in descending order even if the sort option is set to ascending", async () => {
187
+ const op1 = { ...undelegate, level: "1", timestamp: "2022-09-12T01:00:00Z" };
188
+ const op2 = { ...undelegate, level: "2", timestamp: "2022-09-12T01:01:00Z" };
189
+ mockNetworkGetTransactions.mockResolvedValue([op1, op2]);
190
+ const [results, _] = await listOperations("any address", options);
191
+ expect(results.map(op => op.tx.block.height)).toEqual(["2", "1"]);
192
+ });
193
+ });
194
+ //# 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"}
@@ -76,15 +76,14 @@ function mapTaquitoErrors(taquitoError, intentType) {
76
76
  /**
77
77
  * Calculates final amounts based on transaction type
78
78
  */
79
- function calculateAmounts(intent, senderInfo, estimatedFees) {
79
+ function calculateAmounts(intent, senderInfo, estimatedFees, estimatedAmount) {
80
80
  if (intent.type === "stake" || intent.type === "unstake") {
81
- const amount = BigInt(senderInfo.type === "user" ? senderInfo.balance : 0);
82
- return { amount, totalSpent: estimatedFees };
81
+ return { amount: 0n, totalSpent: estimatedFees };
83
82
  }
84
83
  if (intent.type === "send" && intent.useAllAmount) {
85
84
  if (senderInfo.type === "user") {
86
85
  const balance = BigInt(senderInfo.balance);
87
- const amount = balance > estimatedFees ? balance - estimatedFees : 0n;
86
+ const amount = estimatedAmount ?? (balance > estimatedFees ? balance - estimatedFees : 0n);
88
87
  return { amount, totalSpent: amount + estimatedFees };
89
88
  }
90
89
  return { amount: 0n, totalSpent: 0n };
@@ -109,6 +108,7 @@ export async function validateIntent(intent) {
109
108
  const errors = {};
110
109
  const warnings = {};
111
110
  let estimatedFees;
111
+ let estimatedAmount;
112
112
  let amount;
113
113
  let totalSpent;
114
114
  // Basic validation for send transactions
@@ -145,6 +145,7 @@ export async function validateIntent(intent) {
145
145
  },
146
146
  });
147
147
  estimatedFees = estimation.estimatedFees;
148
+ estimatedAmount = estimation.amount;
148
149
  // Handle Taquito errors
149
150
  if (estimation.taquitoError) {
150
151
  const taquitoErrors = mapTaquitoErrors(estimation.taquitoError, intent.type);
@@ -155,7 +156,7 @@ export async function validateIntent(intent) {
155
156
  estimatedFees = 2000n;
156
157
  }
157
158
  // Calculate final amounts
158
- const amounts = calculateAmounts(intent, senderInfo, estimatedFees);
159
+ const amounts = calculateAmounts(intent, senderInfo, estimatedFees, estimatedAmount);
159
160
  amount = amounts.amount;
160
161
  totalSpent = amounts.totalSpent;
161
162
  // 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,251 @@
1
+ import { validateIntent } from "./validateIntent";
2
+ import * as estimateFeesModule from "./estimateFees";
3
+ import tzktApi from "../network/tzkt";
4
+ import coinConfig from "../config";
5
+ import { RecipientRequired, InvalidAddress, InvalidAddressBecauseDestinationIsAlsoSource, AmountRequired, NotEnoughBalance, } from "@ledgerhq/errors";
6
+ describe("validateIntent", () => {
7
+ const senderAddress = "tz1TzrmTBSuiVHV2VfMnGRMYvTEPCP42oSM8";
8
+ const validRecipient = "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx";
9
+ const mockEstimateFees = jest.spyOn(estimateFeesModule, "estimateFees");
10
+ const mockGetAccountByAddress = jest.spyOn(tzktApi, "getAccountByAddress");
11
+ beforeEach(() => {
12
+ jest.clearAllMocks();
13
+ coinConfig.setCoinConfig(() => ({
14
+ status: { type: "active" },
15
+ baker: { url: "http://baker.example.com" },
16
+ explorer: { url: "http://tezos.explorer.com", maxTxQuery: 100 },
17
+ node: { url: "http://tezos.node.com" },
18
+ fees: {
19
+ minGasLimit: 600,
20
+ minRevealGasLimit: 300,
21
+ minStorageLimit: 0,
22
+ minFees: 500,
23
+ minEstimatedFees: 500,
24
+ },
25
+ }));
26
+ mockEstimateFees.mockResolvedValue({
27
+ fees: BigInt(1000),
28
+ gasLimit: BigInt(10000),
29
+ storageLimit: BigInt(0),
30
+ estimatedFees: BigInt(1000),
31
+ });
32
+ mockGetAccountByAddress.mockResolvedValue({
33
+ type: "user",
34
+ address: senderAddress,
35
+ publicKey: "edpk...",
36
+ balance: 5000000,
37
+ revealed: true,
38
+ counter: 0,
39
+ delegationLevel: 0,
40
+ delegationTime: "2021-01-01T00:00:00Z",
41
+ numTransactions: 0,
42
+ firstActivityTime: "2021-01-01T00:00:00Z",
43
+ });
44
+ });
45
+ describe("recipient validation", () => {
46
+ it("should return RecipientRequired error when recipient is missing", async () => {
47
+ const result = await validateIntent({
48
+ intentType: "transaction",
49
+ asset: { type: "native" },
50
+ type: "send",
51
+ sender: senderAddress,
52
+ recipient: "",
53
+ amount: BigInt(1000),
54
+ });
55
+ expect(result.errors.recipient).toBeInstanceOf(RecipientRequired);
56
+ });
57
+ it("should return InvalidAddress error for invalid recipient", async () => {
58
+ const result = await validateIntent({
59
+ intentType: "transaction",
60
+ asset: { type: "native" },
61
+ type: "send",
62
+ sender: senderAddress,
63
+ recipient: "invalid_address",
64
+ amount: BigInt(1000),
65
+ });
66
+ expect(result.errors.recipient).toBeInstanceOf(InvalidAddress);
67
+ });
68
+ it("should return InvalidAddressBecauseDestinationIsAlsoSource when sender equals recipient", async () => {
69
+ const result = await validateIntent({
70
+ intentType: "transaction",
71
+ asset: { type: "native" },
72
+ type: "send",
73
+ sender: senderAddress,
74
+ recipient: senderAddress,
75
+ amount: BigInt(1000),
76
+ });
77
+ expect(result.errors.recipient).toBeInstanceOf(InvalidAddressBecauseDestinationIsAlsoSource);
78
+ });
79
+ });
80
+ describe("amount validation", () => {
81
+ it("should return AmountRequired error when amount is zero and not useAllAmount", async () => {
82
+ const result = await validateIntent({
83
+ intentType: "transaction",
84
+ asset: { type: "native" },
85
+ type: "send",
86
+ sender: senderAddress,
87
+ recipient: validRecipient,
88
+ amount: BigInt(0),
89
+ useAllAmount: false,
90
+ });
91
+ expect(result.errors.amount).toBeInstanceOf(AmountRequired);
92
+ });
93
+ it("should not return AmountRequired error when useAllAmount is true", async () => {
94
+ const result = await validateIntent({
95
+ intentType: "transaction",
96
+ asset: { type: "native" },
97
+ type: "send",
98
+ sender: senderAddress,
99
+ recipient: validRecipient,
100
+ amount: BigInt(0),
101
+ useAllAmount: true,
102
+ });
103
+ expect(result.errors.amount).toBeUndefined();
104
+ });
105
+ it.each([["stake"], ["unstake"]])("returns 0 as amount when the transaction intent is '%s'", async (intentType) => {
106
+ const result = await validateIntent({
107
+ intentType: "transaction",
108
+ asset: { type: "native" },
109
+ type: intentType,
110
+ sender: "tz1TzrmTBSuiVHV2VfMnGRMYvTEPCP42oSM8",
111
+ recipient: "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx",
112
+ amount: BigInt(0),
113
+ useAllAmount: true,
114
+ });
115
+ expect(result).toEqual({
116
+ errors: {},
117
+ warnings: {},
118
+ estimatedFees: 1000n,
119
+ amount: 0n,
120
+ totalSpent: 1000n,
121
+ });
122
+ });
123
+ });
124
+ describe("balance validation", () => {
125
+ it("should return NotEnoughBalance error when amount exceeds balance", async () => {
126
+ const balance = 1000000; // 1 XTZ
127
+ const amount = 2000000; // 2 XTZ
128
+ mockGetAccountByAddress.mockResolvedValue({
129
+ type: "user",
130
+ address: senderAddress,
131
+ publicKey: "edpk...",
132
+ balance,
133
+ revealed: true,
134
+ counter: 0,
135
+ delegationLevel: 0,
136
+ delegationTime: "2021-01-01T00:00:00Z",
137
+ numTransactions: 0,
138
+ firstActivityTime: "2021-01-01T00:00:00Z",
139
+ });
140
+ const result = await validateIntent({
141
+ intentType: "transaction",
142
+ asset: { type: "native" },
143
+ type: "send",
144
+ sender: senderAddress,
145
+ recipient: validRecipient,
146
+ amount: BigInt(amount),
147
+ });
148
+ expect(result.errors.amount).toBeInstanceOf(NotEnoughBalance);
149
+ });
150
+ it("should pass validation when amount is within balance", async () => {
151
+ const balance = 5000000; // 5 XTZ
152
+ const amount = 1000000; // 1 XTZ
153
+ mockGetAccountByAddress.mockResolvedValue({
154
+ type: "user",
155
+ address: senderAddress,
156
+ publicKey: "edpk...",
157
+ balance,
158
+ revealed: true,
159
+ counter: 0,
160
+ delegationLevel: 0,
161
+ delegationTime: "2021-01-01T00:00:00Z",
162
+ numTransactions: 0,
163
+ firstActivityTime: "2021-01-01T00:00:00Z",
164
+ });
165
+ const result = await validateIntent({
166
+ intentType: "transaction",
167
+ asset: { type: "native" },
168
+ type: "send",
169
+ sender: senderAddress,
170
+ recipient: validRecipient,
171
+ amount: BigInt(amount),
172
+ });
173
+ expect(result.errors.amount).toBeUndefined();
174
+ expect(result.amount).toBe(BigInt(amount));
175
+ });
176
+ });
177
+ describe("transaction types", () => {
178
+ it("should pass validation for delegate transaction", async () => {
179
+ const result = await validateIntent({
180
+ intentType: "staking",
181
+ asset: { type: "native" },
182
+ type: "delegate",
183
+ sender: senderAddress,
184
+ recipient: validRecipient,
185
+ amount: BigInt(0),
186
+ });
187
+ expect(result.errors).toEqual({});
188
+ });
189
+ it("should pass validation for undelegate transaction", async () => {
190
+ const result = await validateIntent({
191
+ intentType: "staking",
192
+ asset: { type: "native" },
193
+ type: "undelegate",
194
+ sender: senderAddress,
195
+ recipient: "",
196
+ amount: BigInt(0),
197
+ });
198
+ expect(result.errors).toEqual({});
199
+ });
200
+ it("should handle stake intent (mapped to delegate)", async () => {
201
+ const result = await validateIntent({
202
+ intentType: "staking",
203
+ asset: { type: "native" },
204
+ type: "stake",
205
+ sender: senderAddress,
206
+ recipient: validRecipient,
207
+ amount: BigInt(0),
208
+ });
209
+ expect(result.errors).toEqual({});
210
+ });
211
+ it("should handle unstake intent (mapped to undelegate)", async () => {
212
+ const result = await validateIntent({
213
+ intentType: "staking",
214
+ asset: { type: "native" },
215
+ type: "unstake",
216
+ sender: senderAddress,
217
+ recipient: "",
218
+ amount: BigInt(0),
219
+ });
220
+ expect(result.errors).toEqual({});
221
+ });
222
+ });
223
+ describe("successful validation", () => {
224
+ it("should return valid result with correct values", async () => {
225
+ const amount = BigInt(1000000);
226
+ const estimatedFees = BigInt(1500);
227
+ mockEstimateFees.mockResolvedValue({
228
+ fees: BigInt(1000),
229
+ gasLimit: BigInt(10000),
230
+ storageLimit: BigInt(0),
231
+ estimatedFees,
232
+ });
233
+ const result = await validateIntent({
234
+ intentType: "transaction",
235
+ asset: { type: "native" },
236
+ type: "send",
237
+ sender: senderAddress,
238
+ recipient: validRecipient,
239
+ amount,
240
+ });
241
+ expect(result).toMatchObject({
242
+ errors: {},
243
+ warnings: {},
244
+ estimatedFees,
245
+ amount,
246
+ totalSpent: amount + estimatedFees,
247
+ });
248
+ });
249
+ });
250
+ });
251
+ //# 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,52 @@
1
+ import { fromAccountRaw } from "@ledgerhq/coin-framework/serialization";
2
+ import { loadAccountDelegation, listBakers } from "../network/bakers";
3
+ import whitelist from "../network/bakers.whitelist-default";
4
+ import coinConfig from "../config";
5
+ import { mockConfig } from "../test/config";
6
+ function makeAccountRaw(name, pubkey, address, derivationMode) {
7
+ return {
8
+ id: `js:2:tezos:${pubkey}:${derivationMode}`,
9
+ seedIdentifier: address,
10
+ name: "Tezos " + name,
11
+ derivationMode,
12
+ index: 0,
13
+ freshAddress: address,
14
+ freshAddressPath: "",
15
+ blockHeight: 0,
16
+ operations: [],
17
+ pendingOperations: [],
18
+ currencyId: "tezos",
19
+ lastSyncDate: "",
20
+ balance: "0",
21
+ xpub: pubkey,
22
+ subAccounts: [],
23
+ tezosResources: { revealed: true, counter: 0 },
24
+ };
25
+ }
26
+ const accountTZrevealedDelegating = makeAccountRaw("TZrevealedDelegating", "02389ffd73423626894cb151416e51c72ec285376673daf83545eb5edb45b261ce", "tz1boBHAVpwcvKkNFAQHYr7mjxAz1PpVgKq7", "tezbox");
27
+ describe("tezos bakers", () => {
28
+ beforeAll(() => {
29
+ coinConfig.setCoinConfig(() => mockConfig);
30
+ });
31
+ test("atleast 10 whitelisted bakers are online", async () => {
32
+ const bakers = await listBakers(whitelist);
33
+ const retrievedAddresses = bakers.map(o => o.address);
34
+ let available = 0;
35
+ for (const whitelisted of whitelist) {
36
+ if (retrievedAddresses.includes(whitelisted)) {
37
+ available++;
38
+ }
39
+ else {
40
+ console.warn(`Baker ${whitelisted} no longer online !`);
41
+ }
42
+ }
43
+ expect(available).toBeGreaterThan(10);
44
+ });
45
+ // TODO we'll need two accounts to test diff cases
46
+ test("load account baker info", async () => {
47
+ const account = fromAccountRaw(accountTZrevealedDelegating);
48
+ const delegation = await loadAccountDelegation(account);
49
+ expect(delegation).toBe(null);
50
+ });
51
+ });
52
+ //# sourceMappingURL=bakers.integration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bakers.integration.test.js","sourceRoot":"","sources":["../../src/network/bakers.integration.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAExE,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,SAAS,MAAM,qCAAqC,CAAC;AAC5D,OAAO,UAA+B,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,SAAS,cAAc,CACrB,IAAY,EACZ,MAAc,EACd,OAAe,EACf,cAA8B;IAE9B,OAAO;QACL,EAAE,EAAE,cAAc,MAAM,IAAI,cAAc,EAAE;QAC5C,cAAc,EAAE,OAAO;QACvB,IAAI,EAAE,QAAQ,GAAG,IAAI;QACrB,cAAc;QACd,KAAK,EAAE,CAAC;QACR,YAAY,EAAE,OAAO;QACrB,gBAAgB,EAAE,EAAE;QACpB,WAAW,EAAE,CAAC;QACd,UAAU,EAAE,EAAE;QACd,iBAAiB,EAAE,EAAE;QACrB,UAAU,EAAE,OAAO;QACnB,YAAY,EAAE,EAAE;QAChB,OAAO,EAAE,GAAG;QACZ,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,EAAE;QACf,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE;KAC/C,CAAC;AACJ,CAAC;AAED,MAAM,2BAA2B,GAAG,cAAc,CAChD,sBAAsB,EACtB,oEAAoE,EACpE,sCAAsC,EACtC,QAAQ,CACT,CAAC;AAEF,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,aAAa,CAAC,GAAoB,EAAE,CAAC,UAA6B,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,WAAW,IAAI,SAAS,EAAE,CAAC;YACpC,IAAI,kBAAkB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC7C,SAAS,EAAE,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,SAAS,WAAW,qBAAqB,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QACD,MAAM,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,kDAAkD;IAClD,IAAI,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,OAAO,GAAG,cAAc,CAAC,2BAA2B,CAAC,CAAC;QAC5D,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bakers.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bakers.test.d.ts","sourceRoot":"","sources":["../../src/network/bakers.test.ts"],"names":[],"mappings":""}