@aztec/bot 0.0.1-commit.03f7ef2 → 0.0.1-commit.08c5969dc

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/factory.js CHANGED
@@ -1,12 +1,12 @@
1
- import { SchnorrAccountContract } from '@aztec/accounts/schnorr';
2
1
  import { getInitialTestAccountsData } from '@aztec/accounts/testing';
3
2
  import { AztecAddress } from '@aztec/aztec.js/addresses';
4
- import { BatchCall } from '@aztec/aztec.js/contracts';
3
+ import { BatchCall, NO_WAIT } from '@aztec/aztec.js/contracts';
5
4
  import { L1FeeJuicePortalManager } from '@aztec/aztec.js/ethereum';
6
5
  import { FeeJuicePaymentMethodWithClaim } from '@aztec/aztec.js/fee';
7
6
  import { deriveKeys } from '@aztec/aztec.js/keys';
8
7
  import { createLogger } from '@aztec/aztec.js/log';
9
8
  import { waitForL1ToL2MessageReady } from '@aztec/aztec.js/messaging';
9
+ import { waitForTx } from '@aztec/aztec.js/node';
10
10
  import { createEthereumChain } from '@aztec/ethereum/chain';
11
11
  import { createExtendedL1Client } from '@aztec/ethereum/client';
12
12
  import { Fr } from '@aztec/foundation/curves/bn254';
