import type { ConnectionSelectOption } from "#setup/cli/index.js";
import { type Asker } from "../ask.js";
import type { ConnectionPlan, SetupState } from "../state.js";
import type { SetupBox } from "../step.js";
export declare const CONNECT_REQUIRES_VERCEL = "Authenticates through Vercel Connect, which needs a Vercel project. Re-run and choose to deploy to Vercel.";
export interface SelectConnectionsOptions {
    /** Resolves the picker and custom sub-questions; the composed stack decides how. */
    asker: Asker;
    /**
     * Headless mode: skips the picker entirely unless `presetConnections` were
     * requested. Fixed at composition time (the same place the asker base is
     * chosen), since `gather` cannot read the mode off the asker.
     */
    headless?: boolean;
    /** Skip the picker and plan exactly these catalog slugs. */
    presetConnections?: string[];
}
/** Exported for tests: the picker rows derived from the curated catalog. */
export declare function buildCatalogOptions(disabledReasons: Readonly<Record<string, string>>): ConnectionSelectOption[];
/**
 * THE CONNECTION SELECTION BOX: part of the interview phase, before any
 * filesystem write. Offers the connection catalog (plus a custom MCP / OpenAPI
 * escape hatch through preset slugs) and resolves every prompt into
 * fully-specified {@link ConnectionPlan}s recorded on the state; the
 * add-connections box executes them after the scaffold and link. The full
 * catalog is selectable: the deployment decision comes later in the interview,
 * and the provisioning box resolves to Vercel when a Connect-backed selection
 * needs a project.
 */
export declare function selectConnections(options: SelectConnectionsOptions): SetupBox<SetupState, ConnectionPlan[], ConnectionPlan[]>;
