@aztec/bot 0.0.1-commit.e558bd1c → 0.0.1-commit.e588bc7e5
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 +4 -4
- package/dest/amm_bot.d.ts.map +1 -1
- package/dest/amm_bot.js +24 -17
- package/dest/base_bot.d.ts +6 -6
- package/dest/base_bot.d.ts.map +1 -1
- package/dest/base_bot.js +21 -32
- package/dest/bot.d.ts +4 -4
- package/dest/bot.d.ts.map +1 -1
- package/dest/bot.js +5 -8
- package/dest/config.d.ts +34 -18
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +39 -12
- package/dest/cross_chain_bot.d.ts +54 -0
- package/dest/cross_chain_bot.d.ts.map +1 -0
- package/dest/cross_chain_bot.js +134 -0
- package/dest/factory.d.ts +20 -5
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +99 -38
- package/dest/index.d.ts +2 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -0
- package/dest/l1_to_l2_seeding.d.ts +8 -0
- package/dest/l1_to_l2_seeding.d.ts.map +1 -0
- package/dest/l1_to_l2_seeding.js +63 -0
- package/dest/runner.d.ts +3 -3
- package/dest/runner.d.ts.map +1 -1
- package/dest/runner.js +17 -1
- package/dest/store/bot_store.d.ts +30 -5
- package/dest/store/bot_store.d.ts.map +1 -1
- package/dest/store/bot_store.js +37 -6
- package/dest/store/index.d.ts +2 -2
- package/dest/store/index.d.ts.map +1 -1
- package/dest/utils.js +3 -3
- package/package.json +16 -13
- package/src/amm_bot.ts +24 -19
- package/src/base_bot.ts +15 -33
- package/src/bot.ts +8 -10
- package/src/config.ts +44 -16
- package/src/cross_chain_bot.ts +203 -0
- package/src/factory.ts +158 -47
- package/src/index.ts +1 -0
- package/src/l1_to_l2_seeding.ts +79 -0
- package/src/runner.ts +18 -5
- package/src/store/bot_store.ts +60 -5
- package/src/store/index.ts +1 -1
- package/src/utils.ts +3 -3
package/dest/amm_bot.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { TxHash, TxReceipt } from '@aztec/aztec.js/tx';
|
|
|
3
3
|
import type { AMMContract } from '@aztec/noir-contracts.js/AMM';
|
|
4
4
|
import type { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
5
5
|
import type { AztecNode, AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
6
|
-
import type {
|
|
6
|
+
import type { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
7
7
|
import { BaseBot } from './base_bot.js';
|
|
8
8
|
import type { BotConfig } from './config.js';
|
|
9
9
|
import type { BotStore } from './store/index.js';
|
|
@@ -15,8 +15,8 @@ export declare class AmmBot extends BaseBot {
|
|
|
15
15
|
readonly amm: AMMContract;
|
|
16
16
|
readonly token0: TokenContract;
|
|
17
17
|
readonly token1: TokenContract;
|
|
18
|
-
protected constructor(node: AztecNode, wallet:
|
|
19
|
-
static create(config: BotConfig, wallet:
|
|
18
|
+
protected constructor(node: AztecNode, wallet: EmbeddedWallet, defaultAccountAddress: AztecAddress, amm: AMMContract, token0: TokenContract, token1: TokenContract, config: BotConfig);
|
|
19
|
+
static create(config: BotConfig, wallet: EmbeddedWallet, aztecNode: AztecNode, aztecNodeAdmin: AztecNodeAdmin | undefined, store: BotStore): Promise<AmmBot>;
|
|
20
20
|
protected createAndSendTx(logCtx: object): Promise<TxHash>;
|
|
21
21
|
protected onTxMined(receipt: TxReceipt, logCtx: object): Promise<void>;
|
|
22
22
|
getAmmBalances(): Promise<Balances>;
|
|
@@ -29,4 +29,4 @@ export declare class AmmBot extends BaseBot {
|
|
|
29
29
|
private getPrivateBalanceFor;
|
|
30
30
|
}
|
|
31
31
|
export {};
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1tX2JvdC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FtbV9ib3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkQsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pGLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTlELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTdDLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBS2pELEtBQUssUUFBUSxHQUFHO0lBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUFDLE1BQU0sRUFBRSxNQUFNLENBQUE7Q0FBRSxDQUFDO0FBRW5ELHFCQUFhLE1BQU8sU0FBUSxPQUFPO2FBS2YsR0FBRyxFQUFFLFdBQVc7YUFDaEIsTUFBTSxFQUFFLGFBQWE7YUFDckIsTUFBTSxFQUFFLGFBQWE7SUFOdkMsU0FBUyxhQUNQLElBQUksRUFBRSxTQUFTLEVBQ2YsTUFBTSxFQUFFLGNBQWMsRUFDdEIscUJBQXFCLEVBQUUsWUFBWSxFQUNuQixHQUFHLEVBQUUsV0FBVyxFQUNoQixNQUFNLEVBQUUsYUFBYSxFQUNyQixNQUFNLEVBQUUsYUFBYSxFQUNyQyxNQUFNLEVBQUUsU0FBUyxFQUdsQjtJQUVELE9BQWEsTUFBTSxDQUNqQixNQUFNLEVBQUUsU0FBUyxFQUNqQixNQUFNLEVBQUUsY0FBYyxFQUN0QixTQUFTLEVBQUUsU0FBUyxFQUNwQixjQUFjLEVBQUUsY0FBYyxHQUFHLFNBQVMsRUFDMUMsS0FBSyxFQUFFLFFBQVEsR0FDZCxPQUFPLENBQUMsTUFBTSxDQUFDLENBU2pCO0lBRUQsVUFBZ0IsZUFBZSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQTZDL0Q7SUFFRCxVQUF5QixTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FHcEY7SUFFTSxjQUFjLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUV6QztJQUVZLFdBQVcsSUFBSSxPQUFPLENBQUM7UUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDO1FBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQztRQUFDLEdBQUcsRUFBRSxRQUFRLENBQUE7S0FBRSxDQUFDLENBTXRHO1lBRWEsbUJBQW1CO1lBS25CLG9CQUFvQjtDQVNuQyJ9
|
package/dest/amm_bot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"amm_bot.d.ts","sourceRoot":"","sources":["../src/amm_bot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEvD,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,
|
|
1
|
+
{"version":3,"file":"amm_bot.d.ts","sourceRoot":"","sources":["../src/amm_bot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEvD,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,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,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,cAAc,EACtB,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,cAAc,EACtB,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,CA6C/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;YAKnB,oBAAoB;CASnC"}
|
package/dest/amm_bot.js
CHANGED
|
@@ -38,11 +38,13 @@ export class AmmBot extends BaseBot {
|
|
|
38
38
|
caller: amm.address,
|
|
39
39
|
call: await tokenIn.methods.transfer_to_public(this.defaultAccountAddress, amm.address, amountIn, authwitNonce).getFunctionCall()
|
|
40
40
|
});
|
|
41
|
-
const
|
|
41
|
+
const { result: tokenInBalance } = await tokenIn.methods.balance_of_public(amm.address).simulate({
|
|
42
42
|
from: this.defaultAccountAddress
|
|
43
|
-
})
|
|
43
|
+
});
|
|
44
|
+
const { result: tokenOutBalance } = await tokenOut.methods.balance_of_public(amm.address).simulate({
|
|
44
45
|
from: this.defaultAccountAddress
|
|
45
|
-
})
|
|
46
|
+
});
|
|
47
|
+
const { result: amountOutMin } = await amm.methods.get_amount_out_for_exact_in(tokenInBalance, tokenOutBalance, amountIn).simulate({
|
|
46
48
|
from: this.defaultAccountAddress
|
|
47
49
|
});
|
|
48
50
|
const swapExactTokensInteraction = amm.methods.swap_exact_tokens_for_tokens(tokenIn.address, tokenOut.address, amountIn, amountOutMin, authwitNonce).with({
|
|
@@ -50,16 +52,17 @@ export class AmmBot extends BaseBot {
|
|
|
50
52
|
swapAuthwit
|
|
51
53
|
]
|
|
52
54
|
});
|
|
53
|
-
const opts =
|
|
55
|
+
const opts = this.getSendMethodOpts();
|
|
54
56
|
this.log.verbose(`Sending transaction`, logCtx);
|
|
55
57
|
this.log.info(`Tx. Balances: ${jsonStringify(balances)}`, {
|
|
56
58
|
...logCtx,
|
|
57
59
|
balances
|
|
58
60
|
});
|
|
59
|
-
|
|
61
|
+
const { txHash } = await swapExactTokensInteraction.send({
|
|
60
62
|
...opts,
|
|
61
63
|
wait: NO_WAIT
|
|
62
64
|
});
|
|
65
|
+
return txHash;
|
|
63
66
|
}
|
|
64
67
|
async onTxMined(receipt, logCtx) {
|
|
65
68
|
const balances = await this.getBalances();
|
|
@@ -79,23 +82,27 @@ export class AmmBot extends BaseBot {
|
|
|
79
82
|
};
|
|
80
83
|
}
|
|
81
84
|
async getPublicBalanceFor(address, from) {
|
|
85
|
+
const { result: token0 } = await this.token0.methods.balance_of_public(address).simulate({
|
|
86
|
+
from: from ?? address
|
|
87
|
+
});
|
|
88
|
+
const { result: token1 } = await this.token1.methods.balance_of_public(address).simulate({
|
|
89
|
+
from: from ?? address
|
|
90
|
+
});
|
|
82
91
|
return {
|
|
83
|
-
token0
|
|
84
|
-
|
|
85
|
-
}),
|
|
86
|
-
token1: await this.token1.methods.balance_of_public(address).simulate({
|
|
87
|
-
from: from ?? address
|
|
88
|
-
})
|
|
92
|
+
token0,
|
|
93
|
+
token1
|
|
89
94
|
};
|
|
90
95
|
}
|
|
91
96
|
async getPrivateBalanceFor(address, from) {
|
|
97
|
+
const { result: token0 } = await this.token0.methods.balance_of_private(address).simulate({
|
|
98
|
+
from: from ?? address
|
|
99
|
+
});
|
|
100
|
+
const { result: token1 } = await this.token1.methods.balance_of_private(address).simulate({
|
|
101
|
+
from: from ?? address
|
|
102
|
+
});
|
|
92
103
|
return {
|
|
93
|
-
token0
|
|
94
|
-
|
|
95
|
-
}),
|
|
96
|
-
token1: await this.token1.methods.balance_of_private(address).simulate({
|
|
97
|
-
from: from ?? address
|
|
98
|
-
})
|
|
104
|
+
token0,
|
|
105
|
+
token1
|
|
99
106
|
};
|
|
100
107
|
}
|
|
101
108
|
}
|
package/dest/base_bot.d.ts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
|
-
import {
|
|
2
|
+
import type { SendInteractionOptions } from '@aztec/aztec.js/contracts';
|
|
3
3
|
import { TxHash, TxReceipt } from '@aztec/aztec.js/tx';
|
|
4
4
|
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
5
|
-
import type {
|
|
5
|
+
import type { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
6
6
|
import type { BotConfig } from './config.js';
|
|
7
7
|
export declare abstract class BaseBot {
|
|
8
8
|
readonly node: AztecNode;
|
|
9
|
-
readonly wallet:
|
|
9
|
+
readonly wallet: EmbeddedWallet;
|
|
10
10
|
readonly defaultAccountAddress: AztecAddress;
|
|
11
11
|
config: BotConfig;
|
|
12
12
|
protected log: import("@aztec/aztec.js/log").Logger;
|
|
13
13
|
protected attempts: number;
|
|
14
14
|
protected successes: number;
|
|
15
|
-
protected constructor(node: AztecNode, wallet:
|
|
15
|
+
protected constructor(node: AztecNode, wallet: EmbeddedWallet, defaultAccountAddress: AztecAddress, config: BotConfig);
|
|
16
16
|
run(): Promise<TxReceipt | TxHash>;
|
|
17
17
|
protected abstract createAndSendTx(logCtx: object): Promise<TxHash>;
|
|
18
18
|
protected onTxMined(_receipt: TxReceipt, _logCtx: object): Promise<void>;
|
|
19
|
-
protected getSendMethodOpts(
|
|
19
|
+
protected getSendMethodOpts(): SendInteractionOptions;
|
|
20
20
|
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV9ib3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9iYXNlX2JvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd4RSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBWSxNQUFNLG9CQUFvQixDQUFDO0FBRWpFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTlELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU3Qyw4QkFBc0IsT0FBTzthQU9ULElBQUksRUFBRSxTQUFTO2FBQ2YsTUFBTSxFQUFFLGNBQWM7YUFDdEIscUJBQXFCLEVBQUUsWUFBWTtJQUM1QyxNQUFNLEVBQUUsU0FBUztJQVQxQixTQUFTLENBQUMsR0FBRyx1Q0FBdUI7SUFFcEMsU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUs7SUFDL0IsU0FBUyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUs7SUFFaEMsU0FBUyxhQUNTLElBQUksRUFBRSxTQUFTLEVBQ2YsTUFBTSxFQUFFLGNBQWMsRUFDdEIscUJBQXFCLEVBQUUsWUFBWSxFQUM1QyxNQUFNLEVBQUUsU0FBUyxFQUN0QjtJQUVTLEdBQUcsSUFBSSxPQUFPLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxDQXlCOUM7SUFFRCxTQUFTLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVwRSxTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBR3ZFO0lBRUQsU0FBUyxDQUFDLGlCQUFpQixJQUFJLHNCQUFzQixDQWNwRDtDQUNGIn0=
|
package/dest/base_bot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGxE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAY,MAAM,oBAAoB,CAAC;AAEjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,8BAAsB,OAAO;aAOT,IAAI,EAAE,SAAS;aACf,MAAM,EAAE,cAAc;aACtB,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,cAAc,EACtB,qBAAqB,EAAE,YAAY,EAC5C,MAAM,EAAE,SAAS,EACtB;IAES,GAAG,IAAI,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,CAyB9C;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,SAAS,CAAC,iBAAiB,IAAI,sBAAsB,CAcpD;CACF"}
|
package/dest/base_bot.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { waitForProven } from '@aztec/aztec.js/contracts';
|
|
2
1
|
import { createLogger } from '@aztec/aztec.js/log';
|
|
3
2
|
import { waitForTx } from '@aztec/aztec.js/node';
|
|
3
|
+
import { TxStatus } from '@aztec/aztec.js/tx';
|
|
4
4
|
import { Gas } from '@aztec/stdlib/gas';
|
|
5
5
|
export class BaseBot {
|
|
6
6
|
node;
|
|
@@ -21,25 +21,24 @@ export class BaseBot {
|
|
|
21
21
|
}
|
|
22
22
|
async run() {
|
|
23
23
|
this.attempts++;
|
|
24
|
+
const { followChain, txMinedWaitSeconds } = this.config;
|
|
24
25
|
const logCtx = {
|
|
25
|
-
runId: Date.now() * 1000 + Math.floor(Math.random() * 1000)
|
|
26
|
+
runId: Date.now() * 1000 + Math.floor(Math.random() * 1000),
|
|
27
|
+
followChain,
|
|
28
|
+
txMinedWaitSeconds
|
|
26
29
|
};
|
|
27
|
-
const { followChain, txMinedWaitSeconds } = this.config;
|
|
28
30
|
this.log.verbose(`Creating tx`, logCtx);
|
|
29
31
|
const txHash = await this.createAndSendTx(logCtx);
|
|
30
32
|
if (followChain === 'NONE') {
|
|
31
33
|
this.log.info(`Transaction ${txHash.toString()} sent, not waiting for it to be mined`);
|
|
32
34
|
return txHash;
|
|
33
35
|
}
|
|
34
|
-
|
|
36
|
+
const waitForStatus = TxStatus[followChain];
|
|
37
|
+
this.log.verbose(`Awaiting tx ${txHash.toString()} to be on the ${followChain} chain`, logCtx);
|
|
35
38
|
const receipt = await waitForTx(this.node, txHash, {
|
|
36
|
-
timeout: txMinedWaitSeconds
|
|
39
|
+
timeout: txMinedWaitSeconds,
|
|
40
|
+
waitForStatus
|
|
37
41
|
});
|
|
38
|
-
if (followChain === 'PROVEN') {
|
|
39
|
-
await waitForProven(this.node, receipt, {
|
|
40
|
-
provenTimeout: txMinedWaitSeconds
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
42
|
this.successes++;
|
|
44
43
|
this.log.info(`Tx #${this.attempts} ${receipt.txHash} successfully mined in block ${receipt.blockNumber} (stats: ${this.successes}/${this.attempts} success)`, logCtx);
|
|
45
44
|
await this.onTxMined(receipt, logCtx);
|
|
@@ -49,32 +48,22 @@ export class BaseBot {
|
|
|
49
48
|
// no-op
|
|
50
49
|
return Promise.resolve();
|
|
51
50
|
}
|
|
52
|
-
|
|
51
|
+
getSendMethodOpts() {
|
|
53
52
|
const { l2GasLimit, daGasLimit, minFeePadding } = this.config;
|
|
54
53
|
this.wallet.setMinFeePadding(minFeePadding);
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
})
|
|
62
|
-
};
|
|
63
|
-
this.log.verbose(`Using gas limits ${l2GasLimit} L2 gas ${daGasLimit} DA gas`);
|
|
64
|
-
} else {
|
|
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
|
-
}));
|
|
72
|
-
}
|
|
54
|
+
const gasSettings = l2GasLimit !== undefined && l2GasLimit > 0 && daGasLimit !== undefined && daGasLimit > 0 ? {
|
|
55
|
+
gasLimits: Gas.from({
|
|
56
|
+
l2Gas: l2GasLimit,
|
|
57
|
+
daGas: daGasLimit
|
|
58
|
+
})
|
|
59
|
+
} : undefined;
|
|
73
60
|
return {
|
|
74
61
|
from: this.defaultAccountAddress,
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
62
|
+
...gasSettings ? {
|
|
63
|
+
fee: {
|
|
64
|
+
gasSettings
|
|
65
|
+
}
|
|
66
|
+
} : {}
|
|
78
67
|
};
|
|
79
68
|
}
|
|
80
69
|
}
|
package/dest/bot.d.ts
CHANGED
|
@@ -3,15 +3,15 @@ import { TxHash } from '@aztec/aztec.js/tx';
|
|
|
3
3
|
import type { PrivateTokenContract } from '@aztec/noir-contracts.js/PrivateToken';
|
|
4
4
|
import type { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
5
5
|
import type { AztecNode, AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
6
|
-
import type {
|
|
6
|
+
import type { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
7
7
|
import { BaseBot } from './base_bot.js';
|
|
8
8
|
import type { BotConfig } from './config.js';
|
|
9
9
|
import type { BotStore } from './store/index.js';
|
|
10
10
|
export declare class Bot extends BaseBot {
|
|
11
11
|
readonly token: TokenContract | PrivateTokenContract;
|
|
12
12
|
readonly recipient: AztecAddress;
|
|
13
|
-
protected constructor(node: AztecNode, wallet:
|
|
14
|
-
static create(config: BotConfig, wallet:
|
|
13
|
+
protected constructor(node: AztecNode, wallet: EmbeddedWallet, defaultAccountAddress: AztecAddress, token: TokenContract | PrivateTokenContract, recipient: AztecAddress, config: BotConfig);
|
|
14
|
+
static create(config: BotConfig, wallet: EmbeddedWallet, aztecNode: AztecNode, aztecNodeAdmin: AztecNodeAdmin | undefined, store: BotStore): Promise<Bot>;
|
|
15
15
|
updateConfig(config: Partial<BotConfig>): void;
|
|
16
16
|
protected createAndSendTx(logCtx: object): Promise<TxHash>;
|
|
17
17
|
getBalances(): Promise<{
|
|
@@ -25,4 +25,4 @@ export declare class Bot extends BaseBot {
|
|
|
25
25
|
};
|
|
26
26
|
}>;
|
|
27
27
|
}
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYm90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU1QyxPQUFPLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2xGLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRixPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU3QyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUtqRCxxQkFBYSxHQUFJLFNBQVEsT0FBTzthQUtaLEtBQUssRUFBRSxhQUFhLEdBQUcsb0JBQW9CO2FBQzNDLFNBQVMsRUFBRSxZQUFZO0lBTHpDLFNBQVMsYUFDUCxJQUFJLEVBQUUsU0FBUyxFQUNmLE1BQU0sRUFBRSxjQUFjLEVBQ3RCLHFCQUFxQixFQUFFLFlBQVksRUFDbkIsS0FBSyxFQUFFLGFBQWEsR0FBRyxvQkFBb0IsRUFDM0MsU0FBUyxFQUFFLFlBQVksRUFDdkMsTUFBTSxFQUFFLFNBQVMsRUFHbEI7SUFFRCxPQUFhLE1BQU0sQ0FDakIsTUFBTSxFQUFFLFNBQVMsRUFDakIsTUFBTSxFQUFFLGNBQWMsRUFDdEIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsY0FBYyxFQUFFLGNBQWMsR0FBRyxTQUFTLEVBQzFDLEtBQUssRUFBRSxRQUFRLEdBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQVNkO0lBRU0sWUFBWSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLFFBRzdDO0lBRUQsVUFBZ0IsZUFBZSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQTBCL0Q7SUFFWSxXQUFXOzs7Ozs7Ozs7T0FrQnZCO0NBQ0YifQ==
|
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,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,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,
|
|
1
|
+
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,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,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,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,cAAc,EACtB,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,cAAc,EACtB,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,CA0B/D;IAEY,WAAW;;;;;;;;;OAkBvB;CACF"}
|
package/dest/bot.js
CHANGED
|
@@ -30,22 +30,19 @@ export class Bot extends BaseBot {
|
|
|
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
32
|
const batch = new BatchCall(wallet, calls);
|
|
33
|
-
const opts =
|
|
34
|
-
this.log.verbose(`Simulating transaction with ${calls.length}`, logCtx);
|
|
35
|
-
await batch.simulate({
|
|
36
|
-
from: this.defaultAccountAddress
|
|
37
|
-
});
|
|
33
|
+
const opts = this.getSendMethodOpts();
|
|
38
34
|
this.log.verbose(`Sending transaction`, logCtx);
|
|
39
|
-
|
|
35
|
+
const { txHash } = await batch.send({
|
|
40
36
|
...opts,
|
|
41
37
|
wait: NO_WAIT
|
|
42
38
|
});
|
|
39
|
+
return txHash;
|
|
43
40
|
}
|
|
44
41
|
async getBalances() {
|
|
45
42
|
if (isStandardTokenContract(this.token)) {
|
|
46
43
|
return {
|
|
47
44
|
sender: await getBalances(this.token, this.defaultAccountAddress),
|
|
48
|
-
recipient: await getBalances(this.token, this.recipient
|
|
45
|
+
recipient: await getBalances(this.token, this.recipient)
|
|
49
46
|
};
|
|
50
47
|
} else {
|
|
51
48
|
return {
|
|
@@ -54,7 +51,7 @@ export class Bot extends BaseBot {
|
|
|
54
51
|
publicBalance: 0n
|
|
55
52
|
},
|
|
56
53
|
recipient: {
|
|
57
|
-
privateBalance: await getPrivateBalance(this.token, this.recipient
|
|
54
|
+
privateBalance: await getPrivateBalance(this.token, this.recipient),
|
|
58
55
|
publicBalance: 0n
|
|
59
56
|
}
|
|
60
57
|
};
|
package/dest/config.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { type ConfigMappingsType, SecretValue } from '@aztec/foundation/config';
|
|
2
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
|
-
import { type DataStoreConfig } from '@aztec/kv-store
|
|
3
|
+
import { type DataStoreConfig } from '@aztec/stdlib/kv-store';
|
|
4
4
|
import type { ComponentsVersions } from '@aztec/stdlib/versioning';
|
|
5
5
|
import { z } from 'zod';
|
|
6
|
-
declare const BotFollowChain: readonly ["NONE", "
|
|
6
|
+
declare const BotFollowChain: readonly ["NONE", "PROPOSED", "CHECKPOINTED", "PROVEN"];
|
|
7
7
|
type BotFollowChain = (typeof BotFollowChain)[number];
|
|
8
|
+
declare const BotMode: readonly ["transfer", "amm", "crosschain"];
|
|
9
|
+
type BotMode = (typeof BotMode)[number];
|
|
8
10
|
export declare enum SupportedTokenContracts {
|
|
9
11
|
TokenContract = "TokenContract",
|
|
10
12
|
PrivateTokenContract = "PrivateTokenContract"
|
|
@@ -48,9 +50,9 @@ export type BotConfig = {
|
|
|
48
50
|
maxPendingTxs: number;
|
|
49
51
|
/** Whether to flush after sending each 'setup' transaction */
|
|
50
52
|
flushSetupTransactions: boolean;
|
|
51
|
-
/** L2 gas limit for the tx (empty to
|
|
53
|
+
/** L2 gas limit for the tx (empty to let the bot's wallet estimate). */
|
|
52
54
|
l2GasLimit: number | undefined;
|
|
53
|
-
/** DA gas limit for the tx (empty to
|
|
55
|
+
/** DA gas limit for the tx (empty to let the bot's wallet estimate). */
|
|
54
56
|
daGasLimit: number | undefined;
|
|
55
57
|
/** Token contract to use */
|
|
56
58
|
contract: SupportedTokenContracts;
|
|
@@ -58,8 +60,12 @@ export type BotConfig = {
|
|
|
58
60
|
maxConsecutiveErrors: number;
|
|
59
61
|
/** Stops the bot if service becomes unhealthy */
|
|
60
62
|
stopWhenUnhealthy: boolean;
|
|
61
|
-
/**
|
|
62
|
-
|
|
63
|
+
/** Bot mode: transfer, amm, or crosschain. */
|
|
64
|
+
botMode: BotMode;
|
|
65
|
+
/** Number of L2→L1 messages per tx (crosschain mode). */
|
|
66
|
+
l2ToL1MessagesPerTx: number;
|
|
67
|
+
/** Max L1→L2 messages to keep in-flight (crosschain mode). */
|
|
68
|
+
l1ToL2SeedCount: number;
|
|
63
69
|
} & Pick<DataStoreConfig, 'dataDirectory' | 'dataStoreMapSizeKb'>;
|
|
64
70
|
export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
65
71
|
nodeUrl: z.ZodOptional<z.ZodString>;
|
|
@@ -78,7 +84,7 @@ export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
78
84
|
minFeePadding: z.ZodNumber;
|
|
79
85
|
noStart: z.ZodBoolean;
|
|
80
86
|
txMinedWaitSeconds: z.ZodNumber;
|
|
81
|
-
followChain: z.ZodEnum<["NONE", "
|
|
87
|
+
followChain: z.ZodEnum<["NONE", "PROPOSED", "CHECKPOINTED", "PROVEN"]>;
|
|
82
88
|
maxPendingTxs: z.ZodNumber;
|
|
83
89
|
flushSetupTransactions: z.ZodBoolean;
|
|
84
90
|
l2GasLimit: z.ZodOptional<z.ZodNumber>;
|
|
@@ -86,7 +92,9 @@ export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
86
92
|
contract: z.ZodNativeEnum<typeof SupportedTokenContracts>;
|
|
87
93
|
maxConsecutiveErrors: z.ZodNumber;
|
|
88
94
|
stopWhenUnhealthy: z.ZodBoolean;
|
|
89
|
-
|
|
95
|
+
botMode: z.ZodDefault<z.ZodEnum<["transfer", "amm", "crosschain"]>>;
|
|
96
|
+
l2ToL1MessagesPerTx: z.ZodDefault<z.ZodNumber>;
|
|
97
|
+
l1ToL2SeedCount: z.ZodDefault<z.ZodNumber>;
|
|
90
98
|
dataDirectory: z.ZodOptional<z.ZodString>;
|
|
91
99
|
dataStoreMapSizeKb: z.ZodOptional<z.ZodNumber>;
|
|
92
100
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -106,7 +114,7 @@ export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
106
114
|
minFeePadding: number;
|
|
107
115
|
noStart: boolean;
|
|
108
116
|
txMinedWaitSeconds: number;
|
|
109
|
-
followChain: "NONE" | "
|
|
117
|
+
followChain: "CHECKPOINTED" | "NONE" | "PROPOSED" | "PROVEN";
|
|
110
118
|
maxPendingTxs: number;
|
|
111
119
|
flushSetupTransactions: boolean;
|
|
112
120
|
l2GasLimit?: number | undefined;
|
|
@@ -114,7 +122,9 @@ export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
114
122
|
contract: SupportedTokenContracts;
|
|
115
123
|
maxConsecutiveErrors: number;
|
|
116
124
|
stopWhenUnhealthy: boolean;
|
|
117
|
-
|
|
125
|
+
botMode: "amm" | "crosschain" | "transfer";
|
|
126
|
+
l2ToL1MessagesPerTx: number;
|
|
127
|
+
l1ToL2SeedCount: number;
|
|
118
128
|
dataDirectory?: string | undefined;
|
|
119
129
|
dataStoreMapSizeKb?: number | undefined;
|
|
120
130
|
}, {
|
|
@@ -134,7 +144,7 @@ export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
134
144
|
minFeePadding: number;
|
|
135
145
|
noStart: boolean;
|
|
136
146
|
txMinedWaitSeconds: number;
|
|
137
|
-
followChain: "NONE" | "
|
|
147
|
+
followChain: "CHECKPOINTED" | "NONE" | "PROPOSED" | "PROVEN";
|
|
138
148
|
maxPendingTxs: number;
|
|
139
149
|
flushSetupTransactions: boolean;
|
|
140
150
|
l2GasLimit?: number | undefined;
|
|
@@ -142,7 +152,9 @@ export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
142
152
|
contract: SupportedTokenContracts;
|
|
143
153
|
maxConsecutiveErrors: number;
|
|
144
154
|
stopWhenUnhealthy: boolean;
|
|
145
|
-
|
|
155
|
+
botMode?: "amm" | "crosschain" | "transfer" | undefined;
|
|
156
|
+
l2ToL1MessagesPerTx?: number | undefined;
|
|
157
|
+
l1ToL2SeedCount?: number | undefined;
|
|
146
158
|
dataDirectory?: string | undefined;
|
|
147
159
|
dataStoreMapSizeKb?: number | undefined;
|
|
148
160
|
}>, {
|
|
@@ -155,13 +167,16 @@ export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
155
167
|
minFeePadding: number;
|
|
156
168
|
noStart: boolean;
|
|
157
169
|
txMinedWaitSeconds: number;
|
|
158
|
-
followChain: "NONE" | "
|
|
170
|
+
followChain: "CHECKPOINTED" | "NONE" | "PROPOSED" | "PROVEN";
|
|
159
171
|
maxPendingTxs: number;
|
|
160
172
|
flushSetupTransactions: boolean;
|
|
161
173
|
contract: SupportedTokenContracts;
|
|
162
174
|
maxConsecutiveErrors: number;
|
|
163
175
|
stopWhenUnhealthy: boolean;
|
|
164
|
-
|
|
176
|
+
botMode: "amm" | "crosschain" | "transfer";
|
|
177
|
+
l2ToL1MessagesPerTx: number;
|
|
178
|
+
l1ToL2SeedCount: number;
|
|
179
|
+
dataDirectory?: string | undefined;
|
|
165
180
|
nodeUrl: string | undefined;
|
|
166
181
|
nodeAdminUrl: string | undefined;
|
|
167
182
|
l1RpcUrls: string[] | undefined;
|
|
@@ -171,7 +186,6 @@ export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
171
186
|
l1Mnemonic: SecretValue<string> | undefined;
|
|
172
187
|
l1PrivateKey: SecretValue<string> | undefined;
|
|
173
188
|
senderPrivateKey: SecretValue<Fr> | undefined;
|
|
174
|
-
dataDirectory: string | undefined;
|
|
175
189
|
dataStoreMapSizeKb: number;
|
|
176
190
|
}, {
|
|
177
191
|
nodeUrl?: string | undefined;
|
|
@@ -190,7 +204,7 @@ export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
190
204
|
minFeePadding: number;
|
|
191
205
|
noStart: boolean;
|
|
192
206
|
txMinedWaitSeconds: number;
|
|
193
|
-
followChain: "NONE" | "
|
|
207
|
+
followChain: "CHECKPOINTED" | "NONE" | "PROPOSED" | "PROVEN";
|
|
194
208
|
maxPendingTxs: number;
|
|
195
209
|
flushSetupTransactions: boolean;
|
|
196
210
|
l2GasLimit?: number | undefined;
|
|
@@ -198,7 +212,9 @@ export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
198
212
|
contract: SupportedTokenContracts;
|
|
199
213
|
maxConsecutiveErrors: number;
|
|
200
214
|
stopWhenUnhealthy: boolean;
|
|
201
|
-
|
|
215
|
+
botMode?: "amm" | "crosschain" | "transfer" | undefined;
|
|
216
|
+
l2ToL1MessagesPerTx?: number | undefined;
|
|
217
|
+
l1ToL2SeedCount?: number | undefined;
|
|
202
218
|
dataDirectory?: string | undefined;
|
|
203
219
|
dataStoreMapSizeKb?: number | undefined;
|
|
204
220
|
}>;
|
|
@@ -207,4 +223,4 @@ export declare function getBotConfigFromEnv(): BotConfig;
|
|
|
207
223
|
export declare function getBotDefaultConfig(): BotConfig;
|
|
208
224
|
export declare function getVersions(): Partial<ComponentsVersions>;
|
|
209
225
|
export {};
|
|
210
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
226
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQUN2QixXQUFXLEVBU1osTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHcEQsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFzQixNQUFNLHdCQUF3QixDQUFDO0FBRWxGLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFbkUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixRQUFBLE1BQU0sY0FBYyx5REFBMEQsQ0FBQztBQUMvRSxLQUFLLGNBQWMsR0FBRyxDQUFDLE9BQU8sY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFdEQsUUFBQSxNQUFNLE9BQU8sNENBQTZDLENBQUM7QUFDM0QsS0FBSyxPQUFPLEdBQUcsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRXhDLG9CQUFZLHVCQUF1QjtJQUNqQyxhQUFhLGtCQUFrQjtJQUMvQixvQkFBb0IseUJBQXlCO0NBQzlDO0FBRUQsTUFBTSxNQUFNLFNBQVMsR0FBRztJQUN0Qiw2REFBNkQ7SUFDN0QsT0FBTyxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDNUIsNEVBQTRFO0lBQzVFLFlBQVksRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQ2pDLGdDQUFnQztJQUNoQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDO0lBQ2hDLGdFQUFnRTtJQUNoRSxVQUFVLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUM1QyxtRUFBbUU7SUFDbkUsWUFBWSxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUM7SUFDOUMsdUVBQXVFO0lBQ3ZFLDJCQUEyQixFQUFFLE1BQU0sQ0FBQztJQUNwQyxrREFBa0Q7SUFDbEQsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUM5Qyw2REFBNkQ7SUFDN0QsVUFBVSxFQUFFLEVBQUUsR0FBRyxTQUFTLENBQUM7SUFDM0IsaURBQWlEO0lBQ2pELFNBQVMsRUFBRSxFQUFFLENBQUM7SUFDZCxzREFBc0Q7SUFDdEQsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO0lBQzFCLDREQUE0RDtJQUM1RCxxQkFBcUIsRUFBRSxNQUFNLENBQUM7SUFDOUIsMkRBQTJEO0lBQzNELG9CQUFvQixFQUFFLE1BQU0sQ0FBQztJQUM3QixrQ0FBa0M7SUFDbEMsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDO0lBQzlCLHVFQUF1RTtJQUN2RSxhQUFhLEVBQUUsTUFBTSxDQUFDO0lBQ3RCLDBFQUEwRTtJQUMxRSxPQUFPLEVBQUUsT0FBTyxDQUFDO0lBQ2pCLHVFQUF1RTtJQUN2RSxrQkFBa0IsRUFBRSxNQUFNLENBQUM7SUFDM0IsNEVBQTRFO0lBQzVFLFdBQVcsRUFBRSxjQUFjLENBQUM7SUFDNUIsZ0ZBQWdGO0lBQ2hGLGFBQWEsRUFBRSxNQUFNLENBQUM7SUFDdEIsOERBQThEO0lBQzlELHNCQUFzQixFQUFFLE9BQU8sQ0FBQztJQUNoQyx3RUFBd0U7SUFDeEUsVUFBVSxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDL0Isd0VBQXdFO0lBQ3hFLFVBQVUsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQy9CLDRCQUE0QjtJQUM1QixRQUFRLEVBQUUsdUJBQXVCLENBQUM7SUFDbEMseUVBQXlFO0lBQ3pFLG9CQUFvQixFQUFFLE1BQU0sQ0FBQztJQUM3QixpREFBaUQ7SUFDakQsaUJBQWlCLEVBQUUsT0FBTyxDQUFDO0lBQzNCLDhDQUE4QztJQUM5QyxPQUFPLEVBQUUsT0FBTyxDQUFDO0lBQ2pCLDJEQUF5RDtJQUN6RCxtQkFBbUIsRUFBRSxNQUFNLENBQUM7SUFDNUIsZ0VBQThEO0lBQzlELGVBQWUsRUFBRSxNQUFNLENBQUM7Q0FDekIsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLGVBQWUsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDO0FBRWxFLGVBQU8sTUFBTSxlQUFlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE4QzNCLENBQUM7QUFFRixlQUFPLE1BQU0saUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsU0FBUyxDQW1LM0QsQ0FBQztBQUVGLHdCQUFnQixtQkFBbUIsSUFBSSxTQUFTLENBRS9DO0FBRUQsd0JBQWdCLG1CQUFtQixJQUFJLFNBQVMsQ0FFL0M7QUFFRCx3QkFBZ0IsV0FBVyxJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUt6RCJ9
|
package/dest/config.d.ts.map
CHANGED
|
@@ -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,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dest/config.js
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import { booleanConfigHelper, getConfigFromMappings, getDefaultConfig, numberConfigHelper, optionalNumberConfigHelper, pickConfigMappings, secretFrConfigHelper, secretStringConfigHelper } from '@aztec/foundation/config';
|
|
2
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
|
-
import { dataConfigMappings } from '@aztec/kv-store/config';
|
|
4
3
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
5
4
|
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
5
|
+
import { dataConfigMappings } from '@aztec/stdlib/kv-store';
|
|
6
6
|
import { schemas, zodFor } from '@aztec/stdlib/schemas';
|
|
7
7
|
import { z } from 'zod';
|
|
8
8
|
const BotFollowChain = [
|
|
9
9
|
'NONE',
|
|
10
|
-
'
|
|
10
|
+
'PROPOSED',
|
|
11
|
+
'CHECKPOINTED',
|
|
11
12
|
'PROVEN'
|
|
12
13
|
];
|
|
14
|
+
const BotMode = [
|
|
15
|
+
'transfer',
|
|
16
|
+
'amm',
|
|
17
|
+
'crosschain'
|
|
18
|
+
];
|
|
13
19
|
export var SupportedTokenContracts = /*#__PURE__*/ function(SupportedTokenContracts) {
|
|
14
20
|
SupportedTokenContracts["TokenContract"] = "TokenContract";
|
|
15
21
|
SupportedTokenContracts["PrivateTokenContract"] = "PrivateTokenContract";
|
|
@@ -40,7 +46,9 @@ export const BotConfigSchema = zodFor()(z.object({
|
|
|
40
46
|
contract: z.nativeEnum(SupportedTokenContracts),
|
|
41
47
|
maxConsecutiveErrors: z.number().int().nonnegative(),
|
|
42
48
|
stopWhenUnhealthy: z.boolean(),
|
|
43
|
-
|
|
49
|
+
botMode: z.enum(BotMode).default('transfer'),
|
|
50
|
+
l2ToL1MessagesPerTx: z.number().int().nonnegative().default(1),
|
|
51
|
+
l1ToL2SeedCount: z.number().int().nonnegative().default(1),
|
|
44
52
|
dataDirectory: z.string().optional(),
|
|
45
53
|
dataStoreMapSizeKb: z.number().optional()
|
|
46
54
|
}).transform((config)=>({
|
|
@@ -53,7 +61,6 @@ export const BotConfigSchema = zodFor()(z.object({
|
|
|
53
61
|
l1Mnemonic: undefined,
|
|
54
62
|
l1PrivateKey: undefined,
|
|
55
63
|
senderPrivateKey: undefined,
|
|
56
|
-
dataDirectory: undefined,
|
|
57
64
|
dataStoreMapSizeKb: 1_024 * 1_024,
|
|
58
65
|
...config
|
|
59
66
|
})));
|
|
@@ -143,10 +150,14 @@ export const botConfigMappings = {
|
|
|
143
150
|
description: 'Which chain the bot follows',
|
|
144
151
|
defaultValue: 'NONE',
|
|
145
152
|
parseEnv (val) {
|
|
146
|
-
|
|
153
|
+
const upper = val.toUpperCase();
|
|
154
|
+
if (upper === 'PENDING') {
|
|
155
|
+
return 'CHECKPOINTED';
|
|
156
|
+
}
|
|
157
|
+
if (!BotFollowChain.includes(upper)) {
|
|
147
158
|
throw new Error(`Invalid value for BOT_FOLLOW_CHAIN: ${val}`);
|
|
148
159
|
}
|
|
149
|
-
return
|
|
160
|
+
return upper;
|
|
150
161
|
}
|
|
151
162
|
},
|
|
152
163
|
maxPendingTxs: {
|
|
@@ -161,12 +172,12 @@ export const botConfigMappings = {
|
|
|
161
172
|
},
|
|
162
173
|
l2GasLimit: {
|
|
163
174
|
env: 'BOT_L2_GAS_LIMIT',
|
|
164
|
-
description:
|
|
175
|
+
description: "L2 gas limit for the tx (empty to let the bot's wallet estimate).",
|
|
165
176
|
...optionalNumberConfigHelper()
|
|
166
177
|
},
|
|
167
178
|
daGasLimit: {
|
|
168
179
|
env: 'BOT_DA_GAS_LIMIT',
|
|
169
|
-
description:
|
|
180
|
+
description: "DA gas limit for the tx (empty to let the bot's wallet estimate).",
|
|
170
181
|
...optionalNumberConfigHelper()
|
|
171
182
|
},
|
|
172
183
|
contract: {
|
|
@@ -190,10 +201,26 @@ export const botConfigMappings = {
|
|
|
190
201
|
description: 'Stops the bot if service becomes unhealthy',
|
|
191
202
|
...booleanConfigHelper(false)
|
|
192
203
|
},
|
|
193
|
-
|
|
194
|
-
env: '
|
|
195
|
-
description: '
|
|
196
|
-
|
|
204
|
+
botMode: {
|
|
205
|
+
env: 'BOT_MODE',
|
|
206
|
+
description: 'Bot mode: transfer, amm, or crosschain',
|
|
207
|
+
defaultValue: 'transfer',
|
|
208
|
+
parseEnv (val) {
|
|
209
|
+
if (!BotMode.includes(val)) {
|
|
210
|
+
throw new Error(`Invalid value for BOT_MODE: ${val}`);
|
|
211
|
+
}
|
|
212
|
+
return val;
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
l2ToL1MessagesPerTx: {
|
|
216
|
+
env: 'BOT_L2_TO_L1_MESSAGES_PER_TX',
|
|
217
|
+
description: 'Number of L2→L1 messages per tx (crosschain mode)',
|
|
218
|
+
...numberConfigHelper(1)
|
|
219
|
+
},
|
|
220
|
+
l1ToL2SeedCount: {
|
|
221
|
+
env: 'BOT_L1_TO_L2_SEED_COUNT',
|
|
222
|
+
description: 'Max L1→L2 messages to keep in-flight (crosschain mode)',
|
|
223
|
+
...numberConfigHelper(1)
|
|
197
224
|
},
|
|
198
225
|
...pickConfigMappings(dataConfigMappings, [
|
|
199
226
|
'dataStoreMapSizeKb',
|