import type { AgentTool } from "@earendil-works/pi-agent-core";
import type { TSchema } from "typebox";
import type { ExtensionContext, ToolDefinition } from "../extensions/types.ts";
declare module "@earendil-works/pi-agent-core" {
    interface AgentTool<TParameters extends TSchema = TSchema, TDetails = any> {
        /** Optional per-tool character cap for model-visible result persistence. Use Infinity to opt out. */
        maxResultSizeChars?: number;
    }
}
/** Wrap a ToolDefinition into an AgentTool for the core runtime. */
export declare function wrapToolDefinition<TParams extends TSchema, TDetails = unknown>(definition: ToolDefinition<TParams, TDetails>, ctxFactory?: () => ExtensionContext): AgentTool<TParams, TDetails>;
/** Wrap multiple ToolDefinitions into AgentTools for the core runtime. */
export declare function wrapToolDefinitions(definitions: ToolDefinition<TSchema, unknown>[], ctxFactory?: () => ExtensionContext): AgentTool<TSchema, unknown>[];
/**
 * Synthesize a minimal ToolDefinition from an AgentTool.
 *
 * This keeps AgentSession's internal registry definition-first even when a caller
 * provides plain AgentTool overrides that do not include prompt metadata or renderers.
 */
export declare function createToolDefinitionFromAgentTool<TParams extends TSchema = TSchema, TDetails = unknown>(tool: AgentTool<TParams, TDetails>): ToolDefinition<TParams, TDetails>;
//# sourceMappingURL=tool-definition-wrapper.d.ts.map