/**-----------------------------------------------------------------------------------------
* Copyright © 2026 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
import { EventEmitter, OnChanges, SimpleChanges, OnInit, OnDestroy, ElementRef, Renderer2, NgZone, AfterViewInit, QueryList, ChangeDetectorRef } from '@angular/core';
import { PageChangeEvent } from './change-event-args.interface';
import { PagerTemplateDirective } from "./pager-template.directive";
import { PagerContextService } from "./pager-context.service";
import { PageSizeChangeEvent } from './pagesizechange-event';
import { PageSizeItem } from './pagesize-item.interface';
import { AdaptiveMode } from '../util';
import { PagerType } from './common/pager-type';
import { LocalizationService } from '@progress/kendo-angular-l10n';
import { PagerNavigationService } from './navigation.service';
import { PagerSize } from './common/pager-size';
import { PagerPageSizesComponent } from './pager-page-sizes.component';
import { PagerInputComponent } from './pager-input.component';
import * as i0 from "@angular/core";
/**
 * Represents the Kendo UI Pager component for Angular.
 * Enables you to split a set of data into pages, providing a flexible and intuitive UI.
 *
 * @example
 * ```ts
 * @Component({
 *   selector: 'my-app',
 *   template: `
 *     <kendo-pager
 *       [total]="total"
 *       [skip]="skip"
 *       [pageSize]="pageSize"
 *       (pageChange)="onPageChange($event)">
 *     </kendo-pager>
 *   `
 * })
 * export class AppComponent {
 *   public total = 200;
 *   public skip = 0;
 *   public pageSize = 10;
 *
 *   public onPageChange(event: PageChangeEvent) {
 *     this.skip = event.skip;
 *   }
 * }
 * ```
 *
 * @remarks
 * Supported children components are:
 * {@link PagerNumericButtonsComponent},
 * {@link PagerInputComponent},
 * {@link PagerPageSizesComponent},
 * {@link PagerSpacerComponent},
 * {@link PagerPrevButtonsComponent},
 * {@link PagerNextButtonsComponent},
 * {@link PagerInfoComponent},
 * {@link CustomMessagesComponent}
 */
