@aztec/bot 0.0.0-test.1 → 0.0.1-commit.017a351

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 +69 -0
  7. package/dest/bot.d.ts +13 -18
  8. package/dest/bot.d.ts.map +1 -1
  9. package/dest/bot.js +23 -85
  10. package/dest/config.d.ts +88 -99
  11. package/dest/config.d.ts.map +1 -1
  12. package/dest/config.js +91 -41
  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 +137 -0
  16. package/dest/factory.d.ts +48 -29
  17. package/dest/factory.d.ts.map +1 -1
  18. package/dest/factory.js +549 -144
  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 +8 -1
  23. package/dest/interface.d.ts.map +1 -1
  24. package/dest/interface.js +34 -6
  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 +31 -24
  44. package/src/amm_bot.ts +129 -0
  45. package/src/base_bot.ts +75 -0
  46. package/src/bot.ts +51 -103
  47. package/src/config.ts +133 -75
  48. package/src/cross_chain_bot.ts +204 -0
  49. package/src/factory.ts +644 -149
  50. package/src/index.ts +4 -1
  51. package/src/interface.ts +15 -6
  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,11 +50,9 @@ 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
- /** L2 gas limit for the tx (empty to have the bot trigger an estimate gas). */
53
+ /** L2 gas limit for the tx (empty to let the bot's wallet estimate). */
50
54
  l2GasLimit: number | undefined;
51
- /** DA gas limit for the tx (empty to have the bot trigger an estimate gas). */
55
+ /** DA gas limit for the tx (empty to let the bot's wallet estimate). */
52
56
  daGasLimit: number | undefined;
53
57
  /** Token contract to use */
54
58
  contract: SupportedTokenContracts;
