import * as solid_js from 'solid-js';
import { FormatTimeOptions } from '@zag-js/i18n-utils';

interface FormatByteProps {
    /**
     * The unit granularity to display
     */
    unit?: 'bit' | 'byte';
    /**
     * The unit display
     */
    unitDisplay?: 'long' | 'short' | 'narrow';
    /**
     * The unit system to use for formatting
     */
    unitSystem?: 'decimal' | 'binary';
    /**
     * The byte size to format
     */
    value: number;
}
declare const FormatByte: (props: FormatByteProps) => solid_js.JSX.Element;

interface FormatNumberProps extends Intl.NumberFormatOptions {
    /**
     * The number to format
     */
    value: number;
}
declare const FormatNumber: (props: FormatNumberProps) => solid_js.JSX.Element;

interface FormatRelativeTimeProps extends Intl.RelativeTimeFormatOptions {
    /**
     * The date to format
     */
    value: Date;
}
declare const FormatRelativeTime: (props: FormatRelativeTimeProps) => solid_js.JSX.Element;

interface FormatTimeProps extends FormatTimeOptions {
    /**
     * The time to format
     */
    value: string | Date;
}
declare const FormatTime: (props: FormatTimeProps) => solid_js.JSX.Element;

declare namespace format {
  export { FormatByte as Byte, type FormatByteProps as ByteProps, FormatNumber as Number, type FormatNumberProps as NumberProps, FormatRelativeTime as RelativeTime, type FormatRelativeTimeProps as RelativeTimeProps, FormatTime as Time, type FormatTimeProps as TimeProps };
}

export { format as Format, FormatByte, type FormatByteProps, FormatNumber, type FormatNumberProps, FormatRelativeTime, type FormatRelativeTimeProps, FormatTime, type FormatTimeProps };