export declare class PagerComponent implements OnChanges, AfterViewInit, OnInit, OnDestroy {
    private pagerContext;
    private element;
    private localization;
    private renderer;
    private ngZone;
    private cdr;
    private navigationService;
    /**
     * Represents the collection of pager template directives.
     */
    template: QueryList<PagerTemplateDirective>;
    set numericButtons(buttons: ElementRef);
    set pagerInput(input: ElementRef);
    pagerInputComponent: PagerInputComponent;
    set pageSizes(sizes: ElementRef);
    pageSizesComponent: PagerPageSizesComponent;
    /**
     * @hidden
     */
    externalTemplate: any;
    /**
     * Specifies the total number of data items in the collection.
     *
     * @default 0
     */
    total: number;
    /**
     * Specifies the number of data items to skip.
     *
     * @default 0
     */
    skip: number;
    /**
     * Specifies the number of data items per page.
     */
    pageSize: number;
    /**
     * Specifies the maximum number of numeric buttons before the buttons are collapsed.
     *
     * @default 10
     */
    buttonCount: number;
    /**
     * Determines whether to display information about the current page and the total number of records.
     *
     * @default true
     */
    info: boolean;
    /**
     * Specifies the type of the Pager.
     *
     * @default 'numeric'
     */
    type: PagerType;
    /**
     * Displays a dropdown for selecting the page size.
     * When set to `true`, the dropdown contains the default list of options - 5, 10, 20.
     * To customize the list of options, set `pageSizeValues` to an array of the desired values.
     * The array can contain numbers and [PageSizeItem](https://www.telerik.com/kendo-angular-ui/components/pager/api/pagesizeitem) objects.
     */
    set pageSizeValues(value: boolean | number[] | PageSizeItem[]);
    get pageSizeValues(): boolean | number[] | PageSizeItem[];
    /**
     * Determines whether to display the **Previous** and **Next** buttons.
     *
     * @default true
     */
    previousNext: boolean;
    /**
     * Determines whether users can use dedicated shortcuts to interact with the Pager ([see example](https://www.telerik.com/kendo-angular-ui/components/pager/keyboard-navigation)).
     * By default, navigation is enabled. To disable it and make the Pager content accessible in the normal tab sequence, set the property to `false`.
     * @default true
     *
     * @remarks
     * This property is related to accessibility.
     */
    set navigable(value: boolean);
    get navigable(): boolean;
    /**
     * Specifies the padding of all Pager elements. The default value is set by the Kendo theme.
     */
    set size(size: PagerSize);
    get size(): PagerSize;
    /**
     * Determines whether the Pager responsive functionality is enabled ([see example](https://www.telerik.com/kendo-angular-ui/components/pager/responsive-design)).
     *
     * @default true
     */
    responsive: boolean;
    /**
     * Determines whether the Pager adaptiveness functionality is enabled ([see example](https://www.telerik.com/kendo-angular-ui/components/pager/adaptiveness)).
     *
     * @default 'none'
     */
    adaptiveMode: AdaptiveMode;
    /**
     * Fires when the current page of the Pager changes ([see example](https://www.telerik.com/kendo-angular-ui/components/pager)).
     * You have to handle the event and page the data.
     */
    pageChange: EventEmitter<PageChangeEvent>;
    /**
     * Fires when the page size of the Pager changes.
     * You have to handle the event and page the data.
     * If the event is prevented, the page size remains unchanged ([see example](https://www.telerik.com/kendo-angular-ui/components/pager/events)).
     */
    pageSizeChange: EventEmitter<PageSizeChangeEvent>;
    /**
     * @hidden
     */
    pagerInputVisibilityChange: EventEmitter<boolean>;
    /**
     * @hidden
     */
    pageTextVisibilityChange: EventEmitter<boolean>;
    /**
     * @hidden
     */
    itemsTextVisibilityChange: EventEmitter<boolean>;
    pagerClass: boolean;
    get responsiveClass(): boolean;
    widgetRole: string;
    roleDescription: string;
    keyShortcuts: string;
    get hostTabindex(): string;
    get dir(): string;
    /**
     * @hidden
     */
    focusHandler(ev: any): void;
    get totalPages(): number;
    get currentPage(): number;
    get templateContext(): any;
    /**
     * @hidden
     */
    get showPageText(): boolean;
    set showPageText(value: boolean);
    /**
     * @hidden
     */
    get showItemsText(): boolean;
    set showItemsText(value: boolean);
    /**
     * @hidden
     */
    get showInput(): boolean;
    set showInput(value: boolean);
    /**
     * @hidden
     */
    initialized: boolean;
    private subscriptions;
    private _templateContext;
    _pageSizeValues: number[] | PageSizeItem[];
    private direction;
    private isInnerNavigationEnabled;
    private _navigable;
    private _size;
    private _showInput;
    private _showPageText;
    private _showItemsText;
    private _isAllSelected;
    /**
     * Stores the measurements of various Pager elements.
     * These dimensions are used for responsive layout calculations.
     * @hidden
     */
    private pagerDimensions;
    constructor(pagerContext: PagerContextService, element: ElementRef, localization: LocalizationService, renderer: Renderer2, ngZone: NgZone, cdr: ChangeDetectorRef, navigationService: PagerNavigationService);
    ngOnInit(): void;
    /**
     * Gets the maximum number of items displayed on the current page.
     */
    get maxItems(): number;
    ngAfterViewInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    /**
     * @hidden
     */
    changePage(event: PageChangeEvent): void;
    /**
     * @hidden
     */
    changePageSize(event: PageSizeChangeEvent): void;
    /**
     * @hidden
     */
    onPageSizeChange(event: PageSizeChangeEvent): void;
    /**
     * @hidden
     */
    resizeHandler: (compareWidth?: boolean) => void;
    private sizesDropDownElement;
    private pagerInputElement;
    private pagerInfoElement;
    private numericButtonsElement;
    private responsiveDropDownElement;
    private responsiveDropDownTextElement;
    private responsivePageTextElement;
    private responsiveInfoTextElement;
    private responsiveNumericButtonsElement;
    /**
     * Contains all elements that are subject to responsive toggling.
     * These elements will be shown or hidden based on the available space.
     * The order of elements in the array defines the priority of visibility.
     * This array allows us to work with the elements without performing element-specific logic in other methods.
     */
    private responsiveElements;
    private get ariaLabel();
    private keyDownHandler;
    private innerNavigationChange;
    private handleClasses;
    private showElements;
    private isElementVisible;
    private hideElement;
    private showElement;
    private measureAllTextWidths;
    private showNumericButtonsResponsive;
    private get showPageSizes();
    private setPagerDimensions;
    static ɵfac: i0.ɵɵFactoryDeclaration<PagerComponent, [{ optional: true; skipSelf: true; }, null, null, null, null, null, { optional: true; skipSelf: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<PagerComponent, "kendo-datapager, kendo-pager", ["kendoDataPager", "kendoPager"], { "externalTemplate": { "alias": "externalTemplate"; "required": false; }; "total": { "alias": "total"; "required": false; }; "skip": { "alias": "skip"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; "buttonCount": { "alias": "buttonCount"; "required": false; }; "info": { "alias": "info"; "required": false; }; "type": { "alias": "type"; "required": false; }; "pageSizeValues": { "alias": "pageSizeValues"; "required": false; }; "previousNext": { "alias": "previousNext"; "required": false; }; "navigable": { "alias": "navigable"; "required": false; }; "size": { "alias": "size"; "required": false; }; "responsive": { "alias": "responsive"; "required": false; }; "adaptiveMode": { "alias": "adaptiveMode"; "required": false; }; }, { "pageChange": "pageChange"; "pageSizeChange": "pageSizeChange"; "pagerInputVisibilityChange": "pagerInputVisibilityChange"; "pageTextVisibilityChange": "pageTextVisibilityChange"; "itemsTextVisibilityChange": "itemsTextVisibilityChange"; }, ["template"], never, true, never>;
}
