import { Model, InferAttributes, InferCreationAttributes, CreationOptional, NonAttribute, ModelStatic } from "vr-migrations"; import type { Product } from "./product.models"; export type PricingType = "HIRE_PURCHASE" | "FULL_PAYMENT"; export type InstallmentFrequency = "DAILY" | "WEEKLY" | "MONTHLY"; export declare const PRICING_TYPE: readonly ["HIRE_PURCHASE", "FULL_PAYMENT"]; export declare const INSTALLMENTFREQUENCY: readonly ["DAILY", "WEEKLY", "MONTHLY"]; export interface PricingAttributes { id: string; productId: string; name: string; type: PricingType; unitPrice: number; downPayment: number; installmentAmount: number | null; installmentFrequency: InstallmentFrequency | null; installmentCount: number | null; gracePeriodDays: number; autoLockOnMiss: boolean; minOrderQuantity: number; maxOrderQuantity: number; isActive: boolean; createdAt: Date; updatedAt: Date; product?: Product; } export interface PricingCreationAttributes extends Omit { id?: string; isActive?: boolean; downPayment?: number; gracePeriodDays?: number; autoLockOnMiss?: boolean; minOrderQuantity?: number; maxOrderQuantity?: number; } export declare class Pricing extends Model, InferCreationAttributes> implements PricingAttributes { id: CreationOptional; productId: string; name: string; type: PricingType; unitPrice: number; downPayment: CreationOptional; installmentAmount: CreationOptional; installmentFrequency: CreationOptional; installmentCount: CreationOptional; gracePeriodDays: CreationOptional; autoLockOnMiss: CreationOptional; minOrderQuantity: CreationOptional; maxOrderQuantity: CreationOptional; isActive: CreationOptional; readonly createdAt: CreationOptional; readonly updatedAt: CreationOptional; product?: NonAttribute; static initialize(sequelize: any): void; static associate(models: Record>): void; activate(): Promise; deactivate(): Promise; isInstallmentPlan(): boolean; getInstallmentCount(): number | null; calculateNextDueDate(fromDate?: Date): Date | null; isValidOrderQuantity(quantity: number): boolean; } export type PricingModel = typeof Pricing;