import type { CloudGenerateRequest } from '../../../cloud/api/request-types.js';
import type { CloudWorkflowSummary } from './workflow-summary.js';
export type CloudImplementationAgent = 'claude' | 'codex' | 'opencode' | 'gemini';
export type CloudOptionalIntegration = 'slack' | 'github' | 'notion' | 'linear';
export type CloudLoginRequirement = 'account' | 'credentials' | 'workspace';
export interface CloudReadinessCheck {
    connected: boolean;
    label?: string;
    recovery?: string;
}
export interface CloudAgentReadiness extends CloudReadinessCheck {
    capable: boolean;
}
export interface CloudReadinessSnapshot {
    account: CloudReadinessCheck;
    credentials: CloudReadinessCheck;
    workspace: CloudReadinessCheck;
    agents: Record<CloudImplementationAgent, CloudAgentReadiness>;
    integrations: Record<CloudOptionalIntegration, CloudReadinessCheck>;
}
export type MissingCloudAgentAction = {
    action: 'connect-all';
} | {
    action: 'choose';
    agents: CloudImplementationAgent[];
} | {
    action: 'continue-connected';
} | {
    action: 'go-back';
};
export type OptionalIntegrationSelection = {
    action: 'connect';
    integrations: CloudOptionalIntegration[];
} | {
    action: 'skip-all';
} | {
    action: 'go-back';
};
export type CloudRunConfirmation = {
    action: 'run-and-monitor';
} | {
    action: 'show-command';
} | {
    action: 'edit-first';
};
export interface CloudWorkflowFlowDeps {
    checkCloudReadiness?: () => Promise<CloudReadinessSnapshot>;
    recoverCloudLogin?: (params: {
        missing: CloudLoginRequirement[];
        readiness: CloudReadinessSnapshot;
    }) => Promise<void>;
    promptMissingCloudAgents?: (params: {
        availableAgents: CloudImplementationAgent[];
        missingAgents: CloudImplementationAgent[];
        readiness: CloudReadinessSnapshot;
    }) => Promise<MissingCloudAgentAction>;
    connectCloudAgents?: (agents: CloudImplementationAgent[]) => Promise<void>;
    selectOptionalCloudIntegrations?: (params: {
        connectedIntegrations: CloudOptionalIntegration[];
        missingIntegrations: CloudOptionalIntegration[];
        relevantIntegrations: CloudOptionalIntegration[];
        readiness: CloudReadinessSnapshot;
    }) => Promise<OptionalIntegrationSelection>;
    connectOptionalCloudIntegrations?: (integrations: CloudOptionalIntegration[]) => Promise<void>;
    confirmCloudRun?: (summary: CloudWorkflowSummary) => Promise<CloudRunConfirmation | boolean>;
}
export type CloudWorkflowFlowResult = {
    ok: true;
    request: CloudGenerateRequest;
    summary: CloudWorkflowSummary;
    guidance: string[];
} | {
    ok: false;
    summary?: CloudWorkflowSummary;
    guidance: string[];
};
export type CloudReadinessSetupResult = {
    ok: true;
    readiness: CloudReadinessSnapshot;
    summary: CloudWorkflowSummary;
    guidance: string[];
} | {
    ok: false;
    guidance: string[];
};
export declare const CLOUD_IMPLEMENTATION_AGENTS: CloudImplementationAgent[];
export declare const CLOUD_OPTIONAL_INTEGRATIONS: CloudOptionalIntegration[];
export declare function runCloudWorkflowFlow(request: CloudGenerateRequest, deps?: CloudWorkflowFlowDeps): Promise<CloudWorkflowFlowResult>;
export declare function prepareCloudWorkflowReadiness(request: CloudGenerateRequest, deps?: CloudWorkflowFlowDeps): Promise<CloudReadinessSetupResult>;
