import typing, abc
from System import EventArgs, MulticastDelegate, IAsyncResult, AsyncCallback, Array_1, Decimal, SystemException, Exception
from System.Reflection import MethodInfo, MethodBase
from System.Xml.Serialization import XmlSerializerNamespaces
from System.Xml import XmlAttribute, XmlResolver, XmlReader, XmlWriter, XmlNamespaceManager, XmlQualifiedName, XmlTokenizedType, XmlNameTable, IXmlNamespaceResolver
from System.IO import TextReader, Stream, TextWriter
from System.Collections import IDictionary, CollectionBase, IEnumerator, ICollection, IDictionaryEnumerator
from System.Runtime.Serialization import SerializationInfo, StreamingContext

class IXmlSchemaInfo(typing.Protocol):
    @property
    def IsDefault(self) -> bool: ...
    @property
    def IsNil(self) -> bool: ...
    @property
    def MemberType(self) -> XmlSchemaSimpleType: ...
    @property
    def SchemaAttribute(self) -> XmlSchemaAttribute: ...
    @property
    def SchemaElement(self) -> XmlSchemaElement: ...
    @property
    def SchemaType(self) -> XmlSchemaType: ...
    @property
    def Validity(self) -> XmlSchemaValidity: ...


class ValidationEventArgs(EventArgs):
    @property
    def Exception(self) -> XmlSchemaException: ...
    @property
    def Message(self) -> str: ...
    @property
    def Severity(self) -> XmlSeverityType: ...


class ValidationEventHandler(MulticastDelegate):
    def __init__(self, object: typing.Any, method: int) -> None: ...
    @property
    def Method(self) -> MethodInfo: ...
    @property
    def Target(self) -> typing.Any: ...
    def BeginInvoke(self, sender: typing.Any, e: ValidationEventArgs, callback: AsyncCallback, object: typing.Any) -> IAsyncResult: ...
    def EndInvoke(self, result: IAsyncResult) -> None: ...
    def Invoke(self, sender: typing.Any, e: ValidationEventArgs) -> None: ...


class XmlSchema(XmlSchemaObject):
    def __init__(self) -> None: ...
    InstanceNamespace : str
    Namespace : str
    @property
    def AttributeFormDefault(self) -> XmlSchemaForm: ...
    @AttributeFormDefault.setter
    def AttributeFormDefault(self, value: XmlSchemaForm) -> XmlSchemaForm: ...
    @property
    def AttributeGroups(self) -> XmlSchemaObjectTable: ...
    @property
    def Attributes(self) -> XmlSchemaObjectTable: ...
    @property
    def BlockDefault(self) -> XmlSchemaDerivationMethod: ...
    @BlockDefault.setter
    def BlockDefault(self, value: XmlSchemaDerivationMethod) -> XmlSchemaDerivationMethod: ...
    @property
    def ElementFormDefault(self) -> XmlSchemaForm: ...
    @ElementFormDefault.setter
    def ElementFormDefault(self, value: XmlSchemaForm) -> XmlSchemaForm: ...
    @property
    def Elements(self) -> XmlSchemaObjectTable: ...
    @property
    def FinalDefault(self) -> XmlSchemaDerivationMethod: ...
    @FinalDefault.setter
    def FinalDefault(self, value: XmlSchemaDerivationMethod) -> XmlSchemaDerivationMethod: ...
    @property
    def Groups(self) -> XmlSchemaObjectTable: ...
    @property
    def Id(self) -> str: ...
    @Id.setter
    def Id(self, value: str) -> str: ...
    @property
    def Includes(self) -> XmlSchemaObjectCollection: ...
    @property
    def IsCompiled(self) -> bool: ...
    @property
    def Items(self) -> XmlSchemaObjectCollection: ...
    @property
    def LineNumber(self) -> int: ...
    @LineNumber.setter
    def LineNumber(self, value: int) -> int: ...
    @property
    def LinePosition(self) -> int: ...
    @LinePosition.setter
    def LinePosition(self, value: int) -> int: ...
    @property
    def Namespaces(self) -> XmlSerializerNamespaces: ...
    @Namespaces.setter
    def Namespaces(self, value: XmlSerializerNamespaces) -> XmlSerializerNamespaces: ...
    @property
    def Notations(self) -> XmlSchemaObjectTable: ...
    @property
    def Parent(self) -> XmlSchemaObject: ...
    @Parent.setter
    def Parent(self, value: XmlSchemaObject) -> XmlSchemaObject: ...
    @property
    def SchemaTypes(self) -> XmlSchemaObjectTable: ...
    @property
    def SourceUri(self) -> str: ...
    @SourceUri.setter
    def SourceUri(self, value: str) -> str: ...
    @property
    def TargetNamespace(self) -> str: ...
    @TargetNamespace.setter
    def TargetNamespace(self, value: str) -> str: ...
    @property
    def UnhandledAttributes(self) -> Array_1[XmlAttribute]: ...
    @UnhandledAttributes.setter
    def UnhandledAttributes(self, value: Array_1[XmlAttribute]) -> Array_1[XmlAttribute]: ...
    @property
    def Version(self) -> str: ...
    @Version.setter
    def Version(self, value: str) -> str: ...
    # Skipped Compile due to it being static, abstract and generic.

    Compile : Compile_MethodGroup
    class Compile_MethodGroup:
        @typing.overload
        def __call__(self, validationEventHandler: ValidationEventHandler) -> None:...
        @typing.overload
        def __call__(self, validationEventHandler: ValidationEventHandler, resolver: XmlResolver) -> None:...

    # Skipped Read due to it being static, abstract and generic.

    Read : Read_MethodGroup
    class Read_MethodGroup:
        @typing.overload
        def __call__(self, reader: TextReader, validationEventHandler: ValidationEventHandler) -> XmlSchema:...
        @typing.overload
        def __call__(self, stream: Stream, validationEventHandler: ValidationEventHandler) -> XmlSchema:...
        @typing.overload
        def __call__(self, reader: XmlReader, validationEventHandler: ValidationEventHandler) -> XmlSchema:...

    # Skipped Write due to it being static, abstract and generic.

    Write : Write_MethodGroup
    class Write_MethodGroup:
        @typing.overload
        def __call__(self, stream: Stream) -> None:...
        @typing.overload
        def __call__(self, writer: TextWriter) -> None:...
        @typing.overload
        def __call__(self, writer: XmlWriter) -> None:...
        @typing.overload
        def __call__(self, stream: Stream, namespaceManager: XmlNamespaceManager) -> None:...
        @typing.overload
        def __call__(self, writer: TextWriter, namespaceManager: XmlNamespaceManager) -> None:...
        @typing.overload
        def __call__(self, writer: XmlWriter, namespaceManager: XmlNamespaceManager) -> None:...



