import { SourceReader } from './reader';
export declare class RecursionChecker {
    private _currentRoutine;
    private _callGraph;
    callCycle(ast: {
        definitions: any[];
        startPos: SourceReader;
        endPos: SourceReader;
    }): any;
    _addEdge(caller: string, callee: {
        value: string;
    }): void;
    _visitNode(node: {
        definitions: any[];
        startPos: SourceReader;
        endPos: SourceReader;
    }): void;
    _visitNodes(nodes: {
        definitions: any[];
        startPos: SourceReader;
        endPos: SourceReader;
    }[]): void;
    _visitTaggedNode(node: any): void;
    _visitProgramDefinition(): void;
    _visitRoutineDefinition(node: {
        name: {
            value: any;
        };
    }): void;
    _visitProcedureCall(node: {
        procedureName: {
            value: string;
        };
    }): void;
    _visitFunctionCall(node: {
        functionName: {
            value: string;
        };
    }): void;
    _findCallCycle(): {
        caller: any;
        callee: string;
        location: {
            value: string;
        };
    }[] | {
        caller: string;
    }[];
    _findCallCycleFrom(visited: {
        [x: string]: boolean;
    }, parents: {
        [x: string]: any;
    }, path: {
        caller: any;
        callee: string;
        location: {
            value: string;
        };
    }[] | {
        caller: string;
    }[], f: string): {
        caller: any;
        callee: string;
        location: {
            value: string;
        };
    }[] | {
        caller: string;
    }[];
}
//# sourceMappingURL=recursion_checker.d.ts.map