export interface PaygUsageRecord {
    id: number;
    feature_id: number;
    usage: number;
    total_cost: number;
    feature: {
        business_id: string;
        name_en: string;
        name_ar: string;
        category: string;
        price_per_unit: number;
        price_per_feature: number;
    } | null;
}

export interface UsageRecordRaw {
    feature_id: number;
    usage: number;
    total_cost: number;
    unit_price: number;
    feature: {
        business_id: string;
        name_en: string;
        name_ar: string;
        category: string;
        price_per_unit: number;
        price_per_feature: number;
    } | null;
}

export interface UsageBillingLineItemRaw {
    feature_business_id: string;
    name_en: string;
    name_ar: string;
    quantity: number;
    unit_price: number;
    price_per_unit: number;
    price_per_feature: number;
    is_monthly: boolean;
    total: number;
}

export interface UsageBillingCategoryRaw {
    category: string;
    total: number;
    items: UsageBillingLineItemRaw[];
}

export interface UsageBillingLineItem {
    name: string;
    quantity: number;
    unit_price: number | 'N/A';
    unit_suffix: 'monthly' | null;
    total: number;
}

export interface UsageBillingCategory {
    key: string;
    label: string;
    description: string;
    badge: string;
    total: number;
    items: UsageBillingLineItem[];
}

export interface UsageBillingSummaryRaw {
    current_balance: number;
    period_start: string;
    period_end: string;
    period_to_date: string;
    next_billing_date: string | null;
    is_threshold_warning: boolean;
    threshold_remaining: number;
    projected_month_end: number;
    last_payment_amount: number;
    last_payment_date: string;
    threshold_limit: number;
}

export interface UsageBillingSummary extends UsageBillingSummaryRaw {
    billing_period_label: string;
    next_billing_label: string;
    last_payment_label: string;
}

export interface UsageBillingThreshold {
    limit: number;
    current: number;
    percentage: number;
    alert_at_80: number;
    alert_at_95: number;
}

export interface UsageBillingTotals {
    subtotal: number;
    subtotalWithoutVat: number;
    vat_rate: number;
    vat_amount: number;
    total: number;
}

export interface UsageBillingDashboard {
    is_payg: boolean;
    is_charging?: boolean;
    summary?: UsageBillingSummaryRaw;
    threshold?: UsageBillingThreshold;
    account?: {
        company_name: string;
    };
    categories?: UsageBillingCategoryRaw[];
    totals?: UsageBillingTotals;
}
