package com.xfestudio.xfeservermanager.api.command;

/** Inclusive selector distance range. A null endpoint means unbounded. */
public record DistanceRange(Double minimum, Double maximum) {
    public DistanceRange {
        if (minimum != null && (!Double.isFinite(minimum) || minimum < 0.0)) {
            throw new IllegalArgumentException("minimum must be finite and non-negative");
        }
        if (maximum != null && (!Double.isFinite(maximum) || maximum < 0.0)) {
            throw new IllegalArgumentException("maximum must be finite and non-negative");
        }
        if (minimum != null && maximum != null && minimum > maximum) {
            throw new IllegalArgumentException("minimum must not exceed maximum");
        }
    }

    public boolean isBounded() {
        return maximum != null;
    }
}
