| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 | /*! *****************************************************************************Copyright (c) Microsoft Corporation. All rights reserved.Licensed under the Apache License, Version 2.0 (the "License"); you may not usethis file except in compliance with the License. You may obtain a copy of theLicense at http://www.apache.org/licenses/LICENSE-2.0THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANYKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIEDWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,MERCHANTABLITY OR NON-INFRINGEMENT.See the Apache Version 2.0 License for specific language governing permissionsand limitations under the License.***************************************************************************** *//// <reference no-default-lib="true"/>declare namespace Intl {    // http://cldr.unicode.org/index/cldr-spec/plural-rules#TOC-Determining-Plural-Categories    type LDMLPluralRule = "zero" | "one" | "two" | "few" | "many" | "other";    type PluralRuleType = "cardinal" | "ordinal";    interface PluralRulesOptions {        localeMatcher?: "lookup" | "best fit" | undefined;        type?: PluralRuleType | undefined;        minimumIntegerDigits?: number | undefined;        minimumFractionDigits?: number | undefined;        maximumFractionDigits?: number | undefined;        minimumSignificantDigits?: number | undefined;        maximumSignificantDigits?: number | undefined;    }    interface ResolvedPluralRulesOptions {        locale: string;        pluralCategories: LDMLPluralRule[];        type: PluralRuleType;        minimumIntegerDigits: number;        minimumFractionDigits: number;        maximumFractionDigits: number;        minimumSignificantDigits?: number;        maximumSignificantDigits?: number;    }    interface PluralRules {        resolvedOptions(): ResolvedPluralRulesOptions;        select(n: number): LDMLPluralRule;    }    const PluralRules: {        new (locales?: string | string[], options?: PluralRulesOptions): PluralRules;        (locales?: string | string[], options?: PluralRulesOptions): PluralRules;        supportedLocalesOf(locales: string | string[], options?: { localeMatcher?: "lookup" | "best fit" }): string[];    };    // We can only have one definition for 'type' in TypeScript, and so you can learn where the keys come from here:    type ES2018NumberFormatPartType = "literal" | "nan" | "infinity" | "percent" | "integer" | "group" | "decimal" | "fraction" | "plusSign" | "minusSign" | "percentSign" | "currency" | "code" | "symbol" | "name";    type ES2020NumberFormatPartType = "compact" | "exponentInteger" | "exponentMinusSign" | "exponentSeparator" | "unit" | "unknown";    type NumberFormatPartTypes = ES2018NumberFormatPartType | ES2020NumberFormatPartType;    interface NumberFormatPart {        type: NumberFormatPartTypes;        value: string;    }    interface NumberFormat {        formatToParts(number?: number | bigint): NumberFormatPart[];    }}
 |