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 { ClaudeSession, ClaudeSessionJobType } from '../../../modules/claude-invocation/entities/claudeSession/claudeSession.schema.js';
export interface DispatchClaudeSessionInput {
    jobId: string;
    jobType: ClaudeSessionJobType;
    prompt: string;
    flags: ClaudeDispatchFlags;
    localPath: string;
    mergeRequestId: string;
}
export interface DispatchClaudeSessionDependencies {
    sessionGateway: ClaudeSessionGateway;
    environment: EnvironmentGateway;
    billingState: BillingStateGateway;
    now: () => Date;
}
export type DispatchClaudeSessionResult = {
    status: 'dispatched';
    session: ClaudeSession;
} | {
    status: 'rate-limited';
    rawStderr: string;
} | {
    status: 'billing-regression-prevented';
} | {
    status: 'paused';
} | {
    status: 'failed';
    rawStderr: string;
};
export declare function dispatchClaudeSession(input: DispatchClaudeSessionInput, deps: DispatchClaudeSessionDependencies): Promise<DispatchClaudeSessionResult>;
//# sourceMappingURL=dispatchClaudeSession.usecase.d.ts.map