import { Node, Expression } from "../html/ast"; import { StringRange } from "../base/ast"; export declare enum ScriptExpressionKind { Node = "Node", Reference = "Reference", Array = "Array", Object = "Object", String = "String", Number = "Number", Boolean = "Boolean", Conjunction = "Conjunction", Not = "Not", Group = "Group" } declare type BaseScriptExpression = { id: string; scriptKind: TKind; }; export declare type ScriptNode = Node & BaseScriptExpression; export declare type ScriptObjectProperty = { key: string; value: ScriptExpression; }; export declare enum ScriptConjunctionOperatorKind { And = "And", Or = "Or" } export declare type ScriptConjunction = { left: ScriptExpression; range: StringRange; right: ScriptExpression; operator: ScriptConjunctionOperatorKind; } & BaseScriptExpression; export declare type ScriptObject = { properties: ScriptObjectProperty[]; range: StringRange; } & BaseScriptExpression; export declare type ScriptArray = { values: ScriptExpression[]; range: StringRange; } & BaseScriptExpression; export declare type ScriptString = { value: string; range: StringRange; } & BaseScriptExpression; export declare type ScriptBoolean = { value: boolean; range: StringRange; } & BaseScriptExpression; export declare type ScriptNot = { expression: ScriptExpression; range: StringRange; } & BaseScriptExpression; export declare type ScriptGroup = { expression: ScriptExpression; range: StringRange; } & BaseScriptExpression; export declare type ScriptNumber = { value: number; range: StringRange; } & BaseScriptExpression; export declare type Reference = { path: ReferencePart[]; range: StringRange; } & BaseScriptExpression; export declare type ReferencePart = { name: string; optional: boolean; }; export declare type ScriptExpression = Reference | ScriptNode | ScriptObject | ScriptGroup | ScriptArray | ScriptNumber | ScriptString | ScriptBoolean | ScriptConjunction | ScriptNot; export declare const traverseJSExpression: (expr: ScriptExpression, owner: Expression, each: (expr: ScriptExpression, parent: Expression) => void | boolean) => any; export {};