import type { RuntimeEventBus } from '../events/index.js';
import type { EmitterContext } from './index.js';
/** Emit PERMISSION_REQUESTED when a tool needs a permission decision. */
export declare function emitPermissionRequested(bus: RuntimeEventBus, ctx: EmitterContext, data: {
    callId: string;
    tool: string;
    args: Record<string, unknown>;
    category: string;
    classification?: string | undefined;
    riskLevel?: string | undefined;
    summary?: string | undefined;
    reasons?: readonly string[] | undefined;
}): void;
/** Emit RULES_COLLECTED after all permission rules are gathered. */
export declare function emitRulesCollected(bus: RuntimeEventBus, ctx: EmitterContext, data: {
    callId: string;
    tool: string;
    ruleCount: number;
}): void;
/** Emit INPUT_NORMALIZED after tool args are normalised for policy evaluation. */
export declare function emitInputNormalized(bus: RuntimeEventBus, ctx: EmitterContext, data: {
    callId: string;
    tool: string;
}): void;
/** Emit POLICY_EVALUATED after static policy rules are checked. */
export declare function emitPolicyEvaluated(bus: RuntimeEventBus, ctx: EmitterContext, data: {
    callId: string;
    tool: string;
    result: 'allow' | 'deny' | 'unknown';
}): void;
/** Emit MODE_EVALUATED after trust mode is checked. */
export declare function emitModeEvaluated(bus: RuntimeEventBus, ctx: EmitterContext, data: {
    callId: string;
    tool: string;
    mode: string;
    result: 'allow' | 'deny' | 'unknown';
}): void;
/** Emit SESSION_OVERRIDE_EVALUATED after session always-allow list is checked. */
export declare function emitSessionOverrideEvaluated(bus: RuntimeEventBus, ctx: EmitterContext, data: {
    callId: string;
    tool: string;
    overrideApplied: boolean;
}): void;
/** Emit SAFETY_CHECKED after safety validation (path traversal, etc.) runs. */
export declare function emitSafetyChecked(bus: RuntimeEventBus, ctx: EmitterContext, data: {
    callId: string;
    tool: string;
    safe: boolean;
    warnings: string[];
}): void;
/** Emit DECISION_EMITTED when the final permission decision is made. */
export declare function emitPermissionDecision(bus: RuntimeEventBus, ctx: EmitterContext, data: {
    callId: string;
    tool: string;
    approved: boolean;
    source: string;
    sourceLayer?: string | undefined;
    persisted?: boolean | undefined;
    reasonCode?: string | undefined;
    classification?: string | undefined;
    riskLevel?: string | undefined;
    summary?: string | undefined;
}): void;
//# sourceMappingURL=permissions.d.ts.map