import { BranchInfo } from '../../../domain/entities/BranchInfo.js';
import { DocumentPath } from '../../../domain/entities/DocumentPath.js';
import type { IFileSystemService } from '../../storage/interfaces/IFileSystemService.js';
import type { IConfigProvider } from '../../config/index.js';
import { FileSystemMemoryBankRepositoryBase } from './FileSystemMemoryBankRepositoryBase.js';
/**
 * Component responsible for path-related operations
 */
export declare class PathOperations extends FileSystemMemoryBankRepositoryBase {
    private readonly basePath;
    protected readonly configProvider: IConfigProvider;
    /**
     * Constructor
     * @param basePath Base path
     * @param fileSystemService File system service
     * @param configProvider Configuration provider
     */
    constructor(basePath: string, fileSystemService: IFileSystemService, configProvider: IConfigProvider);
    /**
     * Get the base path for a branch
     * @param branchInfo Branch information
     * @returns Base path for the branch
     */
    getBranchBasePath(_branchInfo: BranchInfo): string;
    /**
     * Get the global base path
     * @returns Global base path
     */
    getGlobalBasePath(): string;
    /**
     * Resolve a path
     * @param documentPath Document path
     * @returns Full file path
     */
    resolvePath(documentPath: string): string;
    /**
     * Resolve a branch path
     * @param branchInfo Branch information
     * @param documentPath Document path
     * @returns Full file path
     */
    resolveBranchPath(branchInfo: BranchInfo, documentPath: string): string;
    /**
     * Resolve a path using a specified base path
     * @param basePath Base path
     * @param documentPath Document path
     * @returns Full file path
     */
    private resolvePathWithBase;
    /**
     * Check if a path exists
     * @param documentPath Document path
     * @returns true if the path exists, false otherwise
     */
    exists(documentPath: string): Promise<boolean>;
    /**
     * Check if a branch path exists
     * @param branchInfo Branch information
     * @param documentPath Document path
     * @returns true if the path exists, false otherwise
     */
    branchPathExists(branchInfo: BranchInfo, documentPath: string): Promise<boolean>;
    /**
     * Create a directory
     * @param directoryPath Directory path
     */
    createDirectory(directoryPath: string): Promise<void>;
    /**
     * Create a branch directory
     * @param branchInfo Branch information
     * @param directoryPath Directory path
     */
    createBranchDirectory(branchInfo: BranchInfo, directoryPath: string): Promise<void>;
    /**
     * Check if a directory exists
     * @param directoryPath Directory path
     * @returns true if the directory exists, false otherwise
     */
    directoryExists(directoryPath: string): Promise<boolean>;
    /**
     * Check if a branch directory exists
     * @param branchInfo Branch information
     * @param directoryPath Directory path
     * @returns true if the directory exists, false otherwise
     */
    branchDirectoryExists(branchInfo: BranchInfo, directoryPath: string): Promise<boolean>;
    /**
     * Get a list of files
     * @param directoryPath Directory path
     * @returns Array of file paths
     */
    listFiles(directoryPath: string): Promise<string[]>;
    /**
     * Get a list of files in a branch
     * @param branchInfo Branch information
     * @param directoryPath Directory path
     * @returns Array of file paths
     */
    listBranchFiles(branchInfo: BranchInfo, directoryPath: string): Promise<string[]>;
    /**
     * Copy a file
     * @param sourcePath Source path
     * @param destinationPath Destination path
     */
    copyFile(sourcePath: string, destinationPath: string): Promise<void>;
    /**
     * Copy a file between branches
     * @param sourceBranchInfo Source branch information
     * @param sourcePath Source path
     * @param destinationBranchInfo Destination branch information
     * @param destinationPath Destination path
     */
    copyFileBetweenBranches(sourceBranchInfo: BranchInfo, sourcePath: string, destinationBranchInfo: BranchInfo, destinationPath: string): Promise<void>;
    /**
     * Move a file
     * @param sourcePath Source path
     * @param destinationPath Destination path
     */
    moveFile(sourcePath: string, destinationPath: string): Promise<void>;
    /**
     * Move a file between branches
     * @param sourceBranchInfo Source branch information
     * @param sourcePath Source path
     * @param destinationBranchInfo Destination branch information
     * @param destinationPath Destination path
     */
    moveFileBetweenBranches(sourceBranchInfo: BranchInfo, sourcePath: string, destinationBranchInfo: BranchInfo, destinationPath: string): Promise<void>;
    /**
     * Get a list of files within a specified directory
     * @param directoryPath Directory path
     * @param allowedExtensions Array of allowed extensions (optional, defaults to all files)
     * @returns Array of file paths
     */
    listFilesInDirectory(directoryPath: string, allowedExtensions?: string[]): Promise<string[]>;
    /**
     * Filter an array of DocumentPaths
     * @param paths Array of DocumentPaths
     * @param pattern Filter pattern (glob-like)
     * @returns Filtered array of DocumentPaths
     */
    filterPaths(paths: DocumentPath[], pattern: string): DocumentPath[];
}
//# sourceMappingURL=PathOperations.d.ts.map