import { type ResolveToolUiCatalog } from './negotiated-tool-ui.js';
import type { ActionProposal } from './spi/action-proposal-store.js';
import type { BackgroundActorResolver } from './spi/background-actor-resolver.js';
import type { RolesPolicy } from './spi/roles-policy.js';
import type { PresentationErrorHandler } from './spi/tool.js';
import type { AgentUiComponent } from './stream-events.js';
import type { ToolRegistry } from './tool-registry.js';
import type { Actor, Persona } from './types.js';
export interface ActionProposalExecutionDeps {
    registry: ToolRegistry;
    rolesPolicy: RolesPolicy;
    allowedTools?: string[];
    host?: unknown;
    persona?: Persona;
    resolveUiCatalog?: ResolveToolUiCatalog;
    /** Where a tool's failed `present` is reported. Undefined → a console warning. */
    onPresentationError?: PresentationErrorHandler;
}
export interface ActionProposalExecutorOptions {
    resolver: BackgroundActorResolver;
    /** Resolve exact recorded agent/persona against current configuration; throw if it disappeared. */
    resolveExecution(proposal: ActionProposal, actor: Actor): Promise<ActionProposalExecutionDeps>;
}
export type ActionProposalExecutionResult = {
    status: 'succeeded';
    result?: unknown;
    ui: AgentUiComponent[];
    text?: string;
} | {
    status: 'failed';
    error: string;
    ui: AgentUiComponent[];
    text?: string;
};
export declare class ActionProposalExecutor {
    private readonly options;
    constructor(options: ActionProposalExecutorOptions);
    execute(proposal: ActionProposal): Promise<ActionProposalExecutionResult>;
}
//# sourceMappingURL=action-proposal-executor.d.ts.map