import _m0 from 'protobufjs/minimal';
import { Parser } from '../../../../../yandex/cloud/datatransfer/v1/endpoint/parsers';
import { Serializer } from '../../../../../yandex/cloud/datatransfer/v1/endpoint/serializers';
export declare const protobufPackage = "yandex.cloud.datatransfer.v1.endpoint";
export declare enum YdsCompressionCodec {
    YDS_COMPRESSION_CODEC_UNSPECIFIED = 0,
    YDS_COMPRESSION_CODEC_RAW = 1,
    YDS_COMPRESSION_CODEC_GZIP = 2,
    YDS_COMPRESSION_CODEC_ZSTD = 4,
    UNRECOGNIZED = -1
}
export declare function ydsCompressionCodecFromJSON(object: any): YdsCompressionCodec;
export declare function ydsCompressionCodecToJSON(object: YdsCompressionCodec): string;
export interface YDSSource {
    /** Database */
    database: string;
    /** Stream */
    stream: string;
    /** SA which has read access to the stream. */
    serviceAccountId: string;
    /** Compression codec */
    supportedCodecs: YdsCompressionCodec[];
    /** Data parsing rules */
    parser?: Parser;
    /**
     * Should continue working, if consumer read lag exceed TTL of topic
     * False: stop the transfer in error state, if detected lost data. True: continue
     * working with losing part of data
     */
    allowTtlRewind: boolean;
    /** for dedicated db */
    endpoint: string;
    /** Network interface for endpoint. If none will assume public ipv4 */
    subnetId: string;
    /** Security groups */
    securityGroups: string[];
    /** for important streams */
    consumer: string;
}
export interface YDSTarget {
    /** Database */
    database: string;
    /** Stream */
    stream: string;
    /** SA which has read access to the stream. */
    serviceAccountId: string;
    /**
     * Save transaction order
     * Not to split events queue into separate per-table queues.
     * Incompatible with setting Topic prefix, only with Topic full name.
     */
    saveTxOrder: boolean;
    compressionCodec: YdsCompressionCodec;
    /** Data serialization format */
    serializer?: Serializer;
    /** for dedicated db */
    endpoint: string;
    /** Network interface for endpoint. If none will assume public ipv4 */
    subnetId: string;
    /** Security groups */
    securityGroups: string[];
}
export declare const YDSSource: {
    encode(message: YDSSource, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): YDSSource;
    fromJSON(object: any): YDSSource;
    toJSON(message: YDSSource): unknown;
    fromPartial<I extends {
        database?: string | undefined;
        stream?: string | undefined;
        serviceAccountId?: string | undefined;
        supportedCodecs?: YdsCompressionCodec[] | undefined;
        parser?: {
            jsonParser?: {
                dataSchema?: {
                    jsonFields?: string | undefined;
                    fields?: {
                        fields?: {
                            name?: string | undefined;
                            type?: import("./common").ColumnType | undefined;
                            key?: boolean | undefined;
                            required?: boolean | undefined;
                            path?: string | undefined;
                        }[] | undefined;
                    } | undefined;
                } | undefined;
                nullKeysAllowed?: boolean | undefined;
                addRestColumn?: boolean | undefined;
                unescapeStringValues?: boolean | undefined;
            } | undefined;
            auditTrailsV1Parser?: {} | undefined;
            cloudLoggingParser?: {} | undefined;
            tskvParser?: {
                dataSchema?: {
                    jsonFields?: string | undefined;
                    fields?: {
                        fields?: {
                            name?: string | undefined;
                            type?: import("./common").ColumnType | undefined;
                            key?: boolean | undefined;
                            required?: boolean | undefined;
                            path?: string | undefined;
                        }[] | undefined;
                    } | undefined;
                } | undefined;
                nullKeysAllowed?: boolean | undefined;
                addRestColumn?: boolean | undefined;
                unescapeStringValues?: boolean | undefined;
            } | undefined;
        } | undefined;
        allowTtlRewind?: boolean | undefined;
        endpoint?: string | undefined;
        subnetId?: string | undefined;
        securityGroups?: string[] | undefined;
        consumer?: string | undefined;
    } & {
        database?: string | undefined;
        stream?: string | undefined;
        serviceAccountId?: string | undefined;
        supportedCodecs?: (YdsCompressionCodec[] & YdsCompressionCodec[] & Record<Exclude<keyof I["supportedCodecs"], keyof YdsCompressionCodec[]>, never>) | undefined;
        parser?: ({
            jsonParser?: {
                dataSchema?: {
                    jsonFields?: string | undefined;
                    fields?: {
                        fields?: {
                            name?: string | undefined;
                            type?: import("./common").ColumnType | undefined;
                            key?: boolean | undefined;
                            required?: boolean | undefined;
                            path?: string | undefined;
                        }[] | undefined;
                    } | undefined;
                } | undefined;
                nullKeysAllowed?: boolean | undefined;
                addRestColumn?: boolean | undefined;
                unescapeStringValues?: boolean | undefined;
            } | undefined;
            auditTrailsV1Parser?: {} | undefined;
            cloudLoggingParser?: {} | undefined;
            tskvParser?: {
                dataSchema?: {
                    jsonFields?: string | undefined;
                    fields?: {
                        fields?: {
                            name?: string | undefined;
                            type?: import("./common").ColumnType | undefined;
                            key?: boolean | undefined;
                            required?: boolean | undefined;
                            path?: string | undefined;
                        }[] | undefined;
                    } | undefined;
                } | undefined;
                nullKeysAllowed?: boolean | undefined;
                addRestColumn?: boolean | undefined;
                unescapeStringValues?: boolean | undefined;
            } | undefined;
        } & {
            jsonParser?: ({
                dataSchema?: {
                    jsonFields?: string | undefined;
                    fields?: {
                        fields?: {
                            name?: string | undefined;
                            type?: import("./common").ColumnType | undefined;
                            key?: boolean | undefined;
                            required?: boolean | undefined;
                            path?: string | undefined;
                        }[] | undefined;
                    } | undefined;
                } | undefined;
                nullKeysAllowed?: boolean | undefined;
                addRestColumn?: boolean | undefined;
                unescapeStringValues?: boolean | undefined;
            } & {
                dataSchema?: ({
                    jsonFields?: string | undefined;
                    fields?: {
                        fields?: {
                            name?: string | undefined;
                            type?: import("./common").ColumnType | undefined;
                            key?: boolean | undefined;
                            required?: boolean | undefined;
                            path?: string | undefined;
                        }[] | undefined;
                    } | undefined;
                } & {
                    jsonFields?: string | undefined;
                    fields?: ({
                        fields?: {
                            name?: string | undefined;
                            type?: import("./common").ColumnType | undefined;
                            key?: boolean | undefined;
                            required?: boolean | undefined;
                            path?: string | undefined;
                        }[] | undefined;
                    } & {
                        fields?: ({
                            name?: string | undefined;
                            type?: import("./common").ColumnType | undefined;
                            key?: boolean | undefined;
                            required?: boolean | undefined;
                            path?: string | undefined;
                        }[] & ({
                            name?: string | undefined;
                            type?: import("./common").ColumnType | undefined;
                            key?: boolean | undefined;
                            required?: boolean | undefined;
                            path?: string | undefined;
                        } & {
                            name?: string | undefined;
                            type?: import("./common").ColumnType | undefined;
                            key?: boolean | undefined;
                            required?: boolean | undefined;
                            path?: string | undefined;
                        } & Record<Exclude<keyof I["parser"]["jsonParser"]["dataSchema"]["fields"]["fields"][number], keyof import("./common").ColSchema>, never>)[] & Record<Exclude<keyof I["parser"]["jsonParser"]["dataSchema"]["fields"]["fields"], keyof {
                            name?: string | undefined;
                            type?: import("./common").ColumnType | undefined;
                            key?: boolean | undefined;
                            required?: boolean | undefined;
                            path?: string | undefined;
                        }[]>, never>) | undefined;
                    } & Record<Exclude<keyof I["parser"]["jsonParser"]["dataSchema"]["fields"], "fields">, never>) | undefined;
                } & Record<Exclude<keyof I["parser"]["jsonParser"]["dataSchema"], keyof import("./common").DataSchema>, never>) | undefined;
                nullKeysAllowed?: boolean | undefined;
                addRestColumn?: boolean | undefined;
                unescapeStringValues?: boolean | undefined;
            } & Record<Exclude<keyof I["parser"]["jsonParser"], keyof import("../../../../../yandex/cloud/datatransfer/v1/endpoint/parsers").GenericParserCommon>, never>) | undefined;
            auditTrailsV1Parser?: ({} & {} & Record<Exclude<keyof I["parser"]["auditTrailsV1Parser"], never>, never>) | undefined;
            cloudLoggingParser?: ({} & {} & Record<Exclude<keyof I["parser"]["cloudLoggingParser"], never>, never>) | undefined;
            tskvParser?: ({
                dataSchema?: {
                    jsonFields?: string | undefined;
                    fields?: {
                        fields?: {
                            name?: string | undefined;
                            type?: import("./common").ColumnType | undefined;
                            key?: boolean | undefined;
                            required?: boolean | undefined;
                            path?: string | undefined;
                        }[] | undefined;
                    } | undefined;
                } | undefined;
                nullKeysAllowed?: boolean | undefined;
                addRestColumn?: boolean | undefined;
                unescapeStringValues?: boolean | undefined;
            } & {
                dataSchema?: ({
                    jsonFields?: string | undefined;
                    fields?: {
                        fields?: {
                            name?: string | undefined;
                            type?: import("./common").ColumnType | undefined;
                            key?: boolean | undefined;
                            required?: boolean | undefined;
                            path?: string | undefined;
                        }[] | undefined;
                    } | undefined;
                } & {
                    jsonFields?: string | undefined;
                    fields?: ({
                        fields?: {
                            name?: string | undefined;
                            type?: import("./common").ColumnType | undefined;
                            key?: boolean | undefined;
                            required?: boolean | undefined;
                            path?: string | undefined;
                        }[] | undefined;
                    } & {
                        fields?: ({
                            name?: string | undefined;
                            type?: import("./common").ColumnType | undefined;
                            key?: boolean | undefined;
                            required?: boolean | undefined;
                            path?: string | undefined;
                        }[] & ({
                            name?: string | undefined;
                            type?: import("./common").ColumnType | undefined;
                            key?: boolean | undefined;
                            required?: boolean | undefined;
                            path?: string | undefined;
                        } & {
                            name?: string | undefined;
                            type?: import("./common").ColumnType | undefined;
                            key?: boolean | undefined;
                            required?: boolean | undefined;
                            path?: string | undefined;
                        } & Record<Exclude<keyof I["parser"]["tskvParser"]["dataSchema"]["fields"]["fields"][number], keyof import("./common").ColSchema>, never>)[] & Record<Exclude<keyof I["parser"]["tskvParser"]["dataSchema"]["fields"]["fields"], keyof {
                            name?: string | undefined;
                            type?: import("./common").ColumnType | undefined;
                            key?: boolean | undefined;
                            required?: boolean | undefined;
                            path?: string | undefined;
                        }[]>, never>) | undefined;
                    } & Record<Exclude<keyof I["parser"]["tskvParser"]["dataSchema"]["fields"], "fields">, never>) | undefined;
                } & Record<Exclude<keyof I["parser"]["tskvParser"]["dataSchema"], keyof import("./common").DataSchema>, never>) | undefined;
                nullKeysAllowed?: boolean | undefined;
                addRestColumn?: boolean | undefined;
                unescapeStringValues?: boolean | undefined;
            } & Record<Exclude<keyof I["parser"]["tskvParser"], keyof import("../../../../../yandex/cloud/datatransfer/v1/endpoint/parsers").GenericParserCommon>, never>) | undefined;
        } & Record<Exclude<keyof I["parser"], keyof Parser>, never>) | undefined;
        allowTtlRewind?: boolean | undefined;
        endpoint?: string | undefined;
        subnetId?: string | undefined;
        securityGroups?: (string[] & string[] & Record<Exclude<keyof I["securityGroups"], keyof string[]>, never>) | undefined;
        consumer?: string | undefined;
    } & Record<Exclude<keyof I, keyof YDSSource>, never>>(object: I): YDSSource;
};
export declare const YDSTarget: {
    encode(message: YDSTarget, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): YDSTarget;
    fromJSON(object: any): YDSTarget;
    toJSON(message: YDSTarget): unknown;
    fromPartial<I extends {
        database?: string | undefined;
        stream?: string | undefined;
        serviceAccountId?: string | undefined;
        saveTxOrder?: boolean | undefined;
        compressionCodec?: YdsCompressionCodec | undefined;
        serializer?: {
            serializerAuto?: {} | undefined;
            serializerJson?: {} | undefined;
            serializerDebezium?: {
                serializerParameters?: {
                    key?: string | undefined;
                    value?: string | undefined;
                }[] | undefined;
            } | undefined;
        } | undefined;
        endpoint?: string | undefined;
        subnetId?: string | undefined;
        securityGroups?: string[] | undefined;
    } & {
        database?: string | undefined;
        stream?: string | undefined;
        serviceAccountId?: string | undefined;
        saveTxOrder?: boolean | undefined;
        compressionCodec?: YdsCompressionCodec | undefined;
        serializer?: ({
            serializerAuto?: {} | undefined;
            serializerJson?: {} | undefined;
            serializerDebezium?: {
                serializerParameters?: {
                    key?: string | undefined;
                    value?: string | undefined;
                }[] | undefined;
            } | undefined;
        } & {
            serializerAuto?: ({} & {} & Record<Exclude<keyof I["serializer"]["serializerAuto"], never>, never>) | undefined;
            serializerJson?: ({} & {} & Record<Exclude<keyof I["serializer"]["serializerJson"], never>, never>) | undefined;
            serializerDebezium?: ({
                serializerParameters?: {
                    key?: string | undefined;
                    value?: string | undefined;
                }[] | undefined;
            } & {
                serializerParameters?: ({
                    key?: string | undefined;
                    value?: string | undefined;
                }[] & ({
                    key?: string | undefined;
                    value?: string | undefined;
                } & {
                    key?: string | undefined;
                    value?: string | undefined;
                } & Record<Exclude<keyof I["serializer"]["serializerDebezium"]["serializerParameters"][number], keyof import("../../../../../yandex/cloud/datatransfer/v1/endpoint/serializers").DebeziumSerializerParameter>, never>)[] & Record<Exclude<keyof I["serializer"]["serializerDebezium"]["serializerParameters"], keyof {
                    key?: string | undefined;
                    value?: string | undefined;
                }[]>, never>) | undefined;
            } & Record<Exclude<keyof I["serializer"]["serializerDebezium"], "serializerParameters">, never>) | undefined;
        } & Record<Exclude<keyof I["serializer"], keyof Serializer>, never>) | undefined;
        endpoint?: string | undefined;
        subnetId?: string | undefined;
        securityGroups?: (string[] & string[] & Record<Exclude<keyof I["securityGroups"], keyof string[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof YDSTarget>, never>>(object: I): YDSTarget;
};
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 {};
