@aztec/bot 4.0.0-nightly.20250907 → 4.0.0-nightly.20260108

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.
Files changed (46) hide show
  1. package/dest/amm_bot.d.ts +9 -9
  2. package/dest/amm_bot.d.ts.map +1 -1
  3. package/dest/amm_bot.js +23 -20
  4. package/dest/base_bot.d.ts +11 -8
  5. package/dest/base_bot.d.ts.map +1 -1
  6. package/dest/base_bot.js +18 -18
  7. package/dest/bot.d.ts +8 -9
  8. package/dest/bot.d.ts.map +1 -1
  9. package/dest/bot.js +11 -12
  10. package/dest/config.d.ts +53 -50
  11. package/dest/config.d.ts.map +1 -1
  12. package/dest/config.js +27 -25
  13. package/dest/factory.d.ts +14 -32
  14. package/dest/factory.d.ts.map +1 -1
  15. package/dest/factory.js +137 -115
  16. package/dest/index.d.ts +2 -1
  17. package/dest/index.d.ts.map +1 -1
  18. package/dest/index.js +1 -0
  19. package/dest/interface.d.ts +2 -2
  20. package/dest/interface.d.ts.map +1 -1
  21. package/dest/interface.js +1 -1
  22. package/dest/rpc.d.ts +1 -1
  23. package/dest/runner.d.ts +12 -13
  24. package/dest/runner.d.ts.map +1 -1
  25. package/dest/runner.js +429 -61
  26. package/dest/store/bot_store.d.ts +44 -0
  27. package/dest/store/bot_store.d.ts.map +1 -0
  28. package/dest/store/bot_store.js +107 -0
  29. package/dest/store/index.d.ts +2 -0
  30. package/dest/store/index.d.ts.map +1 -0
  31. package/dest/store/index.js +1 -0
  32. package/dest/utils.d.ts +4 -4
  33. package/dest/utils.d.ts.map +1 -1
  34. package/dest/utils.js +5 -5
  35. package/package.json +16 -13
  36. package/src/amm_bot.ts +39 -31
  37. package/src/base_bot.ts +24 -22
  38. package/src/bot.ts +25 -14
  39. package/src/config.ts +64 -64
  40. package/src/factory.ts +172 -157
  41. package/src/index.ts +1 -0
  42. package/src/interface.ts +1 -1
  43. package/src/runner.ts +19 -23
  44. package/src/store/bot_store.ts +141 -0
  45. package/src/store/index.ts +1 -0
  46. package/src/utils.ts +10 -5
package/dest/amm_bot.d.ts CHANGED
@@ -1,9 +1,13 @@
1
- import { AztecAddress, SentTx, TxReceipt, type Wallet } from '@aztec/aztec.js';
1
+ import { AztecAddress } from '@aztec/aztec.js/addresses';
2
+ import { SentTx } from '@aztec/aztec.js/contracts';
3
+ import { TxReceipt } from '@aztec/aztec.js/tx';
2
4
  import type { AMMContract } from '@aztec/noir-contracts.js/AMM';
3
5
  import type { TokenContract } from '@aztec/noir-contracts.js/Token';
