# 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 ChargeFunction(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.    Define what type of charge it is in Advanced consumption billing. * Standard: Normal charge with no Prepayment or Commitment or Drawdown. * Prepayment: For recurring charges. Unit or currency based prepaid charge. * CommitmentTrueUp: For recurring charges. Currency based minimum commitment charge. * Drawdown: For usage charges. Drawdown from prepaid funds. * DrawdownAndCreditCommitment: For usage charges. Drawdown from prepaid funds and then credit to minimum commitment funds. * CreditCommitment: For usage charges. Credit to minimum commitment funds. 
    """

    """
    allowed enum values
    """
    STANDARD = 'Standard'
    PREPAYMENT = 'Prepayment'
    COMMITMENTTRUEUP = 'CommitmentTrueUp'
    DRAWDOWN = 'Drawdown'
    CREDITCOMMITMENT = 'CreditCommitment'
    DRAWDOWNANDCREDITCOMMITMENT = 'DrawdownAndCreditCommitment'

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


