# This file is automatically generated by pyo3_stub_gen
# ruff: noqa: E501, F401, F403, F405

import builtins
import enum
import typing
__all__ = [
    "ArgsResult",
    "BuildFeatures",
    "DetectResult",
    "ScMethod",
    "SmartResult",
    "scene_detect",
    "smart_scene_detect",
]

@typing.final
class ArgsResult:
    @property
    def min_scene_len(self) -> typing.Optional[builtins.int]: ...
    @property
    def max_scene_len(self) -> typing.Optional[builtins.int]: ...
    @property
    def lookahead_distance(self) -> builtins.int: ...
    @property
    def detect_flashes(self) -> builtins.bool: ...
    @property
    def sc_method(self) -> ScMethod: ...
    @property
    def total_frames(self) -> builtins.int: ...

@typing.final
class BuildFeatures:
    @property
    def vapoursynth(self) -> builtins.bool: ...

@typing.final
class DetectResult:
    @property
    def args(self) -> ArgsResult: ...
    def to_list(self) -> builtins.list[builtins.int]:
        r"""
        return a frame list of scene change
        """
    def to_json(self) -> builtins.str:
        r"""
        return a raw json content from av-scenechange
        """

@typing.final
class SmartResult:
    @property
    def args(self) -> ArgsResult: ...
    def to_list(self) -> builtins.list[builtins.int]:
        r"""
        return a list of scene change
        """

@typing.final
class ScMethod(enum.Enum):
    Fast = ...
    Standard = ...
    Noneall = ...

def scene_detect(input: builtins.str, min_scene_len: typing.Optional[builtins.int] = -1, max_scene_len: typing.Optional[builtins.int] = -1, sc_width: typing.Optional[builtins.int] = None, sc_height: typing.Optional[builtins.int] = None, sc_method: ScMethod = ..., progress_template: typing.Optional[builtins.str] = None, detect_flashes: typing.Optional[builtins.bool] = True, lookahead_distance: typing.Optional[builtins.int] = 5) -> DetectResult:
    r"""
    Detect scene changes using av-scenechange and return DetectResult object to
    get scene change result call to_list() function.
    
    Parameters
    ----------
    - **input** Video file path or vapoursynth script file (.vpy, .py) if
      compile with vapoursynth input support.
    
    - **min_scene_len** Minimum scene length in frames. Defaults is the video
      framerate. To disable min scene len pass None to this. -1 is internal
      value means that you will you use default value.
    
    - **max_scene_len** Maximum scene length in frames. Defaults is 10 x video
      framerate, capped at 300. To disable max cene len pass None to this. -1 is
      internal value means that you will you use default value.
    
    - **sc_width** Downscale width for scene detection. Only applies to video
      file inputs.
    
    - **sc_height** Downscale height for scene detection. Only applies to video
      file inputs.
    
    - **sc_method** Scene detection method to use.
    
    - **detect_flashes** Detect flashes option for av-scenechange. Default is
      true. pass None to this will result in True value
    
    - **lookahead_distance** lookahead distance option for av-scenechange.
      Default is 5. pass None to this means that you will you use default value
    
    - **progress_template** Custom progress bar template. See source code for
      details. if you want to disable progress bar pass "" (empty str) value to
      this.
    """

def smart_scene_detect(input: builtins.str, progress_template: typing.Optional[builtins.str] = None) -> SmartResult:
    r"""
    Detect scene change automatically with logic from [xav](https://github.com/emrakyz/xav)
    and return SmartResult object to get scene chaneg result call to_list()
    function.
    
    Parameters
    ----------
    - **input** Video file path or vapoursynth script file (.vpy, .py) if
      compile with vapoursynth input support.
    
    - **progress_template** Custom progress bar template. See source code for
      details. if you want to disable progress bar pass "" (empty str) value to
      this.
    """

