import { Satellite } from '../../satellite/index.js'; import { QualifiedTablename, ReplicatedRowTransformer, DbRecord as DataRecord } from '../../util/index.js'; import { Converter } from '../conversions/converter.js'; import { Fields } from './schema.js'; import * as z from 'zod'; export interface IReplicationTransformManager { setTableTransform(tableName: QualifiedTablename, transform: ReplicatedRowTransformer): void; clearTableTransform(tableName: QualifiedTablename): void; transformTableRecord>(record: DataRecord, transformRow: (row: T) => T, fields: Fields, schema: z.ZodTypeAny, immutableFields: string[]): DataRecord; } export declare class ReplicationTransformManager implements IReplicationTransformManager { private satellite; private converter; constructor(satellite: Satellite, converter: Converter); setTableTransform(tableName: QualifiedTablename, transform: ReplicatedRowTransformer): void; clearTableTransform(tableName: QualifiedTablename): void; transformTableRecord>(record: DataRecord, transformRow: (row: T) => T, fields: Fields, schema: z.ZodTypeAny, immutableFields: string[]): DataRecord; } /** * Transform a raw record with the given typed row transformation {@link transformRow} * by applying appropriate parsing and validation, including forbidding * changes to specified {@link immutableFields} * * @param transformRow transformation of record of type {@link T} * @param fields fields to specify the transformation from raw record to record of type {@link T} * @param schema schema to parse/validate raw record to record of type {@link T} * @param immutableFields - fields that cannot be modified by {@link transformRow} * @return the transformed raw record */ export declare function transformTableRecord>(record: DataRecord, transformRow: (row: T) => T, fields: Fields, schema: z.ZodTypeAny, converter: Converter, immutableFields: string[]): DataRecord;