import type { HsonNode } from "../../core/types.js"; import type { RawAttr, Tokens, TokenClose, TokenOpen } from "../../api/transform/token.types.js"; export type HsonSourceRange = Readonly<{ start: number; end: number; }>; export type HsonSourcePath = readonly number[]; export type HsonNodeSourceRole = "coverage" | "name" | "value" | "open" | "close"; export type HsonAttributeSourceRole = "coverage" | "name" | "value"; export type HsonSourceLocation = Readonly<{ kind: "node"; path: HsonSourcePath; role: HsonNodeSourceRole; }> | Readonly<{ kind: "attribute"; owner: HsonSourcePath; name: string; role: HsonAttributeSourceRole; }>; export interface HsonSourceProvenance { readonly sourceRange: HsonSourceRange; range(location: HsonSourceLocation): HsonSourceRange | undefined; } export type ParsedHsonWithProvenance = Readonly<{ value: HsonNode; provenance: HsonSourceProvenance; }>; type NodeRoles = Partial>; type AttributeRoles = Partial>; export type HsonTokenSourceEvidence = Readonly<{ roles: NodeRoles; coverageStart?: number; coverageEnd?: number; }>; export interface HsonSourceLexicalCollector { /** Private observation only; completion may stop scanning at a proven grammar slot. */ completionSlot?(kind: "member" | "value" | "tag" | "header" | "child" | "attribute-value", range: HsonSourceRange): void; recordToken(token: Tokens, evidence: HsonTokenSourceEvidence): void; recordAttribute(attr: RawAttr, roles: AttributeRoles): void; } export declare class HsonSourceProvenanceBuilder implements HsonSourceLexicalCollector { private readonly tokenEvidence; private readonly attributeEvidence; private readonly drafts; recordToken(token: Tokens, evidence: HsonTokenSourceEvidence): void; recordAttribute(attr: RawAttr, roles: AttributeRoles): void; bindScalar(node: HsonNode, token: Tokens): void; bindEmptyObject(node: HsonNode, token: Tokens): void; bindTagStart(node: HsonNode, token: TokenOpen): void; bindTagEnd(node: HsonNode, open: TokenOpen, close: TokenClose): void; bindArray(node: HsonNode, open: Tokens, close: Tokens): void; bindSynthetic(node: HsonNode, children: readonly HsonNode[]): void; bindArrayItem(node: HsonNode, child: HsonNode): void; finalize(value: HsonNode, sourceLength: number): HsonSourceProvenance; } export {}; //# sourceMappingURL=hson-source-provenance.d.ts.map