import { BranchInfo } from "../../../domain/entities/BranchInfo.js";
import { DocumentPath } from "../../../domain/entities/DocumentPath.js";
import { MemoryDocument } from "../../../domain/entities/MemoryDocument.js";
import { Tag } from "../../../domain/entities/Tag.js";
import type { IBranchMemoryBankRepository, RecentBranch } from "../../../domain/repositories/IBranchMemoryBankRepository.js";
import type { BranchTagIndex as TagIndex } from "@memory-bank/schemas";
/**
 * Simple file system implementation of branch memory bank repository for testing
 * Acts as a Facade, delegating operations to specialized classes.
 */
export declare class FileSystemBranchMemoryBankRepository implements IBranchMemoryBankRepository {
    private readonly branchMemoryBankPath;
    private readonly branchDirectoryManager;
    private readonly documentIO;
    private readonly documentLister;
    private readonly tagIndexHandler;
    private readonly documentFinder;
    /**
     * Constructor
     * @param rootPath Root path for the memory bank
     */
    constructor(rootPath: string);
    /**
     * Check if branch exists
     * @param branchName Branch name
     * @returns Promise resolving to boolean indicating if branch exists
     */
    exists(branchName: string): Promise<boolean>;
    /**
     * Initialize branch memory bank
     * @param branchInfo Branch information
     * @returns Promise resolving when initialization is complete
     */
    initialize(branchInfo: BranchInfo): Promise<void>;
    /**
     * Get document from branch
     * @param branchInfo Branch information
     * @param documentPath Document path
     * @returns Promise resolving to document if found, null otherwise
     */
    getDocument(branchInfo: BranchInfo, documentPath: DocumentPath): Promise<MemoryDocument | null>;
    /**
     * Save document to branch
     * @param branchInfo Branch information
     * @param document Document to save
     * @returns Promise resolving when done
     */
    saveDocument(branchInfo: BranchInfo, document: MemoryDocument): Promise<void>;
    /**
     * Delete document from branch
     * @param branchInfo Branch information
     * @param documentPath Document path
     * @returns Promise resolving to boolean indicating success
     */
    deleteDocument(branchInfo: BranchInfo, documentPath: DocumentPath): Promise<boolean>;
    /**
     * List all documents in branch
     * @param branchInfo Branch information
     * @returns Promise resolving to array of document paths
     */
    listDocuments(branchInfo: BranchInfo): Promise<DocumentPath[]>;
    /**
     * Find documents by tags in branch
     * @param branchInfo Branch information
     * @param tags Tags to search for
     * @returns Promise resolving to array of matching documents
     */
    findDocumentsByTags(branchInfo: BranchInfo, tags: Tag[]): Promise<MemoryDocument[]>;
    /**
     * Get recent branches (これはこのクラスに残すか、別のManagerか？)
     * @param limit Maximum number of branches to return
     * @returns Promise resolving to array of recent branches
     */
    getRecentBranches(limit?: number): Promise<RecentBranch[]>;
    /**
     * Validate branch structure
     * @param branchInfo Branch information
     * @returns Promise resolving to boolean indicating if structure is valid
     */
    validateStructure(branchInfo: BranchInfo): Promise<boolean>;
    /**
     * Save tag index for branch
     * @param branchInfo Branch information
     * @param tagIndex Tag index to save
     * @returns Promise resolving when done
     */
    saveTagIndex(branchInfo: BranchInfo, tagIndex: TagIndex): Promise<void>;
    /**
     * Get tag index for branch
     * @param branchInfo Branch information
     * @returns Promise resolving to tag index if found, null otherwise
     */
    getTagIndex(branchInfo: BranchInfo): Promise<TagIndex | null>;
    /**
     * Find documents by tags in branch using index
     * @param branchInfo Branch information
     * @param tags Tags to search for
     * @param matchAll If true, documents must have all tags (AND), otherwise any tag (OR)
     * @returns Promise resolving to array of document paths
     */
    findDocumentPathsByTagsUsingIndex(params: {
        branchInfo: BranchInfo;
        tags: Tag[];
        matchAll?: boolean;
    }): Promise<DocumentPath[]>;
}
//# sourceMappingURL=FileSystemBranchMemoryBankRepository.d.ts.map