# coding=utf-8
# --------------------------------------------------------------------------
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.
# --------------------------------------------------------------------------

from msrest.serialization import Model


class VerificationPolicyPredicateContract(Model):
    """VerificationPolicyPredicateContract.

    All required parameters must be populated in order to send to Azure.

    :param policy_name: Required.
    :type policy_name: str
    :param attribute_name: Required.
    :type attribute_name: str
    :param predicate_type: Required.
    :type predicate_type: str
    :param predicate_value: Required.
    :type predicate_value: int
    :param restrictions:
    :type restrictions: list[~wallet.models.VerificationPolicyRestriction]
    """

    _validation = {
        'policy_name': {'required': True},
        'attribute_name': {'required': True},
        'predicate_type': {'required': True},
        'predicate_value': {'required': True},
    }

    _attribute_map = {
        'policy_name': {'key': 'policyName', 'type': 'str'},
        'attribute_name': {'key': 'attributeName', 'type': 'str'},
        'predicate_type': {'key': 'predicateType', 'type': 'str'},
        'predicate_value': {'key': 'predicateValue', 'type': 'int'},
        'restrictions': {'key': 'restrictions', 'type': '[VerificationPolicyRestriction]'},
    }

    def __init__(self, *, policy_name: str, attribute_name: str, predicate_type: str, predicate_value: int, restrictions=None, **kwargs) -> None:
        super(VerificationPolicyPredicateContract, self).__init__(**kwargs)
        self.policy_name = policy_name
        self.attribute_name = attribute_name
        self.predicate_type = predicate_type
        self.predicate_value = predicate_value
        self.restrictions = restrictions
