import type { EntityIndex } from './store.js';
import type { LiveEntityIndex } from './resolve.js';
import type { WalkBackResult } from './walkback.js';
import type { OccEntityBlamePayload } from './api-types.js';
export interface EntityBlameContext {
    entityIndex: EntityIndex;
    live: LiveEntityIndex;
    /** Paths git reports as untracked, so an unknown file is not called uncommitted. */
    untracked: ReadonlySet<string>;
    shallow: boolean;
    /**
     * Blame a past revision rather than the working tree.
     *
     * Set when the caller named a `ref`. Events after that commit are not yet
     * facts about the revision being asked about, and working-tree states —
     * untracked, uncommitted, modified — describe a tree that is not in view.
     */
    atCommitOrder?: number;
    /**
     * Attribution found outside the indexed window, keyed by `walkBackKeyFor`.
     *
     * Supplied by the session, which owns the git access; blame stays a pure
     * function of evidence it is handed.
     */
    walkBack?: WalkBackResult;
}
/**
 * Per-entity blame for one file.
 *
 * Every entry states its provenance. When attribution is unavailable — the file
 * is untracked, the entity is uncommitted, history is shallow, or the entity
 * predates the indexed window — the commit fields are simply absent, and the
 * state says which of those it was. Inventing a plausible commit here would be
 * worse than admitting the gap.
 */
export declare function entityBlame(relativePath: string, context: EntityBlameContext): OccEntityBlamePayload;
