/* auto-generated by NAPI-RS */ /* eslint-disable */ /** A database connection. */ export declare class Database { /** * Creates a new database instance. * * # Arguments * * `path` - The path to the database file. */ constructor(path: string, opts?: DatabaseOpts | undefined | null) /** Returns whether the database is in memory-only mode. */ get memory(): boolean /** Returns whether the database is in memory-only mode. */ get path(): string /** Returns whether the database connection is open. */ get open(): boolean /** * Prepares a statement for execution. * * # Arguments * * * `sql` - The SQL statement to prepare. * * # Returns * * A `Statement` instance. */ prepare(sql: string): Statement /** * Returns the rowid of the last row inserted. * * # Returns * * The rowid of the last row inserted. */ lastInsertRowid(): number /** * Returns the number of changes made by the last statement. * * # Returns * * The number of changes made by the last statement. */ changes(): number /** * Returns the total number of changes made by all statements. * * # Returns * * The total number of changes made by all statements. */ totalChanges(): number /** * Closes the database connection. * * # Returns * * `Ok(())` if the database is closed successfully. */ close(): void /** * Sets the default safe integers mode for all statements from this database. * * # Arguments * * * `toggle` - Whether to use safe integers by default. */ defaultSafeIntegers(toggle?: boolean | undefined | null): void /** Runs the I/O loop synchronously. */ ioLoopSync(): void /** Runs the I/O loop asynchronously, returning a Promise. */ ioLoopAsync(): Promise } export declare class Opfs { constructor() connectDb(path: string, opts?: DatabaseOpts | undefined | null): Promise complete(completionNo: number, result: number): void } export declare class OpfsFile { } /** A prepared statement. */ export declare class Statement { reset(): void /** Returns the number of parameters in the statement. */ parameterCount(): number /** * Returns the name of a parameter at a specific 1-based index. * * # Arguments * * * `index` - The 1-based parameter index. */ parameterName(index: number): string | null /** * Binds a parameter at a specific 1-based index with explicit type. * * # Arguments * * * `index` - The 1-based parameter index. * * `value_type` - The type constant (0=null, 1=int, 2=float, 3=text, 4=blob). * * `value` - The value to bind. */ bindAt(index: number, value: unknown): void /** * Step the statement and return result code (executed on the main thread): * 1 = Row available, 2 = Done, 3 = I/O needed */ stepSync(): number /** * Step the statement and return result code (executed on the background thread): * 1 = Row available, 2 = Done, 3 = I/O needed */ stepAsync(): Promise /** Get the current row data according to the presentation mode */ row(): unknown /** Sets the presentation mode to raw. */ raw(raw?: boolean | undefined | null): void /** Sets the presentation mode to pluck. */ pluck(pluck?: boolean | undefined | null): void /** * Sets safe integers mode for this statement. * * # Arguments * * * `toggle` - Whether to use safe integers. */ safeIntegers(toggle?: boolean | undefined | null): void /** Get column information for the statement */ columns(): Promise /** Finalizes the statement. */ finalize(): void } export interface DatabaseOpts { tracing?: string } /** * turso-db in the the browser requires explicit thread pool initialization * so, we just put no-op task on the thread pool and force emnapi to allocate web worker */ export declare function initThreadPool(): Promise export declare class GeneratorHolder { resumeSync(error?: string | undefined | null): GeneratorResponse resumeAsync(error?: string | undefined | null): Promise } export declare class JsDataCompletion { poison(err: string): void status(value: number): void pushBuffer(value: Buffer): void pushTransform(values: Array): void done(): void } export declare class JsProtocolIo { takeRequest(): JsProtocolRequestBytes | null } export declare class JsProtocolRequestBytes { request(): JsProtocolRequest completion(): JsDataCompletion } export declare class SyncEngine { constructor(opts: SyncEngineOpts) init(): GeneratorHolder ioLoopSync(): void /** Runs the I/O loop asynchronously, returning a Promise. */ ioLoopAsync(): Promise protocolIo(): JsProtocolRequestBytes | null sync(): GeneratorHolder push(): GeneratorHolder stats(): GeneratorHolder pull(): GeneratorHolder checkpoint(): GeneratorHolder open(): Database close(): void } export declare const enum DatabaseChangeTypeJs { Insert = 0, Update = 1, Delete = 2 } export interface DatabaseOpts { path: string } export interface DatabaseRowMutationJs { changeTime: number tableName: string id: number changeType: DatabaseChangeTypeJs before?: Record after?: Record updates?: Record } export interface DatabaseRowStatementJs { sql: string values: Array } export type DatabaseRowTransformResultJs = | { type: 'Keep' } | { type: 'Skip' } | { type: 'Rewrite', stmt: DatabaseRowStatementJs } export type GeneratorResponse = | { type: 'IO' } | { type: 'Done' } | { type: 'SyncEngineStats', operations: number, mainWal: number, revertWal: number, lastPullUnixTime: number, lastPushUnixTime?: number, revision?: string } export type JsProtocolRequest = | { type: 'Http', method: string, path: string, body?: Array, headers: Array<[string, string]> } | { type: 'FullRead', path: string } | { type: 'FullWrite', path: string, content: Array } | { type: 'Transform', mutations: Array } export interface SyncEngineOpts { path: string clientName?: string walPullBatchSize?: number tracing?: string tablesIgnore?: Array useTransform: boolean protocolVersion?: SyncEngineProtocolVersion } export declare const enum SyncEngineProtocolVersion { Legacy = 0, V1 = 1 }