import type { PresentArray } from '@glimmer/interfaces'; import type { LocatedWithOptionalSpan, LocatedWithSpan } from './location'; import type { SourceOffset } from './span'; import { SourceSpan } from './span'; export type HasSpan = SourceSpan | LocatedWithSpan | PresentArray; export type MaybeHasSpan = SourceSpan | LocatedWithOptionalSpan | LocatedWithOptionalSpan[] | null; export type ToSourceOffset = number | SourceOffset; export declare class SpanList { static range(span: PresentArray): SourceSpan; static range(span: HasSourceSpan[], fallback: SourceSpan): SourceSpan; _span: SourceSpan[]; constructor(span?: SourceSpan[]); add(offset: SourceSpan): void; getRangeOffset(fallback: SourceSpan): SourceSpan; } export type HasSourceSpan = { loc: SourceSpan; } | SourceSpan | [HasSourceSpan, ...HasSourceSpan[]]; export declare function loc(span: HasSourceSpan): SourceSpan; export type MaybeHasSourceSpan = { loc: SourceSpan; } | SourceSpan | MaybeHasSourceSpan[]; export declare function hasSpan(span: MaybeHasSourceSpan): span is HasSourceSpan; export declare function maybeLoc(location: MaybeHasSourceSpan, fallback: SourceSpan): SourceSpan;