import { LitElement } from 'lit';
export interface IntlFormatterProps {
type?: 'date' | 'number' | 'percent' | 'currency';
value?: number | string | Date;
lang?: string;
date?: Date | string;
weekday?: 'narrow' | 'short' | 'long';
era?: 'narrow' | 'short' | 'long';
year?: 'numeric' | '2-digit';
month?: 'numeric' | '2-digit' | 'narrow' | 'short' | 'long';
day?: 'numeric' | '2-digit';
hour?: 'numeric' | '2-digit';
minute?: 'numeric' | '2-digit';
second?: 'numeric' | '2-digit';
timeZoneName?: 'short' | 'long';
timeZone?: string;
hourFormat?: 'auto' | '12' | '24';
dateStyle?: 'full' | 'long' | 'medium' | 'short';
timeStyle?: 'full' | 'long' | 'medium' | 'short';
noGrouping?: boolean;
currency?: string;
currencyDisplay?: 'symbol' | 'narrowSymbol' | 'code' | 'name';
minimumIntegerDigits?: number;
minimumFractionDigits?: number;
maximumFractionDigits?: number;
minimumSignificantDigits?: number;
maximumSignificantDigits?: number;
}
/**
* @element ag-intl-formatter
* @summary Formats dates, numbers, currency, and percentages using the browser's Intl API
*
* @prop {string} type - The type of formatting: 'date', 'number', 'percent', or 'currency'
* @prop {number|string|Date} value - The value to format (for numbers/currency/percent) or date
* @prop {string} lang - The locale to use for formatting (e.g., 'en-US', 'fr-FR'). Defaults to browser locale
*
* @fires format-error - Dispatched when formatting fails with details about the error
*
* @csspart date-time - The time element wrapper for date formatting
* @csspart number - The span element for number formatting
* @csspart percent - The span element for percent formatting
* @csspart currency - The span element for currency formatting
* @csspart error - The span element shown when validation fails
*
* @example
* ```html
*
*
*
*
*
*
*
*
*
*
*
*
*
*
* ```
*/
export declare class IntlFormatter extends LitElement implements IntlFormatterProps {
type: 'date' | 'number' | 'percent' | 'currency';
value: number | string | Date;
lang: string;
date: Date | string;
weekday: 'narrow' | 'short' | 'long';
era: 'narrow' | 'short' | 'long';
year: 'numeric' | '2-digit';
month: 'numeric' | '2-digit' | 'narrow' | 'short' | 'long';
day: 'numeric' | '2-digit';
hour: 'numeric' | '2-digit';
minute: 'numeric' | '2-digit';
second: 'numeric' | '2-digit';
timeZoneName: 'short' | 'long';
timeZone: string;
hourFormat: 'auto' | '12' | '24';
dateStyle: 'full' | 'long' | 'medium' | 'short';
timeStyle: 'full' | 'long' | 'medium' | 'short';
noGrouping: boolean;
currency: string;
currencyDisplay: 'symbol' | 'narrowSymbol' | 'code' | 'name';
minimumIntegerDigits: number;
minimumFractionDigits: number;
maximumFractionDigits: number;
minimumSignificantDigits: number;
maximumSignificantDigits: number;
private _formatterCache;
constructor();
/**
* Get the locale to use for formatting
*/
private _getLocale;
/**
* Generate a cache key based on formatter type and options
*/
private _getCacheKey;
/**
* Dispatch a format error event
*/
private _dispatchError;
/**
* Validate component properties based on type
*/
private _validate;
/**
* Format a date value using Intl.DateTimeFormat
*/
private _formatDate;
/**
* Format a number value using Intl.NumberFormat
*/
private _formatNumber;
/**
* Render the formatted value
*/
render(): import('lit').TemplateResult<1>;
/**
* Clean up formatter cache when component is removed
*/
disconnectedCallback(): void;
}
//# sourceMappingURL=_IntlFormatter.d.ts.map