import { QueryKey } from '@tanstack/react-query';
import React from 'react';
import { BaseEntry, PaginationFilter, PaginationResponse } from '../../../types';
import { UseSearchPaginationProps } from './useSearchPagination';
export declare type UsePaginationProps<SearchPaginationDTO extends PaginationFilter, Entry extends BaseEntry | any, TQueryKey extends QueryKey = QueryKey> = UseSearchPaginationProps<SearchPaginationDTO, Entry, TQueryKey> & {
    onPageChanged?: (page: number) => void;
    onPageSizeChanged?: (pageSize: number) => void;
    shouldPrefetchNextPage?: boolean;
};
export declare const defaultPageSize = 10;
export declare const defaultPageIndex = 1;
export declare const usePagination: <SearchPaginationDTO extends PaginationFilter, Entry extends unknown, TGenerics extends {
    Params: {
        userId: string;
        logId: string;
        roleId: string;
        key: string;
        Id: string;
        rememberMe: string;
        returnUrl: string;
        clientId: string;
        email: string;
        userName: string;
        loginProvider: string;
    };
    Search: {
        pagination: import('../../../providers').SearchPagination;
        returnUrl: string;
        errorId: string;
        logoutId: string;
        searchFilter: import('../../../types').SearchFilter;
    };
    RouteMeta: {
        breadcrumb: (params: {
            userId: string;
            logId: string;
            roleId: string;
            key: string;
            Id: string;
            rememberMe: string;
            returnUrl: string;
            clientId: string;
            email: string;
            userName: string;
            loginProvider: string;
        }) => string | React.ReactElement<any, string | React.JSXElementConstructor<any>>;
    };
} = {
    Params: {
        userId: string;
        logId: string;
        roleId: string;
        key: string;
        Id: string;
        rememberMe: string;
        returnUrl: string;
        clientId: string;
        email: string;
        userName: string;
        loginProvider: string;
    };
    Search: {
        pagination: import('../../../providers').SearchPagination;
        returnUrl: string;
        errorId: string;
        logoutId: string;
        searchFilter: import('../../../types').SearchFilter;
    };
    RouteMeta: {
        breadcrumb: (params: {
            userId: string;
            logId: string;
            roleId: string;
            key: string;
            Id: string;
            rememberMe: string;
            returnUrl: string;
            clientId: string;
            email: string;
            userName: string;
            loginProvider: string;
        }) => string | React.ReactElement<any, string | React.JSXElementConstructor<any>>;
    };
}, TQueryKey extends QueryKey = QueryKey>({ searchData, queryKeyName, url, config, onPageChanged, onPageSizeChanged, shouldPrefetchNextPage, }: UsePaginationProps<SearchPaginationDTO, Entry, TQueryKey>) => {
    NextPage: () => void;
    PreviousPage: () => void;
    SetPage: (newPage: number) => void;
    SetPageSize: (newPageSize: number) => void;
    currentPage: number;
    currentSize: number;
    totalPages: number;
    paginationResponse: PaginationResponse<Entry>;
    isLoading: boolean;
};
//# sourceMappingURL=usePagination.d.ts.map