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

import enum
import datetime
import sys
import types
import typing

import winsdk.system
import winsdk.windows.foundation
import winsdk.windows.foundation.collections

class CurrencyFormatterMode(enum.IntEnum):
    USE_SYMBOL = 0
    USE_CURRENCY_CODE = 1

class RoundingAlgorithm(enum.IntEnum):
    NONE = 0
    ROUND_DOWN = 1
    ROUND_UP = 2
    ROUND_TOWARDS_ZERO = 3
    ROUND_AWAY_FROM_ZERO = 4
    ROUND_HALF_DOWN = 5
    ROUND_HALF_UP = 6
    ROUND_HALF_TOWARDS_ZERO = 7
    ROUND_HALF_AWAY_FROM_ZERO = 8
    ROUND_HALF_TO_EVEN = 9
    ROUND_HALF_TO_ODD = 10

Self = typing.TypeVar('Self')

class CurrencyFormatter(winsdk.system.Object):
    currency: str
    mode: CurrencyFormatterMode
    numeral_system: str
    is_grouped: winsdk.system.Boolean
    is_decimal_point_always_displayed: winsdk.system.Boolean
    integer_digits: winsdk.system.Int32
    fraction_digits: winsdk.system.Int32
    geographic_region: str
    resolved_geographic_region: str
    resolved_language: str
    languages: typing.Optional[winsdk.windows.foundation.collections.IVectorView[str]]
    number_rounder: typing.Optional[INumberRounder]
    is_zero_signed: winsdk.system.Boolean
    significant_digits: winsdk.system.Int32
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> CurrencyFormatter: ...
    @typing.overload
    def __new__(cls: typing.Type[CurrencyFormatter], currency_code: str) -> CurrencyFormatter:...
    @typing.overload
    def __new__(cls: typing.Type[CurrencyFormatter], currency_code: str, languages: typing.Iterable[str], geographic_region: str) -> CurrencyFormatter:...
    def apply_rounding_for_currency(self, rounding_algorithm: RoundingAlgorithm, /) -> None: ...
    def format(self, value: winsdk.system.Double, /) -> str: ...
    def format_double(self, value: winsdk.system.Double, /) -> str: ...
    def format_int(self, value: winsdk.system.Int64, /) -> str: ...
    def format_uint(self, value: winsdk.system.UInt64, /) -> str: ...
    def parse_double(self, text: str, /) -> typing.Optional[typing.Optional[winsdk.system.Double]]: ...
    def parse_int(self, text: str, /) -> typing.Optional[typing.Optional[winsdk.system.Int64]]: ...
    def parse_uint(self, text: str, /) -> typing.Optional[typing.Optional[winsdk.system.UInt64]]: ...

class DecimalFormatter(winsdk.system.Object):
    is_decimal_point_always_displayed: winsdk.system.Boolean
    integer_digits: winsdk.system.Int32
    is_grouped: winsdk.system.Boolean
    numeral_system: str
    fraction_digits: winsdk.system.Int32
    geographic_region: str
    languages: typing.Optional[winsdk.windows.foundation.collections.IVectorView[str]]
    resolved_geographic_region: str
    resolved_language: str
    number_rounder: typing.Optional[INumberRounder]
    is_zero_signed: winsdk.system.Boolean
    significant_digits: winsdk.system.Int32
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> DecimalFormatter: ...
    @typing.overload
    def __new__(cls: typing.Type[DecimalFormatter], languages: typing.Iterable[str], geographic_region: str) -> DecimalFormatter:...
    @typing.overload
    def __new__(cls: typing.Type[DecimalFormatter]) -> DecimalFormatter:...
    def format(self, value: winsdk.system.Double, /) -> str: ...
    def format_double(self, value: winsdk.system.Double, /) -> str: ...
    def format_int(self, value: winsdk.system.Int64, /) -> str: ...
    def format_uint(self, value: winsdk.system.UInt64, /) -> str: ...
    def parse_double(self, text: str, /) -> typing.Optional[typing.Optional[winsdk.system.Double]]: ...
    def parse_int(self, text: str, /) -> typing.Optional[typing.Optional[winsdk.system.Int64]]: ...
    def parse_uint(self, text: str, /) -> typing.Optional[typing.Optional[winsdk.system.UInt64]]: ...

