import type { ComputedRef, MaybeRefOrGetter, PropType, Ref } from 'vue'; import type { Group, GroupableItem, GroupSummary } from './group.js'; import type { EventProp } from '../../../util/index.js'; export declare const makeDataTablePaginateProps: (defaults?: Defaults | undefined) => { page: unknown extends Defaults["page"] ? { type: (NumberConstructor | StringConstructor)[]; default: number; } : Omit<{ type: (NumberConstructor | StringConstructor)[]; default: number; }, "default" | "type"> & { type: PropType; default: unknown extends Defaults["page"] ? string | number : Defaults["page"] | NonNullable; }; itemsPerPage: unknown extends Defaults["itemsPerPage"] ? { type: (NumberConstructor | StringConstructor)[]; default: number; } : Omit<{ type: (NumberConstructor | StringConstructor)[]; default: number; }, "default" | "type"> & { type: PropType; default: unknown extends Defaults["itemsPerPage"] ? string | number : Defaults["itemsPerPage"] | NonNullable; }; pageBy: unknown extends Defaults["pageBy"] ? { type: PropType<'item' | 'any' | 'auto'>; default: string; } : Omit<{ type: PropType<'item' | 'any' | 'auto'>; default: string; }, "default" | "type"> & { type: PropType; default: unknown extends Defaults["pageBy"] ? "any" | "auto" | "item" : Defaults["pageBy"] | NonNullable<"any" | "auto" | "item">; }; }; export type VDataTablePaginationInjectionData = { page: Ref; itemsPerPage: Ref; startIndex: Ref; stopIndex: Ref; pageCount: Ref; itemsLength: Ref; prevPage: () => void; nextPage: () => void; setPage: (value: number) => void; setItemsPerPage: (value: number) => void; }; type PaginationProps = { page: number | string; 'onUpdate:page': EventProp | undefined; itemsPerPage: number | string; 'onUpdate:itemsPerPage': EventProp | undefined; itemsLength?: number | string; }; export declare function createPagination(props: PaginationProps): { page: Ref & { readonly externalValue: string | number; }; itemsPerPage: Ref & { readonly externalValue: string | number; }; }; export declare function providePagination(options: { page: Ref; itemsPerPage: Ref; itemsLength: Ref; }): { page: Ref; itemsPerPage: Ref; startIndex: ComputedRef; stopIndex: ComputedRef; pageCount: ComputedRef; itemsLength: Ref; nextPage: () => void; prevPage: () => void; setPage: (value: number) => void; setItemsPerPage: (value: number) => void; }; export declare function usePagination(): VDataTablePaginationInjectionData; export declare function usePaginatedItems(options: { items: MaybeRefOrGetter; startIndex: Ref; stopIndex: Ref; itemsPerPage: Ref; }): { paginatedItems: ComputedRef; }; export declare function usePaginatedGroups(options: { pageBy: ComputedRef<'item' | 'group' | 'any'>; sortedItems: Ref; paginate: (items: MaybeRefOrGetter) => { paginatedItems: ComputedRef; pageCount: ComputedRef; setItemsPerPage: (value: number) => void; prevPage: () => void; nextPage: () => void; setPage: (value: number) => void; }; group: (items: MaybeRefOrGetter) => { flatItems: ComputedRef | GroupSummary)[]>; groups: ComputedRef[]>; }; }): { pageCount: ComputedRef; setItemsPerPage: (value: number) => void; prevPage: () => void; nextPage: () => void; setPage: (value: number) => void; paginatedItems: ComputedRef | GroupSummary)[]>; };