import type { Generic } from 'adopted-style-sheets';
import type { Events } from '../enums';
import type { PropCustomClass, PropLabel, PropMax, PropTooltipAlign } from '../props';
import type { EventValueOrEventCallback, Option, Stringified } from '../types';
export type KoliBriPaginationButtonCallbacks = {
    [Events.onClick]?: EventValueOrEventCallback<Event, number>;
    onChangePage?: EventValueOrEventCallback<Event, number>;
    onChangePageSize?: EventValueOrEventCallback<Event, number>;
};
export type PaginationHasButton = {
    first: boolean;
    last: boolean;
    next: boolean;
    previous: boolean;
};
type RequiredProps = {
    on: KoliBriPaginationButtonCallbacks;
    page: number;
} & PropMax;
type OptionalProps = {
    boundaryCount: number;
    hasButtons: boolean | Stringified<PaginationHasButton>;
    pageSize: number;
    pageSizeOptions: Stringified<number[]>;
    siblingCount: number;
} & PropCustomClass & PropLabel & PropTooltipAlign;
export type KoliBriPaginationProps = RequiredProps & OptionalProps;
type RequiredStates = {
    boundaryCount: number;
    hasButtons: PaginationHasButton;
    page: number;
    pageSize: number;
    pageSizeOptions: Option<number>[];
    on: KoliBriPaginationButtonCallbacks;
    siblingCount: number;
} & PropLabel & PropMax;
type OptionalStates = PropCustomClass & PropTooltipAlign;
export type PaginationProps = Generic.Element.Members<RequiredProps, OptionalProps>;
export type PaginationStates = Generic.Element.Members<RequiredStates, OptionalStates>;
export type PaginationAPI = Generic.Element.ComponentApi<RequiredProps, OptionalProps, RequiredStates, OptionalStates>;
export {};
