@aztec/bot 0.0.0-test.1 → 0.0.1-commit.001888fc

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 (57) hide show
  1. package/dest/amm_bot.d.ts +32 -0
  2. package/dest/amm_bot.d.ts.map +1 -0
  3. package/dest/amm_bot.js +108 -0
  4. package/dest/base_bot.d.ts +21 -0
  5. package/dest/base_bot.d.ts.map +1 -0
  6. package/dest/base_bot.js +79 -0
  7. package/dest/bot.d.ts +13 -18
  8. package/dest/bot.d.ts.map +1 -1
  9. package/dest/bot.js +26 -84
  10. package/dest/config.d.ts +106 -66
  11. package/dest/config.d.ts.map +1 -1
  12. package/dest/config.js +89 -39
  13. package/dest/cross_chain_bot.d.ts +54 -0
  14. package/dest/cross_chain_bot.d.ts.map +1 -0
  15. package/dest/cross_chain_bot.js +134 -0
  16. package/dest/factory.d.ts +43 -29
  17. package/dest/factory.d.ts.map +1 -1
  18. package/dest/factory.js +380 -139
  19. package/dest/index.d.ts +5 -2
  20. package/dest/index.d.ts.map +1 -1
  21. package/dest/index.js +4 -1
  22. package/dest/interface.d.ts +12 -1
  23. package/dest/interface.d.ts.map +1 -1
  24. package/dest/interface.js +5 -0
  25. package/dest/l1_to_l2_seeding.d.ts +8 -0
  26. package/dest/l1_to_l2_seeding.d.ts.map +1 -0
  27. package/dest/l1_to_l2_seeding.js +63 -0
  28. package/dest/rpc.d.ts +1 -7
  29. package/dest/rpc.d.ts.map +1 -1
  30. package/dest/rpc.js +0 -11
  31. package/dest/runner.d.ts +15 -11
  32. package/dest/runner.d.ts.map +1 -1
  33. package/dest/runner.js +457 -51
  34. package/dest/store/bot_store.d.ts +69 -0
  35. package/dest/store/bot_store.d.ts.map +1 -0
  36. package/dest/store/bot_store.js +138 -0
  37. package/dest/store/index.d.ts +2 -0
  38. package/dest/store/index.d.ts.map +1 -0
  39. package/dest/store/index.js +1 -0
  40. package/dest/utils.d.ts +8 -5
  41. package/dest/utils.d.ts.map +1 -1
  42. package/dest/utils.js +14 -5
  43. package/package.json +30 -23
  44. package/src/amm_bot.ts +129 -0
  45. package/src/base_bot.ts +82 -0
  46. package/src/bot.ts +52 -101
  47. package/src/config.ts +129 -71
  48. package/src/cross_chain_bot.ts +203 -0
  49. package/src/factory.ts +476 -152
  50. package/src/index.ts +4 -1
  51. package/src/interface.ts +9 -0
  52. package/src/l1_to_l2_seeding.ts +79 -0
  53. package/src/rpc.ts +0 -13
  54. package/src/runner.ts +51 -21
  55. package/src/store/bot_store.ts +196 -0
  56. package/src/store/index.ts +1 -0
  57. package/src/utils.ts +17 -6
package/dest/config.d.ts CHANGED
@@ -1,30 +1,34 @@
1
- import { type ConfigMappingsType } from '@aztec/foundation/config';
2
- import { Fr } from '@aztec/foundation/fields';
3
- import { type ZodFor } from '@aztec/stdlib/schemas';
1
+ import { type ConfigMappingsType, SecretValue } from '@aztec/foundation/config';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
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", "PENDING", "PROVEN"];
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
- EasyPrivateTokenContract = "EasyPrivateTokenContract"
12
+ PrivateTokenContract = "PrivateTokenContract"
11
13
  }
