# WARNING: Please don't edit this file. It was generated by Python/WinRT v2.0.1

import datetime
import sys
import types
import typing
import uuid as _uuid
from builtins import property as _property

import winrt._winrt
import winrt.system
import winrt.windows.foundation
import winrt.windows.foundation.collections

from winrt.windows.globalization.numberformatting import CurrencyFormatterMode, RoundingAlgorithm

Self = typing.TypeVar('Self')

@typing.final
class CurrencyFormatter(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.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: winrt.system.Double, /) -> str: ...
    def format_double(self, value: winrt.system.Double, /) -> str: ...
    def format_int(self, value: winrt.system.Int64, /) -> str: ...
    def format_uint(self, value: winrt.system.UInt64, /) -> str: ...
    def parse_double(self, text: str, /) -> typing.Optional[typing.Optional[winrt.system.Double]]: ...
    def parse_int(self, text: str, /) -> typing.Optional[typing.Optional[winrt.system.Int64]]: ...
    def parse_uint(self, text: str, /) -> typing.Optional[typing.Optional[winrt.system.UInt64]]: ...
    @_property
    def currency(self) -> str: ...
    @currency.setter
    def currency(self, value: str) -> None: ...
    @_property
    def mode(self) -> CurrencyFormatterMode: ...
    @mode.setter
    def mode(self, value: CurrencyFormatterMode) -> None: ...
    @_property
    def numeral_system(self) -> str: ...
    @numeral_system.setter
    def numeral_system(self, value: str) -> None: ...
    @_property
    def is_grouped(self) -> bool: ...
    @is_grouped.setter
    def is_grouped(self, value: bool) -> None: ...
    @_property
    def is_decimal_point_always_displayed(self) -> bool: ...
    @is_decimal_point_always_displayed.setter
    def is_decimal_point_always_displayed(self, value: bool) -> None: ...
    @_property
    def integer_digits(self) -> winrt.system.Int32: ...
    @integer_digits.setter
    def integer_digits(self, value: winrt.system.Int32) -> None: ...
    @_property
    def fraction_digits(self) -> winrt.system.Int32: ...
    @fraction_digits.setter
    def fraction_digits(self, value: winrt.system.Int32) -> None: ...
    @_property
    def geographic_region(self) -> str: ...
    @_property
    def resolved_geographic_region(self) -> str: ...
    @_property
    def resolved_language(self) -> str: ...
    @_property
    def languages(self) -> typing.Optional[winrt.windows.foundation.collections.IVectorView[str]]: ...
    @_property
    def number_rounder(self) -> typing.Optional[INumberRounder]: ...
    @number_rounder.setter
    def number_rounder(self, value: typing.Optional[INumberRounder]) -> None: ...
    @_property
    def is_zero_signed(self) -> bool: ...
    @is_zero_signed.setter
    def is_zero_signed(self, value: bool) -> None: ...
    @_property
    def significant_digits(self) -> winrt.system.Int32: ...
    @significant_digits.setter
    def significant_digits(self, value: winrt.system.Int32) -> None: ...

