import type { JsonDocumentDTO } from "../../../application/dtos/JsonDocumentDTO.js";
import type { ReadJsonDocumentUseCase, WriteJsonDocumentUseCase, DeleteJsonDocumentUseCase, SearchJsonDocumentsUseCase, UpdateJsonIndexUseCase, GetRecentBranchesUseCase } from "../../../application/usecases/index.js";
import type { MCPResponsePresenter } from "../../presenters/MCPResponsePresenter.js";
import type { MCPResponse } from "../../presenters/types/MCPResponse.js";
import type { IBranchController } from "../interfaces/IBranchController.js";
/**
 * Controller for JSON branch memory bank operations
 * Dedicated controller for JSON document operations with branch memory banks
 */
export declare class JsonBranchController implements Pick<IBranchController, "readJsonDocument" | "writeJsonDocument" | "deleteJsonDocument" | "listJsonDocuments" | "searchJsonDocuments" | "updateJsonIndex" | "getRecentBranches"> {
    private readonly readJsonDocumentUseCase;
    private readonly writeJsonDocumentUseCase;
    private readonly deleteJsonDocumentUseCase;
    private readonly searchJsonDocumentsUseCase;
    private readonly updateJsonIndexUseCase;
    private readonly getRecentBranchesUseCase;
    private readonly presenter;
    readonly _type: "controller";
    private readonly componentLogger;
    /**
      * Constructor
      * @param readJsonDocumentUseCase Use case for reading JSON documents
      * @param writeJsonDocumentUseCase Use case for writing JSON documents
      * @param deleteJsonDocumentUseCase Use case for deleting JSON documents
      * @param searchJsonDocumentsUseCase Use case for searching JSON documents
      * @param updateJsonIndexUseCase Use case for updating JSON index
      * @param getRecentBranchesUseCase Use case for getting recent branches
      * @param presenter Response presenter
      */
    constructor(readJsonDocumentUseCase: ReadJsonDocumentUseCase, writeJsonDocumentUseCase: WriteJsonDocumentUseCase, deleteJsonDocumentUseCase: DeleteJsonDocumentUseCase, searchJsonDocumentsUseCase: SearchJsonDocumentsUseCase, updateJsonIndexUseCase: UpdateJsonIndexUseCase, getRecentBranchesUseCase: GetRecentBranchesUseCase, presenter: MCPResponsePresenter);
    /**
     * Read JSON document from branch memory bank
     * @param branchName Branch name
     * @param options Options for reading document (path or ID)
     * @returns Promise resolving to MCP response with JSON document
     */
    readJsonDocument(branchName: string, options: {
        path?: string;
        id?: string;
    }): Promise<MCPResponse<JsonDocumentDTO>>;
    /**
     * Write JSON document to branch memory bank
     * @param branchName Branch name
     * @param document Document data to write
     * @returns Promise resolving to MCP response with the result
     */
    writeJsonDocument(branchName: string, document: JsonDocumentDTO): Promise<MCPResponse>;
    /**
     * Delete JSON document from branch memory bank
     * @param branchName Branch name
     * @param options Options for deleting document (path or ID)
     * @returns Promise resolving to MCP response with the result
     */
    deleteJsonDocument(branchName: string, options: {
        path?: string;
        id?: string;
    }): Promise<MCPResponse>;
    /**
     * List JSON documents in branch memory bank
     * @param branchName Branch name
     * @param options Options for listing documents (type, tags)
     * @returns Promise resolving to MCP response with list of documents
     */
    listJsonDocuments(branchName: string, options?: {
        type?: string;
        tags?: string[];
    }): Promise<MCPResponse<JsonDocumentDTO[]>>;
    /**
     * Search JSON documents in branch memory bank
     * @param branchName Branch name
     * @param query Search query
     * @returns Promise resolving to MCP response with matching documents
     */
    searchJsonDocuments(branchName: string, query: string): Promise<MCPResponse<JsonDocumentDTO[]>>;
    /**
     * Update JSON index in branch memory bank
     * @param branchName Branch name
     * @param options Options for updating index (force rebuild)
     * @returns Promise resolving to MCP response with the result
     */
    updateJsonIndex(branchName: string, options?: {
        force?: boolean;
    }): Promise<MCPResponse>;
    /**
     * Get recent branches
     * @param limit Maximum number of branches to return
     * @returns Promise resolving to MCP response with recent branches
     */
    getRecentBranches(limit?: number): Promise<MCPResponse>;
    /**
     * Handle errors in controller methods
     * @param error Error to handle
     * @returns Formatted error response
     */
    private handleError;
}
//# sourceMappingURL=JsonBranchController.d.ts.map