nautechsystems/nautilus_trader · error
RPC parsing of burn event is not defined in this dex: {}:{}
Error message
RPC parsing of burn event is not defined in this dex: {}:{} What it means
Raised by parse_burn_event_rpc when no RPC burn-event parser (parse_burn_event_rpc_fn) is registered on the DEX. Burn events represent liquidity removal; when the parser slot is None the method bails with chain:name. Like the other parser-gap errors, it is a configuration/capability signal rather than malformed input.
Source
Thrown at crates/adapters/blockchain/src/exchanges/extended.rs:492
} else {
anyhow::bail!(
"RPC parsing of mint event is not defined in this dex: {}:{}",
self.dex.chain,
self.dex.name
)
}
}
/// Parses a burn event from an RPC log.
///
/// # Errors
///
/// Returns an error if the DEX does not have an RPC burn event parser defined or if parsing fails.
pub fn parse_burn_event_rpc(&self, log: &RpcLog) -> anyhow::Result<BurnEvent> {
if let Some(parse_fn) = &self.parse_burn_event_rpc_fn {
parse_fn(self.dex.clone(), log)
} else {
anyhow::bail!(
"RPC parsing of burn event is not defined in this dex: {}:{}",
self.dex.chain,
self.dex.name
)
}
}
/// Parses an initialize event from an RPC log.
///
/// # Errors
///
/// Returns an error if the DEX does not have an RPC initialize event parser defined or if parsing fails.
pub fn parse_initialize_event_rpc(&self, log: &RpcLog) -> anyhow::Result<InitializeEvent> {
if let Some(parse_fn) = &self.parse_initialize_event_rpc_fn {
parse_fn(self.dex.clone(), log)
} else {
anyhow::bail!(
"RPC parsing of initialize event is not defined in this dex: {}:{}",View on GitHub (pinned to 18893faf8b)
Solutions
- Register parse_burn_event_rpc_fn for the DEX at construction time.
- Use the DEX's HyperSync burn parser (parse_burn_event_hypersync) when RPC parsing is unsupported.
- Filter burn topics away from DEXs lacking RPC support before dispatch.
- Confirm the log's emitting contract maps to this DEX.
Defensive patterns
Strategy: try-catch
Validate before calling
if !dex_supports(dex, DexEvent::BurnRpc) { return Ok(()); } Type guard
fn has_rpc_burn_parser(dex: &Dex) -> bool { dex.parse_burn_event_rpc_fn.is_some() } Try / catch
match dex.parse_burn_event_rpc(&log) {
Ok(evt) => handle_burn(evt),
Err(e) if e.to_string().contains("not defined in this dex") => tracing::debug!("RPC burn parsing unsupported on {}", dex.name()),
Err(e) => return Err(e),
} Prevention
- Register burn parsers alongside mint parsers to keep liquidity tracking symmetric.
- Gate RPC subscriptions on each DEX's registered parser set.
- Confirm the emitting contract belongs to this DEX before parsing.
- Include burn-event coverage in per-DEX integration tests.
When it happens
Trigger: Calling dex.parse_burn_event_rpc(&log) on RPC liquidity-removal logs for a DEX that never registered an RPC burn parser.
Common situations: RPC-based liquidity tracking on HyperSync-only DEX adapters; incomplete new-DEX registration; forks with divergent Burn event signatures left unimplemented over RPC.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- RPC parsing of mint event is not defined in this dex: {}:{}
- RPC parsing of pool created event is not defined in this dex
- RPC parsing of swap event is not defined in this dex: {}:{}
- RPC parsing of initialize event is not defined in this dex:
- RPC parsing of collect event is not defined in this dex: {}:
AI-assisted analysis of nautechsystems/nautilus_trader@18893faf8b (2026-09-08).
Data as JSON: /api/errors/8ab966a4101d08de.
Report an issue: GitHub.