from __future__ import annotations
import typing
from typing import Any
from enum import IntEnum, IntFlag


class BlendFunction(IntEnum):
    Add = 0
    Subtract = 1
    ReverseSubtract = 2
    Min = 3
    Max = 4

class Blend(IntEnum):
    One = 0
    Zero = 1
    SourceColor = 2
    InverseSourceColor = 3
    SourceAlpha = 4
    InverseSourceAlpha = 5
    DestinationColor = 6
    InverseDestinationColor = 7
    DestinationAlpha = 8
    InverseDestinationAlpha = 9
    BlendFactor = 10
    InverseBlendFactor = 11
    SourceAlphaSaturation = 12

class ColorWriteChannels(IntFlag):
    None = 0
    Red = 1
    Green = 2
    Blue = 4
    Alpha = 8
    All = 15

class BlendState(typing.Any):
    @property
    def AlphaBlendFunction(self) -> Any: ...
    @AlphaBlendFunction.setter
    def AlphaBlendFunction(self, value: Any) -> None: ...
    @property
    def AlphaDestinationBlend(self) -> Any: ...
    @AlphaDestinationBlend.setter
    def AlphaDestinationBlend(self, value: Any) -> None: ...
    @property
    def AlphaSourceBlend(self) -> Any: ...
    @AlphaSourceBlend.setter
    def AlphaSourceBlend(self, value: Any) -> None: ...
    @property
    def ColorBlendFunction(self) -> Any: ...
    @ColorBlendFunction.setter
    def ColorBlendFunction(self, value: Any) -> None: ...
    @property
    def ColorDestinationBlend(self) -> Any: ...
    @ColorDestinationBlend.setter
    def ColorDestinationBlend(self, value: Any) -> None: ...
    @property
    def ColorSourceBlend(self) -> Any: ...
    @ColorSourceBlend.setter
    def ColorSourceBlend(self, value: Any) -> None: ...
    @property
    def ColorWriteChannels(self) -> Any: ...
    @ColorWriteChannels.setter
    def ColorWriteChannels(self, value: Any) -> None: ...
    @property
    def ColorWriteChannels1(self) -> Any: ...
    @ColorWriteChannels1.setter
    def ColorWriteChannels1(self, value: Any) -> None: ...
    @property
    def ColorWriteChannels2(self) -> Any: ...
    @ColorWriteChannels2.setter
    def ColorWriteChannels2(self, value: Any) -> None: ...
    @property
    def ColorWriteChannels3(self) -> Any: ...
    @ColorWriteChannels3.setter
    def ColorWriteChannels3(self, value: Any) -> None: ...
    @property
    def BlendFactor(self) -> Any: ...
    @BlendFactor.setter
    def BlendFactor(self, value: Any) -> None: ...
    @property
    def MultiSampleMask(self) -> Any: ...
    @MultiSampleMask.setter
    def MultiSampleMask(self, value: Any) -> None: ...
    @property
    def IndependentBlendEnable(self) -> Any: ...
    @IndependentBlendEnable.setter
    def IndependentBlendEnable(self, value: Any) -> None: ...
    def ToString(self, *args: Any, **kwargs: Any) -> Any: ...
    def GetType(self, *args: Any, **kwargs: Any) -> Any: ...
    def Equals(self, *args: Any, **kwargs: Any) -> Any: ...
    def GetHashCode(self, *args: Any, **kwargs: Any) -> Any: ...
