class Price {
  Price({
    required this.value,
    required this.currency,
  });

  final double value;
  final Currency currency;
}

enum CurrencyType {
  eur,
  usd,
  unkown,
}

class Currency {
  Currency({
    required this.type,
    required this.shortcode,
    this.fontcode,
    this.symbol,
  });

  factory Currency.fromType(final CurrencyType type) {
    switch (type) {
      case CurrencyType.eur:
        return Currency(
          type: type,
          shortcode: 'EUR',
          fontcode: 'euro',
          symbol: '€',
        );
      case CurrencyType.usd:
        return Currency(
          type: type,
          shortcode: 'USD',
          fontcode: 'attach_money',
          symbol: '\$',
        );
      default:
        return Currency(
          type: type,
          shortcode: '?',
          fontcode: 'payments',
          symbol: '?',
        );
    }
  }

  final CurrencyType type;
  final String shortcode;
  final String? fontcode;
  final String? symbol;
}

class AdditionalPricing {
  AdditionalPricing({
    required this.perVolumeGb,
    required this.perPublicIpv4,
  });
  final Price perVolumeGb;
  final Price perPublicIpv4;
}
