import { Terminal, Production, NonTerminal, Symbol, IGrammar } from "@/Definition";
export declare type FirstMap = Map<Terminal, Production>;
export declare type FirstSet = Set<Terminal>;
export declare type FirstTable = Map<string, Map<Terminal, Production>>;
export declare class FirstSetCalculator {
    private cache;
    private ciclicDector;
    private grammar;
    constructor(grammar: IGrammar);
    getFirstSet(target: Symbol): FirstSet;
    getFirstMap(target: NonTerminal): FirstMap;
    getFirstTable(): Map<string, Map<Object, Production>>;
}
