type CommitSubjectKind = "conventional" | "ticket-prefixed" | "free-form";
type CommitGuidanceStatus = CommitSubjectKind | "mixed" | "insufficient-history";
/** Subject-style tallies from the recent commit sample used to choose a dominant convention. */
interface CommitConventionCounts {
    conventional: number;
    ticketPrefixed: number;
    freeForm: number;
}
/** Observed commit-history style and metadata rendered into `docs/coding-standards/git-commit.md`. */
export interface CommitConventionDetection {
    status: CommitGuidanceStatus;
    total: number;
    counts: CommitConventionCounts;
    conventionalTypes: string[];
    subjectLengthP95: number | null;
    bodiesUsed: boolean;
    coAuthoredBy: boolean;
    signedOffBy: boolean;
    ticketPrefixPattern: string | null;
    exampleSubject: string | null;
    gitAvailable: boolean;
}
/** Outcome from trying to create commit guidance without overwriting user-maintained instructions. */
export interface CommitGuidanceWriteResult {
    status: "written" | "skipped-existing";
    path: string;
    detection: CommitConventionDetection | null;
}
/**
 * Create the canonical commit-guidance doc from detected history, never clobbering existing rules.
 *
 * Writes docs/coding-standards/git-commit.md (creating parent dirs) only when it is absent, so a
 * project owner's hand-maintained conventions are preserved across re-installs. No .github/
 * directory is required - the doc lives under docs/ regardless of which agent is installed.
 *
 * @param targetRoot - Project root to write commit guidance into; resolved to an absolute path.
 * @returns A result describing whether the doc was written or skipped because one already exists, plus the detection used.
 */
export declare function ensureGitCommitInstructions(targetRoot: string): CommitGuidanceWriteResult;
export {};
//# sourceMappingURL=commit-guidance.d.ts.map