import { PaginatorPassThrough, PaginatorTemplateContext, PaginatorDropdownItemTemplateContext, PaginatorState } from 'primeng/types/paginator';
export * from 'primeng/types/paginator';
import * as i0 from '@angular/core';
import { ElementRef, TemplateRef, EventEmitter, QueryList, SimpleChanges } from '@angular/core';
import * as i2 from 'primeng/api';
import { PrimeTemplate, SelectItem, Aria } from 'primeng/api';
import { BaseComponent } from 'primeng/basecomponent';
import * as i1 from 'primeng/bind';
import { Bind } from 'primeng/bind';
import { SelectChangeEvent } from 'primeng/select';
import { Nullable } from 'primeng/ts-helpers';
import * as _primeuix_styled from '@primeuix/styled';
import { BaseStyle } from 'primeng/base';

/**
 *
 * Paginator is a generic component to display content in paged format.
 *
 * [Live Demo](https://www.primeng.org/paginator)
 *
 * @module paginatorstyle
 *
 */
declare enum PaginatorClasses {
    /**
     * Class name of the paginator element
     */
    paginator = "p-paginator",
    /**
     * Class name of the content start element
     */
    contentStart = "p-paginator-content-start",
    /**
     * Class name of the content end element
     */
    contentEnd = "p-paginator-content-end",
    /**
     * Class name of the first element
     */
    first = "p-paginator-first",
    /**
     * Class name of the first icon element
     */
    firstIcon = "p-paginator-first-icon",
    /**
     * Class name of the prev element
     */
    prev = "p-paginator-prev",
    /**
     * Class name of the prev icon element
     */
    prevIcon = "p-paginator-prev-icon",
    /**
     * Class name of the next element
     */
    next = "p-paginator-next",
    /**
     * Class name of the next icon element
     */
    nextIcon = "p-paginator-next-icon",
    /**
     * Class name of the last element
     */
    last = "p-paginator-last",
    /**
     * Class name of the last icon element
     */
    lastIcon = "p-paginator-last-icon",
    /**
     * Class name of the pages element
     */
    pages = "p-paginator-pages",
    /**
     * Class name of the page element
     */
    page = "p-paginator-page",
    /**
     * Class name of the current element
     */
    current = "p-paginator-current",
    /**
     * Class name of the row per page dropdown element
     */
    pcRowPerPageDropdown = "p-paginator-rpp-dropdown",
    /**
     * Class name of the jump to page dropdown element
     */
    pcJumpToPageDropdown = "p-paginator-jtp-dropdown",
    /**
     * Class name of the jump to page input element
     */
    pcJumpToPageInput = "p-paginator-jtp-input"
}
declare class PaginatorStyle extends BaseStyle {
    name: string;
    style: _primeuix_styled.StyleType;
    classes: {
        paginator: ({ instance }: {
            instance: any;
        }) => string[];
        content: string;
        contentStart: string;
        contentEnd: string;
        first: ({ instance }: {
            instance: any;
        }) => (string | {
            'p-disabled': any;
        })[];
        firstIcon: string;
        prev: ({ instance }: {
            instance: any;
        }) => (string | {
            'p-disabled': any;
        })[];
        prevIcon: string;
        next: ({ instance }: {
            instance: any;
        }) => (string | {
            'p-disabled': any;
        })[];
        nextIcon: string;
        last: ({ instance }: {
            instance: any;
        }) => (string | {
            'p-disabled': any;
        })[];
        lastIcon: string;
        pages: string;
        page: ({ instance, pageLink }: {
            instance: any;
            pageLink: any;
        }) => (string | {
            'p-paginator-page-selected': boolean;
        })[];
        current: string;
        pcRowPerPageDropdown: string;
        pcJumpToPageDropdown: string;
        pcJumpToPageInput: string;
    };
    static ɵfac: i0.ɵɵFactoryDeclaration<PaginatorStyle, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<PaginatorStyle>;
}
interface PaginatorStyle extends BaseStyle {
}

/**
 * Paginator is a generic component to display content in paged format.
 * @group Components
 */
