export declare enum Type { unary = 1, member = 2, binary = 3, decorator = 4, property = 5, object = 6, enum = 7, match = 8, self = 9, whitespace = 10, call = 11, array = 12, identifier = 13, null = 14, boolean = 15, number = 16, string = 17, regular = 18, tuple = 19, case = 20, rest = 21, optional = 22, element = 23, comment = 24, declare = 25, path = 26, item = 27, } export interface Node { type: Type; } export interface StringNode extends Node { type: Type.string; value: string; } export interface BooleanNode extends Node { type: Type.boolean; value: boolean; } export interface RegularNode extends Node { type: Type.regular; value: RegExp; } export interface NumberNode extends Node { type: Type.number; value: number; } export interface SelfNode extends Node { type: Type.self; } export interface NullNode extends Node { type: 14; } export interface DeclareNode extends Node { type: Type.declare; path: Node[]; value: Node; } export interface IdentifierNode extends Node { type: Type.identifier; value: string; } export interface PathNode extends Node { type: Type.path; value: Node; computed: boolean; } export interface ArrayNode extends Node { type: Type.array; value: Node; } export interface CallNode extends Node { type: Type.call; callee: Node; arguments: Node[]; } export interface MatchNode extends Node { type: Type.match; test: Node; cases: Array; } export interface CaseNode extends Node { type: 20; test: Node; value: Node; } export interface EnumNode extends Node { type: 7; arguments: Node[]; } export interface ObjectNode extends Node { type: Type.object; properties: Array; } export interface PropertyNode extends Node { type: Type.property; decorators: DecoratorNode[]; key: Node; optional: boolean; value: Node; } export interface DecoratorNode extends Node { type: Type.decorator; name: string; arguments: Node[]; } export interface BinaryNode extends Node { type: Type.binary; operator: string; left: Node; right: Node; } export interface MemberNode extends Node { type: Type.member; object: Node; properties: Node[]; } export interface UnaryNode extends Node { type: Type.unary; operator: string; argument: Node; } export interface ElementNode extends Node { type: Type.element; declarations: Array; assignment: Node; } export interface CommentNode extends Node { type: Type.comment; value: string; } export interface TupleNode extends Node { type: Type.tuple; value: Node[]; }