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

import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.field_mask_pb2
import google.protobuf.internal.containers
import google.protobuf.message
import typing
import yandex.cloud.dns.v1.dns_firewall_pb2
import yandex.cloud.operation.operation_pb2

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

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

    DNS_FIREWALL_ID_FIELD_NUMBER: builtins.int
    dns_firewall_id: builtins.str
    """ID of the DNS firewall to return.

    To get a DNS firewall ID, make a [DnsFirewallService.List] request.
    """
    def __init__(
        self,
        *,
        dns_firewall_id: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["dns_firewall_id", b"dns_firewall_id"]) -> None: ...

global___GetDnsFirewallRequest = GetDnsFirewallRequest

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

    FOLDER_ID_FIELD_NUMBER: builtins.int
    PAGE_SIZE_FIELD_NUMBER: builtins.int
    PAGE_TOKEN_FIELD_NUMBER: builtins.int
    FILTER_FIELD_NUMBER: builtins.int
    folder_id: builtins.str
    """ID of the folder to list DNS firewalls in.

    To get the folder ID use a [yandex.cloud.resourcemanager.v1.FolderService.List] request.
    """
    page_size: builtins.int
    """The maximum number of results per page to return. If the number of available
    results is larger than `page_size`, the service returns a [ListDnsFirewallsResponse.next_page_token]
    that can be used to get the next page of results in subsequent list requests.
    """
    page_token: builtins.str
    """Page token. To get the next page of results, set `page_token` to the 
    [ListDnsFirewallsResponse.next_page_token] returned by a previous list request.
    """
    filter: builtins.str
    """A filter expression that filters DNS firewalls listed in the response.

    The expression must specify: 
    1. The field name. Currently you can use filtering only on the [DnsFirewall.name] field.
    2. An `=` operator.
    3. The value in double quotes (`"`). Must be 3-63 characters long and match the regular expression `[a-z][-a-z0-9]{1,61}[a-z0-9]`.
    Example of a filter: `name=my-dns-firewall`.
    """
    def __init__(
        self,
        *,
        folder_id: builtins.str = ...,
        page_size: builtins.int = ...,
        page_token: builtins.str = ...,
        filter: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["filter", b"filter", "folder_id", b"folder_id", "page_size", b"page_size", "page_token", b"page_token"]) -> None: ...

