type AgentID = 'codex' | 'claude' | 'cursor';
interface ShellResult {
    exitCode: number;
    output: string;
}
interface ToolStatus {
    installed: boolean;
    path?: string;
    version?: string;
}
interface PluginStatus {
    installed: boolean;
    status?: 'installed' | 'missing' | 'activation-required' | 'manual-verification-required' | 'unknown';
    id?: string;
    path?: string;
    version?: string;
    latestVersion?: string;
    updateAvailable?: boolean;
    enabled?: boolean;
    scope?: string;
    installableFromCli?: boolean;
    message?: string;
}
export interface AgentStatus {
    id: AgentID;
    name: string;
    app: ToolStatus;
    cli: ToolStatus;
    account?: {
        identity?: string;
        subscription?: string;
        signedIn: boolean | null;
    };
    plugin: PluginStatus;
    nextAction: {
        command: string;
        reason: string;
    } | null;
}
export interface AgentsStatus {
    agents: AgentStatus[];
}
interface AgentsStatusOptions {
    homeDir?: string;
    latestPluginVersion?: string;
    runShell?: (command: string) => Promise<ShellResult>;
    appExists?: (path: string) => boolean;
    json?: boolean;
}
interface AgentActionOptions {
    runCommand?: (command: string, args: string[]) => {
        status: number | null;
        stdout?: string;
        stderr?: string;
    };
    homeDir?: string;
}
export declare function showAgentsStatus(options?: AgentsStatusOptions): Promise<AgentsStatus>;
export declare function getAgentsStatus(options?: AgentsStatusOptions): Promise<AgentsStatus>;
export declare function installPlugin(agentID: string, options?: AgentActionOptions): Promise<void>;
export declare function updatePlugin(agentID: string, options?: AgentActionOptions): Promise<void>;
export {};
