import { Model, InferAttributes, InferCreationAttributes, CreationOptional, NonAttribute, ModelStatic } from "vr-migrations"; import type { Pricing } from "./pricing.models"; import type { Device } from "./device.models"; export interface ProductAttributes { id: string; name: string; description: string | null; stock: number; isActive: boolean; createdAt: Date; updatedAt: Date; imageUrl: string | null; pricings?: Pricing[]; devices?: Device[]; } export interface ProductCreationAttributes extends Omit { id?: string; description?: string | null; stock?: number; isActive?: boolean; } export declare class Product extends Model, InferCreationAttributes> implements ProductAttributes { id: CreationOptional; name: string; description: CreationOptional; stock: CreationOptional; isActive: CreationOptional; imageUrl: CreationOptional; readonly createdAt: CreationOptional; readonly updatedAt: CreationOptional; pricings?: NonAttribute; devices?: NonAttribute; static initialize(sequelize: any): void; static associate(models: Record>): void; activate(): Promise; deactivate(): Promise; incrementStock(amount?: number): Promise; decrementStock(amount?: number): Promise; isInStock(): boolean; getActivePricings(): Pricing[]; static findAvailableProducts(): Promise; } export type ProductModel = typeof Product;