import type { MemoryConfigInternal } from '@mastra/core/memory';
import type { ToolAction } from '@mastra/core/tools';
/**
 * Deep merges two objects, with special handling for null values (delete) and arrays (replace).
 * - Object properties are recursively merged
 * - null values in the update will delete the corresponding property
 * - Arrays are replaced entirely (not merged element-by-element)
 * - Primitive values are overwritten
 */
export declare function deepMergeWorkingMemory(existing: Record<string, unknown> | null | undefined, update: Record<string, unknown> | null | undefined): Record<string, unknown>;
export declare const updateWorkingMemoryTool: (memoryConfig?: MemoryConfigInternal) => import("@mastra/core/tools").Tool<unknown, unknown, unknown, unknown, import("@mastra/core/tools").ToolExecutionContext<unknown, unknown, unknown>, "update-working-memory", unknown>;
export declare const __experimental_updateWorkingMemoryToolVNext: (config: MemoryConfigInternal) => import("@mastra/core/tools").Tool<unknown, unknown, unknown, unknown, import("@mastra/core/tools").ToolExecutionContext<unknown, unknown, unknown>, "update-working-memory", unknown>;
/**
 * Returns the working-memory tool plus the wire name it should be registered under.
 *
 * - Default delivery (`useStateSignals: false`): wire name `updateWorkingMemory`,
 *   identical shape to today.
 * - State-signals delivery (`useStateSignals: true`): wire name `setWorkingMemory`.
 *   The rename keeps legacy strip filters (which match the literal `updateWorkingMemory`)
 *   from removing tool-call parts so they persist as a normal audit trail. Any
 *   future state-signal-specific tweaks to the tool (e.g. delta-aware results,
 *   scoped descriptions) belong here.
 *
 * The VNext vs default tool body decision is left to the caller because Memory
 * owns the `isVNextWorkingMemoryConfig` check; pass `vNext: true` to use the
 * search-and-replace shape.
 */
export declare function createWorkingMemoryTool(config: MemoryConfigInternal, options?: {
    vNext?: boolean;
}): {
    name: string;
    tool: ToolAction<any, any, any>;
};
//# sourceMappingURL=working-memory.d.ts.map