class XmlSchemaAnnotated(XmlSchemaObject):
    def __init__(self) -> None: ...
    @property
    def Annotation(self) -> XmlSchemaAnnotation: ...
    @Annotation.setter
    def Annotation(self, value: XmlSchemaAnnotation) -> XmlSchemaAnnotation: ...
    @property
    def Id(self) -> str: ...
    @Id.setter
    def Id(self, value: str) -> str: ...
    @property
    def LineNumber(self) -> int: ...
    @LineNumber.setter
    def LineNumber(self, value: int) -> int: ...
    @property
    def LinePosition(self) -> int: ...
    @LinePosition.setter
    def LinePosition(self, value: int) -> int: ...
    @property
    def Namespaces(self) -> XmlSerializerNamespaces: ...
    @Namespaces.setter
    def Namespaces(self, value: XmlSerializerNamespaces) -> XmlSerializerNamespaces: ...
    @property
    def Parent(self) -> XmlSchemaObject: ...
    @Parent.setter
    def Parent(self, value: XmlSchemaObject) -> XmlSchemaObject: ...
    @property
    def SourceUri(self) -> str: ...
    @SourceUri.setter
    def SourceUri(self, value: str) -> str: ...
    @property
    def UnhandledAttributes(self) -> Array_1[XmlAttribute]: ...
    @UnhandledAttributes.setter
    def UnhandledAttributes(self, value: Array_1[XmlAttribute]) -> Array_1[XmlAttribute]: ...


class XmlSchemaAnnotation(XmlSchemaObject):
    def __init__(self) -> None: ...
    @property
    def Id(self) -> str: ...
    @Id.setter
    def Id(self, value: str) -> str: ...
    @property
    def Items(self) -> XmlSchemaObjectCollection: ...
    @property
    def LineNumber(self) -> int: ...
    @LineNumber.setter
    def LineNumber(self, value: int) -> int: ...
    @property
    def LinePosition(self) -> int: ...
    @LinePosition.setter
    def LinePosition(self, value: int) -> int: ...
    @property
    def Namespaces(self) -> XmlSerializerNamespaces: ...
    @Namespaces.setter
    def Namespaces(self, value: XmlSerializerNamespaces) -> XmlSerializerNamespaces: ...
    @property
    def Parent(self) -> XmlSchemaObject: ...
    @Parent.setter
    def Parent(self, value: XmlSchemaObject) -> XmlSchemaObject: ...
    @property
    def SourceUri(self) -> str: ...
    @SourceUri.setter
    def SourceUri(self, value: str) -> str: ...
    @property
    def UnhandledAttributes(self) -> Array_1[XmlAttribute]: ...
    @UnhandledAttributes.setter
    def UnhandledAttributes(self, value: Array_1[XmlAttribute]) -> Array_1[XmlAttribute]: ...


class XmlSchemaAnyAttribute(XmlSchemaAnnotated):
    def __init__(self) -> None: ...
    @property
    def Annotation(self) -> XmlSchemaAnnotation: ...
    @Annotation.setter
    def Annotation(self, value: XmlSchemaAnnotation) -> XmlSchemaAnnotation: ...
    @property
    def Id(self) -> str: ...
    @Id.setter
    def Id(self, value: str) -> str: ...
    @property
    def LineNumber(self) -> int: ...
    @LineNumber.setter
    def LineNumber(self, value: int) -> int: ...
    @property
    def LinePosition(self) -> int: ...
    @LinePosition.setter
    def LinePosition(self, value: int) -> int: ...
    @property
    def Namespace(self) -> str: ...
    @Namespace.setter
    def Namespace(self, value: str) -> str: ...
    @property
    def Namespaces(self) -> XmlSerializerNamespaces: ...
    @Namespaces.setter
    def Namespaces(self, value: XmlSerializerNamespaces) -> XmlSerializerNamespaces: ...
    @property
    def Parent(self) -> XmlSchemaObject: ...
    @Parent.setter
    def Parent(self, value: XmlSchemaObject) -> XmlSchemaObject: ...
    @property
    def ProcessContents(self) -> XmlSchemaContentProcessing: ...
    @ProcessContents.setter
    def ProcessContents(self, value: XmlSchemaContentProcessing) -> XmlSchemaContentProcessing: ...
    @property
    def SourceUri(self) -> str: ...
    @SourceUri.setter
    def SourceUri(self, value: str) -> str: ...
    @property
    def UnhandledAttributes(self) -> Array_1[XmlAttribute]: ...
    @UnhandledAttributes.setter
    def UnhandledAttributes(self, value: Array_1[XmlAttribute]) -> Array_1[XmlAttribute]: ...


