import type { DataFrame, Source } from '../types';
import type { DATA_FORMAT } from './constants';
declare type DataFormatKey = keyof typeof DATA_FORMAT;
export declare type DataFormat = typeof DATA_FORMAT[DataFormatKey];
export declare type TableData = DataFrame;
declare type BaseColumn = {
    key: string;
    title: string;
};
export declare type ShortTextColumn = BaseColumn & {
    dataFormat: typeof DATA_FORMAT.shortText;
    options?: never;
};
export declare type LongTextColumn = BaseColumn & {
    dataFormat: typeof DATA_FORMAT.longText;
    options?: never;
};
export declare type NumberColumn = BaseColumn & {
    dataFormat: typeof DATA_FORMAT.number;
    /**
     * Number formatting options
     *
     * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options
     */
    options?: Intl.NumberFormatOptions;
};
export declare type DateColumn = BaseColumn & {
    dataFormat: typeof DATA_FORMAT.date;
    /**
     * Date and time formatting options
     *
     * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat#using_options
     */
    options?: Intl.DateTimeFormatOptions;
};
export declare type BooleanColumn = BaseColumn & {
    dataFormat: typeof DATA_FORMAT.boolean;
    options?: never;
};
/**
 * Render HTML \<a> tag if the record value is a valid URL.
 */
export declare type URLColumn = BaseColumn & {
    dataFormat: typeof DATA_FORMAT.url;
    options?: {
        /** Default is `_blank` */
        target?: string;
    };
};
export declare type Column = ShortTextColumn | LongTextColumn | NumberColumn | DateColumn | BooleanColumn | URLColumn;
export declare type TableOptions = {
    columns: Column[];
    title?: string;
    subtitle?: string;
    description?: string;
    source?: Source;
    /** To format date and number with the right locale. Default is from browser language */
    locale?: string;
    /**
     * Removes all the presentational styles.
     * Default is `false`.
     */
    unstyled?: boolean;
};
export {};
