"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""

import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
import sys
import typing
import yandex.cloud.datatransfer.v1.endpoint_pb2

if sys.version_info >= (3, 10):
    import typing as typing_extensions
else:
    import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

class _TransferType:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _TransferTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_TransferType.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    TRANSFER_TYPE_UNSPECIFIED: _TransferType.ValueType  # 0
    SNAPSHOT_AND_INCREMENT: _TransferType.ValueType  # 1
    """Snapshot and increment"""
    SNAPSHOT_ONLY: _TransferType.ValueType  # 2
    """Snapshot"""
    INCREMENT_ONLY: _TransferType.ValueType  # 3
    """Increment"""

class TransferType(_TransferType, metaclass=_TransferTypeEnumTypeWrapper): ...

TRANSFER_TYPE_UNSPECIFIED: TransferType.ValueType  # 0
SNAPSHOT_AND_INCREMENT: TransferType.ValueType  # 1
"""Snapshot and increment"""
SNAPSHOT_ONLY: TransferType.ValueType  # 2
"""Snapshot"""
INCREMENT_ONLY: TransferType.ValueType  # 3
"""Increment"""
global___TransferType = TransferType

class _TransferStatus:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _TransferStatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_TransferStatus.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    TRANSFER_STATUS_UNSPECIFIED: _TransferStatus.ValueType  # 0
    CREATING: _TransferStatus.ValueType  # 1
    """Transfer does some work before running"""
    CREATED: _TransferStatus.ValueType  # 2
    """Transfer created but not started by user"""
    RUNNING: _TransferStatus.ValueType  # 3
    """Transfer currently doing replication work"""
    STOPPING: _TransferStatus.ValueType  # 4
    """Transfer shutdown"""
    STOPPED: _TransferStatus.ValueType  # 5
    """Transfer stopped by user"""
    ERROR: _TransferStatus.ValueType  # 6
    """Transfer stopped by system"""
    SNAPSHOTTING: _TransferStatus.ValueType  # 7
    """Transfer copy snapshot"""
    DONE: _TransferStatus.ValueType  # 8
    """Transfer reach terminal phase"""

class TransferStatus(_TransferStatus, metaclass=_TransferStatusEnumTypeWrapper): ...

TRANSFER_STATUS_UNSPECIFIED: TransferStatus.ValueType  # 0
CREATING: TransferStatus.ValueType  # 1
"""Transfer does some work before running"""
CREATED: TransferStatus.ValueType  # 2
"""Transfer created but not started by user"""
RUNNING: TransferStatus.ValueType  # 3
"""Transfer currently doing replication work"""
STOPPING: TransferStatus.ValueType  # 4
"""Transfer shutdown"""
STOPPED: TransferStatus.ValueType  # 5
"""Transfer stopped by user"""
ERROR: TransferStatus.ValueType  # 6
"""Transfer stopped by system"""
SNAPSHOTTING: TransferStatus.ValueType  # 7
"""Transfer copy snapshot"""
DONE: TransferStatus.ValueType  # 8
"""Transfer reach terminal phase"""
global___TransferStatus = TransferStatus

