from core.models.invoice import PaymentMethod
from dataclasses import dataclass
from datetime import datetime


@dataclass
class Invoice:
    billing_code: str
    status: str
    expires_at: datetime
    payment_methods: tuple[PaymentMethod]

    def is_new(self):
        return self.status == 'new'

    def is_rejected(self):
        return self.status == 'invalid' or self.status == 'expired'

    def is_processing(self):
        return self.status == 'processing'

    def is_settled(self):
        return self.status == 'settled'