@@ -39,8 +39,8 @@ export class BotFactory {
39
39
  * Initializes a new bot by setting up the sender account, registering the recipient,
40
40
  * deploying the token contract, and minting tokens if necessary.
41
41
  */ async setup() {
42
- const recipient = (await this.wallet.createAccount()).address;
43
42
  const defaultAccountAddress = await this.setupAccount();
43
+ const recipient = (await this.wallet.createSchnorrAccount(Fr.random(), Fr.random())).address;
44
44
  const token = await this.setupToken(defaultAccountAddress);
45
45
  await this.mintTokens(token, defaultAccountAddress);
46
46
  return {
@@ -84,14 +84,9 @@ export class BotFactory {
84
84
  async setupAccountWithPrivateKey(secret) {
85
85
  const salt = this.config.senderSalt ?? Fr.ONE;
86
86
  const signingKey = deriveSigningKey(secret);
87
- const accountData = {
88
- secret,
89
- salt,
90
- contract: new SchnorrAccountContract(signingKey)
91
- };
92
- const accountManager = await this.wallet.createAccount(accountData);
93
- const isInit = (await this.wallet.getContractMetadata(accountManager.address)).isContractInitialized;
94
- if (isInit) {
87
+ const accountManager = await this.wallet.createSchnorrAccount(secret, salt, signingKey);
88
+ const metadata = await this.wallet.getContractMetadata(accountManager.address);
89
+ if (metadata.isContractInitialized) {
95
90
  this.log.info(`Account at ${accountManager.address.toString()} already initialized`);
96
91
  const timer = new Timer();
97
92
  const address = accountManager.address;
@@ -104,22 +99,24 @@ export class BotFactory {
104
99
  const claim = await this.getOrCreateBridgeClaim(address);
105
100
  const paymentMethod = new FeeJuicePaymentMethodWithClaim(accountManager.address, claim);
106
101
  const deployMethod = await accountManager.getDeployMethod();
107
- const maxFeesPerGas = (await this.aztecNode.getCurrentBaseFees()).mul(1 + this.config.baseFeePadding);
102
+ const maxFeesPerGas = (await this.aztecNode.getCurrentMinFees()).mul(1 + this.config.minFeePadding);
108
103
  const gasSettings = GasSettings.default({
109
104
  maxFeesPerGas
110
105
  });
111
- const sentTx = deployMethod.send({
112
- from: AztecAddress.ZERO,
113
- fee: {
114
- gasSettings,
115
- paymentMethod
116
- }
117
- });
118
- const txHash = await sentTx.getTxHash();
119
- this.log.info(`Sent tx for account deployment with hash ${txHash.toString()}`);
120
- await this.withNoMinTxsPerBlock(()=>sentTx.wait({
106
+ await this.withNoMinTxsPerBlock(async ()=>{
107
+ const txHash = await deployMethod.send({
108
+ from: AztecAddress.ZERO,
109
+ fee: {
110
+ gasSettings,
111
+ paymentMethod
112
+ },
113
+ wait: NO_WAIT
114
+ });
115
+ this.log.info(`Sent tx for account deployment with hash ${txHash.toString()}`);
116
+ return waitForTx(this.aztecNode, txHash, {
121
117
  timeout: this.config.txMinedWaitSeconds
122
- }));
118
+ });
119
+ });
123
120
  this.log.info(`Account deployed at ${address}`);
124
121
  // Clean up the consumed bridge claim
125
122
  await this.store.deleteBridgeClaim(address);
@@ -128,12 +125,7 @@ export class BotFactory {
128
125
  }
129
126
  async setupTestAccount() {
130
127
  const [initialAccountData] = await getInitialTestAccountsData();
131
- const accountData = {
132
- secret: initialAccountData.secret,
133
- salt: initialAccountData.salt,
134
- contract: new SchnorrAccountContract(initialAccountData.signingKey)
135
- };
136
- const accountManager = await this.wallet.createAccount(accountData);
128
+ const accountManager = await this.wallet.createSchnorrAccount(initialAccountData.secret, initialAccountData.salt, initialAccountData.signingKey);
137
129
  return accountManager.address;
138
130
  }
139
131
  /**
@@ -148,8 +140,11 @@ export class BotFactory {
148
140
  contractAddressSalt: this.config.tokenSalt,
149
141
  universalDeploy: true
150
142
  };
143
+ let token;
151
144
  if (this.config.contract === SupportedTokenContracts.TokenContract) {
152
145
  deploy = TokenContract.deploy(this.wallet, sender, 'BotToken', 'BOT', 18);
146
+ tokenInstance = await deploy.getInstance(deployOpts);
147
+ token = TokenContract.at(tokenInstance.address, this.wallet);
153
148
  } else if (this.config.contract === SupportedTokenContracts.PrivateTokenContract) {
154
149
  // Generate keys for the contract since PrivateToken uses SinglePrivateMutable which requires keys
155
150
  const tokenSecretKey = Fr.random();
@@ -160,36 +155,45 @@ export class BotFactory {
160
155
  deployOpts.skipInitialization = false;
161
156
  // Register the contract with the secret key before deployment
162
157
  tokenInstance = await deploy.getInstance(deployOpts);
158
+ token = PrivateTokenContract.at(tokenInstance.address, this.wallet);
163
159
  await this.wallet.registerContract(tokenInstance, PrivateTokenContract.artifact, tokenSecretKey);
164
160
  } else {
165
161
  throw new Error(`Unsupported token contract type: ${this.config.contract}`);
166
162
  }
167
163
  const address = tokenInstance?.address ?? (await deploy.getInstance(deployOpts)).address;
168
- if ((await this.wallet.getContractMetadata(address)).isContractPublished) {
164
+ const metadata = await this.wallet.getContractMetadata(address);
165
+ if (metadata.isContractPublished) {
169
166
  this.log.info(`Token at ${address.toString()} already deployed`);
170
- return deploy.register();
167
+ await deploy.register();
171
168
  } else {
172
169
  this.log.info(`Deploying token contract at ${address.toString()}`);
173
- const sentTx = deploy.send(deployOpts);
174
- const txHash = await sentTx.getTxHash();
170
+ const txHash = await deploy.send({
171
+ ...deployOpts,
172
+ wait: NO_WAIT
173
+ });
175
174
  this.log.info(`Sent tx for token setup with hash ${txHash.toString()}`);
176
- return this.withNoMinTxsPerBlock(()=>sentTx.deployed({
175
+ await this.withNoMinTxsPerBlock(async ()=>{
176
+ await waitForTx(this.aztecNode, txHash, {
177
177
  timeout: this.config.txMinedWaitSeconds
178
- }));
178
+ });
179
+ return token;
180
+ });
179
181
  }
182
+ return token;
180
183
  }
181
184
  /**
182
185
  * Checks if the token contract is deployed and deploys it if necessary.
183
186
  * @param wallet - Wallet to deploy the token contract from.
184
187
  * @returns The TokenContract instance.
185
- */ setupTokenContract(deployer, contractAddressSalt, name, ticker, decimals = 18) {
188
+ */ async setupTokenContract(deployer, contractAddressSalt, name, ticker, decimals = 18) {
186
189
  const deployOpts = {
187
190
  from: deployer,
188
191
  contractAddressSalt,
189
192
  universalDeploy: true
190
193
  };
191
194
  const deploy = TokenContract.deploy(this.wallet, deployer, name, ticker, decimals);
192
- return this.registerOrDeployContract('Token - ' + name, deploy, deployOpts);
195
+ const instance = await this.registerOrDeployContract('Token - ' + name, deploy, deployOpts);
196
+ return TokenContract.at(instance.address, this.wallet);
193
197
  }
194
198
  async setupAmmContract(deployer, contractAddressSalt, token0, token1, lpToken) {
195
199
  const deployOpts = {
@@ -198,15 +202,16 @@ export class BotFactory {
198
202
  universalDeploy: true
199
203
  };
200
204
  const deploy = AMMContract.deploy(this.wallet, token0.address, token1.address, lpToken.address);
201
- const amm = await this.registerOrDeployContract('AMM', deploy, deployOpts);
205
+ const instance = await this.registerOrDeployContract('AMM', deploy, deployOpts);
206
+ const amm = AMMContract.at(instance.address, this.wallet);
202
207
  this.log.info(`AMM deployed at ${amm.address}`);
203
- const minterTx = lpToken.methods.set_minter(amm.address, true).send({
204
- from: deployer
205
- });
206
- this.log.info(`Set LP token minter to AMM txHash=${(await minterTx.getTxHash()).toString()}`);
207
- await minterTx.wait({
208
- timeout: this.config.txMinedWaitSeconds
208
+ const minterReceipt = await lpToken.methods.set_minter(amm.address, true).send({
209
+ from: deployer,
210
+ wait: {
211
+ timeout: this.config.txMinedWaitSeconds
212
+ }
209
213
  });
214
+ this.log.info(`Set LP token minter to AMM txHash=${minterReceipt.txHash.toString()}`);
210
215
  this.log.info(`Liquidity token initialized`);
211
216
  return amm;
212
217
  }
@@ -239,45 +244,52 @@ export class BotFactory {
239
244
  caller: amm.address,
240
245
  call: await token1.methods.transfer_to_public_and_prepare_private_balance_increase(liquidityProvider, amm.address, amount1Max, authwitNonce).getFunctionCall()
241
246
  });
242
- const mintTx = new BatchCall(this.wallet, [
247
+ const mintReceipt = await new BatchCall(this.wallet, [
243
248
  token0.methods.mint_to_private(liquidityProvider, MINT_BALANCE),
244
249
  token1.methods.mint_to_private(liquidityProvider, MINT_BALANCE)
245
250
  ]).send({
246
- from: liquidityProvider
247
- });
248
- this.log.info(`Sent mint tx: ${(await mintTx.getTxHash()).toString()}`);
249
- await mintTx.wait({
250
- timeout: this.config.txMinedWaitSeconds
251
+ from: liquidityProvider,
252
+ wait: {
253
+ timeout: this.config.txMinedWaitSeconds
254
+ }
251
255
  });
252
- const addLiquidityTx = amm.methods.add_liquidity(amount0Max, amount1Max, amount0Min, amount1Min, authwitNonce).send({
256
+ this.log.info(`Sent mint tx: ${mintReceipt.txHash.toString()}`);
257
+ const addLiquidityReceipt = await amm.methods.add_liquidity(amount0Max, amount1Max, amount0Min, amount1Min, authwitNonce).send({
253
258
  from: liquidityProvider,
254
259
  authWitnesses: [
255
260
  token0Authwit,
256
261
  token1Authwit
257
- ]
258
- });
259
- this.log.info(`Sent tx to add liquidity to the AMM: ${(await addLiquidityTx.getTxHash()).toString()}`);
260
- await addLiquidityTx.wait({
261
- timeout: this.config.txMinedWaitSeconds
262
+ ],
263
+ wait: {
264
+ timeout: this.config.txMinedWaitSeconds
265
+ }
262
266
  });
267
+ this.log.info(`Sent tx to add liquidity to the AMM: ${addLiquidityReceipt.txHash.toString()}`);
263
268
  this.log.info(`Liquidity added`);
264
269
  const [newT0Bal, newT1Bal, newLPBal] = await getPrivateBalances();
265
270
  this.log.info(`Updated private balances of ${defaultAccountAddress} after minting and funding AMM: token0=${newT0Bal}, token1=${newT1Bal}, lp=${newLPBal}`);
266
271
  }
267
272
  async registerOrDeployContract(name, deploy, deployOpts) {
268
- const address = (await deploy.getInstance(deployOpts)).address;
269
- if ((await this.wallet.getContractMetadata(address)).isContractPublished) {
273
+ const instance = await deploy.getInstance(deployOpts);
274
+ const address = instance.address;
275
+ const metadata = await this.wallet.getContractMetadata(address);
276
+ if (metadata.isContractPublished) {
270
277
  this.log.info(`Contract ${name} at ${address.toString()} already deployed`);
271
- return deploy.register();
278
+ await deploy.register();
272
279
  } else {
273
280
  this.log.info(`Deploying contract ${name} at ${address.toString()}`);
274
- const sentTx = deploy.send(deployOpts);
275
- const txHash = await sentTx.getTxHash();
276
- this.log.info(`Sent contract ${name} setup tx with hash ${txHash.toString()}`);
277
- return this.withNoMinTxsPerBlock(()=>sentTx.deployed({
281
+ await this.withNoMinTxsPerBlock(async ()=>{
282
+ const txHash = await deploy.send({
283
+ ...deployOpts,
284
+ wait: NO_WAIT
285
+ });
286
+ this.log.info(`Sent contract ${name} setup tx with hash ${txHash.toString()}`);
287
+ return waitForTx(this.aztecNode, txHash, {
278
288
  timeout: this.config.txMinedWaitSeconds
279
- }));
289
+ });
290
+ });
280
291
  }
292
+ return instance;
281
293
  }
282
294
  /**
283
295
  * Mints private and public tokens for the sender if their balance is below the minimum.
@@ -304,14 +316,16 @@ export class BotFactory {
304
316
  this.log.info(`Skipping minting as ${minter.toString()} has enough tokens`);
305
317
  return;
306
318
  }
307
- const sentTx = new BatchCall(token.wallet, calls).send({
308
- from: minter
309
- });
310
- const txHash = await sentTx.getTxHash();
311
- this.log.info(`Sent token mint tx with hash ${txHash.toString()}`);
312
- await this.withNoMinTxsPerBlock(()=>sentTx.wait({
319
+ await this.withNoMinTxsPerBlock(async ()=>{
320
+ const txHash = await new BatchCall(token.wallet, calls).send({
321
+ from: minter,
322
+ wait: NO_WAIT
323
+ });
324
+ this.log.info(`Sent token mint tx with hash ${txHash.toString()}`);
325
+ return waitForTx(this.aztecNode, txHash, {
313
326
  timeout: this.config.txMinedWaitSeconds
314
- }));
327
+ });
328
+ });
315
329
  }
316
330
  /**
317
331
  * Gets or creates a bridge claim for the recipient.
package/dest/runner.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import type { AztecNode } from '@aztec/aztec.js/node';
2
2
  import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
3
3
  import { type TelemetryClient, type Traceable, type Tracer } from '@aztec/telemetry-client';
4
- import type { TestWallet } from '@aztec/test-wallet/server';
4
+ import type { EmbeddedWallet } from '@aztec/wallets/embedded';
5
5
  import type { BotConfig } from './config.js';
6
6
  import type { BotInfo, BotRunnerApi } from './interface.js';
7
7
  import { BotStore } from './store/index.js';
@@ -19,7 +19,7 @@ export declare class BotRunner implements BotRunnerApi, Traceable {
19
19
  private consecutiveErrors;
20
20
  private healthy;
21
21
  readonly tracer: Tracer;
22
- constructor(config: BotConfig, wallet: TestWallet, aztecNode: AztecNode, telemetry: TelemetryClient, aztecNodeAdmin: AztecNodeAdmin | undefined, store: BotStore);
22
+ constructor(config: BotConfig, wallet: EmbeddedWallet, aztecNode: AztecNode, telemetry: TelemetryClient, aztecNodeAdmin: AztecNodeAdmin | undefined, store: BotStore);
23
23
  /** Initializes the bot if needed. Blocks until the bot setup is finished. */
24
24
  setup(): Promise<void>;
25
25
  private doSetup;
@@ -50,4 +50,4 @@ export declare class BotRunner implements BotRunnerApi, Traceable {
50
50
  /** Returns the bot sender address. */
51
51
  getInfo(): Promise<BotInfo>;
52
52
  }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVubmVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcnVubmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR3RELE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBRSxLQUFLLFNBQVMsRUFBRSxLQUFLLE1BQU0sRUFBYSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZHLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSzVELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTVDLHFCQUFhLFNBQVUsWUFBVyxZQUFZLEVBQUUsU0FBUzs7SUFVckQsT0FBTyxDQUFDLE1BQU07SUFDZCxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU07SUFDdkIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTO0lBQzFCLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUztJQUMxQixPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWM7SUFDL0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO0lBZHhCLE9BQU8sQ0FBQyxHQUFHLENBQXVCO0lBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBbUI7SUFDL0IsT0FBTyxDQUFDLGNBQWMsQ0FBaUI7SUFDdkMsT0FBTyxDQUFDLGlCQUFpQixDQUFLO0lBQzlCLE9BQU8sQ0FBQyxPQUFPLENBQVE7SUFFdkIsU0FBZ0IsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUUvQixZQUNVLE1BQU0sRUFBRSxTQUFTLEVBQ1IsTUFBTSxFQUFFLFVBQVUsRUFDbEIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsU0FBUyxFQUFFLGVBQWUsRUFDMUIsY0FBYyxFQUFFLGNBQWMsR0FBRyxTQUFTLEVBQzFDLEtBQUssRUFBRSxRQUFRLEVBS2pDO0lBRUQsNkVBQTZFO0lBQ2hFLEtBQUssa0JBSWpCO1lBR2EsT0FBTztJQU1yQjs7O09BR0c7SUFDVSxLQUFLLGtCQU1qQjtJQUVEOztPQUVHO0lBQ1UsSUFBSSxrQkFPaEI7SUFFTSxTQUFTLFlBRWY7SUFFRCwwQ0FBMEM7SUFDbkMsU0FBUyxZQUVmO0lBRUQ7OztPQUdHO0lBQ1UsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLGlCQWFwQztJQUVEOzs7T0FHRztJQUNVLEdBQUcsa0JBc0JmO0lBRUQscURBQXFEO0lBQzlDLFNBQVMsdUJBR2Y7SUFFRCxzQ0FBc0M7SUFDekIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FNdkM7Q0F1Q0YifQ==
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVubmVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcnVubmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR3RELE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBRSxLQUFLLFNBQVMsRUFBRSxLQUFLLE1BQU0sRUFBYSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZHLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSzlELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTVDLHFCQUFhLFNBQVUsWUFBVyxZQUFZLEVBQUUsU0FBUzs7SUFVckQsT0FBTyxDQUFDLE1BQU07SUFDZCxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU07SUFDdkIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTO0lBQzFCLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUztJQUMxQixPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWM7SUFDL0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO0lBZHhCLE9BQU8sQ0FBQyxHQUFHLENBQXVCO0lBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBbUI7SUFDL0IsT0FBTyxDQUFDLGNBQWMsQ0FBaUI7SUFDdkMsT0FBTyxDQUFDLGlCQUFpQixDQUFLO0lBQzlCLE9BQU8sQ0FBQyxPQUFPLENBQVE7SUFFdkIsU0FBZ0IsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUUvQixZQUNVLE1BQU0sRUFBRSxTQUFTLEVBQ1IsTUFBTSxFQUFFLGNBQWMsRUFDdEIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsU0FBUyxFQUFFLGVBQWUsRUFDMUIsY0FBYyxFQUFFLGNBQWMsR0FBRyxTQUFTLEVBQzFDLEtBQUssRUFBRSxRQUFRLEVBS2pDO0lBRUQsNkVBQTZFO0lBQ2hFLEtBQUssa0JBSWpCO1lBR2EsT0FBTztJQU1yQjs7O09BR0c7SUFDVSxLQUFLLGtCQU1qQjtJQUVEOztPQUVHO0lBQ1UsSUFBSSxrQkFPaEI7SUFFTSxTQUFTLFlBRWY7SUFFRCwwQ0FBMEM7SUFDbkMsU0FBUyxZQUVmO0lBRUQ7OztPQUdHO0lBQ1UsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLGlCQWFwQztJQUVEOzs7T0FHRztJQUNVLEdBQUcsa0JBc0JmO0lBRUQscURBQXFEO0lBQzlDLFNBQVMsdUJBR2Y7SUFFRCxzQ0FBc0M7SUFDekIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FNdkM7Q0F1Q0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,SAAS,EAAE,KAAK,MAAM,EAAa,MAAM,yBAAyB,CAAC;AACvG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAK5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,qBAAa,SAAU,YAAW,YAAY,EAAE,SAAS;;IAUrD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAdxB,OAAO,CAAC,GAAG,CAAuB;IAClC,OAAO,CAAC,GAAG,CAAC,CAAmB;IAC/B,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,OAAO,CAAQ;IAEvB,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,YACU,MAAM,EAAE,SAAS,EACR,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,eAAe,EAC1B,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,KAAK,EAAE,QAAQ,EAKjC;IAED,6EAA6E;IAChE,KAAK,kBAIjB;YAGa,OAAO;IAMrB;;;OAGG;IACU,KAAK,kBAMjB;IAED;;OAEG;IACU,IAAI,kBAOhB;IAEM,SAAS,YAEf;IAED,0CAA0C;IACnC,SAAS,YAEf;IAED;;;OAGG;IACU,MAAM,CAAC,MAAM,EAAE,SAAS,iBAapC;IAED;;;OAGG;IACU,GAAG,kBAsBf;IAED,qDAAqD;IAC9C,SAAS,uBAGf;IAED,sCAAsC;IACzB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAMvC;CAuCF"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,SAAS,EAAE,KAAK,MAAM,EAAa,MAAM,yBAAyB,CAAC;AACvG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAK9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,qBAAa,SAAU,YAAW,YAAY,EAAE,SAAS;;IAUrD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAdxB,OAAO,CAAC,GAAG,CAAuB;IAClC,OAAO,CAAC,GAAG,CAAC,CAAmB;IAC/B,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,OAAO,CAAQ;IAEvB,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,YACU,MAAM,EAAE,SAAS,EACR,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,eAAe,EAC1B,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,KAAK,EAAE,QAAQ,EAKjC;IAED,6EAA6E;IAChE,KAAK,kBAIjB;YAGa,OAAO;IAMrB;;;OAGG;IACU,KAAK,kBAMjB;IAED;;OAEG;IACU,IAAI,kBAOhB;IAEM,SAAS,YAEf;IAED,0CAA0C;IACnC,SAAS,YAEf;IAED;;;OAGG;IACU,MAAM,CAAC,MAAM,EAAE,SAAS,iBAapC;IAED;;;OAGG;IACU,GAAG,kBAsBf;IAED,qDAAqD;IAC9C,SAAS,uBAGf;IAED,sCAAsC;IACzB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAMvC;CAuCF"}