import * as i0 from '@angular/core';
import { OnInit, OnChanges, EventEmitter, TemplateRef, SimpleChanges } from '@angular/core';
import * as _angular_cdk_bidi from '@angular/cdk/bidi';
import { NzConfigKey, NzConfigService } from 'ng-zorro-antd/core/config';
import { NzPaginationI18nInterface } from 'ng-zorro-antd/i18n';
import { NzSafeAny } from 'ng-zorro-antd/core/types';

/**
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
 */
interface PaginationItemRenderContext {
    $implicit: PaginationItemType;
    page: number;
}
type PaginationItemType = 'page' | 'prev' | 'next' | 'prev_5' | 'next_5';
type NzPaginationAlign = 'start' | 'center' | 'end';

declare class NzPaginationComponent implements OnInit, OnChanges {
    readonly _nzModuleName: NzConfigKey;
    private readonly i18n;
    private readonly cdr;
    private readonly breakpointService;
    protected readonly nzConfigService: NzConfigService;
    protected readonly dir: i0.WritableSignal<_angular_cdk_bidi.Direction>;
    private readonly destroyRef;
    readonly nzPageSizeChange: EventEmitter<number>;
    readonly nzPageIndexChange: EventEmitter<number>;
    nzShowTotal: TemplateRef<{
        $implicit: number;
        range: [number, number];
    }> | null;
    nzItemRender: TemplateRef<PaginationItemRenderContext> | null;
    nzSize: 'default' | 'small';
    nzPageSizeOptions: number[];
    nzShowSizeChanger: boolean;
    nzShowQuickJumper: boolean;
    nzSimple: boolean;
    nzDisabled: boolean;
    nzResponsive: boolean;
    nzHideOnSinglePage: boolean;
    nzTotal: number;
    nzPageIndex: number;
    nzPageSize: number;
    readonly nzAlign: i0.InputSignal<NzPaginationAlign>;
    showPagination: boolean;
    locale: NzPaginationI18nInterface;
    size: 'default' | 'small';
    private total$;
    validatePageIndex(value: number, lastIndex: number): number;
    onPageIndexChange(index: number): void;
    onPageSizeChange(size: number): void;
    onTotalChange(total: number): void;
    getLastIndex(total: number, pageSize: number): number;
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzPaginationComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NzPaginationComponent, "nz-pagination", ["nzPagination"], { "nzShowTotal": { "alias": "nzShowTotal"; "required": false; }; "nzItemRender": { "alias": "nzItemRender"; "required": false; }; "nzSize": { "alias": "nzSize"; "required": false; }; "nzPageSizeOptions": { "alias": "nzPageSizeOptions"; "required": false; }; "nzShowSizeChanger": { "alias": "nzShowSizeChanger"; "required": false; }; "nzShowQuickJumper": { "alias": "nzShowQuickJumper"; "required": false; }; "nzSimple": { "alias": "nzSimple"; "required": false; }; "nzDisabled": { "alias": "nzDisabled"; "required": false; }; "nzResponsive": { "alias": "nzResponsive"; "required": false; }; "nzHideOnSinglePage": { "alias": "nzHideOnSinglePage"; "required": false; }; "nzTotal": { "alias": "nzTotal"; "required": false; }; "nzPageIndex": { "alias": "nzPageIndex"; "required": false; }; "nzPageSize": { "alias": "nzPageSize"; "required": false; }; "nzAlign": { "alias": "nzAlign"; "required": false; "isSignal": true; }; }, { "nzPageSizeChange": "nzPageSizeChange"; "nzPageIndexChange": "nzPageIndexChange"; }, never, never, true, never>;
    static ngAcceptInputType_nzShowSizeChanger: unknown;
    static ngAcceptInputType_nzShowQuickJumper: unknown;
    static ngAcceptInputType_nzSimple: unknown;
    static ngAcceptInputType_nzDisabled: unknown;
    static ngAcceptInputType_nzResponsive: unknown;
    static ngAcceptInputType_nzHideOnSinglePage: unknown;
    static ngAcceptInputType_nzTotal: unknown;
    static ngAcceptInputType_nzPageIndex: unknown;
    static ngAcceptInputType_nzPageSize: unknown;
}

