import type { ParsedMarkdownFile } from '../types/links.js';
import type { OperationChange } from '../types/operations.js';
/**
 * Result of a link refactoring operation.
 *
 * Contains the updated content with refactored links and detailed information about the changes
 * made during the refactoring process.
 *
 * @category Core
 */
export interface LinkRefactorResult {
    /** Updated content with refactored links */
    updatedContent: string;
    /** Changes made to links */
    changes: OperationChange[];
    /** Any errors encountered during refactoring */
    errors: string[];
}
/**
 * Configuration options for link refactoring operations.
 *
 * Controls how links are processed during refactoring, including path conversion, formatting
 * preservation, and special handling for different link types.
 *
 * @category Core
 */
export interface RefactorOptions {
    /** Convert absolute paths to relative where possible */
    preferRelativePaths?: boolean;
    /** Update Claude import links */
    updateClaudeImports?: boolean;
    /** Preserve link formatting (brackets, quotes, etc.) */
    preserveFormatting?: boolean;
}
/**
 * Refactors and updates markdown links when files are moved or restructured.
 *
 * The LinkRefactorer automatically updates link paths, maintains referential integrity, and handles
 * various link types including relative paths, absolute paths, and Claude import syntax. It ensures
 * that links remain valid after file operations.
 *
 * @category Core
 *
 * @example
 *   Basic link refactoring
 *   ```typescript
 *   const refactorer = new LinkRefactorer({
 *   preferRelativePaths: true,
 *   updateClaudeImports: true
 *   });
 *
 *   const result = await refactorer.refactorLinks(
 *   parsedFile,
 *   'old/path/file.md',
 *   'new/path/file.md'
 *   );
 *
 *   console.log(`Updated ${result.changes.length} links`);
 *   ```
 *
 * @example
 *   Bulk refactoring with path mapping
 *   ```typescript
 *   const pathMap = new Map([
 *   ['docs/old.md', 'guides/new.md'],
 *   ['api/legacy.md', 'reference/current.md']
 *   ]);
 *
 *   const result = await refactorer.refactorLinksWithMapping(
 *   parsedFile,
 *   pathMap
 *   );
 *   ```
 */
export declare class LinkRefactorer {
    private options;
    constructor(options?: RefactorOptions);
    /** Update links in a file when another file has been moved */
    refactorLinksForFileMove(file: ParsedMarkdownFile, movedFilePath: string, newFilePath: string): Promise<LinkRefactorResult>;
    /** Update links in a file when another file has been moved (with provided content) */
    refactorLinksForFileMoveWithContent(file: ParsedMarkdownFile, movedFilePath: string, newFilePath: string, content: string): Promise<LinkRefactorResult>;
    /** Update links when the current file is being moved */
    refactorLinksForCurrentFileMove(file: ParsedMarkdownFile, newFilePath: string): Promise<LinkRefactorResult>;
    /** Update links when the current file is being moved (with provided content) */
    refactorLinksForCurrentFileMoveWithContent(file: ParsedMarkdownFile, newFilePath: string, content: string): Promise<LinkRefactorResult>;
    /** Update a single link when a target file has been moved */
    private updateLinkForMovedFile;
    /** Update a link when the source file (containing the link) is being moved */
    private updateLinkForSourceFileMove;
    private updateClaudeImportPath;
    private updateInternalLinkPath;
    /** Replace a link in a line of text while preserving formatting */
    private replaceLinkInLine;
    /** Escape special regex characters in a string */
    private escapeRegex;
    /** Update reference-style link definitions */
    refactorReferenceDefinitions(file: ParsedMarkdownFile, movedFilePath: string, newFilePath: string): Promise<LinkRefactorResult>;
}
//# sourceMappingURL=link-refactorer.d.ts.map