import { ReactNode } from 'react';
import { StandardProps } from '../@types/common';
import { SelectProps } from '../Select/Props';
export interface TextParams {
    prev?: string;
    next?: string;
    page?: string;
    jumper?: string;
}
/**
 * @title Pagination
 */
export interface PaginationProps extends StandardProps {
    /**
     * @en align of pagination
     * @cn 排布方式
     * @default 'left'
     */
    align?: 'left' | 'center' | 'right';
    /**
     * @en Current page.
     * @cn 当前页，如果传入值，组件为受控组件，必须通过 onChange 来处理回调
     */
    current?: number;
    /**
     * @en Initial page number
     * @cn 初始页码
     * @default 1
     */
    defaultCurrent?: number;
    /**
     * @en Disabled
     * @cn 禁用
     * @default false
     */
    disabled?: boolean;
    /**
     * @en The layout of child elements, options: 'links': page number; 'simple': simple page number(Do not use both simple and links); 'list': page size selector; 'jumper': jump to page number; 'simple': minimalist mode; function({ current, total, pageSize }): custom information
     * @cn 子组件布局，可选值为:'links': 页码；'simple': 简约页码(和links不要同时使用)；'list': 每页数量选择。'jumper': 跳转页码；function({ current, total, pageSize }): 匿名函数，用来信息展示
     * @default ['links']
     */
    layout?: Array<'links' | 'simple' | 'list' | 'jumper' | ((props: PaginationProps) => ReactNode)>;
    /**
     * @en The callback function when current page or pageSize is changing。current: new page number。pageSize: number of each page
     * @cn 页码或每页显示数量改变时回调。current: 新的页码。pageSize: 每页数量
     */
    onChange?: (current: number, pageSize: number, sizeChange?: boolean) => void;
    /**
     * @en Number of each page
     * @cn 每页数量
     * @default 10
     */
    pageSize?: number;
    /**
     * @en The list of number of each page
     * @cn 每页数量可选列表
     * @default [10, 20, 30, 50, 100]
     */
    pageSizeList?: number[];
    /**
     * @en size of pagination
     * @cn 尺寸
     * @default 'default'
     */
    size?: 'large' | 'default' | 'small';
    /**
     * @en Replaced text。prev: the previous page。next: the next page。page:the text of pageSizeList。jumper: jump to input box text, '{input}' pilaceholder for input box
     * @cn 替换文案。prev: 上一页。next: 下一页。page: pageSizeList 文字。jumper: 跳转输入框文字, '{input}' 为输入框占位
     */
    text?: TextParams;
    /**
     * @en Total number. If total is less than 0, hide the Pagination.
     * @cn 总条目数。如果 total 小于 0，隐藏分页。
     * @default 0
     */
    total?: number;
    /**
     * @en Additional attributes which need to given page size selector
     * @cn 需要给分页数量的选择框的额外的属性
     */
    sizeListProps?: SelectProps<number, number>;
    /**
     * @en The number of pagination buttons
     * @cn 分页器页码按钮数量
     * @default 5
     */
    span?: number;
}
export interface Props {
    current: number;
    defaultCurrent: number;
    onChange: (current: number, pageSize: number, sizeChange?: boolean) => void;
    pageSize: number;
    total: number;
}
export interface PaginationItem {
    children?: React.ReactNode;
    className?: string;
    disabled?: boolean;
    isCurrent?: boolean;
    onClick: (current: number, pageSize?: number) => void;
    page: number;
}
export interface JumperProps {
    current: number;
    onChange: (current: number) => void;
    pageSize: number;
    text: TextParams;
    total: number;
    size?: 'large' | 'default' | 'small';
    isSimple?: boolean;
}
interface Base {
    onChange: (current: number, pageSize: number) => void;
    current: number;
    pageSize: number;
    total: number;
}
export interface LinksProps extends Base {
    disabled?: boolean;
    span?: number;
    text?: TextParams;
}
export interface NextProps extends Base {
    disabled?: boolean;
    text?: TextParams;
    isSimple?: boolean;
}
export interface PageSizeListProps {
    current: number;
    disabled?: boolean;
    onChange: (current: number, pageSize: number) => void;
    pageSize: number;
    pageSizeList: number[];
    text: TextParams;
    size?: 'large' | 'default' | 'small';
    sizeListProps: any;
}
export interface PrevProps {
    current: number;
    disabled?: boolean;
    onChange: (current: number, pageSize: number) => void;
    text: TextParams;
    isSimple?: boolean;
}
export {};
