@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,204 @@
1
+ import network from "@ledgerhq/live-network/network";
2
+ import { asBaker, cache } from "./bakers";
3
+ import coinConfig from "../config";
4
+ import { mockConfig } from "../test/config";
5
+ jest.mock("@ledgerhq/live-network/network");
6
+ const mockedNetwork = jest.mocked(network);
7
+ const data = [
8
+ {
9
+ address: "tz1Kf25fX1VdmYGSEzwFy1wNmkbSEZ2V83sY",
10
+ name: "Tezos Seoul",
11
+ status: "closed",
12
+ balance: 2.941247,
13
+ features: [],
14
+ delegation: {
15
+ enabled: true,
16
+ minBalance: 100,
17
+ fee: 0.07,
18
+ capacity: 0,
19
+ freeSpace: -815914.909184,
20
+ estimatedApy: 0,
21
+ features: [
22
+ {
23
+ title: "Distributed rewards",
24
+ content: "Baker doesn't pay network fee rewards",
25
+ },
26
+ ],
27
+ },
28
+ staking: {
29
+ enabled: false,
30
+ minBalance: 0,
31
+ fee: 0,
32
+ capacity: 0,
33
+ freeSpace: 0,
34
+ estimatedApy: 0.0967,
35
+ features: [],
36
+ },
37
+ },
38
+ {
39
+ address: "tz1gg5bjopPcr9agjamyu9BbXKLibNc2rbAq",
40
+ name: "hodl.farm",
41
+ status: "active",
42
+ balance: 43334.236051,
43
+ features: [
44
+ {
45
+ title: "Contribution",
46
+ content: {
47
+ project: "Tezos on Kubernetes",
48
+ link: "https://github.com/hodl-dot-farm/tezos-on-gke",
49
+ },
50
+ },
51
+ ],
52
+ delegation: {
53
+ enabled: false,
54
+ minBalance: 0,
55
+ fee: 1,
56
+ capacity: 363902.963184,
57
+ freeSpace: 162427.070878,
58
+ estimatedApy: 0,
59
+ features: [
60
+ {
61
+ title: "Distributed rewards",
62
+ content: "Baker doesn't pay network fee, denunciation and revelation rewards",
63
+ },
64
+ {
65
+ title: "Compensated loss",
66
+ content: "Baker compensates missed baking and attestation rewards",
67
+ },
68
+ ],
69
+ },
70
+ staking: {
71
+ enabled: true,
72
+ minBalance: 0,
73
+ fee: 0.075,
74
+ capacity: 363902.963184,
75
+ freeSpace: 293604.290457,
76
+ estimatedApy: 0.0894,
77
+ features: [],
78
+ },
79
+ },
80
+ {
81
+ address: "tz3LV9aGKHDnAZHCtC9SjNtTrKRu678FqSki",
82
+ name: "Ledger by Kiln",
83
+ status: "active",
84
+ balance: 801425.237986,
85
+ features: [],
86
+ delegation: {
87
+ enabled: true,
88
+ minBalance: 1,
89
+ fee: 0.12,
90
+ capacity: 7002345.443544,
91
+ freeSpace: 36021.368062,
92
+ estimatedApy: 0.0284,
93
+ features: [],
94
+ },
95
+ staking: {
96
+ enabled: true,
97
+ minBalance: 0,
98
+ fee: 0.2,
99
+ capacity: 7002345.443544,
100
+ freeSpace: 6837721.800765,
101
+ estimatedApy: 0.0774,
102
+ features: [],
103
+ },
104
+ },
105
+ {
106
+ address: "tz1KwafrdmM8RwxUMxdbbtWyZuKLWSPVxe9u",
107
+ name: "Tezberry Pie",
108
+ status: "active",
109
+ balance: 17798.149073,
110
+ features: [],
111
+ delegation: {
112
+ enabled: true,
113
+ minBalance: 10,
114
+ fee: 0.12,
115
+ capacity: 155364.334245,
116
+ freeSpace: 100030.802123,
117
+ estimatedApy: 0.0284,
118
+ features: [],
119
+ },
120
+ staking: {
121
+ enabled: true,
122
+ minBalance: 0,
123
+ fee: 0.12,
124
+ capacity: 155364.334245,
125
+ freeSpace: 100143.090362,
126
+ estimatedApy: 0.0851,
127
+ features: [],
128
+ },
129
+ },
130
+ {
131
+ address: "tz1WnfXMPaNTBmH7DBPwqCWs9cPDJdkGBTZ8",
132
+ name: "TezosHODL",
133
+ status: "active",
134
+ balance: 417336.25576,
135
+ features: [],
136
+ delegation: {
137
+ enabled: true,
138
+ minBalance: 10,
139
+ fee: 0.15,
140
+ capacity: 3733611.262254,
141
+ freeSpace: 2216838.749908,
142
+ estimatedApy: 0.0274,
143
+ features: [
144
+ {
145
+ title: "Distributed rewards",
146
+ content: "Baker doesn't pay denunciation rewards",
147
+ },
148
+ ],
149
+ },
150
+ staking: {
151
+ enabled: true,
152
+ minBalance: 0,
153
+ fee: 0.15,
154
+ capacity: 2074228.47903,
155
+ freeSpace: 1440050.488348,
156
+ estimatedApy: 0.0822,
157
+ features: [],
158
+ },
159
+ },
160
+ ];
161
+ describe("Tezos Baker", () => {
162
+ beforeAll(() => {
163
+ coinConfig.setCoinConfig(() => mockConfig);
164
+ });
165
+ afterEach(() => {
166
+ jest.clearAllMocks();
167
+ cache.reset();
168
+ });
169
+ describe("Get bakers from cache", () => {
170
+ beforeEach(() => {
171
+ const response = {
172
+ data,
173
+ status: 200,
174
+ headers: {},
175
+ statusText: "",
176
+ config: {
177
+ headers: {},
178
+ },
179
+ };
180
+ mockedNetwork.mockReturnValue(Promise.resolve(response));
181
+ });
182
+ it("Ledger Baker should be first in the list", async () => {
183
+ const bakers = await cache();
184
+ expect(bakers[0].name).toBe("Ledger by Kiln");
185
+ });
186
+ });
187
+ describe("asBaker", () => {
188
+ it("Should convert api baker to LL baker (capacity status full)", () => {
189
+ const testBaker = data.find(baker => baker.delegation.freeSpace < 0);
190
+ const baker = asBaker(testBaker);
191
+ expect(baker?.name).toBe(testBaker.name);
192
+ expect(baker?.nominalYield).toBe(`${Math.floor(10000 * testBaker.delegation.estimatedApy) / 100} %`);
193
+ expect(baker?.capacityStatus).toBe("full");
194
+ });
195
+ it("Should convert api baker to LL baker (capacity status normal)", () => {
196
+ const testBaker = data.find(baker => baker.delegation.freeSpace > 0);
197
+ const baker = asBaker(testBaker);
198
+ expect(baker?.name).toBe(testBaker.name);
199
+ expect(baker?.nominalYield).toBe(`${Math.floor(10000 * testBaker.delegation.estimatedApy) / 100} %`);
200
+ expect(baker?.capacityStatus).toBe("normal");
201
+ });
202
+ });
203
+ });
204
+ //# sourceMappingURL=bakers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bakers.test.js","sourceRoot":"","sources":["../../src/network/bakers.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/coin-tezos",
3
- "version": "6.7.0-nightly.7",
3
+ "version": "6.7.0",
4
4
  "description": "Tezos Coin integration",
