/**
 * Claude Code integration: a managed block in CLAUDE.md instructs the agent
 * harness to attribute PRs to the registered agent, and .claude/settings.json
 * disables the stock "Generated with Claude Code" attribution.
 *
 * The PR byline can only be influenced through instructions because the PR
 * body is composed by the model at PR time; commit trailers are enforced
 * mechanically by the git hook instead (see git-config.ts).
 */
export declare const CLAUDE_MD_START = "<!-- mcpi:dco:start -->";
export declare const CLAUDE_MD_END = "<!-- mcpi:dco:end -->";
export interface AttributionBlockParams {
    agentName: string;
    agentUrl: string;
    /**
     * When the git hook could not be installed (foreign hook, unsafe
     * core.hooksPath, or install failure), trailer duty falls back to
     * instructions.
     */
    includeTrailerInstructions?: boolean;
    humanName?: string;
    humanEmail?: string;
    agentEmail?: string;
}
export declare function buildAttributionBlock(params: AttributionBlockParams): string;
export type UpsertResult = "created" | "updated" | "unchanged" | "would-change";
export declare function upsertClaudeMdBlock(cwd: string, block: string, options?: {
    dryRun?: boolean;
}): {
    result: UpsertResult;
    path: string;
};
export type SettingsResult = "created" | "updated" | "unchanged" | "skipped-invalid" | "would-change";
/**
 * Set includeCoAuthoredBy: false in .claude/settings.json, preserving every
 * other key. A file we cannot parse is left untouched: clobbering a user's
 * settings is worse than leaving the stock byline on.
 */
export declare function updateClaudeSettings(cwd: string, options?: {
    dryRun?: boolean;
}): {
    result: SettingsResult;
    path: string;
};
//# sourceMappingURL=claude-config.d.ts.map