
    \_=i                     X   d Z ddlmZmZmZmZ ddlmZmZ ddl	m
Z
mZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZN g dZOy)a  
Wallet point transaction utilities (Python port of WalletPoint).

Install (from your Django backend folder):
    pip install -e ../packages/wallet_utils

Usage:
    from wallet_utils import WalletService, WalletRepository
    from wallet_utils.exceptions import (
        InsufficientBalanceError,
        InvalidPointTypeError,
        InvalidParamsError,
        WalletOperationError,
    )
    from your_app.models import User
    
    # Define point types and their decimal places
    point_types = {
        "credit_balance": 2,
        "reward_points": 0,
    }
    
    # Create repository (only needs point types definition)
    repo = WalletRepository(
        user_model=User,
        point_types=point_types,
    )
    
    # Use the service
    service = WalletService(repo)
    transaction_id = service.add_point(
        user_id=123,
        point_type="credit_balance",
        amount=Decimal("100.00"),
        remarks="Deposit",
    )
   )InsufficientBalanceErrorInvalidParamsErrorInvalidPointTypeErrorWalletOperationError)WalletRepositoryWalletRepositoryProtocol)TransactionRecordWalletService)BTRANSACTION_TYPESTRANSACTION_TYPE_NAMESget_transaction_typeget_transaction_type_nameWALLET_DEPOSITWALLET_DEPOSIT_CANCELWALLET_TRANSFERWALLET_WITHDRAWWALLET_WITHDRAW_REFUNDWALLET_ADJUSTWALLET_TOPUPWALLET_DEDUCTPACKAGE_ACTIVATIONPACKAGE_ACTIVATION_CANCELPACKAGE_UPGRADEPACKAGE_UPGRADE_CANCELPACKAGE_RENEWALPACKAGE_RENEWAL_CANCELPACKAGE_EXPIRY_REFUNDCOMMISSION_DISTRIBUTIONCOMMISSION_DISTRIBUTION_REVERSEROI_DISTRIBUTIONROI_DISTRIBUTION_REVERSEREFERRAL_BONUSREFERRAL_BONUS_REVERSEMATCHING_BONUSMATCHING_BONUS_REVERSELEADERSHIP_BONUSLEADERSHIP_BONUS_REVERSEPROMOTION_BONUSPROMOTION_BONUS_REVERSEPRODUCT_ORDERPRODUCT_ORDER_CANCELPRODUCT_ORDER_REFUNDPRODUCT_REDEMPTIONPRODUCT_REDEMPTION_CANCELPRODUCT_EXCHANGEPRODUCT_EXCHANGE_REVERSESYSTEM_ADJUSTMENTSYSTEM_REWARDSYSTEM_PENALTYSYSTEM_REVERSALSYSTEM_MIGRATIONPAYMENT_RECEIVEDPAYMENT_REFUNDPAYMENT_FAILED_REFUNDPAYMENT_CHARGEBACKPAYMENT_CHARGEBACK_REVERSALLOAN_DISBURSEMENTLOAN_REPAYMENTLOAN_WRITE_OFFCREDIT_LIMIT_INCREASECREDIT_LIMIT_DECREASECURRENCY_EXCHANGEPOINT_CONVERSIONPOINT_CONVERSION_REVERSEBONUS_CONVERSIONBONUS_CONVERSION_REVERSETRANSACTION_FEETRANSACTION_FEE_REFUNDWITHDRAWAL_FEEWITHDRAWAL_FEE_REFUNDTRANSFER_FEETRANSFER_FEE_REFUNDMAINTENANCE_FEEMAINTENANCE_FEE_REFUND)Jr   r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   r   r   r   r
   N)P__doc__
exceptionsr   r   r   r   
repositoryr   r   servicer	   r
   transaction_typesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   __all__     X/home/cursorai/projects/telegram-earn/packages/wallet_utils/src/wallet_utils/__init__.py<module>rV      s   $L  C 5L L L L L L L L L L L L L L L L L\TrT   