5
5
  "keywords": [
6
6
  "Ledger",
@@ -75,13 +75,13 @@
75
75
  "invariant": "^2.2.4",
76
76
  "lodash": "^4.17.21",
77
77
  "rxjs": "^7.8.1",
78
- "@ledgerhq/coin-framework": "^6.7.0-nightly.7",
79
- "@ledgerhq/cryptoassets": "^13.31.0-nightly.7",
80
- "@ledgerhq/devices": "8.6.2-nightly.0",
81
- "@ledgerhq/errors": "^6.27.0-nightly.0",
82
- "@ledgerhq/live-network": "^2.0.20-nightly.3",
78
+ "@ledgerhq/coin-framework": "^6.7.0",
79
+ "@ledgerhq/cryptoassets": "^13.31.0",
80
+ "@ledgerhq/devices": "8.6.1",
81
+ "@ledgerhq/errors": "^6.26.0",
82
+ "@ledgerhq/live-network": "^2.0.20",
83
83
  "@ledgerhq/logs": "^6.13.0",
84
- "@ledgerhq/types-live": "^6.87.0-nightly.5"
84
+ "@ledgerhq/types-live": "^6.87.0"
85
85
  },
86
86
  "devDependencies": {
87
87
  "@faker-js/faker": "^8.4.1",
@@ -94,7 +94,7 @@
94
94
  "ts-jest": "^29.1.4",
95
95
  "typescript": "^5.4.5",
96
96
  "@ledgerhq/disable-network-setup": "^0.0.0",
97
- "@ledgerhq/types-cryptoassets": "^7.29.0-nightly.0"
97
+ "@ledgerhq/types-cryptoassets": "^7.29.0"
98
98
  },
