export interface Variant {
    id: number;
    slug: string;
    values: Array<{
        id: number;
        variant_id?: number;
        variant_slug?: string;
        is_selected?: boolean,
        name?: string,
        slug?: string,
        price?: number,
        original_price?: number,
        high_price?: number,
    }>;
    type?: string;
    show_invalid?: boolean;
    show_invalid_above?: boolean;
    current_value_name?: string;
    current_value_id?: number;
}

export interface ProductVariant {
    id: number;
    sku: string
    variants: number[];
    price: number;
    high_price: number;
}

export interface Galleries {
    [key: number]: string[];
}

export interface BulkPriceData {
    [key: number]: BulkPriceItem[];
}

export interface BulkPriceItem {
    id: number,
    product_id: number,
    product_sku_id: number,
    price: number,
    min_quantity: number,
    actor_id: number,
    created_at: string,
    updated_at: string
}

export interface VariantsOptions {
    variants: Variant[];
    productVariants: ProductVariant[];
    galleries: Galleries;
    bulkPriceData: BulkPriceData
}

export interface VariantStatistic {
    [key: string]: {
        id: number;
        sku_key: string;
        count: number;
        price: number;
        high_price: number;
    };
}

export interface ProductVariants {
    productById: { [key: number]: ProductVariant };
    productByUniqId: { [key: string]: ProductVariant };
    productByUniqIdAbove: { [key: string]: ProductVariant };
}

export interface ProductSkuDetail {
    product: ProductVariant,
    variants: Variant[],
    galleries: string[],
    price: number,
    original_price: number,
    high_price: number,
}