# coding=utf-8
# *** WARNING: this file was generated by the Pulumi SDK Generator. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from .. import _utilities
from ._enums import *

__all__ = [
    'CloudFormationProductProvisioningArtifactProperties',
    'CloudFormationProductTag',
    'CloudFormationProvisionedProductProvisioningParameter',
    'CloudFormationProvisionedProductProvisioningPreferences',
    'CloudFormationProvisionedProductTag',
    'PortfolioTag',
    'ServiceActionDefinitionParameter',
]

@pulumi.output_type
class CloudFormationProductProvisioningArtifactProperties(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "disableTemplateValidation":
            suggest = "disable_template_validation"

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

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

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

    def __init__(__self__, *,
                 info: Any,
                 description: Optional[str] = None,
                 disable_template_validation: Optional[bool] = None,
                 name: Optional[str] = None):
        pulumi.set(__self__, "info", info)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if disable_template_validation is not None:
            pulumi.set(__self__, "disable_template_validation", disable_template_validation)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def info(self) -> Any:
        return pulumi.get(self, "info")

    @property
    @pulumi.getter
    def description(self) -> Optional[str]:
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="disableTemplateValidation")
    def disable_template_validation(self) -> Optional[bool]:
        return pulumi.get(self, "disable_template_validation")

    @property
    @pulumi.getter
    def name(self) -> Optional[str]:
        return pulumi.get(self, "name")


@pulumi.output_type
class CloudFormationProductTag(dict):
    def __init__(__self__, *,
                 key: str,
                 value: str):
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> str:
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def value(self) -> str:
        return pulumi.get(self, "value")


@pulumi.output_type
class CloudFormationProvisionedProductProvisioningParameter(dict):
    def __init__(__self__, *,
                 key: str,
                 value: str):
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> str:
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def value(self) -> str:
        return pulumi.get(self, "value")


@pulumi.output_type
class CloudFormationProvisionedProductProvisioningPreferences(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "stackSetAccounts":
            suggest = "stack_set_accounts"
        elif key == "stackSetFailureToleranceCount":
            suggest = "stack_set_failure_tolerance_count"
        elif key == "stackSetFailureTolerancePercentage":
            suggest = "stack_set_failure_tolerance_percentage"
        elif key == "stackSetMaxConcurrencyCount":
            suggest = "stack_set_max_concurrency_count"
        elif key == "stackSetMaxConcurrencyPercentage":
            suggest = "stack_set_max_concurrency_percentage"
        elif key == "stackSetOperationType":
            suggest = "stack_set_operation_type"
        elif key == "stackSetRegions":
            suggest = "stack_set_regions"

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

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

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

    def __init__(__self__, *,
                 stack_set_accounts: Optional[Sequence[str]] = None,
                 stack_set_failure_tolerance_count: Optional[int] = None,
                 stack_set_failure_tolerance_percentage: Optional[int] = None,
                 stack_set_max_concurrency_count: Optional[int] = None,
                 stack_set_max_concurrency_percentage: Optional[int] = None,
                 stack_set_operation_type: Optional['CloudFormationProvisionedProductProvisioningPreferencesStackSetOperationType'] = None,
                 stack_set_regions: Optional[Sequence[str]] = None):
        if stack_set_accounts is not None:
            pulumi.set(__self__, "stack_set_accounts", stack_set_accounts)
        if stack_set_failure_tolerance_count is not None:
            pulumi.set(__self__, "stack_set_failure_tolerance_count", stack_set_failure_tolerance_count)
        if stack_set_failure_tolerance_percentage is not None:
            pulumi.set(__self__, "stack_set_failure_tolerance_percentage", stack_set_failure_tolerance_percentage)
        if stack_set_max_concurrency_count is not None:
            pulumi.set(__self__, "stack_set_max_concurrency_count", stack_set_max_concurrency_count)
        if stack_set_max_concurrency_percentage is not None:
            pulumi.set(__self__, "stack_set_max_concurrency_percentage", stack_set_max_concurrency_percentage)
        if stack_set_operation_type is not None:
            pulumi.set(__self__, "stack_set_operation_type", stack_set_operation_type)
        if stack_set_regions is not None:
            pulumi.set(__self__, "stack_set_regions", stack_set_regions)

    @property
    @pulumi.getter(name="stackSetAccounts")
    def stack_set_accounts(self) -> Optional[Sequence[str]]:
        return pulumi.get(self, "stack_set_accounts")

    @property
    @pulumi.getter(name="stackSetFailureToleranceCount")
    def stack_set_failure_tolerance_count(self) -> Optional[int]:
        return pulumi.get(self, "stack_set_failure_tolerance_count")

    @property
    @pulumi.getter(name="stackSetFailureTolerancePercentage")
    def stack_set_failure_tolerance_percentage(self) -> Optional[int]:
        return pulumi.get(self, "stack_set_failure_tolerance_percentage")

    @property
    @pulumi.getter(name="stackSetMaxConcurrencyCount")
    def stack_set_max_concurrency_count(self) -> Optional[int]:
        return pulumi.get(self, "stack_set_max_concurrency_count")

    @property
    @pulumi.getter(name="stackSetMaxConcurrencyPercentage")
    def stack_set_max_concurrency_percentage(self) -> Optional[int]:
        return pulumi.get(self, "stack_set_max_concurrency_percentage")

    @property
    @pulumi.getter(name="stackSetOperationType")
    def stack_set_operation_type(self) -> Optional['CloudFormationProvisionedProductProvisioningPreferencesStackSetOperationType']:
        return pulumi.get(self, "stack_set_operation_type")

    @property
    @pulumi.getter(name="stackSetRegions")
    def stack_set_regions(self) -> Optional[Sequence[str]]:
        return pulumi.get(self, "stack_set_regions")


@pulumi.output_type
class CloudFormationProvisionedProductTag(dict):
    def __init__(__self__, *,
                 key: str,
                 value: str):
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> str:
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def value(self) -> str:
        return pulumi.get(self, "value")


@pulumi.output_type
class PortfolioTag(dict):
    def __init__(__self__, *,
                 key: str,
                 value: str):
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> str:
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def value(self) -> str:
        return pulumi.get(self, "value")


@pulumi.output_type
class ServiceActionDefinitionParameter(dict):
    def __init__(__self__, *,
                 key: str,
                 value: str):
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> str:
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def value(self) -> str:
        return pulumi.get(self, "value")


