lib/protocols/dbus_protocol.ex

defprotocol ExSni.DbusProtocol do
  @type property_value() :: String.t() | binary() | list() | boolean() | number() | tuple()
  @spec get_property(t(), property :: String.t()) ::
          {:ok, property_value()}
          | {:error, String.t(), String.t()}
  def get_property(struct, property)

  @spec get_property(t(), property :: String.t(), options :: any()) ::
          {:ok, property_value()}
          | {:error, String.t(), String.t()}
  def get_property(struct, property, options)

  @spec get_properties(t(), properties :: list(String.t())) :: list(property_value())
  def get_properties(struct, properties)

  @spec get_properties(t(), properties :: list(String.t()), options :: any()) :: list(property_value())
  def get_properties(struct, properties, options)
end