# coding: utf-8

"""
    LUSID API

    FINBOURNE Technology  # noqa: E501

    Contact: info@finbourne.com
    Generated by OpenAPI Generator (https://openapi-generator.tech)

    Do not edit the class manually.
"""


import json
import pprint
import re  # noqa: F401
from aenum import Enum, no_arg

from typing import List, Dict, Optional, Any, Union, TYPE_CHECKING
from typing_extensions import Annotated
from pydantic.v1 import BaseModel, StrictStr, StrictInt, StrictBool, StrictFloat, StrictBytes, Field, validator, ValidationError, conlist, constr
from datetime import datetime


class InstrumentType(str, Enum):
    """
    InstrumentType
    """

    """
    allowed enum values
    """
    QUOTEDSECURITY = 'QuotedSecurity'
    INTERESTRATESWAP = 'InterestRateSwap'
    FXFORWARD = 'FxForward'
    FUTURE = 'Future'
    EXOTICINSTRUMENT = 'ExoticInstrument'
    FXOPTION = 'FxOption'
    CREDITDEFAULTSWAP = 'CreditDefaultSwap'
    INTERESTRATESWAPTION = 'InterestRateSwaption'
    BOND = 'Bond'
    EQUITYOPTION = 'EquityOption'
    FIXEDLEG = 'FixedLeg'
    FLOATINGLEG = 'FloatingLeg'
    BESPOKECASHFLOWSLEG = 'BespokeCashFlowsLeg'
    UNKNOWN = 'Unknown'
    TERMDEPOSIT = 'TermDeposit'
    CONTRACTFORDIFFERENCE = 'ContractForDifference'
    EQUITYSWAP = 'EquitySwap'
    CASHPERPETUAL = 'CashPerpetual'
    CAPFLOOR = 'CapFloor'
    CASHSETTLED = 'CashSettled'
    CDSINDEX = 'CdsIndex'
    BASKET = 'Basket'
    FUNDINGLEG = 'FundingLeg'
    FXSWAP = 'FxSwap'
    FORWARDRATEAGREEMENT = 'ForwardRateAgreement'
    SIMPLEINSTRUMENT = 'SimpleInstrument'
    REPO = 'Repo'
    EQUITY = 'Equity'
    EXCHANGETRADEDOPTION = 'ExchangeTradedOption'
    REFERENCEINSTRUMENT = 'ReferenceInstrument'
    COMPLEXBOND = 'ComplexBond'
    INFLATIONLINKEDBOND = 'InflationLinkedBond'
    INFLATIONSWAP = 'InflationSwap'
    SIMPLECASHFLOWLOAN = 'SimpleCashFlowLoan'
    TOTALRETURNSWAP = 'TotalReturnSwap'
    INFLATIONLEG = 'InflationLeg'
    FUNDSHARECLASS = 'FundShareClass'
    FLEXIBLELOAN = 'FlexibleLoan'
    UNSETTLEDCASH = 'UnsettledCash'
    CASH = 'Cash'
    MASTEREDINSTRUMENT = 'MasteredInstrument'
    LOANFACILITY = 'LoanFacility'
    FLEXIBLEDEPOSIT = 'FlexibleDeposit'
    FLEXIBLEREPO = 'FlexibleRepo'

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