99
99
  "overrides": {
100
100
  "@taquito/ledger-signer": {
@@ -83,12 +83,12 @@ describe("listOperations", () => {
83
83
  };
84
84
 
85
85
  it.each([
86
- ["undelegate", undelegate, "DELEGATE", "DELEGATE"],
87
- ["delegate", delegate, "UNDELEGATE", "UNDELEGATE"],
88
- ["transfer", transfer, "OUT", undefined],
86
+ ["undelegate", undelegate, "DELEGATE", "DELEGATE", 0n],
87
+ ["delegate", delegate, "UNDELEGATE", "UNDELEGATE", 0n],
88
+ ["transfer", transfer, "OUT", undefined, 724846n],
89
89
  ])(
90
90
  "should return %s operation with proper recipient list",
91
- async (_label, operation, expectedType, expectedLedgerOpType) => {
91
+ async (_label, operation, expectedType, expectedLedgerOpType, expectedAmount) => {
92
92
  // Given
93
93
  mockNetworkGetTransactions.mockResolvedValue([operation]);
94
94
  // When
@@ -122,7 +122,7 @@ describe("listOperations", () => {
122
122
  ),
123
123
  },
124
124
  type: expectedType,
125
- value: BigInt(operation.amount),
125
+ value: expectedAmount,
126
126
  },
127
127
  ]);
128
128
  },
@@ -105,7 +105,8 @@ function convertOperation(
105
105
 
106
106
  const senders = sender?.address ? [sender.address] : [];
107
107
 
108
- const amount = isAPIRevealType(operation) ? 0n : BigInt(operation.amount);
108
+ const amount =
109
+ isAPIRevealType(operation) || isAPIDelegationType(operation) ? 0n : BigInt(operation.amount);
109
110
 
110
111
  const fee =
111
112
  BigInt(operation.storageFee ?? 0) +
@@ -124,6 +124,29 @@ describe("validateIntent", () => {
124
124
 
125
125
  expect(result.errors.amount).toBeUndefined();
126
126
  });
127
+
128
+ it.each([["stake"], ["unstake"]])(
129
+ "returns 0 as amount when the transaction intent is '%s'",
130
+ async intentType => {
131
+ const result = await validateIntent({
132
+ intentType: "transaction",
133
+ asset: { type: "native" },
134
+ type: intentType,
135
+ sender: "tz1TzrmTBSuiVHV2VfMnGRMYvTEPCP42oSM8",
136
+ recipient: "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx",
137
+ amount: BigInt(0),
138
+ useAllAmount: true,
139
+ });
140
+
141
+ expect(result).toEqual({
142
+ errors: {},
143
+ warnings: {},
144
+ estimatedFees: 1000n,
145
+ amount: 0n,
146
+ totalSpent: 1000n,
147
+ });
148
+ },
149
+ );
127
150
  });
128
151
 
129
152
  describe("balance validation", () => {
@@ -98,16 +98,16 @@ function calculateAmounts(
98
98
  intent: TransactionIntent,
99
99
  senderInfo: any,
100
100
  estimatedFees: bigint,
101
+ estimatedAmount: bigint | undefined,
101
102
  ): { amount: bigint; totalSpent: bigint } {
102
103
  if (intent.type === "stake" || intent.type === "unstake") {
103
- const amount = BigInt(senderInfo.type === "user" ? senderInfo.balance : 0);
104
- return { amount, totalSpent: estimatedFees };
104
+ return { amount: 0n, totalSpent: estimatedFees };
105
105
  }
106
106
 
107
107
  if (intent.type === "send" && intent.useAllAmount) {
108
108
  if (senderInfo.type === "user") {
109
109
  const balance = BigInt(senderInfo.balance);
110
- const amount = balance > estimatedFees ? balance - estimatedFees : 0n;
110
+ const amount = estimatedAmount ?? (balance > estimatedFees ? balance - estimatedFees : 0n);
111
111
  return { amount, totalSpent: amount + estimatedFees };
112
112
  }
113
113
  return { amount: 0n, totalSpent: 0n };
@@ -137,6 +137,7 @@ export async function validateIntent(intent: TransactionIntent): Promise<Transac
137
137
  const errors: Record<string, Error> = {};
138
138
  const warnings: Record<string, Error> = {};
139
139
  let estimatedFees: bigint;
140
+ let estimatedAmount: bigint | undefined;
140
141
  let amount: bigint;
141
142
  let totalSpent: bigint;
142
143
 
@@ -178,6 +179,7 @@ export async function validateIntent(intent: TransactionIntent): Promise<Transac
178
179
  },
179
180
  });
180
181
  estimatedFees = estimation.estimatedFees;
182
+ estimatedAmount = estimation.amount;
181
183
 
182
184
  // Handle Taquito errors
183
185
  if (estimation.taquitoError) {
@@ -189,7 +191,7 @@ export async function validateIntent(intent: TransactionIntent): Promise<Transac
189
191
  }
190
192
 
191
193
  // Calculate final amounts
192
- const amounts = calculateAmounts(intent, senderInfo, estimatedFees);
194
+ const amounts = calculateAmounts(intent, senderInfo, estimatedFees, estimatedAmount);
193
195
  amount = amounts.amount;
194
196
  totalSpent = amounts.totalSpent;
195
197