import type { AgentConfig } from '../config/config';
/**
 * Project an `AgentConfig` down to a JSON-serializable shape for the redux
 * session store. Drops two kinds of field:
 *
 * 1. **Directly function-valued** — the lifecycle/dispatch hooks (`onActivate`,
 *    `onDeactivate`, `getDebugSnapshot`, `onUnresolvedTool`) and the function
 *    form of the per-turn resolvers (`systemPrompt`, `toolDefinitions`,
 *    `displayName`, `provider`, `temperature`, `toolChoice`, `cachePolicy`,
 *    `toolHandlers`).
 * 2. **Object "handler bags" whose *values* are functions** — `toolHandlers` in
 *    its object form is `{ name: handler }`, so `typeof` is `'object'`, not
 *    `'function'`. A by-value check on the field alone misses it, leaking a live
 *    handler into store state and tripping redux's serializability check (the
 *    regression this guards against — top-level agents tend to use the factory
 *    function form, but sub-agents commonly declare an object literal).
 *
 * `subAgents` are projected recursively. Static forms (string / number / array /
 * plain data object) pass through unchanged.
 *
 * Filtering by value rather than an explicit field list means a new
 * function-valued field on `AgentConfig` is handled automatically — no denylist
 * to maintain. The live config on the driver stays the source of truth; the
 * slice only holds this serializable projection and functions are never read
 * back from it.
 *
 * @internal
 */
export declare function stripAgentHandlers(agent: AgentConfig): Omit<AgentConfig, 'toolHandlers'>;
//# sourceMappingURL=strip-agent-handlers.d.ts.map