@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.
- package/dest/amm_bot.d.ts +32 -0
- package/dest/amm_bot.d.ts.map +1 -0
- package/dest/amm_bot.js +108 -0
- package/dest/base_bot.d.ts +21 -0
- package/dest/base_bot.d.ts.map +1 -0
- package/dest/base_bot.js +79 -0
- package/dest/bot.d.ts +13 -18
- package/dest/bot.d.ts.map +1 -1
- package/dest/bot.js +26 -84
- package/dest/config.d.ts +106 -66
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +89 -39
- package/dest/cross_chain_bot.d.ts +54 -0
- package/dest/cross_chain_bot.d.ts.map +1 -0
- package/dest/cross_chain_bot.js +134 -0
- package/dest/factory.d.ts +43 -29
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +380 -139
- package/dest/index.d.ts +5 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +4 -1
- package/dest/interface.d.ts +12 -1
- package/dest/interface.d.ts.map +1 -1
- package/dest/interface.js +5 -0
- package/dest/l1_to_l2_seeding.d.ts +8 -0
- package/dest/l1_to_l2_seeding.d.ts.map +1 -0
- package/dest/l1_to_l2_seeding.js +63 -0
- package/dest/rpc.d.ts +1 -7
- package/dest/rpc.d.ts.map +1 -1
- package/dest/rpc.js +0 -11
- package/dest/runner.d.ts +15 -11
- package/dest/runner.d.ts.map +1 -1
- package/dest/runner.js +457 -51
- package/dest/store/bot_store.d.ts +69 -0
- package/dest/store/bot_store.d.ts.map +1 -0
- package/dest/store/bot_store.js +138 -0
- package/dest/store/index.d.ts +2 -0
- package/dest/store/index.d.ts.map +1 -0
- package/dest/store/index.js +1 -0
- package/dest/utils.d.ts +8 -5
- package/dest/utils.d.ts.map +1 -1
- package/dest/utils.js +14 -5
- package/package.json +30 -23
- package/src/amm_bot.ts +129 -0
- package/src/base_bot.ts +82 -0
- package/src/bot.ts +52 -101
- package/src/config.ts +129 -71
- package/src/cross_chain_bot.ts +203 -0
- package/src/factory.ts +476 -152
- package/src/index.ts +4 -1
- package/src/interface.ts +9 -0
- package/src/l1_to_l2_seeding.ts +79 -0
- package/src/rpc.ts +0 -13
- package/src/runner.ts +51 -21
- package/src/store/bot_store.ts +196 -0
- package/src/store/index.ts +1 -0
- 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/
|
|
3
|
-
import { type
|
|
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", "
|
|
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"
|
|
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
|
|
16
|
-
|
|
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
|
-
/**
|
|
26
|
-
|
|
27
|
-
/** Salt for the token contract
|
|
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
|
-
|
|
72
|
+
nodeAdminUrl: z.ZodOptional<z.ZodString>;
|
|
63
73
|
l1RpcUrls: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
64
|
-
l1Mnemonic: z.ZodOptional<z.
|
|
65
|
-
l1PrivateKey: z.ZodOptional<z.
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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", "
|
|
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
|
-
|
|
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" | "
|
|
117
|
+
followChain: "CHECKPOINTED" | "NONE" | "PROPOSED" | "PROVEN";
|
|
94
118
|
maxPendingTxs: number;
|
|
95
119
|
flushSetupTransactions: boolean;
|
|
96
|
-
|
|
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
|
-
|
|
132
|
+
nodeAdminUrl?: string | undefined;
|
|
102
133
|
l1RpcUrls?: string[] | undefined;
|
|
103
|
-
l1Mnemonic?:
|
|
104
|
-
l1PrivateKey?:
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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" | "
|
|
147
|
+
followChain: "CHECKPOINTED" | "NONE" | "PROPOSED" | "PROVEN";
|
|
116
148
|
maxPendingTxs: number;
|
|
117
149
|
flushSetupTransactions: boolean;
|
|
118
|
-
|
|
150
|
+
l2GasLimit?: number | undefined;
|
|
151
|
+
daGasLimit?: number | undefined;
|
|
119
152
|
contract: SupportedTokenContracts;
|
|
120
153
|
maxConsecutiveErrors: number;
|
|
121
154
|
stopWhenUnhealthy: boolean;
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
-
|
|
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" | "
|
|
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
|
-
|
|
181
|
+
nodeAdminUrl: string | undefined;
|
|
150
182
|
l1RpcUrls: string[] | undefined;
|
|
151
|
-
|
|
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" | "
|
|
207
|
+
followChain: "CHECKPOINTED" | "NONE" | "PROPOSED" | "PROVEN";
|
|
164
208
|
maxPendingTxs: number;
|
|
165
209
|
flushSetupTransactions: boolean;
|
|
166
|
-
|
|
210
|
+
l2GasLimit?: number | undefined;
|
|
211
|
+
daGasLimit?: number | undefined;
|
|
167
212
|
contract: SupportedTokenContracts;
|
|
168
213
|
maxConsecutiveErrors: number;
|
|
169
214
|
stopWhenUnhealthy: boolean;
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
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=
|
|
226
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQUN2QixXQUFXLEVBU1osTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHcEQsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFzQixNQUFNLHdCQUF3QixDQUFDO0FBRWxGLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFbkUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixRQUFBLE1BQU0sY0FBYyx5REFBMEQsQ0FBQztBQUMvRSxLQUFLLGNBQWMsR0FBRyxDQUFDLE9BQU8sY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFdEQsUUFBQSxNQUFNLE9BQU8sNENBQTZDLENBQUM7QUFDM0QsS0FBSyxPQUFPLEdBQUcsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRXhDLG9CQUFZLHVCQUF1QjtJQUNqQyxhQUFhLGtCQUFrQjtJQUMvQixvQkFBb0IseUJBQXlCO0NBQzlDO0FBRUQsTUFBTSxNQUFNLFNBQVMsR0FBRztJQUN0Qiw2REFBNkQ7SUFDN0QsT0FBTyxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDNUIsNEVBQTRFO0lBQzVFLFlBQVksRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQ2pDLGdDQUFnQztJQUNoQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDO0lBQ2hDLGdFQUFnRTtJQUNoRSxVQUFVLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUM1QyxtRUFBbUU7SUFDbkUsWUFBWSxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUM7SUFDOUMsdUVBQXVFO0lBQ3ZFLDJCQUEyQixFQUFFLE1BQU0sQ0FBQztJQUNwQyxrREFBa0Q7SUFDbEQsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUM5Qyw2REFBNkQ7SUFDN0QsVUFBVSxFQUFFLEVBQUUsR0FBRyxTQUFTLENBQUM7SUFDM0IsaURBQWlEO0lBQ2pELFNBQVMsRUFBRSxFQUFFLENBQUM7SUFDZCxzREFBc0Q7SUFDdEQsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO0lBQzFCLDREQUE0RDtJQUM1RCxxQkFBcUIsRUFBRSxNQUFNLENBQUM7SUFDOUIsMkRBQTJEO0lBQzNELG9CQUFvQixFQUFFLE1BQU0sQ0FBQztJQUM3QixrQ0FBa0M7SUFDbEMsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDO0lBQzlCLHVFQUF1RTtJQUN2RSxhQUFhLEVBQUUsTUFBTSxDQUFDO0lBQ3RCLDBFQUEwRTtJQUMxRSxPQUFPLEVBQUUsT0FBTyxDQUFDO0lBQ2pCLHVFQUF1RTtJQUN2RSxrQkFBa0IsRUFBRSxNQUFNLENBQUM7SUFDM0IsNEVBQTRFO0lBQzVFLFdBQVcsRUFBRSxjQUFjLENBQUM7SUFDNUIsZ0ZBQWdGO0lBQ2hGLGFBQWEsRUFBRSxNQUFNLENBQUM7SUFDdEIsOERBQThEO0lBQzlELHNCQUFzQixFQUFFLE9BQU8sQ0FBQztJQUNoQywrRUFBK0U7SUFDL0UsVUFBVSxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDL0IsK0VBQStFO0lBQy9FLFVBQVUsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQy9CLDRCQUE0QjtJQUM1QixRQUFRLEVBQUUsdUJBQXVCLENBQUM7SUFDbEMseUVBQXlFO0lBQ3pFLG9CQUFvQixFQUFFLE1BQU0sQ0FBQztJQUM3QixpREFBaUQ7SUFDakQsaUJBQWlCLEVBQUUsT0FBTyxDQUFDO0lBQzNCLDhDQUE4QztJQUM5QyxPQUFPLEVBQUUsT0FBTyxDQUFDO0lBQ2pCLDJEQUF5RDtJQUN6RCxtQkFBbUIsRUFBRSxNQUFNLENBQUM7SUFDNUIsZ0VBQThEO0lBQzlELGVBQWUsRUFBRSxNQUFNLENBQUM7Q0FDekIsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLGVBQWUsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDO0FBRWxFLGVBQU8sTUFBTSxlQUFlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE4QzNCLENBQUM7QUFFRixlQUFPLE1BQU0saUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsU0FBUyxDQW1LM0QsQ0FBQztBQUVGLHdCQUFnQixtQkFBbUIsSUFBSSxTQUFTLENBRS9DO0FBRUQsd0JBQWdCLG1CQUFtQixJQUFJLFNBQVMsQ0FFL0M7QUFFRCx3QkFBZ0IsV0FBVyxJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUt6RCJ9
|
package/dest/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,
|
|
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/
|
|
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 {
|
|
5
|
-
import {
|
|
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
|
-
'
|
|
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["
|
|
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
27
|
l1RpcUrls: z.array(z.string()).optional(),
|
|
21
|
-
l1Mnemonic: z.string().optional(),
|
|
22
|
-
l1PrivateKey: z.string().optional(),
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
58
|
-
env: '
|
|
59
|
-
description: 'URL to the
|
|
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
|
-
|
|
99
|
+
...secretFrConfigHelper()
|
|
78
100
|
},
|
|
79
|
-
|
|
80
|
-
env: '
|
|
81
|
-
description: '
|
|
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: '
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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"}
|