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.Type<{
    indexes: {
        isReplicaIdentity?: boolean | undefined;
        isPrimaryKey?: boolean | undefined;
        isImmediate?: boolean | undefined;
        name: string;
        columns: Record<string, "ASC" | "DESC">;
        schema: string;
        tableName: string;
        unique: boolean;
    }[];
    tables: {
        replicaIdentityColumns: string[];
        primaryKey?: string[] | undefined;
        schemaOID?: number | undefined;
        replicaIdentity?: "n" | "d" | "f" | "i" | undefined;
        name: string;
        schema: string;
        oid: number;
        columns: Record<string, {
            pgTypeClass?: "e" | "d" | "b" | "c" | "p" | "r" | "m" | undefined;
            elemPgTypeClass?: "e" | "d" | "b" | "c" | "p" | "r" | "m" | null | undefined;
            characterMaximumLength?: number | null | undefined;
            notNull?: boolean | null | undefined;
            dflt?: string | null | undefined;
            pos: number;
            dataType: string;
            typeOID: number;
        }>;
        publications: Record<string, {
            rowFilter: string | null;
        }>;
    }[];
}>;
export type PublishedSchema = v.Infer<typeof publishedSchema>;
export type PublishedTableWithReplicaIdentity = PublishedSchema['tables'][number];
declare const publicationsResultSchema: 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>>;
export type PublicationInfo = PublishedSchema & {
    publications: v.Infer<typeof publicationsResultSchema>;
};
/**
 * Retrieves published tables and columns.
 */
export declare function getPublicationInfo(sql: postgres.Sql, publications: string[]): Promise<PublicationInfo>;
export {};
//# sourceMappingURL=published.d.ts.map