import { LitElement } from 'lit';
import '../circular-progress/CircularProgress.js';
import '../dropdown/Dropdown.js';
import '../dropdown/DropdownItem.js';
import '../dropdown/DropdownMenu.js';
declare const Pagination_base: (new (...args: any[]) => import("../../util/EventEmitterMixin.js").EventEmitterMixinInterface) & (new (...args: any[]) => import("../../util/ReadyMixin.js").ReadyMixinInterface) & typeof LitElement;
/**
 * A pagination component for navigating through paged content.
 *
 * Supports multiple layout variants (Search, Widget, Widget Small, Calendar)
 * through configurable props and pseudo-slots.
 *
 * **Page size modes:**
 *
 * - **Built-in** (default): When no `slot="page-size"` is provided and `page-size-changer`
 *   is true, Pagination renders its own `btu-dropdown` from the `page-size-options` attribute.
 *   Events, label sync, and page size changes are managed automatically.
 *
 * - **Custom slot**: When a child has `slot="page-size"`, the built-in dropdown is suppressed.
 *   The consumer owns all behavior — event handling, label sync, etc. Use this for non-standard
 *   selectors like a calendar week/month toggle.
 *
 * **Page jumper modes:**
 *
 * - **Built-in**: When `page-jumper` is true and no `slot="jumper"` is provided, Pagination
 *   renders a dropdown with "Page 1" through "Page N" items. Fully reactive — updates
 *   automatically when page, page size, or total items change.
 *
 * - **Custom slot**: When a child has `slot="jumper"`, the built-in dropdown is suppressed.
 *   The consumer owns all behavior. Use this for custom jumper content like a "Today" button.
 *
 * @element btu-pagination
 *
 * @slot page-size - Custom page-size selector (replaces built-in dropdown). Consumer manages all behavior.
 * @slot jumper - Custom jumper content (replaces built-in page jumper dropdown). Consumer manages all behavior.
 *
 * @fires {CustomEvent} btu-pagination-ready - Fired after first render
 * @fires {CustomEvent<{page: number, pageSize: number}>} btu-pagination-change - Fired on page navigation
 * @fires {CustomEvent<{page: number, pageSize: number}>} btu-pagination-page-size-change - Fired on page size change
 *
 * @cssprop --pagination-color-background - Background color for dropdowns, buttons, and jumper
 * @cssprop --pagination-color-foreground - Text/icon color
 */
export default class Pagination extends Pagination_base {
    /**
     * Current page number (1-based)
     * @attr
     */
    page: number;
    /**
     * Number of items per page
     * @attr page-size
     */
    pageSize: number;
    /**
     * Disables all pagination controls
     * @attr
     */
    disabled: boolean;
    /**
     * Shows loading spinner and dims controls
     * @attr
     */
    loading: boolean;
    /**
     * Hide controls when there is only one page
     * @attr hide-on-single-page
     */
    hideOnSinglePage: boolean;
    /**
     * Show the page size dropdown
     * @attr page-size-changer
     */
    pageSizeChanger: boolean;
    /**
     * Comma-separated page size options
     * @attr page-size-options
     */
    pageSizeOptions: string;
    /**
     * Total number of items across all pages
     * @attr total-items
     */
    totalItems: number;
    /**
     * Show first and last page buttons
     * @attr boundary-buttons
     */
    boundaryButtons: boolean;
    /**
     * Hide the item count display (e.g., "1-10 of 200")
     * @attr hide-total-count
     */
    hideTotalCount: boolean;
    /**
     * Show the page jumper dropdown. Intended for moderate page counts (under ~100 pages).
     * For large datasets, use a custom `slot="jumper"` with a virtualized or input-based control.
     * @attr page-jumper
     */
    pageJumper: boolean;
    /**
     * Accessible label for the pagination nav landmark
     * @attr
     */
    label: string | undefined;
    /** @internal */
    private _userInitiated;
    /** @internal */
    private initialClasses;
    /** @internal */
    private _hideControls;
    private get _parsedPageSizeOptions();
    private get _totalPages();
    private get _startItem();
    private get _endItem();
    connectedCallback(): void;
    createRenderRoot(): this;
    willUpdate(): void;
    firstUpdated(): void;
    updated(changed: Map<string, unknown>): void;
    private _setupSlots;
    private _goToFirstPage;
    private _goToPreviousPage;
    private _goToNextPage;
    private _goToLastPage;
    private _manageBoundaryFocus;
    private _onBuiltinPageSizeSelect;
    private _onBuiltinJumperSelect;
    render(): import("lit-html").TemplateResult<1>;
}
declare global {
    interface HTMLElementTagNameMap {
        'btu-pagination': Pagination;
    }
}
export {};
//# sourceMappingURL=Pagination.d.ts.map