import { MCPResponsePresenter } from '../presenters/MCPResponsePresenter.js';
import { ReadBranchDocumentUseCase } from '../../application/usecases/branch/ReadBranchDocumentUseCase.js';
import { WriteBranchDocumentUseCase } from '../../application/usecases/branch/WriteBranchDocumentUseCase.js';
import { SearchDocumentsByTagsUseCase } from '../../application/usecases/common/SearchDocumentsByTagsUseCase.js';
import { UpdateTagIndexUseCase } from '../../application/usecases/common/UpdateTagIndexUseCase.js';
import { GetRecentBranchesUseCase } from '../../application/usecases/common/GetRecentBranchesUseCase.js';
import { ReadBranchCoreFilesUseCase } from '../../application/usecases/common/ReadBranchCoreFilesUseCase.js';
import { CreateBranchCoreFilesUseCase } from '../../application/usecases/common/CreateBranchCoreFilesUseCase.js';
import type { IConfigProvider } from '../../infrastructure/config/interfaces/IConfigProvider.js';
import type { MCPResponse } from '../presenters/types/MCPResponse.js';
/**
 * Controller for branch related operations
 */
export declare class BranchController {
    private readonly readBranchDocumentUseCase;
    private readonly writeBranchDocumentUseCase;
    private readonly searchDocumentsByTagsUseCase;
    private readonly updateTagIndexUseCase;
    private readonly getRecentBranchesUseCase;
    private readonly readBranchCoreFilesUseCase;
    private readonly createBranchCoreFilesUseCase;
    private readonly presenter;
    private readonly configProvider;
    private readonly componentLogger;
    constructor(readBranchDocumentUseCase: ReadBranchDocumentUseCase, writeBranchDocumentUseCase: WriteBranchDocumentUseCase, searchDocumentsByTagsUseCase: SearchDocumentsByTagsUseCase, updateTagIndexUseCase: UpdateTagIndexUseCase, getRecentBranchesUseCase: GetRecentBranchesUseCase, readBranchCoreFilesUseCase: ReadBranchCoreFilesUseCase, createBranchCoreFilesUseCase: CreateBranchCoreFilesUseCase, presenter: MCPResponsePresenter, configProvider: IConfigProvider);
    /**
     * Read a branch document
     */
    readDocument(branchName: string | undefined, path: string): Promise<MCPResponse>;
    /**
     * Write a branch document
     */
    writeDocument(params: {
        branchName?: string;
        path: string;
        content?: Record<string, unknown> | string;
        tags?: string[];
        patches?: Record<string, unknown>[];
    }): Promise<MCPResponse>;
    /**
     * Read core files for a branch
     */
    readCoreFiles(branchName: string): Promise<MCPResponse>;
    /**
     * Create core files for a branch
     */
    createCoreFiles(branchName: string, files: Record<string, unknown>): Promise<MCPResponse>;
    /**
     * Search documents by tags
     */
    searchByTags(params: {
        tags: string[];
        branchName: string;
        match?: 'and' | 'or';
    }): Promise<MCPResponse>;
    /**
     * Update tag index for a branch
     */
    updateTagIndex(branchName: string): Promise<MCPResponse>;
    /**
     * Get recent branches
     */
    getRecentBranches(): Promise<MCPResponse>;
    /**
     * Validate files input
     */
    private validateFiles;
    /**
     * Handle errors
     */
    private handleError;
}
//# sourceMappingURL=BranchController.d.ts.map