import type { ProjectConfig } from '../core/config.js';
import type { RepoBackend } from '../interfaces/RepoBackend.js';
import type { MrStatus } from '../shared/types.js';
export declare class GitLabRepoBackend implements RepoBackend {
    private readonly gitlabUrl;
    private readonly projectId;
    private readonly token;
    private readonly apiBase;
    private readonly mergeBranch;
    constructor(config: ProjectConfig);
    private git;
    private apiGet;
    private apiPost;
    private apiPut;
    ensureCleanBase(repoDir: string, baseBranch: string): Promise<void>;
    ensureBranch(repoDir: string, branchName: string, baseBranch: string): Promise<void>;
    ensureWorktree(repoDir: string, branchName: string, worktreePath: string): Promise<void>;
    commit(worktree: string, message: string): Promise<void>;
    push(worktree: string, branch: string, force?: boolean): Promise<void>;
    rebase(worktree: string, baseBranch: string): Promise<{
        success: boolean;
        conflictFiles?: string[];
    }>;
    createOrUpdateMr(branch: string, title: string, description: string): Promise<{
        url: string;
        iid: number;
    }>;
    getMrStatus(branch: string): Promise<MrStatus>;
    mergeMr(iid: number): Promise<{
        merged: boolean;
        error?: string;
    }>;
    detectMerged(branch: string): Promise<boolean>;
    removeWorktree(repoDir: string, worktreePath: string, branch?: string): Promise<void>;
    private mapMrState;
    private mapCiStatus;
    private mapMergeStatus;
}
//# sourceMappingURL=GitLabRepoBackend.d.ts.map