import { Repository } from 'typeorm';
import { AIAction, SessionInput, ExecutionLog } from '../core-entities';
import { ExecutionLogsService } from '../execution-logs/execution-logs.service';
export declare enum AIActionStatus {
    PROPOSED = "proposed",
    AWAITING_CONTEXT = "awaiting_context",
    AWAITING_HANDOVER = "awaiting_handover",
    APPROVED_FOR_APPLY = "approved_for_apply",
    REJECTED_BEFORE_APPLY = "rejected_before_apply",
    APPLIED_PENDING_REVIEW = "applied_pending_review",
    CONFIRMED_KEPT = "confirmed_kept",
    CONFIRMED_REVERTED = "confirmed_reverted",
    EXECUTION_FAILED = "execution_failed",
    REVERT_FAILED = "revert_failed"
}
export declare enum AIActionType {
    CREATE_FILE = "create_file",
    OVERWRITE_FILE = "overwrite_file",
    DELETE_FILE = "delete_file",
    RUN_COMMAND = "run_command",
    REQUEST_CONTEXT = "request_context",
    FINAL = "final",
    QUICK_EDIT = "quick_edit",
    APPLY_DIFF = "apply_diff",
    PATCH = "patch",
    NEW_SESSION = "new_session",
    WRITE_TODO = "write_todo",
    EXECUTE_CODE = "execute_code"
}
export interface ActionResult {
    action_id: string;
    status: string;
    logs: ExecutionLog[];
}
export interface DiscardedActionInfo {
    action_id: string;
    status: string;
}
export interface ConfirmedActionInfo {
    action_id: string;
    status: string;
}
export declare class AIActionsService {
    private aiActionsRepository;
    private sessionInputsRepository;
    private executionLogsService;
    private readonly logger;
    private readonly projectRoot;
    constructor(aiActionsRepository: Repository<AIAction>, sessionInputsRepository: Repository<SessionInput>, executionLogsService: ExecutionLogsService);
    private resolveAndValidatePath;
    private createFile;
    private editFile;
    private deleteFile;
    findAllByInputId(inputId: string): Promise<AIAction[]>;
    findOne(actionId: string): Promise<AIAction>;
    approveAction(actionId: string): Promise<AIAction>;
    discardAction(actionId: string): Promise<AIAction>;
    confirmKeepAction(actionId: string): Promise<AIAction>;
    revertAction(actionId: string): Promise<AIAction>;
    deleteAllByInputId(inputId: string): Promise<void>;
    reExecuteAction(actionId: string): Promise<AIAction>;
}
