from typing import Union, List, Tuple
def _mult_gf2(f1: int, f2: int) -> int : ...
def _div_gf2(a: int, b: int) -> int : ...
class _Element(object):
irr_poly: int
def __init__(self, encoded_value: Union[int, bytes]) -> None: ...
def __int__(self) -> int: ...
def encode(self) -> bytes: ...
def __mul__(self, factor: int) -> _Element: ...
def __add__(self, term: _Element) -> _Element: ...
def inverse(self) -> _Element: ...
class Shamir(object):
@staticmethod
def split(k: int, n: int, secret: bytes) -> List[Tuple[int, bytes]]: ...
@staticmethod
def combine(shares: List[Tuple[int, bytes]]) -> bytes: ...