/**
 * @license
 *-------------------------------------------------------------------------------------------
 * Copyright © 2026 Progress Software Corporation. All rights reserved.
 * Licensed under commercial license. See LICENSE.md in the package root for more information
 *-------------------------------------------------------------------------------------------
 */
import { McpToolOption } from '@progress/kendo-react-common';
/**
 * Configuration for the Grid's `webMcp` prop.
 *
 * Enables browser-native AI agent tools via Web MCP (Chrome 146+).
 * Pass `true` for defaults or an object for fine-grained control.
 *
 * @example
 * ```tsx
 * // Boolean — generic "data" label, tools auto-inferred from Grid props
 * <Grid webMcp={true} sortable />
 *
 * // Config object — semantic naming in any language
 * <Grid webMcp={{ dataName: 'employees' }} sortable />
 * <Grid webMcp={{ dataName: 'empleados' }} sortable />
 * ```
 */
export type GridWebMcpProps = boolean | {
    /**
     * Human-readable name for the data exposed by the grid.
     * AI agents are multilingual — any language works.
     *
     * @example 'employees', 'empleados', 'employés'
     */
    dataName: string;
    /**
     * Tool name prefix. Auto-generated from `dataName` when omitted.
     * Tools are named `{groupName}_{action}`, e.g. `employees_grid_sort`.
     */
    groupName?: string;
    /**
     * Customize the built-in tools before they are registered.
     * Receives the auto-generated tool list and a helpers object.
     * Return a modified array to remove, rename, re-describe, or add custom tools.
     *
     * @example
     * ```tsx
     * // Override a description
     * tools: (tools) => tools.map(t =>
     *     t.commandType === 'GridSort'
     *         ? { ...t, description: 'Reorder employees by column' }
     *         : t
     * )
     *
     * // Remove sort tools
     * tools: (tools) => tools.filter(t => t.commandType !== 'GridSort')
     *
     * // Add a custom tool
     * tools: (tools, helpers) => [
     *     ...tools,
     *     { name: 'validate', description: 'Validate data', commandType: 'Custom', enabled: true }
     * ]
     * ```
     */
    tools?: GridWebMcpToolsCallback;
};
/**
 * Helpers passed to the `tools` callback.
 */
export interface GridWebMcpToolsHelpers {
    /** Generates a prefixed tool name: `{groupName}_{suffix}`. */
    tname: (suffix: string) => string;
    /** The column metadata extracted from GridColumn children. */
    columns: Array<{
        field: string;
        id: string;
    }>;
    /** The current grid data (visible rows). */
    data: any;
}
/**
 * Callback that receives the auto-generated tool list and returns a
 * (possibly modified) list to register.
 */
export type GridWebMcpToolsCallback = (tools: McpToolOption[], helpers: GridWebMcpToolsHelpers) => McpToolOption[];
