import { CreationOptional, DataTypes, InferAttributes, InferCreationAttributes } from 'sequelize'; import { TenantModel } from '../tenant-model'; import type { DiscountAmount } from './types'; export declare const nextInvoiceItemId: (size?: number) => string; export type InvoiceLineItem = { id: string; }; export declare class InvoiceItem extends TenantModel, InferCreationAttributes> { id: CreationOptional; livemode: boolean; instance_did?: string; amount: string; quantity: number; description: string; period?: { start: number; end: number; }; currency_id: string; customer_id: string; price_id: string; invoice_id: string; subscription_id?: string; subscription_item_id?: string; test_clock_id?: string; tax_rate_id?: string; discountable: boolean; discount_amounts: DiscountAmount[]; discounts: string[]; proration: boolean; proration_details: { credited_items?: { invoice_id: string; invoice_line_items: string[]; }; }; metadata: Record; created_at: CreationOptional; updated_at: CreationOptional; static readonly GENESIS_ATTRIBUTES: { id: { type: DataTypes.StringDataType; primaryKey: boolean; allowNull: boolean; defaultValue: (size?: number) => string; }; livemode: { type: DataTypes.AbstractDataTypeConstructor; allowNull: boolean; }; amount: { type: DataTypes.StringDataType; allowNull: boolean; }; quantity: { type: DataTypes.IntegerDataTypeConstructor; allowNull: boolean; }; description: { type: DataTypes.StringDataType; allowNull: boolean; }; period: { type: DataTypes.AbstractDataTypeConstructor; allowNull: boolean; }; customer_id: { type: DataTypes.StringDataType; allowNull: boolean; }; currency_id: { type: DataTypes.StringDataType; allowNull: boolean; }; price_id: { type: DataTypes.StringDataType; allowNull: boolean; }; invoice_id: { type: DataTypes.StringDataType; allowNull: boolean; }; subscription_id: { type: DataTypes.StringDataType; allowNull: boolean; }; subscription_item_id: { type: DataTypes.StringDataType; allowNull: boolean; }; tax_rate_id: { type: DataTypes.StringDataType; allowNull: boolean; }; discountable: { type: DataTypes.AbstractDataTypeConstructor; allowNull: boolean; }; discount_amounts: { type: DataTypes.AbstractDataTypeConstructor; defaultValue: never[]; }; discounts: { type: DataTypes.AbstractDataTypeConstructor; defaultValue: never[]; }; proration: { type: DataTypes.AbstractDataTypeConstructor; defaultValue: boolean; }; proration_details: { type: DataTypes.AbstractDataTypeConstructor; allowNull: boolean; }; metadata: { type: DataTypes.AbstractDataTypeConstructor; defaultValue: {}; }; created_at: { type: DataTypes.DateDataTypeConstructor; defaultValue: DataTypes.AbstractDataTypeConstructor; allowNull: boolean; }; updated_at: { type: DataTypes.DateDataTypeConstructor; defaultValue: DataTypes.AbstractDataTypeConstructor; allowNull: boolean; }; }; static initialize(sequelize: any): void; static associate(models: any): void; static isPriceUsed(priceId: string): Promise; } export type TInvoiceItem = InferAttributes;