Instalación del Paquete

Instala CreateKit usando tu gestor de paquetes preferido:
npm install @b3dotfun/basemint
CreateKit está construido con TypeScript y proporciona definiciones de tipo completas de forma predeterminada.

Dependencias

CreateKit se construye sobre tecnologías web3 modernas y requiere las siguientes dependencias de pares:
npm install viem @wagmi/core

Configuración del Entorno

1. Configurar Redes de Cadena

CreateKit proporciona definiciones de cadena pre-configuradas para redes B3:
chains.ts
import { b3Mainnet, b3Testnet } from '@b3dotfun/basemint'

// B3 Mainnet (Producción)
console.log('ID de cadena:', b3Mainnet.id) // 8333
console.log('Nombre:', b3Mainnet.name)
console.log('URL de RPC:', b3Mainnet.rpcUrls.default.http[0])

// B3 Testnet (Desarrollo)
console.log('ID de cadena:', b3Testnet.id) // 1993
console.log('Nombre:', b3Testnet.name)
console.log('URL de RPC:', b3Testnet.rpcUrls.default.http[0])

2. Inicializar Cliente Viem

Configura tu cliente viem para interactuar con la blockchain:
client.ts
import { createPublicClient, createWalletClient, http } from 'viem'
import { privateKeyToAccount } from 'viem/accounts'
import { b3Testnet } from '@b3dotfun/basemint'

// Cliente público para leer datos
export const publicClient = createPublicClient({
  chain: b3Testnet,
  transport: http()
})

// Cliente de billetera para transacciones (para uso del lado del servidor)
export const walletClient = createWalletClient({
  chain: b3Testnet,
  transport: http(),
  account: privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`)
})

3. Variables de Entorno

Crea un archivo .env en la raíz de tu proyecto:
.env
# Necesario para firmar transacciones
PRIVATE_KEY=0x...

# Opcional: Puntos finales RPC personalizados
B3_MAINNET_RPC=https://your-custom-rpc.com
B3_TESTNET_RPC=https://your-custom-testnet-rpc.com
Nunca comprometas claves privadas al control de versiones. Usa variables de entorno o soluciones seguras de gestión de claves.

Integración con Frameworks

Configuración de Next.js

Para aplicaciones Next.js, crea un archivo de configuración:
lib/createkit.ts
import { createPublicClient, http } from 'viem'
import { b3Testnet } from '@b3dotfun/basemint'
import { 
  CollectionManager, 
  RewardTracker, 
  BaseMintStorage 
} from '@b3dotfun/basemint'

// Inicializar clientes
export const publicClient = createPublicClient({
  chain: b3Testnet,
  transport: http()
})

// Inicializar gestores de CreateKit
export const collectionManager = new CollectionManager(publicClient)
export const rewardTracker = new RewardTracker(publicClient)
export const storage = new BaseMintStorage({
  baseUrl: 'https://api.basemint.fun'
})

Configuración de React/Vite

src/lib/createkit.ts
import { createPublicClient, http } from 'viem'
import { b3Testnet } from '@b3dotfun/basemint'
import { CollectionManager } from '@b3dotfun/basemint'

export const publicClient = createPublicClient({
  chain: b3Testnet,
  transport: http(import.meta.env.VITE_RPC_URL)
})

export const collectionManager = new CollectionManager(publicClient)

Verificar Instalación

Prueba tu instalación con un script simple:
test-installation.ts
import { b3Testnet, CollectionManager } from '@b3dotfun/basemint'
import { createPublicClient, http } from 'viem'

async function testInstallation() {
  try {
    // Crear cliente
    const client = createPublicClient({
      chain: b3Testnet,
      transport: http()
    })

    // Inicializar gestor
    const manager = new CollectionManager(client)
    
    // Probar conexión
    const blockNumber = await client.getBlockNumber()
    console.log('✅ Conexión exitosa a B3 Testnet')
    console.log(`📊 Número de bloque actual: ${blockNumber}`)
    
    // Probar interacción con contrato
    const factoryAddress = manager.getFactoryAddress()
    console.log(`🏭 Dirección de la fábrica: ${factoryAddress}`)
    
    console.log('🎉 Instalación de CreateKit exitosa!')
  } catch (error) {
    console.error('❌ Prueba de instalación fallida:', error)
  }
}

testInstallation()
Ejecuta el script de prueba:
npx tsx test-installation.ts

Configuración de TypeScript

Asegúrate de que tu tsconfig.json incluya las configuraciones necesarias:
tsconfig.json
{
  "compilerOptions": {
    "strict": true,
    "moduleResolution": "node",
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "target": "ES2020",
    "module": "ESNext",
    "lib": ["ES2020", "DOM"]
  }
}

Próximos Pasos

Ahora que tienes CreateKit instalado y configurado, estás listo para comenzar a construir:

Solución de Problemas