+
    ~j$                        ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHtH	t	H
t
 ^ RIHtHt ^ RIHt ]P                   ! ^R7      t]P                   ! ^R7      t] ! R R	4      4       t] ! R
 R4      4       t] ! R R4      4       t] ! R R4      4       t] ! R R4      4       t ! R R4      t ! R R4      tR R ltR R ltR# )    N)	dataclass)OptionalListLiteral)MessageToDict	ParseDictRoomConfiguration)hours)minutesc                   l   a  ] tR t^t o RtRtRtRtRtRt	Rt
RtRtRtRtRtRtRtRtRtV 3R ltRtV tR# )VideoGrantsN Tc                  < V ^8  d   Qh/ S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[;R&   S[ S[,          ;R&   S[;R&   S[;R	&   S[;R
&   S[ S[S[,          ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   # )   room_create	room_listroom_record
room_admin	room_joinroomdestination_roomcan_publishcan_subscribecan_publish_datacan_publish_sourcescan_update_own_metadataingress_adminhiddenrecorderagent)r   boolstrr   )format__classdict__s   "m/Users/mitch_tango/dev/rabbit-r1-livekit/agent/.venv/lib/python3.14/site-packages/livekit/api/access_token.py__annotate__VideoGrants.__annotate__   s     $&  ~$	 
 $&  %  ~$  N  sm*   ! " # $ !% . "$s),3/ 4 &d^25 : D>(; @ TN!A F tn#G L D> M      )__name__
__module____qualname____firstlineno__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   __annotate_func____static_attributes____classdictcell__r%   s   @r&   r   r      su      #'K $I"&K "&J $ID '+ KM!
 04 /3 %)M "F  $H !EM  r)   r   c                   4   a  ] tR t^Ht o RtRtV 3R ltRtV tR# )	SIPGrantsFc                2   < V ^8  d   Qh/ S[ ;R&   S[ ;R&   # )r   admincallr"   )r$   r%   s   "r&   r'   SIPGrants.__annotate__H   s       
  r)   r*   N)	r+   r,   r-   r.   r6   r7   r/   r0   r1   r2   s   @r&   r4   r4   H   s      ED  r)   r4   c                   0   a  ] tR t^Pt o RtV 3R ltRtV tR# )InferenceGrantsFc                &   < V ^8  d   Qh/ S[ ;R&   # )r   performr8   )r$   r%   s   "r&   r'   InferenceGrants.__annotate__P   s       r)   r*   N)r+   r,   r-   r.   r=   r/   r0   r1   r2   s   @r&   r;   r;   P   s      G  r)   r;   c                   0   a  ] tR t^Vt o RtV 3R ltRtV tR# )ObservabilityGrantsFc                &   < V ^8  d   Qh/ S[ ;R&   # )r   writer8   )r$   r%   s   "r&   r'    ObservabilityGrants.__annotate__V   s       r)   r*   N)r+   r,   r-   r.   rB   r/   r0   r1   r2   s   @r&   r@   r@   V   s      E  r)   r@   c                   n   a  ] tR t^\t o RtRtRtRtRtRt	Rt
RtRtRtRtRtV 3R lR ltV 3R ltRtV tR# )Claimsr   Nc                    < V ^8  d   QhRS[ /# r   return)dict)r$   r%   s   "r&   r'   Claims.__annotate__k   s     
 
 
r)   c                    \         P                  ! V R  R7      pV P                  '       d   \        V P                  4      VR&   V# )c                 l    V  UUu/ uF   w  rVf   K  VR8w  g   K  \        V4      VbK"  	  upp# u uppi )Nr   )snake_to_lower_camel)itemskvs   &  r&   <lambda>Claims.asdict.<locals>.<lambda>o   s<    7<(7<tq*RSWYRY*$Q'*u( (s   000)dict_factory
roomConfig)dataclassesasdictroom_configr   )selfclaimss   & r&   rV   Claims.asdictk   sB    ##
 #01A1A#BF< r)   c                @  < V ^8  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[S[,          ;R&   S[S[,          ;R&   S[S[,          ;R&   S[S[,          ;R&   S[S[S[ S[ 3,          ,          ;R	&   S[S[ ,          ;R
