import { MCPResponsePresenter } from '../presenters/MCPResponsePresenter.js';
import { ReadBranchDocumentUseCase } from '../../application/usecases/branch/ReadBranchDocumentUseCase.js';
import { WriteBranchDocumentUseCase } from '../../application/usecases/branch/WriteBranchDocumentUseCase.js';
import { ReadGlobalDocumentUseCase } from '../../application/usecases/global/ReadGlobalDocumentUseCase.js';
import { WriteGlobalDocumentUseCase } from '../../application/usecases/global/WriteGlobalDocumentUseCase.js';
import type { MCPResponse } from '../presenters/types/MCPResponse.js';
import { IConfigProvider } from '../../infrastructure/config/interfaces/IConfigProvider.js';
/**
 * Unified controller for document operations in both branch and global scopes.
 * Uses scope parameter to determine which repository and use case to use.
 */
export declare class DocumentController {
    private readonly readBranchDocumentUseCase;
    private readonly writeBranchDocumentUseCase;
    private readonly readGlobalDocumentUseCase;
    private readonly writeGlobalDocumentUseCase;
    private readonly presenter;
    private readonly configProvider?;
    private readonly componentLogger;
    /**
     * Constructor
     * @param readBranchDocumentUseCase Use case for reading branch documents
     * @param writeBranchDocumentUseCase Use case for writing branch documents
     * @param readGlobalDocumentUseCase Use case for reading global documents
     * @param writeGlobalDocumentUseCase Use case for writing global documents
     * @param presenter Response presenter
     */
    constructor(readBranchDocumentUseCase: ReadBranchDocumentUseCase, writeBranchDocumentUseCase: WriteBranchDocumentUseCase, readGlobalDocumentUseCase: ReadGlobalDocumentUseCase, writeGlobalDocumentUseCase: WriteGlobalDocumentUseCase, presenter: MCPResponsePresenter, configProvider?: IConfigProvider | undefined);
    /**
     * Read a document from either branch or global memory bank
     * @param params Parameters for reading document
     * @param params.scope 'branch' or 'global' scope
     * @param params.branchName Optional branch name (auto-detected in project mode if not provided)
     * @param params.path Document path
     * @returns Promise resolving to MCP response
     */
    readDocument(params: {
        scope: 'branch' | 'global';
        branchName?: string;
        path: string;
    }): Promise<MCPResponse>;
    /**
     * Write a document to either branch or global memory bank
     * @param params Parameters for writing document
     * @param params.scope 'branch' or 'global' scope
     * @param params.branchName Optional branch name (auto-detected in project mode if not provided)
     * @param params.path Document path
     * @param params.content Document content (optional, mutually exclusive with patches)
     * @param params.patches JSON Patch operations (optional, mutually exclusive with content)
     * @param params.tags Document tags (optional)
     * @param params.returnContent Whether to return document content in response (default: false)
     * @returns Promise resolving to MCP response
     */
    writeDocument(params: {
        scope: 'branch' | 'global';
        branchName?: string;
        path: string;
        content?: Record<string, unknown> | string;
        patches?: Record<string, unknown>[];
        tags?: string[];
        returnContent?: boolean;
    }): Promise<MCPResponse>;
    /**
     * Handle errors and convert them to MCP responses
     * @param error Error to handle
     * @returns MCP response with error information
     */
    private handleError;
}
//# sourceMappingURL=DocumentController.d.ts.map