UNPKG

@atomiqlabs/sdk-lib

Version:

Basic SDK functionality library for atomiq

47 lines (39 loc) 1.62 kB
import {IPriceProvider} from "./abstract/IPriceProvider"; import {ICachedSwapPrice} from "./abstract/ICachedSwapPrice"; import {ChainIds, MultiChain} from "../swaps/Swapper"; /** * Swap price API using single price source */ export class SingleSwapPrice<T extends MultiChain> extends ICachedSwapPrice<T> { priceProvider: IPriceProvider<T>; constructor(maxAllowedFeeDiffPPM: bigint, priceProvider: IPriceProvider<T>, cacheTimeout?: number) { super(maxAllowedFeeDiffPPM, cacheTimeout); this.priceProvider = priceProvider; } /** * Fetch price in uSats (micro sats) for a given token against BTC * * @param chainIdentifier * @param token * @param abortSignal * @protected * @returns token price in uSats (micro sats) */ protected fetchPrice<C extends ChainIds<T>>(chainIdentifier: C, token: string, abortSignal?: AbortSignal): Promise<bigint> { return this.priceProvider.getPrice(chainIdentifier, token, abortSignal); } /** * Returns the decimal places of the specified token, or -1 if token should be ignored, returns null if * token is not found * * @param chainIdentifier * @param token * @protected */ protected getDecimals<C extends ChainIds<T>>(chainIdentifier: C, token: string): number | null { return this.priceProvider.getDecimals(chainIdentifier, token.toString()); } protected fetchUsdPrice(abortSignal?: AbortSignal): Promise<number> { return this.priceProvider.getUsdPrice(abortSignal); } }