Skip to content

Commit ae36c3f

Browse files
feat: add nonce to txOverrides (#59)
* feat: add nonce to txOverrides * fix: lint & format --------- Co-authored-by: Dustin Brickwood <dustinbrickwood204@gmail.com>
1 parent 933b48b commit ae36c3f

File tree

11 files changed

+64
-20
lines changed

11 files changed

+64
-20
lines changed

src/adapters/ethers/resources/deposits/context.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import type { EthersClient } from '../../client';
44
import type { Address, Hex } from '../../../../core/types/primitives';
55
import type { DepositParams, DepositRoute } from '../../../../core/types/flows/deposits';
66
import type { CommonCtx } from '../../../../core/types/flows/base';
7-
import type { TxOverrides } from '../../../../core/types/fees';
7+
import { type TxGasOverrides, toGasOverrides } from '../../../../core/types/fees';
88
import type { ResolvedToken, TokensResource } from '../../../../core/types/flows/token';
99
import type { ContractsResource } from '../contracts';
1010

@@ -22,7 +22,7 @@ export interface BuildCtx extends CommonCtx {
2222

2323
l1AssetRouter: Address;
2424

25-
gasOverrides?: TxOverrides;
25+
gasOverrides?: TxGasOverrides;
2626
l2GasLimit?: bigint;
2727
gasPerPubdata: bigint;
2828
operatorTip: bigint;
@@ -72,7 +72,7 @@ export async function commonCtx(
7272
bridgehub,
7373
chainIdL2: BigInt(chainId),
7474
sender,
75-
gasOverrides: p.l1TxOverrides,
75+
gasOverrides: p.l1TxOverrides ? toGasOverrides(p.l1TxOverrides) : undefined,
7676
l2GasLimit: p.l2GasLimit,
7777
gasPerPubdata,
7878
operatorTip,

src/adapters/ethers/resources/deposits/index.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,13 @@ export function createDepositsResource(
182182

183183
const managed = new NonceManager(client.signer);
184184
const from = await managed.getAddress();
185-
let next = await client.l1.getTransactionCount(from, 'latest');
185+
let next: number;
186+
if (typeof p.l1TxOverrides?.nonce === 'number') {
187+
next = p.l1TxOverrides.nonce;
188+
} else {
189+
const blockTag = p.l1TxOverrides?.nonce ?? 'latest';
190+
next = await client.l1.getTransactionCount(from, blockTag);
191+
}
186192

187193
for (const step of plan.steps) {
188194
// re-check allowance

src/adapters/ethers/resources/deposits/services/gas.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import type { TransactionRequest } from 'ethers';
44
import type { BuildCtx } from '../context';
55
import type { DepositRoute } from '../../../../../core/types/flows/deposits';
6-
import type { TxOverrides } from '../../../../../core/types/fees';
6+
import type { TxGasOverrides } from '../../../../../core/types/fees';
77
import type { Address } from '../../../../../core/types/primitives';
88
import {
99
quoteL1Gas as coreQuoteL1Gas,
@@ -17,7 +17,7 @@ export type { GasQuote };
1717
export type QuoteL1GasInput = {
1818
ctx: BuildCtx;
1919
tx: TransactionRequest;
20-
overrides?: TxOverrides;
20+
overrides?: TxGasOverrides;
2121
fallbackGasLimit?: bigint;
2222
};
2323

src/adapters/ethers/resources/withdrawals/context.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import type { Address } from '../../../../core/types/primitives';
55
import { pickWithdrawRoute } from '../../../../core/resources/withdrawals/route';
66
import { type WithdrawParams, type WithdrawRoute } from '../../../../core/types/flows/withdrawals';
77
import type { CommonCtx } from '../../../../core/types/flows/base';
8-
import type { TxOverrides } from '../../../../core/types/fees';
8+
import { type TxGasOverrides, toGasOverrides } from '../../../../core/types/fees';
99
import type { Hex } from '../../../../core/types/primitives';
1010
import type { ResolvedToken, TokensResource } from '../../../../core/types/flows/token';
1111
import type { ContractsResource } from '../contracts';
@@ -31,7 +31,7 @@ export interface BuildCtx extends CommonCtx {
3131
l2BaseTokenSystem: Address;
3232

3333
// L2 gas
34-
gasOverrides?: TxOverrides;
34+
gasOverrides?: TxGasOverrides;
3535
}
3636

3737
export async function commonCtx(
@@ -79,6 +79,6 @@ export async function commonCtx(
7979
l2NativeTokenVault,
8080
l2BaseTokenSystem,
8181
baseIsEth,
82-
gasOverrides: p.l2TxOverrides,
82+
gasOverrides: p.l2TxOverrides ? toGasOverrides(p.l2TxOverrides) : undefined,
8383
} satisfies BuildCtx & { route: WithdrawRoute };
8484
}

src/adapters/ethers/resources/withdrawals/index.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,13 @@ export function createWithdrawalsResource(
193193

194194
const managed = new NonceManager(client.getL2Signer());
195195
const from = await managed.getAddress();
196-
let next = await client.l2.getTransactionCount(from, 'pending');
196+
let next: number;
197+
if (typeof p.l2TxOverrides?.nonce === 'number') {
198+
next = p.l2TxOverrides.nonce;
199+
} else {
200+
const blockTag = p.l2TxOverrides?.nonce ?? 'pending';
201+
next = await client.l2.getTransactionCount(from, blockTag);
202+
}
197203

198204
for (const step of plan.steps) {
199205
step.tx.nonce = next++;

src/adapters/viem/resources/deposits/context.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import type { ViemClient } from '../../client';
33
import type { Address, Hex } from '../../../../core/types/primitives';
44
import type { DepositParams, DepositRoute } from '../../../../core/types/flows/deposits';
55
import type { CommonCtx } from '../../../../core/types/flows/base';
6-
import type { TxOverrides } from '../../../../core/types/fees';
6+
import { type TxGasOverrides, toGasOverrides } from '../../../../core/types/fees';
77
import type { ResolvedToken, TokensResource } from '../../../../core/types/flows/token';
88
import type { ContractsResource } from '../contracts';
99

@@ -21,7 +21,7 @@ export interface BuildCtx extends CommonCtx {
2121

2222
l1AssetRouter: Address;
2323

24-
gasOverrides?: TxOverrides;
24+
gasOverrides?: TxGasOverrides;
2525
l2GasLimit?: bigint;
2626
gasPerPubdata: bigint;
2727
operatorTip: bigint;
@@ -71,7 +71,7 @@ export async function commonCtx(
7171
bridgehub,
7272
chainIdL2: BigInt(chainId),
7373
sender,
74-
gasOverrides: p.l1TxOverrides,
74+
gasOverrides: p.l1TxOverrides ? toGasOverrides(p.l1TxOverrides) : undefined,
7575
l2GasLimit: p.l2GasLimit,
7676
gasPerPubdata,
7777
operatorTip,

src/adapters/viem/resources/deposits/index.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,13 @@ export function createDepositsResource(
188188
const stepHashes: Record<string, Hex> = {};
189189

190190
const from = client.account.address;
191-
// TODO: remove this
192-
let next = await client.l1.getTransactionCount({ address: from, blockTag: 'latest' });
191+
let next: number;
192+
if (typeof p.l1TxOverrides?.nonce === 'number') {
193+
next = p.l1TxOverrides.nonce;
194+
} else {
195+
const blockTag = p.l1TxOverrides?.nonce ?? 'latest';
196+
next = await client.l1.getTransactionCount({ address: from, blockTag });
197+
}
193198

194199
for (const step of plan.steps) {
195200
// Re-check allowance

src/adapters/viem/resources/deposits/services/gas.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import { zeroAddress, type TransactionRequest } from 'viem';
44
import type { BuildCtx } from '../context';
55
import type { DepositRoute } from '../../../../../core/types/flows/deposits';
6-
import type { TxOverrides } from '../../../../../core/types/fees';
6+
import type { TxGasOverrides } from '../../../../../core/types/fees';
77
import type { Address } from '../../../../../core/types/primitives';
88
import {
99
quoteL1Gas as coreQuoteL1Gas,
@@ -17,7 +17,7 @@ export type { GasQuote };
1717
export type QuoteL1GasInput = {
1818
ctx: BuildCtx;
1919
tx: TransactionRequest;
20-
overrides?: TxOverrides;
20+
overrides?: TxGasOverrides;
2121
fallbackGasLimit?: bigint;
2222
};
2323

src/adapters/viem/resources/withdrawals/context.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import type { Address } from '../../../../core/types/primitives';
55
import { pickWithdrawRoute } from '../../../../core/resources/withdrawals/route';
66
import { type WithdrawParams, type WithdrawRoute } from '../../../../core/types/flows/withdrawals';
77
import type { CommonCtx } from '../../../../core/types/flows/base';
8-
import type { TxOverrides } from '../../../../core/types/fees';
8+
import { type TxGasOverrides, toGasOverrides } from '../../../../core/types/fees';
99
import type { Hex } from '../../../../core/types/primitives';
1010
import type { ResolvedToken, TokensResource } from '../../../../core/types/flows/token';
1111
import type { ContractsResource } from '../contracts';
@@ -31,7 +31,7 @@ export interface BuildCtx extends CommonCtx {
3131
l2BaseTokenSystem: Address;
3232

3333
// L2 gas
34-
gasOverrides?: TxOverrides;
34+
gasOverrides?: TxGasOverrides;
3535
}
3636

3737
export async function commonCtx(
@@ -78,6 +78,6 @@ export async function commonCtx(
7878
l2NativeTokenVault,
7979
l2BaseTokenSystem,
8080
baseIsEth,
81-
gasOverrides: p.l2TxOverrides,
81+
gasOverrides: p.l2TxOverrides ? toGasOverrides(p.l2TxOverrides) : undefined,
8282
} satisfies BuildCtx & { route: WithdrawRoute };
8383
}

src/adapters/viem/resources/withdrawals/index.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,15 @@ export function createWithdrawalsResource(
190190
const stepHashes: Record<string, Hex> = {};
191191

192192
const l2Wallet = client.getL2Wallet();
193+
const from = client.account.address;
194+
195+
let next: number;
196+
if (typeof p.l2TxOverrides?.nonce === 'number') {
197+
next = p.l2TxOverrides.nonce;
198+
} else {
199+
const blockTag = p.l2TxOverrides?.nonce ?? 'pending';
200+
next = await client.l2.getTransactionCount({ address: from, blockTag });
201+
}
193202

194203
for (const step of plan.steps) {
195204
if (p.l2TxOverrides) {
@@ -237,13 +246,16 @@ export function createWithdrawalsResource(
237246
}
238247
: {};
239248

249+
const nonce = next++;
250+
240251
const baseReq = {
241252
address: step.tx.address,
242253
abi: step.tx.abi as Abi,
243254
functionName: step.tx.functionName,
244255
args: step.tx.args ?? [],
245256
account: step.tx.account ?? l2Wallet.account ?? client.account,
246257
gas: step.tx.gas,
258+
nonce,
247259
...fee1559,
248260
...(step.tx.dataSuffix ? { dataSuffix: step.tx.dataSuffix } : {}),
249261
...(step.tx.chain ? { chain: step.tx.chain } : {}),

0 commit comments

Comments
 (0)