@@ -56,131 +60,116 @@ export type BotConfig = {
56
60
  maxConsecutiveErrors: number;
57
61
  /** Stops the bot if service becomes unhealthy */
58
62
  stopWhenUnhealthy: boolean;
59
- };
60
- export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
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'>;
70
+ export declare const BotConfigSchema: z.ZodPipe<z.ZodObject<{
61
71
  nodeUrl: z.ZodOptional<z.ZodString>;
62
- pxeUrl: z.ZodOptional<z.ZodString>;
63
- 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>;
72
+ nodeAdminUrl: z.ZodOptional<z.ZodString>;
73
+ l1RpcUrls: z.ZodOptional<z.ZodArray<z.ZodString>>;
74
+ l1Mnemonic: z.ZodOptional<z.ZodType<SecretValue<string>, any, z.core.$ZodTypeInternals<SecretValue<string>, any>>>;
75
+ l1PrivateKey: z.ZodOptional<z.ZodType<SecretValue<string>, any, z.core.$ZodTypeInternals<SecretValue<string>, any>>>;
76
+ l1ToL2MessageTimeoutSeconds: z.ZodNumber;
77
+ senderPrivateKey: z.ZodOptional<z.ZodType<SecretValue<Fr>, any, z.core.$ZodTypeInternals<SecretValue<Fr>, 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<{
88
+ CHECKPOINTED: "CHECKPOINTED";
89
+ NONE: "NONE";
90
+ PROPOSED: "PROPOSED";
91
+ PROVEN: "PROVEN";
92
+ }>;
76
93
  maxPendingTxs: z.ZodNumber;
77
94
  flushSetupTransactions: z.ZodBoolean;
78
- skipPublicSimulation: z.ZodBoolean;
79
95
  l2GasLimit: z.ZodOptional<z.ZodNumber>;
80
96
  daGasLimit: z.ZodOptional<z.ZodNumber>;
81
- contract: z.ZodNativeEnum<typeof SupportedTokenContracts>;
97
+ contract: z.ZodEnum<typeof SupportedTokenContracts>;
82
98
  maxConsecutiveErrors: z.ZodNumber;
83
99
  stopWhenUnhealthy: z.ZodBoolean;
84
- }, "strip", z.ZodTypeAny, {
85
- recipientEncryptionSecret: Fr;
100
+ botMode: z.ZodDefault<z.ZodEnum<{
101
+ amm: "amm";
102
+ crosschain: "crosschain";
103
+ transfer: "transfer";
104
+ }>>;
105
+ l2ToL1MessagesPerTx: z.ZodDefault<z.ZodNumber>;
106
+ l1ToL2SeedCount: z.ZodDefault<z.ZodNumber>;
107
+ dataDirectory: z.ZodOptional<z.ZodString>;
108
+ dataStoreMapSizeKb: z.ZodOptional<z.ZodNumber>;
109
+ }, z.core.$strip>, z.ZodTransform<{
110
+ l1ToL2MessageTimeoutSeconds: number;
86
111
  tokenSalt: Fr;
87
112
  txIntervalSeconds: number;
88
113
  privateTransfersPerTx: number;
89
114
  publicTransfersPerTx: number;
90
115
  feePaymentMethod: "fee_juice";
116
+ minFeePadding: number;
91
117
  noStart: boolean;
92
118
  txMinedWaitSeconds: number;
93
- followChain: "NONE" | "PENDING" | "PROVEN";
119
+ followChain: "CHECKPOINTED" | "NONE" | "PROPOSED" | "PROVEN";
94
120
  maxPendingTxs: number;
95
121
  flushSetupTransactions: boolean;
96
- skipPublicSimulation: boolean;
97
- contract: SupportedTokenContracts;
98
- maxConsecutiveErrors: number;
99
- stopWhenUnhealthy: boolean;
100
- nodeUrl?: string | undefined;
101
- pxeUrl?: string | undefined;
102
- l1RpcUrls?: string[] | undefined;
103
- l1Mnemonic?: string | undefined;
104
- l1PrivateKey?: string | undefined;
105
- senderPrivateKey?: Fr | undefined;
106
- l2GasLimit?: number | undefined;
107
- daGasLimit?: number | undefined;
108
- }, {
109
- txIntervalSeconds: number;
110
- privateTransfersPerTx: number;
111
- publicTransfersPerTx: number;
112
- feePaymentMethod: "fee_juice";
113
- noStart: boolean;
114
- txMinedWaitSeconds: number;
115
- followChain: "NONE" | "PENDING" | "PROVEN";
116
- maxPendingTxs: number;
117
- flushSetupTransactions: boolean;
118
- skipPublicSimulation: boolean;
119
- contract: SupportedTokenContracts;
120
- maxConsecutiveErrors: number;
121
- 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;
132
- }>, {
133
- recipientEncryptionSecret: Fr;
134
- tokenSalt: Fr;
135
- txIntervalSeconds: number;
136
- privateTransfersPerTx: number;
137
- publicTransfersPerTx: number;
138
- feePaymentMethod: "fee_juice";
139
- noStart: boolean;
140
- txMinedWaitSeconds: number;
141
- followChain: "NONE" | "PENDING" | "PROVEN";
142
- maxPendingTxs: number;
143
- flushSetupTransactions: boolean;
144
- skipPublicSimulation: boolean;
145
122
  contract: SupportedTokenContracts;
146
123
  maxConsecutiveErrors: number;
147
124
  stopWhenUnhealthy: boolean;
125
+ botMode: "amm" | "crosschain" | "transfer";
126
+ l2ToL1MessagesPerTx: number;
127
+ l1ToL2SeedCount: number;
128
+ dataDirectory?: string | undefined;
148
129
  nodeUrl: string | undefined;
149
- pxeUrl: string | undefined;
130
+ nodeAdminUrl: string | undefined;
150
131
  l1RpcUrls: string[] | undefined;
151
- l1Mnemonic: string | undefined;
152
- l1PrivateKey: string | undefined;
153
- senderPrivateKey: Fr | undefined;
132
+ senderSalt: Fr | undefined;
154
133
  l2GasLimit: number | undefined;
155
134
  daGasLimit: number | undefined;
135
+ l1Mnemonic: SecretValue<string> | undefined;
136
+ l1PrivateKey: SecretValue<string> | undefined;
137
+ senderPrivateKey: SecretValue<Fr> | undefined;
138
+ dataStoreMapSizeKb: number;
156
139
  }, {
140
+ nodeUrl?: string | undefined;
141
+ nodeAdminUrl?: string | undefined;
142
+ l1RpcUrls?: string[] | undefined;
143
+ l1Mnemonic?: SecretValue<string> | undefined;
144
+ l1PrivateKey?: SecretValue<string> | undefined;
145
+ l1ToL2MessageTimeoutSeconds: number;
146
+ senderPrivateKey?: SecretValue<Fr> | undefined;
147
+ senderSalt?: Fr | undefined;
148
+ tokenSalt: Fr;
157
149
  txIntervalSeconds: number;
158
150
  privateTransfersPerTx: number;
159
151
  publicTransfersPerTx: number;
160
152
  feePaymentMethod: "fee_juice";
153
+ minFeePadding: number;
161
154
  noStart: boolean;
162
155
  txMinedWaitSeconds: number;
163
- followChain: "NONE" | "PENDING" | "PROVEN";
156
+ followChain: "CHECKPOINTED" | "NONE" | "PROPOSED" | "PROVEN";
164
157
  maxPendingTxs: number;
165
158
  flushSetupTransactions: boolean;
166
- skipPublicSimulation: boolean;
159
+ l2GasLimit?: number | undefined;
160
+ daGasLimit?: number | undefined;
167
161
  contract: SupportedTokenContracts;
168
162
  maxConsecutiveErrors: number;
169
163
  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;
180
- }>;
164
+ botMode: "amm" | "crosschain" | "transfer";
165
+ l2ToL1MessagesPerTx: number;
166
+ l1ToL2SeedCount: number;
167
+ dataDirectory?: string | undefined;
168
+ dataStoreMapSizeKb?: number | undefined;
169
+ }>>;
181
170
  export declare const botConfigMappings: ConfigMappingsType<BotConfig>;
