Ë
    �|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   € ä×Ñ˜d I¨x¸À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   