import { CreationOptional, DataTypes, InferAttributes, InferCreationAttributes } from 'sequelize'; import type { LiteralUnion } from 'type-fest'; import { TenantModel } from '../tenant-model'; export declare const nextProductId: (size?: number) => string; export type ProductFeature = { name: string; }; export declare class Product extends TenantModel, InferCreationAttributes> { id: CreationOptional; active: boolean; livemode: boolean; instance_did?: string; locked: CreationOptional; type: LiteralUnion<'service' | 'good' | 'credit', string>; name: string; description: string; images: any[]; features: ProductFeature[]; unit_label?: string; default_price_id?: string; metadata?: Record; statement_descriptor?: string; nft_factory?: string; tax_code?: string; cross_sell?: { cross_sells_to_id: string; }; vendor_config?: Array<{ vendor_id: string; vendor_key: string; vendor_type: string; name?: string; description?: string; commission_rate?: number; commission_type?: 'percentage' | 'fixed_amount'; amount?: string; commissionAmount?: string; custom_params?: Record; }>; created_at: CreationOptional; created_via: LiteralUnion<'api' | 'dashboard' | 'portal' | 'donation', string>; updated_at: CreationOptional; static readonly GENESIS_ATTRIBUTES: { id: { type: DataTypes.StringDataType; primaryKey: boolean; allowNull: boolean; defaultValue: (size?: number) => string; }; active: { type: DataTypes.AbstractDataTypeConstructor; allowNull: boolean; }; livemode: { type: DataTypes.AbstractDataTypeConstructor; allowNull: boolean; }; locked: { type: DataTypes.AbstractDataTypeConstructor; defaultValue: boolean; }; type: { type: DataTypes.EnumDataType<"credit" | "service" | "good">; }; name: { type: DataTypes.StringDataType; }; description: { type: DataTypes.StringDataType; }; images: { type: DataTypes.AbstractDataTypeConstructor; defaultValue: never[]; }; features: { type: DataTypes.AbstractDataTypeConstructor; defaultValue: never[]; }; unit_label: { type: DataTypes.StringDataType; allowNull: boolean; }; default_price_id: { type: DataTypes.StringDataType; allowNull: boolean; }; metadata: { type: DataTypes.AbstractDataTypeConstructor; allowNull: boolean; }; statement_descriptor: { type: DataTypes.StringDataType; allowNull: boolean; }; nft_factory: { type: DataTypes.StringDataType; allowNull: boolean; }; tax_code: { type: DataTypes.StringDataType; allowNull: boolean; }; created_at: { type: DataTypes.DateDataTypeConstructor; defaultValue: DataTypes.AbstractDataTypeConstructor; allowNull: boolean; }; created_via: { type: DataTypes.EnumDataType<"api" | "dashboard" | "portal" | "donation">; }; updated_at: { type: DataTypes.DateDataTypeConstructor; defaultValue: DataTypes.AbstractDataTypeConstructor; allowNull: boolean; }; }; static initialize(sequelize: any): void; static associate(models: any): void; static expand(id: string): Promise | null>; static getSummary(livemode?: boolean, field?: string): Promise; } export type TProduct = InferAttributes;