genlayer-js 0.9.3 → 0.9.5

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 CHANGED
@@ -1,5 +1,19 @@
1
1
 
2
2
 
3
+ ## 0.9.5 (2025-05-21)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * update readContract with TransactionHashVariant ([#86](https://github.com/yeagerai/genlayer-js/issues/86)) ([7cbeb04](https://github.com/yeagerai/genlayer-js/commit/7cbeb040b55c4bc3acf173bdae51da51deef7a83))
9
+
10
+ ## 0.9.4 (2025-05-20)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * remove DXP-298 code ([#85](https://github.com/yeagerai/genlayer-js/issues/85)) ([3db4cff](https://github.com/yeagerai/genlayer-js/commit/3db4cffedd1a53396d390883dcdee5d26f775d72))
16
+
3
17
  ## 0.9.3 (2025-05-14)
4
18
 
5
19
  ## 0.9.2 (2025-05-14)
@@ -323,12 +323,12 @@ type GenLayerClient<TGenLayerChain extends GenLayerChain> = Omit<Client<Transpor
323
323
  account?: Account;
324
324
  address: Address;
325
325
  functionName: string;
326
- stateStatus?: TransactionStatus;
327
326
  args?: CalldataEncodable[];
328
327
  kwargs?: Map<string, CalldataEncodable> | {
329
328
  [key: string]: CalldataEncodable;
330
329
  };
331
330
  rawReturn?: RawReturn;
331
+ transactionHashVariant?: TransactionHashVariant;
332
332
  }) => Promise<RawReturn extends true ? `0x${string}` : CalldataEncodable>;
333
333
  writeContract: (args: {
334
334
  account?: Account;
@@ -323,12 +323,12 @@ type GenLayerClient<TGenLayerChain extends GenLayerChain> = Omit<Client<Transpor
323
323
  account?: Account;
324
324
  address: Address;
325
325
  functionName: string;
326
- stateStatus?: TransactionStatus;
327
326
  args?: CalldataEncodable[];
328
327
  kwargs?: Map<string, CalldataEncodable> | {
329
328
  [key: string]: CalldataEncodable;
330
329
  };
331
330
  rawReturn?: RawReturn;
331
+ transactionHashVariant?: TransactionHashVariant;
332
332
  }) => Promise<RawReturn extends true ? `0x${string}` : CalldataEncodable>;
