genlayer-js 0.9.3 → 0.9.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/dist/index.cjs +17 -64
- package/dist/index.js +0 -47
- package/package.json +1 -1
- package/src/contracts/actions.ts +1 -71
- package/src/transactions/actions.ts +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
+
## 0.9.4 (2025-05-20)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* remove DXP-298 code ([#85](https://github.com/yeagerai/genlayer-js/issues/85)) ([3db4cff](https://github.com/yeagerai/genlayer-js/commit/3db4cffedd1a53396d390883dcdee5d26f775d72))
|
|
9
|
+
|
|
3
10
|
## 0.9.3 (2025-05-14)
|
|
4
11
|
|
|
5
12
|
## 0.9.2 (2025-05-14)
|
package/dist/index.cjs
CHANGED
|
@@ -438,20 +438,6 @@ var contractActions = (client, publicClient) => {
|
|
|
438
438
|
leaderOnly = false,
|
|
439
439
|
transactionHashVariant = "latest-final" /* LATEST_FINAL */
|
|
440
440
|
} = args;
|
|
441
|
-
if (client.chain.id === _chunkSMCXL465cjs.localnet.id) {
|
|
442
|
-
return _localnetReadContract({
|
|
443
|
-
client,
|
|
444
|
-
args: {
|
|
445
|
-
account,
|
|
446
|
-
address,
|
|
447
|
-
functionName,
|
|
448
|
-
args: callArgs,
|
|
449
|
-
kwargs,
|
|
450
|
-
stateStatus: transactionHashVariant === "latest-final" /* LATEST_FINAL */ ? "FINALIZED" /* FINALIZED */ : "ACCEPTED" /* ACCEPTED */,
|
|
451
|
-
rawReturn: _nullishCoalesce(args.rawReturn, () => ( false))
|
|
452
|
-
}
|
|
453
|
-
});
|
|
454
|
-
}
|
|
455
441
|
const encodedData = [encode(makeCalldataObject(functionName, callArgs, kwargs)), leaderOnly];
|
|
456
442
|
const serializedData = serialize(encodedData);
|
|
457
443
|
const senderAddress = _nullishCoalesce(_optionalChain([account, 'optionalAccess', _5 => _5.address]), () => ( _optionalChain([client, 'access', _6 => _6.account, 'optionalAccess', _7 => _7.address])));
|
|
@@ -522,36 +508,6 @@ var contractActions = (client, publicClient) => {
|
|
|
522
508
|
}
|
|
523
509
|
};
|
|
524
510
|
};
|
|
525
|
-
var _localnetReadContract = async ({
|
|
526
|
-
client,
|
|
527
|
-
args
|
|
528
|
-
}) => {
|
|
529
|
-
const {
|
|
530
|
-
account,
|
|
531
|
-
address,
|
|
532
|
-
functionName,
|
|
533
|
-
args: callArgs,
|
|
534
|
-
kwargs,
|
|
535
|
-
stateStatus = "ACCEPTED" /* ACCEPTED */
|
|
536
|
-
} = args;
|
|
537
|
-
const encodedData = encode(makeCalldataObject(functionName, callArgs, kwargs));
|
|
538
|
-
const serializedData = serializeOne(encodedData);
|
|
539
|
-
const senderAddress = _nullishCoalesce(_optionalChain([account, 'optionalAccess', _8 => _8.address]), () => ( _optionalChain([client, 'access', _9 => _9.account, 'optionalAccess', _10 => _10.address])));
|
|
540
|
-
const requestParams = {
|
|
541
|
-
to: address,
|
|
542
|
-
from: senderAddress,
|
|
543
|
-
data: serializedData
|
|
544
|
-
};
|
|
545
|
-
const result = await client.request({
|
|
546
|
-
method: "eth_call",
|
|
547
|
-
params: [requestParams, stateStatus == "FINALIZED" /* FINALIZED */ ? "finalized" : "latest"]
|
|
548
|
-
});
|
|
549
|
-
if (args.rawReturn) {
|
|
550
|
-
return result;
|
|
551
|
-
}
|
|
552
|
-
const resultBinary = _viem.fromHex.call(void 0, result, "bytes");
|
|
553
|
-
return decode(resultBinary);
|
|
554
|
-
};
|
|
555
511
|
var _sendTransaction = async ({
|
|
556
512
|
client,
|
|
557
513
|
publicClient,
|
|
@@ -566,11 +522,11 @@ var _sendTransaction = async ({
|
|
|
566
522
|
"No account set. Configure the client with an account or pass an account to this function."
|
|
567
523
|
);
|
|
568
524
|
}
|
|
569
|
-
if (!_optionalChain([client, 'access',
|
|
525
|
+
if (!_optionalChain([client, 'access', _8 => _8.chain, 'access', _9 => _9.consensusMainContract, 'optionalAccess', _10 => _10.address])) {
|
|
570
526
|
throw new Error("Consensus main contract not initialized. Please ensure client is properly initialized.");
|
|
571
527
|
}
|
|
572
528
|
const encodedData = _viem.encodeFunctionData.call(void 0, {
|
|
573
|
-
abi: _optionalChain([client, 'access',
|
|
529
|
+
abi: _optionalChain([client, 'access', _11 => _11.chain, 'access', _12 => _12.consensusMainContract, 'optionalAccess', _13 => _13.abi]),
|
|
574
530
|
functionName: "addTransaction",
|
|
575
531
|
args: [
|
|
576
532
|
senderAccount.address,
|
|
@@ -583,13 +539,13 @@ var _sendTransaction = async ({
|
|
|
583
539
|
const nonce = await client.getCurrentNonce({ address: senderAccount.address });
|
|
584
540
|
const transactionRequest = await client.prepareTransactionRequest({
|
|
585
541
|
account: senderAccount,
|
|
586
|
-
to: _optionalChain([client, 'access',
|
|
542
|
+
to: _optionalChain([client, 'access', _14 => _14.chain, 'access', _15 => _15.consensusMainContract, 'optionalAccess', _16 => _16.address]),
|
|
587
543
|
data: encodedData,
|
|
588
544
|
type: "legacy",
|
|
589
545
|
nonce: Number(nonce),
|
|
590
546
|
value: _nullishCoalesce(value, () => ( 0n))
|
|
591
547
|
});
|
|
592
|
-
if (_optionalChain([senderAccount, 'optionalAccess',
|
|
548
|
+
if (_optionalChain([senderAccount, 'optionalAccess', _17 => _17.type]) !== "local") {
|
|
593
549
|
const formattedRequest = {
|
|
594
550
|
from: transactionRequest.from,
|
|
595
551
|
to: transactionRequest.to,
|
|
@@ -601,20 +557,17 @@ var _sendTransaction = async ({
|
|
|
601
557
|
params: [formattedRequest]
|
|
602
558
|
});
|
|
603
559
|
}
|
|
604
|
-
if (!_optionalChain([senderAccount, 'optionalAccess',
|
|
560
|
+
if (!_optionalChain([senderAccount, 'optionalAccess', _18 => _18.signTransaction])) {
|
|
605
561
|
throw new Error("Account does not support signTransaction");
|
|
606
562
|
}
|
|
607
563
|
const serializedTransaction = await senderAccount.signTransaction(transactionRequest);
|
|
608
564
|
const txHash = await client.sendRawTransaction({ serializedTransaction });
|
|
609
|
-
if (client.chain.id === _chunkSMCXL465cjs.localnet.id) {
|
|
610
|
-
return txHash;
|
|
611
|
-
}
|
|
612
565
|
const receipt = await publicClient.waitForTransactionReceipt({ hash: txHash });
|
|
613
566
|
if (receipt.status === "reverted") {
|
|
614
567
|
throw new Error("Transaction reverted");
|
|
615
568
|
}
|
|
616
569
|
const newTxEvents = _viem.parseEventLogs.call(void 0, {
|
|
617
|
-
abi: _optionalChain([client, 'access',
|
|
570
|
+
abi: _optionalChain([client, 'access', _19 => _19.chain, 'access', _20 => _20.consensusMainContract, 'optionalAccess', _21 => _21.abi]),
|
|
618
571
|
eventName: "NewTransaction",
|
|
619
572
|
logs: receipt.logs
|
|
620
573
|
});
|
|
@@ -730,8 +683,8 @@ var transactionActions = (client, publicClient) => ({
|
|
|
730
683
|
return _decodeLocalnetTransaction(transaction2);
|
|
731
684
|
}
|
|
732
685
|
const transaction = await publicClient.readContract({
|
|
733
|
-
address: _optionalChain([client, 'access',
|
|
734
|
-
abi: _optionalChain([client, 'access',
|
|
686
|
+
address: _optionalChain([client, 'access', _22 => _22.chain, 'access', _23 => _23.consensusDataContract, 'optionalAccess', _24 => _24.address]),
|
|
687
|
+
abi: _optionalChain([client, 'access', _25 => _25.chain, 'access', _26 => _26.consensusDataContract, 'optionalAccess', _27 => _27.abi]),
|
|
735
688
|
functionName: "getTransactionData",
|
|
736
689
|
args: [
|
|
737
690
|
hash,
|
|
@@ -819,7 +772,7 @@ var _decodeTransaction = (tx) => {
|
|
|
819
772
|
var _decodeLocalnetTransaction = (tx) => {
|
|
820
773
|
if (!tx.data) return tx;
|
|
821
774
|
try {
|
|
822
|
-
const leaderReceipt = _optionalChain([tx, 'access',
|
|
775
|
+
const leaderReceipt = _optionalChain([tx, 'access', _28 => _28.consensus_data, 'optionalAccess', _29 => _29.leader_receipt]);
|
|
823
776
|
if (leaderReceipt) {
|
|
824
777
|
if (leaderReceipt.result && typeof leaderReceipt.result === "string") {
|
|
825
778
|
leaderReceipt.result = resultToUserFriendlyJson(leaderReceipt.result);
|
|
@@ -839,7 +792,7 @@ var _decodeLocalnetTransaction = (tx) => {
|
|
|
839
792
|
);
|
|
840
793
|
}
|
|
841
794
|
}
|
|
842
|
-
if (_optionalChain([tx, 'access',
|
|
795
|
+
if (_optionalChain([tx, 'access', _30 => _30.data, 'optionalAccess', _31 => _31.calldata]) && typeof tx.data.calldata === "string") {
|
|
843
796
|
tx.data.calldata = {
|
|
844
797
|
base64: tx.data.calldata,
|
|
845
798
|
...calldataToUserFriendlyJson(b64ToArray(tx.data.calldata))
|
|
@@ -4892,7 +4845,7 @@ var connect = async (client, network = "studionet", snapSource = "npm") => {
|
|
|
4892
4845
|
chainName: selectedNetwork.name,
|
|
4893
4846
|
rpcUrls: selectedNetwork.rpcUrls.default.http,
|
|
4894
4847
|
nativeCurrency: selectedNetwork.nativeCurrency,
|
|
4895
|
-
blockExplorerUrls: [_optionalChain([selectedNetwork, 'access',
|
|
4848
|
+
blockExplorerUrls: [_optionalChain([selectedNetwork, 'access', _32 => _32.blockExplorers, 'optionalAccess', _33 => _33.default, 'access', _34 => _34.url])]
|
|
4896
4849
|
};
|
|
4897
4850
|
const currentChainId = await window.ethereum.request({ method: "eth_chainId" });
|
|
4898
4851
|
if (currentChainId !== chainIdHex) {
|
|
@@ -4926,10 +4879,10 @@ var metamaskClient = async (snapSource = "npm") => {
|
|
|
4926
4879
|
}
|
|
4927
4880
|
const isFlask = async () => {
|
|
4928
4881
|
try {
|
|
4929
|
-
const clientVersion = await _optionalChain([window, 'access',
|
|
4882
|
+
const clientVersion = await _optionalChain([window, 'access', _35 => _35.ethereum, 'optionalAccess', _36 => _36.request, 'call', _37 => _37({
|
|
4930
4883
|
method: "web3_clientVersion"
|
|
4931
4884
|
})]);
|
|
4932
|
-
return _optionalChain([clientVersion, 'optionalAccess',
|
|
4885
|
+
return _optionalChain([clientVersion, 'optionalAccess', _38 => _38.includes, 'call', _39 => _39("flask")]);
|
|
4933
4886
|
} catch (error) {
|
|
4934
4887
|
console.error("Error detecting Flask:", error);
|
|
4935
4888
|
return false;
|
|
@@ -4937,7 +4890,7 @@ var metamaskClient = async (snapSource = "npm") => {
|
|
|
4937
4890
|
};
|
|
4938
4891
|
const installedSnaps = async () => {
|
|
4939
4892
|
try {
|
|
4940
|
-
return await _optionalChain([window, 'access',
|
|
4893
|
+
return await _optionalChain([window, 'access', _40 => _40.ethereum, 'optionalAccess', _41 => _41.request, 'call', _42 => _42({
|
|
4941
4894
|
method: "wallet_getSnaps"
|
|
4942
4895
|
})]);
|
|
4943
4896
|
} catch (error) {
|
|
@@ -4972,10 +4925,10 @@ function walletActions(client) {
|
|
|
4972
4925
|
function chainActions(client) {
|
|
4973
4926
|
return {
|
|
4974
4927
|
initializeConsensusSmartContract: async (forceReset = false) => {
|
|
4975
|
-
if (_optionalChain([client, 'access',
|
|
4928
|
+
if (_optionalChain([client, 'access', _43 => _43.chain, 'optionalAccess', _44 => _44.id]) === _chunkSMCXL465cjs.testnetAsimov.id) {
|
|
4976
4929
|
return;
|
|
4977
4930
|
}
|
|
4978
|
-
if (!forceReset && _optionalChain([client, 'access',
|
|
4931
|
+
if (!forceReset && _optionalChain([client, 'access', _45 => _45.chain, 'access', _46 => _46.consensusMainContract, 'optionalAccess', _47 => _47.address]) && _optionalChain([client, 'access', _48 => _48.chain, 'access', _49 => _49.consensusMainContract, 'optionalAccess', _50 => _50.abi])) {
|
|
4979
4932
|
return;
|
|
4980
4933
|
}
|
|
4981
4934
|
const contractsResponse = await fetch(client.chain.rpcUrls.default.http[0], {
|
|
@@ -5006,7 +4959,7 @@ var getCustomTransportConfig = (config) => {
|
|
|
5006
4959
|
async request({ method, params = [] }) {
|
|
5007
4960
|
if (method.startsWith("eth_") && isAddress) {
|
|
5008
4961
|
try {
|
|
5009
|
-
return await _optionalChain([window, 'access',
|
|
4962
|
+
return await _optionalChain([window, 'access', _51 => _51.ethereum, 'optionalAccess', _52 => _52.request, 'call', _53 => _53({ method, params })]);
|
|
5010
4963
|
} catch (err) {
|
|
5011
4964
|
console.warn(`Error using window.ethereum for method ${method}:`, err);
|
|
5012
4965
|
throw err;
|
package/dist/index.js
CHANGED
|
@@ -438,20 +438,6 @@ var contractActions = (client, publicClient) => {
|
|
|
438
438
|
leaderOnly = false,
|
|
439
439
|
transactionHashVariant = "latest-final" /* LATEST_FINAL */
|
|
440
440
|
} = args;
|
|
441
|
-
if (client.chain.id === localnet.id) {
|
|
442
|
-
return _localnetReadContract({
|
|
443
|
-
client,
|
|
444
|
-
args: {
|
|
445
|
-
account,
|
|
446
|
-
address,
|
|
447
|
-
functionName,
|
|
448
|
-
args: callArgs,
|
|
449
|
-
kwargs,
|
|
450
|
-
stateStatus: transactionHashVariant === "latest-final" /* LATEST_FINAL */ ? "FINALIZED" /* FINALIZED */ : "ACCEPTED" /* ACCEPTED */,
|
|
451
|
-
rawReturn: args.rawReturn ?? false
|
|
452
|
-
}
|
|
453
|
-
});
|
|
454
|
-
}
|
|
455
441
|
const encodedData = [encode(makeCalldataObject(functionName, callArgs, kwargs)), leaderOnly];
|
|
456
442
|
const serializedData = serialize(encodedData);
|
|
457
443
|
const senderAddress = account?.address ?? client.account?.address;
|
|
@@ -522,36 +508,6 @@ var contractActions = (client, publicClient) => {
|
|
|
522
508
|
}
|
|
523
509
|
};
|
|
524
510
|
};
|
|
525
|
-
var _localnetReadContract = async ({
|
|
526
|
-
client,
|
|
527
|
-
args
|
|
528
|
-
}) => {
|
|
529
|
-
const {
|
|
530
|
-
account,
|
|
531
|
-
address,
|
|
532
|
-
functionName,
|
|
533
|
-
args: callArgs,
|
|
534
|
-
kwargs,
|
|
535
|
-
stateStatus = "ACCEPTED" /* ACCEPTED */
|
|
536
|
-
} = args;
|
|
537
|
-
const encodedData = encode(makeCalldataObject(functionName, callArgs, kwargs));
|
|
538
|
-
const serializedData = serializeOne(encodedData);
|
|
539
|
-
const senderAddress = account?.address ?? client.account?.address;
|
|
540
|
-
const requestParams = {
|
|
541
|
-
to: address,
|
|
542
|
-
from: senderAddress,
|
|
543
|
-
data: serializedData
|
|
544
|
-
};
|
|
545
|
-
const result = await client.request({
|
|
546
|
-
method: "eth_call",
|
|
547
|
-
params: [requestParams, stateStatus == "FINALIZED" /* FINALIZED */ ? "finalized" : "latest"]
|
|
548
|
-
});
|
|
549
|
-
if (args.rawReturn) {
|
|
550
|
-
return result;
|
|
551
|
-
}
|
|
552
|
-
const resultBinary = fromHex(result, "bytes");
|
|
553
|
-
return decode(resultBinary);
|
|
554
|
-
};
|
|
555
511
|
var _sendTransaction = async ({
|
|
556
512
|
client,
|
|
557
513
|
publicClient,
|
|
@@ -606,9 +562,6 @@ var _sendTransaction = async ({
|
|
|
606
562
|
}
|
|
607
563
|
const serializedTransaction = await senderAccount.signTransaction(transactionRequest);
|
|
608
564
|
const txHash = await client.sendRawTransaction({ serializedTransaction });
|
|
609
|
-
if (client.chain.id === localnet.id) {
|
|
610
|
-
return txHash;
|
|
611
|
-
}
|
|
612
565
|
const receipt = await publicClient.waitForTransactionReceipt({ hash: txHash });
|
|
613
566
|
if (receipt.status === "reverted") {
|
|
614
567
|
throw new Error("Transaction reverted");
|
package/package.json
CHANGED
package/src/contracts/actions.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as calldata from "@/abi/calldata";
|
|
2
|
-
import {serialize
|
|
2
|
+
import {serialize} from "@/abi/transactions";
|
|
3
3
|
import {localnet} from "@/chains/localnet";
|
|
4
4
|
import {
|
|
5
5
|
Account,
|
|
@@ -9,7 +9,6 @@ import {
|
|
|
9
9
|
CalldataEncodable,
|
|
10
10
|
Address,
|
|
11
11
|
TransactionHashVariant,
|
|
12
|
-
TransactionStatus,
|
|
13
12
|
} from "@/types";
|
|
14
13
|
import {fromHex, toHex, zeroAddress, encodeFunctionData, PublicClient, parseEventLogs} from "viem";
|
|
15
14
|
|
|
@@ -92,25 +91,6 @@ export const contractActions = (client: GenLayerClient<GenLayerChain>, publicCli
|
|
|
92
91
|
transactionHashVariant = TransactionHashVariant.LATEST_FINAL,
|
|
93
92
|
} = args;
|
|
94
93
|
|
|
95
|
-
// TODO: remove this once DXP-298 is merged
|
|
96
|
-
if (client.chain.id === localnet.id) {
|
|
97
|
-
return _localnetReadContract({
|
|
98
|
-
client,
|
|
99
|
-
args: {
|
|
100
|
-
account,
|
|
101
|
-
address,
|
|
102
|
-
functionName,
|
|
103
|
-
args: callArgs,
|
|
104
|
-
kwargs,
|
|
105
|
-
stateStatus:
|
|
106
|
-
transactionHashVariant === TransactionHashVariant.LATEST_FINAL
|
|
107
|
-
? TransactionStatus.FINALIZED
|
|
108
|
-
: TransactionStatus.ACCEPTED,
|
|
109
|
-
rawReturn: args.rawReturn ?? false,
|
|
110
|
-
},
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
|
|
114
94
|
const encodedData = [calldata.encode(makeCalldataObject(functionName, callArgs, kwargs)), leaderOnly];
|
|
115
95
|
const serializedData = serialize(encodedData);
|
|
116
96
|
|
|
@@ -200,51 +180,6 @@ export const contractActions = (client: GenLayerClient<GenLayerChain>, publicCli
|
|
|
200
180
|
},
|
|
201
181
|
};
|
|
202
182
|
};
|
|
203
|
-
// TODO: remove this once DXP-298 is merged
|
|
204
|
-
const _localnetReadContract = async ({
|
|
205
|
-
client,
|
|
206
|
-
args,
|
|
207
|
-
}: {
|
|
208
|
-
client: GenLayerClient<GenLayerChain>;
|
|
209
|
-
args: {
|
|
210
|
-
account?: Account;
|
|
211
|
-
address: Address;
|
|
212
|
-
functionName: string;
|
|
213
|
-
args?: CalldataEncodable[];
|
|
214
|
-
kwargs?: Map<string, CalldataEncodable> | {[key: string]: CalldataEncodable};
|
|
215
|
-
stateStatus?: TransactionStatus;
|
|
216
|
-
rawReturn?: boolean;
|
|
217
|
-
};
|
|
218
|
-
}) => {
|
|
219
|
-
const {
|
|
220
|
-
account,
|
|
221
|
-
address,
|
|
222
|
-
functionName,
|
|
223
|
-
args: callArgs,
|
|
224
|
-
kwargs,
|
|
225
|
-
stateStatus = TransactionStatus.ACCEPTED,
|
|
226
|
-
} = args;
|
|
227
|
-
const encodedData = calldata.encode(makeCalldataObject(functionName, callArgs, kwargs));
|
|
228
|
-
const serializedData = serializeOne(encodedData);
|
|
229
|
-
|
|
230
|
-
const senderAddress = account?.address ?? client.account?.address;
|
|
231
|
-
|
|
232
|
-
const requestParams = {
|
|
233
|
-
to: address,
|
|
234
|
-
from: senderAddress,
|
|
235
|
-
data: serializedData,
|
|
236
|
-
};
|
|
237
|
-
const result = await client.request({
|
|
238
|
-
method: "eth_call",
|
|
239
|
-
params: [requestParams, stateStatus == TransactionStatus.FINALIZED ? "finalized" : "latest"],
|
|
240
|
-
});
|
|
241
|
-
|
|
242
|
-
if (args.rawReturn) {
|
|
243
|
-
return result;
|
|
244
|
-
}
|
|
245
|
-
const resultBinary = fromHex(result, "bytes");
|
|
246
|
-
return calldata.decode(resultBinary) as any;
|
|
247
|
-
};
|
|
248
183
|
|
|
249
184
|
const _sendTransaction = async ({
|
|
250
185
|
client,
|
|
@@ -317,11 +252,6 @@ const _sendTransaction = async ({
|
|
|
317
252
|
|
|
318
253
|
const txHash = await client.sendRawTransaction({serializedTransaction: serializedTransaction});
|
|
319
254
|
|
|
320
|
-
// TODO: remove this once DXP-298 is merged
|
|
321
|
-
if (client.chain.id === localnet.id) {
|
|
322
|
-
return txHash;
|
|
323
|
-
}
|
|
324
|
-
|
|
325
255
|
const receipt = await publicClient.waitForTransactionReceipt({hash: txHash});
|
|
326
256
|
|
|
327
257
|
if (receipt.status === "reverted") {
|
|
@@ -68,7 +68,6 @@ export const receiptActions = (client: GenLayerClient<GenLayerChain>, publicClie
|
|
|
68
68
|
|
|
69
69
|
export const transactionActions = (client: GenLayerClient<GenLayerChain>, publicClient: PublicClient) => ({
|
|
70
70
|
getTransaction: async ({hash}: {hash: TransactionHash}): Promise<GenLayerTransaction> => {
|
|
71
|
-
// TODO: remove this once DXP-298 is merged
|
|
72
71
|
if (client.chain.id === localnet.id) {
|
|
73
72
|
const transaction = await client.getTransaction({hash});
|
|
74
73
|
const localnetStatus =
|