/**
 * Per-Sender Policies & Agents List
 * Tool access control per sender identity and agent registry.
 */
export interface SenderIdentity {
    username?: string;
    userId?: string;
    phone?: string;
    displayName?: string;
}
export interface SenderPolicy {
    identity: SenderIdentity;
    allowedTools: string[];
    deniedTools: string[];
    maxTurns?: number;
}
export declare class SenderPolicyManager {
    private static instance;
    private policies;
    static getInstance(): SenderPolicyManager;
    static resetInstance(): void;
    addPolicy(policy: SenderPolicy): void;
    removePolicy(identity: SenderIdentity): boolean;
    getPolicy(identity: SenderIdentity): SenderPolicy | undefined;
    isToolAllowed(identity: SenderIdentity, tool: string): boolean;
    matchIdentity(sender: SenderIdentity, policy: SenderPolicy): boolean;
    listPolicies(): SenderPolicy[];
    clearPolicies(): void;
}
interface AgentInfo {
    name: string;
    description: string;
    status: 'active' | 'inactive';
}
export declare class AgentListTool {
    private static instance;
    private agents;
    static getInstance(): AgentListTool;
    static resetInstance(): void;
    listAgents(): AgentInfo[];
    addAgent(name: string, description: string): void;
    removeAgent(name: string): boolean;
    getAgent(name: string): AgentInfo | undefined;
    getAgentCount(): number;
}
export {};
