@ledgerhq/coin-module-boilerplate 2.0.0-nightly.0 → 2.0.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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +44 -4
- package/lib/api/index.d.ts.map +1 -1
- package/lib/api/index.js +11 -10
- package/lib/api/index.js.map +1 -1
- package/lib/bridge/prepareTransaction.d.ts.map +1 -1
- package/lib/bridge/prepareTransaction.js +6 -2
- package/lib/bridge/prepareTransaction.js.map +1 -1
- package/lib/bridge/prepareTransaction.test.js +2 -1
- package/lib/bridge/prepareTransaction.test.js.map +1 -1
- package/lib/common-logic/transaction/estimateFees.d.ts +1 -2
- package/lib/common-logic/transaction/estimateFees.d.ts.map +1 -1
- package/lib/common-logic/transaction/estimateFees.js +3 -9
- package/lib/common-logic/transaction/estimateFees.js.map +1 -1
- package/lib/network/node.d.ts.map +1 -1
- package/lib/network/node.js +4 -1
- package/lib/network/node.js.map +1 -1
- package/lib-es/api/index.d.ts.map +1 -1
- package/lib-es/api/index.js +11 -10
- package/lib-es/api/index.js.map +1 -1
- package/lib-es/bridge/prepareTransaction.d.ts.map +1 -1
- package/lib-es/bridge/prepareTransaction.js +3 -2
- package/lib-es/bridge/prepareTransaction.js.map +1 -1
- package/lib-es/bridge/prepareTransaction.test.js +2 -1
- package/lib-es/bridge/prepareTransaction.test.js.map +1 -1
- package/lib-es/common-logic/transaction/estimateFees.d.ts +1 -2
- package/lib-es/common-logic/transaction/estimateFees.d.ts.map +1 -1
- package/lib-es/common-logic/transaction/estimateFees.js +3 -6
- package/lib-es/common-logic/transaction/estimateFees.js.map +1 -1
- package/lib-es/network/node.d.ts.map +1 -1
- package/lib-es/network/node.js +4 -1
- package/lib-es/network/node.js.map +1 -1
- package/package.json +3 -3
- package/src/api/index.ts +13 -19
- package/src/bridge/prepareTransaction.test.ts +2 -1
- package/src/bridge/prepareTransaction.ts +3 -2
- package/src/common-logic/transaction/estimateFees.ts +3 -6
- package/src/network/node.ts +4 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
> @ledgerhq/coin-module-boilerplate@
|
|
2
|
+
> @ledgerhq/coin-module-boilerplate@2.0.0 build /home/runner/work/ledger-live/ledger-live/libs/coin-modules/coin-module-boilerplate
|
|
3
3
|
> tsc && tsc -m esnext --moduleResolution bundler --outDir lib-es
|
|
4
4
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,16 +1,56 @@
|
|
|
1
1
|
# @ledgerhq/coin-module-boilerplate
|
|
2
2
|
|
|
3
|
-
## 2.0.0
|
|
3
|
+
## 2.0.0
|
|
4
4
|
|
|
5
5
|
### Major Changes
|
|
6
6
|
|
|
7
7
|
- [#9275](https://github.com/LedgerHQ/ledger-live/pull/9275) [`b8fca38`](https://github.com/LedgerHQ/ledger-live/commit/b8fca386fa07cf393109a1928e92dfc790f9c286) Thanks [@hedi-edelbloute](https://github.com/hedi-edelbloute)! - Update Alpaca api to include generic token type and update list operations
|
|
8
8
|
|
|
9
|
+
### Minor Changes
|
|
10
|
+
|
|
11
|
+
- [#9440](https://github.com/LedgerHQ/ledger-live/pull/9440) [`5f27549`](https://github.com/LedgerHQ/ledger-live/commit/5f275498e80060f98238a54e8ae3e2c94bfd7c91) Thanks [@qperrot](https://github.com/qperrot)! - feat estimateFees for alpacha
|
|
12
|
+
|
|
13
|
+
- [#9466](https://github.com/LedgerHQ/ledger-live/pull/9466) [`e2630cb`](https://github.com/LedgerHQ/ledger-live/commit/e2630cbec8d94ae037b2bf85cfa200a277ae739f) Thanks [@qperrot](https://github.com/qperrot)! - Tron craftTransaction alpaca implementation
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- Updated dependencies [[`5f27549`](https://github.com/LedgerHQ/ledger-live/commit/5f275498e80060f98238a54e8ae3e2c94bfd7c91), [`fa8b10c`](https://github.com/LedgerHQ/ledger-live/commit/fa8b10cac5603eedd7c2309d2bb544a7d2d1a1a8), [`e2630cb`](https://github.com/LedgerHQ/ledger-live/commit/e2630cbec8d94ae037b2bf85cfa200a277ae739f), [`c15d7ea`](https://github.com/LedgerHQ/ledger-live/commit/c15d7ea48e41168726a90a17809175aee5bfa940), [`b8fca38`](https://github.com/LedgerHQ/ledger-live/commit/b8fca386fa07cf393109a1928e92dfc790f9c286)]:
|
|
18
|
+
- @ledgerhq/coin-framework@2.4.0
|
|
19
|
+
- @ledgerhq/types-live@6.64.0
|
|
20
|
+
|
|
21
|
+
## 2.0.0-next.0
|
|
22
|
+
|
|
23
|
+
### Major Changes
|
|
24
|
+
|
|
25
|
+
- [#9275](https://github.com/LedgerHQ/ledger-live/pull/9275) [`b8fca38`](https://github.com/LedgerHQ/ledger-live/commit/b8fca386fa07cf393109a1928e92dfc790f9c286) Thanks [@hedi-edelbloute](https://github.com/hedi-edelbloute)! - Update Alpaca api to include generic token type and update list operations
|
|
26
|
+
|
|
27
|
+
### Minor Changes
|
|
28
|
+
|
|
29
|
+
- [#9440](https://github.com/LedgerHQ/ledger-live/pull/9440) [`5f27549`](https://github.com/LedgerHQ/ledger-live/commit/5f275498e80060f98238a54e8ae3e2c94bfd7c91) Thanks [@qperrot](https://github.com/qperrot)! - feat estimateFees for alpacha
|
|
30
|
+
|
|
31
|
+
- [#9466](https://github.com/LedgerHQ/ledger-live/pull/9466) [`e2630cb`](https://github.com/LedgerHQ/ledger-live/commit/e2630cbec8d94ae037b2bf85cfa200a277ae739f) Thanks [@qperrot](https://github.com/qperrot)! - Tron craftTransaction alpaca implementation
|
|
32
|
+
|
|
33
|
+
### Patch Changes
|
|
34
|
+
|
|
35
|
+
- Updated dependencies [[`5f27549`](https://github.com/LedgerHQ/ledger-live/commit/5f275498e80060f98238a54e8ae3e2c94bfd7c91), [`fa8b10c`](https://github.com/LedgerHQ/ledger-live/commit/fa8b10cac5603eedd7c2309d2bb544a7d2d1a1a8), [`e2630cb`](https://github.com/LedgerHQ/ledger-live/commit/e2630cbec8d94ae037b2bf85cfa200a277ae739f), [`c15d7ea`](https://github.com/LedgerHQ/ledger-live/commit/c15d7ea48e41168726a90a17809175aee5bfa940), [`b8fca38`](https://github.com/LedgerHQ/ledger-live/commit/b8fca386fa07cf393109a1928e92dfc790f9c286)]:
|
|
36
|
+
- @ledgerhq/coin-framework@2.4.0-next.0
|
|
37
|
+
- @ledgerhq/types-live@6.64.0-next.0
|
|
38
|
+
|
|
39
|
+
## 1.0.5
|
|
40
|
+
|
|
41
|
+
### Patch Changes
|
|
42
|
+
|
|
43
|
+
- Updated dependencies [[`5abde51`](https://github.com/LedgerHQ/ledger-live/commit/5abde5192d32f493ece2f99aec0e2de0c411f9e5), [`cc00249`](https://github.com/LedgerHQ/ledger-live/commit/cc002495f3e107aba283a3aa4abca90954de6d76)]:
|
|
44
|
+
- @ledgerhq/types-live@6.63.0
|
|
45
|
+
- @ledgerhq/coin-framework@2.3.0
|
|
46
|
+
|
|
47
|
+
## 1.0.5-next.0
|
|
48
|
+
|
|
9
49
|
### Patch Changes
|
|
10
50
|
|
|
11
|
-
- Updated dependencies [[`
|
|
12
|
-
- @ledgerhq/types-live@6.63.0-
|
|
13
|
-
- @ledgerhq/coin-framework@2.3.0-
|
|
51
|
+
- Updated dependencies [[`5abde51`](https://github.com/LedgerHQ/ledger-live/commit/5abde5192d32f493ece2f99aec0e2de0c411f9e5), [`cc00249`](https://github.com/LedgerHQ/ledger-live/commit/cc002495f3e107aba283a3aa4abca90954de6d76)]:
|
|
52
|
+
- @ledgerhq/types-live@6.63.0-next.0
|
|
53
|
+
- @ledgerhq/coin-framework@2.3.0-next.0
|
|
14
54
|
|
|
15
55
|
## 1.0.4
|
|
16
56
|
|
package/lib/api/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAqB,MAAM,oCAAoC,CAAC;AACjF,OAAmB,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAY/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,wBAAgB,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAY1E"}
|
package/lib/api/index.js
CHANGED
|
@@ -19,18 +19,19 @@ function createApi(config) {
|
|
|
19
19
|
listOperations: common_logic_1.listOperations,
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
|
-
async function craft(
|
|
23
|
-
const nextSequenceNumber = await (0, common_logic_1.getNextValidSequence)(
|
|
24
|
-
const tx = await (0, common_logic_1.craftTransaction)({ address, nextSequenceNumber }, {
|
|
25
|
-
recipient:
|
|
26
|
-
amount: new bignumber_js_1.default(
|
|
27
|
-
fee: new bignumber_js_1.default(transaction.fee.toString()),
|
|
22
|
+
async function craft(transactionIntent) {
|
|
23
|
+
const nextSequenceNumber = await (0, common_logic_1.getNextValidSequence)(transactionIntent.sender);
|
|
24
|
+
const tx = await (0, common_logic_1.craftTransaction)({ address: transactionIntent.sender, nextSequenceNumber }, {
|
|
25
|
+
recipient: transactionIntent.recipient,
|
|
26
|
+
amount: new bignumber_js_1.default(transactionIntent.amount.toString()),
|
|
28
27
|
});
|
|
29
28
|
return tx.serializedTransaction;
|
|
30
29
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
async function estimate(transactionIntent) {
|
|
31
|
+
const { serializedTransaction } = await (0, common_logic_1.craftTransaction)({ address: transactionIntent.sender }, {
|
|
32
|
+
recipient: transactionIntent.recipient,
|
|
33
|
+
amount: new bignumber_js_1.default(transactionIntent.amount.toString()),
|
|
34
|
+
});
|
|
35
|
+
return await (0, common_logic_1.estimateFees)(serializedTransaction);
|
|
35
36
|
}
|
|
36
37
|
//# sourceMappingURL=index.js.map
|
package/lib/api/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":";;;;;AAeA,8BAYC;AA1BD,uDAA+D;AAC/D,kDASyB;AACzB,gEAAqC;AAGrC,SAAgB,SAAS,CAAC,MAAyB;IACjD,gBAAU,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;IAE5E,OAAO;QACL,SAAS,EAAT,wBAAS;QACT,OAAO,EAAP,sBAAO;QACP,gBAAgB,EAAE,KAAK;QACvB,YAAY,EAAE,QAAQ;QACtB,UAAU,EAAV,yBAAU;QACV,SAAS,EAAT,wBAAS;QACT,cAAc,EAAd,6BAAc;KACf,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,KAAK,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":";;;;;AAeA,8BAYC;AA1BD,uDAA+D;AAC/D,kDASyB;AACzB,gEAAqC;AAGrC,SAAgB,SAAS,CAAC,MAAyB;IACjD,gBAAU,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;IAE5E,OAAO;QACL,SAAS,EAAT,wBAAS;QACT,OAAO,EAAP,sBAAO;QACP,gBAAgB,EAAE,KAAK;QACvB,YAAY,EAAE,QAAQ;QACtB,UAAU,EAAV,yBAAU;QACV,SAAS,EAAT,wBAAS;QACT,cAAc,EAAd,6BAAc;KACf,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,iBAAsD;IACzE,MAAM,kBAAkB,GAAG,MAAM,IAAA,mCAAoB,EAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAChF,MAAM,EAAE,GAAG,MAAM,IAAA,+BAAgB,EAC/B,EAAE,OAAO,EAAE,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,EAAE,EACzD;QACE,SAAS,EAAE,iBAAiB,CAAC,SAAS;QACtC,MAAM,EAAE,IAAI,sBAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;KAC3D,CACF,CAAC;IACF,OAAO,EAAE,CAAC,qBAAqB,CAAC;AAClC,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,iBAAsD;IAC5E,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,IAAA,+BAAgB,EACtD,EAAE,OAAO,EAAE,iBAAiB,CAAC,MAAM,EAAE,EACrC;QACE,SAAS,EAAE,iBAAiB,CAAC,SAAS;QACtC,MAAM,EAAE,IAAI,sBAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;KAC3D,CACF,CAAC;IACF,OAAO,MAAM,IAAA,2BAAY,EAAC,qBAAqB,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepareTransaction.d.ts","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"prepareTransaction.d.ts","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAKvC,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAkB/E,CAAC"}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.prepareTransaction = void 0;
|
|
4
7
|
const common_logic_1 = require("../common-logic");
|
|
5
8
|
const node_1 = require("../network/node");
|
|
9
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
6
10
|
const prepareTransaction = async (account, transaction) => {
|
|
7
11
|
const seq = await (0, node_1.getNextSequence)(account.freshAddress);
|
|
8
12
|
const craftedTransaction = await (0, common_logic_1.craftTransaction)({ address: account.freshAddress, nextSequenceNumber: seq }, { amount: transaction.amount, recipient: transaction.recipient });
|
|
9
13
|
const fee = await (0, common_logic_1.estimateFees)(craftedTransaction.serializedTransaction);
|
|
10
|
-
if (transaction.fee !== fee) {
|
|
11
|
-
return { ...transaction, fee };
|
|
14
|
+
if (transaction.fee !== new bignumber_js_1.default(fee.toString())) {
|
|
15
|
+
return { ...transaction, fee: new bignumber_js_1.default(fee.toString()) };
|
|
12
16
|
}
|
|
13
17
|
return transaction;
|
|
14
18
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepareTransaction.js","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prepareTransaction.js","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.ts"],"names":[],"mappings":";;;;;;AAEA,kDAAiE;AACjE,0CAAkD;AAClD,gEAAqC;AAE9B,MAAM,kBAAkB,GAAqD,KAAK,EACvF,OAAO,EACP,WAAW,EACX,EAAE;IACF,MAAM,GAAG,GAAG,MAAM,IAAA,sBAAe,EAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAExD,MAAM,kBAAkB,GAAG,MAAM,IAAA,+BAAgB,EAC/C,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,EAAE,kBAAkB,EAAE,GAAG,EAAE,EAC1D,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,CACjE,CAAC;IAEF,MAAM,GAAG,GAAG,MAAM,IAAA,2BAAY,EAAC,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;IAEzE,IAAI,WAAW,CAAC,GAAG,KAAK,IAAI,sBAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;QACtD,OAAO,EAAE,GAAG,WAAW,EAAE,GAAG,EAAE,IAAI,sBAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;IAChE,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAlBW,QAAA,kBAAkB,sBAkB7B"}
|
|
@@ -20,8 +20,9 @@ describe("prepareTransaction", () => {
|
|
|
20
20
|
craftTransactionSpy.mockReturnValue({ serializedTransaction: "serialized" });
|
|
21
21
|
});
|
|
22
22
|
it("should update fee field if it's different", async () => {
|
|
23
|
+
getNextSequenceSpy.mockResolvedValue(42);
|
|
23
24
|
const oldTx = { fee: new bignumber_js_1.default(0) };
|
|
24
|
-
estimateFeesSpy.mockResolvedValue(
|
|
25
|
+
estimateFeesSpy.mockResolvedValue(BigInt(1));
|
|
25
26
|
const newTx = await (0, prepareTransaction_1.prepareTransaction)({}, oldTx);
|
|
26
27
|
expect(newTx.fee).toEqual(new bignumber_js_1.default(1));
|
|
27
28
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepareTransaction.test.js","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.test.ts"],"names":[],"mappings":";;;;;AAAA,gEAAqC;AACrC,kDAAiE;AACjE,0CAAkD;AAClD,6DAA0D;AAI1D,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC7B,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAE7B,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,eAAiC,CAAC;IACtC,IAAI,kBAAoC,CAAC;IACzC,IAAI,mBAAqC,CAAC;IAC1C,UAAU,CAAC,GAAG,EAAE;QACd,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,eAAe,EAAf,sBAAe,EAAE,EAAE,iBAAiB,CAAC,CAAC;QACxE,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,YAAY,EAAZ,2BAAY,EAAE,EAAE,cAAc,CAAC,CAAC;QAC/D,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,gBAAgB,EAAhB,+BAAgB,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAC3E,mBAAmB,CAAC,eAAe,CAAC,EAAE,qBAAqB,EAAE,YAAY,EAAE,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,IAAI,sBAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,eAAe,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"prepareTransaction.test.js","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.test.ts"],"names":[],"mappings":";;;;;AAAA,gEAAqC;AACrC,kDAAiE;AACjE,0CAAkD;AAClD,6DAA0D;AAI1D,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC7B,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAE7B,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,eAAiC,CAAC;IACtC,IAAI,kBAAoC,CAAC;IACzC,IAAI,mBAAqC,CAAC;IAC1C,UAAU,CAAC,GAAG,EAAE;QACd,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,eAAe,EAAf,sBAAe,EAAE,EAAE,iBAAiB,CAAC,CAAC;QACxE,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,YAAY,EAAZ,2BAAY,EAAE,EAAE,cAAc,CAAC,CAAC;QAC/D,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,gBAAgB,EAAhB,+BAAgB,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAC3E,mBAAmB,CAAC,eAAe,CAAC,EAAE,qBAAqB,EAAE,YAAY,EAAE,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,kBAAkB,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,IAAI,sBAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,eAAe,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,MAAM,IAAA,uCAAkB,EAAC,EAAa,EAAE,KAAoB,CAAC,CAAC;QAC5E,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,sBAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"estimateFees.d.ts","sourceRoot":"","sources":["../../../src/common-logic/transaction/estimateFees.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"estimateFees.d.ts","sourceRoot":"","sources":["../../../src/common-logic/transaction/estimateFees.ts"],"names":[],"mappings":"AAGA,wBAAsB,YAAY,CAAC,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAYjF"}
|
|
@@ -1,27 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.estimateFees = estimateFees;
|
|
7
|
-
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
8
4
|
const node_1 = require("../../network/node");
|
|
9
5
|
const errors_1 = require("../../types/errors");
|
|
10
|
-
async function estimateFees(
|
|
11
|
-
let fees;
|
|
6
|
+
async function estimateFees(serializedTransaction) {
|
|
12
7
|
try {
|
|
13
8
|
// We call the node to do a dry run and estimate fees
|
|
14
|
-
|
|
9
|
+
return BigInt(await (0, node_1.simulate)(serializedTransaction));
|
|
15
10
|
}
|
|
16
11
|
catch (e) {
|
|
17
12
|
// default value is required in case of simulation error, else user will encounter an error in the flow
|
|
18
13
|
if (e instanceof errors_1.SimulationError) {
|
|
19
|
-
|
|
14
|
+
return BigInt(1000);
|
|
20
15
|
}
|
|
21
16
|
else {
|
|
22
17
|
throw new Error("Unexpected error while estimating fees.");
|
|
23
18
|
}
|
|
24
19
|
}
|
|
25
|
-
return new bignumber_js_1.default(fees);
|
|
26
20
|
}
|
|
27
21
|
//# sourceMappingURL=estimateFees.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"estimateFees.js","sourceRoot":"","sources":["../../../src/common-logic/transaction/estimateFees.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"estimateFees.js","sourceRoot":"","sources":["../../../src/common-logic/transaction/estimateFees.ts"],"names":[],"mappings":";;AAGA,oCAYC;AAfD,6CAA8C;AAC9C,+CAAqD;AAE9C,KAAK,UAAU,YAAY,CAAC,qBAA6B;IAC9D,IAAI,CAAC;QACH,qDAAqD;QACrD,OAAO,MAAM,CAAC,MAAM,IAAA,eAAQ,EAAC,qBAAqB,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,uGAAuG;QACvG,IAAI,CAAC,YAAY,wBAAe,EAAE,CAAC;YACjC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/network/node.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAO7D,eAAO,MAAM,QAAQ,iBAAwB,MAAM,KAAG,OAAO,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/network/node.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAO7D,eAAO,MAAM,QAAQ,iBAAwB,MAAM,KAAG,OAAO,CAAC,MAAM,CAcnE,CAAC;AAGF,eAAO,MAAM,eAAe,YAAmB,MAAM,KAAG,OAAO,CAAC,MAAM,CAYrE,CAAC;AAEF,eAAO,MAAM,cAAc,QAAa,OAAO,CAAC,MAAM,CAQrD,CAAC;AAEF,eAAO,MAAM,YAAY,QAAa,OAAO,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAQA,CAAC;AAEF,eAAO,MAAM,MAAM,aAAoB,MAAM,KAAG,OAAO,CAAC,aAAa,CAQpE,CAAC;AAEF,eAAO,MAAM,cAAc,YAAmB,MAAM,KAAG,OAAO,CAAC,mBAAmB,CAiBjF,CAAC"}
|
package/lib/network/node.js
CHANGED
|
@@ -16,7 +16,10 @@ const simulate = async (serializedTx) => {
|
|
|
16
16
|
const url = `${(0, live_env_1.getEnv)("NODE_BOILERPLATE")}/simulate`;
|
|
17
17
|
const { data } = await (0, network_1.default)({
|
|
18
18
|
url,
|
|
19
|
-
method: "
|
|
19
|
+
method: "POST",
|
|
20
|
+
data: {
|
|
21
|
+
txPayload: serializedTx,
|
|
22
|
+
},
|
|
20
23
|
});
|
|
21
24
|
if (data.error) {
|
|
22
25
|
throw new errors_1.SimulationError();
|
package/lib/network/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/network/node.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAkD;AAClD,6EAAqD;AACrD,iDAA4C;AAC5C,uDAAmC;AAGnC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,gBAAU,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC;AAE5D,oDAAoD;AAEpD,iCAAiC;AAC1B,MAAM,QAAQ,GAAG,KAAK,EAAE,YAAoB,EAAmB,EAAE;IACtE,gEAAgE;IAChE,MAAM,GAAG,GAAG,GAAG,IAAA,iBAAM,EAAC,kBAAkB,CAAC,WAAW,CAAC;IACrD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,iBAAO,EAAC;QAC7B,GAAG;QACH,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/network/node.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAqB,MAAM,oCAAoC,CAAC;AACjF,OAAmB,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAY/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,wBAAgB,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAY1E"}
|
package/lib-es/api/index.js
CHANGED
|
@@ -13,18 +13,19 @@ export function createApi(config) {
|
|
|
13
13
|
listOperations,
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
|
-
async function craft(
|
|
17
|
-
const nextSequenceNumber = await getNextValidSequence(
|
|
18
|
-
const tx = await craftTransaction({ address, nextSequenceNumber }, {
|
|
19
|
-
recipient:
|
|
20
|
-
amount: new BigNumber(
|
|
21
|
-
fee: new BigNumber(transaction.fee.toString()),
|
|
16
|
+
async function craft(transactionIntent) {
|
|
17
|
+
const nextSequenceNumber = await getNextValidSequence(transactionIntent.sender);
|
|
18
|
+
const tx = await craftTransaction({ address: transactionIntent.sender, nextSequenceNumber }, {
|
|
19
|
+
recipient: transactionIntent.recipient,
|
|
20
|
+
amount: new BigNumber(transactionIntent.amount.toString()),
|
|
22
21
|
});
|
|
23
22
|
return tx.serializedTransaction;
|
|
24
23
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
async function estimate(transactionIntent) {
|
|
25
|
+
const { serializedTransaction } = await craftTransaction({ address: transactionIntent.sender }, {
|
|
26
|
+
recipient: transactionIntent.recipient,
|
|
27
|
+
amount: new BigNumber(transactionIntent.amount.toString()),
|
|
28
|
+
});
|
|
29
|
+
return await estimateFees(serializedTransaction);
|
|
29
30
|
}
|
|
30
31
|
//# sourceMappingURL=index.js.map
|
package/lib-es/api/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AACA,OAAO,UAAsC,MAAM,WAAW,CAAC;AAC/D,OAAO,EACL,SAAS,EACT,OAAO,EACP,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,oBAAoB,EACpB,SAAS,EACT,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,SAAS,MAAM,cAAc,CAAC;AAGrC,MAAM,UAAU,SAAS,CAAC,MAAyB;IACjD,UAAU,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;IAE5E,OAAO;QACL,SAAS;QACT,OAAO;QACP,gBAAgB,EAAE,KAAK;QACvB,YAAY,EAAE,QAAQ;QACtB,UAAU;QACV,SAAS;QACT,cAAc;KACf,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,KAAK,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AACA,OAAO,UAAsC,MAAM,WAAW,CAAC;AAC/D,OAAO,EACL,SAAS,EACT,OAAO,EACP,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,oBAAoB,EACpB,SAAS,EACT,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,SAAS,MAAM,cAAc,CAAC;AAGrC,MAAM,UAAU,SAAS,CAAC,MAAyB;IACjD,UAAU,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;IAE5E,OAAO;QACL,SAAS;QACT,OAAO;QACP,gBAAgB,EAAE,KAAK;QACvB,YAAY,EAAE,QAAQ;QACtB,UAAU;QACV,SAAS;QACT,cAAc;KACf,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,iBAAsD;IACzE,MAAM,kBAAkB,GAAG,MAAM,oBAAoB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAChF,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAC/B,EAAE,OAAO,EAAE,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,EAAE,EACzD;QACE,SAAS,EAAE,iBAAiB,CAAC,SAAS;QACtC,MAAM,EAAE,IAAI,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;KAC3D,CACF,CAAC;IACF,OAAO,EAAE,CAAC,qBAAqB,CAAC;AAClC,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,iBAAsD;IAC5E,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,gBAAgB,CACtD,EAAE,OAAO,EAAE,iBAAiB,CAAC,MAAM,EAAE,EACrC;QACE,SAAS,EAAE,iBAAiB,CAAC,SAAS;QACtC,MAAM,EAAE,IAAI,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;KAC3D,CACF,CAAC;IACF,OAAO,MAAM,YAAY,CAAC,qBAAqB,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepareTransaction.d.ts","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"prepareTransaction.d.ts","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAKvC,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAkB/E,CAAC"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { craftTransaction, estimateFees } from "../common-logic";
|
|
2
2
|
import { getNextSequence } from "../network/node";
|
|
3
|
+
import BigNumber from "bignumber.js";
|
|
3
4
|
export const prepareTransaction = async (account, transaction) => {
|
|
4
5
|
const seq = await getNextSequence(account.freshAddress);
|
|
5
6
|
const craftedTransaction = await craftTransaction({ address: account.freshAddress, nextSequenceNumber: seq }, { amount: transaction.amount, recipient: transaction.recipient });
|
|
6
7
|
const fee = await estimateFees(craftedTransaction.serializedTransaction);
|
|
7
|
-
if (transaction.fee !== fee) {
|
|
8
|
-
return { ...transaction, fee };
|
|
8
|
+
if (transaction.fee !== new BigNumber(fee.toString())) {
|
|
9
|
+
return { ...transaction, fee: new BigNumber(fee.toString()) };
|
|
9
10
|
}
|
|
10
11
|
return transaction;
|
|
11
12
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepareTransaction.js","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"prepareTransaction.js","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,MAAM,CAAC,MAAM,kBAAkB,GAAqD,KAAK,EACvF,OAAO,EACP,WAAW,EACX,EAAE;IACF,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAExD,MAAM,kBAAkB,GAAG,MAAM,gBAAgB,CAC/C,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,EAAE,kBAAkB,EAAE,GAAG,EAAE,EAC1D,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,CACjE,CAAC;IAEF,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;IAEzE,IAAI,WAAW,CAAC,GAAG,KAAK,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;QACtD,OAAO,EAAE,GAAG,WAAW,EAAE,GAAG,EAAE,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;IAChE,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC"}
|
|
@@ -15,8 +15,9 @@ describe("prepareTransaction", () => {
|
|
|
15
15
|
craftTransactionSpy.mockReturnValue({ serializedTransaction: "serialized" });
|
|
16
16
|
});
|
|
17
17
|
it("should update fee field if it's different", async () => {
|
|
18
|
+
getNextSequenceSpy.mockResolvedValue(42);
|
|
18
19
|
const oldTx = { fee: new BigNumber(0) };
|
|
19
|
-
estimateFeesSpy.mockResolvedValue(
|
|
20
|
+
estimateFeesSpy.mockResolvedValue(BigInt(1));
|
|
20
21
|
const newTx = await prepareTransaction({}, oldTx);
|
|
21
22
|
expect(newTx.fee).toEqual(new BigNumber(1));
|
|
22
23
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepareTransaction.test.js","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.test.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI1D,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC7B,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAE7B,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,eAAiC,CAAC;IACtC,IAAI,kBAAoC,CAAC;IACzC,IAAI,mBAAqC,CAAC;IAC1C,UAAU,CAAC,GAAG,EAAE;QACd,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,eAAe,EAAE,EAAE,iBAAiB,CAAC,CAAC;QACxE,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,EAAE,cAAc,CAAC,CAAC;QAC/D,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,gBAAgB,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAC3E,mBAAmB,CAAC,eAAe,CAAC,EAAE,qBAAqB,EAAE,YAAY,EAAE,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,eAAe,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"prepareTransaction.test.js","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.test.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI1D,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC7B,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAE7B,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,eAAiC,CAAC;IACtC,IAAI,kBAAoC,CAAC;IACzC,IAAI,mBAAqC,CAAC;IAC1C,UAAU,CAAC,GAAG,EAAE;QACd,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,eAAe,EAAE,EAAE,iBAAiB,CAAC,CAAC;QACxE,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,EAAE,cAAc,CAAC,CAAC;QAC/D,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,gBAAgB,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAC3E,mBAAmB,CAAC,eAAe,CAAC,EAAE,qBAAqB,EAAE,YAAY,EAAE,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,kBAAkB,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,eAAe,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,EAAa,EAAE,KAAoB,CAAC,CAAC;QAC5E,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"estimateFees.d.ts","sourceRoot":"","sources":["../../../src/common-logic/transaction/estimateFees.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"estimateFees.d.ts","sourceRoot":"","sources":["../../../src/common-logic/transaction/estimateFees.ts"],"names":[],"mappings":"AAGA,wBAAsB,YAAY,CAAC,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAYjF"}
|
|
@@ -1,21 +1,18 @@
|
|
|
1
|
-
import BigNumber from "bignumber.js";
|
|
2
1
|
import { simulate } from "../../network/node";
|
|
3
2
|
import { SimulationError } from "../../types/errors";
|
|
4
|
-
export async function estimateFees(
|
|
5
|
-
let fees;
|
|
3
|
+
export async function estimateFees(serializedTransaction) {
|
|
6
4
|
try {
|
|
7
5
|
// We call the node to do a dry run and estimate fees
|
|
8
|
-
|
|
6
|
+
return BigInt(await simulate(serializedTransaction));
|
|
9
7
|
}
|
|
10
8
|
catch (e) {
|
|
11
9
|
// default value is required in case of simulation error, else user will encounter an error in the flow
|
|
12
10
|
if (e instanceof SimulationError) {
|
|
13
|
-
|
|
11
|
+
return BigInt(1000);
|
|
14
12
|
}
|
|
15
13
|
else {
|
|
16
14
|
throw new Error("Unexpected error while estimating fees.");
|
|
17
15
|
}
|
|
18
16
|
}
|
|
19
|
-
return new BigNumber(fees);
|
|
20
17
|
}
|
|
21
18
|
//# sourceMappingURL=estimateFees.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"estimateFees.js","sourceRoot":"","sources":["../../../src/common-logic/transaction/estimateFees.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"estimateFees.js","sourceRoot":"","sources":["../../../src/common-logic/transaction/estimateFees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,qBAA6B;IAC9D,IAAI,CAAC;QACH,qDAAqD;QACrD,OAAO,MAAM,CAAC,MAAM,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,uGAAuG;QACvG,IAAI,CAAC,YAAY,eAAe,EAAE,CAAC;YACjC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/network/node.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAO7D,eAAO,MAAM,QAAQ,iBAAwB,MAAM,KAAG,OAAO,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/network/node.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAO7D,eAAO,MAAM,QAAQ,iBAAwB,MAAM,KAAG,OAAO,CAAC,MAAM,CAcnE,CAAC;AAGF,eAAO,MAAM,eAAe,YAAmB,MAAM,KAAG,OAAO,CAAC,MAAM,CAYrE,CAAC;AAEF,eAAO,MAAM,cAAc,QAAa,OAAO,CAAC,MAAM,CAQrD,CAAC;AAEF,eAAO,MAAM,YAAY,QAAa,OAAO,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAQA,CAAC;AAEF,eAAO,MAAM,MAAM,aAAoB,MAAM,KAAG,OAAO,CAAC,aAAa,CAQpE,CAAC;AAEF,eAAO,MAAM,cAAc,YAAmB,MAAM,KAAG,OAAO,CAAC,mBAAmB,CAiBjF,CAAC"}
|
package/lib-es/network/node.js
CHANGED
|
@@ -10,7 +10,10 @@ export const simulate = async (serializedTx) => {
|
|
|
10
10
|
const url = `${getEnv("NODE_BOILERPLATE")}/simulate`;
|
|
11
11
|
const { data } = await network({
|
|
12
12
|
url,
|
|
13
|
-
method: "
|
|
13
|
+
method: "POST",
|
|
14
|
+
data: {
|
|
15
|
+
txPayload: serializedTx,
|
|
16
|
+
},
|
|
14
17
|
});
|
|
15
18
|
if (data.error) {
|
|
16
19
|
throw new SimulationError();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/network/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,OAAO,MAAM,gCAAgC,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,UAAU,MAAM,WAAW,CAAC;AAGnC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC;AAE5D,oDAAoD;AAEpD,iCAAiC;AACjC,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,YAAoB,EAAmB,EAAE;IACtE,gEAAgE;IAChE,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,kBAAkB,CAAC,WAAW,CAAC;IACrD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC;QAC7B,GAAG;QACH,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/network/node.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ledgerhq/coin-module-boilerplate",
|
|
3
|
-
"version": "2.0.0
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Boilerplate coin integration",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Ledger",
|
|
@@ -101,13 +101,13 @@
|
|
|
101
101
|
"bignumber.js": "^9.1.2",
|
|
102
102
|
"invariant": "^2.2.4",
|
|
103
103
|
"rxjs": "^7.8.1",
|
|
104
|
-
"@ledgerhq/coin-framework": "^2.
|
|
104
|
+
"@ledgerhq/coin-framework": "^2.4.0",
|
|
105
105
|
"@ledgerhq/cryptoassets": "^13.13.0",
|
|
106
106
|
"@ledgerhq/devices": "^8.4.4",
|
|
107
107
|
"@ledgerhq/errors": "^6.19.1",
|
|
108
108
|
"@ledgerhq/live-network": "^2.0.5",
|
|
109
109
|
"@ledgerhq/live-env": "^2.6.0",
|
|
110
|
-
"@ledgerhq/types-live": "^6.
|
|
110
|
+
"@ledgerhq/types-live": "^6.64.0"
|
|
111
111
|
},
|
|
112
112
|
"devDependencies": {
|
|
113
113
|
"@types/invariant": "^2.2.37",
|
package/src/api/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Api } from "@ledgerhq/coin-framework/api/index";
|
|
1
|
+
import type { Api, TransactionIntent } from "@ledgerhq/coin-framework/api/index";
|
|
2
2
|
import coinConfig, { type BoilerplateConfig } from "../config";
|
|
3
3
|
import {
|
|
4
4
|
broadcast,
|
|
@@ -27,31 +27,25 @@ export function createApi(config: BoilerplateConfig): Api<BoilerplateToken> {
|
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
async function craft(
|
|
31
|
-
|
|
32
|
-
transaction: {
|
|
33
|
-
recipient: string;
|
|
34
|
-
amount: bigint;
|
|
35
|
-
fee: bigint;
|
|
36
|
-
},
|
|
37
|
-
): Promise<string> {
|
|
38
|
-
const nextSequenceNumber = await getNextValidSequence(address);
|
|
30
|
+
async function craft(transactionIntent: TransactionIntent<BoilerplateToken>): Promise<string> {
|
|
31
|
+
const nextSequenceNumber = await getNextValidSequence(transactionIntent.sender);
|
|
39
32
|
const tx = await craftTransaction(
|
|
40
|
-
{ address, nextSequenceNumber },
|
|
33
|
+
{ address: transactionIntent.sender, nextSequenceNumber },
|
|
41
34
|
{
|
|
42
|
-
recipient:
|
|
43
|
-
amount: new BigNumber(
|
|
44
|
-
fee: new BigNumber(transaction.fee.toString()),
|
|
35
|
+
recipient: transactionIntent.recipient,
|
|
36
|
+
amount: new BigNumber(transactionIntent.amount.toString()),
|
|
45
37
|
},
|
|
46
38
|
);
|
|
47
39
|
return tx.serializedTransaction;
|
|
48
40
|
}
|
|
49
41
|
|
|
50
|
-
|
|
51
|
-
async function estimate(addr: string, amount: bigint): Promise<bigint> {
|
|
42
|
+
async function estimate(transactionIntent: TransactionIntent<BoilerplateToken>): Promise<bigint> {
|
|
52
43
|
const { serializedTransaction } = await craftTransaction(
|
|
53
|
-
{ address:
|
|
54
|
-
{
|
|
44
|
+
{ address: transactionIntent.sender },
|
|
45
|
+
{
|
|
46
|
+
recipient: transactionIntent.recipient,
|
|
47
|
+
amount: new BigNumber(transactionIntent.amount.toString()),
|
|
48
|
+
},
|
|
55
49
|
);
|
|
56
|
-
return
|
|
50
|
+
return await estimateFees(serializedTransaction);
|
|
57
51
|
}
|
|
@@ -20,8 +20,9 @@ describe("prepareTransaction", () => {
|
|
|
20
20
|
});
|
|
21
21
|
|
|
22
22
|
it("should update fee field if it's different", async () => {
|
|
23
|
+
getNextSequenceSpy.mockResolvedValue(42);
|
|
23
24
|
const oldTx = { fee: new BigNumber(0) };
|
|
24
|
-
estimateFeesSpy.mockResolvedValue(
|
|
25
|
+
estimateFeesSpy.mockResolvedValue(BigInt(1));
|
|
25
26
|
const newTx = await prepareTransaction({} as Account, oldTx as Transaction);
|
|
26
27
|
expect(newTx.fee).toEqual(new BigNumber(1));
|
|
27
28
|
});
|
|
@@ -2,6 +2,7 @@ import { AccountBridge } from "@ledgerhq/types-live";
|
|
|
2
2
|
import { Transaction } from "../types";
|
|
3
3
|
import { craftTransaction, estimateFees } from "../common-logic";
|
|
4
4
|
import { getNextSequence } from "../network/node";
|
|
5
|
+
import BigNumber from "bignumber.js";
|
|
5
6
|
|
|
6
7
|
export const prepareTransaction: AccountBridge<Transaction>["prepareTransaction"] = async (
|
|
7
8
|
account,
|
|
@@ -16,8 +17,8 @@ export const prepareTransaction: AccountBridge<Transaction>["prepareTransaction"
|
|
|
16
17
|
|
|
17
18
|
const fee = await estimateFees(craftedTransaction.serializedTransaction);
|
|
18
19
|
|
|
19
|
-
if (transaction.fee !== fee) {
|
|
20
|
-
return { ...transaction, fee };
|
|
20
|
+
if (transaction.fee !== new BigNumber(fee.toString())) {
|
|
21
|
+
return { ...transaction, fee: new BigNumber(fee.toString()) };
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
return transaction;
|
|
@@ -1,19 +1,16 @@
|
|
|
1
|
-
import BigNumber from "bignumber.js";
|
|
2
1
|
import { simulate } from "../../network/node";
|
|
3
2
|
import { SimulationError } from "../../types/errors";
|
|
4
3
|
|
|
5
|
-
export async function estimateFees(
|
|
6
|
-
let fees;
|
|
4
|
+
export async function estimateFees(serializedTransaction: string): Promise<bigint> {
|
|
7
5
|
try {
|
|
8
6
|
// We call the node to do a dry run and estimate fees
|
|
9
|
-
|
|
7
|
+
return BigInt(await simulate(serializedTransaction));
|
|
10
8
|
} catch (e) {
|
|
11
9
|
// default value is required in case of simulation error, else user will encounter an error in the flow
|
|
12
10
|
if (e instanceof SimulationError) {
|
|
13
|
-
|
|
11
|
+
return BigInt(1000);
|
|
14
12
|
} else {
|
|
15
13
|
throw new Error("Unexpected error while estimating fees.");
|
|
16
14
|
}
|
|
17
15
|
}
|
|
18
|
-
return new BigNumber(fees);
|
|
19
16
|
}
|
package/src/network/node.ts
CHANGED
|
@@ -14,7 +14,10 @@ export const simulate = async (serializedTx: string): Promise<number> => {
|
|
|
14
14
|
const url = `${getEnv("NODE_BOILERPLATE")}/simulate`;
|
|
15
15
|
const { data } = await network({
|
|
16
16
|
url,
|
|
17
|
-
method: "
|
|
17
|
+
method: "POST",
|
|
18
|
+
data: {
|
|
19
|
+
txPayload: serializedTx,
|
|
20
|
+
},
|
|
18
21
|
});
|
|
19
22
|
if (data.error) {
|
|
20
23
|
throw new SimulationError();
|