UNPKG

@retaila/shared-types

Version:

Tipos compartidos para el proyecto Retail

1 lines 33 kB
{"version":3,"sources":["../src/common/Media.ts","../src/common/Currency.ts","../src/account/types.ts","../src/accountBranch/types.ts","../src/accountDeliveryOption/types.ts","../src/accountDomain/types.ts","../src/accountIntegration/types.ts","../src/cart/types.ts","../src/cart/dto.ts","../src/customer/types.ts","../src/integration/types.ts","../src/order/types.ts","../src/payment/types.ts","../src/product/types.ts","../src/productAttribute/types.ts","../src/productCategory/types.ts","../src/standardCategory/types.ts","../src/storeBanner/types.ts","../src/storePage/types.ts","../src/pubsub/types.ts"],"sourcesContent":["/**\n * Entidad Media\n * Se utiliza para almacenar y gestionar archivos y recursos multimedia.\n */\n\nexport interface Media {\n id: string;\n accountId: string;\n filename: string;\n url: string;\n thumbnailUrl: string;\n mimeType: string;\n extension: string;\n size: number;\n type: MediaType;\n altText: string;\n createdAt: Date;\n updatedAt: Date;\n deletedAt?: Date | null;\n}\n\nexport enum MediaType {\n IMAGE = 'IMAGE',\n VIDEO = 'VIDEO',\n DOCUMENT = 'DOCUMENT',\n AUDIO = 'AUDIO',\n ARCHIVE = 'ARCHIVE',\n OTHER = 'OTHER',\n}\n\n\n","export enum Currency {\n USD = 'USD',\n EUR = 'EUR',\n UYU = 'UYU',\n ARS = 'ARS',\n BRL = 'BRL'\n}\n\nexport function getCurrencySymbol(currencyCode: Currency): string {\n const currencySymbols: { [key: string]: string } = {\n [Currency.USD]: 'U$S',\n [Currency.EUR]: '€',\n [Currency.UYU]: '$',\n [Currency.ARS]: '$',\n [Currency.BRL]: 'R$',\n };\n \n return currencySymbols[currencyCode] || currencyCode.toString();\n} \n\n\n","// shared-types/src/account/types.ts - Account entity types\n\nexport interface Account {\n id: string;\n name: string;\n address?: string;\n logoId?: string;\n currency: string;\n instagram?: string;\n facebook?: string;\n whatsapp?: string;\n phone?: string;\n email: string;\n timezone: string;\n hasDelivery: boolean;\n status: AccountStatus;\n themeConfig?: ThemeConfig;\n privateKey?: string;\n demo: boolean;\n createdAt: Date;\n updatedAt: Date;\n deletedAt?: Date;\n}\n\nexport enum AccountStatus {\n ACTIVE = 'ACTIVE',\n INACTIVE = 'INACTIVE',\n PENDING = 'PENDING',\n SUSPENDED = 'SUSPENDED',\n}\n\nexport interface ThemeConfig {\n backgroundColor: string;\n textColor: string;\n primaryColor: string;\n secondaryColor: string;\n}\n ","import { AccountDeliveryOption } from \"../accountDeliveryOption/types\";\nimport { Address, MapPosition, Phone } from \"../common\";\n\n/**\n * Entidad AccountBranch\n * Representa una sucursal de una cuenta.\n */\n\nexport interface AccountBranch {\n id: string;\n accountId: string;\n name: string;\n address?: Address; \n addressInstructions?: string;\n addressCoordinates?: MapPosition | null;\n phone?: Phone | null;\n email?: string | null;\n demo:boolean;\n status: AccountBranchStatus; \n createdAt: Date;\n updatedAt: Date;\n deletedAt?: Date | null;\n\n schedule: AccountBranchSchedule[];\n deliveryOptions: AccountDeliveryOption[];\n}\n\nexport enum AccountBranchStatus {\n ACTIVE = \"ACTIVE\",\n INACTIVE = \"INACTIVE\"\n}\n\n \nexport interface AccountBranchSchedule {\n id: string;\n accountBranchId: string;\n day: AccountBranchScheduleDay;\n start: number;\n end: number;\n status: AccountBranchScheduleStatus;\n demo:boolean;\n createdAt: Date;\n updatedAt: Date;\n deletedAt?: Date | null;\n}\n\nexport enum AccountBranchScheduleStatus {\n ACTIVE = \"ACTIVE\",\n INACTIVE = \"INACTIVE\"\n}\n\nexport enum AccountBranchScheduleDay {\n MONDAY = \"MONDAY\",\n TUESDAY = \"TUESDAY\",\n WEDNESDAY = \"WEDNESDAY\",\n THURSDAY = \"THURSDAY\",\n FRIDAY = \"FRIDAY\",\n SATURDAY = \"SATURDAY\",\n SUNDAY = \"SUNDAY\"\n}","import { Address, MapPosition } from \"../common\";\nimport { AccountIntegration } from \"../accountIntegration/types\";\nimport { AccountBranch } from \"../accountBranch/types\";\n\n/**\n * Entidad AccountDeliveryOption\n * Representa una opción de envío de una cuenta.\n */\n\nexport interface AccountDeliveryOption {\n\tid: string;\n\taccountId: string;\n\taccountBranchId: string;\n\tname: string;\n\tintegrationId?: string;\n\tisScheduled: boolean;\n\tpriceLogic: AccountDeliveryOptionPriceLogic;\n\tstatus: AccountDeliveryOptionStatus;\n\tdemo:boolean;\n\tcreatedAt: Date;\n\tupdatedAt: Date;\n\tdeletedAt?: Date | null;\n\n\tzones: AccountDeliveryOptionZone[];\n\tintegration?: AccountIntegration | null;\n\tcalculatedCost?: AccountDeliveryOptionCalculatedCost | null;\n\taccountBranch?: AccountBranch | null;\n}\n\nexport enum AccountDeliveryOptionPriceLogic {\n\tFIXED = \"FIXED\",\n\tPER_KM = \"PER_KM\",\n}\n\nexport enum AccountDeliveryOptionStatus {\n\tACTIVE = \"ACTIVE\",\n\tINACTIVE = \"INACTIVE\",\n}\n\nexport interface AccountDeliveryOptionCalculatedCost {\n\tbasePrice: number;\n\tdistanceKm: number;\n\tfinalPrice: number;\n\tpriceLogic: AccountDeliveryOptionPriceLogic;\n\tcurrency: string;\n}\n\n\nexport interface AccountDeliveryOptionZone {\n\tid: string;\n\taccountId: string;\n\taccountDeliveryOptionId: string;\n\tname: string;\n\tprice: number;\n\tpriceMin: number;\n\tarea: string;\n\tstatus: AccountDeliveryOptionZoneStatus;\n\tdemo:boolean;\n\tcreatedAt: Date;\n\tupdatedAt: Date;\n\tdeletedAt?: Date | null;\n}\n\nexport enum AccountDeliveryOptionZoneStatus {\n\tACTIVE = \"ACTIVE\",\n\tINACTIVE = \"INACTIVE\",\n}","/**\n * Entidad AccountDomain\n * Representa un dominio personalizado asociado a una cuenta.\n * Permite dominios completos y subdominios, con control de estado y verificación.\n */\n\nexport interface AccountDomain {\n id: string;\n accountId: string;\n domain: string; /** Dominio completo (ej: example.com) */\n subdomain?: string;/** Subdominio opcional (ej: shop, blog) */\n isPrimary: boolean; /** Indica si este es el dominio principal de la cuenta */\n status: AccountDomainStatus; /** Estado del dominio: PENDING, ACTIVE, INACTIVE */\n verifiedAt?: Date; /** Fecha de verificación del dominio */\n \n createdAt: Date;\n updatedAt: Date;\n deletedAt?: Date | null;\n}\n\nexport enum AccountDomainStatus {\n PENDING = \"PENDING\",\n ACTIVE = \"ACTIVE\",\n INACTIVE = \"INACTIVE\"\n}\n\n ","import { Integration } from \"../integration\";\n/**\n * Entidad AccountIntegration\n * Contiene información de la integración y sus credenciales.\n */\n\nexport enum AccountIntegrationStatus {\n\tACTIVE = 'ACTIVE',\n\tINACTIVE = 'INACTIVE',\n\tBETA = 'BETA',\n\tDEPRECATED = 'DEPRECATED',\n}\nexport enum AccountIntegrationConnectionStatus {\n\tCONNECTED = 'CONNECTED',\n\tDISCONNECTED = 'DISCONNECTED',\n\tERROR = 'ERROR',\n\tWARNING = 'WARNING',\n}\n\nexport enum AccountIntegrationEnvironment {\n\tPRODUCTION = 'PRODUCTION',\n\tDEVELOPMENT = 'DEVELOPMENT',\n}\n\nexport interface AccountIntegration {\n\tid: string;\n\taccountId: string;\n\tintegrationId: string;\n\tsettingsProduction: Object | null;\n\tsettingsDevelopment: Object | null;\n\tenvironment: AccountIntegrationEnvironment;\n\tproductionStatus: AccountIntegrationConnectionStatus;\n\tdevelopmentStatus: AccountIntegrationConnectionStatus;\n\tstatus: AccountIntegrationStatus;\n\tdemo: boolean;\n\tcreatedAt: Date;\n\tupdatedAt: Date;\n\tdeletedAt?: Date | null;\n\n\tintegration: Integration;\n\n\tsettings: Record<string, any>; // settings for requested environment\n}","import { CartItemValidation } from \"./dto\";\nimport { Customer } from \"../customer\";\nimport { AccountDomain } from \"../accountDomain\";\n\n/**\n * Entidad Cart\n * Define el carrito de compras de un cliente en el sitio web.\n */\n\nexport interface Cart {\n id: string;\n code: string;\n customerId?: string;\n sessionId?: string;\n items: CartItem[];\n currency: string;\n subtotal: number;\n total: number;\n deliveryType: CartDeliveryType;\n itemCount: number;\n createdAt: Date;\n updatedAt: Date;\n status: CartStatus;\n source: CartSource;\n sourceAccountDomainId?: string;\n recoveryToken?: string;\n customerNote?: string;\n hasIssues: boolean; // Indica si el carrito tiene problemas que resolver\n issuesCount: number; // Número de items con problemas\n // Nuevos campos de precios\n subtotalPrice?: number;\n totalDiscounts?: number;\n totalShippingPrice?: number;\n totalTax?: number;\n totalPrice?: number;\n taxDetails?: any;\n\n customer?: Customer | null;\n accountDomain?: AccountDomain;\n}\n\nexport interface CartItem {\n id: string;\n productId: string;\n productVariantId: string;\n name: string;\n unitPrice: number; // Precio cuando se agregó al carrito\n quantity: number;\n image?: string;\n thumbnailUrl?: string; // URL del thumbnail de la variante\n sku?: string;\n attributeDetails: CartItemAttributeDetail[]; // Detalles legibles de atributos\n \n validation?: CartItemValidation; // Información de validación del item en dto\n}\n\n\nexport interface CartItemAttributeDetail {\n name: string; // Nombre del atributo (ej: \"Talle\", \"Color\")\n value: string; // Valor del atributo (ej: \"M\", \"Rojo\")\n type?: string; // Tipo del atributo (opcional)\n}\n\nexport enum CartStatus {\n ACTIVE = 'ACTIVE',\n LOCKED = 'LOCKED',\n EXPIRED = 'EXPIRED',\n CONVERTED = 'CONVERTED',\n ABANDONED = 'ABANDONED',\n MERGED = 'MERGED'\n}\n\nexport enum CartSource {\n WEB = 'WEB',\n POS = 'POS',\n API = 'API'\n}\n\nexport enum CartDeliveryType {\n DELIVERY = 'delivery',\n PICKUP = 'pickup'\n}\n\n\n\n\n","import { OrderSource } from \"../order\";\n\n/**\n * Add an item to the cart\n*/\nexport interface CartItemAddDto {\n cartId: string;\n productId: string;\n variantId?: string;\n quantity: number;\n attributes?: { [key: string]: string | number; };\n userEmail?: string;\n userId?: string;\n}\n\n/**\n * Update an item in the cart\n */\nexport interface CartItemUpdateDto {\n cartId: string;\n itemId: string;\n quantity: number;\n}\n\n/**\n * Remove an item from the cart\n */\nexport interface CartItemRemoveDto {\n cartId: string;\n itemId: string;\n}\n\nexport interface CartUpdateDto {\n cartId: string;\n source: OrderSource;\n accountDomainId?: string;\n customer: {\n email: string;\n };\n delivery: {\n type: 'shipping' | 'pickup';\n deliveryOptionId?: string;\n pickupBranchId?: string;\n firstname: string;\n lastname: string;\n phone: {\n countryCode: string;\n national: string;\n international: string;\n type: string;\n validated: boolean;\n };\n address: {\n country: string;\n department: string;\n locality: string;\n street: string;\n complement?: string;\n notes?: string;\n postalCode: string;\n mapPosition: {\n lat: number;\n lng: number;\n };\n };\n };\n billing: {\n name: string;\n address: string;\n city: string;\n department: string;\n };\n}\n\n/**\n * Confirm a cart\n */\nexport interface CartConfirmDto {\n cartId: string;\n}\n\n/**\n * Validation information for a cart item\n */\nexport interface CartItemValidation {\n hasIssues: boolean; // Indica si hay problemas con este item\n issues: string[]; // Lista de problemas encontrados (mensajes legibles)\n errorCode?: CartItemErrorCode; // Código específico del error principal\n currentPrice?: number; // Precio actual del producto (si cambió)\n availableStock?: number; // Stock disponible actual\n isProductActive?: boolean; // Si el producto está activo\n}\n\n/**\n * Error codes for cart items\n */\nexport enum CartItemErrorCode {\n PRICE_INCREASED = 'PRICE_INCREASED', // Precio aumentó\n PRICE_DECREASED = 'PRICE_DECREASED', // Precio disminuyó \n PRODUCT_INACTIVE = 'PRODUCT_INACTIVE', // Producto ya no está disponible\n STOCK_INSUFFICIENT = 'STOCK_INSUFFICIENT', // Stock insuficiente (hay algo disponible)\n STOCK_UNAVAILABLE = 'STOCK_UNAVAILABLE', // Sin stock (0 disponible)\n VALIDATION_ERROR = 'VALIDATION_ERROR' // Error general de validación\n}\n","/**\n * Entidad Customer\n * Cliente de la tienda\n*/\nimport { Phone } from \"../common/Phone\";\n\nexport interface Customer {\n id: string;\n accountId: string;\n firstName?: string;\n lastName?: string;\n email: string;\n phone?: Phone;\n status: CustomerStatus;\n createdAt: Date;\n updatedAt: Date;\n deletedAt?: Date | null;\n}\n\nexport enum CustomerStatus {\n ACTIVE = 'ACTIVE',\n INACTIVE = 'INACTIVE',\n BLACKLISTED = 'BLACKLISTED', // e.g., for fraudulent activity\n PENDING = 'PENDING', // e.g., email verification needed\n}","import { AccountIntegration } from \"../accountIntegration\";\n/**\n * Entidad Integration\n * Define las integraciones de terceros disponibles en la plataforma (ej. pasarelas de pago, transportistas).\n * Almacena información sobre el proveedor, categoría y esquema de parámetros requeridos.\n */\n\nexport enum IntegrationCategory {\n\tPAYMENT_GATEWAY = 'PAYMENT_GATEWAY',\n\tSHIPPING_CARRIER = 'SHIPPING_CARRIER',\n\tMARKETPLACE = 'MARKETPLACE',\n\tEMAIL_MARKETING = 'EMAIL_MARKETING',\n\tANALYTICS = 'ANALYTICS',\n\tACCOUNTING = 'ACCOUNTING',\n\tSOCIAL_MEDIA = 'SOCIAL_MEDIA',\n\tOTHER = 'OTHER',\n}\n\nexport enum IntegrationStatus {\n\tACTIVE = 'ACTIVE',\n\tINACTIVE = 'INACTIVE',\n\tBETA = 'BETA',\n\tDEPRECATED = 'DEPRECATED',\n}\n\nexport interface Integration {\n\tid: string;\n\tcategory: IntegrationCategory;\n\tproviderKey: string; // Unique identifier key (e.g., 'stripe', 'mercadopago')\n\tname: string; // Human-readable name (e.g., \"Stripe\", \"Mercado Pago\")\n\tdescription?: string;\n\tsetupInstructions?: string; // General instructions or link to docs\n\tlogoUrl?: string; // URL to the integration's logo\n\trequiredParamsSchema?: any; // Define required parameters/credentials structure\n\tstatus: IntegrationStatus;\n\tcreatedAt: Date;\n\tupdatedAt: Date;\n\tdeletedAt?: Date | null;\n\n\taccountIntegration: AccountIntegration | null;\n}","import { Currency } from \"../common\";\nimport { Customer } from \"../customer\";\nimport { AccountIntegration } from \"../accountIntegration\";\nimport { AccountDomain } from \"../accountDomain\";\n\n/**\n * Entidad Order\n * Define la orden de compra de un cliente en el sitio web.\n */\n\nexport interface Order {\n id: string;\n accountId: string;\n customerId: string;\n cartId?: string;\n code: string;\n deliveryType?: OrderDeliveryType;\n deliveryFirstName?: string;\n deliveryLastName?: string;\n deliveryAddress?: any;\n deliveryPhone?: any;\n deliveryOptionId?: string;\n pickupBranchId?: string;\n paymentMethodIntegrationId?: string;\n billingInformation?: any;\n currency: Currency;\n subtotalPrice: number;\n totalDiscounts: number;\n totalShippingPrice: number;\n totalTax: number;\n taxDetails?: any;\n totalPrice: number;\n totalRefunded: number;\n status: OrderStatus;\n paymentStatus: OrderPaymentStatus;\n fulfillmentStatus: OrderFulfillmentStatus;\n statusHistory?: StatusChangeHistory[];\n customerNote?: string;\n internalNote?: string;\n source: OrderSource;\n sourceAccountDomainId?: string;\n demo: boolean;\n createdAt: Date;\n updatedAt: Date;\n cancelledAt?: Date;\n cancelReason?: string;\n deletedAt?: Date;\n items?: OrderItem[];\n\n customer?: Customer | null;\n paymentMethodIntegration?: AccountIntegration | null;\n accountDomain?: AccountDomain;\n}\n\nexport interface OrderItem {\n id: string;\n accountId: string;\n orderId: string;\n productId: string;\n productVariantId: string;\n sku?: string;\n productName: string;\n variantName?: string;\n currency: Currency;\n unitPrice: number;\n totalDiscount: number;\n totalPrice: number;\n quantity: number;\n quantityFulfilled: number;\n quantityRefunded: number;\n quantityReturned: number;\n totalTax: number;\n taxName?: string;\n createdAt: Date;\n updatedAt: Date;\n}\n\nexport enum OrderStatus {\n PENDING = 'PENDING', // Order placed, awaiting payment confirmation\n CONFIRMED = 'CONFIRMED', // Payment received, order confirmed\n PROCESSING = 'PROCESSING', // Order being prepared\n PROCESSED = 'PROCESSED', // Order ready to be shipped\n ON_HOLD = 'ON_HOLD', // Order temporarily paused\n COMPLETED = 'COMPLETED', // Order finished (e.g., after return period)\n CANCELLED = 'CANCELLED', // Order cancelled before fulfillment\n FAILED = 'FAILED', // Order failed (e.g., payment failed irrecoverably)\n}\n\nexport enum OrderPaymentStatus {\n PENDING = 'PENDING',\n PARTIAL = 'PARTIAL',\n PAID = 'PAID',\n OVERPAID = 'OVERPAID',\n REFUNDED = 'REFUNDED',\n PARTIALLY_REFUNDED = 'PARTIALLY_REFUNDED'\n}\n\nexport enum OrderFulfillmentStatus {\n PENDING = 'PENDING',\n PARTIAL = 'PARTIAL',\n FULFILLED = 'FULFILLED'\n}\n\nexport enum OrderSource {\n WEB = 'WEB',\n POS = 'POS',\n API = 'API'\n}\n\nexport enum OrderDeliveryType {\n SHIPPING = 'shipping',\n PICKUP = 'pickup',\n}\n\nexport interface StatusChangeHistory {\n status: OrderStatus;\n timestamp: Date;\n reason?: string;\n userId?: string;\n metadata?: Record<string, any>;\n}","// shared-types/src/payment/types.ts\n\nimport { Currency } from \"../common\";\n\nexport enum PaymentStatus {\n PENDING = 'PENDING', // Pendiente\n PREAUTHORIZED = 'PREAUTHORIZED',\n APPROVED = 'APPROVED', // Pago aprobado online\n PAID = 'PAID', // Pago realizado por redes fisicas\n REJECTED = 'REJECTED', // Pago rechazado\n REFUND_IN_PROCESS = 'REFUND_IN_PROCESS', // En proceso de reembolso con la plataforma de pagos\n PARTIAL_REFUND = 'PARTIAL_REFUND', // Pago parcialmente reembolsado\n REFUNDED = 'REFUNDED', // Pago reembolsado\n}\n\nexport enum PaymentMethodType {\n BANK_TRANSFER = 'BANK_TRANSFER',\n CREDIT_CARD = 'CREDIT_CARD',\n DEBIT_CARD = 'DEBIT_CARD',\n MERCADOPAGO = 'MERCADOPAGO',\n PHYSICAL = 'PHYSICAL',\n INTERNATIONAL = 'INTERNATIONAL',\n PAYPAL = 'PAYPAL',\n CASH = 'CASH',\n OTHER = 'OTHER', // Added for flexibility\n}\n\nexport interface Payment {\n id: string;\n accountId: string;\n orderId: string;\n invoiceId?: string;\n gatewayPaymentId?: string;\n referenceCode?: string;\n paymentMethodType?: PaymentMethodType;\n currency: Currency;\n amount: number;\n amountReceived: number;\n amountRefunded: number;\n paidAt?: string | Date;\n refundedAt?: string | Date;\n status: PaymentStatus;\n cardBrand?: string;\n cardLast4?: string;\n metadata?: Record<string, any>;\n demo: boolean;\n createdAt: string | Date;\n updatedAt: string | Date;\n deletedAt?: string | Date;\n}","import { StandardCategory } from \"../standardCategory\";\n\n/**\n * Entidad Product\n * Representa un producto vendible en la tienda. Es la entidad base que puede tener múltiples variantes.\n */\n\nexport interface Product {\n id: string;\n accountId: string;\n code: string;\n brandId?: string | null;\n supplierId?: string | null;\n productType: ProductType;\n sku?: string | null;\n barcode?: string | null;\n name: string; // e.g., \"Zapatos\", \"Pantalones\", \"Camisas\"\n slug: string;\n description?: string | null;\n isFeatured: boolean;\n\n // Inventory & Shipping\n allowBackorder: boolean; // Permite realizar pedidos aunque no haya stock disponible. Se aplica a las variantes si no está definido allí\n weight?: number | null;\n weightUnit?: string | null; // e.g., \"kg\"\n height?: number | null;\n width?: number | null;\n depth?: number | null; \n dimensionUnit?: string | null; // e.g., \"cm\"\n shippingLeadTime?: string | null; // e.g., \"1-3 days\"\n\n status: ProductStatus; // ACTIVE, INACTIVE\n \n createdAt: Date;\n updatedAt: Date;\n deletedAt?: Date | null;\n\n}\n\nexport enum ProductStatus {\n ACTIVE = 'ACTIVE', // Available for sale\n INACTIVE = 'INACTIVE', // Not visible/purchasable\n ARCHIVED = 'ARCHIVED', // Not visible, kept for records\n DRAFT = 'DRAFT', // Incomplete product setup\n}\n\nexport enum ProductType {\n SIMPLE = 'SIMPLE', // Product without variants (may have a default hidden variant)\n VARIABLE = 'VARIABLE', // Product with distinct variants (color, size, etc.)\n BUNDLE = 'BUNDLE', // A package of other products/variants\n GIFT_CARD = 'GIFT_CARD', // Virtual or physical gift card\n}\n\n\nexport interface ProductVariant {\n id: string;\n accountId: string;\n productId: string;\n\n sku?: string | null;\n barcode?: string | null; // EAN, UPC, etc.\n\n // Pricing\n currency: string; // ISO 4217 currency code\n price: number;\n compareAtPrice?: number;\n allowBackorder?: boolean;\n \n // Inventory & Shipping\n stock: number;\n weight?: number | null;\n weightUnit?: string | null;\n height?: number | null;\n width?: number | null;\n depth?: number | null;\n dimensionUnit?: string | null;\n shippingLeadTime?: string | null; // e.g., \"1-3 days\"\n \n order: number;\n\n createdAt: Date;\n updatedAt: Date;\n deletedAt?: Date;\n\n}","/**\n * Entidad ProductAttribute\n * Define los atributos disponibles que se pueden asignar a las variantes de producto (ej. Color, Talla).\n * Especifica el nombre y tipo del atributo para ayudar en la representación y filtrado.\n */\n\nexport interface ProductAttribute {\n id: string;\n accountId: string;\n name: string; // e.g., \"Color de zapatos\", \"Talle de pantalones\", \"Material\"\n alias: string; // e.g., \"Color\", \"Talla\", \"Material\"\n slug: string;\n type: ProductAttributeType; // Helps frontend render appropriate controls\n isRequired: boolean; // isRequired for product variant\n suffix: string; // suffix for number type\n status: ProductAttributeStatus; // ACTIVE, INACTIVE\n createdAt: Date;\n updatedAt: Date;\n deletedAt?: Date | null;\n\n options: ProductAttributeOption[];\n displayOrder: number; // order to display the attribute in the frontend\n}\n\nexport enum ProductAttributeStatus {\n ACTIVE = 'ACTIVE',\n INACTIVE = 'INACTIVE',\n}\n\n\nexport enum ProductAttributeType {\n TEXT = 'TEXT', // text input\n NUMBER = 'NUMBER', // number input\n COLOR = 'COLOR', // Special type for color swatches\n SELECT = 'SELECT', // Dropdown list\n BOOLEAN = 'BOOLEAN', // checkbox input\n}\n\n/**\n * Una opción específica para un atributo (ej. \"Talle 42\" para el atributo \"Talle\").\n */\nexport interface ProductAttributeOption {\n id: string;\n accountId: string;\n productAttributeId: string;\n value: string;\n imageId?: string | null;\n order: number;\n createdAt: Date;\n updatedAt: Date;\n deletedAt?: Date | null;\n\n count: number; // number of options\n}","import { StandardCategory } from \"../standardCategory\";\n\n/**\n * Entidad ProductCategory\n * Define las categorías de productos.\n * Soporta una estructura jerárquica (categorías y subcategorías) mediante el campo parentId.\n * Cada categoría debe estar asociada a una categoría estándar del sistema.\n */\n\nexport interface ProductCategory {\n id: string;\n accountId: string;\n parentId?: string;\n standardCategoryId: string;\n name: string; // e.g., \"Zapatos\", \"Pantalones\", \"Camisas\"\n slug: string;\n description?: string;\n imageId?: string | null;\n order: number;\n isFeatured: boolean;\n status: ProductCategoryStatus; // ACTIVE, INACTIVE\n createdAt: Date;\n updatedAt: Date;\n deletedAt?: Date | null;\n\n children: ProductCategory[];\n parent: ProductCategory | null;\n standardCategory: StandardCategory;\n}\n\n\nexport enum ProductCategoryStatus {\n ACTIVE = 'ACTIVE',\n INACTIVE = 'INACTIVE',\n}\n\n","/**\n * Entidad StandardCategory\n * Define las categorías estándar de productos.\n * Estas categorías estan pensadas para unificar o agrupar productos de diferentes cuentas.\n */\n\nexport interface StandardCategory {\n id: string;\n parentId?: string;\n name: string; // e.g., \"Zapatos\", \"Pantalones\", \"Camisas\"\n slug: string;\n description?: string;\n imageId?: string | null;\n order: number;\n status: StandardCategoryStatus; // ACTIVE, INACTIVE\n metadata?: {\n icon?: string;\n displayInMenu?: boolean;\n seoTitle?: string;\n seoDescription?: string;\n attributes?: string[];\n };\n createdAt: Date;\n updatedAt: Date;\n deletedAt?: Date | null;\n\n children: StandardCategory[];\n parent: StandardCategory | null;\n}\n\nexport enum StandardCategoryStatus {\n ACTIVE = 'ACTIVE',\n INACTIVE = 'INACTIVE'\n}\n\n","/**\n * Entidad StoreBanner\n * Banners para la portada de la web de la tienda\n */\n\nimport { Media } from \"../common\";\n\nexport interface StoreBanner {\n id: string;\n accountId: string;\n title: string;\n desktopMediaId: string;\n mobileMediaId?: string | null;\n linkUrl?: string | null;\n altText?: string | null;\n displayOrder: number;\n startDate?: Date | null;\n endDate?: Date | null;\n status: StoreBannerStatus;\n createdAt: Date;\n updatedAt: Date;\n deletedAt?: Date | null;\n\n // Relationships\n desktopMedia?: Partial<Media> | null;\n mobileMedia?: Partial<Media> | null;\n}\n\nexport enum StoreBannerStatus {\n ACTIVE = \"ACTIVE\",\n INACTIVE = \"INACTIVE\"\n}\n\n ","/**\n * Entidad StorePage\n * Páginas de la web de la tienda\n */\n\nexport interface StorePage {\n id: string;\n accountId: string;\n type: StorePageType;\n title: string;\n slug: string;\n content?: string | null;\n seoTitle?: string | null;\n seoDescription?: string | null;\n \n status: StorePageStatus;\n canDelete: boolean;\n createdAt: Date;\n updatedAt: Date;\n deletedAt?: Date | null;\n}\n\nexport enum StorePageStatus {\n PUBLISHED = 'PUBLISHED',\n DRAFT = 'DRAFT',\n ARCHIVED = 'ARCHIVED',\n}\n\nexport enum StorePageType {\n ABOUT_US = 'ABOUT_US',\n CONTACT = 'CONTACT',\n FAQ = 'FAQ',\n TERMS_AND_CONDITIONS = 'TERMS_AND_CONDITIONS',\n PRIVACY_POLICY = 'PRIVACY_POLICY',\n RETURN_POLICY = 'RETURN_POLICY',\n SHIPPING_POLICY = 'SHIPPING_POLICY',\n BRANCHES = 'BRANCHES',\n JOBS = 'JOBS',\n OTHER = 'OTHER',\n}\n\n\n ","export enum PubSubTopics {\n ORDER_PLACED = 'order-placed',\n NOTIFICATION_CREATED = 'notification-created',\n }"],"mappings":"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","names":["MediaType","Currency","AccountStatus","AccountBranchStatus","AccountBranchScheduleStatus","AccountBranchScheduleDay","AccountDeliveryOptionPriceLogic","AccountDeliveryOptionStatus","AccountDeliveryOptionZoneStatus","AccountDomainStatus","AccountIntegrationStatus","AccountIntegrationConnectionStatus","AccountIntegrationEnvironment","CartStatus","CartSource","CartDeliveryType","CartItemErrorCode","CustomerStatus","IntegrationCategory","IntegrationStatus","OrderStatus","OrderPaymentStatus","OrderFulfillmentStatus","OrderSource","OrderDeliveryType","PaymentStatus","PaymentMethodType","ProductStatus","ProductType","ProductAttributeStatus","ProductAttributeType","ProductCategoryStatus","StandardCategoryStatus","StoreBannerStatus","StorePageStatus","StorePageType","PubSubTopics"]}