import { ReactNode } from 'react';
import { Tool, ToolInvocation } from 'ai';
type Streamable = ReactNode | Promise<ReactNode>;
export type Renderer<T extends Array<any>> = (...args: T) => AsyncGenerator<Streamable, void, void>;
type CoderTool = Omit<Tool, "execute"> & {
    generate?: Renderer<any>;
    renderTitle?: (part: ToolInvocation) => ReactNode;
    render?: (part: ToolInvocation) => ReactNode;
    execute?: Tool["execute"];
};
export declare function defineTool(params: CoderTool): CoderTool;
export {};
