# WARNING: Please don't edit this file. It was generated by Python/WinRT v1.0.0-beta.2

import enum
import sys
import types
import typing
import uuid

import winsdk._winrt as _winrt

try:
    import winsdk.windows.foundation.collections
except Exception:
    pass

class JsonErrorStatus(enum.IntEnum):
    UNKNOWN = 0
    INVALID_JSON_STRING = 1
    INVALID_JSON_NUMBER = 2
    JSON_VALUE_NOT_FOUND = 3
    IMPLEMENTATION_LIMIT = 4

class JsonValueType(enum.IntEnum):
    NULL = 0
    BOOLEAN = 1
    NUMBER = 2
    STRING = 3
    ARRAY = 4
    OBJECT = 5

class JsonArray(IJsonValue, winsdk.windows.foundation.collections.IVector[IJsonValue], winsdk.windows.foundation.collections.IIterable[IJsonValue], winsdk.windows.foundation.IStringable, _winrt.Object):
    value_type: JsonValueType
    size: _winrt.UInt32
    @staticmethod
    def _from(obj: _winrt.Object) -> JsonArray: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def append(self, value: IJsonValue) -> None: ...
    @typing.overload
    def clear(self) -> None: ...
    @typing.overload
    def first(self) -> winsdk.windows.foundation.collections.IIterator[IJsonValue]: ...
    @typing.overload
    def get_array(self) -> JsonArray: ...
    @typing.overload
    def get_array_at(self, index: _winrt.UInt32) -> JsonArray: ...
    @typing.overload
    def get_at(self, index: _winrt.UInt32) -> IJsonValue: ...
    @typing.overload
    def get_boolean(self) -> _winrt.Boolean: ...
    @typing.overload
    def get_boolean_at(self, index: _winrt.UInt32) -> _winrt.Boolean: ...
    @typing.overload
    def get_many(self, start_index: _winrt.UInt32, items_size: _winrt.UInt32) -> typing.Tuple[_winrt.UInt32, typing.List[IJsonValue]]: ...
    @typing.overload
    def get_number(self) -> _winrt.Double: ...
    @typing.overload
    def get_number_at(self, index: _winrt.UInt32) -> _winrt.Double: ...
    @typing.overload
    def get_object(self) -> JsonObject: ...
    @typing.overload
    def get_object_at(self, index: _winrt.UInt32) -> JsonObject: ...
    @typing.overload
    def get_string(self) -> str: ...
    @typing.overload
    def get_string_at(self, index: _winrt.UInt32) -> str: ...
    @typing.overload
    def get_view(self) -> winsdk.windows.foundation.collections.IVectorView[IJsonValue]: ...
    @typing.overload
    def index_of(self, value: IJsonValue) -> typing.Tuple[_winrt.Boolean, _winrt.UInt32]: ...
    @typing.overload
    def insert_at(self, index: _winrt.UInt32, value: IJsonValue) -> None: ...
    @typing.overload
    @staticmethod
    def parse(input: str) -> JsonArray: ...
    @typing.overload
    def remove_at(self, index: _winrt.UInt32) -> None: ...
    @typing.overload
    def remove_at_end(self) -> None: ...
    @typing.overload
    def replace_all(self, items: typing.Sequence[IJsonValue]) -> None: ...
    @typing.overload
    def set_at(self, index: _winrt.UInt32, value: IJsonValue) -> None: ...
    @typing.overload
    def stringify(self) -> str: ...
    @typing.overload
    def to_string(self) -> str: ...
    @typing.overload
    @staticmethod
    def try_parse(input: str) -> typing.Tuple[_winrt.Boolean, JsonArray]: ...

