/**
 * Conflict Resolution Service
 *
 * Orchestrates agent-powered conflict resolution during git rebase.
 * Follows the CI watch/fix loop pattern: detect conflict → invoke agent →
 * validate resolution → stage files → continue rebase, with retry logic.
 */
import type { IAgentExecutorProvider } from '../../../../application/ports/output/agents/agent-executor-provider.interface.js';
import type { IConflictResolutionService } from '../../../../application/ports/output/services/conflict-resolution.interface.js';
import type { IGitPrService } from '../../../../application/ports/output/services/git-pr-service.interface.js';
export declare class ConflictResolutionService implements IConflictResolutionService {
    private readonly agentProvider;
    private readonly gitPrService;
    constructor(agentProvider: IAgentExecutorProvider, gitPrService: IGitPrService);
    /**
     * Resolve all conflicts during a rebase operation.
     *
     * Handles multi-commit rebases where each commit may introduce conflicts.
     * For each conflicted commit: reads conflicted files, invokes agent to
     * resolve, validates no remaining markers, stages resolved files, and
     * continues the rebase. Retries up to MAX_RETRIES_PER_COMMIT times.
     *
     * If retries are exhausted, aborts the rebase and throws REBASE_CONFLICT.
     *
     * @param cwd - Working directory (repo root or worktree path)
     * @param featureBranch - Feature branch being rebased
     * @param baseBranch - Base branch being rebased onto
     */
    resolve(cwd: string, featureBranch: string, baseBranch: string): Promise<void>;
    /**
     * Resolve conflicts from a failed stash pop.
     *
     * After a rebase, stash pop may fail if the rebased code conflicts with
     * stashed uncommitted changes. This method invokes the agent to resolve
     * those conflicts, validates, and stages the resolved files.
     *
     * Unlike resolve(), this does NOT call rebaseContinue — the rebase is
     * already complete. On success, the caller is responsible for dropping
     * the stash entry.
     *
     * @param cwd - Working directory (repo root or worktree path)
     * @param featureBranch - Feature branch name
     * @param baseBranch - Base branch name
     */
    resolveStashPop(cwd: string, featureBranch: string, baseBranch: string): Promise<void>;
    /**
     * Read the contents of conflicted files from the working directory.
     */
    private readConflictedFileContents;
    /**
     * Validate that no conflict markers remain in the previously-conflicted files.
     */
    private validateResolution;
    /**
     * Build feedback about remaining conflict markers for retry attempts.
     */
    private buildFeedbackFromRemainingMarkers;
}
//# sourceMappingURL=conflict-resolution.service.d.ts.map