codecrypto-cli 1.0.14 → 1.0.15

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
@@ -2,25 +2,87 @@
2
2
 
3
3
  CLI tool para desplegar aplicaciones Next.js/Express y smart contracts con Foundry.
4
4
 
5
- ## Instalación
5
+ ## 🚀 Instalación Rápida
6
6
 
7
7
  ```bash
8
- # Usando NPX (sin instalación)
8
+ # Instalación global (recomendado)
9
+ npm install -g codecrypto-cli
10
+
11
+ # O usar sin instalar
9
12
  npx codecrypto-cli [command]
10
13
 
11
- # Instalación global
12
- npm install -g codecrypto-cli
13
- codecrypto [command]
14
+ # Verificar instalación
15
+ codecrypto --help
16
+ ```
17
+
18
+ **Primeros pasos:**
19
+ ```bash
20
+ # 1. Validar que todo está listo
21
+ codecrypto doctor
22
+
23
+ # 2. Autenticarse
24
+ codecrypto auth
14
25
 
15
- # Desarrollo local
16
- git clone <repository>
17
- cd cli-cc
26
+ # 3. ¡Listo para usar!
27
+ ```
28
+
29
+ **Desarrollo local:**
30
+ ```bash
31
+ # Clonar repositorio
32
+ git clone https://gitlab.codecrypto.academy/codecrypto/codecrypto-cli.git
33
+ cd codecrypto-cli
34
+
35
+ # Instalar dependencias
18
36
  npm install
37
+
38
+ # Compilar
19
39
  npm run build
40
+
41
+ # Enlazar localmente
20
42
  npm link
43
+
44
+ # Probar
45
+ codecrypto --help
46
+ ```
47
+
48
+ ---
49
+
50
+ ## 📋 Guía Rápida de Comandos
51
+
52
+ | Comando | Descripción | Uso Básico |
53
+ |---------|-------------|------------|
54
+ | `auth` | Autenticarse con CodeCrypto | `codecrypto auth` |
55
+ | `doctor` | Validar sistema y prerequisitos | `codecrypto doctor` |
56
+ | `deploy` | Desplegar app Next.js/Express | `codecrypto deploy <ruta-proyecto>` |
57
+ | `deploy-sc` | Desplegar smart contract | `codecrypto deploy-sc <script.s.sol>` |
58
+ | `generate-keys` | Generar claves Foundry | `codecrypto generate-keys` |
59
+
60
+ ### Ejemplos Rápidos
61
+
62
+ **Desplegar aplicación:**
63
+ ```bash
64
+ codecrypto deploy ../mi-app --deploy
21
65
  ```
22
66
 
23
- ## Comandos
67
+ **Desplegar smart contract en Anvil:**
68
+ ```bash
69
+ codecrypto deploy-sc ./script/Deploy.s.sol --anvil
70
+ ```
71
+
72
+ **Generar claves para desarrollo:**
73
+ ```bash
74
+ codecrypto generate-keys --count 10
75
+ ```
76
+
77
+ **Ver ayuda de un comando:**
78
+ ```bash
79
+ codecrypto deploy --help
80
+ codecrypto deploy-sc --help
81
+ ```
82
+
83
+ ---
84
+
85
+ ## 📖 Documentación Completa de Comandos
24
86
 
25
87
  ### 🔐 `auth` - Autenticación
26
88
 
@@ -155,9 +217,17 @@ codecrypto deploy-sc <script-path> \
155
217
  **Proceso:**
156
218
  1. Valida que el script existe y es `.s.sol`
157
219
  2. Detecta proyecto Foundry (busca `foundry.toml`)
158
- 3. Ejecuta `forge script` con configuración
159
- 4. Guarda resultados en `broadcast/`
160
- 5. Sube transacciones a BD vía `/api/uploadSmartContract`
220
+ 3. **Valida el saldo de la cuenta** (si se usa `--private-key`, verifica que tenga al menos 0.001 ETH)
221
+ 4. Ejecuta `forge script` con configuración
222
+ 5. Guarda resultados en `broadcast/`
223
+ 6. Sube transacciones a BD vía `/api/uploadSmartContract` en `https://proyectos.proyectos.codecrypto.academy`
224
+
225
+ **Validación de saldo:**
226
+ - Se valida automáticamente cuando se usa `--private-key`
227
+ - Requiere un saldo mínimo de **1.0 ETH** para continuar
228
+ - Muestra la dirección y el saldo actual antes de desplegar
229
+ - Si el saldo es insuficiente, sugiere usar el faucet: `https://faucet.codecrypto.academy`
230
+ - No se valida cuando se usa `--anvil` o `--account` (desarrollo local)
161
231
 
162
232
  **Datos subidos a BD:**
163
233
  - Email del usuario
@@ -166,6 +236,80 @@ codecrypto deploy-sc <script-path> \
166
236
  - RPC URL usado
167
237
  - Clave privada (o `account-{index}`)
168
238
 
239
+ **URL de subida:**
240
+ - Por defecto: `https://proyectos.proyectos.codecrypto.academy/api/uploadSmartContract`
241
+ - Configurable mediante variable de entorno: `CODECRYPTO_UPLOAD_URL` o `UPLOAD_SMART_CONTRACT_URL`
242
+
243
+ ---
244
+
245
+ ### 🔑 `generate-keys` - Generación de Claves Foundry
246
+
247
+ Genera un archivo de claves Foundry con mnemonic y cuentas derivadas para desarrollo y testing.
248
+
249
+ ```bash
250
+ # Generar claves con mnemonic aleatorio (10 cuentas por defecto)
251
+ codecrypto generate-keys
252
+
253
+ # Especificar número de cuentas
254
+ codecrypto generate-keys --count 20
255
+
256
+ # Usar mnemonic existente
257
+ codecrypto generate-keys --mnemonic "word1 word2 ... word12"
258
+
259
+ # Especificar archivo de salida
260
+ codecrypto generate-keys --output ~/.foundry/keys.json
261
+
262
+ # Combinar opciones
263
+ codecrypto generate-keys \
264
+ --mnemonic "your twelve word mnemonic phrase here" \
265
+ --count 5 \
266
+ --output ./my-keys.json
267
+ ```
268
+
269
+ **Opciones:**
270
+ - `-m, --mnemonic <mnemonic>` - Frase mnemonic (si no se proporciona, se genera una aleatoria)
271
+ - `-n, --count <number>` - Número de cuentas a generar (default: `10`, máximo: `100`)
272
+ - `-o, --output <path>` - Ruta del archivo de salida (default: `~/.foundry/keys.json`)
273
+
274
+ **Funcionamiento:**
275
+ 1. Genera o valida mnemonic (12 palabras)
276
+ 2. Deriva cuentas usando el path estándar BIP44: `m/44'/60'/0'/0/{index}`
277
+ 3. Guarda todas las cuentas con sus direcciones y claves privadas
278
+ 4. Crea el directorio de salida si no existe
279
+
280
+ **Formato del archivo generado:**
281
+ ```json
282
+ {
283
+ "mnemonic": "word1 word2 word3 ... word12",
284
+ "accounts": [
285
+ {
286
+ "address": "0x...",
287
+ "private_key": "0x..."
288
+ },
289
+ ...
290
+ ]
291
+ }
292
+ ```
293
+
294
+ **Uso con Foundry:**
295
+ ```bash
296
+ # Generar claves
297
+ codecrypto generate-keys --output ~/.foundry/keys.json
298
+
299
+ # Usar en scripts Foundry
300
+ # Las claves privadas se pueden usar directamente en forge script
301
+ forge script Deploy.s.sol \
302
+ --private-key $(jq -r '.accounts[0].private_key' ~/.foundry/keys.json) \
303
+ --rpc-url http://localhost:8545 \
304
+ --broadcast
305
+ ```
306
+
307
+ **Seguridad:**
308
+ - ⚠️ **Nunca** compartas tu mnemonic o claves privadas
309
+ - ⚠️ **Nunca** commitees el archivo de claves a control de versiones
310
+ - ⚠️ Usa estas claves solo para desarrollo y testing
311
+ - ⚠️ Para producción, usa un wallet seguro (MetaMask, Ledger, etc.)
312
+
169
313
  ---
