import type { Comparator } from "@rickosborne/typical";
import { Bound } from "./bound.js";
import type { RangeLike, Unbounded } from "./range-like.js";
export declare abstract class RangeBase<T> implements RangeLike<T> {
    readonly comparator: Comparator<T>;
    readonly isBounded: boolean;
    readonly isBoundedAbove: boolean;
    readonly isBoundedBelow: boolean;
    readonly isEmpty: boolean;
    readonly isLowerInc: boolean;
    readonly isSingleton: boolean;
    readonly isUpperInc: boolean;
    abstract readonly label: string;
    readonly lowerBound: Bound<T> | Unbounded;
    readonly lowerEndpoint: T | undefined;
    readonly upperBound: Bound<T> | Unbounded;
    readonly upperEndpoint: T | undefined;
    protected constructor(isLowerInc: boolean, lowerBound: T | Unbounded, upperBound: T | Unbounded, isUpperInc: boolean, comparator: Comparator<T>);
    assertIsA(obj: unknown): asserts obj is T;
    castAs(obj: unknown): T;
    compareTo(other: RangeLike<T>): number;
    contains(value: T): boolean;
    encloses(other: RangeLike<T>): boolean;
    isA(obj: unknown): obj is T;
    abstract isType(obj: unknown): obj is T;
    toString(): string;
    [Symbol.toStringTag](): string;
}
//# sourceMappingURL=range-base.d.ts.map