import { Renderer2, ViewContainerRef, DoCheck, KeyValueDiffers, AfterViewInit } from '@angular/core';
import { MatPaginator } from '@angular/material/paginator';
import * as i0 from "@angular/core";
export declare class MicCustomPaginatorDirective implements DoCheck, AfterViewInit {
    private readonly paginator;
    private readonly containerRef;
    private readonly renderer;
    private readonly pageGapTxt;
    private readonly rangeStart;
    private readonly rangeEnd;
    private readonly buttons;
    private readonly currentPage;
    private readonly dataDiffer;
    private readonly defaultNbPagesToShow;
    private actionContainer;
    private nextPageNode;
    readonly micCustomPaginator: boolean;
    get nbPagesToShow(): number;
    set nbPagesToShow(value: number);
    get numOfPages(): number;
    get lastPageIndex(): number;
    /**
     *  Constructor
     *
     */
    constructor(paginator: MatPaginator, containerRef: ViewContainerRef, renderer: Renderer2, differs: KeyValueDiffers);
    ngDoCheck(): void;
    /**
     * Update page data on page size change
     *
     * @param newPageSize new page size
     */
    handlePageSizeChange(newPageSize: number): void;
    /**
     * Update page data on page data change
     *
     * @param newPageIndex new page index
     */
    handlePageIndexChange(newPageIndex: number): void;
    /**
     * Update page data on paginator data length change
     *
     * @param newLength new data length
     */
    handleLengthChange(newLength: number): void;
    /**
     * Reset pagination to first page
     */
    private resetToFirstPage;
    /**
     * Compute the new pages range from the page change record
     *
     * @param currentPageIndex current page index
     */
    private computePageRange;
    /**
     * Set range to show all pages
     */
    private setFullRange;
    /**
     * Calculate whether to show first/last page and available slots
     */
    private calculatePageDisplayOptions;
    /**
     * Calculate initial range based on current page and constraints
     */
    private calculateInitialRange;
    /**
     * Adjust range if there's available space
     */
    private adjustRangeForAvailableSpace;
    /**
     * Create the pagination button based on the rangeStart and rangeEnd
     *
     */
    private buildPageNumbers;
    /**
     * Clear existing pagination buttons
     */
    private clearButtons;
    /**
     * Build all pagination buttons
     */
    private buildPaginationButtons;
    /**
     * Insert a button before the next page node
     */
    private insertButton;
    /**
     * Create a pagination button
     *
     * @param i Index of the button
     * @param pageIndex Current page index
     * @param gapDirection Direction for gap button ('before' or 'after')
     * @returns MatButton element
     */
    private createButton;
    /**
     * Set button attributes and CSS classes
     */
    private setButtonAttributes;
    /**
     * Set button behavior based on button type
     */
    private setButtonBehavior;
    /**
     * Calculate the index to jump to when clicking a gap button
     */
    private calculateGapJumpIndex;
    private switchPage;
    ngAfterViewInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<MicCustomPaginatorDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<MicCustomPaginatorDirective, "[micCustomPaginator]", never, { "micCustomPaginator": { "alias": "micCustomPaginator"; "required": false; }; "nbPagesToShow": { "alias": "nbPagesToShow"; "required": false; }; }, {}, never, never, false, never>;
}
