# This file is auto-generated. DO NOT EDIT.
# ruff: noqa
# flake8: noqa
# fmt: off
# isort: skip_file

from collections.abc import Buffer, Callable, Iterable, Iterator, Mapping, MutableMapping
from concurrent.futures import Future
from ctypes import c_void_p
from enum import Enum, IntEnum, IntFlag
from fractions import Fraction
from inspect import Signature
from logging import Handler, LogRecord, StreamHandler
from types import MappingProxyType, TracebackType
from typing import Any, Concatenate, Final, IO, Literal, NamedTuple, Protocol, Self, SupportsFloat, SupportsIndex, SupportsInt, TextIO, TypedDict, final, overload
from typing_extensions import deprecated
from weakref import ReferenceType


__all__ = [
    "CHROMA_BOTTOM",
    "CHROMA_BOTTOM_LEFT",
    "CHROMA_CENTER",
    "CHROMA_LEFT",
    "CHROMA_TOP",
    "CHROMA_TOP_LEFT",
    "FIELD_BOTTOM",
    "FIELD_PROGRESSIVE",
    "FIELD_TOP",
    "FLOAT",
    "GRAY",
    "GRAY8",
    "GRAY9",
    "GRAY10",
    "GRAY12",
    "GRAY14",
    "GRAY16",
    "GRAY32",
    "GRAYH",
    "GRAYS",
    "INTEGER",
    "NONE",
    "RANGE_FULL",
    "RANGE_LIMITED",
    "RGB",
    "RGB24",
    "RGB27",
    "RGB30",
    "RGB36",
    "RGB42",
    "RGB48",
    "RGBH",
    "RGBS",
    "YUV",
    "YUV410P8",
    "YUV411P8",
    "YUV420P8",
    "YUV420P9",
    "YUV420P10",
    "YUV420P12",
    "YUV420P14",
    "YUV420P16",
    "YUV420PH",
    "YUV420PS",
    "YUV422P8",
    "YUV422P9",
    "YUV422P10",
    "YUV422P12",
    "YUV422P14",
    "YUV422P16",
    "YUV422PH",
    "YUV422PS",
    "YUV440P8",
    "YUV444P8",
    "YUV444P9",
    "YUV444P10",
    "YUV444P12",
    "YUV444P14",
    "YUV444P16",
    "YUV444PH",
    "YUV444PS",
    "clear_output",
    "clear_outputs",
    "core",
    "get_output",
    "get_outputs",
]

type _AnyStr = str | bytes | bytearray
type _IntLike = SupportsInt | SupportsIndex | Buffer
type _FloatLike = SupportsFloat | SupportsIndex | Buffer

type _VSValueSingle = (
    int | float | _AnyStr | RawFrame | VideoFrame | AudioFrame | RawNode | VideoNode | AudioNode | Callable[..., Any]
)

type _VSValueIterable = (
    _SupportsIter[_IntLike]
    | _SupportsIter[_FloatLike]
    | _SupportsIter[_AnyStr]
    | _SupportsIter[RawFrame]
    | _SupportsIter[VideoFrame]
    | _SupportsIter[AudioFrame]
    | _SupportsIter[RawNode]
    | _SupportsIter[VideoNode]
    | _SupportsIter[AudioNode]
    | _SupportsIter[Callable[..., Any]]
    | _GetItemIterable[_IntLike]
    | _GetItemIterable[_FloatLike]
    | _GetItemIterable[_AnyStr]
    | _GetItemIterable[RawFrame]
    | _GetItemIterable[VideoFrame]
    | _GetItemIterable[AudioFrame]
    | _GetItemIterable[RawNode]
    | _GetItemIterable[VideoNode]
    | _GetItemIterable[AudioNode]
    | _GetItemIterable[Callable[..., Any]]
)
type _VSValue = _VSValueSingle | _VSValueIterable

class _SupportsIter[T](Protocol):
    def __iter__(self) -> Iterator[T]: ...

class _SequenceLike[T](Protocol):
    def __iter__(self) -> Iterator[T]: ...
    def __len__(self) -> int: ...

class _GetItemIterable[T](Protocol):
    def __getitem__(self, i: SupportsIndex, /) -> T: ...

class _SupportsKeysAndGetItem[KT, VT](Protocol):
    def __getitem__(self, key: KT, /) -> VT: ...
    def keys(self) -> Iterable[KT]: ...

class _VSCallback(Protocol):
    def __call__(self, *args: Any, **kwargs: Any) -> _VSValue: ...

# Known callback signatures
# _VSCallback_{plugin_namespace}_{Function_name}_{parameter_name}
class _VSCallback_akarin_PropExpr_dict(Protocol):
    def __call__(
        self,
    ) -> Mapping[
        str,
        _IntLike
        | _FloatLike
        | _AnyStr
        | _SupportsIter[_IntLike]
        | _SupportsIter[_AnyStr]
        | _SupportsIter[_FloatLike]
        | _GetItemIterable[_IntLike]
        | _GetItemIterable[_FloatLike]
        | _GetItemIterable[_AnyStr],
    ]: ...

class _VSCallback_descale_Decustom_custom_kernel(Protocol):
    def __call__(self, *, x: float) -> _FloatLike: ...

class _VSCallback_descale_ScaleCustom_custom_kernel(Protocol):
    def __call__(self, *, x: float) -> _FloatLike: ...

class _VSCallback_std_FrameEval_eval_0(Protocol):
    def __call__(self, *, n: int) -> VideoNode: ...

class _VSCallback_std_FrameEval_eval_1(Protocol):
    def __call__(self, *, n: int, f: VideoFrame) -> VideoNode: ...

class _VSCallback_std_FrameEval_eval_2(Protocol):
    def __call__(self, *, n: int, f: list[VideoFrame]) -> VideoNode: ...

class _VSCallback_std_FrameEval_eval_3(Protocol):
    def __call__(self, *, n: int, f: VideoFrame | list[VideoFrame]) -> VideoNode: ...

type _VSCallback_std_FrameEval_eval = (  # noqa: PYI047
    _VSCallback_std_FrameEval_eval_0
    | _VSCallback_std_FrameEval_eval_1
    | _VSCallback_std_FrameEval_eval_2
    | _VSCallback_std_FrameEval_eval_3
)

class _VSCallback_std_Lut_function_0(Protocol):
    def __call__(self, *, x: int) -> _IntLike: ...

class _VSCallback_std_Lut_function_1(Protocol):
    def __call__(self, *, x: float) -> _FloatLike: ...

type _VSCallback_std_Lut_function = _VSCallback_std_Lut_function_0 | _VSCallback_std_Lut_function_1  # noqa: PYI047

class _VSCallback_std_Lut2_function_0(Protocol):
    def __call__(self, *, x: int, y: int) -> _IntLike: ...

class _VSCallback_std_Lut2_function_1(Protocol):
    def __call__(self, *, x: float, y: float) -> _FloatLike: ...

type _VSCallback_std_Lut2_function = _VSCallback_std_Lut2_function_0 | _VSCallback_std_Lut2_function_1  # noqa: PYI047

class _VSCallback_std_ModifyFrame_selector_0(Protocol):
    def __call__(self, *, n: int, f: VideoFrame) -> VideoFrame: ...

class _VSCallback_std_ModifyFrame_selector_1(Protocol):
    def __call__(self, *, n: int, f: list[VideoFrame]) -> VideoFrame: ...

class _VSCallback_std_ModifyFrame_selector_2(Protocol):
    def __call__(self, *, n: int, f: VideoFrame | list[VideoFrame]) -> VideoFrame: ...

type _VSCallback_std_ModifyFrame_selector = (  # noqa: PYI047
    _VSCallback_std_ModifyFrame_selector_0
    | _VSCallback_std_ModifyFrame_selector_1
    | _VSCallback_std_ModifyFrame_selector_2
)

class _VSCallback_resize2_Custom_custom_kernel(Protocol):
    def __call__(self, *, x: float) -> _FloatLike: ...

class LogHandle: ...

class PythonVSScriptLoggingBridge(Handler):
    def __init__(self, parent: StreamHandler[TextIO], level: int | str = ...) -> None: ...
    def emit(self, record: LogRecord) -> None: ...

class Error(Exception):
    value: Any
    def __init__(self, value: Any) -> None: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...

# Environment SubSystem
@final
class EnvironmentData: ...

class EnvironmentPolicy:
    def on_policy_registered(self, special_api: EnvironmentPolicyAPI) -> None: ...
    def on_policy_cleared(self) -> None: ...
    def get_current_environment(self) -> EnvironmentData | None: ...
    def set_environment(self, environment: EnvironmentData | None) -> EnvironmentData | None: ...
    def is_alive(self, environment: EnvironmentData) -> bool: ...

@final
class StandaloneEnvironmentPolicy:
    def on_policy_registered(self, api: EnvironmentPolicyAPI) -> None: ...
    def on_policy_cleared(self) -> None: ...
    def get_current_environment(self) -> EnvironmentData: ...
    def set_environment(self, environment: EnvironmentData | None) -> EnvironmentData: ...
    def is_alive(self, environment: EnvironmentData) -> bool: ...
    def _on_log_message(self, level: MessageType, msg: str) -> None: ...

@final
class VSScriptEnvironmentPolicy:
    def on_policy_registered(self, policy_api: EnvironmentPolicyAPI) -> None: ...
    def on_policy_cleared(self) -> None: ...
    def get_current_environment(self) -> EnvironmentData | None: ...
    def set_environment(self, environment: EnvironmentData | None) -> EnvironmentData | None: ...
    def is_alive(self, environment: EnvironmentData) -> bool: ...

@final
class EnvironmentPolicyAPI:
    def wrap_environment(self, environment_data: EnvironmentData) -> Environment: ...
    def create_environment(self, flags: _IntLike = 0) -> EnvironmentData: ...
    def set_logger(self, env: EnvironmentData, logger: Callable[[int, str], None]) -> None: ...
    def get_vapoursynth_api(self, version: int) -> c_void_p: ...
    def get_core_ptr(self, environment_data: EnvironmentData) -> c_void_p: ...
    def destroy_environment(self, env: EnvironmentData) -> None: ...
    def unregister_policy(self) -> None: ...

def register_policy(policy: EnvironmentPolicy) -> None: ...
def has_policy() -> bool: ...
def register_on_destroy(callback: Callable[..., None]) -> None: ...
def unregister_on_destroy(callback: Callable[..., None]) -> None: ...
def _try_enable_introspection(version: int | None = None) -> bool: ...
@final
class _FastManager:
    def __enter__(self) -> None: ...
    def __exit__(self, *_: object) -> None: ...

class Environment:
    env: Final[ReferenceType[EnvironmentData]]
    def __repr__(self) -> str: ...
    @overload
    def __eq__(self, other: Environment) -> bool: ...
    @overload
    def __eq__(self, other: object) -> bool: ...
    @property
    def alive(self) -> bool: ...
    @property
    def single(self) -> bool: ...
    @classmethod
    def is_single(cls) -> bool: ...
    @property
    def env_id(self) -> int: ...
    @property
    def active(self) -> bool: ...
    def copy(self) -> Self: ...
    def use(self) -> _FastManager: ...

class Local:
    def __getattr__(self, key: str) -> Any: ...
    def __setattr__(self, key: str, value: Any) -> None: ...
    def __delattr__(self, key: str) -> None: ...

def get_current_environment() -> Environment: ...

class CoreTimings:
    def __repr__(self) -> str: ...
    def __str__(self) -> str: ...
    @property
    def enabled(self) -> bool: ...
    @enabled.setter
    def enabled(self, enabled: bool) -> bool: ...
    @property
    def freed_nodes(self) -> bool: ...
    @freed_nodes.setter
    def freed_nodes(self, value: Literal[0]) -> bool: ...

# VapourSynth & plugin versioning

class VapourSynthVersion(NamedTuple):
    release_major: int
    release_minor: int
    def __str__(self) -> str: ...

class VapourSynthAPIVersion(NamedTuple):
    api_major: int
    api_minor: int
    def __str__(self) -> str: ...

__version__: VapourSynthVersion
__api_version__: VapourSynthAPIVersion

# Vapoursynth constants from vapoursynth.pyx

class MediaType(IntEnum):
    VIDEO = ...
    AUDIO = ...

VIDEO: Literal[MediaType.VIDEO]
AUDIO: Literal[MediaType.AUDIO]

class ColorFamily(IntEnum):
    UNDEFINED = ...
    GRAY = ...
    RGB = ...
    YUV = ...

UNDEFINED: Literal[ColorFamily.UNDEFINED]
GRAY: Literal[ColorFamily.GRAY]
RGB: Literal[ColorFamily.RGB]
YUV: Literal[ColorFamily.YUV]

class SampleType(IntEnum):
    INTEGER = ...
    FLOAT = ...

INTEGER: Literal[SampleType.INTEGER]
FLOAT: Literal[SampleType.FLOAT]

class PresetVideoFormat(IntEnum):
    NONE = ...

    GRAY8 = ...
    GRAY9 = ...
    GRAY10 = ...
    GRAY12 = ...
    GRAY14 = ...
    GRAY16 = ...
    GRAY32 = ...

    GRAYH = ...
    GRAYS = ...

    YUV420P8 = ...
    YUV422P8 = ...
    YUV444P8 = ...
    YUV410P8 = ...
    YUV411P8 = ...
    YUV440P8 = ...

    YUV420P9 = ...
    YUV422P9 = ...
    YUV444P9 = ...

    YUV420P10 = ...
    YUV422P10 = ...
    YUV444P10 = ...

    YUV420P12 = ...
    YUV422P12 = ...
    YUV444P12 = ...

    YUV420P14 = ...
    YUV422P14 = ...
    YUV444P14 = ...

    YUV420P16 = ...
    YUV422P16 = ...
    YUV444P16 = ...

    YUV420PH = ...
    YUV420PS = ...

    YUV422PH = ...
    YUV422PS = ...

    YUV444PH = ...
    YUV444PS = ...

    RGB24 = ...
    RGB27 = ...
    RGB30 = ...
    RGB36 = ...
    RGB42 = ...
    RGB48 = ...

    RGBH = ...
    RGBS = ...

NONE: Literal[PresetVideoFormat.NONE]

GRAY8: Literal[PresetVideoFormat.GRAY8]
GRAY9: Literal[PresetVideoFormat.GRAY9]
GRAY10: Literal[PresetVideoFormat.GRAY10]
GRAY12: Literal[PresetVideoFormat.GRAY12]
GRAY14: Literal[PresetVideoFormat.GRAY14]
GRAY16: Literal[PresetVideoFormat.GRAY16]
GRAY32: Literal[PresetVideoFormat.GRAY32]

GRAYH: Literal[PresetVideoFormat.GRAYH]
GRAYS: Literal[PresetVideoFormat.GRAYS]

