/**
 * Workspace setup for init flow — non-empty folder detection,
 * migration choice menu, restructure/copy logic, and org/repo detection.
 *
 * Part of 0640-init-ux-nonempty-workspace
 */
import type { SupportedLanguage } from '../../../core/i18n/types.js';
export interface WorkspaceContentScan {
    hasSourceFiles: boolean;
    hasPackageManager: boolean;
    hasGitRepo: boolean;
    hasUncommittedChanges: boolean;
    fileCount: number;
    detectedLanguages: string[];
}
export type MigrationChoice = 'start-empty' | 'restructure' | 'continue-in-place';
export type StartEmptySubChoice = 'clone-github' | 'copy-local' | 'add-later';
export interface OrgRepoDetection {
    org: string;
    repoName: string;
    source: 'git-remote' | 'package-json-repo' | 'package-json-scope' | 'directory-name' | 'user-input';
}
export interface RestructureResult {
    moved: string[];
    skipped: string[];
    errors: string[];
    targetDir: string;
}
export interface LocalCopyResult {
    copied: string[];
    skipped: string[];
    errors: string[];
    targetDir: string;
}
/**
 * Scan target directory for source files, package managers, and git state.
 * Scans depth 0-1 only for performance (< 500ms target).
 */
export declare function scanWorkspaceContent(targetDir: string): WorkspaceContentScan;
/**
 * Show 3-option menu for non-empty folder: start-empty, restructure, continue-in-place.
 * CI mode returns continue-in-place immediately (non-destructive default).
 */
export declare function promptMigrationChoice(scan: WorkspaceContentScan, language: SupportedLanguage, isCI: boolean): Promise<MigrationChoice>;
/**
 * Sub-menu for "Start empty": clone-github, copy-local, add-later.
 */
export declare function promptStartEmptySubChoice(language: SupportedLanguage): Promise<StartEmptySubChoice>;
/**
 * Detect org/repo from git remote, package.json repository URL, or package scope.
 * Returns null if nothing can be auto-detected.
 *
 * Cascade:
 * 1. Git remote via detectProvider()
 * 2. package.json → repository.url
 * 3. package.json → @scope/name
 */
export declare function detectOrgRepo(targetDir: string): OrgRepoDetection | null;
/**
 * Prompt for org/repo with auto-detect pre-fill.
 * Uses detectOrgRepo() first, then falls back to interactive prompt.
 */
export declare function promptOrgRepo(targetDir: string): Promise<{
    org: string;
    repoName: string;
}>;
/**
 * Copy a local directory into repositories/{org}/{repo}/.
 * Excludes .git directories from the copy.
 */
export declare function copyLocalPathIntoRepositories(targetDir: string, sourcePath: string, org: string, repoName: string): LocalCopyResult;
/**
 * Move all non-excluded entries into repositories/{org}/{repo}/.
 * Uses fs.moveSync (rename with EXDEV fallback) for each entry.
 *
 * Skip list: .git, .specweave, node_modules, repositories, hidden dotfiles, symlinks.
 */
export declare function restructureIntoRepositories(targetDir: string, org: string, repoName: string): RestructureResult;
/**
 * Display restructure warnings. Always shows symlink/CI/import warnings.
 * Additionally warns about git commit when uncommitted changes exist.
 */
export declare function showRestructureWarnings(scan: WorkspaceContentScan): void;
//# sourceMappingURL=workspace-setup.d.ts.map