/* tslint:disable */
/* eslint-disable */
export interface QueryCompilerParams {
    datamodel: string;
    provider: AdapterProvider;
    connectionInfo: JsConnectionInfo;
}

export type BatchResponse = { type: "multi"; plans: Expression[] } | { type: "compacted"; plan: Expression; arguments: Record<string, ArgumentValue>[]; nestedSelection: string[]; keys: string[]; expectNonEmpty: boolean };

export interface JsCompileError {
    message: string;
    code: string | undefined;
    meta: Value | undefined;
}

export class QueryCompiler {
  free(): void;
  [Symbol.dispose](): void;
  compileBatch(request: string): any;
  constructor(params: QueryCompilerParams);
  compile(request: string): any;
}
