import React from "react";
import { PaginationTheme } from "./Pagination.theme";
/**
 * Pagination component props
 * @property {number} currentPage - The current active page number (1-based)
 * @property {number} totalPages - The total number of pages
 * @property {function} onPageChange - Callback when page changes
 * @property {PaginationSize} size - Size variant of pagination
 * @property {boolean} showFirstLast - Whether to show first/last page buttons
 * @property {boolean} showPrevNext - Whether to show previous/next buttons
 * @property {number} siblingCount - Number of sibling pages to show around current page
 */
export interface PaginationProps extends React.HTMLAttributes<HTMLDivElement> {
    /** The current active page number (1-based) */
    currentPage: number;
    /** The total number of pages */
    totalPages: number;
    /** Callback when page changes */
    onPageChange: (page: number) => void;
    /** Size variant of pagination */
    size?: PaginationSize;
    /** Whether to show first/last page buttons */
    showFirstLast?: boolean;
    /** Whether to show previous/next buttons */
    showPrevNext?: boolean;
    /** Number of sibling pages to show around current page */
    siblingCount?: number;
    /** Additional class names */
    className?: string;
    /** Theme overrides */
    theme?: Partial<PaginationTheme>;
}
export type PaginationSize = "sm" | "md";
/**
 * Internal pagination item props
 */
export interface PaginationItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
    /** Whether this item is currently active */
    isActive?: boolean;
    /** Whether this item is disabled */
    isDisabled?: boolean;
    /** Size variant */
    size?: PaginationSize;
    /** Item type for styling */
    variant?: "page" | "ellipsis";
    /** Additional class names */
    className?: string;
}