@typing.final
class DecimalFormatter(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.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: winrt.system.Double, /) -> str: ...
    def format_double(self, value: winrt.system.Double, /) -> str: ...
    def format_int(self, value: winrt.system.Int64, /) -> str: ...
    def format_uint(self, value: winrt.system.UInt64, /) -> str: ...
    def parse_double(self, text: str, /) -> typing.Optional[typing.Optional[winrt.system.Double]]: ...
    def parse_int(self, text: str, /) -> typing.Optional[typing.Optional[winrt.system.Int64]]: ...
    def parse_uint(self, text: str, /) -> typing.Optional[typing.Optional[winrt.system.UInt64]]: ...
    @_property
    def is_decimal_point_always_displayed(self) -> bool: ...
    @is_decimal_point_always_displayed.setter
    def is_decimal_point_always_displayed(self, value: bool) -> None: ...
    @_property
    def integer_digits(self) -> winrt.system.Int32: ...
    @integer_digits.setter
    def integer_digits(self, value: winrt.system.Int32) -> None: ...
    @_property
    def is_grouped(self) -> bool: ...
    @is_grouped.setter
    def is_grouped(self, value: bool) -> None: ...
    @_property
    def numeral_system(self) -> str: ...
    @numeral_system.setter
    def numeral_system(self, value: str) -> None: ...
    @_property
    def fraction_digits(self) -> winrt.system.Int32: ...
    @fraction_digits.setter
    def fraction_digits(self, value: winrt.system.Int32) -> None: ...
    @_property
    def geographic_region(self) -> str: ...
    @_property
    def languages(self) -> typing.Optional[winrt.windows.foundation.collections.IVectorView[str]]: ...
    @_property
    def resolved_geographic_region(self) -> str: ...
    @_property
    def resolved_language(self) -> str: ...
    @_property
    def number_rounder(self) -> typing.Optional[INumberRounder]: ...
    @number_rounder.setter
    def number_rounder(self, value: typing.Optional[INumberRounder]) -> None: ...
    @_property
    def is_zero_signed(self) -> bool: ...
    @is_zero_signed.setter
    def is_zero_signed(self, value: bool) -> None: ...
    @_property
    def significant_digits(self) -> winrt.system.Int32: ...
    @significant_digits.setter
    def significant_digits(self, value: winrt.system.Int32) -> None: ...

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

