import type { BillingStateGateway } from '../../../modules/claude-invocation/entities/billingState/billingState.gateway.js';
import type { EnvironmentGateway } from '../../../modules/claude-invocation/entities/billingState/environment.gateway.js';
import type { ClaudeDispatchFlags, ClaudeSessionGateway } from '../../../modules/claude-invocation/entities/claudeSession/claudeSession.gateway.js';
import type { ClaudeSessionJobType } from '../../../modules/claude-invocation/entities/claudeSession/claudeSession.schema.js';
import type { SessionUsageSnapshot } from '../../../modules/claude-invocation/entities/claudeSession/sessionUsage.schema.js';
import type { McpCompletionBridge } from '../../../modules/claude-invocation/entities/sessionCompletion/mcpCompletion.gateway.js';
import type { ReviewReportGateway } from '../../../modules/claude-invocation/entities/sessionCompletion/reviewReport.gateway.js';
export interface RunClaudeReviewJobInput {
    jobId: string;
    jobType: ClaudeSessionJobType;
    prompt: string;
    flags: ClaudeDispatchFlags;
    localPath: string;
    reportFallbackLocalPath?: string;
    mergeRequestId: string;
    mergeRequestNumber: number;
    attempt: number;
    signal?: AbortSignal;
}
export interface RunClaudeReviewJobDependencies {
    sessionGateway: ClaudeSessionGateway;
    completionBridge: McpCompletionBridge;
    reportGateway: ReviewReportGateway;
    billingState: BillingStateGateway;
    environment: EnvironmentGateway;
    now: () => Date;
    timeoutMs: number;
    pollIntervalMs: number;
}
export type RunClaudeReviewJobResult = {
    status: 'completed';
    reportPath: string;
    content: string;
    usage: SessionUsageSnapshot | null;
} | {
    status: 'failed';
    reason: string;
} | {
    status: 'retry';
    delayMs: number;
    attempt: number;
};
export declare function runClaudeReviewJob(input: RunClaudeReviewJobInput, deps: RunClaudeReviewJobDependencies): Promise<RunClaudeReviewJobResult>;
//# sourceMappingURL=runClaudeReviewJob.usecase.d.ts.map