export interface AuditEntry {
    timestamp: string;
    profile: 'operations' | 'application';
    sessionId: string;
    tool: string;
    user: string;
    args: object;
    status: 'ok' | 'isError' | 'rate_limited' | 'protocol_error';
    durationMs: number;
    errorMessage?: string;
}
/**
 * Recursively walk an object and replace values for keys matching the
 * redaction pattern. Bounded depth so a pathological cyclic input doesn't
 * stall the audit emit; on overflow the entire sub-object is redacted so
 * a credential buried below the depth limit cannot leak. Returns a shallow
 * clone — the caller's payload is never mutated.
 */
export declare function redactArgs(value: unknown, depth?: number): unknown;
/** Mask a session id for logging — first 8 chars, suffix elided. */
export declare function maskSessionId(id: string): string;
/**
 * Emit a single audit entry. Writes to the structured log channel as INFO
 * so it's captured by Harper's standard log rotation; downstream tooling
 * can filter on `category: 'mcp.audit'`.
 */
export declare function emitAuditEntry(entry: AuditEntry): void;