170
314
 
171
315
  ## Ejemplos de Uso
@@ -212,6 +356,18 @@ codecrypto deploy-sc ./script/Deploy.s.sol \
212
356
  --verify
213
357
  ```
214
358
 
359
+ ### Generar claves para desarrollo
360
+
361
+ ```bash
362
+ # Generar claves Foundry
363
+ codecrypto generate-keys --count 10
364
+
365
+ # Usar en script de despliegue
366
+ codecrypto deploy-sc ./script/Deploy.s.sol \
367
+ --private-key $(jq -r '.accounts[0].private_key' ~/.foundry/keys.json) \
368
+ --anvil
369
+ ```
370
+
215
371
  ### Workflow completo
216
372
 
217
373
  ```bash
@@ -221,10 +377,13 @@ codecrypto doctor
221
377
  # 2. Autenticarse (si es necesario)
222
378
  codecrypto auth
223
379
 
224
- # 3. Desplegar aplicación
380
+ # 3. Generar claves (opcional, para smart contracts)
381
+ codecrypto generate-keys
382
+
383
+ # 4. Desplegar aplicación
225
384
  codecrypto deploy ../mi-app --deploy
226
385
 
227
- # 4. Desplegar smart contract
386
+ # 5. Desplegar smart contract
228
387
  codecrypto deploy-sc ./script/Deploy.s.sol --anvil
229
388
  ```
230
389
 
@@ -240,7 +399,8 @@ cli-cc/
240
399
  │ ├── auth.ts # Autenticación
241
400
  │ ├── deploy.ts # Deploy Next.js/Express
242
401
  │ ├── deploy-sc.ts # Deploy Smart Contracts
243
- └── doctor.ts # Validación del sistema
402
+ ├── doctor.ts # Validación del sistema
403
+ │ └── generate-keys.ts # Generación de claves Foundry
244
404
  ├── dist/ # Build output
245
405
  ├── package.json
246
406
  ├── tsconfig.json
@@ -339,18 +499,178 @@ EOF
339
499
 
340
500
  **Variables disponibles:**
341
501
  - `CODECRYPTO_API_URL` o `API_URL` - URL del servidor API (default: `https://proyectos.codecrypto.academy`)
502
+ - `CODECRYPTO_UPLOAD_URL` o `UPLOAD_SMART_CONTRACT_URL` - URL para subir smart contracts (default: `https://proyectos.proyectos.codecrypto.academy`)
342
503
 
343
504
  **Nota:** Las variables del sistema operativo tienen prioridad sobre el archivo `.env`.
344
505
 
345
506
  ---
346
507
 
347
- ## Requisitos
508
+ ## 📋 Prerequisitos Detallados
509
+
510
+ Antes de usar el CLI, asegúrate de tener instalados y configurados los siguientes componentes:
511
+
512
+ ### Requisitos Obligatorios
348
513
 
