/**
 * Teams capability detection for Pennyfarthing.
 *
 * Detects whether the runtime environment supports Claude Code
 * native Agent Teams. Checks three conditions:
 * 1. CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS env var
 * 2. Interactive mode (not -p flag)
 * 3. teammateMode setting (in-process vs tmux)
 *
 * @module capabilities
 */
/** Result of teammate mode detection */
export type TeammateMode = 'in-process' | 'tmux' | null;
/** Detailed capability detection result */
export interface TeamsCapabilityResult {
    /** Whether native teams are fully available */
    teamsAvailable: boolean;
    /** Whether the env var flag is set */
    envVarSet: boolean;
    /** Whether running in interactive mode (not -p) */
    isInteractive: boolean;
    /** Detected teammate mode setting */
    teammateMode: TeammateMode;
    /** Human-readable reason if teams are unavailable */
    reason?: string;
}
/** Standard result envelope */
export interface CapabilityResult {
    success: boolean;
    data?: TeamsCapabilityResult;
    error?: string;
}
/** Doctor check result (matches CheckResult interface) */
export interface CapabilityCheckResult {
    name: string;
    status: 'pass' | 'warn' | 'fail';
    detail?: string;
}
/** Execution strategy for a workflow phase */
export interface PhaseExecutionStrategy {
    mode: 'team' | 'solo-tandem' | 'solo';
    degraded: boolean;
    reason?: string;
}
/**
 * Check if the CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS env var is set and truthy.
 */
export declare function isTeamsEnvVarSet(): boolean;
/**
 * Detect whether the current session is interactive (not -p mode).
 */
export declare function isInteractiveMode(): boolean;
/**
 * Read the teammateMode setting from a JSON config file.
 *
 * @param configPath - Path to config file. If omitted, returns null.
 * @returns The teammate mode setting, or null if not configured
 */
export declare function getTeammateMode(configPath?: string): TeammateMode;
/**
 * Detect whether native Claude Code Agent Teams are available.
 *
 * Always returns `{success: true}` — the detection itself always succeeds.
 * The `teamsAvailable` flag within `data` indicates actual capability.
 *
 * @param configPath - Optional path to config file for teammateMode lookup
 * @returns CapabilityResult with detailed detection info
 */
export declare function detectTeamsCapability(configPath?: string): CapabilityResult;
/**
 * Generate doctor check results for teams capability.
 * Returns CheckResult-compatible objects for integration with `pennyfarthing doctor`.
 *
 * @param configPath - Optional path to config file
 * @returns Array of check results
 */
export declare function checkTeamsCapability(configPath?: string): CapabilityCheckResult[];
/**
 * Determine whether a workflow phase should degrade from team mode to solo+tandem.
 *
 * @param phaseConfig - The phase configuration object (with optional team: block)
 * @param configPath - Optional path to config for capability detection
 * @returns Execution strategy recommendation
 */
export declare function resolvePhaseExecution(phaseConfig: {
    team?: Record<string, unknown>;
}, configPath?: string): PhaseExecutionStrategy;
//# sourceMappingURL=capabilities.d.ts.map