import type { UseCase } from '../../../../shared/foundation/usecase.base.js';
import type { ReviewRequestTrackingGateway } from '../../../../modules/tracking/interface-adapters/gateways/reviewRequestTracking.gateway.js';
import type { TrackedMr } from '../../../../modules/tracking/entities/tracking/trackedMr.js';
import type { QualityGateResult } from '../../../../modules/tracking/entities/qualityGate/qualityGate.js';
import type { ReviewRequestStateValue } from '../../../../modules/review-execution/entities/reviewRequest/reviewRequestState.valueObject.js';
interface TransitionStateInput {
    projectPath: string;
    mrId: string;
    targetState: 'approved' | 'merged' | 'closed';
    qualityCheck?: (mr: TrackedMr) => QualityGateResult;
    requireCurrentState?: ReviewRequestStateValue;
}
export type TransitionStateResult = {
    ok: true;
} | {
    ok: false;
    reason: 'not-found';
} | {
    ok: false;
    reason: 'quality-gate';
    message: string;
} | {
    ok: false;
    reason: 'invalid-current-state';
    currentState: ReviewRequestStateValue;
};
export declare class TransitionStateUseCase implements UseCase<TransitionStateInput, TransitionStateResult> {
    private readonly trackingGateway;
    constructor(trackingGateway: ReviewRequestTrackingGateway);
    execute(input: TransitionStateInput): TransitionStateResult;
}
export {};
//# sourceMappingURL=transitionState.usecase.d.ts.map