package pricing type MMS43PricingService struct{} func NewMMS43PricingService() (*MMS43PricingService, error) { return &MMS43PricingService{}, nil } func (s *MMS43PricingService) Prices(params PricingParams) (map[string]Price, error) { // Calculate passenger price var passengerAmount float64 // First 2 trips are free (1 return trip or 2 outward trips) freeTripsRemaining := 2 - params.Beneficiary.History if freeTripsRemaining > 0 { // Trip is free passengerAmount = 0.0 } else { // Price is 0.15€/km for passenger distance passengerAmount = 0.15 * float64(params.SharedMobility.PassengerDistance) } // Driver indemnification is always 0.30€/km for driver distance driverAmount := 0.30 * float64(params.SharedMobility.DriverDistance) return map[string]Price{ "passenger": { Amount: passengerAmount, Currency: "EUR", }, "driver": { Amount: driverAmount, Currency: "EUR", }, }, nil }