# 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 MovementType(str, Enum):
    """
    MovementType
    """

    """
    allowed enum values
    """
    SETTLEMENT = 'Settlement'
    TRADED = 'Traded'
    STOCKMOVEMENT = 'StockMovement'
    FUTURECASH = 'FutureCash'
    COMMITMENT = 'Commitment'
    RECEIVABLE = 'Receivable'
    CASHSETTLEMENT = 'CashSettlement'
    CASHFORWARD = 'CashForward'
    CASHCOMMITMENT = 'CashCommitment'
    CASHRECEIVABLE = 'CashReceivable'
    ACCRUAL = 'Accrual'
    CASHACCRUAL = 'CashAccrual'
    FORWARDFX = 'ForwardFx'
    CASHFXFORWARD = 'CashFxForward'
    CARRY = 'Carry'
    CARRYASPNL = 'CarryAsPnl'
    VARIATIONMARGIN = 'VariationMargin'
    CAPITAL = 'Capital'
    FEE = 'Fee'
    LIMITADJUSTMENT = 'LimitAdjustment'
    BALANCEADJUSTMENT = 'BalanceAdjustment'
    DEFERRED = 'Deferred'
    CASHDEFERRED = 'CashDeferred'

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