From 9b1cf6c3be4e07fa674bda4c0fb26590ccabb4d5 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Thu, 7 Nov 2024 21:53:29 +0000 Subject: [PATCH 1/2] Update account.ts --- src/account.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/account.ts b/src/account.ts index 2a2428b3..075a4d45 100644 --- a/src/account.ts +++ b/src/account.ts @@ -7,6 +7,7 @@ import { createViemClient, getDataFetcher } from "./config"; import { ChainId, LiquidityProviders, RPParams } from "sushi"; import { mnemonicToAccount, privateKeyToAccount } from "viem/accounts"; import { erc20Abi, multicall3Abi, orderbookAbi, routeProcessor3Abi } from "./abis"; +import { getTransactionCount } from "viem/_types/actions/public/getTransactionCount"; import { context, Context, SpanStatusCode, trace, Tracer } from "@opentelemetry/api"; import { BotConfig, CliOptions, ViemClient, TokenDetails, OwnedOrder } from "./types"; import { createNonceManager, NonceManagerSource, parseAbi, PublicClient } from "viem"; @@ -1091,7 +1092,7 @@ export function noneSource(): NonceManagerSource { return { async get(parameters) { const { address, client } = parameters; - return (client as ViemClient).getTransactionCount({ + return getTransactionCount(client as any, { address, blockTag: "latest", }); From 11e538f2a06a8818acb40054f9074acafe6a079e Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Thu, 7 Nov 2024 22:06:57 +0000 Subject: [PATCH 2/2] Update account.ts --- src/account.ts | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/account.ts b/src/account.ts index 075a4d45..492f76b6 100644 --- a/src/account.ts +++ b/src/account.ts @@ -7,10 +7,16 @@ import { createViemClient, getDataFetcher } from "./config"; import { ChainId, LiquidityProviders, RPParams } from "sushi"; import { mnemonicToAccount, privateKeyToAccount } from "viem/accounts"; import { erc20Abi, multicall3Abi, orderbookAbi, routeProcessor3Abi } from "./abis"; -import { getTransactionCount } from "viem/_types/actions/public/getTransactionCount"; import { context, Context, SpanStatusCode, trace, Tracer } from "@opentelemetry/api"; import { BotConfig, CliOptions, ViemClient, TokenDetails, OwnedOrder } from "./types"; -import { createNonceManager, NonceManagerSource, parseAbi, PublicClient } from "viem"; +import { + parseAbi, + hexToNumber, + numberToHex, + PublicClient, + createNonceManager, + NonceManagerSource, +} from "viem"; /** Standard base path for eth accounts */ export const BasePath = "m/44'/60'/0'/0/" as const; @@ -1100,3 +1106,20 @@ export function noneSource(): NonceManagerSource { set() {}, }; } + +/** + * Perfomrs a eth_getTransactionCount rpc request + */ +async function getTransactionCount( + client: any, + { address, blockTag = "latest", blockNumber }: any, +): Promise { + const count = await client.request( + { + method: "eth_getTransactionCount", + params: [address, blockNumber ? numberToHex(blockNumber) : blockTag], + }, + { dedupe: Boolean(blockNumber) }, + ); + return hexToNumber(count); +}