349
- - Node.js >= 16.0.0
514
+ #### 1. Node.js y npm
515
+ - **Node.js** >= 16.0.0 (recomendado: >= 18.0.0)
516
+ - **npm** (incluido con Node.js)
517
+
518
+ **Instalación:**
519
+ ```bash
520
+ # Verificar versión instalada
521
+ node --version
522
+ npm --version
523
+
524
+ # Si no está instalado, descargar desde:
525
+ # https://nodejs.org/
526
+ ```
527
+
528
+ #### 2. Docker y Docker Buildx
529
+ - **Docker** >= 20.10.0
530
+ - **Docker Buildx** (incluido en Docker Desktop o instalable por separado)
531
+
532
+ **Instalación:**
533
+ ```bash
534
+ # Verificar instalación
535
+ docker --version
536
+ docker buildx version
537
+
538
+ # Instalar Docker Desktop desde:
539
+ # https://www.docker.com/get-started
540
+
541
+ # O en Linux:
542
+ # Ubuntu/Debian
543
+ sudo apt-get update
544
+ sudo apt-get install docker.io docker-buildx-plugin
545
+
546
+ # Verificar que el daemon está corriendo
547
+ docker info
548
+ ```
549
+
550
+ **Configuración Docker Hub:**
551
+ ```bash
552
+ # Autenticarse en Docker Hub
553
+ docker login
554
+
555
+ # Verificar autenticación
556
+ docker info | grep Username
557
+ ```
558
+
559
+ #### 3. Git
560
+ - **Git** >= 2.0.0
561
+
562
+ **Instalación:**
563
+ ```bash
564
+ # Verificar versión
565
+ git --version
566
+
567
+ # Si no está instalado:
568
+ # macOS: viene con Xcode Command Line Tools
569
+ xcode-select --install
570
+
571
+ # Linux
572
+ sudo apt-get install git # Ubuntu/Debian
573
+ sudo yum install git # CentOS/RHEL
574
+
575
+ # Windows: https://git-scm.com/download/win
576
+ ```
577
+
578
+ ### Requisitos para Smart Contracts
579
+
580
+ #### 4. Foundry
581
+ - **forge** (compilador de Solidity)
582
+ - **cast** (herramienta CLI para interactuar con contratos)
583
+ - **anvil** (blockchain local para desarrollo)
584
+
585
+ **Instalación:**
586
+ ```bash
587
+ # Instalar Foundry
588
+ curl -L https://foundry.paradigm.xyz | bash
589
+ foundryup
590
+
591
+ # Verificar instalación
592
+ forge --version
593
+ cast --version
594
+ anvil --version
595
+ ```
596
+
597
+ **Configuración:**
598
+ ```bash
599
+ # Crear proyecto Foundry (opcional, para testing)
600
+ forge init my-project
601
+ cd my-project
602
+ ```
603
+
604
+ #### 5. Anvil (Blockchain Local)
605
+ Anvil debe estar corriendo para desplegar smart contracts localmente.
606
+
607
+ **Iniciar Anvil:**
608
+ ```bash
609
+ # Configuración recomendada para CodeCrypto
610
+ anvil --chain-id 3133731337 --port 55556
611
+
612
+ # O en puerto estándar
613
+ anvil --chain-id 3133731337 --port 8545
614
+ ```
615
+
616
+ **Verificar que está corriendo:**
617
+ ```bash
618
+ # Verificar conexión
619
+ cast block-number --rpc-url http://localhost:8545
620
+
621
+ # O si usas puerto 55556
622
+ cast block-number --rpc-url http://localhost:55556
623
+ ```
624
+
625
+ ### Requisitos para Despliegue Remoto
626
+
627
+ #### 6. Acceso a Servidores CodeCrypto
628
+ - Acceso a `proyectos.codecrypto.academy` (para despliegue de aplicaciones)
629
+ - Acceso a `besu1.proyectos.codecrypto.academy` (red blockchain Besu 1)
630
+ - Acceso a `besu2.proyectos.codecrypto.academy` (red blockchain Besu 2)
631
+
632
+ **Verificar conectividad:**
633
+ ```bash
634
+ # Verificar acceso a servidor de proyectos
635
+ curl -I https://proyectos.codecrypto.academy
636
+
637
+ # Verificar acceso a redes blockchain
638
+ curl -I https://besu1.proyectos.codecrypto.academy
639
+ curl -I https://besu2.proyectos.codecrypto.academy
640
+ ```
641
+
642
+ ### Verificación Completa
643
+
644
+ Ejecuta el comando `doctor` para validar todos los prerequisitos:
645
+
646
+ ```bash
647
+ codecrypto doctor
648
+ ```
649
+
650
+ O con información detallada:
651
+
652
+ ```bash
653
+ codecrypto doctor --verbose
654
+ ```
655
+
656
+ ---
657
+
658
+ ## Requisitos (Resumen)
659
+
660
+ **Resumen rápido:**
661
+ - Node.js >= 16.0.0 (recomendado >= 18.0.0)
350
662
  - Docker y Docker Buildx
351
663
  - Git
352
664
  - Foundry (forge, cast, anvil)
