import type { ObjectOrInterfaceDefinition, ObjectSet, Osdk, PropertyKeys, QueryDefinition, SimplePropertyDef } from "@osdk/api";
import type { Table } from "@tanstack/react-table";
import type { ColumnDefinition, ObjectTableHandle } from "../ObjectTableApi.js";
import type { OrderBy } from "../utils/types.js";
export interface UseObjectTableSnapshotProps<
	Q extends ObjectOrInterfaceDefinition,
	RDPs extends Record<string, SimplePropertyDef>,
	FunctionColumns extends Record<string, QueryDefinition<{}>>
> {
	/**
	* The object or interface type the table is rendering. Used to construct a
	* base object set for chunking function-column queries by primary key.
	*/
	objectOrInterfaceType: Q;
	table: Table<Osdk.Instance<Q, "$allBaseProperties", PropertyKeys<Q>, RDPs>>;
	columnDefinitions?: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>;
	/**
	* The object set the table resolved to (filter / ordering / unions applied,
	* derived properties included). Rows are loaded by paginating this set.
	*/
	objectSet: ObjectSet<Q, RDPs> | undefined;
	/** Page size for chunking function-column queries across loaded rows. */
	pageSize?: number;
	/**
	* Total number of objects in the object set, as reported by the
	* underlying list payload. Used to fail fast when `getSnapshot` is called
	* with a `rowLimit` lower than the row count.
	*/
	totalCount: string | undefined;
	orderBy: OrderBy<Q> | undefined;
}
/**
* Builds the {@link ObjectTableHandle} exposed via `ObjectTable`'s `tableRef`.
*
* `getSnapshot` reads the table's currently visible columns to decide what to
* export, rejects up front when the set's `totalCount` exceeds `rowLimit`,
* otherwise paginates the entire resolved object set, and resolves
* function-backed column values for the loaded rows.
*/
export declare function useObjectTableSnapshot<
	Q extends ObjectOrInterfaceDefinition,
	RDPs extends Record<string, SimplePropertyDef>,
	FunctionColumns extends Record<string, QueryDefinition<{}>>
>({ objectOrInterfaceType, table, columnDefinitions, objectSet, pageSize, totalCount, orderBy }: UseObjectTableSnapshotProps<Q, RDPs, FunctionColumns>): ObjectTableHandle<Q, RDPs>;
