# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import builtins
import copy
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from .. import _utilities

__all__ = [
    'DnsControlPolicyDomainListV1',
    'DnsControlPolicySource',
    'GetDnsControlPolicyDomainListV1Result',
    'GetDnsControlPolicySourceResult',
]

@pulumi.output_type
class DnsControlPolicyDomainListV1(dict):
    def __init__(__self__, *,
                 address: Optional[builtins.str] = None,
                 description: Optional[builtins.str] = None,
                 type: Optional[builtins.str] = None):
        """
        :param builtins.str address: 具体地址信息。
        :param builtins.str description: 描述信息。
        :param builtins.str type: 地址类型。支持的取值如下所示。ip：IPv4 地址；ipv6：IPv6 地址；domain：域名；port：端口。
        """
        if address is not None:
            pulumi.set(__self__, "address", address)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def address(self) -> Optional[builtins.str]:
        """
        具体地址信息。
        """
        return pulumi.get(self, "address")

    @property
    @pulumi.getter
    def description(self) -> Optional[builtins.str]:
        """
        描述信息。
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def type(self) -> Optional[builtins.str]:
        """
        地址类型。支持的取值如下所示。ip：IPv4 地址；ipv6：IPv6 地址；domain：域名；port：端口。
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class DnsControlPolicySource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "vpcId":
            suggest = "vpc_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DnsControlPolicySource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DnsControlPolicySource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DnsControlPolicySource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 region: Optional[builtins.str] = None,
                 vpc_id: Optional[builtins.str] = None):
        """
        :param builtins.str region: VPC地域信息。
        :param builtins.str vpc_id: VPC ID。
        """
        if region is not None:
            pulumi.set(__self__, "region", region)
        if vpc_id is not None:
            pulumi.set(__self__, "vpc_id", vpc_id)

    @property
    @pulumi.getter
    def region(self) -> Optional[builtins.str]:
        """
        VPC地域信息。
        """
        return pulumi.get(self, "region")

    @property
    @pulumi.getter(name="vpcId")
    def vpc_id(self) -> Optional[builtins.str]:
        """
        VPC ID。
        """
        return pulumi.get(self, "vpc_id")


@pulumi.output_type
class GetDnsControlPolicyDomainListV1Result(dict):
    def __init__(__self__, *,
                 address: builtins.str,
                 description: builtins.str,
                 type: builtins.str):
        """
        :param builtins.str address: 具体地址信息。
        :param builtins.str description: 描述信息。
        :param builtins.str type: 地址类型。支持的取值如下所示。ip：IPv4 地址；ipv6：IPv6 地址；domain：域名；port：端口。
        """
        pulumi.set(__self__, "address", address)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def address(self) -> builtins.str:
        """
        具体地址信息。
        """
        return pulumi.get(self, "address")

    @property
    @pulumi.getter
    def description(self) -> builtins.str:
        """
        描述信息。
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def type(self) -> builtins.str:
        """
        地址类型。支持的取值如下所示。ip：IPv4 地址；ipv6：IPv6 地址；domain：域名；port：端口。
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDnsControlPolicySourceResult(dict):
    def __init__(__self__, *,
                 region: builtins.str,
                 vpc_id: builtins.str):
        """
        :param builtins.str region: VPC地域信息。
        :param builtins.str vpc_id: VPC ID。
        """
        pulumi.set(__self__, "region", region)
        pulumi.set(__self__, "vpc_id", vpc_id)

    @property
    @pulumi.getter
    def region(self) -> builtins.str:
        """
        VPC地域信息。
        """
        return pulumi.get(self, "region")

    @property
    @pulumi.getter(name="vpcId")
    def vpc_id(self) -> builtins.str:
        """
        VPC ID。
        """
        return pulumi.get(self, "vpc_id")


