/**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */

declare function plural(n: number): number;
declare const _default: (string | number | number[] | (string | undefined)[] | typeof plural | (string[] | undefined)[] | {
    AUD: string[];
    BRL: (string | undefined)[];
    CAD: string[];
    CNY: (string | undefined)[];
    EGP: (string | undefined)[];
    GBP: string[];
    HKD: string[];
    ILS: (string | undefined)[];
    JPY: (string | undefined)[];
    KRW: (string | undefined)[];
    LBP: (string | undefined)[];
    NZD: string[];
    TOP: (string | undefined)[];
    TWD: (string | undefined)[];
    USD: string[];
    VND: (string | undefined)[];
    XCD: (string | undefined)[];
    XXX: never[];
} | undefined)[];
export default _default;
