import { IUseCase } from '../../interfaces/IUseCase.js';
import { DocumentDTO } from '../../dtos/DocumentDTO.js';
import { DocumentRepositorySelector } from '../../services/DocumentRepositorySelector.js';
/**
 * Input data for read document use case
 */
export interface ReadDocumentInput {
    /**
     * Scope of the memory bank ('branch' or 'global')
     */
    scope: 'branch' | 'global';
    /**
     * Branch name (required for branch scope in non-project mode)
     */
    branch?: string;
    /**
     * Document path
     */
    path: string;
    /**
     * Path to the docs directory (optional in project mode)
     */
    docs?: string;
}
/**
 * Output data for read document use case
 */
export interface ReadDocumentOutput {
    /**
     * Document data
     */
    document: DocumentDTO;
}
/**
 * Use case for reading a document from either branch or global memory bank
 */
export declare class ReadDocumentUseCase implements IUseCase<ReadDocumentInput, ReadDocumentOutput> {
    private readonly repositorySelector;
    private readonly useCaseLogger;
    /**
     * Constructor
     * @param repositorySelector Service to select appropriate repository based on scope
     */
    constructor(repositorySelector: DocumentRepositorySelector);
    /**
     * Execute the use case
     * @param input Input data
     * @returns Promise resolving to output data
     */
    execute(input: ReadDocumentInput): Promise<ReadDocumentOutput>;
    /**
     * Validates the input parameters
     * @param input The input parameters to validate
     * @throws ApplicationError if input is invalid
     */
    private validateInput;
}
//# sourceMappingURL=ReadDocumentUseCase.d.ts.map