182
171
  export declare function getBotConfigFromEnv(): BotConfig;
183
172
  export declare function getBotDefaultConfig(): BotConfig;
184
173
  export declare function getVersions(): Partial<ComponentsVersions>;
185
174
  export {};
186
- //# sourceMappingURL=config.d.ts.map
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQUN2QixXQUFXLEVBU1osTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHcEQsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFzQixNQUFNLHdCQUF3QixDQUFDO0FBRWxGLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFbkUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixRQUFBLE1BQU0sY0FBYyx5REFBMEQsQ0FBQztBQUMvRSxLQUFLLGNBQWMsR0FBRyxDQUFDLE9BQU8sY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFdEQsUUFBQSxNQUFNLE9BQU8sNENBQTZDLENBQUM7QUFDM0QsS0FBSyxPQUFPLEdBQUcsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRXhDLG9CQUFZLHVCQUF1QjtJQUNqQyxhQUFhLGtCQUFrQjtJQUMvQixvQkFBb0IseUJBQXlCO0NBQzlDO0FBRUQsTUFBTSxNQUFNLFNBQVMsR0FBRztJQUN0Qiw2REFBNkQ7SUFDN0QsT0FBTyxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDNUIsNEVBQTRFO0lBQzVFLFlBQVksRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQ2pDLGdDQUFnQztJQUNoQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDO0lBQ2hDLGdFQUFnRTtJQUNoRSxVQUFVLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUM1QyxtRUFBbUU7SUFDbkUsWUFBWSxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUM7SUFDOUMsdUVBQXVFO0lBQ3ZFLDJCQUEyQixFQUFFLE1BQU0sQ0FBQztJQUNwQyxrREFBa0Q7SUFDbEQsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUM5Qyw2REFBNkQ7SUFDN0QsVUFBVSxFQUFFLEVBQUUsR0FBRyxTQUFTLENBQUM7SUFDM0IsaURBQWlEO0lBQ2pELFNBQVMsRUFBRSxFQUFFLENBQUM7SUFDZCxzREFBc0Q7SUFDdEQsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO0lBQzFCLDREQUE0RDtJQUM1RCxxQkFBcUIsRUFBRSxNQUFNLENBQUM7SUFDOUIsMkRBQTJEO0lBQzNELG9CQUFvQixFQUFFLE1BQU0sQ0FBQztJQUM3QixrQ0FBa0M7SUFDbEMsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDO0lBQzlCLHVFQUF1RTtJQUN2RSxhQUFhLEVBQUUsTUFBTSxDQUFDO0lBQ3RCLDBFQUEwRTtJQUMxRSxPQUFPLEVBQUUsT0FBTyxDQUFDO0lBQ2pCLHVFQUF1RTtJQUN2RSxrQkFBa0IsRUFBRSxNQUFNLENBQUM7SUFDM0IsNEVBQTRFO0lBQzVFLFdBQVcsRUFBRSxjQUFjLENBQUM7SUFDNUIsZ0ZBQWdGO0lBQ2hGLGFBQWEsRUFBRSxNQUFNLENBQUM7SUFDdEIsOERBQThEO0lBQzlELHNCQUFzQixFQUFFLE9BQU8sQ0FBQztJQUNoQyx3RUFBd0U7SUFDeEUsVUFBVSxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDL0Isd0VBQXdFO0lBQ3hFLFVBQVUsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQy9CLDRCQUE0QjtJQUM1QixRQUFRLEVBQUUsdUJBQXVCLENBQUM7SUFDbEMseUVBQXlFO0lBQ3pFLG9CQUFvQixFQUFFLE1BQU0sQ0FBQztJQUM3QixpREFBaUQ7SUFDakQsaUJBQWlCLEVBQUUsT0FBTyxDQUFDO0lBQzNCLDhDQUE4QztJQUM5QyxPQUFPLEVBQUUsT0FBTyxDQUFDO0lBQ2pCLDJEQUF5RDtJQUN6RCxtQkFBbUIsRUFBRSxNQUFNLENBQUM7SUFDNUIsZ0VBQThEO0lBQzlELGVBQWUsRUFBRSxNQUFNLENBQUM7Q0FDekIsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLGVBQWUsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDO0FBRWxFLGVBQU8sTUFBTSxlQUFlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4QzNCLENBQUM7QUFFRixlQUFPLE1BQU0saUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsU0FBUyxDQW1LM0QsQ0FBQztBQUVGLHdCQUFnQixtQkFBbUIsSUFBSSxTQUFTLENBRS9DO0FBRUQsd0JBQWdCLG1CQUFtQixJQUFJLFNBQVMsQ0FFL0M7QUFFRCx3QkFBZ0IsV0FBVyxJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUt6RCJ9
@@ -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,19 +170,14 @@ 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
- description: 'L2 gas limit for the tx (empty to have the bot trigger an estimate gas).',
175
+ description: "L2 gas limit for the tx (empty to let the bot's wallet estimate).",
151
176
  ...optionalNumberConfigHelper()
