import type Parser from "web-tree-sitter"; import type { SupportedStructuredFormat } from "../parser/lang.js"; import type { OutlineDiff } from "../parser/diff.js"; import type { ParsedTree } from "../parser/runtime.js"; import type { OutlineEntry, JumpEntry } from "../parser/types.js"; import type { ProseProjection, ProseProjectionProvider } from "./colorful-prose-projection.js"; import type { EdictProjectionBundle, EdictProjectionProvider } from "./edict-projection.js"; import type { ProjectionProviderRegistry } from "./projection-provider-registry.js"; import type { ProjectionProfileResolver, ProjectionRoutingFailure, ResolvedAuthorityContext } from "./projection-profile-resolver.js"; import type { WesleyProjectionBundle } from "./wesley-projection.js"; export type BufferUnavailableReason = "UNSUPPORTED_LANGUAGE" | "PARSER_RUNTIME_NOT_READY" | "PROJECTION_AUTHORITY_UNAVAILABLE" | "PROJECTION_PROVIDER_UNAVAILABLE"; export type StructuredBufferFormat = SupportedStructuredFormat | "prose" | "edict"; export interface BufferPoint { readonly row: number; readonly column: number; } export interface BufferRange { readonly start: BufferPoint; readonly end: BufferPoint; } export type BufferSelection = BufferPoint | BufferRange; export interface WarmProjectionBasis { readonly kind: "editor_head"; readonly headId: string; readonly tick?: number | undefined; readonly editGroupId?: string | undefined; } export interface BufferOutlineResult { readonly path: string; readonly format: StructuredBufferFormat | null; readonly basis: WarmProjectionBasis | null; readonly outline: readonly OutlineEntry[]; readonly jumpTable: readonly JumpEntry[]; readonly partial: boolean; readonly reason?: BufferUnavailableReason | undefined; } export type SyntaxClass = "comment" | "function" | "keyword" | "number" | "operator" | "property" | "punctuation" | "string" | "type" | "variable"; export interface SyntaxSpan { readonly className: SyntaxClass; readonly range: BufferRange; readonly text: string; } export interface SyntaxSpanResult { readonly path: string; readonly format: StructuredBufferFormat | null; readonly basis: WarmProjectionBasis | null; readonly partial: boolean; readonly spans: readonly SyntaxSpan[]; readonly injections: readonly InjectionRegion[]; readonly reason?: BufferUnavailableReason | undefined; } export interface BufferDiagnostic { readonly severity: "error" | "warning"; readonly code: "parse_error" | "missing_node" | "compiler_diagnostic"; readonly message: string; readonly range: BufferRange; readonly source?: "tree_sitter" | "edict" | "wesley" | undefined; readonly stage?: string | undefined; readonly kind?: string | undefined; } export interface DiagnosticsResult { readonly path: string; readonly format: StructuredBufferFormat | null; readonly basis: WarmProjectionBasis | null; readonly partial: boolean; readonly diagnostics: readonly BufferDiagnostic[]; readonly reason?: BufferUnavailableReason | undefined; } export interface NodeSummary { readonly type: string; readonly named: boolean; readonly range: BufferRange; readonly text: string; readonly name?: string | undefined; } export interface NodeLookupResult { readonly path: string; readonly format: StructuredBufferFormat | null; readonly basis: WarmProjectionBasis | null; readonly partial: boolean; readonly node: NodeSummary | null; readonly parents: readonly NodeSummary[]; readonly reason?: BufferUnavailableReason | undefined; } export interface InjectionRegion { readonly language: string; readonly range: BufferRange; readonly reason: "fenced_code_block" | "jsx_syntax" | "tagged_template"; readonly hint?: string | undefined; } export interface InjectionResult { readonly path: string; readonly format: StructuredBufferFormat | null; readonly basis: WarmProjectionBasis | null; readonly injections: readonly InjectionRegion[]; readonly reason?: BufferUnavailableReason | undefined; } export interface FoldRegion { readonly kind: string; readonly range: BufferRange; } export interface FoldRegionsResult { readonly path: string; readonly format: StructuredBufferFormat | null; readonly basis: WarmProjectionBasis | null; readonly partial: boolean; readonly regions: readonly FoldRegion[]; readonly reason?: BufferUnavailableReason | undefined; } export interface WarmProjectionParseStatus { readonly basis: WarmProjectionBasis | null; readonly format: StructuredBufferFormat | null; readonly partial: boolean; readonly status: "full" | "partial" | "unsupported"; readonly reason?: BufferUnavailableReason | undefined; } export type ProjectionAuthoritySlot = { readonly state: "not_configured"; } | { readonly state: "resolved"; readonly authority: ResolvedAuthorityContext; } | { readonly state: "failed"; readonly failure: ProjectionRoutingFailure; }; export interface WarmProjectionBundleResult { readonly path: string; readonly format: StructuredBufferFormat | null; readonly basis: WarmProjectionBasis | null; readonly partial: boolean; readonly authority: ProjectionAuthoritySlot; readonly parseStatus: WarmProjectionParseStatus; readonly syntax: SyntaxSpanResult; readonly diagnostics: DiagnosticsResult; readonly folds: FoldRegionsResult; readonly outline: BufferOutlineResult; } export interface SelectionStepResult { readonly path: string; readonly format: StructuredBufferFormat | null; readonly basis: WarmProjectionBasis | null; readonly partial: boolean; readonly range: BufferRange | null; readonly node: NodeSummary | null; readonly reason?: BufferUnavailableReason | "NO_SELECTION_STEP" | undefined; } export interface SymbolOccurrence { readonly symbol: string; readonly kind: "declaration" | "occurrence"; readonly range: BufferRange; } export interface SymbolOccurrencesResult { readonly path: string; readonly format: StructuredBufferFormat | null; readonly basis: WarmProjectionBasis | null; readonly partial: boolean; readonly symbol: string | null; readonly occurrences: readonly SymbolOccurrence[]; readonly scopeApplied: "buffer"; readonly reason?: BufferUnavailableReason | "SYMBOL_NOT_FOUND" | undefined; } export interface RenameEditPreview { readonly path: string; readonly range: BufferRange; readonly before: string; readonly after: string; } export interface RenamePreviewResult { readonly path: string; readonly format: StructuredBufferFormat | null; readonly basis: WarmProjectionBasis | null; readonly partial: boolean; readonly symbol: string | null; readonly nextName: string; readonly edits: readonly RenameEditPreview[]; readonly scopeApplied: "buffer"; readonly reason?: BufferUnavailableReason | "SYMBOL_NOT_FOUND" | undefined; } export interface ChangedRegion { readonly kind: "delete" | "insert" | "replace"; readonly oldRange: BufferRange; readonly newRange: BufferRange; readonly oldText: string; readonly newText: string; } export interface StructuredBufferDiffResult { readonly path: string; readonly format: StructuredBufferFormat | null; readonly fromBasis: WarmProjectionBasis | null; readonly toBasis: WarmProjectionBasis | null; readonly partial: boolean; readonly outlineDiff: OutlineDiff; readonly changedRegions: readonly ChangedRegion[]; } export type SemanticSummaryKind = "no_changes" | "whitespace_only" | "comments_only" | "renamed_symbol" | "added_symbol" | "removed_symbol" | "changed_signature" | "changed_structure" | "changed_regions_only" | "mixed_edit"; export interface SemanticSummaryResult { readonly path: string; readonly format: StructuredBufferFormat | null; readonly fromBasis: WarmProjectionBasis | null; readonly toBasis: WarmProjectionBasis | null; readonly partial: boolean; readonly kind: SemanticSummaryKind; readonly summary: string; readonly facts: readonly string[]; } export interface AnchorAffinityResult { readonly path: string; readonly format: StructuredBufferFormat | null; readonly fromBasis: WarmProjectionBasis | null; readonly toBasis: WarmProjectionBasis | null; readonly partial: boolean; readonly oldRange: BufferRange; readonly newRange: BufferRange | null; readonly status: "mapped" | "lost"; readonly strategy: "named_path" | "named_search" | "text_search" | "none"; readonly confidence: "high" | "medium" | "low"; readonly reason?: BufferUnavailableReason | "ANCHOR_NOT_FOUND" | undefined; } export interface StructuredBufferSnapshot { readonly path: string; readonly content: string; readonly format: StructuredBufferFormat | null; readonly basis: WarmProjectionBasis | null; readonly partial: boolean; readonly parsed: ParsedTree | null; readonly authority: ProjectionAuthoritySlot; readonly proseProjection?: ProseProjection | undefined; readonly edictProjection?: EdictProjectionBundle | undefined; readonly wesleyProjection?: WesleyProjectionBundle | undefined; readonly parseUnavailableReason?: BufferUnavailableReason | undefined; } export declare function createStructuredBufferSnapshot(opts: { path: string; content: string; language?: string | undefined; profile?: string | null | undefined; basis?: WarmProjectionBasis | undefined; proseProjector?: ProseProjectionProvider | undefined; edictProjector?: EdictProjectionProvider | undefined; projectionRegistry?: ProjectionProviderRegistry | undefined; projectionProfileResolver?: ProjectionProfileResolver | undefined; }): StructuredBufferSnapshot; export declare function isPoint(value: BufferSelection): value is BufferPoint; export declare function point(row: number, column: number): BufferPoint; export declare function comparePoints(left: BufferPoint, right: BufferPoint): number; export declare function range(start: BufferPoint, end: BufferPoint): BufferRange; export declare function normalizeSelection(selection: BufferSelection): BufferRange; export declare function pointToIndex(source: string, value: BufferPoint): number; export declare function indexToPoint(source: string, index: number): BufferPoint; export declare function nodeRange(node: Parser.SyntaxNode): BufferRange; export declare function rangesEqual(left: BufferRange, right: BufferRange): boolean; export declare function rangeContainsRange(container: BufferRange, target: BufferRange): boolean; export declare function rangeOverlaps(left: BufferRange, right: BufferRange): boolean; export declare function emptyRangeAt(pointValue: BufferPoint): BufferRange; export declare function nodeName(node: Parser.SyntaxNode): string | undefined; export declare function summarizeNode(node: Parser.SyntaxNode): NodeSummary; export declare function isIdentifierType(type: string): boolean; export declare function findCoveringNamedNode(root: Parser.SyntaxNode, selection: BufferRange): Parser.SyntaxNode; export declare function nearestNamedChild(current: Parser.SyntaxNode, focus: BufferPoint): Parser.SyntaxNode | null; export declare function collectIdentifierNodes(node: Parser.SyntaxNode, output: Parser.SyntaxNode[]): void; export declare function buildNamedPath(node: Parser.SyntaxNode): number[]; export declare function followNamedPath(root: Parser.SyntaxNode, path: readonly number[]): Parser.SyntaxNode | null; //# sourceMappingURL=structured-buffer-model.d.ts.map