@ledgerhq/coin-hedera 1.12.1-nightly.1 → 1.13.0-nightly.3
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 +29 -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 +2 -2
- package/lib/deviceTransactionConfig.d.ts.map +1 -1
- package/lib/deviceTransactionConfig.js +4 -4
- 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 +2 -2
- package/lib-es/deviceTransactionConfig.d.ts.map +1 -1
- package/lib-es/deviceTransactionConfig.js +2 -2
- 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 +19 -248
- package/src/bridge/utils.ts +14 -160
- package/src/config.ts +7 -0
- package/src/constants.ts +15 -9
- package/src/deviceTransactionConfig.ts +4 -4
- 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,174 @@
|
|
|
1
|
+
import BigNumber from "bignumber.js";
|
|
2
|
+
import { createHash } from "crypto";
|
|
3
|
+
import invariant from "invariant";
|
|
4
|
+
import { AccountId, Transaction as HederaSDKTransaction } from "@hashgraph/sdk";
|
|
5
|
+
import { findCryptoCurrencyById } from "@ledgerhq/cryptoassets/currencies";
|
|
6
|
+
import { getFiatCurrencyByTicker } from "@ledgerhq/cryptoassets/fiats";
|
|
7
|
+
import cvsApi from "@ledgerhq/live-countervalues/api/index";
|
|
8
|
+
import { InvalidAddress } from "@ledgerhq/errors";
|
|
9
|
+
import { makeLRUCache, seconds } from "@ledgerhq/live-network/cache";
|
|
10
|
+
import { HEDERA_OPERATION_TYPES, HEDERA_TRANSACTION_MODES, SYNTHETIC_BLOCK_WINDOW_SECONDS, } from "../constants";
|
|
11
|
+
import { apiClient } from "../network/api";
|
|
12
|
+
import { rpcClient } from "../network/rpc";
|
|
13
|
+
import { HederaRecipientInvalidChecksum } from "../errors";
|
|
14
|
+
export const serializeSignature = (signature) => {
|
|
15
|
+
return Buffer.from(signature).toString("base64");
|
|
16
|
+
};
|
|
17
|
+
export const deserializeSignature = (signature) => {
|
|
18
|
+
return Buffer.from(signature, "base64");
|
|
19
|
+
};
|
|
20
|
+
export const serializeTransaction = (tx) => {
|
|
21
|
+
return Buffer.from(tx.toBytes()).toString("hex");
|
|
22
|
+
};
|
|
23
|
+
export const deserializeTransaction = (tx) => {
|
|
24
|
+
return HederaSDKTransaction.fromBytes(Buffer.from(tx, "hex"));
|
|
25
|
+
};
|
|
26
|
+
export const getOperationValue = ({ asset, operation, }) => {
|
|
27
|
+
if (operation.type === "FEES") {
|
|
28
|
+
return BigInt(0);
|
|
29
|
+
}
|
|
30
|
+
if (asset.type === "native" && operation.type === "OUT") {
|
|
31
|
+
return BigInt(operation.value.toFixed(0)) - BigInt(operation.fee.toFixed(0));
|
|
32
|
+
}
|
|
33
|
+
return BigInt(operation.value.toFixed(0));
|
|
34
|
+
};
|
|
35
|
+
// this utils extracts the bodyBytes from a Hedera Transaction that are required for signing
|
|
36
|
+
// hardcoded `.get(0)` is here because we are always using single node account id
|
|
37
|
+
// this is because we want to avoid "signing" loop for users, as described here:
|
|
38
|
+
// https://github.com/LedgerHQ/ledger-live/pull/72/commits/1e942687d4301660e43e0c4b5419fcfa2733b290
|
|
39
|
+
export const getHederaTransactionBodyBytes = (tx) => {
|
|
40
|
+
const bodyBytes = tx._signedTransactions.get(0)?.bodyBytes;
|
|
41
|
+
invariant(bodyBytes, "hedera: tx body bytes are missing");
|
|
42
|
+
return bodyBytes;
|
|
43
|
+
};
|
|
44
|
+
export const mapIntentToSDKOperation = (txIntent) => {
|
|
45
|
+
if (txIntent.type === HEDERA_TRANSACTION_MODES.TokenAssociate) {
|
|
46
|
+
return HEDERA_OPERATION_TYPES.TokenAssociate;
|
|
47
|
+
}
|
|
48
|
+
if (txIntent.type === HEDERA_TRANSACTION_MODES.Send && txIntent.asset.type !== "native") {
|
|
49
|
+
return HEDERA_OPERATION_TYPES.TokenTransfer;
|
|
50
|
+
}
|
|
51
|
+
return HEDERA_OPERATION_TYPES.CryptoTransfer;
|
|
52
|
+
};
|
|
53
|
+
export const getMemoFromBase64 = (memoBase64) => {
|
|
54
|
+
try {
|
|
55
|
+
if (memoBase64 === undefined)
|
|
56
|
+
return null;
|
|
57
|
+
return Buffer.from(memoBase64, "base64").toString("utf-8");
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
// NOTE: convert from the non-url-safe version of base64 to the url-safe version (that the explorer uses)
|
|
64
|
+
export function base64ToUrlSafeBase64(data) {
|
|
65
|
+
// Might be nice to use this alternative if .nvmrc changes to >= Node v14.18.0
|
|
66
|
+
// base64url encoding option isn't supported until then
|
|
67
|
+
// Buffer.from(data, "base64").toString("base64url");
|
|
68
|
+
return data.replace(/\//g, "_").replace(/\+/g, "-");
|
|
69
|
+
}
|
|
70
|
+
export const getTransactionExplorer = (explorerView, operation) => {
|
|
71
|
+
const extra = isValidExtra(operation.extra) ? operation.extra : null;
|
|
72
|
+
return explorerView?.tx?.replace("$hash", extra?.consensusTimestamp ?? extra?.transactionId ?? "0");
|
|
73
|
+
};
|
|
74
|
+
export const isTokenAssociateTransaction = (tx) => {
|
|
75
|
+
return tx.mode === HEDERA_TRANSACTION_MODES.TokenAssociate;
|
|
76
|
+
};
|
|
77
|
+
export const isAutoTokenAssociationEnabled = (account) => {
|
|
78
|
+
const hederaAccount = "hederaResources" in account ? account : null;
|
|
79
|
+
return hederaAccount?.hederaResources?.isAutoTokenAssociationEnabled ?? false;
|
|
80
|
+
};
|
|
81
|
+
export const isTokenAssociationRequired = (account, token) => {
|
|
82
|
+
const subAccounts = !!account && "subAccounts" in account ? account.subAccounts ?? [] : [];
|
|
83
|
+
const isTokenAssociated = subAccounts.some(item => item.token.id === token?.id);
|
|
84
|
+
return !!token && !isTokenAssociated && !isAutoTokenAssociationEnabled(account);
|
|
85
|
+
};
|
|
86
|
+
export const isValidExtra = (extra) => {
|
|
87
|
+
return !!extra && typeof extra === "object" && !Array.isArray(extra);
|
|
88
|
+
};
|
|
89
|
+
// disables the "Continue" button in the Send modal's Recipient step during token transfers if:
|
|
90
|
+
// - the recipient is not associated with the token
|
|
91
|
+
// - the association status can't be verified
|
|
92
|
+
export const sendRecipientCanNext = (status) => {
|
|
93
|
+
const { missingAssociation, unverifiedAssociation } = status.warnings;
|
|
94
|
+
return !missingAssociation && !unverifiedAssociation;
|
|
95
|
+
};
|
|
96
|
+
// note: this is currently called frequently by getTransactionStatus; LRU cache prevents duplicated requests
|
|
97
|
+
export const getCurrencyToUSDRate = makeLRUCache(async (currency) => {
|
|
98
|
+
try {
|
|
99
|
+
const [rate] = await cvsApi.fetchLatest([
|
|
100
|
+
{
|
|
101
|
+
from: currency,
|
|
102
|
+
to: getFiatCurrencyByTicker("USD"),
|
|
103
|
+
startDate: new Date(),
|
|
104
|
+
},
|
|
105
|
+
]);
|
|
106
|
+
invariant(rate, "no value returned from cvs api");
|
|
107
|
+
return new BigNumber(rate);
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
}, currency => currency.ticker, seconds(3));
|
|
113
|
+
export const checkAccountTokenAssociationStatus = makeLRUCache(async (address, tokenId) => {
|
|
114
|
+
const [parsingError, parsingResult] = safeParseAccountId(address);
|
|
115
|
+
if (parsingError) {
|
|
116
|
+
throw parsingError;
|
|
117
|
+
}
|
|
118
|
+
const addressWithoutChecksum = parsingResult.accountId;
|
|
119
|
+
const mirrorAccount = await apiClient.getAccount(addressWithoutChecksum);
|
|
120
|
+
// auto association is enabled
|
|
121
|
+
if (mirrorAccount.max_automatic_token_associations === -1) {
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
const isTokenAssociated = mirrorAccount.balance.tokens.some(token => {
|
|
125
|
+
return token.token_id === tokenId;
|
|
126
|
+
});
|
|
127
|
+
return isTokenAssociated;
|
|
128
|
+
}, (accountId, tokenId) => `${accountId}-${tokenId}`, seconds(30));
|
|
129
|
+
export const safeParseAccountId = (address) => {
|
|
130
|
+
const currency = findCryptoCurrencyById("hedera");
|
|
131
|
+
const currencyName = currency?.name ?? "Hedera";
|
|
132
|
+
try {
|
|
133
|
+
const accountId = AccountId.fromString(address);
|
|
134
|
+
// verify checksum if present
|
|
135
|
+
// FIXME: migrate to EntityIdHelper methods once SDK is upgraded:
|
|
136
|
+
// https://github.com/hiero-ledger/hiero-sdk-js/blob/main/src/EntityIdHelper.js#L197
|
|
137
|
+
// https://github.com/hiero-ledger/hiero-sdk-js/blob/main/src/EntityIdHelper.js#L446
|
|
138
|
+
const checksum = address.split("-")[1] ?? null;
|
|
139
|
+
if (checksum) {
|
|
140
|
+
const client = rpcClient.getInstance();
|
|
141
|
+
const recipientWithChecksum = accountId.toStringWithChecksum(client);
|
|
142
|
+
const expectedChecksum = recipientWithChecksum.split("-")[1];
|
|
143
|
+
if (checksum !== expectedChecksum) {
|
|
144
|
+
return [new HederaRecipientInvalidChecksum(), null];
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
const result = {
|
|
148
|
+
accountId: accountId.toString(),
|
|
149
|
+
checksum,
|
|
150
|
+
};
|
|
151
|
+
return [null, result];
|
|
152
|
+
}
|
|
153
|
+
catch (err) {
|
|
154
|
+
return [new InvalidAddress("", { currencyName }), null];
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
/**
|
|
158
|
+
* Calculates a synthetic block height based on Hedera consensus timestamp.
|
|
159
|
+
*
|
|
160
|
+
* @param consensusTimestamp - Hedera consensus timestamp
|
|
161
|
+
* @param blockWindowSeconds - Duration of one synthetic block in seconds (default: 10)
|
|
162
|
+
* @returns Deterministic synthetic block (height and hash)
|
|
163
|
+
*/
|
|
164
|
+
export function getSyntheticBlock(consensusTimestamp, blockWindowSeconds = SYNTHETIC_BLOCK_WINDOW_SECONDS) {
|
|
165
|
+
const seconds = Math.floor(Number(consensusTimestamp));
|
|
166
|
+
if (Number.isNaN(seconds) || seconds === 0) {
|
|
167
|
+
throw new Error(`Invalid consensus timestamp: ${consensusTimestamp}`);
|
|
168
|
+
}
|
|
169
|
+
const blockHeight = Math.floor(seconds / blockWindowSeconds);
|
|
170
|
+
const blockHash = createHash("sha256").update(blockHeight.toString()).digest("hex");
|
|
171
|
+
const blockTime = new Date(seconds * 1000);
|
|
172
|
+
return { blockHeight, blockHash, blockTime };
|
|
173
|
+
}
|
|
174
|
+
//# 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,113 @@
|
|
|
1
|
+
import network from "@ledgerhq/live-network";
|
|
2
|
+
import { getEnv } from "@ledgerhq/live-env";
|
|
3
|
+
import { LedgerAPI4xx } from "@ledgerhq/errors";
|
|
4
|
+
import { HederaAddAccountError } from "../errors";
|
|
5
|
+
const getMirrorApiUrl = () => getEnv("API_HEDERA_MIRROR");
|
|
6
|
+
const fetch = (path) => {
|
|
7
|
+
return network({
|
|
8
|
+
method: "GET",
|
|
9
|
+
url: `${getMirrorApiUrl()}${path}`,
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
async function getAccountsForPublicKey(publicKey) {
|
|
13
|
+
let res;
|
|
14
|
+
try {
|
|
15
|
+
res = await fetch(`/api/v1/accounts?account.publicKey=${publicKey}&balance=true&limit=100`);
|
|
16
|
+
}
|
|
17
|
+
catch (e) {
|
|
18
|
+
if (e instanceof LedgerAPI4xx)
|
|
19
|
+
return [];
|
|
20
|
+
throw e;
|
|
21
|
+
}
|
|
22
|
+
const accounts = res.data.accounts;
|
|
23
|
+
return accounts;
|
|
24
|
+
}
|
|
25
|
+
async function getAccount(address) {
|
|
26
|
+
try {
|
|
27
|
+
const res = await fetch(`/api/v1/accounts/${address}`);
|
|
28
|
+
const account = res.data;
|
|
29
|
+
return account;
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
if (error instanceof LedgerAPI4xx && "status" in error && error.status === 404) {
|
|
33
|
+
throw new HederaAddAccountError();
|
|
34
|
+
}
|
|
35
|
+
throw error;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
async function getAccountTransactions({ address, pagingToken, limit = 100, order = "desc", fetchAllPages, }) {
|
|
39
|
+
const transactions = [];
|
|
40
|
+
const params = new URLSearchParams({
|
|
41
|
+
"account.id": address,
|
|
42
|
+
limit: limit.toString(),
|
|
43
|
+
order,
|
|
44
|
+
});
|
|
45
|
+
// keeps old behavior when all pages are fetched
|
|
46
|
+
const getTimestampDirection = () => {
|
|
47
|
+
if (fetchAllPages)
|
|
48
|
+
return "gt";
|
|
49
|
+
return order === "asc" ? "gt" : "lt";
|
|
50
|
+
};
|
|
51
|
+
if (pagingToken) {
|
|
52
|
+
params.append("timestamp", `${getTimestampDirection()}:${pagingToken}`);
|
|
53
|
+
}
|
|
54
|
+
let nextCursor = null;
|
|
55
|
+
let nextUrl = `/api/v1/transactions?${params.toString()}`;
|
|
56
|
+
// WARNING: don't break the loop when `transactions` array is empty but `links.next` is present
|
|
57
|
+
// the mirror node API enforces a 60-day max time range per query, even if `timestamp` param is set
|
|
58
|
+
// see: https://hedera.com/blog/changes-to-the-hedera-operated-mirror-node
|
|
59
|
+
while (nextUrl) {
|
|
60
|
+
const res = await fetch(nextUrl);
|
|
61
|
+
const newTransactions = res.data.transactions;
|
|
62
|
+
transactions.push(...newTransactions);
|
|
63
|
+
nextUrl = res.data.links.next;
|
|
64
|
+
// stop fetching if pagination mode is used and we reached the limit
|
|
65
|
+
if (!fetchAllPages && transactions.length >= limit) {
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// ensure we don't exceed the limit in pagination mode
|
|
70
|
+
if (!fetchAllPages && transactions.length > limit) {
|
|
71
|
+
transactions.splice(limit);
|
|
72
|
+
}
|
|
73
|
+
// set the next cursor only if we have more transactions to fetch
|
|
74
|
+
if (!fetchAllPages && nextUrl) {
|
|
75
|
+
const lastTx = transactions.at(-1);
|
|
76
|
+
nextCursor = lastTx?.consensus_timestamp ?? null;
|
|
77
|
+
}
|
|
78
|
+
return { transactions, nextCursor };
|
|
79
|
+
}
|
|
80
|
+
async function getAccountTokens(address) {
|
|
81
|
+
const tokens = [];
|
|
82
|
+
const params = new URLSearchParams({
|
|
83
|
+
limit: "100",
|
|
84
|
+
});
|
|
85
|
+
let nextUrl = `/api/v1/accounts/${address}/tokens?${params.toString()}`;
|
|
86
|
+
while (nextUrl) {
|
|
87
|
+
const res = await fetch(nextUrl);
|
|
88
|
+
const newTokens = res.data.tokens;
|
|
89
|
+
tokens.push(...newTokens);
|
|
90
|
+
nextUrl = res.data.links.next;
|
|
91
|
+
}
|
|
92
|
+
return tokens;
|
|
93
|
+
}
|
|
94
|
+
async function getLatestTransaction() {
|
|
95
|
+
const params = new URLSearchParams({
|
|
96
|
+
limit: "1",
|
|
97
|
+
order: "desc",
|
|
98
|
+
});
|
|
99
|
+
const res = await fetch(`/api/v1/transactions?${params.toString()}`);
|
|
100
|
+
const transaction = res.data.transactions[0];
|
|
101
|
+
if (!transaction) {
|
|
102
|
+
throw new Error("No transactions found on the Hedera network");
|
|
103
|
+
}
|
|
104
|
+
return transaction;
|
|
105
|
+
}
|
|
106
|
+
export const apiClient = {
|
|
107
|
+
getAccountsForPublicKey,
|
|
108
|
+
getAccount,
|
|
109
|
+
getAccountTokens,
|
|
110
|
+
getAccountTransactions,
|
|
111
|
+
getLatestTransaction,
|
|
112
|
+
};
|
|
113
|
+
//# 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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Client } from "@hashgraph/sdk";
|
|
2
|
+
function broadcastTransaction(transaction) {
|
|
3
|
+
return transaction.execute(getInstance());
|
|
4
|
+
}
|
|
5
|
+
let _hederaClient = null;
|
|
6
|
+
function getInstance() {
|
|
7
|
+
_hederaClient ??= Client.forMainnet().setMaxNodesPerTransaction(1);
|
|
8
|
+
return _hederaClient;
|
|
9
|
+
}
|
|
10
|
+
// for testing purposes only, used to reset singleton client instance
|
|
11
|
+
function _resetInstance() {
|
|
12
|
+
_hederaClient = null;
|
|
13
|
+
}
|
|
14
|
+
export const rpcClient = {
|
|
15
|
+
getInstance,
|
|
16
|
+
broadcastTransaction,
|
|
17
|
+
_resetInstance,
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=rpc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../src/network/rpc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,SAAS,oBAAoB,CAAC,WAA8B;IAC1D,OAAO,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,IAAI,aAAa,GAAkB,IAAI,CAAC;AAExC,SAAS,WAAW;IAClB,aAAa,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;IAEnE,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,qEAAqE;AACrE,SAAS,cAAc;IACrB,aAAa,GAAG,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,WAAW;IACX,oBAAoB;IACpB,cAAc;CACf,CAAC"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
import type { Operation } from "@ledgerhq/types-live";
|
|
2
|
-
import type { HederaMirrorTokenTransfer, HederaMirrorCoinTransfer } from "
|
|
2
|
+
import type { HederaMirrorTokenTransfer, HederaMirrorCoinTransfer } from "../types";
|
|
3
3
|
export declare function parseTransfers(mirrorTransfers: (HederaMirrorCoinTransfer | HederaMirrorTokenTransfer)[], address: string): Pick<Operation, "type" | "value" | "senders" | "recipients">;
|
|
4
|
-
export declare function getOperationsForAccount(ledgerAccountId: string, address: string, latestOperationTimestamp: string | null): Promise<{
|
|
5
|
-
coinOperations: Operation[];
|
|
6
|
-
tokenOperations: Operation[];
|
|
7
|
-
}>;
|
|
8
4
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/network/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAkBpF,wBAAgB,cAAc,CAC5B,eAAe,EAAE,CAAC,wBAAwB,GAAG,yBAAyB,CAAC,EAAE,EACzE,OAAO,EAAE,MAAM,GACd,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,YAAY,CAAC,CAiC9D"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import BigNumber from "bignumber.js";
|
|
2
|
+
import { AccountId } from "@hashgraph/sdk";
|
|
3
|
+
function isValidRecipient(accountId, recipients) {
|
|
4
|
+
if (accountId.shard.eq(0) && accountId.realm.eq(0)) {
|
|
5
|
+
// account is a node, only add to list if we have none
|
|
6
|
+
if (accountId.num.lt(100)) {
|
|
7
|
+
return recipients.length === 0;
|
|
8
|
+
}
|
|
9
|
+
// account is a system account that is not a node, do NOT add
|
|
10
|
+
if (accountId.num.lt(1000)) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
export function parseTransfers(mirrorTransfers, address) {
|
|
17
|
+
let value = new BigNumber(0);
|
|
18
|
+
let type = "NONE";
|
|
19
|
+
const senders = [];
|
|
20
|
+
const recipients = [];
|
|
21
|
+
for (const transfer of mirrorTransfers) {
|
|
22
|
+
const amount = new BigNumber(transfer.amount);
|
|
23
|
+
const accountId = AccountId.fromString(transfer.account);
|
|
24
|
+
if (transfer.account === address) {
|
|
25
|
+
value = amount.abs();
|
|
26
|
+
type = amount.isNegative() ? "OUT" : "IN";
|
|
27
|
+
}
|
|
28
|
+
if (amount.isNegative()) {
|
|
29
|
+
senders.push(transfer.account);
|
|
30
|
+
}
|
|
31
|
+
else if (isValidRecipient(accountId, recipients)) {
|
|
32
|
+
recipients.push(transfer.account);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// NOTE: earlier addresses are the "fee" addresses
|
|
36
|
+
senders.reverse();
|
|
37
|
+
recipients.reverse();
|
|
38
|
+
return {
|
|
39
|
+
type,
|
|
40
|
+
value,
|
|
41
|
+
senders,
|
|
42
|
+
recipients,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/network/utils.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAI3C,SAAS,gBAAgB,CAAC,SAAoB,EAAE,UAAoB;IAClE,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,sDAAsD;QACtD,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;QACjC,CAAC;QAED,6DAA6D;QAC7D,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,eAAyE,EACzE,OAAe;IAEf,IAAI,KAAK,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,IAAI,GAAkB,MAAM,CAAC;IAEjC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEzD,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YACjC,KAAK,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;YACrB,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5C,CAAC;QAED,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;aAAM,IAAI,gBAAgB,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC;YACnD,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,OAAO,CAAC,OAAO,EAAE,CAAC;IAClB,UAAU,CAAC,OAAO,EAAE,CAAC;IAErB,OAAO;QACL,IAAI;QACJ,KAAK;QACL,OAAO;QACP,UAAU;KACX,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridgeDatasetTest.d.ts","sourceRoot":"","sources":["../../src/test/bridgeDatasetTest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"bridgeDatasetTest.d.ts","sourceRoot":"","sources":["../../src/test/bridgeDatasetTest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AASxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,eAAO,MAAM,MAAM,EAAE,cAAc,CAAC,WAAW,CA8F9C,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,WAAW,CAAC,WAAW,CAK5C,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NotEnoughBalance, InvalidAddressBecauseDestinationIsAlsoSource, AmountRequired, } from "@ledgerhq/errors";
|
|
2
|
+
import { HEDERA_TRANSACTION_MODES } from "../constants";
|
|
2
3
|
import { fromTransactionRaw } from "../transaction";
|
|
3
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4
4
|
export const hedera = {
|
|
5
5
|
scanAccounts: [
|
|
6
6
|
{
|
|
@@ -36,6 +36,7 @@ export const hedera = {
|
|
|
36
36
|
family: "hedera",
|
|
37
37
|
recipient: "0.0.751515",
|
|
38
38
|
amount: "100000000",
|
|
39
|
+
mode: HEDERA_TRANSACTION_MODES.Send,
|
|
39
40
|
}),
|
|
40
41
|
expectedStatus: {
|
|
41
42
|
errors: {
|
|
@@ -50,6 +51,7 @@ export const hedera = {
|
|
|
50
51
|
family: "hedera",
|
|
51
52
|
recipient: "0.0.751515",
|
|
52
53
|
amount: "0",
|
|
54
|
+
mode: HEDERA_TRANSACTION_MODES.Send,
|
|
53
55
|
}),
|
|
54
56
|
expectedStatus: {
|
|
55
57
|
errors: {
|
|
@@ -64,6 +66,7 @@ export const hedera = {
|
|
|
64
66
|
family: "hedera",
|
|
65
67
|
recipient: "0.0.751515",
|
|
66
68
|
amount: "1000000000000000",
|
|
69
|
+
mode: HEDERA_TRANSACTION_MODES.Send,
|
|
67
70
|
}),
|
|
68
71
|
expectedStatus: {
|
|
69
72
|
errors: {
|
|
@@ -78,6 +81,7 @@ export const hedera = {
|
|
|
78
81
|
family: "hedera",
|
|
79
82
|
recipient: "0.0.751515",
|
|
80
83
|
amount: "1000000000000000",
|
|
84
|
+
mode: HEDERA_TRANSACTION_MODES.Send,
|
|
81
85
|
useAllAmount: true,
|
|
82
86
|
}),
|
|
83
87
|
expectedStatus: (account, _, status) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridgeDatasetTest.js","sourceRoot":"","sources":["../../src/test/bridgeDatasetTest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bridgeDatasetTest.js","sourceRoot":"","sources":["../../src/test/bridgeDatasetTest.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,gBAAgB,EAChB,4CAA4C,EAC5C,cAAc,GACf,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGpD,MAAM,CAAC,MAAM,MAAM,GAAgC;IACjD,YAAY,EAAE;QACZ;YACE,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE;;;WAGF;SACN;KACF;IACD,QAAQ,EAAE;QACR;YACE,WAAW,EAAE,CAAC,uBAAuB,CAAC;YACtC,GAAG,EAAE;gBACH,EAAE,EAAE,yBAAyB;gBAC7B,cAAc,EAAE,EAAE;gBAClB,IAAI,EAAE,UAAU;gBAChB,cAAc,EAAE,aAAa;gBAC7B,KAAK,EAAE,CAAC;gBACR,YAAY,EAAE,YAAY;gBAC1B,gBAAgB,EAAE,eAAe;gBACjC,WAAW,EAAE,CAAC;gBACd,UAAU,EAAE,EAAE;gBACd,iBAAiB,EAAE,EAAE;gBACrB,UAAU,EAAE,QAAQ;gBACpB,YAAY,EAAE,EAAE;gBAChB,OAAO,EAAE,GAAG;aACb;YACD,YAAY,EAAE;gBACZ;oBACE,IAAI,EAAE,2CAA2C;oBACjD,WAAW,EAAE,kBAAkB,CAAC;wBAC9B,MAAM,EAAE,QAAQ;wBAChB,SAAS,EAAE,YAAY;wBACvB,MAAM,EAAE,WAAW;wBACnB,IAAI,EAAE,wBAAwB,CAAC,IAAI;qBACpC,CAAC;oBACF,cAAc,EAAE;wBACd,MAAM,EAAE;4BACN,SAAS,EAAE,IAAI,4CAA4C,EAAE;yBAC9D;wBACD,QAAQ,EAAE,EAAE;qBACb;iBACF;gBACD;oBACE,IAAI,EAAE,iBAAiB;oBACvB,WAAW,EAAE,kBAAkB,CAAC;wBAC9B,MAAM,EAAE,QAAQ;wBAChB,SAAS,EAAE,YAAY;wBACvB,MAAM,EAAE,GAAG;wBACX,IAAI,EAAE,wBAAwB,CAAC,IAAI;qBACpC,CAAC;oBACF,cAAc,EAAE;wBACd,MAAM,EAAE;4BACN,MAAM,EAAE,IAAI,cAAc,EAAE;yBAC7B;wBACD,QAAQ,EAAE,EAAE;qBACb;iBACF;gBACD;oBACE,IAAI,EAAE,oBAAoB;oBAC1B,WAAW,EAAE,kBAAkB,CAAC;wBAC9B,MAAM,EAAE,QAAQ;wBAChB,SAAS,EAAE,YAAY;wBACvB,MAAM,EAAE,kBAAkB;wBAC1B,IAAI,EAAE,wBAAwB,CAAC,IAAI;qBACpC,CAAC;oBACF,cAAc,EAAE;wBACd,MAAM,EAAE;4BACN,MAAM,EAAE,IAAI,gBAAgB,EAAE;yBAC/B;wBACD,QAAQ,EAAE,EAAE;qBACb;iBACF;gBACD;oBACE,IAAI,EAAE,UAAU;oBAChB,WAAW,EAAE,kBAAkB,CAAC;wBAC9B,MAAM,EAAE,QAAQ;wBAChB,SAAS,EAAE,YAAY;wBACvB,MAAM,EAAE,kBAAkB;wBAC1B,IAAI,EAAE,wBAAwB,CAAC,IAAI;wBACnC,YAAY,EAAE,IAAI;qBACnB,CAAC;oBACF,cAAc,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE;wBACrC,OAAO;4BACL,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;4BACnD,MAAM,EAAE,EAAE;4BACV,QAAQ,EAAE,EAAE;yBACb,CAAC;oBACJ,CAAC;iBACF;aACF;SACF;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAA6B;IAC/C,eAAe,EAAE,CAAC,IAAI,CAAC;IACvB,UAAU,EAAE;QACV,MAAM;KACP;CACF,CAAC"}
|
|
@@ -16,4 +16,21 @@ export declare const getMockedAccountRaw: (overrides?: Partial<HederaAccountRaw>
|
|
|
16
16
|
* - balance is 10
|
|
17
17
|
*/
|
|
18
18
|
export declare const getMockedTokenAccount: (token: TokenCurrency, overrides?: Partial<TokenAccount>) => TokenAccount;
|
|
19
|
+
export declare const MAINNET_TEST_ACCOUNTS: {
|
|
20
|
+
pristine: {
|
|
21
|
+
accountId: string;
|
|
22
|
+
publicKey: string;
|
|
23
|
+
};
|
|
24
|
+
withoutTokens: {
|
|
25
|
+
accountId: string;
|
|
26
|
+
publicKey: string;
|
|
27
|
+
};
|
|
28
|
+
withTokens: {
|
|
29
|
+
accountId: string;
|
|
30
|
+
publicKey: string;
|
|
31
|
+
associatedTokenWithBalance: string;
|
|
32
|
+
associatedTokenWithoutBalance: string;
|
|
33
|
+
notAssociatedToken: string;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
19
36
|
//# sourceMappingURL=account.fixture.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.fixture.d.ts","sourceRoot":"","sources":["../../../src/test/fixtures/account.fixture.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAS7D,eAAO,MAAM,mBAAmB,EAAE,eAGjC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,kBAGpC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,eAAgB,QAAQ,aAAa,CAAC,KAAG,aA6BrE,CAAC;AAEF,eAAO,MAAM,mBAAmB,eAAgB,QAAQ,gBAAgB,CAAC,KAAG,gBA4B3E,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,UACzB,aAAa,cACR,QAAQ,YAAY,CAAC,KAChC,YAoBF,CAAC"}
|
|
1
|
+
{"version":3,"file":"account.fixture.d.ts","sourceRoot":"","sources":["../../../src/test/fixtures/account.fixture.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAS7D,eAAO,MAAM,mBAAmB,EAAE,eAGjC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,kBAGpC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,eAAgB,QAAQ,aAAa,CAAC,KAAG,aA6BrE,CAAC;AAEF,eAAO,MAAM,mBAAmB,eAAgB,QAAQ,gBAAgB,CAAC,KAAG,gBA4B3E,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,UACzB,aAAa,cACR,QAAQ,YAAY,CAAC,KAChC,YAoBF,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;CAgBjC,CAAC"}
|
|
@@ -104,4 +104,21 @@ export const getMockedTokenAccount = (token, overrides) => {
|
|
|
104
104
|
...overrides,
|
|
105
105
|
};
|
|
106
106
|
};
|
|
107
|
+
export const MAINNET_TEST_ACCOUNTS = {
|
|
108
|
+
pristine: {
|
|
109
|
+
accountId: "0.0.800000",
|
|
110
|
+
publicKey: "3608128be58bfb7e753068e0bc82430ec77e51eed578e0a7055a0bd1296fe334",
|
|
111
|
+
},
|
|
112
|
+
withoutTokens: {
|
|
113
|
+
accountId: "0.0.8000000",
|
|
114
|
+
publicKey: "96eae0821a63a138f37e0a60a83f9a0317fa11dde4d7669a62afb5ced2158141",
|
|
115
|
+
},
|
|
116
|
+
withTokens: {
|
|
117
|
+
accountId: "0.0.8835924",
|
|
118
|
+
publicKey: "34e26415574250721e8869bd33ea2678c2bbccff5fc70bd8b0ec9239295fd2cf",
|
|
119
|
+
associatedTokenWithBalance: "0.0.456858",
|
|
120
|
+
associatedTokenWithoutBalance: "0.0.7243470",
|
|
121
|
+
notAssociatedToken: "0.0.3176721",
|
|
122
|
+
},
|
|
123
|
+
};
|
|
107
124
|
//# sourceMappingURL=account.fixture.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.fixture.js","sourceRoot":"","sources":["../../../src/test/fixtures/account.fixture.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"account.fixture.js","sourceRoot":"","sources":["../../../src/test/fixtures/account.fixture.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"currency.fixture.d.ts","sourceRoot":"","sources":["../../../src/test/fixtures/currency.fixture.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"currency.fixture.d.ts","sourceRoot":"","sources":["../../../src/test/fixtures/currency.fixture.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElF,eAAO,MAAM,iBAAiB,eAAgB,QAAQ,cAAc,CAAC,KAAG,cA0BvE,CAAC;AAEF,eAAO,MAAM,uBAAuB,UAC3B,MAAM,cACD,QAAQ,aAAa,CAAC,KACjC,aAUF,CAAC;AAEF,eAAO,MAAM,sBAAsB,eAAgB,QAAQ,aAAa,CAAC,KAAG,aAkB3E,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { getCryptoCurrencyById, listTokensForCryptoCurrency } from "@ledgerhq/cryptoassets";
|
|
2
1
|
import invariant from "invariant";
|
|
2
|
+
import { getCryptoCurrencyById, listTokensForCryptoCurrency } from "@ledgerhq/cryptoassets";
|
|
3
3
|
export const getMockedCurrency = (overrides) => {
|
|
4
4
|
return {
|
|
5
5
|
type: "CryptoCurrency",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"currency.fixture.js","sourceRoot":"","sources":["../../../src/test/fixtures/currency.fixture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"currency.fixture.js","sourceRoot":"","sources":["../../../src/test/fixtures/currency.fixture.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAG5F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAmC,EAAkB,EAAE;IACvF,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,EAAE,EAAE,QAAQ;QACZ,cAAc,EAAE,QAAQ;QACxB,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,QAAQ;QAChB,aAAa,EAAE;YACb;gBACE,EAAE,EAAE,+CAA+C;gBACnD,OAAO,EAAE,8CAA8C;aACxD;SACF;QACD,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,MAAM;QACd,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,CAAC;aACb;SACF;QACD,GAAG,SAAS;KACb,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,KAAa,EACb,SAAkC,EACnB,EAAE;IACjB,MAAM,MAAM,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;IAEzD,SAAS,CAAC,KAAK,EAAE,kCAAkC,KAAK,WAAW,CAAC,CAAC;IAErE,OAAO;QACL,GAAG,KAAK;QACR,GAAG,SAAS;KACb,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,SAAkC,EAAiB,EAAE;IAC1F,OAAO;QACL,EAAE,EAAE,6BAA6B;QACjC,eAAe,EAAE,UAAU;QAC3B,cAAc,EAAE,iBAAiB,EAAE;QACnC,SAAS,EAAE,KAAK;QAChB,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,CAAC;aACb;SACF;QACD,GAAG,SAAS;KACb,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mirror.fixture.d.ts","sourceRoot":"","sources":["../../../src/test/fixtures/mirror.fixture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"mirror.fixture.d.ts","sourceRoot":"","sources":["../../../src/test/fixtures/mirror.fixture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,eAAO,MAAM,oBAAoB,eAAgB,QAAQ,iBAAiB,CAAC,KAAG,iBAW7E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network.fixture.d.ts","sourceRoot":"","sources":["../../../src/test/fixtures/network.fixture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAC;AAElD,eAAO,MAAM,eAAe,SAAU,GAAG,KAAG,QAAQ,WAAW,cAAc,CAAC,CAG5E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network.fixture.js","sourceRoot":"","sources":["../../../src/test/fixtures/network.fixture.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAS,EAAuC,EAAE,CAAC,CAAC;IAClF,IAAI;IACJ,MAAM,EAAE,GAAG;CACZ,CAAC,CAAC"}
|