import * as i0 from "@angular/core";
/**
 * Internal interface for pagination items
 */
export interface PageItem {
    /** The number/text to display for the item */
    number: string;
    /** Whether this is the current active page */
    current?: boolean;
    /** Whether to display this item as an ellipsis */
    ellipsis?: boolean;
    /** Actual page number for this item */
    pageNumber?: number;
    /** Unique identifier for tracking in loops */
    id: string;
}
/**
 * Base directive for pagination components.
 * Contains common functionality shared between different design system implementations.
 */
export declare class PaginationDirective {
    /** Total number of items */
    readonly itemCount: import("@angular/core").InputSignal<number>;
    /** Number of items per page */
    readonly itemsPerPage: import("@angular/core").InputSignal<number>;
    /** Current page number (1-based) */
    readonly currentPage: import("@angular/core").InputSignal<number>;
    /** Title for the previous button */
    readonly previousTitle: import("@angular/core").InputSignal<string>;
    /** Label for the previous button (additional context) */
    readonly previousLabel: import("@angular/core").InputSignal<string | null>;
    /** Title for the next button */
    readonly nextTitle: import("@angular/core").InputSignal<string>;
    /** Label for the next button (additional context) */
    readonly nextLabel: import("@angular/core").InputSignal<string | null>;
    /** Output event when a pagination item is clicked */
    readonly pageChange: import("@angular/core").OutputEmitterRef<number>;
    /** Output event when the previous link is clicked */
    readonly previousClick: import("@angular/core").OutputEmitterRef<void>;
    /** Output event when the next link is clicked */
    readonly nextClick: import("@angular/core").OutputEmitterRef<void>;
    /** Counter for generating unique IDs */
    private ellipsisCounter;
    /** Computed total number of pages */
    readonly totalPages: import("@angular/core").Signal<number>;
    /** Computed flag for whether previous button should be shown */
    readonly hasPreviousPage: import("@angular/core").Signal<boolean>;
    /** Computed flag for whether next button should be shown */
    readonly hasNextPage: import("@angular/core").Signal<boolean>;
    /** Computed pagination items */
    readonly computedItems: import("@angular/core").Signal<PageItem[]>;
    /**
     * Handle page number click
     */
    onPageClick(item: PageItem): void;
    /**
     * Creates a page item for the specified page number
     */
    protected createPageItem(pageNumber: number): PageItem;
    /**
     * Creates an ellipsis item
     */
    protected createEllipsisItem(): PageItem;
    /**
     * Creates an array of sequential page items
     */
    protected createSequentialItems(start: number, end: number): PageItem[];
    static ɵfac: i0.ɵɵFactoryDeclaration<PaginationDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<PaginationDirective, never, never, { "itemCount": { "alias": "itemCount"; "required": false; "isSignal": true; }; "itemsPerPage": { "alias": "itemsPerPage"; "required": false; "isSignal": true; }; "currentPage": { "alias": "currentPage"; "required": false; "isSignal": true; }; "previousTitle": { "alias": "previousTitle"; "required": false; "isSignal": true; }; "previousLabel": { "alias": "previousLabel"; "required": false; "isSignal": true; }; "nextTitle": { "alias": "nextTitle"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; }, { "pageChange": "pageChange"; "previousClick": "previousClick"; "nextClick": "nextClick"; }, never, never, true, never>;
}
