import { IParser, ITokenizer } from 'thaw-interpreter-types';
import { GlobalInfoBase } from '../../../common/domain-object-model/global-info-base';
import { PrologClause } from './prolog-clause';
import { PrologGoal } from './prolog-goal';
import { IPrologExpression } from './interfaces/iprolog-expression';
import { IPrologVariable } from './interfaces/ivariable';
export declare class PrologGlobalInfo extends GlobalInfoBase<IPrologExpression> {
    static readonly ClauseAdded = "Clause added.";
    static readonly ClauseAlreadyExists = "An identical clause is already in the clause list.";
    static readonly IsomorphicClauseAlreadyExists = "An isomorphic clause is already in the clause list.";
    static readonly IsomorphicOrMoreGeneralClauseAlreadyExists = "An isomorphic or more general clause is already in the clause list.";
    static readonly OperatorAdded = "Operator added.";
    static readonly InvalidCommand = "Invalid command.";
    static readonly Satisfied = "Satisfied";
    static readonly NotSatisfied = "Not satisfied";
    private variableRenameNum;
    private allMode;
    private solutionCollectionMode;
    private numSolutionsFound;
    private readonly DefaultModule;
    private guidNumber;
    private readonly falseVal;
    private readonly trueVal;
    constructor(options?: {
        parser?: IParser;
        tokenizer?: ITokenizer;
    });
    toString(): string;
    get falseValue(): IPrologExpression;
    get trueValue(): IPrologExpression;
    valueIsFalse(value: IPrologExpression): boolean;
    valueIsInteger(value: IPrologExpression): boolean;
    valueAsInteger(value: IPrologExpression): number;
    integerAsValue(value: number): IPrologExpression;
    Clear(): void;
    FindFirstSolution(): void;
    FindAllSolutions(): void;
    GetNextUniqueVariable(): IPrologVariable;
    private GetVariablesFromGoalList;
    GetListOfBindingVariablesFromGoalList(goalListParam: PrologGoal[]): IPrologVariable[];
    private AutomaticPrint;
    private Unifiable2;
    private NotUnifiable2;
    private Equals2;
    private NotEquals2;
    private doIntegerArithmetic;
    private doIntegerComparison;
    private createSubstitutionForArithmeticOperation;
    private ProveGoalList;
    private ProveGoalListUsingModule;
    ProcessInput(parseResult: PrologClause | PrologGoal[], currentModuleName?: string): string;
    private FindModule;
    evaluateToString(str: string): string;
    private getNextGuid;
}
//# sourceMappingURL=prolog-global-info.d.ts.map