import _m0 from 'protobufjs/minimal';
import { TLSMode, ObjectTransferStage, Secret, CleanupPolicy, ConnectionManagerConnection } from '../../../../../yandex/cloud/datatransfer/v1/endpoint/common';
export declare const protobufPackage = "yandex.cloud.datatransfer.v1.endpoint";
export interface OnPremiseMysql {
    /** Database port */
    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 MysqlConnection {
    /** Managed Service for MySQL cluster ID */
    mdbClusterId: string | undefined;
    /** Connection options for on-premise MySQL */
    onPremise?: OnPremiseMysql | undefined;
    connectionManagerConnection?: ConnectionManagerConnection | undefined;
}
export interface MysqlObjectTransferSettings {
    /**
     * Views
     *
     * CREATE VIEW ...
     */
    view: ObjectTransferStage;
    /**
     * Routines
     *
     * CREATE PROCEDURE ... ; CREATE FUNCTION ... ;
     */
    routine: ObjectTransferStage;
    /**
     * Triggers
     *
     * CREATE TRIGGER ...
     */
    trigger: ObjectTransferStage;
    tables: ObjectTransferStage;
}
export interface MysqlSource {
    /** Database connection settings */
    connection?: MysqlConnection;
    /**
     * Database name
     *
     * You can leave it empty, then it will be possible to transfer tables from several
     * databases at the same time from this source.
     */
    database: string;
    /** User for database access. not required as may be in connection */
    user: string;
    /** Password for database access. */
    password?: Secret;
    /**
     * Database timezone
     *
     * Is used for parsing timestamps for saving source timezones. Accepts values from
     * IANA timezone database. Default: local timezone.
     */
    timezone: string;
    /**
     * Schema migration
     *
     * Select database objects to be transferred during activation or deactivation.
     */
    objectTransferSettings?: MysqlObjectTransferSettings;
    includeTablesRegex: string[];
    excludeTablesRegex: string[];
    /** Security groups */
    securityGroups: string[];
    /**
     * Database for service tables
     *
     * Default: data source database. Here created technical tables (__tm_keeper,
     * __tm_gtid_keeper).
     */
    serviceDatabase: string;
}
export interface MysqlTarget {
    /** Database connection settings */
    connection?: MysqlConnection;
    /**
     * Database name
     *
     * Allowed to leave it empty, then the tables will be created in databases with the
     * same names as on the source. If this field is empty, then you must fill below db
     * schema for service table.
     */
    database: string;
    /** User for database access. not required as may be in connection */
    user: string;
    /** Password for database access. */
    password?: Secret;
    /** Default: NO_AUTO_VALUE_ON_ZERO,NO_DIR_IN_CREATE,NO_ENGINE_SUBSTITUTION. */
    sqlMode: string;
    /**
     * Disable constraints checks
     *
     * Recommend to disable for increase replication speed, but if schema contain
     * cascading operations we don't recommend to disable. This option set
     * FOREIGN_KEY_CHECKS=0 and UNIQUE_CHECKS=0.
     */
    skipConstraintChecks: boolean;
    /**
     * Database timezone
     *
     * Is used for parsing timestamps for saving source timezones. Accepts values from
     * IANA timezone database. Default: local timezone.
     */
    timezone: string;
    /**
     * Cleanup policy
     *
     * Cleanup policy for activate, reactivate and reupload processes. Default is
     * DISABLED.
     */
    cleanupPolicy: CleanupPolicy;
    /**
     * Database schema for service table
     *
     * Default: db name. Here created technical tables (__tm_keeper, __tm_gtid_keeper).
     */
    serviceDatabase: string;
    /** Security groups */
    securityGroups: string[];
}
export declare const OnPremiseMysql: {
    encode(message: OnPremiseMysql, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): OnPremiseMysql;
    fromJSON(object: any): OnPremiseMysql;
    toJSON(message: OnPremiseMysql): 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 OnPremiseMysql>, never>>(object: I): OnPremiseMysql;
};
export declare const MysqlConnection: {
    encode(message: MysqlConnection, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): MysqlConnection;
    fromJSON(object: any): MysqlConnection;
    toJSON(message: MysqlConnection): 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 OnPremiseMysql>, 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 MysqlConnection>, never>>(object: I): MysqlConnection;
};
export declare const MysqlObjectTransferSettings: {
    encode(message: MysqlObjectTransferSettings, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): MysqlObjectTransferSettings;
    fromJSON(object: any): MysqlObjectTransferSettings;
    toJSON(message: MysqlObjectTransferSettings): unknown;
    fromPartial<I extends {
        view?: ObjectTransferStage | undefined;
        routine?: ObjectTransferStage | undefined;
        trigger?: ObjectTransferStage | undefined;
        tables?: ObjectTransferStage | undefined;
    } & {
        view?: ObjectTransferStage | undefined;
        routine?: ObjectTransferStage | undefined;
        trigger?: ObjectTransferStage | undefined;
        tables?: ObjectTransferStage | undefined;
    } & Record<Exclude<keyof I, keyof MysqlObjectTransferSettings>, never>>(object: I): MysqlObjectTransferSettings;
};
export declare const MysqlSource: {
    encode(message: MysqlSource, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): MysqlSource;
    fromJSON(object: any): MysqlSource;
    toJSON(message: MysqlSource): 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;
        timezone?: string | undefined;
        objectTransferSettings?: {
            view?: ObjectTransferStage | undefined;
            routine?: ObjectTransferStage | undefined;
            trigger?: ObjectTransferStage | undefined;
            tables?: ObjectTransferStage | undefined;
        } | undefined;
        includeTablesRegex?: string[] | undefined;
        excludeTablesRegex?: string[] | undefined;
        securityGroups?: string[] | undefined;
        serviceDatabase?: 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 OnPremiseMysql>, 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 MysqlConnection>, never>) | undefined;
        database?: string | undefined;
        user?: string | undefined;
        password?: ({
            raw?: string | undefined;
        } & {
            raw?: string | undefined;
        } & Record<Exclude<keyof I["password"], "raw">, never>) | undefined;
        timezone?: string | undefined;
        objectTransferSettings?: ({
            view?: ObjectTransferStage | undefined;
            routine?: ObjectTransferStage | undefined;
            trigger?: ObjectTransferStage | undefined;
            tables?: ObjectTransferStage | undefined;
        } & {
            view?: ObjectTransferStage | undefined;
            routine?: ObjectTransferStage | undefined;
            trigger?: ObjectTransferStage | undefined;
            tables?: ObjectTransferStage | undefined;
        } & Record<Exclude<keyof I["objectTransferSettings"], keyof MysqlObjectTransferSettings>, never>) | undefined;
        includeTablesRegex?: (string[] & string[] & Record<Exclude<keyof I["includeTablesRegex"], keyof string[]>, never>) | undefined;
        excludeTablesRegex?: (string[] & string[] & Record<Exclude<keyof I["excludeTablesRegex"], keyof string[]>, never>) | undefined;
        securityGroups?: (string[] & string[] & Record<Exclude<keyof I["securityGroups"], keyof string[]>, never>) | undefined;
        serviceDatabase?: string | undefined;
    } & Record<Exclude<keyof I, keyof MysqlSource>, never>>(object: I): MysqlSource;
};
export declare const MysqlTarget: {
    encode(message: MysqlTarget, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): MysqlTarget;
    fromJSON(object: any): MysqlTarget;
    toJSON(message: MysqlTarget): 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;
        sqlMode?: string | undefined;
        skipConstraintChecks?: boolean | undefined;
        timezone?: string | undefined;
        cleanupPolicy?: CleanupPolicy | undefined;
        serviceDatabase?: string | 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 OnPremiseMysql>, 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 MysqlConnection>, never>) | undefined;
        database?: string | undefined;
        user?: string | undefined;
        password?: ({
            raw?: string | undefined;
        } & {
            raw?: string | undefined;
        } & Record<Exclude<keyof I["password"], "raw">, never>) | undefined;
        sqlMode?: string | undefined;
        skipConstraintChecks?: boolean | undefined;
        timezone?: string | undefined;
        cleanupPolicy?: CleanupPolicy | undefined;
        serviceDatabase?: string | undefined;
        securityGroups?: (string[] & string[] & Record<Exclude<keyof I["securityGroups"], keyof string[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof MysqlTarget>, never>>(object: I): MysqlTarget;
};
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 {};
