# coding: utf-8

"""
    Zuora API Reference

    REST API reference for the Zuora Billing, Payments, and Central Platform! Check out the [REST API Overview](https://www.zuora.com/developer/api-references/api/overview/).

    The version of the OpenAPI document: 2024-05-20
    Contact: docs@zuora.com
    Generated by OpenAPI Generator (https://openapi-generator.tech)

    Do not edit the class manually.
"""  # noqa: E501


from __future__ import annotations
import json
from enum import Enum
from typing_extensions import Self


class CommitmentType(str, Enum):
    """
    **Note**: This field is only available if you have the [Unbilled Usage](https://knowledgecenter.zuora.com/Zuora_Billing/Bill_your_customers/Bill_for_usage_or_prepaid_products/Advanced_Consumption_Billing/Unbilled_Usage) feature enabled.    The type of commitment. A prepaid charge can be UNIT or CURRENCY. And a min commitment(in-arrears) charge can only be CURRENCY type. For topup(recurring/one-time) charges, this field indicates what type of funds are created.  * If UNIT it will create a fund with given prepaidUom. * If CURRENCY it will create a fund with the currency amount calculated in list price. For drawdown(usage) charges, this field indicates what type of funds are drawdown from that created from topup charges. 
    """

    """
    allowed enum values
    """
    UNIT = 'UNIT'
    CURRENCY = 'CURRENCY'

    @classmethod
    def from_json(cls, json_str: str) -> Self:
        """Create an instance of CommitmentType from a JSON string"""
        return cls(json.loads(json_str))


