import type { AnyAgentTool } from "../pi-tools/pi-tools.types.js";
import { type ToolPolicyLike } from "./tool-policy.js";
export type ToolPolicyPipelineStep = {
    policy: ToolPolicyLike | undefined;
    label: string;
    stripPluginOnlyAllowlist?: boolean;
};
export declare function buildDefaultToolPolicyPipelineSteps(params: {
    profilePolicy?: ToolPolicyLike;
    profile?: string;
    providerProfilePolicy?: ToolPolicyLike;
    providerProfile?: string;
    globalPolicy?: ToolPolicyLike;
    globalProviderPolicy?: ToolPolicyLike;
    agentPolicy?: ToolPolicyLike;
    agentProviderPolicy?: ToolPolicyLike;
    groupPolicy?: ToolPolicyLike;
    agentId?: string;
    /** Agent type scope step — inserted as the FIRST step in the pipeline when provided. */
    agentTypeStep?: ToolPolicyPipelineStep;
}): ToolPolicyPipelineStep[];
export declare function applyToolPolicyPipeline(params: {
    tools: AnyAgentTool[];
    toolMeta: (tool: AnyAgentTool) => {
        pluginId: string;
    } | undefined;
    warn: (message: string) => void;
    steps: ToolPolicyPipelineStep[];
}): AnyAgentTool[];
/**
 * Wrapper around applyToolPolicyPipeline that additionally records tool call
 * attribution via the tool audit ring (tool-audit.ts).
 *
 * Use this instead of applyToolPolicyPipeline when session/agent context is
 * available, to enable the per-session tool call audit log.
 *
 * Does NOT modify the existing applyToolPolicyPipeline signature.
 */
export declare function applyToolPolicyPipelineWithAudit(params: {
    tools: AnyAgentTool[];
    toolMeta: (tool: AnyAgentTool) => {
        pluginId: string;
    } | undefined;
    warn: (message: string) => void;
    steps: ToolPolicyPipelineStep[];
    /** Session ID for tool call attribution. */
    sessionId?: string;
    /** Agent ID for tool call attribution. */
    agentId?: string;
}): AnyAgentTool[];
