import type { RunTextCommand } from '../gh-cli/index.mts'; import { type ProjectGroup, type ProjectRef, type ProjectSibling } from './project-query.mts'; /** One issue this change closes: a bare number, plus the `owner/repo` it lives in when that * differs from the audited repo (`undefined` means the audited repo itself). */ export type ClosingIssueRef = { number: number; repo?: string | undefined; }; type ClosingIssueProjects = { closingKey: string; projects: ProjectRef[]; }; /** * Groups a change's closing issues by the open project(s) each belongs to. An issue may belong to * more than one open project (see `fetchIssueProjectMemberships`) — every one it belongs to gets * its own group entry here, audited independently rather than picked arbitrarily. */ export declare function groupClosedIssuesByProject(entries: ReadonlyArray): Map; /** Purely advisory formatting: there is no in-body disposition marker to check against, unlike a * milestone-completion audit — every remaining sibling is reported unconditionally. */ export declare function formatProjectAdvisories(siblings: ProjectSibling[]): string[]; /** Formats advisory strings for display; `''` when there is nothing to show. */ export declare function formatProjectAdvisoryReport(advisories: readonly string[]): string; /** * Audits whether the projects a change's closing issues belong to are nearly complete, returning * one advisory string per remaining open item — never throws, and callers decide what to do with * the result (e.g. print it, never block on it). A missing/insufficient `project` scope, or a * GraphQL call that fails with a scope error, collapses the whole audit to a single skipped-audit * notice instead of failing. `remainder` overrides `DEFAULT_PROJECT_COMPLETION_REMAINDER`. */ export declare function auditProjectCompletion(runGh: RunTextCommand, repo: string, closingIssues: ReadonlyArray, remainder?: number): Promise; export {};