declare class Paginator extends BaseComponent<PaginatorPassThrough> {
    componentName: string;
    bindDirectiveInstance: Bind;
    $pcPaginator: Paginator | undefined;
    onAfterViewChecked(): void;
    /**
     * Number of page links to display.
     * @group Props
     */
    pageLinkSize: number;
    /**
     * Style class of the component.
     * @deprecated since v20.0.0, use `class` instead.
     * @group Props
     */
    styleClass: string | undefined;
    /**
     * Whether to show it even there is only one page.
     * @group Props
     */
    alwaysShow: boolean;
    /**
     * Target element to attach the dropdown overlay, valid values are "body" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]="mydiv" for a div element having #mydiv as variable name).
     * @deprecated since v20.0.0. Use `appendTo` instead.
     * @group Props
     */
    dropdownAppendTo: HTMLElement | ElementRef | TemplateRef<any> | string | null | undefined | any;
    /**
     * Template instance to inject into the left side of the paginator.
     * @param {PaginatorTemplateContext} context - Paginator template context.
     * @see {@link PaginatorTemplateContext}
     * @group Props
     */
    templateLeft: TemplateRef<PaginatorTemplateContext> | undefined;
    /**
     * Template instance to inject into the right side of the paginator.
     * @param {PaginatorTemplateContext} context - Paginator template context.
     * @see {@link PaginatorTemplateContext}
     * @group Props
     */
    templateRight: TemplateRef<PaginatorTemplateContext> | undefined;
    /**
     * Dropdown height of the viewport in pixels, a scrollbar is defined if height of list exceeds this value.
     * @group Props
     */
    dropdownScrollHeight: string;
    /**
     * Template of the current page report element. Available placeholders are {currentPage},{totalPages},{rows},{first},{last} and {totalRecords}
     * @group Props
     */
    currentPageReportTemplate: string;
    /**
     * Whether to display current page report.
     * @group Props
     */
    showCurrentPageReport: boolean | undefined;
    /**
     * When enabled, icons are displayed on paginator to go first and last page.
     * @group Props
     */
    showFirstLastIcon: boolean;
    /**
     * Number of total records.
     * @group Props
     */
    totalRecords: number;
    /**
     * Data count to display per page.
     * @group Props
     */
    rows: number;
    /**
     * Array of integer/object values to display inside rows per page dropdown. A object that have 'showAll' key can be added to it to show all data. Exp; [10,20,30,{showAll:'All'}]
     * @group Props
     */
    rowsPerPageOptions: any[] | undefined;
    /**
     * Whether to display a dropdown to navigate to any page.
     * @group Props
     */
    showJumpToPageDropdown: boolean | undefined;
    /**
     * Whether to display a input to navigate to any page.
     * @group Props
     */
    showJumpToPageInput: boolean | undefined;
    /**
     * Template instance to inject into the jump to page dropdown item inside in the paginator.
     * @param {PaginatorDropdownItemTemplateContext} context - dropdown item context.
     * @see {@link PaginatorDropdownItemTemplateContext}
     * @group Props
     */
    jumpToPageItemTemplate: TemplateRef<PaginatorDropdownItemTemplateContext> | undefined;
    /**
     * Whether to show page links.
     * @group Props
     */
    showPageLinks: boolean;
    /**
     * Locale to be used in formatting.
     * @group Props
     */
    locale: string | undefined;
    /**
     * Template instance to inject into the rows per page dropdown item inside in the paginator.
     * @param {PaginatorDropdownItemTemplateContext} context - dropdown item context.
     * @see {@link PaginatorDropdownItemTemplateContext}
     * @group Props
     */
    dropdownItemTemplate: TemplateRef<PaginatorDropdownItemTemplateContext> | undefined;
    /**
     * Zero-relative number of the first row to be displayed.
     * @group Props
     */
    get first(): number;
    set first(val: number);
    /**
     * Target element to attach the overlay, valid values are "body" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]="mydiv" for a div element having #mydiv as variable name).
     * @defaultValue 'self'
     * @group Props
     */
    appendTo: i0.InputSignal<any>;
    /**
     * Callback to invoke when page changes, the event object contains information about the new state.
     * @param {PaginatorState} event - Paginator state.
     * @group Emits
     */
    onPageChange: EventEmitter<PaginatorState>;
    /**
     * Template for the dropdown icon.
     * @group Templates
     */
    dropdownIconTemplate: Nullable<TemplateRef<void>>;
    /**
     * Template for the first page link icon.
     * @group Templates
     */
    firstPageLinkIconTemplate: Nullable<TemplateRef<void>>;
    /**
     * Template for the previous page link icon.
     * @group Templates
     */
    previousPageLinkIconTemplate: Nullable<TemplateRef<void>>;
    /**
     * Template for the last page link icon.
     * @group Templates
     */
    lastPageLinkIconTemplate: Nullable<TemplateRef<void>>;
    /**
     * Template for the next page link icon.
     * @group Templates
     */
    nextPageLinkIconTemplate: Nullable<TemplateRef<void>>;
    templates: Nullable<QueryList<PrimeTemplate>>;
    _dropdownIconTemplate: TemplateRef<void> | undefined;
    _firstPageLinkIconTemplate: TemplateRef<void> | undefined;
    _previousPageLinkIconTemplate: TemplateRef<void> | undefined;
    _lastPageLinkIconTemplate: TemplateRef<void> | undefined;
    _nextPageLinkIconTemplate: TemplateRef<void> | undefined;
    pageLinks: number[] | undefined;
    pageItems: SelectItem[] | undefined;
    rowsPerPageItems: SelectItem[] | undefined;
    paginatorState: any;
    _first: number;
    _page: number;
    _componentStyle: PaginatorStyle;
    $appendTo: i0.Signal<any>;
    get display(): string | null;
    constructor();
    onInit(): void;
    onAfterContentInit(): void;
    getAriaLabel(labelType: keyof Aria): string | undefined;
    getPageAriaLabel(value: number): string | undefined;
    getLocalization(digit: number): string;
    onChanges(simpleChange: SimpleChanges): void;
    updateRowsPerPageOptions(): void;
    isFirstPage(): boolean;
    isLastPage(): boolean;
    getPageCount(): number;
    calculatePageLinkBoundaries(): [number, number];
    updatePageLinks(): void;
    changePage(p: number): void;
    updateFirst(): void;
    getPage(): number;
    changePageToFirst(event: Event): void;
    changePageToPrev(event: Event): void;
    changePageToNext(event: Event): void;
    changePageToLast(event: Event): void;
    onPageLinkClick(event: Event, page: number): void;
    onRppChange(event: Event): void;
    onPageDropdownChange(event: SelectChangeEvent): void;
    updatePaginatorState(): void;
    empty(): boolean;
    currentPage(): number;
    get currentPageReport(): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<Paginator, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<Paginator, "p-paginator", never, { "pageLinkSize": { "alias": "pageLinkSize"; "required": false; }; "styleClass": { "alias": "styleClass"; "required": false; }; "alwaysShow": { "alias": "alwaysShow"; "required": false; }; "dropdownAppendTo": { "alias": "dropdownAppendTo"; "required": false; }; "templateLeft": { "alias": "templateLeft"; "required": false; }; "templateRight": { "alias": "templateRight"; "required": false; }; "dropdownScrollHeight": { "alias": "dropdownScrollHeight"; "required": false; }; "currentPageReportTemplate": { "alias": "currentPageReportTemplate"; "required": false; }; "showCurrentPageReport": { "alias": "showCurrentPageReport"; "required": false; }; "showFirstLastIcon": { "alias": "showFirstLastIcon"; "required": false; }; "totalRecords": { "alias": "totalRecords"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "rowsPerPageOptions": { "alias": "rowsPerPageOptions"; "required": false; }; "showJumpToPageDropdown": { "alias": "showJumpToPageDropdown"; "required": false; }; "showJumpToPageInput": { "alias": "showJumpToPageInput"; "required": false; }; "jumpToPageItemTemplate": { "alias": "jumpToPageItemTemplate"; "required": false; }; "showPageLinks": { "alias": "showPageLinks"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "dropdownItemTemplate": { "alias": "dropdownItemTemplate"; "required": false; }; "first": { "alias": "first"; "required": false; }; "appendTo": { "alias": "appendTo"; "required": false; "isSignal": true; }; }, { "onPageChange": "onPageChange"; }, ["dropdownIconTemplate", "firstPageLinkIconTemplate", "previousPageLinkIconTemplate", "lastPageLinkIconTemplate", "nextPageLinkIconTemplate", "templates"], never, true, [{ directive: typeof i1.Bind; inputs: {}; outputs: {}; }]>;
    static ngAcceptInputType_pageLinkSize: unknown;
    static ngAcceptInputType_alwaysShow: unknown;
    static ngAcceptInputType_showCurrentPageReport: unknown;
    static ngAcceptInputType_showFirstLastIcon: unknown;
    static ngAcceptInputType_totalRecords: unknown;
    static ngAcceptInputType_rows: unknown;
    static ngAcceptInputType_showJumpToPageDropdown: unknown;
    static ngAcceptInputType_showJumpToPageInput: unknown;
    static ngAcceptInputType_showPageLinks: unknown;
}
declare class PaginatorModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<PaginatorModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<PaginatorModule, never, [typeof Paginator, typeof i2.SharedModule], [typeof Paginator, typeof i2.SharedModule]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<PaginatorModule>;
}

export { Paginator, PaginatorClasses, PaginatorModule, PaginatorStyle };
