/// <summary>
        /// Filter offers by seller, selling asset, or buying asset.
        /// https://www.stellar.org/developers/horizon/reference/endpoints/offers.html
        /// </summary>
        /// <param name="optionsAction">The filter options</param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException"></exception>
        public OffersRequestBuilder Offers(Action <OffersRequestOptions> optionsAction)
        {
            if (optionsAction == null)
            {
                throw new ArgumentNullException(nameof(optionsAction));
            }

            var options = new OffersRequestOptions();

            optionsAction.Invoke(options);
            return(Offers(options));
        }
        /// <summary>
        /// Filter offers by seller, selling asset, or buying asset.
        /// https://www.stellar.org/developers/horizon/reference/endpoints/offers.html
        /// </summary>
        /// <param name="options">The filter options</param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException"></exception>
        public OffersRequestBuilder Offers(OffersRequestOptions options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            if (options.Seller != null)
            {
                UriBuilder.SetQueryParam("seller", options.Seller);
            }

            if (options.Selling != null)
            {
                AddAssetFilterQueryParam("selling", options.Selling);
            }

            if (options.Buying != null)
            {
                AddAssetFilterQueryParam("buying", options.Buying);
            }

            return(this);
        }