"""
Python module generated from Java source file com.google.common.hash.AbstractStreamingHashFunction

Java source file obtained from artifact guava version 21.0

Because this Python module is automatically generated, it may contain errors
and/or code that cannot be parsed. Please report these issues at
https://github.com/magicmq/docs-translator/issues
"""
from com.google.common.base import Preconditions
from com.google.common.hash import *
from com.google.errorprone.annotations import CanIgnoreReturnValue
from java.nio.charset import Charset
from typing import Any, Callable, Iterable, Tuple


class AbstractStreamingHashFunction(HashFunction):
    """
    Skeleton implementation of HashFunction. Provides default implementations which invokes
    the appropriate method on .newHasher(), then return the result of Hasher.hash.
    
    Invocations of .newHasher(int) also delegate to .newHasher(), ignoring
    the expected input size parameter.

    Author(s)
    - Kevin Bourrillion
    """

    def hashObject(self, instance: "T", funnel: "Funnel"["T"]) -> "HashCode":
        ...


    def hashUnencodedChars(self, input: "CharSequence") -> "HashCode":
        ...


    def hashString(self, input: "CharSequence", charset: "Charset") -> "HashCode":
        ...


    def hashInt(self, input: int) -> "HashCode":
        ...


    def hashLong(self, input: int) -> "HashCode":
        ...


    def hashBytes(self, input: list[int]) -> "HashCode":
        ...


    def hashBytes(self, input: list[int], off: int, len: int) -> "HashCode":
        ...


    def newHasher(self, expectedInputSize: int) -> "Hasher":
        ...
