from typing import Callable, Union ReadOnlyBuffer = Union[bytes, bytearray, memoryview] WriteBuffer = Union[bytearray, memoryview] class RsyncError(Exception): pass class Hasher: def __init__(self, which: str, data: ReadOnlyBuffer = b''): ... def update(self, data: ReadOnlyBuffer) -> None: ... def reset(self) -> None: ... def digest(self) -> bytes: ... def hexdigest(self) -> str: ... @property def digest_size(self) -> int: ... @property def block_size(self) -> int: ... @property def name(self) -> str: ... class Patcher: def __init__(self, expected_input_size: int = 0): ... def signature_header(self, output: WriteBuffer) -> None: ... def sign_block(self, block: ReadOnlyBuffer, output: WriteBuffer) -> None: ... def apply_delta_data(self, data: ReadOnlyBuffer, read: Callable[[int, WriteBuffer], int], write: Callable[[ReadOnlyBuffer], None]) -> None: ... def finish_delta_data(self) -> None: ...