YUV420P8: Literal[PresetVideoFormat.YUV420P8]
YUV422P8: Literal[PresetVideoFormat.YUV422P8]
YUV444P8: Literal[PresetVideoFormat.YUV444P8]
YUV410P8: Literal[PresetVideoFormat.YUV410P8]
YUV411P8: Literal[PresetVideoFormat.YUV411P8]
YUV440P8: Literal[PresetVideoFormat.YUV440P8]

YUV420P9: Literal[PresetVideoFormat.YUV420P9]
YUV422P9: Literal[PresetVideoFormat.YUV422P9]
YUV444P9: Literal[PresetVideoFormat.YUV444P9]

YUV420P10: Literal[PresetVideoFormat.YUV420P10]
YUV422P10: Literal[PresetVideoFormat.YUV422P10]
YUV444P10: Literal[PresetVideoFormat.YUV444P10]

YUV420P12: Literal[PresetVideoFormat.YUV420P12]
YUV422P12: Literal[PresetVideoFormat.YUV422P12]
YUV444P12: Literal[PresetVideoFormat.YUV444P12]

YUV420P14: Literal[PresetVideoFormat.YUV420P14]
YUV422P14: Literal[PresetVideoFormat.YUV422P14]
YUV444P14: Literal[PresetVideoFormat.YUV444P14]

YUV420P16: Literal[PresetVideoFormat.YUV420P16]
YUV422P16: Literal[PresetVideoFormat.YUV422P16]
YUV444P16: Literal[PresetVideoFormat.YUV444P16]

YUV420PH: Literal[PresetVideoFormat.YUV420PH]
YUV420PS: Literal[PresetVideoFormat.YUV420PS]

YUV422PH: Literal[PresetVideoFormat.YUV422PH]
YUV422PS: Literal[PresetVideoFormat.YUV422PS]

YUV444PH: Literal[PresetVideoFormat.YUV444PH]
YUV444PS: Literal[PresetVideoFormat.YUV444PS]

RGB24: Literal[PresetVideoFormat.RGB24]
RGB27: Literal[PresetVideoFormat.RGB27]
RGB30: Literal[PresetVideoFormat.RGB30]
RGB36: Literal[PresetVideoFormat.RGB36]
RGB42: Literal[PresetVideoFormat.RGB42]
RGB48: Literal[PresetVideoFormat.RGB48]

RGBH: Literal[PresetVideoFormat.RGBH]
RGBS: Literal[PresetVideoFormat.RGBS]

class FilterMode(IntEnum):
    PARALLEL = ...
    PARALLEL_REQUESTS = ...
    UNORDERED = ...
    FRAME_STATE = ...

PARALLEL: Literal[FilterMode.PARALLEL]
PARALLEL_REQUESTS: Literal[FilterMode.PARALLEL_REQUESTS]
UNORDERED: Literal[FilterMode.UNORDERED]
FRAME_STATE: Literal[FilterMode.FRAME_STATE]

class AudioChannels(IntEnum):
    FRONT_LEFT = ...
    FRONT_RIGHT = ...
    FRONT_CENTER = ...
    LOW_FREQUENCY = ...
    BACK_LEFT = ...
    BACK_RIGHT = ...
    FRONT_LEFT_OF_CENTER = ...
    FRONT_RIGHT_OF_CENTER = ...
    BACK_CENTER = ...
    SIDE_LEFT = ...
    SIDE_RIGHT = ...
    TOP_CENTER = ...
    TOP_FRONT_LEFT = ...
    TOP_FRONT_CENTER = ...
    TOP_FRONT_RIGHT = ...
    TOP_BACK_LEFT = ...
    TOP_BACK_CENTER = ...
    TOP_BACK_RIGHT = ...
    STEREO_LEFT = ...
    STEREO_RIGHT = ...
    WIDE_LEFT = ...
    WIDE_RIGHT = ...
    SURROUND_DIRECT_LEFT = ...
    SURROUND_DIRECT_RIGHT = ...
    LOW_FREQUENCY2 = ...

FRONT_LEFT: Literal[AudioChannels.FRONT_LEFT]
FRONT_RIGHT: Literal[AudioChannels.FRONT_RIGHT]
FRONT_CENTER: Literal[AudioChannels.FRONT_CENTER]
LOW_FREQUENCY: Literal[AudioChannels.LOW_FREQUENCY]
BACK_LEFT: Literal[AudioChannels.BACK_LEFT]
BACK_RIGHT: Literal[AudioChannels.BACK_RIGHT]
FRONT_LEFT_OF_CENTER: Literal[AudioChannels.FRONT_LEFT_OF_CENTER]
FRONT_RIGHT_OF_CENTER: Literal[AudioChannels.FRONT_RIGHT_OF_CENTER]
BACK_CENTER: Literal[AudioChannels.BACK_CENTER]
SIDE_LEFT: Literal[AudioChannels.SIDE_LEFT]
SIDE_RIGHT: Literal[AudioChannels.SIDE_RIGHT]
TOP_CENTER: Literal[AudioChannels.TOP_CENTER]
TOP_FRONT_LEFT: Literal[AudioChannels.TOP_FRONT_LEFT]
TOP_FRONT_CENTER: Literal[AudioChannels.TOP_FRONT_CENTER]
TOP_FRONT_RIGHT: Literal[AudioChannels.TOP_FRONT_RIGHT]
TOP_BACK_LEFT: Literal[AudioChannels.TOP_BACK_LEFT]
TOP_BACK_CENTER: Literal[AudioChannels.TOP_BACK_CENTER]
TOP_BACK_RIGHT: Literal[AudioChannels.TOP_BACK_RIGHT]
STEREO_LEFT: Literal[AudioChannels.STEREO_LEFT]
STEREO_RIGHT: Literal[AudioChannels.STEREO_RIGHT]
WIDE_LEFT: Literal[AudioChannels.WIDE_LEFT]
WIDE_RIGHT: Literal[AudioChannels.WIDE_RIGHT]
SURROUND_DIRECT_LEFT: Literal[AudioChannels.SURROUND_DIRECT_LEFT]
SURROUND_DIRECT_RIGHT: Literal[AudioChannels.SURROUND_DIRECT_RIGHT]
LOW_FREQUENCY2: Literal[AudioChannels.LOW_FREQUENCY2]

class MessageType(IntFlag):
    MESSAGE_TYPE_DEBUG = ...
    MESSAGE_TYPE_INFORMATION = ...
    MESSAGE_TYPE_WARNING = ...
    MESSAGE_TYPE_CRITICAL = ...
    MESSAGE_TYPE_FATAL = ...

MESSAGE_TYPE_DEBUG: Literal[MessageType.MESSAGE_TYPE_DEBUG]
MESSAGE_TYPE_INFORMATION: Literal[MessageType.MESSAGE_TYPE_INFORMATION]
MESSAGE_TYPE_WARNING: Literal[MessageType.MESSAGE_TYPE_WARNING]
MESSAGE_TYPE_CRITICAL: Literal[MessageType.MESSAGE_TYPE_CRITICAL]
MESSAGE_TYPE_FATAL: Literal[MessageType.MESSAGE_TYPE_FATAL]

class CoreCreationFlags(IntFlag):
    ENABLE_GRAPH_INSPECTION = ...
    DISABLE_AUTO_LOADING = ...
    DISABLE_LIBRARY_UNLOADING = ...

ENABLE_GRAPH_INSPECTION: Literal[CoreCreationFlags.ENABLE_GRAPH_INSPECTION]
DISABLE_AUTO_LOADING: Literal[CoreCreationFlags.DISABLE_AUTO_LOADING]
DISABLE_LIBRARY_UNLOADING: Literal[CoreCreationFlags.DISABLE_LIBRARY_UNLOADING]

# Vapoursynth constants from vsconstants.pyd

class ColorRange(IntEnum):
    RANGE_FULL = ...
    RANGE_LIMITED = ...

RANGE_FULL: Literal[ColorRange.RANGE_FULL]
RANGE_LIMITED: Literal[ColorRange.RANGE_LIMITED]

class ChromaLocation(IntEnum):
    CHROMA_LEFT = ...
    CHROMA_CENTER = ...
    CHROMA_TOP_LEFT = ...
    CHROMA_TOP = ...
    CHROMA_BOTTOM_LEFT = ...
    CHROMA_BOTTOM = ...

CHROMA_LEFT: Literal[ChromaLocation.CHROMA_LEFT]
CHROMA_CENTER: Literal[ChromaLocation.CHROMA_CENTER]
CHROMA_TOP_LEFT: Literal[ChromaLocation.CHROMA_TOP_LEFT]
CHROMA_TOP: Literal[ChromaLocation.CHROMA_TOP]
CHROMA_BOTTOM_LEFT: Literal[ChromaLocation.CHROMA_BOTTOM_LEFT]
CHROMA_BOTTOM: Literal[ChromaLocation.CHROMA_BOTTOM]

class FieldBased(IntEnum):
    FIELD_PROGRESSIVE = ...
    FIELD_TOP = ...
    FIELD_BOTTOM = ...

FIELD_PROGRESSIVE: Literal[FieldBased.FIELD_PROGRESSIVE]
FIELD_TOP: Literal[FieldBased.FIELD_TOP]
FIELD_BOTTOM: Literal[FieldBased.FIELD_BOTTOM]

class MatrixCoefficients(IntEnum):
    MATRIX_RGB = ...
    MATRIX_BT709 = ...
    MATRIX_UNSPECIFIED = ...
    MATRIX_FCC = ...
    MATRIX_BT470_BG = ...
    MATRIX_ST170_M = ...
    MATRIX_ST240_M = ...
    MATRIX_YCGCO = ...
    MATRIX_BT2020_NCL = ...
    MATRIX_BT2020_CL = ...
    MATRIX_CHROMATICITY_DERIVED_NCL = ...
    MATRIX_CHROMATICITY_DERIVED_CL = ...
    MATRIX_ICTCP = ...

MATRIX_RGB: Literal[MatrixCoefficients.MATRIX_RGB]
MATRIX_BT709: Literal[MatrixCoefficients.MATRIX_BT709]
MATRIX_UNSPECIFIED: Literal[MatrixCoefficients.MATRIX_UNSPECIFIED]
MATRIX_FCC: Literal[MatrixCoefficients.MATRIX_FCC]
MATRIX_BT470_BG: Literal[MatrixCoefficients.MATRIX_BT470_BG]
MATRIX_ST170_M: Literal[MatrixCoefficients.MATRIX_ST170_M]
MATRIX_ST240_M: Literal[MatrixCoefficients.MATRIX_ST240_M]
MATRIX_YCGCO: Literal[MatrixCoefficients.MATRIX_YCGCO]
MATRIX_BT2020_NCL: Literal[MatrixCoefficients.MATRIX_BT2020_NCL]
MATRIX_BT2020_CL: Literal[MatrixCoefficients.MATRIX_BT2020_CL]
MATRIX_CHROMATICITY_DERIVED_NCL: Literal[MatrixCoefficients.MATRIX_CHROMATICITY_DERIVED_NCL]
MATRIX_CHROMATICITY_DERIVED_CL: Literal[MatrixCoefficients.MATRIX_CHROMATICITY_DERIVED_CL]
MATRIX_ICTCP: Literal[MatrixCoefficients.MATRIX_ICTCP]

class TransferCharacteristics(IntEnum):
    TRANSFER_BT709 = ...
    TRANSFER_UNSPECIFIED = ...
    TRANSFER_BT470_M = ...
    TRANSFER_BT470_BG = ...
    TRANSFER_BT601 = ...
    TRANSFER_ST240_M = ...
    TRANSFER_LINEAR = ...
    TRANSFER_LOG_100 = ...
    TRANSFER_LOG_316 = ...
    TRANSFER_IEC_61966_2_4 = ...
    TRANSFER_IEC_61966_2_1 = ...
    TRANSFER_BT2020_10 = ...
    TRANSFER_BT2020_12 = ...
    TRANSFER_ST2084 = ...
    TRANSFER_ST428 = ...
    TRANSFER_ARIB_B67 = ...

TRANSFER_BT709: Literal[TransferCharacteristics.TRANSFER_BT709]
TRANSFER_UNSPECIFIED: Literal[TransferCharacteristics.TRANSFER_UNSPECIFIED]
TRANSFER_BT470_M: Literal[TransferCharacteristics.TRANSFER_BT470_M]
TRANSFER_BT470_BG: Literal[TransferCharacteristics.TRANSFER_BT470_BG]
TRANSFER_BT601: Literal[TransferCharacteristics.TRANSFER_BT601]
TRANSFER_ST240_M: Literal[TransferCharacteristics.TRANSFER_ST240_M]
TRANSFER_LINEAR: Literal[TransferCharacteristics.TRANSFER_LINEAR]
TRANSFER_LOG_100: Literal[TransferCharacteristics.TRANSFER_LOG_100]
TRANSFER_LOG_316: Literal[TransferCharacteristics.TRANSFER_LOG_316]
TRANSFER_IEC_61966_2_4: Literal[TransferCharacteristics.TRANSFER_IEC_61966_2_4]
TRANSFER_IEC_61966_2_1: Literal[TransferCharacteristics.TRANSFER_IEC_61966_2_1]
TRANSFER_BT2020_10: Literal[TransferCharacteristics.TRANSFER_BT2020_10]
TRANSFER_BT2020_12: Literal[TransferCharacteristics.TRANSFER_BT2020_12]
TRANSFER_ST2084: Literal[TransferCharacteristics.TRANSFER_ST2084]
TRANSFER_ST428: Literal[TransferCharacteristics.TRANSFER_ST428]
TRANSFER_ARIB_B67: Literal[TransferCharacteristics.TRANSFER_ARIB_B67]

class ColorPrimaries(IntEnum):
    PRIMARIES_BT709 = ...
    PRIMARIES_UNSPECIFIED = ...
    PRIMARIES_BT470_M = ...
    PRIMARIES_BT470_BG = ...
    PRIMARIES_ST170_M = ...
    PRIMARIES_ST240_M = ...
    PRIMARIES_FILM = ...
    PRIMARIES_BT2020 = ...
    PRIMARIES_ST428 = ...
    PRIMARIES_ST431_2 = ...
    PRIMARIES_ST432_1 = ...
    PRIMARIES_EBU3213_E = ...

PRIMARIES_BT709: Literal[ColorPrimaries.PRIMARIES_BT709]
PRIMARIES_UNSPECIFIED: Literal[ColorPrimaries.PRIMARIES_UNSPECIFIED]
PRIMARIES_BT470_M: Literal[ColorPrimaries.PRIMARIES_BT470_M]
PRIMARIES_BT470_BG: Literal[ColorPrimaries.PRIMARIES_BT470_BG]
PRIMARIES_ST170_M: Literal[ColorPrimaries.PRIMARIES_ST170_M]
PRIMARIES_ST240_M: Literal[ColorPrimaries.PRIMARIES_ST240_M]
PRIMARIES_FILM: Literal[ColorPrimaries.PRIMARIES_FILM]
PRIMARIES_BT2020: Literal[ColorPrimaries.PRIMARIES_BT2020]
PRIMARIES_ST428: Literal[ColorPrimaries.PRIMARIES_ST428]
PRIMARIES_ST431_2: Literal[ColorPrimaries.PRIMARIES_ST431_2]
PRIMARIES_ST432_1: Literal[ColorPrimaries.PRIMARIES_ST432_1]
PRIMARIES_EBU3213_E: Literal[ColorPrimaries.PRIMARIES_EBU3213_E]