global___ListDnsFirewallsRequest = ListDnsFirewallsRequest

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

    DNS_FIREWALLS_FIELD_NUMBER: builtins.int
    NEXT_PAGE_TOKEN_FIELD_NUMBER: builtins.int
    next_page_token: builtins.str
    """Token for getting the next page of the list. If the number of results is greater than
    the specified [ListDnsFirewallsRequest.page_size], use `next_page_token` as the value
    for the [ListDnsFirewallsRequest.page_token] parameter in the next list request.

    Each subsequent page will have its own `next_page_token` to continue paging through the results.
    """
    @property
    def dns_firewalls(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[yandex.cloud.dns.v1.dns_firewall_pb2.DnsFirewall]:
        """List of DNS firewalls in the specified folder."""

    def __init__(
        self,
        *,
        dns_firewalls: collections.abc.Iterable[yandex.cloud.dns.v1.dns_firewall_pb2.DnsFirewall] | None = ...,
        next_page_token: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["dns_firewalls", b"dns_firewalls", "next_page_token", b"next_page_token"]) -> None: ...

global___ListDnsFirewallsResponse = ListDnsFirewallsResponse

@typing.final
class CreateDnsFirewallRequest(google.protobuf.message.Message):
    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: ...

    FOLDER_ID_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    LABELS_FIELD_NUMBER: builtins.int
    DELETION_PROTECTION_FIELD_NUMBER: builtins.int
    ENABLED_FIELD_NUMBER: builtins.int
    RESOURCE_CONFIG_FIELD_NUMBER: builtins.int
    WHITELIST_FQDNS_FIELD_NUMBER: builtins.int
    BLACKLIST_FQDNS_FIELD_NUMBER: builtins.int
    folder_id: builtins.str
    """ID of the folder to create DNS firewalls in.

    To get a folder ID, make a [yandex.cloud.resourcemanager.v1.FolderService.List] request.
    """
    name: builtins.str
    """Name of the DNS firewall.
    The name must be unique within the folder.
    """
    description: builtins.str
    """Description of the DNS firewall."""
    deletion_protection: builtins.bool
    """Prevents accidental firewall removal."""
    enabled: builtins.bool
    """Whether the DNS firewall is enabled."""
    @property
    def labels(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
        """DNS firewall labels as `key:value` pairs."""

    @property
    def resource_config(self) -> yandex.cloud.dns.v1.dns_firewall_pb2.DnsFirewall.ResourceConfig:
        """Resource settings.
        Specifies resources that the DNS firewall applies to.
        """

    @property
    def whitelist_fqdns(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """List of FQDNs that the DNS firewall allows to pass."""

    @property
    def blacklist_fqdns(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """List of FQDNs that the DNS firewall blocks."""

    def __init__(
        self,
        *,
        folder_id: builtins.str = ...,
        name: builtins.str = ...,
        description: builtins.str = ...,
        labels: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
        deletion_protection: builtins.bool = ...,
        enabled: builtins.bool = ...,
        resource_config: yandex.cloud.dns.v1.dns_firewall_pb2.DnsFirewall.ResourceConfig | None = ...,
        whitelist_fqdns: collections.abc.Iterable[builtins.str] | None = ...,
        blacklist_fqdns: collections.abc.Iterable[builtins.str] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["resource_config", b"resource_config"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["blacklist_fqdns", b"blacklist_fqdns", "deletion_protection", b"deletion_protection", "description", b"description", "enabled", b"enabled", "folder_id", b"folder_id", "labels", b"labels", "name", b"name", "resource_config", b"resource_config", "whitelist_fqdns", b"whitelist_fqdns"]) -> None: ...

global___CreateDnsFirewallRequest = CreateDnsFirewallRequest

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

    DNS_FIREWALL_ID_FIELD_NUMBER: builtins.int
    dns_firewall_id: builtins.str
    """ID of the DNS firewall that is being created."""
    def __init__(
        self,
        *,
        dns_firewall_id: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["dns_firewall_id", b"dns_firewall_id"]) -> None: ...

global___CreateDnsFirewallMetadata = CreateDnsFirewallMetadata

@typing.final
class UpdateDnsFirewallRequest(google.protobuf.message.Message):
    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: ...

    DNS_FIREWALL_ID_FIELD_NUMBER: builtins.int
    UPDATE_MASK_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    LABELS_FIELD_NUMBER: builtins.int
    DELETION_PROTECTION_FIELD_NUMBER: builtins.int
    ENABLED_FIELD_NUMBER: builtins.int
    RESOURCE_CONFIG_FIELD_NUMBER: builtins.int
    WHITELIST_FQDNS_FIELD_NUMBER: builtins.int
    BLACKLIST_FQDNS_FIELD_NUMBER: builtins.int
    dns_firewall_id: builtins.str
    """ID of the DNS firewall to update.
     
    To get the DNS firewall ID, make a [DnsFirewallService.List] request.
    """
    name: builtins.str
    """New name for the DNS firewall.
    The name must be unique within the folder.
    """
    description: builtins.str
    """New description of the DNS firewall."""
    deletion_protection: builtins.bool
    """Prevents accidental firewall removal."""
    enabled: builtins.bool
    """Whether the DNS firewall is enabled."""
    @property
    def update_mask(self) -> google.protobuf.field_mask_pb2.FieldMask:
        """Field mask specifying which fields of the DNS firewall resource are going to be updated."""

    @property
    def labels(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
        """DNS firewall labels as `key:value` pairs.

        Existing set of labels is completely replaced by the provided set, so if you just want
        to add or remove a label:
        1. Get the current set of labels with a [DnsFirewallService.Get] request.
        2. Add or remove a label in this set.
        3. Send the new set in this field.
        """

    @property
    def resource_config(self) -> yandex.cloud.dns.v1.dns_firewall_pb2.DnsFirewall.ResourceConfig:
        """Resource settings.
        Specifies resources that the DNS firewall applies to.
        """

    @property
    def whitelist_fqdns(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """List of FQDNs that the DNS firewall allows to pass."""

    @property
    def blacklist_fqdns(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """List of FQDNs that the DNS firewall blocks."""

    def __init__(
        self,
        *,
        dns_firewall_id: builtins.str = ...,
        update_mask: google.protobuf.field_mask_pb2.FieldMask | None = ...,
        name: builtins.str = ...,
        description: builtins.str = ...,
        labels: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
        deletion_protection: builtins.bool = ...,
        enabled: builtins.bool = ...,
        resource_config: yandex.cloud.dns.v1.dns_firewall_pb2.DnsFirewall.ResourceConfig | None = ...,
        whitelist_fqdns: collections.abc.Iterable[builtins.str] | None = ...,
        blacklist_fqdns: collections.abc.Iterable[builtins.str] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["resource_config", b"resource_config", "update_mask", b"update_mask"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["blacklist_fqdns", b"blacklist_fqdns", "deletion_protection", b"deletion_protection", "description", b"description", "dns_firewall_id", b"dns_firewall_id", "enabled", b"enabled", "labels", b"labels", "name", b"name", "resource_config", b"resource_config", "update_mask", b"update_mask", "whitelist_fqdns", b"whitelist_fqdns"]) -> None: ...

global___UpdateDnsFirewallRequest = UpdateDnsFirewallRequest

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

    DNS_FIREWALL_ID_FIELD_NUMBER: builtins.int
    dns_firewall_id: builtins.str
    """ID of the DNS firewall that is being updated."""
    def __init__(
        self,
        *,
        dns_firewall_id: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["dns_firewall_id", b"dns_firewall_id"]) -> None: ...

global___UpdateDnsFirewallMetadata = UpdateDnsFirewallMetadata

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

    DNS_FIREWALL_ID_FIELD_NUMBER: builtins.int
    DESTINATION_FOLDER_ID_FIELD_NUMBER: builtins.int
    dns_firewall_id: builtins.str
    """ID of the DNS firewall to move.

    To get the DNS firewall ID, make a [DnsFirewallService.List] request.
    """
    destination_folder_id: builtins.str
    """ID of the folder to move the firewall to.

    To get the folder ID, make a [yandex.cloud.resourcemanager.v1.FolderService.List] request.
    """
    def __init__(
        self,
        *,
        dns_firewall_id: builtins.str = ...,
        destination_folder_id: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["destination_folder_id", b"destination_folder_id", "dns_firewall_id", b"dns_firewall_id"]) -> None: ...

global___MoveDnsFirewallRequest = MoveDnsFirewallRequest

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

    DNS_FIREWALL_ID_FIELD_NUMBER: builtins.int
    dns_firewall_id: builtins.str
    """ID of the DNS firewall that is being moved."""
    def __init__(
        self,
        *,
        dns_firewall_id: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["dns_firewall_id", b"dns_firewall_id"]) -> None: ...

global___MoveDnsFirewallMetadata = MoveDnsFirewallMetadata

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

    DNS_FIREWALL_ID_FIELD_NUMBER: builtins.int
    dns_firewall_id: builtins.str
    """ID of the DNS firewall to delete.

    To get a DNS firewall ID, make a [DnsFirewallService.List] request.
    """
    def __init__(
        self,
        *,
        dns_firewall_id: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["dns_firewall_id", b"dns_firewall_id"]) -> None: ...

global___DeleteDnsFirewallRequest = DeleteDnsFirewallRequest

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

    DNS_FIREWALL_ID_FIELD_NUMBER: builtins.int
    dns_firewall_id: builtins.str
    """ID of the DNS firewall that is being deleted."""
    def __init__(
        self,
        *,
        dns_firewall_id: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["dns_firewall_id", b"dns_firewall_id"]) -> None: ...

global___DeleteDnsFirewallMetadata = DeleteDnsFirewallMetadata

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

    DNS_FIREWALL_ID_FIELD_NUMBER: builtins.int
    PAGE_SIZE_FIELD_NUMBER: builtins.int
    PAGE_TOKEN_FIELD_NUMBER: builtins.int
    FILTER_FIELD_NUMBER: builtins.int
    dns_firewall_id: builtins.str
    """ID of the DNS firewall to list operations for.

    To get a DNS firewall ID, make a [DnsFirewallService.List] request.
    """
    page_size: builtins.int
    """The maximum number of results per page to return. If the number of available
    results is larger than [page_size], the service returns a [ListDnsFirewallOperationsResponse.next_page_token]
    that can be used to get the next page of results in subsequent list requests.
    """
    page_token: builtins.str
    """Page token. To get the next page of results, set [page_token] to the 
    [ListDnsFirewallOperationsResponse.next_page_token] returned by a previous list request.
    """
    filter: builtins.str
    """A filter expression that filters DNS firewalls listed in the response.

    The expression must specify: 
    1. The field name. Currently you can use filtering only on the [DnsFirewall.name] field.
    2. An `=` operator.
    3. The value in double quotes (`"`). Must be 3-63 characters long and match the regular expression `[a-z][-a-z0-9]{1,61}[a-z0-9]`.
    Example of a filter: `name=my-dns-firewall`.
    """
    def __init__(
        self,
        *,
        dns_firewall_id: builtins.str = ...,
        page_size: builtins.int = ...,
        page_token: builtins.str = ...,
        filter: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["dns_firewall_id", b"dns_firewall_id", "filter", b"filter", "page_size", b"page_size", "page_token", b"page_token"]) -> None: ...

global___ListDnsFirewallOperationsRequest = ListDnsFirewallOperationsRequest

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

    OPERATIONS_FIELD_NUMBER: builtins.int
    NEXT_PAGE_TOKEN_FIELD_NUMBER: builtins.int
    next_page_token: builtins.str
    """Token for getting the next page of the list. If the number of results is greater than
    the specified [ListDnsFirewallOperationsRequest.page_size], use `next_page_token` as the value
    for the [ListDnsFirewallOperationsRequest.page_token] parameter in the next list request.

    Each subsequent page will have its own `next_page_token` to continue paging through the results.
    """
    @property
    def operations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[yandex.cloud.operation.operation_pb2.Operation]:
        """List of operations for the specified DNS firewall."""

    def __init__(
        self,
        *,
        operations: collections.abc.Iterable[yandex.cloud.operation.operation_pb2.Operation] | None = ...,
        next_page_token: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["next_page_token", b"next_page_token", "operations", b"operations"]) -> None: ...

global___ListDnsFirewallOperationsResponse = ListDnsFirewallOperationsResponse