class IncrementNumberRounder(winsdk.system.Object):
    rounding_algorithm: RoundingAlgorithm
    increment: winsdk.system.Double
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> IncrementNumberRounder: ...
    def __new__(cls: typing.Type[IncrementNumberRounder]) -> IncrementNumberRounder:...
    def round_double(self, value: winsdk.system.Double, /) -> winsdk.system.Double: ...
    def round_int32(self, value: winsdk.system.Int32, /) -> winsdk.system.Int32: ...
    def round_int64(self, value: winsdk.system.Int64, /) -> winsdk.system.Int64: ...
    def round_single(self, value: winsdk.system.Single, /) -> winsdk.system.Single: ...
    def round_uint32(self, value: winsdk.system.UInt32, /) -> winsdk.system.UInt32: ...
    def round_uint64(self, value: winsdk.system.UInt64, /) -> winsdk.system.UInt64: ...

class NumeralSystemTranslator(winsdk.system.Object):
    numeral_system: str
    languages: typing.Optional[winsdk.windows.foundation.collections.IVectorView[str]]
    resolved_language: str
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> NumeralSystemTranslator: ...
    @typing.overload
    def __new__(cls: typing.Type[NumeralSystemTranslator], languages: typing.Iterable[str]) -> NumeralSystemTranslator:...
    @typing.overload
    def __new__(cls: typing.Type[NumeralSystemTranslator]) -> NumeralSystemTranslator:...
    def translate_numerals(self, value: str, /) -> str: ...

class PercentFormatter(winsdk.system.Object):
    is_decimal_point_always_displayed: winsdk.system.Boolean
    integer_digits: winsdk.system.Int32
    is_grouped: winsdk.system.Boolean
    numeral_system: str
    fraction_digits: winsdk.system.Int32
    geographic_region: str
    languages: typing.Optional[winsdk.windows.foundation.collections.IVectorView[str]]
    resolved_geographic_region: str
    resolved_language: str
    number_rounder: typing.Optional[INumberRounder]
    is_zero_signed: winsdk.system.Boolean
    significant_digits: winsdk.system.Int32
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> PercentFormatter: ...
    @typing.overload
    def __new__(cls: typing.Type[PercentFormatter], languages: typing.Iterable[str], geographic_region: str) -> PercentFormatter:...
    @typing.overload
    def __new__(cls: typing.Type[PercentFormatter]) -> PercentFormatter:...
    def format(self, value: winsdk.system.Double, /) -> str: ...
    def format_double(self, value: winsdk.system.Double, /) -> str: ...
    def format_int(self, value: winsdk.system.Int64, /) -> str: ...
    def format_uint(self, value: winsdk.system.UInt64, /) -> str: ...
    def parse_double(self, text: str, /) -> typing.Optional[typing.Optional[winsdk.system.Double]]: ...
    def parse_int(self, text: str, /) -> typing.Optional[typing.Optional[winsdk.system.Int64]]: ...
    def parse_uint(self, text: str, /) -> typing.Optional[typing.Optional[winsdk.system.UInt64]]: ...

class PermilleFormatter(winsdk.system.Object):
    is_decimal_point_always_displayed: winsdk.system.Boolean
    integer_digits: winsdk.system.Int32
    is_grouped: winsdk.system.Boolean
    numeral_system: str
    fraction_digits: winsdk.system.Int32
    geographic_region: str
    languages: typing.Optional[winsdk.windows.foundation.collections.IVectorView[str]]
    resolved_geographic_region: str
    resolved_language: str
    number_rounder: typing.Optional[INumberRounder]
    is_zero_signed: winsdk.system.Boolean
    significant_digits: winsdk.system.Int32
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> PermilleFormatter: ...
    @typing.overload
    def __new__(cls: typing.Type[PermilleFormatter], languages: typing.Iterable[str], geographic_region: str) -> PermilleFormatter:...
    @typing.overload
    def __new__(cls: typing.Type[PermilleFormatter]) -> PermilleFormatter:...
    def format(self, value: winsdk.system.Double, /) -> str: ...
    def format_double(self, value: winsdk.system.Double, /) -> str: ...
    def format_int(self, value: winsdk.system.Int64, /) -> str: ...
    def format_uint(self, value: winsdk.system.UInt64, /) -> str: ...
    def parse_double(self, text: str, /) -> typing.Optional[typing.Optional[winsdk.system.Double]]: ...
    def parse_int(self, text: str, /) -> typing.Optional[typing.Optional[winsdk.system.Int64]]: ...
    def parse_uint(self, text: str, /) -> typing.Optional[typing.Optional[winsdk.system.UInt64]]: ...

