import { CreationOptional, DataTypes, InferAttributes, InferCreationAttributes } from 'sequelize'; import type { LiteralUnion } from 'type-fest'; import { TenantModel } from '../tenant-model'; import type { TPaymentCurrency } from './payment-currency'; export declare const nextMeterId: (size?: number) => string; export type TMeterExpanded = TMeter & { paymentCurrency: TPaymentCurrency; }; export declare class Meter extends TenantModel, InferCreationAttributes> { id: CreationOptional; object: CreationOptional; name: string; event_name: string; aggregation_method: LiteralUnion<'sum' | 'count' | 'last', string>; status: LiteralUnion<'active' | 'inactive', string>; unit: string; description?: string; component_did?: string; livemode: boolean; instance_did?: string; metadata?: Record; currency_id?: string; created_by?: string; updated_by?: string; created_via: LiteralUnion<'api' | 'dashboard' | 'portal', string>; created_at: CreationOptional; updated_at: CreationOptional; static readonly GENESIS_ATTRIBUTES: { id: { type: DataTypes.StringDataType; primaryKey: boolean; allowNull: boolean; defaultValue: (size?: number) => string; }; object: { type: DataTypes.StringDataType; defaultValue: string; allowNull: boolean; }; name: { type: DataTypes.StringDataType; allowNull: boolean; }; event_name: { type: DataTypes.StringDataType; allowNull: boolean; }; aggregation_method: { type: DataTypes.EnumDataType<"count" | "sum" | "last">; defaultValue: string; allowNull: boolean; }; status: { type: DataTypes.EnumDataType<"active" | "inactive">; defaultValue: string; allowNull: boolean; }; unit: { type: DataTypes.StringDataType; allowNull: boolean; }; description: { type: DataTypes.TextDataTypeConstructor; allowNull: boolean; }; component_did: { type: DataTypes.StringDataType; allowNull: boolean; }; currency_id: { type: DataTypes.StringDataType; allowNull: boolean; }; livemode: { type: DataTypes.AbstractDataTypeConstructor; allowNull: boolean; }; metadata: { type: DataTypes.AbstractDataTypeConstructor; allowNull: boolean; }; created_by: { type: DataTypes.StringDataType; allowNull: boolean; }; updated_by: { type: DataTypes.StringDataType; allowNull: boolean; }; created_via: { type: DataTypes.EnumDataType<"api" | "dashboard" | "portal">; allowNull: boolean; }; 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 getMeterByEventName(eventName: string): Promise; static getMetricsForMeter(meterId: string, customerId?: string): Promise<{ total_usage: number; }>; } export type TMeter = InferAttributes;