@ledgerhq/coin-tezos 0.6.3 → 0.6.4-next.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @ledgerhq/coin-tezos
2
2
 
3
+ ## 0.6.4-next.0
4
+
5
+ ### Patch Changes
6
+
7
+ - [#8004](https://github.com/LedgerHQ/ledger-live/pull/8004) [`e3e46e5`](https://github.com/LedgerHQ/ledger-live/commit/e3e46e5efa4e7955ffc7a3bf1f7dd333aa6a5806) Thanks [@qperrot](https://github.com/qperrot)! - Tezos send full balance
8
+
9
+ - [#8004](https://github.com/LedgerHQ/ledger-live/pull/8004) [`28ab0bc`](https://github.com/LedgerHQ/ledger-live/commit/28ab0bc6b441d8dac1d7c8dc4d5bd6b88031eeb5) Thanks [@qperrot](https://github.com/qperrot)! - Tezos send full balance and fix algorand format issue
10
+
11
+ - Updated dependencies [[`642c714`](https://github.com/LedgerHQ/ledger-live/commit/642c714d52eaaccb1b8ac3a2ee0391b641d19303), [`1b3a21d`](https://github.com/LedgerHQ/ledger-live/commit/1b3a21d5d8496c42f4dec4116fdcf59ad6f038cd), [`0a16ae4`](https://github.com/LedgerHQ/ledger-live/commit/0a16ae4cb58ad9f2e67c7f3494b0dc52cb7423a1), [`00cab1d`](https://github.com/LedgerHQ/ledger-live/commit/00cab1db1d67eb0cf35059eeeb9e2d8bd328f8f3)]:
12
+ - @ledgerhq/types-live@6.52.1-next.0
13
+ - @ledgerhq/coin-framework@0.18.3-next.0
14
+ - @ledgerhq/cryptoassets@13.6.1-next.0
15
+ - @ledgerhq/live-network@2.0.2-next.0
16
+
3
17
  ## 0.6.3
4
18
 
5
19
  ### Patch Changes
@@ -18,6 +18,7 @@ const prepareTransaction_1 = __importDefault(require("./prepareTransaction"));
18
18
  const faker_1 = require("@faker-js/faker");
19
19
  const config_1 = __importDefault(require("../config"));
20
20
  const config_2 = require("../test/config");
21
+ const taquito_1 = require("@taquito/taquito");
21
22
  const mockTezosEstimate = jest.fn();
22
23
  jest.mock("../logic/tezosToolkit", () => ({
23
24
  getTezosToolkit: () => ({
@@ -73,13 +74,36 @@ describe("prepareTransaction", () => {
73
74
  // Then
74
75
  expect(newTx).toEqual(Object.assign(Object.assign({}, tx), { fees: new bignumber_js_1.default(tezosEstimate.suggestedFeeMutez), estimatedFees: new bignumber_js_1.default(tezosEstimate.suggestedFeeMutez), gasLimit: new bignumber_js_1.default(tezosEstimate.gasLimit), storageLimit: new bignumber_js_1.default(tezosEstimate.storageLimit) }));
75
76
  }));
76
- it("returns new transaction with estimated fees by TezosToolkit when useAllAmount", () => __awaiter(void 0, void 0, void 0, function* () {
77
+ it("returns new transaction with estimated fees by TezosToolkit when useAllAmount from revealed account to revealed account", () => __awaiter(void 0, void 0, void 0, function* () {
77
78
  // Given
78
79
  const tx = (0, bridge_fixture_1.createFixtureTransaction)({
79
80
  amount: (0, bignumber_js_1.default)(200),
80
81
  recipient: "tz1VSUr8wwNhLAzempoch5d6hLRiTh8Cjcjb",
81
82
  useAllAmount: true,
82
83
  });
84
+ const tezosEstimate = {
85
+ suggestedFeeMutez: faker_1.faker.number.int(20),
86
+ gasLimit: faker_1.faker.number.int(20),
87
+ storageLimit: faker_1.faker.number.int(20),
88
+ opSize: faker_1.faker.number.int(20),
89
+ burnFeeMutez: faker_1.faker.number.int(0),
90
+ };
91
+ mockTezosEstimate.mockResolvedValue(tezosEstimate);
92
+ const account = (0, bridge_fixture_1.createFixtureAccount)({ balance: (0, bignumber_js_1.default)(1000) });
93
+ // When
94
+ const newTx = yield (0, prepareTransaction_1.default)(account, tx);
95
+ // Then
96
+ const gasLimit = 500; // hardcoded in the function
97
+ const maxAmount = account.balance.minus(tezosEstimate.suggestedFeeMutez);
98
+ expect(newTx).toEqual(Object.assign(Object.assign({}, tx), { fees: new bignumber_js_1.default(tezosEstimate.suggestedFeeMutez), estimatedFees: new bignumber_js_1.default(tezosEstimate.suggestedFeeMutez), gasLimit: new bignumber_js_1.default(tezosEstimate.gasLimit), storageLimit: new bignumber_js_1.default(tezosEstimate.storageLimit), amount: maxAmount.minus(gasLimit - (tezosEstimate.opSize + gasLimit * 0.1)) }));
99
+ }));
100
+ it("returns new transaction with estimated fees by TezosToolkit when useAllAmount from revealed account to account with zero balance", () => __awaiter(void 0, void 0, void 0, function* () {
101
+ // Given
102
+ const tx = (0, bridge_fixture_1.createFixtureTransaction)({
103
+ amount: (0, bignumber_js_1.default)(0),
104
+ recipient: "tz1VSUr8wwNhLAzempoch5d6hLRiTh8Cjcjb",
105
+ useAllAmount: true,
106
+ });
83
107
  const tezosEstimate = {
84
108
  suggestedFeeMutez: faker_1.faker.number.int(20),
85
109
  gasLimit: faker_1.faker.number.int(20),
@@ -93,11 +117,34 @@ describe("prepareTransaction", () => {
93
117
  const newTx = yield (0, prepareTransaction_1.default)(account, tx);
94
118
  // Then
95
119
  const gasLimit = 500; // hardcoded in the function
96
- const computedFees = new bignumber_js_1.default(tezosEstimate.suggestedFeeMutez + tezosEstimate.opSize + gasLimit * 0.1);
97
- expect(newTx).toEqual(Object.assign(Object.assign({}, tx), { fees: computedFees, estimatedFees: computedFees, gasLimit: new bignumber_js_1.default(tezosEstimate.gasLimit + gasLimit), storageLimit: new bignumber_js_1.default(tezosEstimate.storageLimit), amount: account.balance.minus(tezosEstimate.opSize +
98
- gasLimit * 0.1 +
99
- tezosEstimate.suggestedFeeMutez +
100
- tezosEstimate.burnFeeMutez) }));
120
+ const computedFees = new bignumber_js_1.default(tezosEstimate.suggestedFeeMutez + tezosEstimate.burnFeeMutez - 20 * taquito_1.COST_PER_BYTE);
121
+ const maxAmount = account.balance.minus(computedFees);
122
+ expect(newTx).toEqual(Object.assign(Object.assign({}, tx), { fees: new bignumber_js_1.default(tezosEstimate.suggestedFeeMutez), estimatedFees: new bignumber_js_1.default(tezosEstimate.suggestedFeeMutez), gasLimit: new bignumber_js_1.default(tezosEstimate.gasLimit), storageLimit: new bignumber_js_1.default(tezosEstimate.storageLimit), amount: maxAmount.minus(gasLimit - (tezosEstimate.opSize + gasLimit * 0.1)) }));
123
+ }));
124
+ it("returns new transaction with estimated fees by TezosToolkit when useAllAmount from unrevealed account to revealed account", () => __awaiter(void 0, void 0, void 0, function* () {
125
+ // Given
126
+ const tx = (0, bridge_fixture_1.createFixtureTransaction)({
127
+ amount: (0, bignumber_js_1.default)(200),
128
+ recipient: "tz1VSUr8wwNhLAzempoch5d6hLRiTh8Cjcjb",
129
+ useAllAmount: true,
130
+ });
131
+ const tezosEstimate = {
132
+ suggestedFeeMutez: faker_1.faker.number.int(20),
133
+ gasLimit: faker_1.faker.number.int(20),
134
+ storageLimit: faker_1.faker.number.int(20),
135
+ opSize: faker_1.faker.number.int(20),
136
+ burnFeeMutez: faker_1.faker.number.int(0),
137
+ };
138
+ mockTezosEstimate.mockResolvedValue(tezosEstimate);
139
+ const account = (0, bridge_fixture_1.createFixtureAccount)({ balance: (0, bignumber_js_1.default)(1000) });
140
+ account.tezosResources.revealed = false;
141
+ // When
142
+ const newTx = yield (0, prepareTransaction_1.default)(account, tx);
143
+ // Then
144
+ const gasLimit = 500; // hardcoded in the function
145
+ const computedFees = new bignumber_js_1.default(tezosEstimate.suggestedFeeMutez + taquito_1.DEFAULT_FEE.REVEAL);
146
+ const maxAmount = account.balance.minus(computedFees);
147
+ expect(newTx).toEqual(Object.assign(Object.assign({}, tx), { fees: new bignumber_js_1.default(tezosEstimate.suggestedFeeMutez), estimatedFees: new bignumber_js_1.default(tezosEstimate.suggestedFeeMutez + taquito_1.DEFAULT_FEE.REVEAL), gasLimit: new bignumber_js_1.default(tezosEstimate.gasLimit), storageLimit: new bignumber_js_1.default(tezosEstimate.storageLimit), amount: maxAmount.minus(gasLimit - (tezosEstimate.opSize + gasLimit * 0.1)) }));
101
148
  }));
102
149
  // it("returns the passed transaction if fees are the same", async () => {
103
150
  // // Given
@@ -1 +1 @@
1
- {"version":3,"file":"prepareTransaction.test.js","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prepareTransaction.test.js","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"estimateFees.d.ts","sourceRoot":"","sources":["../../src/logic/estimateFees.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGpD,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,kBAAkB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AACF;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,EACjC,OAAO,EACP,WAAW,GACZ,EAAE;IACD,OAAO,EAAE,eAAe,CAAC;IACzB,WAAW,EAAE,mBAAmB,CAAC;CAClC,GAAG,OAAO,CAAC,aAAa,CAAC,CAyGzB"}
1
+ {"version":3,"file":"estimateFees.d.ts","sourceRoot":"","sources":["../../src/logic/estimateFees.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGpD,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,kBAAkB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AACF;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,EACjC,OAAO,EACP,WAAW,GACZ,EAAE;IACD,OAAO,EAAE,eAAe,CAAC;IACzB,WAAW,EAAE,mBAAmB,CAAC;CAClC,GAAG,OAAO,CAAC,aAAa,CAAC,CAgHzB"}
@@ -74,11 +74,19 @@ function estimateFees(_a) {
74
74
  default:
75
75
  throw new errors_1.UnsupportedTransactionMode("unsupported mode", { mode: transaction.mode });
76
76
  }
77
+ // NOTE: if useAllAmount is true, is it for sure in the send mode (ie. transfer)?
77
78
  if (transaction.useAllAmount) {
78
- const totalFees = estimate.suggestedFeeMutez + estimate.burnFeeMutez;
79
+ let totalFees;
80
+ if (estimate.burnFeeMutez > 0) {
81
+ // NOTE: from https://github.com/ecadlabs/taquito/blob/master/integration-tests/__tests__/contract/empty-implicit-account-into-new-implicit-account.spec.ts#L37
82
+ totalFees = estimate.suggestedFeeMutez + estimate.burnFeeMutez - 20 * taquito_1.COST_PER_BYTE; // 20 is storage buffer
83
+ }
84
+ else {
85
+ totalFees = estimate.suggestedFeeMutez;
86
+ }
79
87
  const maxAmount = parseInt(account.balance.toString()) -
80
88
  (totalFees + (account.revealed ? 0 : taquito_1.DEFAULT_FEE.REVEAL));
81
- // from https://github.com/ecadlabs/taquito/blob/a70c64c4b105381bb9f1d04c9c70e8ef26e9241c/integration-tests/contract-empty-implicit-account-into-new-implicit-account.spec.ts#L33
89
+ // NOTE: from https://github.com/ecadlabs/taquito/blob/a70c64c4b105381bb9f1d04c9c70e8ef26e9241c/integration-tests/contract-empty-implicit-account-into-new-implicit-account.spec.ts#L33
82
90
  // Temporary fix, see https://gitlab.com/tezos/tezos/-/issues/1754
83
91
  // we need to increase the gasLimit and fee returned by the estimation
84
92
  const gasBuffer = 500;
@@ -87,9 +95,10 @@ function estimateFees(_a) {
87
95
  return gasBuffer * MINIMAL_FEE_PER_GAS_MUTEZ + opSize;
88
96
  };
89
97
  const incr = increasedFee(gasBuffer, Number(estimate.opSize));
90
- estimation.fees = BigInt(estimate.suggestedFeeMutez + incr);
91
- estimation.gasLimit = BigInt(estimate.gasLimit + gasBuffer);
92
- estimation.amount = maxAmount - incr > 0 ? BigInt(maxAmount - incr) : BigInt(0);
98
+ const maxMinusBuff = maxAmount - (gasBuffer - incr);
99
+ estimation.amount = maxMinusBuff > 0 ? BigInt(maxMinusBuff) : BigInt(0);
100
+ estimation.fees = BigInt(estimate.suggestedFeeMutez);
101
+ estimation.gasLimit = BigInt(estimate.gasLimit);
93
102
  }
94
103
  else {
95
104
  estimation.fees = BigInt(estimate.suggestedFeeMutez);
@@ -1 +1 @@
1
- {"version":3,"file":"estimateFees.js","sourceRoot":"","sources":["../../src/logic/estimateFees.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0DAAwD;AACxD,iEAA0E;AAC1E,8CAAgF;AAChF,0CAA4D;AAC5D,yCAAqC;AACrC,iDAAiD;AAEjD,4CAA6D;AAuB7D;;;;;GAKG;AACH,SAAsB,YAAY;yDAAC,EACjC,OAAO,EACP,WAAW,GAIZ;QACC,MAAM,aAAa,GAAG,IAAA,kBAAU,EAC9B,IAAA,yBAAiB,EAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC,EAAE,8BAAc,CAAC,OAAO,CAAC,EACjF,cAAM,CAAC,cAAM,CAAC,IAAI,CAAC,CACpB,CAAC;QAEF,MAAM,YAAY,GAAG,IAAA,8BAAe,GAAE,CAAC;QACvC,YAAY,CAAC,WAAW,CAAC;YACvB,MAAM,EAAE;gBACN,aAAa,EAAE,GAAS,EAAE,gDAAC,OAAA,OAAO,CAAC,OAAO,CAAA,GAAA;gBAC1C,SAAS,EAAE,GAAS,EAAE,gDAAC,OAAA,aAAa,CAAA,GAAA;gBACpC,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;gBACpD,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;aAC1D;SACF,CAAC,CAAC;QAEH,MAAM,UAAU,GAAkB;YAChC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YACf,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;YACnB,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;YACvB,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;SACzB,CAAC;QAEF,2BAA2B;QAC3B,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAClC,OAAO,WAAW,CAAC,YAAY,CAAC,CAAC,iCAAM,UAAU,KAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,IAAG,CAAC,CAAC,UAAU,CAAC;QACtF,CAAC;QAED,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;QAChC,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;YAC7B,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,uEAAuE;QAC7F,CAAC;QAED,IAAI,CAAC;YACH,IAAI,QAAkB,CAAC;YACvB,QAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;gBACzB,KAAK,MAAM;oBACT,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;wBAC9C,KAAK,EAAE,IAAI;wBACX,EAAE,EAAE,WAAW,CAAC,SAAS;wBACzB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;wBACtB,YAAY,EAAE,+BAAqB,CAAC,WAAW,EAAE,2FAA2F;qBAC7I,CAAC,CAAC;oBACH,MAAM;gBACR,KAAK,UAAU;oBACb,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;wBACjD,MAAM,EAAE,OAAO,CAAC,OAAO;wBACvB,QAAQ,EAAE,WAAW,CAAC,SAAS;qBAChC,CAAC,CAAC;oBACH,MAAM;gBACR,KAAK,YAAY;oBACf,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;wBACjD,MAAM,EAAE,OAAO,CAAC,OAAO;qBACxB,CAAC,CAAC;oBACH,MAAM;gBACR;oBACE,MAAM,IAAI,mCAA0B,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;YACzF,CAAC;YAED,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;gBAC7B,MAAM,SAAS,GAAG,QAAQ,CAAC,iBAAiB,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACrE,MAAM,SAAS,GACb,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;oBACpC,CAAC,SAAS,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAW,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC5D,iLAAiL;gBACjL,kEAAkE;gBAClE,sEAAsE;gBACtE,MAAM,SAAS,GAAG,GAAG,CAAC;gBACtB,MAAM,yBAAyB,GAAG,GAAG,CAAC;gBACtC,MAAM,YAAY,GAAG,CAAC,SAAiB,EAAE,MAAc,EAAE,EAAE;oBACzD,OAAO,SAAS,GAAG,yBAAyB,GAAG,MAAM,CAAC;gBACxD,CAAC,CAAC;gBACF,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;gBAE9D,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;gBAC5D,UAAU,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;gBAC5D,UAAU,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAClF,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;gBACrD,UAAU,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAChD,UAAU,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;YACzC,CAAC;YAED,UAAU,CAAC,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YACxD,UAAU,CAAC,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC;YAC3C,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACtB,UAAU,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa,GAAG,MAAM,CAAC,qBAAW,CAAC,MAAM,CAAC,CAAC;YACnF,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC;gBAAE,MAAM,CAAC,CAAC;YACzC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;gBACd,UAAU,CAAC,YAAY,GAAI,CAAoB,CAAC,EAAE,CAAC;gBACnD,IAAA,UAAG,EAAC,eAAe,EAAE,oBAAoB,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACpD,CAAC;iBAAM,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;gBACzB,0DAA0D;gBAC1D,IAAA,UAAG,EAAC,uBAAuB,EAAE,MAAM,CAAE,CAAoC,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE;oBACxF,WAAW,EAAE,WAAW;iBACzB,CAAC,CAAC;gBACH,MAAM,CAAC,CAAC;YACV,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,CAAC;YACV,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;CAAA;AA/GD,oCA+GC"}
1
+ {"version":3,"file":"estimateFees.js","sourceRoot":"","sources":["../../src/logic/estimateFees.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ import prepareTransaction from "./prepareTransaction";
13
13
  import { faker } from "@faker-js/faker";
14
14
  import coinConfig from "../config";
15
15
  import { mockConfig } from "../test/config";
16
+ import { COST_PER_BYTE, DEFAULT_FEE } from "@taquito/taquito";
16
17
  const mockTezosEstimate = jest.fn();
17
18
  jest.mock("../logic/tezosToolkit", () => ({
18
19
  getTezosToolkit: () => ({
@@ -68,13 +69,36 @@ describe("prepareTransaction", () => {
68
69
  // Then
69
70
  expect(newTx).toEqual(Object.assign(Object.assign({}, tx), { fees: new BigNumber(tezosEstimate.suggestedFeeMutez), estimatedFees: new BigNumber(tezosEstimate.suggestedFeeMutez), gasLimit: new BigNumber(tezosEstimate.gasLimit), storageLimit: new BigNumber(tezosEstimate.storageLimit) }));
70
71
  }));
71
- it("returns new transaction with estimated fees by TezosToolkit when useAllAmount", () => __awaiter(void 0, void 0, void 0, function* () {
72
+ it("returns new transaction with estimated fees by TezosToolkit when useAllAmount from revealed account to revealed account", () => __awaiter(void 0, void 0, void 0, function* () {
72
73
  // Given
73
74
  const tx = createFixtureTransaction({
74
75
  amount: BigNumber(200),
75
76
  recipient: "tz1VSUr8wwNhLAzempoch5d6hLRiTh8Cjcjb",
76
77
  useAllAmount: true,
77
78
  });
79
+ const tezosEstimate = {
80
+ suggestedFeeMutez: faker.number.int(20),
81
+ gasLimit: faker.number.int(20),
82
+ storageLimit: faker.number.int(20),
83
+ opSize: faker.number.int(20),
84
+ burnFeeMutez: faker.number.int(0),
85
+ };
86
+ mockTezosEstimate.mockResolvedValue(tezosEstimate);
87
+ const account = createFixtureAccount({ balance: BigNumber(1000) });
88
+ // When
89
+ const newTx = yield prepareTransaction(account, tx);
90
+ // Then
91
+ const gasLimit = 500; // hardcoded in the function
92
+ const maxAmount = account.balance.minus(tezosEstimate.suggestedFeeMutez);
93
+ expect(newTx).toEqual(Object.assign(Object.assign({}, tx), { fees: new BigNumber(tezosEstimate.suggestedFeeMutez), estimatedFees: new BigNumber(tezosEstimate.suggestedFeeMutez), gasLimit: new BigNumber(tezosEstimate.gasLimit), storageLimit: new BigNumber(tezosEstimate.storageLimit), amount: maxAmount.minus(gasLimit - (tezosEstimate.opSize + gasLimit * 0.1)) }));
94
+ }));
95
+ it("returns new transaction with estimated fees by TezosToolkit when useAllAmount from revealed account to account with zero balance", () => __awaiter(void 0, void 0, void 0, function* () {
96
+ // Given
97
+ const tx = createFixtureTransaction({
98
+ amount: BigNumber(0),
99
+ recipient: "tz1VSUr8wwNhLAzempoch5d6hLRiTh8Cjcjb",
100
+ useAllAmount: true,
101
+ });
78
102
  const tezosEstimate = {
79
103
  suggestedFeeMutez: faker.number.int(20),
80
104
  gasLimit: faker.number.int(20),
@@ -88,11 +112,34 @@ describe("prepareTransaction", () => {
88
112
  const newTx = yield prepareTransaction(account, tx);
89
113
  // Then
90
114
  const gasLimit = 500; // hardcoded in the function
91
- const computedFees = new BigNumber(tezosEstimate.suggestedFeeMutez + tezosEstimate.opSize + gasLimit * 0.1);
92
- expect(newTx).toEqual(Object.assign(Object.assign({}, tx), { fees: computedFees, estimatedFees: computedFees, gasLimit: new BigNumber(tezosEstimate.gasLimit + gasLimit), storageLimit: new BigNumber(tezosEstimate.storageLimit), amount: account.balance.minus(tezosEstimate.opSize +
93
- gasLimit * 0.1 +
94
- tezosEstimate.suggestedFeeMutez +
95
- tezosEstimate.burnFeeMutez) }));
115
+ const computedFees = new BigNumber(tezosEstimate.suggestedFeeMutez + tezosEstimate.burnFeeMutez - 20 * COST_PER_BYTE);
116
+ const maxAmount = account.balance.minus(computedFees);
117
+ expect(newTx).toEqual(Object.assign(Object.assign({}, tx), { fees: new BigNumber(tezosEstimate.suggestedFeeMutez), estimatedFees: new BigNumber(tezosEstimate.suggestedFeeMutez), gasLimit: new BigNumber(tezosEstimate.gasLimit), storageLimit: new BigNumber(tezosEstimate.storageLimit), amount: maxAmount.minus(gasLimit - (tezosEstimate.opSize + gasLimit * 0.1)) }));
118
+ }));
119
+ it("returns new transaction with estimated fees by TezosToolkit when useAllAmount from unrevealed account to revealed account", () => __awaiter(void 0, void 0, void 0, function* () {
120
+ // Given
121
+ const tx = createFixtureTransaction({
122
+ amount: BigNumber(200),
123
+ recipient: "tz1VSUr8wwNhLAzempoch5d6hLRiTh8Cjcjb",
124
+ useAllAmount: true,
125
+ });
126
+ const tezosEstimate = {
127
+ suggestedFeeMutez: faker.number.int(20),
128
+ gasLimit: faker.number.int(20),
129
+ storageLimit: faker.number.int(20),
130
+ opSize: faker.number.int(20),
131
+ burnFeeMutez: faker.number.int(0),
132
+ };
133
+ mockTezosEstimate.mockResolvedValue(tezosEstimate);
134
+ const account = createFixtureAccount({ balance: BigNumber(1000) });
135
+ account.tezosResources.revealed = false;
136
+ // When
137
+ const newTx = yield prepareTransaction(account, tx);
138
+ // Then
139
+ const gasLimit = 500; // hardcoded in the function
140
+ const computedFees = new BigNumber(tezosEstimate.suggestedFeeMutez + DEFAULT_FEE.REVEAL);
141
+ const maxAmount = account.balance.minus(computedFees);
142
+ expect(newTx).toEqual(Object.assign(Object.assign({}, tx), { fees: new BigNumber(tezosEstimate.suggestedFeeMutez), estimatedFees: new BigNumber(tezosEstimate.suggestedFeeMutez + DEFAULT_FEE.REVEAL), gasLimit: new BigNumber(tezosEstimate.gasLimit), storageLimit: new BigNumber(tezosEstimate.storageLimit), amount: maxAmount.minus(gasLimit - (tezosEstimate.opSize + gasLimit * 0.1)) }));
96
143
  }));
97
144
  // it("returns the passed transaction if fees are the same", async () => {
98
145
  // // Given
@@ -1 +1 @@
1
- {"version":3,"file":"prepareTransaction.test.js","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prepareTransaction.test.js","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"estimateFees.d.ts","sourceRoot":"","sources":["../../src/logic/estimateFees.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGpD,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,kBAAkB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AACF;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,EACjC,OAAO,EACP,WAAW,GACZ,EAAE;IACD,OAAO,EAAE,eAAe,CAAC;IACzB,WAAW,EAAE,mBAAmB,CAAC;CAClC,GAAG,OAAO,CAAC,aAAa,CAAC,CAyGzB"}
1
+ {"version":3,"file":"estimateFees.d.ts","sourceRoot":"","sources":["../../src/logic/estimateFees.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGpD,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,kBAAkB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AACF;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,EACjC,OAAO,EACP,WAAW,GACZ,EAAE;IACD,OAAO,EAAE,eAAe,CAAC;IACzB,WAAW,EAAE,mBAAmB,CAAC;CAClC,GAAG,OAAO,CAAC,aAAa,CAAC,CAgHzB"}
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  };
10
10
  import { DerivationType } from "@taquito/ledger-signer";
11
11
  import { compressPublicKey } from "@taquito/ledger-signer/dist/lib/utils";
12
- import { DEFAULT_FEE, DEFAULT_STORAGE_LIMIT } from "@taquito/taquito";
12
+ import { COST_PER_BYTE, DEFAULT_FEE, DEFAULT_STORAGE_LIMIT } from "@taquito/taquito";
13
13
  import { b58cencode, Prefix, prefix } from "@taquito/utils";
14
14
  import { log } from "@ledgerhq/logs";
15
15
  import { getTezosToolkit } from "./tezosToolkit";
@@ -71,11 +71,19 @@ export function estimateFees(_a) {
71
71
  default:
72
72
  throw new UnsupportedTransactionMode("unsupported mode", { mode: transaction.mode });
73
73
  }
74
+ // NOTE: if useAllAmount is true, is it for sure in the send mode (ie. transfer)?
74
75
  if (transaction.useAllAmount) {
75
- const totalFees = estimate.suggestedFeeMutez + estimate.burnFeeMutez;
76
+ let totalFees;
77
+ if (estimate.burnFeeMutez > 0) {
78
+ // NOTE: from https://github.com/ecadlabs/taquito/blob/master/integration-tests/__tests__/contract/empty-implicit-account-into-new-implicit-account.spec.ts#L37
79
+ totalFees = estimate.suggestedFeeMutez + estimate.burnFeeMutez - 20 * COST_PER_BYTE; // 20 is storage buffer
80
+ }
81
+ else {
82
+ totalFees = estimate.suggestedFeeMutez;
83
+ }
76
84
  const maxAmount = parseInt(account.balance.toString()) -
77
85
  (totalFees + (account.revealed ? 0 : DEFAULT_FEE.REVEAL));
78
- // from https://github.com/ecadlabs/taquito/blob/a70c64c4b105381bb9f1d04c9c70e8ef26e9241c/integration-tests/contract-empty-implicit-account-into-new-implicit-account.spec.ts#L33
86
+ // NOTE: from https://github.com/ecadlabs/taquito/blob/a70c64c4b105381bb9f1d04c9c70e8ef26e9241c/integration-tests/contract-empty-implicit-account-into-new-implicit-account.spec.ts#L33
79
87
  // Temporary fix, see https://gitlab.com/tezos/tezos/-/issues/1754
80
88
  // we need to increase the gasLimit and fee returned by the estimation
81
89
  const gasBuffer = 500;
@@ -84,9 +92,10 @@ export function estimateFees(_a) {
84
92
  return gasBuffer * MINIMAL_FEE_PER_GAS_MUTEZ + opSize;
85
93
  };
86
94
  const incr = increasedFee(gasBuffer, Number(estimate.opSize));
87
- estimation.fees = BigInt(estimate.suggestedFeeMutez + incr);
88
- estimation.gasLimit = BigInt(estimate.gasLimit + gasBuffer);
89
- estimation.amount = maxAmount - incr > 0 ? BigInt(maxAmount - incr) : BigInt(0);
95
+ const maxMinusBuff = maxAmount - (gasBuffer - incr);
96
+ estimation.amount = maxMinusBuff > 0 ? BigInt(maxMinusBuff) : BigInt(0);
97
+ estimation.fees = BigInt(estimate.suggestedFeeMutez);
98
+ estimation.gasLimit = BigInt(estimate.gasLimit);
90
99
  }
91
100
  else {
92
101
  estimation.fees = BigInt(estimate.suggestedFeeMutez);
@@ -1 +1 @@
1
- {"version":3,"file":"estimateFees.js","sourceRoot":"","sources":["../../src/logic/estimateFees.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"estimateFees.js","sourceRoot":"","sources":["../../src/logic/estimateFees.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": "0.6.3",
3
+ "version": "0.6.4-next.0",
4
4
  "description": "Tezos Coin integration",
5
5
  "keywords": [
6
6
  "Ledger",
@@ -67,24 +67,24 @@
67
67
  },
68
68
  "license": "Apache-2.0",
69
69
  "dependencies": {
70
- "@taquito/ledger-signer": "^20.0.0",
71
- "@taquito/rpc": "^20.0.0",
72
- "@taquito/taquito": "^20.0.0",
73
- "@taquito/utils": "^20.0.0",
70
+ "@taquito/ledger-signer": "^20.0.1",
71
+ "@taquito/rpc": "^20.0.1",
72
+ "@taquito/taquito": "^20.0.1",
73
+ "@taquito/utils": "^20.0.1",
74
74
  "bignumber.js": "^9.1.2",
75
75
  "blake2b": "^2.1.4",
76
76
  "bs58check": "^3.0.1",
77
77
  "invariant": "^2.2.4",
78
78
  "lodash": "^4.17.21",
79
79
  "rxjs": "^7.8.1",
80
- "@ledgerhq/coin-framework": "^0.18.2",
81
- "@ledgerhq/cryptoassets": "^13.6.0",
80
+ "@ledgerhq/coin-framework": "^0.18.3-next.0",
81
+ "@ledgerhq/cryptoassets": "^13.6.1-next.0",
82
82
  "@ledgerhq/devices": "^8.4.4",
83
83
  "@ledgerhq/errors": "^6.19.1",
84
- "@ledgerhq/live-network": "^2.0.1",
84
+ "@ledgerhq/live-network": "^2.0.2-next.0",
85
85
  "@ledgerhq/logs": "^6.12.0",
86
86
  "@ledgerhq/types-cryptoassets": "^7.16.0",
87
- "@ledgerhq/types-live": "^6.52.0"
87
+ "@ledgerhq/types-live": "^6.52.1-next.0"
88
88
  },
89
89
  "devDependencies": {
90
90
  "@faker-js/faker": "^8.4.1",
@@ -4,6 +4,7 @@ import prepareTransaction from "./prepareTransaction";
4
4
  import { faker } from "@faker-js/faker";
5
5
  import coinConfig, { TezosCoinConfig } from "../config";
6
6
  import { mockConfig } from "../test/config";
7
+ import { COST_PER_BYTE, DEFAULT_FEE } from "@taquito/taquito";
7
8
 
8
9
  const mockTezosEstimate = jest.fn();
9
10
  jest.mock("../logic/tezosToolkit", () => ({
@@ -78,7 +79,7 @@ describe("prepareTransaction", () => {
78
79
  });
79
80
  });
80
81
 
81
- it("returns new transaction with estimated fees by TezosToolkit when useAllAmount", async () => {
82
+ it("returns new transaction with estimated fees by TezosToolkit when useAllAmount from revealed account to revealed account", async () => {
82
83
  // Given
83
84
  const tx = createFixtureTransaction({
84
85
  amount: BigNumber(200),
@@ -90,7 +91,7 @@ describe("prepareTransaction", () => {
90
91
  gasLimit: faker.number.int(20),
91
92
  storageLimit: faker.number.int(20),
92
93
  opSize: faker.number.int(20),
93
- burnFeeMutez: faker.number.int(20),
94
+ burnFeeMutez: faker.number.int(0),
94
95
  };
95
96
  mockTezosEstimate.mockResolvedValue(tezosEstimate);
96
97
  const account = createFixtureAccount({ balance: BigNumber(1_000) });
@@ -98,23 +99,90 @@ describe("prepareTransaction", () => {
98
99
  // When
99
100
  const newTx = await prepareTransaction(account, tx);
100
101
 
102
+ // Then
103
+ const gasLimit = 500; // hardcoded in the function
104
+ const maxAmount = account.balance.minus(tezosEstimate.suggestedFeeMutez);
105
+
106
+ expect(newTx).toEqual({
107
+ ...tx,
108
+ fees: new BigNumber(tezosEstimate.suggestedFeeMutez),
109
+ estimatedFees: new BigNumber(tezosEstimate.suggestedFeeMutez),
110
+ gasLimit: new BigNumber(tezosEstimate.gasLimit),
111
+ storageLimit: new BigNumber(tezosEstimate.storageLimit),
112
+ amount: maxAmount.minus(gasLimit - (tezosEstimate.opSize + gasLimit * 0.1)),
113
+ });
114
+ });
115
+
116
+ it("returns new transaction with estimated fees by TezosToolkit when useAllAmount from revealed account to account with zero balance", async () => {
117
+ // Given
118
+ const tx = createFixtureTransaction({
119
+ amount: BigNumber(0),
120
+ recipient: "tz1VSUr8wwNhLAzempoch5d6hLRiTh8Cjcjb",
121
+ useAllAmount: true,
122
+ });
123
+ const tezosEstimate = {
124
+ suggestedFeeMutez: faker.number.int(20),
125
+ gasLimit: faker.number.int(20),
126
+ storageLimit: faker.number.int(20),
127
+ opSize: faker.number.int(20),
128
+ burnFeeMutez: faker.number.int(20),
129
+ };
130
+ mockTezosEstimate.mockResolvedValue(tezosEstimate);
131
+ const account = createFixtureAccount({ balance: BigNumber(1_000) });
132
+ // When
133
+ const newTx = await prepareTransaction(account, tx);
134
+
101
135
  // Then
102
136
  const gasLimit = 500; // hardcoded in the function
103
137
  const computedFees = new BigNumber(
104
- tezosEstimate.suggestedFeeMutez + tezosEstimate.opSize + gasLimit * 0.1,
138
+ tezosEstimate.suggestedFeeMutez + tezosEstimate.burnFeeMutez - 20 * COST_PER_BYTE,
105
139
  );
140
+
141
+ const maxAmount = account.balance.minus(computedFees);
142
+
106
143
  expect(newTx).toEqual({
107
144
  ...tx,
108
- fees: computedFees,
109
- estimatedFees: computedFees,
110
- gasLimit: new BigNumber(tezosEstimate.gasLimit + gasLimit),
145
+ fees: new BigNumber(tezosEstimate.suggestedFeeMutez),
146
+ estimatedFees: new BigNumber(tezosEstimate.suggestedFeeMutez),
147
+ gasLimit: new BigNumber(tezosEstimate.gasLimit),
148
+ storageLimit: new BigNumber(tezosEstimate.storageLimit),
149
+ amount: maxAmount.minus(gasLimit - (tezosEstimate.opSize + gasLimit * 0.1)),
150
+ });
151
+ });
152
+
153
+ it("returns new transaction with estimated fees by TezosToolkit when useAllAmount from unrevealed account to revealed account", async () => {
154
+ // Given
155
+ const tx = createFixtureTransaction({
156
+ amount: BigNumber(200),
157
+ recipient: "tz1VSUr8wwNhLAzempoch5d6hLRiTh8Cjcjb",
158
+ useAllAmount: true,
159
+ });
160
+ const tezosEstimate = {
161
+ suggestedFeeMutez: faker.number.int(20),
162
+ gasLimit: faker.number.int(20),
163
+ storageLimit: faker.number.int(20),
164
+ opSize: faker.number.int(20),
165
+ burnFeeMutez: faker.number.int(0),
166
+ };
167
+ mockTezosEstimate.mockResolvedValue(tezosEstimate);
168
+ const account = createFixtureAccount({ balance: BigNumber(1_000) });
169
+ account.tezosResources.revealed = false;
170
+ // When
171
+ const newTx = await prepareTransaction(account, tx);
172
+
173
+ // Then
174
+ const gasLimit = 500; // hardcoded in the function
175
+ const computedFees = new BigNumber(tezosEstimate.suggestedFeeMutez + DEFAULT_FEE.REVEAL);
176
+
177
+ const maxAmount = account.balance.minus(computedFees);
178
+
179
+ expect(newTx).toEqual({
180
+ ...tx,
181
+ fees: new BigNumber(tezosEstimate.suggestedFeeMutez),
182
+ estimatedFees: new BigNumber(tezosEstimate.suggestedFeeMutez + DEFAULT_FEE.REVEAL),
183
+ gasLimit: new BigNumber(tezosEstimate.gasLimit),
111
184
  storageLimit: new BigNumber(tezosEstimate.storageLimit),
112
- amount: account.balance.minus(
113
- tezosEstimate.opSize +
114
- gasLimit * 0.1 +
115
- tezosEstimate.suggestedFeeMutez +
116
- tezosEstimate.burnFeeMutez,
117
- ),
185
+ amount: maxAmount.minus(gasLimit - (tezosEstimate.opSize + gasLimit * 0.1)),
118
186
  });
119
187
  });
120
188
 
@@ -1,6 +1,6 @@
1
1
  import { DerivationType } from "@taquito/ledger-signer";
2
2
  import { compressPublicKey } from "@taquito/ledger-signer/dist/lib/utils";
3
- import { DEFAULT_FEE, DEFAULT_STORAGE_LIMIT, Estimate } from "@taquito/taquito";
3
+ import { COST_PER_BYTE, DEFAULT_FEE, DEFAULT_STORAGE_LIMIT, Estimate } from "@taquito/taquito";
4
4
  import { b58cencode, Prefix, prefix } from "@taquito/utils";
5
5
  import { log } from "@ledgerhq/logs";
6
6
  import { getTezosToolkit } from "./tezosToolkit";
@@ -99,12 +99,19 @@ export async function estimateFees({
99
99
  throw new UnsupportedTransactionMode("unsupported mode", { mode: transaction.mode });
100
100
  }
101
101
 
102
+ // NOTE: if useAllAmount is true, is it for sure in the send mode (ie. transfer)?
102
103
  if (transaction.useAllAmount) {
103
- const totalFees = estimate.suggestedFeeMutez + estimate.burnFeeMutez;
104
+ let totalFees: number;
105
+ if (estimate.burnFeeMutez > 0) {
106
+ // NOTE: from https://github.com/ecadlabs/taquito/blob/master/integration-tests/__tests__/contract/empty-implicit-account-into-new-implicit-account.spec.ts#L37
107
+ totalFees = estimate.suggestedFeeMutez + estimate.burnFeeMutez - 20 * COST_PER_BYTE; // 20 is storage buffer
108
+ } else {
109
+ totalFees = estimate.suggestedFeeMutez;
110
+ }
104
111
  const maxAmount =
105
112
  parseInt(account.balance.toString()) -
106
113
  (totalFees + (account.revealed ? 0 : DEFAULT_FEE.REVEAL));
107
- // from https://github.com/ecadlabs/taquito/blob/a70c64c4b105381bb9f1d04c9c70e8ef26e9241c/integration-tests/contract-empty-implicit-account-into-new-implicit-account.spec.ts#L33
114
+ // NOTE: from https://github.com/ecadlabs/taquito/blob/a70c64c4b105381bb9f1d04c9c70e8ef26e9241c/integration-tests/contract-empty-implicit-account-into-new-implicit-account.spec.ts#L33
108
115
  // Temporary fix, see https://gitlab.com/tezos/tezos/-/issues/1754
109
116
  // we need to increase the gasLimit and fee returned by the estimation
110
117
  const gasBuffer = 500;
@@ -114,15 +121,16 @@ export async function estimateFees({
114
121
  };
115
122
  const incr = increasedFee(gasBuffer, Number(estimate.opSize));
116
123
 
117
- estimation.fees = BigInt(estimate.suggestedFeeMutez + incr);
118
- estimation.gasLimit = BigInt(estimate.gasLimit + gasBuffer);
119
- estimation.amount = maxAmount - incr > 0 ? BigInt(maxAmount - incr) : BigInt(0);
124
+ const maxMinusBuff = maxAmount - (gasBuffer - incr);
125
+ estimation.amount = maxMinusBuff > 0 ? BigInt(maxMinusBuff) : BigInt(0);
126
+
127
+ estimation.fees = BigInt(estimate.suggestedFeeMutez);
128
+ estimation.gasLimit = BigInt(estimate.gasLimit);
120
129
  } else {
121
130
  estimation.fees = BigInt(estimate.suggestedFeeMutez);
122
131
  estimation.gasLimit = BigInt(estimate.gasLimit);
123
132
  estimation.amount = transaction.amount;
124
133
  }
125
-
126
134
  estimation.storageLimit = BigInt(estimate.storageLimit);
127
135
  estimation.estimatedFees = estimation.fees;
128
136
  if (!account.revealed) {
@@ -143,6 +151,5 @@ export async function estimateFees({
143
151
  throw e;
144
152
  }
145
153
  }
146
-
147
154
  return estimation;
148
155
  }