import { ChangeDetectorRef, ElementRef, EventEmitter } from '@angular/core';
import { IPageCancellableEventArgs, IPageEventArgs } from './paginator-interfaces';
import { IPaginatorResourceStrings } from '../core/i18n/paginator-resources';
import { OverlaySettings } from '../services/overlay/utilities';
import { IgxPaginatorToken } from './token';
import { IgxIconService } from '../icon/icon.service';
import * as i0 from "@angular/core";
export declare class IgxPaginatorContentDirective {
    /**
     * @internal
     * @hidden
     */
    cssClass: string;
    static ɵfac: i0.ɵɵFactoryDeclaration<IgxPaginatorContentDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<IgxPaginatorContentDirective, "[igxPaginatorContent],igx-paginator-content", never, {}, {}, never, never, true, never>;
}
/**
 * Paginator component description
 * @igxParent IgxGridComponent, IgxTreeGridComponent, IgxHierarchicalGridComponent, IgxPivotGridComponent, *
 */
export declare class IgxPaginatorComponent implements IgxPaginatorToken {
    private elementRef;
    private cdr;
    /**
     * @hidden
     * @internal
     */
    customContent: IgxPaginatorContentDirective;
    /**
     * Emitted when `perPage` property value of the paginator is changed.
     *
     * @example
     * ```html
     * <igx-paginator (perPageChange)="onPerPageChange($event)"></igx-paginator>
     * ```
     * ```typescript
     * public onPerPageChange(perPage: number) {
     *   this.perPage = perPage;
     * }
     * ```
     */
    perPageChange: EventEmitter<number>;
    /**
     * Emitted after the current page is changed.
     *
     * @example
     * ```html
     * <igx-paginator (pageChange)="onPageChange($event)"></igx-paginator>
     * ```
     * ```typescript
     * public onPageChange(page: number) {
     *   this.currentPage = page;
     * }
     * ```
     */
    pageChange: EventEmitter<number>;
    /**
     * Emitted before paging is performed.
     *
     * @remarks
     * Returns an object consisting of the current and next pages.
     * @example
     * ```html
     * <igx-paginator (paging)="pagingHandler($event)"></igx-paginator>
     * ```
     */
    paging: EventEmitter<IPageCancellableEventArgs>;
    /**
     * Emitted after paging is performed.
     *
     * @remarks
     * Returns an object consisting of the previous and current pages.
     * @example
     * ```html
     * <igx-paginator (pagingDone)="pagingDone($event)"></igx-paginator>
     * ```
     */
    pagingDone: EventEmitter<IPageEventArgs>;
    /**
     * Total pages calculated from totalRecords and perPage
     */
    totalPages: number;
    protected _page: number;
    protected _totalRecords: number;
    protected _selectOptions: number[];
    protected _perPage: number;
    private _resourceStrings;
    private _overlaySettings;
    private defaultSelectValues;
    /** @hidden @internal */
    cssClass: string;
    /**
     * Gets/Sets the current page of the paginator.
     * The default is 0.
     * ```typescript
     * let page = this.paginator.page;
     * ```
     *
     * @memberof IgxPaginatorComponent
     */
    get page(): number;
    set page(value: number);
    /**
     * Gets/Sets the number of visible items per page in the paginator.
     * The default is 15.
     * ```typescript
     * let itemsPerPage = this.paginator.perPage;
     * ```
     *
     * @memberof IgxPaginatorComponent
     */
    get perPage(): number;
    set perPage(value: number);
    /**
     * Sets the total records.
     * ```typescript
     * let totalRecords = this.paginator.totalRecords;
     * ```
     *
     * @memberof IgxPaginatorComponent
     */
    get totalRecords(): number;
    set totalRecords(value: number);
    /**
     * Sets custom options in the select of the paginator
     * ```typescript
     * let options = this.paginator.selectOptions;
     * ```
     *
     * @memberof IgxPaginatorComponent
     */
    get selectOptions(): Array<number>;
    set selectOptions(value: Array<number>);
    /**
     * Sets custom OverlaySettings.
     * ```html
     * <igx-paginator [overlaySettings] = "customOverlaySettings"></igx-paginator>
     * ```
     */
    get overlaySettings(): OverlaySettings;
    set overlaySettings(value: OverlaySettings);
    /**
     * An accessor that sets the resource strings.
     * By default it uses EN resources.
     */
    set resourceStrings(value: IPaginatorResourceStrings);
    /**
     * An accessor that returns the resource strings.
     */
    get resourceStrings(): IPaginatorResourceStrings;
    constructor(elementRef: ElementRef, cdr: ChangeDetectorRef);
    /**
     * Returns if the current page is the last page.
     * ```typescript
     * const lastPage = this.paginator.isLastPage;
     * ```
     */
    get isLastPage(): boolean;
    /**
     * Returns if the current page is the first page.
     * ```typescript
     * const lastPage = this.paginator.isFirstPage;
     * ```
     */
    get isFirstPage(): boolean;
    /**
     * Returns if the first pager buttons should be disabled
     * @hidden
     * @deprecated in version 18.1.0. Use the `isFirstPage` property instead.
     */
    get isFirstPageDisabled(): boolean;
    /**
     * Returns if the last pager buttons should be disabled
     * @hidden
     * @deprecated in version 18.1.0. Use the `isLastPage` property instead.
     */
    get isLastPageDisabled(): boolean;
    get nativeElement(): any;
    /**
     * Goes to the next page of the `IgxPaginatorComponent`, if the paginator is not already at the last page.
     * ```typescript
     * this.paginator.nextPage();
     * ```
     *
     * @memberof IgxPaginatorComponent
     */
    nextPage(): void;
    /**
     * Goes to the previous page of the `IgxPaginatorComponent`, if the paginator is not already at the first page.
     * ```typescript
     * this.paginator.previousPage();
     * ```
     *
     * @memberof IgxPaginatorComponent
     */
    previousPage(): void;
    /**
     * Goes to the desired page index.
     * ```typescript
     * this.paginator.paginate(1);
     * ```
     *
     * @param val
     * @memberof IgxPaginatorComponent
     */
    paginate(val: number): void;
    private sortUniqueOptions;
    static ɵfac: i0.ɵɵFactoryDeclaration<IgxPaginatorComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<IgxPaginatorComponent, "igx-paginator", never, { "page": { "alias": "page"; "required": false; }; "perPage": { "alias": "perPage"; "required": false; }; "totalRecords": { "alias": "totalRecords"; "required": false; }; "selectOptions": { "alias": "selectOptions"; "required": false; }; "overlaySettings": { "alias": "overlaySettings"; "required": false; }; "resourceStrings": { "alias": "resourceStrings"; "required": false; }; }, { "perPageChange": "perPageChange"; "pageChange": "pageChange"; "paging": "paging"; "pagingDone": "pagingDone"; }, ["customContent"], ["[igxPaginatorContent],igx-paginator-content"], true, never>;
}
export declare class IgxPageSizeSelectorComponent {
    paginator: IgxPaginatorComponent;
    /**
     * @internal
     * @hidden
     */
    cssClass: string;
    constructor(paginator: IgxPaginatorComponent);
    static ɵfac: i0.ɵɵFactoryDeclaration<IgxPageSizeSelectorComponent, [{ host: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<IgxPageSizeSelectorComponent, "igx-page-size", never, {}, {}, never, never, true, never>;
}
export declare class IgxPageNavigationComponent {
    paginator: IgxPaginatorComponent;
    protected iconService: IgxIconService;
    /**
     * @internal
     * @hidden
     */
    cssClass: string;
    /**
     * Sets the `role` attribute of the element.
     */
    role: string;
    constructor(paginator: IgxPaginatorComponent, iconService: IgxIconService);
    static ɵfac: i0.ɵɵFactoryDeclaration<IgxPageNavigationComponent, [{ host: true; }, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<IgxPageNavigationComponent, "igx-page-nav", never, { "role": { "alias": "role"; "required": false; }; }, {}, never, never, true, never>;
}
