import { ShippingProviderContract } from './shipping_interface.js'
import AramexService from './aramex_service.js'
import DHLService from './dhl_service.js'
import SMSAService from './smsa_service.js'
import FedExService from './fedex_service.js'
import { ShippingCarrier } from '../../../types/enum.js'

export default class ShippingFactory {
  static getProvider(providerName: string): ShippingProviderContract {
    switch (providerName) {
      case ShippingCarrier.Aramex:
        return new AramexService()
      case ShippingCarrier.DHL:
        return new DHLService()
      case ShippingCarrier.SMSA:
        return new SMSAService()
      case ShippingCarrier.FedEx:
        return new FedExService()
      default:
        throw new Error(`Shipping provider '${providerName}' is not supported.`)
    }
  }
}
