import _m0 from 'protobufjs/minimal';
import { ObjectTransferStage, TLSMode, Secret, CleanupPolicy, ConnectionManagerConnection } from '../../../../../yandex/cloud/datatransfer/v1/endpoint/common';
export declare const protobufPackage = "yandex.cloud.datatransfer.v1.endpoint";
export interface PostgresObjectTransferSettings {
    /**
     * Sequences
     *
     * CREATE SEQUENCE ...
     */
    sequence: ObjectTransferStage;
    /**
     * Owned sequences
     *
     * CREATE SEQUENCE ... OWNED BY ...
     */
    sequenceOwnedBy: ObjectTransferStage;
    /**
     * Tables
     *
     * CREATE TABLE ...
     */
    table: ObjectTransferStage;
    /**
     * Primary keys
     *
     * ALTER TABLE ... ADD PRIMARY KEY ...
     */
    primaryKey: ObjectTransferStage;
    /**
     * Foreign keys
     *
     * ALTER TABLE ... ADD FOREIGN KEY ...
     */
    fkConstraint: ObjectTransferStage;
    /**
     * Default values
     *
     * ALTER TABLE ... ALTER COLUMN ... SET DEFAULT ...
     */
    defaultValues: ObjectTransferStage;
    /**
     * Constraints
     *
     * ALTER TABLE ... ADD CONSTRAINT ...
     */
    constraint: ObjectTransferStage;
    /**
     * Indexes
     *
     * CREATE INDEX ...
     */
    index: ObjectTransferStage;
    /**
     * Views
     *
     * CREATE VIEW ...
     */
    view: ObjectTransferStage;
    /**
     * Functions
     *
     * CREATE FUNCTION ...
     */
    function: ObjectTransferStage;
    /**
     * Triggers
     *
     * CREATE TRIGGER ...
     */
    trigger: ObjectTransferStage;
    /**
     * Types
     *
     * CREATE TYPE ...
     */
    type: ObjectTransferStage;
    /**
     * Rules
     *
     * CREATE RULE ...
     */
    rule: ObjectTransferStage;
    /**
     * Collations
     *
     * CREATE COLLATION ...
     */
    collation: ObjectTransferStage;
    /**
     * Policies
     *
     * CREATE POLICY ...
     */
    policy: ObjectTransferStage;
    /**
     * Casts
     *
     * CREATE CAST ...
     */
    cast: ObjectTransferStage;
    /**
     * Materialized views
     *
     * CREATE MATERIALIZED VIEW ...
     */
    materializedView: ObjectTransferStage;
    /**
     * Sequence sets
     *
     * CREATE SEQUENCE ...
     */
    sequenceSet: ObjectTransferStage;
}
export interface OnPremisePostgres {
    /** Will be used if the cluster ID is not specified. */
    port: number;
    /** Network interface for endpoint. If none will assume public ipv4 */
    subnetId: string;
    hosts: string[];
    /** TLS settings for server connection. Disabled by default. */
    tlsMode?: TLSMode;
}
export interface PostgresConnection {
    /** Managed Service for PostgreSQL cluster ID */
    mdbClusterId: string | undefined;
    /** Connection options for on-premise PostgreSQL */
    onPremise?: OnPremisePostgres | undefined;
    connectionManagerConnection?: ConnectionManagerConnection | undefined;
}
export interface PostgresSource {
    /** Database connection settings */
    connection?: PostgresConnection;
    /** Database name */
    database: string;
    /** User for database access. not required as may be in connection */
    user: string;
    /** Password for database access. */
    password?: Secret;
    /**
     * Included tables
     *
     * If none or empty list is presented, all tables are replicated. Full table name
     * with schema. Can contain schema_name.* patterns.
     */
    includeTables: string[];
    /**
     * Excluded tables
     *
     * If none or empty list is presented, all tables are replicated. Full table name
     * with schema. Can contain schema_name.* patterns.
     */
    excludeTables: string[];
    /**
     * Maximum lag of replication slot (in bytes); after exceeding this limit
     * replication will be aborted.
     */
    slotByteLagLimit: number;
    /**
     * Database schema for service tables (__consumer_keeper,
     * __data_transfer_mole_finder). Default is public
     */
    serviceSchema: string;
    /** Select database objects to be transferred during activation or deactivation. */
    objectTransferSettings?: PostgresObjectTransferSettings;
    /** Security groups */
    securityGroups: string[];
}
export interface PostgresTarget {
    /** Database connection settings */
    connection?: PostgresConnection;
    /** Database name */
    database: string;
    /** User for database access. not required as may be in connection */
    user: string;
    /** Password for database access. */
    password?: Secret;
    /**
     * Cleanup policy for activate, reactivate and reupload processes. Default is
     * truncate.
     */
    cleanupPolicy: CleanupPolicy;
    /** Security groups */
    securityGroups: string[];
}
export declare const PostgresObjectTransferSettings: {
    encode(message: PostgresObjectTransferSettings, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): PostgresObjectTransferSettings;
    fromJSON(object: any): PostgresObjectTransferSettings;
    toJSON(message: PostgresObjectTransferSettings): unknown;
    fromPartial<I extends {
        sequence?: ObjectTransferStage | undefined;
        sequenceOwnedBy?: ObjectTransferStage | undefined;
        table?: ObjectTransferStage | undefined;
        primaryKey?: ObjectTransferStage | undefined;
        fkConstraint?: ObjectTransferStage | undefined;
        defaultValues?: ObjectTransferStage | undefined;
        constraint?: ObjectTransferStage | undefined;
        index?: ObjectTransferStage | undefined;
        view?: ObjectTransferStage | undefined;
        function?: ObjectTransferStage | undefined;
        trigger?: ObjectTransferStage | undefined;
        type?: ObjectTransferStage | undefined;
        rule?: ObjectTransferStage | undefined;
        collation?: ObjectTransferStage | undefined;
        policy?: ObjectTransferStage | undefined;
        cast?: ObjectTransferStage | undefined;
        materializedView?: ObjectTransferStage | undefined;
        sequenceSet?: ObjectTransferStage | undefined;
    } & {
        sequence?: ObjectTransferStage | undefined;
        sequenceOwnedBy?: ObjectTransferStage | undefined;
        table?: ObjectTransferStage | undefined;
        primaryKey?: ObjectTransferStage | undefined;
        fkConstraint?: ObjectTransferStage | undefined;
        defaultValues?: ObjectTransferStage | undefined;
        constraint?: ObjectTransferStage | undefined;
        index?: ObjectTransferStage | undefined;
        view?: ObjectTransferStage | undefined;
        function?: ObjectTransferStage | undefined;
        trigger?: ObjectTransferStage | undefined;
        type?: ObjectTransferStage | undefined;
        rule?: ObjectTransferStage | undefined;
        collation?: ObjectTransferStage | undefined;
        policy?: ObjectTransferStage | undefined;
        cast?: ObjectTransferStage | undefined;
        materializedView?: ObjectTransferStage | undefined;
        sequenceSet?: ObjectTransferStage | undefined;
    } & Record<Exclude<keyof I, keyof PostgresObjectTransferSettings>, never>>(object: I): PostgresObjectTransferSettings;
};
export declare const OnPremisePostgres: {
    encode(message: OnPremisePostgres, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): OnPremisePostgres;
    fromJSON(object: any): OnPremisePostgres;
    toJSON(message: OnPremisePostgres): unknown;
    fromPartial<I extends {
        port?: number | undefined;
        subnetId?: string | undefined;
        hosts?: string[] | undefined;
        tlsMode?: {
            disabled?: {} | undefined;
            enabled?: {
                caCertificate?: string | undefined;
            } | undefined;
        } | undefined;
    } & {
        port?: number | undefined;
        subnetId?: string | undefined;
        hosts?: (string[] & string[] & Record<Exclude<keyof I["hosts"], keyof string[]>, never>) | undefined;
        tlsMode?: ({
            disabled?: {} | undefined;
            enabled?: {
                caCertificate?: string | undefined;
            } | undefined;
        } & {
            disabled?: ({} & {} & Record<Exclude<keyof I["tlsMode"]["disabled"], never>, never>) | undefined;
            enabled?: ({
                caCertificate?: string | undefined;
            } & {
                caCertificate?: string | undefined;
            } & Record<Exclude<keyof I["tlsMode"]["enabled"], "caCertificate">, never>) | undefined;
        } & Record<Exclude<keyof I["tlsMode"], keyof TLSMode>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof OnPremisePostgres>, never>>(object: I): OnPremisePostgres;
};
export declare const PostgresConnection: {
    encode(message: PostgresConnection, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): PostgresConnection;
    fromJSON(object: any): PostgresConnection;
    toJSON(message: PostgresConnection): unknown;
    fromPartial<I extends {
        mdbClusterId?: string | undefined;
        onPremise?: {
            port?: number | undefined;
            subnetId?: string | undefined;
            hosts?: string[] | undefined;
            tlsMode?: {
                disabled?: {} | undefined;
                enabled?: {
                    caCertificate?: string | undefined;
                } | undefined;
            } | undefined;
        } | undefined;
        connectionManagerConnection?: {
            connectionId?: string | undefined;
            subnetId?: string | undefined;
        } | undefined;
    } & {
        mdbClusterId?: string | undefined;
        onPremise?: ({
            port?: number | undefined;
            subnetId?: string | undefined;
            hosts?: string[] | undefined;
            tlsMode?: {
                disabled?: {} | undefined;
                enabled?: {
                    caCertificate?: string | undefined;
                } | undefined;
            } | undefined;
        } & {
            port?: number | undefined;
            subnetId?: string | undefined;
            hosts?: (string[] & string[] & Record<Exclude<keyof I["onPremise"]["hosts"], keyof string[]>, never>) | undefined;
            tlsMode?: ({
                disabled?: {} | undefined;
                enabled?: {
                    caCertificate?: string | undefined;
                } | undefined;
            } & {
                disabled?: ({} & {} & Record<Exclude<keyof I["onPremise"]["tlsMode"]["disabled"], never>, never>) | undefined;
                enabled?: ({
                    caCertificate?: string | undefined;
                } & {
                    caCertificate?: string | undefined;
                } & Record<Exclude<keyof I["onPremise"]["tlsMode"]["enabled"], "caCertificate">, never>) | undefined;
            } & Record<Exclude<keyof I["onPremise"]["tlsMode"], keyof TLSMode>, never>) | undefined;
        } & Record<Exclude<keyof I["onPremise"], keyof OnPremisePostgres>, never>) | undefined;
        connectionManagerConnection?: ({
            connectionId?: string | undefined;
            subnetId?: string | undefined;
        } & {
            connectionId?: string | undefined;
            subnetId?: string | undefined;
        } & Record<Exclude<keyof I["connectionManagerConnection"], keyof ConnectionManagerConnection>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof PostgresConnection>, never>>(object: I): PostgresConnection;
};
export declare const PostgresSource: {
    encode(message: PostgresSource, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): PostgresSource;
    fromJSON(object: any): PostgresSource;
    toJSON(message: PostgresSource): unknown;
    fromPartial<I extends {
        connection?: {
            mdbClusterId?: string | undefined;
            onPremise?: {
                port?: number | undefined;
                subnetId?: string | undefined;
                hosts?: string[] | undefined;
                tlsMode?: {
                    disabled?: {} | undefined;
                    enabled?: {
                        caCertificate?: string | undefined;
                    } | undefined;
                } | undefined;
            } | undefined;
            connectionManagerConnection?: {
                connectionId?: string | undefined;
                subnetId?: string | undefined;
            } | undefined;
        } | undefined;
        database?: string | undefined;
        user?: string | undefined;
        password?: {
            raw?: string | undefined;
        } | undefined;
        includeTables?: string[] | undefined;
        excludeTables?: string[] | undefined;
        slotByteLagLimit?: number | undefined;
        serviceSchema?: string | undefined;
        objectTransferSettings?: {
            sequence?: ObjectTransferStage | undefined;
            sequenceOwnedBy?: ObjectTransferStage | undefined;
            table?: ObjectTransferStage | undefined;
            primaryKey?: ObjectTransferStage | undefined;
            fkConstraint?: ObjectTransferStage | undefined;
            defaultValues?: ObjectTransferStage | undefined;
            constraint?: ObjectTransferStage | undefined;
            index?: ObjectTransferStage | undefined;
            view?: ObjectTransferStage | undefined;
            function?: ObjectTransferStage | undefined;
            trigger?: ObjectTransferStage | undefined;
            type?: ObjectTransferStage | undefined;
            rule?: ObjectTransferStage | undefined;
            collation?: ObjectTransferStage | undefined;
            policy?: ObjectTransferStage | undefined;
            cast?: ObjectTransferStage | undefined;
            materializedView?: ObjectTransferStage | undefined;
            sequenceSet?: ObjectTransferStage | undefined;
        } | undefined;
        securityGroups?: string[] | undefined;
    } & {
        connection?: ({
            mdbClusterId?: string | undefined;
            onPremise?: {
                port?: number | undefined;
                subnetId?: string | undefined;
                hosts?: string[] | undefined;
                tlsMode?: {
                    disabled?: {} | undefined;
                    enabled?: {
                        caCertificate?: string | undefined;
                    } | undefined;
                } | undefined;
            } | undefined;
            connectionManagerConnection?: {
                connectionId?: string | undefined;
                subnetId?: string | undefined;
            } | undefined;
        } & {
            mdbClusterId?: string | undefined;
            onPremise?: ({
                port?: number | undefined;
                subnetId?: string | undefined;
                hosts?: string[] | undefined;
                tlsMode?: {
                    disabled?: {} | undefined;
                    enabled?: {
                        caCertificate?: string | undefined;
                    } | undefined;
                } | undefined;
            } & {
                port?: number | undefined;
                subnetId?: string | undefined;
                hosts?: (string[] & string[] & Record<Exclude<keyof I["connection"]["onPremise"]["hosts"], keyof string[]>, never>) | undefined;
                tlsMode?: ({
                    disabled?: {} | undefined;
                    enabled?: {
                        caCertificate?: string | undefined;
                    } | undefined;
                } & {
                    disabled?: ({} & {} & Record<Exclude<keyof I["connection"]["onPremise"]["tlsMode"]["disabled"], never>, never>) | undefined;
                    enabled?: ({
                        caCertificate?: string | undefined;
                    } & {
                        caCertificate?: string | undefined;
                    } & Record<Exclude<keyof I["connection"]["onPremise"]["tlsMode"]["enabled"], "caCertificate">, never>) | undefined;
                } & Record<Exclude<keyof I["connection"]["onPremise"]["tlsMode"], keyof TLSMode>, never>) | undefined;
            } & Record<Exclude<keyof I["connection"]["onPremise"], keyof OnPremisePostgres>, never>) | undefined;
            connectionManagerConnection?: ({
                connectionId?: string | undefined;
                subnetId?: string | undefined;
            } & {
                connectionId?: string | undefined;
                subnetId?: string | undefined;
            } & Record<Exclude<keyof I["connection"]["connectionManagerConnection"], keyof ConnectionManagerConnection>, never>) | undefined;
        } & Record<Exclude<keyof I["connection"], keyof PostgresConnection>, never>) | undefined;
        database?: string | undefined;
        user?: string | undefined;
        password?: ({
            raw?: string | undefined;
        } & {
            raw?: string | undefined;
        } & Record<Exclude<keyof I["password"], "raw">, never>) | undefined;
        includeTables?: (string[] & string[] & Record<Exclude<keyof I["includeTables"], keyof string[]>, never>) | undefined;
        excludeTables?: (string[] & string[] & Record<Exclude<keyof I["excludeTables"], keyof string[]>, never>) | undefined;
        slotByteLagLimit?: number | undefined;
        serviceSchema?: string | undefined;
        objectTransferSettings?: ({
            sequence?: ObjectTransferStage | undefined;
            sequenceOwnedBy?: ObjectTransferStage | undefined;
            table?: ObjectTransferStage | undefined;
            primaryKey?: ObjectTransferStage | undefined;
            fkConstraint?: ObjectTransferStage | undefined;
            defaultValues?: ObjectTransferStage | undefined;
            constraint?: ObjectTransferStage | undefined;
            index?: ObjectTransferStage | undefined;
            view?: ObjectTransferStage | undefined;
            function?: ObjectTransferStage | undefined;
            trigger?: ObjectTransferStage | undefined;
            type?: ObjectTransferStage | undefined;
            rule?: ObjectTransferStage | undefined;
            collation?: ObjectTransferStage | undefined;
            policy?: ObjectTransferStage | undefined;
            cast?: ObjectTransferStage | undefined;
            materializedView?: ObjectTransferStage | undefined;
            sequenceSet?: ObjectTransferStage | undefined;
        } & {
            sequence?: ObjectTransferStage | undefined;
            sequenceOwnedBy?: ObjectTransferStage | undefined;
            table?: ObjectTransferStage | undefined;
            primaryKey?: ObjectTransferStage | undefined;
            fkConstraint?: ObjectTransferStage | undefined;
            defaultValues?: ObjectTransferStage | undefined;
            constraint?: ObjectTransferStage | undefined;
            index?: ObjectTransferStage | undefined;
            view?: ObjectTransferStage | undefined;
            function?: ObjectTransferStage | undefined;
            trigger?: ObjectTransferStage | undefined;
            type?: ObjectTransferStage | undefined;
            rule?: ObjectTransferStage | undefined;
            collation?: ObjectTransferStage | undefined;
            policy?: ObjectTransferStage | undefined;
            cast?: ObjectTransferStage | undefined;
            materializedView?: ObjectTransferStage | undefined;
            sequenceSet?: ObjectTransferStage | undefined;
        } & Record<Exclude<keyof I["objectTransferSettings"], keyof PostgresObjectTransferSettings>, never>) | undefined;
        securityGroups?: (string[] & string[] & Record<Exclude<keyof I["securityGroups"], keyof string[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof PostgresSource>, never>>(object: I): PostgresSource;
};
export declare const PostgresTarget: {
    encode(message: PostgresTarget, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): PostgresTarget;
    fromJSON(object: any): PostgresTarget;
    toJSON(message: PostgresTarget): unknown;
    fromPartial<I extends {
        connection?: {
            mdbClusterId?: string | undefined;
            onPremise?: {
                port?: number | undefined;
                subnetId?: string | undefined;
                hosts?: string[] | undefined;
                tlsMode?: {
                    disabled?: {} | undefined;
                    enabled?: {
                        caCertificate?: string | undefined;
                    } | undefined;
                } | undefined;
            } | undefined;
            connectionManagerConnection?: {
                connectionId?: string | undefined;
                subnetId?: string | undefined;
            } | undefined;
        } | undefined;
        database?: string | undefined;
        user?: string | undefined;
        password?: {
            raw?: string | undefined;
        } | undefined;
        cleanupPolicy?: CleanupPolicy | undefined;
        securityGroups?: string[] | undefined;
    } & {
        connection?: ({
            mdbClusterId?: string | undefined;
            onPremise?: {
                port?: number | undefined;
                subnetId?: string | undefined;
                hosts?: string[] | undefined;
                tlsMode?: {
                    disabled?: {} | undefined;
                    enabled?: {
                        caCertificate?: string | undefined;
                    } | undefined;
                } | undefined;
            } | undefined;
            connectionManagerConnection?: {
                connectionId?: string | undefined;
                subnetId?: string | undefined;
            } | undefined;
        } & {
            mdbClusterId?: string | undefined;
            onPremise?: ({
                port?: number | undefined;
                subnetId?: string | undefined;
                hosts?: string[] | undefined;
                tlsMode?: {
                    disabled?: {} | undefined;
                    enabled?: {
                        caCertificate?: string | undefined;
                    } | undefined;
                } | undefined;
            } & {
                port?: number | undefined;
                subnetId?: string | undefined;
                hosts?: (string[] & string[] & Record<Exclude<keyof I["connection"]["onPremise"]["hosts"], keyof string[]>, never>) | undefined;
                tlsMode?: ({
                    disabled?: {} | undefined;
                    enabled?: {
                        caCertificate?: string | undefined;
                    } | undefined;
                } & {
                    disabled?: ({} & {} & Record<Exclude<keyof I["connection"]["onPremise"]["tlsMode"]["disabled"], never>, never>) | undefined;
                    enabled?: ({
                        caCertificate?: string | undefined;
                    } & {
                        caCertificate?: string | undefined;
                    } & Record<Exclude<keyof I["connection"]["onPremise"]["tlsMode"]["enabled"], "caCertificate">, never>) | undefined;
                } & Record<Exclude<keyof I["connection"]["onPremise"]["tlsMode"], keyof TLSMode>, never>) | undefined;
            } & Record<Exclude<keyof I["connection"]["onPremise"], keyof OnPremisePostgres>, never>) | undefined;
            connectionManagerConnection?: ({
                connectionId?: string | undefined;
                subnetId?: string | undefined;
            } & {
                connectionId?: string | undefined;
                subnetId?: string | undefined;
            } & Record<Exclude<keyof I["connection"]["connectionManagerConnection"], keyof ConnectionManagerConnection>, never>) | undefined;
        } & Record<Exclude<keyof I["connection"], keyof PostgresConnection>, never>) | undefined;
        database?: string | undefined;
        user?: string | undefined;
        password?: ({
            raw?: string | undefined;
        } & {
            raw?: string | undefined;
        } & Record<Exclude<keyof I["password"], "raw">, never>) | undefined;
        cleanupPolicy?: CleanupPolicy | undefined;
        securityGroups?: (string[] & string[] & Record<Exclude<keyof I["securityGroups"], keyof string[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof PostgresTarget>, never>>(object: I): PostgresTarget;
};
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
export type DeepPartial<T> = T extends Builtin ? T : T extends Array<infer U> ? Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
    [K in keyof T]?: DeepPartial<T[K]>;
} : Partial<T>;
type KeysOfUnion<T> = T extends T ? keyof T : never;
export type Exact<P, I extends P> = P extends Builtin ? P : P & {
    [K in keyof P]: Exact<P[K], I[K]>;
} & Record<Exclude<keyof I, KeysOfUnion<P>>, never>;
export {};
