import type { BaseProps } from '../BaseProps';
import type { PaginationVariantMap } from './index';
/** Visual variant controlling what appears between prev/next buttons.
 * Extensible via module augmentation of PaginationVariantMap.
 */
export type PaginationVariant = keyof PaginationVariantMap;
/** Size of the pagination controls. */
export type PaginationSize = 'sm' | 'md';
export interface PaginationProps extends Omit<BaseProps<HTMLElement>, 'onChange'> {
    /** Ref forwarded to the root element */
    ref?: React.Ref<HTMLElement>;
    /** Current page number (1-based). Page 1 is the first page. */
    page: number;
    /** Called when the page changes. */
    onChange: (page: number) => void;
    /**
     * Async action on page change. Fires after onChange.
     * Uses React transitions for built-in loading state.
     */
    changeAction?: (page: number) => void | Promise<void>;
    /**
     * Total number of items. Used to calculate page count.
     * Takes precedence over totalPages if both provided.
     */
    totalItems?: number;
    /**
     * Total number of pages. Use when you know page count but not item count.
     */
    totalPages?: number;
    /**
     * Whether more pages exist after the current one.
     * Use for cursor-based pagination where total is unknown.
     */
    hasMore?: boolean;
    /** Number of items per page. @default 10 */
    pageSize?: number;
    /** Available page size options. Shows a page size selector when provided. */
    pageSizeOptions?: number[];
    /** Called when the page size changes. */
    onPageSizeChange?: (pageSize: number) => void;
    /**
     * Visual variant controlling what appears between prev/next buttons.
     * - pages: Page number buttons with ellipsis (default)
     * - count: "X–Y of Z" text
     * - compact: "Page X of Y" text
     * - dots: Dot indicators
     * - input: An editable number box rendering "Page [ n ] / N". The leading
     *   noun is controlled by `pageLabel`. First/last double-chevron buttons
     *   flank prev/next by default (see hasFirstLast).
     * - none: Just prev/next buttons
     * @default 'pages'
     */
    variant?: PaginationVariant;
    /**
     * The noun rendered before the editable box in the `input` variant, e.g.
     * "Page" or "Row". Navigation is always page-based (via `onChange`); this
     * only relabels the box. @default the localized "Page"
     */
    pageLabel?: string;
    /**
     * Whether to show first/last («/») double-chevron buttons flanking
     * prev/next. Only applies to the `input` variant; other variants ignore it.
     * The last button needs a known total — it is omitted when the page count is
     * unknown (cursor/hasMore pagination). @default true
     */
    hasFirstLast?: boolean;
    /**
     * Number of pages the previous/next («‹ ›») buttons advance per click.
     * Clamped to the valid page range, so a step that would overshoot lands on
     * the first/last page. When greater than 1, the buttons' accessible names
     * reflect the stride (e.g. "Go forward 5 pages"). Non-integer or values < 1
     * fall back to 1. @default 1
     */
    step?: number;
    /**
     * Number of page buttons to show on each side of the current page.
     * Only applies when variant='pages'. @default 1
     */
    siblingCount?: number;
    /**
     * Size of the pagination controls.
     * @default 'md'
     */
    size?: PaginationSize;
    /** Whether the component is disabled. @default false */
    isDisabled?: boolean;
    /**
     * Accessible label for the navigation landmark.
     * @default 'Pagination'
     */
    label?: string;
    /** Test ID for automated testing. */
    'data-testid'?: string;
}
/**
 * Generates the range of page numbers to display, including ellipsis markers.
 * Returns an array of page numbers and '...' strings.
 *
 * @example
 * ```
 * generatePageRange(5, 10, 1) → [1, '...', 4, 5, 6, '...', 10]
 * generatePageRange(1, 10, 1) → [1, 2, 3, '...', 10]
 * generatePageRange(1, 5, 1)  → [1, 2, 3, 4, 5]
 * ```
 */
export declare function generatePageRange(currentPage: number, totalPages: number, siblingCount: number): (number | '...')[];
/**
 * Standalone pagination controls for navigating through pages of content.
 *
 * Supports multiple display variants: page numbers, count text, compact text,
 * dot indicators, or minimal prev/next navigation. Works with known totals
 * or cursor-based pagination.
 *
 * @example
 * ```
 * <Pagination
 *   page={page}
 *   onChange={setPage}
 *   totalItems={200}
 *   pageSize={20}
 * />
 * ```
 */
export declare function Pagination({ page, onChange, changeAction, totalItems, totalPages: totalPagesProp, hasMore, pageSize: pageSizeProp, pageSizeOptions, onPageSizeChange, variant, pageLabel, hasFirstLast, step: stepProp, siblingCount, size, isDisabled, label: labelFromProps, 'data-testid': testId, xstyle, className, style, ref, ...rest }: PaginationProps): import("react").JSX.Element | null;
export declare namespace Pagination {
    var displayName: string;
}
//# sourceMappingURL=Pagination.d.ts.map