// Type definitions for jsonata 1.7 // Project: https://github.com/jsonata-js/jsonata // Definitions by: Nick and Michael M. Tiller declare function jsonata(str: string, options?: jsonata.JsonataOptions): jsonata.Expression; declare namespace jsonata { interface JsonataOptions { recover?: boolean, RegexEngine?: RegExp } interface ExprNode { type: string; value?: any; position?: number; arguments?: ExprNode[]; name?: string; procedure?: ExprNode; steps?: ExprNode[]; expressions?: ExprNode[]; stages?: ExprNode[]; lhs?: ExprNode[]; rhs?: ExprNode; } interface JsonataError extends Error { code: string; position: number; token: string; } interface Environment { bind(name: string, value: any): void; lookup(name: string): any; readonly timestamp: Date; readonly async: boolean; } interface Focus { readonly environment: Environment; readonly input: any; } interface Expression { evaluate(input: any, bindings?: Record): Promise; evaluate(input: any, bindings: Record | undefined, callback: (err: JsonataError, resp: any) => void): void; assign(name: string, value: any): void; registerFunction(name: string, implementation: (this: Focus, ...args: any[]) => any, signature?: string): void; ast(): ExprNode; } } export = jsonata;