
    |Siq                     X   d Z ddlmZmZmZmZmZmZmZ ddl	m
Z
mZmZ ddlmZmZ  e       Zd ZddZd Zd	 ZeZdd
lmZmZ ddlmZmZmZ ddl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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZF g dZGy)a  
Wallet point transaction utilities (Python port of WalletPoint).

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

Usage:
    from django_wallet_utils import WalletService, WalletRepository
    from django_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",
    )
   )HookExecutionErrorHookRejectionErrorInsufficientBalanceErrorInvalidParamsErrorInvalidPointTypeErrorUserNotFoundErrorWalletOperationError    )HookManagerHookTypePostHookError)HookContextWalletHookRegistryc                      t         S )z-Get the wallet-specific global hook registry.)_wallet_registry     O/home/cursorai/projects/django-wallet-utils/src/django_wallet_utils/__init__.pyget_global_registryr   ;   s    r   c                 6    t         j                  | ||||       y)z7Register a hook in the wallet-specific global registry.N)r   register)name	hook_typecallback	operationprioritys        r   register_hookr   @   s    dIxHMr   c                 ,    t         j                  |       S )z;Unregister a hook from the wallet-specific global registry.)r   
unregister)r   s    r   unregister_hookr    E   s    &&t,,r   c                  ,    t         j                          y)z9Clear all hooks from the wallet-specific global registry.N)r   clearr   r   r   clear_hooksr#   J   s    r   )WalletRepositoryWalletRepositoryProtocol)TransactionRecordTransactionResultWalletService)transfer_completed)'!CUSTOM_TRANSACTION_TYPE_RANGE_END#CUSTOM_TRANSACTION_TYPE_RANGE_STARTTRANSACTION_TYPESTRANSACTION_TYPE_NAMESget_custom_transaction_typesget_transaction_typeget_transaction_type_name register_custom_transaction_type"unregister_custom_transaction_type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PRODUCT_ORDERPRODUCT_ORDER_CANCELPRODUCT_ORDER_REFUNDPRODUCT_ORDER_PARTIAL_REFUNDPRODUCT_REDEMPTIONPRODUCT_REDEMPTION_CANCELSYSTEM_ADJUSTMENTSYSTEM_REWARDSYSTEM_PENALTYSYSTEM_REVERSALSYSTEM_MIGRATION)=r*   r+   r   r   r   HookRegistryr   r   r   r   r   r   r&   r'   r,   r-   r   r#   r.   r   r/   r0   r1   r   r)   r2   r    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   rM   rN   rO   rP   r	   r$   r%   r(   N)*d   )H__doc__
exceptionsr   r   r   r   r   r   r	   django_package_hooksr   r   r   hooksr   r   r   r   r   r    r#   rQ   
repositoryr$   r%   servicer&   r'   r(   signalsr)   transaction_typesr*   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   rM   rN   rO   rP   __all__r   r   r   <module>r]      s   $L   
 3 &' 
N
-
 " B H H '- - - - - - - - - - -^Cr   