graph TB
  subgraph TxPool
    direction TB
    pool[(All Transactions)]
    subgraph Subpools
        direction TB
        B3[(Queued)]
        B1[(Pending)]
        B2[(Basefee)]
        B4[(Blob)]
    end
  end
  discard([discard])
  production([Block Production])
  new([New Block])
  A[Incoming Tx] --> B[Validation] -->|insert| pool
  pool --> |if ready + blobfee too low| B4
  pool --> |if ready| B1
  pool --> |if ready + basefee too low| B2
  pool --> |nonce gap or lack of funds| B3
  pool --> |update| pool
  B1 --> |best| production
  B2 --> |worst| discard
  B3 --> |worst| discard
  B4 --> |worst| discard
  B1 --> |increased blob fee| B4
  B4 --> |decreased blob fee| B1
  B1 --> |increased base fee| B2
  B2 --> |decreased base fee| B1
  B3 --> |promote| B1
  B3 --> |promote| B2
  new --> |apply state changes| pool
