/**
 * SP6 — verifyEndToEnd action.
 *
 * Orchestrates a real capability smoke: search → fetch → extract →
 * (synthesis if a provider key is configured) plus an MCP-wiring check per
 * detected/configured agent.
 *
 * Design:
 * - All network/provider calls are injected via `VerifyEndToEndDeps` so the
 *   orchestration logic is testable headlessly.
 * - Synthesis is SKIPPED (not failed) when no provider key is configured.
 *   This avoids treating an optional capability as a hard failure.
 * - MCP-wiring: reads each agent's config file and asserts the wigolo entry
 *   is present at the expected key path. Reuses the SP7/agents.ts detection
 *   and config-writer.ts key-path knowledge.
 * - hardFailureCount counts only 'fail' results — 'skipped' is not a failure.
 *
 * SP4 seam: the synthesis probe resolves a provider key via SP4's
 * `resolveProviderKey(provider, { dataDir })` (keychain → encrypted file →
 * env). When no provider has a resolvable key, synthesis is skipped-with-
 * reason rather than failed.
 */
import type { AgentId, InstallType } from '../agents.js';
export type CapabilityName = 'search' | 'fetch' | 'extract' | 'synthesis' | 'mcp-wiring';
export type CapabilityStatus = 'pass' | 'fail' | 'skipped';
export interface CapabilityResult {
    capability: CapabilityName;
    status: CapabilityStatus;
    /** Human-readable detail. On fail: actionable message naming the fix. */
    detail: string;
}
export interface McpWiringResult {
    agentId: AgentId;
    agentName: string;
    configPath: string | null;
    status: CapabilityStatus;
    detail: string;
}
export interface VerifyEndToEndResult {
    capabilities: CapabilityResult[];
    mcpWiringResults: McpWiringResult[];
    allPassed: boolean;
    /** Count of capabilities with status === 'fail'. Skipped never increments this. */
    hardFailureCount: number;
}
export interface VerifyEndToEndDeps {
    probeSearch(): Promise<CapabilityResult>;
    probeFetch(): Promise<CapabilityResult>;
    probeExtract(): Promise<CapabilityResult>;
    probeSynthesis(): Promise<CapabilityResult>;
    probeMcpWiring(): Promise<McpWiringResult[]>;
}
export declare function verifyEndToEnd(deps: VerifyEndToEndDeps): Promise<VerifyEndToEndResult>;
export interface McpWiringCheckInput {
    agentId: AgentId;
    agentName: string;
    configPath: string | null;
    keyPath: string[];
    installType: InstallType;
    /**
     * Override the path-bound roots. Production omits this (defaults to home +
     * cwd); tests pass a temp-dir root so fixtures don't have to live under the
     * real home directory.
     */
    allowedRoots?: string[];
}
export declare function checkMcpWiringForAgent(input: McpWiringCheckInput): Promise<McpWiringResult>;
export declare function buildDefaultDeps(): Promise<VerifyEndToEndDeps>;
export declare function formatVerifyResultPlain(result: VerifyEndToEndResult): string[];
//# sourceMappingURL=verify-e2e.d.ts.map