import { type FusedSearchResult } from './query.js';
import type { SourceInlineBlock, SourceInlineDiagnostic } from './source-inline.js';
import type { CodeNodeType, CodeSearchResult, CodebaseIndex } from './types.js';
export type CodeCitationNote = `imported-by ${number}` | `called-by ${number}` | `rank #${number}` | 'exported seam' | 'matched-name';
export interface CodeCitation {
    relativePath: string;
    startLine: number;
    endLine: number;
    kind: CodeNodeType;
    name: string;
    note: CodeCitationNote;
    inlineContext?: SourceInlineBlock;
    inlineContextDiagnostic?: SourceInlineDiagnostic;
}
export interface CodeCitationsResult {
    query: string;
    citations: CodeCitation[];
    coverage: 'complete' | 'partial';
    identifierOnly: boolean;
    diagnostics: string[];
}
export declare function citationsForName(index: CodebaseIndex, query: string, results: readonly CodeSearchResult[]): CodeCitationsResult;
export declare function citationsForFused(index: CodebaseIndex, query: string, results: readonly FusedSearchResult[]): CodeCitationsResult;
/** Plain, score-free citation output for agents and shell composition. */
export declare function formatCodeCitations(result: CodeCitationsResult): string;
