export interface Agent {
    id: string;
    name: string;
    role: AgentRole;
    specializations: string[];
    status: AgentStatus;
    lastActivity: Date;
    currentAssignments: Assignment[];
    performanceMetrics: PerformanceMetrics;
    collaborationPatterns: CollaborationPattern[];
    availability: Availability;
}
export interface AgentRole {
    type: AgentRoleType;
    description: string;
    capabilities: string[];
    responsibilities: string[];
    requiredSkills: string[];
    authority: AuthorityLevel;
}
export type AgentRoleType = 'architect' | 'engineer' | 'qa' | 'security' | 'devops' | 'research' | 'data' | 'performance' | 'documentation' | 'integration' | 'code-review' | 'orchestrator';
export type AgentStatus = 'active' | 'idle' | 'working' | 'offline' | 'maintenance' | 'overloaded';
export type AuthorityLevel = 'low' | 'medium' | 'high' | 'critical';
export interface Assignment {
    id: string;
    ticketId: string;
    ticketTitle: string;
    ticketType: 'epic' | 'issue' | 'task' | 'pr';
    priority: 'critical' | 'high' | 'medium' | 'low';
    startDate: Date;
    estimatedCompletion?: Date;
    progress: number;
    status: 'pending' | 'in_progress' | 'blocked' | 'completed';
    timeSpent: number;
    blockers?: string[];
}
export interface PerformanceMetrics {
    completionRate: number;
    averageTaskTime: number;
    qualityScore: number;
    collaborationScore: number;
    responsiveness: number;
    ticketsCompleted: number;
    ticketsInProgress: number;
    ticketsPending: number;
    uptime: number;
    efficiency: number;
}
export interface CollaborationPattern {
    agentId: string;
    agentName: string;
    agentRole: AgentRoleType;
    collaborationType: 'handoff' | 'parallel' | 'review' | 'support';
    frequency: number;
    successRate: number;
    lastCollaboration: Date;
}
export interface Availability {
    isAvailable: boolean;
    capacity: number;
    nextAvailableSlot?: Date;
    scheduledMaintenance?: Date;
    workingHours: {
        start: string;
        end: string;
        timezone: string;
    };
}
export interface AgentActivity {
    id: string;
    agentId: string;
    timestamp: Date;
    type: ActivityType;
    description: string;
    ticketId?: string;
    duration?: number;
    metadata?: Record<string, any>;
}
export type ActivityType = 'task_started' | 'task_completed' | 'task_blocked' | 'ticket_assigned' | 'ticket_unassigned' | 'collaboration_started' | 'collaboration_ended' | 'status_changed' | 'performance_updated' | 'maintenance_started' | 'maintenance_ended';
export interface AgentRegistry {
    agents: Agent[];
    totalAgents: number;
    activeAgents: number;
    workingAgents: number;
    idleAgents: number;
    offlineAgents: number;
    lastUpdated: Date;
}
export interface AgentAssignmentRequest {
    ticketId: string;
    requiredRole: AgentRoleType;
    requiredSkills?: string[];
    priority: 'critical' | 'high' | 'medium' | 'low';
    estimatedDuration?: number;
    deadline?: Date;
    preferredAgentId?: string;
}
export interface AgentAssignmentResponse {
    success: boolean;
    assignedAgent?: Agent;
    estimatedStartTime?: Date;
    estimatedCompletion?: Date;
    alternativeAgents?: Agent[];
    reason?: string;
}
export interface AgentCapacityInfo {
    agentId: string;
    currentLoad: number;
    maxCapacity: number;
    availableCapacity: number;
    queuedTasks: number;
    estimatedAvailability: Date;
}
export interface AgentSkillMatrix {
    agentId: string;
    skills: {
        [skillName: string]: {
            level: number;
            experience: number;
            certifications?: string[];
            lastUsed: Date;
        };
    };
}
export interface AgentNetworkStatus {
    agentId: string;
    isOnline: boolean;
    latency: number;
    lastHeartbeat: Date;
    version: string;
    memoryUsage: number;
    cpuUsage: number;
}
