// Generated by dts-bundle-generator v9.5.1

import { ConnectionState, DriverContext, EngineEvents, Engines, LiveMessage, RpcEngine, RpcRequest, SqlExportOptions, SurrealEngine, Uuid } from 'surrealdb';

type CapabilitiesAllowDenyList = {
	allow?: boolean | string[];
	deny?: boolean | string[];
};
type ConnectionOptions = {
	strict?: boolean;
	query_timeout?: number;
	transaction_timeout?: number;
	capabilities?: boolean | {
		scripting?: boolean;
		guest_access?: boolean;
		live_query_notifications?: boolean;
		functions?: boolean | string[] | CapabilitiesAllowDenyList;
		network_targets?: boolean | string[] | CapabilitiesAllowDenyList;
		experimental?: boolean | string[] | CapabilitiesAllowDenyList;
	};
};
/**
 * The engine implementation responsible for communicating with an embedded
 * WebAssembly build of SurrealDB.
 */
export declare class NodeEngine extends RpcEngine implements SurrealEngine {
	#private;
	constructor(context: DriverContext, options?: ConnectionOptions);
	features: Set<{
		"__#1@#private": any;
		readonly name: string;
		readonly sinceVersion: string | undefined;
		readonly untilVersion: string | undefined;
		supports(version: string): boolean;
	}>;
	open(state: ConnectionState): void;
	close(): Promise<void>;
	ready(): void;
	subscribe<K extends keyof EngineEvents>(event: K, listener: (...payload: EngineEvents[K]) => void): () => void;
	liveQuery(id: Uuid): AsyncIterable<LiveMessage>;
	send<Method extends string, Params extends unknown[] | undefined, Result>(request: RpcRequest<Method, Params>): Promise<Result>;
	importSql(data: string | ReadableStream): Promise<void>;
	exportSql(options: Partial<SqlExportOptions>): Promise<Response>;
}
/**
 * Configure the `mem`, `rocksdb`, `surrealkv`, and `surrealkv+versioned` Nodejs engines for the JavaScript SDK.
 *
 * While this package is called `@surrealdb/node`, it is also compatible with Bun and Deno.
 *
 * @param options Optional connection options to configure the Nodejs engines.
 * @example
 * ```ts
 * import { Surreal, createRemoteEngines } from "surrealdb";
 * import { createNodeEngines } from "@surrealdb/node";
 *
 * const db = new Surreal({
 *     engines: {
 *         ...createRemoteEngines(),
 *         ...createNodeEngines(),
 *     },
 * });
 * ```
 */
export declare const createNodeEngines: (options?: ConnectionOptions) => Engines;

export {};
