/**
 * @license
 * Copyright 2023 Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { ICustomElementFoundation } from '@tylertech/forge-core';
import { IPaginatorAdapter } from './paginator-adapter';
import { PaginatorAlternativeAlignment, PaginatorRangeLabelBuilder } from './paginator-constants';
export interface IPaginatorFoundation extends ICustomElementFoundation {
    pageIndex: number;
    pageSize: number;
    offset: number;
    total: number;
    pageSizeOptions: number[] | boolean;
    pageSizeLabel: string;
    rangeLabelCallback: PaginatorRangeLabelBuilder;
    focus(options?: FocusOptions): void;
}
export declare class PaginatorFoundation {
    private _adapter;
    private _pageIndex;
    private _pageSize;
    private _offset;
    private _total;
    private _pageSizeOptions;
    private _label;
    private _firstLast;
    private _first;
    private _disabled;
    private _alternative;
    private _alignment;
    private _rangeLabelCallback;
    private _firstPageListener;
    private _previousPageListener;
    private _nextPageListener;
    private _lastPageListener;
    private _pageSizeListener;
    constructor(_adapter: IPaginatorAdapter);
    initialize(): void;
    disconnect(): void;
    focus(options?: FocusOptions): void;
    private _attachListeners;
    private _detachListeners;
    private _onFirstPage;
    private _onPreviousPage;
    private _onNextPage;
    private _onLastPage;
    private _onPageSizeChanged;
    private _emitChangeEvent;
    private _getMaxPages;
    private _updateRangeLabel;
    private _syncInteractionState;
    private _toggleFirstLastButtons;
    private _toggleFirstButton;
    private _hasFirstPage;
    private _hasPreviousPage;
    private _hasNextPage;
    private _hasLastPage;
    private _computePageIndexFromOffset;
    private _computeOffset;
    private _applyPageIndex;
    private _applyPageSize;
    private _applyTotal;
    private _applyAlternativeAlignment;
    private _applyDisabled;
    get pageIndex(): number;
    set pageIndex(value: number);
    get pageSize(): number;
    set pageSize(value: number);
    get offset(): number;
    set offset(value: number);
    get total(): number;
    set total(value: number);
    get pageSizeOptions(): number[] | boolean;
    set pageSizeOptions(options: number[] | boolean);
    get label(): string;
    set label(value: string);
    get firstLast(): boolean;
    set firstLast(value: boolean);
    get first(): boolean;
    set first(value: boolean);
    get disabled(): boolean;
    set disabled(value: boolean);
    get alternative(): boolean;
    set alternative(value: boolean);
    get alignment(): PaginatorAlternativeAlignment;
    set alignment(value: PaginatorAlternativeAlignment);
    get rangeLabelCallback(): PaginatorRangeLabelBuilder;
    set rangeLabelCallback(value: PaginatorRangeLabelBuilder);
}
