/**
 * Pagination component
 * @countermeasure/web-components/components/pagination
 *
 * Vanilla TS counterpart of the React `Pagination` primitive. Kept at parity
 * with that component's visual design (glass tokens, chevron icons, active
 * `shadow-glow`) and accessibility surface (`data-slot`, `role="navigation"`,
 * `aria-current`, per-button `aria-label`, `type="button"`).
 *
 * The React primitive is a headless/compound API where the consumer composes
 * the numbered page links by hand. This vanilla component is self-contained and
 * stateful: it renders Previous / Next controls and (optionally, when
 * `totalPages` is provided) the numbered page links + ellipsis itself.
 */
export interface PaginationConfig {
    /** Container element (or selector) the controls are mounted into. */
    container: HTMLElement | string;
    /**
     * Initial page number (1-based).
     * @default 1
     */
    page?: number;
    /**
     * Whether further pages are available beyond the current one.
     *
     * Ignored when `totalPages` is provided (the more/less state is derived from
     * `page < totalPages` instead).
     * @default false
     */
    hasMore?: boolean;
    /**
     * Total number of pages. When provided, the component renders numbered page
     * links (with an active page and ellipsis when the count is large), matching
     * the React primitive's `PaginationLink` / `PaginationEllipsis`. When omitted,
     * only the Previous / page-info / Next controls are rendered.
     */
    totalPages?: number;
    /**
     * Maximum number of numbered page links to show before collapsing the middle
     * into ellipsis. Only relevant when `totalPages` is set. Must be >= 5 to leave
     * room for first/last + ellipsis; smaller values are clamped to 5.
     * @default 7
     */
    siblingCount?: number;
    /** Extra class names appended to the root element (space-separated). */
    className?: string;
    /** Called whenever the user navigates to a different page. */
    onPageChange?: (page: number) => void;
}
export declare class Pagination {
    private readonly config;
    private readonly containerEl;
    private readonly rootEl;
    private readonly prevBtn;
    private readonly nextBtn;
    private readonly infoEl;
    /** Holds the numbered page links / ellipsis, between prev and next. */
    private readonly pagesEl;
    private readonly totalPages;
    private readonly maxButtons;
    private currentPage;
    private hasMore;
    private destroyed;
    /** Listeners attached to numbered page links, for cleanup on destroy. */
    private pageListeners;
    constructor(config: PaginationConfig);
    private makeLabel;
    setPage(page: number, hasMore?: boolean): void;
    getPage(): number;
    destroy(): void;
    /** Whether a next page exists, derived from `totalPages` when available. */
    private get canGoNext();
    private render;
    /** Render numbered page links + ellipsis (only when `totalPages` is set). */
    private renderPages;
    private makePageLink;
    private makeEllipsis;
    private clearPageListeners;
    /** Navigate to an explicit page (used by numbered links). */
    private goToPage;
    private readonly handlePrev;
    private readonly handleNext;
}
//# sourceMappingURL=index.d.ts.map