from _typeshed import Incomplete

from kafka.metrics.compound_stat import AbstractCompoundStat
from kafka.metrics.stats.sampled_stat import AbstractSampledStat

class BucketSizing:
    CONSTANT: int
    LINEAR: int

class Percentiles(AbstractSampledStat, AbstractCompoundStat):
    bin_scheme: Incomplete
    def __init__(self, size_in_bytes, bucketing, max_val, min_val: float = 0.0, percentiles=None) -> None: ...
    def stats(self): ...
    def value(self, config, now, quantile): ...
    def combine(self, samples, config, now): ...
    def new_sample(self, time_ms): ...
    def update(self, sample, config, value, time_ms) -> None: ...

    class HistogramSample(AbstractSampledStat.Sample):
        histogram: Incomplete
        def __init__(self, scheme, now) -> None: ...
