import _m0 from 'protobufjs/minimal';
import { TLSMode, Secret, CleanupPolicy } from '../../../../../yandex/cloud/datatransfer/v1/endpoint/common';
export declare const protobufPackage = "yandex.cloud.datatransfer.v1.endpoint";
export interface OnPremiseMongo {
    hosts: string[];
    port: number;
    replicaSet: string;
    tlsMode?: TLSMode;
}
export interface MongoConnectionOptions {
    mdbClusterId: string | undefined;
    onPremise?: OnPremiseMongo | undefined;
    /** User name */
    user: string;
    /** Password for user */
    password?: Secret;
    /** Database name associated with the credentials */
    authSource: string;
}
export interface MongoConnection {
    connectionOptions?: MongoConnectionOptions | undefined;
}
export interface MongoCollection {
    databaseName: string;
    collectionName: string;
}
export interface MongoSource {
    connection?: MongoConnection;
    subnetId: string;
    /**
     * List of collections for replication. Empty list implies replication of all
     * tables on the deployment. Allowed to use * as collection name.
     */
    collections: MongoCollection[];
    /**
     * List of forbidden collections for replication. Allowed to use * as collection
     * name for forbid all collections of concrete schema.
     */
    excludedCollections: MongoCollection[];
    /** Read mode for mongo client */
    secondaryPreferredMode: boolean;
    /** Security groups */
    securityGroups: string[];
}
export interface MongoTarget {
    connection?: MongoConnection;
    /** Database name */
    database: string;
    cleanupPolicy: CleanupPolicy;
    subnetId: string;
    /** Security groups */
    securityGroups: string[];
}
export declare const OnPremiseMongo: {
    encode(message: OnPremiseMongo, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): OnPremiseMongo;
    fromJSON(object: any): OnPremiseMongo;
    toJSON(message: OnPremiseMongo): unknown;
    fromPartial<I extends {
        hosts?: string[] | undefined;
        port?: number | undefined;
        replicaSet?: string | undefined;
        tlsMode?: {
            disabled?: {} | undefined;
            enabled?: {
                caCertificate?: string | undefined;
            } | undefined;
        } | undefined;
    } & {
        hosts?: (string[] & string[] & Record<Exclude<keyof I["hosts"], keyof string[]>, never>) | undefined;
        port?: number | undefined;
        replicaSet?: string | 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 OnPremiseMongo>, never>>(object: I): OnPremiseMongo;
};
export declare const MongoConnectionOptions: {
    encode(message: MongoConnectionOptions, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): MongoConnectionOptions;
    fromJSON(object: any): MongoConnectionOptions;
    toJSON(message: MongoConnectionOptions): unknown;
    fromPartial<I extends {
        mdbClusterId?: string | undefined;
        onPremise?: {
            hosts?: string[] | undefined;
            port?: number | undefined;
            replicaSet?: string | undefined;
            tlsMode?: {
                disabled?: {} | undefined;
                enabled?: {
                    caCertificate?: string | undefined;
                } | undefined;
            } | undefined;
        } | undefined;
        user?: string | undefined;
        password?: {
            raw?: string | undefined;
        } | undefined;
        authSource?: string | undefined;
    } & {
        mdbClusterId?: string | undefined;
        onPremise?: ({
            hosts?: string[] | undefined;
            port?: number | undefined;
            replicaSet?: string | undefined;
            tlsMode?: {
                disabled?: {} | undefined;
                enabled?: {
                    caCertificate?: string | undefined;
                } | undefined;
            } | undefined;
        } & {
            hosts?: (string[] & string[] & Record<Exclude<keyof I["onPremise"]["hosts"], keyof string[]>, never>) | undefined;
            port?: number | undefined;
            replicaSet?: string | 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 OnPremiseMongo>, never>) | undefined;
        user?: string | undefined;
        password?: ({
            raw?: string | undefined;
        } & {
            raw?: string | undefined;
        } & Record<Exclude<keyof I["password"], "raw">, never>) | undefined;
        authSource?: string | undefined;
    } & Record<Exclude<keyof I, keyof MongoConnectionOptions>, never>>(object: I): MongoConnectionOptions;
};
export declare const MongoConnection: {
    encode(message: MongoConnection, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): MongoConnection;
    fromJSON(object: any): MongoConnection;
    toJSON(message: MongoConnection): unknown;
    fromPartial<I extends {
        connectionOptions?: {
            mdbClusterId?: string | undefined;
            onPremise?: {
                hosts?: string[] | undefined;
                port?: number | undefined;
                replicaSet?: string | undefined;
                tlsMode?: {
                    disabled?: {} | undefined;
                    enabled?: {
                        caCertificate?: string | undefined;
                    } | undefined;
                } | undefined;
            } | undefined;
            user?: string | undefined;
            password?: {
                raw?: string | undefined;
            } | undefined;
            authSource?: string | undefined;
        } | undefined;
    } & {
        connectionOptions?: ({
            mdbClusterId?: string | undefined;
            onPremise?: {
                hosts?: string[] | undefined;
                port?: number | undefined;
                replicaSet?: string | undefined;
                tlsMode?: {
                    disabled?: {} | undefined;
                    enabled?: {
                        caCertificate?: string | undefined;
                    } | undefined;
                } | undefined;
            } | undefined;
            user?: string | undefined;
            password?: {
                raw?: string | undefined;
            } | undefined;
            authSource?: string | undefined;
        } & {
            mdbClusterId?: string | undefined;
            onPremise?: ({
                hosts?: string[] | undefined;
                port?: number | undefined;
                replicaSet?: string | undefined;
                tlsMode?: {
                    disabled?: {} | undefined;
                    enabled?: {
                        caCertificate?: string | undefined;
                    } | undefined;
                } | undefined;
            } & {
                hosts?: (string[] & string[] & Record<Exclude<keyof I["connectionOptions"]["onPremise"]["hosts"], keyof string[]>, never>) | undefined;
                port?: number | undefined;
                replicaSet?: string | undefined;
                tlsMode?: ({
                    disabled?: {} | undefined;
                    enabled?: {
                        caCertificate?: string | undefined;
                    } | undefined;
                } & {
                    disabled?: ({} & {} & Record<Exclude<keyof I["connectionOptions"]["onPremise"]["tlsMode"]["disabled"], never>, never>) | undefined;
                    enabled?: ({
                        caCertificate?: string | undefined;
                    } & {
                        caCertificate?: string | undefined;
                    } & Record<Exclude<keyof I["connectionOptions"]["onPremise"]["tlsMode"]["enabled"], "caCertificate">, never>) | undefined;
                } & Record<Exclude<keyof I["connectionOptions"]["onPremise"]["tlsMode"], keyof TLSMode>, never>) | undefined;
            } & Record<Exclude<keyof I["connectionOptions"]["onPremise"], keyof OnPremiseMongo>, never>) | undefined;
            user?: string | undefined;
            password?: ({
                raw?: string | undefined;
            } & {
                raw?: string | undefined;
            } & Record<Exclude<keyof I["connectionOptions"]["password"], "raw">, never>) | undefined;
            authSource?: string | undefined;
        } & Record<Exclude<keyof I["connectionOptions"], keyof MongoConnectionOptions>, never>) | undefined;
    } & Record<Exclude<keyof I, "connectionOptions">, never>>(object: I): MongoConnection;
};
export declare const MongoCollection: {
    encode(message: MongoCollection, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): MongoCollection;
    fromJSON(object: any): MongoCollection;
    toJSON(message: MongoCollection): unknown;
    fromPartial<I extends {
        databaseName?: string | undefined;
        collectionName?: string | undefined;
    } & {
        databaseName?: string | undefined;
        collectionName?: string | undefined;
    } & Record<Exclude<keyof I, keyof MongoCollection>, never>>(object: I): MongoCollection;
};
export declare const MongoSource: {
    encode(message: MongoSource, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): MongoSource;
    fromJSON(object: any): MongoSource;
    toJSON(message: MongoSource): unknown;
    fromPartial<I extends {
        connection?: {
            connectionOptions?: {
                mdbClusterId?: string | undefined;
                onPremise?: {
                    hosts?: string[] | undefined;
                    port?: number | undefined;
                    replicaSet?: string | undefined;
                    tlsMode?: {
                        disabled?: {} | undefined;
                        enabled?: {
                            caCertificate?: string | undefined;
                        } | undefined;
                    } | undefined;
                } | undefined;
                user?: string | undefined;
                password?: {
                    raw?: string | undefined;
                } | undefined;
                authSource?: string | undefined;
            } | undefined;
        } | undefined;
        subnetId?: string | undefined;
        collections?: {
            databaseName?: string | undefined;
            collectionName?: string | undefined;
        }[] | undefined;
        excludedCollections?: {
            databaseName?: string | undefined;
            collectionName?: string | undefined;
        }[] | undefined;
        secondaryPreferredMode?: boolean | undefined;
        securityGroups?: string[] | undefined;
    } & {
        connection?: ({
            connectionOptions?: {
                mdbClusterId?: string | undefined;
                onPremise?: {
                    hosts?: string[] | undefined;
                    port?: number | undefined;
                    replicaSet?: string | undefined;
                    tlsMode?: {
                        disabled?: {} | undefined;
                        enabled?: {
                            caCertificate?: string | undefined;
                        } | undefined;
                    } | undefined;
                } | undefined;
                user?: string | undefined;
                password?: {
                    raw?: string | undefined;
                } | undefined;
                authSource?: string | undefined;
            } | undefined;
        } & {
            connectionOptions?: ({
                mdbClusterId?: string | undefined;
                onPremise?: {
                    hosts?: string[] | undefined;
                    port?: number | undefined;
                    replicaSet?: string | undefined;
                    tlsMode?: {
                        disabled?: {} | undefined;
                        enabled?: {
                            caCertificate?: string | undefined;
                        } | undefined;
                    } | undefined;
                } | undefined;
                user?: string | undefined;
                password?: {
                    raw?: string | undefined;
                } | undefined;
                authSource?: string | undefined;
            } & {
                mdbClusterId?: string | undefined;
                onPremise?: ({
                    hosts?: string[] | undefined;
                    port?: number | undefined;
                    replicaSet?: string | undefined;
                    tlsMode?: {
                        disabled?: {} | undefined;
                        enabled?: {
                            caCertificate?: string | undefined;
                        } | undefined;
                    } | undefined;
                } & {
                    hosts?: (string[] & string[] & Record<Exclude<keyof I["connection"]["connectionOptions"]["onPremise"]["hosts"], keyof string[]>, never>) | undefined;
                    port?: number | undefined;
                    replicaSet?: string | undefined;
                    tlsMode?: ({
                        disabled?: {} | undefined;
                        enabled?: {
                            caCertificate?: string | undefined;
                        } | undefined;
                    } & {
                        disabled?: ({} & {} & Record<Exclude<keyof I["connection"]["connectionOptions"]["onPremise"]["tlsMode"]["disabled"], never>, never>) | undefined;
                        enabled?: ({
                            caCertificate?: string | undefined;
                        } & {
                            caCertificate?: string | undefined;
                        } & Record<Exclude<keyof I["connection"]["connectionOptions"]["onPremise"]["tlsMode"]["enabled"], "caCertificate">, never>) | undefined;
                    } & Record<Exclude<keyof I["connection"]["connectionOptions"]["onPremise"]["tlsMode"], keyof TLSMode>, never>) | undefined;
                } & Record<Exclude<keyof I["connection"]["connectionOptions"]["onPremise"], keyof OnPremiseMongo>, never>) | undefined;
                user?: string | undefined;
                password?: ({
                    raw?: string | undefined;
                } & {
                    raw?: string | undefined;
                } & Record<Exclude<keyof I["connection"]["connectionOptions"]["password"], "raw">, never>) | undefined;
                authSource?: string | undefined;
            } & Record<Exclude<keyof I["connection"]["connectionOptions"], keyof MongoConnectionOptions>, never>) | undefined;
        } & Record<Exclude<keyof I["connection"], "connectionOptions">, never>) | undefined;
        subnetId?: string | undefined;
        collections?: ({
            databaseName?: string | undefined;
            collectionName?: string | undefined;
        }[] & ({
            databaseName?: string | undefined;
            collectionName?: string | undefined;
        } & {
            databaseName?: string | undefined;
            collectionName?: string | undefined;
        } & Record<Exclude<keyof I["collections"][number], keyof MongoCollection>, never>)[] & Record<Exclude<keyof I["collections"], keyof {
            databaseName?: string | undefined;
            collectionName?: string | undefined;
        }[]>, never>) | undefined;
        excludedCollections?: ({
            databaseName?: string | undefined;
            collectionName?: string | undefined;
        }[] & ({
            databaseName?: string | undefined;
            collectionName?: string | undefined;
        } & {
            databaseName?: string | undefined;
            collectionName?: string | undefined;
        } & Record<Exclude<keyof I["excludedCollections"][number], keyof MongoCollection>, never>)[] & Record<Exclude<keyof I["excludedCollections"], keyof {
            databaseName?: string | undefined;
            collectionName?: string | undefined;
        }[]>, never>) | undefined;
        secondaryPreferredMode?: boolean | undefined;
        securityGroups?: (string[] & string[] & Record<Exclude<keyof I["securityGroups"], keyof string[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof MongoSource>, never>>(object: I): MongoSource;
};
export declare const MongoTarget: {
    encode(message: MongoTarget, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): MongoTarget;
    fromJSON(object: any): MongoTarget;
    toJSON(message: MongoTarget): unknown;
    fromPartial<I extends {
        connection?: {
            connectionOptions?: {
                mdbClusterId?: string | undefined;
                onPremise?: {
                    hosts?: string[] | undefined;
                    port?: number | undefined;
                    replicaSet?: string | undefined;
                    tlsMode?: {
                        disabled?: {} | undefined;
                        enabled?: {
                            caCertificate?: string | undefined;
                        } | undefined;
                    } | undefined;
                } | undefined;
                user?: string | undefined;
                password?: {
                    raw?: string | undefined;
                } | undefined;
                authSource?: string | undefined;
            } | undefined;
        } | undefined;
        database?: string | undefined;
        cleanupPolicy?: CleanupPolicy | undefined;
        subnetId?: string | undefined;
        securityGroups?: string[] | undefined;
    } & {
        connection?: ({
            connectionOptions?: {
                mdbClusterId?: string | undefined;
                onPremise?: {
                    hosts?: string[] | undefined;
                    port?: number | undefined;
                    replicaSet?: string | undefined;
                    tlsMode?: {
                        disabled?: {} | undefined;
                        enabled?: {
                            caCertificate?: string | undefined;
                        } | undefined;
                    } | undefined;
                } | undefined;
                user?: string | undefined;
                password?: {
                    raw?: string | undefined;
                } | undefined;
                authSource?: string | undefined;
            } | undefined;
        } & {
            connectionOptions?: ({
                mdbClusterId?: string | undefined;
                onPremise?: {
                    hosts?: string[] | undefined;
                    port?: number | undefined;
                    replicaSet?: string | undefined;
                    tlsMode?: {
                        disabled?: {} | undefined;
                        enabled?: {
                            caCertificate?: string | undefined;
                        } | undefined;
                    } | undefined;
                } | undefined;
                user?: string | undefined;
                password?: {
                    raw?: string | undefined;
                } | undefined;
                authSource?: string | undefined;
            } & {
                mdbClusterId?: string | undefined;
                onPremise?: ({
                    hosts?: string[] | undefined;
                    port?: number | undefined;
                    replicaSet?: string | undefined;
                    tlsMode?: {
                        disabled?: {} | undefined;
                        enabled?: {
                            caCertificate?: string | undefined;
                        } | undefined;
                    } | undefined;
                } & {
                    hosts?: (string[] & string[] & Record<Exclude<keyof I["connection"]["connectionOptions"]["onPremise"]["hosts"], keyof string[]>, never>) | undefined;
                    port?: number | undefined;
                    replicaSet?: string | undefined;
                    tlsMode?: ({
                        disabled?: {} | undefined;
                        enabled?: {
                            caCertificate?: string | undefined;
                        } | undefined;
                    } & {
                        disabled?: ({} & {} & Record<Exclude<keyof I["connection"]["connectionOptions"]["onPremise"]["tlsMode"]["disabled"], never>, never>) | undefined;
                        enabled?: ({
                            caCertificate?: string | undefined;
                        } & {
                            caCertificate?: string | undefined;
                        } & Record<Exclude<keyof I["connection"]["connectionOptions"]["onPremise"]["tlsMode"]["enabled"], "caCertificate">, never>) | undefined;
                    } & Record<Exclude<keyof I["connection"]["connectionOptions"]["onPremise"]["tlsMode"], keyof TLSMode>, never>) | undefined;
                } & Record<Exclude<keyof I["connection"]["connectionOptions"]["onPremise"], keyof OnPremiseMongo>, never>) | undefined;
                user?: string | undefined;
                password?: ({
                    raw?: string | undefined;
                } & {
                    raw?: string | undefined;
                } & Record<Exclude<keyof I["connection"]["connectionOptions"]["password"], "raw">, never>) | undefined;
                authSource?: string | undefined;
            } & Record<Exclude<keyof I["connection"]["connectionOptions"], keyof MongoConnectionOptions>, never>) | undefined;
        } & Record<Exclude<keyof I["connection"], "connectionOptions">, never>) | undefined;
        database?: string | undefined;
        cleanupPolicy?: CleanupPolicy | undefined;
        subnetId?: string | undefined;
        securityGroups?: (string[] & string[] & Record<Exclude<keyof I["securityGroups"], keyof string[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof MongoTarget>, never>>(object: I): MongoTarget;
};
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 {};
