/** * A pending variant of a {@link RawTable} that doesn't have a name (because it would be inferred when creating the * schema). */ export type RawTableType = { /** * The statement to run when PowerSync detects that a row needs to be inserted or updated. */ put: PendingStatement; /** * The statement to run when PowerSync detects that a row needs to be deleted. */ delete: PendingStatement; }; /** * A parameter to use as part of {@link PendingStatement}. * * For delete statements, only the `"Id"` value is supported - the sync client will replace it with the id of the row to * be synced. * * For insert and replace operations, the values of columns in the table are available as parameters through * `{Column: 'name'}`. */ export type PendingStatementParameter = 'Id' | { Column: string; }; /** * A statement that the PowerSync client should use to insert or delete data into a table managed by the user. */ export type PendingStatement = { sql: string; params: PendingStatementParameter[]; }; /** * Instructs PowerSync to sync data into a "raw" table. * * Since raw tables are not backed by JSON, running complex queries on them may be more efficient. Further, they allow * using client-side table and column constraints. * * To collect local writes to raw tables with PowerSync, custom triggers are required. See * {@link https://docs.powersync.com/usage/use-case-examples/raw-tables the documentation} for details and an example on * using raw tables. * * Note that raw tables are only supported when using the new `SyncClientImplementation.rust` sync client. * * @experimental Please note that this feature is experimental at the moment, and not covered by PowerSync semver or * stability guarantees. */ export declare class RawTable implements RawTableType { /** * The name of the table. * * This does not have to match the actual table name in the schema - {@link put} and {@link delete} are free to use * another table. Instead, this name is used by the sync client to recognize that operations on this table (as it * appears in the source / backend database) are to be handled specially. */ name: string; put: PendingStatement; delete: PendingStatement; constructor(name: string, type: RawTableType); }