import type { AppdxItemHeadLine, ArticleGroupHeadLine, ArticleLine, BlankLine, Line, OtherLine, ParagraphItemLine, SupplProvisionAppdxItemHeadLine, SupplProvisionHeadLine, TableColumnLine, TOCHeadLine } from "../../node/cst/line"; import { LineType } from "../../node/cst/line"; /** * The extension of CST with the structure of indent blocks. * * A `VirtualLine` represents either a physical line or indent/dedent in the lawtext. The `VirtualLine` object has a property named `type` with the type of `VirtualLineType`, and the different types of `VirtualLine` are distinguished by that property. */ export type VirtualLine = PhysicalLine | Indent | Dedent; /** * The type identifiers of `VirtualLine` that are not included in {@link LineType}. */ export declare enum VirtualOnlyLineType { IND = "IND",// Indent DED = "DED",// Dedent TAG = "TAG",// TOC ArticleGroup TSP = "TSP",// TOC SupplProvision CAP = "CAP" } /** * The identifiers that distinguish the different types of `VirtualLine`. */ export type VirtualLineType = LineType | VirtualOnlyLineType; export type PhysicalLine = { type: LineType.BNK; line: BlankLine; virtualRange: [start: number, end: number]; virtualIndentDepth: number; } | { type: LineType.TOC; line: TOCHeadLine; virtualRange: [start: number, end: number]; virtualIndentDepth: number; } | { type: LineType.ARG | VirtualOnlyLineType.TAG; line: ArticleGroupHeadLine; virtualRange: [start: number, end: number]; virtualIndentDepth: number; } | { type: LineType.APP; line: AppdxItemHeadLine; virtualRange: [start: number, end: number]; virtualIndentDepth: number; } | { type: LineType.SPR | VirtualOnlyLineType.TSP; line: SupplProvisionHeadLine; virtualRange: [start: number, end: number]; virtualIndentDepth: number; } | { type: LineType.SPA; line: SupplProvisionAppdxItemHeadLine; virtualRange: [start: number, end: number]; virtualIndentDepth: number; } | { type: LineType.ART; line: ArticleLine; virtualRange: [start: number, end: number]; virtualIndentDepth: number; } | { type: LineType.PIT; line: ParagraphItemLine; virtualRange: [start: number, end: number]; virtualIndentDepth: number; } | { type: LineType.TBL; line: TableColumnLine; virtualRange: [start: number, end: number]; virtualIndentDepth: number; } | { type: LineType.OTH | VirtualOnlyLineType.CAP; line: OtherLine; virtualRange: [start: number, end: number]; virtualIndentDepth: number; }; export interface Indent { type: VirtualOnlyLineType.IND; virtualRange: [start: number, end: number]; } export interface Dedent { type: VirtualOnlyLineType.DED; virtualRange: [start: number, end: number]; } export declare const isVirtualLine: (line: Line | VirtualLine) => line is VirtualLine; /** * The parsing logic that converts a sequence of {@link Line}s to {@link VirtualLine}s. */ export declare const toVirtualLines: (lines: Line[]) => VirtualLine[];