class _VideoFormatDict(TypedDict):
    id: int
    name: str
    color_family: ColorFamily
    sample_type: SampleType
    bits_per_sample: Literal[
        8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32
    ]
    bytes_per_sample: int
    subsampling_w: Literal[0, 1, 2, 3, 4]
    subsampling_h: Literal[0, 1, 2, 3, 4]
    num_planes: Literal[1, 3]

class VideoFormat:
    id: Final[int]
    name: Final[str]
    color_family: Final[ColorFamily]
    sample_type: Final[SampleType]
    bits_per_sample: Final[
        Literal[8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32]
    ]
    bytes_per_sample: Final[int]
    subsampling_w: Final[Literal[0, 1, 2, 3, 4]]
    subsampling_h: Final[Literal[0, 1, 2, 3, 4]]
    num_planes: Final[Literal[1, 3]]
    def __repr__(self) -> str: ...
    def __str__(self) -> str: ...
    def __eq__(self, other: object) -> bool: ...
    def __hash__(self) -> int: ...
    def __int__(self) -> int: ...
    def replace(
        self,
        *,
        color_family: ColorFamily = ...,
        sample_type: SampleType = ...,
        bits_per_sample: _IntLike = ...,
        subsampling_w: _IntLike = ...,
        subsampling_h: _IntLike = ...,
    ) -> Self: ...
    def _as_dict(self) -> _VideoFormatDict: ...

# Behave like a Collection
class ChannelLayout(int):
    def __repr__(self) -> str: ...
    def __str__(self) -> str: ...
    def __contains__(self, layout: AudioChannels) -> bool: ...
    def __iter__(self) -> Iterator[AudioChannels]: ...
    def __len__(self) -> int: ...

type _PropValue = (
    int
    | float
    | str
    | bytes
    | RawFrame
    | VideoFrame
    | AudioFrame
    | RawNode
    | VideoNode
    | AudioNode
    | Callable[..., Any]
    | list[int]
    | list[float]
    | list[str]
    | list[bytes]
    | list[RawFrame]
    | list[VideoFrame]
    | list[AudioFrame]
    | list[RawNode]
    | list[VideoNode]
    | list[AudioNode]
    | list[Callable[..., Any]]
)

# Only the _PropValue types are allowed in FrameProps but passing _VSValue is allowed.
# Just keep in mind that _SupportsIter and _GetItemIterable will only yield their keys if they're Mapping-like.
# Consider storing Mapping-likes as two separate props. One for the keys and one for the values as list.
class FrameProps(MutableMapping[str, _PropValue]):
    def __repr__(self) -> str: ...
    def __dir__(self) -> list[str]: ...
    def __getitem__(self, name: str) -> _PropValue: ...
    def __setitem__(self, name: str, value: _VSValue) -> None: ...
    def __delitem__(self, name: str) -> None: ...
    def __iter__(self) -> Iterator[str]: ...
    def __len__(self) -> int: ...
    def __setattr__(self, name: str, value: _VSValue) -> None: ...
    def __delattr__(self, name: str) -> None: ...
    def __getattr__(self, name: str) -> _PropValue: ...
    @overload
    def setdefault(self, key: str, default: Literal[0] = 0, /) -> _PropValue | Literal[0]: ...
    @overload
    def setdefault(self, key: str, default: _VSValue, /) -> _PropValue: ...  # pyright: ignore[reportIncompatibleMethodOverride]
    def copy(self) -> dict[str, _PropValue]: ...

class FuncData:
    def __call__(self, **kwargs: Any) -> Any: ...

class Func:
    def __call__(self, **kwargs: Any) -> Any: ...

class Function:
    plugin: Final[Plugin]
    name: Final[str]
    signature: Final[str]
    return_signature: Final[str]
    def __repr__(self) -> str: ...
    def __call__(self, *args: Any, **kwargs: Any) -> Any: ...
    @property
    def __signature__(self) -> Signature: ...

class PluginVersion(NamedTuple):
    major: int
    minor: int

class Plugin:
    identifier: Final[str]
    namespace: Final[str]
    name: Final[str]

    def __repr__(self) -> str: ...
    def __dir__(self) -> list[str]: ...
    def __getattr__(self, name: str) -> Function: ...
    @property
    def version(self) -> PluginVersion: ...
    @property
    def plugin_path(self) -> str: ...
    def functions(self) -> Iterator[Function]: ...

_VSPlugin = Plugin
_VSFunction = Function

class _Wrapper:
    class Function[**P, R](_VSFunction):
        def __init__[PluginT: Plugin](self, function: Callable[Concatenate[PluginT, P], R]) -> None: ...
        def __call__(self, *args: P.args, **kwargs: P.kwargs) -> R: ...

class _Wrapper_Core_bound_FrameEval:
    class Function(_VSFunction):
        def __init__[PluginT: Plugin](self, function: Callable[Concatenate[PluginT, ...], VideoNode]) -> None: ...
        @overload
        def __call__(
            self,
            clip: VideoNode,
            eval: _VSCallback_std_FrameEval_eval_0,
            prop_src: None = None,
            clip_src: VideoNode | _SequenceLike[VideoNode] | None = None,
        ) -> VideoNode: ...
        @overload
        def __call__(
            self,
            clip: VideoNode,
            eval: _VSCallback_std_FrameEval_eval_1,
            prop_src: VideoNode,
            clip_src: VideoNode | _SequenceLike[VideoNode] | None = None,
        ) -> VideoNode: ...
        @overload
        def __call__(
            self,
            clip: VideoNode,
            eval: _VSCallback_std_FrameEval_eval_2,
            prop_src: _SequenceLike[VideoNode],
            clip_src: VideoNode | _SequenceLike[VideoNode] | None = None,
        ) -> VideoNode: ...
        @overload
        def __call__(
            self,
            clip: VideoNode,
            eval: _VSCallback_std_FrameEval_eval_3,
            prop_src: VideoNode | _SequenceLike[VideoNode],
            clip_src: VideoNode | _SequenceLike[VideoNode] | None = None,
        ) -> VideoNode: ...
        @overload
        def __call__(
            self,
            clip: VideoNode,
            eval: _VSCallback_std_FrameEval_eval,
            prop_src: VideoNode | _SequenceLike[VideoNode] | None,
            clip_src: VideoNode | _SequenceLike[VideoNode] | None = None,
        ) -> VideoNode: ...

class _Wrapper_VideoNode_bound_FrameEval:
    class Function(_VSFunction):
        def __init__[PluginT: Plugin](self, function: Callable[Concatenate[PluginT, ...], VideoNode]) -> None: ...
        @overload
        def __call__(
            self,
            eval: _VSCallback_std_FrameEval_eval_0,
            prop_src: None = None,
            clip_src: VideoNode | _SequenceLike[VideoNode] | None = None,
        ) -> VideoNode: ...
        @overload
        def __call__(
            self,
            eval: _VSCallback_std_FrameEval_eval_1,
            prop_src: VideoNode,
            clip_src: VideoNode | _SequenceLike[VideoNode] | None = None,
        ) -> VideoNode: ...
        @overload
        def __call__(
            self,
            eval: _VSCallback_std_FrameEval_eval_2,
            prop_src: _SequenceLike[VideoNode],
            clip_src: VideoNode | _SequenceLike[VideoNode] | None = None,
        ) -> VideoNode: ...
        @overload
        def __call__(
            self,
            eval: _VSCallback_std_FrameEval_eval_3,
            prop_src: VideoNode | _SequenceLike[VideoNode],
            clip_src: VideoNode | _SequenceLike[VideoNode] | None = None,
        ) -> VideoNode: ...
        @overload
        def __call__(
            self,
            eval: _VSCallback_std_FrameEval_eval,
            prop_src: VideoNode | _SequenceLike[VideoNode] | None,
            clip_src: VideoNode | _SequenceLike[VideoNode] | None = None,
        ) -> VideoNode: ...

class _Wrapper_Core_bound_ModifyFrame:
    class Function(_VSFunction):
        def __init__[PluginT: Plugin](self, function: Callable[Concatenate[PluginT, ...], VideoNode]) -> None: ...
        @overload
        def __call__(
            self, clip: VideoNode, clips: VideoNode, selector: _VSCallback_std_ModifyFrame_selector_0
        ) -> VideoNode: ...
        @overload
        def __call__(
            self, clip: VideoNode, clips: _SequenceLike[VideoNode], selector: _VSCallback_std_ModifyFrame_selector_1
        ) -> VideoNode: ...
        @overload
        def __call__(
            self,
            clip: VideoNode,
            clips: VideoNode | _SequenceLike[VideoNode],
            selector: _VSCallback_std_ModifyFrame_selector,
        ) -> VideoNode: ...

class _Wrapper_VideoNode_bound_ModifyFrame:
    class Function(_VSFunction):
        def __init__[PluginT: Plugin](self, function: Callable[Concatenate[PluginT, ...], VideoNode]) -> None: ...
        @overload
        def __call__(self, clips: VideoNode, selector: _VSCallback_std_ModifyFrame_selector_0) -> VideoNode: ...
        @overload
        def __call__(
            self, clips: _SequenceLike[VideoNode], selector: _VSCallback_std_ModifyFrame_selector_1
        ) -> VideoNode: ...
        @overload
        def __call__(
            self, clips: VideoNode | _SequenceLike[VideoNode], selector: _VSCallback_std_ModifyFrame_selector
        ) -> VideoNode: ...

class FramePtr: ...

# These memoryview-likes don't exist at runtime.
class _video_view(memoryview):  # type: ignore[misc]
    def __getitem__(self, index: tuple[int, int]) -> float: ...  # type: ignore[override]
    def __setitem__(self, index: tuple[int, int], other: float) -> None: ...  # type: ignore[override]
    @property
    def shape(self) -> tuple[int, int]: ...
    @property
    def strides(self) -> tuple[int, int]: ...
    @property
    def ndim(self) -> Literal[2]: ...
    @property
    def obj(self) -> FramePtr: ...  # type: ignore[override]
    def tolist(self) -> list[float]: ...  # type: ignore[override]

class _audio_view(memoryview):  # type: ignore[misc]
    def __getitem__(self, index: int) -> float: ...  # type: ignore[override]
    def __setitem__(self, index: int, other: float) -> None: ...  # type: ignore[override]
    @property
    def shape(self) -> tuple[int]: ...
    @property
    def strides(self) -> tuple[int]: ...
    @property
    def ndim(self) -> Literal[1]: ...
    @property
    def obj(self) -> FramePtr: ...  # type: ignore[override]
    def tolist(self) -> list[float]: ...  # type: ignore[override]

class RawFrame:
    def __repr__(self) -> str: ...
    def __str__(self) -> str: ...
    def __enter__(self) -> Self: ...
    def __exit__(
        self, exc: type[BaseException] | None = None, val: BaseException | None = None, tb: TracebackType | None = None
    ) -> bool | None: ...
    def __getitem__(self, index: SupportsIndex) -> memoryview: ...
    def __len__(self) -> int: ...
    @property
    def closed(self) -> bool: ...
    @property
    def props(self) -> FrameProps: ...
    @props.setter
    def props(self, new_props: _SupportsKeysAndGetItem[str, _VSValue]) -> None: ...
    @property
    def readonly(self) -> bool: ...
    def copy(self) -> Self: ...
    def close(self) -> None: ...
    def get_write_ptr(self, plane: _IntLike) -> c_void_p: ...
    def get_read_ptr(self, plane: _IntLike) -> c_void_p: ...
    def get_stride(self, plane: _IntLike) -> int: ...

# Behave like a Sequence
class VideoFrame(RawFrame):
    format: Final[VideoFormat]
    width: Final[int]
    height: Final[int]

    def __getitem__(self, index: SupportsIndex) -> _video_view: ...
    def readchunks(self) -> Iterator[_video_view]: ...

# Behave like a Sequence
class AudioFrame(RawFrame):
    sample_type: Final[SampleType]
    bits_per_sample: Final[int]
    bytes_per_sample: Final[int]
    channel_layout: Final[int]
    num_channels: Final[int]

    def __getitem__(self, index: SupportsIndex) -> _audio_view: ...
    @property
    def channels(self) -> ChannelLayout: ...

class RawNode:
    def __repr__(self) -> str: ...
    def __str__(self) -> str: ...
    def __eq__(self, other: object) -> bool: ...
    def __hash__(self) -> int: ...
    def __dir__(self) -> list[str]: ...
    def __getitem__(self, index: int | slice[int | None, int | None, int | None]) -> Self: ...
    def __len__(self) -> int: ...
    def __add__(self, other: Self) -> Self: ...
    def __mul__(self, other: int) -> Self: ...
    def __getattr__(self, name: str) -> Plugin: ...
    @property
    def node_name(self) -> str: ...
    @property
    def timings(self) -> int: ...
    @timings.setter
    def timings(self, value: Literal[0]) -> None: ...
    @property
    def mode(self) -> FilterMode: ...
    @property
    def dependencies(self) -> tuple[Self, ...]: ...
    @property
    def _name(self) -> str: ...
    @property
    def _inputs(self) -> dict[str, _VSValue]: ...
    def get_frame(self, n: _IntLike) -> RawFrame: ...
    @overload
    def get_frame_async(self, n: _IntLike) -> Future[RawFrame]: ...
    @overload
    def get_frame_async(self, n: _IntLike, cb: Callable[[RawFrame | None, Exception | None], None]) -> None: ...
    def frames(
        self, prefetch: int | None = None, backlog: int | None = None, close: bool = False
    ) -> Iterator[RawFrame]: ...
    def set_output(self, index: _IntLike = 0) -> None: ...
    def clear_cache(self) -> None: ...
    def is_inspectable(self, version: int | None = None) -> bool: ...

type _CurrentFrame = int
type _TotalFrames = int

# Behave like a Sequence
class VideoNode(RawNode):
    format: Final[VideoFormat]
    width: Final[int]
    height: Final[int]
    num_frames: Final[int]
    fps_num: Final[int]
    fps_den: Final[int]
    fps: Final[Fraction]
    def get_frame(self, n: _IntLike) -> VideoFrame: ...
    @overload  # type: ignore[override]
    def get_frame_async(self, n: _IntLike) -> Future[VideoFrame]: ...
    @overload
    def get_frame_async(  # pyright: ignore[reportIncompatibleMethodOverride]
        self, n: _IntLike, cb: Callable[[VideoFrame | None, Exception | None], None]
    ) -> None: ...
    def frames(
        self, prefetch: int | None = None, backlog: int | None = None, close: bool = False
    ) -> Iterator[VideoFrame]: ...
    def set_output(self, index: _IntLike = 0, alpha: Self | None = None, alt_output: Literal[0, 1, 2] = 0) -> None: ...
    def output(
        self,
        fileobj: IO[bytes],
        y4m: bool = False,
        progress_update: Callable[[_CurrentFrame, _TotalFrames], None] | None = None,
        prefetch: int = 0,
        backlog: int = -1,
    ) -> None: ...

