import { rn } from "..";
import { RecordNode, RT } from "../../R";
import { ArrayOfValues, VarDefROM } from "../variables";
export interface RuleText {
    ruleIdText: string;
    weTexts: string[];
    weAndOr: "AND" | "OR" | "and" | "or";
    taTexts: string[];
}
/**
 * Separating out this class as this doesn't need to be included in production and also,
 * because this imports potentially heavy "chalk" dependency
 */
export declare class rulePrintUtils {
    /** Get an instance of Console Rule Printer */
    static crp: () => ConsoleRulePrinter;
    /** Get an instance of Friendly Rule Printer */
    static frp: () => FriendlyRulePrinter;
    static generateRuleTextsAndPrint: (scene: RecordNode<RT.scene>, varDefMap?: VarDefROM) => void;
    static generateFriendlyRuleTextsAndPrint: (project: RecordNode<RT.project>, sceneIds: number[]) => void;
    static generateFriendlyRuleTexts: (project: RecordNode<RT.project>, sceneIds: number[]) => string;
}
/**
 * Use this class via the singleton getter
 * Eg: ConsoleRulePrinter.getInstance().doSomething....
 */
declare class ConsoleRulePrinter {
    static getInstance: () => ConsoleRulePrinter;
    private static instance;
    generateRuleTextsAndPrint: (scene: RecordNode<RT.scene>, varDefMap?: VarDefROM) => void;
    generateRuleText: (rule: RecordNode<RT.rule>, scene: RecordNode<RT.scene>, varDefMap?: VarDefROM) => RuleText;
    consoleRuleTextPrinter: (ruleText: RuleText) => void;
    ruleIdText: (rule: RecordNode<RT.rule>) => string;
    weText: (we: RecordNode<RT.when_event>, scene: RecordNode<RT.scene>, varDefMap?: VarDefROM, values?: ArrayOfValues) => string;
    taText: (ta: RecordNode<RT.then_action>, scene: RecordNode<RT.scene>, varDefMap?: VarDefROM, values?: ArrayOfValues) => string;
    private coIdToName;
}
/**
 * Use this class via the singleton getter
 * Eg: FriendlyRulePrinter.getInstance().doSomething....
 */
declare class FriendlyRulePrinter {
    static getInstance: () => FriendlyRulePrinter;
    private static instance;
    generateRuleTextsAndPrint: (project: RecordNode<RT.project>, scene: RecordNode<RT.scene>, varDefMap?: VarDefROM) => void;
    generateRuleText: (rule: RecordNode<RT.rule>, project: RecordNode<RT.project>, scene: RecordNode<RT.scene>, varDefMap?: VarDefROM) => RuleText;
    friendlyRuleLine: (ruleText: RuleText) => string;
    weText: (we: RecordNode<RT.when_event>, scene: RecordNode<RT.scene>, varDefMap?: VarDefROM, values?: ArrayOfValues) => string;
    taText: (ta: RecordNode<RT.then_action>, project: RecordNode<RT.project>, scene: RecordNode<RT.scene>, varDefMap?: VarDefROM, values?: ArrayOfValues) => string;
    private coIdToName;
}
export {};