12
14
  export type BotConfig = {
13
15
  /** The URL to the Aztec node to check for tx pool status. */
14
16
  nodeUrl: string | undefined;
15
- /** URL to the PXE for sending txs, or undefined if an in-proc PXE is used. */
16
- pxeUrl: string | undefined;
17
+ /** The URL to the Aztec node admin API to force-flush txs if configured. */
18
+ nodeAdminUrl: string | undefined;
17
19
  /** Url of the ethereum host. */
18
20
  l1RpcUrls: string[] | undefined;
19
21
  /** The mnemonic for the account to bridge fee juice from L1. */
20
- l1Mnemonic: string | undefined;
22
+ l1Mnemonic: SecretValue<string> | undefined;
21
23
  /** The private key for the account to bridge fee juice from L1. */
22
- l1PrivateKey: string | undefined;
24
+ l1PrivateKey: SecretValue<string> | undefined;
25
+ /** How long to wait for L1 to L2 messages to become available on L2 */
26
+ l1ToL2MessageTimeoutSeconds: number;
23
27
  /** Signing private key for the sender account. */
24
- senderPrivateKey: Fr | undefined;
25
- /** Encryption secret for a recipient account. */
26
- recipientEncryptionSecret: Fr;
27
- /** Salt for the token contract deployment. */
28
+ senderPrivateKey: SecretValue<Fr> | undefined;
29
+ /** Optional salt to use to instantiate the sender account */
30
+ senderSalt: Fr | undefined;
31
+ /** Salt for the token contract instantiation. */
28
32
  tokenSalt: Fr;
29
33
  /** Every how many seconds should a new tx be sent. */
30
34
  txIntervalSeconds: number;
@@ -34,6 +38,8 @@ export type BotConfig = {
34
38
  publicTransfersPerTx: number;
35
39
  /** How to handle fee payments. */
36
40
  feePaymentMethod: 'fee_juice';
41
+ /** 'How much is the bot willing to overpay vs. the current min fee' */
42
+ minFeePadding: number;
37
43
  /** True to not automatically setup or start the bot on initialization. */
38
44
  noStart: boolean;
39
45
  /** How long to wait for a tx to be mined before reporting an error. */
@@ -44,8 +50,6 @@ export type BotConfig = {
44
50
  maxPendingTxs: number;
45
51
  /** Whether to flush after sending each 'setup' transaction */
46
52
  flushSetupTransactions: boolean;
47
- /** Whether to skip public simulation of txs before sending them. */
48
- skipPublicSimulation: boolean;
49
53
  /** L2 gas limit for the tx (empty to have the bot trigger an estimate gas). */
50
54
  l2GasLimit: number | undefined;
51
55
  /** DA gas limit for the tx (empty to have the bot trigger an estimate gas). */
@@ -56,131 +60,167 @@ export type BotConfig = {
56
60
  maxConsecutiveErrors: number;
57
61
  /** Stops the bot if service becomes unhealthy */
58
62
  stopWhenUnhealthy: boolean;
59
- };
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;
69
+ } & Pick<DataStoreConfig, 'dataDirectory' | 'dataStoreMapSizeKb'>;
60
70
  export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
61
71
  nodeUrl: z.ZodOptional<z.ZodString>;
62
- pxeUrl: z.ZodOptional<z.ZodString>;
72
+ nodeAdminUrl: z.ZodOptional<z.ZodString>;
63
73
  l1RpcUrls: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
64
- l1Mnemonic: z.ZodOptional<z.ZodString>;
65
- l1PrivateKey: z.ZodOptional<z.ZodString>;
66
- senderPrivateKey: z.ZodOptional<ZodFor<Fr>>;
67
- recipientEncryptionSecret: ZodFor<Fr>;
68
- tokenSalt: ZodFor<Fr>;
74
+ l1Mnemonic: z.ZodOptional<z.ZodType<SecretValue<string>, any, any>>;
75
+ l1PrivateKey: z.ZodOptional<z.ZodType<SecretValue<string>, any, any>>;
76
+ l1ToL2MessageTimeoutSeconds: z.ZodNumber;
77
+ senderPrivateKey: z.ZodOptional<z.ZodType<SecretValue<Fr>, any, any>>;
78
+ senderSalt: z.ZodOptional<import("@aztec/stdlib/schemas").ZodFor<Fr>>;
79
+ tokenSalt: import("@aztec/stdlib/schemas").ZodFor<Fr>;
69
80
  txIntervalSeconds: z.ZodNumber;
70
81
  privateTransfersPerTx: z.ZodNumber;
71
82
  publicTransfersPerTx: z.ZodNumber;
72
83
  feePaymentMethod: z.ZodLiteral<"fee_juice">;
84
+ minFeePadding: z.ZodNumber;
73
85
  noStart: z.ZodBoolean;
74
86
  txMinedWaitSeconds: z.ZodNumber;
75
- followChain: z.ZodEnum<["NONE", "PENDING", "PROVEN"]>;
87
+ followChain: z.ZodEnum<["NONE", "PROPOSED", "CHECKPOINTED", "PROVEN"]>;
76
88
  maxPendingTxs: z.ZodNumber;
77
89
  flushSetupTransactions: z.ZodBoolean;
78
- skipPublicSimulation: z.ZodBoolean;
79
90
  l2GasLimit: z.ZodOptional<z.ZodNumber>;
80
91
  daGasLimit: z.ZodOptional<z.ZodNumber>;
81
92
  contract: z.ZodNativeEnum<typeof SupportedTokenContracts>;
82
93
  maxConsecutiveErrors: z.ZodNumber;
83
94
  stopWhenUnhealthy: z.ZodBoolean;
95
+ botMode: z.ZodDefault<z.ZodEnum<["transfer", "amm", "crosschain"]>>;
96
+ l2ToL1MessagesPerTx: z.ZodDefault<z.ZodNumber>;
97
+ l1ToL2SeedCount: z.ZodDefault<z.ZodNumber>;
98
+ dataDirectory: z.ZodOptional<z.ZodString>;
99
+ dataStoreMapSizeKb: z.ZodOptional<z.ZodNumber>;
84
100
  }, "strip", z.ZodTypeAny, {
85
- recipientEncryptionSecret: Fr;
101
+ nodeUrl?: string | undefined;
102
+ nodeAdminUrl?: string | undefined;
103
+ l1RpcUrls?: string[] | undefined;
104
+ l1Mnemonic?: SecretValue<string> | undefined;
105
+ l1PrivateKey?: SecretValue<string> | undefined;
106
+ l1ToL2MessageTimeoutSeconds: number;
107
+ senderPrivateKey?: SecretValue<Fr> | undefined;
108
+ senderSalt?: Fr | undefined;
86
109
  tokenSalt: Fr;
87
110
  txIntervalSeconds: number;
88
111
  privateTransfersPerTx: number;
89
112
  publicTransfersPerTx: number;
90
113
  feePaymentMethod: "fee_juice";
114
+ minFeePadding: number;
91
115
  noStart: boolean;
92
116
  txMinedWaitSeconds: number;
93
- followChain: "NONE" | "PENDING" | "PROVEN";
117
+ followChain: "CHECKPOINTED" | "NONE" | "PROPOSED" | "PROVEN";
94
118
  maxPendingTxs: number;
95
119
  flushSetupTransactions: boolean;
96
- skipPublicSimulation: boolean;
120
+ l2GasLimit?: number | undefined;
121
+ daGasLimit?: number | undefined;
97
122
  contract: SupportedTokenContracts;
98
123
  maxConsecutiveErrors: number;
99
124
  stopWhenUnhealthy: boolean;
125
+ botMode: "amm" | "crosschain" | "transfer";
126
+ l2ToL1MessagesPerTx: number;
127
+ l1ToL2SeedCount: number;
128
+ dataDirectory?: string | undefined;
129
+ dataStoreMapSizeKb?: number | undefined;
130
+ }, {
100
131
  nodeUrl?: string | undefined;
101
- pxeUrl?: string | undefined;
132
+ nodeAdminUrl?: string | undefined;
102
133
  l1RpcUrls?: string[] | undefined;
103
- l1Mnemonic?: string | undefined;
104
- l1PrivateKey?: string | undefined;
105
- senderPrivateKey?: Fr | undefined;
106
- l2GasLimit?: number | undefined;
107
- daGasLimit?: number | undefined;
108
- }, {
134
+ l1Mnemonic?: any;
135
+ l1PrivateKey?: any;
136
+ l1ToL2MessageTimeoutSeconds: number;
137
+ senderPrivateKey?: any;
138
+ senderSalt?: any;
139
+ tokenSalt?: any;
109
140
  txIntervalSeconds: number;
110
141
  privateTransfersPerTx: number;
111
142
  publicTransfersPerTx: number;
112
143
  feePaymentMethod: "fee_juice";
144
+ minFeePadding: number;
113
145
  noStart: boolean;
114
146
  txMinedWaitSeconds: number;
115
- followChain: "NONE" | "PENDING" | "PROVEN";
147
+ followChain: "CHECKPOINTED" | "NONE" | "PROPOSED" | "PROVEN";
116
148
  maxPendingTxs: number;
117
149
  flushSetupTransactions: boolean;
118
- skipPublicSimulation: boolean;
150
+ l2GasLimit?: number | undefined;
151
+ daGasLimit?: number | undefined;
119
152
  contract: SupportedTokenContracts;
120
153
  maxConsecutiveErrors: number;
121
154
  stopWhenUnhealthy: boolean;
122
- nodeUrl?: string | undefined;
123
- pxeUrl?: string | undefined;
124
- l1RpcUrls?: string[] | undefined;
125
- l1Mnemonic?: string | undefined;
126
- l1PrivateKey?: string | undefined;
127
- senderPrivateKey?: any;
128
- recipientEncryptionSecret?: any;
129
- tokenSalt?: any;
130
- l2GasLimit?: number | undefined;
131
- daGasLimit?: number | undefined;
155
+ botMode?: "amm" | "crosschain" | "transfer" | undefined;
156
+ l2ToL1MessagesPerTx?: number | undefined;
157
+ l1ToL2SeedCount?: number | undefined;
158
+ dataDirectory?: string | undefined;
159
+ dataStoreMapSizeKb?: number | undefined;
132
160
  }>, {
133
- recipientEncryptionSecret: Fr;
161
+ l1ToL2MessageTimeoutSeconds: number;
134
162
  tokenSalt: Fr;
135
163
  txIntervalSeconds: number;
136
164
  privateTransfersPerTx: number;
137
165
  publicTransfersPerTx: number;
138
166
  feePaymentMethod: "fee_juice";
167
+ minFeePadding: number;
139
168
  noStart: boolean;
140
169
  txMinedWaitSeconds: number;
141
- followChain: "NONE" | "PENDING" | "PROVEN";
170
+ followChain: "CHECKPOINTED" | "NONE" | "PROPOSED" | "PROVEN";
142
171
  maxPendingTxs: number;
143
172
  flushSetupTransactions: boolean;
144
- skipPublicSimulation: boolean;
145
173
  contract: SupportedTokenContracts;
146
174
  maxConsecutiveErrors: number;
147
175
  stopWhenUnhealthy: boolean;
176
+ botMode: "amm" | "crosschain" | "transfer";
177
+ l2ToL1MessagesPerTx: number;
178
+ l1ToL2SeedCount: number;
179
+ dataDirectory?: string | undefined;
148
180
  nodeUrl: string | undefined;
149
- pxeUrl: string | undefined;
181
+ nodeAdminUrl: string | undefined;
150
182
  l1RpcUrls: string[] | undefined;
151
- l1Mnemonic: string | undefined;
152
- l1PrivateKey: string | undefined;
153
- senderPrivateKey: Fr | undefined;
183
+ senderSalt: Fr | undefined;
154
184
  l2GasLimit: number | undefined;
155
185
  daGasLimit: number | undefined;
186
+ l1Mnemonic: SecretValue<string> | undefined;
187
+ l1PrivateKey: SecretValue<string> | undefined;
188
+ senderPrivateKey: SecretValue<Fr> | undefined;
189
+ dataStoreMapSizeKb: number;
156
190
  }, {
191
+ nodeUrl?: string | undefined;
192
+ nodeAdminUrl?: string | undefined;
193
+ l1RpcUrls?: string[] | undefined;
194
+ l1Mnemonic?: any;
195
+ l1PrivateKey?: any;
196
+ l1ToL2MessageTimeoutSeconds: number;
197
+ senderPrivateKey?: any;
198
+ senderSalt?: any;
199
+ tokenSalt?: any;
157
200
  txIntervalSeconds: number;
158
201
  privateTransfersPerTx: number;
159
202
  publicTransfersPerTx: number;
160
203
  feePaymentMethod: "fee_juice";
204
+ minFeePadding: number;
161
205
  noStart: boolean;
162
206
  txMinedWaitSeconds: number;
163
- followChain: "NONE" | "PENDING" | "PROVEN";
207
+ followChain: "CHECKPOINTED" | "NONE" | "PROPOSED" | "PROVEN";
164
208
  maxPendingTxs: number;
165
209
  flushSetupTransactions: boolean;
166
- skipPublicSimulation: boolean;
210
+ l2GasLimit?: number | undefined;
211
+ daGasLimit?: number | undefined;
167
212
  contract: SupportedTokenContracts;
168
213
  maxConsecutiveErrors: number;
169
214
  stopWhenUnhealthy: boolean;
170
- nodeUrl?: string | undefined;
171
- pxeUrl?: string | undefined;
172
- l1RpcUrls?: string[] | undefined;
173
- l1Mnemonic?: string | undefined;
174
- l1PrivateKey?: string | undefined;
175
- senderPrivateKey?: any;
176
- recipientEncryptionSecret?: any;
177
- tokenSalt?: any;
178
- l2GasLimit?: number | undefined;
179
- daGasLimit?: number | undefined;
215
+ botMode?: "amm" | "crosschain" | "transfer" | undefined;
216
+ l2ToL1MessagesPerTx?: number | undefined;
217
+ l1ToL2SeedCount?: number | undefined;
218
+ dataDirectory?: string | undefined;
219
+ dataStoreMapSizeKb?: number | undefined;
180
220
  }>;
181
221
  export declare const botConfigMappings: ConfigMappingsType<BotConfig>;
182
222
  export declare function getBotConfigFromEnv(): BotConfig;
183
223
  export declare function getBotDefaultConfig(): BotConfig;
184
224
  export declare function getVersions(): Partial<ComponentsVersions>;
185
225
  export {};
186
- //# sourceMappingURL=config.d.ts.map
226
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQUN2QixXQUFXLEVBU1osTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHcEQsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFzQixNQUFNLHdCQUF3QixDQUFDO0FBRWxGLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFbkUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixRQUFBLE1BQU0sY0FBYyx5REFBMEQsQ0FBQztBQUMvRSxLQUFLLGNBQWMsR0FBRyxDQUFDLE9BQU8sY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFdEQsUUFBQSxNQUFNLE9BQU8sNENBQTZDLENBQUM7QUFDM0QsS0FBSyxPQUFPLEdBQUcsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRXhDLG9CQUFZLHVCQUF1QjtJQUNqQyxhQUFhLGtCQUFrQjtJQUMvQixvQkFBb0IseUJBQXlCO0NBQzlDO0FBRUQsTUFBTSxNQUFNLFNBQVMsR0FBRztJQUN0Qiw2REFBNkQ7SUFDN0QsT0FBTyxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDNUIsNEVBQTRFO0lBQzVFLFlBQVksRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQ2pDLGdDQUFnQztJQUNoQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDO0lBQ2hDLGdFQUFnRTtJQUNoRSxVQUFVLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUM1QyxtRUFBbUU7SUFDbkUsWUFBWSxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUM7SUFDOUMsdUVBQXVFO0lBQ3ZFLDJCQUEyQixFQUFFLE1BQU0sQ0FBQztJQUNwQyxrREFBa0Q7SUFDbEQsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUM5Qyw2REFBNkQ7SUFDN0QsVUFBVSxFQUFFLEVBQUUsR0FBRyxTQUFTLENBQUM7SUFDM0IsaURBQWlEO0lBQ2pELFNBQVMsRUFBRSxFQUFFLENBQUM7SUFDZCxzREFBc0Q7SUFDdEQsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO0lBQzFCLDREQUE0RDtJQUM1RCxxQkFBcUIsRUFBRSxNQUFNLENBQUM7SUFDOUIsMkRBQTJEO0lBQzNELG9CQUFvQixFQUFFLE1BQU0sQ0FBQztJQUM3QixrQ0FBa0M7SUFDbEMsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDO0lBQzlCLHVFQUF1RTtJQUN2RSxhQUFhLEVBQUUsTUFBTSxDQUFDO0lBQ3RCLDBFQUEwRTtJQUMxRSxPQUFPLEVBQUUsT0FBTyxDQUFDO0lBQ2pCLHVFQUF1RTtJQUN2RSxrQkFBa0IsRUFBRSxNQUFNLENBQUM7SUFDM0IsNEVBQTRFO0lBQzVFLFdBQVcsRUFBRSxjQUFjLENBQUM7SUFDNUIsZ0ZBQWdGO0lBQ2hGLGFBQWEsRUFBRSxNQUFNLENBQUM7SUFDdEIsOERBQThEO0lBQzlELHNCQUFzQixFQUFFLE9BQU8sQ0FBQztJQUNoQywrRUFBK0U7SUFDL0UsVUFBVSxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDL0IsK0VBQStFO0lBQy9FLFVBQVUsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQy9CLDRCQUE0QjtJQUM1QixRQUFRLEVBQUUsdUJBQXVCLENBQUM7SUFDbEMseUVBQXlFO0lBQ3pFLG9CQUFvQixFQUFFLE1BQU0sQ0FBQztJQUM3QixpREFBaUQ7SUFDakQsaUJBQWlCLEVBQUUsT0FBTyxDQUFDO0lBQzNCLDhDQUE4QztJQUM5QyxPQUFPLEVBQUUsT0FBTyxDQUFDO0lBQ2pCLDJEQUF5RDtJQUN6RCxtQkFBbUIsRUFBRSxNQUFNLENBQUM7SUFDNUIsZ0VBQThEO0lBQzlELGVBQWUsRUFBRSxNQUFNLENBQUM7Q0FDekIsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLGVBQWUsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDO0FBRWxFLGVBQU8sTUFBTSxlQUFlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE4QzNCLENBQUM7QUFFRixlQUFPLE1BQU0saUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsU0FBUyxDQW1LM0QsQ0FBQztBQUVGLHdCQUFnQixtQkFBbUIsSUFBSSxTQUFTLENBRS9DO0FBRUQsd0JBQWdCLG1CQUFtQixJQUFJLFNBQVMsQ0FFL0M7QUFFRCx3QkFBZ0IsV0FBVyxJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUt6RCJ9
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAMxB,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,wBAAwB,6BAA6B;CACtD;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,8EAA8E;IAC9E,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,gCAAgC;IAChC,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAChC,gEAAgE;IAChE,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,mEAAmE;IACnE,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,kDAAkD;IAClD,gBAAgB,EAAE,EAAE,GAAG,SAAS,CAAC;IACjC,iDAAiD;IACjD,yBAAyB,EAAE,EAAE,CAAC;IAC9B,8CAA8C;IAC9C,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,oEAAoE;IACpE,oBAAoB,EAAE,OAAO,CAAC;IAC9B,+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;CAC5B,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoCK,CAAC;AAElC,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,CAAC,SAAS,CAmI3D,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
@@ -1,62 +1,77 @@
1
- import { booleanConfigHelper, getConfigFromMappings, getDefaultConfig, numberConfigHelper, optionalNumberConfigHelper } from '@aztec/foundation/config';
2
- import { Fr } from '@aztec/foundation/fields';
1
+ import { booleanConfigHelper, getConfigFromMappings, getDefaultConfig, numberConfigHelper, optionalNumberConfigHelper, pickConfigMappings, secretFrConfigHelper, secretStringConfigHelper } from '@aztec/foundation/config';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
4
- import { protocolContractTreeRoot } from '@aztec/protocol-contracts';
5
- import { schemas } from '@aztec/stdlib/schemas';
4
+ import { protocolContractsHash } from '@aztec/protocol-contracts';
5
+ import { dataConfigMappings } from '@aztec/stdlib/kv-store';
6
+ import { schemas, zodFor } from '@aztec/stdlib/schemas';
6
7
  import { z } from 'zod';
7
8
  const BotFollowChain = [
8
9
  'NONE',
9
- 'PENDING',
10
+ 'PROPOSED',
11
+ 'CHECKPOINTED',
10
12
  'PROVEN'
11
13
  ];
14
+ const BotMode = [
15
+ 'transfer',
16
+ 'amm',
17
+ 'crosschain'
18
+ ];
12
19
  export var SupportedTokenContracts = /*#__PURE__*/ function(SupportedTokenContracts) {
13
20
  SupportedTokenContracts["TokenContract"] = "TokenContract";
14
- SupportedTokenContracts["EasyPrivateTokenContract"] = "EasyPrivateTokenContract";
21
+ SupportedTokenContracts["PrivateTokenContract"] = "PrivateTokenContract";
15
22
  return SupportedTokenContracts;
16
23
  }({});
17
- export const BotConfigSchema = z.object({
24
+ export const BotConfigSchema = zodFor()(z.object({
18
25
  nodeUrl: z.string().optional(),
19
- pxeUrl: z.string().optional(),
26
+ nodeAdminUrl: z.string().optional(),
20
27
  l1RpcUrls: z.array(z.string()).optional(),
21
- l1Mnemonic: z.string().optional(),
22
- l1PrivateKey: z.string().optional(),
23
- senderPrivateKey: schemas.Fr.optional(),
24
- recipientEncryptionSecret: schemas.Fr,
28
+ l1Mnemonic: schemas.SecretValue(z.string()).optional(),
29
+ l1PrivateKey: schemas.SecretValue(z.string()).optional(),
30
+ l1ToL2MessageTimeoutSeconds: z.number(),
31
+ senderPrivateKey: schemas.SecretValue(schemas.Fr).optional(),
32
+ senderSalt: schemas.Fr.optional(),
25
33
  tokenSalt: schemas.Fr,
26
34
  txIntervalSeconds: z.number(),
27
35
  privateTransfersPerTx: z.number().int().nonnegative(),
28
36
  publicTransfersPerTx: z.number().int().nonnegative(),
29
37
  feePaymentMethod: z.literal('fee_juice'),
38
+ minFeePadding: z.number().int().nonnegative(),
30
39
  noStart: z.boolean(),
31
40
  txMinedWaitSeconds: z.number(),
32
41
  followChain: z.enum(BotFollowChain),
33
42
  maxPendingTxs: z.number().int().nonnegative(),
34
43
  flushSetupTransactions: z.boolean(),
35
- skipPublicSimulation: z.boolean(),
36
44
  l2GasLimit: z.number().int().nonnegative().optional(),
37
45
  daGasLimit: z.number().int().nonnegative().optional(),
38
46
  contract: z.nativeEnum(SupportedTokenContracts),
39
47
  maxConsecutiveErrors: z.number().int().nonnegative(),
40
- stopWhenUnhealthy: z.boolean()
48
+ stopWhenUnhealthy: z.boolean(),
49
+ botMode: z.enum(BotMode).default('transfer'),
50
+ l2ToL1MessagesPerTx: z.number().int().nonnegative().default(1),
51
+ l1ToL2SeedCount: z.number().int().nonnegative().default(1),
52
+ dataDirectory: z.string().optional(),
53
+ dataStoreMapSizeKb: z.number().optional()
41
54
  }).transform((config)=>({
42
55
  nodeUrl: undefined,
43
- pxeUrl: undefined,
56
+ nodeAdminUrl: undefined,
44
57
  l1RpcUrls: undefined,
58
+ senderSalt: undefined,
59
+ l2GasLimit: undefined,
60
+ daGasLimit: undefined,
45
61
  l1Mnemonic: undefined,
46
62
  l1PrivateKey: undefined,
47
63
  senderPrivateKey: undefined,
48
- l2GasLimit: undefined,
49
- daGasLimit: undefined,
64
+ dataStoreMapSizeKb: 1_024 * 1_024,
50
65
  ...config
51
- }));
66
+ })));
52
67
  export const botConfigMappings = {
53
68
  nodeUrl: {
54
69
  env: 'AZTEC_NODE_URL',
55
70
  description: 'The URL to the Aztec node to check for tx pool status.'
56
71
  },
57
- pxeUrl: {
58
- env: 'BOT_PXE_URL',
59
- description: 'URL to the PXE for sending txs, or undefined if an in-proc PXE is used.'
72
+ nodeAdminUrl: {
73
+ env: 'AZTEC_NODE_ADMIN_URL',
74
+ description: 'The URL to the Aztec node admin API to force-flush txs if configured.'
60
75
  },
61
76
  l1RpcUrls: {
62
77
  env: 'ETHEREUM_HOSTS',
@@ -65,26 +80,32 @@ export const botConfigMappings = {
65
80
  },
66
81
  l1Mnemonic: {
67
82
  env: 'BOT_L1_MNEMONIC',
68
- description: 'The mnemonic for the account to bridge fee juice from L1.'
83
+ description: 'The mnemonic for the account to bridge fee juice from L1.',
84
+ ...secretStringConfigHelper()
69
85
  },
70
86
  l1PrivateKey: {
71
87
  env: 'BOT_L1_PRIVATE_KEY',
72
- description: 'The private key for the account to bridge fee juice from L1.'
88
+ description: 'The private key for the account to bridge fee juice from L1.',
89
+ ...secretStringConfigHelper()
90
+ },
91
+ l1ToL2MessageTimeoutSeconds: {
92
+ env: 'BOT_L1_TO_L2_TIMEOUT_SECONDS',
93
+ description: 'How long to wait for L1 to L2 messages to become available on L2',
94
+ ...numberConfigHelper(3600)
73
95
  },
74
96
  senderPrivateKey: {
75
97
  env: 'BOT_PRIVATE_KEY',
76
98
  description: 'Signing private key for the sender account.',
77
- parseEnv: (val)=>val ? Fr.fromHexString(val) : undefined
99
+ ...secretFrConfigHelper()
78
100
  },
79
- recipientEncryptionSecret: {
80
- env: 'BOT_RECIPIENT_ENCRYPTION_SECRET',
81
- description: 'Encryption secret for a recipient account.',
82
- parseEnv: (val)=>Fr.fromHexString(val),
83
- defaultValue: Fr.fromHexString('0xcafecafe')
101
+ senderSalt: {
102
+ env: 'BOT_ACCOUNT_SALT',
103
+ description: 'The salt to use to deploy the sender account.',
104
+ parseEnv: (val)=>val ? Fr.fromHexString(val) : undefined
84
105
  },
85
106
  tokenSalt: {
86
107
  env: 'BOT_TOKEN_SALT',
87
- description: 'Salt for the token contract deployment.',
108
+ description: 'The salt to use to deploy the token contract.',
88
109
  parseEnv: (val)=>Fr.fromHexString(val),
89
110
  defaultValue: Fr.fromHexString('1')
90
111
  },
@@ -109,6 +130,11 @@ export const botConfigMappings = {
109
130
  parseEnv: (val)=>val || undefined,
110
131
  defaultValue: 'fee_juice'
111
132
  },
133
+ minFeePadding: {
134
+ env: 'BOT_MIN_FEE_PADDING',
135
+ description: 'How much is the bot willing to overpay vs. the current base fee',
136
+ ...numberConfigHelper(3)
137
+ },
112
138
  noStart: {
113
139
  env: 'BOT_NO_START',
114
140
  description: 'True to not automatically setup or start the bot on initialization.',
@@ -124,10 +150,14 @@ export const botConfigMappings = {
124
150
  description: 'Which chain the bot follows',
125
151
  defaultValue: 'NONE',
126
152
  parseEnv (val) {
127
- if (!BotFollowChain.includes(val.toUpperCase())) {
153
+ const upper = val.toUpperCase();
154
+ if (upper === 'PENDING') {
155
+ return 'CHECKPOINTED';
156
+ }
157
+ if (!BotFollowChain.includes(upper)) {
128
158
  throw new Error(`Invalid value for BOT_FOLLOW_CHAIN: ${val}`);
129
159
  }
130
- return val;
160
+ return upper;
131
161
  }
132
162
  },
133
163
  maxPendingTxs: {
@@ -140,11 +170,6 @@ export const botConfigMappings = {
140
170
  description: 'Make a request for the sequencer to build a block after each setup transaction.',
141
171
  ...booleanConfigHelper(false)
142
172
  },
143
- skipPublicSimulation: {
144
- env: 'BOT_SKIP_PUBLIC_SIMULATION',
145
- description: 'Whether to skip public simulation of txs before sending them.',
146
- ...booleanConfigHelper(false)
147
- },
148
173
  l2GasLimit: {
149
174
  env: 'BOT_L2_GAS_LIMIT',
150
175
  description: 'L2 gas limit for the tx (empty to have the bot trigger an estimate gas).',
@@ -175,7 +200,32 @@ export const botConfigMappings = {
175
200
  env: 'BOT_STOP_WHEN_UNHEALTHY',
176
201
  description: 'Stops the bot if service becomes unhealthy',
177
202
  ...booleanConfigHelper(false)
178
- }
203
+ },
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)
224
+ },
225
+ ...pickConfigMappings(dataConfigMappings, [
226
+ 'dataStoreMapSizeKb',
227
+ 'dataDirectory'
228
+ ])
179
229
  };
180
230
  export function getBotConfigFromEnv() {
181
231
  return getConfigFromMappings(botConfigMappings);
@@ -185,7 +235,7 @@ export function getBotDefaultConfig() {
185
235
  }
186
236
  export function getVersions() {
187
237
  return {
188
- l2ProtocolContractsTreeRoot: protocolContractTreeRoot.toString(),
238
+ l2ProtocolContractsHash: protocolContractsHash.toString(),
189
239
  l2CircuitsVkTreeRoot: getVKTreeRoot().toString()
190
240
  };
191
241
  }
@@ -0,0 +1,54 @@
1
+ /**
2
+ * CrossChainBot exercises L2->L1 and L1->L2 messaging.
3
+ *
4
+ * createAndSendTx onTxMined
5
+ * ────────────────────────────────────── ──────────────────────────────
6
+ *
7
+ * 1. SEED (fire-and-forget) 3. VERIFY L2->L1
8
+ * if store has fewer pending messages Query getTxEffect, confirm
9
+ * than seedCount and no seed is the expected L2->L1 messages
10
+ * in-flight: appeared in tx effects.
11
+ * * kick off L1 inbox tx
12
+ * * store msg on completion
13
+ *
14
+ * 2. BUILD & SEND BATCH
15
+ * Always:
16
+ * N x create_l2_to_l1_message
17
+ * (random content, fixed
18
+ * L1 recipient)
19
+ * If a ready L1->L2 msg exists:
20
+ * 1 x consume_message_from_
21
+ * arbitrary_sender_public
22
+ * delete consumed msg from store
23
+ * Send batch tx (no wait)
24
+ *
25
+ */
26
+ import { AztecAddress } from '@aztec/aztec.js/addresses';
27
+ import { TxHash, TxReceipt } from '@aztec/aztec.js/tx';
28
+ import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
29
+ import { EthAddress } from '@aztec/foundation/eth-address';
30
+ import type { TestContract } from '@aztec/noir-test-contracts.js/Test';
31
+ import type { AztecNode, AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
32
+ import type { EmbeddedWallet } from '@aztec/wallets/embedded';
33
+ import { BaseBot } from './base_bot.js';
34
+ import type { BotConfig } from './config.js';
35
+ import type { BotStore } from './store/index.js';
36
+ /** Bot that exercises both L2→L1 and L1→L2 cross-chain messaging. */
37
+ export declare class CrossChainBot extends BaseBot {
38
+ private readonly contract;
39
+ private readonly l1Client;
40
+ private readonly l1Recipient;
41
+ private readonly inboxAddress;
42
+ private readonly rollupVersion;
43
+ private readonly store;
44
+ private l2ToL1Sent;
45
+ private l1ToL2Consumed;
46
+ private pendingSeedPromise;
47
+ protected constructor(node: AztecNode, wallet: EmbeddedWallet, defaultAccountAddress: AztecAddress, contract: TestContract, l1Client: ExtendedViemWalletClient, l1Recipient: EthAddress, inboxAddress: EthAddress, rollupVersion: bigint, store: BotStore, config: BotConfig);
48
+ static create(config: BotConfig, wallet: EmbeddedWallet, aztecNode: AztecNode, aztecNodeAdmin: AztecNodeAdmin | undefined, store: BotStore): Promise<CrossChainBot>;
49
+ protected createAndSendTx(logCtx: object): Promise<TxHash>;
50
+ protected onTxMined(receipt: TxReceipt, logCtx: object): Promise<void>;
51
+ private getReadyL1ToL2Message;
52
+ private seedNewL1ToL2Message;
53
+ }
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3NfY2hhaW5fYm90LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY3Jvc3NfY2hhaW5fYm90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7QUFDSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakYsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHN0MsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUF3QixNQUFNLGtCQUFrQixDQUFDO0FBS3ZFLHlFQUFxRTtBQUNyRSxxQkFBYSxhQUFjLFNBQVEsT0FBTztJQVN0QyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVE7SUFDekIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRO0lBQ3pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVztJQUM1QixPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVk7SUFDN0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhO0lBQzlCLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSztJQWJ4QixPQUFPLENBQUMsVUFBVSxDQUFLO0lBQ3ZCLE9BQU8sQ0FBQyxjQUFjLENBQUs7SUFDM0IsT0FBTyxDQUFDLGtCQUFrQixDQUE0QjtJQUV0RCxTQUFTLGFBQ1AsSUFBSSxFQUFFLFNBQVMsRUFDZixNQUFNLEVBQUUsY0FBYyxFQUN0QixxQkFBcUIsRUFBRSxZQUFZLEVBQ2xCLFFBQVEsRUFBRSxZQUFZLEVBQ3RCLFFBQVEsRUFBRSx3QkFBd0IsRUFDbEMsV0FBVyxFQUFFLFVBQVUsRUFDdkIsWUFBWSxFQUFFLFVBQVUsRUFDeEIsYUFBYSxFQUFFLE1BQU0sRUFDckIsS0FBSyxFQUFFLFFBQVEsRUFDaEMsTUFBTSxFQUFFLFNBQVMsRUFHbEI7SUFFRCxPQUFhLE1BQU0sQ0FDakIsTUFBTSxFQUFFLFNBQVMsRUFDakIsTUFBTSxFQUFFLGNBQWMsRUFDdEIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsY0FBYyxFQUFFLGNBQWMsR0FBRyxTQUFTLEVBQzFDLEtBQUssRUFBRSxRQUFRLEdBQ2QsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQXFCeEI7SUFFRCxVQUFnQixlQUFlLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBaUQvRDtJQUVELFVBQXlCLFNBQVMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQXVCcEY7WUFHYSxxQkFBcUI7WUFvQnJCLG9CQUFvQjtDQVVuQyJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross_chain_bot.d.ts","sourceRoot":"","sources":["../src/cross_chain_bot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,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;AAG7C,OAAO,KAAK,EAAE,QAAQ,EAAwB,MAAM,kBAAkB,CAAC;AAKvE,yEAAqE;AACrE,qBAAa,aAAc,SAAQ,OAAO;IAStC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAbxB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,kBAAkB,CAA4B;IAEtD,SAAS,aACP,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,cAAc,EACtB,qBAAqB,EAAE,YAAY,EAClB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,wBAAwB,EAClC,WAAW,EAAE,UAAU,EACvB,YAAY,EAAE,UAAU,EACxB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,QAAQ,EAChC,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,aAAa,CAAC,CAqBxB;IAED,UAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiD/D;IAED,UAAyB,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBpF;YAGa,qBAAqB;YAoBrB,oBAAoB;CAUnC"}