┌───────────────────────────────────────────┐
                      │                ENTRADAS                   │
                      │                                           │
         LIVE         │  (A) Yellowstone Geyser -> txu            │
    (suscripción) ───▶│      (SubscribeUpdateTransaction)         │
                      │                                           │
         REPLAY       │  (B) Archivo tx.bin (VersionedTx bincode) │
    (logs/frames/bin) └───────────────┬───────────────────────────┘
                                      │
                                      ▼
                      ┌───────────────────────────────────────────┐
                      │                 main.rs                   │
                      │  - configura adapters[]                   │
                      │  - configura RPC                          │
                      │  - selecciona fuente: (A) o (B)           │
                      └───────────────┬───────────────────────────┘
                                      │
                         (A) txu      │      (B) tx.bin
                         directo      │      load_versioned_tx
                                      ▼
                      ┌───────────────────────────────────────────┐
                      │                engine.rs                  │
                      │  to_snapshot() -> TxuSnapshot             │
                      │   - version (legacy/v0)                   │
                      │   - account_keys + (ALT lookups opc.)     │
                      │   - instrucciones (orden + data)          │
                      │   - compute budget ixs                    │
                      └───────────────┬───────────────────────────┘
                                      │  TxuSnapshot
                                      ▼
             ┌─────────────────────────────────────────────────────────┐
             │                     protocols.rs                        │
             │  adapters[] = [ Meteora, PumpFun, Bonk, ... ]          │
             │                                                         │
             │  ┌──────────────┐   probe()   ┌─────────────────────┐  │
             │  │  Meteora     │◀───────────▶│  TxuSnapshot         │  │
             │  └─────┬────────┘             └─────────────────────┘  │
             │        │      (si reconoce)                              │
             │        ▼                                                 │
             │  extract_plan() -> SwapPlan                              │
             │   - PDAs/vaults del pool (NO cambiar)                    │
             │   - mints/cantidades (si las decodificas)                │
             │   - ixs crudas (incl. ComputeBudget)                     │
             │                                                          │
             │  build_message(SwapPlan, my_owner) -> PreparedMessage    │
             │   - sustituye: payer + ATAs del bundler → TUS ATAs       │
             │   - conserva: PDAs/vaults/Program IDs                    │
             │   - WSOL/ATA lifecycle (si faltan, marca crear)          │
             │   - v0+ALT: reutiliza ALT o expande claves               │
             └─────────┬───────────────────────────────────────────────┘
                       │ PreparedMessage (mensaje SIN firmar)
                       ▼
                ┌───────────────────────────────────────┐
                │                main.rs                │
                │  - inyecta recent_blockhash (RPC)    │
                │  - agrega ixs extra (create ATA/WSOL)│
                │  - firma con tu Keypair              │
                └───────────────┬──────────────────────┘
                                │  VersionedTransaction firmado
                                ▼
              ┌──────────────────────────────────────────────────┐
              │                     rpc.rs                       │
              │  getLatestBlockhash()                            │
              │  simulateTransaction()  ──▶ (CUs, logs, errores) │
              │  sendTransaction()       ──▶ signature (base58)  │
              └───────────────────┬──────────────────────────────┘
                                  │
                                  ▼
                     ┌────────────────────────────┐
                     │        Resultado           │
                     │  - ok: firma/slot          │
                     │  - fail: motivo/log        │
                     └────────────────────────────┘
Description
No description provided
Readme 388 KiB
Languages
Rust 100%