declare const TheRange: unique symbol; interface RangeBase { [TheRange]: true; } declare class RangeBase { } export declare type Ranges = RangeAll | TRange | TRangeTo | TRangeFrom | TRangeEq | TRangeToEq; export declare type NRanges = RangeAll | NRange | NRangeTo | NRangeFrom | NRangeEq | NRangeToEq; export declare type IRanges = RangeAll | IRange | IRangeTo | IRangeFrom | IRangeEq | IRangeToEq; /** `..` */ export declare class RangeAll extends RangeBase { constructor(); } /** `from..to` */ export declare class TRange extends RangeBase { from: T; to: T; constructor(from: T, to: T); } /** `..to` */ export declare class TRangeTo extends RangeBase { to: T; constructor(to: T); } /** `from..` */ export declare class TRangeFrom extends RangeBase { from: T; constructor(from: T); } /** `from..=to` */ export declare class TRangeEq extends RangeBase { from: T; to: T; constructor(from: T, to: T); } /** `..=to` */ export declare class TRangeToEq extends RangeBase { to: T; constructor(to: T); } /** `from..to` */ export declare class NRange extends TRange implements Iterable { constructor(from: number, to: number); [Symbol.iterator](): { [Symbol.iterator](): IterableIterator; next(): IteratorResult; }; } /** `..to` */ export declare class NRangeTo extends TRangeTo implements Iterable { constructor(to: number); [Symbol.iterator](): { [Symbol.iterator](): IterableIterator; next(): IteratorResult; }; } /** `from..` */ export declare class NRangeFrom extends TRangeFrom implements Iterable { constructor(from: number); [Symbol.iterator](): { [Symbol.iterator](): IterableIterator; next(): IteratorResult; }; } /** `from..=to` */ export declare class NRangeEq extends TRangeEq implements Iterable { constructor(from: number, to: number); [Symbol.iterator](): { [Symbol.iterator](): IterableIterator; next(): IteratorResult; }; } /** `..=to` */ export declare class NRangeToEq extends TRangeToEq implements Iterable { constructor(to: number); [Symbol.iterator](): { [Symbol.iterator](): IterableIterator; next(): IteratorResult; }; } /** `from..to` */ export declare class IRange extends TRange implements Iterable { constructor(from: bigint, to: bigint); [Symbol.iterator](): { next(): IteratorResult; } | { [Symbol.iterator](): IterableIterator; next(): IteratorResult; }; } /** `..to` */ export declare class IRangeTo extends TRangeTo { constructor(to: bigint); [Symbol.iterator](): { next(): IteratorResult; } | { [Symbol.iterator](): IterableIterator; next(): IteratorResult; }; } /** `from..` */ export declare class IRangeFrom extends TRangeFrom implements Iterable { constructor(from: bigint); [Symbol.iterator](): { next(): IteratorResult; } | { [Symbol.iterator](): IterableIterator; next(): IteratorResult; }; } /** `from..=to` */ export declare class IRangeEq extends TRangeEq implements Iterable { constructor(from: bigint, to: bigint); [Symbol.iterator](): { [Symbol.iterator](): IterableIterator; next(): IteratorResult; }; } /** `..=to` */ export declare class IRangeToEq extends TRangeToEq { constructor(to: bigint); [Symbol.iterator](): { [Symbol.iterator](): IterableIterator; next(): IteratorResult; }; } export declare function rangeAll(): RangeAll; export declare function range(from: number, to: number): NRange; export declare function range(from: bigint, to: bigint): IRange; export declare function range(from: T, to: T): TRange; export declare function rangeTo(to: number): NRangeTo; export declare function rangeTo(to: bigint): IRangeTo; export declare function rangeTo(to: T): TRangeTo; export declare function rangeFrom(from: number): NRangeFrom; export declare function rangeFrom(from: bigint): IRangeFrom; export declare function rangeFrom(from: T): TRangeFrom; export declare function rangeEq(from: number, to: number): NRangeEq; export declare function rangeEq(from: bigint, to: bigint): IRangeEq; export declare function rangeEq(from: T, to: T): TRangeEq; export declare function rangeToEq(to: number): NRangeToEq; export declare function rangeToEq(to: bigint): IRangeToEq; export declare function rangeToEq(to: T): TRangeToEq; export declare function isRanges(v: any): v is Ranges; export declare namespace Ranges { function toTuple(range: RangeAll): []; function toTuple(range: TRange | TRangeEq): [from: number, to: number]; function toTuple(range: TRange | TRangeEq): [from: bigint, to: bigint]; function toTuple(range: TRangeFrom): [from: number]; function toTuple(range: TRangeFrom): [from: bigint]; function toTuple(range: TRangeTo | TRangeToEq): [from: 0, to: number]; function toTuple(range: TRangeTo | TRangeToEq): [from: 0n, to: bigint]; function toTuple(range: Ranges): [from?: number, to?: number]; function toTuple(range: Ranges): [from?: bigint, to?: bigint]; } export {};