import type { CursorPaginationProps } from '../../components/ui/cursor-pagination';
/**
 * Client-side pagination configuration
 */
export interface ClientPaginationConfig {
    type: 'client';
    currentPage: number;
    totalPages: number;
    itemCount: number;
    itemName?: string;
    onNext: () => void;
    onPrevious: () => void;
    showInfo?: boolean;
}
/**
 * Server-side cursor pagination configuration
 */
export interface ServerPaginationConfig {
    type: 'server';
    hasNextPage: boolean;
    hasLoadedBeyondFirst: boolean;
    startCursor?: string | null;
    endCursor?: string | null;
    itemCount: number;
    itemName?: string;
    onNext: () => void | Promise<void>;
    onReset: () => void | Promise<void>;
    showInfo?: boolean;
}
export type PaginationConfig = ClientPaginationConfig | ServerPaginationConfig;
/**
 * Unified pagination hook that works for both client-side and server-side pagination
 *
 * @example Client-side pagination
 * ```typescript
 * const pagination = useTablePagination({
 *   type: 'client',
 *   currentPage: 1,
 *   totalPages: 10,
 *   itemCount: 20,
 *   itemName: 'scripts',
 *   onNext: () => setPage(p => p + 1),
 *   onPrevious: () => setPage(p => p - 1),
 *   onReset: () => setPage(1)
 * })
 * ```
 *
 * @example Server-side pagination
 * ```typescript
 * const pagination = useTablePagination({
 *   type: 'server',
 *   hasNextPage: pageInfo.hasNextPage,
 *   hasLoadedBeyondFirst: true,
 *   startCursor: pageInfo.startCursor,
 *   endCursor: pageInfo.endCursor,
 *   itemCount: devices.length,
 *   itemName: 'devices',
 *   onNext: fetchNextPage,
 *   onReset: fetchFirstPage
 * })
 * ```
 */
export declare function useTablePagination(config: PaginationConfig | null): CursorPaginationProps | undefined;
//# sourceMappingURL=use-table-pagination.d.ts.map