import { ComputedRef, WritableComputedRef } from 'vue';
import { Options, QueryResult, Service } from './core/types';

interface PaginationType {
    currentKey: string;
    pageSizeKey: string;
    totalKey: string;
    totalPageKey: string;
}
export interface PaginationExtendsOption {
    pagination?: Partial<PaginationType>;
}
export interface PaginationOptions<R, P extends unknown[]> extends Options<R, P>, PaginationExtendsOption {
}
interface PaginationQueryResult<R, P extends unknown[]> extends QueryResult<R, P> {
    current: WritableComputedRef<number>;
    pageSize: WritableComputedRef<number>;
    total: ComputedRef<number>;
    totalPage: ComputedRef<number>;
    changeCurrent: (current: number) => void;
    changePageSize: (pageSize: number) => void;
    changePagination: (current: number, pageSize: number) => void;
}
declare function usePagination<R, P extends unknown[] = any>(service: Service<R, P>, options?: PaginationOptions<R, P>): PaginationQueryResult<R, P>;
export default usePagination;
