import { BaseNode } from "./base.js"; import { Expression } from "../types.js"; export type BinOpArgument = Expression; export type Operator = "+" | "-" | "*" | "/" | "%" | "**" | "==" | "===" | "!=" | "!==" | "+=" | "-=" | "*=" | "/=" | "??=" | "||=" | "&&=" | "<" | ">" | "<=" | ">=" | "&&" | "||" | "!" | "unary-" | "typeof" | "void" | "++" | "--" | "instanceof" | "in" | "=~" | "!~" | "??" | "|>" | "catch"; export declare const PRECEDENCE: Record; /** True when `op` binds tighter than a cast would in TypeScript, so * `a op b as T` must not be read as `a op (b as T)`. */ export declare function bindsTighterThanCast(op: Operator): boolean; /** The prefix operators the parser desugars to `{ op, left: true, right }`. */ export declare const PREFIX_OPS: Operator[]; export type BinOpExpression = BaseNode & { type: "binOpExpression"; operator: Operator; left: Expression; right: Expression; };