# 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__ = [
    'GetSnatentryResult',
    'AwaitableGetSnatentryResult',
    'get_snatentry',
    'get_snatentry_output',
]

@pulumi.output_type
class GetSnatentryResult:
    """
    A collection of values returned by getSnatentry.
    """
    def __init__(__self__, eip_address=None, eip_id=None, id=None, nat_gateway_id=None, nat_ip_id=None, snat_entry_id=None, snat_entry_name=None, source_cidr=None, status=None, subnet_id=None):
        if eip_address and not isinstance(eip_address, str):
            raise TypeError("Expected argument 'eip_address' to be a str")
        pulumi.set(__self__, "eip_address", eip_address)
        if eip_id and not isinstance(eip_id, str):
            raise TypeError("Expected argument 'eip_id' to be a str")
        pulumi.set(__self__, "eip_id", eip_id)
        if id and not isinstance(id, str):
            raise TypeError("Expected argument 'id' to be a str")
        pulumi.set(__self__, "id", id)
        if nat_gateway_id and not isinstance(nat_gateway_id, str):
            raise TypeError("Expected argument 'nat_gateway_id' to be a str")
        pulumi.set(__self__, "nat_gateway_id", nat_gateway_id)
        if nat_ip_id and not isinstance(nat_ip_id, str):
            raise TypeError("Expected argument 'nat_ip_id' to be a str")
        pulumi.set(__self__, "nat_ip_id", nat_ip_id)
        if snat_entry_id and not isinstance(snat_entry_id, str):
            raise TypeError("Expected argument 'snat_entry_id' to be a str")
        pulumi.set(__self__, "snat_entry_id", snat_entry_id)
        if snat_entry_name and not isinstance(snat_entry_name, str):
            raise TypeError("Expected argument 'snat_entry_name' to be a str")
        pulumi.set(__self__, "snat_entry_name", snat_entry_name)
        if source_cidr and not isinstance(source_cidr, str):
            raise TypeError("Expected argument 'source_cidr' to be a str")
        pulumi.set(__self__, "source_cidr", source_cidr)
        if status and not isinstance(status, str):
            raise TypeError("Expected argument 'status' to be a str")
        pulumi.set(__self__, "status", status)
        if subnet_id and not isinstance(subnet_id, str):
            raise TypeError("Expected argument 'subnet_id' to be a str")
        pulumi.set(__self__, "subnet_id", subnet_id)

    @property
    @pulumi.getter(name="eipAddress")
    def eip_address(self) -> builtins.str:
        """
        SNAT规则关联的公网IP的IP地址。返回单个公网IP的IP地址。 返回多个公网IP的IP地址。
        """
        return pulumi.get(self, "eip_address")

    @property
    @pulumi.getter(name="eipId")
    def eip_id(self) -> builtins.str:
        """
        SNAT规则关联的公网IP的ID。返回单个公网IP的ID。 返回多个公网IP的ID。
        """
        return pulumi.get(self, "eip_id")

    @property
    @pulumi.getter
    def id(self) -> builtins.str:
        """
        Uniquely identifies the resource.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="natGatewayId")
    def nat_gateway_id(self) -> builtins.str:
        """
        SNAT规则所属NAT网关的ID。
        """
        return pulumi.get(self, "nat_gateway_id")

    @property
    @pulumi.getter(name="natIpId")
    def nat_ip_id(self) -> builtins.str:
        """
        私网NAT网关的中转IP的ID。
        """
        return pulumi.get(self, "nat_ip_id")

    @property
    @pulumi.getter(name="snatEntryId")
    def snat_entry_id(self) -> builtins.str:
        """
        SNAT规则的ID。
        """
        return pulumi.get(self, "snat_entry_id")

    @property
    @pulumi.getter(name="snatEntryName")
    def snat_entry_name(self) -> builtins.str:
        """
        SNAT规则的名称。
        """
        return pulumi.get(self, "snat_entry_name")

    @property
    @pulumi.getter(name="sourceCidr")
    def source_cidr(self) -> builtins.str:
        """
        SNAT规则对应的网段。
        """
        return pulumi.get(self, "source_cidr")

    @property
    @pulumi.getter
    def status(self) -> builtins.str:
        """
        SNAT规则的状态。Creating：创建中。Deleting：删除中。Available：可用。
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter(name="subnetId")
    def subnet_id(self) -> builtins.str:
        """
        SNAT规则关联子网的ID。
        """
        return pulumi.get(self, "subnet_id")


class AwaitableGetSnatentryResult(GetSnatentryResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetSnatentryResult(
            eip_address=self.eip_address,
            eip_id=self.eip_id,
            id=self.id,
            nat_gateway_id=self.nat_gateway_id,
            nat_ip_id=self.nat_ip_id,
            snat_entry_id=self.snat_entry_id,
            snat_entry_name=self.snat_entry_name,
            source_cidr=self.source_cidr,
            status=self.status,
            subnet_id=self.subnet_id)


def get_snatentry(id: Optional[builtins.str] = None,
                  opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetSnatentryResult:
    """
    Data Source schema for Byteplus::NatGateway::Snatentry


    :param builtins.str id: Uniquely identifies the resource.
    """
    __args__ = dict()
    __args__['id'] = id
    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke('bytepluscc:natgateway/getSnatentry:getSnatentry', __args__, opts=opts, typ=GetSnatentryResult).value

    return AwaitableGetSnatentryResult(
        eip_address=pulumi.get(__ret__, 'eip_address'),
        eip_id=pulumi.get(__ret__, 'eip_id'),
        id=pulumi.get(__ret__, 'id'),
        nat_gateway_id=pulumi.get(__ret__, 'nat_gateway_id'),
        nat_ip_id=pulumi.get(__ret__, 'nat_ip_id'),
        snat_entry_id=pulumi.get(__ret__, 'snat_entry_id'),
        snat_entry_name=pulumi.get(__ret__, 'snat_entry_name'),
        source_cidr=pulumi.get(__ret__, 'source_cidr'),
        status=pulumi.get(__ret__, 'status'),
        subnet_id=pulumi.get(__ret__, 'subnet_id'))
def get_snatentry_output(id: Optional[pulumi.Input[builtins.str]] = None,
                         opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetSnatentryResult]:
    """
    Data Source schema for Byteplus::NatGateway::Snatentry


    :param builtins.str id: Uniquely identifies the resource.
    """
    __args__ = dict()
    __args__['id'] = id
    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke_output('bytepluscc:natgateway/getSnatentry:getSnatentry', __args__, opts=opts, typ=GetSnatentryResult)
    return __ret__.apply(lambda __response__: GetSnatentryResult(
        eip_address=pulumi.get(__response__, 'eip_address'),
        eip_id=pulumi.get(__response__, 'eip_id'),
        id=pulumi.get(__response__, 'id'),
        nat_gateway_id=pulumi.get(__response__, 'nat_gateway_id'),
        nat_ip_id=pulumi.get(__response__, 'nat_ip_id'),
        snat_entry_id=pulumi.get(__response__, 'snat_entry_id'),
        snat_entry_name=pulumi.get(__response__, 'snat_entry_name'),
        source_cidr=pulumi.get(__response__, 'source_cidr'),
        status=pulumi.get(__response__, 'status'),
        subnet_id=pulumi.get(__response__, 'subnet_id')))
