import { BranchInfo } from '../../../domain/entities/BranchInfo.js';
import { DocumentPath } from '../../../domain/entities/DocumentPath.js';
import { MemoryDocument } from '../../../domain/entities/MemoryDocument.js';
import type { IFileSystemService } from '../../storage/interfaces/IFileSystemService.js';
import type { IConfigProvider } from '../../config/index.js';
import { FileSystemMemoryBankRepositoryBase } from './FileSystemMemoryBankRepositoryBase.js';
/**
 * Component responsible for document-related operations
 */
export declare class DocumentOperations extends FileSystemMemoryBankRepositoryBase {
    private readonly basePath;
    /**
     * Constructor
     * @param basePath Base path
     * @param fileSystemService File system service
     */
    constructor(basePath: string, fileSystemService: IFileSystemService, configProvider: IConfigProvider);
    /**
     * Get the document repository
     * @returns Document repository
     */
    private getDocumentRepository;
    /**
     * Get a document
     * @param path Document path
     * @returns The retrieved document, or null if not found
     */
    getDocument(path: DocumentPath): Promise<MemoryDocument | null>;
    /**
     * Get a document from a branch
     * @param branchInfo Branch information
     * @param path Document path
     * @returns The retrieved document, or null if not found
     */
    getBranchDocument(branchInfo: BranchInfo, path: DocumentPath): Promise<MemoryDocument | null>;
    /**
     * Save a document
     * @param document Document to save
     */
    saveDocument(document: MemoryDocument): Promise<void>;
    /**
     * Save a document to a branch
     * @param branchInfo Branch information
     * @param document Document to save
     */
    saveBranchDocument(branchInfo: BranchInfo, document: MemoryDocument): Promise<void>;
    /**
     * Delete a document
     * @param path Path of the document to delete
     * @returns Whether the deletion was successful
     */
    deleteDocument(path: DocumentPath): Promise<boolean>;
    /**
     * Delete a document from a branch
     * @param branchInfo Branch information
     * @param path Path of the document to delete
     * @returns Whether the deletion was successful
     */
    deleteBranchDocument(branchInfo: BranchInfo, path: DocumentPath): Promise<boolean>;
    /**
     * Get a list of all documents
     * @returns Array of document paths
     */
    listDocuments(): Promise<DocumentPath[]>;
    /**
     * Get a list of all documents in a branch
     * @param branchInfo Branch information
     * @returns Array of document paths
     */
    listBranchDocuments(branchInfo: BranchInfo): Promise<DocumentPath[]>;
}
//# sourceMappingURL=DocumentOperations.d.ts.map