
    E#i                    ^    S r SSKJr  SSKJrJr  SSKJr  SSKJ	r	  SSK
Jr   " S	 S
\5      rg)z)Module with interfaces for point classes.    )annotations)ABCabstractmethod)Any   )EllipticCurveTypes   )	DataBytesc                     \ rS rSrSr\\    SS j5       5       r\\      SS j5       5       r\	\SS j5       5       r
\	\SS j5       5       r\SS j5       r\SS j5       r\SS	 j5       r\SS
 j5       r\SS j5       r\SS j5       r\    SS j5       r\    SS j5       r\    SS j5       r\    SS j5       rSrg)IPoint!   z-Interface for a generic elliptic curve point.c                    g)zs
Construct class from point bytes.

Args:
    point_bytes (bytes): Point bytes

Returns:
    IPoint: IPoint object
N )clspoint_bytess     h/home/james-whalen/.local/lib/python3.13/site-packages/ccxt/static_dependencies/bip/ecc/common/ipoint.py	FromBytesIPoint.FromBytes$           c                    g)z
Construct class from point coordinates.

Args:
    x (int): X coordinate of the point
    y (int): Y coordinate of the point

Returns:
    IPoint: IPoint object
Nr   )r   xys      r   FromCoordinatesIPoint.FromCoordinates2   r   r   c                     g)zS
Get the elliptic curve type.

Returns:
   EllipticCurveTypes: Elliptic curve type
Nr   r   r   r   	CurveTypeIPoint.CurveTypeB   r   r   c                     g)zD
Get the coordinate length.

Returns:
   int: Coordinate key length
Nr   r   r   r   CoordinateLengthIPoint.CoordinateLengthL   r   r   c                    g)z@
Get the underlying object.

Returns:
   Any: Underlying object
Nr   selfs    r   UnderlyingObjectIPoint.UnderlyingObjectV   r   r   c                    g)zP
Return X coordinate of the point.

Returns:
    int: X coordinate of the point
Nr   r#   s    r   XIPoint.X_   r   r   c                    g)zP
Return Y coordinate of the point.

Returns:
    int: Y coordinate of the point
Nr   r#   s    r   YIPoint.Yh   r   r   c                    g)zN
Return the point raw bytes.

Returns:
    DataBytes object: DataBytes object
Nr   r#   s    r   Raw
IPoint.Rawq   r   r   c                    g)zV
Return the encoded point raw bytes.

Returns:
    DataBytes object: DataBytes object
Nr   r#   s    r   
RawEncodedIPoint.RawEncodedz   r   r   c                    g)zV
Return the decoded point raw bytes.

Returns:
    DataBytes object: DataBytes object
Nr   r#   s    r   
RawDecodedIPoint.RawDecoded   r   r   c                    gzx
Add point to another point.

Args:
    point (IPoint object): IPoint object

Returns:
    IPoint object: IPoint object
Nr   r$   points     r   __add__IPoint.__add__   r   r   c                    gr7   r   r8   s     r   __radd__IPoint.__radd__   r   r   c                    gzh
Multiply point by a scalar.

Args:
    scalar (int): scalar

Returns:
    IPoint object: IPoint object
Nr   r$   scalars     r   __mul__IPoint.__mul__   r   r   c                    gr@   r   rA   s     r   __rmul__IPoint.__rmul__   r   r   r   N)r   bytesreturnr   )r   intr   rJ   rI   r   )rI   r   )rI   rJ   )rI   r   )rI   r
   )r9   r   rI   r   )rB   rJ   rI   r   )__name__
__module____qualname____firstlineno____doc__classmethodr   r   r   staticmethodr   r    r%   r(   r+   r.   r1   r4   r:   r=   rC   rF   __static_attributes__r   r   r   r   r   !   s   7
$
)/
  
 #)                     

"(
 
 

#)
 
 

 &
 
 

!'
 
r   r   N)rO   
__future__r   abcr   r   typingr   curve.elliptic_curve_typesr   
utils.miscr
   r   r   r   r   <module>rX      s)   * 0 # #  ; #]S ]r   