import type { RuntimeEventBus } from '../events/index.js';
import type { EmitterContext } from './index.js';
/** Emit TOOL_RECEIVED when a tool call is received from the LLM. */
export declare function emitToolReceived(bus: RuntimeEventBus, ctx: EmitterContext, data: {
    callId: string;
    turnId: string;
    tool: string;
    args: Record<string, unknown>;
}): void;
/** Emit TOOL_VALIDATED when tool arguments pass schema validation. */
export declare function emitToolValidated(bus: RuntimeEventBus, ctx: EmitterContext, data: {
    callId: string;
    turnId: string;
    tool: string;
}): void;
/** Emit TOOL_PREHOOKED after pre-execution hooks have run. */
export declare function emitToolPrehooked(bus: RuntimeEventBus, ctx: EmitterContext, data: {
    callId: string;
    turnId: string;
    tool: string;
}): void;
/** Emit TOOL_PERMISSIONED after permission check completes. */
export declare function emitToolPermissioned(bus: RuntimeEventBus, ctx: EmitterContext, data: {
    callId: string;
    turnId: string;
    tool: string;
    approved: boolean;
}): void;
/** Emit TOOL_EXECUTING when the tool starts executing. */
export declare function emitToolExecuting(bus: RuntimeEventBus, ctx: EmitterContext, data: {
    callId: string;
    turnId: string;
    tool: string;
    startedAt: number;
}): void;
/** Emit TOOL_MAPPED after the result is mapped for the provider. */
export declare function emitToolMapped(bus: RuntimeEventBus, ctx: EmitterContext, data: {
    callId: string;
    turnId: string;
    tool: string;
}): void;
/** Emit TOOL_POSTHOOKED after post-execution hooks have run. */
export declare function emitToolPosthooked(bus: RuntimeEventBus, ctx: EmitterContext, data: {
    callId: string;
    turnId: string;
    tool: string;
}): void;
/** Emit TOOL_SUCCEEDED when a tool call completes successfully. */
export declare function emitToolSucceeded(bus: RuntimeEventBus, ctx: EmitterContext, data: {
    callId: string;
    turnId: string;
    tool: string;
    durationMs: number;
    result?: unknown;
}): void;
/** Emit TOOL_FAILED when a tool call fails. */
export declare function emitToolFailed(bus: RuntimeEventBus, ctx: EmitterContext, data: {
    callId: string;
    turnId: string;
    tool: string;
    error: string;
    durationMs: number;
    result?: unknown;
}): void;
/** Emit TOOL_RECONCILED when unresolved tool calls are synthesized. */
export declare function emitToolReconciled(bus: RuntimeEventBus, ctx: EmitterContext, data: {
    turnId: string;
    count: number;
    callIds: string[];
    toolNames: string[];
    reason: string;
    timestamp: number;
    isMalformed?: boolean;
}): void;
/** Emit TOOL_CANCELLED when a tool call is cancelled. */
export declare function emitToolCancelled(bus: RuntimeEventBus, ctx: EmitterContext, data: {
    callId: string;
    turnId: string;
    tool: string;
    reason?: string;
}): void;
/** Emit BUDGET_EXCEEDED_MS when wall-clock time limit is breached. */
export declare function emitBudgetExceededMs(bus: RuntimeEventBus, ctx: EmitterContext, data: {
    callId: string;
    turnId: string;
    tool: string;
    phase: string;
    limitMs: number;
    elapsedMs: number;
}): void;
/** Emit BUDGET_EXCEEDED_TOKENS when token consumption limit is breached. */
export declare function emitBudgetExceededTokens(bus: RuntimeEventBus, ctx: EmitterContext, data: {
    callId: string;
    turnId: string;
    tool: string;
    phase: string;
    limitTokens: number;
    usedTokens: number;
}): void;
/** Emit BUDGET_EXCEEDED_COST when cost-in-USD limit is breached. */
export declare function emitBudgetExceededCost(bus: RuntimeEventBus, ctx: EmitterContext, data: {
    callId: string;
    turnId: string;
    tool: string;
    phase: string;
    limitCostUsd: number;
    usedCostUsd: number;
}): void;
//# sourceMappingURL=tools.d.ts.map