# 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 copy
import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from .. import _utilities

__all__ = [
    'InputDestinationArgs',
    'InputInputDeviceArgs',
    'InputMediaConnectFlowArgs',
    'InputSecurityGroupWhitelistRuleArgs',
    'InputSourceArgs',
    'InputVpcArgs',
    'MultiplexMultiplexSettingsArgs',
]

@pulumi.input_type
class InputDestinationArgs:
    def __init__(__self__, *,
                 stream_name: pulumi.Input[str]):
        """
        :param pulumi.Input[str] stream_name: A unique name for the location the RTMP stream is being pushed to.
        """
        pulumi.set(__self__, "stream_name", stream_name)

    @property
    @pulumi.getter(name="streamName")
    def stream_name(self) -> pulumi.Input[str]:
        """
        A unique name for the location the RTMP stream is being pushed to.
        """
        return pulumi.get(self, "stream_name")

    @stream_name.setter
    def stream_name(self, value: pulumi.Input[str]):
        pulumi.set(self, "stream_name", value)


@pulumi.input_type
class InputInputDeviceArgs:
    def __init__(__self__, *,
                 id: pulumi.Input[str]):
        """
        :param pulumi.Input[str] id: The unique ID for the device.
        """
        pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[str]:
        """
        The unique ID for the device.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: pulumi.Input[str]):
        pulumi.set(self, "id", value)


@pulumi.input_type
class InputMediaConnectFlowArgs:
    def __init__(__self__, *,
                 flow_arn: pulumi.Input[str]):
        """
        :param pulumi.Input[str] flow_arn: The ARN of the MediaConnect Flow
        """
        pulumi.set(__self__, "flow_arn", flow_arn)

    @property
    @pulumi.getter(name="flowArn")
    def flow_arn(self) -> pulumi.Input[str]:
        """
        The ARN of the MediaConnect Flow
        """
        return pulumi.get(self, "flow_arn")

    @flow_arn.setter
    def flow_arn(self, value: pulumi.Input[str]):
        pulumi.set(self, "flow_arn", value)


@pulumi.input_type
class InputSecurityGroupWhitelistRuleArgs:
    def __init__(__self__, *,
                 cidr: pulumi.Input[str]):
        """
        :param pulumi.Input[str] cidr: The IPv4 CIDR that's whitelisted.
        """
        pulumi.set(__self__, "cidr", cidr)

    @property
    @pulumi.getter
    def cidr(self) -> pulumi.Input[str]:
        """
        The IPv4 CIDR that's whitelisted.
        """
        return pulumi.get(self, "cidr")

    @cidr.setter
    def cidr(self, value: pulumi.Input[str]):
        pulumi.set(self, "cidr", value)


@pulumi.input_type
class InputSourceArgs:
    def __init__(__self__, *,
                 password_param: pulumi.Input[str],
                 url: pulumi.Input[str],
                 username: pulumi.Input[str]):
        """
        :param pulumi.Input[str] password_param: The key used to extract the password from EC2 Parameter store.
        :param pulumi.Input[str] url: The URL where the stream is pulled from.
        :param pulumi.Input[str] username: The username for the input source.
        """
        pulumi.set(__self__, "password_param", password_param)
        pulumi.set(__self__, "url", url)
        pulumi.set(__self__, "username", username)

    @property
    @pulumi.getter(name="passwordParam")
    def password_param(self) -> pulumi.Input[str]:
        """
        The key used to extract the password from EC2 Parameter store.
        """
        return pulumi.get(self, "password_param")

    @password_param.setter
    def password_param(self, value: pulumi.Input[str]):
        pulumi.set(self, "password_param", value)

    @property
    @pulumi.getter
    def url(self) -> pulumi.Input[str]:
        """
        The URL where the stream is pulled from.
        """
        return pulumi.get(self, "url")

    @url.setter
    def url(self, value: pulumi.Input[str]):
        pulumi.set(self, "url", value)

    @property
    @pulumi.getter
    def username(self) -> pulumi.Input[str]:
        """
        The username for the input source.
        """
        return pulumi.get(self, "username")

    @username.setter
    def username(self, value: pulumi.Input[str]):
        pulumi.set(self, "username", value)


@pulumi.input_type
class InputVpcArgs:
    def __init__(__self__, *,
                 subnet_ids: pulumi.Input[Sequence[pulumi.Input[str]]],
                 security_group_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[str]]] subnet_ids: A list of 2 VPC subnet IDs from the same VPC.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] security_group_ids: A list of up to 5 EC2 VPC security group IDs to attach to the Input.
        """
        pulumi.set(__self__, "subnet_ids", subnet_ids)
        if security_group_ids is not None:
            pulumi.set(__self__, "security_group_ids", security_group_ids)

    @property
    @pulumi.getter(name="subnetIds")
    def subnet_ids(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]:
        """
        A list of 2 VPC subnet IDs from the same VPC.
        """
        return pulumi.get(self, "subnet_ids")

    @subnet_ids.setter
    def subnet_ids(self, value: pulumi.Input[Sequence[pulumi.Input[str]]]):
        pulumi.set(self, "subnet_ids", value)

    @property
    @pulumi.getter(name="securityGroupIds")
    def security_group_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        A list of up to 5 EC2 VPC security group IDs to attach to the Input.
        """
        return pulumi.get(self, "security_group_ids")

    @security_group_ids.setter
    def security_group_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "security_group_ids", value)


@pulumi.input_type
class MultiplexMultiplexSettingsArgs:
    def __init__(__self__, *,
                 transport_stream_bitrate: pulumi.Input[int],
                 transport_stream_id: pulumi.Input[int],
                 maximum_video_buffer_delay_milliseconds: Optional[pulumi.Input[int]] = None,
                 transport_stream_reserved_bitrate: Optional[pulumi.Input[int]] = None):
        """
        :param pulumi.Input[int] transport_stream_bitrate: Transport stream bit rate.
        :param pulumi.Input[int] transport_stream_id: Unique ID for each multiplex.
        :param pulumi.Input[int] maximum_video_buffer_delay_milliseconds: Maximum video buffer delay.
        :param pulumi.Input[int] transport_stream_reserved_bitrate: Transport stream reserved bit rate.
        """
        pulumi.set(__self__, "transport_stream_bitrate", transport_stream_bitrate)
        pulumi.set(__self__, "transport_stream_id", transport_stream_id)
        if maximum_video_buffer_delay_milliseconds is not None:
            pulumi.set(__self__, "maximum_video_buffer_delay_milliseconds", maximum_video_buffer_delay_milliseconds)
        if transport_stream_reserved_bitrate is not None:
            pulumi.set(__self__, "transport_stream_reserved_bitrate", transport_stream_reserved_bitrate)

    @property
    @pulumi.getter(name="transportStreamBitrate")
    def transport_stream_bitrate(self) -> pulumi.Input[int]:
        """
        Transport stream bit rate.
        """
        return pulumi.get(self, "transport_stream_bitrate")

    @transport_stream_bitrate.setter
    def transport_stream_bitrate(self, value: pulumi.Input[int]):
        pulumi.set(self, "transport_stream_bitrate", value)

    @property
    @pulumi.getter(name="transportStreamId")
    def transport_stream_id(self) -> pulumi.Input[int]:
        """
        Unique ID for each multiplex.
        """
        return pulumi.get(self, "transport_stream_id")

    @transport_stream_id.setter
    def transport_stream_id(self, value: pulumi.Input[int]):
        pulumi.set(self, "transport_stream_id", value)

    @property
    @pulumi.getter(name="maximumVideoBufferDelayMilliseconds")
    def maximum_video_buffer_delay_milliseconds(self) -> Optional[pulumi.Input[int]]:
        """
        Maximum video buffer delay.
        """
        return pulumi.get(self, "maximum_video_buffer_delay_milliseconds")

    @maximum_video_buffer_delay_milliseconds.setter
    def maximum_video_buffer_delay_milliseconds(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "maximum_video_buffer_delay_milliseconds", value)

    @property
    @pulumi.getter(name="transportStreamReservedBitrate")
    def transport_stream_reserved_bitrate(self) -> Optional[pulumi.Input[int]]:
        """
        Transport stream reserved bit rate.
        """
        return pulumi.get(self, "transport_stream_reserved_bitrate")

    @transport_stream_reserved_bitrate.setter
    def transport_stream_reserved_bitrate(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "transport_stream_reserved_bitrate", value)