333
333
  writeContract: (args: {
334
334
  account?: Account;
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', _11 => _11.chain, 'access', _12 => _12.consensusMainContract, 'optionalAccess', _13 => _13.address])) {
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', _14 => _14.chain, 'access', _15 => _15.consensusMainContract, 'optionalAccess', _16 => _16.abi]),
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', _17 => _17.chain, 'access', _18 => _18.consensusMainContract, 'optionalAccess', _19 => _19.address]),
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', _20 => _20.type]) !== "local") {
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', _21 => _21.signTransaction])) {
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', _22 => _22.chain, 'access', _23 => _23.consensusMainContract, 'optionalAccess', _24 => _24.abi]),
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', _25 => _25.chain, 'access', _26 => _26.consensusDataContract, 'optionalAccess', _27 => _27.address]),
734
- abi: _optionalChain([client, 'access', _28 => _28.chain, 'access', _29 => _29.consensusDataContract, 'optionalAccess', _30 => _30.abi]),
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', _31 => _31.consensus_data, 'optionalAccess', _32 => _32.leader_receipt]);
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', _33 => _33.data, 'optionalAccess', _34 => _34.calldata]) && typeof tx.data.calldata === "string") {
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', _35 => _35.blockExplorers, 'optionalAccess', _36 => _36.default, 'access', _37 => _37.url])]
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', _38 => _38.ethereum, 'optionalAccess', _39 => _39.request, 'call', _40 => _40({
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', _41 => _41.includes, 'call', _42 => _42("flask")]);
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', _43 => _43.ethereum, 'optionalAccess', _44 => _44.request, 'call', _45 => _45({
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', _46 => _46.chain, 'optionalAccess', _47 => _47.id]) === _chunkSMCXL465cjs.testnetAsimov.id) {
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', _48 => _48.chain, 'access', _49 => _49.consensusMainContract, 'optionalAccess', _50 => _50.address]) && _optionalChain([client, 'access', _51 => _51.chain, 'access', _52 => _52.consensusMainContract, 'optionalAccess', _53 => _53.abi])) {
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', _54 => _54.ethereum, 'optionalAccess', _55 => _55.request, 'call', _56 => _56({ method, params })]);
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.d.cts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as viem from 'viem';
2
2
  import { Account, Address } from 'viem';
3
3
  import { G as GenLayerChain } from './chains-BYSCF33g.cjs';
4
- import { G as GenLayerClient, C as CalldataEncodable, T as TransactionDataElement } from './index-B_gpaVzJ.cjs';
4
+ import { G as GenLayerClient, C as CalldataEncodable, T as TransactionDataElement } from './index-CWYHlYb1.cjs';
5
5
  import * as abitype from 'abitype';
6
6
  import * as viem__types_types_authorization from 'viem/_types/types/authorization';
7
7
  import * as viem_accounts from 'viem/accounts';
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as viem from 'viem';
2
2
  import { Account, Address } from 'viem';
3
3
  import { G as GenLayerChain } from './chains-BYSCF33g.js';
4
- import { G as GenLayerClient, C as CalldataEncodable, T as TransactionDataElement } from './index-to6d0Hzj.js';
4
+ import { G as GenLayerClient, C as CalldataEncodable, T as TransactionDataElement } from './index-CjM-U5oN.js';
5
5
  import * as abitype from 'abitype';
6
6
  import * as viem__types_types_authorization from 'viem/_types/types/authorization';
7
7
  import * as viem_accounts from 'viem/accounts';
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");
@@ -1,3 +1,3 @@
1
1
  export { Account, Address } from 'viem';
2
- export { a as CalldataAddress, C as CalldataEncodable, f as ContractMethod, e as ContractMethodBase, c as ContractParamsArraySchemaElement, d as ContractParamsSchema, g as ContractSchema, q as DecodedCallData, D as DecodedDeployData, G as GenLayerClient, b as GenLayerMethod, s as GenLayerRawTransaction, r as GenLayerTransaction, H as Hash, M as MethodDescription, N as Network, S as SnapSource, h as TransactionHash, p as TransactionHashVariant, j as TransactionResult, m as TransactionResultNameToNumber, i as TransactionStatus, o as TransactionType, V as VoteType, l as transactionResultNumberToName, k as transactionsStatusNameToNumber, t as transactionsStatusNumberToName, n as voteTypeNameToNumber, v as voteTypeNumberToName } from '../index-B_gpaVzJ.cjs';
2
+ export { a as CalldataAddress, C as CalldataEncodable, f as ContractMethod, e as ContractMethodBase, c as ContractParamsArraySchemaElement, d as ContractParamsSchema, g as ContractSchema, q as DecodedCallData, D as DecodedDeployData, G as GenLayerClient, b as GenLayerMethod, s as GenLayerRawTransaction, r as GenLayerTransaction, H as Hash, M as MethodDescription, N as Network, S as SnapSource, h as TransactionHash, p as TransactionHashVariant, j as TransactionResult, m as TransactionResultNameToNumber, i as TransactionStatus, o as TransactionType, V as VoteType, l as transactionResultNumberToName, k as transactionsStatusNameToNumber, t as transactionsStatusNumberToName, n as voteTypeNameToNumber, v as voteTypeNumberToName } from '../index-CWYHlYb1.cjs';
3
3
  export { G as GenLayerChain } from '../chains-BYSCF33g.cjs';
@@ -1,3 +1,3 @@
1
1
  export { Account, Address } from 'viem';
2
- export { a as CalldataAddress, C as CalldataEncodable, f as ContractMethod, e as ContractMethodBase, c as ContractParamsArraySchemaElement, d as ContractParamsSchema, g as ContractSchema, q as DecodedCallData, D as DecodedDeployData, G as GenLayerClient, b as GenLayerMethod, s as GenLayerRawTransaction, r as GenLayerTransaction, H as Hash, M as MethodDescription, N as Network, S as SnapSource, h as TransactionHash, p as TransactionHashVariant, j as TransactionResult, m as TransactionResultNameToNumber, i as TransactionStatus, o as TransactionType, V as VoteType, l as transactionResultNumberToName, k as transactionsStatusNameToNumber, t as transactionsStatusNumberToName, n as voteTypeNameToNumber, v as voteTypeNumberToName } from '../index-to6d0Hzj.js';
2
+ export { a as CalldataAddress, C as CalldataEncodable, f as ContractMethod, e as ContractMethodBase, c as ContractParamsArraySchemaElement, d as ContractParamsSchema, g as ContractSchema, q as DecodedCallData, D as DecodedDeployData, G as GenLayerClient, b as GenLayerMethod, s as GenLayerRawTransaction, r as GenLayerTransaction, H as Hash, M as MethodDescription, N as Network, S as SnapSource, h as TransactionHash, p as TransactionHashVariant, j as TransactionResult, m as TransactionResultNameToNumber, i as TransactionStatus, o as TransactionType, V as VoteType, l as transactionResultNumberToName, k as transactionsStatusNameToNumber, t as transactionsStatusNumberToName, n as voteTypeNameToNumber, v as voteTypeNumberToName } from '../index-CjM-U5oN.js';
3
3
  export { G as GenLayerChain } from '../chains-BYSCF33g.js';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "genlayer-js",
3
3
  "type": "module",
4
- "version": "0.9.3",
4
+ "version": "0.9.5",
5
5
  "description": "GenLayer JavaScript SDK",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -1,5 +1,5 @@
1
1
  import * as calldata from "@/abi/calldata";
2
- import {serialize, serializeOne} from "@/abi/transactions";
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 =
@@ -1,5 +1,5 @@
1
1
  import {Transport, Client, PublicActions, WalletActions} from "viem";
2
- import {GenLayerTransaction, TransactionHash, TransactionStatus} from "./transactions";
2
+ import {GenLayerTransaction, TransactionHash, TransactionStatus, TransactionHashVariant} from "./transactions";
3
3
  import {GenLayerChain} from "./chains";
4
4
  import {Address, Account} from "./accounts";
5
5
  import {CalldataEncodable} from "./calldata";
@@ -43,10 +43,10 @@ export type GenLayerClient<TGenLayerChain extends GenLayerChain> = Omit<
43
43
  account?: Account;
44
44
  address: Address;
45
45
  functionName: string;
46
- stateStatus?: TransactionStatus;
47
46
  args?: CalldataEncodable[];
48
47
  kwargs?: Map<string, CalldataEncodable> | {[key: string]: CalldataEncodable};
49
48
  rawReturn?: RawReturn;
49
+ transactionHashVariant?: TransactionHashVariant;
50
50
  }) => Promise<RawReturn extends true ? `0x${string}` : CalldataEncodable>;
