/**
 * CLI Onboard Command
 *
 * Interactive setup wizard that walks new users through configuring Crewly.
 * Detects AI providers, installs missing tools, and installs agent skills
 * from the marketplace.
 *
 * Used directly via `crewly onboard`, by the curl install script, and
 * by the Electron desktop app.
 *
 * Supports non-interactive mode via `--yes` flag and direct template
 * selection via `--template <id>`.
 *
 * @module cli/commands/onboard
 */
import { type Interface as ReadlineInterface } from 'readline';
import { type TeamTemplate } from '../utils/templates.js';
/** Provider choice returned by the selection step */
export type ProviderChoice = 'claude' | 'gemini' | 'codex' | 'both' | 'skip';
/** Options passed from Commander.js for the onboard command */
export interface OnboardOptions {
    /** Skip all interactive prompts and use defaults */
    yes?: boolean;
    /** Select a team template by ID (e.g. "web-dev-team") */
    template?: string;
}
/**
 * Prints the Crewly ASCII art banner to stdout.
 */
export declare function printBanner(): void;
/**
 * Creates a readline interface attached to stdin/stdout.
 *
 * @returns A readline interface
 */
export declare function createReadlineInterface(): ReadlineInterface;
/**
 * Asks the user which AI coding assistant they use.
 *
 * Displays a numbered menu and returns the user's choice.
 *
 * @param rl - Readline interface
 * @returns The selected provider choice
 */
export declare function selectProvider(rl: ReadlineInterface): Promise<ProviderChoice>;
/**
 * Checks whether a CLI tool is installed by running `which <command>`.
 *
 * @param command - The command name to look for (e.g. "claude")
 * @returns True if the command is found on the PATH
 */
export declare function checkToolInstalled(command: string): boolean;
/**
 * Gets the version of an installed CLI tool.
 *
 * @param command - The command name
 * @param versionFlag - The flag to get version (default: "--version")
 * @returns The version string or null if not determinable
 */
export declare function getToolVersion(command: string, versionFlag?: string): string | null;
/**
 * Installs a tool via npm globally.
 *
 * @param displayName - Human-readable tool name for output
 * @param npmPackage - The npm package name to install
 * @returns True if installation succeeded
 */
export declare function installTool(displayName: string, npmPackage: string): boolean;
/**
 * Checks for and optionally installs the tools needed for the selected provider.
 *
 * For each required tool, checks if it's on the PATH. If missing, asks the user
 * whether to install it via npm. In non-interactive (--yes) mode, automatically
 * installs missing tools.
 *
 * @param rl - Readline interface
 * @param provider - The chosen provider
 * @param autoYes - When true, skip prompts and install missing tools automatically
 */
export declare function ensureTools(rl: ReadlineInterface, provider: ProviderChoice, autoYes?: boolean): Promise<void>;
/**
 * Checks for and installs agent skills from the marketplace.
 *
 * If skills are already installed, reports the count. Otherwise, downloads
 * and installs all skills with progress feedback.
 */
export declare function ensureSkills(): Promise<void>;
/**
 * Asks the user to pick a pre-built team template.
 *
 * Displays available templates with descriptions. The user can pick one
 * or skip to configure their team later through the dashboard.
 *
 * @param rl - Readline interface
 * @returns The selected template, or null if skipped
 */
export declare function selectTemplate(rl: ReadlineInterface): Promise<TeamTemplate | null>;
/**
 * Creates a team from a template by writing it to ~/.crewly/teams/{team-id}/config.json.
 *
 * Converts template members into full TeamMember objects with UUIDs, session names,
 * and default status fields. The team is immediately available when `crewly start` runs.
 *
 * @param template - The team template to create from
 * @param provider - The chosen AI provider to set as default runtime for members
 * @returns True if the team was created successfully
 */
export declare function createTeamFromTemplate(template: TeamTemplate, provider?: ProviderChoice): boolean;
/**
 * Scaffolds the .crewly/ directory in the current working directory.
 *
 * Creates the minimum directory structure needed for `crewly start` to work:
 * - .crewly/
 * - .crewly/docs/
 * - .crewly/memory/
 * - .crewly/tasks/
 * - .crewly/teams/
 *
 * If a template is provided, copies goals.md and team.json from the
 * template directory into .crewly/ (only if they exist in the template
 * and don't already exist in the target).
 *
 * If the directory already exists, reports it and moves on but still
 * copies any missing template files.
 *
 * @param projectDir - The project root directory (defaults to process.cwd())
 * @param template - Optional template to copy project files from
 * @returns True if the directory was created or already existed
 */
export declare function scaffoldCrewlyDirectory(projectDir?: string, template?: TeamTemplate | null): boolean;
/**
 * Copies project-level files (goals.md, team.json) from a template
 * directory into the .crewly/ scaffold directory.
 *
 * Only copies files that exist in the template and don't already
 * exist in the target directory (avoids overwriting user edits).
 *
 * @param crewlyDir - The .crewly/ directory to copy files into
 * @param template - The template whose directory to copy from
 */
export declare function copyTemplateProjectFiles(crewlyDir: string, template: TeamTemplate): void;
/**
 * Prints the setup-complete summary with next-step instructions.
 *
 * If a team template was selected, includes instructions on how to
 * create the team from the dashboard.
 *
 * @param selectedTemplate - The template chosen during onboarding, or null
 * @param projectDir - The project directory path for next-steps output
 */
export declare function printSummary(selectedTemplate?: TeamTemplate | null, projectDir?: string): void;
/**
 * Runs the onboarding wizard.
 *
 * In interactive mode (default), walks the user through 5 steps:
 * 1. Choose an AI provider (Claude Code, Gemini CLI, both, or skip)
 * 2. Detect / install the chosen tool(s)
 * 3. Install agent skills from the marketplace
 * 4. Pick a team template (or skip)
 * 5. Print a success summary
 *
 * In non-interactive mode (--yes), uses defaults:
 * - Provider: claude
 * - Auto-install missing tools
 * - First available template (or --template flag)
 * - Scaffold .crewly/ directory
 *
 * @param options - Command options from Commander.js
 */
export declare function onboardCommand(options?: OnboardOptions): Promise<void>;
//# sourceMappingURL=onboard.d.ts.map