@ledgerhq/coin-hedera 1.15.0-nightly.20251126023856 → 1.15.0-nightly.20251126160702
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 +10 -8
- package/lib/api/index.d.ts.map +1 -1
- package/lib/api/index.js +6 -2
- package/lib/api/index.js.map +1 -1
- package/lib/bridge/broadcast.js +1 -1
- package/lib/bridge/broadcast.js.map +1 -1
- package/lib/bridge/buildOptimisticOperation.d.ts.map +1 -1
- package/lib/bridge/buildOptimisticOperation.js +80 -15
- package/lib/bridge/buildOptimisticOperation.js.map +1 -1
- package/lib/bridge/estimateMaxSpendable.js +5 -2
- package/lib/bridge/estimateMaxSpendable.js.map +1 -1
- package/lib/bridge/getTransactionStatus.d.ts.map +1 -1
- package/lib/bridge/getTransactionStatus.js +70 -13
- package/lib/bridge/getTransactionStatus.js.map +1 -1
- package/lib/bridge/index.js +1 -1
- package/lib/bridge/index.js.map +1 -1
- package/lib/bridge/prepareTransaction.d.ts.map +1 -1
- package/lib/bridge/prepareTransaction.js +40 -7
- package/lib/bridge/prepareTransaction.js.map +1 -1
- package/lib/bridge/signOperation.d.ts.map +1 -1
- package/lib/bridge/signOperation.js +19 -2
- package/lib/bridge/signOperation.js.map +1 -1
- package/lib/bridge/synchronisation.d.ts +2 -0
- package/lib/bridge/synchronisation.d.ts.map +1 -1
- package/lib/bridge/synchronisation.js +101 -30
- package/lib/bridge/synchronisation.js.map +1 -1
- package/lib/bridge/utils.d.ts +35 -2
- package/lib/bridge/utils.d.ts.map +1 -1
- package/lib/bridge/utils.js +215 -16
- package/lib/bridge/utils.js.map +1 -1
- package/lib/constants.d.ts +22 -2
- package/lib/constants.d.ts.map +1 -1
- package/lib/constants.js +42 -2
- package/lib/constants.js.map +1 -1
- package/lib/deviceTransactionConfig.d.ts +1 -1
- package/lib/deviceTransactionConfig.d.ts.map +1 -1
- package/lib/deviceTransactionConfig.js +8 -0
- package/lib/deviceTransactionConfig.js.map +1 -1
- package/lib/errors.d.ts +3 -0
- package/lib/errors.d.ts.map +1 -1
- package/lib/errors.js +2 -1
- package/lib/errors.js.map +1 -1
- package/lib/logic/craftTransaction.d.ts +4 -4
- package/lib/logic/craftTransaction.d.ts.map +1 -1
- package/lib/logic/craftTransaction.js +46 -5
- package/lib/logic/craftTransaction.js.map +1 -1
- package/lib/logic/estimateFees.d.ts +2 -4
- package/lib/logic/estimateFees.d.ts.map +1 -1
- package/lib/logic/estimateFees.js +45 -5
- package/lib/logic/estimateFees.js.map +1 -1
- package/lib/logic/listOperations.d.ts.map +1 -1
- package/lib/logic/listOperations.js +7 -3
- package/lib/logic/listOperations.js.map +1 -1
- package/lib/logic/utils.d.ts +24 -2
- package/lib/logic/utils.d.ts.map +1 -1
- package/lib/logic/utils.js +66 -13
- package/lib/logic/utils.js.map +1 -1
- package/lib/network/api.d.ts +12 -1
- package/lib/network/api.d.ts.map +1 -1
- package/lib/network/api.js +91 -19
- package/lib/network/api.js.map +1 -1
- package/lib/network/rpc.d.ts.map +1 -1
- package/lib/network/rpc.js +1 -0
- package/lib/network/rpc.js.map +1 -1
- package/lib/network/thirdweb.d.ts +21 -0
- package/lib/network/thirdweb.d.ts.map +1 -0
- package/lib/network/thirdweb.js +72 -0
- package/lib/network/thirdweb.js.map +1 -0
- package/lib/network/utils.d.ts +4 -1
- package/lib/network/utils.d.ts.map +1 -1
- package/lib/network/utils.js +53 -1
- package/lib/network/utils.js.map +1 -1
- package/lib/test/bridgeDatasetTest.d.ts.map +1 -1
- package/lib/test/bridgeDatasetTest.js +4 -4
- package/lib/test/bridgeDatasetTest.js.map +1 -1
- package/lib/test/fixtures/account.fixture.js +1 -1
- package/lib/test/fixtures/account.fixture.js.map +1 -1
- package/lib/test/fixtures/common.fixture.d.ts +12 -0
- package/lib/test/fixtures/common.fixture.d.ts.map +1 -0
- package/lib/test/fixtures/common.fixture.js +66 -0
- package/lib/test/fixtures/common.fixture.js.map +1 -0
- package/lib/test/fixtures/currency.fixture.d.ts +3 -1
- package/lib/test/fixtures/currency.fixture.d.ts.map +1 -1
- package/lib/test/fixtures/currency.fixture.js +63 -16
- package/lib/test/fixtures/currency.fixture.js.map +1 -1
- package/lib/test/fixtures/mirror.fixture.d.ts +3 -1
- package/lib/test/fixtures/mirror.fixture.d.ts.map +1 -1
- package/lib/test/fixtures/mirror.fixture.js +12 -1
- package/lib/test/fixtures/mirror.fixture.js.map +1 -1
- package/lib/test/fixtures/thirdweb.fixture.d.ts +3 -0
- package/lib/test/fixtures/thirdweb.fixture.d.ts.map +1 -0
- package/lib/test/fixtures/thirdweb.fixture.js +34 -0
- package/lib/test/fixtures/thirdweb.fixture.js.map +1 -0
- package/lib/transaction.d.ts.map +1 -1
- package/lib/transaction.js +2 -0
- package/lib/transaction.js.map +1 -1
- package/lib/types/alpaca.d.ts +5 -1
- package/lib/types/alpaca.d.ts.map +1 -1
- package/lib/types/bridge.d.ts +6 -1
- package/lib/types/bridge.d.ts.map +1 -1
- package/lib/types/index.d.ts +2 -0
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +2 -0
- package/lib/types/index.js.map +1 -1
- package/lib/types/logic.d.ts +39 -0
- package/lib/types/logic.d.ts.map +1 -0
- package/lib/types/logic.js +3 -0
- package/lib/types/logic.js.map +1 -0
- package/lib/types/mirror.d.ts +29 -0
- package/lib/types/mirror.d.ts.map +1 -1
- package/lib/types/thirdweb.d.ts +34 -0
- package/lib/types/thirdweb.d.ts.map +1 -0
- package/lib/types/thirdweb.js +3 -0
- package/lib/types/thirdweb.js.map +1 -0
- package/lib-es/api/index.d.ts.map +1 -1
- package/lib-es/api/index.js +7 -3
- package/lib-es/api/index.js.map +1 -1
- package/lib-es/bridge/broadcast.js +2 -2
- package/lib-es/bridge/broadcast.js.map +1 -1
- package/lib-es/bridge/buildOptimisticOperation.d.ts.map +1 -1
- package/lib-es/bridge/buildOptimisticOperation.js +83 -18
- package/lib-es/bridge/buildOptimisticOperation.js.map +1 -1
- package/lib-es/bridge/estimateMaxSpendable.js +5 -2
- package/lib-es/bridge/estimateMaxSpendable.js.map +1 -1
- package/lib-es/bridge/getTransactionStatus.d.ts.map +1 -1
- package/lib-es/bridge/getTransactionStatus.js +73 -16
- package/lib-es/bridge/getTransactionStatus.js.map +1 -1
- package/lib-es/bridge/index.js +2 -2
- package/lib-es/bridge/index.js.map +1 -1
- package/lib-es/bridge/prepareTransaction.d.ts.map +1 -1
- package/lib-es/bridge/prepareTransaction.js +42 -9
- package/lib-es/bridge/prepareTransaction.js.map +1 -1
- package/lib-es/bridge/signOperation.d.ts.map +1 -1
- package/lib-es/bridge/signOperation.js +21 -4
- package/lib-es/bridge/signOperation.js.map +1 -1
- package/lib-es/bridge/synchronisation.d.ts +2 -0
- package/lib-es/bridge/synchronisation.d.ts.map +1 -1
- package/lib-es/bridge/synchronisation.js +97 -27
- package/lib-es/bridge/synchronisation.js.map +1 -1
- package/lib-es/bridge/utils.d.ts +35 -2
- package/lib-es/bridge/utils.d.ts.map +1 -1
- package/lib-es/bridge/utils.js +211 -16
- package/lib-es/bridge/utils.js.map +1 -1
- package/lib-es/constants.d.ts +22 -2
- package/lib-es/constants.d.ts.map +1 -1
- package/lib-es/constants.js +38 -1
- package/lib-es/constants.js.map +1 -1
- package/lib-es/deviceTransactionConfig.d.ts +1 -1
- package/lib-es/deviceTransactionConfig.d.ts.map +1 -1
- package/lib-es/deviceTransactionConfig.js +8 -0
- package/lib-es/deviceTransactionConfig.js.map +1 -1
- package/lib-es/errors.d.ts +3 -0
- package/lib-es/errors.d.ts.map +1 -1
- package/lib-es/errors.js +1 -0
- package/lib-es/errors.js.map +1 -1
- package/lib-es/logic/craftTransaction.d.ts +4 -4
- package/lib-es/logic/craftTransaction.d.ts.map +1 -1
- package/lib-es/logic/craftTransaction.js +48 -7
- package/lib-es/logic/craftTransaction.js.map +1 -1
- package/lib-es/logic/estimateFees.d.ts +2 -4
- package/lib-es/logic/estimateFees.d.ts.map +1 -1
- package/lib-es/logic/estimateFees.js +47 -7
- package/lib-es/logic/estimateFees.js.map +1 -1
- package/lib-es/logic/listOperations.d.ts.map +1 -1
- package/lib-es/logic/listOperations.js +7 -3
- package/lib-es/logic/listOperations.js.map +1 -1
- package/lib-es/logic/utils.d.ts +24 -2
- package/lib-es/logic/utils.d.ts.map +1 -1
- package/lib-es/logic/utils.js +63 -13
- package/lib-es/logic/utils.js.map +1 -1
- package/lib-es/network/api.d.ts +12 -1
- package/lib-es/network/api.d.ts.map +1 -1
- package/lib-es/network/api.js +91 -19
- package/lib-es/network/api.js.map +1 -1
- package/lib-es/network/rpc.d.ts.map +1 -1
- package/lib-es/network/rpc.js +1 -0
- package/lib-es/network/rpc.js.map +1 -1
- package/lib-es/network/thirdweb.d.ts +21 -0
- package/lib-es/network/thirdweb.d.ts.map +1 -0
- package/lib-es/network/thirdweb.js +66 -0
- package/lib-es/network/thirdweb.js.map +1 -0
- package/lib-es/network/utils.d.ts +4 -1
- package/lib-es/network/utils.d.ts.map +1 -1
- package/lib-es/network/utils.js +49 -0
- package/lib-es/network/utils.js.map +1 -1
- package/lib-es/test/bridgeDatasetTest.d.ts.map +1 -1
- package/lib-es/test/bridgeDatasetTest.js +4 -4
- package/lib-es/test/bridgeDatasetTest.js.map +1 -1
- package/lib-es/test/fixtures/account.fixture.js +2 -2
- package/lib-es/test/fixtures/account.fixture.js.map +1 -1
- package/lib-es/test/fixtures/common.fixture.d.ts +12 -0
- package/lib-es/test/fixtures/common.fixture.d.ts.map +1 -0
- package/lib-es/test/fixtures/common.fixture.js +57 -0
- package/lib-es/test/fixtures/common.fixture.js.map +1 -0
- package/lib-es/test/fixtures/currency.fixture.d.ts +3 -1
- package/lib-es/test/fixtures/currency.fixture.d.ts.map +1 -1
- package/lib-es/test/fixtures/currency.fixture.js +59 -14
- package/lib-es/test/fixtures/currency.fixture.js.map +1 -1
- package/lib-es/test/fixtures/mirror.fixture.d.ts +3 -1
- package/lib-es/test/fixtures/mirror.fixture.d.ts.map +1 -1
- package/lib-es/test/fixtures/mirror.fixture.js +9 -0
- package/lib-es/test/fixtures/mirror.fixture.js.map +1 -1
- package/lib-es/test/fixtures/thirdweb.fixture.d.ts +3 -0
- package/lib-es/test/fixtures/thirdweb.fixture.d.ts.map +1 -0
- package/lib-es/test/fixtures/thirdweb.fixture.js +30 -0
- package/lib-es/test/fixtures/thirdweb.fixture.js.map +1 -0
- package/lib-es/transaction.d.ts.map +1 -1
- package/lib-es/transaction.js +2 -0
- package/lib-es/transaction.js.map +1 -1
- package/lib-es/types/alpaca.d.ts +5 -1
- package/lib-es/types/alpaca.d.ts.map +1 -1
- package/lib-es/types/bridge.d.ts +6 -1
- package/lib-es/types/bridge.d.ts.map +1 -1
- package/lib-es/types/index.d.ts +2 -0
- package/lib-es/types/index.d.ts.map +1 -1
- package/lib-es/types/index.js +2 -0
- package/lib-es/types/index.js.map +1 -1
- package/lib-es/types/logic.d.ts +39 -0
- package/lib-es/types/logic.d.ts.map +1 -0
- package/lib-es/types/logic.js +2 -0
- package/lib-es/types/logic.js.map +1 -0
- package/lib-es/types/mirror.d.ts +29 -0
- package/lib-es/types/mirror.d.ts.map +1 -1
- package/lib-es/types/thirdweb.d.ts +34 -0
- package/lib-es/types/thirdweb.d.ts.map +1 -0
- package/lib-es/types/thirdweb.js +2 -0
- package/lib-es/types/thirdweb.js.map +1 -0
- package/package.json +9 -8
- package/src/api/index.integ.test.ts +11 -8
- package/src/api/index.ts +10 -3
- package/src/bridge/broadcast.ts +2 -2
- package/src/bridge/buildOptimisticOperation.integration.test.ts +70 -19
- package/src/bridge/buildOptimisticOperation.ts +98 -20
- package/src/bridge/estimateMaxSpendable.ts +5 -5
- package/src/bridge/getTransactionStatus.test.ts +57 -12
- package/src/bridge/getTransactionStatus.ts +88 -15
- package/src/bridge/index.ts +2 -2
- package/src/bridge/js-estimateMaxSpendable.integration.test.ts +12 -9
- package/src/bridge/prepareTransaction.test.ts +3 -1
- package/src/bridge/prepareTransaction.ts +45 -10
- package/src/bridge/signOperation.ts +23 -5
- package/src/bridge/synchronisation.test.ts +67 -0
- package/src/bridge/synchronisation.ts +114 -34
- package/src/bridge/utils.integration.test.ts +486 -180
- package/src/bridge/utils.test.ts +404 -0
- package/src/bridge/utils.ts +330 -27
- package/src/constants.ts +47 -2
- package/src/deviceTransactionConfig.ts +10 -1
- package/src/errors.ts +3 -0
- package/src/logic/craftTransaction.test.ts +49 -9
- package/src/logic/craftTransaction.ts +76 -11
- package/src/logic/estimateFees.test.ts +180 -31
- package/src/logic/estimateFees.ts +68 -7
- package/src/logic/getAssetFromToken.test.ts +2 -2
- package/src/logic/getBalance.test.ts +18 -57
- package/src/logic/getTokenFromAsset.test.ts +2 -2
- package/src/logic/listOperations.ts +9 -5
- package/src/logic/utils.test.ts +157 -69
- package/src/logic/utils.ts +75 -13
- package/src/network/api.test.ts +211 -3
- package/src/network/api.ts +118 -24
- package/src/network/rpc.test.ts +1 -0
- package/src/network/rpc.ts +1 -0
- package/src/network/thirdweb.test.ts +188 -0
- package/src/network/thirdweb.ts +101 -0
- package/src/network/utils.test.ts +364 -164
- package/src/network/utils.ts +83 -1
- package/src/test/bridgeDatasetTest.ts +4 -5
- package/src/test/fixtures/account.fixture.ts +2 -2
- package/src/test/fixtures/common.fixture.ts +74 -0
- package/src/test/fixtures/currency.fixture.ts +66 -14
- package/src/test/fixtures/mirror.fixture.ts +23 -1
- package/src/test/fixtures/thirdweb.fixture.ts +33 -0
- package/src/transaction.ts +2 -0
- package/src/types/alpaca.ts +8 -1
- package/src/types/bridge.ts +6 -1
- package/src/types/index.ts +2 -0
- package/src/types/logic.ts +44 -0
- package/src/types/mirror.ts +35 -0
- package/src/types/thirdweb.ts +36 -0
|
@@ -1,19 +1,23 @@
|
|
|
1
|
+
import BigNumber from "bignumber.js";
|
|
1
2
|
import invariant from "invariant";
|
|
2
3
|
import { encodeOperationId } from "@ledgerhq/coin-framework/operation";
|
|
3
|
-
import { findSubAccountById
|
|
4
|
-
import { HEDERA_OPERATION_TYPES } from "../constants";
|
|
4
|
+
import { findSubAccountById } from "@ledgerhq/coin-framework/account/helpers";
|
|
5
|
+
import { HEDERA_OPERATION_TYPES, HEDERA_TRANSACTION_MODES } from "../constants";
|
|
5
6
|
import { estimateFees } from "../logic/estimateFees";
|
|
6
|
-
import {
|
|
7
|
+
import { safeParseAccountId, isTokenAssociateTransaction } from "../logic/utils";
|
|
7
8
|
const buildOptimisticTokenAssociateOperation = async ({ account, transaction, }) => {
|
|
8
9
|
invariant(isTokenAssociateTransaction(transaction), "invalid transaction properties");
|
|
9
|
-
const estimatedFee = await estimateFees(
|
|
10
|
+
const estimatedFee = await estimateFees({
|
|
11
|
+
currency: account.currency,
|
|
12
|
+
operationType: HEDERA_OPERATION_TYPES.TokenAssociate,
|
|
13
|
+
});
|
|
10
14
|
const type = "ASSOCIATE_TOKEN";
|
|
11
15
|
const operation = {
|
|
12
16
|
id: encodeOperationId(account.id, "", type),
|
|
13
17
|
hash: "",
|
|
14
18
|
type,
|
|
15
|
-
value: estimatedFee,
|
|
16
|
-
fee: estimatedFee,
|
|
19
|
+
value: estimatedFee.tinybars,
|
|
20
|
+
fee: estimatedFee.tinybars,
|
|
17
21
|
blockHash: null,
|
|
18
22
|
blockHeight: null,
|
|
19
23
|
senders: [account.freshAddress.toString()],
|
|
@@ -29,17 +33,21 @@ const buildOptimisticTokenAssociateOperation = async ({ account, transaction, })
|
|
|
29
33
|
const buildOptimisticCoinOperation = async ({ account, transaction, transactionType, }) => {
|
|
30
34
|
const estimatedFee = transactionType === "FEES"
|
|
31
35
|
? transaction.amount
|
|
32
|
-
: await estimateFees(
|
|
36
|
+
: await estimateFees({
|
|
37
|
+
currency: account.currency,
|
|
38
|
+
operationType: HEDERA_OPERATION_TYPES.CryptoTransfer,
|
|
39
|
+
});
|
|
33
40
|
const value = transaction.amount;
|
|
34
41
|
const type = transactionType ?? "OUT";
|
|
35
42
|
const [_, recipientAddress] = safeParseAccountId(transaction.recipient);
|
|
36
43
|
const recipientWithoutChecksum = recipientAddress?.accountId ?? transaction.recipient;
|
|
44
|
+
const memo = transaction.memo;
|
|
37
45
|
const operation = {
|
|
38
46
|
id: encodeOperationId(account.id, "", type),
|
|
39
47
|
hash: "",
|
|
40
48
|
type,
|
|
41
49
|
value,
|
|
42
|
-
fee: estimatedFee,
|
|
50
|
+
fee: BigNumber.isBigNumber(estimatedFee) ? estimatedFee : estimatedFee.tinybars,
|
|
43
51
|
blockHash: null,
|
|
44
52
|
blockHeight: null,
|
|
45
53
|
senders: [account.freshAddress.toString()],
|
|
@@ -47,23 +55,26 @@ const buildOptimisticCoinOperation = async ({ account, transaction, transactionT
|
|
|
47
55
|
accountId: account.id,
|
|
48
56
|
date: new Date(),
|
|
49
57
|
extra: {
|
|
50
|
-
...(
|
|
58
|
+
...(memo && { memo }),
|
|
51
59
|
},
|
|
52
60
|
};
|
|
53
61
|
return operation;
|
|
54
62
|
};
|
|
55
|
-
const
|
|
56
|
-
const estimatedFee = await estimateFees(
|
|
63
|
+
const buildOptimisticHTSTokenOperation = async ({ account, tokenAccount, transaction, }) => {
|
|
64
|
+
const estimatedFee = await estimateFees({
|
|
65
|
+
currency: account.currency,
|
|
66
|
+
operationType: HEDERA_OPERATION_TYPES.TokenTransfer,
|
|
67
|
+
});
|
|
57
68
|
const value = transaction.amount;
|
|
58
69
|
const type = "OUT";
|
|
59
70
|
const [_, recipientAddress] = safeParseAccountId(transaction.recipient);
|
|
60
71
|
const recipientWithoutChecksum = recipientAddress?.accountId ?? transaction.recipient;
|
|
72
|
+
const memo = transaction.memo;
|
|
61
73
|
const coinOperation = await buildOptimisticCoinOperation({
|
|
62
74
|
account,
|
|
63
75
|
transaction: {
|
|
64
76
|
...transaction,
|
|
65
|
-
|
|
66
|
-
amount: estimatedFee,
|
|
77
|
+
amount: estimatedFee.tinybars,
|
|
67
78
|
},
|
|
68
79
|
transactionType: "FEES",
|
|
69
80
|
});
|
|
@@ -75,7 +86,7 @@ const buildOptimisticTokenOperation = async ({ account, tokenAccount, transactio
|
|
|
75
86
|
hash: "",
|
|
76
87
|
type,
|
|
77
88
|
value,
|
|
78
|
-
fee: estimatedFee,
|
|
89
|
+
fee: estimatedFee.tinybars,
|
|
79
90
|
blockHash: null,
|
|
80
91
|
blockHeight: null,
|
|
81
92
|
senders: [account.freshAddress.toString()],
|
|
@@ -83,7 +94,57 @@ const buildOptimisticTokenOperation = async ({ account, tokenAccount, transactio
|
|
|
83
94
|
accountId: tokenAccount.id,
|
|
84
95
|
date: new Date(),
|
|
85
96
|
extra: {
|
|
86
|
-
...(
|
|
97
|
+
...(memo && { memo }),
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
],
|
|
101
|
+
};
|
|
102
|
+
return operation;
|
|
103
|
+
};
|
|
104
|
+
const buildOptimisticERC20TokenOperation = async ({ account, tokenAccount, transaction, }) => {
|
|
105
|
+
const estimatedFees = await estimateFees({
|
|
106
|
+
operationType: HEDERA_OPERATION_TYPES.ContractCall,
|
|
107
|
+
txIntent: {
|
|
108
|
+
intentType: "transaction",
|
|
109
|
+
type: HEDERA_TRANSACTION_MODES.Send,
|
|
110
|
+
asset: {
|
|
111
|
+
type: "erc20",
|
|
112
|
+
assetReference: tokenAccount.token.contractAddress,
|
|
113
|
+
assetOwner: account.freshAddress,
|
|
114
|
+
},
|
|
115
|
+
amount: BigInt(transaction.amount.toString()),
|
|
116
|
+
sender: account.freshAddress,
|
|
117
|
+
recipient: transaction.recipient,
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
const value = transaction.amount;
|
|
121
|
+
const type = "OUT";
|
|
122
|
+
const memo = transaction.memo;
|
|
123
|
+
const coinOperation = await buildOptimisticCoinOperation({
|
|
124
|
+
account,
|
|
125
|
+
transaction: {
|
|
126
|
+
...transaction,
|
|
127
|
+
amount: estimatedFees.tinybars,
|
|
128
|
+
},
|
|
129
|
+
transactionType: "FEES",
|
|
130
|
+
});
|
|
131
|
+
const operation = {
|
|
132
|
+
...coinOperation,
|
|
133
|
+
subOperations: [
|
|
134
|
+
{
|
|
135
|
+
id: encodeOperationId(tokenAccount.id, "", type),
|
|
136
|
+
hash: "",
|
|
137
|
+
type,
|
|
138
|
+
value,
|
|
139
|
+
fee: estimatedFees.tinybars,
|
|
140
|
+
blockHash: null,
|
|
141
|
+
blockHeight: null,
|
|
142
|
+
senders: [account.freshAddress.toString()],
|
|
143
|
+
recipients: [transaction.recipient],
|
|
144
|
+
accountId: tokenAccount.id,
|
|
145
|
+
date: new Date(),
|
|
146
|
+
extra: {
|
|
147
|
+
...(memo && { memo }),
|
|
87
148
|
},
|
|
88
149
|
},
|
|
89
150
|
],
|
|
@@ -92,12 +153,16 @@ const buildOptimisticTokenOperation = async ({ account, tokenAccount, transactio
|
|
|
92
153
|
};
|
|
93
154
|
export const buildOptimisticOperation = async ({ account, transaction, }) => {
|
|
94
155
|
const subAccount = findSubAccountById(account, transaction.subAccountId || "");
|
|
95
|
-
const
|
|
156
|
+
const isHTSTokenTransaction = transaction.mode === HEDERA_TRANSACTION_MODES.Send && subAccount?.token.tokenType === "hts";
|
|
157
|
+
const isERC20TokenTransaction = transaction.mode === HEDERA_TRANSACTION_MODES.Send && subAccount?.token.tokenType === "erc20";
|
|
96
158
|
if (isTokenAssociateTransaction(transaction)) {
|
|
97
159
|
return buildOptimisticTokenAssociateOperation({ account, transaction });
|
|
98
160
|
}
|
|
99
|
-
else if (
|
|
100
|
-
return
|
|
161
|
+
else if (isHTSTokenTransaction) {
|
|
162
|
+
return buildOptimisticHTSTokenOperation({ account, tokenAccount: subAccount, transaction });
|
|
163
|
+
}
|
|
164
|
+
else if (isERC20TokenTransaction) {
|
|
165
|
+
return buildOptimisticERC20TokenOperation({ account, tokenAccount: subAccount, transaction });
|
|
101
166
|
}
|
|
102
167
|
else {
|
|
103
168
|
return buildOptimisticCoinOperation({ account, transaction });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildOptimisticOperation.js","sourceRoot":"","sources":["../../src/bridge/buildOptimisticOperation.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"buildOptimisticOperation.js","sourceRoot":"","sources":["../../src/bridge/buildOptimisticOperation.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,8 +10,11 @@ export const estimateMaxSpendable = async ({ account, parentAccount, }) => {
|
|
|
10
10
|
if (isTokenTransaction) {
|
|
11
11
|
return Promise.resolve(balance);
|
|
12
12
|
}
|
|
13
|
-
const estimatedFees = await estimateFees(
|
|
14
|
-
|
|
13
|
+
const estimatedFees = await estimateFees({
|
|
14
|
+
currency: mainAccount.currency,
|
|
15
|
+
operationType: HEDERA_OPERATION_TYPES.CryptoTransfer,
|
|
16
|
+
});
|
|
17
|
+
let maxSpendable = balance.minus(estimatedFees.tinybars);
|
|
15
18
|
// set max spendable to 0 if negative
|
|
16
19
|
// for cases where the user's account balance is smaller than the estimated fee
|
|
17
20
|
if (maxSpendable.isLessThan(0)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"estimateMaxSpendable.js","sourceRoot":"","sources":["../../src/bridge/estimateMaxSpendable.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,MAAM,CAAC,MAAM,oBAAoB,GAAuD,KAAK,EAAE,EAC7F,OAAO,EACP,aAAa,GACd,EAAE,EAAE;IACH,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC3D,MAAM,kBAAkB,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAEhC,IAAI,kBAAkB,EAAE,CAAC;QACvB,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"estimateMaxSpendable.js","sourceRoot":"","sources":["../../src/bridge/estimateMaxSpendable.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,MAAM,CAAC,MAAM,oBAAoB,GAAuD,KAAK,EAAE,EAC7F,OAAO,EACP,aAAa,GACd,EAAE,EAAE;IACH,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC3D,MAAM,kBAAkB,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAEhC,IAAI,kBAAkB,EAAE,CAAC;QACvB,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC;QACvC,QAAQ,EAAE,WAAW,CAAC,QAAQ;QAC9B,aAAa,EAAE,sBAAsB,CAAC,cAAc;KACrD,CAAC,CAAC;IACH,IAAI,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAEzD,qCAAqC;IACrC,+EAA+E;IAC/E,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,YAAY,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACvC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTransactionStatus.d.ts","sourceRoot":"","sources":["../../src/bridge/getTransactionStatus.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAgB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"getTransactionStatus.d.ts","sourceRoot":"","sources":["../../src/bridge/getTransactionStatus.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAgB,MAAM,sBAAsB,CAAC;AAkBjF,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAA6B,MAAM,UAAU,CAAC;AA0N1F,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAC9C,WAAW,EACX,OAAO,EACP,iBAAiB,CAClB,CAAC,sBAAsB,CAgBvB,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import BigNumber from "bignumber.js";
|
|
2
2
|
import { AmountRequired, NotEnoughBalance, InvalidAddressBecauseDestinationIsAlsoSource, RecipientRequired, } from "@ledgerhq/errors";
|
|
3
|
-
import { findSubAccountById
|
|
3
|
+
import { findSubAccountById } from "@ledgerhq/coin-framework/account";
|
|
4
4
|
import { getEnv } from "@ledgerhq/live-env";
|
|
5
|
-
import { HEDERA_OPERATION_TYPES } from "../constants";
|
|
6
|
-
import { HederaInsufficientFundsForAssociation, HederaRecipientTokenAssociationRequired, HederaRecipientTokenAssociationUnverified, } from "../errors";
|
|
5
|
+
import { HEDERA_OPERATION_TYPES, HEDERA_TRANSACTION_MODES } from "../constants";
|
|
6
|
+
import { HederaInsufficientFundsForAssociation, HederaRecipientTokenAssociationRequired, HederaRecipientTokenAssociationUnverified, HederaRecipientEvmAddressVerificationRequired, } from "../errors";
|
|
7
7
|
import { estimateFees } from "../logic/estimateFees";
|
|
8
8
|
import { isTokenAssociateTransaction, isTokenAssociationRequired, getCurrencyToUSDRate, checkAccountTokenAssociationStatus, safeParseAccountId, } from "../logic/utils";
|
|
9
9
|
import { calculateAmount } from "./utils";
|
|
@@ -26,10 +26,13 @@ async function handleTokenAssociateTransaction(account, transaction) {
|
|
|
26
26
|
const warnings = {};
|
|
27
27
|
const [usdRate, estimatedFees] = await Promise.all([
|
|
28
28
|
getCurrencyToUSDRate(account.currency),
|
|
29
|
-
estimateFees(
|
|
29
|
+
estimateFees({
|
|
30
|
+
currency: account.currency,
|
|
31
|
+
operationType: HEDERA_OPERATION_TYPES.TokenAssociate,
|
|
32
|
+
}),
|
|
30
33
|
]);
|
|
31
34
|
const amount = BigNumber(0);
|
|
32
|
-
const totalSpent = amount.plus(estimatedFees);
|
|
35
|
+
const totalSpent = amount.plus(estimatedFees.tinybars);
|
|
33
36
|
const isAssociationFlow = isTokenAssociationRequired(account, transaction.properties.token);
|
|
34
37
|
if (isAssociationFlow) {
|
|
35
38
|
const hbarBalance = account.balance.dividedBy(10 ** account.currency.units[0].magnitude);
|
|
@@ -44,17 +47,20 @@ async function handleTokenAssociateTransaction(account, transaction) {
|
|
|
44
47
|
return {
|
|
45
48
|
amount,
|
|
46
49
|
totalSpent,
|
|
47
|
-
estimatedFees,
|
|
50
|
+
estimatedFees: estimatedFees.tinybars,
|
|
48
51
|
errors,
|
|
49
52
|
warnings,
|
|
50
53
|
};
|
|
51
54
|
}
|
|
52
|
-
async function
|
|
55
|
+
async function handleHTSTokenTransaction(account, subAccount, transaction) {
|
|
53
56
|
const errors = {};
|
|
54
57
|
const warnings = {};
|
|
55
58
|
const [calculatedAmount, estimatedFees] = await Promise.all([
|
|
56
59
|
calculateAmount({ transaction, account }),
|
|
57
|
-
estimateFees(
|
|
60
|
+
estimateFees({
|
|
61
|
+
currency: account.currency,
|
|
62
|
+
operationType: HEDERA_OPERATION_TYPES.TokenTransfer,
|
|
63
|
+
}),
|
|
58
64
|
]);
|
|
59
65
|
const recipientError = validateRecipient(account, transaction.recipient);
|
|
60
66
|
if (recipientError) {
|
|
@@ -62,7 +68,7 @@ async function handleTokenTransaction(account, subAccount, transaction) {
|
|
|
62
68
|
}
|
|
63
69
|
if (!errors.recipient) {
|
|
64
70
|
try {
|
|
65
|
-
const hasRecipientTokenAssociated = await checkAccountTokenAssociationStatus(transaction.recipient, subAccount.token
|
|
71
|
+
const hasRecipientTokenAssociated = await checkAccountTokenAssociationStatus(transaction.recipient, subAccount.token);
|
|
66
72
|
if (!hasRecipientTokenAssociated) {
|
|
67
73
|
warnings.missingAssociation = new HederaRecipientTokenAssociationRequired();
|
|
68
74
|
}
|
|
@@ -77,13 +83,57 @@ async function handleTokenTransaction(account, subAccount, transaction) {
|
|
|
77
83
|
if (subAccount.balance.isLessThan(calculatedAmount.totalSpent)) {
|
|
78
84
|
errors.amount = new NotEnoughBalance();
|
|
79
85
|
}
|
|
80
|
-
if (account.balance.isLessThan(estimatedFees)) {
|
|
86
|
+
if (account.balance.isLessThan(estimatedFees.tinybars)) {
|
|
81
87
|
errors.amount = new NotEnoughBalance();
|
|
82
88
|
}
|
|
83
89
|
return {
|
|
84
90
|
amount: calculatedAmount.amount,
|
|
85
91
|
totalSpent: calculatedAmount.totalSpent,
|
|
86
|
-
estimatedFees,
|
|
92
|
+
estimatedFees: estimatedFees.tinybars,
|
|
93
|
+
errors,
|
|
94
|
+
warnings,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
async function handleERC20TokenTransaction(account, subAccount, transaction) {
|
|
98
|
+
const errors = {};
|
|
99
|
+
const warnings = {
|
|
100
|
+
unverifiedEvmAddress: new HederaRecipientEvmAddressVerificationRequired(),
|
|
101
|
+
};
|
|
102
|
+
const [calculatedAmount, estimatedFees] = await Promise.all([
|
|
103
|
+
calculateAmount({ transaction, account }),
|
|
104
|
+
estimateFees({
|
|
105
|
+
operationType: HEDERA_OPERATION_TYPES.ContractCall,
|
|
106
|
+
txIntent: {
|
|
107
|
+
intentType: "transaction",
|
|
108
|
+
type: HEDERA_TRANSACTION_MODES.Send,
|
|
109
|
+
asset: {
|
|
110
|
+
type: "erc20",
|
|
111
|
+
assetReference: subAccount.token.contractAddress,
|
|
112
|
+
assetOwner: account.freshAddress,
|
|
113
|
+
},
|
|
114
|
+
amount: BigInt(transaction.amount.toString()),
|
|
115
|
+
sender: account.freshAddress,
|
|
116
|
+
recipient: transaction.recipient,
|
|
117
|
+
},
|
|
118
|
+
}),
|
|
119
|
+
]);
|
|
120
|
+
const recipientError = validateRecipient(account, transaction.recipient);
|
|
121
|
+
if (recipientError) {
|
|
122
|
+
errors.recipient = recipientError;
|
|
123
|
+
}
|
|
124
|
+
if (transaction.amount.eq(0)) {
|
|
125
|
+
errors.amount = new AmountRequired();
|
|
126
|
+
}
|
|
127
|
+
if (subAccount.balance.isLessThan(calculatedAmount.totalSpent)) {
|
|
128
|
+
errors.amount = new NotEnoughBalance();
|
|
129
|
+
}
|
|
130
|
+
if (account.balance.isLessThan(estimatedFees.tinybars)) {
|
|
131
|
+
errors.amount = new NotEnoughBalance();
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
amount: calculatedAmount.amount,
|
|
135
|
+
totalSpent: calculatedAmount.totalSpent,
|
|
136
|
+
estimatedFees: estimatedFees.tinybars,
|
|
87
137
|
errors,
|
|
88
138
|
warnings,
|
|
89
139
|
};
|
|
@@ -93,7 +143,10 @@ async function handleCoinTransaction(account, transaction) {
|
|
|
93
143
|
const warnings = {};
|
|
94
144
|
const [calculatedAmount, estimatedFees] = await Promise.all([
|
|
95
145
|
calculateAmount({ transaction, account }),
|
|
96
|
-
estimateFees(
|
|
146
|
+
estimateFees({
|
|
147
|
+
currency: account.currency,
|
|
148
|
+
operationType: HEDERA_OPERATION_TYPES.CryptoTransfer,
|
|
149
|
+
}),
|
|
97
150
|
]);
|
|
98
151
|
const recipientError = validateRecipient(account, transaction.recipient);
|
|
99
152
|
if (recipientError) {
|
|
@@ -108,19 +161,23 @@ async function handleCoinTransaction(account, transaction) {
|
|
|
108
161
|
return {
|
|
109
162
|
amount: calculatedAmount.amount,
|
|
110
163
|
totalSpent: calculatedAmount.totalSpent,
|
|
111
|
-
estimatedFees,
|
|
164
|
+
estimatedFees: estimatedFees.tinybars,
|
|
112
165
|
errors,
|
|
113
166
|
warnings,
|
|
114
167
|
};
|
|
115
168
|
}
|
|
116
169
|
export const getTransactionStatus = async (account, transaction) => {
|
|
117
170
|
const subAccount = findSubAccountById(account, transaction?.subAccountId || "");
|
|
118
|
-
const
|
|
171
|
+
const isHTSTokenTransaction = transaction.mode === HEDERA_TRANSACTION_MODES.Send && subAccount?.token.tokenType === "hts";
|
|
172
|
+
const isERC20TokenTransaction = transaction.mode === HEDERA_TRANSACTION_MODES.Send && subAccount?.token.tokenType === "erc20";
|
|
119
173
|
if (isTokenAssociateTransaction(transaction)) {
|
|
120
174
|
return handleTokenAssociateTransaction(account, transaction);
|
|
121
175
|
}
|
|
122
|
-
else if (
|
|
123
|
-
return
|
|
176
|
+
else if (isHTSTokenTransaction) {
|
|
177
|
+
return handleHTSTokenTransaction(account, subAccount, transaction);
|
|
178
|
+
}
|
|
179
|
+
else if (isERC20TokenTransaction) {
|
|
180
|
+
return handleERC20TokenTransaction(account, subAccount, transaction);
|
|
124
181
|
}
|
|
125
182
|
else {
|
|
126
183
|
return handleCoinTransaction(account, transaction);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTransactionStatus.js","sourceRoot":"","sources":["../../src/bridge/getTransactionStatus.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,4CAA4C,EAC5C,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"getTransactionStatus.js","sourceRoot":"","sources":["../../src/bridge/getTransactionStatus.ts"],"names":[],"mappings":"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"}
|
package/lib-es/bridge/index.js
CHANGED
|
@@ -7,7 +7,7 @@ import { getTransactionStatus } from "./getTransactionStatus";
|
|
|
7
7
|
import { prepareTransaction } from "./prepareTransaction";
|
|
8
8
|
import { receive } from "./receive";
|
|
9
9
|
import { buildSignOperation } from "./signOperation";
|
|
10
|
-
import { getAccountShape, buildIterateResult } from "./synchronisation";
|
|
10
|
+
import { getAccountShape, buildIterateResult, postSync } from "./synchronisation";
|
|
11
11
|
import { assignFromAccountRaw, assignToAccountRaw } from "./serialization";
|
|
12
12
|
import resolver from "../signer/index";
|
|
13
13
|
function buildCurrencyBridge(signerContext) {
|
|
@@ -23,7 +23,7 @@ function buildCurrencyBridge(signerContext) {
|
|
|
23
23
|
scanAccounts,
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
|
-
const sync = makeSync({ getAccountShape });
|
|
26
|
+
const sync = makeSync({ getAccountShape, postSync, shouldMergeOps: false });
|
|
27
27
|
function buildAccountBridge(signerContext) {
|
|
28
28
|
const getAddress = resolver(signerContext);
|
|
29
29
|
const signOperation = buildSignOperation(signerContext);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,gBAAgB,EAChB,QAAQ,EACR,iBAAiB,GAClB,MAAM,2CAA2C,CAAC;AACnD,OAAO,iBAAiB,MAAM,mDAAmD,CAAC;AAGlF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,gBAAgB,EAChB,QAAQ,EACR,iBAAiB,GAClB,MAAM,2CAA2C,CAAC;AACnD,OAAO,iBAAiB,MAAM,mDAAmD,CAAC;AAGlF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AAGvC,SAAS,mBAAmB,CAAC,aAA0C;IACrE,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;IAE3C,MAAM,YAAY,GAAG,gBAAgB,CAAC;QACpC,eAAe;QACf,kBAAkB;QAClB,YAAY,EAAE,iBAAiB,CAAC,UAAU,CAAC;KAC5C,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;QACjB,YAAY;KACb,CAAC;AACJ,CAAC;AAED,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,eAAe,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;AAE5E,SAAS,kBAAkB,CACzB,aAA0C;IAE1C,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;IAE3C,MAAM,aAAa,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAExD,OAAO;QACL,oBAAoB;QACpB,iBAAiB;QACjB,iBAAiB;QACjB,oBAAoB;QACpB,kBAAkB;QAClB,kBAAkB;QAClB,oBAAoB;QACpB,IAAI;QACJ,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC/C,aAAa;QACb,gBAAgB,EAAE,GAAG,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,SAAS;QACT,8BAA8B;KAC/B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,aAA0C;IACtE,OAAO;QACL,cAAc,EAAE,mBAAmB,CAAC,aAAa,CAAC;QAClD,aAAa,EAAE,kBAAkB,CAAC,aAAa,CAAC;KACjD,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepareTransaction.d.ts","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI1D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"prepareTransaction.d.ts","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI1D,OAAO,KAAK,EAAsB,WAAW,EAAE,MAAM,UAAU,CAAC;AAGhE;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAkE/E,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { findSubAccountById
|
|
2
|
-
import { HEDERA_OPERATION_TYPES } from "../constants";
|
|
1
|
+
import { findSubAccountById } from "@ledgerhq/coin-framework/account/helpers";
|
|
2
|
+
import { HEDERA_OPERATION_TYPES, HEDERA_TRANSACTION_MODES } from "../constants";
|
|
3
3
|
import { estimateFees } from "../logic/estimateFees";
|
|
4
4
|
import { isTokenAssociateTransaction } from "../logic/utils";
|
|
5
5
|
import { calculateAmount } from "./utils";
|
|
@@ -12,29 +12,62 @@ import { calculateAmount } from "./utils";
|
|
|
12
12
|
*
|
|
13
13
|
*/
|
|
14
14
|
export const prepareTransaction = async (account, transaction) => {
|
|
15
|
-
|
|
16
|
-
const isTokenTransaction = isTokenAccount(subAccount);
|
|
15
|
+
let estimateFeesParams;
|
|
17
16
|
let operationType;
|
|
17
|
+
const subAccount = findSubAccountById(account, transaction?.subAccountId || "");
|
|
18
|
+
const isHTSTokenTransaction = transaction.mode === HEDERA_TRANSACTION_MODES.Send && subAccount?.token.tokenType === "hts";
|
|
19
|
+
const isERC20TokenTransaction = transaction.mode === HEDERA_TRANSACTION_MODES.Send && subAccount?.token.tokenType === "erc20";
|
|
18
20
|
if (isTokenAssociateTransaction(transaction)) {
|
|
19
21
|
operationType = HEDERA_OPERATION_TYPES.TokenAssociate;
|
|
20
22
|
}
|
|
21
|
-
else if (
|
|
23
|
+
else if (isHTSTokenTransaction) {
|
|
22
24
|
operationType = HEDERA_OPERATION_TYPES.TokenTransfer;
|
|
23
25
|
}
|
|
26
|
+
else if (isERC20TokenTransaction) {
|
|
27
|
+
operationType = HEDERA_OPERATION_TYPES.ContractCall;
|
|
28
|
+
}
|
|
24
29
|
else {
|
|
25
30
|
operationType = HEDERA_OPERATION_TYPES.CryptoTransfer;
|
|
26
31
|
}
|
|
32
|
+
// build different estimation params for ERC20 ContractCall transactions
|
|
33
|
+
if (operationType === HEDERA_OPERATION_TYPES.ContractCall) {
|
|
34
|
+
estimateFeesParams = {
|
|
35
|
+
operationType,
|
|
36
|
+
txIntent: {
|
|
37
|
+
intentType: "transaction",
|
|
38
|
+
type: HEDERA_TRANSACTION_MODES.Send,
|
|
39
|
+
asset: {
|
|
40
|
+
type: "erc20",
|
|
41
|
+
assetReference: subAccount?.token.contractAddress ?? "",
|
|
42
|
+
assetOwner: account.freshAddress,
|
|
43
|
+
},
|
|
44
|
+
amount: BigInt(transaction.amount.toString()),
|
|
45
|
+
sender: account.freshAddress,
|
|
46
|
+
recipient: transaction.recipient,
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
estimateFeesParams = {
|
|
52
|
+
currency: account.currency,
|
|
53
|
+
operationType,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
27
56
|
// explicitly calculate transaction amount to account for `useAllAmount` flag (send max flow)
|
|
28
57
|
// i.e. if `useAllAmount` has been toggled to true, this is where it will update the transaction to reflect that action
|
|
29
|
-
const [
|
|
58
|
+
const [calculatedAmount, estimatedFees] = await Promise.all([
|
|
30
59
|
calculateAmount({ account, transaction }),
|
|
31
|
-
estimateFees(
|
|
60
|
+
estimateFees(estimateFeesParams),
|
|
32
61
|
]);
|
|
62
|
+
transaction.amount = calculatedAmount.amount;
|
|
33
63
|
// `maxFee` must be explicitly set to avoid the @hashgraph/sdk default fallback
|
|
34
64
|
// this ensures device app validation passes (e.g. during swap flow)
|
|
35
65
|
// it's applied via `tx.setMaxTransactionFee` when building the transaction
|
|
36
|
-
transaction.maxFee = estimatedFees;
|
|
37
|
-
|
|
66
|
+
transaction.maxFee = estimatedFees.tinybars;
|
|
67
|
+
// ERC20 transactions should have gas limit set (tinybars fee is calculated based on gas)
|
|
68
|
+
if (isERC20TokenTransaction && estimatedFees.gas) {
|
|
69
|
+
transaction.gasLimit = estimatedFees.gas;
|
|
70
|
+
}
|
|
38
71
|
return transaction;
|
|
39
72
|
};
|
|
40
73
|
//# sourceMappingURL=prepareTransaction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepareTransaction.js","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"prepareTransaction.js","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAE9E,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAqD,KAAK,EACvF,OAAO,EACP,WAAW,EACW,EAAE;IACxB,IAAI,kBAAsC,CAAC;IAC3C,IAAI,aAAqC,CAAC;IAC1C,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC;IAChF,MAAM,qBAAqB,GACzB,WAAW,CAAC,IAAI,KAAK,wBAAwB,CAAC,IAAI,IAAI,UAAU,EAAE,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC;IAC9F,MAAM,uBAAuB,GAC3B,WAAW,CAAC,IAAI,KAAK,wBAAwB,CAAC,IAAI,IAAI,UAAU,EAAE,KAAK,CAAC,SAAS,KAAK,OAAO,CAAC;IAEhG,IAAI,2BAA2B,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7C,aAAa,GAAG,sBAAsB,CAAC,cAAc,CAAC;IACxD,CAAC;SAAM,IAAI,qBAAqB,EAAE,CAAC;QACjC,aAAa,GAAG,sBAAsB,CAAC,aAAa,CAAC;IACvD,CAAC;SAAM,IAAI,uBAAuB,EAAE,CAAC;QACnC,aAAa,GAAG,sBAAsB,CAAC,YAAY,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,aAAa,GAAG,sBAAsB,CAAC,cAAc,CAAC;IACxD,CAAC;IAED,wEAAwE;IACxE,IAAI,aAAa,KAAK,sBAAsB,CAAC,YAAY,EAAE,CAAC;QAC1D,kBAAkB,GAAG;YACnB,aAAa;YACb,QAAQ,EAAE;gBACR,UAAU,EAAE,aAAa;gBACzB,IAAI,EAAE,wBAAwB,CAAC,IAAI;gBACnC,KAAK,EAAE;oBACL,IAAI,EAAE,OAAO;oBACb,cAAc,EAAE,UAAU,EAAE,KAAK,CAAC,eAAe,IAAI,EAAE;oBACvD,UAAU,EAAE,OAAO,CAAC,YAAY;iBACjC;gBACD,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAC7C,MAAM,EAAE,OAAO,CAAC,YAAY;gBAC5B,SAAS,EAAE,WAAW,CAAC,SAAS;aACjC;SACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,kBAAkB,GAAG;YACnB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,aAAa;SACd,CAAC;IACJ,CAAC;IAED,6FAA6F;IAC7F,uHAAuH;IACvH,MAAM,CAAC,gBAAgB,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC1D,eAAe,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QACzC,YAAY,CAAC,kBAAkB,CAAC;KACjC,CAAC,CAAC;IAEH,WAAW,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAE7C,+EAA+E;IAC/E,oEAAoE;IACpE,2EAA2E;IAC3E,WAAW,CAAC,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC;IAE5C,yFAAyF;IACzF,IAAI,uBAAuB,IAAI,aAAa,CAAC,GAAG,EAAE,CAAC;QACjD,WAAW,CAAC,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC;IAC3C,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signOperation.d.ts","sourceRoot":"","sources":["../../src/bridge/signOperation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAYhE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"signOperation.d.ts","sourceRoot":"","sources":["../../src/bridge/signOperation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAYhE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAgB,MAAM,UAAU,CAAC;AAExE,eAAO,MAAM,kBAAkB,kBAEZ,cAAc,YAAY,CAAC,KACzC,cAAc,WAAW,EAAE,OAAO,CAAC,CAAC,eAAe,CA4GlD,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Observable } from "rxjs";
|
|
2
|
-
import { findSubAccountById
|
|
2
|
+
import { findSubAccountById } from "@ledgerhq/coin-framework/account/helpers";
|
|
3
3
|
import { buildOptimisticOperation } from "./buildOptimisticOperation";
|
|
4
|
-
import { HEDERA_TRANSACTION_MODES } from "../constants";
|
|
4
|
+
import { DEFAULT_GAS_LIMIT, HEDERA_TRANSACTION_MODES } from "../constants";
|
|
5
5
|
import { combine } from "../logic/combine";
|
|
6
6
|
import { craftTransaction } from "../logic/craftTransaction";
|
|
7
7
|
import { serializeSignature, serializeTransaction, getHederaTransactionBodyBytes, isTokenAssociateTransaction, } from "../logic/utils";
|
|
@@ -13,10 +13,14 @@ export const buildSignOperation = (signerContext) => ({ account, transaction, de
|
|
|
13
13
|
});
|
|
14
14
|
let type;
|
|
15
15
|
let asset;
|
|
16
|
+
let data;
|
|
16
17
|
const accountAddress = account.freshAddress;
|
|
17
18
|
const accountPublicKey = account.seedIdentifier;
|
|
18
19
|
const subAccount = findSubAccountById(account, transaction.subAccountId || "");
|
|
19
|
-
const
|
|
20
|
+
const isHTSTokenTransaction = transaction.mode === HEDERA_TRANSACTION_MODES.Send &&
|
|
21
|
+
subAccount?.token.tokenType === "hts";
|
|
22
|
+
const isERC20TokenTransaction = transaction.mode === HEDERA_TRANSACTION_MODES.Send &&
|
|
23
|
+
subAccount?.token.tokenType === "erc20";
|
|
20
24
|
if (isTokenAssociateTransaction(transaction)) {
|
|
21
25
|
type = HEDERA_TRANSACTION_MODES.TokenAssociate;
|
|
22
26
|
asset = {
|
|
@@ -24,7 +28,7 @@ export const buildSignOperation = (signerContext) => ({ account, transaction, de
|
|
|
24
28
|
assetReference: transaction.properties.token.contractAddress,
|
|
25
29
|
};
|
|
26
30
|
}
|
|
27
|
-
else if (
|
|
31
|
+
else if (isHTSTokenTransaction) {
|
|
28
32
|
type = HEDERA_TRANSACTION_MODES.Send;
|
|
29
33
|
asset = {
|
|
30
34
|
type: subAccount.token.tokenType,
|
|
@@ -32,6 +36,18 @@ export const buildSignOperation = (signerContext) => ({ account, transaction, de
|
|
|
32
36
|
assetOwner: accountAddress,
|
|
33
37
|
};
|
|
34
38
|
}
|
|
39
|
+
else if (isERC20TokenTransaction) {
|
|
40
|
+
type = HEDERA_TRANSACTION_MODES.Send;
|
|
41
|
+
asset = {
|
|
42
|
+
type: subAccount.token.tokenType,
|
|
43
|
+
assetReference: subAccount.token.contractAddress,
|
|
44
|
+
assetOwner: accountAddress,
|
|
45
|
+
};
|
|
46
|
+
data = {
|
|
47
|
+
type: "erc20",
|
|
48
|
+
gasLimit: BigInt((transaction.gasLimit ?? DEFAULT_GAS_LIMIT).toString()),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
35
51
|
else {
|
|
36
52
|
type = HEDERA_TRANSACTION_MODES.Send;
|
|
37
53
|
asset = {
|
|
@@ -54,6 +70,7 @@ export const buildSignOperation = (signerContext) => ({ account, transaction, de
|
|
|
54
70
|
type: "string",
|
|
55
71
|
value: transaction.memo ?? "",
|
|
56
72
|
},
|
|
73
|
+
...(data && { data }),
|
|
57
74
|
}, customFees);
|
|
58
75
|
const txBodyBytes = getHederaTransactionBodyBytes(tx);
|
|
59
76
|
const signatureBytes = await signer.signTransaction(txBodyBytes);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signOperation.js","sourceRoot":"","sources":["../../src/bridge/signOperation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAIlC,OAAO,EAAE,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"signOperation.js","sourceRoot":"","sources":["../../src/bridge/signOperation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { GetAccountShape, IterateResultBuilder } from "@ledgerhq/coin-framework/bridge/jsHelpers";
|
|
2
|
+
import type { Account } from "@ledgerhq/types-live";
|
|
2
3
|
import type { HederaAccount } from "../types";
|
|
3
4
|
export declare const getAccountShape: GetAccountShape<HederaAccount>;
|
|
4
5
|
export declare const buildIterateResult: IterateResultBuilder;
|
|
6
|
+
export declare const postSync: (_initial: Account, synced: Account) => Account;
|
|
5
7
|
//# sourceMappingURL=synchronisation.d.ts.map
|