I still think it would be good to make finality and block_to mutually exclusive - but I would leave this for a follow-up PR.
To illustrate the idea, in Rust, it would look something like this:
struct SyncChainMmrRequest {
block_from: u32,
block_to: UpperBlockBound,
}
// the name is just illustrative
enum UpperBlockBound {
Block(u32),
LastCommitted,
LastProven,
}
Originally posted by @bobbinth in #1725 (comment)