import { Id } from "../shared";
export interface CanalProps {
    /** TODO:
     *  gamas: {
     *    [idGama]: itemsProps: CanalItemProp[][]
     * }
     * */
    id_gama: Id;
    items_props: CanalItemProp[][];
    filters: CanalFilters;
    sorting: CanalSorting[];
    grid: CanalGridParams;
    ads: CanalAd[];
    timers: CanalTimers;
    rates: CanalRates;
    styles: CanalStyles;
    defaultSlot?: string;
}
export interface CanalItemProp {
    path: string[];
    format: string;
    label: string;
    image?: string;
    icon?: {
        name: string;
        color: string;
    };
}
export interface CanalRates {
    enabled: boolean;
    items: CanalRateItem[];
}
export interface CanalRateItem {
    type: 'product' | 'ad';
    tag: string;
    percentage: number;
}
export interface CanalFilters {
    tags?: string[];
    gamas?: number[];
    proveedores?: string[];
    props?: {
        [idGama: Id]: PropFilter[];
    };
}
export type PropFilter = [code: string, operator: string, value: string | number];
export interface CanalSorting {
    by: string | null;
    order: 'ASC' | 'DESC';
}
export interface CanalGridParams {
    rows: number;
    columns: number;
    gap: number;
}
export interface CanalTimers {
    grid: {
        duration: number;
    };
    product: {
        duration: number;
    };
    ads: {
        frequency: number;
        duration: number;
    };
}
export interface CanalAd {
    file?: any;
    image: string;
    qr: AdQr;
    order: number;
    hidden: boolean;
    lines: CanalAdLine[];
}
export interface AdQr {
    show: boolean;
    url?: string;
    styles?: string;
    size?: number;
}
export interface CanalAdLine {
    content: string;
    style: string;
    position: `${PositionHorizontal} ${PositionVertical}`;
}
type PositionVertical = 'top' | 'center' | 'bottom';
type PositionHorizontal = 'left' | 'center' | 'right';
export interface CanalStyles {
    grid: {
        bg?: string;
    };
    product: SectionStyle & {
        lines: SectionStyle[];
    };
}
export interface SectionStyle {
    bg?: string;
    textColor?: string;
    textAlign?: 'left' | 'center' | 'right';
    font?: string;
    containerClasses?: string;
}
export {};
