@type t() :: struct()
@spec process(t(), PlugImageProcessing.Config.t()) :: {:ok, PlugImageProcessing.image()} | error()
@spec valid?(t()) :: boolean() | error()