import type { PGliteWithLive } from '@electric-sql/pglite/live'; import { Repeater } from '@repeaterjs/repeater'; import type { ReferenceExpression } from 'kysely'; import { type SelectQueryBuilder } from 'kysely'; import type { Change } from './types.js'; /** * Wrapper for PGlite's Live Queries extension * @example * const pglive = new KyselyLive(pglite) * const query = db * .selectFrom('sales') * .select(['id', 'price']) * .orderBy((eb) => eb.fn('rand')) * const liveQuery = pglive.query(query) * * for await (const data of liveQuery.subscribe) { * const [sale] = data * console.log(sale.id, sale.price) } */ export declare class KyselyLive { private live; constructor(pglite: PGliteWithLive); query(builder: SelectQueryBuilder): { subscribe: Repeater; refresh: () => Promise; unsubscribe: () => Promise; }; changes(builder: SelectQueryBuilder, ref: ReferenceExpression): { subscribe: Repeater[], any, unknown>; refresh: () => Promise; unsubscribe: () => Promise; }; incrementalQuery(builder: SelectQueryBuilder, ref: ReferenceExpression): { subscribe: Repeater; refresh: () => Promise; unsubscribe: () => Promise; }; private createLiveRepeater; }