import { PaginatorButtonId } from '../internal/constants';
import { PaginatorStateManager, PaginatorState } from '../internal/lib';
import type { BlockBuilder, BlockBuilderReturnableFn, StringReturnableFn, Nullable } from '../internal/types';
export declare type PaginatorActionIdFn = StringReturnableFn<PaginatorState & {
    buttonId: PaginatorButtonId;
}>;
export interface PageCountTextFnParams {
    page: number;
    totalPages: number;
}
export declare type PaginatorPageCountTextFn = (params: PageCountTextFnParams) => string;
export declare type PaginatorBuilderFn<T> = BlockBuilderReturnableFn<{
    item: T;
}>;
interface PaginatorUIComponentParams<T> {
    items: T[];
    paginator: PaginatorStateManager;
    nextButtonText: Nullable<string>;
    previousButtonText: Nullable<string>;
    pageCountTextFunction: Nullable<PaginatorPageCountTextFn>;
    actionIdFunction: PaginatorActionIdFn;
    builderFunction: PaginatorBuilderFn<T>;
}
export declare class PaginatorUIComponent<T> {
    private readonly items;
    private readonly paginator;
    private readonly nextButtonText;
    private readonly previousButtonText;
    private readonly pageCountTextFunction;
    private readonly actionIdFunction;
    private readonly builderFunction;
    constructor(params: PaginatorUIComponentParams<T>);
    getBlocks(): BlockBuilder[];
}
export {};
