import type { Database } from '../../../../../zqlite/src/db.ts';
import type { Identifier, TableMetadata } from '../../change-source/protocol/current.ts';
/**
 * Replica-level analog of tableMetadata in change-streamer/schema.
 * Per the requirement of the backfill protocol, backfill metadata
 * must be tracked outside of the change source (otherwise the change
 * source would have to be able to compute the state of the metadata at
 * arbitrary points in the past).
 *
 * This tracking is done:
 * 1. at the Change DB level, by the change-streamer
 * 2. at the replica level, in order to support the eventual configuration
 *    of ephemeral Change DBs (on SQLite) that are initialized from data
 *    in the replica.
 */
export declare const CREATE_TABLE_METADATA_TABLE = "\n  CREATE TABLE \"_zero.tableMetadata\" (\n    \"schema\"   TEXT NOT NULL,\n    \"table\"    TEXT NOT NULL,\n    \"metadata\" TEXT NOT NULL,\n    PRIMARY KEY (\"schema\", \"table\")\n  );\n";
export declare class TableMetadataTracker {
    #private;
    constructor(db: Database);
    set({ schema, name }: Identifier, metadata: TableMetadata): void;
    rename(oldTable: Identifier, newTable: Identifier): void;
    drop({ schema, name }: Identifier): void;
}
//# sourceMappingURL=table-metadata.d.ts.map