import { ButtonContext } from '../components/contexts/ButtonContext';
import { SelectContext } from '../components/contexts/SelectContext';
import { Button } from '../components/helpers/Button';
import { Select } from '../components/helpers/Select';
import type { BaseContext } from '../contexts/BaseContext';
import { Prompt, PromptOptions } from './Prompt';
import { AnyPaginator } from './helpers/AnyPaginator';
export interface PaginationOptions extends PromptOptions {
    /** always force showing page selector; even if there is less then 5 pages */
    forcePageSelect?: boolean;
}
export declare enum PaginationEmojis {
    FIRST = "\u23EE\uFE0F",
    PREV = "\u25C0\uFE0F",
    NEXT = "\u25B6\uFE0F",
    LAST = "\u23ED\uFE0F",
    CLOSE = "\u2716\uFE0F"
}
export declare class PaginationPrompt<T = void, U = T> extends Prompt<T> {
    readonly paginator: AnyPaginator<U>;
    protected options: PaginationOptions;
    protected btnFirst: Button;
    protected btnPrev: Button;
    protected btnNext: Button;
    protected btnLast: Button;
    protected btnClose: Button;
    protected sltPage: Select;
    constructor(ctx: BaseContext, paginator?: AnyPaginator<U>, options?: PaginationOptions);
    start(): Promise<T>;
    close(): Promise<void>;
    draw(): Promise<void>;
    protected handleButton(btn: ButtonContext): Promise<void>;
    protected handleSelect(slt: SelectContext): Promise<void>;
    protected handleText(response: string): Promise<[boolean, T]>;
}
