
    8i                        d dl mZ d dlmZ d dlmZmZmZ  ed       G d d             ZddZd	d
	 	 	 	 	 	 	 	 	 ddZ	ddZ
y)    )annotations)	dataclass)datetime	timedeltatimezoneT)slotsc                  J    e Zd ZU ded<   ded<   ded<   ded<   ded<   ded	<   y
)CompletionEventstrparticipant_idintreps
event_type
actor_typesourcer   
created_atN)__name__
__module____qualname____annotations__     :/home/portmadness/app/src/portmadness/completion_ledger.pyr
   r
      s"    
IOOKr   r
   c                    | j                    | j                  t        j                        S | j	                  t        j                        S )N)tzinfo)r   replacer   utc
astimezone)values    r   normalize_event_timer       s6    ||}}HLL}11HLL))r      )user_window_hoursc                j    t        |       }t        |      }|dk(  ry|dk7  ry||t        |      z   k  S )NadminTparticipantF)hours)r    r   )
event_timer   nowr"   	event_utcnow_utcs         r   can_undo_completionr+      sD     %Z0I"3'GW]"i)2C"DDDDr   c                    | }t        |d       D ]W  }|j                  dk(  r||j                  z  }"|j                  dk(  r||j                  z  }At        d|j                          t	        |d      S )Nc                ,    t        | j                        S )N)r    r   )items    r   <lambda>zapply_events.<locals>.<lambda>,   s    1Edoo1V r   )keycomplete
uncompletez#Unsupported completion event_type: r   )sortedr   r   
ValueErrormax)	owed_repseventsnetevents       r   apply_eventsr:   *   s    
C$VW Wz)5::C-5::CB5CSCSBTUVVW sA;r   N)r   r   returnr   )
r'   r   r   r   r(   r   r"   r   r;   bool)r6   r   r7   zlist[CompletionEvent]r;   r   )
__future__r   dataclassesr   r   r   r   r
   r    r+   r:   r   r   r   <module>r?      sy    " ! 2 2   *  EE E 
	E
 E 
E&	r   