import type { ObjectOrInterfaceDefinition, ObjectSet, Osdk, PropertyKeys, QueryDefinition, SimplePropertyDef } from "@osdk/api";
import type { Client } from "@osdk/client";
import type { ColumnDefinition, FunctionColumnLocator } from "../ObjectTableApi.js";
/** A page's filtered ObjectSet paired with the row objects it covers. */
export interface PagedObjects<
	Q extends ObjectOrInterfaceDefinition,
	RDPs extends Record<string, SimplePropertyDef> = Record<string, never>
> {
	objectSet: ObjectSet<Q, RDPs>;
	objects: Osdk.Instance<Q, "$allBaseProperties", PropertyKeys<Q>, RDPs>[];
}
/** Filters columnDefinitions down to only function-backed locators. */
export declare function extractFunctionLocators<
	Q extends ObjectOrInterfaceDefinition,
	RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,
	FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<string, never>
>(columnDefinitions: Array<ColumnDefinition<Q, RDPs, FunctionColumns>> | undefined): FunctionColumnLocator<Q, RDPs, FunctionColumns>[];
/**
* Constructs the per-page object sets used to fetch function-backed column
* values for `objects`. Builds an unfiltered base set from
* `objectOrInterfaceType` (so pages are scoped purely by primary key) and
* narrows each page via `{ $primaryKey: { $in: pageKeys } }`.
*
* Returns `[]` when the type is an interface (no base set can be built) or
* when no primary-key apiName is available and the input is empty.
*/
export declare function buildPagedObjectSets<
	Q extends ObjectOrInterfaceDefinition,
	RDPs extends Record<string, SimplePropertyDef> = Record<string, never>
>(client: Client, objectOrInterfaceType: Q, objects: Osdk.Instance<Q, "$allBaseProperties", PropertyKeys<Q>, RDPs>[], pageSize: number): PagedObjects<Q, RDPs>[];
