@aztec/bot 0.0.1-fake-ceab37513c → 0.0.6-commit.a2d1860fe9

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 (54) hide show
  1. package/dest/amm_bot.d.ts +9 -10
  2. package/dest/amm_bot.d.ts.map +1 -1
  3. package/dest/amm_bot.js +27 -20
  4. package/dest/base_bot.d.ts +12 -9
  5. package/dest/base_bot.d.ts.map +1 -1
  6. package/dest/base_bot.js +28 -29
  7. package/dest/bot.d.ts +9 -10
  8. package/dest/bot.d.ts.map +1 -1
  9. package/dest/bot.js +12 -10
  10. package/dest/config.d.ts +82 -63
  11. package/dest/config.d.ts.map +1 -1
  12. package/dest/config.js +61 -31
  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 +140 -0
  16. package/dest/factory.d.ts +27 -34
  17. package/dest/factory.d.ts.map +1 -1
  18. package/dest/factory.js +271 -151
  19. package/dest/index.d.ts +3 -1
  20. package/dest/index.d.ts.map +1 -1
  21. package/dest/index.js +2 -0
  22. package/dest/interface.d.ts +2 -2
  23. package/dest/interface.d.ts.map +1 -1
  24. package/dest/interface.js +1 -1
  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 -1
  29. package/dest/runner.d.ts +12 -13
  30. package/dest/runner.d.ts.map +1 -1
  31. package/dest/runner.js +445 -61
  32. package/dest/store/bot_store.d.ts +69 -0
  33. package/dest/store/bot_store.d.ts.map +1 -0
  34. package/dest/store/bot_store.js +138 -0
  35. package/dest/store/index.d.ts +2 -0
  36. package/dest/store/index.d.ts.map +1 -0
  37. package/dest/store/index.js +1 -0
  38. package/dest/utils.d.ts +4 -4
  39. package/dest/utils.d.ts.map +1 -1
  40. package/dest/utils.js +5 -5
  41. package/package.json +19 -13
  42. package/src/amm_bot.ts +40 -32
  43. package/src/base_bot.ts +27 -39
  44. package/src/bot.ts +25 -13
  45. package/src/config.ts +101 -72
  46. package/src/cross_chain_bot.ts +209 -0
  47. package/src/factory.ts +313 -177
  48. package/src/index.ts +2 -0
  49. package/src/interface.ts +1 -1
  50. package/src/l1_to_l2_seeding.ts +79 -0
  51. package/src/runner.ts +33 -24
  52. package/src/store/bot_store.ts +196 -0
  53. package/src/store/index.ts +1 -0
  54. package/src/utils.ts +10 -5
package/dest/config.d.ts CHANGED
@@ -1,10 +1,12 @@
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
- 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
12
  PrivateTokenContract = "PrivateTokenContract"