declare class NzPaginationSimpleComponent implements OnChanges {
    protected readonly dir: i0.WritableSignal<_angular_cdk_bidi.Direction>;
    template: TemplateRef<NzSafeAny>;
    itemRender: TemplateRef<PaginationItemRenderContext> | null;
    disabled: boolean;
    locale: NzPaginationI18nInterface;
    total: number;
    pageIndex: number;
    pageSize: number;
    readonly pageIndexChange: EventEmitter<number>;
    lastIndex: number;
    isFirstIndex: boolean;
    isLastIndex: boolean;
    constructor();
    jumpToPageViaInput($event: Event): void;
    prePage(): void;
    nextPage(): void;
    onPageIndexChange(index: number): void;
    updateBindingValue(): void;
    ngOnChanges(changes: SimpleChanges): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzPaginationSimpleComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NzPaginationSimpleComponent, "nz-pagination-simple", never, { "itemRender": { "alias": "itemRender"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "total": { "alias": "total"; "required": false; }; "pageIndex": { "alias": "pageIndex"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; }, { "pageIndexChange": "pageIndexChange"; }, never, never, true, never>;
}

/**
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
 */

declare class NzPaginationOptionsComponent implements OnChanges {
    nzSize: 'default' | 'small';
    disabled: boolean;
    showSizeChanger: boolean;
    showQuickJumper: boolean;
    locale: NzPaginationI18nInterface;
    total: number;
    pageIndex: number;
    pageSize: number;
    pageSizeOptions: number[];
    readonly pageIndexChange: EventEmitter<number>;
    readonly pageSizeChange: EventEmitter<number>;
    listOfPageSizeOption: Array<{
        value: number;
        label: string;
    }>;
    onPageSizeChange(size: number): void;
    jumpToPageViaInput($event: Event): void;
    ngOnChanges(changes: SimpleChanges): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzPaginationOptionsComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NzPaginationOptionsComponent, "li[nz-pagination-options]", never, { "nzSize": { "alias": "nzSize"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "showSizeChanger": { "alias": "showSizeChanger"; "required": false; }; "showQuickJumper": { "alias": "showQuickJumper"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "total": { "alias": "total"; "required": false; }; "pageIndex": { "alias": "pageIndex"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; }; }, { "pageIndexChange": "pageIndexChange"; "pageSizeChange": "pageSizeChange"; }, never, never, true, never>;
}

declare class NzPaginationItemComponent implements OnChanges {
    active: boolean;
    locale: NzPaginationI18nInterface;
    index: number | null | undefined;
    disabled: boolean;
    direction: string;
    type: PaginationItemType | string | null | undefined;
    itemRender: TemplateRef<PaginationItemRenderContext> | null;
    readonly diffIndex: EventEmitter<number>;
    readonly gotoIndex: EventEmitter<number>;
    title: string | null;
    clickItem(): void;
    ngOnChanges(changes: SimpleChanges): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzPaginationItemComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NzPaginationItemComponent, "li[nz-pagination-item]", never, { "active": { "alias": "active"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "index": { "alias": "index"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "direction": { "alias": "direction"; "required": false; }; "type": { "alias": "type"; "required": false; }; "itemRender": { "alias": "itemRender"; "required": false; }; }, { "diffIndex": "diffIndex"; "gotoIndex": "gotoIndex"; }, never, never, true, never>;
}

declare class NzPaginationDefaultComponent implements OnChanges {
    protected readonly dir: i0.WritableSignal<_angular_cdk_bidi.Direction>;
    template: TemplateRef<NzSafeAny>;
    nzSize: 'default' | 'small';
    itemRender: TemplateRef<PaginationItemRenderContext> | null;
    showTotal: TemplateRef<{
        $implicit: number;
        range: [number, number];
    }> | null;
    disabled: boolean;
    locale: NzPaginationI18nInterface;
    showSizeChanger: boolean;
    showQuickJumper: boolean;
    total: number;
    pageIndex: number;
    pageSize: number;
    pageSizeOptions: number[];
    readonly pageIndexChange: EventEmitter<number>;
    readonly pageSizeChange: EventEmitter<number>;
    ranges: number[];
    listOfPageItem: Array<Partial<NzPaginationItemComponent>>;
    constructor();
    jumpPage(index: number): void;
    jumpDiff(diff: number): void;
    trackByPageItem(_: number, value: Partial<NzPaginationItemComponent>): string;
    onPageIndexChange(index: number): void;
    onPageSizeChange(size: number): void;
    getLastIndex(total: number, pageSize: number): number;
    buildIndexes(): void;
    getListOfPageItem(pageIndex: number, lastIndex: number): Array<Partial<NzPaginationItemComponent>>;
    ngOnChanges(changes: SimpleChanges): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzPaginationDefaultComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NzPaginationDefaultComponent, "nz-pagination-default", never, { "nzSize": { "alias": "nzSize"; "required": false; }; "itemRender": { "alias": "itemRender"; "required": false; }; "showTotal": { "alias": "showTotal"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "showSizeChanger": { "alias": "showSizeChanger"; "required": false; }; "showQuickJumper": { "alias": "showQuickJumper"; "required": false; }; "total": { "alias": "total"; "required": false; }; "pageIndex": { "alias": "pageIndex"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; }; }, { "pageIndexChange": "pageIndexChange"; "pageSizeChange": "pageSizeChange"; }, never, never, true, never>;
}

declare class NzPaginationModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<NzPaginationModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<NzPaginationModule, never, [typeof NzPaginationComponent, typeof NzPaginationSimpleComponent, typeof NzPaginationOptionsComponent, typeof NzPaginationItemComponent, typeof NzPaginationDefaultComponent], [typeof NzPaginationComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<NzPaginationModule>;
}

export { NzPaginationComponent, NzPaginationDefaultComponent, NzPaginationItemComponent, NzPaginationModule, NzPaginationOptionsComponent, NzPaginationSimpleComponent };
export type { NzPaginationAlign, PaginationItemRenderContext, PaginationItemType };
