import { BaseInteraction, BaseMessageOptions as PageOptions } from 'discord.js';
import { PageBuilder } from './page-builder.helper';
import { NecordPaginationOptions } from '../interfaces';
type PagesFactory = (page: number, maxPages: number) => Promise<PageBuilder> | PageBuilder;
type PagesFilter = (interaction: BaseInteraction) => Promise<boolean> | boolean;
export declare class PaginationBuilder {
    customId: string;
    private _maxPages;
    get maxPages(): number;
    set maxPages(value: number);
    filters: PagesFilter[];
    private pages;
    private pagesFactory;
    private readonly options;
    constructor(options: NecordPaginationOptions);
    setCustomId(customId: string): this;
    setMaxPages(maxPages: number): this;
    setPages(pages: PageBuilder[]): this;
    addPage(page: PageBuilder): this;
    clearPages(): this;
    setPagesFactory(factory: PagesFactory): this;
    setButtonsAppearance(buttons: NecordPaginationOptions['buttons']): this;
    setAllowSkip(allowSkip: boolean): this;
    setAllowTraversal(allowTraversal: boolean): this;
    setFilter(filter: PagesFilter): this;
    setFilters(filters: PagesFilter[]): this;
    addFilter(filter: PagesFilter): this;
    clearFilters(): this;
    filter(interaction: BaseInteraction): Promise<boolean>;
    build(page?: number): Promise<PageOptions>;
    copy(): PaginationBuilder;
    private generateButtons;
}
export {};
