import typing, abc
from System.ComponentModel import BackgroundWorker, DoWorkEventArgs

class BackgroundAlgorithmInfo(IBackgroundAlgorithmInfo):
    def __init__(self, worker: BackgroundWorker, args: DoWorkEventArgs, percentStart: float, percentEnd: float, userText: str) -> None: ...
    @property
    def Cancel(self) -> None: ...
    @Cancel.setter
    def Cancel(self, value: bool) -> None: ...
    @property
    def CancellationPending(self) -> bool: ...
    def ReportProgress(self, percent: int) -> None: ...


class BackgroundUserState:
    def __init__(self, text: str) -> None: ...
    @property
    def Text(self) -> str: ...
    @Text.setter
    def Text(self, value: str) -> str: ...


class EmptyBackgroundAlgorithmInfo(IBackgroundAlgorithmInfo):
    def __init__(self) -> None: ...
    @property
    def Cancel(self) -> None: ...
    @Cancel.setter
    def Cancel(self, value: bool) -> None: ...
    @property
    def CancellationPending(self) -> bool: ...
    def ReportProgress(self, percent: int) -> None: ...


class IBackgroundAlgorithmInfo(typing.Protocol):
    @property
    def Cancel(self) -> None: ...
    @Cancel.setter
    def Cancel(self, value: bool) -> None: ...
    @property
    def CancellationPending(self) -> bool: ...
    @abc.abstractmethod
    def ReportProgress(self, percent: int) -> None: ...

