import { DomainInfo, PddlDomainConstruct } from "./DomainInfo";
import { Variable } from "./language";
import { PddlSyntaxNode } from "./parser/PddlSyntaxNode";
import { PddlRange } from "./DocumentPositionResolver";
import { Effect } from "./parser/ActionEffectParser";
export declare class ModelHierarchy {
    private domainInfo;
    constructor(domainInfo: DomainInfo);
    private rangeIncludesOffset;
    getReferenceInfo(variableInfo: Variable, startOffset: number): VariableReferenceInfo;
    private getConditionReferenceInfo;
    private getReadOnlyReferenceInfo;
    private getEffectReferenceInfo;
    static isInsideCondition(currentNode: PddlSyntaxNode): boolean;
    private static findConditionAncestor;
    static isInsideDurativeActionUnqualifiedCondition(currentNode: PddlSyntaxNode): boolean;
    private static findDurativeActionAncestor;
    private static findConditionTimeQualifier;
    static isInsideDurativeActionDiscreteEffect(currentNode: PddlSyntaxNode): boolean;
    static isInsideActionOrEvent(currentNode: PddlSyntaxNode): boolean;
    static isInsideEffect(currentNode: PddlSyntaxNode): boolean;
    static isInsideDurativeActionUnqualifiedEffect(currentNode: PddlSyntaxNode): boolean;
    static isInsideProcess(currentNode: PddlSyntaxNode): boolean;
}
export declare class ReferenceInfo {
    readonly node: PddlSyntaxNode;
    constructor(node: PddlSyntaxNode);
}
export declare class VariableReferenceInfo extends ReferenceInfo {
    readonly structure: PddlDomainConstruct;
    private timeQualifierNode;
    readonly part: string;
    readonly kind: VariableReferenceKind;
    readonly relevantCode?: string | undefined;
    constructor(structure: PddlDomainConstruct, timeQualifierNode: PddlSyntaxNode | undefined, part: string, kind: VariableReferenceKind, node: PddlSyntaxNode, relevantCode?: string | undefined);
    getTimeQualifier(): string;
    toString(): string;
}
export declare class VariableEffectReferenceInfo extends VariableReferenceInfo {
    readonly effect: Effect;
    constructor(structure: PddlDomainConstruct, timeQualifierNode: PddlSyntaxNode | undefined, part: string, kind: VariableReferenceKind, effect: Effect, node: PddlSyntaxNode, relevantCode: string);
}
export declare class UnrecognizedVariableReferenceInfo extends VariableReferenceInfo {
    constructor(node: PddlSyntaxNode, range: PddlRange);
}
export declare enum VariableReferenceKind {
    READ = 0,
    READ_OR_WRITE = 1,
    WRITE = 2,
    UNRECOGNIZED = 3
}