51
51
  writeContract: (args: {
52
52
  account?: Account;
@@ -4,7 +4,7 @@ import {localnet} from "@/chains/localnet";
4
4
  import {Address} from "../src/types/accounts";
5
5
  import {createAccount, generatePrivateKey} from "../src/accounts/account";
6
6
  import {vi} from "vitest";
7
- import {TransactionStatus} from "../src/types/transactions";
7
+ import {TransactionHashVariant} from "../src/types/transactions";
8
8
 
9
9
  // Setup fetch mock
10
10
  const mockFetch = vi.fn();
@@ -95,7 +95,7 @@ describe("Client Overrides", () => {
95
95
  address: contractAddress as Address,
96
96
  functionName: "testFunction",
97
97
  args: ["arg1", "arg2"],
98
- stateStatus: TransactionStatus.ACCEPTED, // Kept as is, matches type, ignored by current gen_call impl.
98
+ transactionHashVariant: TransactionHashVariant.LATEST_NONFINAL,
99
99
  });
100
100
 
101
101
  expect(lastGenCallParams).toEqual([
@@ -104,7 +104,7 @@ describe("Client Overrides", () => {
104
104
  to: contractAddress,
105
105
  from: account.address,
106
106
  data: expect.any(String), // The data is complex, checking type is often sufficient
107
- transaction_hash_variant: "latest-final",
107
+ transaction_hash_variant: TransactionHashVariant.LATEST_NONFINAL,
108
108
  },
109
109
  ]);
110
110
  });
@@ -126,7 +126,7 @@ describe("Client Overrides", () => {
126
126
  address: contractAddress as Address,
127
127
  functionName: "testFunction",
128
128
  args: ["arg1", "arg2"],
129
- stateStatus: TransactionStatus.ACCEPTED,
129
+ transactionHashVariant: TransactionHashVariant.LATEST_FINAL,
130
130
  });
131
131
 
132
132
  expect(lastGenCallParams).toEqual([
@@ -135,7 +135,7 @@ describe("Client Overrides", () => {
135
135
  to: contractAddress,
136
136
  from: overrideAccount.address,
137
137
  data: expect.any(String),
138
- transaction_hash_variant: "latest-final",
138
+ transaction_hash_variant: TransactionHashVariant.LATEST_FINAL,
139
139
  },
140
140
  ]);
141
141
  });
@@ -164,7 +164,7 @@ describe("Client Overrides", () => {
164
164
  to: contractAddress,
165
165
  from: accountAddressString, // Expecting the address string directly
166
166
  data: expect.any(String),
167
- transaction_hash_variant: "latest-final",
167
+ transaction_hash_variant: TransactionHashVariant.LATEST_FINAL,
168
168
  },
169
169
  ]);
170
170
  });