import type { PoolClient } from 'pg'; export type ZeroPublicationOptions = { connectionString: string; /** zero publication name, e.g. 'zero_takeout' or 'zero_chat' */ publicationName: string; /** table names excluded from publication (private/auth tables) */ privateTableNames: string[]; }; export declare function ensureZeroPublication(options: ZeroPublicationOptions): Promise; export type ZeroDatabaseOptions = { connectionString: string; cvrDb?: string; changeDb?: string; }; export declare function ensureZeroDatabases(options: ZeroDatabaseOptions): Promise; export type TriggerDefinition = { name: string; sql: string; }; export declare function defineTrigger(name: string, sql: string): TriggerDefinition; /** load trigger definitions from a glob result (import.meta.glob or loadTriggersFromDir) */ export declare function loadTriggers(glob: Record Promise>): Promise; export declare function ensureZeroTriggers(client: PoolClient, triggers: TriggerDefinition[]): Promise; export type SeedDefinition = { name: string; sql: string; }; export declare function defineSeed(name: string, sql: string): SeedDefinition; export declare function loadSeeds(glob: Record Promise>): Promise; export declare function ensureZeroSeeds(client: PoolClient, seeds: SeedDefinition[]): Promise; export type InitSqlOptions = { /** DDL statements (CREATE TABLE, etc.) */ ddl?: string; triggers?: TriggerDefinition[]; seeds?: SeedDefinition[]; }; export declare function buildInitSql(options: InitSqlOptions): string; /** wrap pgTable to mark tables as private (excluded from zero replication) */ export declare function privateTable any>(createTable: T): T; /** check if a table is marked as private */ export declare function isPrivateTable(table: unknown): boolean; /** derive public table names from a schema (all tables not marked private) */ export declare function derivePublicTables(schema: Record): string[]; //# sourceMappingURL=zero.d.ts.map