&   S[S[ ,          ;R&   S[S[,          ;R&   # )r   identitynamekindmetadatavideosip	inferenceobservability
attributessha256room_presetrW   )r#   r   r   r4   r;   r@   rI   r
   )r$   r%   s   "r&   r'   rJ   \   s       N  N	 
   K '  
)	#  (/  /07  c3h(/  SM   #%  +,3 r)   r*   )r+   r,   r-   r.   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rW   rV   r/   r0   r1   r2   s   @r&   rE   rE   \   sR     HDDH#'E#C+/I37M+/J F!%K/3K
 
  r)   rE   c                   D  a  ] tR t^xt o ]R!,          tR"V 3R lR lltV 3R lR ltV 3R lR ltV 3R lR	 lt	V 3R
 lR lt
V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltR tV tR# )#AccessTokenNc                J   < V ^8  d   QhRS[ S[,          RS[ S[,          RR/# )r   api_key
api_secretrH   N)r   r#   )r$   r%   s   "r&   r'   AccessToken.__annotate__{   s1      # SM 
	r)   c                   T;'       g    \         P                  ! R 4      pT;'       g    \         P                  ! R4      pV'       d	   V'       g   \        R4      hWn        W n        \        4       V n        RV n        \        V n	        R# )LIVEKIT_API_KEYLIVEKIT_API_SECRET"api_key and api_secret must be setr   N)
