import type { ObjectOrInterfaceDefinition, QueryDefinition, SimplePropertyDef } from "@osdk/api";
import type { ColumnPinningState, OnChangeFn } from "@tanstack/react-table";
import type { ObjectTableProps } from "../ObjectTableApi.js";
export interface UseColumnPinningProps<
	Q extends ObjectOrInterfaceDefinition,
	RDPs extends Record<string, SimplePropertyDef> = {},
	FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<string, never>
> {
	columnDefinitions: ObjectTableProps<Q, RDPs, FunctionColumns>["columnDefinitions"];
	hasSelectionColumn?: boolean;
	onColumnsPinnedChanged?: ObjectTableProps<Q, RDPs, FunctionColumns>["onColumnsPinnedChanged"];
}
export interface UseColumnPinningResult {
	columnPinning: ColumnPinningState;
	onColumnPinningChange: OnChangeFn<ColumnPinningState>;
}
export declare const useColumnPinning: <
	Q extends ObjectOrInterfaceDefinition,
	RDPs extends Record<string, SimplePropertyDef> = {},
	FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<string, never>
>({ columnDefinitions, hasSelectionColumn, onColumnsPinnedChanged }: UseColumnPinningProps<Q, RDPs, FunctionColumns>) => UseColumnPinningResult;