class XmlSchemaAttribute(XmlSchemaAnnotated):
    def __init__(self) -> None: ...
    @property
    def Annotation(self) -> XmlSchemaAnnotation: ...
    @Annotation.setter
    def Annotation(self, value: XmlSchemaAnnotation) -> XmlSchemaAnnotation: ...
    @property
    def AttributeSchemaType(self) -> XmlSchemaSimpleType: ...
    @property
    def AttributeType(self) -> typing.Any: ...
    @property
    def DefaultValue(self) -> str: ...
    @DefaultValue.setter
    def DefaultValue(self, value: str) -> str: ...
    @property
    def FixedValue(self) -> str: ...
    @FixedValue.setter
    def FixedValue(self, value: str) -> str: ...
    @property
    def Form(self) -> XmlSchemaForm: ...
    @Form.setter
    def Form(self, value: XmlSchemaForm) -> XmlSchemaForm: ...
    @property
    def Id(self) -> str: ...
    @Id.setter
    def Id(self, value: str) -> str: ...
    @property
    def LineNumber(self) -> int: ...
    @LineNumber.setter
    def LineNumber(self, value: int) -> int: ...
    @property
    def LinePosition(self) -> int: ...
    @LinePosition.setter
    def LinePosition(self, value: int) -> int: ...
    @property
    def Name(self) -> str: ...
    @Name.setter
    def Name(self, value: str) -> str: ...
    @property
    def Namespaces(self) -> XmlSerializerNamespaces: ...
    @Namespaces.setter
    def Namespaces(self, value: XmlSerializerNamespaces) -> XmlSerializerNamespaces: ...
    @property
    def Parent(self) -> XmlSchemaObject: ...
    @Parent.setter
    def Parent(self, value: XmlSchemaObject) -> XmlSchemaObject: ...
    @property
    def QualifiedName(self) -> XmlQualifiedName: ...
    @property
    def RefName(self) -> XmlQualifiedName: ...
    @RefName.setter
    def RefName(self, value: XmlQualifiedName) -> XmlQualifiedName: ...
    @property
    def SchemaType(self) -> XmlSchemaSimpleType: ...
    @SchemaType.setter
    def SchemaType(self, value: XmlSchemaSimpleType) -> XmlSchemaSimpleType: ...
    @property
    def SchemaTypeName(self) -> XmlQualifiedName: ...
    @SchemaTypeName.setter
    def SchemaTypeName(self, value: XmlQualifiedName) -> XmlQualifiedName: ...
    @property
    def SourceUri(self) -> str: ...
    @SourceUri.setter
    def SourceUri(self, value: str) -> str: ...
    @property
    def UnhandledAttributes(self) -> Array_1[XmlAttribute]: ...
    @UnhandledAttributes.setter
    def UnhandledAttributes(self, value: Array_1[XmlAttribute]) -> Array_1[XmlAttribute]: ...
    @property
    def Use(self) -> XmlSchemaUse: ...
    @Use.setter
    def Use(self, value: XmlSchemaUse) -> XmlSchemaUse: ...


class XmlSchemaCompilationSettings:
    def __init__(self) -> None: ...
    @property
    def EnableUpaCheck(self) -> bool: ...
    @EnableUpaCheck.setter
    def EnableUpaCheck(self, value: bool) -> bool: ...


class XmlSchemaComplexType(XmlSchemaType):
    def __init__(self) -> None: ...
    @property
    def Annotation(self) -> XmlSchemaAnnotation: ...
    @Annotation.setter
    def Annotation(self, value: XmlSchemaAnnotation) -> XmlSchemaAnnotation: ...
    @property
    def AnyAttribute(self) -> XmlSchemaAnyAttribute: ...
    @AnyAttribute.setter
    def AnyAttribute(self, value: XmlSchemaAnyAttribute) -> XmlSchemaAnyAttribute: ...
    @property
    def Attributes(self) -> XmlSchemaObjectCollection: ...
    @property
    def AttributeUses(self) -> XmlSchemaObjectTable: ...
    @property
    def AttributeWildcard(self) -> XmlSchemaAnyAttribute: ...
    @property
    def BaseSchemaType(self) -> typing.Any: ...
    @property
    def BaseXmlSchemaType(self) -> XmlSchemaType: ...
    @property
    def Block(self) -> XmlSchemaDerivationMethod: ...
    @Block.setter
    def Block(self, value: XmlSchemaDerivationMethod) -> XmlSchemaDerivationMethod: ...
    @property
    def BlockResolved(self) -> XmlSchemaDerivationMethod: ...
    @property
    def ContentModel(self) -> XmlSchemaContentModel: ...
    @ContentModel.setter
    def ContentModel(self, value: XmlSchemaContentModel) -> XmlSchemaContentModel: ...
    @property
    def ContentType(self) -> XmlSchemaContentType: ...
    @property
    def ContentTypeParticle(self) -> XmlSchemaParticle: ...
    @property
    def Datatype(self) -> XmlSchemaDatatype: ...
    @property
    def DerivedBy(self) -> XmlSchemaDerivationMethod: ...
    @property
    def Final(self) -> XmlSchemaDerivationMethod: ...
    @Final.setter
    def Final(self, value: XmlSchemaDerivationMethod) -> XmlSchemaDerivationMethod: ...
    @property
    def FinalResolved(self) -> XmlSchemaDerivationMethod: ...
    @property
    def Id(self) -> str: ...
    @Id.setter
    def Id(self, value: str) -> str: ...
    @property
    def IsAbstract(self) -> bool: ...
    @IsAbstract.setter
    def IsAbstract(self, value: bool) -> bool: ...
    @property
    def IsMixed(self) -> bool: ...
    @IsMixed.setter
    def IsMixed(self, value: bool) -> bool: ...
    @property
    def LineNumber(self) -> int: ...
    @LineNumber.setter
    def LineNumber(self, value: int) -> int: ...
    @property
    def LinePosition(self) -> int: ...
    @LinePosition.setter
    def LinePosition(self, value: int) -> int: ...
    @property
    def Name(self) -> str: ...
    @Name.setter
    def Name(self, value: str) -> str: ...
    @property
    def Namespaces(self) -> XmlSerializerNamespaces: ...
    @Namespaces.setter
    def Namespaces(self, value: XmlSerializerNamespaces) -> XmlSerializerNamespaces: ...
    @property
    def Parent(self) -> XmlSchemaObject: ...
    @Parent.setter
    def Parent(self, value: XmlSchemaObject) -> XmlSchemaObject: ...
    @property
    def Particle(self) -> XmlSchemaParticle: ...
    @Particle.setter
    def Particle(self, value: XmlSchemaParticle) -> XmlSchemaParticle: ...
    @property
    def QualifiedName(self) -> XmlQualifiedName: ...
    @property
    def SourceUri(self) -> str: ...
    @SourceUri.setter
    def SourceUri(self, value: str) -> str: ...
    @property
    def TypeCode(self) -> XmlTypeCode: ...
    @property
    def UnhandledAttributes(self) -> Array_1[XmlAttribute]: ...
    @UnhandledAttributes.setter
    def UnhandledAttributes(self, value: Array_1[XmlAttribute]) -> Array_1[XmlAttribute]: ...


