/**
 * Agent Teams v2
 *
 * Enhanced agent teams with shared task list, mailbox, tmux support,
 * delegate mode, and plan approval.
 */
export interface TeamTask {
    id: string;
    title: string;
    description: string;
    status: 'pending' | 'claimed' | 'in_progress' | 'completed' | 'failed';
    assignee?: string;
    dependencies: string[];
    lockedFiles: string[];
    createdAt: number;
    completedAt?: number;
    failReason?: string;
}
export interface MailboxMessage {
    id: string;
    from: string;
    to: string | 'broadcast';
    content: string;
    timestamp: number;
    read: boolean;
}
export type TeammateMode = 'auto' | 'in-process' | 'tmux';
export interface TeamConfig {
    name: string;
    leadAgent: string;
    teammates: string[];
    mode: TeammateMode;
    delegateMode: boolean;
    planApproval: boolean;
    configPath: string;
}
export declare class TeamTaskList {
    private tasks;
    constructor();
    /**
     * Add a new task
     */
    addTask(title: string, description: string, dependencies?: string[]): TeamTask;
    /**
     * Claim a task for an agent
     */
    claimTask(taskId: string, agentName: string): boolean;
    /**
     * Complete a task
     */
    completeTask(taskId: string): boolean;
    /**
     * Fail a task
     */
    failTask(taskId: string, reason: string): boolean;
    /**
     * Get tasks available for an agent (pending with satisfied deps)
     */
    getAvailableTasks(_agentName: string): TeamTask[];
    /**
     * Get tasks assigned to an agent
     */
    getTasksByAgent(agentName: string): TeamTask[];
    /**
     * Lock a file for a task
     */
    lockFile(taskId: string, file: string): boolean;
    /**
     * Check if a file is locked
     */
    isFileLocked(file: string): {
        locked: boolean;
        byTask?: string;
    };
    /**
     * Unlock a file for a task
     */
    unlockFile(taskId: string, file: string): boolean;
    /**
     * Get all tasks
     */
    getAllTasks(): TeamTask[];
    /**
     * Get pending task count
     */
    getPendingCount(): number;
    /**
     * Get completed task count
     */
    getCompletedCount(): number;
}
export declare class TeamMailbox {
    private messages;
    constructor();
    /**
     * Send a message to a specific agent
     */
    send(from: string, to: string, content: string): MailboxMessage;
    /**
     * Broadcast a message to all agents
     */
    broadcast(from: string, content: string): MailboxMessage;
    /**
     * Get messages for an agent (direct + broadcasts, excluding own)
     */
    getMessages(agentName: string): MailboxMessage[];
    /**
     * Get unread messages for an agent
     */
    getUnread(agentName: string): MailboxMessage[];
    /**
     * Mark a message as read
     */
    markRead(messageId: string): boolean;
    /**
     * Mark all messages for an agent as read
     */
    markAllRead(agentName: string): number;
    /**
     * Get total message count
     */
    getMessageCount(): number;
}
export declare class TeamManagerV2 {
    private config;
    private taskList;
    private mailbox;
    constructor(config: TeamConfig);
    getTaskList(): TeamTaskList;
    getMailbox(): TeamMailbox;
    getConfig(): TeamConfig;
    /**
     * Set teammate mode
     */
    setMode(mode: TeammateMode): void;
    getMode(): TeammateMode;
    /**
     * Set delegate mode (lead restricted to coordination only)
     */
    setDelegateMode(enabled: boolean): void;
    isDelegateMode(): boolean;
    /**
     * Add a teammate
     */
    addTeammate(name: string): boolean;
    /**
     * Remove a teammate
     */
    removeTeammate(name: string): boolean;
    /**
     * Get all teammates
     */
    getTeammates(): string[];
    /**
     * Generate a tmux layout string (stub)
     */
    generateTmuxLayout(): string;
    /**
     * Serialize config to JSON
     */
    serializeConfig(): string;
    /**
     * Deserialize config from JSON
     */
    static deserializeConfig(json: string): TeamConfig;
}