osgetenv
ValueErrorrj   rk   rE   rY   r\   DEFAULT_TTLttl)rX   rj   rk   s   &&&r&   __init__AccessToken.__init__{   sf    
 99RYY'89BB299-A#B
jABB$h r)   c                8   < V ^8  d   QhRS[ P                  RR/# )r   ru   rH   rh   )datetime	timedelta)r$   r%   s   "r&   r'   rl      s!      H.. = r)   c                    Wn         V # N)ru   )rX   ru   s   &&r&   with_ttlAccessToken.with_ttl   s    r)   c                $   < V ^8  d   QhRS[ RR/# r   grantsrH   rh   )r   )r$   r%   s   "r&   r'   rl      s      + - r)   c                &    WP                   n        V # r|   )rY   r`   rX   r   s   &&r&   with_grantsAccessToken.with_grants   s    "r)   c                $   < V ^8  d   QhRS[ RR/# r   )r4   )r$   r%   s   "r&   r'   rl      s      i M r)   c                &    WP                   n        V # r|   )rY   ra   r   s   &&r&   with_sip_grantsAccessToken.with_sip_grants   s     r)   c                $   < V ^8  d   QhRS[ RR/# r   )r@   )r$   r%   s   "r&   r'   rl      s      0C  r)   c                &    WP                   n        V # r|   )rY   rc   r   s   &&r&   with_observability_grants%AccessToken.with_observability_grants   s    $*!r)   c                $   < V ^8  d   QhRS[ RR/# r   )r;   )r$   r%   s   "r&   r'   rl      s      O  r)   c                &    WP                   n        V # r|   )rY   rb   r   s   &&r&   with_inference_grants!AccessToken.with_inference_grants   s     &r)   c                $   < V ^8  d   QhRS[ RR/# )r   r\   rH   rh   r#   )r$   r%   s   "r&   r'   rl            c m r)   c                    Wn         V # r|   )r\   )rX   r\   s   &&r&   with_identityAccessToken.with_identity   s     r)   c                $   < V ^8  d   QhRS[ RR/# )r   r^   rH   rh   )ParticipantKind)r$   r%   s   "r&   r'   rl      s      o - r)   c                &    WP                   n        V # r|   )rY   r^   )rX   r^   s   &&r&   	with_kindAccessToken.with_kind       r)   c                $   < V ^8  d   QhRS[ RR/# )r   r]   rH   rh   r   )r$   r%   s   "r&   r'   rl      s      c m r)   c                &    WP                   n        V # r|   )rY   r]   )rX   r]   s   &&r&   	with_nameAccessToken.with_name   r   r)   c                $   < V ^8  d   QhRS[ RR/# )r   r_   rH   rh   r   )r$   r%   s   "r&   r'   rl      r   r)   c                &    WP                   n        V # r|   )rY   r_   )rX   r_   s   &&r&   with_metadataAccessToken.with_metadata   s    'r)   c                :   < V ^8  d   QhRS[ S[S[3,          RR/# )r   rd   rH   rh   )rI   r#   )r$   r%   s   "r&   r'   rl      s#      $sCx. ] r)   c                &    WP                   n        V # r|   )rY   rd   )rX   rd   s   &&r&   with_attributesAccessToken.with_attributes   s    !+r)   c                $   < V ^8  d   QhRS[ RR/# )r   re   rH   rh   r   )r$   r%   s   "r&   r'   rl      s      # - r)   c                &    WP                   n        V # r|   )rY   re   )rX   re   s   &&r&   with_sha256AccessToken.with_sha256   s    #r)   c                $   < V ^8  d   QhRS[ RR/# )r   presetrH   rh   r   )r$   r%   s   "r&   r'   rl      s      s } r)   c                &    WP                   n        V # r|   )rY   rf   )rX   r   s   &&r&   with_room_presetAccessToken.with_room_preset       "(r)   c                $   < V ^8  d   QhRS[ RR/# )r   configrH   rh   r	   )r$   r%   s   "r&   r'   rl      s      '8 ] r)   c                &    WP                   n        V # r|   )rY   rW   )rX   r   s   &&r&   with_room_configAccessToken.with_room_config   r   r)   c                    < V ^8  d   QhRS[ /# rG   r   )r$   r%   s   "r&   r'   rl      s     J J Jr)   c                   V P                   P                  pV'       dB   VP                  '       d0   V P                  '       d   VP                  '       g   \        R 4      hV P                   P                  4       pVP                  RV P                  RV P                  R\        P                  ! \        P                  P                  \        P                  P                  4      P                  4       4      R\        P                  ! \        P                  P                  \        P                  P                  4      V P                   ,           P                  4       4      /4       \"        P$                  ! W P&                  RR7      # )z1identity and room must be set when joining a roomsubissnbfexpHS256)	algorithm)rY   r`   r   r\   r   rs   rV   updaterj   calendartimegmry   nowtimezoneutcutctimetupleru   jwtencoderk   )rX   r`   
jwt_claimss   &  r&   to_jwtAccessToken.to_jwt   s    !!U___dmmm5:::PQQ [['')
t}}t||xx'8'8'<'<X=N=N=R=R'S'`'`'bcx&&**8+<+<+@+@ADHHLZZ\			
 zz*ooIIr)   )rj   rk   rY   r\   ru   )standardegressingressra   r!   NN)r+   r,   r-   r.   r   r   rv   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r0   r1   r2   s   @r&   rh   rh   x   s     MNO &             J Jr)   rh   c                   X   a  ] tR t^t o R
R]/V 3R lR llltRR/V 3R lR lltR	tV tR# )TokenVerifierNleewayc                d   < V ^8  d   QhRS[ S[,          RS[ S[,          RS[P                  RR/# )r   rj   rk   r   rH   N)r   r#   ry   rz   )r$   r%   s   "r&   r'   TokenVerifier.__annotate__   sA      # SM
 "" 
