/**
 * Implementation of `DurableAgent.streamUntilIdle` and
 * `DurableAgent.resume(..., { untilIdle })`. Mirrors the regular agent's
 * `stream-until-idle.ts` but adapted for durable execution:
 * - `DurableAgent.stream()` returns `DurableAgentStreamResult` (not `MastraModelOutput`)
 * - Each continuation starts a new durable workflow (new runId)
 * - Cleanup functions from each inner stream are tracked and called on close
 * - Inner `abort()` handles are fanned out so the outer `result.abort()`
 *   cancels every active durable run
 *
 * Uses the shared `runIdleLoop` helper from `loop/shared/stream-until-idle-helpers`
 * with durable-specific hooks for cleanup/abort tracking.
 */
import type { BackgroundTaskManager } from '../../background-tasks/manager.js';
import type { MessageListInput } from '../message-list/index.js';
import type { DurableAgent, DurableAgentStreamOptions, DurableAgentStreamResult } from './durable-agent.js';
export interface DurableStreamUntilIdleDeps {
    activeStreams: Map<string, () => void>;
    bgManager: BackgroundTaskManager | undefined;
}
/**
 * Run `DurableAgent.streamUntilIdle` (or `DurableAgent.stream({ untilIdle })`).
 * Initial turn invokes `agent.stream(messages, ...)`; continuations triggered
 * by background-task completions run as fresh `agent.stream([], ...)` calls
 * against the same memory thread.
 */
export declare function runDurableStreamUntilIdle<OUTPUT = undefined>(agent: DurableAgent<any, any, OUTPUT>, messages: MessageListInput, streamOptions: (DurableAgentStreamOptions<OUTPUT> & {
    maxIdleMs?: number;
}) | undefined, deps: DurableStreamUntilIdleDeps): Promise<DurableAgentStreamResult<OUTPUT>>;
/**
 * Run `DurableAgent.resume(..., { untilIdle })`. Same idle-loop semantics as
 * `runDurableStreamUntilIdle` — initial turn calls `agent.resume(runId,
 * resumeData, ...)` against the existing run snapshot, and subsequent
 * continuations triggered by background-task completions use
 * `agent.stream([], continuationOpts)` (a normal multi-turn agent stream)
 * since the resume completes and we're back in regular conversation flow.
 */
export declare function runResumeDurableStreamUntilIdle<OUTPUT = undefined>(agent: DurableAgent<any, any, OUTPUT>, runId: string, resumeData: unknown, streamOptions: (DurableAgentStreamOptions<OUTPUT> & {
    maxIdleMs?: number;
}) | undefined, deps: DurableStreamUntilIdleDeps): Promise<DurableAgentStreamResult<OUTPUT>>;
//# sourceMappingURL=durable-stream-until-idle.d.ts.map