
    h                        d dl mZ d dlmZmZmZmZ ddlmZ ddlm	Z	m
Z
 g dZ G d d      Z G d	 d
      Z G d d      Zy)    )annotations)ListOptionalSequenceTuple   )frames)ExtensionNameExtensionParameter)	ExtensionClientExtensionFactoryServerExtensionFactoryc                  >    e Zd ZU dZded<   	 dd	 	 	 	 	 ddZd	dZy)
r   z%
    Base class for extensions.

    r
   nameN)max_sizec                   t         )a)  
        Decode an incoming frame.

        Args:
            frame (Frame): incoming frame.
            max_size: maximum payload size in bytes.

        Returns:
            Frame: Decoded frame.

        Raises:
            PayloadTooBig: if decoding the payload exceeds ``max_size``.

        NotImplementedError)selfframer   s      e/var/www/html/retail-simulation-api/retail/lib/python3.12/site-packages/websockets/extensions/base.pydecodezExtension.decode   s
    ( "!    c                    t         )z
        Encode an outgoing frame.

        Args:
            frame (Frame): outgoing frame.

        Returns:
            Frame: Encoded frame.

        r   )r   r   s     r   encodezExtension.encode+   s
     "!r   )r   frames.Framer   zOptional[int]returnr   )r   r   r   r   )__name__
__module____qualname____doc____annotations__r   r    r   r   r   r      s=    
  #'	""  	"
 
","r   r   c                  :    e Zd ZU dZded<   	 ddZ	 	 	 	 	 	 ddZy)	r   z:
    Base class for client-side extension factories.

    r
   r   c                    t         )z
        Build parameters to send to the server for this extension.

        Returns:
            List[ExtensionParameter]: Parameters to send to the server.

        r   )r   s    r   get_request_paramsz)ClientExtensionFactory.get_request_paramsB   s
     "!r   c                    t         )a  
        Process parameters received from the server.

        Args:
            params (Sequence[ExtensionParameter]): parameters received from
                the server for this extension.
            accepted_extensions (Sequence[Extension]): list of previously
                accepted extensions.

        Returns:
            Extension: An extension instance.

        Raises:
            NegotiationError: if parameters aren't acceptable.

        r   r   paramsaccepted_extensionss      r   process_response_paramsz.ClientExtensionFactory.process_response_paramsL   s
    * "!r   N)r   zList[ExtensionParameter])r)   Sequence[ExtensionParameter]r*   Sequence[Extension]r   r   )r   r   r    r!   r"   r&   r+   r#   r   r   r   r   9   s8    
 ""," 1" 
	"r   r   c                  2    e Zd ZU dZded<   	 	 	 	 	 	 	 ddZy)r   z:
    Base class for server-side extension factories.

    r
   r   c                    t         )a  
        Process parameters received from the client.

        Args:
            params (Sequence[ExtensionParameter]): parameters received from
                the client for this extension.
            accepted_extensions (Sequence[Extension]): list of previously
                accepted extensions.

        Returns:
            Tuple[List[ExtensionParameter], Extension]: To accept the offer,
            parameters to send to the client for this extension and an
            extension instance.

        Raises:
            NegotiationError: to reject the offer, if parameters received from
                the client aren't acceptable.

        r   r(   s      r   process_request_paramsz-ServerExtensionFactory.process_request_paramsm   s
    0 "!r   N)r)   r,   r*   r-   r   z*Tuple[List[ExtensionParameter], Extension])r   r   r    r!   r"   r0   r#   r   r   r   r   d   s3    
 "," 1" 
4	"r   r   N)
__future__r   typingr   r   r   r    r	   r
   r   __all__r   r   r   r#   r   r   <module>r5      s<    " 2 2  6 L*" *"Z(" ("V!" !"r   