import { AttributeNode, CommentNode, DirectiveNode, ElementNode, InterpolationNode, Node, RootNode, SimpleExpressionNode, TextNode, TraversalAncestors } from '@vuedx/template-ast-types';
export declare const enum TemplateContextType {
    OpenTag = "open-tag",
    CloseTag = "close-tag",
    Attribute = "attribute",
    AttributeValue = "attribute-value",
    DirectiveArgument = "directive-argument",
    DirectiveModifier = "directive-modifier",
    DirectiveValue = "directive-value",
    Interpolation = "interpolation",
    None = "none",
    Comment = "comment",
    Unknown = "unknown"
}
export interface OpenTagContext {
    type: TemplateContextType.OpenTag;
    node: ElementNode;
    context: ElementNode;
    ancestors: TraversalAncestors;
}
export interface CloseTagContext {
    type: TemplateContextType.CloseTag;
    node: ElementNode;
    context: ElementNode;
    ancestors: TraversalAncestors;
}
export interface AttributeContext {
    type: TemplateContextType.Attribute;
    node: AttributeNode | null;
    context: ElementNode;
    ancestors: TraversalAncestors;
}
export interface AttributeValueContext {
    type: TemplateContextType.AttributeValue;
    node: TextNode;
    context: AttributeNode;
    ancestors: TraversalAncestors;
}
export interface DirectiveArgumentContext {
    type: TemplateContextType.DirectiveArgument;
    node: SimpleExpressionNode | null;
    context: DirectiveNode;
    element: ElementNode;
    ancestors: TraversalAncestors;
}
export interface DirectiveModifierContext {
    type: TemplateContextType.DirectiveModifier;
    node: DirectiveNode;
    context: ElementNode;
    ancestors: TraversalAncestors;
}
export interface DirectiveValueContext {
    type: TemplateContextType.DirectiveValue;
    node: SimpleExpressionNode;
    context: DirectiveNode;
    element: ElementNode;
    ancestors: TraversalAncestors;
}
export interface InterpolationContext {
    type: TemplateContextType.Interpolation;
    node: SimpleExpressionNode | null;
    context: InterpolationNode;
    ancestors: TraversalAncestors;
}
export interface CommentContext {
    type: TemplateContextType.Comment;
    node: CommentNode;
    context: ElementNode | RootNode;
    before: ElementNode | null;
    after: ElementNode | null;
    ancestors: TraversalAncestors;
}
export interface NoneContext {
    type: TemplateContextType.None;
}
export interface UnknownContext {
    type: TemplateContextType.Unknown;
    node: Node;
    ancestors: TraversalAncestors;
}
export declare type Context = AttributeContext | AttributeValueContext | CloseTagContext | CommentContext | DirectiveArgumentContext | DirectiveModifierContext | DirectiveValueContext | InterpolationContext | NoneContext | OpenTagContext | UnknownContext;
export declare function getTemplateContextAt(ast: RootNode | null, offset: number): Context;
//# sourceMappingURL=templateContextAtPosition.d.ts.map