@aztec/cli 0.1.0-alpha25 → 0.1.0-alpha28

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/README.md CHANGED
@@ -1,44 +1,44 @@
1
1
  # Aztec CLI Documentation
2
2
 
3
- The Aztec CLI `azti` is a command-line interface (CLI) tool for interacting with Aztec. It provides various commands for deploying contracts, creating accounts, interacting with contracts, and retrieving blockchain data.
3
+ The Aztec CLI `aztec-cli` is a command-line interface (CLI) tool for interacting with Aztec. It provides various commands for deploying contracts, creating accounts, interacting with contracts, and retrieving blockchain data.
4
4
 
5
5
  ## Installation
6
6
 
7
- To use `azti`, you need to have Node.js installed on your system. Follow these steps to install and set up the CLI tool:
7
+ To use `aztec-cli`, you need to have Node.js installed on your system. Follow these steps to install and set up the CLI tool:
8
8
 
9
9
  1. Install Node.js: Visit the official Node.js website (https://nodejs.org) and download the installer for your operating system. Follow the installation instructions to install Node.js.
10
10
 
11
- 2. Install `azti` package: Open a terminal or command prompt and run the following command to install `azti` globally on your system:
11
+ 2. Install `aztec-cli` package: Open a terminal or command prompt and run the following command to install `aztec-cli` globally on your system:
12
12
 
13
13
  ```shell
14
14
  npm install -g @aztec/cli
15
15
  ```
16
16
 
17
- This will install the `azti` globally, making it accessible from any location in your terminal.
17
+ This will install the `aztec-cli` globally, making it accessible from any location in your terminal.
18
18
 
19
- 3. Verify the installation: After the installation is complete, run the following command to verify that `azti` is installed correctly:
19
+ 3. Verify the installation: After the installation is complete, run the following command to verify that `aztec-cli` is installed correctly:
20
20
 
21
21
  ```shell
22
- azti --version
22
+ aztec-cli --version
23
23
  ```
24
24
 
25
- This command will display the version number of `azti` if the installation was successful.
25
+ This command will display the version number of `aztec-cli` if the installation was successful.
26
26
 
27
27
  ## Usage
28
28
 
29
- To use `azti`, open a terminal or command prompt and run the `azti` command followed by the desired command and its options.
29
+ To use `aztec-cli`, open a terminal or command prompt and run the `aztec-cli` command followed by the desired command and its options.
30
30
 
31
31
  Here's the basic syntax for running a command:
32
32
 
33
33
  ```shell
34
- azti <command> [options]
34
+ aztec-cli <command> [options]
35
35
  ```
36
36
 
37
37
  Replace `<command>` with the actual command you want to execute and `[options]` with any optional flags or parameters required by the command.
38
38
 
39
39
  ### Environment Variables
40
40
 
41
- Some options can be set globally as environment variables to avoid having to re-enter them every time you call `azti.`
41
+ Some options can be set globally as environment variables to avoid having to re-enter them every time you call `aztec-cli.`
42
42
  These options are:
43
43
 
44
44
  - `PRIVATE_KEY` -> `-k, --private-key` for all commands that require a private key.
@@ -51,7 +51,7 @@ So if for example you are running your Aztec RPC server remotely you can do:
51
51
 
52
52
  ```shell
53
53
  export AZTEC_RPC_HOST=http://external.site/rpc:8080
54
- azti deploy my_contract.json
54
+ aztec-cli deploy my_contract.json
55
55
  ```
56
56
 
57
57
  And this will send the request to `http://external.site/rpc:8080`.
@@ -60,7 +60,7 @@ And this will send the request to `http://external.site/rpc:8080`.
60
60
 
61
61
  ## Available Commands
62
62
 
63
- `azti` provides the following commands for interacting with Aztec:
63
+ `aztec-cli` provides the following commands for interacting with Aztec:
64
64
 
65
65
  ### deploy-l1-contracts
66
66
 
@@ -69,7 +69,7 @@ Deploys all necessary Ethereum contracts for Aztec.
69
69
  Syntax:
70
70
 
71
71
  ```shell
72
- azti deploy-l1-contracts [rpcUrl] [options]
72
+ aztec-cli deploy-l1-contracts [rpcUrl] [options]
73
73
  ```
74
74
 
75
75
  - `rpcUrl` (optional): URL of the Ethereum host. Chain identifiers `localhost` and `testnet` can be used. Default: `http://localhost:8545`.
@@ -85,7 +85,7 @@ This command deploys all the necessary Ethereum contracts required for Aztec. It
85
85
  Example usage:
86
86
 
87
87
  ```shell
88
- azti deploy-l1-contracts
88
+ aztec-cli deploy-l1-contracts
89
89
  ```
90
90
 
91
91
  ### create-private-key
@@ -95,7 +95,7 @@ Generates a 32-byte private key.
95
95
  Syntax:
96
96
 
97
97
  ```shell
98
- azti create-private-key [options]
98
+ aztec-cli create-private-key [options]
99
99
  ```
100
100
 
101
101
  Options:
@@ -107,7 +107,7 @@ This command generates a random 32-byte private key or derives one from the prov
107
107
  Example usage:
108
108
 
109
109
  ```shell
110
- azti create-private-key
110
+ aztec-cli create-private-key
111
111
  ```
112
112
 
113
113
  ### create-account
@@ -117,7 +117,7 @@ Creates an Aztec account that can be used for transactions.
117
117
  Syntax:
118
118
 
119
119
  ```shell
120
- azti create-account [options]
120
+ aztec-cli create-account [options]
121
121
  ```
122
122
 
123
123
  Options:
@@ -130,7 +130,7 @@ This command creates an Aztec account that can be used for transactions. It gene
130
130
  Example usage:
131
131
 
132
132
  ```shell
133
- azti create-account
133
+ aztec-cli create-account
134
134
  ```
135
135
 
136
136
  ### deploy
@@ -140,7 +140,7 @@ Deploys a compiled Noir contract to Aztec.
140
140
  Syntax:
141
141
 
142
142
  ```shell
143
- azti deploy <contractAbi> [options]
143
+ aztec-cli deploy <contractAbi> [options]
144
144
  ```
145
145
 
146
146
  - `contractAbi`: Path to the compiled Noir contract's ABI file in JSON format.
@@ -156,7 +156,7 @@ This command deploys a compiled Noir contract to Aztec. It requires the path to
156
156
  Example usage:
157
157
 
158
158
  ```shell
159
- azti deploy path/to/contract.abi.json ...args
159
+ aztec-cli deploy path/to/contract.abi.json ...args
160
160
  ```
161
161
 
162
162
  ### check-deploy
@@ -166,7 +166,7 @@ Checks if a contract is deployed to the specified Aztec address.
166
166
  Syntax:
167
167
 
168
168
  ```shell
169
- azti check-deploy <contractAddress> [options]
169
+ aztec-cli check-deploy <contractAddress> [options]
170
170
  ```
171
171
 
172
172
  - `contractAddress`: An Aztec address to check if the contract has been deployed to.
@@ -180,7 +180,7 @@ This command checks if a contract is deployed to the specified Aztec address. It
180
180
  Example usage:
181
181
 
182
182
  ```shell
183
- azti check-deploy 0x123456789abcdef123456789abcdef12345678
183
+ aztec-cli check-deploy 0x123456789abcdef123456789abcdef12345678
184
184
  ```
185
185
 
186
186
  ### get-tx-receipt
@@ -190,7 +190,7 @@ Gets the receipt for the specified transaction hash.
190
190
  Syntax:
191
191
 
192
192
  ```shell
193
- azti get-tx-receipt <txHash> [options]
193
+ aztec-cli get-tx-receipt <txHash> [options]
194
194
  ```
195
195
 
196
196
  - `txHash`: A transaction hash to get the receipt for.
@@ -204,7 +204,7 @@ This command retrieves and displays the receipt for the specified transaction ha
204
204
  Example usage:
205
205
 
206
206
  ```shell
207
- azti get-tx-receipt 0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef12345678
207
+ aztec-cli get-tx-receipt 0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef12345678
208
208
  ```
209
209
 
210
210
  ### get-contract-data
@@ -214,7 +214,7 @@ Gets information about the Aztec contract deployed at the specified address.
214
214
  Syntax:
215
215
 
216
216
  ```shell
217
- azti get-contract-data <contractAddress> [options]
217
+ aztec-cli get-contract-data <contractAddress> [options]
218
218
  ```
219
219
 
220
220
  - `contractAddress`: Aztec address of the contract.
@@ -229,7 +229,7 @@ This command retrieves and displays information about the Aztec contract deploye
229
229
  Example usage:
230
230
 
231
231
  ```shell
232
- azti get-contract-data 0x123456789abcdef123456789abcdef12345678
232
+ aztec-cli get-contract-data 0x123456789abcdef123456789abcdef12345678
233
233
  ```
234
234
 
235
235
  ### get-accounts
@@ -239,7 +239,7 @@ Gets all the Aztec accounts.
239
239
  Syntax:
240
240
 
241
241
  ```shell
242
- azti get-accounts [options]
242
+ aztec-cli get-accounts [options]
243
243
  ```
244
244
 
245
245
  Options:
@@ -251,7 +251,7 @@ This command retrieves and displays all the Aztec accounts available in the syst
251
251
  Example usage:
252
252
 
253
253
  ```shell
254
- azti get-accounts
254
+ aztec-cli get-accounts
255
255
  ```
256
256
 
257
257
  ### get-account-public-key
@@ -261,7 +261,7 @@ Gets an account's public key, given its Aztec address.
261
261
  Syntax:
262
262
 
263
263
  ```shell
264
- azti get-account-public-key <address> [options]
264
+ aztec-cli get-account-public-key <address> [options]
265
265
  ```
266
266
 
267
267
  - `address`: The Aztec address to get the public key for.
@@ -275,7 +275,7 @@ This command retrieves and displays the public key of an account given its Aztec
275
275
  Example usage:
276
276
 
277
277
  ```shell
278
- azti get-account-public-key 0x123456789abcdef123456789abcdef12345678
278
+ aztec-cli get-account-public-key 0x123456789abcdef123456789abcdef12345678
279
279
  ```
280
280
 
281
281
  ### call-fn
@@ -285,7 +285,7 @@ Calls a function on an Aztec contract.
285
285
  Syntax:
286
286
 
287
287
  ```shell
288
- azti call-fn <contractAbi> <contractAddress> <functionName> [functionArgs...] [options]
288
+ aztec-cli call-fn <contractAbi> <contractAddress> <functionName> [functionArgs...] [options]
289
289
  ```
290
290
 
291
291
  - `contractAbi`: The compiled contract's ABI in JSON format.
@@ -303,7 +303,7 @@ This command calls a function on an Aztec contract. It requires the contract's A
303
303
  Example usage:
304
304
 
305
305
  ```shell
306
- azti call-fn path/to/contract.abi.json 0x123456789abcdef123456789abcdef12345678 transfer 100
306
+ aztec-cli call-fn path/to/contract.abi.json 0x123456789abcdef123456789abcdef12345678 transfer 100
307
307
  ```
308
308
 
309
309
  ### view-fn
@@ -313,7 +313,7 @@ Simulates the execution of a view (read-only) function on a deployed contract, w
313
313
  Syntax:
314
314
 
315
315
  ```shell
316
- azti view-fn <contractAbi> <contractAddress> <functionName> [functionArgs...] [options]
316
+ aztec-cli view-fn <contractAbi> <contractAddress> <functionName> [functionArgs...] [options]
317
317
  ```
318
318
 
319
319
  - `contractAbi`: The compiled contract's ABI in JSON format.
@@ -331,7 +331,7 @@ This command simulates the execution of a view function on a deployed contract w
331
331
  Example usage:
332
332
 
333
333
  ```shell
334
- azti view-fn path/to/contract.abi.json 0x123456789abcdef123456789abcdef12345678 balanceOf 0xabcdef1234567890abcdef1234567890abcdef12
334
+ aztec-cli view-fn path/to/contract.abi.json 0x123456789abcdef123456789abcdef12345678 balanceOf 0xabcdef1234567890abcdef1234567890abcdef12
335
335
  ```
336
336
 
337
337
  ### parse-parameter-struct
@@ -341,7 +341,7 @@ Helper for parsing an encoded string into a contract's parameter struct.
341
341
  Syntax:
342
342
 
343
343
  ```shell
344
- azti parse-parameter-struct <encodedString> <contractAbi> <parameterName>
344
+ aztec-cli parse-parameter-struct <encodedString> <contractAbi> <parameterName>
345
345
  ```
346
346
 
347
347
  - `encodedString`: The encoded hex string.
@@ -353,7 +353,7 @@ This command is a helper for parsing an encoded hex string into a contract's par
353
353
  Example usage:
354
354
 
355
355
  ```shell
356
- azti parse-parameter-struct 0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890 path/to/contract.abi.json paramName
356
+ aztec-cli parse-parameter-struct 0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890 path/to/contract.abi.json paramName
357
357
  ```
358
358
 
359
359
  ### get-logs
@@ -363,11 +363,11 @@ Gets all the unencrypted logs from L2 blocks in the specified range.
363
363
  Syntax:
364
364
 
365
365
  ```shell
366
- azti get-logs <from> <take> [options]
366
+ aztec-cli get-logs <from> <limit> [options]
367
367
  ```
368
368
 
369
369
  - `from`: Block number to start fetching logs from.
370
- - `take`: Number of block logs to fetch.
370
+ - `limit`: Maximum number of block logs to obtain.
371
371
 
372
372
  Options:
373
373
 
@@ -378,7 +378,7 @@ This command retrieves and displays all the unencrypted logs from L2 blocks in t
378
378
  Example usage:
379
379
 
380
380
  ```shell
381
- azti get-logs 1000 10
381
+ aztec-cli get-logs 1000 10
382
382
  ```
383
383
 
384
384
  ### block-num
@@ -388,7 +388,7 @@ Gets the current Aztec L2 block number.
388
388
  Syntax:
389
389
 
390
390
  ```shell
391
- azti block-num [options]
391
+ aztec-cli block-num [options]
392
392
  ```
393
393
 
394
394
  Options:
@@ -400,7 +400,7 @@ This command retrieves and displays the current Aztec L2 block number.
400
400
  Example usage:
401
401
 
402
402
  ```shell
403
- azti block-num
403
+ aztec-cli block-num
404
404
  ```
405
405
 
406
406
  ## Conclusion
package/dest/index.js CHANGED
@@ -1,11 +1,9 @@
1
1
  #!/usr/bin/env -S node --no-warnings
2
- import { AztecAddress, Contract, ContractDeployer, Fr, Point, createAccounts, createAztecRpcClient, getAccountWallet, } from '@aztec/aztec.js';
3
- import { randomBytes } from '@aztec/foundation/crypto';
2
+ import { AztecAddress, Contract, ContractDeployer, Fr, Point, createAccounts, createAztecRpcClient, generatePublicKey, getAccountWallet, } from '@aztec/aztec.js';
4
3
  import { JsonStringify } from '@aztec/foundation/json-rpc';
5
- import { createConsoleLogger } from '@aztec/foundation/log';
6
- import { createDebugLogger } from '@aztec/foundation/log';
4
+ import { createConsoleLogger, createDebugLogger } from '@aztec/foundation/log';
7
5
  import { SchnorrSingleKeyAccountContractAbi } from '@aztec/noir-contracts/artifacts';
8
- import { L2BlockL2Logs, TxHash } from '@aztec/types';
6
+ import { L2BlockL2Logs, PrivateKey, TxHash } from '@aztec/types';
9
7
  import { Command } from 'commander';
10
8
  import { mnemonicToAccount } from 'viem/accounts';
11
9
  import { encodeArgs, parseStructString } from './cli_encoder.js';
@@ -13,8 +11,14 @@ import { deployAztecContracts, getContractAbi, getTxSender, prepTx } from './uti
13
11
  const accountCreationSalt = Fr.ZERO;
14
12
  const debugLogger = createDebugLogger('aztec:cli');
15
13
  const log = createConsoleLogger();
14
+ const stripLeadingHex = (hex) => {
15
+ if (hex.length > 2 && hex.startsWith('0x')) {
16
+ return hex.substring(2);
17
+ }
18
+ return hex;
19
+ };
16
20
  const program = new Command();
17
- program.name('azti').description('CLI for interacting with Aztec.').version('0.1.0');
21
+ program.name('aztec-cli').description('CLI for interacting with Aztec.').version('0.1.0');
18
22
  const { ETHEREUM_HOST, AZTEC_RPC_HOST, PRIVATE_KEY, PUBLIC_KEY, API_KEY } = process.env;
19
23
  /**
20
24
  * Main function for the Aztec CLI.
@@ -38,19 +42,24 @@ async function main() {
38
42
  log('\n');
39
43
  });
40
44
  program
41
- .command('create-private-key')
45
+ .command('generate-private-key')
42
46
  .description('Generates a 32-byte private key.')
43
47
  .option('-m, --mnemonic', 'A mnemonic string that can be used for the private key generation.')
44
- .action(options => {
48
+ .action(async (options) => {
45
49
  let privKey;
50
+ let publicKey;
46
51
  if (options.mnemonic) {
47
52
  const acc = mnemonicToAccount(options.mnemonic);
48
- privKey = Buffer.from(acc.getHdKey().privateKey).toString('hex');
53
+ const key = Buffer.from(acc.getHdKey().privateKey);
54
+ privKey = key.toString('hex');
55
+ publicKey = await generatePublicKey(new PrivateKey(key));
49
56
  }
50
57
  else {
51
- privKey = randomBytes(32).toString('hex');
58
+ const key = PrivateKey.random();
59
+ privKey = PrivateKey.random().toString();
60
+ publicKey = await generatePublicKey(key);
52
61
  }
53
- log(`\n${privKey}\n`);
62
+ log(`\nPrivate Key: ${privKey}\nPublic Key: ${publicKey.toString()}\n`);
54
63
  });
55
64
  program
56
65
  .command('create-account')
@@ -59,8 +68,8 @@ async function main() {
59
68
  .option('-u, --rpc-url <string>', 'URL of the Aztec RPC', AZTEC_RPC_HOST || 'http://localhost:8080')
60
69
  .action(async (options) => {
61
70
  const client = createAztecRpcClient(options.rpcUrl);
62
- const privateKey = options.privateKey && Buffer.from(options.privateKey.replace(/^0x/i, ''), 'hex');
63
- const wallet = await createAccounts(client, SchnorrSingleKeyAccountContractAbi, privateKey, accountCreationSalt, 1);
71
+ const privateKey = options.privateKey && Buffer.from(stripLeadingHex(options.privateKey), 'hex');
72
+ const wallet = await createAccounts(client, SchnorrSingleKeyAccountContractAbi, new PrivateKey(privateKey), accountCreationSalt, 1);
64
73
  const accounts = await wallet.getAccounts();
65
74
  const pubKeys = await Promise.all(accounts.map(acc => wallet.getPublicKey(acc)));
66
75
  log(`\nCreated account(s).`);
@@ -156,23 +165,23 @@ async function main() {
156
165
  .command('get-logs')
157
166
  .description('Gets all the unencrypted logs from L2 blocks in the range specified.')
158
167
  .argument('<from>', 'Block num start for getting logs.')
159
- .argument('<take>', 'How many block logs to fetch.')
168
+ .argument('<limit>', 'How many block logs to fetch.')
160
169
  .option('-u, --rpc-url <string>', 'URL of the Aztec RPC', AZTEC_RPC_HOST || 'http://localhost:8080')
161
170
  .action(async (_from, _take, options) => {
162
171
  let from;
163
- let take;
172
+ let limit;
164
173
  try {
165
174
  from = parseInt(_from);
166
- take = parseInt(_take);
175
+ limit = parseInt(_take);
167
176
  }
168
177
  catch {
169
178
  log(`Invalid integer value(s) passed: ${_from}, ${_take}`);
170
179
  return;
171
180
  }
172
181
  const client = createAztecRpcClient(options.rpcUrl);
173
- const logs = await client.getUnencryptedLogs(from, take);
182
+ const logs = await client.getUnencryptedLogs(from, limit);
174
183
  if (!logs.length) {
175
- log(`No logs found in blocks ${from} to ${from + take}`);
184
+ log(`No logs found in blocks ${from} to ${from + limit}`);
176
185
  }
177
186
  else {
178
187
  log('Logs found: \n');
@@ -190,7 +199,10 @@ async function main() {
190
199
  }
191
200
  else {
192
201
  log(`Accounts found: \n`);
193
- accounts.forEach(async (acc) => log(`Address: ${acc}\nPublic Key: ${await client.getPublicKey(acc)}\n`));
202
+ for (const address of accounts) {
203
+ const [pk, partialAddress] = await client.getPublicKeyAndPartialAddress(address);
204
+ log(`Address: ${address}\nPublic Key: ${pk.toString()}\nPartial Contract Address: ${partialAddress.toString()}\n`);
205
+ }
194
206
  }
195
207
  });
196
208
  program
@@ -201,16 +213,16 @@ async function main() {
201
213
  .action(async (_address, options) => {
202
214
  const client = createAztecRpcClient(options.rpcUrl);
203
215
  const address = AztecAddress.fromString(_address);
204
- const pk = await client.getPublicKey(address);
216
+ const [pk, partialAddress] = await client.getPublicKeyAndPartialAddress(address);
205
217
  if (!pk) {
206
218
  log(`Unkown account ${_address}`);
207
219
  }
208
220
  else {
209
- log(`Public Key: \n ${pk.toString()}`);
221
+ log(`Public Key: \n ${pk.toString()}\nPartial Contract Address: ${partialAddress.toString()}\n`);
210
222
  }
211
223
  });
212
224
  program
213
- .command('call-fn')
225
+ .command('send')
214
226
  .description('Calls a function on an Aztec contract.')
215
227
  .argument('<contractAbi>', "The compiled contract's ABI in JSON format", undefined)
216
228
  .argument('<contractAddress>', 'Address of the contract')
@@ -221,8 +233,8 @@ async function main() {
221
233
  .action(async (contractFile, _contractAddress, functionName, _functionArgs, options) => {
222
234
  const { contractAddress, functionArgs, contractAbi } = prepTx(contractFile, _contractAddress, functionName, _functionArgs, log);
223
235
  const client = createAztecRpcClient(options.rpcUrl);
224
- const wallet = await getAccountWallet(client, SchnorrSingleKeyAccountContractAbi, Buffer.from(options.privateKey, 'hex'), accountCreationSalt);
225
- const contract = new Contract(contractAddress, contractAbi, wallet);
236
+ const wallet = await getAccountWallet(client, SchnorrSingleKeyAccountContractAbi, PrivateKey.fromString(options.privateKey), accountCreationSalt);
237
+ const contract = await Contract.create(contractAddress, contractAbi, wallet);
226
238
  const origin = (await wallet.getAccounts()).find(addr => addr.equals(wallet.getAddress()));
227
239
  const tx = contract.methods[functionName](...functionArgs).send({
228
240
  origin,
@@ -236,7 +248,7 @@ async function main() {
236
248
  log(`TX Status: ${receipt.status}\n`);
237
249
  });
238
250
  program
239
- .command('view-fn')
251
+ .command('call')
240
252
  .description('Simulates the execution of a view (read-only) function on a deployed contract, without modifying state.')
241
253
  .argument('<contractAbi>', "The compiled contract's ABI in JSON format", undefined)
242
254
  .argument('<contractAddress>', 'Address of the contract')
@@ -272,8 +284,8 @@ async function main() {
272
284
  log(`\nStruct Data: \n${JsonStringify(data, true)}\n`);
273
285
  });
274
286
  program
275
- .command('block-num')
276
- .description('Gets the current Aztec L2 number.')
287
+ .command('block-number')
288
+ .description('Gets the current Aztec L2 block number.')
277
289
  .option('-u, --rpcUrl <string>', 'URL of the Aztec RPC', AZTEC_RPC_HOST || 'http://localhost:8080')
278
290
  .action(async (options) => {
279
291
  const client = createAztecRpcClient(options.rpcUrl);
@@ -286,4 +298,4 @@ main().catch(err => {
286
298
  log(`Error thrown: ${err}`);
287
299
  process.exit(1);
288
300
  });
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFDTCxZQUFZLEVBQ1osUUFBUSxFQUNSLGdCQUFnQixFQUNoQixFQUFFLEVBQ0YsS0FBSyxFQUNMLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsZ0JBQWdCLEdBQ2pCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRixPQUFPLEVBQWdCLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFbkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV2RixNQUFNLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7QUFFcEMsTUFBTSxXQUFXLEdBQUcsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDbkQsTUFBTSxHQUFHLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztBQUVsQyxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBRTlCLE9BQU8sQ0FBQyxJQUFJLENB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
301
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFDTCxZQUFZLEVBQ1osUUFBUSxFQUNSLGdCQUFnQixFQUNoQixFQUFFLEVBQ0YsS0FBSyxFQUNMLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsaUJBQWlCLEVBQ2pCLGdCQUFnQixHQUNqQixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRixPQUFPLEVBQWdCLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRS9FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFdkYsTUFBTSxtQkFBbUIsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBRXBDLE1BQU0sV0FBVyxHQUFHLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ25ELE1BQU0sR0FBRyxHQUFHLG1CQUFtQixFQUFFLENBQUM7QUFDbEMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRTtJQUN0QyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUU7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
package/package.json CHANGED
@@ -1,18 +1,19 @@
1
1
  {
2
2
  "name": "@aztec/cli",
3
- "version": "0.1.0-alpha25",
3
+ "version": "0.1.0-alpha28",
4
4
  "main": "./dest/index.js",
5
5
  "type": "module",
6
6
  "dependencies": {
7
- "@aztec/aztec.js": "0.1.0-alpha25",
8
- "@aztec/ethereum": "0.1.0-alpha25",
9
- "@aztec/foundation": "0.1.0-alpha25",
10
- "@aztec/noir-contracts": "0.1.0-alpha25",
7
+ "@aztec/aztec.js": "0.1.0-alpha28",
8
+ "@aztec/ethereum": "0.1.0-alpha28",
9
+ "@aztec/foundation": "0.1.0-alpha28",
10
+ "@aztec/noir-contracts": "0.1.0-alpha28",
11
+ "@aztec/types": "0.1.0-alpha28",
11
12
  "commander": "^9.0.0",
12
13
  "tslib": "^2.4.0",
13
14
  "viem": "^1.2.5"
14
15
  },
15
16
  "bin": {
16
- "azti": "./dest/index.js"
17
+ "aztec-cli": "./dest/index.js"
17
18
  }
18
19
  }