/// Macro to implement PoolBase trait for pool infusers and viewers
///
/// Assumes the struct has:
/// - `pool_key` field with `token_a` and `token_b` fields
/// - For V3: `V3PoolKey` with `token_a`, `token_b`, and `fee` fields
/// - For Ramses V3: `V3PoolKey` with `token_a`, `token_b`, and `fee` fields
/// - For Slipstream: `SlipstreamPoolKey` with `token_a`, `token_b`, and
/// `tick_spacing` fields
/// - For V4: `V4PoolKey` with `token_a`, `token_b`, `fee`, and `tick_spacing`
/// fields