353
- - Anvil corriendo en puerto 8545 (para smart contracts locales)
665
+ - Anvil corriendo (puerto 8545 o 55556)
666
+ - Acceso a servidores CodeCrypto
667
+
668
+ **Verificación rápida:**
669
+ ```bash
670
+ codecrypto doctor
671
+ ```
672
+
673
+ Para instrucciones detalladas de instalación, consulta la sección [Prerequisitos Detallados](#-prerequisitos-detallados) arriba.
354
674
 
355
675
  ---
356
676
 
@@ -365,6 +685,7 @@ codecrypto deploy --help
365
685
  codecrypto deploy-sc --help
366
686
  codecrypto auth --help
367
687
  codecrypto doctor --help
688
+ codecrypto generate-keys --help
368
689
  ```
369
690
 
370
691
  ---
@@ -1 +1 @@
1
- {"version":3,"file":"deploy-sc.d.ts","sourceRoot":"","sources":["../../src/commands/deploy-sc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,eAAe,SAoOxB,CAAC"}
1
+ {"version":3,"file":"deploy-sc.d.ts","sourceRoot":"","sources":["../../src/commands/deploy-sc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,eAAO,MAAM,eAAe,SA0QxB,CAAC"}
@@ -44,6 +44,7 @@ const child_process_1 = require("child_process");
44
44
  const fs = __importStar(require("fs"));
45
45
  const path = __importStar(require("path"));
46
46
  const os = __importStar(require("os"));
47
+ const ethers_1 = require("ethers");
47
48
  exports.deployScCommand = new commander_1.Command('deploy-sc')
48
49
  .description('Deploy smart contract using Foundry')
49
50
  .argument('<script-path>', 'Path to the Foundry deployment script')
@@ -182,6 +183,40 @@ exports.deployScCommand = new commander_1.Command('deploy-sc')
182
183
  if (options.slow) {
183
184
  forgeArgs.push('--slow');
184
185
  }
186
+ // Validar saldo antes de desplegar (solo si se usa private-key)
187
+ if (options.privateKey && !options.anvil && options.account === undefined) {
188
+ const balanceSpinner = (0, ora_1.default)('Verificando saldo de la cuenta...').start();
189
+ try {
190
+ const provider = new ethers_1.ethers.JsonRpcProvider(options.url);
191
+ const wallet = new ethers_1.ethers.Wallet(options.privateKey, provider);
192
+ const address = wallet.address;
193
+ const balance = await provider.getBalance(address);
194
+ // Convertir a ETH (mínimo 1 ETH recomendado)
195
+ const balanceInEth = ethers_1.ethers.formatEther(balance);
196
+ const minBalance = ethers_1.ethers.parseEther('1.0');
197
+ balanceSpinner.succeed(`Saldo verificado: ${balanceInEth} ETH`);
198
+ if (balance < minBalance) {
199
+ console.error(chalk_1.default.red('\n❌ Error: Saldo insuficiente en la cuenta'));
200
+ console.error(chalk_1.default.red(` Dirección: ${address}`));
201
+ console.error(chalk_1.default.red(` Saldo actual: ${balanceInEth} ETH`));
202
+ console.error(chalk_1.default.red(` Saldo mínimo recomendado: 1.0 ETH`));
203
+ console.error(chalk_1.default.yellow('\n💡 Asegúrate de tener suficiente saldo para pagar las fees de gas'));
204
+ console.log(chalk_1.default.cyan('\n🚰 Obtén fondos del faucet:'));
205
+ console.log(chalk_1.default.cyan(` ${chalk_1.default.underline('https://faucet.codecrypto.academy')}`));
206
+ console.log(chalk_1.default.gray(` Visita el faucet y solicita fondos para tu dirección: ${address}\n`));
207
+ process.exit(1);
208
+ }
209
+ console.log(chalk_1.default.green(` Dirección: ${chalk_1.default.cyan(address)}`));
210
+ console.log(chalk_1.default.green(` Saldo: ${chalk_1.default.cyan(balanceInEth)} ETH\n`));
211
+ }
212
+ catch (error) {
213
+ balanceSpinner.warn(`No se pudo verificar el saldo: ${error.message}`);
214
+ console.log(chalk_1.default.yellow(' Continuando con el despliegue...'));
215
+ console.log(chalk_1.default.yellow(' Asegúrate de tener suficiente saldo para las fees de gas'));
216
+ console.log(chalk_1.default.cyan('\n🚰 Si necesitas fondos, usa el faucet:'));
217
+ console.log(chalk_1.default.cyan(` ${chalk_1.default.underline('https://faucet.codecrypto.academy')}\n`));
218
+ }
219
+ }
185
220
  // Ejecutar el script
186
221
  const deploySpinner = (0, ora_1.default)('Desplegando smart contract...').start();
187
222
  try {
@@ -274,7 +309,8 @@ async function uploadDeploymentResults(config) {
274
309
  throw new Error(`Failed to read token file: ${error.message}`);
275
310
  }
276
311
  const email = tokenData.email;
277
- const serverUrl = tokenData.serverUrl || process.env.CODECRYPTO_API_URL || process.env.API_URL || 'https://proyectos.codecrypto.academy';
312
+ // URL específica para subir smart contracts
313
+ const uploadServerUrl = process.env.CODECRYPTO_UPLOAD_URL || process.env.UPLOAD_SMART_CONTRACT_URL || 'https://proyectos.proyectos.codecrypto.academy';
278
314
  const token = tokenData.token;
279
315
  if (!email) {
280
316
  throw new Error('Email not found in token.json');
@@ -328,7 +364,7 @@ async function uploadDeploymentResults(config) {
328
364
  throw new Error('No transactions found in run-latest.json');
329
365
  }
330
366
  // 6. Hacer la llamada POST al endpoint
331
- const apiUrl = `${serverUrl}/api/uploadSmartContract`;
367
+ const apiUrl = `${uploadServerUrl}/api/uploadSmartContract`;
332
368
  // Log de la petición (solo si debug está activado)
333
369
  if (config.debug) {
334
370
  console.log(chalk_1.default.gray('\n[UPLOAD REQUEST] POST /api/uploadSmartContract:'));
@@ -1 +1 @@
1
- {"version":3,"file":"deploy-sc.js","sourceRoot":"","sources":["../../src/commands/deploy-sc.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAoC;AACpC,kDAA0B;AAC1B,8CAAsB;AACtB,iDAAyC;AACzC,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AAEZ,QAAA,eAAe,GAAG,IAAI,mBAAO,CAAC,WAAW,CAAC;KACpD,WAAW,CAAC,qCAAqC,CAAC;KAClD,QAAQ,CAAC,eAAe,EAAE,uCAAuC,CAAC;KAClE,MAAM,CAAC,qBAAqB,EAAE,2BAA2B,EAAE,4CAA4C,CAAC;KACxG,MAAM,CAAC,yBAAyB,EAAE,yEAAyE,CAAC;KAC5G,MAAM,CAAC,mBAAmB,EAAE,0EAA0E,CAAC;KACvG,MAAM,CAAC,SAAS,EAAE,oDAAoD,CAAC;KACvE,MAAM,CAAC,UAAU,EAAE,mCAAmC,EAAE,KAAK,CAAC;KAC9D,MAAM,CAAC,aAAa,EAAE,2BAA2B,EAAE,IAAI,CAAC;KACxD,MAAM,CAAC,QAAQ,EAAE,8BAA8B,EAAE,KAAK,CAAC;KACvD,MAAM,CAAC,SAAS,EAAE,wBAAwB,EAAE,KAAK,CAAC;KAClD,MAAM,CAAC,KAAK,EAAE,UAAkB,EAAE,OAAO,EAAE,EAAE;IAC5C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;IAEvE,IAAI,CAAC;QACH,2BAA2B;QAC3B,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAEpD,iCAAiC;QACjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,iCAAiC,kBAAkB,EAAE,CAAC,CAAC,CAAC;YAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,sDAAsD;QACtD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,uDAAuD,CAAC,CAAC,CAAC;QACtF,CAAC;QAED,uFAAuF;QACvF,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAEpD,yEAAyE;QACzE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAC1D,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC,CAAC;QAE9E,IAAI,iBAAiB,GAAG,UAAU,CAAC;QACnC,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,iBAAiB,GAAG,UAAU,CAAC;QACjC,CAAC;aAAM,IAAI,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC5C,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,mFAAmF,CAAC,CAAC,CAAC;QAClH,CAAC;QAED,iDAAiD;QACjD,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;QAEhF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,aAAa,eAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,cAAc,eAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,gBAAgB,eAAK,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1F,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,aAAa,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEpG,qCAAqC;QACrC,MAAM,YAAY,GAAG,IAAA,aAAG,EAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC;QAC3D,IAAI,CAAC;YACH,IAAA,wBAAQ,EAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/C,YAAY,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAC/C,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC,CAAC;YAC/G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,gCAAgC;QAChC,MAAM,GAAG,GAA2B;YAClC,GAAG,OAAO,CAAC,GAAG;YACd,OAAO,EAAE,OAAO,CAAC,GAAG;SACrB,CAAC;QAEF,wCAAwC;QACxC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;QACvC,CAAC;QAED,iCAAiC;QACjC,MAAM,SAAS,GAAa;YAC1B,QAAQ;YACR,kBAAkB;YAClB,WAAW;YACX,OAAO,CAAC,GAAG;SACZ,CAAC;QAEF,oDAAoD;QACpD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YACtD,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC;QAE3C,0DAA0D;QAC1D,oDAAoD;QACpD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAClC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YACrD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,6FAA6F,CAAC,CAAC,CAAC;YAC5H,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACzB,mCAAmC;YACnC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YACjC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,2FAA2F,CAAC,CAAC,CAAC;YAC1H,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YAC9B,iCAAiC;YACjC,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QACtD,CAAC;aAAM,IAAI,YAAY,EAAE,CAAC;YACxB,kFAAkF;YAClF,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,6DAA6D,CAAC,CAAC,CAAC;YAC1F,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,+DAA+D,CAAC,CAAC,CAAC;YAC5F,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,oDAAoD;YACpD,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC,CAAC;YACjF,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC,CAAC;YAC3E,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC,CAAC;YAC3E,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;YACtD,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;YACjE,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChC,CAAC;QAED,wDAAwD;QACxD,+DAA+D;QAC/D,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,yEAAyE;YACzE,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACjC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACjC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAEnD,IAAI,aAAa,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,mGAAmG,CAAC,CAAC,CAAC;gBAChI,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,mEAAmE,CAAC,CAAC,CAAC;YAClG,CAAC;YACD,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;QAED,qBAAqB;QACrB,MAAM,aAAa,GAAG,IAAA,aAAG,EAAC,+BAA+B,CAAC,CAAC,KAAK,EAAE,CAAC;QAEnE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,SAAS,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iBAAiB,OAAO,IAAI,CAAC,CAAC,CAAC;YAEtD,IAAA,wBAAQ,EAAC,OAAO,EAAE;gBAChB,GAAG,EAAE,iBAAiB;gBACtB,KAAK,EAAE,SAAS;gBAChB,GAAG;aACJ,CAAC,CAAC;YAEH,aAAa,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;YAEhE,6FAA6F;YAC7F,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACtB,MAAM,aAAa,GAAG,IAAA,aAAG,EAAC,6CAA6C,CAAC,CAAC,KAAK,EAAE,CAAC;gBACjF,IAAI,CAAC;oBACH,0DAA0D;oBAC1D,IAAI,mBAAmB,GAAkB,IAAI,CAAC;oBAC9C,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;wBACvB,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;oBAC3C,CAAC;yBAAM,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;wBACzC,mBAAmB,GAAG,WAAW,OAAO,CAAC,OAAO,EAAE,CAAC;oBACrD,CAAC;yBAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;wBACzB,mBAAmB,GAAG,WAAW,CAAC;oBACpC,CAAC;yBAAM,IAAI,YAAY,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;wBAC/C,mBAAmB,GAAG,WAAW,CAAC;oBACpC,CAAC;oBAED,MAAM,uBAAuB,CAAC;wBAC5B,UAAU,EAAE,kBAAkB;wBAC9B,iBAAiB;wBACjB,MAAM,EAAE,OAAO,CAAC,GAAG;wBACnB,UAAU,EAAE,mBAAmB;wBAC/B,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;qBAC9B,CAAC,CAAC;oBACH,aAAa,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC;gBACpE,CAAC;gBAAC,OAAO,WAAgB,EAAE,CAAC;oBAC1B,aAAa,CAAC,IAAI,CAAC,wCAAwC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;oBAClF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,sEAAsE,CAAC,CAAC,CAAC;oBAClG,IAAI,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;wBACpD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,2EAA2E,CAAC,CAAC,CAAC;oBACzG,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC,CAAC;YAC7F,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,aAAa,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,cAAc,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAEpE,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,aAAa,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;YAC3D,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;YAE5D,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;YAE3G,wDAAwD;YACxD,IAAI,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBACvE,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,MAAM,CAAC,qFAAqF,CAAC,CAAC,CAAC;gBACnH,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,MAAM,CAAC,2CAA2C,CAAC,CAAC,CAAC;gBACzE,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,IAAI,CAAC,2BAA2B,kBAAkB,UAAU,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAClG,CAAC;iBAAM,CAAC;gBACN,IAAI,WAAW,EAAE,CAAC;oBAChB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IAEH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,sEAAsE;AACtE,KAAK,UAAU,uBAAuB,CAAC,MAMtC;IACC,oDAAoD;IACpD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;IAC3E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC/E,CAAC;IAED,IAAI,SAAc,CAAC;IACnB,IAAI,CAAC;QACH,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;IAClE,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;IAC9B,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,sCAAsC,CAAC;IACzI,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;IAE9B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,gDAAgD;IAChD,qFAAqF;IACrF,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,WAAW,EAAE,GAAG,UAAU,QAAQ,CAAC,CAAC;IAE7F,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,kCAAkC,YAAY,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,0EAA0E;IAC1E,IAAI,oBAAoB,GAAkB,IAAI,CAAC;IAC/C,MAAM,SAAS,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SACpE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;SACtC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE9B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QAC3E,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,oBAAoB,GAAG,aAAa,CAAC;YACrC,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,+BAA+B,YAAY,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,mCAAmC;IACnC,IAAI,gBAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,CAAC;IAChF,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,iDAAiD;IACjD,MAAM,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAExC,oCAAoC;IACpC,8EAA8E;IAC9E,MAAM,UAAU,GAAG;QACjB,KAAK;QACL,MAAM;QACN,YAAY,EAAE,gBAAgB,EAAE,kDAAkD;QAClF,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC;IAEF,sCAAsC;IACtC,IAAI,CAAC,gBAAgB,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC;QACpF,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,uCAAuC;IACvC,MAAM,MAAM,GAAG,GAAG,SAAS,0BAA0B,CAAC;IAEtD,mDAAmD;IACnD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,QAAQ,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,WAAW,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mBAAmB,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oBAAoB,eAAK,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QACtG,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,YAAY,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iBAAiB,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAChI,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gCAAgC,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC3H,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,4BAA4B,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QAC/I,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,yBAAyB,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAChG,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,2DAA2D,CAAC,CAAC,CAAC,CAAC;IACrG,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE;YACnC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,UAAU,KAAK,EAAE;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;SACjC,CAAC,CAAC;QAEH,oDAAoD;QACpD,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC3C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC,CAAC;YAC9E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,WAAW,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9G,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAC9C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACrD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC5B,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,IAAI,YAAoB,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAC3C,YAAY,GAAG,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,OAAO,IAAI,YAAY,CAAC;YACtE,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY,GAAG,YAAY,IAAI,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC1E,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACxC,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,wCAAwC,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"deploy-sc.js","sourceRoot":"","sources":["../../src/commands/deploy-sc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const generateKeysCommand: Command;
3
+ //# sourceMappingURL=generate-keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-keys.d.ts","sourceRoot":"","sources":["../../src/commands/generate-keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,eAAO,MAAM,mBAAmB,SAuH5B,CAAC"}
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.generateKeysCommand = void 0;
40
+ const commander_1 = require("commander");
41
+ const chalk_1 = __importDefault(require("chalk"));
42
+ const ora_1 = __importDefault(require("ora"));
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ const os = __importStar(require("os"));
46
+ const ethers_1 = require("ethers");
47
+ exports.generateKeysCommand = new commander_1.Command('generate-keys')
48
+ .description('Generate Foundry keys file with mnemonic and derived accounts')
49
+ .option('-m, --mnemonic <mnemonic>', 'Mnemonic phrase (if not provided, a random one will be generated)')
50
+ .option('-n, --count <number>', 'Number of accounts to generate', '10')
51
+ .option('-o, --output <path>', 'Output file path', '~/.foundry/keys.json')
52
+ .action(async (options) => {
53
+ console.log(chalk_1.default.blue('\n🔑 CodeCrypto Foundry Keys Generator\n'));
54
+ try {
55
+ // Parse count
56
+ const accountCount = parseInt(options.count, 10);
57
+ if (isNaN(accountCount) || accountCount < 1 || accountCount > 100) {
58
+ console.error(chalk_1.default.red('❌ Error: Account count must be between 1 and 100'));
59
+ process.exit(1);
60
+ }
61
+ // Generate or use provided mnemonic
62
+ let mnemonic;
63
+ if (options.mnemonic) {
64
+ mnemonic = options.mnemonic.trim();
65
+ // Validate mnemonic
66
+ if (!ethers_1.ethers.Mnemonic.isValidMnemonic(mnemonic)) {
67
+ console.error(chalk_1.default.red('❌ Error: Invalid mnemonic phrase'));
68
+ process.exit(1);
69
+ }
70
+ }
71
+ else {
72
+ // Generate random mnemonic
73
+ const spinner = (0, ora_1.default)('Generating random mnemonic...').start();
74
+ mnemonic = ethers_1.ethers.Mnemonic.entropyToPhrase(ethers_1.ethers.randomBytes(16));
75
+ spinner.succeed('Random mnemonic generated');
76
+ }
77
+ // Derive accounts
78
+ const accountsSpinner = (0, ora_1.default)(`Deriving ${accountCount} account(s) from mnemonic...`).start();
79
+ const accounts = [];
80
+ try {
81
+ for (let i = 0; i < accountCount; i++) {
82
+ // Use HDNodeWallet.fromPhrase with the full derivation path
83
+ // This creates a wallet directly from mnemonic at the specified path
84
+ const wallet = ethers_1.ethers.HDNodeWallet.fromPhrase(mnemonic, `m/44'/60'/0'/0/${i}`);
85
+ accounts.push({
86
+ address: wallet.address,
87
+ private_key: wallet.privateKey,
88
+ });
89
+ }
90
+ accountsSpinner.succeed(`Generated ${accountCount} account(s)`);
91
+ }
92
+ catch (error) {
93
+ accountsSpinner.fail('Failed to derive accounts');
94
+ console.error(chalk_1.default.red(`❌ Error: ${error.message}`));
95
+ process.exit(1);
96
+ }
97
+ // Prepare output data
98
+ const keysData = {
99
+ mnemonic,
100
+ accounts,
101
+ };
102
+ // Resolve output path
103
+ let outputPath = options.output;
104
+ if (outputPath.startsWith('~')) {
105
+ outputPath = path.join(os.homedir(), outputPath.slice(1));
106
+ }
107
+ outputPath = path.resolve(outputPath);
108
+ // Create directory if it doesn't exist
109
+ const outputDir = path.dirname(outputPath);
110
+ if (!fs.existsSync(outputDir)) {
111
+ const dirSpinner = (0, ora_1.default)(`Creating directory: ${outputDir}`).start();
112
+ try {
113
+ fs.mkdirSync(outputDir, { recursive: true });
114
+ dirSpinner.succeed(`Directory created: ${outputDir}`);
115
+ }
116
+ catch (error) {
117
+ dirSpinner.fail('Failed to create directory');
118
+ console.error(chalk_1.default.red(`❌ Error: ${error.message}`));
119
+ process.exit(1);
120
+ }
121
+ }
122
+ // Write file
123
+ const writeSpinner = (0, ora_1.default)(`Writing keys to ${outputPath}...`).start();
124
+ try {
125
+ fs.writeFileSync(outputPath, JSON.stringify(keysData, null, 2), 'utf-8');
126
+ writeSpinner.succeed(`Keys saved to ${outputPath}`);
127
+ }
128
+ catch (error) {
129
+ writeSpinner.fail('Failed to write file');
130
+ console.error(chalk_1.default.red(`❌ Error: ${error.message}`));
131
+ process.exit(1);
132
+ }
133
+ // Display summary
134
+ console.log(chalk_1.default.green('\n✅ Keys generated successfully!\n'));
135
+ console.log(chalk_1.default.gray('Summary:'));
136
+ console.log(chalk_1.default.white(` Mnemonic: ${chalk_1.default.cyan(mnemonic)}`));
137
+ console.log(chalk_1.default.white(` Accounts: ${chalk_1.default.cyan(accountCount)}`));
138
+ console.log(chalk_1.default.white(` Output: ${chalk_1.default.cyan(outputPath)}\n`));
139
+ // Display first few accounts
140
+ console.log(chalk_1.default.gray('First 3 accounts:'));
141
+ accounts.slice(0, 3).forEach((account, index) => {
142
+ console.log(chalk_1.default.white(` ${index + 1}. ${chalk_1.default.cyan(account.address)}`));
143
+ console.log(chalk_1.default.gray(` Private Key: ${chalk_1.default.dim(account.private_key)}`));
144
+ });
145
+ if (accountCount > 3) {
146
+ console.log(chalk_1.default.gray(` ... and ${accountCount - 3} more account(s)\n`));
147
+ }
148
+ else {
149
+ console.log('');
150
+ }
151
+ console.log(chalk_1.default.yellow('⚠️ Warning: Keep your mnemonic and private keys secure!'));
152
+ console.log(chalk_1.default.yellow(' Never share them or commit them to version control.\n'));
153
+ }
154
+ catch (error) {
155
+ console.error(chalk_1.default.red(`\n❌ Error: ${error.message}`));
156
+ process.exit(1);
157
+ }
158
+ });
159
+ //# sourceMappingURL=generate-keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-keys.js","sourceRoot":"","sources":["../../src/commands/generate-keys.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -42,6 +42,7 @@ const deploy_1 = require("./commands/deploy");
42
42
  const deploy_sc_1 = require("./commands/deploy-sc");
