import { JavaClasses } from "@specs-feup/lara/api/lara/util/JavaTypes.js";
import { FileJp } from "../../Joinpoints.js";
/**
 * Given a folder, collects sources in that folder, parses and returns one each time next() is called.
 *
 * Pushes an empty Clava AST. Parsed files are added one at a time, and the AST contains at most one file at any given time.
 *
 * @param srcFoldername - Name of the folder with the source files to iterate.
 * @param sourceExt - Extensions of the source files.
 * @param headerExt - Extensions of the header files.
 */
export default class FileIterator {
    files: JavaClasses.File[];
    currentFile: number;
    isInit: boolean;
    isClosed: boolean;
    pushedAst: boolean;
    srcFoldername: string;
    sourceExt: string[];
    headerExt: string[];
    constructor(srcFoldername: string, sourceExt?: string[], headerExt?: string[]);
    /**
     * @returns $file join point, if there are still files to iterate over, or undefined otherwise
     */
    next(): FileJp | undefined;
    /**
     * @returns True if there are still files to iterate over, false otherwise.
     */
    hasNext(): boolean;
    private init;
    private close;
    /**
     * Attempts to add folders of header files as includes.
     *
     */
    private addIncludes;
    private getFiles;
}
//# sourceMappingURL=FileIterator.d.ts.map