class SignificantDigitsNumberRounder(winsdk.system.Object):
    significant_digits: winsdk.system.UInt32
    rounding_algorithm: RoundingAlgorithm
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SignificantDigitsNumberRounder: ...
    def __new__(cls: typing.Type[SignificantDigitsNumberRounder]) -> SignificantDigitsNumberRounder:...
    def round_double(self, value: winsdk.system.Double, /) -> winsdk.system.Double: ...
    def round_int32(self, value: winsdk.system.Int32, /) -> winsdk.system.Int32: ...
    def round_int64(self, value: winsdk.system.Int64, /) -> winsdk.system.Int64: ...
    def round_single(self, value: winsdk.system.Single, /) -> winsdk.system.Single: ...
    def round_uint32(self, value: winsdk.system.UInt32, /) -> winsdk.system.UInt32: ...
    def round_uint64(self, value: winsdk.system.UInt64, /) -> winsdk.system.UInt64: ...

class INumberFormatter(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> INumberFormatter: ...
    def format(self, value: winsdk.system.Double, /) -> str: ...

class INumberFormatter2(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> INumberFormatter2: ...
    def format_double(self, value: winsdk.system.Double, /) -> str: ...
    def format_int(self, value: winsdk.system.Int64, /) -> str: ...
    def format_uint(self, value: winsdk.system.UInt64, /) -> str: ...

class INumberFormatterOptions(winsdk.system.Object):
    fraction_digits: winsdk.system.Int32
    geographic_region: str
    integer_digits: winsdk.system.Int32
    is_decimal_point_always_displayed: winsdk.system.Boolean
    is_grouped: winsdk.system.Boolean
    languages: typing.Optional[winsdk.windows.foundation.collections.IVectorView[str]]
    numeral_system: str
    resolved_geographic_region: str
    resolved_language: str
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> INumberFormatterOptions: ...

class INumberParser(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> INumberParser: ...
    def parse_double(self, text: str, /) -> typing.Optional[typing.Optional[winsdk.system.Double]]: ...
    def parse_int(self, text: str, /) -> typing.Optional[typing.Optional[winsdk.system.Int64]]: ...
    def parse_uint(self, text: str, /) -> typing.Optional[typing.Optional[winsdk.system.UInt64]]: ...

class INumberRounder(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> INumberRounder: ...
    def round_double(self, value: winsdk.system.Double, /) -> winsdk.system.Double: ...
    def round_int32(self, value: winsdk.system.Int32, /) -> winsdk.system.Int32: ...
    def round_int64(self, value: winsdk.system.Int64, /) -> winsdk.system.Int64: ...
    def round_single(self, value: winsdk.system.Single, /) -> winsdk.system.Single: ...
    def round_uint32(self, value: winsdk.system.UInt32, /) -> winsdk.system.UInt32: ...
    def round_uint64(self, value: winsdk.system.UInt64, /) -> winsdk.system.UInt64: ...

class INumberRounderOption(winsdk.system.Object):
    number_rounder: typing.Optional[INumberRounder]
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> INumberRounderOption: ...

class ISignedZeroOption(winsdk.system.Object):
    is_zero_signed: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ISignedZeroOption: ...

class ISignificantDigitsOption(winsdk.system.Object):
    significant_digits: winsdk.system.Int32
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ISignificantDigitsOption: ...

