Structured SDK error used throughout the core modules.
@type kind() :: :not_found | :invalid_argument | :already_exists | :not_initialized | :unsupported | :conflict | :io | :internal
@type t() :: %XmtpElixirSdk.Error{details: map(), kind: kind(), message: String.t()}
@spec already_exists(String.t(), map()) :: t()
@spec conflict(String.t(), map()) :: t()
@spec internal(String.t(), map()) :: t()
@spec invalid_argument(String.t(), map()) :: t()
@spec io(String.t(), map()) :: t()
@spec new(kind(), String.t(), map()) :: t()
@spec not_found(String.t(), map()) :: t()
@spec not_initialized(String.t(), map()) :: t()
@spec unsupported(String.t(), map()) :: t()