@typing.final
class NumeralSystemTranslator(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.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: ...
    @_property
    def numeral_system(self) -> str: ...
    @numeral_system.setter
    def numeral_system(self, value: str) -> None: ...
    @_property
    def languages(self) -> typing.Optional[winrt.windows.foundation.collections.IVectorView[str]]: ...
    @_property
    def resolved_language(self) -> str: ...

@typing.final
class PercentFormatter(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.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: winrt.system.Double, /) -> str: ...
    def format_double(self, value: winrt.system.Double, /) -> str: ...
    def format_int(self, value: winrt.system.Int64, /) -> str: ...
    def format_uint(self, value: winrt.system.UInt64, /) -> str: ...
    def parse_double(self, text: str, /) -> typing.Optional[typing.Optional[winrt.system.Double]]: ...
    def parse_int(self, text: str, /) -> typing.Optional[typing.Optional[winrt.system.Int64]]: ...
    def parse_uint(self, text: str, /) -> typing.Optional[typing.Optional[winrt.system.UInt64]]: ...
    @_property
    def is_decimal_point_always_displayed(self) -> bool: ...
    @is_decimal_point_always_displayed.setter
    def is_decimal_point_always_displayed(self, value: bool) -> None: ...
    @_property
    def integer_digits(self) -> winrt.system.Int32: ...
    @integer_digits.setter
    def integer_digits(self, value: winrt.system.Int32) -> None: ...
    @_property
    def is_grouped(self) -> bool: ...
    @is_grouped.setter
    def is_grouped(self, value: bool) -> None: ...
    @_property
    def numeral_system(self) -> str: ...
    @numeral_system.setter
    def numeral_system(self, value: str) -> None: ...
    @_property
    def fraction_digits(self) -> winrt.system.Int32: ...
    @fraction_digits.setter
    def fraction_digits(self, value: winrt.system.Int32) -> None: ...
    @_property
    def geographic_region(self) -> str: ...
    @_property
    def languages(self) -> typing.Optional[winrt.windows.foundation.collections.IVectorView[str]]: ...
    @_property
    def resolved_geographic_region(self) -> str: ...
    @_property
    def resolved_language(self) -> str: ...
    @_property
    def number_rounder(self) -> typing.Optional[INumberRounder]: ...
    @number_rounder.setter
    def number_rounder(self, value: typing.Optional[INumberRounder]) -> None: ...
    @_property
    def is_zero_signed(self) -> bool: ...
    @is_zero_signed.setter
    def is_zero_signed(self, value: bool) -> None: ...
    @_property
    def significant_digits(self) -> winrt.system.Int32: ...
    @significant_digits.setter
    def significant_digits(self, value: winrt.system.Int32) -> None: ...

@typing.final
class PermilleFormatter(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.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: winrt.system.Double, /) -> str: ...
    def format_double(self, value: winrt.system.Double, /) -> str: ...
    def format_int(self, value: winrt.system.Int64, /) -> str: ...
    def format_uint(self, value: winrt.system.UInt64, /) -> str: ...
    def parse_double(self, text: str, /) -> typing.Optional[typing.Optional[winrt.system.Double]]: ...
    def parse_int(self, text: str, /) -> typing.Optional[typing.Optional[winrt.system.Int64]]: ...
    def parse_uint(self, text: str, /) -> typing.Optional[typing.Optional[winrt.system.UInt64]]: ...
    @_property
    def is_decimal_point_always_displayed(self) -> bool: ...
    @is_decimal_point_always_displayed.setter
    def is_decimal_point_always_displayed(self, value: bool) -> None: ...
    @_property
    def integer_digits(self) -> winrt.system.Int32: ...
    @integer_digits.setter
    def integer_digits(self, value: winrt.system.Int32) -> None: ...
    @_property
    def is_grouped(self) -> bool: ...
    @is_grouped.setter
    def is_grouped(self, value: bool) -> None: ...
    @_property
    def numeral_system(self) -> str: ...
    @numeral_system.setter
    def numeral_system(self, value: str) -> None: ...
    @_property
    def fraction_digits(self) -> winrt.system.Int32: ...
    @fraction_digits.setter
    def fraction_digits(self, value: winrt.system.Int32) -> None: ...
    @_property
    def geographic_region(self) -> str: ...
    @_property
    def languages(self) -> typing.Optional[winrt.windows.foundation.collections.IVectorView[str]]: ...
    @_property
    def resolved_geographic_region(self) -> str: ...
    @_property
    def resolved_language(self) -> str: ...
    @_property
    def number_rounder(self) -> typing.Optional[INumberRounder]: ...
    @number_rounder.setter
    def number_rounder(self, value: typing.Optional[INumberRounder]) -> None: ...
    @_property
    def is_zero_signed(self) -> bool: ...
    @is_zero_signed.setter
    def is_zero_signed(self, value: bool) -> None: ...
    @_property
    def significant_digits(self) -> winrt.system.Int32: ...
    @significant_digits.setter
    def significant_digits(self, value: winrt.system.Int32) -> None: ...

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

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

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

@typing.final
class INumberFormatterOptions(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> INumberFormatterOptions: ...
    @_property
    def fraction_digits(self) -> winrt.system.Int32: ...
    @fraction_digits.setter
    def fraction_digits(self, value: winrt.system.Int32) -> None: ...
    @_property
    def geographic_region(self) -> str: ...
    @_property
    def integer_digits(self) -> winrt.system.Int32: ...
    @integer_digits.setter
    def integer_digits(self, value: winrt.system.Int32) -> None: ...
    @_property
    def is_decimal_point_always_displayed(self) -> bool: ...
    @is_decimal_point_always_displayed.setter
    def is_decimal_point_always_displayed(self, value: bool) -> None: ...
    @_property
    def is_grouped(self) -> bool: ...
    @is_grouped.setter
    def is_grouped(self, value: bool) -> None: ...
    @_property
    def languages(self) -> typing.Optional[winrt.windows.foundation.collections.IVectorView[str]]: ...
    @_property
    def numeral_system(self) -> str: ...
    @numeral_system.setter
    def numeral_system(self, value: str) -> None: ...
    @_property
    def resolved_geographic_region(self) -> str: ...
    @_property
    def resolved_language(self) -> str: ...

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

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

@typing.final
class INumberRounderOption(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> INumberRounderOption: ...
    @_property
    def number_rounder(self) -> typing.Optional[INumberRounder]: ...
    @number_rounder.setter
    def number_rounder(self, value: typing.Optional[INumberRounder]) -> None: ...

@typing.final
class ISignedZeroOption(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ISignedZeroOption: ...
    @_property
    def is_zero_signed(self) -> bool: ...
    @is_zero_signed.setter
    def is_zero_signed(self, value: bool) -> None: ...

@typing.final
class ISignificantDigitsOption(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ISignificantDigitsOption: ...
    @_property
    def significant_digits(self) -> winrt.system.Int32: ...
    @significant_digits.setter
    def significant_digits(self, value: winrt.system.Int32) -> None: ...

