import { ProviderFailure } from "@awp/contracts";
import type { ProviderResult } from "@awp/contracts";
import type { ChangeSet } from "@awp/domain";
import type { RepositoryRevisionIdentity, TrustedMerger, TrustedMergeRequest, TrustedMergeResult } from "./ports/providers.js";
export declare class TrustedMergePreconditionError extends Error {
    constructor(message: string);
}
export declare class TrustedMergeTargetChangedError extends TrustedMergePreconditionError {
    readonly observedTarget: RepositoryRevisionIdentity;
    constructor(observedTarget: RepositoryRevisionIdentity);
}
export declare class TrustedMergeConflictError extends Error {
    readonly failure: ProviderFailure;
    constructor(failure: ProviderFailure);
}
export declare function assertTrustedMergePreconditions(changeSet: ChangeSet, request: TrustedMergeRequest, observedTarget: RepositoryRevisionIdentity): void;
/**
 * Executes one trusted merge mutation. If the provider response is ambiguous,
 * reconciliation of the exact immutable request happens before any caller can
 * decide to retry the mutation.
 */
export declare function executeTrustedMerge(merger: TrustedMerger, changeSet: ChangeSet, request: TrustedMergeRequest, observeTarget: () => Promise<RepositoryRevisionIdentity>): Promise<ProviderResult<TrustedMergeResult>>;
//# sourceMappingURL=trusted-merge.d.ts.map