/**
 * 🔄 레거시 호환성을 위한 re-export 파일
 *
 * @deprecated 이 파일은 단계적으로 제거될 예정입니다.
 * 새로운 코드에서는 다음을 사용해주세요:
 * - import { ... } from "@/types" (통합 타입 시스템)
 * - import { ... } from "@/types/screen-management" (화면관리 전용)
 * - import { ... } from "@/types/v2-core" (핵심 공통 타입)
 */

// 🎯 새로운 통합 타입 시스템에서 re-export
export * from "./index";

// 🔄 기존 호환성을 위한 타입 별칭들
export type {
  // 핵심 타입들 (v2-core에서)
  WebType,
  ButtonActionType,
  ComponentType,
  Position,
  Size,
  CommonStyle as ComponentStyle,
  ValidationRule,

  // 컴포넌트 타입들 (screen-management에서)
  ComponentData,
  BaseComponent,
  WidgetComponent,
  ContainerComponent,
  GroupComponent,
  DataTableComponent,
  FileComponent,

  // 웹타입 설정들 (screen-management에서)
  WebTypeConfig,
  DateTypeConfig,
  NumberTypeConfig,
  SelectTypeConfig,
  TextTypeConfig,
  FileTypeConfig,
  EntityTypeConfig,
  ButtonTypeConfig,

  // 화면 관련 (screen-management에서)
  ScreenDefinition,
  CreateScreenRequest,
  UpdateScreenRequest,
  LayoutData,
  GridSettings,
  ScreenTemplate,
  ScreenResolution,
  GroupState,
  
  // 화면 해상도 상수
  SCREEN_RESOLUTIONS,

  // 데이터 테이블 (screen-management에서)
  DataTableColumn,
  DataTableFilter,

  // 파일 업로드 (screen-management에서)
  UploadedFile,

  // 테이블 정보 (table-management에서)
  TableInfo,
  V2ColumnInfo as ColumnInfo,

  // API 응답들
  PaginatedResponse,
} from "./index";

// 🔄 타입 가드 함수들 re-export
export {
  // 핵심 타입 가드들
  isWebType,
  isButtonActionType,
  isComponentType,

  // 컴포넌트 타입 가드들
  isWidgetComponent,
  isContainerComponent,
  isGroupComponent,
  isDataTableComponent,
  isFileComponent,

  // 안전한 캐스팅 함수들
  asWidgetComponent,
  asContainerComponent,
  asGroupComponent,
  asDataTableComponent,
  asFileComponent,

  // 유틸리티 함수들
  ynToBoolean,
  booleanToYN,
} from "./index";

// ===== 레거시 호환성을 위한 추가 타입들 =====

// 🔄 기존 호환성을 위한 타입 별칭들
import { ContainerComponent } from "./index";

/**
 * @deprecated ContainerComponent를 사용하세요
 */
export interface RowComponent extends ContainerComponent {
  type: "row";
}

/**
 * @deprecated ContainerComponent를 사용하세요
 */
export interface ColumnComponent extends ContainerComponent {
  type: "column";
}

/**
 * @deprecated ContainerComponent를 사용하세요
 */
export interface AreaComponent extends ContainerComponent {
  type: "area";
  layoutType?: "absolute" | "flex" | "grid";
}

/**
 * 자동생성 타입
 */
export type AutoGenerationType =
  | "none"
  | "uuid"
  | "current_user"
  | "current_time"
  | "sequence"
  | "numbering_rule"
  | "random_string"
  | "random_number"
  | "company_code"
  | "department"
  | "table" // deprecated
  | "form" // deprecated
  | "mixed"; // deprecated

/**
 * 자동생성 설정
 */
export interface AutoGenerationConfig {
  type: AutoGenerationType;
  enabled?: boolean;
  tableName?: string;
  includeSearch?: boolean;
  includePagination?: boolean;
  options?: {
    length?: number; // 랜덤 문자열/숫자 길이
    prefix?: string; // 접두사
    suffix?: string; // 접미사
    format?: string; // 시간 형식 (current_time용)
    startValue?: number; // 시퀀스 시작값
    numberingRuleId?: string; // 채번 규칙 ID (numbering_rule 타입용)
    sourceColumnName?: string; // 날짜 컬럼명 (채번 규칙에서 날짜 기반 생성 시)
  };
}
