import typing
from System.Runtime.Serialization import IFormatter, ISurrogateSelector, StreamingContext, SerializationBinder
from System.Runtime.Serialization.Formatters import FormatterAssemblyStyle, TypeFilterLevel, FormatterTypeStyle
from System.IO import Stream

class BinaryFormatter(IFormatter):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, selector: ISurrogateSelector, context: StreamingContext) -> None: ...
    @property
    def AssemblyFormat(self) -> FormatterAssemblyStyle: ...
    @AssemblyFormat.setter
    def AssemblyFormat(self, value: FormatterAssemblyStyle) -> FormatterAssemblyStyle: ...
    @property
    def Binder(self) -> SerializationBinder: ...
    @Binder.setter
    def Binder(self, value: SerializationBinder) -> SerializationBinder: ...
    @property
    def Context(self) -> StreamingContext: ...
    @Context.setter
    def Context(self, value: StreamingContext) -> StreamingContext: ...
    @property
    def FilterLevel(self) -> TypeFilterLevel: ...
    @FilterLevel.setter
    def FilterLevel(self, value: TypeFilterLevel) -> TypeFilterLevel: ...
    @property
    def SurrogateSelector(self) -> ISurrogateSelector: ...
    @SurrogateSelector.setter
    def SurrogateSelector(self, value: ISurrogateSelector) -> ISurrogateSelector: ...
    @property
    def TypeFormat(self) -> FormatterTypeStyle: ...
    @TypeFormat.setter
    def TypeFormat(self, value: FormatterTypeStyle) -> FormatterTypeStyle: ...
    def Deserialize(self, serializationStream: Stream) -> typing.Any: ...
    def Serialize(self, serializationStream: Stream, graph: typing.Any) -> None: ...

