import type { QueryResult } from '@powersync/common'; import type { WithCacheConfig } from 'drizzle-orm/cache/core/types'; import { entityKind } from 'drizzle-orm/entity'; import type { Logger } from 'drizzle-orm/logger'; import type { RelationalSchemaConfig, TablesRelationalConfig } from 'drizzle-orm/relations'; import { type Query } from 'drizzle-orm/sql/sql'; import type { SQLiteAsyncDialect } from 'drizzle-orm/sqlite-core/dialect'; import type { SelectedFieldsOrdered } from 'drizzle-orm/sqlite-core/query-builders/select.types'; import { SQLiteSession, SQLiteTransaction, type PreparedQueryConfig as PreparedQueryConfigBase, type SQLiteExecuteMethod, type SQLiteTransactionConfig } from 'drizzle-orm/sqlite-core/session'; import { PowerSyncSQLitePreparedQuery, type ContextProvider } from './PowerSyncSQLitePreparedQuery.js'; export interface PowerSyncSQLiteSessionOptions { logger?: Logger; } export type PowerSyncSQLiteTransactionConfig = SQLiteTransactionConfig & { accessMode?: 'read only' | 'read write'; }; export declare class PowerSyncSQLiteTransaction, TSchema extends TablesRelationalConfig> extends SQLiteTransaction<'async', QueryResult, TFullSchema, TSchema> { static readonly [entityKind]: string; } export declare class PowerSyncSQLiteBaseSession, TSchema extends TablesRelationalConfig> extends SQLiteSession<'async', QueryResult, TFullSchema, TSchema> { protected contextProvider: ContextProvider; protected dialect: SQLiteAsyncDialect; protected schema: RelationalSchemaConfig | undefined; protected options: PowerSyncSQLiteSessionOptions; static readonly [entityKind]: string; protected logger: Logger; constructor(contextProvider: ContextProvider, dialect: SQLiteAsyncDialect, schema: RelationalSchemaConfig | undefined, options?: PowerSyncSQLiteSessionOptions); prepareQuery(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown, queryMetadata?: { type: 'select' | 'update' | 'delete' | 'insert'; tables: string[]; }, cacheConfig?: WithCacheConfig): PowerSyncSQLitePreparedQuery; transaction(_transaction: (tx: SQLiteTransaction<'async', QueryResult, TFullSchema, TSchema>) => Promise, _config?: PowerSyncSQLiteTransactionConfig): Promise; }