defmodule Fretex do require Logger alias Fretex.Carriers @spec calculate(Package.t()) :: [{:ok, Rate.t()} | {:error, binary()}] def calculate(package) do Enum.flat_map(package.carriers, fn carrier -> Logger.info("Calculating freigth for #{carrier.__struct__} with #{inspect(package, pretty: true)}") Carriers.calculate(carrier, package) end) end @spec list_services(Fretex.Carriers.t()) :: {:ok, [CarrierService.t()]} | {:error, any()} def list_services(carrier) do Carriers.list_services(carrier) end end