import { z } from 'zod';
/**
 * Entity kinds for data formats.
 *
 * Kept separate from `NormalizedSymbolKind` because these are not code symbols:
 * a JSON property has no call graph, no inheritance, and no signature, and
 * flattening it onto `variable` would let it be mistaken for one.
 */
export declare const FormatEntityKindSchema: z.ZodEnum<{
    object: "object";
    array: "array";
    "array-item": "array-item";
    property: "property";
    section: "section";
    table: "table";
    "array-table": "array-table";
    heading: "heading";
    row: "row";
    document: "document";
}>;
export type FormatEntityKind = z.infer<typeof FormatEntityKindSchema>;
export interface FormatEntity {
    kind: FormatEntityKind;
    /** The leaf name: a key, a heading's text, a row's first cell. */
    name: string;
    /**
     * The full path to this entity within the document — an RFC 6901 pointer for
     * JSON, a dot path for YAML and TOML, a `>`-joined trail for Markdown. This
     * is what makes a nested entity addressable and what its identity is keyed on.
     */
    qualifiedName: string;
    containerName?: string;
    /** 1-based, inclusive. Physical lines, so they match what an editor shows. */
    startLine: number;
    endLine: number;
}
export type FormatExtractor = (content: string, relativePath: string) => FormatEntity[];
/** Trim trailing blank lines from a span so an entity ends at its last real line. */
export declare function trimTrailingBlank(lines: readonly string[], endLine: number, startLine: number): number;