152
177
  },
153
178
  daGasLimit: {
154
179
  env: 'BOT_DA_GAS_LIMIT',
155
- description: 'DA gas limit for the tx (empty to have the bot trigger an estimate gas).',
180
+ description: "DA gas limit for the tx (empty to let the bot's wallet estimate).",
156
181
  ...optionalNumberConfigHelper()
157
182
  },
158
183
  contract: {
@@ -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 type { 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3NfY2hhaW5fYm90LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY3Jvc3NfY2hhaW5fYm90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7QUFDSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHekQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRixPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUc3QyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQXdCLE1BQU0sa0JBQWtCLENBQUM7QUFLdkUseUVBQXFFO0FBQ3JFLHFCQUFhLGFBQWMsU0FBUSxPQUFPO0lBU3RDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUTtJQUN6QixPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVE7SUFDekIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXO0lBQzVCLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWTtJQUM3QixPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWE7SUFDOUIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO0lBYnhCLE9BQU8sQ0FBQyxVQUFVLENBQUs7SUFDdkIsT0FBTyxDQUFDLGNBQWMsQ0FBSztJQUMzQixPQUFPLENBQUMsa0JBQWtCLENBQTRCO0lBRXRELFNBQVMsYUFDUCxJQUFJLEVBQUUsU0FBUyxFQUNmLE1BQU0sRUFBRSxjQUFjLEVBQ3RCLHFCQUFxQixFQUFFLFlBQVksRUFDbEIsUUFBUSxFQUFFLFlBQVksRUFDdEIsUUFBUSxFQUFFLHdCQUF3QixFQUNsQyxXQUFXLEVBQUUsVUFBVSxFQUN2QixZQUFZLEVBQUUsVUFBVSxFQUN4QixhQUFhLEVBQUUsTUFBTSxFQUNyQixLQUFLLEVBQUUsUUFBUSxFQUNoQyxNQUFNLEVBQUUsU0FBUyxFQUdsQjtJQUVELE9BQWEsTUFBTSxDQUNqQixNQUFNLEVBQUUsU0FBUyxFQUNqQixNQUFNLEVBQUUsY0FBYyxFQUN0QixTQUFTLEVBQUUsU0FBUyxFQUNwQixjQUFjLEVBQUUsY0FBYyxHQUFHLFNBQVMsRUFDMUMsS0FBSyxFQUFFLFFBQVEsR0FDZCxPQUFPLENBQUMsYUFBYSxDQUFDLENBcUJ4QjtJQUVELFVBQWdCLGVBQWUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FpRC9EO0lBRUQsVUFBeUIsU0FBUyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBd0JwRjtZQUdhLHFCQUFxQjtZQW9CckIsb0JBQW9CO0NBVW5DIn0=
@@ -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,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC5D,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,CAwBpF;YAGa,qBAAqB;YAoBrB,oBAAoB;CAUnC"}