@ledgerhq/coin-hedera 1.13.0-nightly.2 → 1.13.0-nightly.4
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/.unimportedrc.json +1 -1
- package/CHANGELOG.md +26 -0
- package/jest.config.js +1 -1
- package/jest.integ.config.js +8 -0
- package/lib/api/index.d.ts +4 -0
- package/lib/api/index.d.ts.map +1 -0
- package/lib/api/index.js +119 -0
- package/lib/api/index.js.map +1 -0
- package/lib/bridge/broadcast.d.ts +1 -1
- package/lib/bridge/broadcast.d.ts.map +1 -1
- package/lib/bridge/broadcast.js +6 -9
- package/lib/bridge/broadcast.js.map +1 -1
- package/lib/bridge/buildOptimisticOperation.d.ts.map +1 -1
- package/lib/bridge/buildOptimisticOperation.js +14 -11
- package/lib/bridge/buildOptimisticOperation.js.map +1 -1
- package/lib/bridge/createTransaction.d.ts +1 -1
- package/lib/bridge/createTransaction.d.ts.map +1 -1
- package/lib/bridge/createTransaction.js +2 -0
- package/lib/bridge/createTransaction.js.map +1 -1
- package/lib/bridge/estimateMaxSpendable.d.ts.map +1 -1
- package/lib/bridge/estimateMaxSpendable.js +2 -2
- package/lib/bridge/estimateMaxSpendable.js.map +1 -1
- package/lib/bridge/getTransactionStatus.d.ts.map +1 -1
- package/lib/bridge/getTransactionStatus.js +11 -10
- package/lib/bridge/getTransactionStatus.js.map +1 -1
- package/lib/bridge/prepareTransaction.d.ts.map +1 -1
- package/lib/bridge/prepareTransaction.js +6 -5
- package/lib/bridge/prepareTransaction.js.map +1 -1
- package/lib/bridge/signOperation.d.ts +1 -1
- package/lib/bridge/signOperation.d.ts.map +1 -1
- package/lib/bridge/signOperation.js +53 -14
- package/lib/bridge/signOperation.js.map +1 -1
- package/lib/bridge/synchronisation.d.ts.map +1 -1
- package/lib/bridge/synchronisation.js +24 -11
- package/lib/bridge/synchronisation.js.map +1 -1
- package/lib/bridge/utils.d.ts +3 -13
- package/lib/bridge/utils.d.ts.map +1 -1
- package/lib/bridge/utils.js +10 -119
- package/lib/bridge/utils.js.map +1 -1
- package/lib/config.d.ts +8 -0
- package/lib/config.d.ts.map +1 -0
- package/lib/config.js +9 -0
- package/lib/config.js.map +1 -0
- package/lib/constants.d.ts +11 -8
- package/lib/constants.d.ts.map +1 -1
- package/lib/constants.js +17 -13
- 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 +3 -3
- package/lib/deviceTransactionConfig.js.map +1 -1
- package/lib/logic/broadcast.d.ts +3 -0
- package/lib/logic/broadcast.d.ts.map +1 -0
- package/lib/logic/broadcast.js +11 -0
- package/lib/logic/broadcast.js.map +1 -0
- package/lib/logic/combine.d.ts +2 -0
- package/lib/logic/combine.d.ts.map +1 -0
- package/lib/logic/combine.js +19 -0
- package/lib/logic/combine.js.map +1 -0
- package/lib/logic/craftTransaction.d.ts +8 -0
- package/lib/logic/craftTransaction.d.ts.map +1 -0
- package/lib/logic/craftTransaction.js +107 -0
- package/lib/logic/craftTransaction.js.map +1 -0
- package/lib/logic/estimateFees.d.ts +5 -0
- package/lib/logic/estimateFees.d.ts.map +1 -0
- package/lib/logic/estimateFees.js +25 -0
- package/lib/logic/estimateFees.js.map +1 -0
- package/lib/logic/getAssetFromToken.d.ts +4 -0
- package/lib/logic/getAssetFromToken.d.ts.map +1 -0
- package/lib/logic/getAssetFromToken.js +14 -0
- package/lib/logic/getAssetFromToken.js.map +1 -0
- package/lib/logic/getBalance.d.ts +4 -0
- package/lib/logic/getBalance.d.ts.map +1 -0
- package/lib/logic/getBalance.js +36 -0
- package/lib/logic/getBalance.js.map +1 -0
- package/lib/logic/getTokenFromAsset.d.ts +4 -0
- package/lib/logic/getTokenFromAsset.d.ts.map +1 -0
- package/lib/logic/getTokenFromAsset.js +13 -0
- package/lib/logic/getTokenFromAsset.js.map +1 -0
- package/lib/logic/index.d.ts +10 -0
- package/lib/logic/index.d.ts.map +1 -0
- package/lib/logic/index.js +22 -0
- package/lib/logic/index.js.map +1 -0
- package/lib/logic/lastBlock.d.ts +12 -0
- package/lib/logic/lastBlock.d.ts.map +1 -0
- package/lib/logic/lastBlock.js +25 -0
- package/lib/logic/lastBlock.js.map +1 -0
- package/lib/logic/listOperations.d.ts +19 -0
- package/lib/logic/listOperations.d.ts.map +1 -0
- package/lib/logic/listOperations.js +179 -0
- package/lib/logic/listOperations.js.map +1 -0
- package/lib/logic/utils.d.ts +55 -0
- package/lib/logic/utils.d.ts.map +1 -0
- package/lib/logic/utils.js +197 -0
- package/lib/logic/utils.js.map +1 -0
- package/lib/network/api.d.ts +24 -0
- package/lib/network/api.d.ts.map +1 -0
- package/lib/network/api.js +119 -0
- package/lib/network/api.js.map +1 -0
- package/lib/network/rpc.d.ts +12 -0
- package/lib/network/rpc.d.ts.map +1 -0
- package/lib/network/rpc.js +22 -0
- package/lib/network/rpc.js.map +1 -0
- package/lib/{api → network}/utils.d.ts +1 -5
- package/lib/network/utils.d.ts.map +1 -0
- package/lib/network/utils.js +52 -0
- package/lib/network/utils.js.map +1 -0
- package/lib/test/bridgeDatasetTest.d.ts.map +1 -1
- package/lib/test/bridgeDatasetTest.js +5 -1
- package/lib/test/bridgeDatasetTest.js.map +1 -1
- package/lib/test/fixtures/account.fixture.d.ts +17 -0
- package/lib/test/fixtures/account.fixture.d.ts.map +1 -1
- package/lib/test/fixtures/account.fixture.js +18 -1
- package/lib/test/fixtures/account.fixture.js.map +1 -1
- package/lib/test/fixtures/currency.fixture.d.ts.map +1 -1
- package/lib/test/fixtures/currency.fixture.js +1 -1
- package/lib/test/fixtures/currency.fixture.js.map +1 -1
- package/lib/test/fixtures/mirror.fixture.d.ts +1 -1
- package/lib/test/fixtures/mirror.fixture.d.ts.map +1 -1
- package/lib/test/fixtures/network.fixture.d.ts +3 -0
- package/lib/test/fixtures/network.fixture.d.ts.map +1 -0
- package/lib/test/fixtures/network.fixture.js +9 -0
- package/lib/test/fixtures/network.fixture.js.map +1 -0
- package/lib/test/fixtures/transaction.fixture.d.ts.map +1 -1
- package/lib/test/fixtures/transaction.fixture.js +3 -0
- package/lib/test/fixtures/transaction.fixture.js.map +1 -1
- package/lib/transaction.d.ts +1 -1
- package/lib/transaction.d.ts.map +1 -1
- package/lib/transaction.js +35 -6
- package/lib/transaction.js.map +1 -1
- package/lib/types/alpaca.d.ts +3 -0
- package/lib/types/alpaca.d.ts.map +1 -0
- package/lib/{api/types.js → types/alpaca.js} +1 -1
- package/lib/types/alpaca.js.map +1 -0
- package/lib/types/bridge.d.ts +28 -9
- 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/{api/types.d.ts → types/mirror.d.ts} +21 -2
- package/lib/types/mirror.d.ts.map +1 -0
- package/lib/types/mirror.js +3 -0
- package/lib/types/mirror.js.map +1 -0
- package/lib-es/api/index.d.ts +4 -0
- package/lib-es/api/index.d.ts.map +1 -0
- package/lib-es/api/index.js +112 -0
- package/lib-es/api/index.js.map +1 -0
- package/lib-es/bridge/broadcast.d.ts +1 -1
- package/lib-es/bridge/broadcast.d.ts.map +1 -1
- package/lib-es/bridge/broadcast.js +4 -7
- 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 +12 -9
- package/lib-es/bridge/buildOptimisticOperation.js.map +1 -1
- package/lib-es/bridge/createTransaction.d.ts +1 -1
- package/lib-es/bridge/createTransaction.d.ts.map +1 -1
- package/lib-es/bridge/createTransaction.js +2 -0
- package/lib-es/bridge/createTransaction.js.map +1 -1
- package/lib-es/bridge/estimateMaxSpendable.d.ts.map +1 -1
- package/lib-es/bridge/estimateMaxSpendable.js +2 -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 +7 -6
- package/lib-es/bridge/getTransactionStatus.js.map +1 -1
- package/lib-es/bridge/prepareTransaction.d.ts.map +1 -1
- package/lib-es/bridge/prepareTransaction.js +4 -3
- package/lib-es/bridge/prepareTransaction.js.map +1 -1
- package/lib-es/bridge/signOperation.d.ts +1 -1
- package/lib-es/bridge/signOperation.d.ts.map +1 -1
- package/lib-es/bridge/signOperation.js +53 -14
- package/lib-es/bridge/signOperation.js.map +1 -1
- package/lib-es/bridge/synchronisation.d.ts.map +1 -1
- package/lib-es/bridge/synchronisation.js +24 -11
- package/lib-es/bridge/synchronisation.js.map +1 -1
- package/lib-es/bridge/utils.d.ts +3 -13
- package/lib-es/bridge/utils.d.ts.map +1 -1
- package/lib-es/bridge/utils.js +7 -113
- package/lib-es/bridge/utils.js.map +1 -1
- package/lib-es/config.d.ts +8 -0
- package/lib-es/config.d.ts.map +1 -0
- package/lib-es/config.js +4 -0
- package/lib-es/config.js.map +1 -0
- package/lib-es/constants.d.ts +11 -8
- package/lib-es/constants.d.ts.map +1 -1
- package/lib-es/constants.js +13 -9
- 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 +1 -1
- package/lib-es/deviceTransactionConfig.js.map +1 -1
- package/lib-es/logic/broadcast.d.ts +3 -0
- package/lib-es/logic/broadcast.d.ts.map +1 -0
- package/lib-es/logic/broadcast.js +7 -0
- package/lib-es/logic/broadcast.js.map +1 -0
- package/lib-es/logic/combine.d.ts +2 -0
- package/lib-es/logic/combine.d.ts.map +1 -0
- package/lib-es/logic/combine.js +12 -0
- package/lib-es/logic/combine.js.map +1 -0
- package/lib-es/logic/craftTransaction.d.ts +8 -0
- package/lib-es/logic/craftTransaction.d.ts.map +1 -0
- package/lib-es/logic/craftTransaction.js +100 -0
- package/lib-es/logic/craftTransaction.js.map +1 -0
- package/lib-es/logic/estimateFees.d.ts +5 -0
- package/lib-es/logic/estimateFees.d.ts.map +1 -0
- package/lib-es/logic/estimateFees.js +18 -0
- package/lib-es/logic/estimateFees.js.map +1 -0
- package/lib-es/logic/getAssetFromToken.d.ts +4 -0
- package/lib-es/logic/getAssetFromToken.d.ts.map +1 -0
- package/lib-es/logic/getAssetFromToken.js +10 -0
- package/lib-es/logic/getAssetFromToken.js.map +1 -0
- package/lib-es/logic/getBalance.d.ts +4 -0
- package/lib-es/logic/getBalance.d.ts.map +1 -0
- package/lib-es/logic/getBalance.js +32 -0
- package/lib-es/logic/getBalance.js.map +1 -0
- package/lib-es/logic/getTokenFromAsset.d.ts +4 -0
- package/lib-es/logic/getTokenFromAsset.d.ts.map +1 -0
- package/lib-es/logic/getTokenFromAsset.js +9 -0
- package/lib-es/logic/getTokenFromAsset.js.map +1 -0
- package/lib-es/logic/index.d.ts +10 -0
- package/lib-es/logic/index.d.ts.map +1 -0
- package/lib-es/logic/index.js +10 -0
- package/lib-es/logic/index.js.map +1 -0
- package/lib-es/logic/lastBlock.d.ts +12 -0
- package/lib-es/logic/lastBlock.d.ts.map +1 -0
- package/lib-es/logic/lastBlock.js +21 -0
- package/lib-es/logic/lastBlock.js.map +1 -0
- package/lib-es/logic/listOperations.d.ts +19 -0
- package/lib-es/logic/listOperations.d.ts.map +1 -0
- package/lib-es/logic/listOperations.js +172 -0
- package/lib-es/logic/listOperations.js.map +1 -0
- package/lib-es/logic/utils.d.ts +55 -0
- package/lib-es/logic/utils.d.ts.map +1 -0
- package/lib-es/logic/utils.js +174 -0
- package/lib-es/logic/utils.js.map +1 -0
- package/lib-es/network/api.d.ts +24 -0
- package/lib-es/network/api.d.ts.map +1 -0
- package/lib-es/network/api.js +113 -0
- package/lib-es/network/api.js.map +1 -0
- package/lib-es/network/rpc.d.ts +12 -0
- package/lib-es/network/rpc.d.ts.map +1 -0
- package/lib-es/network/rpc.js +19 -0
- package/lib-es/network/rpc.js.map +1 -0
- package/lib-es/{api → network}/utils.d.ts +1 -5
- package/lib-es/network/utils.d.ts.map +1 -0
- package/lib-es/network/utils.js +45 -0
- package/lib-es/network/utils.js.map +1 -0
- package/lib-es/test/bridgeDatasetTest.d.ts.map +1 -1
- package/lib-es/test/bridgeDatasetTest.js +5 -1
- package/lib-es/test/bridgeDatasetTest.js.map +1 -1
- package/lib-es/test/fixtures/account.fixture.d.ts +17 -0
- package/lib-es/test/fixtures/account.fixture.d.ts.map +1 -1
- package/lib-es/test/fixtures/account.fixture.js +17 -0
- package/lib-es/test/fixtures/account.fixture.js.map +1 -1
- package/lib-es/test/fixtures/currency.fixture.d.ts.map +1 -1
- package/lib-es/test/fixtures/currency.fixture.js +1 -1
- package/lib-es/test/fixtures/currency.fixture.js.map +1 -1
- package/lib-es/test/fixtures/mirror.fixture.d.ts +1 -1
- package/lib-es/test/fixtures/mirror.fixture.d.ts.map +1 -1
- package/lib-es/test/fixtures/network.fixture.d.ts +3 -0
- package/lib-es/test/fixtures/network.fixture.d.ts.map +1 -0
- package/lib-es/test/fixtures/network.fixture.js +5 -0
- package/lib-es/test/fixtures/network.fixture.js.map +1 -0
- package/lib-es/test/fixtures/transaction.fixture.d.ts.map +1 -1
- package/lib-es/test/fixtures/transaction.fixture.js +3 -0
- package/lib-es/test/fixtures/transaction.fixture.js.map +1 -1
- package/lib-es/transaction.d.ts +1 -1
- package/lib-es/transaction.d.ts.map +1 -1
- package/lib-es/transaction.js +35 -6
- package/lib-es/transaction.js.map +1 -1
- package/lib-es/types/alpaca.d.ts +3 -0
- package/lib-es/types/alpaca.d.ts.map +1 -0
- package/lib-es/types/alpaca.js +2 -0
- package/lib-es/types/alpaca.js.map +1 -0
- package/lib-es/types/bridge.d.ts +28 -9
- 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/{api/types.d.ts → types/mirror.d.ts} +21 -2
- package/lib-es/types/mirror.d.ts.map +1 -0
- package/lib-es/types/mirror.js +2 -0
- package/lib-es/types/mirror.js.map +1 -0
- package/package.json +8 -7
- package/src/api/index.integ.test.ts +401 -0
- package/src/api/index.test.ts +30 -0
- package/src/api/index.ts +149 -0
- package/src/bridge/broadcast.ts +5 -10
- package/src/bridge/buildOptimisticOperation.integration.test.ts +8 -8
- package/src/bridge/buildOptimisticOperation.ts +13 -10
- package/src/bridge/createTransaction.ts +3 -1
- package/src/bridge/estimateMaxSpendable.ts +6 -3
- package/src/bridge/getTransactionStatus.test.ts +11 -10
- package/src/bridge/getTransactionStatus.ts +12 -11
- package/src/bridge/js-estimateMaxSpendable.integration.test.ts +6 -3
- package/src/bridge/prepareTransaction.test.ts +9 -17
- package/src/bridge/prepareTransaction.ts +5 -4
- package/src/bridge/serialization.test.ts +6 -6
- package/src/bridge/signOperation.ts +69 -16
- package/src/bridge/synchronisation.ts +22 -14
- package/src/bridge/utils.integration.test.ts +25 -248
- package/src/bridge/utils.ts +14 -160
- package/src/config.ts +7 -0
- package/src/constants.ts +15 -9
- package/src/deviceTransactionConfig.ts +2 -2
- package/src/logic/broadcast.test.ts +58 -0
- package/src/logic/broadcast.ts +8 -0
- package/src/logic/combine.test.ts +119 -0
- package/src/logic/combine.ts +14 -0
- package/src/logic/craftTransaction.test.ts +215 -0
- package/src/logic/craftTransaction.ts +175 -0
- package/src/logic/estimateFees.test.ts +99 -0
- package/src/logic/estimateFees.ts +28 -0
- package/src/logic/getAssetFromToken.test.ts +27 -0
- package/src/logic/getAssetFromToken.ts +12 -0
- package/src/logic/getBalance.test.ts +200 -0
- package/src/logic/getBalance.ts +39 -0
- package/src/logic/getTokenFromAsset.test.ts +22 -0
- package/src/logic/getTokenFromAsset.ts +17 -0
- package/src/logic/index.ts +9 -0
- package/src/logic/lastBlock.test.ts +23 -0
- package/src/logic/lastBlock.ts +23 -0
- package/src/logic/listOperations.test.ts +388 -0
- package/src/logic/listOperations.ts +247 -0
- package/src/logic/utils.test.ts +432 -0
- package/src/logic/utils.ts +255 -0
- package/src/{api/mirror.test.ts → network/api.test.ts} +81 -35
- package/src/network/api.ts +159 -0
- package/src/network/rpc.test.ts +68 -0
- package/src/network/rpc.ts +25 -0
- package/src/network/utils.test.ts +175 -0
- package/src/network/utils.ts +58 -0
- package/src/test/bridgeDatasetTest.ts +6 -2
- package/src/test/fixtures/account.fixture.ts +18 -0
- package/src/test/fixtures/currency.fixture.ts +1 -1
- package/src/test/fixtures/mirror.fixture.ts +1 -1
- package/src/test/fixtures/network.fixture.ts +6 -0
- package/src/test/fixtures/transaction.fixture.ts +5 -2
- package/src/transaction.ts +40 -9
- package/src/types/alpaca.ts +3 -0
- package/src/types/bridge.ts +36 -10
- package/src/types/index.ts +2 -0
- package/src/{api/types.ts → types/mirror.ts} +23 -1
- package/lib/api/mirror.d.ts +0 -6
- package/lib/api/mirror.d.ts.map +0 -1
- package/lib/api/mirror.js +0 -84
- package/lib/api/mirror.js.map +0 -1
- package/lib/api/network.d.ts +0 -11
- package/lib/api/network.d.ts.map +0 -1
- package/lib/api/network.js +0 -80
- package/lib/api/network.js.map +0 -1
- package/lib/api/types.d.ts.map +0 -1
- package/lib/api/types.js.map +0 -1
- package/lib/api/utils.d.ts.map +0 -1
- package/lib/api/utils.js +0 -132
- package/lib/api/utils.js.map +0 -1
- package/lib/logic.d.ts +0 -11
- package/lib/logic.d.ts.map +0 -1
- package/lib/logic.js +0 -37
- package/lib/logic.js.map +0 -1
- package/lib-es/api/mirror.d.ts +0 -6
- package/lib-es/api/mirror.d.ts.map +0 -1
- package/lib-es/api/mirror.js +0 -74
- package/lib-es/api/mirror.js.map +0 -1
- package/lib-es/api/network.d.ts +0 -11
- package/lib-es/api/network.d.ts.map +0 -1
- package/lib-es/api/network.js +0 -71
- package/lib-es/api/network.js.map +0 -1
- package/lib-es/api/types.d.ts.map +0 -1
- package/lib-es/api/types.js +0 -2
- package/lib-es/api/types.js.map +0 -1
- package/lib-es/api/utils.d.ts.map +0 -1
- package/lib-es/api/utils.js +0 -124
- package/lib-es/api/utils.js.map +0 -1
- package/lib-es/logic.d.ts +0 -11
- package/lib-es/logic.d.ts.map +0 -1
- package/lib-es/logic.js +0 -29
- package/lib-es/logic.js.map +0 -1
- package/src/api/mirror.ts +0 -91
- package/src/api/network.test.ts +0 -49
- package/src/api/network.ts +0 -125
- package/src/api/utils.ts +0 -150
- package/src/logic.test.ts +0 -152
- package/src/logic.ts +0 -66
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.listOperations = void 0;
|
|
7
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
8
|
+
const tokens_1 = require("@ledgerhq/cryptoassets/tokens");
|
|
9
|
+
const accountId_1 = require("@ledgerhq/coin-framework/account/accountId");
|
|
10
|
+
const operation_1 = require("@ledgerhq/coin-framework/operation");
|
|
11
|
+
const api_1 = require("../network/api");
|
|
12
|
+
const utils_1 = require("../network/utils");
|
|
13
|
+
const utils_2 = require("./utils");
|
|
14
|
+
function getCommonOperationData(rawTx, useEncodedHash, useSyntheticBlocks) {
|
|
15
|
+
const timestamp = new Date(Number.parseInt(rawTx.consensus_timestamp.split(".")[0], 10) * 1000);
|
|
16
|
+
const hash = useEncodedHash
|
|
17
|
+
? (0, utils_2.base64ToUrlSafeBase64)(rawTx.transaction_hash)
|
|
18
|
+
: rawTx.transaction_hash;
|
|
19
|
+
const fee = new bignumber_js_1.default(rawTx.charged_tx_fee);
|
|
20
|
+
const hasFailed = rawTx.result !== "SUCCESS";
|
|
21
|
+
const syntheticBlock = (0, utils_2.getSyntheticBlock)(rawTx.consensus_timestamp);
|
|
22
|
+
const memo = (0, utils_2.getMemoFromBase64)(rawTx.memo_base64);
|
|
23
|
+
const extra = {
|
|
24
|
+
pagingToken: rawTx.consensus_timestamp,
|
|
25
|
+
consensusTimestamp: rawTx.consensus_timestamp,
|
|
26
|
+
...(memo && { memo }),
|
|
27
|
+
};
|
|
28
|
+
return {
|
|
29
|
+
timestamp,
|
|
30
|
+
hash,
|
|
31
|
+
fee,
|
|
32
|
+
hasFailed,
|
|
33
|
+
blockHeight: useSyntheticBlocks ? syntheticBlock.blockHeight : 10,
|
|
34
|
+
blockHash: useSyntheticBlocks ? syntheticBlock.blockHash : null,
|
|
35
|
+
extra,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function processTokenTransfers({ rawTx, address, currency, ledgerAccountId, commonData, skipFeesForTokenOperations, }) {
|
|
39
|
+
const tokenTransfers = rawTx.token_transfers ?? [];
|
|
40
|
+
if (tokenTransfers.length === 0)
|
|
41
|
+
return null;
|
|
42
|
+
const tokenId = tokenTransfers[0].token_id;
|
|
43
|
+
const token = (0, tokens_1.findTokenByAddressInCurrency)(tokenId, currency.id);
|
|
44
|
+
if (!token)
|
|
45
|
+
return null;
|
|
46
|
+
const encodedTokenId = (0, accountId_1.encodeTokenAccountId)(ledgerAccountId, token);
|
|
47
|
+
const { type, value, senders, recipients } = (0, utils_1.parseTransfers)(tokenTransfers, address);
|
|
48
|
+
const { hash, fee, timestamp, blockHeight, blockHash, hasFailed } = commonData;
|
|
49
|
+
const extra = { ...commonData.extra };
|
|
50
|
+
let coinOperation;
|
|
51
|
+
// Add main FEES coin operation for send token transfer
|
|
52
|
+
if (type === "OUT" && !skipFeesForTokenOperations) {
|
|
53
|
+
coinOperation = {
|
|
54
|
+
id: (0, operation_1.encodeOperationId)(ledgerAccountId, hash, "FEES"),
|
|
55
|
+
accountId: ledgerAccountId,
|
|
56
|
+
type: "FEES",
|
|
57
|
+
value: fee,
|
|
58
|
+
recipients,
|
|
59
|
+
senders,
|
|
60
|
+
hash,
|
|
61
|
+
fee,
|
|
62
|
+
date: timestamp,
|
|
63
|
+
blockHeight,
|
|
64
|
+
blockHash,
|
|
65
|
+
hasFailed,
|
|
66
|
+
extra,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
const tokenOperation = {
|
|
70
|
+
id: (0, operation_1.encodeOperationId)(encodedTokenId, hash, type),
|
|
71
|
+
accountId: encodedTokenId,
|
|
72
|
+
contract: token.contractAddress,
|
|
73
|
+
standard: "hts",
|
|
74
|
+
type,
|
|
75
|
+
value,
|
|
76
|
+
recipients,
|
|
77
|
+
senders,
|
|
78
|
+
hash,
|
|
79
|
+
fee,
|
|
80
|
+
date: timestamp,
|
|
81
|
+
blockHeight,
|
|
82
|
+
blockHash,
|
|
83
|
+
hasFailed,
|
|
84
|
+
extra,
|
|
85
|
+
};
|
|
86
|
+
return {
|
|
87
|
+
coinOperation,
|
|
88
|
+
tokenOperation,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function processTransfers({ rawTx, address, ledgerAccountId, commonData, mirrorTokens, }) {
|
|
92
|
+
const transfers = rawTx.transfers ?? [];
|
|
93
|
+
if (transfers.length === 0)
|
|
94
|
+
return null;
|
|
95
|
+
const { type, value, senders, recipients } = (0, utils_1.parseTransfers)(transfers, address);
|
|
96
|
+
const { hash, fee, timestamp, blockHeight, blockHash, hasFailed } = commonData;
|
|
97
|
+
const extra = { ...commonData.extra };
|
|
98
|
+
let operationType = type;
|
|
99
|
+
// try to enrich ASSOCIATE_TOKEN operation with extra.associatedTokenId
|
|
100
|
+
// this value is used by custom OperationDetails components in Hedera family
|
|
101
|
+
// accounts or contracts must first associate with an HTS token before they can receive or send that token; without association, token transfers fail
|
|
102
|
+
if (rawTx.name === "TOKENASSOCIATE") {
|
|
103
|
+
operationType = "ASSOCIATE_TOKEN";
|
|
104
|
+
const relatedMirrorToken = mirrorTokens.find(t => {
|
|
105
|
+
return t.created_timestamp === rawTx.consensus_timestamp;
|
|
106
|
+
});
|
|
107
|
+
if (relatedMirrorToken) {
|
|
108
|
+
extra.associatedTokenId = relatedMirrorToken.token_id;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return {
|
|
112
|
+
id: (0, operation_1.encodeOperationId)(ledgerAccountId, hash, operationType),
|
|
113
|
+
accountId: ledgerAccountId,
|
|
114
|
+
type: operationType,
|
|
115
|
+
value,
|
|
116
|
+
recipients,
|
|
117
|
+
senders,
|
|
118
|
+
hash,
|
|
119
|
+
fee,
|
|
120
|
+
date: timestamp,
|
|
121
|
+
blockHeight,
|
|
122
|
+
blockHash,
|
|
123
|
+
hasFailed,
|
|
124
|
+
extra,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
async function listOperations({ currency, address, mirrorTokens, pagination, fetchAllPages, skipFeesForTokenOperations, useEncodedHash, useSyntheticBlocks, }) {
|
|
128
|
+
const coinOperations = [];
|
|
129
|
+
const tokenOperations = [];
|
|
130
|
+
const mirrorResult = await api_1.apiClient.getAccountTransactions({
|
|
131
|
+
address,
|
|
132
|
+
pagingToken: pagination.lastPagingToken ?? null,
|
|
133
|
+
order: pagination.order,
|
|
134
|
+
limit: pagination.limit,
|
|
135
|
+
fetchAllPages,
|
|
136
|
+
});
|
|
137
|
+
const ledgerAccountId = (0, accountId_1.encodeAccountId)({
|
|
138
|
+
type: "js",
|
|
139
|
+
version: "2",
|
|
140
|
+
currencyId: currency.id,
|
|
141
|
+
xpubOrAddress: address,
|
|
142
|
+
derivationMode: "hederaBip44",
|
|
143
|
+
});
|
|
144
|
+
for (const rawTx of mirrorResult.transactions) {
|
|
145
|
+
const commonData = getCommonOperationData(rawTx, useEncodedHash, useSyntheticBlocks);
|
|
146
|
+
// process token transfers
|
|
147
|
+
const tokenResult = processTokenTransfers({
|
|
148
|
+
rawTx,
|
|
149
|
+
address,
|
|
150
|
+
currency,
|
|
151
|
+
ledgerAccountId,
|
|
152
|
+
commonData,
|
|
153
|
+
skipFeesForTokenOperations,
|
|
154
|
+
});
|
|
155
|
+
if (tokenResult?.coinOperation)
|
|
156
|
+
coinOperations.push(tokenResult.coinOperation);
|
|
157
|
+
if (tokenResult?.tokenOperation)
|
|
158
|
+
tokenOperations.push(tokenResult.tokenOperation);
|
|
159
|
+
// process regular transfers only if there were no token transfers
|
|
160
|
+
if (!tokenResult) {
|
|
161
|
+
const coinOperation = processTransfers({
|
|
162
|
+
rawTx,
|
|
163
|
+
address,
|
|
164
|
+
ledgerAccountId,
|
|
165
|
+
commonData,
|
|
166
|
+
mirrorTokens,
|
|
167
|
+
});
|
|
168
|
+
if (coinOperation)
|
|
169
|
+
coinOperations.push(coinOperation);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return {
|
|
173
|
+
coinOperations,
|
|
174
|
+
tokenOperations,
|
|
175
|
+
nextCursor: mirrorResult.nextCursor,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
exports.listOperations = listOperations;
|
|
179
|
+
//# sourceMappingURL=listOperations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listOperations.js","sourceRoot":"","sources":["../../src/logic/listOperations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import BigNumber from "bignumber.js";
|
|
2
|
+
import { Transaction as HederaSDKTransaction } from "@hashgraph/sdk";
|
|
3
|
+
import { AssetInfo, TransactionIntent } from "@ledgerhq/coin-framework/api/types";
|
|
4
|
+
import type { Currency, ExplorerView, TokenCurrency } from "@ledgerhq/types-cryptoassets";
|
|
5
|
+
import type { AccountLike, Operation as LiveOperation } from "@ledgerhq/types-live";
|
|
6
|
+
import { HEDERA_OPERATION_TYPES, HEDERA_TRANSACTION_MODES } from "../constants";
|
|
7
|
+
import type { HederaOperationExtra, Transaction, TransactionStatus } from "../types";
|
|
8
|
+
export declare const serializeSignature: (signature: Uint8Array) => string;
|
|
9
|
+
export declare const deserializeSignature: (signature: string) => Buffer;
|
|
10
|
+
export declare const serializeTransaction: (tx: HederaSDKTransaction) => string;
|
|
11
|
+
export declare const deserializeTransaction: (tx: string) => HederaSDKTransaction;
|
|
12
|
+
export declare const getOperationValue: ({ asset, operation, }: {
|
|
13
|
+
asset: AssetInfo;
|
|
14
|
+
operation: LiveOperation<HederaOperationExtra>;
|
|
15
|
+
}) => bigint;
|
|
16
|
+
export declare const getHederaTransactionBodyBytes: (tx: HederaSDKTransaction) => Uint8Array;
|
|
17
|
+
export declare const mapIntentToSDKOperation: (txIntent: TransactionIntent) => HEDERA_OPERATION_TYPES;
|
|
18
|
+
export declare const getMemoFromBase64: (memoBase64: string | undefined) => string | null;
|
|
19
|
+
export declare function base64ToUrlSafeBase64(data: string): string;
|
|
20
|
+
export declare const getTransactionExplorer: (explorerView: ExplorerView | null | undefined, operation: LiveOperation) => string | undefined;
|
|
21
|
+
export declare const isTokenAssociateTransaction: (tx: Transaction) => tx is import("@ledgerhq/types-live").TransactionCommon & {
|
|
22
|
+
family: "hedera";
|
|
23
|
+
memo?: string | undefined;
|
|
24
|
+
maxFee?: BigNumber;
|
|
25
|
+
} & {
|
|
26
|
+
mode: HEDERA_TRANSACTION_MODES.TokenAssociate;
|
|
27
|
+
assetReference: string;
|
|
28
|
+
assetOwner: string;
|
|
29
|
+
properties: {
|
|
30
|
+
token: TokenCurrency;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
export declare const isAutoTokenAssociationEnabled: (account: AccountLike) => boolean;
|
|
34
|
+
export declare const isTokenAssociationRequired: (account: AccountLike, token: TokenCurrency | null | undefined) => boolean;
|
|
35
|
+
export declare const isValidExtra: (extra: unknown) => extra is HederaOperationExtra;
|
|
36
|
+
export declare const sendRecipientCanNext: (status: TransactionStatus) => boolean;
|
|
37
|
+
export declare const getCurrencyToUSDRate: import("@ledgerhq/live-network/cache").CacheRes<[currency: Currency], BigNumber | null>;
|
|
38
|
+
export declare const checkAccountTokenAssociationStatus: import("@ledgerhq/live-network/cache").CacheRes<[accountId: string, tokenId: string], boolean>;
|
|
39
|
+
export declare const safeParseAccountId: (address: string) => [Error, null] | [null, {
|
|
40
|
+
accountId: string;
|
|
41
|
+
checksum: string | null;
|
|
42
|
+
}];
|
|
43
|
+
/**
|
|
44
|
+
* Calculates a synthetic block height based on Hedera consensus timestamp.
|
|
45
|
+
*
|
|
46
|
+
* @param consensusTimestamp - Hedera consensus timestamp
|
|
47
|
+
* @param blockWindowSeconds - Duration of one synthetic block in seconds (default: 10)
|
|
48
|
+
* @returns Deterministic synthetic block (height and hash)
|
|
49
|
+
*/
|
|
50
|
+
export declare function getSyntheticBlock(consensusTimestamp: string, blockWindowSeconds?: number): {
|
|
51
|
+
blockHeight: number;
|
|
52
|
+
blockHash: string;
|
|
53
|
+
blockTime: Date;
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/logic/utils.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAGrC,OAAO,EAAa,WAAW,IAAI,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAMlF,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC1F,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EAEzB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAEV,oBAAoB,EACpB,WAAW,EACX,iBAAiB,EAElB,MAAM,UAAU,CAAC;AAIlB,eAAO,MAAM,kBAAkB,cAAe,UAAU,WAEvD,CAAC;AAEF,eAAO,MAAM,oBAAoB,cAAe,MAAM,WAErD,CAAC;AAEF,eAAO,MAAM,oBAAoB,OAAQ,oBAAoB,WAE5D,CAAC;AAEF,eAAO,MAAM,sBAAsB,OAAQ,MAAM,yBAEhD,CAAC;AAEF,eAAO,MAAM,iBAAiB;WAIrB,SAAS;eACL,cAAc,oBAAoB,CAAC;YAW/C,CAAC;AAMF,eAAO,MAAM,6BAA6B,OAAQ,oBAAoB,eAIrE,CAAC;AAEF,eAAO,MAAM,uBAAuB,aAAc,iBAAiB,2BAUlE,CAAC;AAEF,eAAO,MAAM,iBAAiB,eAAgB,MAAM,GAAG,SAAS,KAAG,MAAM,GAAG,IAQ3E,CAAC;AAGF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED,eAAO,MAAM,sBAAsB,iBACnB,YAAY,GAAG,IAAI,GAAG,SAAS,aAClC,aAAa,KACvB,MAAM,GAAG,SAOX,CAAC;AAEF,eAAO,MAAM,2BAA2B,OAAQ,WAAW;;;;;;;;;;;CAE1D,CAAC;AAEF,eAAO,MAAM,6BAA6B,YAAa,WAAW,YAIjE,CAAC;AAEF,eAAO,MAAM,0BAA0B,YAC5B,WAAW,SACb,aAAa,GAAG,IAAI,GAAG,SAAS,YAMxC,CAAC;AAEF,eAAO,MAAM,YAAY,UAAW,OAAO,kCAE1C,CAAC;AAKF,eAAO,MAAM,oBAAoB,WAAY,iBAAiB,YAI7D,CAAC;AAGF,eAAO,MAAM,oBAAoB,yFAoBhC,CAAC;AAEF,eAAO,MAAM,kCAAkC,gGAwB9C,CAAC;AAEF,eAAO,MAAM,kBAAkB,YACpB,MAAM,KACd,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CA+BvE,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,kBAAkB,EAAE,MAAM,EAC1B,kBAAkB,SAAiC;;;;EAapD"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getSyntheticBlock = exports.safeParseAccountId = exports.checkAccountTokenAssociationStatus = exports.getCurrencyToUSDRate = exports.sendRecipientCanNext = exports.isValidExtra = exports.isTokenAssociationRequired = exports.isAutoTokenAssociationEnabled = exports.isTokenAssociateTransaction = exports.getTransactionExplorer = exports.base64ToUrlSafeBase64 = exports.getMemoFromBase64 = exports.mapIntentToSDKOperation = exports.getHederaTransactionBodyBytes = exports.getOperationValue = exports.deserializeTransaction = exports.serializeTransaction = exports.deserializeSignature = exports.serializeSignature = void 0;
|
|
7
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
8
|
+
const crypto_1 = require("crypto");
|
|
9
|
+
const invariant_1 = __importDefault(require("invariant"));
|
|
10
|
+
const sdk_1 = require("@hashgraph/sdk");
|
|
11
|
+
const currencies_1 = require("@ledgerhq/cryptoassets/currencies");
|
|
12
|
+
const fiats_1 = require("@ledgerhq/cryptoassets/fiats");
|
|
13
|
+
const index_1 = __importDefault(require("@ledgerhq/live-countervalues/api/index"));
|
|
14
|
+
const errors_1 = require("@ledgerhq/errors");
|
|
15
|
+
const cache_1 = require("@ledgerhq/live-network/cache");
|
|
16
|
+
const constants_1 = require("../constants");
|
|
17
|
+
const api_1 = require("../network/api");
|
|
18
|
+
const rpc_1 = require("../network/rpc");
|
|
19
|
+
const errors_2 = require("../errors");
|
|
20
|
+
const serializeSignature = (signature) => {
|
|
21
|
+
return Buffer.from(signature).toString("base64");
|
|
22
|
+
};
|
|
23
|
+
exports.serializeSignature = serializeSignature;
|
|
24
|
+
const deserializeSignature = (signature) => {
|
|
25
|
+
return Buffer.from(signature, "base64");
|
|
26
|
+
};
|
|
27
|
+
exports.deserializeSignature = deserializeSignature;
|
|
28
|
+
const serializeTransaction = (tx) => {
|
|
29
|
+
return Buffer.from(tx.toBytes()).toString("hex");
|
|
30
|
+
};
|
|
31
|
+
exports.serializeTransaction = serializeTransaction;
|
|
32
|
+
const deserializeTransaction = (tx) => {
|
|
33
|
+
return sdk_1.Transaction.fromBytes(Buffer.from(tx, "hex"));
|
|
34
|
+
};
|
|
35
|
+
exports.deserializeTransaction = deserializeTransaction;
|
|
36
|
+
const getOperationValue = ({ asset, operation, }) => {
|
|
37
|
+
if (operation.type === "FEES") {
|
|
38
|
+
return BigInt(0);
|
|
39
|
+
}
|
|
40
|
+
if (asset.type === "native" && operation.type === "OUT") {
|
|
41
|
+
return BigInt(operation.value.toFixed(0)) - BigInt(operation.fee.toFixed(0));
|
|
42
|
+
}
|
|
43
|
+
return BigInt(operation.value.toFixed(0));
|
|
44
|
+
};
|
|
45
|
+
exports.getOperationValue = getOperationValue;
|
|
46
|
+
// this utils extracts the bodyBytes from a Hedera Transaction that are required for signing
|
|
47
|
+
// hardcoded `.get(0)` is here because we are always using single node account id
|
|
48
|
+
// this is because we want to avoid "signing" loop for users, as described here:
|
|
49
|
+
// https://github.com/LedgerHQ/ledger-live/pull/72/commits/1e942687d4301660e43e0c4b5419fcfa2733b290
|
|
50
|
+
const getHederaTransactionBodyBytes = (tx) => {
|
|
51
|
+
const bodyBytes = tx._signedTransactions.get(0)?.bodyBytes;
|
|
52
|
+
(0, invariant_1.default)(bodyBytes, "hedera: tx body bytes are missing");
|
|
53
|
+
return bodyBytes;
|
|
54
|
+
};
|
|
55
|
+
exports.getHederaTransactionBodyBytes = getHederaTransactionBodyBytes;
|
|
56
|
+
const mapIntentToSDKOperation = (txIntent) => {
|
|
57
|
+
if (txIntent.type === constants_1.HEDERA_TRANSACTION_MODES.TokenAssociate) {
|
|
58
|
+
return constants_1.HEDERA_OPERATION_TYPES.TokenAssociate;
|
|
59
|
+
}
|
|
60
|
+
if (txIntent.type === constants_1.HEDERA_TRANSACTION_MODES.Send && txIntent.asset.type !== "native") {
|
|
61
|
+
return constants_1.HEDERA_OPERATION_TYPES.TokenTransfer;
|
|
62
|
+
}
|
|
63
|
+
return constants_1.HEDERA_OPERATION_TYPES.CryptoTransfer;
|
|
64
|
+
};
|
|
65
|
+
exports.mapIntentToSDKOperation = mapIntentToSDKOperation;
|
|
66
|
+
const getMemoFromBase64 = (memoBase64) => {
|
|
67
|
+
try {
|
|
68
|
+
if (memoBase64 === undefined)
|
|
69
|
+
return null;
|
|
70
|
+
return Buffer.from(memoBase64, "base64").toString("utf-8");
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
exports.getMemoFromBase64 = getMemoFromBase64;
|
|
77
|
+
// NOTE: convert from the non-url-safe version of base64 to the url-safe version (that the explorer uses)
|
|
78
|
+
function base64ToUrlSafeBase64(data) {
|
|
79
|
+
// Might be nice to use this alternative if .nvmrc changes to >= Node v14.18.0
|
|
80
|
+
// base64url encoding option isn't supported until then
|
|
81
|
+
// Buffer.from(data, "base64").toString("base64url");
|
|
82
|
+
return data.replace(/\//g, "_").replace(/\+/g, "-");
|
|
83
|
+
}
|
|
84
|
+
exports.base64ToUrlSafeBase64 = base64ToUrlSafeBase64;
|
|
85
|
+
const getTransactionExplorer = (explorerView, operation) => {
|
|
86
|
+
const extra = (0, exports.isValidExtra)(operation.extra) ? operation.extra : null;
|
|
87
|
+
return explorerView?.tx?.replace("$hash", extra?.consensusTimestamp ?? extra?.transactionId ?? "0");
|
|
88
|
+
};
|
|
89
|
+
exports.getTransactionExplorer = getTransactionExplorer;
|
|
90
|
+
const isTokenAssociateTransaction = (tx) => {
|
|
91
|
+
return tx.mode === constants_1.HEDERA_TRANSACTION_MODES.TokenAssociate;
|
|
92
|
+
};
|
|
93
|
+
exports.isTokenAssociateTransaction = isTokenAssociateTransaction;
|
|
94
|
+
const isAutoTokenAssociationEnabled = (account) => {
|
|
95
|
+
const hederaAccount = "hederaResources" in account ? account : null;
|
|
96
|
+
return hederaAccount?.hederaResources?.isAutoTokenAssociationEnabled ?? false;
|
|
97
|
+
};
|
|
98
|
+
exports.isAutoTokenAssociationEnabled = isAutoTokenAssociationEnabled;
|
|
99
|
+
const isTokenAssociationRequired = (account, token) => {
|
|
100
|
+
const subAccounts = !!account && "subAccounts" in account ? account.subAccounts ?? [] : [];
|
|
101
|
+
const isTokenAssociated = subAccounts.some(item => item.token.id === token?.id);
|
|
102
|
+
return !!token && !isTokenAssociated && !(0, exports.isAutoTokenAssociationEnabled)(account);
|
|
103
|
+
};
|
|
104
|
+
exports.isTokenAssociationRequired = isTokenAssociationRequired;
|
|
105
|
+
const isValidExtra = (extra) => {
|
|
106
|
+
return !!extra && typeof extra === "object" && !Array.isArray(extra);
|
|
107
|
+
};
|
|
108
|
+
exports.isValidExtra = isValidExtra;
|
|
109
|
+
// disables the "Continue" button in the Send modal's Recipient step during token transfers if:
|
|
110
|
+
// - the recipient is not associated with the token
|
|
111
|
+
// - the association status can't be verified
|
|
112
|
+
const sendRecipientCanNext = (status) => {
|
|
113
|
+
const { missingAssociation, unverifiedAssociation } = status.warnings;
|
|
114
|
+
return !missingAssociation && !unverifiedAssociation;
|
|
115
|
+
};
|
|
116
|
+
exports.sendRecipientCanNext = sendRecipientCanNext;
|
|
117
|
+
// note: this is currently called frequently by getTransactionStatus; LRU cache prevents duplicated requests
|
|
118
|
+
exports.getCurrencyToUSDRate = (0, cache_1.makeLRUCache)(async (currency) => {
|
|
119
|
+
try {
|
|
120
|
+
const [rate] = await index_1.default.fetchLatest([
|
|
121
|
+
{
|
|
122
|
+
from: currency,
|
|
123
|
+
to: (0, fiats_1.getFiatCurrencyByTicker)("USD"),
|
|
124
|
+
startDate: new Date(),
|
|
125
|
+
},
|
|
126
|
+
]);
|
|
127
|
+
(0, invariant_1.default)(rate, "no value returned from cvs api");
|
|
128
|
+
return new bignumber_js_1.default(rate);
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
}, currency => currency.ticker, (0, cache_1.seconds)(3));
|
|
134
|
+
exports.checkAccountTokenAssociationStatus = (0, cache_1.makeLRUCache)(async (address, tokenId) => {
|
|
135
|
+
const [parsingError, parsingResult] = (0, exports.safeParseAccountId)(address);
|
|
136
|
+
if (parsingError) {
|
|
137
|
+
throw parsingError;
|
|
138
|
+
}
|
|
139
|
+
const addressWithoutChecksum = parsingResult.accountId;
|
|
140
|
+
const mirrorAccount = await api_1.apiClient.getAccount(addressWithoutChecksum);
|
|
141
|
+
// auto association is enabled
|
|
142
|
+
if (mirrorAccount.max_automatic_token_associations === -1) {
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
const isTokenAssociated = mirrorAccount.balance.tokens.some(token => {
|
|
146
|
+
return token.token_id === tokenId;
|
|
147
|
+
});
|
|
148
|
+
return isTokenAssociated;
|
|
149
|
+
}, (accountId, tokenId) => `${accountId}-${tokenId}`, (0, cache_1.seconds)(30));
|
|
150
|
+
const safeParseAccountId = (address) => {
|
|
151
|
+
const currency = (0, currencies_1.findCryptoCurrencyById)("hedera");
|
|
152
|
+
const currencyName = currency?.name ?? "Hedera";
|
|
153
|
+
try {
|
|
154
|
+
const accountId = sdk_1.AccountId.fromString(address);
|
|
155
|
+
// verify checksum if present
|
|
156
|
+
// FIXME: migrate to EntityIdHelper methods once SDK is upgraded:
|
|
157
|
+
// https://github.com/hiero-ledger/hiero-sdk-js/blob/main/src/EntityIdHelper.js#L197
|
|
158
|
+
// https://github.com/hiero-ledger/hiero-sdk-js/blob/main/src/EntityIdHelper.js#L446
|
|
159
|
+
const checksum = address.split("-")[1] ?? null;
|
|
160
|
+
if (checksum) {
|
|
161
|
+
const client = rpc_1.rpcClient.getInstance();
|
|
162
|
+
const recipientWithChecksum = accountId.toStringWithChecksum(client);
|
|
163
|
+
const expectedChecksum = recipientWithChecksum.split("-")[1];
|
|
164
|
+
if (checksum !== expectedChecksum) {
|
|
165
|
+
return [new errors_2.HederaRecipientInvalidChecksum(), null];
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
const result = {
|
|
169
|
+
accountId: accountId.toString(),
|
|
170
|
+
checksum,
|
|
171
|
+
};
|
|
172
|
+
return [null, result];
|
|
173
|
+
}
|
|
174
|
+
catch (err) {
|
|
175
|
+
return [new errors_1.InvalidAddress("", { currencyName }), null];
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
exports.safeParseAccountId = safeParseAccountId;
|
|
179
|
+
/**
|
|
180
|
+
* Calculates a synthetic block height based on Hedera consensus timestamp.
|
|
181
|
+
*
|
|
182
|
+
* @param consensusTimestamp - Hedera consensus timestamp
|
|
183
|
+
* @param blockWindowSeconds - Duration of one synthetic block in seconds (default: 10)
|
|
184
|
+
* @returns Deterministic synthetic block (height and hash)
|
|
185
|
+
*/
|
|
186
|
+
function getSyntheticBlock(consensusTimestamp, blockWindowSeconds = constants_1.SYNTHETIC_BLOCK_WINDOW_SECONDS) {
|
|
187
|
+
const seconds = Math.floor(Number(consensusTimestamp));
|
|
188
|
+
if (Number.isNaN(seconds) || seconds === 0) {
|
|
189
|
+
throw new Error(`Invalid consensus timestamp: ${consensusTimestamp}`);
|
|
190
|
+
}
|
|
191
|
+
const blockHeight = Math.floor(seconds / blockWindowSeconds);
|
|
192
|
+
const blockHash = (0, crypto_1.createHash)("sha256").update(blockHeight.toString()).digest("hex");
|
|
193
|
+
const blockTime = new Date(seconds * 1000);
|
|
194
|
+
return { blockHeight, blockHash, blockTime };
|
|
195
|
+
}
|
|
196
|
+
exports.getSyntheticBlock = getSyntheticBlock;
|
|
197
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/logic/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { HederaMirrorAccount, HederaMirrorToken, HederaMirrorTransaction } from "../types";
|
|
2
|
+
declare function getAccountsForPublicKey(publicKey: string): Promise<HederaMirrorAccount[]>;
|
|
3
|
+
declare function getAccount(address: string): Promise<HederaMirrorAccount>;
|
|
4
|
+
declare function getAccountTransactions({ address, pagingToken, limit, order, fetchAllPages, }: {
|
|
5
|
+
address: string;
|
|
6
|
+
pagingToken: string | null;
|
|
7
|
+
limit?: number | undefined;
|
|
8
|
+
order?: "asc" | "desc" | undefined;
|
|
9
|
+
fetchAllPages: boolean;
|
|
10
|
+
}): Promise<{
|
|
11
|
+
transactions: HederaMirrorTransaction[];
|
|
12
|
+
nextCursor: string | null;
|
|
13
|
+
}>;
|
|
14
|
+
declare function getAccountTokens(address: string): Promise<HederaMirrorToken[]>;
|
|
15
|
+
declare function getLatestTransaction(): Promise<HederaMirrorTransaction>;
|
|
16
|
+
export declare const apiClient: {
|
|
17
|
+
getAccountsForPublicKey: typeof getAccountsForPublicKey;
|
|
18
|
+
getAccount: typeof getAccount;
|
|
19
|
+
getAccountTokens: typeof getAccountTokens;
|
|
20
|
+
getAccountTransactions: typeof getAccountTransactions;
|
|
21
|
+
getLatestTransaction: typeof getLatestTransaction;
|
|
22
|
+
};
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/network/api.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAGV,mBAAmB,EAEnB,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,UAAU,CAAC;AAWlB,iBAAe,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAcxF;AAED,iBAAe,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAavE;AAED,iBAAe,sBAAsB,CAAC,EACpC,OAAO,EACP,WAAW,EACX,KAAW,EACX,KAAc,EACd,aAAa,GACd,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;IACnC,aAAa,EAAE,OAAO,CAAC;CACxB,GAAG,OAAO,CAAC;IAAE,YAAY,EAAE,uBAAuB,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAgDlF;AAED,iBAAe,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAgB7E;AAED,iBAAe,oBAAoB,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAgBtE;AAED,eAAO,MAAM,SAAS;;;;;;CAMrB,CAAC"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.apiClient = void 0;
|
|
7
|
+
const live_network_1 = __importDefault(require("@ledgerhq/live-network"));
|
|
8
|
+
const live_env_1 = require("@ledgerhq/live-env");
|
|
9
|
+
const errors_1 = require("@ledgerhq/errors");
|
|
10
|
+
const errors_2 = require("../errors");
|
|
11
|
+
const getMirrorApiUrl = () => (0, live_env_1.getEnv)("API_HEDERA_MIRROR");
|
|
12
|
+
const fetch = (path) => {
|
|
13
|
+
return (0, live_network_1.default)({
|
|
14
|
+
method: "GET",
|
|
15
|
+
url: `${getMirrorApiUrl()}${path}`,
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
async function getAccountsForPublicKey(publicKey) {
|
|
19
|
+
let res;
|
|
20
|
+
try {
|
|
21
|
+
res = await fetch(`/api/v1/accounts?account.publicKey=${publicKey}&balance=true&limit=100`);
|
|
22
|
+
}
|
|
23
|
+
catch (e) {
|
|
24
|
+
if (e instanceof errors_1.LedgerAPI4xx)
|
|
25
|
+
return [];
|
|
26
|
+
throw e;
|
|
27
|
+
}
|
|
28
|
+
const accounts = res.data.accounts;
|
|
29
|
+
return accounts;
|
|
30
|
+
}
|
|
31
|
+
async function getAccount(address) {
|
|
32
|
+
try {
|
|
33
|
+
const res = await fetch(`/api/v1/accounts/${address}`);
|
|
34
|
+
const account = res.data;
|
|
35
|
+
return account;
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
if (error instanceof errors_1.LedgerAPI4xx && "status" in error && error.status === 404) {
|
|
39
|
+
throw new errors_2.HederaAddAccountError();
|
|
40
|
+
}
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
async function getAccountTransactions({ address, pagingToken, limit = 100, order = "desc", fetchAllPages, }) {
|
|
45
|
+
const transactions = [];
|
|
46
|
+
const params = new URLSearchParams({
|
|
47
|
+
"account.id": address,
|
|
48
|
+
limit: limit.toString(),
|
|
49
|
+
order,
|
|
50
|
+
});
|
|
51
|
+
// keeps old behavior when all pages are fetched
|
|
52
|
+
const getTimestampDirection = () => {
|
|
53
|
+
if (fetchAllPages)
|
|
54
|
+
return "gt";
|
|
55
|
+
return order === "asc" ? "gt" : "lt";
|
|
56
|
+
};
|
|
57
|
+
if (pagingToken) {
|
|
58
|
+
params.append("timestamp", `${getTimestampDirection()}:${pagingToken}`);
|
|
59
|
+
}
|
|
60
|
+
let nextCursor = null;
|
|
61
|
+
let nextUrl = `/api/v1/transactions?${params.toString()}`;
|
|
62
|
+
// WARNING: don't break the loop when `transactions` array is empty but `links.next` is present
|
|
63
|
+
// the mirror node API enforces a 60-day max time range per query, even if `timestamp` param is set
|
|
64
|
+
// see: https://hedera.com/blog/changes-to-the-hedera-operated-mirror-node
|
|
65
|
+
while (nextUrl) {
|
|
66
|
+
const res = await fetch(nextUrl);
|
|
67
|
+
const newTransactions = res.data.transactions;
|
|
68
|
+
transactions.push(...newTransactions);
|
|
69
|
+
nextUrl = res.data.links.next;
|
|
70
|
+
// stop fetching if pagination mode is used and we reached the limit
|
|
71
|
+
if (!fetchAllPages && transactions.length >= limit) {
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// ensure we don't exceed the limit in pagination mode
|
|
76
|
+
if (!fetchAllPages && transactions.length > limit) {
|
|
77
|
+
transactions.splice(limit);
|
|
78
|
+
}
|
|
79
|
+
// set the next cursor only if we have more transactions to fetch
|
|
80
|
+
if (!fetchAllPages && nextUrl) {
|
|
81
|
+
const lastTx = transactions.at(-1);
|
|
82
|
+
nextCursor = lastTx?.consensus_timestamp ?? null;
|
|
83
|
+
}
|
|
84
|
+
return { transactions, nextCursor };
|
|
85
|
+
}
|
|
86
|
+
async function getAccountTokens(address) {
|
|
87
|
+
const tokens = [];
|
|
88
|
+
const params = new URLSearchParams({
|
|
89
|
+
limit: "100",
|
|
90
|
+
});
|
|
91
|
+
let nextUrl = `/api/v1/accounts/${address}/tokens?${params.toString()}`;
|
|
92
|
+
while (nextUrl) {
|
|
93
|
+
const res = await fetch(nextUrl);
|
|
94
|
+
const newTokens = res.data.tokens;
|
|
95
|
+
tokens.push(...newTokens);
|
|
96
|
+
nextUrl = res.data.links.next;
|
|
97
|
+
}
|
|
98
|
+
return tokens;
|
|
99
|
+
}
|
|
100
|
+
async function getLatestTransaction() {
|
|
101
|
+
const params = new URLSearchParams({
|
|
102
|
+
limit: "1",
|
|
103
|
+
order: "desc",
|
|
104
|
+
});
|
|
105
|
+
const res = await fetch(`/api/v1/transactions?${params.toString()}`);
|
|
106
|
+
const transaction = res.data.transactions[0];
|
|
107
|
+
if (!transaction) {
|
|
108
|
+
throw new Error("No transactions found on the Hedera network");
|
|
109
|
+
}
|
|
110
|
+
return transaction;
|
|
111
|
+
}
|
|
112
|
+
exports.apiClient = {
|
|
113
|
+
getAccountsForPublicKey,
|
|
114
|
+
getAccount,
|
|
115
|
+
getAccountTokens,
|
|
116
|
+
getAccountTransactions,
|
|
117
|
+
getLatestTransaction,
|
|
118
|
+
};
|
|
119
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/network/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Transaction as HederaTransaction, TransactionResponse } from "@hashgraph/sdk";
|
|
2
|
+
import { Client } from "@hashgraph/sdk";
|
|
3
|
+
declare function broadcastTransaction(transaction: HederaTransaction): Promise<TransactionResponse>;
|
|
4
|
+
declare function getInstance(): Client;
|
|
5
|
+
declare function _resetInstance(): void;
|
|
6
|
+
export declare const rpcClient: {
|
|
7
|
+
getInstance: typeof getInstance;
|
|
8
|
+
broadcastTransaction: typeof broadcastTransaction;
|
|
9
|
+
_resetInstance: typeof _resetInstance;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=rpc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/network/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,IAAI,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,iBAAS,oBAAoB,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAE1F;AAID,iBAAS,WAAW,IAAI,MAAM,CAI7B;AAGD,iBAAS,cAAc,SAEtB;AAED,eAAO,MAAM,SAAS;;;;CAIrB,CAAC"}
|