import { type HandoffLevel } from './handoff-level.js';
import { type RegistryFs } from './registry.js';
/** One project that had a block, as the notice needs to talk about it. */
export interface RetiredProjectSettings {
    /** The repo the block was about. Its path, because a project id names nothing to a reader. */
    path: string;
    /** The keys the block held, in file order — so the notice can say what stopped applying. */
    keys: string[];
    /** Whether the block set how far this repo publishes, in any spelling. See {@link PUBLISH_KEYS}. */
    publishes: boolean;
    /**
     * The publish rung the block set, when it set one this can name. Absent for a block written
     * before the ladder, which the reader restates by hand — `publishes` is what says to.
     */
    handoff?: HandoffLevel;
}
/**
 * The retired blocks in the registry file, or `[]` when there are none (which is everyone who
 * never used the tier, and everyone whose file has been written once since).
 *
 * Reads the raw file rather than going through `readRegistry`, which drops the block on the way in
 * — that is the point of the removal, and it is what leaves this the only reader.
 */
export declare function readRetiredProjectSettings(fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<RetiredProjectSettings[]>;
/** Read the blocks and hold them for this process. Called once, first thing, by the daemon. */
export declare function captureRetiredProjectSettings(fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<readonly RetiredProjectSettings[]>;
/** What the boot read found. Empty until {@link captureRetiredProjectSettings} has run. */
export declare function retiredProjectSettings(): readonly RetiredProjectSettings[];
/**
 * What a repo's row has to say, as both surfaces say it.
 *
 * A block that set publishing gets the line to write and what happens without it, because that is
 * the direction that acts outward on its own. Everything else is told what applies instead, which
 * is true only for a block that did *not* set publishing — hence the flag rather than the rung.
 */
export declare function retiredProjectAdvice(project: RetiredProjectSettings): string;
/**
 * The notice as the daemon's log prints it: one line naming the tier, then one per project.
 *
 * Empty for an empty list, so the caller prints nothing rather than a heading over nothing.
 */
export declare function retiredProjectSettingsNotice(retired: readonly RetiredProjectSettings[]): string[];
//# sourceMappingURL=retired-project-settings.d.ts.map