npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@tetherto/wdk-pricing-bitfinex-http

v1.0.0-beta.3

Published

Bitfinex HTTP client for @tetherto/wdk-pricing-provider

Readme

@tetherto/wdk-pricing-bitfinex-http

Note: This package is in beta. Please test in a dev setup first.

HTTP client for prices from Bitfinex, it uses Bitfinex Public HTTP API to obtain the current price & historical data for given ticker.

It works as a PricingClient for @tetherto/wdk-pricing-provider.

🔍 About WDK

This module is part of the WDK (Wallet Development Kit) project. Learn more at https://docs.wallet.tether.io.

✨ Features

  • Compatible with @tetherto/wdk-pricing-provider
  • Fetch current price for given ticker (single or batch) via the Bitfinex FX endpoint
  • Converts to fiat currencies Bitfinex does not quote directly (e.g. BRL, ARS, MXN) by pivoting through USD using its fiat FX rates
  • Fetch historical prices given ticker
  • Downscales long history to max 100 points

⬇️ Installation

npm install @tetherto/wdk-pricing-bitfinex-http

🚀 Quick Start

import { BitfinexPricingClient } from "@tetherto/wdk-pricing-bitfinex-http";

// Create the client
const client = new BitfinexPricingClient();

// Get latest price
const current = await client.getCurrentPrice("BTC", "USD");

// Get historical prices
const history = await client.getHistoricalPrice("BTC", "USD", {
  start: 1709906400000, // optional
  end: 1709913600000, // optional
});

📚 API Reference

BitfinexPricingClient

Simple HTTP pricing client for Bitfinex.

Constructor

new BitfinexPricingClient(options?)

Parameters:

  • options (optional): future use

Methods

| Method | Description | Returns | | ------------------------------------ | --------------------------------- | ---------------------------------------- | | getCurrentPrice(base, quote) | Get latest price | Promise<number \| null> | | getMultiCurrentPrices(pairs) | Get latest prices in a batch | Promise<Array<number \| null>> | | getMultiPriceData(pairs) | Get last price + 24h change batch | Promise<Array<PriceData \| null>> | | getHistoricalPrice(from, to, opts?)| Get price history | Promise<Array<any>> |

getCurrentPrice(base, quote)

Uses the Bitfinex /calc/fx/batch endpoint. If Bitfinex cannot quote the pair directly (typically a fiat currency it does not list), it falls back to a two-leg conversion through USD: base → USD → quote. Returns null if the pair cannot be resolved even through the pivot.

const price = await client.getCurrentPrice("BTC", "USD");
const brl = await client.getCurrentPrice("BTC", "BRL"); // resolved via USD pivot

getMultiCurrentPrices(pairs)

Resolves many pairs in a single batch request, applying the same USD-pivot fallback per pair. Results are returned in the same order as the input; a pair that cannot be resolved even through the pivot is null.

const prices = await client.getMultiCurrentPrices([
  { from: "BTC", to: "USD" },
  { from: "ETH", to: "BRL" },
]);

getMultiPriceData(pairs)

Returns the last price plus 24h absolute and relative change for each pair, from the Bitfinex /tickers endpoint. Unlike the methods above, it does not use the USD pivot, so a currency Bitfinex does not quote directly resolves to null. Results are returned in the same order as the input.

const data = await client.getMultiPriceData([{ from: "BTC", to: "USD" }]);
// [{ lastPrice, dailyChange, dailyChangeRelative }]

getHistoricalPrice(from, to, opts?)

If the list is longer than 100 points, it is downscaled by 2x steps until <= 100.

const series = await client.getHistoricalPrice("BTC", "USD");

⚠️ Limitations

  • Currency codes are Bitfinex-specific. You must pass the codes Bitfinex uses, not the common ISO/ticker symbol. For example, Tether is UST (not USDT), and some fiats are only available as tokenized assets such as CNHT or MXNT. Unknown codes resolve to null. The full list is at https://api-pub.bitfinex.com/v2/conf/pub:list:currency.
  • The USD pivot only applies to current prices. getCurrentPrice and getMultiCurrentPrices fall back to a from → USD → to conversion for fiat Bitfinex does not quote directly. getHistoricalPrice does not — it returns an empty array for such pairs (Bitfinex has no historical FX series for them).
  • getMultiPriceData does not support pivot currencies. It sources last price and daily change from /tickers, which only exists for natively quoted pairs. For a currency that requires the USD pivot (e.g. BRL, ARS) it returns null for that entry.

🛠️ Development

npm install
npm run lint
npm test

📜 License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

🆘 Support

For support, please open an issue on the GitHub repository.