import * as v from '../../../../../../shared/src/valita.ts';
/** At the moment, the only upstream messages are status messages.  */
export declare const changeSourceUpstreamSchema: v.TupleType<[v.Type<"status">, v.UnionType<[v.ObjectType<{
    ack: v.Type<boolean>;
}, undefined>, v.ObjectType<{
    tag: v.Type<"commit">;
}, undefined>]>, v.ObjectType<{
    watermark: v.Type<string>;
}, undefined>]>;
export type ChangeSourceUpstream = v.Infer<typeof changeSourceUpstreamSchema>;
/**
 * Contains the information for requesting a backfill of columns in a table.
 * Backfills are automatically started for new tables and columns in a given
 * change stream session; however, if the session is terminated before the
 * backfill completes, it must be restarted with appropriate
 * {@link BackfillRequest}s when creating a new session.
 *
 * The `change-streamer` is responsible for tracking any changes to the table
 * name, column names, or table metadata, and constructing a BackfillRequest
 * based on the current values (which may be different from when the
 * tables/columns were originally added).
 */
export declare const backfillRequestSchema: v.ObjectType<{
    table: v.ObjectType<Omit<{
        schema: v.Type<string>;
        name: v.Type<string>;
    }, "metadata"> & {
        metadata: v.Type<{
            [x: string]: import("../../../../../../shared/src/bigint-json.ts").JSONValue;
            rowKey: Record<string, import("../../../../../../shared/src/bigint-json.ts").JSONValue>;
        } | null>;
    }, undefined>;
    columns: v.Type<Record<string, Record<string, import("./json.ts").JSONValue | undefined>>>;
}, undefined>;
export type BackfillRequest = v.Infer<typeof backfillRequestSchema>;
//# sourceMappingURL=upstream.d.ts.map