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

import enum
import datetime
import sys
import types
import typing

import winsdk._winrt as _winrt
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(_winrt.Object):
    currency: str
    mode: CurrencyFormatterMode
    numeral_system: str
    is_grouped: _winrt.Boolean
    is_decimal_point_always_displayed: _winrt.Boolean
    integer_digits: _winrt.Int32
    fraction_digits: _winrt.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: _winrt.Boolean
    significant_digits: _winrt.Int32
    @staticmethod
    def _from(obj: _winrt.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: _winrt.Double) -> str: ...
    def format_double(self, value: _winrt.Double) -> str: ...
    def format_int(self, value: _winrt.Int64) -> str: ...
    def format_uint(self, value: _winrt.UInt64) -> str: ...
    def parse_double(self, text: str) -> typing.Optional[typing.Optional[_winrt.Double]]: ...
    def parse_int(self, text: str) -> typing.Optional[typing.Optional[_winrt.Int64]]: ...
    def parse_uint(self, text: str) -> typing.Optional[typing.Optional[_winrt.UInt64]]: ...

class DecimalFormatter(_winrt.Object):
    is_decimal_point_always_displayed: _winrt.Boolean
    integer_digits: _winrt.Int32
    is_grouped: _winrt.Boolean
    numeral_system: str
    fraction_digits: _winrt.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: _winrt.Boolean
    significant_digits: _winrt.Int32
    @staticmethod
    def _from(obj: _winrt.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: _winrt.Double) -> str: ...
    def format_double(self, value: _winrt.Double) -> str: ...
    def format_int(self, value: _winrt.Int64) -> str: ...
    def format_uint(self, value: _winrt.UInt64) -> str: ...
    def parse_double(self, text: str) -> typing.Optional[typing.Optional[_winrt.Double]]: ...
    def parse_int(self, text: str) -> typing.Optional[typing.Optional[_winrt.Int64]]: ...
    def parse_uint(self, text: str) -> typing.Optional[typing.Optional[_winrt.UInt64]]: ...

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

class NumeralSystemTranslator(_winrt.Object):
    numeral_system: str
    languages: typing.Optional[winsdk.windows.foundation.collections.IVectorView[str]]
    resolved_language: str
    @staticmethod
    def _from(obj: _winrt.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(_winrt.Object):
    is_decimal_point_always_displayed: _winrt.Boolean
    integer_digits: _winrt.Int32
    is_grouped: _winrt.Boolean
    numeral_system: str
    fraction_digits: _winrt.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: _winrt.Boolean
    significant_digits: _winrt.Int32
    @staticmethod
    def _from(obj: _winrt.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: _winrt.Double) -> str: ...
    def format_double(self, value: _winrt.Double) -> str: ...
    def format_int(self, value: _winrt.Int64) -> str: ...
    def format_uint(self, value: _winrt.UInt64) -> str: ...
    def parse_double(self, text: str) -> typing.Optional[typing.Optional[_winrt.Double]]: ...
    def parse_int(self, text: str) -> typing.Optional[typing.Optional[_winrt.Int64]]: ...
    def parse_uint(self, text: str) -> typing.Optional[typing.Optional[_winrt.UInt64]]: ...

class PermilleFormatter(_winrt.Object):
    is_decimal_point_always_displayed: _winrt.Boolean
    integer_digits: _winrt.Int32
    is_grouped: _winrt.Boolean
    numeral_system: str
    fraction_digits: _winrt.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: _winrt.Boolean
    significant_digits: _winrt.Int32
    @staticmethod
    def _from(obj: _winrt.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: _winrt.Double) -> str: ...
    def format_double(self, value: _winrt.Double) -> str: ...
    def format_int(self, value: _winrt.Int64) -> str: ...
    def format_uint(self, value: _winrt.UInt64) -> str: ...
    def parse_double(self, text: str) -> typing.Optional[typing.Optional[_winrt.Double]]: ...
    def parse_int(self, text: str) -> typing.Optional[typing.Optional[_winrt.Int64]]: ...
    def parse_uint(self, text: str) -> typing.Optional[typing.Optional[_winrt.UInt64]]: ...

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

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

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

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

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

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

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

class ISignedZeroOption(_winrt.Object):
    is_zero_signed: _winrt.Boolean
    @staticmethod
    def _from(obj: _winrt.Object) -> ISignedZeroOption: ...

class ISignificantDigitsOption(_winrt.Object):
    significant_digits: _winrt.Int32
    @staticmethod
    def _from(obj: _winrt.Object) -> ISignificantDigitsOption: ...