class JsonError(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> JsonError: ...
    @typing.overload
    @staticmethod
    def get_json_status(hresult: _winrt.Int32) -> JsonErrorStatus: ...

class JsonObject(IJsonValue, winsdk.windows.foundation.collections.IMap[str, IJsonValue], winsdk.windows.foundation.collections.IIterable[winsdk.windows.foundation.collections.IKeyValuePair[str, IJsonValue]], winsdk.windows.foundation.IStringable, _winrt.Object):
    value_type: JsonValueType
    size: _winrt.UInt32
    @staticmethod
    def _from(obj: _winrt.Object) -> JsonObject: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def clear(self) -> None: ...
    @typing.overload
    def first(self) -> winsdk.windows.foundation.collections.IIterator[winsdk.windows.foundation.collections.IKeyValuePair[str, IJsonValue]]: ...
    @typing.overload
    def get_array(self) -> JsonArray: ...
    @typing.overload
    def get_boolean(self) -> _winrt.Boolean: ...
    @typing.overload
    def get_named_array(self, name: str) -> JsonArray: ...
    @typing.overload
    def get_named_array(self, name: str, default_value: JsonArray) -> JsonArray: ...
    @typing.overload
    def get_named_boolean(self, name: str) -> _winrt.Boolean: ...
    @typing.overload
    def get_named_boolean(self, name: str, default_value: _winrt.Boolean) -> _winrt.Boolean: ...
    @typing.overload
    def get_named_number(self, name: str) -> _winrt.Double: ...
    @typing.overload
    def get_named_number(self, name: str, default_value: _winrt.Double) -> _winrt.Double: ...
    @typing.overload
    def get_named_object(self, name: str) -> JsonObject: ...
    @typing.overload
    def get_named_object(self, name: str, default_value: JsonObject) -> JsonObject: ...
    @typing.overload
    def get_named_string(self, name: str) -> str: ...
    @typing.overload
    def get_named_string(self, name: str, default_value: str) -> str: ...
    @typing.overload
    def get_named_value(self, name: str) -> JsonValue: ...
    @typing.overload
    def get_named_value(self, name: str, default_value: JsonValue) -> JsonValue: ...
    @typing.overload
    def get_number(self) -> _winrt.Double: ...
    @typing.overload
    def get_object(self) -> JsonObject: ...
    @typing.overload
    def get_string(self) -> str: ...
    @typing.overload
    def get_view(self) -> winsdk.windows.foundation.collections.IMapView[str, IJsonValue]: ...
    @typing.overload
    def has_key(self, key: str) -> _winrt.Boolean: ...
    @typing.overload
    def insert(self, key: str, value: IJsonValue) -> _winrt.Boolean: ...
    @typing.overload
    def lookup(self, key: str) -> IJsonValue: ...
    @typing.overload
    @staticmethod
    def parse(input: str) -> JsonObject: ...
    @typing.overload
    def remove(self, key: str) -> None: ...
    @typing.overload
    def set_named_value(self, name: str, value: IJsonValue) -> None: ...
    @typing.overload
    def stringify(self) -> str: ...
    @typing.overload
    def to_string(self) -> str: ...
    @typing.overload
    @staticmethod
    def try_parse(input: str) -> typing.Tuple[_winrt.Boolean, JsonObject]: ...

class JsonValue(IJsonValue, winsdk.windows.foundation.IStringable, _winrt.Object):
    value_type: JsonValueType
    @staticmethod
    def _from(obj: _winrt.Object) -> JsonValue: ...
    @typing.overload
    @staticmethod
    def create_boolean_value(input: _winrt.Boolean) -> JsonValue: ...
    @typing.overload
    @staticmethod
    def create_null_value() -> JsonValue: ...
    @typing.overload
    @staticmethod
    def create_number_value(input: _winrt.Double) -> JsonValue: ...
    @typing.overload
    @staticmethod
    def create_string_value(input: str) -> JsonValue: ...
    @typing.overload
    def get_array(self) -> JsonArray: ...
    @typing.overload
    def get_boolean(self) -> _winrt.Boolean: ...
    @typing.overload
    def get_number(self) -> _winrt.Double: ...
    @typing.overload
    def get_object(self) -> JsonObject: ...
    @typing.overload
    def get_string(self) -> str: ...
    @typing.overload
    @staticmethod
    def parse(input: str) -> JsonValue: ...
    @typing.overload
    def stringify(self) -> str: ...
    @typing.overload
    def to_string(self) -> str: ...
    @typing.overload
    @staticmethod
    def try_parse(input: str) -> typing.Tuple[_winrt.Boolean, JsonValue]: ...

class IJsonValue(_winrt.Object):
    value_type: JsonValueType
    @staticmethod
    def _from(obj: _winrt.Object) -> IJsonValue: ...
    @typing.overload
    def get_array(self) -> JsonArray: ...
    @typing.overload
    def get_boolean(self) -> _winrt.Boolean: ...
    @typing.overload
    def get_number(self) -> _winrt.Double: ...
    @typing.overload
    def get_object(self) -> JsonObject: ...
    @typing.overload
    def get_string(self) -> str: ...
    @typing.overload
    def stringify(self) -> str: ...