# <plugins/bound/VideoNode>
# <attribute/VideoNode_bound/fpng>
    fpng: Final[_fpng._VideoNode_bound.Plugin]
    """fpng for vapoursynth"""
# </attribute/VideoNode_bound/fpng>
# <attribute/VideoNode_bound/resize>
    resize: Final[_resize._VideoNode_bound.Plugin]
    """VapourSynth Resize"""
# </attribute/VideoNode_bound/resize>
# <attribute/VideoNode_bound/std>
    std: Final[_std._VideoNode_bound.Plugin]
    """VapourSynth Core Functions"""
# </attribute/VideoNode_bound/std>
# <attribute/VideoNode_bound/text>
    text: Final[_text._VideoNode_bound.Plugin]
    """VapourSynth Text"""
# </attribute/VideoNode_bound/text>
# <attribute/VideoNode_bound/vszip>
    vszip: Final[_vszip._VideoNode_bound.Plugin]
    """VapourSynth Zig Image Process"""
# </attribute/VideoNode_bound/vszip>
# </plugins/bound/VideoNode>

# Behave like a Sequence
class AudioNode(RawNode):
    sample_type: Final[SampleType]
    bits_per_sample: Final[int]
    bytes_per_sample: Final[int]
    channel_layout: Final[int]
    num_channels: Final[int]
    sample_rate: Final[int]
    num_samples: Final[int]
    num_frames: Final[int]
    @property
    def channels(self) -> ChannelLayout: ...
    def get_frame(self, n: _IntLike) -> AudioFrame: ...
    @overload  # type: ignore[override]
    def get_frame_async(self, n: _IntLike) -> Future[AudioFrame]: ...
    @overload
    def get_frame_async(  # pyright: ignore[reportIncompatibleMethodOverride]
        self, n: _IntLike, cb: Callable[[AudioFrame | None, Exception | None], None]
    ) -> None: ...
    def frames(
        self, prefetch: int | None = None, backlog: int | None = None, close: bool = False
    ) -> Iterator[AudioFrame]: ...

# <plugins/bound/AudioNode>
# <attribute/AudioNode_bound/ares>
    ares: Final[_ares._AudioNode_bound.Plugin]
    """audio sample rate and sample type converter"""
# </attribute/AudioNode_bound/ares>
# <attribute/AudioNode_bound/atools>
    atools: Final[_atools._AudioNode_bound.Plugin]
    """basic audio functions"""
# </attribute/AudioNode_bound/atools>
# <attribute/AudioNode_bound/std>
    std: Final[_std._AudioNode_bound.Plugin]
    """VapourSynth Core Functions"""
# </attribute/AudioNode_bound/std>
# </plugins/bound/AudioNode>

class Core:
    timings: Final[CoreTimings]
    def __repr__(self) -> str: ...
    def __str__(self) -> str: ...
    def __dir__(self) -> list[str]: ...
    def __getattr__(self, name: str) -> Plugin: ...
    @property
    def api_version(self) -> VapourSynthAPIVersion: ...
    @property
    def core_version(self) -> VapourSynthVersion: ...
    @property
    def num_threads(self) -> int: ...
    @num_threads.setter
    def num_threads(self, value: _IntLike) -> None: ...
    @property
    def max_cache_size(self) -> int: ...
    @max_cache_size.setter
    def max_cache_size(self, mb: _IntLike) -> None: ...
    @property
    def used_cache_size(self) -> int: ...
    @property
    def flags(self) -> int: ...
    def plugins(self) -> Iterator[Plugin]: ...
    def query_video_format(
        self,
        color_family: _IntLike,
        sample_type: _IntLike,
        bits_per_sample: _IntLike,
        subsampling_w: _IntLike = 0,
        subsampling_h: _IntLike = 0,
    ) -> VideoFormat: ...
    def get_video_format(self, id: _IntLike) -> VideoFormat: ...
    def create_video_frame(self, format: VideoFormat, width: _IntLike, height: _IntLike) -> VideoFrame: ...
    def log_message(self, message_type: _IntLike, message: str) -> None: ...
    def add_log_handler(self, handler_func: Callable[[MessageType, str], None]) -> LogHandle: ...
    def remove_log_handler(self, handle: LogHandle) -> None: ...
    def clear_cache(self) -> None: ...
    @deprecated("core.version() is deprecated, use str(core)!", category=DeprecationWarning)
    def version(self) -> str: ...
    @deprecated(
        "core.version_number() is deprecated, use core.core_version.release_major!", category=DeprecationWarning
    )
    def version_number(self) -> int: ...

# <plugins/bound/Core>
# <attribute/Core_bound/ares>
    ares: Final[_ares._Core_bound.Plugin]
    """audio sample rate and sample type converter"""
# </attribute/Core_bound/ares>
# <attribute/Core_bound/atools>
    atools: Final[_atools._Core_bound.Plugin]
    """basic audio functions"""
# </attribute/Core_bound/atools>
# <attribute/Core_bound/bs>
    bs: Final[_bs._Core_bound.Plugin]
    """Best Source 2"""
# </attribute/Core_bound/bs>
# <attribute/Core_bound/fpng>
    fpng: Final[_fpng._Core_bound.Plugin]
    """fpng for vapoursynth"""
# </attribute/Core_bound/fpng>
# <attribute/Core_bound/resize>
    resize: Final[_resize._Core_bound.Plugin]
    """VapourSynth Resize"""
# </attribute/Core_bound/resize>
# <attribute/Core_bound/std>
    std: Final[_std._Core_bound.Plugin]
    """VapourSynth Core Functions"""
# </attribute/Core_bound/std>
# <attribute/Core_bound/text>
    text: Final[_text._Core_bound.Plugin]
    """VapourSynth Text"""
# </attribute/Core_bound/text>
# <attribute/Core_bound/vszip>
    vszip: Final[_vszip._Core_bound.Plugin]
    """VapourSynth Zig Image Process"""
# </attribute/Core_bound/vszip>
# </plugins/bound/Core>

# _CoreProxy doesn't inherit from Core but __getattr__ returns the attribute from the actual core
class _CoreProxy(Core):
    def __setattr__(self, name: str, value: Any) -> None: ...
    @property
    def core(self) -> Core: ...

core: _CoreProxy

# <plugins/implementations>
# <implementation/ares>
class _ares:
    class _Core_bound:
        class Plugin(_VSPlugin):
            @_Wrapper.Function
            def Resample(self, clip: AudioNode, sample_rate: _IntLike | None = None, sample_type: _AnyStr | None = None, quality: _AnyStr | None = None, overflow: _AnyStr | None = None, overflow_log: _AnyStr | None = None) -> AudioNode: ...

    class _AudioNode_bound:
        class Plugin(_VSPlugin):
            @_Wrapper.Function
            def Resample(self, sample_rate: _IntLike | None = None, sample_type: _AnyStr | None = None, quality: _AnyStr | None = None, overflow: _AnyStr | None = None, overflow_log: _AnyStr | None = None) -> AudioNode: ...

# </implementation/ares>

