import { Request, Response } from 'express';
import type { ApiContext } from '../types.js';
import type { EventBusService } from '../../services/event-bus/event-bus.service.js';
/**
 * Set the EventBusService instance for auto-subscribing the orchestrator.
 * Called during server initialization in index.ts.
 *
 * @param service - The EventBusService instance
 */
export declare function setTeamControllerEventBusService(service: EventBusService): void;
/**
 * Activate (start) a single agent by its session name — the user-initiated
 * path used by chat "activate-on-send" (messaging an offline agent wakes it).
 *
 * Unlike the {@link startTeamMember} HTTP handler, this intentionally skips
 * the orchestrator wake-gate: a human directly messaging the agent IS the
 * authorization. Resolves the member's team + current project, then runs the
 * shared start core. Idempotent — returns success if already active.
 *
 * @param context - API context (storage / registration / tmux services).
 * @param sessionName - The agent session to activate.
 * @returns `{ success, error? }`.
 */
export declare function activateAgentBySession(context: ApiContext, sessionName: string): Promise<{
    success: boolean;
    error?: string;
}>;
export declare function createTeam(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function getTeams(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function getTeam(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function startTeam(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function stopTeam(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function getTeamWorkload(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function deleteTeam(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function getTeamMemberSession(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function addTeamMember(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function updateTeamMember(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function deleteTeamMember(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function startTeamMember(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function stopTeamMember(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function reportMemberReady(this: ApiContext, req: Request, res: Response): Promise<void>;
/**
 * Fire-and-forget session handoff: pushes session summary and resume notification
 * to the orchestrator after registration. Used by both the orchestrator's own
 * registration path and the virtual-team-member path to avoid duplication.
 *
 * Only fires ONCE per session per server lifecycle. Subsequent register_self
 * calls for the same session are skipped.
 */
/**
 * Clear the handoff guard for a session (call on session destroy/restart
 * so the next registration triggers a fresh handoff push).
 */
export declare function clearHandoffGuard(sessionName: string): void;
export declare function registerMemberStatus(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function generateMemberContext(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function injectContextIntoSession(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function refreshMemberContext(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function getTeamActivityStatus(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function updateTeamMemberRuntime(this: ApiContext, req: Request, res: Response): Promise<void>;
/**
 * Updates team properties like assigned project
 */
export declare function updateTeam(this: ApiContext, req: Request, res: Response): Promise<void>;
/**
 * Archive or unarchive a team (#171).
 * POST /:id/archive — sets archived=true.
 * Body: { archived?: boolean } — defaults to true. Pass false to unarchive.
 *
 * Archived teams are excluded from the default GET /teams listing
 * (pass ?includeArchived=true to include them).
 *
 * @param req - Express request with team ID in params
 * @param res - Express response
 */
export declare function archiveTeam(this: ApiContext, req: Request, res: Response): Promise<void>;
//# sourceMappingURL=team.controller.d.ts.map