@@ -14,8 +16,6 @@ export type BotConfig = {
14
16
  nodeUrl: string | undefined;
15
17
  /** The URL to the Aztec node admin API to force-flush txs if configured. */
16
18
  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
19
  /** Url of the ethereum host. */
20
20
  l1RpcUrls: string[] | undefined;
21
21
  /** The mnemonic for the account to bridge fee juice from L1. */
@@ -28,8 +28,6 @@ export type BotConfig = {
28
28
  senderPrivateKey: SecretValue<Fr> | undefined;
29
29
  /** Optional salt to use to instantiate the sender account */
30
30
  senderSalt: Fr | undefined;
31
- /** Encryption secret for a recipient account. */
32
- recipientEncryptionSecret: SecretValue<Fr>;
33
31
  /** Salt for the token contract instantiation. */
34
32
  tokenSalt: Fr;
35
33
  /** Every how many seconds should a new tx be sent. */
@@ -40,6 +38,8 @@ export type BotConfig = {
40
38
  publicTransfersPerTx: number;
41
39
  /** How to handle fee payments. */
42
40
  feePaymentMethod: 'fee_juice';
41
+ /** 'How much is the bot willing to overpay vs. the current min fee' */
42
+ minFeePadding: number;
43
43
  /** True to not automatically setup or start the bot on initialization. */
44
44
  noStart: boolean;
45
45
  /** How long to wait for a tx to be mined before reporting an error. */
@@ -60,28 +60,31 @@ export type BotConfig = {
60
60
  maxConsecutiveErrors: number;
61
61
  /** Stops the bot if service becomes unhealthy */
62
62
  stopWhenUnhealthy: boolean;
63
- /** Deploy an AMM contract and do swaps instead of transfers */
64
- ammTxs: boolean;
65
- };
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'>;
66
70
  export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
67
71
  nodeUrl: z.ZodOptional<z.ZodString>;
68
72
  nodeAdminUrl: z.ZodOptional<z.ZodString>;
69
- pxeUrl: z.ZodOptional<z.ZodString>;
70
73
  l1RpcUrls: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
71
74
  l1Mnemonic: z.ZodOptional<z.ZodType<SecretValue<string>, any, any>>;
72
75
  l1PrivateKey: z.ZodOptional<z.ZodType<SecretValue<string>, any, any>>;
73
76
  l1ToL2MessageTimeoutSeconds: z.ZodNumber;
74
77
  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>;
78
+ senderSalt: z.ZodOptional<import("@aztec/stdlib/schemas").ZodFor<Fr>>;
79
+ tokenSalt: import("@aztec/stdlib/schemas").ZodFor<Fr>;
78
80
  txIntervalSeconds: z.ZodNumber;
79
81
  privateTransfersPerTx: z.ZodNumber;
80
82
  publicTransfersPerTx: z.ZodNumber;
81
83
  feePaymentMethod: z.ZodLiteral<"fee_juice">;
84
+ minFeePadding: z.ZodNumber;
82
85
  noStart: z.ZodBoolean;
83
86
  txMinedWaitSeconds: z.ZodNumber;
84
- followChain: z.ZodEnum<["NONE", "PENDING", "PROVEN"]>;
87
+ followChain: z.ZodEnum<["NONE", "PROPOSED", "CHECKPOINTED", "PROVEN"]>;
85
88
  maxPendingTxs: z.ZodNumber;
86
89
  flushSetupTransactions: z.ZodBoolean;
87
90
  l2GasLimit: z.ZodOptional<z.ZodNumber>;
@@ -89,119 +92,135 @@ export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
89
92
  contract: z.ZodNativeEnum<typeof SupportedTokenContracts>;
90
93
  maxConsecutiveErrors: z.ZodNumber;
91
94
  stopWhenUnhealthy: z.ZodBoolean;
92
- ammTxs: z.ZodDefault<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>;
93
100
  }, "strip", z.ZodTypeAny, {
94
- l1ToL2MessageTimeoutSeconds: number;
95
- recipientEncryptionSecret: SecretValue<Fr>;
96
- tokenSalt: Fr;
97
- txIntervalSeconds: number;
98
- privateTransfersPerTx: number;
99
- publicTransfersPerTx: number;
100
- feePaymentMethod: "fee_juice";
101
- noStart: boolean;
102
- txMinedWaitSeconds: number;
103
- followChain: "NONE" | "PENDING" | "PROVEN";
104
- maxPendingTxs: number;
105
- flushSetupTransactions: boolean;
106
- contract: SupportedTokenContracts;
107
- maxConsecutiveErrors: number;
108
- stopWhenUnhealthy: boolean;
109
- ammTxs: boolean;
110
101
  nodeUrl?: string | undefined;
111
102
  nodeAdminUrl?: string | undefined;
112
- pxeUrl?: string | undefined;
113
103
  l1RpcUrls?: string[] | undefined;
114
104
  l1Mnemonic?: SecretValue<string> | undefined;
115
105
  l1PrivateKey?: SecretValue<string> | undefined;
106
+ l1ToL2MessageTimeoutSeconds: number;
116
107
  senderPrivateKey?: SecretValue<Fr> | undefined;
117
108
  senderSalt?: Fr | undefined;
118
- l2GasLimit?: number | undefined;
119
- daGasLimit?: number | undefined;
120
- }, {
121
- l1ToL2MessageTimeoutSeconds: number;
109
+ tokenSalt: Fr;
122
110
  txIntervalSeconds: number;
123
111
  privateTransfersPerTx: number;
124
112
  publicTransfersPerTx: number;
125
113
  feePaymentMethod: "fee_juice";
114
+ minFeePadding: number;
126
115
  noStart: boolean;
127
116
  txMinedWaitSeconds: number;
128
- followChain: "NONE" | "PENDING" | "PROVEN";
117
+ followChain: "CHECKPOINTED" | "NONE" | "PROPOSED" | "PROVEN";
129
118
  maxPendingTxs: number;
130
119
  flushSetupTransactions: boolean;
120
+ l2GasLimit?: number | undefined;
121
+ daGasLimit?: number | undefined;
131
122
  contract: SupportedTokenContracts;
132
123
  maxConsecutiveErrors: number;
133
124
  stopWhenUnhealthy: boolean;
125
+ botMode: "amm" | "crosschain" | "transfer";
126
+ l2ToL1MessagesPerTx: number;
127
+ l1ToL2SeedCount: number;
128
+ dataDirectory?: string | undefined;
129
+ dataStoreMapSizeKb?: number | undefined;
130
+ }, {
134
131
  nodeUrl?: string | undefined;
135
132
  nodeAdminUrl?: string | undefined;
136
- pxeUrl?: string | undefined;
137
133
  l1RpcUrls?: string[] | undefined;
138
134
  l1Mnemonic?: any;
139
135
  l1PrivateKey?: any;
136
+ l1ToL2MessageTimeoutSeconds: number;
140
137
  senderPrivateKey?: any;
141
138
  senderSalt?: any;
142
- recipientEncryptionSecret?: any;
143
139
  tokenSalt?: any;
140
+ txIntervalSeconds: number;
141
+ privateTransfersPerTx: number;
142
+ publicTransfersPerTx: number;
143
+ feePaymentMethod: "fee_juice";
144
+ minFeePadding: number;
145
+ noStart: boolean;
146
+ txMinedWaitSeconds: number;
147
+ followChain: "CHECKPOINTED" | "NONE" | "PROPOSED" | "PROVEN";
148
+ maxPendingTxs: number;
149
+ flushSetupTransactions: boolean;
144
150
  l2GasLimit?: number | undefined;
145
151
  daGasLimit?: number | undefined;
146
- ammTxs?: boolean | undefined;
152
+ contract: SupportedTokenContracts;
153
+ maxConsecutiveErrors: number;
154
+ stopWhenUnhealthy: boolean;
155
+ botMode?: "amm" | "crosschain" | "transfer" | undefined;
156
+ l2ToL1MessagesPerTx?: number | undefined;
157
+ l1ToL2SeedCount?: number | undefined;
158
+ dataDirectory?: string | undefined;
159
+ dataStoreMapSizeKb?: number | undefined;
147
160
  }>, {
148
161
  l1ToL2MessageTimeoutSeconds: number;
149
- recipientEncryptionSecret: SecretValue<Fr>;
150
162
  tokenSalt: Fr;
151
163
  txIntervalSeconds: number;
152
164
  privateTransfersPerTx: number;
153
165
  publicTransfersPerTx: number;
154
166
  feePaymentMethod: "fee_juice";
167
+ minFeePadding: number;
155
168
  noStart: boolean;
156
169
  txMinedWaitSeconds: number;
157
- followChain: "NONE" | "PENDING" | "PROVEN";
170
+ followChain: "CHECKPOINTED" | "NONE" | "PROPOSED" | "PROVEN";
158
171
  maxPendingTxs: number;
159
172
  flushSetupTransactions: boolean;
160
173
  contract: SupportedTokenContracts;
161
174
  maxConsecutiveErrors: number;
162
175
  stopWhenUnhealthy: boolean;
163
- ammTxs: boolean;
176
+ botMode: "amm" | "crosschain" | "transfer";
177
+ l2ToL1MessagesPerTx: number;
178
+ l1ToL2SeedCount: number;
164
179
  nodeUrl: string | undefined;
165
180
  nodeAdminUrl: string | undefined;
166
- pxeUrl: string | undefined;
167
181
  l1RpcUrls: string[] | undefined;
168
- l1Mnemonic: SecretValue<string> | undefined;
169
- l1PrivateKey: SecretValue<string> | undefined;
170
- senderPrivateKey: SecretValue<Fr> | undefined;
171
182
  senderSalt: Fr | undefined;
172
183
  l2GasLimit: number | undefined;
173
184
  daGasLimit: number | undefined;
185
+ l1Mnemonic: SecretValue<string> | undefined;
186
+ l1PrivateKey: SecretValue<string> | undefined;
187
+ senderPrivateKey: SecretValue<Fr> | undefined;
188
+ dataDirectory: string | undefined;
189
+ dataStoreMapSizeKb: number;
174
190
  }, {
191
+ nodeUrl?: string | undefined;
192
+ nodeAdminUrl?: string | undefined;
193
+ l1RpcUrls?: string[] | undefined;
194
+ l1Mnemonic?: any;
195
+ l1PrivateKey?: any;
175
196
  l1ToL2MessageTimeoutSeconds: number;
197
+ senderPrivateKey?: any;
198
+ senderSalt?: any;
199
+ tokenSalt?: any;
176
200
  txIntervalSeconds: number;
177
201
  privateTransfersPerTx: number;
178
202
  publicTransfersPerTx: number;
179
203
  feePaymentMethod: "fee_juice";
204
+ minFeePadding: number;
180
205
  noStart: boolean;
181
206
  txMinedWaitSeconds: number;
182
- followChain: "NONE" | "PENDING" | "PROVEN";
207
+ followChain: "CHECKPOINTED" | "NONE" | "PROPOSED" | "PROVEN";
183
208
  maxPendingTxs: number;
184
209
  flushSetupTransactions: boolean;
210
+ l2GasLimit?: number | undefined;
211
+ daGasLimit?: number | undefined;
185
212
  contract: SupportedTokenContracts;
186
213
  maxConsecutiveErrors: number;
187
214
  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
- ammTxs?: boolean | undefined;
215
+ botMode?: "amm" | "crosschain" | "transfer" | undefined;
216
+ l2ToL1MessagesPerTx?: number | undefined;
217
+ l1ToL2SeedCount?: number | undefined;
218
+ dataDirectory?: string | undefined;
219
+ dataStoreMapSizeKb?: number | undefined;
201
220
  }>;
202
221
  export declare const botConfigMappings: ConfigMappingsType<BotConfig>;
203
222
  export declare function getBotConfigFromEnv(): BotConfig;
204
223
  export declare function getBotDefaultConfig(): BotConfig;
205
224
  export declare function getVersions(): Partial<ComponentsVersions>;
206
225
  export {};
207
- //# sourceMappingURL=config.d.ts.map
226
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQUN2QixXQUFXLEVBU1osTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFzQixNQUFNLHdCQUF3QixDQUFDO0FBSWxGLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFbkUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixRQUFBLE1BQU0sY0FBYyx5REFBMEQsQ0FBQztBQUMvRSxLQUFLLGNBQWMsR0FBRyxDQUFDLE9BQU8sY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFdEQsUUFBQSxNQUFNLE9BQU8sNENBQTZDLENBQUM7QUFDM0QsS0FBSyxPQUFPLEdBQUcsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRXhDLG9CQUFZLHVCQUF1QjtJQUNqQyxhQUFhLGtCQUFrQjtJQUMvQixvQkFBb0IseUJBQXlCO0NBQzlDO0FBRUQsTUFBTSxNQUFNLFNBQVMsR0FBRztJQUN0Qiw2REFBNkQ7SUFDN0QsT0FBTyxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDNUIsNEVBQTRFO0lBQzVFLFlBQVksRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQ2pDLGdDQUFnQztJQUNoQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDO0lBQ2hDLGdFQUFnRTtJQUNoRSxVQUFVLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUM1QyxtRUFBbUU7SUFDbkUsWUFBWSxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUM7SUFDOUMsdUVBQXVFO0lBQ3ZFLDJCQUEyQixFQUFFLE1BQU0sQ0FBQztJQUNwQyxrREFBa0Q7SUFDbEQsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUM5Qyw2REFBNkQ7SUFDN0QsVUFBVSxFQUFFLEVBQUUsR0FBRyxTQUFTLENBQUM7SUFDM0IsaURBQWlEO0lBQ2pELFNBQVMsRUFBRSxFQUFFLENBQUM7SUFDZCxzREFBc0Q7SUFDdEQsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO0lBQzFCLDREQUE0RDtJQUM1RCxxQkFBcUIsRUFBRSxNQUFNLENBQUM7SUFDOUIsMkRBQTJEO0lBQzNELG9CQUFvQixFQUFFLE1BQU0sQ0FBQztJQUM3QixrQ0FBa0M7SUFDbEMsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDO0lBQzlCLHVFQUF1RTtJQUN2RSxhQUFhLEVBQUUsTUFBTSxDQUFDO0lBQ3RCLDBFQUEwRTtJQUMxRSxPQUFPLEVBQUUsT0FBTyxDQUFDO0lBQ2pCLHVFQUF1RTtJQUN2RSxrQkFBa0IsRUFBRSxNQUFNLENBQUM7SUFDM0IsNEVBQTRFO0lBQzVFLFdBQVcsRUFBRSxjQUFjLENBQUM7SUFDNUIsZ0ZBQWdGO0lBQ2hGLGFBQWEsRUFBRSxNQUFNLENBQUM7SUFDdEIsOERBQThEO0lBQzlELHNCQUFzQixFQUFFLE9BQU8sQ0FBQztJQUNoQywrRUFBK0U7SUFDL0UsVUFBVSxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDL0IsK0VBQStFO0lBQy9FLFVBQVUsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQy9CLDRCQUE0QjtJQUM1QixRQUFRLEVBQUUsdUJBQXVCLENBQUM7SUFDbEMseUVBQXlFO0lBQ3pFLG9CQUFvQixFQUFFLE1BQU0sQ0FBQztJQUM3QixpREFBaUQ7SUFDakQsaUJBQWlCLEVBQUUsT0FBTyxDQUFDO0lBQzNCLDhDQUE4QztJQUM5QyxPQUFPLEVBQUUsT0FBTyxDQUFDO0lBQ2pCLDJEQUF5RDtJQUN6RCxtQkFBbUIsRUFBRSxNQUFNLENBQUM7SUFDNUIsZ0VBQThEO0lBQzlELGVBQWUsRUFBRSxNQUFNLENBQUM7Q0FDekIsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLGVBQWUsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDO0FBRWxFLGVBQU8sTUFBTSxlQUFlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUErQzNCLENBQUM7QUFFRixlQUFPLE1BQU0saUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsU0FBUyxDQW1LM0QsQ0FBQztBQUVGLHdCQUFnQixtQkFBbUIsSUFBSSxTQUFTLENBRS9DO0FBRUQsd0JBQWdCLG1CQUFtQixJQUFJLFNBQVMsQ0FFL0M7QUFFRCx3QkFBZ0IsV0FBVyxJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUt6RCJ9
@@ -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":"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"}
package/dest/config.js CHANGED
@@ -1,35 +1,41 @@
1
- import { booleanConfigHelper, getConfigFromMappings, getDefaultConfig, numberConfigHelper, optionalNumberConfigHelper, secretFrConfigHelper, secretStringConfigHelper } 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
+ import { dataConfigMappings } from '@aztec/kv-store/config';
3
4
  import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
4
- import { protocolContractTreeRoot } from '@aztec/protocol-contracts';
5
- import { schemas } from '@aztec/stdlib/schemas';
5
+ import { protocolContractsHash } from '@aztec/protocol-contracts';
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
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
26
  nodeAdminUrl: z.string().optional(),
20
- pxeUrl: z.string().optional(),
21
27
  l1RpcUrls: z.array(z.string()).optional(),
22
28
  l1Mnemonic: schemas.SecretValue(z.string()).optional(),
23
29
  l1PrivateKey: schemas.SecretValue(z.string()).optional(),
24
30
  l1ToL2MessageTimeoutSeconds: z.number(),
25
31
  senderPrivateKey: schemas.SecretValue(schemas.Fr).optional(),
26
32
  senderSalt: schemas.Fr.optional(),
27
- recipientEncryptionSecret: schemas.SecretValue(schemas.Fr),
28
33
  tokenSalt: schemas.Fr,
29
34
  txIntervalSeconds: z.number(),
30
35
  privateTransfersPerTx: z.number().int().nonnegative(),
31
36
  publicTransfersPerTx: z.number().int().nonnegative(),
32
37
  feePaymentMethod: z.literal('fee_juice'),
38
+ minFeePadding: z.number().int().nonnegative(),
33
39
  noStart: z.boolean(),
34
40
  txMinedWaitSeconds: z.number(),
35
41
  followChain: z.enum(BotFollowChain),
@@ -40,11 +46,14 @@ export const BotConfigSchema = z.object({
40
46
  contract: z.nativeEnum(SupportedTokenContracts),
41
47
  maxConsecutiveErrors: z.number().int().nonnegative(),
42
48
  stopWhenUnhealthy: z.boolean(),
43
- ammTxs: z.boolean().default(false)
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()
44
54
  }).transform((config)=>({
45
55
  nodeUrl: undefined,
46
56
  nodeAdminUrl: undefined,
47
- pxeUrl: undefined,
48
57
  l1RpcUrls: undefined,
49
58
  senderSalt: undefined,
50
59
  l2GasLimit: undefined,
@@ -52,8 +61,10 @@ export const BotConfigSchema = z.object({
52
61
  l1Mnemonic: undefined,
53
62
  l1PrivateKey: undefined,
54
63
  senderPrivateKey: undefined,
64
+ dataDirectory: undefined,
65
+ dataStoreMapSizeKb: 1_024 * 1_024,
55
66
  ...config
56
- }));
67
+ })));
57
68
  export const botConfigMappings = {
58
69
  nodeUrl: {
59
70
  env: 'AZTEC_NODE_URL',
@@ -63,10 +74,6 @@ export const botConfigMappings = {
63
74
  env: 'AZTEC_NODE_ADMIN_URL',
64
75
  description: 'The URL to the Aztec node admin API to force-flush txs if configured.'
65
76
  },
66
- pxeUrl: {
67
- env: 'BOT_PXE_URL',
68
- description: 'URL to the PXE for sending txs, or undefined if an in-proc PXE is used.'
69
- },
70
77
  l1RpcUrls: {
71
78
  env: 'ETHEREUM_HOSTS',
72
79
  description: 'URL of the ethereum host.',
@@ -94,18 +101,12 @@ export const botConfigMappings = {
94
101
  },
95
102
  senderSalt: {
96
103
  env: 'BOT_ACCOUNT_SALT',
97
- description: 'The salt to use to deploys the sender account.',
104
+ description: 'The salt to use to deploy the sender account.',
98
105
  parseEnv: (val)=>val ? Fr.fromHexString(val) : undefined
99
106
  },
100
- recipientEncryptionSecret: {
101
- env: 'BOT_RECIPIENT_ENCRYPTION_SECRET',
102
- description: 'Encryption secret for a recipient account.',
103
- printDefault: (sv)=>sv?.getValue(),
104
- ...secretFrConfigHelper(Fr.fromHexString('0xcafecafe'))
105
- },
106
107
  tokenSalt: {
107
108
  env: 'BOT_TOKEN_SALT',
108
- description: 'Salt for the token contract deployment.',
109
+ description: 'The salt to use to deploy the token contract.',
109
110
  parseEnv: (val)=>Fr.fromHexString(val),
110
111
  defaultValue: Fr.fromHexString('1')
111
112
  },
@@ -130,6 +131,11 @@ export const botConfigMappings = {
130
131
  parseEnv: (val)=>val || undefined,
131
132
  defaultValue: 'fee_juice'
132
133
  },
134
+ minFeePadding: {
135
+ env: 'BOT_MIN_FEE_PADDING',
136
+ description: 'How much is the bot willing to overpay vs. the current base fee',
137
+ ...numberConfigHelper(3)
138
+ },
133
139
  noStart: {
134
140
  env: 'BOT_NO_START',
135
141
  description: 'True to not automatically setup or start the bot on initialization.',
@@ -145,10 +151,14 @@ export const botConfigMappings = {
145
151
  description: 'Which chain the bot follows',
146
152
  defaultValue: 'NONE',
147
153
  parseEnv (val) {
148
- if (!BotFollowChain.includes(val.toUpperCase())) {
154
+ const upper = val.toUpperCase();
155
+ if (upper === 'PENDING') {
156
+ return 'CHECKPOINTED';
157
+ }
158
+ if (!BotFollowChain.includes(upper)) {
149
159
  throw new Error(`Invalid value for BOT_FOLLOW_CHAIN: ${val}`);
150
160
  }
151
- return val;
161
+ return upper;
152
162
  }
153
163
  },
154
164
  maxPendingTxs: {
@@ -192,11 +202,31 @@ export const botConfigMappings = {
192
202
  description: 'Stops the bot if service becomes unhealthy',
193
203
  ...booleanConfigHelper(false)
194
204
  },
195
- ammTxs: {
196
- env: 'BOT_AMM_TXS',
197
- description: 'Deploy an AMM and send swaps to it',
198
- ...booleanConfigHelper(false)
199
- }
205
+ botMode: {
206
+ env: 'BOT_MODE',
207
+ description: 'Bot mode: transfer, amm, or crosschain',
208
+ defaultValue: 'transfer',
209
+ parseEnv (val) {
210
+ if (!BotMode.includes(val)) {
211
+ throw new Error(`Invalid value for BOT_MODE: ${val}`);
212
+ }
213
+ return val;
214
+ }
215
+ },
216
+ l2ToL1MessagesPerTx: {
217
+ env: 'BOT_L2_TO_L1_MESSAGES_PER_TX',
218
+ description: 'Number of L2→L1 messages per tx (crosschain mode)',
219
+ ...numberConfigHelper(1)
220
+ },
221
+ l1ToL2SeedCount: {
222
+ env: 'BOT_L1_TO_L2_SEED_COUNT',
223
+ description: 'Max L1→L2 messages to keep in-flight (crosschain mode)',
224
+ ...numberConfigHelper(1)
225
+ },
226
+ ...pickConfigMappings(dataConfigMappings, [
227
+ 'dataStoreMapSizeKb',
228
+ 'dataDirectory'
229
+ ])
200
230
  };
201
231
  export function getBotConfigFromEnv() {
202
232
  return getConfigFromMappings(botConfigMappings);
@@ -206,7 +236,7 @@ export function getBotDefaultConfig() {
206
236
  }
207
237
  export function getVersions() {
208
238
  return {
209
- l2ProtocolContractsTreeRoot: protocolContractTreeRoot.toString(),
239
+ l2ProtocolContractsHash: protocolContractsHash.toString(),
210
240
  l2CircuitsVkTreeRoot: getVKTreeRoot().toString()
211
241
  };
212
242
  }
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3NfY2hhaW5fYm90LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY3Jvc3NfY2hhaW5fYm90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7QUFDSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakYsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHN0MsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUF3QixNQUFNLGtCQUFrQixDQUFDO0FBS3ZFLHlFQUFxRTtBQUNyRSxxQkFBYSxhQUFjLFNBQVEsT0FBTztJQVN0QyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVE7SUFDekIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRO0lBQ3pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVztJQUM1QixPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVk7SUFDN0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhO0lBQzlCLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSztJQWJ4QixPQUFPLENBQUMsVUFBVSxDQUFLO0lBQ3ZCLE9BQU8sQ0FBQyxjQUFjLENBQUs7SUFDM0IsT0FBTyxDQUFDLGtCQUFrQixDQUE0QjtJQUV0RCxTQUFTLGFBQ1AsSUFBSSxFQUFFLFNBQVMsRUFDZixNQUFNLEVBQUUsY0FBYyxFQUN0QixxQkFBcUIsRUFBRSxZQUFZLEVBQ2xCLFFBQVEsRUFBRSxZQUFZLEVBQ3RCLFFBQVEsRUFBRSx3QkFBd0IsRUFDbEMsV0FBVyxFQUFFLFVBQVUsRUFDdkIsWUFBWSxFQUFFLFVBQVUsRUFDeEIsYUFBYSxFQUFFLE1BQU0sRUFDckIsS0FBSyxFQUFFLFFBQVEsRUFDaEMsTUFBTSxFQUFFLFNBQVMsRUFHbEI7SUFFRCxPQUFhLE1BQU0sQ0FDakIsTUFBTSxFQUFFLFNBQVMsRUFDakIsTUFBTSxFQUFFLGNBQWMsRUFDdEIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsY0FBYyxFQUFFLGNBQWMsR0FBRyxTQUFTLEVBQzFDLEtBQUssRUFBRSxRQUFRLEdBQ2QsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQXFCeEI7SUFFRCxVQUFnQixlQUFlLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBZ0QvRDtJQUVELFVBQXlCLFNBQVMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQXVCcEY7WUFHYSxxQkFBcUI7WUEyQnJCLG9CQUFvQjtDQVVuQyJ9
@@ -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,CAgD/D;IAED,UAAyB,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBpF;YAGa,qBAAqB;YA2BrB,oBAAoB;CAUnC"}