@aztec/bot 0.76.4 → 0.77.0-testnet-ignition.17
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/bot.d.ts +4 -4
- package/dest/bot.d.ts.map +1 -1
- package/dest/bot.js +45 -24
- package/dest/config.d.ts +42 -20
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +72 -52
- package/dest/factory.d.ts +7 -2
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +131 -59
- package/dest/index.d.ts +1 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -2
- package/dest/interface.d.ts +1 -1
- package/dest/interface.d.ts.map +1 -1
- package/dest/interface.js +1 -2
- package/dest/rpc.d.ts +2 -2
- package/dest/rpc.d.ts.map +1 -1
- package/dest/rpc.js +7 -5
- package/dest/runner.d.ts +1 -1
- package/dest/runner.d.ts.map +1 -1
- package/dest/runner.js +151 -156
- package/dest/utils.d.ts +3 -3
- package/dest/utils.d.ts.map +1 -1
- package/dest/utils.js +5 -4
- package/package.json +13 -14
- package/src/bot.ts +8 -9
- package/src/config.ts +38 -13
- package/src/factory.ts +101 -19
- package/src/index.ts +1 -1
- package/src/interface.ts +1 -1
- package/src/rpc.ts +2 -2
- package/src/runner.ts +1 -1
- package/src/utils.ts +3 -3
package/dest/bot.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { type AztecAddress, type Wallet } from '@aztec/aztec.js';
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import type { EasyPrivateTokenContract } from '@aztec/noir-contracts.js/EasyPrivateToken';
|
|
3
|
+
import type { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
4
|
+
import type { AztecNode, PXE } from '@aztec/stdlib/interfaces/client';
|
|
5
|
+
import type { BotConfig } from './config.js';
|
|
6
6
|
export declare class Bot {
|
|
7
7
|
readonly wallet: Wallet;
|
|
8
8
|
readonly token: TokenContract | EasyPrivateTokenContract;
|
package/dest/bot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EAIjB,KAAK,MAAM,EAEZ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAGpE,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,iCAAiC,CAAC;AAEtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAM7C,qBAAa,GAAG;aAOI,MAAM,EAAE,MAAM;aACd,KAAK,EAAE,aAAa,GAAG,wBAAwB;aAC/C,SAAS,EAAE,YAAY;IAChC,MAAM,EAAE,SAAS;IAT1B,OAAO,CAAC,GAAG,CAAuB;IAElC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,SAAS,CAAa;IAE9B,SAAS,aACS,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,GAAG,wBAAwB,EAC/C,SAAS,EAAE,YAAY,EAChC,MAAM,EAAE,SAAS;WAGb,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,GAAE;QAAE,GAAG,CAAC,EAAE,GAAG,CAAC;QAAC,IAAI,CAAC,EAAE,SAAS,CAAA;KAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAKjG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC;IAKjC,GAAG;IAoEH,WAAW;;;;;;;;;;IAoBxB,OAAO,CAAC,iBAAiB;CAkB1B"}
|
package/dest/bot.js
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
|
-
import { BatchCall, FeeJuicePaymentMethod,
|
|
2
|
-
import { Gas } from '@aztec/circuits.js';
|
|
1
|
+
import { BatchCall, FeeJuicePaymentMethod, createLogger } from '@aztec/aztec.js';
|
|
3
2
|
import { timesParallel } from '@aztec/foundation/collection';
|
|
3
|
+
import { Gas } from '@aztec/stdlib/gas';
|
|
4
4
|
import { BotFactory } from './factory.js';
|
|
5
5
|
import { getBalances, getPrivateBalance, isStandardTokenContract } from './utils.js';
|
|
6
6
|
const TRANSFER_AMOUNT = 1;
|
|
7
7
|
export class Bot {
|
|
8
|
-
|
|
8
|
+
wallet;
|
|
9
|
+
token;
|
|
10
|
+
recipient;
|
|
11
|
+
config;
|
|
12
|
+
log;
|
|
13
|
+
attempts;
|
|
14
|
+
successes;
|
|
15
|
+
constructor(wallet, token, recipient, config){
|
|
9
16
|
this.wallet = wallet;
|
|
10
17
|
this.token = token;
|
|
11
18
|
this.recipient = recipient;
|
|
@@ -20,22 +27,26 @@ export class Bot {
|
|
|
20
27
|
}
|
|
21
28
|
updateConfig(config) {
|
|
22
29
|
this.log.info(`Updating bot config ${Object.keys(config).join(', ')}`);
|
|
23
|
-
this.config = {
|
|
30
|
+
this.config = {
|
|
31
|
+
...this.config,
|
|
32
|
+
...config
|
|
33
|
+
};
|
|
24
34
|
}
|
|
25
35
|
async run() {
|
|
26
36
|
this.attempts++;
|
|
27
|
-
const logCtx = {
|
|
37
|
+
const logCtx = {
|
|
38
|
+
runId: Date.now() * 1000 + Math.floor(Math.random() * 1000)
|
|
39
|
+
};
|
|
28
40
|
const { privateTransfersPerTx, publicTransfersPerTx, feePaymentMethod, followChain, txMinedWaitSeconds } = this.config;
|
|
29
41
|
const { token, recipient, wallet } = this;
|
|
30
42
|
const sender = wallet.getAddress();
|
|
31
43
|
this.log.verbose(`Preparing tx with ${feePaymentMethod} fee with ${privateTransfersPerTx} private and ${publicTransfersPerTx} public transfers`, logCtx);
|
|
32
44
|
const calls = [];
|
|
33
45
|
if (isStandardTokenContract(token)) {
|
|
34
|
-
calls.push(...
|
|
35
|
-
calls.push(...
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
calls.push(...(await timesParallel(privateTransfersPerTx, () => token.methods.transfer(TRANSFER_AMOUNT, sender, recipient).request())));
|
|
46
|
+
calls.push(...await timesParallel(privateTransfersPerTx, ()=>token.methods.transfer(recipient, TRANSFER_AMOUNT).request()));
|
|
47
|
+
calls.push(...await timesParallel(publicTransfersPerTx, ()=>token.methods.transfer_in_public(sender, recipient, TRANSFER_AMOUNT, 0).request()));
|
|
48
|
+
} else {
|
|
49
|
+
calls.push(...await timesParallel(privateTransfersPerTx, ()=>token.methods.transfer(TRANSFER_AMOUNT, sender, recipient).request()));
|
|
39
50
|
}
|
|
40
51
|
const opts = this.getSendMethodOpts();
|
|
41
52
|
const batch = new BatchCall(wallet, calls);
|
|
@@ -54,7 +65,7 @@ export class Bot {
|
|
|
54
65
|
const receipt = await tx.wait({
|
|
55
66
|
timeout: txMinedWaitSeconds,
|
|
56
67
|
provenTimeout: txMinedWaitSeconds,
|
|
57
|
-
proven: followChain === 'PROVEN'
|
|
68
|
+
proven: followChain === 'PROVEN'
|
|
58
69
|
});
|
|
59
70
|
this.log.info(`Tx #${this.attempts} ${receipt.txHash} successfully mined in block ${receipt.blockNumber} (stats: ${this.successes}/${this.attempts} success)`, logCtx);
|
|
60
71
|
this.successes++;
|
|
@@ -63,39 +74,49 @@ export class Bot {
|
|
|
63
74
|
if (isStandardTokenContract(this.token)) {
|
|
64
75
|
return {
|
|
65
76
|
sender: await getBalances(this.token, this.wallet.getAddress()),
|
|
66
|
-
recipient: await getBalances(this.token, this.recipient)
|
|
77
|
+
recipient: await getBalances(this.token, this.recipient)
|
|
67
78
|
};
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
79
|
+
} else {
|
|
70
80
|
return {
|
|
71
81
|
sender: {
|
|
72
82
|
privateBalance: await getPrivateBalance(this.token, this.wallet.getAddress()),
|
|
73
|
-
publicBalance: 0n
|
|
83
|
+
publicBalance: 0n
|
|
74
84
|
},
|
|
75
85
|
recipient: {
|
|
76
86
|
privateBalance: await getPrivateBalance(this.token, this.recipient),
|
|
77
|
-
publicBalance: 0n
|
|
78
|
-
}
|
|
87
|
+
publicBalance: 0n
|
|
88
|
+
}
|
|
79
89
|
};
|
|
80
90
|
}
|
|
81
91
|
}
|
|
82
92
|
getSendMethodOpts() {
|
|
83
93
|
const sender = this.wallet.getAddress();
|
|
84
|
-
const {
|
|
85
|
-
const paymentMethod =
|
|
94
|
+
const { l2GasLimit, daGasLimit, skipPublicSimulation } = this.config;
|
|
95
|
+
const paymentMethod = new FeeJuicePaymentMethod(sender);
|
|
86
96
|
let gasSettings, estimateGas;
|
|
87
97
|
if (l2GasLimit !== undefined && l2GasLimit > 0 && daGasLimit !== undefined && daGasLimit > 0) {
|
|
88
|
-
gasSettings = {
|
|
98
|
+
gasSettings = {
|
|
99
|
+
gasLimits: Gas.from({
|
|
100
|
+
l2Gas: l2GasLimit,
|
|
101
|
+
daGas: daGasLimit
|
|
102
|
+
})
|
|
103
|
+
};
|
|
89
104
|
estimateGas = false;
|
|
90
105
|
this.log.verbose(`Using gas limits ${l2GasLimit} L2 gas ${daGasLimit} DA gas`);
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
106
|
+
} else {
|
|
93
107
|
estimateGas = true;
|
|
94
108
|
this.log.verbose(`Estimating gas for transaction`);
|
|
95
109
|
}
|
|
96
110
|
const baseFeePadding = 2; // Send 3x the current base fee
|
|
97
111
|
this.log.verbose(skipPublicSimulation ? `Skipping public simulation` : `Simulating public transfers`);
|
|
98
|
-
return {
|
|
112
|
+
return {
|
|
113
|
+
fee: {
|
|
114
|
+
estimateGas,
|
|
115
|
+
paymentMethod,
|
|
116
|
+
gasSettings,
|
|
117
|
+
baseFeePadding
|
|
118
|
+
},
|
|
119
|
+
skipPublicSimulation
|
|
120
|
+
};
|
|
99
121
|
}
|
|
100
122
|
}
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2JvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULHFCQUFxQixFQUNyQixrQkFBa0IsRUFHbEIsWUFBWSxHQUNiLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUs3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFckYsTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFDO0FBRTFCLE1BQU0sT0FBTyxHQUFHO0lBTWQsWUFDa0IsTUFBYyxFQUNkLEtBQStDLEVBQy9DLFNBQXVCLEVBQ2hDLE1BQWlCO1FBSFIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQTBDO1FBQy9DLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDaEMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQVRsQixRQUFHLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFCLGFBQVEsR0FBVyxDQUFDLENBQUM7UUFDckIsY0FBUyxHQUFXLENBQUMsQ0FBQztJQU8zQixDQUFDO0lBRUosTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBaUIsRUFBRSxlQUFnRCxFQUFFO1FBQ3ZGLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hGLE9BQU8sSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUs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
|
package/dest/config.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { type ComponentsVersions } from '@aztec/circuit-types';
|
|
2
|
-
import { Fr } from '@aztec/circuits.js';
|
|
3
1
|
import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
2
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
3
|
+
import { type ZodFor } from '@aztec/stdlib/schemas';
|
|
4
|
+
import type { ComponentsVersions } from '@aztec/stdlib/versioning';
|
|
4
5
|
import { z } from 'zod';
|
|
5
6
|
declare const BotFollowChain: readonly ["NONE", "PENDING", "PROVEN"];
|
|
6
7
|
type BotFollowChain = (typeof BotFollowChain)[number];
|
|
@@ -13,8 +14,14 @@ export type BotConfig = {
|
|
|
13
14
|
nodeUrl: string | undefined;
|
|
14
15
|
/** URL to the PXE for sending txs, or undefined if an in-proc PXE is used. */
|
|
15
16
|
pxeUrl: string | undefined;
|
|
17
|
+
/** Url of the ethereum host. */
|
|
18
|
+
l1RpcUrls: string[] | undefined;
|
|
19
|
+
/** The mnemonic for the account to bridge fee juice from L1. */
|
|
20
|
+
l1Mnemonic: string | undefined;
|
|
21
|
+
/** The private key for the account to bridge fee juice from L1. */
|
|
22
|
+
l1PrivateKey: string | undefined;
|
|
16
23
|
/** Signing private key for the sender account. */
|
|
17
|
-
senderPrivateKey: Fr;
|
|
24
|
+
senderPrivateKey: Fr | undefined;
|
|
18
25
|
/** Encryption secret for a recipient account. */
|
|
19
26
|
recipientEncryptionSecret: Fr;
|
|
20
27
|
/** Salt for the token contract deployment. */
|
|
@@ -26,7 +33,7 @@ export type BotConfig = {
|
|
|
26
33
|
/** How many public token transfers are executed per tx. */
|
|
27
34
|
publicTransfersPerTx: number;
|
|
28
35
|
/** How to handle fee payments. */
|
|
29
|
-
feePaymentMethod: 'fee_juice'
|
|
36
|
+
feePaymentMethod: 'fee_juice';
|
|
30
37
|
/** True to not automatically setup or start the bot on initialization. */
|
|
31
38
|
noStart: boolean;
|
|
32
39
|
/** How long to wait for a tx to be mined before reporting an error. */
|
|
@@ -53,13 +60,16 @@ export type BotConfig = {
|
|
|
53
60
|
export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
54
61
|
nodeUrl: z.ZodOptional<z.ZodString>;
|
|
55
62
|
pxeUrl: z.ZodOptional<z.ZodString>;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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>;
|
|
59
69
|
txIntervalSeconds: z.ZodNumber;
|
|
60
70
|
privateTransfersPerTx: z.ZodNumber;
|
|
61
71
|
publicTransfersPerTx: z.ZodNumber;
|
|
62
|
-
feePaymentMethod: z.
|
|
72
|
+
feePaymentMethod: z.ZodLiteral<"fee_juice">;
|
|
63
73
|
noStart: z.ZodBoolean;
|
|
64
74
|
txMinedWaitSeconds: z.ZodNumber;
|
|
65
75
|
followChain: z.ZodEnum<["NONE", "PENDING", "PROVEN"]>;
|
|
@@ -72,13 +82,12 @@ export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
72
82
|
maxConsecutiveErrors: z.ZodNumber;
|
|
73
83
|
stopWhenUnhealthy: z.ZodBoolean;
|
|
74
84
|
}, "strip", z.ZodTypeAny, {
|
|
75
|
-
senderPrivateKey: Fr;
|
|
76
85
|
recipientEncryptionSecret: Fr;
|
|
77
86
|
tokenSalt: Fr;
|
|
78
87
|
txIntervalSeconds: number;
|
|
79
88
|
privateTransfersPerTx: number;
|
|
80
89
|
publicTransfersPerTx: number;
|
|
81
|
-
feePaymentMethod: "fee_juice"
|
|
90
|
+
feePaymentMethod: "fee_juice";
|
|
82
91
|
noStart: boolean;
|
|
83
92
|
txMinedWaitSeconds: number;
|
|
84
93
|
followChain: "NONE" | "PENDING" | "PROVEN";
|
|
@@ -90,16 +99,17 @@ export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
90
99
|
stopWhenUnhealthy: boolean;
|
|
91
100
|
nodeUrl?: string | undefined;
|
|
92
101
|
pxeUrl?: string | undefined;
|
|
102
|
+
l1RpcUrls?: string[] | undefined;
|
|
103
|
+
l1Mnemonic?: string | undefined;
|
|
104
|
+
l1PrivateKey?: string | undefined;
|
|
105
|
+
senderPrivateKey?: Fr | undefined;
|
|
93
106
|
l2GasLimit?: number | undefined;
|
|
94
107
|
daGasLimit?: number | undefined;
|
|
95
108
|
}, {
|
|
96
|
-
senderPrivateKey: string;
|
|
97
|
-
recipientEncryptionSecret: string;
|
|
98
|
-
tokenSalt: string;
|
|
99
109
|
txIntervalSeconds: number;
|
|
100
110
|
privateTransfersPerTx: number;
|
|
101
111
|
publicTransfersPerTx: number;
|
|
102
|
-
feePaymentMethod: "fee_juice"
|
|
112
|
+
feePaymentMethod: "fee_juice";
|
|
103
113
|
noStart: boolean;
|
|
104
114
|
txMinedWaitSeconds: number;
|
|
105
115
|
followChain: "NONE" | "PENDING" | "PROVEN";
|
|
@@ -111,16 +121,21 @@ export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
111
121
|
stopWhenUnhealthy: boolean;
|
|
112
122
|
nodeUrl?: string | undefined;
|
|
113
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;
|
|
114
130
|
l2GasLimit?: number | undefined;
|
|
115
131
|
daGasLimit?: number | undefined;
|
|
116
132
|
}>, {
|
|
117
|
-
senderPrivateKey: Fr;
|
|
118
133
|
recipientEncryptionSecret: Fr;
|
|
119
134
|
tokenSalt: Fr;
|
|
120
135
|
txIntervalSeconds: number;
|
|
121
136
|
privateTransfersPerTx: number;
|
|
122
137
|
publicTransfersPerTx: number;
|
|
123
|
-
feePaymentMethod: "fee_juice"
|
|
138
|
+
feePaymentMethod: "fee_juice";
|
|
124
139
|
noStart: boolean;
|
|
125
140
|
txMinedWaitSeconds: number;
|
|
126
141
|
followChain: "NONE" | "PENDING" | "PROVEN";
|
|
@@ -132,16 +147,17 @@ export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
132
147
|
stopWhenUnhealthy: boolean;
|
|
133
148
|
nodeUrl: string | undefined;
|
|
134
149
|
pxeUrl: string | undefined;
|
|
150
|
+
l1RpcUrls: string[] | undefined;
|
|
151
|
+
l1Mnemonic: string | undefined;
|
|
152
|
+
l1PrivateKey: string | undefined;
|
|
153
|
+
senderPrivateKey: Fr | undefined;
|
|
135
154
|
l2GasLimit: number | undefined;
|
|
136
155
|
daGasLimit: number | undefined;
|
|
137
156
|
}, {
|
|
138
|
-
senderPrivateKey: string;
|
|
139
|
-
recipientEncryptionSecret: string;
|
|
140
|
-
tokenSalt: string;
|
|
141
157
|
txIntervalSeconds: number;
|
|
142
158
|
privateTransfersPerTx: number;
|
|
143
159
|
publicTransfersPerTx: number;
|
|
144
|
-
feePaymentMethod: "fee_juice"
|
|
160
|
+
feePaymentMethod: "fee_juice";
|
|
145
161
|
noStart: boolean;
|
|
146
162
|
txMinedWaitSeconds: number;
|
|
147
163
|
followChain: "NONE" | "PENDING" | "PROVEN";
|
|
@@ -153,6 +169,12 @@ export declare const BotConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
153
169
|
stopWhenUnhealthy: boolean;
|
|
154
170
|
nodeUrl?: string | undefined;
|
|
155
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;
|
|
156
178
|
l2GasLimit?: number | undefined;
|
|
157
179
|
daGasLimit?: number | undefined;
|
|
158
180
|
}>;
|
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,
|
|
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"}
|
package/dest/config.js
CHANGED
|
@@ -1,26 +1,32 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vks';
|
|
1
|
+
import { booleanConfigHelper, getConfigFromMappings, getDefaultConfig, numberConfigHelper, optionalNumberConfigHelper } from '@aztec/foundation/config';
|
|
2
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
3
|
+
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
5
4
|
import { protocolContractTreeRoot } from '@aztec/protocol-contracts';
|
|
5
|
+
import { schemas } from '@aztec/stdlib/schemas';
|
|
6
6
|
import { z } from 'zod';
|
|
7
|
-
const BotFollowChain = [
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
const BotFollowChain = [
|
|
8
|
+
'NONE',
|
|
9
|
+
'PENDING',
|
|
10
|
+
'PROVEN'
|
|
11
|
+
];
|
|
12
|
+
export var SupportedTokenContracts = /*#__PURE__*/ function(SupportedTokenContracts) {
|
|
10
13
|
SupportedTokenContracts["TokenContract"] = "TokenContract";
|
|
11
14
|
SupportedTokenContracts["EasyPrivateTokenContract"] = "EasyPrivateTokenContract";
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
return SupportedTokenContracts;
|
|
16
|
+
}({});
|
|
17
|
+
export const BotConfigSchema = z.object({
|
|
15
18
|
nodeUrl: z.string().optional(),
|
|
16
19
|
pxeUrl: z.string().optional(),
|
|
17
|
-
|
|
20
|
+
l1RpcUrls: z.array(z.string()).optional(),
|
|
21
|
+
l1Mnemonic: z.string().optional(),
|
|
22
|
+
l1PrivateKey: z.string().optional(),
|
|
23
|
+
senderPrivateKey: schemas.Fr.optional(),
|
|
18
24
|
recipientEncryptionSecret: schemas.Fr,
|
|
19
25
|
tokenSalt: schemas.Fr,
|
|
20
26
|
txIntervalSeconds: z.number(),
|
|
21
27
|
privateTransfersPerTx: z.number(),
|
|
22
28
|
publicTransfersPerTx: z.number(),
|
|
23
|
-
feePaymentMethod: z.
|
|
29
|
+
feePaymentMethod: z.literal('fee_juice'),
|
|
24
30
|
noStart: z.boolean(),
|
|
25
31
|
txMinedWaitSeconds: z.number(),
|
|
26
32
|
followChain: z.enum(BotFollowChain),
|
|
@@ -31,130 +37,145 @@ export const BotConfigSchema = z
|
|
|
31
37
|
daGasLimit: z.number().optional(),
|
|
32
38
|
contract: z.nativeEnum(SupportedTokenContracts),
|
|
33
39
|
maxConsecutiveErrors: z.number(),
|
|
34
|
-
stopWhenUnhealthy: z.boolean()
|
|
35
|
-
})
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
stopWhenUnhealthy: z.boolean()
|
|
41
|
+
}).transform((config)=>({
|
|
42
|
+
nodeUrl: undefined,
|
|
43
|
+
pxeUrl: undefined,
|
|
44
|
+
l1RpcUrls: undefined,
|
|
45
|
+
l1Mnemonic: undefined,
|
|
46
|
+
l1PrivateKey: undefined,
|
|
47
|
+
senderPrivateKey: undefined,
|
|
48
|
+
l2GasLimit: undefined,
|
|
49
|
+
daGasLimit: undefined,
|
|
50
|
+
...config
|
|
51
|
+
}));
|
|
43
52
|
export const botConfigMappings = {
|
|
44
53
|
nodeUrl: {
|
|
45
54
|
env: 'AZTEC_NODE_URL',
|
|
46
|
-
description: 'The URL to the Aztec node to check for tx pool status.'
|
|
55
|
+
description: 'The URL to the Aztec node to check for tx pool status.'
|
|
47
56
|
},
|
|
48
57
|
pxeUrl: {
|
|
49
58
|
env: 'BOT_PXE_URL',
|
|
50
|
-
description: 'URL to the PXE for sending txs, or undefined if an in-proc PXE is used.'
|
|
59
|
+
description: 'URL to the PXE for sending txs, or undefined if an in-proc PXE is used.'
|
|
60
|
+
},
|
|
61
|
+
l1RpcUrls: {
|
|
62
|
+
env: 'ETHEREUM_HOSTS',
|
|
63
|
+
description: 'URL of the ethereum host.',
|
|
64
|
+
parseEnv: (val)=>val.split(',').map((url)=>url.trim())
|
|
65
|
+
},
|
|
66
|
+
l1Mnemonic: {
|
|
67
|
+
env: 'BOT_L1_MNEMONIC',
|
|
68
|
+
description: 'The mnemonic for the account to bridge fee juice from L1.'
|
|
69
|
+
},
|
|
70
|
+
l1PrivateKey: {
|
|
71
|
+
env: 'BOT_L1_PRIVATE_KEY',
|
|
72
|
+
description: 'The private key for the account to bridge fee juice from L1.'
|
|
51
73
|
},
|
|
52
74
|
senderPrivateKey: {
|
|
53
75
|
env: 'BOT_PRIVATE_KEY',
|
|
54
76
|
description: 'Signing private key for the sender account.',
|
|
55
|
-
parseEnv: (val)
|
|
56
|
-
defaultValue: Fr.random(),
|
|
77
|
+
parseEnv: (val)=>val ? Fr.fromHexString(val) : undefined
|
|
57
78
|
},
|
|
58
79
|
recipientEncryptionSecret: {
|
|
59
80
|
env: 'BOT_RECIPIENT_ENCRYPTION_SECRET',
|
|
60
81
|
description: 'Encryption secret for a recipient account.',
|
|
61
|
-
parseEnv: (val)
|
|
62
|
-
defaultValue: Fr.fromHexString('0xcafecafe')
|
|
82
|
+
parseEnv: (val)=>Fr.fromHexString(val),
|
|
83
|
+
defaultValue: Fr.fromHexString('0xcafecafe')
|
|
63
84
|
},
|
|
64
85
|
tokenSalt: {
|
|
65
86
|
env: 'BOT_TOKEN_SALT',
|
|
66
87
|
description: 'Salt for the token contract deployment.',
|
|
67
|
-
parseEnv: (val)
|
|
68
|
-
defaultValue: Fr.fromHexString('1')
|
|
88
|
+
parseEnv: (val)=>Fr.fromHexString(val),
|
|
89
|
+
defaultValue: Fr.fromHexString('1')
|
|
69
90
|
},
|
|
70
91
|
txIntervalSeconds: {
|
|
71
92
|
env: 'BOT_TX_INTERVAL_SECONDS',
|
|
72
93
|
description: 'Every how many seconds should a new tx be sent.',
|
|
73
|
-
...numberConfigHelper(60)
|
|
94
|
+
...numberConfigHelper(60)
|
|
74
95
|
},
|
|
75
96
|
privateTransfersPerTx: {
|
|
76
97
|
env: 'BOT_PRIVATE_TRANSFERS_PER_TX',
|
|
77
98
|
description: 'How many private token transfers are executed per tx.',
|
|
78
|
-
...numberConfigHelper(1)
|
|
99
|
+
...numberConfigHelper(1)
|
|
79
100
|
},
|
|
80
101
|
publicTransfersPerTx: {
|
|
81
102
|
env: 'BOT_PUBLIC_TRANSFERS_PER_TX',
|
|
82
103
|
description: 'How many public token transfers are executed per tx.',
|
|
83
|
-
...numberConfigHelper(1)
|
|
104
|
+
...numberConfigHelper(1)
|
|
84
105
|
},
|
|
85
106
|
feePaymentMethod: {
|
|
86
107
|
env: 'BOT_FEE_PAYMENT_METHOD',
|
|
87
|
-
description: 'How to handle fee payments. (Options: fee_juice
|
|
88
|
-
parseEnv: val
|
|
89
|
-
defaultValue: '
|
|
108
|
+
description: 'How to handle fee payments. (Options: fee_juice)',
|
|
109
|
+
parseEnv: (val)=>val || undefined,
|
|
110
|
+
defaultValue: 'fee_juice'
|
|
90
111
|
},
|
|
91
112
|
noStart: {
|
|
92
113
|
env: 'BOT_NO_START',
|
|
93
114
|
description: 'True to not automatically setup or start the bot on initialization.',
|
|
94
|
-
...booleanConfigHelper()
|
|
115
|
+
...booleanConfigHelper()
|
|
95
116
|
},
|
|
96
117
|
txMinedWaitSeconds: {
|
|
97
118
|
env: 'BOT_TX_MINED_WAIT_SECONDS',
|
|
98
119
|
description: 'How long to wait for a tx to be mined before reporting an error.',
|
|
99
|
-
...numberConfigHelper(180)
|
|
120
|
+
...numberConfigHelper(180)
|
|
100
121
|
},
|
|
101
122
|
followChain: {
|
|
102
123
|
env: 'BOT_FOLLOW_CHAIN',
|
|
103
124
|
description: 'Which chain the bot follows',
|
|
104
125
|
defaultValue: 'NONE',
|
|
105
|
-
parseEnv(val) {
|
|
126
|
+
parseEnv (val) {
|
|
106
127
|
if (!BotFollowChain.includes(val.toUpperCase())) {
|
|
107
128
|
throw new Error(`Invalid value for BOT_FOLLOW_CHAIN: ${val}`);
|
|
108
129
|
}
|
|
109
130
|
return val;
|
|
110
|
-
}
|
|
131
|
+
}
|
|
111
132
|
},
|
|
112
133
|
maxPendingTxs: {
|
|
113
134
|
env: 'BOT_MAX_PENDING_TXS',
|
|
114
135
|
description: "Do not send a tx if the node's tx pool already has this many pending txs.",
|
|
115
|
-
...numberConfigHelper(128)
|
|
136
|
+
...numberConfigHelper(128)
|
|
116
137
|
},
|
|
117
138
|
flushSetupTransactions: {
|
|
118
139
|
env: 'BOT_FLUSH_SETUP_TRANSACTIONS',
|
|
119
140
|
description: 'Make a request for the sequencer to build a block after each setup transaction.',
|
|
120
|
-
...booleanConfigHelper(false)
|
|
141
|
+
...booleanConfigHelper(false)
|
|
121
142
|
},
|
|
122
143
|
skipPublicSimulation: {
|
|
123
144
|
env: 'BOT_SKIP_PUBLIC_SIMULATION',
|
|
124
145
|
description: 'Whether to skip public simulation of txs before sending them.',
|
|
125
|
-
...booleanConfigHelper(false)
|
|
146
|
+
...booleanConfigHelper(false)
|
|
126
147
|
},
|
|
127
148
|
l2GasLimit: {
|
|
128
149
|
env: 'BOT_L2_GAS_LIMIT',
|
|
129
150
|
description: 'L2 gas limit for the tx (empty to have the bot trigger an estimate gas).',
|
|
130
|
-
...optionalNumberConfigHelper()
|
|
151
|
+
...optionalNumberConfigHelper()
|
|
131
152
|
},
|
|
132
153
|
daGasLimit: {
|
|
133
154
|
env: 'BOT_DA_GAS_LIMIT',
|
|
134
155
|
description: 'DA gas limit for the tx (empty to have the bot trigger an estimate gas).',
|
|
135
|
-
...optionalNumberConfigHelper()
|
|
156
|
+
...optionalNumberConfigHelper()
|
|
136
157
|
},
|
|
137
158
|
contract: {
|
|
138
159
|
env: 'BOT_TOKEN_CONTRACT',
|
|
139
160
|
description: 'Token contract to use',
|
|
140
|
-
defaultValue:
|
|
141
|
-
parseEnv(val) {
|
|
161
|
+
defaultValue: "TokenContract",
|
|
162
|
+
parseEnv (val) {
|
|
142
163
|
if (!Object.values(SupportedTokenContracts).includes(val)) {
|
|
143
164
|
throw new Error(`Invalid value for BOT_TOKEN_CONTRACT: ${val}. Valid values: ${Object.values(SupportedTokenContracts).join(', ')}`);
|
|
144
165
|
}
|
|
145
166
|
return val;
|
|
146
|
-
}
|
|
167
|
+
}
|
|
147
168
|
},
|
|
148
169
|
maxConsecutiveErrors: {
|
|
149
170
|
env: 'BOT_MAX_CONSECUTIVE_ERRORS',
|
|
150
171
|
description: 'The maximum number of consecutive errors before the bot shuts down',
|
|
151
|
-
...numberConfigHelper(0)
|
|
172
|
+
...numberConfigHelper(0)
|
|
152
173
|
},
|
|
153
174
|
stopWhenUnhealthy: {
|
|
154
175
|
env: 'BOT_STOP_WHEN_UNHEALTHY',
|
|
155
176
|
description: 'Stops the bot if service becomes unhealthy',
|
|
156
|
-
...booleanConfigHelper(false)
|
|
157
|
-
}
|
|
177
|
+
...booleanConfigHelper(false)
|
|
178
|
+
}
|
|
158
179
|
};
|
|
159
180
|
export function getBotConfigFromEnv() {
|
|
160
181
|
return getConfigFromMappings(botConfigMappings);
|
|
@@ -165,7 +186,6 @@ export function getBotDefaultConfig() {
|
|
|
165
186
|
export function getVersions() {
|
|
166
187
|
return {
|
|
167
188
|
l2ProtocolContractsTreeRoot: protocolContractTreeRoot.toString(),
|
|
168
|
-
l2CircuitsVkTreeRoot: getVKTreeRoot().toString()
|
|
189
|
+
l2CircuitsVkTreeRoot: getVKTreeRoot().toString()
|
|
169
190
|
};
|
|
170
191
|
}
|
|
171
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEMsT0FBTyxFQUVMLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQiwwQkFBMEIsR0FDM0IsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQWUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXJFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsTUFBTSxjQUFjLEdBQUcsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBVSxDQUFDO0FBRzlELE1BQU0sQ0FBTixJQUFZLHVCQUdYO0FBSEQsV0FBWSx1QkFBdUI7SUFDakMsMERBQStCLENBQUE7SUFDL0IsZ0ZBQXFELENBQUE7QUFDdkQsQ0FBQyxFQUhXLHVCQUF1QixLQUF2Qix1QkFBdUIsUUFHbEM7QUE2Q0QsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUM7S0FDN0IsTUFBTSxDQUFDO0lBQ04sT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDOUIsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0IsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLEVBQUU7SUFDNUIseUJBQXlCLEVBQUUsT0FBTyxDQUFDLEVBQUU7SUFDckMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUFFO0lBQ3JCLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDN0IscUJBQXFCLEVB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
|
package/dest/factory.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type AztecNode, type PXE } from '@aztec/
|
|
1
|
+
import { AztecAddress, type AztecNode, type PXE } from '@aztec/aztec.js';
|
|
2
2
|
import { EasyPrivateTokenContract } from '@aztec/noir-contracts.js/EasyPrivateToken';
|
|
3
3
|
import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
4
4
|
import { type BotConfig } from './config.js';
|
|
@@ -19,13 +19,15 @@ export declare class BotFactory {
|
|
|
19
19
|
wallet: import("@aztec/aztec.js").AccountWalletWithSecretKey;
|
|
20
20
|
token: TokenContract | EasyPrivateTokenContract;
|
|
21
21
|
pxe: PXE;
|
|
22
|
-
recipient:
|
|
22
|
+
recipient: AztecAddress;
|
|
23
23
|
}>;
|
|
24
24
|
/**
|
|
25
25
|
* Checks if the sender account contract is initialized, and initializes it if necessary.
|
|
26
26
|
* @returns The sender wallet.
|
|
27
27
|
*/
|
|
28
28
|
private setupAccount;
|
|
29
|
+
private setupAccountWithPrivateKey;
|
|
30
|
+
private setupTestAccount;
|
|
29
31
|
/**
|
|
30
32
|
* Registers the recipient for txs in the pxe.
|
|
31
33
|
*/
|
|
@@ -41,5 +43,8 @@ export declare class BotFactory {
|
|
|
41
43
|
* @param token - Token contract.
|
|
42
44
|
*/
|
|
43
45
|
private mintTokens;
|
|
46
|
+
private bridgeL1FeeJuice;
|
|
47
|
+
private advanceL2Block;
|
|
48
|
+
private tryFlushTxs;
|
|
44
49
|
}
|
|
45
50
|
//# sourceMappingURL=factory.d.ts.map
|
package/dest/factory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,YAAY,EACZ,KAAK,SAAS,EAMd,KAAK,GAAG,EAIT,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAK/D,OAAO,EAAE,KAAK,SAAS,EAAwC,MAAM,aAAa,CAAC;AAMnF,qBAAa,UAAU;IAKT,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJnC,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,IAAI,CAAC,CAAY;IACzB,OAAO,CAAC,GAAG,CAAuB;gBAEL,MAAM,EAAE,SAAS,EAAE,YAAY,GAAE;QAAE,GAAG,CAAC,EAAE,GAAG,CAAC;QAAC,IAAI,CAAC,EAAE,SAAS,CAAA;KAAO;IAwBlG;;;OAGG;IACU,KAAK;;;;;;IAQlB;;;OAGG;YACW,YAAY;YAQZ,0BAA0B;YA4B1B,gBAAgB;IAc9B;;OAEG;YACW,iBAAiB;IAK/B;;;;OAIG;YACW,UAAU;IA8BxB;;;OAGG;YACW,UAAU;YAuCV,gBAAgB;YA+BhB,cAAc;YAMd,WAAW;CAU1B"}
|