r)   c                   T;'       g    \         P                  ! R 4      pT;'       g    \         P                  ! R4      pWn        W n        W0n        R# )rn   ro   N)rq   rr   rj   rk   _leeway)rX   rj   rk   r   s   &&&$r&   rv   TokenVerifier.__init__   sA     99RYY'89BB299-A#B
$r)   verify_signatureTc                ,   < V ^8  d   QhRS[ RS[RS[/# )r   tokenr   rH   )r#   r"   rE   )r$   r%   s   "r&   r'   r      s"     1 1C 1d 1f 1r)   c               d   V'       d0   V P                   '       d   V P                  '       g   \        R 4      h\        P                  ! TV P                  ;'       g    RV P                   ;'       g    RR.V P
                  P                  4       RV/R7      pVP                  R\        4       4      pVP                  4        UUu/ uF  w  rV\        V4      VbK  	  pppVP                  4        UUu/ uF  w  rVV\        P                  9   g   K  WVbK   	  ppp\        R/ VB pVP                  R\        4       4      pVP                  4        UUu/ uF  w  rV\        V4      VbK  	  pppVP                  4        UUu/ uF  w  rVV\        P                  9   g   K  WVbK   	  ppp\        R/ VB p	VP                  R\        4       4      p
V
P                  4        UUu/ uF  w  rV\        V4      VbK  	  p
ppV
P                  4        UUu/ uF  w  rVV\        P                  9   g   K  WVbK   	  p
pp\        R/ V
B p\        VP                  RR4      VP                  R	R4      VV	VVP                  R
/ 4      VP                  RR4      VP                  RR4      R7      pVP                  R4      '       d   VP                  R4      Vn        VP                  R4      '       d+   \#        VP                  R4      \%        4       RR7      Vn        V# u uppi u uppi u uppi u uppi u uppi u uppi )rp   r   r   r   )keyissuer
algorithmsr   optionsr`   ra   rb   r   r]   rd   r_   re   )r\   r]   r`   ra   rb   rd   r_   re   
roomPresetrT   T)ignore_unknown_fieldsr*   )rj   rk   rs   r   decoder   total_secondsgetrI   rN   camel_to_snaker   __dataclass_fields__r4   r;   rE   rf   r   r
   rW   )rX   r   r   rY   
video_dictrO   rP   r`   sip_dictra   inference_dictrb   grant_claimss   &&$          r&   verifyTokenVerifier.verify   s   T\\\ABB%%2<<%%2y<<--/')9:
 ZZ0
7A7G7G7IJ7ItqnQ'*7I
J'1'7'7'9c'9tqQ+BbBb=bdad'9
c)j)::eTV,5=^^5EF5ETQN1%q(5EF%-^^%5]%5TQi>\>\9\DAD%5]#(#K8;I;O;O;QR;Q41.+Q.;QR+113
3TQqO<`<`7`DAD3 	 
 $5n5	ZZr*FB'zz,3ZZ
B/::h+	
 ::l##'-zz,'?L$::l##'0

<(!#&*(L$ I Kc G] S
s6   L1LLL=L L L&	L,'L,)r   rj   rk   r   )	r+   r,   r-   r.   DEFAULT_LEEWAYrv   r   r0   r1   r2   s   @r&   r   r      s/     
 &4 1T 1 1 1r)   r   c                $    V ^8  d   QhR\         /# r   tr   )r$   s   "r&   r'   r'     s     6 6c 6r)   c                 N    \         P                  ! R RV 4      P                  4       # )z(?<!^)(?=[A-Z])_)rer   lowerr   s   &r&   r   r     s    66$c1-3355r)   c                $    V ^8  d   QhR\         /# r   r   )r$   s   "r&   r'   r'     s     \ \C \r)   c                 b    R P                  R \        V P                  R4      4       4       4      # )r   c              3   Z   "   T F!  w  rV'       d   VP                  4       MTx  K#  	  R # 5ir|   )
capitalize).0iwords   &  r&   	<genexpr>'snake_to_lower_camel.<locals>.<genexpr>  s"     [CZ4??$t3CZs   )+r   )join	enumeratesplitr   s   &r&   rM   rM     s%    77[9QWWUX\CZ[[[r)   )r   r   ry   rq   r   rU   r   typingr   r   r   google.protobuf.json_formatr   r   livekit.protocol.roomr
   rz   rt   r   r   r4   r;   r@   rE   rh   r   r   rM   r*   r)   r&   <module>r     s     	  	 
  ! * * @ 3  q)##A. %! %! %!P      
   
   6[J [J|@ @F6\r)   