import type { JSONObject } from '../../../../shared/src/bigint-json.ts';
import type { RowID, RowRecord } from './schema/types.ts';
/**
 * KeyColumns track the key columns used to reference rows in the CVR.
 * This is then used to potentially compute a backwards compatible row
 * key in the event that pipelines produce a row with a schema that has
 * a different row key.
 *
 * An invariant that is assumed and maintained is that only one key
 * (i.e. set of columns) is used per table in a given CVR
 * (not counting deleted rows with non-null refCounts).
 *
 * This invariant is maintained by the fact that a full hydration
 * (and thus full CVR scan) always follows any schema change:
 * (1) initial hydration when the client connects
 * (2) re-hydration upon a receiving ResetPipelinesSignal during an
 *     advancement (i.e. schema change)
 *
 * The ensuing CVR update is then responsible for replacing or deleting
 * all obsolete row keys.
 */
export declare class KeyColumns {
    #private;
    constructor(allRowRecords: Iterable<RowRecord>);
    /**
     * Gets an "old" RowID (i.e. compatible with what's in the CVR) from the
     * given `id` and `row` produced by the pipeline. Returns `null` if there
     * is no old row being replaced.
     */
    getOldRowID(id: RowID, row: JSONObject): RowID | null;
}
//# sourceMappingURL=key-columns.d.ts.map