43
43
  const auth_1 = require("./commands/auth");
44
44
  const doctor_1 = require("./commands/doctor");
45
+ const generate_keys_1 = require("./commands/generate-keys");
45
46
  // Cargar variables de entorno desde ~/.codecrypto/.env si existe
46
47
  function loadEnvFile() {
47
48
  const homeDir = os.homedir();
@@ -81,5 +82,6 @@ program.addCommand(deploy_1.deployCommand);
81
82
  program.addCommand(deploy_sc_1.deployScCommand);
82
83
  program.addCommand(auth_1.authCommand);
83
84
  program.addCommand(doctor_1.doctorCommand);
85
+ program.addCommand(generate_keys_1.generateKeysCommand);
84
86
  program.parse(process.argv);
85
87
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yCAAoC;AACpC,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AACzB,8CAAkD;AAClD,oDAAuD;AACvD,0CAA8C;AAC9C,8CAAkD;AAElD,iEAAiE;AACjE,SAAS,WAAW;IAClB,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAErD,sCAAsC;IACtC,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAExC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,sCAAsC;YACtC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAElD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,UAAU,KAAK,CAAC,CAAC;gBAAE,SAAS;YAEhC,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAEvD,qGAAqG;YACrG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IACD,6FAA6F;AAC/F,CAAC;AAED,yCAAyC;AACzC,WAAW,EAAE,CAAC;AAEd,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,oCAAoC,CAAC;KACjD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,qBAAqB;AACrB,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,2BAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,kBAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAElC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yCAAoC;AACpC,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AACzB,8CAAkD;AAClD,oDAAuD;AACvD,0CAA8C;AAC9C,8CAAkD;AAClD,4DAA+D;AAE/D,iEAAiE;AACjE,SAAS,WAAW;IAClB,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAErD,sCAAsC;IACtC,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAExC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,sCAAsC;YACtC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAElD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,UAAU,KAAK,CAAC,CAAC;gBAAE,SAAS;YAEhC,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAEvD,qGAAqG;YACrG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IACD,6FAA6F;AAC/F,CAAC;AAED,yCAAyC;AACzC,WAAW,EAAE,CAAC;AAEd,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,oCAAoC,CAAC;KACjD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,qBAAqB;AACrB,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,2BAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,kBAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,mCAAmB,CAAC,CAAC;AAExC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codecrypto-cli",
3
- "version": "1.0.14",
3
+ "version": "1.0.15",
4
4
  "description": "CLI tool for CodeCrypto operations",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -22,6 +22,7 @@
22
22
  "dependencies": {
23
23
  "chalk": "^4.1.2",
24
24
  "commander": "^12.0.0",
25
+ "ethers": "^6.9.0",
25
26
  "inquirer": "^8.2.5",
26
27
  "jose": "^6.1.3",
27
28
  "ora": "^5.4.1"
@@ -29,8 +30,8 @@
29
30
  "devDependencies": {
30
31
  "@types/inquirer": "^9.0.7",
31
32
  "@types/node": "^20.10.0",
32
- "tsx": "^4.7.0",
33
- "typescript": "^5.3.0"
33
+ "tsx": "^4.21.0",
34
+ "typescript": "^5.9.3"
34
35
  },
35
36
  "engines": {
36
37
  "node": ">=16.0.0"
@@ -5,6 +5,7 @@ import { execSync } from 'child_process';
5
5
  import * as fs from 'fs';
6
6
  import * as path from 'path';
7
7
  import * as os from 'os';
8
+ import { ethers } from 'ethers';
8
9
 
9
10
  export const deployScCommand = new Command('deploy-sc')
10
11
  .description('Deploy smart contract using Foundry')
@@ -156,6 +157,44 @@ export const deployScCommand = new Command('deploy-sc')
156
157
  forgeArgs.push('--slow');
157
158
  }
158
159
 
160
+ // Validar saldo antes de desplegar (solo si se usa private-key)
161
+ if (options.privateKey && !options.anvil && options.account === undefined) {
162
+ const balanceSpinner = ora('Verificando saldo de la cuenta...').start();
163
+ try {
164
+ const provider = new ethers.JsonRpcProvider(options.url);
165
+ const wallet = new ethers.Wallet(options.privateKey, provider);
166
+ const address = wallet.address;
167
+ const balance = await provider.getBalance(address);
168
+
169
+ // Convertir a ETH (mínimo 1 ETH recomendado)
170
+ const balanceInEth = ethers.formatEther(balance);
171
+ const minBalance = ethers.parseEther('1.0');
172
+
173
+ balanceSpinner.succeed(`Saldo verificado: ${balanceInEth} ETH`);
174
+
175
+ if (balance < minBalance) {
176
+ console.error(chalk.red('\n❌ Error: Saldo insuficiente en la cuenta'));
177
+ console.error(chalk.red(` Dirección: ${address}`));
178
+ console.error(chalk.red(` Saldo actual: ${balanceInEth} ETH`));
179
+ console.error(chalk.red(` Saldo mínimo recomendado: 1.0 ETH`));
180
+ console.error(chalk.yellow('\n💡 Asegúrate de tener suficiente saldo para pagar las fees de gas'));
181
+ console.log(chalk.cyan('\n🚰 Obtén fondos del faucet:'));
182
+ console.log(chalk.cyan(` ${chalk.underline('https://faucet.codecrypto.academy')}`));
183
+ console.log(chalk.gray(` Visita el faucet y solicita fondos para tu dirección: ${address}\n`));
184
+ process.exit(1);
185
+ }
186
+
187
+ console.log(chalk.green(` Dirección: ${chalk.cyan(address)}`));
188
+ console.log(chalk.green(` Saldo: ${chalk.cyan(balanceInEth)} ETH\n`));
189
+ } catch (error: any) {
190
+ balanceSpinner.warn(`No se pudo verificar el saldo: ${error.message}`);
191
+ console.log(chalk.yellow(' Continuando con el despliegue...'));
192
+ console.log(chalk.yellow(' Asegúrate de tener suficiente saldo para las fees de gas'));
193
+ console.log(chalk.cyan('\n🚰 Si necesitas fondos, usa el faucet:'));
194
+ console.log(chalk.cyan(` ${chalk.underline('https://faucet.codecrypto.academy')}\n`));
195
+ }
196
+ }
197
+
159
198
  // Ejecutar el script
160
199
  const deploySpinner = ora('Desplegando smart contract...').start();
161
200
 
@@ -258,7 +297,8 @@ async function uploadDeploymentResults(config: {
258
297
  }
259
298
 
260
299
  const email = tokenData.email;
261
- const serverUrl = tokenData.serverUrl || process.env.CODECRYPTO_API_URL || process.env.API_URL || 'https://proyectos.codecrypto.academy';
300
+ // URL específica para subir smart contracts
301
+ const uploadServerUrl = process.env.CODECRYPTO_UPLOAD_URL || process.env.UPLOAD_SMART_CONTRACT_URL || 'https://proyectos.proyectos.codecrypto.academy';
262
302
  const token = tokenData.token;
263
303
 
264
304
  if (!email) {
@@ -323,7 +363,7 @@ async function uploadDeploymentResults(config: {
323
363
  }
324
364
 
325
365
  // 6. Hacer la llamada POST al endpoint
326
- const apiUrl = `${serverUrl}/api/uploadSmartContract`;
366
+ const apiUrl = `${uploadServerUrl}/api/uploadSmartContract`;
327
367
 
328
368
  // Log de la petición (solo si debug está activado)
329
369
  if (config.debug) {
@@ -0,0 +1,139 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import ora from 'ora';
4
+ import * as fs from 'fs';
5
+ import * as path from 'path';
6
+ import * as os from 'os';
7
+ import { ethers } from 'ethers';
8
+
9
+ interface Account {
10
+ address: string;
11
+ private_key: string;
12
+ }
13
+
14
+ interface KeysFile {
15
+ mnemonic: string;
16
+ accounts: Account[];
17
+ }
18
+
19
+ export const generateKeysCommand = new Command('generate-keys')
20
+ .description('Generate Foundry keys file with mnemonic and derived accounts')
21
+ .option('-m, --mnemonic <mnemonic>', 'Mnemonic phrase (if not provided, a random one will be generated)')
22
+ .option('-n, --count <number>', 'Number of accounts to generate', '10')
23
+ .option('-o, --output <path>', 'Output file path', '~/.foundry/keys.json')
24
+ .action(async (options) => {
25
+ console.log(chalk.blue('\n🔑 CodeCrypto Foundry Keys Generator\n'));
26
+
27
+ try {
28
+ // Parse count
29
+ const accountCount = parseInt(options.count, 10);
30
+ if (isNaN(accountCount) || accountCount < 1 || accountCount > 100) {
31
+ console.error(chalk.red('❌ Error: Account count must be between 1 and 100'));
32
+ process.exit(1);
33
+ }
34
+
35
+ // Generate or use provided mnemonic
36
+ let mnemonic: string;
37
+ if (options.mnemonic) {
38
+ mnemonic = options.mnemonic.trim();
39
+ // Validate mnemonic
40
+ if (!ethers.Mnemonic.isValidMnemonic(mnemonic)) {
41
+ console.error(chalk.red('❌ Error: Invalid mnemonic phrase'));
42
+ process.exit(1);
43
+ }
44
+ } else {
45
+ // Generate random mnemonic
46
+ const spinner = ora('Generating random mnemonic...').start();
47
+ mnemonic = ethers.Mnemonic.entropyToPhrase(ethers.randomBytes(16));
48
+ spinner.succeed('Random mnemonic generated');
49
+ }
50
+
51
+ // Derive accounts
52
+ const accountsSpinner = ora(`Deriving ${accountCount} account(s) from mnemonic...`).start();
53
+ const accounts: Account[] = [];
54
+
55
+ try {
56
+ for (let i = 0; i < accountCount; i++) {
57
+ // Use HDNodeWallet.fromPhrase with the full derivation path
58
+ // This creates a wallet directly from mnemonic at the specified path
59
+ const wallet = ethers.HDNodeWallet.fromPhrase(mnemonic, `m/44'/60'/0'/0/${i}`);
60
+ accounts.push({
61
+ address: wallet.address,
62
+ private_key: wallet.privateKey,
63
+ });
64
+ }
65
+
66
+ accountsSpinner.succeed(`Generated ${accountCount} account(s)`);
67
+ } catch (error: any) {
68
+ accountsSpinner.fail('Failed to derive accounts');
69
+ console.error(chalk.red(`❌ Error: ${error.message}`));
70
+ process.exit(1);
71
+ }
72
+
73
+ // Prepare output data
74
+ const keysData: KeysFile = {
75
+ mnemonic,
76
+ accounts,
77
+ };
78
+
79
+ // Resolve output path
80
+ let outputPath = options.output;
81
+ if (outputPath.startsWith('~')) {
82
+ outputPath = path.join(os.homedir(), outputPath.slice(1));
83
+ }
84
+ outputPath = path.resolve(outputPath);
85
+
86
+ // Create directory if it doesn't exist
87
+ const outputDir = path.dirname(outputPath);
88
+ if (!fs.existsSync(outputDir)) {
89
+ const dirSpinner = ora(`Creating directory: ${outputDir}`).start();
90
+ try {
91
+ fs.mkdirSync(outputDir, { recursive: true });
92
+ dirSpinner.succeed(`Directory created: ${outputDir}`);
93
+ } catch (error: any) {
94
+ dirSpinner.fail('Failed to create directory');
95
+ console.error(chalk.red(`❌ Error: ${error.message}`));
96
+ process.exit(1);
97
+ }
98
+ }
99
+
100
+ // Write file
101
+ const writeSpinner = ora(`Writing keys to ${outputPath}...`).start();
102
+ try {
103
+ fs.writeFileSync(outputPath, JSON.stringify(keysData, null, 2), 'utf-8');
104
+ writeSpinner.succeed(`Keys saved to ${outputPath}`);
105
+ } catch (error: any) {
106
+ writeSpinner.fail('Failed to write file');
107
+ console.error(chalk.red(`❌ Error: ${error.message}`));
108
+ process.exit(1);
109
+ }
110
+
111
+ // Display summary
112
+ console.log(chalk.green('\n✅ Keys generated successfully!\n'));
113
+ console.log(chalk.gray('Summary:'));
114
+ console.log(chalk.white(` Mnemonic: ${chalk.cyan(mnemonic)}`));
115
+ console.log(chalk.white(` Accounts: ${chalk.cyan(accountCount)}`));
116
+ console.log(chalk.white(` Output: ${chalk.cyan(outputPath)}\n`));
117
+
118
+ // Display first few accounts
119
+ console.log(chalk.gray('First 3 accounts:'));
120
+ accounts.slice(0, 3).forEach((account, index) => {
121
+ console.log(chalk.white(` ${index + 1}. ${chalk.cyan(account.address)}`));
122
+ console.log(chalk.gray(` Private Key: ${chalk.dim(account.private_key)}`));
123
+ });
124
+
125
+ if (accountCount > 3) {
126
+ console.log(chalk.gray(` ... and ${accountCount - 3} more account(s)\n`));
127
+ } else {
128
+ console.log('');
129
+ }
130
+
131
+ console.log(chalk.yellow('⚠️ Warning: Keep your mnemonic and private keys secure!'));
132
+ console.log(chalk.yellow(' Never share them or commit them to version control.\n'));
133
+
134
+ } catch (error: any) {
135
+ console.error(chalk.red(`\n❌ Error: ${error.message}`));
136
+ process.exit(1);
137
+ }
138
+ });
139
+
package/src/index.ts CHANGED
@@ -8,6 +8,7 @@ import { deployCommand } from './commands/deploy';
8
8
  import { deployScCommand } from './commands/deploy-sc';
9
9
  import { authCommand } from './commands/auth';
10
10
  import { doctorCommand } from './commands/doctor';
11
+ import { generateKeysCommand } from './commands/generate-keys';
11
12
 
12
13
  // Cargar variables de entorno desde ~/.codecrypto/.env si existe
13
14
  function loadEnvFile() {
@@ -55,5 +56,6 @@ program.addCommand(deployCommand);
55
56
  program.addCommand(deployScCommand);
56
57
  program.addCommand(authCommand);
57
58
  program.addCommand(doctorCommand);
59
+ program.addCommand(generateKeysCommand);
58
60
 
59
61
  program.parse(process.argv);