# <implementation/atools>
class _atools:
    class _Core_bound:
        class Plugin(_VSPlugin):
            @_Wrapper.Function
            def Convert(self, clip: AudioNode, sample_type: _AnyStr, overflow: _AnyStr | None = None, overflow_log: _AnyStr | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def CrossFade(self, clip1: AudioNode, clip2: AudioNode, samples: _IntLike | None = None, seconds: _FloatLike | None = None, type: _AnyStr | None = None, overflow: _AnyStr | None = None, overflow_log: _AnyStr | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def Delay(self, clip: AudioNode, samples: _IntLike | None = None, seconds: _FloatLike | None = None, channels: _IntLike | _SequenceLike[_IntLike] | None = None, overflow: _AnyStr | None = None, overflow_log: _AnyStr | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def FadeIn(self, clip: AudioNode, samples: _IntLike | None = None, seconds: _FloatLike | None = None, start_sample: _IntLike | None = None, start_second: _FloatLike | None = None, channels: _IntLike | _SequenceLike[_IntLike] | None = None, type: _AnyStr | None = None, overflow: _AnyStr | None = None, overflow_log: _AnyStr | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def FadeOut(self, clip: AudioNode, samples: _IntLike | None = None, seconds: _FloatLike | None = None, end_sample: _IntLike | None = None, end_second: _FloatLike | None = None, channels: _IntLike | _SequenceLike[_IntLike] | None = None, type: _AnyStr | None = None, overflow: _AnyStr | None = None, overflow_log: _AnyStr | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def FindPeak(self, clip: AudioNode, normalize: _IntLike | None = None, channels: _IntLike | _SequenceLike[_IntLike] | None = None) -> _FloatLike: ...
            @_Wrapper.Function
            def Mix(self, clip1: AudioNode, clip2: AudioNode, clip2_offset_samples: _IntLike | None = None, clip2_offset_seconds: _FloatLike | None = None, clip1_gain: _FloatLike | None = None, clip2_gain: _FloatLike | None = None, relative_gain: _IntLike | None = None, fadein_samples: _IntLike | None = None, fadein_seconds: _FloatLike | None = None, fadeout_samples: _IntLike | None = None, fadeout_seconds: _FloatLike | None = None, fade_type: _AnyStr | None = None, extend_start: _IntLike | None = None, extend_end: _IntLike | None = None, channels: _IntLike | _SequenceLike[_IntLike] | None = None, overflow: _AnyStr | None = None, overflow_log: _AnyStr | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def Normalize(self, clip: AudioNode, peak: _FloatLike | None = None, lower_only: _IntLike | None = None, channels: _IntLike | _SequenceLike[_IntLike] | None = None, overflow: _AnyStr | None = None, overflow_log: _AnyStr | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def SetSamples(self, clip: AudioNode, sample: _FloatLike, start_sample: _IntLike | None = None, end_sample: _IntLike | None = None, channels: _IntLike | _SequenceLike[_IntLike] | None = None, overflow: _AnyStr | None = None, overflow_log: _AnyStr | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def SineTone(self, clip: AudioNode | None = None, samples: _IntLike | None = None, seconds: _FloatLike | None = None, sample_rate: _IntLike | None = None, sample_type: _AnyStr | None = None, freq: _FloatLike | None = None, amp: _FloatLike | None = None, channels: _IntLike | _SequenceLike[_IntLike] | None = None, overflow: _AnyStr | None = None, overflow_log: _AnyStr | None = None) -> AudioNode: ...

    class _AudioNode_bound:
        class Plugin(_VSPlugin):
            @_Wrapper.Function
            def Convert(self, sample_type: _AnyStr, overflow: _AnyStr | None = None, overflow_log: _AnyStr | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def CrossFade(self, clip2: AudioNode, samples: _IntLike | None = None, seconds: _FloatLike | None = None, type: _AnyStr | None = None, overflow: _AnyStr | None = None, overflow_log: _AnyStr | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def Delay(self, samples: _IntLike | None = None, seconds: _FloatLike | None = None, channels: _IntLike | _SequenceLike[_IntLike] | None = None, overflow: _AnyStr | None = None, overflow_log: _AnyStr | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def FadeIn(self, samples: _IntLike | None = None, seconds: _FloatLike | None = None, start_sample: _IntLike | None = None, start_second: _FloatLike | None = None, channels: _IntLike | _SequenceLike[_IntLike] | None = None, type: _AnyStr | None = None, overflow: _AnyStr | None = None, overflow_log: _AnyStr | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def FadeOut(self, samples: _IntLike | None = None, seconds: _FloatLike | None = None, end_sample: _IntLike | None = None, end_second: _FloatLike | None = None, channels: _IntLike | _SequenceLike[_IntLike] | None = None, type: _AnyStr | None = None, overflow: _AnyStr | None = None, overflow_log: _AnyStr | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def FindPeak(self, normalize: _IntLike | None = None, channels: _IntLike | _SequenceLike[_IntLike] | None = None) -> _FloatLike: ...
            @_Wrapper.Function
            def Mix(self, clip2: AudioNode, clip2_offset_samples: _IntLike | None = None, clip2_offset_seconds: _FloatLike | None = None, clip1_gain: _FloatLike | None = None, clip2_gain: _FloatLike | None = None, relative_gain: _IntLike | None = None, fadein_samples: _IntLike | None = None, fadein_seconds: _FloatLike | None = None, fadeout_samples: _IntLike | None = None, fadeout_seconds: _FloatLike | None = None, fade_type: _AnyStr | None = None, extend_start: _IntLike | None = None, extend_end: _IntLike | None = None, channels: _IntLike | _SequenceLike[_IntLike] | None = None, overflow: _AnyStr | None = None, overflow_log: _AnyStr | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def Normalize(self, peak: _FloatLike | None = None, lower_only: _IntLike | None = None, channels: _IntLike | _SequenceLike[_IntLike] | None = None, overflow: _AnyStr | None = None, overflow_log: _AnyStr | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def SetSamples(self, sample: _FloatLike, start_sample: _IntLike | None = None, end_sample: _IntLike | None = None, channels: _IntLike | _SequenceLike[_IntLike] | None = None, overflow: _AnyStr | None = None, overflow_log: _AnyStr | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def SineTone(self, samples: _IntLike | None = None, seconds: _FloatLike | None = None, sample_rate: _IntLike | None = None, sample_type: _AnyStr | None = None, freq: _FloatLike | None = None, amp: _FloatLike | None = None, channels: _IntLike | _SequenceLike[_IntLike] | None = None, overflow: _AnyStr | None = None, overflow_log: _AnyStr | None = None) -> AudioNode: ...

# </implementation/atools>

# <implementation/bs>
_ReturnDict_bs_TrackInfo = TypedDict("_ReturnDict_bs_TrackInfo", {"mediatype": int, "mediatypestr": _AnyStr, "codec": int, "codecstr": _AnyStr, "disposition": int, "dispositionstr": _AnyStr})

class _bs:
    class _Core_bound:
        class Plugin(_VSPlugin):
            @_Wrapper.Function
            def AudioSource(self, source: _AnyStr, track: _IntLike | None = None, adjustdelay: _IntLike | None = None, threads: _IntLike | None = None, enable_drefs: _IntLike | None = None, use_absolute_path: _IntLike | None = None, drc_scale: _FloatLike | None = None, cachemode: _IntLike | None = None, cachepath: _AnyStr | None = None, cachesize: _IntLike | None = None, showprogress: _IntLike | None = None, maxdecoders: _IntLike | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def Metadata(self, source: _AnyStr, track: _IntLike | None = None, enable_drefs: _IntLike | None = None, use_absolute_path: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def SetDebugOutput(self, enable: _IntLike) -> None: ...
            @_Wrapper.Function
            def SetFFmpegLogLevel(self, level: _IntLike) -> _IntLike: ...
            @_Wrapper.Function
            def TrackInfo(self, source: _AnyStr, enable_drefs: _IntLike | None = None, use_absolute_path: _IntLike | None = None) -> _ReturnDict_bs_TrackInfo: ...
            @_Wrapper.Function
            def VideoSource(self, source: _AnyStr, track: _IntLike | None = None, variableformat: _IntLike | None = None, fpsnum: _IntLike | None = None, fpsden: _IntLike | None = None, rff: _IntLike | None = None, threads: _IntLike | None = None, seekpreroll: _IntLike | None = None, enable_drefs: _IntLike | None = None, use_absolute_path: _IntLike | None = None, cachemode: _IntLike | None = None, cachepath: _AnyStr | None = None, cachesize: _IntLike | None = None, hwdevice: _AnyStr | None = None, extrahwframes: _IntLike | None = None, timecodes: _AnyStr | None = None, start_number: _IntLike | None = None, viewid: _IntLike | None = None, showprogress: _IntLike | None = None, maxdecoders: _IntLike | None = None, hwfallback: _IntLike | None = None, exporttimestamps: _IntLike | None = None) -> VideoNode: ...

# </implementation/bs>

# <implementation/fpng>
class _fpng:
    class _Core_bound:
        class Plugin(_VSPlugin):
            @_Wrapper.Function
            def Write(self, clip: VideoNode, filename: _AnyStr, firstnum: _IntLike | None = None, compression: _IntLike | None = None, overwrite: _IntLike | None = None, alpha: VideoNode | None = None) -> VideoNode: ...

    class _VideoNode_bound:
        class Plugin(_VSPlugin):
            @_Wrapper.Function
            def Write(self, filename: _AnyStr, firstnum: _IntLike | None = None, compression: _IntLike | None = None, overwrite: _IntLike | None = None, alpha: VideoNode | None = None) -> VideoNode: ...

# </implementation/fpng>

# <implementation/resize>
class _resize:
    class _Core_bound:
        class Plugin(_VSPlugin):
            @_Wrapper.Function
            def Bicubic(self, clip: VideoNode, width: _IntLike | None = None, height: _IntLike | None = None, format: _IntLike | None = None, matrix: _IntLike | None = None, matrix_s: _AnyStr | None = None, transfer: _IntLike | None = None, transfer_s: _AnyStr | None = None, primaries: _IntLike | None = None, primaries_s: _AnyStr | None = None, range: _IntLike | None = None, range_s: _AnyStr | None = None, chromaloc: _IntLike | None = None, chromaloc_s: _AnyStr | None = None, matrix_in: _IntLike | None = None, matrix_in_s: _AnyStr | None = None, transfer_in: _IntLike | None = None, transfer_in_s: _AnyStr | None = None, primaries_in: _IntLike | None = None, primaries_in_s: _AnyStr | None = None, range_in: _IntLike | None = None, range_in_s: _AnyStr | None = None, chromaloc_in: _IntLike | None = None, chromaloc_in_s: _AnyStr | None = None, filter_param_a: _FloatLike | None = None, filter_param_b: _FloatLike | None = None, resample_filter_uv: _AnyStr | None = None, filter_param_a_uv: _FloatLike | None = None, filter_param_b_uv: _FloatLike | None = None, dither_type: _AnyStr | None = None, cpu_type: _AnyStr | None = None, prefer_props: _IntLike | None = None, src_left: _FloatLike | None = None, src_top: _FloatLike | None = None, src_width: _FloatLike | None = None, src_height: _FloatLike | None = None, nominal_luminance: _FloatLike | None = None, approximate_gamma: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Bilinear(self, clip: VideoNode, width: _IntLike | None = None, height: _IntLike | None = None, format: _IntLike | None = None, matrix: _IntLike | None = None, matrix_s: _AnyStr | None = None, transfer: _IntLike | None = None, transfer_s: _AnyStr | None = None, primaries: _IntLike | None = None, primaries_s: _AnyStr | None = None, range: _IntLike | None = None, range_s: _AnyStr | None = None, chromaloc: _IntLike | None = None, chromaloc_s: _AnyStr | None = None, matrix_in: _IntLike | None = None, matrix_in_s: _AnyStr | None = None, transfer_in: _IntLike | None = None, transfer_in_s: _AnyStr | None = None, primaries_in: _IntLike | None = None, primaries_in_s: _AnyStr | None = None, range_in: _IntLike | None = None, range_in_s: _AnyStr | None = None, chromaloc_in: _IntLike | None = None, chromaloc_in_s: _AnyStr | None = None, filter_param_a: _FloatLike | None = None, filter_param_b: _FloatLike | None = None, resample_filter_uv: _AnyStr | None = None, filter_param_a_uv: _FloatLike | None = None, filter_param_b_uv: _FloatLike | None = None, dither_type: _AnyStr | None = None, cpu_type: _AnyStr | None = None, prefer_props: _IntLike | None = None, src_left: _FloatLike | None = None, src_top: _FloatLike | None = None, src_width: _FloatLike | None = None, src_height: _FloatLike | None = None, nominal_luminance: _FloatLike | None = None, approximate_gamma: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Bob(self, clip: VideoNode, filter: _AnyStr | None = None, tff: _IntLike | None = None, format: _IntLike | None = None, matrix: _IntLike | None = None, matrix_s: _AnyStr | None = None, transfer: _IntLike | None = None, transfer_s: _AnyStr | None = None, primaries: _IntLike | None = None, primaries_s: _AnyStr | None = None, range: _IntLike | None = None, range_s: _AnyStr | None = None, chromaloc: _IntLike | None = None, chromaloc_s: _AnyStr | None = None, matrix_in: _IntLike | None = None, matrix_in_s: _AnyStr | None = None, transfer_in: _IntLike | None = None, transfer_in_s: _AnyStr | None = None, primaries_in: _IntLike | None = None, primaries_in_s: _AnyStr | None = None, range_in: _IntLike | None = None, range_in_s: _AnyStr | None = None, chromaloc_in: _IntLike | None = None, chromaloc_in_s: _AnyStr | None = None, filter_param_a: _FloatLike | None = None, filter_param_b: _FloatLike | None = None, resample_filter_uv: _AnyStr | None = None, filter_param_a_uv: _FloatLike | None = None, filter_param_b_uv: _FloatLike | None = None, dither_type: _AnyStr | None = None, cpu_type: _AnyStr | None = None, prefer_props: _IntLike | None = None, src_left: _FloatLike | None = None, src_top: _FloatLike | None = None, src_width: _FloatLike | None = None, src_height: _FloatLike | None = None, nominal_luminance: _FloatLike | None = None, approximate_gamma: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Lanczos(self, clip: VideoNode, width: _IntLike | None = None, height: _IntLike | None = None, format: _IntLike | None = None, matrix: _IntLike | None = None, matrix_s: _AnyStr | None = None, transfer: _IntLike | None = None, transfer_s: _AnyStr | None = None, primaries: _IntLike | None = None, primaries_s: _AnyStr | None = None, range: _IntLike | None = None, range_s: _AnyStr | None = None, chromaloc: _IntLike | None = None, chromaloc_s: _AnyStr | None = None, matrix_in: _IntLike | None = None, matrix_in_s: _AnyStr | None = None, transfer_in: _IntLike | None = None, transfer_in_s: _AnyStr | None = None, primaries_in: _IntLike | None = None, primaries_in_s: _AnyStr | None = None, range_in: _IntLike | None = None, range_in_s: _AnyStr | None = None, chromaloc_in: _IntLike | None = None, chromaloc_in_s: _AnyStr | None = None, filter_param_a: _FloatLike | None = None, filter_param_b: _FloatLike | None = None, resample_filter_uv: _AnyStr | None = None, filter_param_a_uv: _FloatLike | None = None, filter_param_b_uv: _FloatLike | None = None, dither_type: _AnyStr | None = None, cpu_type: _AnyStr | None = None, prefer_props: _IntLike | None = None, src_left: _FloatLike | None = None, src_top: _FloatLike | None = None, src_width: _FloatLike | None = None, src_height: _FloatLike | None = None, nominal_luminance: _FloatLike | None = None, approximate_gamma: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Point(self, clip: VideoNode, width: _IntLike | None = None, height: _IntLike | None = None, format: _IntLike | None = None, matrix: _IntLike | None = None, matrix_s: _AnyStr | None = None, transfer: _IntLike | None = None, transfer_s: _AnyStr | None = None, primaries: _IntLike | None = None, primaries_s: _AnyStr | None = None, range: _IntLike | None = None, range_s: _AnyStr | None = None, chromaloc: _IntLike | None = None, chromaloc_s: _AnyStr | None = None, matrix_in: _IntLike | None = None, matrix_in_s: _AnyStr | None = None, transfer_in: _IntLike | None = None, transfer_in_s: _AnyStr | None = None, primaries_in: _IntLike | None = None, primaries_in_s: _AnyStr | None = None, range_in: _IntLike | None = None, range_in_s: _AnyStr | None = None, chromaloc_in: _IntLike | None = None, chromaloc_in_s: _AnyStr | None = None, filter_param_a: _FloatLike | None = None, filter_param_b: _FloatLike | None = None, resample_filter_uv: _AnyStr | None = None, filter_param_a_uv: _FloatLike | None = None, filter_param_b_uv: _FloatLike | None = None, dither_type: _AnyStr | None = None, cpu_type: _AnyStr | None = None, prefer_props: _IntLike | None = None, src_left: _FloatLike | None = None, src_top: _FloatLike | None = None, src_width: _FloatLike | None = None, src_height: _FloatLike | None = None, nominal_luminance: _FloatLike | None = None, approximate_gamma: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Spline16(self, clip: VideoNode, width: _IntLike | None = None, height: _IntLike | None = None, format: _IntLike | None = None, matrix: _IntLike | None = None, matrix_s: _AnyStr | None = None, transfer: _IntLike | None = None, transfer_s: _AnyStr | None = None, primaries: _IntLike | None = None, primaries_s: _AnyStr | None = None, range: _IntLike | None = None, range_s: _AnyStr | None = None, chromaloc: _IntLike | None = None, chromaloc_s: _AnyStr | None = None, matrix_in: _IntLike | None = None, matrix_in_s: _AnyStr | None = None, transfer_in: _IntLike | None = None, transfer_in_s: _AnyStr | None = None, primaries_in: _IntLike | None = None, primaries_in_s: _AnyStr | None = None, range_in: _IntLike | None = None, range_in_s: _AnyStr | None = None, chromaloc_in: _IntLike | None = None, chromaloc_in_s: _AnyStr | None = None, filter_param_a: _FloatLike | None = None, filter_param_b: _FloatLike | None = None, resample_filter_uv: _AnyStr | None = None, filter_param_a_uv: _FloatLike | None = None, filter_param_b_uv: _FloatLike | None = None, dither_type: _AnyStr | None = None, cpu_type: _AnyStr | None = None, prefer_props: _IntLike | None = None, src_left: _FloatLike | None = None, src_top: _FloatLike | None = None, src_width: _FloatLike | None = None, src_height: _FloatLike | None = None, nominal_luminance: _FloatLike | None = None, approximate_gamma: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Spline36(self, clip: VideoNode, width: _IntLike | None = None, height: _IntLike | None = None, format: _IntLike | None = None, matrix: _IntLike | None = None, matrix_s: _AnyStr | None = None, transfer: _IntLike | None = None, transfer_s: _AnyStr | None = None, primaries: _IntLike | None = None, primaries_s: _AnyStr | None = None, range: _IntLike | None = None, range_s: _AnyStr | None = None, chromaloc: _IntLike | None = None, chromaloc_s: _AnyStr | None = None, matrix_in: _IntLike | None = None, matrix_in_s: _AnyStr | None = None, transfer_in: _IntLike | None = None, transfer_in_s: _AnyStr | None = None, primaries_in: _IntLike | None = None, primaries_in_s: _AnyStr | None = None, range_in: _IntLike | None = None, range_in_s: _AnyStr | None = None, chromaloc_in: _IntLike | None = None, chromaloc_in_s: _AnyStr | None = None, filter_param_a: _FloatLike | None = None, filter_param_b: _FloatLike | None = None, resample_filter_uv: _AnyStr | None = None, filter_param_a_uv: _FloatLike | None = None, filter_param_b_uv: _FloatLike | None = None, dither_type: _AnyStr | None = None, cpu_type: _AnyStr | None = None, prefer_props: _IntLike | None = None, src_left: _FloatLike | None = None, src_top: _FloatLike | None = None, src_width: _FloatLike | None = None, src_height: _FloatLike | None = None, nominal_luminance: _FloatLike | None = None, approximate_gamma: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Spline64(self, clip: VideoNode, width: _IntLike | None = None, height: _IntLike | None = None, format: _IntLike | None = None, matrix: _IntLike | None = None, matrix_s: _AnyStr | None = None, transfer: _IntLike | None = None, transfer_s: _AnyStr | None = None, primaries: _IntLike | None = None, primaries_s: _AnyStr | None = None, range: _IntLike | None = None, range_s: _AnyStr | None = None, chromaloc: _IntLike | None = None, chromaloc_s: _AnyStr | None = None, matrix_in: _IntLike | None = None, matrix_in_s: _AnyStr | None = None, transfer_in: _IntLike | None = None, transfer_in_s: _AnyStr | None = None, primaries_in: _IntLike | None = None, primaries_in_s: _AnyStr | None = None, range_in: _IntLike | None = None, range_in_s: _AnyStr | None = None, chromaloc_in: _IntLike | None = None, chromaloc_in_s: _AnyStr | None = None, filter_param_a: _FloatLike | None = None, filter_param_b: _FloatLike | None = None, resample_filter_uv: _AnyStr | None = None, filter_param_a_uv: _FloatLike | None = None, filter_param_b_uv: _FloatLike | None = None, dither_type: _AnyStr | None = None, cpu_type: _AnyStr | None = None, prefer_props: _IntLike | None = None, src_left: _FloatLike | None = None, src_top: _FloatLike | None = None, src_width: _FloatLike | None = None, src_height: _FloatLike | None = None, nominal_luminance: _FloatLike | None = None, approximate_gamma: _IntLike | None = None) -> VideoNode: ...

    class _VideoNode_bound:
        class Plugin(_VSPlugin):
            @_Wrapper.Function
            def Bicubic(self, width: _IntLike | None = None, height: _IntLike | None = None, format: _IntLike | None = None, matrix: _IntLike | None = None, matrix_s: _AnyStr | None = None, transfer: _IntLike | None = None, transfer_s: _AnyStr | None = None, primaries: _IntLike | None = None, primaries_s: _AnyStr | None = None, range: _IntLike | None = None, range_s: _AnyStr | None = None, chromaloc: _IntLike | None = None, chromaloc_s: _AnyStr | None = None, matrix_in: _IntLike | None = None, matrix_in_s: _AnyStr | None = None, transfer_in: _IntLike | None = None, transfer_in_s: _AnyStr | None = None, primaries_in: _IntLike | None = None, primaries_in_s: _AnyStr | None = None, range_in: _IntLike | None = None, range_in_s: _AnyStr | None = None, chromaloc_in: _IntLike | None = None, chromaloc_in_s: _AnyStr | None = None, filter_param_a: _FloatLike | None = None, filter_param_b: _FloatLike | None = None, resample_filter_uv: _AnyStr | None = None, filter_param_a_uv: _FloatLike | None = None, filter_param_b_uv: _FloatLike | None = None, dither_type: _AnyStr | None = None, cpu_type: _AnyStr | None = None, prefer_props: _IntLike | None = None, src_left: _FloatLike | None = None, src_top: _FloatLike | None = None, src_width: _FloatLike | None = None, src_height: _FloatLike | None = None, nominal_luminance: _FloatLike | None = None, approximate_gamma: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Bilinear(self, width: _IntLike | None = None, height: _IntLike | None = None, format: _IntLike | None = None, matrix: _IntLike | None = None, matrix_s: _AnyStr | None = None, transfer: _IntLike | None = None, transfer_s: _AnyStr | None = None, primaries: _IntLike | None = None, primaries_s: _AnyStr | None = None, range: _IntLike | None = None, range_s: _AnyStr | None = None, chromaloc: _IntLike | None = None, chromaloc_s: _AnyStr | None = None, matrix_in: _IntLike | None = None, matrix_in_s: _AnyStr | None = None, transfer_in: _IntLike | None = None, transfer_in_s: _AnyStr | None = None, primaries_in: _IntLike | None = None, primaries_in_s: _AnyStr | None = None, range_in: _IntLike | None = None, range_in_s: _AnyStr | None = None, chromaloc_in: _IntLike | None = None, chromaloc_in_s: _AnyStr | None = None, filter_param_a: _FloatLike | None = None, filter_param_b: _FloatLike | None = None, resample_filter_uv: _AnyStr | None = None, filter_param_a_uv: _FloatLike | None = None, filter_param_b_uv: _FloatLike | None = None, dither_type: _AnyStr | None = None, cpu_type: _AnyStr | None = None, prefer_props: _IntLike | None = None, src_left: _FloatLike | None = None, src_top: _FloatLike | None = None, src_width: _FloatLike | None = None, src_height: _FloatLike | None = None, nominal_luminance: _FloatLike | None = None, approximate_gamma: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Bob(self, filter: _AnyStr | None = None, tff: _IntLike | None = None, format: _IntLike | None = None, matrix: _IntLike | None = None, matrix_s: _AnyStr | None = None, transfer: _IntLike | None = None, transfer_s: _AnyStr | None = None, primaries: _IntLike | None = None, primaries_s: _AnyStr | None = None, range: _IntLike | None = None, range_s: _AnyStr | None = None, chromaloc: _IntLike | None = None, chromaloc_s: _AnyStr | None = None, matrix_in: _IntLike | None = None, matrix_in_s: _AnyStr | None = None, transfer_in: _IntLike | None = None, transfer_in_s: _AnyStr | None = None, primaries_in: _IntLike | None = None, primaries_in_s: _AnyStr | None = None, range_in: _IntLike | None = None, range_in_s: _AnyStr | None = None, chromaloc_in: _IntLike | None = None, chromaloc_in_s: _AnyStr | None = None, filter_param_a: _FloatLike | None = None, filter_param_b: _FloatLike | None = None, resample_filter_uv: _AnyStr | None = None, filter_param_a_uv: _FloatLike | None = None, filter_param_b_uv: _FloatLike | None = None, dither_type: _AnyStr | None = None, cpu_type: _AnyStr | None = None, prefer_props: _IntLike | None = None, src_left: _FloatLike | None = None, src_top: _FloatLike | None = None, src_width: _FloatLike | None = None, src_height: _FloatLike | None = None, nominal_luminance: _FloatLike | None = None, approximate_gamma: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Lanczos(self, width: _IntLike | None = None, height: _IntLike | None = None, format: _IntLike | None = None, matrix: _IntLike | None = None, matrix_s: _AnyStr | None = None, transfer: _IntLike | None = None, transfer_s: _AnyStr | None = None, primaries: _IntLike | None = None, primaries_s: _AnyStr | None = None, range: _IntLike | None = None, range_s: _AnyStr | None = None, chromaloc: _IntLike | None = None, chromaloc_s: _AnyStr | None = None, matrix_in: _IntLike | None = None, matrix_in_s: _AnyStr | None = None, transfer_in: _IntLike | None = None, transfer_in_s: _AnyStr | None = None, primaries_in: _IntLike | None = None, primaries_in_s: _AnyStr | None = None, range_in: _IntLike | None = None, range_in_s: _AnyStr | None = None, chromaloc_in: _IntLike | None = None, chromaloc_in_s: _AnyStr | None = None, filter_param_a: _FloatLike | None = None, filter_param_b: _FloatLike | None = None, resample_filter_uv: _AnyStr | None = None, filter_param_a_uv: _FloatLike | None = None, filter_param_b_uv: _FloatLike | None = None, dither_type: _AnyStr | None = None, cpu_type: _AnyStr | None = None, prefer_props: _IntLike | None = None, src_left: _FloatLike | None = None, src_top: _FloatLike | None = None, src_width: _FloatLike | None = None, src_height: _FloatLike | None = None, nominal_luminance: _FloatLike | None = None, approximate_gamma: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Point(self, width: _IntLike | None = None, height: _IntLike | None = None, format: _IntLike | None = None, matrix: _IntLike | None = None, matrix_s: _AnyStr | None = None, transfer: _IntLike | None = None, transfer_s: _AnyStr | None = None, primaries: _IntLike | None = None, primaries_s: _AnyStr | None = None, range: _IntLike | None = None, range_s: _AnyStr | None = None, chromaloc: _IntLike | None = None, chromaloc_s: _AnyStr | None = None, matrix_in: _IntLike | None = None, matrix_in_s: _AnyStr | None = None, transfer_in: _IntLike | None = None, transfer_in_s: _AnyStr | None = None, primaries_in: _IntLike | None = None, primaries_in_s: _AnyStr | None = None, range_in: _IntLike | None = None, range_in_s: _AnyStr | None = None, chromaloc_in: _IntLike | None = None, chromaloc_in_s: _AnyStr | None = None, filter_param_a: _FloatLike | None = None, filter_param_b: _FloatLike | None = None, resample_filter_uv: _AnyStr | None = None, filter_param_a_uv: _FloatLike | None = None, filter_param_b_uv: _FloatLike | None = None, dither_type: _AnyStr | None = None, cpu_type: _AnyStr | None = None, prefer_props: _IntLike | None = None, src_left: _FloatLike | None = None, src_top: _FloatLike | None = None, src_width: _FloatLike | None = None, src_height: _FloatLike | None = None, nominal_luminance: _FloatLike | None = None, approximate_gamma: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Spline16(self, width: _IntLike | None = None, height: _IntLike | None = None, format: _IntLike | None = None, matrix: _IntLike | None = None, matrix_s: _AnyStr | None = None, transfer: _IntLike | None = None, transfer_s: _AnyStr | None = None, primaries: _IntLike | None = None, primaries_s: _AnyStr | None = None, range: _IntLike | None = None, range_s: _AnyStr | None = None, chromaloc: _IntLike | None = None, chromaloc_s: _AnyStr | None = None, matrix_in: _IntLike | None = None, matrix_in_s: _AnyStr | None = None, transfer_in: _IntLike | None = None, transfer_in_s: _AnyStr | None = None, primaries_in: _IntLike | None = None, primaries_in_s: _AnyStr | None = None, range_in: _IntLike | None = None, range_in_s: _AnyStr | None = None, chromaloc_in: _IntLike | None = None, chromaloc_in_s: _AnyStr | None = None, filter_param_a: _FloatLike | None = None, filter_param_b: _FloatLike | None = None, resample_filter_uv: _AnyStr | None = None, filter_param_a_uv: _FloatLike | None = None, filter_param_b_uv: _FloatLike | None = None, dither_type: _AnyStr | None = None, cpu_type: _AnyStr | None = None, prefer_props: _IntLike | None = None, src_left: _FloatLike | None = None, src_top: _FloatLike | None = None, src_width: _FloatLike | None = None, src_height: _FloatLike | None = None, nominal_luminance: _FloatLike | None = None, approximate_gamma: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Spline36(self, width: _IntLike | None = None, height: _IntLike | None = None, format: _IntLike | None = None, matrix: _IntLike | None = None, matrix_s: _AnyStr | None = None, transfer: _IntLike | None = None, transfer_s: _AnyStr | None = None, primaries: _IntLike | None = None, primaries_s: _AnyStr | None = None, range: _IntLike | None = None, range_s: _AnyStr | None = None, chromaloc: _IntLike | None = None, chromaloc_s: _AnyStr | None = None, matrix_in: _IntLike | None = None, matrix_in_s: _AnyStr | None = None, transfer_in: _IntLike | None = None, transfer_in_s: _AnyStr | None = None, primaries_in: _IntLike | None = None, primaries_in_s: _AnyStr | None = None, range_in: _IntLike | None = None, range_in_s: _AnyStr | None = None, chromaloc_in: _IntLike | None = None, chromaloc_in_s: _AnyStr | None = None, filter_param_a: _FloatLike | None = None, filter_param_b: _FloatLike | None = None, resample_filter_uv: _AnyStr | None = None, filter_param_a_uv: _FloatLike | None = None, filter_param_b_uv: _FloatLike | None = None, dither_type: _AnyStr | None = None, cpu_type: _AnyStr | None = None, prefer_props: _IntLike | None = None, src_left: _FloatLike | None = None, src_top: _FloatLike | None = None, src_width: _FloatLike | None = None, src_height: _FloatLike | None = None, nominal_luminance: _FloatLike | None = None, approximate_gamma: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Spline64(self, width: _IntLike | None = None, height: _IntLike | None = None, format: _IntLike | None = None, matrix: _IntLike | None = None, matrix_s: _AnyStr | None = None, transfer: _IntLike | None = None, transfer_s: _AnyStr | None = None, primaries: _IntLike | None = None, primaries_s: _AnyStr | None = None, range: _IntLike | None = None, range_s: _AnyStr | None = None, chromaloc: _IntLike | None = None, chromaloc_s: _AnyStr | None = None, matrix_in: _IntLike | None = None, matrix_in_s: _AnyStr | None = None, transfer_in: _IntLike | None = None, transfer_in_s: _AnyStr | None = None, primaries_in: _IntLike | None = None, primaries_in_s: _AnyStr | None = None, range_in: _IntLike | None = None, range_in_s: _AnyStr | None = None, chromaloc_in: _IntLike | None = None, chromaloc_in_s: _AnyStr | None = None, filter_param_a: _FloatLike | None = None, filter_param_b: _FloatLike | None = None, resample_filter_uv: _AnyStr | None = None, filter_param_a_uv: _FloatLike | None = None, filter_param_b_uv: _FloatLike | None = None, dither_type: _AnyStr | None = None, cpu_type: _AnyStr | None = None, prefer_props: _IntLike | None = None, src_left: _FloatLike | None = None, src_top: _FloatLike | None = None, src_width: _FloatLike | None = None, src_height: _FloatLike | None = None, nominal_luminance: _FloatLike | None = None, approximate_gamma: _IntLike | None = None) -> VideoNode: ...

# </implementation/resize>

# <implementation/std>
class _std:
    class _Core_bound:
        class Plugin(_VSPlugin):
            @_Wrapper.Function
            def AddBorders(self, clip: VideoNode, left: _IntLike | None = None, right: _IntLike | None = None, top: _IntLike | None = None, bottom: _IntLike | None = None, color: _FloatLike | _SequenceLike[_FloatLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def AssumeFPS(self, clip: VideoNode, src: VideoNode | None = None, fpsnum: _IntLike | None = None, fpsden: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def AssumeSampleRate(self, clip: AudioNode, src: AudioNode | None = None, samplerate: _IntLike | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def AudioGain(self, clip: AudioNode, gain: _FloatLike | _SequenceLike[_FloatLike] | None = None, overflow_error: _IntLike | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def AudioLoop(self, clip: AudioNode, times: _IntLike | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def AudioMix(self, clips: AudioNode | _SequenceLike[AudioNode], matrix: _FloatLike | _SequenceLike[_FloatLike], channels_out: _IntLike | _SequenceLike[_IntLike], overflow_error: _IntLike | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def AudioReverse(self, clip: AudioNode) -> AudioNode: ...
            @_Wrapper.Function
            def AudioSplice(self, clips: AudioNode | _SequenceLike[AudioNode]) -> AudioNode: ...
            @_Wrapper.Function
            def AudioTrim(self, clip: AudioNode, first: _IntLike | None = None, last: _IntLike | None = None, length: _IntLike | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def AverageFrames(self, clips: VideoNode | _SequenceLike[VideoNode], weights: _FloatLike | _SequenceLike[_FloatLike], scale: _FloatLike | None = None, scenechange: _IntLike | None = None, planes: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Binarize(self, clip: VideoNode, threshold: _FloatLike | _SequenceLike[_FloatLike] | None = None, v0: _FloatLike | _SequenceLike[_FloatLike] | None = None, v1: _FloatLike | _SequenceLike[_FloatLike] | None = None, planes: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def BinarizeMask(self, clip: VideoNode, threshold: _FloatLike | _SequenceLike[_FloatLike] | None = None, v0: _FloatLike | _SequenceLike[_FloatLike] | None = None, v1: _FloatLike | _SequenceLike[_FloatLike] | None = None, planes: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def BlankAudio(self, clip: AudioNode | None = None, channels: _IntLike | _SequenceLike[_IntLike] | None = None, bits: _IntLike | None = None, sampletype: _IntLike | None = None, samplerate: _IntLike | None = None, length: _IntLike | None = None, keep: _IntLike | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def BlankClip(self, clip: VideoNode | None = None, width: _IntLike | None = None, height: _IntLike | None = None, format: _IntLike | None = None, length: _IntLike | None = None, fpsnum: _IntLike | None = None, fpsden: _IntLike | None = None, color: _FloatLike | _SequenceLike[_FloatLike] | None = None, keep: _IntLike | None = None, varsize: _IntLike | None = None, varformat: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def BoxBlur(self, clip: VideoNode, planes: _IntLike | _SequenceLike[_IntLike] | None = None, hradius: _IntLike | None = None, hpasses: _IntLike | None = None, vradius: _IntLike | None = None, vpasses: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Cache(self, clip: VideoNode, size: _IntLike | None = None, fixed: _IntLike | None = None, make_linear: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def ClipToProp(self, clip: VideoNode, mclip: VideoNode, prop: _AnyStr | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Convolution(self, clip: VideoNode, matrix: _FloatLike | _SequenceLike[_FloatLike], bias: _FloatLike | None = None, divisor: _FloatLike | None = None, planes: _IntLike | _SequenceLike[_IntLike] | None = None, saturate: _IntLike | None = None, mode: _AnyStr | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def CopyFrameProps(self, clip: VideoNode, prop_src: VideoNode, props: _AnyStr | _SequenceLike[_AnyStr] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Crop(self, clip: VideoNode, left: _IntLike | None = None, right: _IntLike | None = None, top: _IntLike | None = None, bottom: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def CropAbs(self, clip: VideoNode, width: _IntLike, height: _IntLike, left: _IntLike | None = None, top: _IntLike | None = None, x: _IntLike | None = None, y: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def CropRel(self, clip: VideoNode, left: _IntLike | None = None, right: _IntLike | None = None, top: _IntLike | None = None, bottom: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Deflate(self, clip: VideoNode, planes: _IntLike | _SequenceLike[_IntLike] | None = None, threshold: _FloatLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def DeleteFrames(self, clip: VideoNode, frames: _IntLike | _SequenceLike[_IntLike]) -> VideoNode: ...
            @_Wrapper.Function
            def DoubleWeave(self, clip: VideoNode, tff: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def DuplicateFrames(self, clip: VideoNode, frames: _IntLike | _SequenceLike[_IntLike]) -> VideoNode: ...
            @_Wrapper.Function
            def Expr(self, clips: VideoNode | _SequenceLike[VideoNode], expr: _AnyStr | _SequenceLike[_AnyStr], format: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def FlipHorizontal(self, clip: VideoNode) -> VideoNode: ...
            @_Wrapper.Function
            def FlipVertical(self, clip: VideoNode) -> VideoNode: ...
            @_Wrapper_Core_bound_FrameEval.Function
            def FrameEval(self, clip: VideoNode, eval: _VSCallback_std_FrameEval_eval, prop_src: VideoNode | _SequenceLike[VideoNode] | None = None, clip_src: VideoNode | _SequenceLike[VideoNode] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def FreezeFrames(self, clip: VideoNode, first: _IntLike | _SequenceLike[_IntLike] | None = None, last: _IntLike | _SequenceLike[_IntLike] | None = None, replacement: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Inflate(self, clip: VideoNode, planes: _IntLike | _SequenceLike[_IntLike] | None = None, threshold: _FloatLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Interleave(self, clips: VideoNode | _SequenceLike[VideoNode], extend: _IntLike | None = None, mismatch: _IntLike | None = None, modify_duration: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Invert(self, clip: VideoNode, planes: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def InvertMask(self, clip: VideoNode, planes: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Levels(self, clip: VideoNode, min_in: _FloatLike | _SequenceLike[_FloatLike] | None = None, max_in: _FloatLike | _SequenceLike[_FloatLike] | None = None, gamma: _FloatLike | _SequenceLike[_FloatLike] | None = None, min_out: _FloatLike | _SequenceLike[_FloatLike] | None = None, max_out: _FloatLike | _SequenceLike[_FloatLike] | None = None, planes: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Limiter(self, clip: VideoNode, min: _FloatLike | _SequenceLike[_FloatLike] | None = None, max: _FloatLike | _SequenceLike[_FloatLike] | None = None, planes: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def LoadAllPlugins(self, path: _AnyStr) -> None: ...
            @_Wrapper.Function
            def LoadPlugin(self, path: _AnyStr, altsearchpath: _IntLike | None = None, forcens: _AnyStr | None = None, forceid: _AnyStr | None = None) -> None: ...
            @_Wrapper.Function
            def Loop(self, clip: VideoNode, times: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Lut(self, clip: VideoNode, planes: _IntLike | _SequenceLike[_IntLike] | None = None, lut: _IntLike | _SequenceLike[_IntLike] | None = None, lutf: _FloatLike | _SequenceLike[_FloatLike] | None = None, function: _VSCallback_std_Lut_function | None = None, bits: _IntLike | None = None, floatout: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Lut2(self, clipa: VideoNode, clipb: VideoNode, planes: _IntLike | _SequenceLike[_IntLike] | None = None, lut: _IntLike | _SequenceLike[_IntLike] | None = None, lutf: _FloatLike | _SequenceLike[_FloatLike] | None = None, function: _VSCallback_std_Lut2_function | None = None, bits: _IntLike | None = None, floatout: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def MakeDiff(self, clipa: VideoNode, clipb: VideoNode, planes: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def MakeFullDiff(self, clipa: VideoNode, clipb: VideoNode) -> VideoNode: ...
            @_Wrapper.Function
            def MaskedMerge(self, clipa: VideoNode, clipb: VideoNode, mask: VideoNode, planes: _IntLike | _SequenceLike[_IntLike] | None = None, first_plane: _IntLike | None = None, premultiplied: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Maximum(self, clip: VideoNode, planes: _IntLike | _SequenceLike[_IntLike] | None = None, threshold: _FloatLike | None = None, coordinates: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Median(self, clip: VideoNode, planes: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Merge(self, clipa: VideoNode, clipb: VideoNode, weight: _FloatLike | _SequenceLike[_FloatLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def MergeDiff(self, clipa: VideoNode, clipb: VideoNode, planes: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def MergeFullDiff(self, clipa: VideoNode, clipb: VideoNode) -> VideoNode: ...
            @_Wrapper.Function
            def Minimum(self, clip: VideoNode, planes: _IntLike | _SequenceLike[_IntLike] | None = None, threshold: _FloatLike | None = None, coordinates: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper_Core_bound_ModifyFrame.Function
            def ModifyFrame(self, clip: VideoNode, clips: VideoNode | _SequenceLike[VideoNode], selector: _VSCallback_std_ModifyFrame_selector) -> VideoNode: ...
            @_Wrapper.Function
            def PEMVerifier(self, clip: VideoNode, upper: _FloatLike | _SequenceLike[_FloatLike] | None = None, lower: _FloatLike | _SequenceLike[_FloatLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def PlaneStats(self, clipa: VideoNode, clipb: VideoNode | None = None, plane: _IntLike | None = None, prop: _AnyStr | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def PreMultiply(self, clip: VideoNode, alpha: VideoNode) -> VideoNode: ...
            @_Wrapper.Function
            def Prewitt(self, clip: VideoNode, planes: _IntLike | _SequenceLike[_IntLike] | None = None, scale: _FloatLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def PropToClip(self, clip: VideoNode, prop: _AnyStr | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def RemoveFrameProps(self, clip: VideoNode, props: _AnyStr | _SequenceLike[_AnyStr] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Reverse(self, clip: VideoNode) -> VideoNode: ...
            @_Wrapper.Function
            def SelectEvery(self, clip: VideoNode, cycle: _IntLike, offsets: _IntLike | _SequenceLike[_IntLike], modify_duration: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def SeparateFields(self, clip: VideoNode, tff: _IntLike | None = None, modify_duration: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def SetAudioCache(self, clip: AudioNode, mode: _IntLike | None = None, fixedsize: _IntLike | None = None, maxsize: _IntLike | None = None, maxhistory: _IntLike | None = None) -> None: ...
            @_Wrapper.Function
            def SetFieldBased(self, clip: VideoNode, value: _IntLike) -> VideoNode: ...
            @_Wrapper.Function
            def SetFrameProp(self, clip: VideoNode, prop: _AnyStr, intval: _IntLike | _SequenceLike[_IntLike] | None = None, floatval: _FloatLike | _SequenceLike[_FloatLike] | None = None, data: _AnyStr | _SequenceLike[_AnyStr] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def SetFrameProps(self, clip: VideoNode, **kwargs: Any) -> VideoNode: ...
            @_Wrapper.Function
            def SetMaxCPU(self, cpu: _AnyStr) -> _AnyStr: ...
            @_Wrapper.Function
            def SetVideoCache(self, clip: VideoNode, mode: _IntLike | None = None, fixedsize: _IntLike | None = None, maxsize: _IntLike | None = None, maxhistory: _IntLike | None = None) -> None: ...
            @_Wrapper.Function
            def ShuffleChannels(self, clips: AudioNode | _SequenceLike[AudioNode], channels_in: _IntLike | _SequenceLike[_IntLike], channels_out: _IntLike | _SequenceLike[_IntLike]) -> AudioNode: ...
            @_Wrapper.Function
            def ShufflePlanes(self, clips: VideoNode | _SequenceLike[VideoNode], planes: _IntLike | _SequenceLike[_IntLike], colorfamily: _IntLike, prop_src: VideoNode | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Sobel(self, clip: VideoNode, planes: _IntLike | _SequenceLike[_IntLike] | None = None, scale: _FloatLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Splice(self, clips: VideoNode | _SequenceLike[VideoNode], mismatch: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def SplitChannels(self, clip: AudioNode) -> AudioNode | list[AudioNode]: ...
            @_Wrapper.Function
            def SplitPlanes(self, clip: VideoNode) -> VideoNode | list[VideoNode]: ...
            @_Wrapper.Function
            def StackHorizontal(self, clips: VideoNode | _SequenceLike[VideoNode]) -> VideoNode: ...
            @_Wrapper.Function
            def StackVertical(self, clips: VideoNode | _SequenceLike[VideoNode]) -> VideoNode: ...
            @_Wrapper.Function
            def TestAudio(self, channels: _IntLike | _SequenceLike[_IntLike] | None = None, bits: _IntLike | None = None, isfloat: _IntLike | None = None, samplerate: _IntLike | None = None, length: _IntLike | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def Transpose(self, clip: VideoNode) -> VideoNode: ...
            @_Wrapper.Function
            def Trim(self, clip: VideoNode, first: _IntLike | None = None, last: _IntLike | None = None, length: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Turn180(self, clip: VideoNode) -> VideoNode: ...

    class _VideoNode_bound:
        class Plugin(_VSPlugin):
            @_Wrapper.Function
            def AddBorders(self, left: _IntLike | None = None, right: _IntLike | None = None, top: _IntLike | None = None, bottom: _IntLike | None = None, color: _FloatLike | _SequenceLike[_FloatLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def AssumeFPS(self, src: VideoNode | None = None, fpsnum: _IntLike | None = None, fpsden: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def AverageFrames(self, weights: _FloatLike | _SequenceLike[_FloatLike], scale: _FloatLike | None = None, scenechange: _IntLike | None = None, planes: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Binarize(self, threshold: _FloatLike | _SequenceLike[_FloatLike] | None = None, v0: _FloatLike | _SequenceLike[_FloatLike] | None = None, v1: _FloatLike | _SequenceLike[_FloatLike] | None = None, planes: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def BinarizeMask(self, threshold: _FloatLike | _SequenceLike[_FloatLike] | None = None, v0: _FloatLike | _SequenceLike[_FloatLike] | None = None, v1: _FloatLike | _SequenceLike[_FloatLike] | None = None, planes: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def BlankClip(self, width: _IntLike | None = None, height: _IntLike | None = None, format: _IntLike | None = None, length: _IntLike | None = None, fpsnum: _IntLike | None = None, fpsden: _IntLike | None = None, color: _FloatLike | _SequenceLike[_FloatLike] | None = None, keep: _IntLike | None = None, varsize: _IntLike | None = None, varformat: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def BoxBlur(self, planes: _IntLike | _SequenceLike[_IntLike] | None = None, hradius: _IntLike | None = None, hpasses: _IntLike | None = None, vradius: _IntLike | None = None, vpasses: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Cache(self, size: _IntLike | None = None, fixed: _IntLike | None = None, make_linear: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def ClipToProp(self, mclip: VideoNode, prop: _AnyStr | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Convolution(self, matrix: _FloatLike | _SequenceLike[_FloatLike], bias: _FloatLike | None = None, divisor: _FloatLike | None = None, planes: _IntLike | _SequenceLike[_IntLike] | None = None, saturate: _IntLike | None = None, mode: _AnyStr | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def CopyFrameProps(self, prop_src: VideoNode, props: _AnyStr | _SequenceLike[_AnyStr] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Crop(self, left: _IntLike | None = None, right: _IntLike | None = None, top: _IntLike | None = None, bottom: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def CropAbs(self, width: _IntLike, height: _IntLike, left: _IntLike | None = None, top: _IntLike | None = None, x: _IntLike | None = None, y: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def CropRel(self, left: _IntLike | None = None, right: _IntLike | None = None, top: _IntLike | None = None, bottom: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Deflate(self, planes: _IntLike | _SequenceLike[_IntLike] | None = None, threshold: _FloatLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def DeleteFrames(self, frames: _IntLike | _SequenceLike[_IntLike]) -> VideoNode: ...
            @_Wrapper.Function
            def DoubleWeave(self, tff: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def DuplicateFrames(self, frames: _IntLike | _SequenceLike[_IntLike]) -> VideoNode: ...
            @_Wrapper.Function
            def Expr(self, expr: _AnyStr | _SequenceLike[_AnyStr], format: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def FlipHorizontal(self) -> VideoNode: ...
            @_Wrapper.Function
            def FlipVertical(self) -> VideoNode: ...
            @_Wrapper_VideoNode_bound_FrameEval.Function
            def FrameEval(self, eval: _VSCallback_std_FrameEval_eval, prop_src: VideoNode | _SequenceLike[VideoNode] | None = None, clip_src: VideoNode | _SequenceLike[VideoNode] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def FreezeFrames(self, first: _IntLike | _SequenceLike[_IntLike] | None = None, last: _IntLike | _SequenceLike[_IntLike] | None = None, replacement: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Inflate(self, planes: _IntLike | _SequenceLike[_IntLike] | None = None, threshold: _FloatLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Interleave(self, extend: _IntLike | None = None, mismatch: _IntLike | None = None, modify_duration: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Invert(self, planes: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def InvertMask(self, planes: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Levels(self, min_in: _FloatLike | _SequenceLike[_FloatLike] | None = None, max_in: _FloatLike | _SequenceLike[_FloatLike] | None = None, gamma: _FloatLike | _SequenceLike[_FloatLike] | None = None, min_out: _FloatLike | _SequenceLike[_FloatLike] | None = None, max_out: _FloatLike | _SequenceLike[_FloatLike] | None = None, planes: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Limiter(self, min: _FloatLike | _SequenceLike[_FloatLike] | None = None, max: _FloatLike | _SequenceLike[_FloatLike] | None = None, planes: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Loop(self, times: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Lut(self, planes: _IntLike | _SequenceLike[_IntLike] | None = None, lut: _IntLike | _SequenceLike[_IntLike] | None = None, lutf: _FloatLike | _SequenceLike[_FloatLike] | None = None, function: _VSCallback_std_Lut_function | None = None, bits: _IntLike | None = None, floatout: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Lut2(self, clipb: VideoNode, planes: _IntLike | _SequenceLike[_IntLike] | None = None, lut: _IntLike | _SequenceLike[_IntLike] | None = None, lutf: _FloatLike | _SequenceLike[_FloatLike] | None = None, function: _VSCallback_std_Lut2_function | None = None, bits: _IntLike | None = None, floatout: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def MakeDiff(self, clipb: VideoNode, planes: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def MakeFullDiff(self, clipb: VideoNode) -> VideoNode: ...
            @_Wrapper.Function
            def MaskedMerge(self, clipb: VideoNode, mask: VideoNode, planes: _IntLike | _SequenceLike[_IntLike] | None = None, first_plane: _IntLike | None = None, premultiplied: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Maximum(self, planes: _IntLike | _SequenceLike[_IntLike] | None = None, threshold: _FloatLike | None = None, coordinates: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Median(self, planes: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Merge(self, clipb: VideoNode, weight: _FloatLike | _SequenceLike[_FloatLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def MergeDiff(self, clipb: VideoNode, planes: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def MergeFullDiff(self, clipb: VideoNode) -> VideoNode: ...
            @_Wrapper.Function
            def Minimum(self, planes: _IntLike | _SequenceLike[_IntLike] | None = None, threshold: _FloatLike | None = None, coordinates: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper_VideoNode_bound_ModifyFrame.Function
            def ModifyFrame(self, clips: VideoNode | _SequenceLike[VideoNode], selector: _VSCallback_std_ModifyFrame_selector) -> VideoNode: ...
            @_Wrapper.Function
            def PEMVerifier(self, upper: _FloatLike | _SequenceLike[_FloatLike] | None = None, lower: _FloatLike | _SequenceLike[_FloatLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def PlaneStats(self, clipb: VideoNode | None = None, plane: _IntLike | None = None, prop: _AnyStr | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def PreMultiply(self, alpha: VideoNode) -> VideoNode: ...
            @_Wrapper.Function
            def Prewitt(self, planes: _IntLike | _SequenceLike[_IntLike] | None = None, scale: _FloatLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def PropToClip(self, prop: _AnyStr | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def RemoveFrameProps(self, props: _AnyStr | _SequenceLike[_AnyStr] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Reverse(self) -> VideoNode: ...
            @_Wrapper.Function
            def SelectEvery(self, cycle: _IntLike, offsets: _IntLike | _SequenceLike[_IntLike], modify_duration: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def SeparateFields(self, tff: _IntLike | None = None, modify_duration: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def SetFieldBased(self, value: _IntLike) -> VideoNode: ...
            @_Wrapper.Function
            def SetFrameProp(self, prop: _AnyStr, intval: _IntLike | _SequenceLike[_IntLike] | None = None, floatval: _FloatLike | _SequenceLike[_FloatLike] | None = None, data: _AnyStr | _SequenceLike[_AnyStr] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def SetFrameProps(self, **kwargs: Any) -> VideoNode: ...
            @_Wrapper.Function
            def SetVideoCache(self, mode: _IntLike | None = None, fixedsize: _IntLike | None = None, maxsize: _IntLike | None = None, maxhistory: _IntLike | None = None) -> None: ...
            @_Wrapper.Function
            def ShufflePlanes(self, planes: _IntLike | _SequenceLike[_IntLike], colorfamily: _IntLike, prop_src: VideoNode | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Sobel(self, planes: _IntLike | _SequenceLike[_IntLike] | None = None, scale: _FloatLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Splice(self, mismatch: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def SplitPlanes(self) -> VideoNode | list[VideoNode]: ...
            @_Wrapper.Function
            def StackHorizontal(self) -> VideoNode: ...
            @_Wrapper.Function
            def StackVertical(self) -> VideoNode: ...
            @_Wrapper.Function
            def Transpose(self) -> VideoNode: ...
            @_Wrapper.Function
            def Trim(self, first: _IntLike | None = None, last: _IntLike | None = None, length: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Turn180(self) -> VideoNode: ...

    class _AudioNode_bound:
        class Plugin(_VSPlugin):
            @_Wrapper.Function
            def AssumeSampleRate(self, src: AudioNode | None = None, samplerate: _IntLike | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def AudioGain(self, gain: _FloatLike | _SequenceLike[_FloatLike] | None = None, overflow_error: _IntLike | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def AudioLoop(self, times: _IntLike | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def AudioMix(self, matrix: _FloatLike | _SequenceLike[_FloatLike], channels_out: _IntLike | _SequenceLike[_IntLike], overflow_error: _IntLike | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def AudioReverse(self) -> AudioNode: ...
            @_Wrapper.Function
            def AudioSplice(self) -> AudioNode: ...
            @_Wrapper.Function
            def AudioTrim(self, first: _IntLike | None = None, last: _IntLike | None = None, length: _IntLike | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def BlankAudio(self, channels: _IntLike | _SequenceLike[_IntLike] | None = None, bits: _IntLike | None = None, sampletype: _IntLike | None = None, samplerate: _IntLike | None = None, length: _IntLike | None = None, keep: _IntLike | None = None) -> AudioNode: ...
            @_Wrapper.Function
            def SetAudioCache(self, mode: _IntLike | None = None, fixedsize: _IntLike | None = None, maxsize: _IntLike | None = None, maxhistory: _IntLike | None = None) -> None: ...
            @_Wrapper.Function
            def ShuffleChannels(self, channels_in: _IntLike | _SequenceLike[_IntLike], channels_out: _IntLike | _SequenceLike[_IntLike]) -> AudioNode: ...
            @_Wrapper.Function
            def SplitChannels(self) -> AudioNode | list[AudioNode]: ...

# </implementation/std>

# <implementation/text>
class _text:
    class _Core_bound:
        class Plugin(_VSPlugin):
            @_Wrapper.Function
            def ClipInfo(self, clip: VideoNode, alignment: _IntLike | None = None, scale: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def CoreInfo(self, clip: VideoNode | None = None, alignment: _IntLike | None = None, scale: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def FrameNum(self, clip: VideoNode, alignment: _IntLike | None = None, scale: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def FrameProps(self, clip: VideoNode, props: _AnyStr | _SequenceLike[_AnyStr] | None = None, alignment: _IntLike | None = None, scale: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Text(self, clip: VideoNode, text: _AnyStr, alignment: _IntLike | None = None, scale: _IntLike | None = None) -> VideoNode: ...

    class _VideoNode_bound:
        class Plugin(_VSPlugin):
            @_Wrapper.Function
            def ClipInfo(self, alignment: _IntLike | None = None, scale: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def CoreInfo(self, alignment: _IntLike | None = None, scale: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def FrameNum(self, alignment: _IntLike | None = None, scale: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def FrameProps(self, props: _AnyStr | _SequenceLike[_AnyStr] | None = None, alignment: _IntLike | None = None, scale: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Text(self, text: _AnyStr, alignment: _IntLike | None = None, scale: _IntLike | None = None) -> VideoNode: ...

# </implementation/text>

# <implementation/vszip>
class _vszip:
    class _Core_bound:
        class Plugin(_VSPlugin):
            @_Wrapper.Function
            def AdaptiveBinarize(self, clip: VideoNode, clip2: VideoNode, c: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Bilateral(self, clip: VideoNode, ref: VideoNode | None = None, sigmaS: _FloatLike | _SequenceLike[_FloatLike] | None = None, sigmaR: _FloatLike | _SequenceLike[_FloatLike] | None = None, planes: _IntLike | _SequenceLike[_IntLike] | None = None, algorithm: _IntLike | _SequenceLike[_IntLike] | None = None, PBFICnum: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def BoxBlur(self, clip: VideoNode, planes: _IntLike | _SequenceLike[_IntLike] | None = None, hradius: _IntLike | None = None, hpasses: _IntLike | None = None, vradius: _IntLike | None = None, vpasses: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def CLAHE(self, clip: VideoNode, limit: _IntLike | None = None, tiles: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Checkmate(self, clip: VideoNode, thr: _IntLike | None = None, tmax: _IntLike | None = None, tthr2: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def ColorMap(self, clip: VideoNode, color: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def CombMask(self, clip: VideoNode, cthresh: _IntLike | None = None, mthresh: _IntLike | None = None, expand: _IntLike | None = None, metric: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def CombMaskMT(self, clip: VideoNode, thY1: _IntLike | None = None, thY2: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Deband(self, clip: VideoNode, range: _IntLike | None = None, thr: _FloatLike | _SequenceLike[_FloatLike] | None = None, grain: _FloatLike | _SequenceLike[_FloatLike] | None = None, sample_mode: _IntLike | None = None, seed: _IntLike | None = None, blur_first: _IntLike | None = None, dynamic_grain: _IntLike | None = None, keep_tv_range: _IntLike | None = None, random_algo_ref: _IntLike | None = None, random_algo_grain: _IntLike | None = None, random_param_ref: _FloatLike | None = None, random_param_grain: _FloatLike | None = None, thr1: _FloatLike | _SequenceLike[_FloatLike] | None = None, thr2: _FloatLike | _SequenceLike[_FloatLike] | None = None, angle_boost: _FloatLike | None = None, max_angle: _FloatLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def ImageRead(self, path: _AnyStr | _SequenceLike[_AnyStr], validate: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def LimitFilter(self, flt: VideoNode, src: VideoNode, ref: VideoNode | None = None, dark_thr: _FloatLike | _SequenceLike[_FloatLike] | None = None, bright_thr: _FloatLike | _SequenceLike[_FloatLike] | None = None, elast: _FloatLike | _SequenceLike[_FloatLike] | None = None, planes: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Limiter(self, clip: VideoNode, min: _FloatLike | _SequenceLike[_FloatLike] | None = None, max: _FloatLike | _SequenceLike[_FloatLike] | None = None, tv_range: _IntLike | None = None, mask: _IntLike | None = None, planes: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def PackRGB(self, clip: VideoNode) -> VideoNode: ...
            @_Wrapper.Function
            def PlaneAverage(self, clipa: VideoNode, exclude: _IntLike | _SequenceLike[_IntLike], clipb: VideoNode | None = None, planes: _IntLike | _SequenceLike[_IntLike] | None = None, prop: _AnyStr | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def PlaneMinMax(self, clipa: VideoNode, minthr: _FloatLike | None = None, maxthr: _FloatLike | None = None, clipb: VideoNode | None = None, planes: _IntLike | _SequenceLike[_IntLike] | None = None, prop: _AnyStr | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def RFS(self, clipa: VideoNode, clipb: VideoNode, frames: _IntLike | _SequenceLike[_IntLike], mismatch: _IntLike | None = None, planes: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def SSIMULACRA2(self, reference: VideoNode, distorted: VideoNode) -> VideoNode: ...
            @_Wrapper.Function
            def XPSNR(self, reference: VideoNode, distorted: VideoNode, temporal: _IntLike | None = None, verbose: _IntLike | None = None) -> VideoNode: ...

    class _VideoNode_bound:
        class Plugin(_VSPlugin):
            @_Wrapper.Function
            def AdaptiveBinarize(self, clip2: VideoNode, c: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Bilateral(self, ref: VideoNode | None = None, sigmaS: _FloatLike | _SequenceLike[_FloatLike] | None = None, sigmaR: _FloatLike | _SequenceLike[_FloatLike] | None = None, planes: _IntLike | _SequenceLike[_IntLike] | None = None, algorithm: _IntLike | _SequenceLike[_IntLike] | None = None, PBFICnum: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def BoxBlur(self, planes: _IntLike | _SequenceLike[_IntLike] | None = None, hradius: _IntLike | None = None, hpasses: _IntLike | None = None, vradius: _IntLike | None = None, vpasses: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def CLAHE(self, limit: _IntLike | None = None, tiles: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Checkmate(self, thr: _IntLike | None = None, tmax: _IntLike | None = None, tthr2: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def ColorMap(self, color: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def CombMask(self, cthresh: _IntLike | None = None, mthresh: _IntLike | None = None, expand: _IntLike | None = None, metric: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def CombMaskMT(self, thY1: _IntLike | None = None, thY2: _IntLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Deband(self, range: _IntLike | None = None, thr: _FloatLike | _SequenceLike[_FloatLike] | None = None, grain: _FloatLike | _SequenceLike[_FloatLike] | None = None, sample_mode: _IntLike | None = None, seed: _IntLike | None = None, blur_first: _IntLike | None = None, dynamic_grain: _IntLike | None = None, keep_tv_range: _IntLike | None = None, random_algo_ref: _IntLike | None = None, random_algo_grain: _IntLike | None = None, random_param_ref: _FloatLike | None = None, random_param_grain: _FloatLike | None = None, thr1: _FloatLike | _SequenceLike[_FloatLike] | None = None, thr2: _FloatLike | _SequenceLike[_FloatLike] | None = None, angle_boost: _FloatLike | None = None, max_angle: _FloatLike | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def LimitFilter(self, src: VideoNode, ref: VideoNode | None = None, dark_thr: _FloatLike | _SequenceLike[_FloatLike] | None = None, bright_thr: _FloatLike | _SequenceLike[_FloatLike] | None = None, elast: _FloatLike | _SequenceLike[_FloatLike] | None = None, planes: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def Limiter(self, min: _FloatLike | _SequenceLike[_FloatLike] | None = None, max: _FloatLike | _SequenceLike[_FloatLike] | None = None, tv_range: _IntLike | None = None, mask: _IntLike | None = None, planes: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def PackRGB(self) -> VideoNode: ...
            @_Wrapper.Function
            def PlaneAverage(self, exclude: _IntLike | _SequenceLike[_IntLike], clipb: VideoNode | None = None, planes: _IntLike | _SequenceLike[_IntLike] | None = None, prop: _AnyStr | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def PlaneMinMax(self, minthr: _FloatLike | None = None, maxthr: _FloatLike | None = None, clipb: VideoNode | None = None, planes: _IntLike | _SequenceLike[_IntLike] | None = None, prop: _AnyStr | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def RFS(self, clipb: VideoNode, frames: _IntLike | _SequenceLike[_IntLike], mismatch: _IntLike | None = None, planes: _IntLike | _SequenceLike[_IntLike] | None = None) -> VideoNode: ...
            @_Wrapper.Function
            def SSIMULACRA2(self, distorted: VideoNode) -> VideoNode: ...
            @_Wrapper.Function
            def XPSNR(self, distorted: VideoNode, temporal: _IntLike | None = None, verbose: _IntLike | None = None) -> VideoNode: ...

# </implementation/vszip>

# </plugins/implementations>

class VideoOutputTuple(NamedTuple):
    clip: VideoNode
    alpha: VideoNode | None
    alt_output: Literal[0, 1, 2]

def clear_output(index: _IntLike = 0) -> None: ...
def clear_outputs() -> None: ...
def get_outputs() -> MappingProxyType[int, VideoOutputTuple | AudioNode]: ...
def get_output(index: _IntLike = 0) -> VideoOutputTuple | AudioNode: ...

def construct_signature(
    signature: str | Function, return_signature: str, injected: bool | None = None, name: str | None = None
) -> Signature: ...
def _construct_type(signature: str) -> Any: ...
def _construct_parameter(signature: str) -> Any: ...
def _construct_repr_wrap(value: str | Enum | VideoFormat | Iterator[str]) -> str: ...
def _construct_repr(obj: Any, **kwargs: Any) -> str: ...