class XmlSchemaContent(XmlSchemaAnnotated, abc.ABC):
    @property
    def Annotation(self) -> XmlSchemaAnnotation: ...
    @Annotation.setter
    def Annotation(self, value: XmlSchemaAnnotation) -> XmlSchemaAnnotation: ...
    @property
    def Id(self) -> str: ...
    @Id.setter
    def Id(self, value: str) -> str: ...
    @property
    def LineNumber(self) -> int: ...
    @LineNumber.setter
    def LineNumber(self, value: int) -> int: ...
    @property
    def LinePosition(self) -> int: ...
    @LinePosition.setter
    def LinePosition(self, value: int) -> int: ...
    @property
    def Namespaces(self) -> XmlSerializerNamespaces: ...
    @Namespaces.setter
    def Namespaces(self, value: XmlSerializerNamespaces) -> XmlSerializerNamespaces: ...
    @property
    def Parent(self) -> XmlSchemaObject: ...
    @Parent.setter
    def Parent(self, value: XmlSchemaObject) -> XmlSchemaObject: ...
    @property
    def SourceUri(self) -> str: ...
    @SourceUri.setter
    def SourceUri(self, value: str) -> str: ...
    @property
    def UnhandledAttributes(self) -> Array_1[XmlAttribute]: ...
    @UnhandledAttributes.setter
    def UnhandledAttributes(self, value: Array_1[XmlAttribute]) -> Array_1[XmlAttribute]: ...


class XmlSchemaContentModel(XmlSchemaAnnotated, abc.ABC):
    @property
    def Annotation(self) -> XmlSchemaAnnotation: ...
    @Annotation.setter
    def Annotation(self, value: XmlSchemaAnnotation) -> XmlSchemaAnnotation: ...
    @property
    def Content(self) -> XmlSchemaContent: ...
    @Content.setter
    def Content(self, value: XmlSchemaContent) -> XmlSchemaContent: ...
    @property
    def Id(self) -> str: ...
    @Id.setter
    def Id(self, value: str) -> str: ...
    @property
    def LineNumber(self) -> int: ...
    @LineNumber.setter
    def LineNumber(self, value: int) -> int: ...
    @property
    def LinePosition(self) -> int: ...
    @LinePosition.setter
    def LinePosition(self, value: int) -> int: ...
    @property
    def Namespaces(self) -> XmlSerializerNamespaces: ...
    @Namespaces.setter
    def Namespaces(self, value: XmlSerializerNamespaces) -> XmlSerializerNamespaces: ...
    @property
    def Parent(self) -> XmlSchemaObject: ...
    @Parent.setter
    def Parent(self, value: XmlSchemaObject) -> XmlSchemaObject: ...
    @property
    def SourceUri(self) -> str: ...
    @SourceUri.setter
    def SourceUri(self, value: str) -> str: ...
    @property
    def UnhandledAttributes(self) -> Array_1[XmlAttribute]: ...
    @UnhandledAttributes.setter
    def UnhandledAttributes(self, value: Array_1[XmlAttribute]) -> Array_1[XmlAttribute]: ...


