UNPKG

@atomiqlabs/sdk

Version:

atomiq labs SDK for cross-chain swaps between smart chains and bitcoin

51 lines (50 loc) 2.2 kB
import { PercentagePPM } from "./PercentagePPM"; import { TokenAmount } from "../TokenAmount"; import { Token } from "../Token"; /** * Fee represented in both, source and destination tokens, as well as providing USD valuation helpers and * fee composition * * @category Pricing */ export type Fee<ChainIdentifier extends string = string, TSrc extends Token<ChainIdentifier> = Token<ChainIdentifier>, TDst extends Token<ChainIdentifier> = Token<ChainIdentifier>> = { /** * Fee value equivalent in source token */ amountInSrcToken: TokenAmount<TSrc, true>; /** * Fee value equivalent in destination token */ amountInDstToken: TokenAmount<TDst, true>; /** * Fetches the current USD value of the fee * * @param abortSignal * @param preFetchedUsdPrice You can supply a pre-fetched usd price to the pricing function * @returns A promise resolving to the current USD value of the token amount */ currentUsdValue: (abortSignal?: AbortSignal, preFetchedUsdPrice?: number) => Promise<number>; /** * Gets USD value of the fee, if the USD value when the swap was created is known (newer swaps) it returns this value, * otherwise fetches the usd value on-demand * * @param abortSignal * @param preFetchedUsdPrice You can supply a pre-fetched usd price to the pricing function * @returns A promise resolving to the current USD value of the fee */ usdValue: (abortSignal?: AbortSignal, preFetchedUsdPrice?: number) => Promise<number>; /** * USD value of the fee when swap was created - only present for newer swaps where the USD value at create * time is known. Left for convenience only, use usdValue() instead, which automatically * recognizes which pricing to use (either past value if available or fetches it on-demand) */ pastUsdValue?: number; /** * Returns the composition of the fee (base fee + percentage fee) if known, the total fee is calculated as: * base_fee + amount * percentage_fee */ composition?: { base: TokenAmount; percentage: PercentagePPM; }; };