Represents HTTP request payload for the BingX API.
@type body() :: nil | binary()
@type headers() :: [{binary(), binary()}]
@type method() :: :get | :put | :post | :delete
@type options() :: [{:sign, nil | binary()}]
@type params() :: [{binary(), term()}]
@type path() :: binary()
@type t() :: %Bingex.HTTP.Request{ body: nil | binary(), headers: [{binary(), binary()}], method: method(), url: binary() }
@type url() :: binary()
@spec auth_headers(headers(), api_key :: binary()) :: headers()
@spec build_url(path(), params(), options()) :: url :: binary()
@spec new(method(), url(), headers(), body()) :: t()
@spec set_recv_window(params(), value :: non_neg_integer()) :: params()
@spec set_signature(params(), secret_key :: binary()) :: params()
@spec set_timestamp(params()) :: params()