import type { ExtractPropTypes, VNode } from 'vue';
import type { AvatarProps } from '../../avatar/src/avatar';
import type RankingList from './ranking-list.vue';
/**
 * 排行榜单条数据
 */
export interface RankingListItem {
    /** 名称 */
    label?: string;
    /** 统计数值 */
    value?: number;
    /** 描述（副标题） */
    description?: string;
    /** 头像，传入 ll-avatar 的 props 对象 */
    avatar?: Partial<AvatarProps>;
    [key: string]: any;
}
/**
 * 字段映射：当数据字段名与默认 label/value/description/avatar 不一致时使用
 */
export interface RankingListFieldNames {
    label?: string;
    value?: string;
    description?: string;
    avatar?: string;
}
/**
 * 经过排序、截断、计算占比后的渲染数据
 */
export interface RankingListRenderItem {
    /** 排名（从 1 开始） */
    rank: number;
    /** 名称 */
    label: string;
    /** 原始数值 */
    value: number;
    /** 格式化后的数值文本 */
    valueText: string;
    /** 描述 */
    description: string;
    /** 头像 props */
    avatar?: Partial<AvatarProps>;
    /** 相对最大值的占比（0 ~ 100） */
    percent: number;
    /** 原始数据 */
    raw: RankingListItem;
}
/** 排序规则：desc 正序（从大到小，默认），asc 倒序（从小到大） */
export type RankingListOrder = 'desc' | 'asc';
/** 展示样式：podium 奖台（默认），list 列表 */
export type RankingListType = 'podium' | 'list';
export interface RankingListSlots {
    /** 自定义整行内容 */
    item?: (props: RankingListRenderItem) => VNode[];
    /** 自定义头像 */
    avatar?: (props: RankingListRenderItem) => VNode[];
    /** 自定义名称 */
    label?: (props: RankingListRenderItem) => VNode[];
    /** 自定义数值 */
    value?: (props: RankingListRenderItem) => VNode[];
    /** 空数据 */
    empty?: () => VNode[];
}
/** 排行榜最大可展示条数 */
export declare const RANKING_LIST_MAX_LIMIT = 500;
export declare const rankingListProps: {
    readonly data: import("ll-plus/es/utils").EpPropFinalized<import("vue").PropType<RankingListItem[]>, unknown, unknown, () => any[], boolean>;
    readonly fieldNames: import("ll-plus/es/utils").EpPropFinalized<import("vue").PropType<RankingListFieldNames>, unknown, unknown, () => {}, boolean>;
    readonly order: import("ll-plus/es/utils").EpPropFinalized<import("vue").PropType<RankingListOrder>, "asc" | "desc", unknown, "desc", boolean>;
    readonly limit: import("ll-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 10, boolean>;
    readonly background: import("ll-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
    readonly color: import("ll-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
    readonly barColor: import("ll-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
    readonly valueFormatter: {
        readonly type: import("vue").PropType<(value: number, item: RankingListItem) => string>;
        readonly required: false;
        readonly validator: (val: unknown) => boolean;
        __epPropKey: true;
    };
    readonly thousandSeparator: import("ll-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
    readonly showBar: import("ll-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
    readonly type: import("ll-plus/es/utils").EpPropFinalized<import("vue").PropType<RankingListType>, "list" | "podium", unknown, "podium", boolean>;
    readonly showAvatar: import("ll-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
};
export type RankingListProps = ExtractPropTypes<typeof rankingListProps>;
export type RankingListInstance = InstanceType<typeof RankingList>;
