import type { ProductOptionSelectionMode } from "../enums.js"

export interface ProductConfiguratorProductUsageDto {
    productId: string
    productName: string
    productPrice: number
    active: boolean
    customizationMode: "NONE" | "RECIPE" | "CONFIGURATOR"
}

export interface ProductOptionChoiceDto {
    id: string
    groupId: string
    code: string
    label: string
    description: string | null
    priceDelta: number
    displayOrder: number
    isDefault: boolean
    nextGroupId: string | null
    active: boolean
}

export interface ProductOptionGroupDto {
    id: string
    configuratorId: string
    code: string
    label: string
    selectionMode: ProductOptionSelectionMode
    minChoices: number
    maxChoices: number
    displayOrder: number
    active: boolean
    choices: ProductOptionChoiceDto[]
}

export interface ProductConfiguratorStepDto {
    id: string
    configuratorId: string
    code: string
    label: string
    displayOrder: number
    minSelections: number
    maxSelections: number
    repeatCount: number
    entryGroupId: string | null
    entryGroup: ProductOptionGroupDto | null
}

export interface ProductConfiguratorSummaryDto {
    id: string
    shopId: string
    name: string
    description: string | null
    active: boolean
    productCount: number
    createdAt: string
    updatedAt: string
}

export interface ProductConfiguratorDto extends ProductConfiguratorSummaryDto {
    optionGroups: ProductOptionGroupDto[]
    steps: ProductConfiguratorStepDto[]
    products: ProductConfiguratorProductUsageDto[]
}