4
- import type { AztecNode, AztecNodeAdmin, PXE } from '@aztec/stdlib/interfaces/client';
6
+ import type { AztecNode, AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
7
+ import type { TestWallet } from '@aztec/test-wallet/server';
5
8
  import { BaseBot } from './base_bot.js';
6
9
  import type { BotConfig } from './config.js';
10
+ import type { BotStore } from './store/index.js';
7
11
  type Balances = {
8
12
  token0: bigint;
9
13
  token1: bigint;
@@ -12,12 +16,8 @@ export declare class AmmBot extends BaseBot {
12
16
  readonly amm: AMMContract;
13
17
  readonly token0: TokenContract;
14
18
  readonly token1: TokenContract;
15
- protected constructor(pxe: PXE, wallet: Wallet, defaultAccountAddress: AztecAddress, amm: AMMContract, token0: TokenContract, token1: TokenContract, config: BotConfig);
16
- static create(config: BotConfig, dependencies: {
17
- pxe?: PXE;
18
- node?: AztecNode;
19
- nodeAdmin?: AztecNodeAdmin;
20
- }): Promise<AmmBot>;
19
+ protected constructor(node: AztecNode, wallet: TestWallet, defaultAccountAddress: AztecAddress, amm: AMMContract, token0: TokenContract, token1: TokenContract, config: BotConfig);
20
+ static create(config: BotConfig, wallet: TestWallet, aztecNode: AztecNode, aztecNodeAdmin: AztecNodeAdmin | undefined, store: BotStore): Promise<AmmBot>;
21
21
  protected createAndSendTx(logCtx: object): Promise<SentTx>;
22
22
  protected onTxMined(receipt: TxReceipt, logCtx: object): Promise<void>;
23
23
  getAmmBalances(): Promise<Balances>;
@@ -30,4 +30,4 @@ export declare class AmmBot extends BaseBot {
30
30
  private getPrivateBalanceFor;
31
31
  }
32
32
  export {};
33
- //# sourceMappingURL=amm_bot.d.ts.map
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1tX2JvdC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FtbV9ib3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFL0MsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pGLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTVELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTdDLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBS2pELEtBQUssUUFBUSxHQUFHO0lBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUFDLE1BQU0sRUFBRSxNQUFNLENBQUE7Q0FBRSxDQUFDO0FBRW5ELHFCQUFhLE1BQU8sU0FBUSxPQUFPO2FBS2YsR0FBRyxFQUFFLFdBQVc7YUFDaEIsTUFBTSxFQUFFLGFBQWE7YUFDckIsTUFBTSxFQUFFLGFBQWE7SUFOdkMsU0FBUyxhQUNQLElBQUksRUFBRSxTQUFTLEVBQ2YsTUFBTSxFQUFFLFVBQVUsRUFDbEIscUJBQXFCLEVBQUUsWUFBWSxFQUNuQixHQUFHLEVBQUUsV0FBVyxFQUNoQixNQUFNLEVBQUUsYUFBYSxFQUNyQixNQUFNLEVBQUUsYUFBYSxFQUNyQyxNQUFNLEVBQUUsU0FBUyxFQUdsQjtJQUVELE9BQWEsTUFBTSxDQUNqQixNQUFNLEVBQUUsU0FBUyxFQUNqQixNQUFNLEVBQUUsVUFBVSxFQUNsQixTQUFTLEVBQUUsU0FBUyxFQUNwQixjQUFjLEVBQUUsY0FBYyxHQUFHLFNBQVMsRUFDMUMsS0FBSyxFQUFFLFFBQVEsR0FDZCxPQUFPLENBQUMsTUFBTSxDQUFDLENBU2pCO0lBRUQsVUFBZ0IsZUFBZSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQTBDL0Q7SUFFRCxVQUF5QixTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FHcEY7SUFFTSxjQUFjLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUV6QztJQUVZLFdBQVcsSUFBSSxPQUFPLENBQUM7UUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDO1FBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQztRQUFDLEdBQUcsRUFBRSxRQUFRLENBQUE7S0FBRSxDQUFDLENBTXRHO1lBRWEsbUJBQW1CO1lBTW5CLG9CQUFvQjtDQU1uQyJ9
@@ -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,GAAG,EAAE,MAAM,iCAAiC,CAAC;AAEtF,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAM7C,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,GAAG,EAAE,GAAG,EACR,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,YAAY,EAAE;QAAE,GAAG,CAAC,EAAE,GAAG,CAAC;QAAC,IAAI,CAAC,EAAE,SAAS,CAAC;QAAC,SAAS,CAAC,EAAE,cAAc,CAAA;KAAE,GACxE,OAAO,CAAC,MAAM,CAAC;cAQF,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,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,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,2BAA2B,CAAC;AAE5D,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,EAGlB;IAED,OAAa,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,CASjB;IAED,UAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0C/D;IAED,UAAyB,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpF;IAEM,cAAc,IAAI,OAAO,CAAC,QAAQ,CAAC,CAEzC;IAEY,WAAW,IAAI,OAAO,CAAC;QAAE,YAAY,EAAE,QAAQ,CAAC;QAAC,aAAa,EAAE,QAAQ,CAAC;QAAC,GAAG,EAAE,QAAQ,CAAA;KAAE,CAAC,CAMtG;YAEa,mBAAmB;YAMnB,oBAAoB;CAMnC"}
package/dest/amm_bot.js CHANGED
@@ -1,4 +1,4 @@
1
- import { Fr } from '@aztec/aztec.js';
1
+ import { Fr } from '@aztec/aztec.js/fields';
2
2
  import { jsonStringify } from '@aztec/foundation/json-rpc';
3
3
  import { BaseBot } from './base_bot.js';
4
4
  import { BotFactory } from './factory.js';
@@ -8,12 +8,12 @@ export class AmmBot extends BaseBot {
8
8
  amm;
9
9
  token0;
10
10
  token1;
11
- constructor(pxe, wallet, defaultAccountAddress, amm, token0, token1, config){
12
- super(pxe, wallet, defaultAccountAddress, config), this.amm = amm, this.token0 = token0, this.token1 = token1;
11
+ constructor(node, wallet, defaultAccountAddress, amm, token0, token1, config){
12
+ super(node, wallet, defaultAccountAddress, config), this.amm = amm, this.token0 = token0, this.token1 = token1;
13
13
  }
14
- static async create(config, dependencies) {
15
- const { pxe, wallet, defaultAccountAddress, token0, token1, amm } = await new BotFactory(config, dependencies).setupAmm();
16
- return new AmmBot(pxe, wallet, defaultAccountAddress, amm, token0, token1, config);
14
+ static async create(config, wallet, aztecNode, aztecNodeAdmin, store) {
15
+ const { defaultAccountAddress, token0, token1, amm } = await new BotFactory(config, wallet, store, aztecNode, aztecNodeAdmin).setupAmm();
16
+ return new AmmBot(aztecNode, wallet, defaultAccountAddress, amm, token0, token1, config);
17
17
  }
18
18
  async createAndSendTx(logCtx) {
19
19
  const { feePaymentMethod } = this.config;
@@ -33,9 +33,9 @@ export class AmmBot extends BaseBot {
33
33
  token1,
34
34
  token0
35
35
  ];
36
- const swapAuthwit = await wallet.createAuthWit({
36
+ const swapAuthwit = await wallet.createAuthWit(this.defaultAccountAddress, {
37
37
  caller: amm.address,
38
- action: tokenIn.methods.transfer_to_public(this.defaultAccountAddress, amm.address, amountIn, authwitNonce)
38
+ call: await tokenIn.methods.transfer_to_public(this.defaultAccountAddress, amm.address, amountIn, authwitNonce).getFunctionCall()
39
39
  });
40
40
  const amountOutMin = await amm.methods.get_amount_out_for_exact_in(await tokenIn.methods.balance_of_public(amm.address).simulate({
41
41
  from: this.defaultAccountAddress
@@ -44,15 +44,18 @@ export class AmmBot extends BaseBot {
44
44
  }), amountIn).simulate({
45
45
  from: this.defaultAccountAddress
46
46
  });
47
- const swapExactTokensInteraction = amm.methods.swap_exact_tokens_for_tokens(tokenIn.address, tokenOut.address, amountIn, amountOutMin, authwitNonce);
48
- const opts = this.getSendMethodOpts(swapAuthwit);
49
- this.log.verbose(`Proving transaction`, logCtx);
50
- const tx = await swapExactTokensInteraction.prove(opts);
47
+ const swapExactTokensInteraction = amm.methods.swap_exact_tokens_for_tokens(tokenIn.address, tokenOut.address, amountIn, amountOutMin, authwitNonce).with({
48
+ authWitnesses: [
49
+ swapAuthwit
50
+ ]
51
+ });
52
+ const opts = await this.getSendMethodOpts(swapExactTokensInteraction);
53
+ this.log.verbose(`Sending transaction`, logCtx);
51
54
  this.log.info(`Tx. Balances: ${jsonStringify(balances)}`, {
52
55
  ...logCtx,
53
56
  balances
54
57
  });
55
- return tx.send();
58
+ return swapExactTokensInteraction.send(opts);
56
59
  }
57
60
  async onTxMined(receipt, logCtx) {
58
61
  const balances = await this.getBalances();
@@ -68,26 +71,26 @@ export class AmmBot extends BaseBot {
68
71
  return {
69
72
  senderPublic: await this.getPublicBalanceFor(this.defaultAccountAddress),
70
73
  senderPrivate: await this.getPrivateBalanceFor(this.defaultAccountAddress),
71
- amm: await this.getPublicBalanceFor(this.amm.address)
74
+ amm: await this.getPublicBalanceFor(this.amm.address, this.defaultAccountAddress)
72
75
  };
73
76
  }
74
- async getPublicBalanceFor(address) {
77
+ async getPublicBalanceFor(address, from) {
75
78
  return {
76
79
  token0: await this.token0.methods.balance_of_public(address).simulate({
77
- from: address
80
+ from: from ?? address
78
81
  }),
79
82
  token1: await this.token1.methods.balance_of_public(address).simulate({
80
- from: address
83
+ from: from ?? address
81
84
  })
82
85
  };
83
86
  }
84
- async getPrivateBalanceFor(address) {
87
+ async getPrivateBalanceFor(address, from) {
85
88
  return {
86
89
  token0: await this.token0.methods.balance_of_private(address).simulate({
87
- from: address
90
+ from: from ?? address
88
91
  }),
89
92
  token1: await this.token1.methods.balance_of_private(address).simulate({
90
- from: address
93
+ from: from ?? address
91
94
  })
92
95
  };
93
96
  }
@@ -1,18 +1,21 @@
1
- import { AuthWitness, AztecAddress, type SendMethodOptions, SentTx, TxHash, TxReceipt, type Wallet } from '@aztec/aztec.js';
2
- import type { PXE } from '@aztec/stdlib/interfaces/client';
1
+ import { AztecAddress } from '@aztec/aztec.js/addresses';
2
+ import { BatchCall, ContractFunctionInteraction, type SendInteractionOptions, SentTx } from '@aztec/aztec.js/contracts';
3
+ import { TxHash, TxReceipt } from '@aztec/aztec.js/tx';
4
+ import type { AztecNode } from '@aztec/stdlib/interfaces/client';
5
+ import type { TestWallet } from '@aztec/test-wallet/server';
3
6
  import type { BotConfig } from './config.js';
4
7
  export declare abstract class BaseBot {
5
- readonly pxe: PXE;
6
- readonly wallet: Wallet;
8
+ readonly node: AztecNode;
9
+ readonly wallet: TestWallet;
7
10
  readonly defaultAccountAddress: AztecAddress;
8
11
  config: BotConfig;
9
- protected log: import("@aztec/aztec.js").Logger;
12
+ protected log: import("@aztec/aztec.js/log").Logger;
10
13
  protected attempts: number;
11
14
  protected successes: number;
12
- protected constructor(pxe: PXE, wallet: Wallet, defaultAccountAddress: AztecAddress, config: BotConfig);
15
+ protected constructor(node: AztecNode, wallet: TestWallet, defaultAccountAddress: AztecAddress, config: BotConfig);
13
16
  run(): Promise<TxReceipt | TxHash>;
14
17
  protected abstract createAndSendTx(logCtx: object): Promise<SentTx>;
15
18
  protected onTxMined(_receipt: TxReceipt, _logCtx: object): Promise<void>;
16
- protected getSendMethodOpts(...authWitnesses: AuthWitness[]): SendMethodOptions;
19
+ protected getSendMethodOpts(interaction: ContractFunctionInteraction | BatchCall): Promise<SendInteractionOptions>;
17
20
  }
18
- //# sourceMappingURL=base_bot.d.ts.map
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV9ib3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9iYXNlX2JvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUNMLFNBQVMsRUFDVCwyQkFBMkIsRUFDM0IsS0FBSyxzQkFBc0IsRUFDM0IsTUFBTSxFQUVQLE1BQU0sMkJBQTJCLENBQUM7QUFFbkMsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV2RCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU1RCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFN0MsOEJBQXNCLE9BQU87YUFPVCxJQUFJLEVBQUUsU0FBUzthQUNmLE1BQU0sRUFBRSxVQUFVO2FBQ2xCLHFCQUFxQixFQUFFLFlBQVk7SUFDNUMsTUFBTSxFQUFFLFNBQVM7SUFUMUIsU0FBUyxDQUFDLEdBQUcsdUNBQXVCO0lBRXBDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFLO0lBQy9CLFNBQVMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFLO0lBRWhDLFNBQVMsYUFDUyxJQUFJLEVBQUUsU0FBUyxFQUNmLE1BQU0sRUFBRSxVQUFVLEVBQ2xCLHFCQUFxQixFQUFFLFlBQVksRUFDNUMsTUFBTSxFQUFFLFNBQVMsRUFDdEI7SUFFUyxHQUFHLElBQUksT0FBTyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsQ0FrQzlDO0lBRUQsU0FBUyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFcEUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUd2RTtJQUVELFVBQWdCLGlCQUFpQixDQUMvQixXQUFXLEVBQUUsMkJBQTJCLEdBQUcsU0FBUyxHQUNuRCxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FvQmpDO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"base_bot.d.ts","sourceRoot":"","sources":["../src/base_bot.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,YAAY,EAEZ,KAAK,iBAAiB,EACtB,MAAM,EACN,MAAM,EACN,SAAS,EACT,KAAK,MAAM,EAGZ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,8BAAsB,OAAO;aAOT,GAAG,EAAE,GAAG;aACR,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,GAAG,EAAE,GAAG,EACR,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;IAKxE,SAAS,CAAC,iBAAiB,CAAC,GAAG,aAAa,EAAE,WAAW,EAAE,GAAG,iBAAiB;CAoBhF"}
1
+ {"version":3,"file":"base_bot.d.ts","sourceRoot":"","sources":["../src/base_bot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EACL,SAAS,EACT,2BAA2B,EAC3B,KAAK,sBAAsB,EAC3B,MAAM,EAEP,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,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,uCAAuB;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,EACtB;IAES,GAAG,IAAI,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,CAkC9C;IAED,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpE,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvE;IAED,UAAgB,iBAAiB,CAC/B,WAAW,EAAE,2BAA2B,GAAG,SAAS,GACnD,OAAO,CAAC,sBAAsB,CAAC,CAoBjC;CACF"}
package/dest/base_bot.js CHANGED
@@ -1,15 +1,16 @@
1
- import { FeeJuicePaymentMethod, createLogger, waitForProven } from '@aztec/aztec.js';
1
+ import { waitForProven } from '@aztec/aztec.js/contracts';
2
+ import { createLogger } from '@aztec/aztec.js/log';
2
3
  import { Gas } from '@aztec/stdlib/gas';
3
4
  export class BaseBot {
4
- pxe;
5
+ node;
5
6
  wallet;
6
7
  defaultAccountAddress;
7
8
  config;
8
9
  log;
9
10
  attempts;
10
11
  successes;
11
- constructor(pxe, wallet, defaultAccountAddress, config){
12
- this.pxe = pxe;
12
+ constructor(node, wallet, defaultAccountAddress, config){
13
+ this.node = node;
13
14
  this.wallet = wallet;
14
15
  this.defaultAccountAddress = defaultAccountAddress;
15
16
  this.config = config;
@@ -35,7 +36,7 @@ export class BaseBot {
35
36
  timeout: txMinedWaitSeconds
36
37
  });
37
38
  if (followChain === 'PROVEN') {
38
- await waitForProven(this.pxe, receipt, {
39
+ await waitForProven(this.node, receipt, {
39
40
  provenTimeout: txMinedWaitSeconds
40
41
  });
41
42
  }
@@ -48,10 +49,10 @@ export class BaseBot {
48
49
  // no-op
49
50
  return Promise.resolve();
50
51
  }
51
- getSendMethodOpts(...authWitnesses) {
52
- const { l2GasLimit, daGasLimit } = this.config;
53
- const paymentMethod = new FeeJuicePaymentMethod(this.defaultAccountAddress);
54
- let gasSettings, estimateGas;
52
+ async getSendMethodOpts(interaction) {
53
+ const { l2GasLimit, daGasLimit, minFeePadding } = this.config;
54
+ this.wallet.setMinFeePadding(minFeePadding);
55
+ let gasSettings;
55
56
  if (l2GasLimit !== undefined && l2GasLimit > 0 && daGasLimit !== undefined && daGasLimit > 0) {
56
57
  gasSettings = {
57
58
  gasLimits: Gas.from({
@@ -59,22 +60,21 @@ export class BaseBot {
59
60
  daGas: daGasLimit
60
61
  })
61
62
  };
62
- estimateGas = false;
63
63
  this.log.verbose(`Using gas limits ${l2GasLimit} L2 gas ${daGasLimit} DA gas`);
64
64
  } else {
65
- estimateGas = true;
66
65
  this.log.verbose(`Estimating gas for transaction`);
66
+ ({ estimatedGas: gasSettings } = await interaction.simulate({
67
+ fee: {
68
+ estimateGas: true
69
+ },
70
+ from: this.defaultAccountAddress
71
+ }));
67
72
  }
68
- const baseFeePadding = 2; // Send 3x the current base fee
69
73
  return {
70
74
  from: this.defaultAccountAddress,
71
75
  fee: {
72
- estimateGas,
73
- paymentMethod,
74
- gasSettings,
75
- baseFeePadding
76
- },
77
- authWitnesses
76
+ gasSettings
77
+ }
78
78
  };
79
79
  }
80
80
  }
package/dest/bot.d.ts CHANGED
@@ -1,18 +1,17 @@
1
- import { type AztecAddress, SentTx, type Wallet } from '@aztec/aztec.js';
1
+ import type { AztecAddress } from '@aztec/aztec.js/addresses';
2
+ import { SentTx } from '@aztec/aztec.js/contracts';
2
3
  import type { PrivateTokenContract } from '@aztec/noir-contracts.js/PrivateToken';
3
4
  import type { TokenContract } from '@aztec/noir-contracts.js/Token';
4
- import type { AztecNode, AztecNodeAdmin, PXE } from '@aztec/stdlib/interfaces/client';
5
+ import type { AztecNode, AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
6
+ import type { TestWallet } from '@aztec/test-wallet/server';
5
7
  import { BaseBot } from './base_bot.js';
6
8
  import type { BotConfig } from './config.js';
9
+ import type { BotStore } from './store/index.js';
7
10
  export declare class Bot extends BaseBot {
8
11
  readonly token: TokenContract | PrivateTokenContract;
9
12
  readonly recipient: AztecAddress;
10
- protected constructor(pxe: PXE, wallet: Wallet, defaultAccountAddress: AztecAddress, token: TokenContract | PrivateTokenContract, recipient: AztecAddress, config: BotConfig);
11
- static create(config: BotConfig, dependencies: {
12
- pxe?: PXE;
13
- node?: AztecNode;
14
- nodeAdmin?: AztecNodeAdmin;
15
- }): Promise<Bot>;
13
+ protected constructor(node: AztecNode, wallet: TestWallet, defaultAccountAddress: AztecAddress, token: TokenContract | PrivateTokenContract, recipient: AztecAddress, config: BotConfig);
14
+ static create(config: BotConfig, wallet: TestWallet, aztecNode: AztecNode, aztecNodeAdmin: AztecNodeAdmin | undefined, store: BotStore): Promise<Bot>;
16
15
  updateConfig(config: Partial<BotConfig>): void;
17
16
  protected createAndSendTx(logCtx: object): Promise<SentTx>;
18
17
  getBalances(): Promise<{
@@ -26,4 +25,4 @@ export declare class Bot extends BaseBot {
26
25
  };
27
26
  }>;
28
27
  }
29
- //# sourceMappingURL=bot.d.ts.map
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYm90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBYSxNQUFNLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU5RCxPQUFPLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2xGLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRixPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU3QyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUtqRCxxQkFBYSxHQUFJLFNBQVEsT0FBTzthQUtaLEtBQUssRUFBRSxhQUFhLEdBQUcsb0JBQW9CO2FBQzNDLFNBQVMsRUFBRSxZQUFZO0lBTHpDLFNBQVMsYUFDUCxJQUFJLEVBQUUsU0FBUyxFQUNmLE1BQU0sRUFBRSxVQUFVLEVBQ2xCLHFCQUFxQixFQUFFLFlBQVksRUFDbkIsS0FBSyxFQUFFLGFBQWEsR0FBRyxvQkFBb0IsRUFDM0MsU0FBUyxFQUFFLFlBQVksRUFDdkMsTUFBTSxFQUFFLFNBQVMsRUFHbEI7SUFFRCxPQUFhLE1BQU0sQ0FDakIsTUFBTSxFQUFFLFNBQVMsRUFDakIsTUFBTSxFQUFFLFVBQVUsRUFDbEIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsY0FBYyxFQUFFLGNBQWMsR0FBRyxTQUFTLEVBQzFDLEtBQUssRUFBRSxRQUFRLEdBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQVNkO0lBRU0sWUFBWSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLFFBRzdDO0lBRUQsVUFBZ0IsZUFBZSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQTRCL0Q7SUFFWSxXQUFXOzs7Ozs7Ozs7T0FrQnZCO0NBQ0YifQ==
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,GAAG,EAAE,MAAM,iCAAiC,CAAC;AAEtF,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAM7C,qBAAa,GAAI,SAAQ,OAAO;aAKZ,KAAK,EAAE,aAAa,GAAG,oBAAoB;aAC3C,SAAS,EAAE,YAAY;IALzC,SAAS,aACP,GAAG,EAAE,GAAG,EACR,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,YAAY,EAAE;QAAE,GAAG,CAAC,EAAE,GAAG,CAAC;QAAC,IAAI,CAAC,EAAE,SAAS,CAAC;QAAC,SAAS,CAAC,EAAE,cAAc,CAAA;KAAE,GACxE,OAAO,CAAC,GAAG,CAAC;IAKR,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,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAa,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAE9D,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,2BAA2B,CAAC;AAE5D,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,EAGlB;IAED,OAAa,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,CASd;IAEM,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,QAG7C;IAED,UAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4B/D;IAEY,WAAW;;;;;;;;;OAkBvB;CACF"}
package/dest/bot.js CHANGED
@@ -1,4 +1,4 @@
1
- import { BatchCall } from '@aztec/aztec.js';
1
+ import { BatchCall } from '@aztec/aztec.js/contracts';
2
2
  import { times } from '@aztec/foundation/collection';
3
3
  import { BaseBot } from './base_bot.js';
4
4
  import { BotFactory } from './factory.js';
@@ -7,12 +7,12 @@ const TRANSFER_AMOUNT = 1;
7
7
  export class Bot extends BaseBot {
8
8
  token;
9
9
  recipient;
10
- constructor(pxe, wallet, defaultAccountAddress, token, recipient, config){
11
- super(pxe, wallet, defaultAccountAddress, config), this.token = token, this.recipient = recipient;
10
+ constructor(node, wallet, defaultAccountAddress, token, recipient, config){
11
+ super(node, wallet, defaultAccountAddress, config), this.token = token, this.recipient = recipient;
12
12
  }
13
- static async create(config, dependencies) {
14
- const { pxe, wallet, defaultAccountAddress, token, recipient } = await new BotFactory(config, dependencies).setup();
15
- return new Bot(pxe, wallet, defaultAccountAddress, token, recipient, config);
13
+ static async create(config, wallet, aztecNode, aztecNodeAdmin, store) {
14
+ const { defaultAccountAddress, token, recipient } = await new BotFactory(config, wallet, store, aztecNode, aztecNodeAdmin).setup();
15
+ return new Bot(aztecNode, wallet, defaultAccountAddress, token, recipient, config);
16
16
  }
17
17
  updateConfig(config) {
18
18
  this.log.info(`Updating bot config ${Object.keys(config).join(', ')}`);
@@ -29,21 +29,20 @@ export class Bot extends BaseBot {
29
29
  times(privateTransfersPerTx, ()=>token.methods.transfer(recipient, TRANSFER_AMOUNT)),
30
30
  times(publicTransfersPerTx, ()=>token.methods.transfer_in_public(this.defaultAccountAddress, recipient, TRANSFER_AMOUNT, 0))
31
31
  ].flat() : times(privateTransfersPerTx, ()=>token.methods.transfer(TRANSFER_AMOUNT, this.defaultAccountAddress, recipient));
32
- const opts = this.getSendMethodOpts();
33
32
  const batch = new BatchCall(wallet, calls);
33
+ const opts = await this.getSendMethodOpts(batch);
34
34
  this.log.verbose(`Simulating transaction with ${calls.length}`, logCtx);
35
35
  await batch.simulate({
36
36
  from: this.defaultAccountAddress
37
37
  });
38
- this.log.verbose(`Proving transaction`, logCtx);
39
- const provenTx = await batch.prove(opts);
40
- return provenTx.send();
38
+ this.log.verbose(`Sending transaction`, logCtx);
39
+ return batch.send(opts);
41
40
  }
42
41
  async getBalances() {
43
42
  if (isStandardTokenContract(this.token)) {
44
43
  return {
45
44
  sender: await getBalances(this.token, this.defaultAccountAddress),
46
- recipient: await getBalances(this.token, this.recipient)
45
+ recipient: await getBalances(this.token, this.recipient, this.defaultAccountAddress)
47
46
  };
48
47
  } else {
49
48
  return {
@@ -52,7 +51,7 @@ export class Bot extends BaseBot {
52
51
  publicBalance: 0n
53
52
  },
54
53
  recipient: {
55
- privateBalance: await getPrivateBalance(this.token, this.recipient),
54
+ privateBalance: await getPrivateBalance(this.token, this.recipient, this.defaultAccountAddress),
56
55
  publicBalance: 0n
57
56
  }
58
57
  };
package/dest/config.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { type ConfigMappingsType, SecretValue } from '@aztec/foundation/config';
2
- import { Fr } from '@aztec/foundation/fields';
3
- import { type ZodFor } from '@aztec/stdlib/schemas';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
+ import { type DataStoreConfig } from '@aztec/kv-store/config';
4
4
  import type { ComponentsVersions } from '@aztec/stdlib/versioning';
5
5
  import { z } from 'zod';
6
6
  declare const BotFollowChain: readonly ["NONE", "PENDING", "PROVEN"];
@@ -14,8 +14,6 @@ export type BotConfig = {
14
14
  nodeUrl: string | undefined;
15
15
  /** The URL to the Aztec node admin API to force-flush txs if configured. */
16
16
  nodeAdminUrl: string | undefined;
17
- /** URL to the PXE for sending txs, or undefined if an in-proc PXE is used. */
18
- pxeUrl: string | undefined;
19
17
  /** Url of the ethereum host. */
20
18
  l1RpcUrls: string[] | undefined;
21
19
  /** The mnemonic for the account to bridge fee juice from L1. */
@@ -28,8 +26,6 @@ export type BotConfig = {
28
26
  senderPrivateKey: SecretValue<Fr> | undefined;
29
27
  /** Optional salt to use to instantiate the sender account */
30
28
  senderSalt: Fr | undefined;
31
- /** Encryption secret for a recipient account. */
32
- recipientEncryptionSecret: SecretValue<Fr>;
33
29
  /** Salt for the token contract instantiation. */
34
30
  tokenSalt: Fr;
35
31
  /** Every how many seconds should a new tx be sent. */
@@ -40,6 +36,8 @@ export type BotConfig = {
40
36
  publicTransfersPerTx: number;
41
37
  /** How to handle fee payments. */
42
38
  feePaymentMethod: 'fee_juice';
39
+ /** 'How much is the bot willing to overpay vs. the current min fee' */
40
+ minFeePadding: number;
43
41
  /** True to not automatically setup or start the bot on initialization. */
44
42
  noStart: boolean;
45
43
  /** How long to wait for a tx to be mined before reporting an error. */
@@ -62,23 +60,22 @@ export type BotConfig = {
62
60
  stopWhenUnhealthy: boolean;
63
61
  /** Deploy an AMM contract and do swaps instead of transfers */
64
62
  ammTxs: boolean;
65
- };
63
+ } & Pick<DataStoreConfig, 'dataDirectory' | 'dataStoreMapSizeKb'>;
66
64
  export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
67
65
  nodeUrl: z.ZodOptional<z.ZodString>;
68
66
  nodeAdminUrl: z.ZodOptional<z.ZodString>;
69
- pxeUrl: z.ZodOptional<z.ZodString>;
70
67
  l1RpcUrls: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
71
68
  l1Mnemonic: z.ZodOptional<z.ZodType<SecretValue<string>, any, any>>;
72
69
  l1PrivateKey: z.ZodOptional<z.ZodType<SecretValue<string>, any, any>>;
73
70
  l1ToL2MessageTimeoutSeconds: z.ZodNumber;
74
71
  senderPrivateKey: z.ZodOptional<z.ZodType<SecretValue<Fr>, any, any>>;
75
- senderSalt: z.ZodOptional<ZodFor<Fr>>;
76
- recipientEncryptionSecret: z.ZodType<SecretValue<Fr>, any, any>;
77
- tokenSalt: ZodFor<Fr>;
72
+ senderSalt: z.ZodOptional<import("@aztec/stdlib/schemas").ZodFor<Fr>>;
73
+ tokenSalt: import("@aztec/stdlib/schemas").ZodFor<Fr>;
78
74
  txIntervalSeconds: z.ZodNumber;
79
75
  privateTransfersPerTx: z.ZodNumber;
80
76
  publicTransfersPerTx: z.ZodNumber;
81
77
  feePaymentMethod: z.ZodLiteral<"fee_juice">;
78
+ minFeePadding: z.ZodNumber;
82
79
  noStart: z.ZodBoolean;
83
80
  txMinedWaitSeconds: z.ZodNumber;
84
81
  followChain: z.ZodEnum<["NONE", "PENDING", "PROVEN"]>;
@@ -90,68 +87,72 @@ export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
90
87
  maxConsecutiveErrors: z.ZodNumber;
91
88
  stopWhenUnhealthy: z.ZodBoolean;
92
89
  ammTxs: z.ZodDefault<z.ZodBoolean>;
90
+ dataDirectory: z.ZodOptional<z.ZodString>;
91
+ dataStoreMapSizeKb: z.ZodOptional<z.ZodNumber>;
93
92
  }, "strip", z.ZodTypeAny, {
93
+ nodeUrl?: string | undefined;
94
+ nodeAdminUrl?: string | undefined;
95
+ l1RpcUrls?: string[] | undefined;
96
+ l1Mnemonic?: SecretValue<string> | undefined;
97
+ l1PrivateKey?: SecretValue<string> | undefined;
94
98
  l1ToL2MessageTimeoutSeconds: number;
95
- recipientEncryptionSecret: SecretValue<Fr>;
99
+ senderPrivateKey?: SecretValue<Fr> | undefined;
100
+ senderSalt?: Fr | undefined;
96
101
  tokenSalt: Fr;
97
102
  txIntervalSeconds: number;
98
103
  privateTransfersPerTx: number;
99
104
  publicTransfersPerTx: number;
100
105
  feePaymentMethod: "fee_juice";
106
+ minFeePadding: number;
101
107
  noStart: boolean;
102
108
  txMinedWaitSeconds: number;
103
109
  followChain: "NONE" | "PENDING" | "PROVEN";
104
110
  maxPendingTxs: number;
105
111
  flushSetupTransactions: boolean;
112
+ l2GasLimit?: number | undefined;
113
+ daGasLimit?: number | undefined;
106
114
  contract: SupportedTokenContracts;
107
115
  maxConsecutiveErrors: number;
108
116
  stopWhenUnhealthy: boolean;
109
117
  ammTxs: boolean;
118
+ dataDirectory?: string | undefined;
119
+ dataStoreMapSizeKb?: number | undefined;
120
+ }, {
110
121
  nodeUrl?: string | undefined;
111
122
  nodeAdminUrl?: string | undefined;
112
- pxeUrl?: string | undefined;
113
123
  l1RpcUrls?: string[] | undefined;
114
- l1Mnemonic?: SecretValue<string> | undefined;
115
- l1PrivateKey?: SecretValue<string> | undefined;
116
- senderPrivateKey?: SecretValue<Fr> | undefined;
117
- senderSalt?: Fr | undefined;
118
- l2GasLimit?: number | undefined;
119
- daGasLimit?: number | undefined;
120
- }, {
124
+ l1Mnemonic?: any;
125
+ l1PrivateKey?: any;
121
126
  l1ToL2MessageTimeoutSeconds: number;
127
+ senderPrivateKey?: any;
128
+ senderSalt?: any;
129
+ tokenSalt?: any;
122
130
  txIntervalSeconds: number;
123
131
  privateTransfersPerTx: number;
124
132
  publicTransfersPerTx: number;
125
133
  feePaymentMethod: "fee_juice";
134
+ minFeePadding: number;
126
135
  noStart: boolean;
127
136
  txMinedWaitSeconds: number;
128
137
  followChain: "NONE" | "PENDING" | "PROVEN";
129
138
  maxPendingTxs: number;
130
139
  flushSetupTransactions: boolean;
140
+ l2GasLimit?: number | undefined;
141
+ daGasLimit?: number | undefined;
131
142
  contract: SupportedTokenContracts;
132
143
  maxConsecutiveErrors: number;
133
144
  stopWhenUnhealthy: boolean;
134
- nodeUrl?: string | undefined;
135
- nodeAdminUrl?: string | undefined;
136
- pxeUrl?: string | undefined;
137
- l1RpcUrls?: string[] | undefined;
138
- l1Mnemonic?: any;
139
- l1PrivateKey?: any;
140
- senderPrivateKey?: any;
141
- senderSalt?: any;
142
- recipientEncryptionSecret?: any;
143
- tokenSalt?: any;
144
- l2GasLimit?: number | undefined;
145
- daGasLimit?: number | undefined;
146
145
  ammTxs?: boolean | undefined;
146
+ dataDirectory?: string | undefined;
147
+ dataStoreMapSizeKb?: number | undefined;
147
148
  }>, {
148
149
  l1ToL2MessageTimeoutSeconds: number;
149
- recipientEncryptionSecret: SecretValue<Fr>;
150
150
  tokenSalt: Fr;
151
151
  txIntervalSeconds: number;
152
152
  privateTransfersPerTx: number;
153
153
  publicTransfersPerTx: number;
154
154
  feePaymentMethod: "fee_juice";
155
+ minFeePadding: number;
155
156
  noStart: boolean;
156
157
  txMinedWaitSeconds: number;
157
158
  followChain: "NONE" | "PENDING" | "PROVEN";
@@ -163,45 +164,47 @@ export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
163
164
  ammTxs: boolean;
164
165
  nodeUrl: string | undefined;
165
166
  nodeAdminUrl: string | undefined;
166
- pxeUrl: string | undefined;
167
167
  l1RpcUrls: string[] | undefined;
168
- l1Mnemonic: SecretValue<string> | undefined;
169
- l1PrivateKey: SecretValue<string> | undefined;
170
- senderPrivateKey: SecretValue<Fr> | undefined;
171
168
  senderSalt: Fr | undefined;
172
169
  l2GasLimit: number | undefined;
173
170
  daGasLimit: number | undefined;
171
+ l1Mnemonic: SecretValue<string> | undefined;
172
+ l1PrivateKey: SecretValue<string> | undefined;
173
+ senderPrivateKey: SecretValue<Fr> | undefined;
174
+ dataDirectory: string | undefined;
175
+ dataStoreMapSizeKb: number;
174
176
  }, {
177
+ nodeUrl?: string | undefined;
178
+ nodeAdminUrl?: string | undefined;
179
+ l1RpcUrls?: string[] | undefined;
180
+ l1Mnemonic?: any;
181
+ l1PrivateKey?: any;
175
182
  l1ToL2MessageTimeoutSeconds: number;
183
+ senderPrivateKey?: any;
184
+ senderSalt?: any;
185
+ tokenSalt?: any;
176
186
  txIntervalSeconds: number;
177
187
  privateTransfersPerTx: number;
178
188
  publicTransfersPerTx: number;
179
189
  feePaymentMethod: "fee_juice";
190
+ minFeePadding: number;
180
191
  noStart: boolean;
181
192
  txMinedWaitSeconds: number;
182
193
  followChain: "NONE" | "PENDING" | "PROVEN";
183
194
  maxPendingTxs: number;
184
195
  flushSetupTransactions: boolean;
196
+ l2GasLimit?: number | undefined;
197
+ daGasLimit?: number | undefined;
185
198
  contract: SupportedTokenContracts;
186
199
  maxConsecutiveErrors: number;
187
200
  stopWhenUnhealthy: boolean;
188
- nodeUrl?: string | undefined;
189
- nodeAdminUrl?: string | undefined;
190
- pxeUrl?: string | undefined;
191
- l1RpcUrls?: string[] | undefined;
192
- l1Mnemonic?: any;
193
- l1PrivateKey?: any;
194
- senderPrivateKey?: any;
195
- senderSalt?: any;
196
- recipientEncryptionSecret?: any;
197
- tokenSalt?: any;
198
- l2GasLimit?: number | undefined;
199
- daGasLimit?: number | undefined;
200
201
  ammTxs?: boolean | undefined;
202
+ dataDirectory?: string | undefined;
203
+ dataStoreMapSizeKb?: number | undefined;
201
204
  }>;
202
205
  export declare const botConfigMappings: ConfigMappingsType<BotConfig>;
203
206
  export declare function getBotConfigFromEnv(): BotConfig;
204
207
  export declare function getBotDefaultConfig(): BotConfig;
205
208
  export declare function getVersions(): Partial<ComponentsVersions>;
206
209
  export {};
207
- //# sourceMappingURL=config.d.ts.map
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQUN2QixXQUFXLEVBU1osTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFzQixNQUFNLHdCQUF3QixDQUFDO0FBSWxGLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFbkUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixRQUFBLE1BQU0sY0FBYyx3Q0FBeUMsQ0FBQztBQUM5RCxLQUFLLGNBQWMsR0FBRyxDQUFDLE9BQU8sY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFdEQsb0JBQVksdUJBQXVCO0lBQ2pDLGFBQWEsa0JBQWtCO0lBQy9CLG9CQUFvQix5QkFBeUI7Q0FDOUM7QUFFRCxNQUFNLE1BQU0sU0FBUyxHQUFHO0lBQ3RCLDZEQUE2RDtJQUM3RCxPQUFPLEVBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQztJQUM1Qiw0RUFBNEU7SUFDNUUsWUFBWSxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDakMsZ0NBQWdDO0lBQ2hDLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUM7SUFDaEMsZ0VBQWdFO0lBQ2hFLFVBQVUsRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQzVDLG1FQUFtRTtJQUNuRSxZQUFZLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUM5Qyx1RUFBdUU7SUFDdkUsMkJBQTJCLEVBQUUsTUFBTSxDQUFDO0lBQ3BDLGtEQUFrRDtJQUNsRCxnQkFBZ0IsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQzlDLDZEQUE2RDtJQUM3RCxVQUFVLEVBQUUsRUFBRSxHQUFHLFNBQVMsQ0FBQztJQUMzQixpREFBaUQ7SUFDakQsU0FBUyxFQUFFLEVBQUUsQ0FBQztJQUNkLHNEQUFzRDtJQUN0RCxpQkFBaUIsRUFBRSxNQUFNLENBQUM7SUFDMUIsNERBQTREO0lBQzVELHFCQUFxQixFQUFFLE1BQU0sQ0FBQztJQUM5QiwyREFBMkQ7SUFDM0Qsb0JBQW9CLEVBQUUsTUFBTSxDQUFDO0lBQzdCLGtDQUFrQztJQUNsQyxnQkFBZ0IsRUFBRSxXQUFXLENBQUM7SUFDOUIsdUVBQXVFO0lBQ3ZFLGFBQWEsRUFBRSxNQUFNLENBQUM7SUFDdEIsMEVBQTBFO0lBQzFFLE9BQU8sRUFBRSxPQUFPLENBQUM7SUFDakIsdUVBQXVFO0lBQ3ZFLGtCQUFrQixFQUFFLE1BQU0sQ0FBQztJQUMzQiw0RUFBNEU7SUFDNUUsV0FBVyxFQUFFLGNBQWMsQ0FBQztJQUM1QixnRkFBZ0Y7SUFDaEYsYUFBYSxFQUFFLE1BQU0sQ0FBQztJQUN0Qiw4REFBOEQ7SUFDOUQsc0JBQXNCLEVBQUUsT0FBTyxDQUFDO0lBQ2hDLCtFQUErRTtJQUMvRSxVQUFVLEVBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQztJQUMvQiwrRUFBK0U7SUFDL0UsVUFBVSxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDL0IsNEJBQTRCO0lBQzVCLFFBQVEsRUFBRSx1QkFBdUIsQ0FBQztJQUNsQyx5RUFBeUU7SUFDekUsb0JBQW9CLEVBQUUsTUFBTSxDQUFDO0lBQzdCLGlEQUFpRDtJQUNqRCxpQkFBaUIsRUFBRSxPQUFPLENBQUM7SUFDM0IsK0RBQStEO0lBQy9ELE1BQU0sRUFBRSxPQUFPLENBQUM7Q0FDakIsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLGVBQWUsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDO0FBRWxFLGVBQU8sTUFBTSxlQUFlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQTZDM0IsQ0FBQztBQUVGLGVBQU8sTUFBTSxpQkFBaUIsRUFBRSxrQkFBa0IsQ0FBQyxTQUFTLENBK0kzRCxDQUFDO0FBRUYsd0JBQWdCLG1CQUFtQixJQUFJLFNBQVMsQ0FFL0M7QUFFRCx3QkFBZ0IsbUJBQW1CLElBQUksU0FBUyxDQUUvQztBQUVELHdCQUFnQixXQUFXLElBQUksT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBS3pEIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,WAAW,EAQZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAG9C,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,8EAA8E;IAC9E,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,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,yBAAyB,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IAC3C,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,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyCK,CAAC;AAElC,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,CAAC,SAAS,CAmJ3D,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":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,WAAW,EASZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAIlF,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,uEAAuE;IACvE,aAAa,EAAE,MAAM,CAAC;IACtB,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6C3B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,CAAC,SAAS,CA+I3D,CAAC;AAEF,wBAAgB,mBAAmB,IAAI,SAAS,CAE/C;AAED,wBAAgB,mBAAmB,IAAI,SAAS,CAE/C;AAED,wBAAgB,WAAW,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAKzD"}