/**
 * Merge Request Provider
 *
 * Abstracts merge request creation so the orchestrator can work with different
 * hosting backends (GitHub, GitLab, local-only, etc.) or no remote at all.
 *
 * @module
 */
import type { Task } from '@stoneforge/core';
/**
 * Result returned after creating a merge request
 */
export interface MergeRequestResult {
    readonly url?: string;
    readonly id?: number;
    readonly provider: string;
}
/**
 * Options for creating a merge request
 */
export interface CreateMergeRequestOptions {
    readonly title: string;
    readonly body: string;
    readonly sourceBranch: string;
    readonly targetBranch: string;
}
/**
 * Interface that all merge-request backends must implement
 */
export interface MergeRequestProvider {
    readonly name: string;
    createMergeRequest(task: Task, options: CreateMergeRequestOptions): Promise<MergeRequestResult>;
}
/**
 * A no-op provider that skips remote merge request creation.
 * Useful when running without a remote (e.g. local dev, CI dry-runs).
 */
export declare class LocalMergeProvider implements MergeRequestProvider {
    readonly name = "local";
    createMergeRequest(_task: Task, _options: CreateMergeRequestOptions): Promise<MergeRequestResult>;
}
/**
 * Creates GitHub pull requests using the `gh` CLI tool.
 * Extracted from the former `TaskAssignmentServiceImpl.createPullRequest()`.
 */
export declare class GitHubMergeProvider implements MergeRequestProvider {
    readonly name = "github";
    createMergeRequest(task: Task, options: CreateMergeRequestOptions): Promise<MergeRequestResult>;
    private buildDefaultBody;
}
/**
 * Creates a LocalMergeProvider (the default, no-remote provider)
 */
export declare function createLocalMergeProvider(): MergeRequestProvider;
/**
 * Creates a GitHubMergeProvider that uses the `gh` CLI
 */
export declare function createGitHubMergeProvider(): MergeRequestProvider;
//# sourceMappingURL=merge-request-provider.d.ts.map