class XmlSchemaContentProcessing(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    None_ : XmlSchemaContentProcessing # 0
    Skip : XmlSchemaContentProcessing # 1
    Lax : XmlSchemaContentProcessing # 2
    Strict : XmlSchemaContentProcessing # 3


class XmlSchemaContentType(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    TextOnly : XmlSchemaContentType # 0
    Empty : XmlSchemaContentType # 1
    ElementOnly : XmlSchemaContentType # 2
    Mixed : XmlSchemaContentType # 3


class XmlSchemaDatatype(abc.ABC):
    @property
    def TokenizedType(self) -> XmlTokenizedType: ...
    @property
    def TypeCode(self) -> XmlTypeCode: ...
    @property
    def ValueType(self) -> typing.Type[typing.Any]: ...
    @property
    def Variety(self) -> XmlSchemaDatatypeVariety: ...
    def IsDerivedFrom(self, datatype: XmlSchemaDatatype) -> bool: ...
    @abc.abstractmethod
    def ParseValue(self, s: str, nameTable: XmlNameTable, nsmgr: IXmlNamespaceResolver) -> typing.Any: ...
    # Skipped ChangeType due to it being static, abstract and generic.

    ChangeType : ChangeType_MethodGroup
    class ChangeType_MethodGroup:
        @typing.overload
        def __call__(self, value: typing.Any, targetType: typing.Type[typing.Any]) -> typing.Any:...
        @typing.overload
        def __call__(self, value: typing.Any, targetType: typing.Type[typing.Any], namespaceResolver: IXmlNamespaceResolver) -> typing.Any:...



class XmlSchemaDatatypeVariety(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    Atomic : XmlSchemaDatatypeVariety # 0
    List : XmlSchemaDatatypeVariety # 1
    Union : XmlSchemaDatatypeVariety # 2


class XmlSchemaDerivationMethod(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    Empty : XmlSchemaDerivationMethod # 0
    Substitution : XmlSchemaDerivationMethod # 1
    Extension : XmlSchemaDerivationMethod # 2
    Restriction : XmlSchemaDerivationMethod # 4
    List : XmlSchemaDerivationMethod # 8
    Union : XmlSchemaDerivationMethod # 16
    All : XmlSchemaDerivationMethod # 255
    None_ : XmlSchemaDerivationMethod # 256


class XmlSchemaElement(XmlSchemaParticle):
    def __init__(self) -> None: ...
    @property
    def Annotation(self) -> XmlSchemaAnnotation: ...
    @Annotation.setter
    def Annotation(self, value: XmlSchemaAnnotation) -> XmlSchemaAnnotation: ...
    @property
    def Block(self) -> XmlSchemaDerivationMethod: ...
    @Block.setter
    def Block(self, value: XmlSchemaDerivationMethod) -> XmlSchemaDerivationMethod: ...
    @property
    def BlockResolved(self) -> XmlSchemaDerivationMethod: ...
    @property
    def Constraints(self) -> XmlSchemaObjectCollection: ...
    @property
    def DefaultValue(self) -> str: ...
    @DefaultValue.setter
    def DefaultValue(self, value: str) -> str: ...
    @property
    def ElementSchemaType(self) -> XmlSchemaType: ...
    @property
    def ElementType(self) -> typing.Any: ...
    @property
    def Final(self) -> XmlSchemaDerivationMethod: ...
    @Final.setter
    def Final(self, value: XmlSchemaDerivationMethod) -> XmlSchemaDerivationMethod: ...
    @property
    def FinalResolved(self) -> XmlSchemaDerivationMethod: ...
    @property
    def FixedValue(self) -> str: ...
    @FixedValue.setter
    def FixedValue(self, value: str) -> str: ...
    @property
    def Form(self) -> XmlSchemaForm: ...
    @Form.setter
    def Form(self, value: XmlSchemaForm) -> XmlSchemaForm: ...
    @property
    def Id(self) -> str: ...
    @Id.setter
    def Id(self, value: str) -> str: ...
    @property
    def IsAbstract(self) -> bool: ...
    @IsAbstract.setter
    def IsAbstract(self, value: bool) -> bool: ...
    @property
    def IsNillable(self) -> bool: ...
    @IsNillable.setter
    def IsNillable(self, value: bool) -> bool: ...
    @property
    def LineNumber(self) -> int: ...
    @LineNumber.setter
    def LineNumber(self, value: int) -> int: ...
    @property
    def LinePosition(self) -> int: ...
    @LinePosition.setter
    def LinePosition(self, value: int) -> int: ...
    @property
    def MaxOccurs(self) -> Decimal: ...
    @MaxOccurs.setter
    def MaxOccurs(self, value: Decimal) -> Decimal: ...
    @property
    def MaxOccursString(self) -> str: ...
    @MaxOccursString.setter
    def MaxOccursString(self, value: str) -> str: ...
    @property
    def MinOccurs(self) -> Decimal: ...
    @MinOccurs.setter
    def MinOccurs(self, value: Decimal) -> Decimal: ...
    @property
    def MinOccursString(self) -> str: ...
    @MinOccursString.setter
    def MinOccursString(self, value: str) -> str: ...
    @property
    def Name(self) -> str: ...
    @Name.setter
    def Name(self, value: str) -> str: ...
    @property
    def Namespaces(self) -> XmlSerializerNamespaces: ...
    @Namespaces.setter
    def Namespaces(self, value: XmlSerializerNamespaces) -> XmlSerializerNamespaces: ...
    @property
    def Parent(self) -> XmlSchemaObject: ...
    @Parent.setter
    def Parent(self, value: XmlSchemaObject) -> XmlSchemaObject: ...
    @property
    def QualifiedName(self) -> XmlQualifiedName: ...
    @property
    def RefName(self) -> XmlQualifiedName: ...
    @RefName.setter
    def RefName(self, value: XmlQualifiedName) -> XmlQualifiedName: ...
    @property
    def SchemaType(self) -> XmlSchemaType: ...
    @SchemaType.setter
    def SchemaType(self, value: XmlSchemaType) -> XmlSchemaType: ...
    @property
    def SchemaTypeName(self) -> XmlQualifiedName: ...
    @SchemaTypeName.setter
    def SchemaTypeName(self, value: XmlQualifiedName) -> XmlQualifiedName: ...
    @property
    def SourceUri(self) -> str: ...
    @SourceUri.setter
    def SourceUri(self, value: str) -> str: ...
    @property
    def SubstitutionGroup(self) -> XmlQualifiedName: ...
    @SubstitutionGroup.setter
    def SubstitutionGroup(self, value: XmlQualifiedName) -> XmlQualifiedName: ...
    @property
    def UnhandledAttributes(self) -> Array_1[XmlAttribute]: ...
    @UnhandledAttributes.setter
    def UnhandledAttributes(self, value: Array_1[XmlAttribute]) -> Array_1[XmlAttribute]: ...


class XmlSchemaException(SystemException):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, message: str) -> None: ...
    @typing.overload
    def __init__(self, message: str, innerException: Exception) -> None: ...
    @typing.overload
    def __init__(self, message: str, innerException: Exception, lineNumber: int, linePosition: int) -> None: ...
    @property
    def Data(self) -> IDictionary: ...
    @property
    def HelpLink(self) -> str: ...
    @HelpLink.setter
    def HelpLink(self, value: str) -> str: ...
    @property
    def HResult(self) -> int: ...
    @HResult.setter
    def HResult(self, value: int) -> int: ...
    @property
    def InnerException(self) -> Exception: ...
    @property
    def LineNumber(self) -> int: ...
    @property
    def LinePosition(self) -> int: ...
    @property
    def Message(self) -> str: ...
    @property
    def Source(self) -> str: ...
    @Source.setter
    def Source(self, value: str) -> str: ...
    @property
    def SourceSchemaObject(self) -> XmlSchemaObject: ...
    @property
    def SourceUri(self) -> str: ...
    @property
    def StackTrace(self) -> str: ...
    @property
    def TargetSite(self) -> MethodBase: ...
    def GetObjectData(self, info: SerializationInfo, context: StreamingContext) -> None: ...


class XmlSchemaForm(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    None_ : XmlSchemaForm # 0
    Qualified : XmlSchemaForm # 1
    Unqualified : XmlSchemaForm # 2


class XmlSchemaObject(abc.ABC):
    @property
    def LineNumber(self) -> int: ...
    @LineNumber.setter
    def LineNumber(self, value: int) -> int: ...
    @property
    def LinePosition(self) -> int: ...
    @LinePosition.setter
    def LinePosition(self, value: int) -> int: ...
    @property
    def Namespaces(self) -> XmlSerializerNamespaces: ...
    @Namespaces.setter
    def Namespaces(self, value: XmlSerializerNamespaces) -> XmlSerializerNamespaces: ...
    @property
    def Parent(self) -> XmlSchemaObject: ...
    @Parent.setter
    def Parent(self, value: XmlSchemaObject) -> XmlSchemaObject: ...
    @property
    def SourceUri(self) -> str: ...
    @SourceUri.setter
    def SourceUri(self, value: str) -> str: ...


class XmlSchemaObjectCollection(CollectionBase):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, parent: XmlSchemaObject) -> None: ...
    @property
    def Capacity(self) -> int: ...
    @Capacity.setter
    def Capacity(self, value: int) -> int: ...
    @property
    def Count(self) -> int: ...
    @property
    def Item(self) -> XmlSchemaObject: ...
    @Item.setter
    def Item(self, value: XmlSchemaObject) -> XmlSchemaObject: ...
    def Add(self, item: XmlSchemaObject) -> int: ...
    def Contains(self, item: XmlSchemaObject) -> bool: ...
    def CopyTo(self, array: Array_1[XmlSchemaObject], index: int) -> None: ...
    def GetEnumerator(self) -> XmlSchemaObjectEnumerator: ...
    def IndexOf(self, item: XmlSchemaObject) -> int: ...
    def Insert(self, index: int, item: XmlSchemaObject) -> None: ...
    def Remove(self, item: XmlSchemaObject) -> None: ...


class XmlSchemaObjectEnumerator(IEnumerator):
    @property
    def Current(self) -> XmlSchemaObject: ...
    def MoveNext(self) -> bool: ...
    def Reset(self) -> None: ...


class XmlSchemaObjectTable:
    @property
    def Count(self) -> int: ...
    @property
    def Item(self) -> XmlSchemaObject: ...
    @property
    def Names(self) -> ICollection: ...
    @property
    def Values(self) -> ICollection: ...
    def Contains(self, name: XmlQualifiedName) -> bool: ...
    def GetEnumerator(self) -> IDictionaryEnumerator: ...


class XmlSchemaParticle(XmlSchemaAnnotated, abc.ABC):
    @property
    def Annotation(self) -> XmlSchemaAnnotation: ...
    @Annotation.setter
    def Annotation(self, value: XmlSchemaAnnotation) -> XmlSchemaAnnotation: ...
    @property
    def Id(self) -> str: ...
    @Id.setter
    def Id(self, value: str) -> str: ...
    @property
    def LineNumber(self) -> int: ...
    @LineNumber.setter
    def LineNumber(self, value: int) -> int: ...
    @property
    def LinePosition(self) -> int: ...
    @LinePosition.setter
    def LinePosition(self, value: int) -> int: ...
    @property
    def MaxOccurs(self) -> Decimal: ...
    @MaxOccurs.setter
    def MaxOccurs(self, value: Decimal) -> Decimal: ...
    @property
    def MaxOccursString(self) -> str: ...
    @MaxOccursString.setter
    def MaxOccursString(self, value: str) -> str: ...
    @property
    def MinOccurs(self) -> Decimal: ...
    @MinOccurs.setter
    def MinOccurs(self, value: Decimal) -> Decimal: ...
    @property
    def MinOccursString(self) -> str: ...
    @MinOccursString.setter
    def MinOccursString(self, value: str) -> str: ...
    @property
    def Namespaces(self) -> XmlSerializerNamespaces: ...
    @Namespaces.setter
    def Namespaces(self, value: XmlSerializerNamespaces) -> XmlSerializerNamespaces: ...
    @property
    def Parent(self) -> XmlSchemaObject: ...
    @Parent.setter
    def Parent(self, value: XmlSchemaObject) -> XmlSchemaObject: ...
    @property
    def SourceUri(self) -> str: ...
    @SourceUri.setter
    def SourceUri(self, value: str) -> str: ...
    @property
    def UnhandledAttributes(self) -> Array_1[XmlAttribute]: ...
    @UnhandledAttributes.setter
    def UnhandledAttributes(self, value: Array_1[XmlAttribute]) -> Array_1[XmlAttribute]: ...


class XmlSchemaSet:
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, nameTable: XmlNameTable) -> None: ...
    @property
    def CompilationSettings(self) -> XmlSchemaCompilationSettings: ...
    @CompilationSettings.setter
    def CompilationSettings(self, value: XmlSchemaCompilationSettings) -> XmlSchemaCompilationSettings: ...
    @property
    def Count(self) -> int: ...
    @property
    def GlobalAttributes(self) -> XmlSchemaObjectTable: ...
    @property
    def GlobalElements(self) -> XmlSchemaObjectTable: ...
    @property
    def GlobalTypes(self) -> XmlSchemaObjectTable: ...
    @property
    def IsCompiled(self) -> bool: ...
    @property
    def NameTable(self) -> XmlNameTable: ...
    @property
    def XmlResolver(self) -> None: ...
    @XmlResolver.setter
    def XmlResolver(self, value: XmlResolver) -> None: ...
    def Compile(self) -> None: ...
    def CopyTo(self, schemas: Array_1[XmlSchema], index: int) -> None: ...
    def Remove(self, schema: XmlSchema) -> XmlSchema: ...
    def RemoveRecursive(self, schemaToRemove: XmlSchema) -> bool: ...
    def Reprocess(self, schema: XmlSchema) -> XmlSchema: ...
    # Skipped Add due to it being static, abstract and generic.

    Add : Add_MethodGroup
    class Add_MethodGroup:
        @typing.overload
        def __call__(self, schema: XmlSchema) -> XmlSchema:...
        @typing.overload
        def __call__(self, schemas: XmlSchemaSet) -> None:...
        @typing.overload
        def __call__(self, targetNamespace: str, schemaUri: str) -> XmlSchema:...
        @typing.overload
        def __call__(self, targetNamespace: str, schemaDocument: XmlReader) -> XmlSchema:...

    # Skipped Contains due to it being static, abstract and generic.

    Contains : Contains_MethodGroup
    class Contains_MethodGroup:
        @typing.overload
        def __call__(self, schema: XmlSchema) -> bool:...
        @typing.overload
        def __call__(self, targetNamespace: str) -> bool:...

    # Skipped Schemas due to it being static, abstract and generic.

    Schemas : Schemas_MethodGroup
    class Schemas_MethodGroup:
        @typing.overload
        def __call__(self) -> ICollection:...
        @typing.overload
        def __call__(self, targetNamespace: str) -> ICollection:...



class XmlSchemaSimpleType(XmlSchemaType):
    def __init__(self) -> None: ...
    @property
    def Annotation(self) -> XmlSchemaAnnotation: ...
    @Annotation.setter
    def Annotation(self, value: XmlSchemaAnnotation) -> XmlSchemaAnnotation: ...
    @property
    def BaseSchemaType(self) -> typing.Any: ...
    @property
    def BaseXmlSchemaType(self) -> XmlSchemaType: ...
    @property
    def Content(self) -> XmlSchemaSimpleTypeContent: ...
    @Content.setter
    def Content(self, value: XmlSchemaSimpleTypeContent) -> XmlSchemaSimpleTypeContent: ...
    @property
    def Datatype(self) -> XmlSchemaDatatype: ...
    @property
    def DerivedBy(self) -> XmlSchemaDerivationMethod: ...
    @property
    def Final(self) -> XmlSchemaDerivationMethod: ...
    @Final.setter
    def Final(self, value: XmlSchemaDerivationMethod) -> XmlSchemaDerivationMethod: ...
    @property
    def FinalResolved(self) -> XmlSchemaDerivationMethod: ...
    @property
    def Id(self) -> str: ...
    @Id.setter
    def Id(self, value: str) -> str: ...
    @property
    def IsMixed(self) -> bool: ...
    @IsMixed.setter
    def IsMixed(self, value: bool) -> bool: ...
    @property
    def LineNumber(self) -> int: ...
    @LineNumber.setter
    def LineNumber(self, value: int) -> int: ...
    @property
    def LinePosition(self) -> int: ...
    @LinePosition.setter
    def LinePosition(self, value: int) -> int: ...
    @property
    def Name(self) -> str: ...
    @Name.setter
    def Name(self, value: str) -> str: ...
    @property
    def Namespaces(self) -> XmlSerializerNamespaces: ...
    @Namespaces.setter
    def Namespaces(self, value: XmlSerializerNamespaces) -> XmlSerializerNamespaces: ...
    @property
    def Parent(self) -> XmlSchemaObject: ...
    @Parent.setter
    def Parent(self, value: XmlSchemaObject) -> XmlSchemaObject: ...
    @property
    def QualifiedName(self) -> XmlQualifiedName: ...
    @property
    def SourceUri(self) -> str: ...
    @SourceUri.setter
    def SourceUri(self, value: str) -> str: ...
    @property
    def TypeCode(self) -> XmlTypeCode: ...
    @property
    def UnhandledAttributes(self) -> Array_1[XmlAttribute]: ...
    @UnhandledAttributes.setter
    def UnhandledAttributes(self, value: Array_1[XmlAttribute]) -> Array_1[XmlAttribute]: ...


class XmlSchemaSimpleTypeContent(XmlSchemaAnnotated, abc.ABC):
    @property
    def Annotation(self) -> XmlSchemaAnnotation: ...
    @Annotation.setter
    def Annotation(self, value: XmlSchemaAnnotation) -> XmlSchemaAnnotation: ...
    @property
    def Id(self) -> str: ...
    @Id.setter
    def Id(self, value: str) -> str: ...
    @property
    def LineNumber(self) -> int: ...
    @LineNumber.setter
    def LineNumber(self, value: int) -> int: ...
    @property
    def LinePosition(self) -> int: ...
    @LinePosition.setter
    def LinePosition(self, value: int) -> int: ...
    @property
    def Namespaces(self) -> XmlSerializerNamespaces: ...
    @Namespaces.setter
    def Namespaces(self, value: XmlSerializerNamespaces) -> XmlSerializerNamespaces: ...
    @property
    def Parent(self) -> XmlSchemaObject: ...
    @Parent.setter
    def Parent(self, value: XmlSchemaObject) -> XmlSchemaObject: ...
    @property
    def SourceUri(self) -> str: ...
    @SourceUri.setter
    def SourceUri(self, value: str) -> str: ...
    @property
    def UnhandledAttributes(self) -> Array_1[XmlAttribute]: ...
    @UnhandledAttributes.setter
    def UnhandledAttributes(self, value: Array_1[XmlAttribute]) -> Array_1[XmlAttribute]: ...


class XmlSchemaType(XmlSchemaAnnotated):
    def __init__(self) -> None: ...
    @property
    def Annotation(self) -> XmlSchemaAnnotation: ...
    @Annotation.setter
    def Annotation(self, value: XmlSchemaAnnotation) -> XmlSchemaAnnotation: ...
    @property
    def BaseSchemaType(self) -> typing.Any: ...
    @property
    def BaseXmlSchemaType(self) -> XmlSchemaType: ...
    @property
    def Datatype(self) -> XmlSchemaDatatype: ...
    @property
    def DerivedBy(self) -> XmlSchemaDerivationMethod: ...
    @property
    def Final(self) -> XmlSchemaDerivationMethod: ...
    @Final.setter
    def Final(self, value: XmlSchemaDerivationMethod) -> XmlSchemaDerivationMethod: ...
    @property
    def FinalResolved(self) -> XmlSchemaDerivationMethod: ...
    @property
    def Id(self) -> str: ...
    @Id.setter
    def Id(self, value: str) -> str: ...
    @property
    def IsMixed(self) -> bool: ...
    @IsMixed.setter
    def IsMixed(self, value: bool) -> bool: ...
    @property
    def LineNumber(self) -> int: ...
    @LineNumber.setter
    def LineNumber(self, value: int) -> int: ...
    @property
    def LinePosition(self) -> int: ...
    @LinePosition.setter
    def LinePosition(self, value: int) -> int: ...
    @property
    def Name(self) -> str: ...
    @Name.setter
    def Name(self, value: str) -> str: ...
    @property
    def Namespaces(self) -> XmlSerializerNamespaces: ...
    @Namespaces.setter
    def Namespaces(self, value: XmlSerializerNamespaces) -> XmlSerializerNamespaces: ...
    @property
    def Parent(self) -> XmlSchemaObject: ...
    @Parent.setter
    def Parent(self, value: XmlSchemaObject) -> XmlSchemaObject: ...
    @property
    def QualifiedName(self) -> XmlQualifiedName: ...
    @property
    def SourceUri(self) -> str: ...
    @SourceUri.setter
    def SourceUri(self, value: str) -> str: ...
    @property
    def TypeCode(self) -> XmlTypeCode: ...
    @property
    def UnhandledAttributes(self) -> Array_1[XmlAttribute]: ...
    @UnhandledAttributes.setter
    def UnhandledAttributes(self, value: Array_1[XmlAttribute]) -> Array_1[XmlAttribute]: ...
    @staticmethod
    def IsDerivedFrom(derivedType: XmlSchemaType, baseType: XmlSchemaType, except: XmlSchemaDerivationMethod) -> bool: ...
    # Skipped GetBuiltInComplexType due to it being static, abstract and generic.

    GetBuiltInComplexType : GetBuiltInComplexType_MethodGroup
    class GetBuiltInComplexType_MethodGroup:
        @typing.overload
        def __call__(self, typeCode: XmlTypeCode) -> XmlSchemaComplexType:...
        @typing.overload
        def __call__(self, qualifiedName: XmlQualifiedName) -> XmlSchemaComplexType:...

    # Skipped GetBuiltInSimpleType due to it being static, abstract and generic.

    GetBuiltInSimpleType : GetBuiltInSimpleType_MethodGroup
    class GetBuiltInSimpleType_MethodGroup:
        @typing.overload
        def __call__(self, typeCode: XmlTypeCode) -> XmlSchemaSimpleType:...
        @typing.overload
        def __call__(self, qualifiedName: XmlQualifiedName) -> XmlSchemaSimpleType:...



class XmlSchemaUse(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    None_ : XmlSchemaUse # 0
    Optional : XmlSchemaUse # 1
    Prohibited : XmlSchemaUse # 2
    Required : XmlSchemaUse # 3


class XmlSchemaValidationFlags(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    None_ : XmlSchemaValidationFlags # 0
    ProcessInlineSchema : XmlSchemaValidationFlags # 1
    ProcessSchemaLocation : XmlSchemaValidationFlags # 2
    ReportValidationWarnings : XmlSchemaValidationFlags # 4
    ProcessIdentityConstraints : XmlSchemaValidationFlags # 8
    AllowXmlAttributes : XmlSchemaValidationFlags # 16


class XmlSchemaValidity(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    NotKnown : XmlSchemaValidity # 0
    Valid : XmlSchemaValidity # 1
    Invalid : XmlSchemaValidity # 2


class XmlSeverityType(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    Error : XmlSeverityType # 0
    Warning : XmlSeverityType # 1


class XmlTypeCode(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    None_ : XmlTypeCode # 0
    Item : XmlTypeCode # 1
    Node : XmlTypeCode # 2
    Document : XmlTypeCode # 3
    Element : XmlTypeCode # 4
    Attribute : XmlTypeCode # 5
    Namespace : XmlTypeCode # 6
    ProcessingInstruction : XmlTypeCode # 7
    Comment : XmlTypeCode # 8
    Text : XmlTypeCode # 9
    AnyAtomicType : XmlTypeCode # 10
    UntypedAtomic : XmlTypeCode # 11
    String : XmlTypeCode # 12
    Boolean : XmlTypeCode # 13
    Decimal : XmlTypeCode # 14
    Float : XmlTypeCode # 15
    Double : XmlTypeCode # 16
    Duration : XmlTypeCode # 17
    DateTime : XmlTypeCode # 18
    Time : XmlTypeCode # 19
    Date : XmlTypeCode # 20
    GYearMonth : XmlTypeCode # 21
    GYear : XmlTypeCode # 22
    GMonthDay : XmlTypeCode # 23
    GDay : XmlTypeCode # 24
    GMonth : XmlTypeCode # 25
    HexBinary : XmlTypeCode # 26
    Base64Binary : XmlTypeCode # 27
    AnyUri : XmlTypeCode # 28
    QName : XmlTypeCode # 29
    Notation : XmlTypeCode # 30
    NormalizedString : XmlTypeCode # 31
    Token : XmlTypeCode # 32
    Language : XmlTypeCode # 33
    NmToken : XmlTypeCode # 34
    Name : XmlTypeCode # 35
    NCName : XmlTypeCode # 36
    Id : XmlTypeCode # 37
    Idref : XmlTypeCode # 38
    Entity : XmlTypeCode # 39
    Integer : XmlTypeCode # 40
    NonPositiveInteger : XmlTypeCode # 41
    NegativeInteger : XmlTypeCode # 42
    Long : XmlTypeCode # 43
    Int : XmlTypeCode # 44
    Short : XmlTypeCode # 45
    Byte : XmlTypeCode # 46
    NonNegativeInteger : XmlTypeCode # 47
    UnsignedLong : XmlTypeCode # 48
    UnsignedInt : XmlTypeCode # 49
    UnsignedShort : XmlTypeCode # 50
    UnsignedByte : XmlTypeCode # 51
    PositiveInteger : XmlTypeCode # 52
    YearMonthDuration : XmlTypeCode # 53
    DayTimeDuration : XmlTypeCode # 54

