import { PddlRange, DocumentPositionResolver } from "./DocumentPositionResolver";
import { PddlBracketNode, PddlSyntaxNode } from "./parser/PddlSyntaxNode";
import { PddlSyntaxTree } from "./parser/PddlSyntaxTree";
import { FileStatus, PddlLanguage, Variable } from "./language";
import { URI } from "vscode-uri";
import { Compilations } from "./Compilations";
export declare function stripComments(pddlText: string): string;
/**
 * An abstract PDDL file.
 */
export declare abstract class FileInfo {
    readonly fileUri: URI;
    private version;
    readonly name: string;
    readonly syntaxTree: PddlSyntaxTree;
    private readonly positionResolver;
    private text?;
    private status;
    private parsingProblems;
    private requirements?;
    private requirementsNode;
    private readonly compilations;
    constructor(fileUri: URI, version: number, name: string, syntaxTree: PddlSyntaxTree, positionResolver: DocumentPositionResolver);
    abstract getLanguage(): PddlLanguage;
    getVersion(): number;
    getText(): string;
    setText(text: string): void;
    getCompiledText(): string;
    isDomain(): boolean;
    isProblem(): boolean;
    isUnknownPddl(): boolean;
    isPlan(): boolean;
    isHappenings(): boolean;
    update(version: number, text: string, force?: boolean): boolean;
    setStatus(status: FileStatus): void;
    getStatus(): FileStatus;
    /**
     * Adds a parsing problem.
     * @param parsingProblem parsing problems
     */
    addProblem(parsingProblem: ParsingProblem): void;
    /**
     * Adds list of parsing problems.
     * @param parsingProblems parsing problems
     */
    addProblems(parsingProblems: ParsingProblem[]): void;
    getParsingProblems(): ParsingProblem[];
    getVariableReferences(variable: Variable): PddlRange[];
    private isVariableReference;
    getTypeReferences(typeName: string): PddlRange[];
    protected getRange(node: PddlSyntaxNode): PddlRange;
    setRequirements(requirements: string[], node?: PddlBracketNode): void;
    getRequirements(): string[];
    getRequirementsNode(): PddlBracketNode | undefined;
    getDocumentPositionResolver(): DocumentPositionResolver;
    /**
     * @returns code injections, code replacements
     */
    getCompilations(): Compilations;
}
export type ParsingProblemSeverity = "error" | "warning" | "info" | "hint";
/**
 * Parsing problem.
 */
export declare class ParsingProblem {
    readonly problem: string;
    readonly severity: ParsingProblemSeverity;
    readonly range: PddlRange;
    /**
     * Constructs parsing problem.
     * @param problem problem description to display
     * @param severity problem severity
     * @param range range where the problem is
     */
    constructor(problem: string, severity: ParsingProblemSeverity, range: PddlRange);
}
export declare class UnknownFileInfo extends FileInfo {
    constructor(fileUri: URI, version: number, positionResolver: DocumentPositionResolver);
    getLanguage(): PddlLanguage;
    isUnknownPddl(): boolean;
}
