@ledgerhq/coin-hedera 1.15.0-nightly.20251126023856 → 1.15.0-nightly.20251126160702
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -8
- package/lib/api/index.d.ts.map +1 -1
- package/lib/api/index.js +6 -2
- package/lib/api/index.js.map +1 -1
- package/lib/bridge/broadcast.js +1 -1
- package/lib/bridge/broadcast.js.map +1 -1
- package/lib/bridge/buildOptimisticOperation.d.ts.map +1 -1
- package/lib/bridge/buildOptimisticOperation.js +80 -15
- package/lib/bridge/buildOptimisticOperation.js.map +1 -1
- package/lib/bridge/estimateMaxSpendable.js +5 -2
- package/lib/bridge/estimateMaxSpendable.js.map +1 -1
- package/lib/bridge/getTransactionStatus.d.ts.map +1 -1
- package/lib/bridge/getTransactionStatus.js +70 -13
- package/lib/bridge/getTransactionStatus.js.map +1 -1
- package/lib/bridge/index.js +1 -1
- package/lib/bridge/index.js.map +1 -1
- package/lib/bridge/prepareTransaction.d.ts.map +1 -1
- package/lib/bridge/prepareTransaction.js +40 -7
- package/lib/bridge/prepareTransaction.js.map +1 -1
- package/lib/bridge/signOperation.d.ts.map +1 -1
- package/lib/bridge/signOperation.js +19 -2
- package/lib/bridge/signOperation.js.map +1 -1
- package/lib/bridge/synchronisation.d.ts +2 -0
- package/lib/bridge/synchronisation.d.ts.map +1 -1
- package/lib/bridge/synchronisation.js +101 -30
- package/lib/bridge/synchronisation.js.map +1 -1
- package/lib/bridge/utils.d.ts +35 -2
- package/lib/bridge/utils.d.ts.map +1 -1
- package/lib/bridge/utils.js +215 -16
- package/lib/bridge/utils.js.map +1 -1
- package/lib/constants.d.ts +22 -2
- package/lib/constants.d.ts.map +1 -1
- package/lib/constants.js +42 -2
- package/lib/constants.js.map +1 -1
- package/lib/deviceTransactionConfig.d.ts +1 -1
- package/lib/deviceTransactionConfig.d.ts.map +1 -1
- package/lib/deviceTransactionConfig.js +8 -0
- package/lib/deviceTransactionConfig.js.map +1 -1
- package/lib/errors.d.ts +3 -0
- package/lib/errors.d.ts.map +1 -1
- package/lib/errors.js +2 -1
- package/lib/errors.js.map +1 -1
- package/lib/logic/craftTransaction.d.ts +4 -4
- package/lib/logic/craftTransaction.d.ts.map +1 -1
- package/lib/logic/craftTransaction.js +46 -5
- package/lib/logic/craftTransaction.js.map +1 -1
- package/lib/logic/estimateFees.d.ts +2 -4
- package/lib/logic/estimateFees.d.ts.map +1 -1
- package/lib/logic/estimateFees.js +45 -5
- package/lib/logic/estimateFees.js.map +1 -1
- package/lib/logic/listOperations.d.ts.map +1 -1
- package/lib/logic/listOperations.js +7 -3
- package/lib/logic/listOperations.js.map +1 -1
- package/lib/logic/utils.d.ts +24 -2
- package/lib/logic/utils.d.ts.map +1 -1
- package/lib/logic/utils.js +66 -13
- package/lib/logic/utils.js.map +1 -1
- package/lib/network/api.d.ts +12 -1
- package/lib/network/api.d.ts.map +1 -1
- package/lib/network/api.js +91 -19
- package/lib/network/api.js.map +1 -1
- package/lib/network/rpc.d.ts.map +1 -1
- package/lib/network/rpc.js +1 -0
- package/lib/network/rpc.js.map +1 -1
- package/lib/network/thirdweb.d.ts +21 -0
- package/lib/network/thirdweb.d.ts.map +1 -0
- package/lib/network/thirdweb.js +72 -0
- package/lib/network/thirdweb.js.map +1 -0
- package/lib/network/utils.d.ts +4 -1
- package/lib/network/utils.d.ts.map +1 -1
- package/lib/network/utils.js +53 -1
- package/lib/network/utils.js.map +1 -1
- package/lib/test/bridgeDatasetTest.d.ts.map +1 -1
- package/lib/test/bridgeDatasetTest.js +4 -4
- package/lib/test/bridgeDatasetTest.js.map +1 -1
- package/lib/test/fixtures/account.fixture.js +1 -1
- package/lib/test/fixtures/account.fixture.js.map +1 -1
- package/lib/test/fixtures/common.fixture.d.ts +12 -0
- package/lib/test/fixtures/common.fixture.d.ts.map +1 -0
- package/lib/test/fixtures/common.fixture.js +66 -0
- package/lib/test/fixtures/common.fixture.js.map +1 -0
- package/lib/test/fixtures/currency.fixture.d.ts +3 -1
- package/lib/test/fixtures/currency.fixture.d.ts.map +1 -1
- package/lib/test/fixtures/currency.fixture.js +63 -16
- package/lib/test/fixtures/currency.fixture.js.map +1 -1
- package/lib/test/fixtures/mirror.fixture.d.ts +3 -1
- package/lib/test/fixtures/mirror.fixture.d.ts.map +1 -1
- package/lib/test/fixtures/mirror.fixture.js +12 -1
- package/lib/test/fixtures/mirror.fixture.js.map +1 -1
- package/lib/test/fixtures/thirdweb.fixture.d.ts +3 -0
- package/lib/test/fixtures/thirdweb.fixture.d.ts.map +1 -0
- package/lib/test/fixtures/thirdweb.fixture.js +34 -0
- package/lib/test/fixtures/thirdweb.fixture.js.map +1 -0
- package/lib/transaction.d.ts.map +1 -1
- package/lib/transaction.js +2 -0
- package/lib/transaction.js.map +1 -1
- package/lib/types/alpaca.d.ts +5 -1
- package/lib/types/alpaca.d.ts.map +1 -1
- package/lib/types/bridge.d.ts +6 -1
- package/lib/types/bridge.d.ts.map +1 -1
- package/lib/types/index.d.ts +2 -0
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +2 -0
- package/lib/types/index.js.map +1 -1
- package/lib/types/logic.d.ts +39 -0
- package/lib/types/logic.d.ts.map +1 -0
- package/lib/types/logic.js +3 -0
- package/lib/types/logic.js.map +1 -0
- package/lib/types/mirror.d.ts +29 -0
- package/lib/types/mirror.d.ts.map +1 -1
- package/lib/types/thirdweb.d.ts +34 -0
- package/lib/types/thirdweb.d.ts.map +1 -0
- package/lib/types/thirdweb.js +3 -0
- package/lib/types/thirdweb.js.map +1 -0
- package/lib-es/api/index.d.ts.map +1 -1
- package/lib-es/api/index.js +7 -3
- package/lib-es/api/index.js.map +1 -1
- package/lib-es/bridge/broadcast.js +2 -2
- package/lib-es/bridge/broadcast.js.map +1 -1
- package/lib-es/bridge/buildOptimisticOperation.d.ts.map +1 -1
- package/lib-es/bridge/buildOptimisticOperation.js +83 -18
- package/lib-es/bridge/buildOptimisticOperation.js.map +1 -1
- package/lib-es/bridge/estimateMaxSpendable.js +5 -2
- package/lib-es/bridge/estimateMaxSpendable.js.map +1 -1
- package/lib-es/bridge/getTransactionStatus.d.ts.map +1 -1
- package/lib-es/bridge/getTransactionStatus.js +73 -16
- package/lib-es/bridge/getTransactionStatus.js.map +1 -1
- package/lib-es/bridge/index.js +2 -2
- package/lib-es/bridge/index.js.map +1 -1
- package/lib-es/bridge/prepareTransaction.d.ts.map +1 -1
- package/lib-es/bridge/prepareTransaction.js +42 -9
- package/lib-es/bridge/prepareTransaction.js.map +1 -1
- package/lib-es/bridge/signOperation.d.ts.map +1 -1
- package/lib-es/bridge/signOperation.js +21 -4
- package/lib-es/bridge/signOperation.js.map +1 -1
- package/lib-es/bridge/synchronisation.d.ts +2 -0
- package/lib-es/bridge/synchronisation.d.ts.map +1 -1
- package/lib-es/bridge/synchronisation.js +97 -27
- package/lib-es/bridge/synchronisation.js.map +1 -1
- package/lib-es/bridge/utils.d.ts +35 -2
- package/lib-es/bridge/utils.d.ts.map +1 -1
- package/lib-es/bridge/utils.js +211 -16
- package/lib-es/bridge/utils.js.map +1 -1
- package/lib-es/constants.d.ts +22 -2
- package/lib-es/constants.d.ts.map +1 -1
- package/lib-es/constants.js +38 -1
- package/lib-es/constants.js.map +1 -1
- package/lib-es/deviceTransactionConfig.d.ts +1 -1
- package/lib-es/deviceTransactionConfig.d.ts.map +1 -1
- package/lib-es/deviceTransactionConfig.js +8 -0
- package/lib-es/deviceTransactionConfig.js.map +1 -1
- package/lib-es/errors.d.ts +3 -0
- package/lib-es/errors.d.ts.map +1 -1
- package/lib-es/errors.js +1 -0
- package/lib-es/errors.js.map +1 -1
- package/lib-es/logic/craftTransaction.d.ts +4 -4
- package/lib-es/logic/craftTransaction.d.ts.map +1 -1
- package/lib-es/logic/craftTransaction.js +48 -7
- package/lib-es/logic/craftTransaction.js.map +1 -1
- package/lib-es/logic/estimateFees.d.ts +2 -4
- package/lib-es/logic/estimateFees.d.ts.map +1 -1
- package/lib-es/logic/estimateFees.js +47 -7
- package/lib-es/logic/estimateFees.js.map +1 -1
- package/lib-es/logic/listOperations.d.ts.map +1 -1
- package/lib-es/logic/listOperations.js +7 -3
- package/lib-es/logic/listOperations.js.map +1 -1
- package/lib-es/logic/utils.d.ts +24 -2
- package/lib-es/logic/utils.d.ts.map +1 -1
- package/lib-es/logic/utils.js +63 -13
- package/lib-es/logic/utils.js.map +1 -1
- package/lib-es/network/api.d.ts +12 -1
- package/lib-es/network/api.d.ts.map +1 -1
- package/lib-es/network/api.js +91 -19
- package/lib-es/network/api.js.map +1 -1
- package/lib-es/network/rpc.d.ts.map +1 -1
- package/lib-es/network/rpc.js +1 -0
- package/lib-es/network/rpc.js.map +1 -1
- package/lib-es/network/thirdweb.d.ts +21 -0
- package/lib-es/network/thirdweb.d.ts.map +1 -0
- package/lib-es/network/thirdweb.js +66 -0
- package/lib-es/network/thirdweb.js.map +1 -0
- package/lib-es/network/utils.d.ts +4 -1
- package/lib-es/network/utils.d.ts.map +1 -1
- package/lib-es/network/utils.js +49 -0
- package/lib-es/network/utils.js.map +1 -1
- package/lib-es/test/bridgeDatasetTest.d.ts.map +1 -1
- package/lib-es/test/bridgeDatasetTest.js +4 -4
- package/lib-es/test/bridgeDatasetTest.js.map +1 -1
- package/lib-es/test/fixtures/account.fixture.js +2 -2
- package/lib-es/test/fixtures/account.fixture.js.map +1 -1
- package/lib-es/test/fixtures/common.fixture.d.ts +12 -0
- package/lib-es/test/fixtures/common.fixture.d.ts.map +1 -0
- package/lib-es/test/fixtures/common.fixture.js +57 -0
- package/lib-es/test/fixtures/common.fixture.js.map +1 -0
- package/lib-es/test/fixtures/currency.fixture.d.ts +3 -1
- package/lib-es/test/fixtures/currency.fixture.d.ts.map +1 -1
- package/lib-es/test/fixtures/currency.fixture.js +59 -14
- package/lib-es/test/fixtures/currency.fixture.js.map +1 -1
- package/lib-es/test/fixtures/mirror.fixture.d.ts +3 -1
- package/lib-es/test/fixtures/mirror.fixture.d.ts.map +1 -1
- package/lib-es/test/fixtures/mirror.fixture.js +9 -0
- package/lib-es/test/fixtures/mirror.fixture.js.map +1 -1
- package/lib-es/test/fixtures/thirdweb.fixture.d.ts +3 -0
- package/lib-es/test/fixtures/thirdweb.fixture.d.ts.map +1 -0
- package/lib-es/test/fixtures/thirdweb.fixture.js +30 -0
- package/lib-es/test/fixtures/thirdweb.fixture.js.map +1 -0
- package/lib-es/transaction.d.ts.map +1 -1
- package/lib-es/transaction.js +2 -0
- package/lib-es/transaction.js.map +1 -1
- package/lib-es/types/alpaca.d.ts +5 -1
- package/lib-es/types/alpaca.d.ts.map +1 -1
- package/lib-es/types/bridge.d.ts +6 -1
- package/lib-es/types/bridge.d.ts.map +1 -1
- package/lib-es/types/index.d.ts +2 -0
- package/lib-es/types/index.d.ts.map +1 -1
- package/lib-es/types/index.js +2 -0
- package/lib-es/types/index.js.map +1 -1
- package/lib-es/types/logic.d.ts +39 -0
- package/lib-es/types/logic.d.ts.map +1 -0
- package/lib-es/types/logic.js +2 -0
- package/lib-es/types/logic.js.map +1 -0
- package/lib-es/types/mirror.d.ts +29 -0
- package/lib-es/types/mirror.d.ts.map +1 -1
- package/lib-es/types/thirdweb.d.ts +34 -0
- package/lib-es/types/thirdweb.d.ts.map +1 -0
- package/lib-es/types/thirdweb.js +2 -0
- package/lib-es/types/thirdweb.js.map +1 -0
- package/package.json +9 -8
- package/src/api/index.integ.test.ts +11 -8
- package/src/api/index.ts +10 -3
- package/src/bridge/broadcast.ts +2 -2
- package/src/bridge/buildOptimisticOperation.integration.test.ts +70 -19
- package/src/bridge/buildOptimisticOperation.ts +98 -20
- package/src/bridge/estimateMaxSpendable.ts +5 -5
- package/src/bridge/getTransactionStatus.test.ts +57 -12
- package/src/bridge/getTransactionStatus.ts +88 -15
- package/src/bridge/index.ts +2 -2
- package/src/bridge/js-estimateMaxSpendable.integration.test.ts +12 -9
- package/src/bridge/prepareTransaction.test.ts +3 -1
- package/src/bridge/prepareTransaction.ts +45 -10
- package/src/bridge/signOperation.ts +23 -5
- package/src/bridge/synchronisation.test.ts +67 -0
- package/src/bridge/synchronisation.ts +114 -34
- package/src/bridge/utils.integration.test.ts +486 -180
- package/src/bridge/utils.test.ts +404 -0
- package/src/bridge/utils.ts +330 -27
- package/src/constants.ts +47 -2
- package/src/deviceTransactionConfig.ts +10 -1
- package/src/errors.ts +3 -0
- package/src/logic/craftTransaction.test.ts +49 -9
- package/src/logic/craftTransaction.ts +76 -11
- package/src/logic/estimateFees.test.ts +180 -31
- package/src/logic/estimateFees.ts +68 -7
- package/src/logic/getAssetFromToken.test.ts +2 -2
- package/src/logic/getBalance.test.ts +18 -57
- package/src/logic/getTokenFromAsset.test.ts +2 -2
- package/src/logic/listOperations.ts +9 -5
- package/src/logic/utils.test.ts +157 -69
- package/src/logic/utils.ts +75 -13
- package/src/network/api.test.ts +211 -3
- package/src/network/api.ts +118 -24
- package/src/network/rpc.test.ts +1 -0
- package/src/network/rpc.ts +1 -0
- package/src/network/thirdweb.test.ts +188 -0
- package/src/network/thirdweb.ts +101 -0
- package/src/network/utils.test.ts +364 -164
- package/src/network/utils.ts +83 -1
- package/src/test/bridgeDatasetTest.ts +4 -5
- package/src/test/fixtures/account.fixture.ts +2 -2
- package/src/test/fixtures/common.fixture.ts +74 -0
- package/src/test/fixtures/currency.fixture.ts +66 -14
- package/src/test/fixtures/mirror.fixture.ts +23 -1
- package/src/test/fixtures/thirdweb.fixture.ts +33 -0
- package/src/transaction.ts +2 -0
- package/src/types/alpaca.ts +8 -1
- package/src/types/bridge.ts +6 -1
- package/src/types/index.ts +2 -0
- package/src/types/logic.ts +44 -0
- package/src/types/mirror.ts +35 -0
- package/src/types/thirdweb.ts +36 -0
package/lib-es/logic/utils.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import BigNumber from "bignumber.js";
|
|
2
2
|
import { createHash } from "crypto";
|
|
3
3
|
import invariant from "invariant";
|
|
4
|
-
import { AccountId, Transaction as HederaSDKTransaction } from "@hashgraph/sdk";
|
|
4
|
+
import { AccountId, EntityIdHelper, Transaction as HederaSDKTransaction, } from "@hashgraph/sdk";
|
|
5
5
|
import { findCryptoCurrencyById } from "@ledgerhq/cryptoassets/currencies";
|
|
6
6
|
import { getFiatCurrencyByTicker } from "@ledgerhq/cryptoassets/fiats";
|
|
7
7
|
import cvsApi from "@ledgerhq/live-countervalues/api/index";
|
|
@@ -45,9 +45,12 @@ export const mapIntentToSDKOperation = (txIntent) => {
|
|
|
45
45
|
if (txIntent.type === HEDERA_TRANSACTION_MODES.TokenAssociate) {
|
|
46
46
|
return HEDERA_OPERATION_TYPES.TokenAssociate;
|
|
47
47
|
}
|
|
48
|
-
if (txIntent.type === HEDERA_TRANSACTION_MODES.Send && txIntent.asset.type
|
|
48
|
+
if (txIntent.type === HEDERA_TRANSACTION_MODES.Send && txIntent.asset.type === "hts") {
|
|
49
49
|
return HEDERA_OPERATION_TYPES.TokenTransfer;
|
|
50
50
|
}
|
|
51
|
+
if (txIntent.type === HEDERA_TRANSACTION_MODES.Send && txIntent.asset.type === "erc20") {
|
|
52
|
+
return HEDERA_OPERATION_TYPES.ContractCall;
|
|
53
|
+
}
|
|
51
54
|
return HEDERA_OPERATION_TYPES.CryptoTransfer;
|
|
52
55
|
};
|
|
53
56
|
export const getMemoFromBase64 = (memoBase64) => {
|
|
@@ -79,6 +82,9 @@ export const isAutoTokenAssociationEnabled = (account) => {
|
|
|
79
82
|
return hederaAccount?.hederaResources?.isAutoTokenAssociationEnabled ?? false;
|
|
80
83
|
};
|
|
81
84
|
export const isTokenAssociationRequired = (account, token) => {
|
|
85
|
+
if (token?.tokenType !== "hts") {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
82
88
|
const subAccounts = !!account && "subAccounts" in account ? account.subAccounts ?? [] : [];
|
|
83
89
|
const isTokenAssociated = subAccounts.some(item => item.token.id === token?.id);
|
|
84
90
|
return !!token && !isTokenAssociated && !isAutoTokenAssociationEnabled(account);
|
|
@@ -110,7 +116,10 @@ export const getCurrencyToUSDRate = makeLRUCache(async (currency) => {
|
|
|
110
116
|
return null;
|
|
111
117
|
}
|
|
112
118
|
}, currency => currency.ticker, seconds(3));
|
|
113
|
-
export const checkAccountTokenAssociationStatus = makeLRUCache(async (address,
|
|
119
|
+
export const checkAccountTokenAssociationStatus = makeLRUCache(async (address, token) => {
|
|
120
|
+
if (token.tokenType !== "hts") {
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
114
123
|
const [parsingError, parsingResult] = safeParseAccountId(address);
|
|
115
124
|
if (parsingError) {
|
|
116
125
|
throw parsingError;
|
|
@@ -121,25 +130,20 @@ export const checkAccountTokenAssociationStatus = makeLRUCache(async (address, t
|
|
|
121
130
|
if (mirrorAccount.max_automatic_token_associations === -1) {
|
|
122
131
|
return true;
|
|
123
132
|
}
|
|
124
|
-
const isTokenAssociated = mirrorAccount.balance.tokens.some(
|
|
125
|
-
return
|
|
133
|
+
const isTokenAssociated = mirrorAccount.balance.tokens.some(t => {
|
|
134
|
+
return t.token_id === token.contractAddress;
|
|
126
135
|
});
|
|
127
136
|
return isTokenAssociated;
|
|
128
|
-
}, (accountId,
|
|
137
|
+
}, (accountId, token) => `${accountId}-${token.contractAddress}`, seconds(30));
|
|
129
138
|
export const safeParseAccountId = (address) => {
|
|
130
139
|
const currency = findCryptoCurrencyById("hedera");
|
|
131
140
|
const currencyName = currency?.name ?? "Hedera";
|
|
132
141
|
try {
|
|
133
142
|
const accountId = AccountId.fromString(address);
|
|
134
|
-
|
|
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;
|
|
143
|
+
const checksum = EntityIdHelper.fromString(address).checksum ?? null;
|
|
139
144
|
if (checksum) {
|
|
140
145
|
const client = rpcClient.getInstance();
|
|
141
|
-
const
|
|
142
|
-
const expectedChecksum = recipientWithChecksum.split("-")[1];
|
|
146
|
+
const expectedChecksum = accountId.toStringWithChecksum(client).split("-")[1];
|
|
143
147
|
if (checksum !== expectedChecksum) {
|
|
144
148
|
return [new HederaRecipientInvalidChecksum(), null];
|
|
145
149
|
}
|
|
@@ -171,4 +175,50 @@ export function getSyntheticBlock(consensusTimestamp, blockWindowSeconds = SYNTH
|
|
|
171
175
|
const blockTime = new Date(seconds * 1000);
|
|
172
176
|
return { blockHeight, blockHash, blockTime };
|
|
173
177
|
}
|
|
178
|
+
export const formatTransactionId = (transactionId) => {
|
|
179
|
+
const [accountId, timestamp] = transactionId.toString().split("@");
|
|
180
|
+
const [secs, nanos] = timestamp.split(".");
|
|
181
|
+
return `${accountId}-${secs}-${nanos}`;
|
|
182
|
+
};
|
|
183
|
+
/**
|
|
184
|
+
* Converts a Hedera account ID (e.g. "0.0.1234") into its corresponding EVM address in hexadecimal format.
|
|
185
|
+
* If the conversion fails, it returns null.
|
|
186
|
+
*
|
|
187
|
+
* @param address - Hedera account ID in the format `shard.realm.num`
|
|
188
|
+
* @returns the long-zero EVM address (`0x...`) or null if conversion fails
|
|
189
|
+
*/
|
|
190
|
+
export const toEVMAddress = (accountId) => {
|
|
191
|
+
try {
|
|
192
|
+
const evmAddress = "0x" + AccountId.fromString(accountId).toEvmAddress();
|
|
193
|
+
return evmAddress;
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
/**
|
|
200
|
+
* Converts EVM address in hexadecimal format to its corresponding Hedera account ID.
|
|
201
|
+
* Only long-zero addresses can be mathematically converted back to account IDs.
|
|
202
|
+
* Non-long-zero addresses support would require mirror node call and is not needed for now
|
|
203
|
+
* Uses shard 0 and realm 0 by default for the conversion.
|
|
204
|
+
* If the conversion fails, it returns null.
|
|
205
|
+
*
|
|
206
|
+
* @param evmAddress - EVM address in hexadecimal format (should start with '0x')
|
|
207
|
+
* @param shard - Optional shard ID (defaults to 0)
|
|
208
|
+
* @param realm - Optional realm ID (defaults to 0)
|
|
209
|
+
* @returns Hedera account ID in the format `shard.realm.num` or null if conversion fails
|
|
210
|
+
*/
|
|
211
|
+
export const fromEVMAddress = (evmAddress, shard = 0, realm = 0) => {
|
|
212
|
+
try {
|
|
213
|
+
const isLongZeroAddress = evmAddress.includes("0".repeat(20));
|
|
214
|
+
if (!isLongZeroAddress) {
|
|
215
|
+
return null;
|
|
216
|
+
}
|
|
217
|
+
const accountId = AccountId.fromEvmAddress(shard, realm, evmAddress).toString();
|
|
218
|
+
return accountId;
|
|
219
|
+
}
|
|
220
|
+
catch {
|
|
221
|
+
return null;
|
|
222
|
+
}
|
|
223
|
+
};
|
|
174
224
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/logic/utils.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/logic/utils.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EACL,SAAS,EACT,cAAc,EACd,WAAW,IAAI,oBAAoB,GAEpC,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,MAAM,MAAM,wCAAwC,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAGrE,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,8BAA8B,GAC/B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAQ3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,8BAA8B,EAAE,MAAM,WAAW,CAAC;AAE3D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,SAAqB,EAAE,EAAE;IAC1D,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,SAAiB,EAAE,EAAE;IACxD,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EAAwB,EAAE,EAAE;IAC/D,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EAAU,EAAE,EAAE;IACnD,OAAO,oBAAoB,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAChC,KAAK,EACL,SAAS,GAIV,EAAE,EAAE;IACH,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACxD,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,4FAA4F;AAC5F,iFAAiF;AACjF,gFAAgF;AAChF,mGAAmG;AACnG,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,EAAwB,EAAE,EAAE;IACxE,MAAM,SAAS,GAAG,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;IAC3D,SAAS,CAAC,SAAS,EAAE,mCAAmC,CAAC,CAAC;IAC1D,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,QAA2B,EAAE,EAAE;IACrE,IAAI,QAAQ,CAAC,IAAI,KAAK,wBAAwB,CAAC,cAAc,EAAE,CAAC;QAC9D,OAAO,sBAAsB,CAAC,cAAc,CAAC;IAC/C,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,KAAK,wBAAwB,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACrF,OAAO,sBAAsB,CAAC,aAAa,CAAC;IAC9C,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,KAAK,wBAAwB,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACvF,OAAO,sBAAsB,CAAC,YAAY,CAAC;IAC7C,CAAC;IAED,OAAO,sBAAsB,CAAC,cAAc,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,UAA8B,EAAiB,EAAE;IACjF,IAAI,CAAC;QACH,IAAI,UAAU,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAE1C,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,yGAAyG;AACzG,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,8EAA8E;IAC9E,uDAAuD;IACvD,qDAAqD;IAErD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,YAA6C,EAC7C,SAAwB,EACJ,EAAE;IACtB,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAErE,OAAO,YAAY,EAAE,EAAE,EAAE,OAAO,CAC9B,OAAO,EACP,KAAK,EAAE,kBAAkB,IAAI,KAAK,EAAE,aAAa,IAAI,GAAG,CACzD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,EAAe,EAAmC,EAAE;IAC9F,OAAO,EAAE,CAAC,IAAI,KAAK,wBAAwB,CAAC,cAAc,CAAC;AAC7D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,OAAoB,EAAE,EAAE;IACpE,MAAM,aAAa,GAAG,iBAAiB,IAAI,OAAO,CAAC,CAAC,CAAE,OAAyB,CAAC,CAAC,CAAC,IAAI,CAAC;IAEvF,OAAO,aAAa,EAAE,eAAe,EAAE,6BAA6B,IAAI,KAAK,CAAC;AAChF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,OAAoB,EACpB,KAAuC,EACvC,EAAE;IACF,IAAI,KAAK,EAAE,SAAS,KAAK,KAAK,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,IAAI,aAAa,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3F,MAAM,iBAAiB,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,EAAE,EAAE,CAAC,CAAC;IAEhF,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC,iBAAiB,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC;AAClF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAc,EAAiC,EAAE;IAC5E,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC,CAAC;AAEF,+FAA+F;AAC/F,mDAAmD;AACnD,6CAA6C;AAC7C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAyB,EAAE,EAAE;IAChE,MAAM,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;IAEtE,OAAO,CAAC,kBAAkB,IAAI,CAAC,qBAAqB,CAAC;AACvD,CAAC,CAAC;AAEF,4GAA4G;AAC5G,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAC9C,KAAK,EAAE,QAAkB,EAAE,EAAE;IAC3B,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC;YACtC;gBACE,IAAI,EAAE,QAAQ;gBACd,EAAE,EAAE,uBAAuB,CAAC,KAAK,CAAC;gBAClC,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB;SACF,CAAC,CAAC;QAEH,SAAS,CAAC,IAAI,EAAE,gCAAgC,CAAC,CAAC;QAElD,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,EACD,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,EAC3B,OAAO,CAAC,CAAC,CAAC,CACX,CAAC;AAEF,MAAM,CAAC,MAAM,kCAAkC,GAAG,YAAY,CAC5D,KAAK,EAAE,OAAe,EAAE,KAAoB,EAAE,EAAE;IAC9C,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAElE,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,YAAY,CAAC;IACrB,CAAC;IAED,MAAM,sBAAsB,GAAG,aAAa,CAAC,SAAS,CAAC;IACvD,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;IAEzE,8BAA8B;IAC9B,IAAI,aAAa,CAAC,gCAAgC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,iBAAiB,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;QAC9D,OAAO,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,eAAe,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,OAAO,iBAAiB,CAAC;AAC3B,CAAC,EACD,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,SAAS,IAAI,KAAK,CAAC,eAAe,EAAE,EAC7D,OAAO,CAAC,EAAE,CAAC,CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,OAAe,EACyD,EAAE;IAC1E,MAAM,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,QAAQ,EAAE,IAAI,IAAI,QAAQ,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC;QAErE,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;YACvC,MAAM,gBAAgB,GAAG,SAAS,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAE9E,IAAI,QAAQ,KAAK,gBAAgB,EAAE,CAAC;gBAClC,OAAO,CAAC,IAAI,8BAA8B,EAAE,EAAE,IAAI,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG;YACb,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE;YAC/B,QAAQ;SACT,CAAC;QAEF,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,cAAc,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,kBAA0B,EAC1B,kBAAkB,GAAG,8BAA8B;IAEnD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAEvD,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,gCAAgC,kBAAkB,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,kBAAkB,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpF,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAE3C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,aAA4B,EAAU,EAAE;IAC1E,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE3C,OAAO,GAAG,SAAS,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;AACzC,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAiB,EAAE,EAAE;IAChD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,CAAC;QACzE,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,UAAkB,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAiB,EAAE;IACxF,IAAI,CAAC;QACH,MAAM,iBAAiB,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAE9D,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAG,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChF,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC"}
|
package/lib-es/network/api.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import BigNumber from "bignumber.js";
|
|
2
|
+
import type { HederaMirrorAccount, HederaMirrorToken, HederaMirrorTransaction, HederaMirrorNetworkFees, HederaMirrorContractCallResult } from "../types";
|
|
2
3
|
declare function getAccountsForPublicKey(publicKey: string): Promise<HederaMirrorAccount[]>;
|
|
3
4
|
declare function getAccount(address: string): Promise<HederaMirrorAccount>;
|
|
4
5
|
declare function getAccountTransactions({ address, pagingToken, limit, order, fetchAllPages, }: {
|
|
@@ -13,12 +14,22 @@ declare function getAccountTransactions({ address, pagingToken, limit, order, fe
|
|
|
13
14
|
}>;
|
|
14
15
|
declare function getAccountTokens(address: string): Promise<HederaMirrorToken[]>;
|
|
15
16
|
declare function getLatestTransaction(): Promise<HederaMirrorTransaction>;
|
|
17
|
+
declare function getNetworkFees(): Promise<HederaMirrorNetworkFees>;
|
|
18
|
+
declare function getContractCallResult(transactionHash: string): Promise<HederaMirrorContractCallResult>;
|
|
19
|
+
declare function findTransactionByContractCall(timestamp: string, contractId: string): Promise<HederaMirrorTransaction | null>;
|
|
20
|
+
declare function getERC20Balance(accountEvmAddress: string, contractEvmAddress: string): Promise<BigNumber>;
|
|
21
|
+
declare function estimateContractCallGas(senderEvmAddress: string, recipientEvmAddress: string, contractEvmAddress: string, amount: bigint): Promise<BigNumber>;
|
|
16
22
|
export declare const apiClient: {
|
|
17
23
|
getAccountsForPublicKey: typeof getAccountsForPublicKey;
|
|
18
24
|
getAccount: typeof getAccount;
|
|
19
25
|
getAccountTokens: typeof getAccountTokens;
|
|
20
26
|
getAccountTransactions: typeof getAccountTransactions;
|
|
21
27
|
getLatestTransaction: typeof getLatestTransaction;
|
|
28
|
+
getNetworkFees: typeof getNetworkFees;
|
|
29
|
+
getContractCallResult: typeof getContractCallResult;
|
|
30
|
+
findTransactionByContractCall: typeof findTransactionByContractCall;
|
|
31
|
+
getERC20Balance: typeof getERC20Balance;
|
|
32
|
+
estimateContractCallGas: typeof estimateContractCallGas;
|
|
22
33
|
};
|
|
23
34
|
export {};
|
|
24
35
|
//# sourceMappingURL=api.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/network/api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/network/api.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAOrC,OAAO,KAAK,EAGV,mBAAmB,EAEnB,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,8BAA8B,EAG/B,MAAM,UAAU,CAAC;AAIlB,iBAAe,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAexF;AAED,iBAAe,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAgBvE;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,CAmDlF;AAED,iBAAe,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAmB7E;AAED,iBAAe,oBAAoB,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAiBtE;AAED,iBAAe,cAAc,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAOhE;AAED,iBAAe,qBAAqB,CAClC,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,8BAA8B,CAAC,CAOzC;AAED,iBAAe,6BAA6B,CAC1C,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAQzC;AAED,iBAAe,eAAe,CAC5B,iBAAiB,EAAE,MAAM,EACzB,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,SAAS,CAAC,CAgBpB;AAED,iBAAe,uBAAuB,CACpC,gBAAgB,EAAE,MAAM,EACxB,mBAAmB,EAAE,MAAM,EAC3B,kBAAkB,EAAE,MAAM,EAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,SAAS,CAAC,CAkBpB;AAED,eAAO,MAAM,SAAS;;;;;;;;;;;CAWrB,CAAC"}
|
package/lib-es/network/api.js
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
|
+
import BigNumber from "bignumber.js";
|
|
2
|
+
import { encodeFunctionData, erc20Abi } from "viem";
|
|
1
3
|
import network from "@ledgerhq/live-network";
|
|
2
4
|
import { getEnv } from "@ledgerhq/live-env";
|
|
3
5
|
import { LedgerAPI4xx } from "@ledgerhq/errors";
|
|
4
6
|
import { HederaAddAccountError } from "../errors";
|
|
5
|
-
const
|
|
6
|
-
const fetch = (path) => {
|
|
7
|
-
return network({
|
|
8
|
-
method: "GET",
|
|
9
|
-
url: `${getMirrorApiUrl()}${path}`,
|
|
10
|
-
});
|
|
11
|
-
};
|
|
7
|
+
const API_URL = getEnv("API_HEDERA_MIRROR");
|
|
12
8
|
async function getAccountsForPublicKey(publicKey) {
|
|
13
9
|
let res;
|
|
14
10
|
try {
|
|
15
|
-
res = await
|
|
11
|
+
res = await network({
|
|
12
|
+
method: "GET",
|
|
13
|
+
url: `${API_URL}/api/v1/accounts?account.publicKey=${publicKey}&balance=true&limit=100`,
|
|
14
|
+
});
|
|
16
15
|
}
|
|
17
16
|
catch (e) {
|
|
18
17
|
if (e instanceof LedgerAPI4xx)
|
|
@@ -24,7 +23,10 @@ async function getAccountsForPublicKey(publicKey) {
|
|
|
24
23
|
}
|
|
25
24
|
async function getAccount(address) {
|
|
26
25
|
try {
|
|
27
|
-
const res = await
|
|
26
|
+
const res = await network({
|
|
27
|
+
method: "GET",
|
|
28
|
+
url: `${API_URL}/api/v1/accounts/${address}`,
|
|
29
|
+
});
|
|
28
30
|
const account = res.data;
|
|
29
31
|
return account;
|
|
30
32
|
}
|
|
@@ -52,15 +54,18 @@ async function getAccountTransactions({ address, pagingToken, limit = 100, order
|
|
|
52
54
|
params.append("timestamp", `${getTimestampDirection()}:${pagingToken}`);
|
|
53
55
|
}
|
|
54
56
|
let nextCursor = null;
|
|
55
|
-
let
|
|
57
|
+
let nextPath = `/api/v1/transactions?${params.toString()}`;
|
|
56
58
|
// WARNING: don't break the loop when `transactions` array is empty but `links.next` is present
|
|
57
59
|
// the mirror node API enforces a 60-day max time range per query, even if `timestamp` param is set
|
|
58
60
|
// see: https://hedera.com/blog/changes-to-the-hedera-operated-mirror-node
|
|
59
|
-
while (
|
|
60
|
-
const res = await
|
|
61
|
+
while (nextPath) {
|
|
62
|
+
const res = await network({
|
|
63
|
+
method: "GET",
|
|
64
|
+
url: `${API_URL}${nextPath}`,
|
|
65
|
+
});
|
|
61
66
|
const newTransactions = res.data.transactions;
|
|
62
67
|
transactions.push(...newTransactions);
|
|
63
|
-
|
|
68
|
+
nextPath = res.data.links.next;
|
|
64
69
|
// stop fetching if pagination mode is used and we reached the limit
|
|
65
70
|
if (!fetchAllPages && transactions.length >= limit) {
|
|
66
71
|
break;
|
|
@@ -71,7 +76,7 @@ async function getAccountTransactions({ address, pagingToken, limit = 100, order
|
|
|
71
76
|
transactions.splice(limit);
|
|
72
77
|
}
|
|
73
78
|
// set the next cursor only if we have more transactions to fetch
|
|
74
|
-
if (!fetchAllPages &&
|
|
79
|
+
if (!fetchAllPages && nextPath) {
|
|
75
80
|
const lastTx = transactions.at(-1);
|
|
76
81
|
nextCursor = lastTx?.consensus_timestamp ?? null;
|
|
77
82
|
}
|
|
@@ -82,12 +87,15 @@ async function getAccountTokens(address) {
|
|
|
82
87
|
const params = new URLSearchParams({
|
|
83
88
|
limit: "100",
|
|
84
89
|
});
|
|
85
|
-
let
|
|
86
|
-
while (
|
|
87
|
-
const res = await
|
|
90
|
+
let nextPath = `/api/v1/accounts/${address}/tokens?${params.toString()}`;
|
|
91
|
+
while (nextPath) {
|
|
92
|
+
const res = await network({
|
|
93
|
+
method: "GET",
|
|
94
|
+
url: `${API_URL}${nextPath}`,
|
|
95
|
+
});
|
|
88
96
|
const newTokens = res.data.tokens;
|
|
89
97
|
tokens.push(...newTokens);
|
|
90
|
-
|
|
98
|
+
nextPath = res.data.links.next;
|
|
91
99
|
}
|
|
92
100
|
return tokens;
|
|
93
101
|
}
|
|
@@ -96,18 +104,82 @@ async function getLatestTransaction() {
|
|
|
96
104
|
limit: "1",
|
|
97
105
|
order: "desc",
|
|
98
106
|
});
|
|
99
|
-
const res = await
|
|
107
|
+
const res = await network({
|
|
108
|
+
method: "GET",
|
|
109
|
+
url: `${API_URL}/api/v1/transactions?${params.toString()}`,
|
|
110
|
+
});
|
|
100
111
|
const transaction = res.data.transactions[0];
|
|
101
112
|
if (!transaction) {
|
|
102
113
|
throw new Error("No transactions found on the Hedera network");
|
|
103
114
|
}
|
|
104
115
|
return transaction;
|
|
105
116
|
}
|
|
117
|
+
async function getNetworkFees() {
|
|
118
|
+
const res = await network({
|
|
119
|
+
method: "GET",
|
|
120
|
+
url: `${API_URL}/api/v1/network/fees`,
|
|
121
|
+
});
|
|
122
|
+
return res.data;
|
|
123
|
+
}
|
|
124
|
+
async function getContractCallResult(transactionHash) {
|
|
125
|
+
const res = await network({
|
|
126
|
+
method: "GET",
|
|
127
|
+
url: `${API_URL}/api/v1/contracts/results/${transactionHash}`,
|
|
128
|
+
});
|
|
129
|
+
return res.data;
|
|
130
|
+
}
|
|
131
|
+
async function findTransactionByContractCall(timestamp, contractId) {
|
|
132
|
+
const res = await network({
|
|
133
|
+
method: "GET",
|
|
134
|
+
url: `${API_URL}/api/v1/transactions?timestamp=${timestamp}`,
|
|
135
|
+
});
|
|
136
|
+
const transactions = res.data.transactions;
|
|
137
|
+
return transactions.find(el => el.name === "CONTRACTCALL" && el.entity_id === contractId) ?? null;
|
|
138
|
+
}
|
|
139
|
+
async function getERC20Balance(accountEvmAddress, contractEvmAddress) {
|
|
140
|
+
const res = await network({
|
|
141
|
+
method: "POST",
|
|
142
|
+
url: `${API_URL}/api/v1/contracts/call`,
|
|
143
|
+
data: {
|
|
144
|
+
block: "latest",
|
|
145
|
+
to: contractEvmAddress,
|
|
146
|
+
data: encodeFunctionData({
|
|
147
|
+
abi: erc20Abi,
|
|
148
|
+
functionName: "balanceOf",
|
|
149
|
+
args: [accountEvmAddress],
|
|
150
|
+
}),
|
|
151
|
+
},
|
|
152
|
+
});
|
|
153
|
+
return new BigNumber(res.data.result);
|
|
154
|
+
}
|
|
155
|
+
async function estimateContractCallGas(senderEvmAddress, recipientEvmAddress, contractEvmAddress, amount) {
|
|
156
|
+
const res = await network({
|
|
157
|
+
method: "POST",
|
|
158
|
+
url: `${API_URL}/api/v1/contracts/call`,
|
|
159
|
+
data: {
|
|
160
|
+
block: "latest",
|
|
161
|
+
estimate: true,
|
|
162
|
+
from: senderEvmAddress,
|
|
163
|
+
to: contractEvmAddress,
|
|
164
|
+
data: encodeFunctionData({
|
|
165
|
+
abi: erc20Abi,
|
|
166
|
+
functionName: "transfer",
|
|
167
|
+
args: [recipientEvmAddress, amount],
|
|
168
|
+
}),
|
|
169
|
+
},
|
|
170
|
+
});
|
|
171
|
+
return new BigNumber(res.data.result);
|
|
172
|
+
}
|
|
106
173
|
export const apiClient = {
|
|
107
174
|
getAccountsForPublicKey,
|
|
108
175
|
getAccount,
|
|
109
176
|
getAccountTokens,
|
|
110
177
|
getAccountTransactions,
|
|
111
178
|
getLatestTransaction,
|
|
179
|
+
getNetworkFees,
|
|
180
|
+
getContractCallResult,
|
|
181
|
+
findTransactionByContractCall,
|
|
182
|
+
getERC20Balance,
|
|
183
|
+
estimateContractCallGas,
|
|
112
184
|
};
|
|
113
185
|
//# sourceMappingURL=api.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/network/api.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/network/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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,
|
|
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,SAGtB;AAED,eAAO,MAAM,SAAS;;;;CAIrB,CAAC"}
|
package/lib-es/network/rpc.js
CHANGED
|
@@ -1 +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
|
+
{"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,EAAE,KAAK,EAAE,CAAC;IACvB,aAAa,GAAG,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,WAAW;IACX,oBAAoB;IACpB,cAAc;CACf,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { HederaThirdwebTransaction } from "../types";
|
|
2
|
+
interface FetchOptions extends Record<string, string> {
|
|
3
|
+
filterBlockTimestampGte?: string;
|
|
4
|
+
filterTopic0: string;
|
|
5
|
+
filterTopic1?: string;
|
|
6
|
+
filterTopic2?: string;
|
|
7
|
+
limit: string;
|
|
8
|
+
}
|
|
9
|
+
declare function fetchERC20Transactions(contractAddress: string, options: FetchOptions): Promise<HederaThirdwebTransaction[]>;
|
|
10
|
+
declare function getERC20TransactionsForAccount({ address, contractAddresses, transactionFetcher, since, }: {
|
|
11
|
+
address: string;
|
|
12
|
+
contractAddresses: string[];
|
|
13
|
+
since?: string | null;
|
|
14
|
+
transactionFetcher?: typeof fetchERC20Transactions;
|
|
15
|
+
}): Promise<HederaThirdwebTransaction[]>;
|
|
16
|
+
export declare const thirdwebClient: {
|
|
17
|
+
fetchERC20Transactions: typeof fetchERC20Transactions;
|
|
18
|
+
getERC20TransactionsForAccount: typeof getERC20TransactionsForAccount;
|
|
19
|
+
};
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=thirdweb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thirdweb.d.ts","sourceRoot":"","sources":["../../src/network/thirdweb.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,yBAAyB,EAAwC,MAAM,UAAU,CAAC;AAEhG,UAAU,YAAa,SAAQ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IACnD,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAID,iBAAe,sBAAsB,CACnC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAwBtC;AAED,iBAAe,8BAA8B,CAAC,EAC5C,OAAO,EACP,iBAAiB,EACjB,kBAA2C,EAC3C,KAAK,GACN,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,sBAAsB,CAAC;CACpD,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAoCvC;AAKD,eAAO,MAAM,cAAc;;;CAG1B,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { pad } from "viem";
|
|
2
|
+
import { getEnv } from "@ledgerhq/live-env";
|
|
3
|
+
import network from "@ledgerhq/live-network";
|
|
4
|
+
import { HEDERA_MAINNET_CHAIN_ID, ERC20_TRANSFER_EVENT_TOPIC } from "../constants";
|
|
5
|
+
import { toEVMAddress } from "../logic/utils";
|
|
6
|
+
const API_URL = getEnv("API_HEDERA_THIRDWEB_URL");
|
|
7
|
+
async function fetchERC20Transactions(contractAddress, options) {
|
|
8
|
+
const transactions = [];
|
|
9
|
+
const params = new URLSearchParams(options);
|
|
10
|
+
let page = 1;
|
|
11
|
+
let hasMorePages = true;
|
|
12
|
+
while (hasMorePages) {
|
|
13
|
+
params.set("page", page.toString());
|
|
14
|
+
const response = await network({
|
|
15
|
+
method: "GET",
|
|
16
|
+
url: `${API_URL}/v1/contracts/${HEDERA_MAINNET_CHAIN_ID}/${contractAddress}/events?${params.toString()}`,
|
|
17
|
+
});
|
|
18
|
+
const newTransactions = response.data.result.events;
|
|
19
|
+
transactions.push(...newTransactions);
|
|
20
|
+
// stop if we received fewer items than the limit or no items
|
|
21
|
+
if (newTransactions.length < Number(options.limit) || newTransactions.length === 0) {
|
|
22
|
+
hasMorePages = false;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
page++;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return transactions;
|
|
29
|
+
}
|
|
30
|
+
async function getERC20TransactionsForAccount({ address, contractAddresses, transactionFetcher = fetchERC20Transactions, since, }) {
|
|
31
|
+
const allTransactions = [];
|
|
32
|
+
const evmAddress = toEVMAddress(address);
|
|
33
|
+
if (contractAddresses.length === 0) {
|
|
34
|
+
return allTransactions;
|
|
35
|
+
}
|
|
36
|
+
if (!evmAddress) {
|
|
37
|
+
return allTransactions;
|
|
38
|
+
}
|
|
39
|
+
const baseParams = {
|
|
40
|
+
limit: "1000",
|
|
41
|
+
filterTopic0: ERC20_TRANSFER_EVENT_TOPIC,
|
|
42
|
+
...(since && { filterBlockTimestampGte: since }),
|
|
43
|
+
};
|
|
44
|
+
for (const contractAddress of contractAddresses) {
|
|
45
|
+
const outTransactionOptions = {
|
|
46
|
+
...baseParams,
|
|
47
|
+
filterTopic1: pad(evmAddress).toString(),
|
|
48
|
+
};
|
|
49
|
+
const inTransactionOptions = {
|
|
50
|
+
...baseParams,
|
|
51
|
+
filterTopic2: pad(evmAddress).toString(),
|
|
52
|
+
};
|
|
53
|
+
const outgoingTxs = await transactionFetcher(contractAddress, outTransactionOptions);
|
|
54
|
+
const incomingTxs = await transactionFetcher(contractAddress, inTransactionOptions);
|
|
55
|
+
allTransactions.push(...outgoingTxs, ...incomingTxs);
|
|
56
|
+
}
|
|
57
|
+
return allTransactions;
|
|
58
|
+
}
|
|
59
|
+
// Thirdweb API is used in addition to mirror node because:
|
|
60
|
+
// - mirror node has a 1-week range limitation for ERC20 events queries
|
|
61
|
+
// - mirror node has rate limits that we could exceed with ERC20 integration
|
|
62
|
+
export const thirdwebClient = {
|
|
63
|
+
fetchERC20Transactions,
|
|
64
|
+
getERC20TransactionsForAccount,
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=thirdweb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thirdweb.js","sourceRoot":"","sources":["../../src/network/thirdweb.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import type { Operation } from "@ledgerhq/types-live";
|
|
2
|
-
import type { HederaMirrorTokenTransfer, HederaMirrorCoinTransfer } from "../types";
|
|
2
|
+
import type { HederaMirrorTokenTransfer, HederaMirrorCoinTransfer, HederaThirdwebTransaction, HederaThirdwebDecodedTransferParams, OperationERC20, HederaERC20TokenBalance } from "../types";
|
|
3
3
|
export declare function parseTransfers(mirrorTransfers: (HederaMirrorCoinTransfer | HederaMirrorTokenTransfer)[], address: string): Pick<Operation, "type" | "value" | "senders" | "recipients">;
|
|
4
|
+
export declare function getERC20BalancesForAccount(evmAccountId: string, supportedTokenIds?: string[]): Promise<HederaERC20TokenBalance[]>;
|
|
5
|
+
export declare const getERC20Operations: (latestERC20Transactions: HederaThirdwebTransaction[]) => Promise<OperationERC20[]>;
|
|
6
|
+
export declare function parseThirdwebTransactionParams(transaction: HederaThirdwebTransaction): HederaThirdwebDecodedTransferParams | null;
|
|
4
7
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/network/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/network/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,sBAAsB,CAAC;AAErE,OAAO,KAAK,EACV,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,mCAAmC,EACnC,cAAc,EACd,uBAAuB,EACxB,MAAM,UAAU,CAAC;AAoBlB,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;AAED,wBAAsB,0BAA0B,CAC9C,YAAY,EAAE,MAAM,EACpB,iBAAiB,WAAgD,GAChE,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAuBpC;AAED,eAAO,MAAM,kBAAkB,4BACJ,yBAAyB,EAAE,KACnD,QAAQ,cAAc,EAAE,CA2B1B,CAAC;AAEF,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,yBAAyB,GACrC,mCAAmC,GAAG,IAAI,CAQ5C"}
|
package/lib-es/network/utils.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import BigNumber from "bignumber.js";
|
|
2
2
|
import { AccountId } from "@hashgraph/sdk";
|
|
3
|
+
import { getCryptoAssetsStore } from "@ledgerhq/cryptoassets/state";
|
|
4
|
+
import { apiClient } from "./api";
|
|
5
|
+
import { SUPPORTED_ERC20_TOKENS } from "../constants";
|
|
3
6
|
function isValidRecipient(accountId, recipients) {
|
|
4
7
|
if (accountId.shard.eq(0) && accountId.realm.eq(0)) {
|
|
5
8
|
// account is a node, only add to list if we have none
|
|
@@ -42,4 +45,50 @@ export function parseTransfers(mirrorTransfers, address) {
|
|
|
42
45
|
recipients,
|
|
43
46
|
};
|
|
44
47
|
}
|
|
48
|
+
export async function getERC20BalancesForAccount(evmAccountId, supportedTokenIds = SUPPORTED_ERC20_TOKENS.map(token => token.id)) {
|
|
49
|
+
const availableTokens = [];
|
|
50
|
+
for (const erc20TokenId of supportedTokenIds) {
|
|
51
|
+
const calToken = await getCryptoAssetsStore().findTokenById(erc20TokenId);
|
|
52
|
+
if (calToken) {
|
|
53
|
+
availableTokens.push(calToken);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
const promises = availableTokens.map(async (erc20token) => {
|
|
57
|
+
const balance = await apiClient.getERC20Balance(evmAccountId, erc20token.contractAddress);
|
|
58
|
+
return {
|
|
59
|
+
balance,
|
|
60
|
+
token: erc20token,
|
|
61
|
+
};
|
|
62
|
+
});
|
|
63
|
+
const balances = await Promise.all(promises);
|
|
64
|
+
return balances;
|
|
65
|
+
}
|
|
66
|
+
export const getERC20Operations = async (latestERC20Transactions) => {
|
|
67
|
+
const latestERC20Operations = [];
|
|
68
|
+
for (const thirdwebTransaction of latestERC20Transactions) {
|
|
69
|
+
const tokenId = thirdwebTransaction.address;
|
|
70
|
+
const token = await getCryptoAssetsStore().findTokenByAddressInCurrency(tokenId, "hedera");
|
|
71
|
+
if (!token)
|
|
72
|
+
continue;
|
|
73
|
+
const hash = thirdwebTransaction.transactionHash;
|
|
74
|
+
const contractCallResult = await apiClient.getContractCallResult(hash);
|
|
75
|
+
const mirrorTransaction = await apiClient.findTransactionByContractCall(contractCallResult.timestamp, contractCallResult.contract_id);
|
|
76
|
+
if (!mirrorTransaction)
|
|
77
|
+
continue;
|
|
78
|
+
latestERC20Operations.push({
|
|
79
|
+
thirdwebTransaction,
|
|
80
|
+
mirrorTransaction,
|
|
81
|
+
contractCallResult,
|
|
82
|
+
token,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
return latestERC20Operations;
|
|
86
|
+
};
|
|
87
|
+
export function parseThirdwebTransactionParams(transaction) {
|
|
88
|
+
const { from, to, value } = transaction.decoded.params;
|
|
89
|
+
if (typeof from !== "string" || typeof to !== "string" || typeof value !== "string") {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
return { from, to, value };
|
|
93
|
+
}
|
|
45
94
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/network/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;AAQxE,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"}
|