@typing.final
class Transfer(google.protobuf.message.Message):
    """Transfer core entity"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing.final
    class LabelsEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        value: builtins.str
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ...

    ID_FIELD_NUMBER: builtins.int
    FOLDER_ID_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    LABELS_FIELD_NUMBER: builtins.int
    SOURCE_FIELD_NUMBER: builtins.int
    TARGET_FIELD_NUMBER: builtins.int
    RUNTIME_FIELD_NUMBER: builtins.int
    STATUS_FIELD_NUMBER: builtins.int
    TYPE_FIELD_NUMBER: builtins.int
    WARNING_FIELD_NUMBER: builtins.int
    TRANSFORMATION_FIELD_NUMBER: builtins.int
    PRESTABLE_FIELD_NUMBER: builtins.int
    id: builtins.str
    folder_id: builtins.str
    name: builtins.str
    description: builtins.str
    status: global___TransferStatus.ValueType
    type: global___TransferType.ValueType
    warning: builtins.str
    prestable: builtins.bool
    @property
    def labels(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ...
    @property
    def source(self) -> yandex.cloud.datatransfer.v1.endpoint_pb2.Endpoint: ...
    @property
    def target(self) -> yandex.cloud.datatransfer.v1.endpoint_pb2.Endpoint: ...
    @property
    def runtime(self) -> global___Runtime: ...
    @property
    def transformation(self) -> global___Transformation: ...
    def __init__(
        self,
        *,
        id: builtins.str = ...,
        folder_id: builtins.str = ...,
        name: builtins.str = ...,
        description: builtins.str = ...,
        labels: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
        source: yandex.cloud.datatransfer.v1.endpoint_pb2.Endpoint | None = ...,
        target: yandex.cloud.datatransfer.v1.endpoint_pb2.Endpoint | None = ...,
        runtime: global___Runtime | None = ...,
        status: global___TransferStatus.ValueType = ...,
        type: global___TransferType.ValueType = ...,
        warning: builtins.str = ...,
        transformation: global___Transformation | None = ...,
        prestable: builtins.bool = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["runtime", b"runtime", "source", b"source", "target", b"target", "transformation", b"transformation"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["description", b"description", "folder_id", b"folder_id", "id", b"id", "labels", b"labels", "name", b"name", "prestable", b"prestable", "runtime", b"runtime", "source", b"source", "status", b"status", "target", b"target", "transformation", b"transformation", "type", b"type", "warning", b"warning"]) -> None: ...

global___Transfer = Transfer

@typing.final
class Runtime(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    YC_RUNTIME_FIELD_NUMBER: builtins.int
    @property
    def yc_runtime(self) -> global___YcRuntime: ...
    def __init__(
        self,
        *,
        yc_runtime: global___YcRuntime | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["runtime", b"runtime", "yc_runtime", b"yc_runtime"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["runtime", b"runtime", "yc_runtime", b"yc_runtime"]) -> None: ...
    def WhichOneof(self, oneof_group: typing.Literal["runtime", b"runtime"]) -> typing.Literal["yc_runtime"] | None: ...

global___Runtime = Runtime

@typing.final
class ShardingUploadParams(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    JOB_COUNT_FIELD_NUMBER: builtins.int
    PROCESS_COUNT_FIELD_NUMBER: builtins.int
    job_count: builtins.int
    process_count: builtins.int
    def __init__(
        self,
        *,
        job_count: builtins.int = ...,
        process_count: builtins.int = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["job_count", b"job_count", "process_count", b"process_count"]) -> None: ...

global___ShardingUploadParams = ShardingUploadParams

@typing.final
class YcRuntime(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    JOB_COUNT_FIELD_NUMBER: builtins.int
    UPLOAD_SHARD_PARAMS_FIELD_NUMBER: builtins.int
    job_count: builtins.int
    @property
    def upload_shard_params(self) -> global___ShardingUploadParams: ...
    def __init__(
        self,
        *,
        job_count: builtins.int = ...,
        upload_shard_params: global___ShardingUploadParams | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["upload_shard_params", b"upload_shard_params"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["job_count", b"job_count", "upload_shard_params", b"upload_shard_params"]) -> None: ...

global___YcRuntime = YcRuntime

@typing.final
class MaskFunction(google.protobuf.message.Message):
    """Mask function"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    MASK_FUNCTION_HASH_FIELD_NUMBER: builtins.int
    @property
    def mask_function_hash(self) -> global___MaskFunctionHash:
        """Hash mask function"""

    def __init__(
        self,
        *,
        mask_function_hash: global___MaskFunctionHash | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["mask_function", b"mask_function", "mask_function_hash", b"mask_function_hash"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["mask_function", b"mask_function", "mask_function_hash", b"mask_function_hash"]) -> None: ...
    def WhichOneof(self, oneof_group: typing.Literal["mask_function", b"mask_function"]) -> typing.Literal["mask_function_hash"] | None: ...

global___MaskFunction = MaskFunction

@typing.final
class MaskFunctionHash(google.protobuf.message.Message):
    """Hash data using HMAC"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    USER_DEFINED_SALT_FIELD_NUMBER: builtins.int
    user_defined_salt: builtins.str
    """This string will be used in the HMAC(sha256, salt) function applied to the
    column data.
    """
    def __init__(
        self,
        *,
        user_defined_salt: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["user_defined_salt", b"user_defined_salt"]) -> None: ...

global___MaskFunctionHash = MaskFunctionHash

@typing.final
class TablesFilter(google.protobuf.message.Message):
    """Filter tables using lists of included and excluded tables."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    INCLUDE_TABLES_FIELD_NUMBER: builtins.int
    EXCLUDE_TABLES_FIELD_NUMBER: builtins.int
    @property
    def include_tables(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """List of tables that will be included to transfer"""

    @property
    def exclude_tables(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """List of tables that will be excluded to transfer"""

    def __init__(
        self,
        *,
        include_tables: collections.abc.Iterable[builtins.str] | None = ...,
        exclude_tables: collections.abc.Iterable[builtins.str] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["exclude_tables", b"exclude_tables", "include_tables", b"include_tables"]) -> None: ...

global___TablesFilter = TablesFilter

@typing.final
class ColumnsFilter(google.protobuf.message.Message):
    """Filter columns using lists of included and excluded columns."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    INCLUDE_COLUMNS_FIELD_NUMBER: builtins.int
    EXCLUDE_COLUMNS_FIELD_NUMBER: builtins.int
    @property
    def include_columns(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """List of columns that will be included to transfer"""

    @property
    def exclude_columns(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """List of columns that will be excluded to transfer"""

    def __init__(
        self,
        *,
        include_columns: collections.abc.Iterable[builtins.str] | None = ...,
        exclude_columns: collections.abc.Iterable[builtins.str] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["exclude_columns", b"exclude_columns", "include_columns", b"include_columns"]) -> None: ...

global___ColumnsFilter = ColumnsFilter

@typing.final
class MaskFieldTransformer(google.protobuf.message.Message):
    """Mask field transformer allows you to hash data"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TABLES_FIELD_NUMBER: builtins.int
    COLUMNS_FIELD_NUMBER: builtins.int
    FUNCTION_FIELD_NUMBER: builtins.int
    @property
    def tables(self) -> global___TablesFilter:
        """List of included and excluded tables"""

    @property
    def columns(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Specify the name of the column for data masking (a regular expression)."""

    @property
    def function(self) -> global___MaskFunction:
        """Mask function"""

    def __init__(
        self,
        *,
        tables: global___TablesFilter | None = ...,
        columns: collections.abc.Iterable[builtins.str] | None = ...,
        function: global___MaskFunction | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["function", b"function", "tables", b"tables"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["columns", b"columns", "function", b"function", "tables", b"tables"]) -> None: ...

global___MaskFieldTransformer = MaskFieldTransformer

@typing.final
class FilterColumnsTransformer(google.protobuf.message.Message):
    """Set up a list of table columns to transfer"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TABLES_FIELD_NUMBER: builtins.int
    COLUMNS_FIELD_NUMBER: builtins.int
    @property
    def tables(self) -> global___TablesFilter:
        """List of the tables to filter using lists of included and excluded tables."""

    @property
    def columns(self) -> global___ColumnsFilter:
        """List of the columns to transfer to the target tables using lists of included and
        excluded columns.
        """

    def __init__(
        self,
        *,
        tables: global___TablesFilter | None = ...,
        columns: global___ColumnsFilter | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["columns", b"columns", "tables", b"tables"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["columns", b"columns", "tables", b"tables"]) -> None: ...

global___FilterColumnsTransformer = FilterColumnsTransformer

@typing.final
class Table(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    NAME_SPACE_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    name_space: builtins.str
    name: builtins.str
    def __init__(
        self,
        *,
        name_space: builtins.str = ...,
        name: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["name", b"name", "name_space", b"name_space"]) -> None: ...

global___Table = Table

@typing.final
class RenameTable(google.protobuf.message.Message):
    """Specify rule for renaming table"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ORIGINAL_NAME_FIELD_NUMBER: builtins.int
    NEW_NAME_FIELD_NUMBER: builtins.int
    @property
    def original_name(self) -> global___Table:
        """Specify the current names of the table in the source"""

    @property
    def new_name(self) -> global___Table:
        """Specify the new names for this table in the target"""

    def __init__(
        self,
        *,
        original_name: global___Table | None = ...,
        new_name: global___Table | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["new_name", b"new_name", "original_name", b"original_name"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["new_name", b"new_name", "original_name", b"original_name"]) -> None: ...

global___RenameTable = RenameTable

@typing.final
class RenameTablesTransformer(google.protobuf.message.Message):
    """Set rules for renaming tables by specifying the current names of the tables in
    the source and new names for these tables in the target.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    RENAME_TABLES_FIELD_NUMBER: builtins.int
    @property
    def rename_tables(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RenameTable]:
        """List of renaming rules"""

    def __init__(
        self,
        *,
        rename_tables: collections.abc.Iterable[global___RenameTable] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["rename_tables", b"rename_tables"]) -> None: ...

global___RenameTablesTransformer = RenameTablesTransformer

@typing.final
class ReplacePrimaryKeyTransformer(google.protobuf.message.Message):
    """Override primary keys"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TABLES_FIELD_NUMBER: builtins.int
    KEYS_FIELD_NUMBER: builtins.int
    @property
    def tables(self) -> global___TablesFilter:
        """List of included and excluded tables"""

    @property
    def keys(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """List of columns to be used as primary keys"""

    def __init__(
        self,
        *,
        tables: global___TablesFilter | None = ...,
        keys: collections.abc.Iterable[builtins.str] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["tables", b"tables"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["keys", b"keys", "tables", b"tables"]) -> None: ...

global___ReplacePrimaryKeyTransformer = ReplacePrimaryKeyTransformer

@typing.final
class ToStringTransformer(google.protobuf.message.Message):
    """Convert column values to strings
    The values will be converted depending on the source type
    Conversion rules are described here:
    https://cloud.yandex.com/en/docs/data-transfer/concepts/data-transformation#convert-to-string
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TABLES_FIELD_NUMBER: builtins.int
    COLUMNS_FIELD_NUMBER: builtins.int
    @property
    def tables(self) -> global___TablesFilter:
        """List of included and excluded tables"""

    @property
    def columns(self) -> global___ColumnsFilter:
        """List of included and excluded columns"""

    def __init__(
        self,
        *,
        tables: global___TablesFilter | None = ...,
        columns: global___ColumnsFilter | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["columns", b"columns", "tables", b"tables"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["columns", b"columns", "tables", b"tables"]) -> None: ...

global___ToStringTransformer = ToStringTransformer

@typing.final
class SharderTransformer(google.protobuf.message.Message):
    """Set the number of shards for particular tables and a list of columns whose
    values will be used for calculating a hash to determine a shard.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TABLES_FIELD_NUMBER: builtins.int
    COLUMNS_FIELD_NUMBER: builtins.int
    SHARDS_COUNT_FIELD_NUMBER: builtins.int
    shards_count: builtins.int
    """Number of shards"""
    @property
    def tables(self) -> global___TablesFilter:
        """List of included and excluded tables"""

    @property
    def columns(self) -> global___ColumnsFilter:
        """List of included and excluded columns"""

    def __init__(
        self,
        *,
        tables: global___TablesFilter | None = ...,
        columns: global___ColumnsFilter | None = ...,
        shards_count: builtins.int = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["columns", b"columns", "tables", b"tables"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["columns", b"columns", "shards_count", b"shards_count", "tables", b"tables"]) -> None: ...

global___SharderTransformer = SharderTransformer

@typing.final
class TableSplitterTransformer(google.protobuf.message.Message):
    """A transfer splits the X table into multiple tables (X_1, X_2, ..., X_n) based on
    data.
    If a row was located in the X table before it was split, it is now in the X_i
    table,
    where i is determined by the column list and split string parameters.
    Example:
    If the column list has two columns, month of birth and gender, specified and the
    split string states @,
    information about an employee whose name is John and who was born on February
    11, 1984,
    from the Employees table will get to a new table named Employees@February@male.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TABLES_FIELD_NUMBER: builtins.int
    COLUMNS_FIELD_NUMBER: builtins.int
    SPLITTER_FIELD_NUMBER: builtins.int
    splitter: builtins.str
    """Specify the split string to be used for merging components in a new table name."""
    @property
    def tables(self) -> global___TablesFilter:
        """List of included and excluded tables"""

    @property
    def columns(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Specify the columns in the tables to be partitioned."""

    def __init__(
        self,
        *,
        tables: global___TablesFilter | None = ...,
        columns: collections.abc.Iterable[builtins.str] | None = ...,
        splitter: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["tables", b"tables"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["columns", b"columns", "splitter", b"splitter", "tables", b"tables"]) -> None: ...

global___TableSplitterTransformer = TableSplitterTransformer

@typing.final
class FilterRowsTransformer(google.protobuf.message.Message):
    """This filter only applies to transfers with queues (Logbroker or Apache Kafka®)
    as a data source.
    When running a transfer, only the strings meeting the specified criteria remain
    in a changefeed.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TABLES_FIELD_NUMBER: builtins.int
    FILTER_FIELD_NUMBER: builtins.int
    filter: builtins.str
    """Filtering criterion. This can be comparison operators for numeric, string, and
    Boolean values,
    comparison to NULL, and checking whether a substring is part of a string.
    Details here:
    https://yandex.cloud/en-ru/docs/data-transfer/concepts/data-transformation#append-only-sources
    """
    @property
    def tables(self) -> global___TablesFilter:
        """List of included and excluded tables"""

    def __init__(
        self,
        *,
        tables: global___TablesFilter | None = ...,
        filter: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["tables", b"tables"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["filter", b"filter", "tables", b"tables"]) -> None: ...

global___FilterRowsTransformer = FilterRowsTransformer

@typing.final
class Transformer(google.protobuf.message.Message):
    """Some transformers may have limitations and only apply to some source-target
    pairs.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    MASK_FIELD_FIELD_NUMBER: builtins.int
    FILTER_COLUMNS_FIELD_NUMBER: builtins.int
    RENAME_TABLES_FIELD_NUMBER: builtins.int
    REPLACE_PRIMARY_KEY_FIELD_NUMBER: builtins.int
    CONVERT_TO_STRING_FIELD_NUMBER: builtins.int
    SHARDER_TRANSFORMER_FIELD_NUMBER: builtins.int
    TABLE_SPLITTER_TRANSFORMER_FIELD_NUMBER: builtins.int
    FILTER_ROWS_FIELD_NUMBER: builtins.int
    @property
    def mask_field(self) -> global___MaskFieldTransformer: ...
    @property
    def filter_columns(self) -> global___FilterColumnsTransformer: ...
    @property
    def rename_tables(self) -> global___RenameTablesTransformer: ...
    @property
    def replace_primary_key(self) -> global___ReplacePrimaryKeyTransformer: ...
    @property
    def convert_to_string(self) -> global___ToStringTransformer: ...
    @property
    def sharder_transformer(self) -> global___SharderTransformer: ...
    @property
    def table_splitter_transformer(self) -> global___TableSplitterTransformer: ...
    @property
    def filter_rows(self) -> global___FilterRowsTransformer: ...
    def __init__(
        self,
        *,
        mask_field: global___MaskFieldTransformer | None = ...,
        filter_columns: global___FilterColumnsTransformer | None = ...,
        rename_tables: global___RenameTablesTransformer | None = ...,
        replace_primary_key: global___ReplacePrimaryKeyTransformer | None = ...,
        convert_to_string: global___ToStringTransformer | None = ...,
        sharder_transformer: global___SharderTransformer | None = ...,
        table_splitter_transformer: global___TableSplitterTransformer | None = ...,
        filter_rows: global___FilterRowsTransformer | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["convert_to_string", b"convert_to_string", "filter_columns", b"filter_columns", "filter_rows", b"filter_rows", "mask_field", b"mask_field", "rename_tables", b"rename_tables", "replace_primary_key", b"replace_primary_key", "sharder_transformer", b"sharder_transformer", "table_splitter_transformer", b"table_splitter_transformer", "transformer", b"transformer"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["convert_to_string", b"convert_to_string", "filter_columns", b"filter_columns", "filter_rows", b"filter_rows", "mask_field", b"mask_field", "rename_tables", b"rename_tables", "replace_primary_key", b"replace_primary_key", "sharder_transformer", b"sharder_transformer", "table_splitter_transformer", b"table_splitter_transformer", "transformer", b"transformer"]) -> None: ...
    def WhichOneof(self, oneof_group: typing.Literal["transformer", b"transformer"]) -> typing.Literal["mask_field", "filter_columns", "rename_tables", "replace_primary_key", "convert_to_string", "sharder_transformer", "table_splitter_transformer", "filter_rows"] | None: ...

global___Transformer = Transformer

@typing.final
class Transformation(google.protobuf.message.Message):
    """Transformation is converting data using special transformer functions.
    These functions are executed on a data stream, applied to each data change item,
    and transform them.
    A transformer can be run at both the metadata and data levels.
    Data can only be transformed if the source and target are of different types.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TRANSFORMERS_FIELD_NUMBER: builtins.int
    @property
    def transformers(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Transformer]:
        """Transformers are set as a list.
        When activating a transfer, a transformation plan is made for the tables that
        match the specified criteria.
        Transformers are applied to the tables in the sequence specified in the list.
        """

    def __init__(
        self,
        *,
        transformers: collections.abc.Iterable[global___Transformer] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["transformers", b"transformers"]) -> None: ...

global___Transformation = Transformation
