from __future__ import annotations

from collections.abc import Sequence

from pyannote.core import Annotation, SlidingWindowFeature
from torch import device as TorchDevice

from .models import EmbeddingModel, SegmentationModel

class SpeakerDiarizationConfig:
    def __init__(
        self,
        *,
        segmentation: SegmentationModel,
        embedding: EmbeddingModel,
        step: float,
        latency: float,
        device: TorchDevice,
    ) -> None: ...


class SpeakerDiarization:
    def __init__(self, config: SpeakerDiarizationConfig) -> None: ...
    def __call__(self, waveforms: Sequence[SlidingWindowFeature]) -> Sequence[tuple[Annotation, SlidingWindowFeature]]: ...
    def reset(self) -> None: ...
