import type postgres from 'postgres';
import * as v from '../../../../../../shared/src/valita.ts';
export declare function publishedTableQuery(publications: readonly string[]): string;
export declare function indexDefinitionsQuery(publications: readonly string[]): string;
export declare const publishedSchema: v.ObjectType<Omit<{
    tables: v.ArrayType<v.ObjectType<Omit<Omit<{
        name: v.Type<string>;
        columns: v.Type<Record<string, {
            pgTypeClass?: "e" | "b" | "d" | "c" | "p" | "r" | "m" | undefined;
            elemPgTypeClass?: "e" | "b" | "d" | "c" | "p" | "r" | "m" | null | undefined;
            characterMaximumLength?: number | null | undefined;
            notNull?: boolean | null | undefined;
            dflt?: string | null | undefined;
            pos: number;
            dataType: string;
        }>>;
        primaryKey: v.Optional<string[]>;
    }, "schema"> & {
        schema: v.Type<string>;
    }, "publications" | "columns" | "oid" | "replicaIdentity"> & {
        oid: v.Type<number>;
        columns: v.Type<Record<string, {
            pgTypeClass?: "e" | "b" | "d" | "c" | "p" | "r" | "m" | undefined;
            elemPgTypeClass?: "e" | "b" | "d" | "c" | "p" | "r" | "m" | null | undefined;
            characterMaximumLength?: number | null | undefined;
            notNull?: boolean | null | undefined;
            dflt?: string | null | undefined;
            pos: number;
            dataType: string;
            typeOID: number;
        }>>;
        replicaIdentity: v.Optional<"n" | "d" | "f" | "i">;
        publications: v.Type<Record<string, {
            rowFilter: string | null;
        }>>;
    }, undefined>>;
}, "indexes"> & {
    indexes: v.ArrayType<v.ObjectType<Omit<Omit<{
        name: v.Type<string>;
        tableName: v.Type<string>;
        unique: v.Type<boolean>;
        columns: v.Type<Record<string, "ASC" | "DESC">>;
    }, "schema"> & {
        schema: v.Type<string>;
    }, "isReplicaIdentity" | "isImmediate"> & {
        isReplicaIdentity: v.Optional<boolean>;
        isImmediate: v.Optional<boolean>;
    }, undefined>>;
}, undefined>;
export type PublishedSchema = v.Infer<typeof publishedSchema>;
declare const publicationInfoSchema: v.ObjectType<Omit<Omit<{
    tables: v.ArrayType<v.ObjectType<Omit<Omit<{
        name: v.Type<string>;
        columns: v.Type<Record<string, {
            pgTypeClass?: "e" | "b" | "d" | "c" | "p" | "r" | "m" | undefined;
            elemPgTypeClass?: "e" | "b" | "d" | "c" | "p" | "r" | "m" | null | undefined;
            characterMaximumLength?: number | null | undefined;
            notNull?: boolean | null | undefined;
            dflt?: string | null | undefined;
            pos: number;
            dataType: string;
        }>>;
        primaryKey: v.Optional<string[]>;
    }, "schema"> & {
        schema: v.Type<string>;
    }, "publications" | "columns" | "oid" | "replicaIdentity"> & {
        oid: v.Type<number>;
        columns: v.Type<Record<string, {
            pgTypeClass?: "e" | "b" | "d" | "c" | "p" | "r" | "m" | undefined;
            elemPgTypeClass?: "e" | "b" | "d" | "c" | "p" | "r" | "m" | null | undefined;
            characterMaximumLength?: number | null | undefined;
            notNull?: boolean | null | undefined;
            dflt?: string | null | undefined;
            pos: number;
            dataType: string;
            typeOID: number;
        }>>;
        replicaIdentity: v.Optional<"n" | "d" | "f" | "i">;
        publications: v.Type<Record<string, {
            rowFilter: string | null;
        }>>;
    }, undefined>>;
}, "indexes"> & {
    indexes: v.ArrayType<v.ObjectType<Omit<Omit<{
        name: v.Type<string>;
        tableName: v.Type<string>;
        unique: v.Type<boolean>;
        columns: v.Type<Record<string, "ASC" | "DESC">>;
    }, "schema"> & {
        schema: v.Type<string>;
    }, "isReplicaIdentity" | "isImmediate"> & {
        isReplicaIdentity: v.Optional<boolean>;
        isImmediate: v.Optional<boolean>;
    }, undefined>>;
}, "publications"> & {
    publications: v.ArrayType<v.ObjectType<{
        pubname: v.Type<string>;
        pubinsert: v.Type<boolean>;
        pubupdate: v.Type<boolean>;
        pubdelete: v.Type<boolean>;
        pubtruncate: v.Type<boolean>;
    }, undefined>>;
}, undefined>;
export type PublicationInfo = v.Infer<typeof publicationInfoSchema>;
/**
 * Retrieves published tables and columns.
 */
export declare function getPublicationInfo(sql: postgres.Sql, publications: string[]): Promise<PublicationInfo>;
export {};
//# sourceMappingURL=published.d.ts.map