import type { Node, Query, Tree } from 'web-tree-sitter';
import type { RepomixConfigMerged } from '../../../config/configSchema.js';
export interface ParseContext {
    fileContent: string;
    lines: string[];
    tree: Tree;
    query: Query;
    config: RepomixConfigMerged;
}
export interface ParseStrategy {
    parseCapture(capture: {
        node: Node;
        name: string;
    }, lines: string[], processedChunks: Set<string>, context: ParseContext): string | null;
}
export type ParseResult = {
    content: string | null;
    processedSignatures?: Set<string>;
};
export declare abstract class BaseParseStrategy implements ParseStrategy {
    abstract parseCapture(capture: {
        node: Node;
        name: string;
    }, lines: string[], processedChunks: Set<string>, context: ParseContext): string | null;
    protected getCaptureTypes<T extends Record<string, string>>(name: string, captureTypes: T): Set<T[keyof T]>;
    protected checkAndAddToProcessed(content: string, processedChunks: Set<string>): boolean;
    protected validateLineExists(lines: string[], startRow: number): boolean;
    protected extractLines(lines: string[], startRow: number, endRow: number): string[] | null;
    protected createNullResult(): ParseResult;
    protected createResult(content: string, processedSignatures?: Set<string>): ParseResult;
}
