@atomiqlabs/sdk
Version:
atomiq labs SDK for cross-chain swaps between smart chains and bitcoin
129 lines (128 loc) • 6.01 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SwapPriceWithChain = void 0;
/**
* Chain-specific wrapper for swap pricing
*
* @category Pricing
*/
class SwapPriceWithChain {
constructor(swapPrice, chainIdentifier) {
this.swapPrice = swapPrice;
this.chainIdentifier = chainIdentifier;
this.maxAllowedFeeDifferencePPM = swapPrice.maxAllowedFeeDifferencePPM;
}
/**
* Checks whether the swap amounts are valid given the current market rate for a given pair
*
* @param amountSats Amount of sats (BTC) to be received from the swap
* @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
* @param feePPM PPM fee rate as reported by the intermediary
* @param paidToken Amount of token to be paid to the swap
* @param tokenAddress Token address to be paid
* @param abortSignal Abort signal
* @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
*/
async isValidAmountSend(amountSats, satsBaseFee, feePPM, paidToken, tokenAddress, abortSignal, preFetchedPrice) {
return this.swapPrice.isValidAmountSend(this.chainIdentifier, amountSats, satsBaseFee, feePPM, paidToken, tokenAddress, abortSignal, preFetchedPrice);
}
/**
* Checks whether the swap amounts are valid given the current market rate for a given pair
*
* @param amountSats Amount of sats (BTC) to be paid to the swap
* @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
* @param feePPM PPM fee rate as reported by the intermediary
* @param receiveToken Amount of token to be received from the swap
* @param tokenAddress Token address to be received
* @param abortSignal Abort signal
* @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
*/
async isValidAmountReceive(amountSats, satsBaseFee, feePPM, receiveToken, tokenAddress, abortSignal, preFetchedPrice) {
return this.swapPrice.isValidAmountReceive(this.chainIdentifier, amountSats, satsBaseFee, feePPM, receiveToken, tokenAddress, abortSignal, preFetchedPrice);
}
/**
* Pre-fetches the pricing data for a given token, such that further calls to {@link isValidAmountReceive} or
* {@link isValidAmountSend} are quicker and don't need to wait for the price fetch
*
* @param tokenAddress Token address
* @param abortSignal Abort signal
*/
preFetchPrice(tokenAddress, abortSignal) {
return this.swapPrice.preFetchPrice(this.chainIdentifier, tokenAddress, abortSignal);
}
/**
* Pre-fetches the Bitcoin USD price data, such that further calls to {@link getBtcUsdValue},
* {@link getTokenUsdValue} or {@link getUsdValue} are quicker and don't need to wait for the price fetch
*
* @param abortSignal
*/
preFetchUsdPrice(abortSignal) {
return this.swapPrice.preFetchUsdPrice(abortSignal);
}
/**
* Returns amount of `toToken` that is equivalent to `fromAmount` satoshis
*
* @param fromAmount Amount of satoshis
* @param toToken Token address
* @param abortSignal
* @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
* @throws {Error} when token is not found
*/
async getFromBtcSwapAmount(fromAmount, toToken, abortSignal, preFetchedPrice) {
return this.swapPrice.getFromBtcSwapAmount(this.chainIdentifier, fromAmount, toToken, abortSignal, preFetchedPrice);
}
/**
* Returns amount of satoshis that are equivalent to `fromAmount` of `fromToken`
*
* @param fromAmount Amount of the token
* @param fromToken Token address
* @param abortSignal
* @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
* @throws {Error} when token is not found
*/
async getToBtcSwapAmount(fromAmount, fromToken, abortSignal, preFetchedPrice) {
return this.swapPrice.getToBtcSwapAmount(this.chainIdentifier, fromAmount, fromToken, abortSignal, preFetchedPrice);
}
/**
* Returns whether the token should be ignored and pricing for it not calculated
*
* @param tokenAddress Token address
* @throws {Error} if token is not found
*/
shouldIgnore(tokenAddress) {
return this.swapPrice.shouldIgnore(this.chainIdentifier, tokenAddress);
}
/**
* Returns the USD value of the bitcoin amount
*
* @param btcSats Bitcoin amount in satoshis
* @param abortSignal
* @param preFetchedUsdPrice An optional price pre-fetched with {@link preFetchUsdPrice}
*/
async getBtcUsdValue(btcSats, abortSignal, preFetchedUsdPrice) {
return this.swapPrice.getBtcUsdValue(btcSats, abortSignal, preFetchedUsdPrice);
}
/**
* Returns the USD value of the smart chain token amount
*
* @param tokenAmount Amount of the token in base units
* @param tokenAddress Token address
* @param abortSignal
* @param preFetchedUsdPrice An optional price pre-fetched with {@link preFetchUsdPrice}
*/
async getTokenUsdValue(tokenAmount, tokenAddress, abortSignal, preFetchedUsdPrice) {
return this.swapPrice.getTokenUsdValue(this.chainIdentifier, tokenAmount, tokenAddress, abortSignal, preFetchedUsdPrice);
}
/**
* Returns the USD value of the token amount
*
* @param amount Amount in base units of the token
* @param token Token to fetch the usd price for
* @param abortSignal
* @param preFetchedUsdPrice An optional price pre-fetched with {@link preFetchUsdPrice}
*/
getUsdValue(amount, token, abortSignal, preFetchedUsdPrice) {
return this.swapPrice.getUsdValue(amount, token, abortSignal, preFetchedUsdPrice);
}
}
exports.SwapPriceWithChain = SwapPriceWithChain;