import type { HasRequiredKey, InferToolSetContext, ToolSet, } from '@ai-sdk/provider-utils'; /** * Checks whether a tool context map contains any contextual tool entries. */ type IsEmptyObject = keyof OBJECT extends never ? true : false; /** * Makes the toolsContext setting optional, required, or unavailable based on * the tool set. */ export type ToolsContextSettings = IsEmptyObject> extends true ? { toolsContext?: never } : HasRequiredKey> extends true ? { toolsContext: InferToolSetContext } : { toolsContext?: InferToolSetContext }; /** * Helper type for request options that include both tools and their context. */ export type ToolsContextParameter = { tools?: TOOLS; } & ToolsContextSettings;