@aztec/bot 3.0.0-nightly.20250930 → 3.0.0-nightly.20251002

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/dest/amm_bot.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { AztecAddress, SentTx, TxReceipt, type Wallet } from '@aztec/aztec.js';
1
+ import { AztecAddress, SentTx, TxReceipt } from '@aztec/aztec.js';
2
2
  import type { AMMContract } from '@aztec/noir-contracts.js/AMM';
3
3
  import type { TokenContract } from '@aztec/noir-contracts.js/Token';
4
4
  import type { AztecNode, AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
@@ -14,7 +14,7 @@ export declare class AmmBot extends BaseBot {
14
14
  readonly amm: AMMContract;
15
15
  readonly token0: TokenContract;
16
16
  readonly token1: TokenContract;
17
- protected constructor(node: AztecNode, wallet: Wallet, defaultAccountAddress: AztecAddress, amm: AMMContract, token0: TokenContract, token1: TokenContract, config: BotConfig);
17
+ protected constructor(node: AztecNode, wallet: TestWallet, defaultAccountAddress: AztecAddress, amm: AMMContract, token0: TokenContract, token1: TokenContract, config: BotConfig);
18
18
  static create(config: BotConfig, wallet: TestWallet, aztecNode: AztecNode, aztecNodeAdmin: AztecNodeAdmin | undefined, store: BotStore): Promise<AmmBot>;
19
19
  protected createAndSendTx(logCtx: object): Promise<SentTx>;
20
20
  protected onTxMined(receipt: TxReceipt, logCtx: object): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"amm_bot.d.ts","sourceRoot":"","sources":["../src/amm_bot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAM,MAAM,EAAE,SAAS,EAAE,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAKjD,KAAK,QAAQ,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD,qBAAa,MAAO,SAAQ,OAAO;aAKf,GAAG,EAAE,WAAW;aAChB,MAAM,EAAE,aAAa;aACrB,MAAM,EAAE,aAAa;IANvC,SAAS,aACP,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,MAAM,EACd,qBAAqB,EAAE,YAAY,EACnB,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,aAAa,EACrC,MAAM,EAAE,SAAS;WAKN,MAAM,CACjB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,KAAK,EAAE,QAAQ,GACd,OAAO,CAAC,MAAM,CAAC;cAWF,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;cA+CvC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9E,cAAc,IAAI,OAAO,CAAC,QAAQ,CAAC;IAI7B,WAAW,IAAI,OAAO,CAAC;QAAE,YAAY,EAAE,QAAQ,CAAC;QAAC,aAAa,EAAE,QAAQ,CAAC;QAAC,GAAG,EAAE,QAAQ,CAAA;KAAE,CAAC;YAQzF,mBAAmB;YAMnB,oBAAoB;CAMnC"}
1
+ {"version":3,"file":"amm_bot.d.ts","sourceRoot":"","sources":["../src/amm_bot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAM,MAAM,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAKjD,KAAK,QAAQ,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD,qBAAa,MAAO,SAAQ,OAAO;aAKf,GAAG,EAAE,WAAW;aAChB,MAAM,EAAE,aAAa;aACrB,MAAM,EAAE,aAAa;IANvC,SAAS,aACP,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,UAAU,EAClB,qBAAqB,EAAE,YAAY,EACnB,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,aAAa,EACrC,MAAM,EAAE,SAAS;WAKN,MAAM,CACjB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,KAAK,EAAE,QAAQ,GACd,OAAO,CAAC,MAAM,CAAC;cAWF,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;cA+CvC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9E,cAAc,IAAI,OAAO,CAAC,QAAQ,CAAC;IAI7B,WAAW,IAAI,OAAO,CAAC;QAAE,YAAY,EAAE,QAAQ,CAAC;QAAC,aAAa,EAAE,QAAQ,CAAC;QAAC,GAAG,EAAE,QAAQ,CAAA;KAAE,CAAC;YAQzF,mBAAmB;YAMnB,oBAAoB;CAMnC"}
@@ -1,15 +1,16 @@
1
- import { AztecAddress, BatchCall, ContractFunctionInteraction, type SendMethodOptions, SentTx, TxHash, TxReceipt, type Wallet } from '@aztec/aztec.js';
1
+ import { AztecAddress, BatchCall, ContractFunctionInteraction, type SendMethodOptions, SentTx, TxHash, TxReceipt } from '@aztec/aztec.js';
2
2
  import type { AztecNode } from '@aztec/stdlib/interfaces/client';
3
+ import type { TestWallet } from '@aztec/test-wallet';
3
4
  import type { BotConfig } from './config.js';
4
5
  export declare abstract class BaseBot {
5
6
  readonly node: AztecNode;
6
- readonly wallet: Wallet;
7
+ readonly wallet: TestWallet;
7
8
  readonly defaultAccountAddress: AztecAddress;
8
9
  config: BotConfig;
9
10
  protected log: import("@aztec/aztec.js").Logger;
10
11
  protected attempts: number;
11
12
  protected successes: number;
12
- protected constructor(node: AztecNode, wallet: Wallet, defaultAccountAddress: AztecAddress, config: BotConfig);
13
+ protected constructor(node: AztecNode, wallet: TestWallet, defaultAccountAddress: AztecAddress, config: BotConfig);
13
14
  run(): Promise<TxReceipt | TxHash>;
14
15
  protected abstract createAndSendTx(logCtx: object): Promise<SentTx>;
15
16
  protected onTxMined(_receipt: TxReceipt, _logCtx: object): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"base_bot.d.ts","sourceRoot":"","sources":["../src/base_bot.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,SAAS,EACT,2BAA2B,EAE3B,KAAK,iBAAiB,EACtB,MAAM,EACN,MAAM,EACN,SAAS,EACT,KAAK,MAAM,EAGZ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,8BAAsB,OAAO;aAOT,IAAI,EAAE,SAAS;aACf,MAAM,EAAE,MAAM;aACd,qBAAqB,EAAE,YAAY;IAC5C,MAAM,EAAE,SAAS;IAT1B,SAAS,CAAC,GAAG,mCAAuB;IAEpC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAK;IAC/B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAK;IAEhC,SAAS,aACS,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,MAAM,EACd,qBAAqB,EAAE,YAAY,EAC5C,MAAM,EAAE,SAAS;IAGb,GAAG,IAAI,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC;IAoC/C,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAEnE,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cAKxD,iBAAiB,CAAC,WAAW,EAAE,2BAA2B,GAAG,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAoBpH"}
1
+ {"version":3,"file":"base_bot.d.ts","sourceRoot":"","sources":["../src/base_bot.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,SAAS,EACT,2BAA2B,EAC3B,KAAK,iBAAiB,EACtB,MAAM,EACN,MAAM,EACN,SAAS,EAGV,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,8BAAsB,OAAO;aAOT,IAAI,EAAE,SAAS;aACf,MAAM,EAAE,UAAU;aAClB,qBAAqB,EAAE,YAAY;IAC5C,MAAM,EAAE,SAAS;IAT1B,SAAS,CAAC,GAAG,mCAAuB;IAEpC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAK;IAC/B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAK;IAEhC,SAAS,aACS,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,UAAU,EAClB,qBAAqB,EAAE,YAAY,EAC5C,MAAM,EAAE,SAAS;IAGb,GAAG,IAAI,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC;IAoC/C,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAEnE,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cAKxD,iBAAiB,CAAC,WAAW,EAAE,2BAA2B,GAAG,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAqBpH"}
package/dest/base_bot.js CHANGED
@@ -1,4 +1,4 @@
1
- import { FeeJuicePaymentMethod, createLogger, waitForProven } from '@aztec/aztec.js';
1
+ import { createLogger, waitForProven } from '@aztec/aztec.js';
2
2
  import { Gas } from '@aztec/stdlib/gas';
3
3
  export class BaseBot {
4
4
  node;
@@ -49,8 +49,8 @@ export class BaseBot {
49
49
  return Promise.resolve();
50
50
  }
51
51
  async getSendMethodOpts(interaction) {
52
- const { l2GasLimit, daGasLimit } = this.config;
53
- const paymentMethod = new FeeJuicePaymentMethod(this.defaultAccountAddress);
52
+ const { l2GasLimit, daGasLimit, baseFeePadding } = this.config;
53
+ this.wallet.setBaseFeePadding(baseFeePadding);
54
54
  let gasSettings;
55
55
  if (l2GasLimit !== undefined && l2GasLimit > 0 && daGasLimit !== undefined && daGasLimit > 0) {
56
56
  gasSettings = {
@@ -64,7 +64,6 @@ export class BaseBot {
64
64
  this.log.verbose(`Estimating gas for transaction`);
65
65
  ({ estimatedGas: gasSettings } = await interaction.simulate({
66
66
  fee: {
67
- paymentMethod,
68
67
  estimateGas: true
69
68
  },
70
69
  from: this.defaultAccountAddress
@@ -73,7 +72,6 @@ export class BaseBot {
73
72
  return {
74
73
  from: this.defaultAccountAddress,
75
74
  fee: {
76
- paymentMethod,
77
75
  gasSettings
78
76
  }
79
77
  };
package/dest/bot.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type AztecAddress, SentTx, type Wallet } from '@aztec/aztec.js';
1
+ import { type AztecAddress, SentTx } from '@aztec/aztec.js';
2
2
  import type { PrivateTokenContract } from '@aztec/noir-contracts.js/PrivateToken';
3
3
  import type { TokenContract } from '@aztec/noir-contracts.js/Token';
4
4
  import type { AztecNode, AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
@@ -9,7 +9,7 @@ import type { BotStore } from './store/index.js';
9
9
  export declare class Bot extends BaseBot {
10
10
  readonly token: TokenContract | PrivateTokenContract;
11
11
  readonly recipient: AztecAddress;
12
- protected constructor(node: AztecNode, wallet: Wallet, defaultAccountAddress: AztecAddress, token: TokenContract | PrivateTokenContract, recipient: AztecAddress, config: BotConfig);
12
+ protected constructor(node: AztecNode, wallet: TestWallet, defaultAccountAddress: AztecAddress, token: TokenContract | PrivateTokenContract, recipient: AztecAddress, config: BotConfig);
13
13
  static create(config: BotConfig, wallet: TestWallet, aztecNode: AztecNode, aztecNodeAdmin: AztecNodeAdmin | undefined, store: BotStore): Promise<Bot>;
14
14
  updateConfig(config: Partial<BotConfig>): void;
15
15
  protected createAndSendTx(logCtx: object): Promise<SentTx>;
package/dest/bot.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAa,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEpF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAKjD,qBAAa,GAAI,SAAQ,OAAO;aAKZ,KAAK,EAAE,aAAa,GAAG,oBAAoB;aAC3C,SAAS,EAAE,YAAY;IALzC,SAAS,aACP,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,MAAM,EACd,qBAAqB,EAAE,YAAY,EACnB,KAAK,EAAE,aAAa,GAAG,oBAAoB,EAC3C,SAAS,EAAE,YAAY,EACvC,MAAM,EAAE,SAAS;WAKN,MAAM,CACjB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,KAAK,EAAE,QAAQ,GACd,OAAO,CAAC,GAAG,CAAC;IAWR,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC;cAK9B,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA+BnD,WAAW;;;;;;;;;;CAmBzB"}
1
+ {"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAa,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAKjD,qBAAa,GAAI,SAAQ,OAAO;aAKZ,KAAK,EAAE,aAAa,GAAG,oBAAoB;aAC3C,SAAS,EAAE,YAAY;IALzC,SAAS,aACP,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,UAAU,EAClB,qBAAqB,EAAE,YAAY,EACnB,KAAK,EAAE,aAAa,GAAG,oBAAoB,EAC3C,SAAS,EAAE,YAAY,EACvC,MAAM,EAAE,SAAS;WAKN,MAAM,CACjB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,KAAK,EAAE,QAAQ,GACd,OAAO,CAAC,GAAG,CAAC;IAWR,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC;cAK9B,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA+BnD,WAAW;;;;;;;;;;CAmBzB"}
package/dest/config.d.ts CHANGED
@@ -37,6 +37,8 @@ export type BotConfig = {
37
37
  publicTransfersPerTx: number;
38
38
  /** How to handle fee payments. */
39
39
  feePaymentMethod: 'fee_juice';
40
+ /** 'How much is the bot willing to overpay vs. the current base fee' */
41
+ baseFeePadding: number;
40
42
  /** True to not automatically setup or start the bot on initialization. */
41
43
  noStart: boolean;
42
44
  /** How long to wait for a tx to be mined before reporting an error. */
@@ -74,6 +76,7 @@ export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
74
76
  privateTransfersPerTx: z.ZodNumber;
75
77
  publicTransfersPerTx: z.ZodNumber;
76
78
  feePaymentMethod: z.ZodLiteral<"fee_juice">;
79
+ baseFeePadding: z.ZodNumber;
77
80
  noStart: z.ZodBoolean;
78
81
  txMinedWaitSeconds: z.ZodNumber;
79
82
  followChain: z.ZodEnum<["NONE", "PENDING", "PROVEN"]>;
@@ -94,6 +97,7 @@ export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
94
97
  privateTransfersPerTx: number;
95
98
  publicTransfersPerTx: number;
96
99
  feePaymentMethod: "fee_juice";
100
+ baseFeePadding: number;
97
101
  noStart: boolean;
98
102
  txMinedWaitSeconds: number;
99
103
  followChain: "NONE" | "PENDING" | "PROVEN";
@@ -120,6 +124,7 @@ export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
120
124
  privateTransfersPerTx: number;
121
125
  publicTransfersPerTx: number;
122
126
  feePaymentMethod: "fee_juice";
127
+ baseFeePadding: number;
123
128
  noStart: boolean;
124
129
  txMinedWaitSeconds: number;
125
130
  followChain: "NONE" | "PENDING" | "PROVEN";
@@ -148,6 +153,7 @@ export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
148
153
  privateTransfersPerTx: number;
149
154
  publicTransfersPerTx: number;
150
155
  feePaymentMethod: "fee_juice";
156
+ baseFeePadding: number;
151
157
  noStart: boolean;
152
158
  txMinedWaitSeconds: number;
153
159
  followChain: "NONE" | "PENDING" | "PROVEN";
@@ -174,6 +180,7 @@ export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
174
180
  privateTransfersPerTx: number;
175
181
  publicTransfersPerTx: number;
176
182
  feePaymentMethod: "fee_juice";
183
+ baseFeePadding: number;
177
184
  noStart: boolean;
178
185
  txMinedWaitSeconds: number;
179
186
  followChain: "NONE" | "PENDING" | "PROVEN";
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,WAAW,EASZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAGlF,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,QAAA,MAAM,cAAc,wCAAyC,CAAC;AAC9D,KAAK,cAAc,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,oBAAY,uBAAuB;IACjC,aAAa,kBAAkB;IAC/B,oBAAoB,yBAAyB;CAC9C;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,4EAA4E;IAC5E,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,gCAAgC;IAChC,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAChC,gEAAgE;IAChE,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC5C,mEAAmE;IACnE,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC9C,uEAAuE;IACvE,2BAA2B,EAAE,MAAM,CAAC;IACpC,kDAAkD;IAClD,gBAAgB,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;IAC9C,6DAA6D;IAC7D,UAAU,EAAE,EAAE,GAAG,SAAS,CAAC;IAC3B,iDAAiD;IACjD,SAAS,EAAE,EAAE,CAAC;IACd,sDAAsD;IACtD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,4DAA4D;IAC5D,qBAAqB,EAAE,MAAM,CAAC;IAC9B,2DAA2D;IAC3D,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kCAAkC;IAClC,gBAAgB,EAAE,WAAW,CAAC;IAC9B,0EAA0E;IAC1E,OAAO,EAAE,OAAO,CAAC;IACjB,uEAAuE;IACvE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,4EAA4E;IAC5E,WAAW,EAAE,cAAc,CAAC;IAC5B,gFAAgF;IAChF,aAAa,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,sBAAsB,EAAE,OAAO,CAAC;IAChC,+EAA+E;IAC/E,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,+EAA+E;IAC/E,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,4BAA4B;IAC5B,QAAQ,EAAE,uBAAuB,CAAC;IAClC,yEAAyE;IACzE,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iDAAiD;IACjD,iBAAiB,EAAE,OAAO,CAAC;IAC3B,+DAA+D;IAC/D,MAAM,EAAE,OAAO,CAAC;CACjB,GAAG,IAAI,CAAC,eAAe,EAAE,eAAe,GAAG,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0CK,CAAC;AAElC,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,CAAC,SAAS,CA0I3D,CAAC;AAEF,wBAAgB,mBAAmB,IAAI,SAAS,CAE/C;AAED,wBAAgB,mBAAmB,IAAI,SAAS,CAE/C;AAED,wBAAgB,WAAW,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAKzD"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dest/config.js CHANGED
@@ -29,6 +29,7 @@ export const BotConfigSchema = z.object({
29
29
  privateTransfersPerTx: z.number().int().nonnegative(),
30
30
  publicTransfersPerTx: z.number().int().nonnegative(),
31
31
  feePaymentMethod: z.literal('fee_juice'),
32
+ baseFeePadding: z.number().int().nonnegative(),
32
33
  noStart: z.boolean(),
33
34
  txMinedWaitSeconds: z.number(),
34
35
  followChain: z.enum(BotFollowChain),
@@ -122,6 +123,11 @@ export const botConfigMappings = {
122
123
  parseEnv: (val)=>val || undefined,
123
124
  defaultValue: 'fee_juice'
124
125
  },
126
+ baseFeePadding: {
127
+ env: 'BOT_BASE_FEE_PADDING',
128
+ description: 'How much is the bot willing to overpay vs. the current base fee',
129
+ ...numberConfigHelper(3)
130
+ },
125
131
  noStart: {
126
132
  env: 'BOT_NO_START',
127
133
  description: 'True to not automatically setup or start the bot on initialization.',
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EAWb,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjF,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,KAAK,SAAS,EAA2B,MAAM,aAAa,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAMjD,qBAAa,UAAU;IAInB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IAPlC,OAAO,CAAC,GAAG,CAAuB;gBAGf,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,SAAS,EACpB,cAAc,CAAC,EAAE,cAAc,YAAA;IAGlD;;;OAGG;IACU,KAAK;;;;;;;IAQL,QAAQ;;;;;;;;IAwBrB;;;OAGG;YACW,YAAY;YAWZ,0BAA0B;YAwC1B,gBAAgB;IAW9B;;;;OAIG;YACW,UAAU;IA+BxB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;YAYZ,gBAAgB;YAoBhB,OAAO;YA8EP,wBAAwB;IAkBtC;;;OAGG;YACW,UAAU;IAmCxB;;;;OAIG;YACW,sBAAsB;YA4BtB,gBAAgB;YAgChB,oBAAoB;CAenC"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EAWb,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjF,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,KAAK,SAAS,EAA2B,MAAM,aAAa,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAMjD,qBAAa,UAAU;IAInB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IAPlC,OAAO,CAAC,GAAG,CAAuB;gBAGf,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,SAAS,EACpB,cAAc,CAAC,EAAE,cAAc,YAAA;IAGlD;;;OAGG;IACU,KAAK;;;;;;;IAQL,QAAQ;;;;;;;;IAwBrB;;;OAGG;YACW,YAAY;YAWZ,0BAA0B;YAwC1B,gBAAgB;IAW9B;;;;OAIG;YACW,UAAU;IA+BxB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;YAYZ,gBAAgB;YAoBhB,OAAO;YA8EP,wBAAwB;IAkBtC;;;OAGG;YACW,UAAU;IAmCxB;;;;OAIG;YACW,sBAAsB;YA4BtB,gBAAgB;YAgChB,oBAAoB;CAenC"}
package/dest/factory.js CHANGED
@@ -1,12 +1,13 @@
1
1
  import { SchnorrAccountContract } from '@aztec/accounts/schnorr';
2
2
  import { getInitialTestAccountsData } from '@aztec/accounts/testing';
3
- import { BatchCall, FeeJuicePaymentMethodWithClaim, L1FeeJuicePortalManager, createLogger, waitForL1ToL2MessageReady } from '@aztec/aztec.js';
3
+ import { AztecAddress, BatchCall, FeeJuicePaymentMethodWithClaim, L1FeeJuicePortalManager, createLogger, waitForL1ToL2MessageReady } from '@aztec/aztec.js';
4
4
  import { createEthereumChain, createExtendedL1Client } from '@aztec/ethereum';
5
5
  import { Fr } from '@aztec/foundation/fields';
6
6
  import { Timer } from '@aztec/foundation/timer';
7
7
  import { AMMContract } from '@aztec/noir-contracts.js/AMM';
8
8
  import { PrivateTokenContract } from '@aztec/noir-contracts.js/PrivateToken';
9
9
  import { TokenContract } from '@aztec/noir-contracts.js/Token';
10
+ import { GasSettings } from '@aztec/stdlib/gas';
10
11
  import { deriveSigningKey } from '@aztec/stdlib/keys';
11
12
  import { SupportedTokenContracts } from './config.js';
12
13
  import { getBalances, getPrivateBalance, isStandardTokenContract } from './utils.js';
@@ -82,28 +83,32 @@ export class BotFactory {
82
83
  contract: new SchnorrAccountContract(signingKey)
83
84
  };
84
85
  const accountManager = await this.wallet.createAccount(accountData);
85
- const isInit = (await this.wallet.getContractMetadata(accountManager.getAddress())).isContractInitialized;
86
+ const isInit = (await this.wallet.getContractMetadata(accountManager.address)).isContractInitialized;
86
87
  if (isInit) {
87
- this.log.info(`Account at ${accountManager.getAddress().toString()} already initialized`);
88
+ this.log.info(`Account at ${accountManager.address.toString()} already initialized`);
88
89
  const timer = new Timer();
89
- await accountManager.register();
90
- const address = accountManager.getAddress();
90
+ const address = accountManager.address;
91
91
  this.log.info(`Account at ${address} registered. duration=${timer.ms()}`);
92
92
  await this.store.deleteBridgeClaim(address);
93
93
  return address;
94
94
  } else {
95
- const address = accountManager.getAddress();
95
+ const address = accountManager.address;
96
96
  this.log.info(`Deploying account at ${address}`);
97
97
  const claim = await this.getOrCreateBridgeClaim(address);
98
- // docs:start:claim_and_deploy
99
- const paymentMethod = new FeeJuicePaymentMethodWithClaim(accountManager.getAddress(), claim);
100
- const sentTx = accountManager.deploy({
98
+ const paymentMethod = new FeeJuicePaymentMethodWithClaim(accountManager.address, claim);
99
+ const deployMethod = await accountManager.getDeployMethod();
100
+ const maxFeesPerGas = (await this.aztecNode.getCurrentBaseFees()).mul(1 + this.config.baseFeePadding);
101
+ const gasSettings = GasSettings.default({
102
+ maxFeesPerGas
103
+ });
104
+ const sentTx = deployMethod.send({
105
+ from: AztecAddress.ZERO,
101
106
  fee: {
107
+ gasSettings,
102
108
  paymentMethod
103
109
  }
104
110
  });
105
111
  const txHash = await sentTx.getTxHash();
106
- // docs:end:claim_and_deploy
107
112
  this.log.info(`Sent tx for account deployment with hash ${txHash.toString()}`);
108
113
  await this.withNoMinTxsPerBlock(()=>sentTx.wait({
109
114
  timeout: this.config.txMinedWaitSeconds
@@ -111,7 +116,7 @@ export class BotFactory {
111
116
  this.log.info(`Account deployed at ${address}`);
112
117
  // Clean up the consumed bridge claim
113
118
  await this.store.deleteBridgeClaim(address);
114
- return accountManager.getAddress();
119
+ return accountManager.address;
115
120
  }
116
121
  }
117
122
  async setupTestAccount() {
@@ -122,7 +127,7 @@ export class BotFactory {
122
127
  contract: new SchnorrAccountContract(initialAccountData.signingKey)
123
128
  };
124
129
  const accountManager = await this.wallet.createAccount(accountData);
125
- return accountManager.getAddress();
130
+ return accountManager.address;
126
131
  }
127
132
  /**
128
133
  * Checks if the token contract is deployed and deploys it if necessary.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/bot",
3
- "version": "3.0.0-nightly.20250930",
3
+ "version": "3.0.0-nightly.20251002",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -54,18 +54,18 @@
54
54
  ]
55
55
  },
56
56
  "dependencies": {
57
- "@aztec/accounts": "3.0.0-nightly.20250930",
58
- "@aztec/aztec.js": "3.0.0-nightly.20250930",
59
- "@aztec/entrypoints": "3.0.0-nightly.20250930",
60
- "@aztec/ethereum": "3.0.0-nightly.20250930",
61
- "@aztec/foundation": "3.0.0-nightly.20250930",
62
- "@aztec/kv-store": "3.0.0-nightly.20250930",
63
- "@aztec/noir-contracts.js": "3.0.0-nightly.20250930",
64
- "@aztec/noir-protocol-circuits-types": "3.0.0-nightly.20250930",
65
- "@aztec/protocol-contracts": "3.0.0-nightly.20250930",
66
- "@aztec/stdlib": "3.0.0-nightly.20250930",
67
- "@aztec/telemetry-client": "3.0.0-nightly.20250930",
68
- "@aztec/test-wallet": "3.0.0-nightly.20250930",
57
+ "@aztec/accounts": "3.0.0-nightly.20251002",
58
+ "@aztec/aztec.js": "3.0.0-nightly.20251002",
59
+ "@aztec/entrypoints": "3.0.0-nightly.20251002",
60
+ "@aztec/ethereum": "3.0.0-nightly.20251002",
61
+ "@aztec/foundation": "3.0.0-nightly.20251002",
62
+ "@aztec/kv-store": "3.0.0-nightly.20251002",
63
+ "@aztec/noir-contracts.js": "3.0.0-nightly.20251002",
64
+ "@aztec/noir-protocol-circuits-types": "3.0.0-nightly.20251002",
65
+ "@aztec/protocol-contracts": "3.0.0-nightly.20251002",
66
+ "@aztec/stdlib": "3.0.0-nightly.20251002",
67
+ "@aztec/telemetry-client": "3.0.0-nightly.20251002",
68
+ "@aztec/test-wallet": "3.0.0-nightly.20251002",
69
69
  "source-map-support": "^0.5.21",
70
70
  "tslib": "^2.4.0",
71
71
  "zod": "^3.23.8"
package/src/amm_bot.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { AztecAddress, Fr, SentTx, TxReceipt, type Wallet } from '@aztec/aztec.js';
1
+ import { AztecAddress, Fr, SentTx, TxReceipt } from '@aztec/aztec.js';
2
2
  import { jsonStringify } from '@aztec/foundation/json-rpc';
3
3
  import type { AMMContract } from '@aztec/noir-contracts.js/AMM';
4
4
  import type { TokenContract } from '@aztec/noir-contracts.js/Token';
@@ -18,7 +18,7 @@ type Balances = { token0: bigint; token1: bigint };
18
18
  export class AmmBot extends BaseBot {
19
19
  protected constructor(
20
20
  node: AztecNode,
21
- wallet: Wallet,
21
+ wallet: TestWallet,
22
22
  defaultAccountAddress: AztecAddress,
23
23
  public readonly amm: AMMContract,
24
24
  public readonly token0: TokenContract,
package/src/base_bot.ts CHANGED
@@ -2,17 +2,16 @@ import {
2
2
  AztecAddress,
3
3
  BatchCall,
4
4
  ContractFunctionInteraction,
5
- FeeJuicePaymentMethod,
6
5
  type SendMethodOptions,
7
6
  SentTx,
8
7
  TxHash,
9
8
  TxReceipt,
10
- type Wallet,
11
9
  createLogger,
12
10
  waitForProven,
13
11
  } from '@aztec/aztec.js';
14
12
  import { Gas } from '@aztec/stdlib/gas';
15
13
  import type { AztecNode } from '@aztec/stdlib/interfaces/client';
14
+ import type { TestWallet } from '@aztec/test-wallet';
16
15
 
17
16
  import type { BotConfig } from './config.js';
18
17
 
@@ -24,7 +23,7 @@ export abstract class BaseBot {
24
23
 
25
24
  protected constructor(
26
25
  public readonly node: AztecNode,
27
- public readonly wallet: Wallet,
26
+ public readonly wallet: TestWallet,
28
27
  public readonly defaultAccountAddress: AztecAddress,
29
28
  public config: BotConfig,
30
29
  ) {}
@@ -73,8 +72,9 @@ export abstract class BaseBot {
73
72
  }
74
73
 
75
74
  protected async getSendMethodOpts(interaction: ContractFunctionInteraction | BatchCall): Promise<SendMethodOptions> {
76
- const { l2GasLimit, daGasLimit } = this.config;
77
- const paymentMethod = new FeeJuicePaymentMethod(this.defaultAccountAddress);
75
+ const { l2GasLimit, daGasLimit, baseFeePadding } = this.config;
76
+
77
+ this.wallet.setBaseFeePadding(baseFeePadding);
78
78
 
79
79
  let gasSettings;
80
80
  if (l2GasLimit !== undefined && l2GasLimit > 0 && daGasLimit !== undefined && daGasLimit > 0) {
@@ -83,13 +83,13 @@ export abstract class BaseBot {
83
83
  } else {
84
84
  this.log.verbose(`Estimating gas for transaction`);
85
85
  ({ estimatedGas: gasSettings } = await interaction.simulate({
86
- fee: { paymentMethod, estimateGas: true },
86
+ fee: { estimateGas: true },
87
87
  from: this.defaultAccountAddress,
88
88
  }));
89
89
  }
90
90
  return {
91
91
  from: this.defaultAccountAddress,
92
- fee: { paymentMethod, gasSettings },
92
+ fee: { gasSettings },
93
93
  };
94
94
  }
95
95
  }
package/src/bot.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type AztecAddress, BatchCall, SentTx, type Wallet } from '@aztec/aztec.js';
1
+ import { type AztecAddress, BatchCall, SentTx } from '@aztec/aztec.js';
2
2
  import { times } from '@aztec/foundation/collection';
3
3
  import type { PrivateTokenContract } from '@aztec/noir-contracts.js/PrivateToken';
4
4
  import type { TokenContract } from '@aztec/noir-contracts.js/Token';
@@ -16,7 +16,7 @@ const TRANSFER_AMOUNT = 1;
16
16
  export class Bot extends BaseBot {
17
17
  protected constructor(
18
18
  node: AztecNode,
19
- wallet: Wallet,
19
+ wallet: TestWallet,
20
20
  defaultAccountAddress: AztecAddress,
21
21
  public readonly token: TokenContract | PrivateTokenContract,
22
22
  public readonly recipient: AztecAddress,
package/src/config.ts CHANGED
@@ -54,6 +54,8 @@ export type BotConfig = {
54
54
  publicTransfersPerTx: number;
55
55
  /** How to handle fee payments. */
56
56
  feePaymentMethod: 'fee_juice';
57
+ /** 'How much is the bot willing to overpay vs. the current base fee' */
58
+ baseFeePadding: number;
57
59
  /** True to not automatically setup or start the bot on initialization. */
58
60
  noStart: boolean;
59
61
  /** How long to wait for a tx to be mined before reporting an error. */
@@ -93,6 +95,7 @@ export const BotConfigSchema = z
93
95
  privateTransfersPerTx: z.number().int().nonnegative(),
94
96
  publicTransfersPerTx: z.number().int().nonnegative(),
95
97
  feePaymentMethod: z.literal('fee_juice'),
98
+ baseFeePadding: z.number().int().nonnegative(),
96
99
  noStart: z.boolean(),
97
100
  txMinedWaitSeconds: z.number(),
98
101
  followChain: z.enum(BotFollowChain),
@@ -188,6 +191,11 @@ export const botConfigMappings: ConfigMappingsType<BotConfig> = {
188
191
  parseEnv: val => (val as 'fee_juice') || undefined,
189
192
  defaultValue: 'fee_juice',
190
193
  },
194
+ baseFeePadding: {
195
+ env: 'BOT_BASE_FEE_PADDING',
196
+ description: 'How much is the bot willing to overpay vs. the current base fee',
197
+ ...numberConfigHelper(3),
198
+ },
191
199
  noStart: {
192
200
  env: 'BOT_NO_START',
193
201
  description: 'True to not automatically setup or start the bot on initialization.',
package/src/factory.ts CHANGED
@@ -19,6 +19,7 @@ import { Timer } from '@aztec/foundation/timer';
19
19
  import { AMMContract } from '@aztec/noir-contracts.js/AMM';
20
20
  import { PrivateTokenContract } from '@aztec/noir-contracts.js/PrivateToken';
21
21
  import { TokenContract } from '@aztec/noir-contracts.js/Token';
22
+ import { GasSettings } from '@aztec/stdlib/gas';
22
23
  import type { AztecNode, AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
23
24
  import { deriveSigningKey } from '@aztec/stdlib/keys';
24
25
  import { TestWallet } from '@aztec/test-wallet';
@@ -101,26 +102,26 @@ export class BotFactory {
101
102
  contract: new SchnorrAccountContract(signingKey!),
102
103
  };
103
104
  const accountManager = await this.wallet.createAccount(accountData);
104
- const isInit = (await this.wallet.getContractMetadata(accountManager.getAddress())).isContractInitialized;
105
+ const isInit = (await this.wallet.getContractMetadata(accountManager.address)).isContractInitialized;
105
106
  if (isInit) {
106
- this.log.info(`Account at ${accountManager.getAddress().toString()} already initialized`);
107
+ this.log.info(`Account at ${accountManager.address.toString()} already initialized`);
107
108
  const timer = new Timer();
108
- await accountManager.register();
109
- const address = accountManager.getAddress();
109
+ const address = accountManager.address;
110
110
  this.log.info(`Account at ${address} registered. duration=${timer.ms()}`);
111
111
  await this.store.deleteBridgeClaim(address);
112
112
  return address;
113
113
  } else {
114
- const address = accountManager.getAddress();
114
+ const address = accountManager.address;
115
115
  this.log.info(`Deploying account at ${address}`);
116
116
 
117
117
  const claim = await this.getOrCreateBridgeClaim(address);
118
118
 
119
- // docs:start:claim_and_deploy
120
- const paymentMethod = new FeeJuicePaymentMethodWithClaim(accountManager.getAddress(), claim);
121
- const sentTx = accountManager.deploy({ fee: { paymentMethod } });
119
+ const paymentMethod = new FeeJuicePaymentMethodWithClaim(accountManager.address, claim);
120
+ const deployMethod = await accountManager.getDeployMethod();
121
+ const maxFeesPerGas = (await this.aztecNode.getCurrentBaseFees()).mul(1 + this.config.baseFeePadding);
122
+ const gasSettings = GasSettings.default({ maxFeesPerGas });
123
+ const sentTx = deployMethod.send({ from: AztecAddress.ZERO, fee: { gasSettings, paymentMethod } });
122
124
  const txHash = await sentTx.getTxHash();
123
- // docs:end:claim_and_deploy
124
125
  this.log.info(`Sent tx for account deployment with hash ${txHash.toString()}`);
125
126
  await this.withNoMinTxsPerBlock(() => sentTx.wait({ timeout: this.config.txMinedWaitSeconds }));
126
127
  this.log.info(`Account deployed at ${address}`);
@@ -128,7 +129,7 @@ export class BotFactory {
128
129
  // Clean up the consumed bridge claim
129
130
  await this.store.deleteBridgeClaim(address);
130
131
 
131
- return accountManager.getAddress();
132
+ return accountManager.address;
132
133
  }
133
134
  }
134
135
 
@@ -140,7 +141,7 @@ export class BotFactory {
140
141
  contract: new SchnorrAccountContract(initialAccountData.signingKey),
141
142
  };
142
143
  const accountManager = await this.wallet.createAccount(accountData);
143
- return accountManager.getAddress();
144
+ return accountManager.address;
144
145
  }
145
146
 
146
147
  /**