import { HttpClient } from '../utils/http-client.js';
/**
 * Параметры для модификации кода
 */
export interface CodeModificationParams {
    /** Идентификатор проекта */
    projectId: string;
    /** Инструкция для модификации кода */
    instruction: string;
    /** Путь к файлу для модификации */
    filePath: string;
    /** Содержимое файла (если файл не существует) */
    fileContent?: string;
    /** Начальная строка для модификации */
    startLine?: number;
    /** Конечная строка для модификации */
    endLine?: number;
    /** Дополнительный контекст для модификации */
    context?: {
        /** Дополнительные фрагменты кода */
        codeSnippets?: Array<{
            /** Путь к файлу */
            filePath: string;
            /** Начальная строка */
            startLine: number;
            /** Конечная строка */
            endLine: number;
            /** Содержимое */
            content: string;
        }>;
    };
}
/**
 * Результат модификации кода
 */
export interface CodeModificationResult {
    /** Идентификатор модификации */
    id: string;
    /** Идентификатор проекта */
    projectId: string;
    /** Путь к файлу */
    filePath: string;
    /** Исходное содержимое */
    originalContent?: string;
    /** Модифицированное содержимое */
    modifiedContent: string;
    /** Патч (diff) для применения изменений */
    patch?: string;
    /** Статус модификации */
    status: 'pending' | 'completed' | 'error';
    /** Дата создания */
    createdAt: string;
    /** Сообщение об ошибке (если есть) */
    error?: string;
}
/**
 * API для модификации кода
 */
export declare class CodeModificationApi {
    /** HTTP клиент */
    private readonly httpClient;
    /**
     * Создает новый экземпляр API для модификации кода
     * @param {HttpClient} httpClient HTTP клиент
     */
    constructor(httpClient: HttpClient);
    /**
     * Выполняет модификацию кода
     * @param {CodeModificationParams} params Параметры модификации
     * @returns {Promise<CodeModificationResult>} Результат модификации
     */
    modifyCode(params: CodeModificationParams): Promise<CodeModificationResult>;
    /**
     * Применяет результат модификации к файлу
     * @param {string} modificationId Идентификатор модификации
     * @returns {Promise<CodeModificationResult>} Обновленный результат модификации
     */
    applyModification(modificationId: string): Promise<CodeModificationResult>;
    /**
     * Отменяет применение модификации
     * @param {string} modificationId Идентификатор модификации
     * @returns {Promise<CodeModificationResult>} Обновленный результат модификации
     */
    revertModification(modificationId: string): Promise<CodeModificationResult>;
    /**
     * Получает модификацию по идентификатору
     * @param {string} modificationId Идентификатор модификации
     * @returns {Promise<CodeModificationResult>} Результат модификации
     */
    getModification(modificationId: string): Promise<CodeModificationResult>;
    /**
     * Получает список модификаций для проекта
     * @param {string} projectId Идентификатор проекта
     * @param {object} [params] Параметры запроса
     * @param {number} [params.limit] Лимит результатов
     * @param {number} [params.offset] Смещение для пагинации
     * @returns {Promise<CodeModificationResult[]>} Список результатов модификации
     */
    getModifications(projectId: string, params?: {
        limit?: number;
        offset?: number;
    }): Promise<CodeModificationResult[]>;
}
//# sourceMappingURL=code-modification-api.d.ts.map