@xchainjs/xchain-util
Advanced tools
+12
-0
| # v.x.x.x | ||
| # v.0.2.3 (2021-02-09) | ||
| ### Fix | ||
| - Added strict checks for undefined values at `formatAssetAmountCurrency` and `formatAssetAmount` | ||
| ### Update | ||
| - Add `AssetBCH` | ||
| # v.0.2.2 (2021-01-30) | ||
| ### Fix | ||
| - Clear lib folder on build | ||
@@ -6,0 +18,0 @@ - Fixes linting from redeclaring Litecoin in chain consts twice |
+21
-0
@@ -100,2 +100,9 @@ import BigNumber from 'bignumber.js'; | ||
| /** | ||
| * Base "chain" asset on bitcoin cash main net. | ||
| * | ||
| * Based on definition in Thorchain `common` | ||
| * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24 | ||
| */ | ||
| export declare const AssetBCH: Asset; | ||
| /** | ||
| * Base "chain" asset on litecoin main net. | ||
@@ -137,2 +144,16 @@ * | ||
| /** | ||
| * Base "chain" asset for RUNE on ethereum main net. | ||
| * | ||
| * Based on definition in Thorchain `common` | ||
| * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24 | ||
| */ | ||
| export declare const AssetRuneERC20: Asset; | ||
| /** | ||
| * Base "chain" asset for RUNE on ethereum main net. | ||
| * | ||
| * Based on definition in Thorchain `common` | ||
| * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24 | ||
| */ | ||
| export declare const AssetRuneERC20Testnet: Asset; | ||
| /** | ||
| * Helper to check whether asset is valid | ||
@@ -139,0 +160,0 @@ * |
+38
-3
@@ -303,3 +303,4 @@ import BigNumber from 'bignumber.js'; | ||
| var amount = _a.amount, decimal = _a.decimal, _b = _a.trimZeros, trimZeros$1 = _b === void 0 ? false : _b; | ||
| var formatted = formatBN(amount.amount(), decimal || amount.decimal); | ||
| // strict check for `undefined` value as negate of 0 will return true and passed decimal value will be ignored | ||
| var formatted = formatBN(amount.amount(), decimal === undefined ? amount.decimal : decimal); | ||
| // Note: `trimZeros` wins over `decimal` | ||
@@ -330,2 +331,9 @@ return trimZeros$1 ? trimZeros(formatted) : formatted; | ||
| /** | ||
| * Base "chain" asset on bitcoin cash main net. | ||
| * | ||
| * Based on definition in Thorchain `common` | ||
| * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24 | ||
| */ | ||
| var AssetBCH = { chain: BCHChain, symbol: 'BCH', ticker: 'BCH' }; | ||
| /** | ||
| * Base "chain" asset on litecoin main net. | ||
@@ -367,2 +375,24 @@ * | ||
| /** | ||
| * Base "chain" asset for RUNE on ethereum main net. | ||
| * | ||
| * Based on definition in Thorchain `common` | ||
| * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24 | ||
| */ | ||
| var AssetRuneERC20 = { | ||
| chain: ETHChain, | ||
| symbol: RUNE_TICKER + "-0x3155ba85d5f96b2d030a4966af206230e46849cb", | ||
| ticker: RUNE_TICKER, | ||
| }; | ||
| /** | ||
| * Base "chain" asset for RUNE on ethereum main net. | ||
| * | ||
| * Based on definition in Thorchain `common` | ||
| * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24 | ||
| */ | ||
| var AssetRuneERC20Testnet = { | ||
| chain: ETHChain, | ||
| symbol: RUNE_TICKER + "-0xd601c6A3a36721320573885A8d8420746dA3d7A0", | ||
| ticker: RUNE_TICKER, | ||
| }; | ||
| /** | ||
| * Helper to check whether asset is valid | ||
@@ -469,3 +499,8 @@ * | ||
| var amount = _a.amount, asset = _a.asset, decimal = _a.decimal, _c = _a.trimZeros, shouldTrimZeros = _c === void 0 ? false : _c; | ||
| var amountFormatted = formatAssetAmount({ amount: amount, decimal: decimal || amount.decimal, trimZeros: shouldTrimZeros }); | ||
| var amountFormatted = formatAssetAmount({ | ||
| amount: amount, | ||
| // strict check for `undefined` value as negate of 0 will return true and passed decimal value will be ignored | ||
| decimal: decimal === undefined ? amount.decimal : decimal, | ||
| trimZeros: shouldTrimZeros, | ||
| }); | ||
| var ticker = (_b = asset === null || asset === void 0 ? void 0 : asset.ticker) !== null && _b !== void 0 ? _b : ''; | ||
@@ -513,3 +548,3 @@ if (ticker) { | ||
| export { AssetBNB, AssetBTC, AssetCurrencySymbol, AssetETH, AssetLTC, AssetRune67C, AssetRuneB1A, AssetRuneNative, BCHChain, BNBChain, BTCChain, CosmosChain, Denomination, ETHChain, LTCChain, PolkadotChain, RUNE_TICKER, THORChain, assetAmount, assetFromString, assetToBase, assetToString, baseAmount, baseToAsset, bn, bnOrZero, chainToString, chains, currencySymbolByAsset, delay, fixedBN, formatAssetAmount, formatAssetAmountCurrency, formatBN, formatBNCurrency, formatBaseAmount, formatBaseAsAssetAmount, isAssetAmount, isBaseAmount, isChain, isValidAsset, isValidBN, trimZeros, validBNOrZero }; | ||
| export { AssetBCH, AssetBNB, AssetBTC, AssetCurrencySymbol, AssetETH, AssetLTC, AssetRune67C, AssetRuneB1A, AssetRuneERC20, AssetRuneERC20Testnet, AssetRuneNative, BCHChain, BNBChain, BTCChain, CosmosChain, Denomination, ETHChain, LTCChain, PolkadotChain, RUNE_TICKER, THORChain, assetAmount, assetFromString, assetToBase, assetToString, baseAmount, baseToAsset, bn, bnOrZero, chainToString, chains, currencySymbolByAsset, delay, fixedBN, formatAssetAmount, formatAssetAmountCurrency, formatBN, formatBNCurrency, formatBaseAmount, formatBaseAsAssetAmount, isAssetAmount, isBaseAmount, isChain, isValidAsset, isValidBN, trimZeros, validBNOrZero }; | ||
| //# sourceMappingURL=index.esm.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.esm.js","sources":["../src/async.ts","../src/bn.ts","../src/string.ts","../src/chain.const.ts","../src/chain.ts","../src/types/index.ts","../src/asset.ts"],"sourcesContent":["/**\n * Helper to delay anything within an `async` function\n *\n * @param ms delay in milliseconds\n *\n * @example\n *\n * ```\n * const anyAsyncFunc = async () => {\n * // do something\n * console.log('before delay')\n * // wait for 200ms\n * await delay(200)\n * // and do other things\n * console.log('after delay')\n * }\n * ```\n */\nexport const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms))\n","import BigNumber from 'bignumber.js'\n\n/**\n * Shortcut to create a BigNumber\n *\n * @param {string | number | BigNumber.Instance} value\n * @returns {BigNumber} The BigNumber interface from the given value.\n */\nconst bn = (value: BigNumber.Value) => new BigNumber(value)\n\n/**\n * Helper to check whether a BigNumber is valid or not\n *\n * @param {BigNumber} value\n * @returns {boolean} `true` or `false`.\n * */\nexport const isValidBN = (value: BigNumber) => !value.isNaN()\n\n/**\n * Helper to create a big number from string or number\n * If it fails to create a big number, a big number with value 0 will be returned instead\n *\n * @param {string|number|undefined} value\n * @returns {BigNumber} The BigNumber interface from the given value. If invalid one is provided, will return `0`.\n * */\nexport const bnOrZero = (value: string | number | undefined) => {\n const b = value ? bn(value) : bn(0)\n return isValidBN(b) ? b : bn(0)\n}\n\n/**\n * Helper to validate a possible BigNumber\n * If the given valie is invalid or undefined, 0 is returned as a BigNumber\n *\n * @param {BigNumber|undefined} value\n * @returns {boolean} `true` or `false`.\n */\nexport const validBNOrZero = (value: BigNumber | undefined) => (value && isValidBN(value) ? value : bn(0))\n\n/**\n * Format a BaseNumber to a string depending on given decimal places\n *\n * @param {BigNumber} value\n * @param {number} decimal The decimal place. (optional)\n * @returns {string} The formatted string from the given BigNumber and decimal place.\n * */\nexport const formatBN = (value: BigNumber, decimal = 2) => value.toFormat(decimal)\n\n/**\n * The enumuration for symbol position.\n * `before` or `after`\n */\nexport enum SymbolPosition {\n BEFORE = 'before',\n AFTER = 'after',\n}\n/**\n * Formats a big number value by prefixing it with `$`\n *\n * @param {BigNumber} n\n * @param {number} decimalPlaces The decimal place. (optional)\n * @param {string} symbol The currency symbol. (optional)\n * @param {position} position The symbol position. (optional)\n * @returns {string} The formatted string from the given BigNumber, decimal places, symbol and position.\n */\nexport const formatBNCurrency = (\n n: BigNumber,\n decimalPlaces = 2,\n symbol = '$',\n position: SymbolPosition = SymbolPosition.BEFORE,\n) => {\n const value = formatBN(n, decimalPlaces)\n if (position === SymbolPosition.BEFORE) {\n return `${symbol}${value}`\n }\n return `${value}${symbol}`\n}\n\n/**\n * Helper to get a fixed `BigNumber`\n * Returns zero `BigNumber` if `value` is invalid\n *\n * @param {number|string|BigNumber|undefined} value\n * @param {number} decimalPlaces The decimal place. (optional)\n * @returns {BigNumber} The BigNumber interface from the given value and decimal.\n * */\nexport const fixedBN = (value: number | string | BigNumber | undefined, decimalPlaces = 2): BigNumber => {\n const n = bn(value || 0)\n const fixedBN = isValidBN(n) ? n.toFixed(decimalPlaces) : bn(0).toFixed(decimalPlaces)\n return bn(fixedBN)\n}\n\nexport default bn\n","/**\n * Removes leading / trailing zeros from a string of numbers\n * (1) Regex to remove trailing zeros https://stackoverflow.com/a/53397618/2032698\n * (2) Regex to remove leading zeros https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch06s06.html\n *\n * @param {string} value\n * @returns {string} The result after removing trailing zeros.\n */\nexport const trimZeros = (value: string) =>\n value\n // (1) remove trailing zeros\n .replace(/(\\.[0-9]*[1-9])0+$|\\.0*$/, '$1')\n // (2) remove leading zeros\n .replace(/\\b0*([1-9][0-9]*|0)\\b/, '$1')\n","/**\n * Binance Chain\n */\nexport const BNBChain = 'BNB'\n/**\n * Bitcoin Chain\n */\nexport const BTCChain = 'BTC'\n/**\n * Ethereum Chain\n */\nexport const ETHChain = 'ETH'\n/**\n * Thorchain\n */\nexport const THORChain = 'THOR'\n/**\n * Cosmos Chain\n */\nexport const CosmosChain = 'GAIA'\n/**\n * Polkadot Chain\n */\nexport const PolkadotChain = 'POLKA'\n/**\n * Bitcoin Cash\n */\nexport const BCHChain = 'BCH'\n/**\n * Litecoin Chain\n */\nexport const LTCChain = 'LTC'\n\n/**\n * All possible chains XChainJS currently supports\n * */\nexport const chains = [BNBChain, BTCChain, ETHChain, THORChain, CosmosChain, PolkadotChain, BCHChain, LTCChain] as const\n","import { chains } from './chain.const'\nimport { Chain } from './types'\n\n/**\n * Type guard to check whether string is based on type `Chain`\n *\n * @param {string} c The chain string.\n * @returns {boolean} `true` or `false`\n */\nexport const isChain = (c: string): c is Chain => chains.includes(c as Chain)\n\n/**\n * Convert chain to string.\n *\n * @param {Chain} chainId.\n * @returns {string} The string based on the given chain type.\n */\nexport const chainToString = (chainId: Chain) => {\n switch (chainId) {\n case 'THOR':\n return 'Thorchain'\n case 'BTC':\n return 'Bitcoin'\n case 'LTC':\n return 'Litecoin'\n case 'ETH':\n return 'Ethereum'\n case 'BNB':\n return 'Binance Chain'\n case 'GAIA':\n return 'Cosmos'\n case 'POLKA':\n return 'Polkadot'\n default:\n return 'unknown chain'\n }\n}\n","import BigNumber from 'bignumber.js'\nimport { chains } from '../chain.const'\n\nexport enum Denomination {\n /**\n * values for asset amounts in base units (no decimal)\n */\n BASE = 'BASE',\n /**\n * values of asset amounts (w/ decimal)\n */\n ASSET = 'ASSET',\n}\n\ntype Amount<T> = {\n type: T\n amount: () => BigNumber\n decimal: number\n}\n\nexport type BaseAmount = Amount<Denomination.BASE>\nexport type AssetAmount = Amount<Denomination.ASSET>\n\nexport type Amounts = AssetAmount | BaseAmount\n\n// Chain type to includes types of all possible chains\nexport type Chain = typeof chains[number]\n\nexport type Asset = {\n chain: Chain\n symbol: string\n ticker: string\n}\n","import BigNumber from 'bignumber.js'\nimport { fixedBN, formatBN } from './bn'\nimport { trimZeros as trimZerosHelper } from './string'\nimport { BTCChain, LTCChain, BNBChain, ETHChain, THORChain } from './chain.const'\nimport { isChain } from './chain'\nimport { Denomination, AssetAmount, BaseAmount, Amounts, Asset } from './types'\n\n/**\n * Default number of asset decimals\n * For history reason and by starting the project on Binance chain assets, it's 8 decimal.\n *\n * For example:\n * ```\n * RUNE has a maximum of 8 digits of decimal\n * 0.00000001 RUNE == 1 ð (tor)\n * ```\n * */\nconst ASSET_DECIMAL = 8\n\n/**\n * Factory to create values of assets (e.g. RUNE)\n *\n * @param {string|number|BigNumber|undefined} value - The asset amount, If the value is undefined, AssetAmount with value `0` will be returned.\n * @param {number} decimal The decimal places. (optional)\n * @returns {AssetAmount} The asset amount from the given value and decimal.\n *\n **/\nexport const assetAmount = (value: string | number | BigNumber | undefined, decimal: number = ASSET_DECIMAL) =>\n ({\n type: Denomination.ASSET,\n amount: () => fixedBN(value, decimal),\n decimal,\n } as AssetAmount)\n\n/**\n * Factory to create base amounts (e.g. tor)\n *\n * @param {string|number|BigNumber|undefined} value - The base amount, If the value is undefined, BaseAmount with value `0` will be returned.\n * @param {number} decimal The decimal places of its associated AssetAmount. (optional)\n * @returns {BaseAmount} The base amount from the given value and decimal.\n **/\nexport const baseAmount = (value: string | number | BigNumber | undefined, decimal: number = ASSET_DECIMAL) =>\n ({\n type: Denomination.BASE,\n amount: () => fixedBN(value, 0),\n decimal,\n } as BaseAmount)\n\n/**\n * Helper to convert values for a asset from base values (e.g. RUNE from tor)\n *\n * @param {BaseAmount} base\n * @returns {AssetAmount} The asset amount from the given base amount.\n * */\nexport const baseToAsset = (base: BaseAmount): AssetAmount => {\n const decimal = base.decimal\n const value = base\n .amount()\n .div(10 ** decimal)\n .decimalPlaces(decimal)\n return assetAmount(value, decimal)\n}\n\n/**\n * Helper to convert asset to base values (e.g. tor -> RUNE)\n *\n * @param {AssetAmount} asset\n * @returns {BaseAmount} The base amount from the given AssetAmount.\n * */\nexport const assetToBase = (asset: AssetAmount): BaseAmount => {\n const value = asset\n .amount()\n .multipliedBy(10 ** asset.decimal)\n .integerValue()\n return baseAmount(value, asset.decimal)\n}\n\n/**\n * Guard to check whether value is an amount of asset or not\n *\n * @param {BaseAmount|AssetAmount} v\n * @returns {boolean} `true` or `false`.\n * */\nexport const isAssetAmount = (v: Amounts): v is AssetAmount => (v as AssetAmount).type === Denomination.ASSET\n\n/**\n * Guard to check whether value is an amount of a base value or not\n *\n * @param {BaseAmount|AssetAmount} v\n * @returns {boolean} `true` or `false`.\n * */\nexport const isBaseAmount = (v: Amounts): v is BaseAmount => (v as BaseAmount).type === Denomination.BASE\n\n/**\n * Formats an `AssetAmount` into `string` based on decimal places\n *\n * If `decimal` is not set, `amount.decimal` is used\n * Note: `trimZeros` wins over `decimal`\n *\n * @param {Params} param The asset amount format options.\n * @returns {string} The formatted asset amount string from the given options.\n */\nexport const formatAssetAmount = ({\n amount,\n decimal,\n trimZeros = false,\n}: {\n amount: AssetAmount\n decimal?: number\n trimZeros?: boolean\n}) => {\n const formatted = formatBN(amount.amount(), decimal || amount.decimal)\n // Note: `trimZeros` wins over `decimal`\n return trimZeros ? trimZerosHelper(formatted) : formatted\n}\n\n/**\n * Formats a `BaseAmount` value into a `string`\n *\n * @param {BaseAmount} amount\n * @returns {string} The formatted base amount string from the given base amount.\n */\nexport const formatBaseAmount = (amount: BaseAmount) => formatBN(amount.amount(), 0)\n\n/**\n * Base \"chain\" asset of Binance chain.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetBNB: Asset = { chain: BNBChain, symbol: 'BNB', ticker: 'BNB' }\n\n/**\n * Base \"chain\" asset on bitcoin main net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetBTC: Asset = { chain: BTCChain, symbol: 'BTC', ticker: 'BTC' }\n\n/**\n * Base \"chain\" asset on litecoin main net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetLTC: Asset = { chain: LTCChain, symbol: 'LTC', ticker: 'LTC' }\n\n/**\n * Base \"chain\" asset on ethereum main net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetETH: Asset = { chain: ETHChain, symbol: 'ETH', ticker: 'ETH' }\n\nexport const RUNE_TICKER = 'RUNE'\n\n/**\n * Base \"chain\" asset for RUNE-67C on Binance test net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetRune67C: Asset = { chain: BNBChain, symbol: 'RUNE-67C', ticker: RUNE_TICKER }\n\n/**\n * Base \"chain\" asset for RUNE-B1A on Binance main net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetRuneB1A: Asset = { chain: BNBChain, symbol: 'RUNE-B1A', ticker: RUNE_TICKER }\n\n/**\n * Base \"chain\" asset on thorchain main net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetRuneNative: Asset = { chain: THORChain, symbol: RUNE_TICKER, ticker: RUNE_TICKER }\n\n/**\n * Helper to check whether asset is valid\n *\n * @param {Asset} asset\n * @returns {boolean} `true` or `false`\n */\nexport const isValidAsset = (asset: Asset): boolean => !!asset.chain && !!asset.ticker && !!asset.symbol\n\n/**\n * Creates an `Asset` by a given string\n *\n * This helper function expects a string with following naming convention:\n * `AAA.BBB-CCC`\n * where\n * chain: `AAA`\n * ticker (optional): `BBB`\n * symbol: `BBB-CCC` or `CCC` (if no ticker available)\n *\n * @see https://docs.thorchain.org/developers/transaction-memos#asset-notation\n *\n * If the naming convention fails, it returns null\n *\n * @param {string} s The given string.\n * @returns {Asset|null} The asset from the given string.\n */\nexport const assetFromString = (s: string): Asset | null => {\n const data = s.split('.')\n if (data.length <= 1 || data[1]?.length < 1) {\n return null\n }\n\n const chain = data[0]\n // filter out not supported string of chains\n if (!chain || !isChain(chain)) return null\n\n const symbol = data[1]\n const ticker = symbol.split('-')[0]\n\n return { chain, symbol, ticker }\n}\n\n/**\n * Returns an `Asset` as a string using following naming convention:\n *\n * `AAA.BBB-CCC`\n * where\n * chain: `AAA`\n * ticker (optional): `BBB`\n * symbol: `BBB-CCC` or `CCC` (if no ticker available)\n *\n * @see https://docs.thorchain.org/developers/transaction-memos#asset-notation\n *\n * @param {Asset} asset The given asset.\n * @returns {string} The string from the given asset.\n */\nexport const assetToString = ({ chain, symbol }: Asset) => `${chain}.${symbol}`\n\n/**\n * Currency symbols currently supported\n */\nexport enum AssetCurrencySymbol {\n RUNE = 'ᚱ',\n BTC = '₿',\n SATOSHI = '⚡',\n ETH = 'Ξ',\n USD = '$',\n}\n\n/**\n * Returns currency symbols by given `Asset`\n *\n * @param {Asset} asset The given asset.\n * @returns {string} The currency symbol from the given asset.\n */\nexport const currencySymbolByAsset = ({ ticker }: Asset) => {\n switch (true) {\n case ticker === RUNE_TICKER:\n return AssetCurrencySymbol.RUNE\n case ticker === AssetBTC.ticker:\n return AssetCurrencySymbol.BTC\n case ticker === AssetETH.ticker:\n return AssetCurrencySymbol.ETH\n case ticker.includes('USD'):\n return AssetCurrencySymbol.USD\n default:\n return ticker\n }\n}\n\n/**\n * Formats an asset amount using its currency symbol\n *\n * If `decimal` is not set, `amount.decimal` is used\n * If `asset` is not set, `$` will be used as currency symbol by default\n * `trimZeros` is `false` by default\n * Note: `trimZeros` wins over `decimal`\n *\n * @param {Params} params The asset amount currency format options.\n * @return {string} The formatted asset amount string using its currency format.\n */\nexport const formatAssetAmountCurrency = ({\n amount,\n asset,\n decimal,\n trimZeros: shouldTrimZeros = false,\n}: {\n amount: AssetAmount\n asset?: Asset\n decimal?: number\n trimZeros?: boolean\n}) => {\n const amountFormatted = formatAssetAmount({ amount, decimal: decimal || amount.decimal, trimZeros: shouldTrimZeros })\n const ticker = asset?.ticker ?? ''\n\n if (ticker) {\n // RUNE\n let regex = new RegExp(`${AssetRune67C.ticker}|${AssetRuneB1A.ticker}|${AssetRuneNative.ticker}`, 'i')\n if (ticker.match(regex)) return `${AssetCurrencySymbol.RUNE} ${amountFormatted}`\n // BTC\n regex = new RegExp(AssetBTC.ticker, 'i')\n if (ticker.match(new RegExp(AssetBTC.ticker, 'i'))) {\n const base = assetToBase(amount)\n // format all < ₿ 0.01 in statoshi\n if (base.amount().isLessThanOrEqualTo('1000000')) {\n return `${AssetCurrencySymbol.SATOSHI} ${formatBaseAmount(base)}`\n }\n return `${AssetCurrencySymbol.BTC} ${amountFormatted}`\n }\n // ETH\n regex = new RegExp(AssetETH.ticker, 'i')\n if (ticker.match(regex)) return `${AssetCurrencySymbol.ETH} ${amountFormatted}`\n // USD\n regex = new RegExp('USD', 'i')\n if (ticker.match('USD')) return `${AssetCurrencySymbol.USD} ${amountFormatted}`\n\n return `${amountFormatted} (${ticker})`\n }\n\n return `$ ${amountFormatted}`\n}\n\n/**\n * Formats a `BaseAmount` into a string of an `AssetAmount`\n *\n * If `decimal` is not set, `amount.decimal` is used\n * Note: `trimZeros` wins over `decimal`\n *\n * @param {Params} params The base amount currency format options.\n * @return {string} The formatted base amount string using its currency format.\n */\nexport const formatBaseAsAssetAmount = ({\n amount,\n decimal,\n trimZeros = false,\n}: {\n amount: BaseAmount\n decimal?: number\n trimZeros?: boolean\n}) => formatAssetAmount({ amount: baseToAsset(amount), decimal, trimZeros })\n"],"names":["trimZeros","trimZerosHelper"],"mappings":"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"} | ||
| {"version":3,"file":"index.esm.js","sources":["../src/async.ts","../src/bn.ts","../src/string.ts","../src/chain.const.ts","../src/chain.ts","../src/types/index.ts","../src/asset.ts"],"sourcesContent":["/**\n * Helper to delay anything within an `async` function\n *\n * @param ms delay in milliseconds\n *\n * @example\n *\n * ```\n * const anyAsyncFunc = async () => {\n * // do something\n * console.log('before delay')\n * // wait for 200ms\n * await delay(200)\n * // and do other things\n * console.log('after delay')\n * }\n * ```\n */\nexport const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms))\n","import BigNumber from 'bignumber.js'\n\n/**\n * Shortcut to create a BigNumber\n *\n * @param {string | number | BigNumber.Instance} value\n * @returns {BigNumber} The BigNumber interface from the given value.\n */\nconst bn = (value: BigNumber.Value) => new BigNumber(value)\n\n/**\n * Helper to check whether a BigNumber is valid or not\n *\n * @param {BigNumber} value\n * @returns {boolean} `true` or `false`.\n * */\nexport const isValidBN = (value: BigNumber) => !value.isNaN()\n\n/**\n * Helper to create a big number from string or number\n * If it fails to create a big number, a big number with value 0 will be returned instead\n *\n * @param {string|number|undefined} value\n * @returns {BigNumber} The BigNumber interface from the given value. If invalid one is provided, will return `0`.\n * */\nexport const bnOrZero = (value: string | number | undefined) => {\n const b = value ? bn(value) : bn(0)\n return isValidBN(b) ? b : bn(0)\n}\n\n/**\n * Helper to validate a possible BigNumber\n * If the given valie is invalid or undefined, 0 is returned as a BigNumber\n *\n * @param {BigNumber|undefined} value\n * @returns {boolean} `true` or `false`.\n */\nexport const validBNOrZero = (value: BigNumber | undefined) => (value && isValidBN(value) ? value : bn(0))\n\n/**\n * Format a BaseNumber to a string depending on given decimal places\n *\n * @param {BigNumber} value\n * @param {number} decimal The decimal place. (optional)\n * @returns {string} The formatted string from the given BigNumber and decimal place.\n * */\nexport const formatBN = (value: BigNumber, decimal = 2) => value.toFormat(decimal)\n\n/**\n * The enumuration for symbol position.\n * `before` or `after`\n */\nexport enum SymbolPosition {\n BEFORE = 'before',\n AFTER = 'after',\n}\n/**\n * Formats a big number value by prefixing it with `$`\n *\n * @param {BigNumber} n\n * @param {number} decimalPlaces The decimal place. (optional)\n * @param {string} symbol The currency symbol. (optional)\n * @param {position} position The symbol position. (optional)\n * @returns {string} The formatted string from the given BigNumber, decimal places, symbol and position.\n */\nexport const formatBNCurrency = (\n n: BigNumber,\n decimalPlaces = 2,\n symbol = '$',\n position: SymbolPosition = SymbolPosition.BEFORE,\n) => {\n const value = formatBN(n, decimalPlaces)\n if (position === SymbolPosition.BEFORE) {\n return `${symbol}${value}`\n }\n return `${value}${symbol}`\n}\n\n/**\n * Helper to get a fixed `BigNumber`\n * Returns zero `BigNumber` if `value` is invalid\n *\n * @param {number|string|BigNumber|undefined} value\n * @param {number} decimalPlaces The decimal place. (optional)\n * @returns {BigNumber} The BigNumber interface from the given value and decimal.\n * */\nexport const fixedBN = (value: number | string | BigNumber | undefined, decimalPlaces = 2): BigNumber => {\n const n = bn(value || 0)\n const fixedBN = isValidBN(n) ? n.toFixed(decimalPlaces) : bn(0).toFixed(decimalPlaces)\n return bn(fixedBN)\n}\n\nexport default bn\n","/**\n * Removes leading / trailing zeros from a string of numbers\n * (1) Regex to remove trailing zeros https://stackoverflow.com/a/53397618/2032698\n * (2) Regex to remove leading zeros https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch06s06.html\n *\n * @param {string} value\n * @returns {string} The result after removing trailing zeros.\n */\nexport const trimZeros = (value: string) =>\n value\n // (1) remove trailing zeros\n .replace(/(\\.[0-9]*[1-9])0+$|\\.0*$/, '$1')\n // (2) remove leading zeros\n .replace(/\\b0*([1-9][0-9]*|0)\\b/, '$1')\n","/**\n * Binance Chain\n */\nexport const BNBChain = 'BNB'\n/**\n * Bitcoin Chain\n */\nexport const BTCChain = 'BTC'\n/**\n * Ethereum Chain\n */\nexport const ETHChain = 'ETH'\n/**\n * Thorchain\n */\nexport const THORChain = 'THOR'\n/**\n * Cosmos Chain\n */\nexport const CosmosChain = 'GAIA'\n/**\n * Polkadot Chain\n */\nexport const PolkadotChain = 'POLKA'\n/**\n * Bitcoin Cash\n */\nexport const BCHChain = 'BCH'\n/**\n * Litecoin Chain\n */\nexport const LTCChain = 'LTC'\n\n/**\n * All possible chains XChainJS currently supports\n * */\nexport const chains = [BNBChain, BTCChain, ETHChain, THORChain, CosmosChain, PolkadotChain, BCHChain, LTCChain] as const\n","import { chains } from './chain.const'\nimport { Chain } from './types'\n\n/**\n * Type guard to check whether string is based on type `Chain`\n *\n * @param {string} c The chain string.\n * @returns {boolean} `true` or `false`\n */\nexport const isChain = (c: string): c is Chain => chains.includes(c as Chain)\n\n/**\n * Convert chain to string.\n *\n * @param {Chain} chainId.\n * @returns {string} The string based on the given chain type.\n */\nexport const chainToString = (chainId: Chain) => {\n switch (chainId) {\n case 'THOR':\n return 'Thorchain'\n case 'BTC':\n return 'Bitcoin'\n case 'LTC':\n return 'Litecoin'\n case 'ETH':\n return 'Ethereum'\n case 'BNB':\n return 'Binance Chain'\n case 'GAIA':\n return 'Cosmos'\n case 'POLKA':\n return 'Polkadot'\n default:\n return 'unknown chain'\n }\n}\n","import BigNumber from 'bignumber.js'\nimport { chains } from '../chain.const'\n\nexport enum Denomination {\n /**\n * values for asset amounts in base units (no decimal)\n */\n BASE = 'BASE',\n /**\n * values of asset amounts (w/ decimal)\n */\n ASSET = 'ASSET',\n}\n\ntype Amount<T> = {\n type: T\n amount: () => BigNumber\n decimal: number\n}\n\nexport type BaseAmount = Amount<Denomination.BASE>\nexport type AssetAmount = Amount<Denomination.ASSET>\n\nexport type Amounts = AssetAmount | BaseAmount\n\n// Chain type to includes types of all possible chains\nexport type Chain = typeof chains[number]\n\nexport type Asset = {\n chain: Chain\n symbol: string\n ticker: string\n}\n","import BigNumber from 'bignumber.js'\nimport { fixedBN, formatBN } from './bn'\nimport { trimZeros as trimZerosHelper } from './string'\nimport { BTCChain, LTCChain, BNBChain, ETHChain, THORChain, BCHChain } from './chain.const'\nimport { isChain } from './chain'\nimport { Denomination, AssetAmount, BaseAmount, Amounts, Asset } from './types'\n\n/**\n * Default number of asset decimals\n * For history reason and by starting the project on Binance chain assets, it's 8 decimal.\n *\n * For example:\n * ```\n * RUNE has a maximum of 8 digits of decimal\n * 0.00000001 RUNE == 1 ð (tor)\n * ```\n * */\nconst ASSET_DECIMAL = 8\n\n/**\n * Factory to create values of assets (e.g. RUNE)\n *\n * @param {string|number|BigNumber|undefined} value - The asset amount, If the value is undefined, AssetAmount with value `0` will be returned.\n * @param {number} decimal The decimal places. (optional)\n * @returns {AssetAmount} The asset amount from the given value and decimal.\n *\n **/\nexport const assetAmount = (value: string | number | BigNumber | undefined, decimal: number = ASSET_DECIMAL) =>\n ({\n type: Denomination.ASSET,\n amount: () => fixedBN(value, decimal),\n decimal,\n } as AssetAmount)\n\n/**\n * Factory to create base amounts (e.g. tor)\n *\n * @param {string|number|BigNumber|undefined} value - The base amount, If the value is undefined, BaseAmount with value `0` will be returned.\n * @param {number} decimal The decimal places of its associated AssetAmount. (optional)\n * @returns {BaseAmount} The base amount from the given value and decimal.\n **/\nexport const baseAmount = (value: string | number | BigNumber | undefined, decimal: number = ASSET_DECIMAL) =>\n ({\n type: Denomination.BASE,\n amount: () => fixedBN(value, 0),\n decimal,\n } as BaseAmount)\n\n/**\n * Helper to convert values for a asset from base values (e.g. RUNE from tor)\n *\n * @param {BaseAmount} base\n * @returns {AssetAmount} The asset amount from the given base amount.\n * */\nexport const baseToAsset = (base: BaseAmount): AssetAmount => {\n const decimal = base.decimal\n const value = base\n .amount()\n .div(10 ** decimal)\n .decimalPlaces(decimal)\n return assetAmount(value, decimal)\n}\n\n/**\n * Helper to convert asset to base values (e.g. tor -> RUNE)\n *\n * @param {AssetAmount} asset\n * @returns {BaseAmount} The base amount from the given AssetAmount.\n * */\nexport const assetToBase = (asset: AssetAmount): BaseAmount => {\n const value = asset\n .amount()\n .multipliedBy(10 ** asset.decimal)\n .integerValue()\n return baseAmount(value, asset.decimal)\n}\n\n/**\n * Guard to check whether value is an amount of asset or not\n *\n * @param {BaseAmount|AssetAmount} v\n * @returns {boolean} `true` or `false`.\n * */\nexport const isAssetAmount = (v: Amounts): v is AssetAmount => (v as AssetAmount).type === Denomination.ASSET\n\n/**\n * Guard to check whether value is an amount of a base value or not\n *\n * @param {BaseAmount|AssetAmount} v\n * @returns {boolean} `true` or `false`.\n * */\nexport const isBaseAmount = (v: Amounts): v is BaseAmount => (v as BaseAmount).type === Denomination.BASE\n\n/**\n * Formats an `AssetAmount` into `string` based on decimal places\n *\n * If `decimal` is not set, `amount.decimal` is used\n * Note: `trimZeros` wins over `decimal`\n *\n * @param {Params} param The asset amount format options.\n * @returns {string} The formatted asset amount string from the given options.\n */\nexport const formatAssetAmount = ({\n amount,\n decimal,\n trimZeros = false,\n}: {\n amount: AssetAmount\n decimal?: number\n trimZeros?: boolean\n}) => {\n // strict check for `undefined` value as negate of 0 will return true and passed decimal value will be ignored\n const formatted = formatBN(amount.amount(), decimal === undefined ? amount.decimal : decimal)\n // Note: `trimZeros` wins over `decimal`\n return trimZeros ? trimZerosHelper(formatted) : formatted\n}\n\n/**\n * Formats a `BaseAmount` value into a `string`\n *\n * @param {BaseAmount} amount\n * @returns {string} The formatted base amount string from the given base amount.\n */\nexport const formatBaseAmount = (amount: BaseAmount) => formatBN(amount.amount(), 0)\n\n/**\n * Base \"chain\" asset of Binance chain.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetBNB: Asset = { chain: BNBChain, symbol: 'BNB', ticker: 'BNB' }\n\n/**\n * Base \"chain\" asset on bitcoin main net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetBTC: Asset = { chain: BTCChain, symbol: 'BTC', ticker: 'BTC' }\n\n/**\n * Base \"chain\" asset on bitcoin cash main net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetBCH: Asset = { chain: BCHChain, symbol: 'BCH', ticker: 'BCH' }\n\n/**\n * Base \"chain\" asset on litecoin main net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetLTC: Asset = { chain: LTCChain, symbol: 'LTC', ticker: 'LTC' }\n\n/**\n * Base \"chain\" asset on ethereum main net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetETH: Asset = { chain: ETHChain, symbol: 'ETH', ticker: 'ETH' }\n\nexport const RUNE_TICKER = 'RUNE'\n\n/**\n * Base \"chain\" asset for RUNE-67C on Binance test net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetRune67C: Asset = { chain: BNBChain, symbol: 'RUNE-67C', ticker: RUNE_TICKER }\n\n/**\n * Base \"chain\" asset for RUNE-B1A on Binance main net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetRuneB1A: Asset = { chain: BNBChain, symbol: 'RUNE-B1A', ticker: RUNE_TICKER }\n\n/**\n * Base \"chain\" asset on thorchain main net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetRuneNative: Asset = { chain: THORChain, symbol: RUNE_TICKER, ticker: RUNE_TICKER }\n\n/**\n * Base \"chain\" asset for RUNE on ethereum main net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetRuneERC20: Asset = {\n chain: ETHChain,\n symbol: `${RUNE_TICKER}-0x3155ba85d5f96b2d030a4966af206230e46849cb`,\n ticker: RUNE_TICKER,\n}\n\n/**\n * Base \"chain\" asset for RUNE on ethereum main net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetRuneERC20Testnet: Asset = {\n chain: ETHChain,\n symbol: `${RUNE_TICKER}-0xd601c6A3a36721320573885A8d8420746dA3d7A0`,\n ticker: RUNE_TICKER,\n}\n\n/**\n * Helper to check whether asset is valid\n *\n * @param {Asset} asset\n * @returns {boolean} `true` or `false`\n */\nexport const isValidAsset = (asset: Asset): boolean => !!asset.chain && !!asset.ticker && !!asset.symbol\n\n/**\n * Creates an `Asset` by a given string\n *\n * This helper function expects a string with following naming convention:\n * `AAA.BBB-CCC`\n * where\n * chain: `AAA`\n * ticker (optional): `BBB`\n * symbol: `BBB-CCC` or `CCC` (if no ticker available)\n *\n * @see https://docs.thorchain.org/developers/transaction-memos#asset-notation\n *\n * If the naming convention fails, it returns null\n *\n * @param {string} s The given string.\n * @returns {Asset|null} The asset from the given string.\n */\nexport const assetFromString = (s: string): Asset | null => {\n const data = s.split('.')\n if (data.length <= 1 || data[1]?.length < 1) {\n return null\n }\n\n const chain = data[0]\n // filter out not supported string of chains\n if (!chain || !isChain(chain)) return null\n\n const symbol = data[1]\n const ticker = symbol.split('-')[0]\n\n return { chain, symbol, ticker }\n}\n\n/**\n * Returns an `Asset` as a string using following naming convention:\n *\n * `AAA.BBB-CCC`\n * where\n * chain: `AAA`\n * ticker (optional): `BBB`\n * symbol: `BBB-CCC` or `CCC` (if no ticker available)\n *\n * @see https://docs.thorchain.org/developers/transaction-memos#asset-notation\n *\n * @param {Asset} asset The given asset.\n * @returns {string} The string from the given asset.\n */\nexport const assetToString = ({ chain, symbol }: Asset) => `${chain}.${symbol}`\n\n/**\n * Currency symbols currently supported\n */\nexport enum AssetCurrencySymbol {\n RUNE = 'ᚱ',\n BTC = '₿',\n SATOSHI = '⚡',\n ETH = 'Ξ',\n USD = '$',\n}\n\n/**\n * Returns currency symbols by given `Asset`\n *\n * @param {Asset} asset The given asset.\n * @returns {string} The currency symbol from the given asset.\n */\nexport const currencySymbolByAsset = ({ ticker }: Asset) => {\n switch (true) {\n case ticker === RUNE_TICKER:\n return AssetCurrencySymbol.RUNE\n case ticker === AssetBTC.ticker:\n return AssetCurrencySymbol.BTC\n case ticker === AssetETH.ticker:\n return AssetCurrencySymbol.ETH\n case ticker.includes('USD'):\n return AssetCurrencySymbol.USD\n default:\n return ticker\n }\n}\n\n/**\n * Formats an asset amount using its currency symbol\n *\n * If `decimal` is not set, `amount.decimal` is used\n * If `asset` is not set, `$` will be used as currency symbol by default\n * `trimZeros` is `false` by default\n * Note: `trimZeros` wins over `decimal`\n *\n * @param {Params} params The asset amount currency format options.\n * @return {string} The formatted asset amount string using its currency format.\n */\nexport const formatAssetAmountCurrency = ({\n amount,\n asset,\n decimal,\n trimZeros: shouldTrimZeros = false,\n}: {\n amount: AssetAmount\n asset?: Asset\n decimal?: number\n trimZeros?: boolean\n}) => {\n const amountFormatted = formatAssetAmount({\n amount,\n // strict check for `undefined` value as negate of 0 will return true and passed decimal value will be ignored\n decimal: decimal === undefined ? amount.decimal : decimal,\n trimZeros: shouldTrimZeros,\n })\n const ticker = asset?.ticker ?? ''\n\n if (ticker) {\n // RUNE\n let regex = new RegExp(`${AssetRune67C.ticker}|${AssetRuneB1A.ticker}|${AssetRuneNative.ticker}`, 'i')\n if (ticker.match(regex)) return `${AssetCurrencySymbol.RUNE} ${amountFormatted}`\n // BTC\n regex = new RegExp(AssetBTC.ticker, 'i')\n if (ticker.match(new RegExp(AssetBTC.ticker, 'i'))) {\n const base = assetToBase(amount)\n // format all < ₿ 0.01 in statoshi\n if (base.amount().isLessThanOrEqualTo('1000000')) {\n return `${AssetCurrencySymbol.SATOSHI} ${formatBaseAmount(base)}`\n }\n return `${AssetCurrencySymbol.BTC} ${amountFormatted}`\n }\n // ETH\n regex = new RegExp(AssetETH.ticker, 'i')\n if (ticker.match(regex)) return `${AssetCurrencySymbol.ETH} ${amountFormatted}`\n // USD\n regex = new RegExp('USD', 'i')\n if (ticker.match('USD')) return `${AssetCurrencySymbol.USD} ${amountFormatted}`\n\n return `${amountFormatted} (${ticker})`\n }\n\n return `$ ${amountFormatted}`\n}\n\n/**\n * Formats a `BaseAmount` into a string of an `AssetAmount`\n *\n * If `decimal` is not set, `amount.decimal` is used\n * Note: `trimZeros` wins over `decimal`\n *\n * @param {Params} params The base amount currency format options.\n * @return {string} The formatted base amount string using its currency format.\n */\nexport const formatBaseAsAssetAmount = ({\n amount,\n decimal,\n trimZeros = false,\n}: {\n amount: BaseAmount\n decimal?: number\n trimZeros?: boolean\n}) => formatAssetAmount({ amount: baseToAsset(amount), decimal, trimZeros })\n"],"names":["trimZeros","trimZerosHelper"],"mappings":"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"} |
+40
-2
@@ -310,3 +310,4 @@ 'use strict'; | ||
| var amount = _a.amount, decimal = _a.decimal, _b = _a.trimZeros, trimZeros$1 = _b === void 0 ? false : _b; | ||
| var formatted = formatBN(amount.amount(), decimal || amount.decimal); | ||
| // strict check for `undefined` value as negate of 0 will return true and passed decimal value will be ignored | ||
| var formatted = formatBN(amount.amount(), decimal === undefined ? amount.decimal : decimal); | ||
| // Note: `trimZeros` wins over `decimal` | ||
@@ -337,2 +338,9 @@ return trimZeros$1 ? trimZeros(formatted) : formatted; | ||
| /** | ||
| * Base "chain" asset on bitcoin cash main net. | ||
| * | ||
| * Based on definition in Thorchain `common` | ||
| * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24 | ||
| */ | ||
| var AssetBCH = { chain: BCHChain, symbol: 'BCH', ticker: 'BCH' }; | ||
| /** | ||
| * Base "chain" asset on litecoin main net. | ||
@@ -374,2 +382,24 @@ * | ||
| /** | ||
| * Base "chain" asset for RUNE on ethereum main net. | ||
| * | ||
| * Based on definition in Thorchain `common` | ||
| * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24 | ||
| */ | ||
| var AssetRuneERC20 = { | ||
| chain: ETHChain, | ||
| symbol: RUNE_TICKER + "-0x3155ba85d5f96b2d030a4966af206230e46849cb", | ||
| ticker: RUNE_TICKER, | ||
| }; | ||
| /** | ||
| * Base "chain" asset for RUNE on ethereum main net. | ||
| * | ||
| * Based on definition in Thorchain `common` | ||
| * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24 | ||
| */ | ||
| var AssetRuneERC20Testnet = { | ||
| chain: ETHChain, | ||
| symbol: RUNE_TICKER + "-0xd601c6A3a36721320573885A8d8420746dA3d7A0", | ||
| ticker: RUNE_TICKER, | ||
| }; | ||
| /** | ||
| * Helper to check whether asset is valid | ||
@@ -472,3 +502,8 @@ * | ||
| var amount = _a.amount, asset = _a.asset, decimal = _a.decimal, _c = _a.trimZeros, shouldTrimZeros = _c === void 0 ? false : _c; | ||
| var amountFormatted = formatAssetAmount({ amount: amount, decimal: decimal || amount.decimal, trimZeros: shouldTrimZeros }); | ||
| var amountFormatted = formatAssetAmount({ | ||
| amount: amount, | ||
| // strict check for `undefined` value as negate of 0 will return true and passed decimal value will be ignored | ||
| decimal: decimal === undefined ? amount.decimal : decimal, | ||
| trimZeros: shouldTrimZeros, | ||
| }); | ||
| var ticker = (_b = asset === null || asset === void 0 ? void 0 : asset.ticker) !== null && _b !== void 0 ? _b : ''; | ||
@@ -516,2 +551,3 @@ if (ticker) { | ||
| exports.AssetBCH = AssetBCH; | ||
| exports.AssetBNB = AssetBNB; | ||
@@ -523,2 +559,4 @@ exports.AssetBTC = AssetBTC; | ||
| exports.AssetRuneB1A = AssetRuneB1A; | ||
| exports.AssetRuneERC20 = AssetRuneERC20; | ||
| exports.AssetRuneERC20Testnet = AssetRuneERC20Testnet; | ||
| exports.AssetRuneNative = AssetRuneNative; | ||
@@ -525,0 +563,0 @@ exports.BCHChain = BCHChain; |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sources":["../src/async.ts","../src/bn.ts","../src/string.ts","../src/chain.const.ts","../src/chain.ts","../src/types/index.ts","../src/asset.ts"],"sourcesContent":["/**\n * Helper to delay anything within an `async` function\n *\n * @param ms delay in milliseconds\n *\n * @example\n *\n * ```\n * const anyAsyncFunc = async () => {\n * // do something\n * console.log('before delay')\n * // wait for 200ms\n * await delay(200)\n * // and do other things\n * console.log('after delay')\n * }\n * ```\n */\nexport const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms))\n","import BigNumber from 'bignumber.js'\n\n/**\n * Shortcut to create a BigNumber\n *\n * @param {string | number | BigNumber.Instance} value\n * @returns {BigNumber} The BigNumber interface from the given value.\n */\nconst bn = (value: BigNumber.Value) => new BigNumber(value)\n\n/**\n * Helper to check whether a BigNumber is valid or not\n *\n * @param {BigNumber} value\n * @returns {boolean} `true` or `false`.\n * */\nexport const isValidBN = (value: BigNumber) => !value.isNaN()\n\n/**\n * Helper to create a big number from string or number\n * If it fails to create a big number, a big number with value 0 will be returned instead\n *\n * @param {string|number|undefined} value\n * @returns {BigNumber} The BigNumber interface from the given value. If invalid one is provided, will return `0`.\n * */\nexport const bnOrZero = (value: string | number | undefined) => {\n const b = value ? bn(value) : bn(0)\n return isValidBN(b) ? b : bn(0)\n}\n\n/**\n * Helper to validate a possible BigNumber\n * If the given valie is invalid or undefined, 0 is returned as a BigNumber\n *\n * @param {BigNumber|undefined} value\n * @returns {boolean} `true` or `false`.\n */\nexport const validBNOrZero = (value: BigNumber | undefined) => (value && isValidBN(value) ? value : bn(0))\n\n/**\n * Format a BaseNumber to a string depending on given decimal places\n *\n * @param {BigNumber} value\n * @param {number} decimal The decimal place. (optional)\n * @returns {string} The formatted string from the given BigNumber and decimal place.\n * */\nexport const formatBN = (value: BigNumber, decimal = 2) => value.toFormat(decimal)\n\n/**\n * The enumuration for symbol position.\n * `before` or `after`\n */\nexport enum SymbolPosition {\n BEFORE = 'before',\n AFTER = 'after',\n}\n/**\n * Formats a big number value by prefixing it with `$`\n *\n * @param {BigNumber} n\n * @param {number} decimalPlaces The decimal place. (optional)\n * @param {string} symbol The currency symbol. (optional)\n * @param {position} position The symbol position. (optional)\n * @returns {string} The formatted string from the given BigNumber, decimal places, symbol and position.\n */\nexport const formatBNCurrency = (\n n: BigNumber,\n decimalPlaces = 2,\n symbol = '$',\n position: SymbolPosition = SymbolPosition.BEFORE,\n) => {\n const value = formatBN(n, decimalPlaces)\n if (position === SymbolPosition.BEFORE) {\n return `${symbol}${value}`\n }\n return `${value}${symbol}`\n}\n\n/**\n * Helper to get a fixed `BigNumber`\n * Returns zero `BigNumber` if `value` is invalid\n *\n * @param {number|string|BigNumber|undefined} value\n * @param {number} decimalPlaces The decimal place. (optional)\n * @returns {BigNumber} The BigNumber interface from the given value and decimal.\n * */\nexport const fixedBN = (value: number | string | BigNumber | undefined, decimalPlaces = 2): BigNumber => {\n const n = bn(value || 0)\n const fixedBN = isValidBN(n) ? n.toFixed(decimalPlaces) : bn(0).toFixed(decimalPlaces)\n return bn(fixedBN)\n}\n\nexport default bn\n","/**\n * Removes leading / trailing zeros from a string of numbers\n * (1) Regex to remove trailing zeros https://stackoverflow.com/a/53397618/2032698\n * (2) Regex to remove leading zeros https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch06s06.html\n *\n * @param {string} value\n * @returns {string} The result after removing trailing zeros.\n */\nexport const trimZeros = (value: string) =>\n value\n // (1) remove trailing zeros\n .replace(/(\\.[0-9]*[1-9])0+$|\\.0*$/, '$1')\n // (2) remove leading zeros\n .replace(/\\b0*([1-9][0-9]*|0)\\b/, '$1')\n","/**\n * Binance Chain\n */\nexport const BNBChain = 'BNB'\n/**\n * Bitcoin Chain\n */\nexport const BTCChain = 'BTC'\n/**\n * Ethereum Chain\n */\nexport const ETHChain = 'ETH'\n/**\n * Thorchain\n */\nexport const THORChain = 'THOR'\n/**\n * Cosmos Chain\n */\nexport const CosmosChain = 'GAIA'\n/**\n * Polkadot Chain\n */\nexport const PolkadotChain = 'POLKA'\n/**\n * Bitcoin Cash\n */\nexport const BCHChain = 'BCH'\n/**\n * Litecoin Chain\n */\nexport const LTCChain = 'LTC'\n\n/**\n * All possible chains XChainJS currently supports\n * */\nexport const chains = [BNBChain, BTCChain, ETHChain, THORChain, CosmosChain, PolkadotChain, BCHChain, LTCChain] as const\n","import { chains } from './chain.const'\nimport { Chain } from './types'\n\n/**\n * Type guard to check whether string is based on type `Chain`\n *\n * @param {string} c The chain string.\n * @returns {boolean} `true` or `false`\n */\nexport const isChain = (c: string): c is Chain => chains.includes(c as Chain)\n\n/**\n * Convert chain to string.\n *\n * @param {Chain} chainId.\n * @returns {string} The string based on the given chain type.\n */\nexport const chainToString = (chainId: Chain) => {\n switch (chainId) {\n case 'THOR':\n return 'Thorchain'\n case 'BTC':\n return 'Bitcoin'\n case 'LTC':\n return 'Litecoin'\n case 'ETH':\n return 'Ethereum'\n case 'BNB':\n return 'Binance Chain'\n case 'GAIA':\n return 'Cosmos'\n case 'POLKA':\n return 'Polkadot'\n default:\n return 'unknown chain'\n }\n}\n","import BigNumber from 'bignumber.js'\nimport { chains } from '../chain.const'\n\nexport enum Denomination {\n /**\n * values for asset amounts in base units (no decimal)\n */\n BASE = 'BASE',\n /**\n * values of asset amounts (w/ decimal)\n */\n ASSET = 'ASSET',\n}\n\ntype Amount<T> = {\n type: T\n amount: () => BigNumber\n decimal: number\n}\n\nexport type BaseAmount = Amount<Denomination.BASE>\nexport type AssetAmount = Amount<Denomination.ASSET>\n\nexport type Amounts = AssetAmount | BaseAmount\n\n// Chain type to includes types of all possible chains\nexport type Chain = typeof chains[number]\n\nexport type Asset = {\n chain: Chain\n symbol: string\n ticker: string\n}\n","import BigNumber from 'bignumber.js'\nimport { fixedBN, formatBN } from './bn'\nimport { trimZeros as trimZerosHelper } from './string'\nimport { BTCChain, LTCChain, BNBChain, ETHChain, THORChain } from './chain.const'\nimport { isChain } from './chain'\nimport { Denomination, AssetAmount, BaseAmount, Amounts, Asset } from './types'\n\n/**\n * Default number of asset decimals\n * For history reason and by starting the project on Binance chain assets, it's 8 decimal.\n *\n * For example:\n * ```\n * RUNE has a maximum of 8 digits of decimal\n * 0.00000001 RUNE == 1 ð (tor)\n * ```\n * */\nconst ASSET_DECIMAL = 8\n\n/**\n * Factory to create values of assets (e.g. RUNE)\n *\n * @param {string|number|BigNumber|undefined} value - The asset amount, If the value is undefined, AssetAmount with value `0` will be returned.\n * @param {number} decimal The decimal places. (optional)\n * @returns {AssetAmount} The asset amount from the given value and decimal.\n *\n **/\nexport const assetAmount = (value: string | number | BigNumber | undefined, decimal: number = ASSET_DECIMAL) =>\n ({\n type: Denomination.ASSET,\n amount: () => fixedBN(value, decimal),\n decimal,\n } as AssetAmount)\n\n/**\n * Factory to create base amounts (e.g. tor)\n *\n * @param {string|number|BigNumber|undefined} value - The base amount, If the value is undefined, BaseAmount with value `0` will be returned.\n * @param {number} decimal The decimal places of its associated AssetAmount. (optional)\n * @returns {BaseAmount} The base amount from the given value and decimal.\n **/\nexport const baseAmount = (value: string | number | BigNumber | undefined, decimal: number = ASSET_DECIMAL) =>\n ({\n type: Denomination.BASE,\n amount: () => fixedBN(value, 0),\n decimal,\n } as BaseAmount)\n\n/**\n * Helper to convert values for a asset from base values (e.g. RUNE from tor)\n *\n * @param {BaseAmount} base\n * @returns {AssetAmount} The asset amount from the given base amount.\n * */\nexport const baseToAsset = (base: BaseAmount): AssetAmount => {\n const decimal = base.decimal\n const value = base\n .amount()\n .div(10 ** decimal)\n .decimalPlaces(decimal)\n return assetAmount(value, decimal)\n}\n\n/**\n * Helper to convert asset to base values (e.g. tor -> RUNE)\n *\n * @param {AssetAmount} asset\n * @returns {BaseAmount} The base amount from the given AssetAmount.\n * */\nexport const assetToBase = (asset: AssetAmount): BaseAmount => {\n const value = asset\n .amount()\n .multipliedBy(10 ** asset.decimal)\n .integerValue()\n return baseAmount(value, asset.decimal)\n}\n\n/**\n * Guard to check whether value is an amount of asset or not\n *\n * @param {BaseAmount|AssetAmount} v\n * @returns {boolean} `true` or `false`.\n * */\nexport const isAssetAmount = (v: Amounts): v is AssetAmount => (v as AssetAmount).type === Denomination.ASSET\n\n/**\n * Guard to check whether value is an amount of a base value or not\n *\n * @param {BaseAmount|AssetAmount} v\n * @returns {boolean} `true` or `false`.\n * */\nexport const isBaseAmount = (v: Amounts): v is BaseAmount => (v as BaseAmount).type === Denomination.BASE\n\n/**\n * Formats an `AssetAmount` into `string` based on decimal places\n *\n * If `decimal` is not set, `amount.decimal` is used\n * Note: `trimZeros` wins over `decimal`\n *\n * @param {Params} param The asset amount format options.\n * @returns {string} The formatted asset amount string from the given options.\n */\nexport const formatAssetAmount = ({\n amount,\n decimal,\n trimZeros = false,\n}: {\n amount: AssetAmount\n decimal?: number\n trimZeros?: boolean\n}) => {\n const formatted = formatBN(amount.amount(), decimal || amount.decimal)\n // Note: `trimZeros` wins over `decimal`\n return trimZeros ? trimZerosHelper(formatted) : formatted\n}\n\n/**\n * Formats a `BaseAmount` value into a `string`\n *\n * @param {BaseAmount} amount\n * @returns {string} The formatted base amount string from the given base amount.\n */\nexport const formatBaseAmount = (amount: BaseAmount) => formatBN(amount.amount(), 0)\n\n/**\n * Base \"chain\" asset of Binance chain.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetBNB: Asset = { chain: BNBChain, symbol: 'BNB', ticker: 'BNB' }\n\n/**\n * Base \"chain\" asset on bitcoin main net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetBTC: Asset = { chain: BTCChain, symbol: 'BTC', ticker: 'BTC' }\n\n/**\n * Base \"chain\" asset on litecoin main net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetLTC: Asset = { chain: LTCChain, symbol: 'LTC', ticker: 'LTC' }\n\n/**\n * Base \"chain\" asset on ethereum main net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetETH: Asset = { chain: ETHChain, symbol: 'ETH', ticker: 'ETH' }\n\nexport const RUNE_TICKER = 'RUNE'\n\n/**\n * Base \"chain\" asset for RUNE-67C on Binance test net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetRune67C: Asset = { chain: BNBChain, symbol: 'RUNE-67C', ticker: RUNE_TICKER }\n\n/**\n * Base \"chain\" asset for RUNE-B1A on Binance main net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetRuneB1A: Asset = { chain: BNBChain, symbol: 'RUNE-B1A', ticker: RUNE_TICKER }\n\n/**\n * Base \"chain\" asset on thorchain main net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetRuneNative: Asset = { chain: THORChain, symbol: RUNE_TICKER, ticker: RUNE_TICKER }\n\n/**\n * Helper to check whether asset is valid\n *\n * @param {Asset} asset\n * @returns {boolean} `true` or `false`\n */\nexport const isValidAsset = (asset: Asset): boolean => !!asset.chain && !!asset.ticker && !!asset.symbol\n\n/**\n * Creates an `Asset` by a given string\n *\n * This helper function expects a string with following naming convention:\n * `AAA.BBB-CCC`\n * where\n * chain: `AAA`\n * ticker (optional): `BBB`\n * symbol: `BBB-CCC` or `CCC` (if no ticker available)\n *\n * @see https://docs.thorchain.org/developers/transaction-memos#asset-notation\n *\n * If the naming convention fails, it returns null\n *\n * @param {string} s The given string.\n * @returns {Asset|null} The asset from the given string.\n */\nexport const assetFromString = (s: string): Asset | null => {\n const data = s.split('.')\n if (data.length <= 1 || data[1]?.length < 1) {\n return null\n }\n\n const chain = data[0]\n // filter out not supported string of chains\n if (!chain || !isChain(chain)) return null\n\n const symbol = data[1]\n const ticker = symbol.split('-')[0]\n\n return { chain, symbol, ticker }\n}\n\n/**\n * Returns an `Asset` as a string using following naming convention:\n *\n * `AAA.BBB-CCC`\n * where\n * chain: `AAA`\n * ticker (optional): `BBB`\n * symbol: `BBB-CCC` or `CCC` (if no ticker available)\n *\n * @see https://docs.thorchain.org/developers/transaction-memos#asset-notation\n *\n * @param {Asset} asset The given asset.\n * @returns {string} The string from the given asset.\n */\nexport const assetToString = ({ chain, symbol }: Asset) => `${chain}.${symbol}`\n\n/**\n * Currency symbols currently supported\n */\nexport enum AssetCurrencySymbol {\n RUNE = 'ᚱ',\n BTC = '₿',\n SATOSHI = '⚡',\n ETH = 'Ξ',\n USD = '$',\n}\n\n/**\n * Returns currency symbols by given `Asset`\n *\n * @param {Asset} asset The given asset.\n * @returns {string} The currency symbol from the given asset.\n */\nexport const currencySymbolByAsset = ({ ticker }: Asset) => {\n switch (true) {\n case ticker === RUNE_TICKER:\n return AssetCurrencySymbol.RUNE\n case ticker === AssetBTC.ticker:\n return AssetCurrencySymbol.BTC\n case ticker === AssetETH.ticker:\n return AssetCurrencySymbol.ETH\n case ticker.includes('USD'):\n return AssetCurrencySymbol.USD\n default:\n return ticker\n }\n}\n\n/**\n * Formats an asset amount using its currency symbol\n *\n * If `decimal` is not set, `amount.decimal` is used\n * If `asset` is not set, `$` will be used as currency symbol by default\n * `trimZeros` is `false` by default\n * Note: `trimZeros` wins over `decimal`\n *\n * @param {Params} params The asset amount currency format options.\n * @return {string} The formatted asset amount string using its currency format.\n */\nexport const formatAssetAmountCurrency = ({\n amount,\n asset,\n decimal,\n trimZeros: shouldTrimZeros = false,\n}: {\n amount: AssetAmount\n asset?: Asset\n decimal?: number\n trimZeros?: boolean\n}) => {\n const amountFormatted = formatAssetAmount({ amount, decimal: decimal || amount.decimal, trimZeros: shouldTrimZeros })\n const ticker = asset?.ticker ?? ''\n\n if (ticker) {\n // RUNE\n let regex = new RegExp(`${AssetRune67C.ticker}|${AssetRuneB1A.ticker}|${AssetRuneNative.ticker}`, 'i')\n if (ticker.match(regex)) return `${AssetCurrencySymbol.RUNE} ${amountFormatted}`\n // BTC\n regex = new RegExp(AssetBTC.ticker, 'i')\n if (ticker.match(new RegExp(AssetBTC.ticker, 'i'))) {\n const base = assetToBase(amount)\n // format all < ₿ 0.01 in statoshi\n if (base.amount().isLessThanOrEqualTo('1000000')) {\n return `${AssetCurrencySymbol.SATOSHI} ${formatBaseAmount(base)}`\n }\n return `${AssetCurrencySymbol.BTC} ${amountFormatted}`\n }\n // ETH\n regex = new RegExp(AssetETH.ticker, 'i')\n if (ticker.match(regex)) return `${AssetCurrencySymbol.ETH} ${amountFormatted}`\n // USD\n regex = new RegExp('USD', 'i')\n if (ticker.match('USD')) return `${AssetCurrencySymbol.USD} ${amountFormatted}`\n\n return `${amountFormatted} (${ticker})`\n }\n\n return `$ ${amountFormatted}`\n}\n\n/**\n * Formats a `BaseAmount` into a string of an `AssetAmount`\n *\n * If `decimal` is not set, `amount.decimal` is used\n * Note: `trimZeros` wins over `decimal`\n *\n * @param {Params} params The base amount currency format options.\n * @return {string} The formatted base amount string using its currency format.\n */\nexport const formatBaseAsAssetAmount = ({\n amount,\n decimal,\n trimZeros = false,\n}: {\n amount: BaseAmount\n decimal?: number\n trimZeros?: boolean\n}) => formatAssetAmount({ amount: baseToAsset(amount), decimal, trimZeros })\n"],"names":["BigNumber","Denomination","trimZeros","trimZerosHelper","AssetCurrencySymbol"],"mappings":";;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;IAkBa,KAAK,GAAG,UAAC,EAAU,IAAK,OAAA,IAAI,OAAO,CAAC,UAAC,OAAO,IAAK,OAAA,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,GAAA,CAAC;;AChBtF;;;;;;IAMM,EAAE,GAAG,UAAC,KAAsB,IAAK,OAAA,IAAIA,6BAAS,CAAC,KAAK,CAAC,IAAA;AAE3D;;;;;;IAMa,SAAS,GAAG,UAAC,KAAgB,IAAK,OAAA,CAAC,KAAK,CAAC,KAAK,EAAE,IAAA;AAE7D;;;;;;;IAOa,QAAQ,GAAG,UAAC,KAAkC;IACzD,IAAM,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;IACnC,OAAO,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;AACjC,EAAC;AAED;;;;;;;IAOa,aAAa,GAAG,UAAC,KAA4B,IAAK,QAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,KAAC;AAE1G;;;;;;;IAOa,QAAQ,GAAG,UAAC,KAAgB,EAAE,OAAW;IAAX,wBAAA,EAAA,WAAW;IAAK,OAAA,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;AAAvB,EAAuB;AAElF;;;;AAIA,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,iCAAe,CAAA;AACjB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AACD;;;;;;;;;IASa,gBAAgB,GAAG,UAC9B,CAAY,EACZ,aAAiB,EACjB,MAAY,EACZ,QAAgD;IAFhD,8BAAA,EAAA,iBAAiB;IACjB,uBAAA,EAAA,YAAY;IACZ,yBAAA,EAAA,WAA2B,cAAc,CAAC,MAAM;IAEhD,IAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,EAAE,aAAa,CAAC,CAAA;IACxC,IAAI,QAAQ,KAAK,cAAc,CAAC,MAAM,EAAE;QACtC,OAAO,KAAG,MAAM,GAAG,KAAO,CAAA;KAC3B;IACD,OAAO,KAAG,KAAK,GAAG,MAAQ,CAAA;AAC5B,EAAC;AAED;;;;;;;;IAQa,OAAO,GAAG,UAAC,KAA8C,EAAE,aAAiB;IAAjB,8BAAA,EAAA,iBAAiB;IACvF,IAAM,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAA;IACxB,IAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;IACtF,OAAO,EAAE,CAAC,OAAO,CAAC,CAAA;AACpB;;AC1FA;;;;;;;;IAQa,SAAS,GAAG,UAAC,KAAa;IACrC,OAAA,KAAK;;SAEF,OAAO,CAAC,0BAA0B,EAAE,IAAI,CAAC;;SAEzC,OAAO,CAAC,uBAAuB,EAAE,IAAI,CAAC;AAJzC;;ACTF;;;IAGa,QAAQ,GAAG,MAAK;AAC7B;;;IAGa,QAAQ,GAAG,MAAK;AAC7B;;;IAGa,QAAQ,GAAG,MAAK;AAC7B;;;IAGa,SAAS,GAAG,OAAM;AAC/B;;;IAGa,WAAW,GAAG,OAAM;AACjC;;;IAGa,aAAa,GAAG,QAAO;AACpC;;;IAGa,QAAQ,GAAG,MAAK;AAC7B;;;IAGa,QAAQ,GAAG,MAAK;AAE7B;;;IAGa,MAAM,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ;;ACjC9G;;;;;;IAMa,OAAO,GAAG,UAAC,CAAS,IAAiB,OAAA,MAAM,CAAC,QAAQ,CAAC,CAAU,CAAC,IAAA;AAE7E;;;;;;IAMa,aAAa,GAAG,UAAC,OAAc;IAC1C,QAAQ,OAAO;QACb,KAAK,MAAM;YACT,OAAO,WAAW,CAAA;QACpB,KAAK,KAAK;YACR,OAAO,SAAS,CAAA;QAClB,KAAK,KAAK;YACR,OAAO,UAAU,CAAA;QACnB,KAAK,KAAK;YACR,OAAO,UAAU,CAAA;QACnB,KAAK,KAAK;YACR,OAAO,eAAe,CAAA;QACxB,KAAK,MAAM;YACT,OAAO,QAAQ,CAAA;QACjB,KAAK,OAAO;YACV,OAAO,UAAU,CAAA;QACnB;YACE,OAAO,eAAe,CAAA;KACzB;AACH;;ACjCA,WAAY,YAAY;;;;IAItB,6BAAa,CAAA;;;;IAIb,+BAAe,CAAA;AACjB,CAAC,EATWC,oBAAY,KAAZA,oBAAY;;ACIxB;;;;;;;;;;AAUA,IAAM,aAAa,GAAG,CAAC,CAAA;AAEvB;;;;;;;;IAQa,WAAW,GAAG,UAAC,KAA8C,EAAE,OAA+B;IAA/B,wBAAA,EAAA,uBAA+B;IACzG,QAAC;QACC,IAAI,EAAEA,oBAAY,CAAC,KAAK;QACxB,MAAM,EAAE,cAAM,OAAA,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAA;QACrC,OAAO,SAAA;KACQ;AAJjB,EAIiB;AAEnB;;;;;;;IAOa,UAAU,GAAG,UAAC,KAA8C,EAAE,OAA+B;IAA/B,wBAAA,EAAA,uBAA+B;IACxG,QAAC;QACC,IAAI,EAAEA,oBAAY,CAAC,IAAI;QACvB,MAAM,EAAE,cAAM,OAAA,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,GAAA;QAC/B,OAAO,SAAA;KACO;AAJhB,EAIgB;AAElB;;;;;;IAMa,WAAW,GAAG,UAAC,IAAgB;IAC1C,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;IAC5B,IAAM,KAAK,GAAG,IAAI;SACf,MAAM,EAAE;SACR,GAAG,CAAC,SAAA,EAAE,EAAI,OAAO,CAAA,CAAC;SAClB,aAAa,CAAC,OAAO,CAAC,CAAA;IACzB,OAAO,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AACpC,EAAC;AAED;;;;;;IAMa,WAAW,GAAG,UAAC,KAAkB;IAC5C,IAAM,KAAK,GAAG,KAAK;SAChB,MAAM,EAAE;SACR,YAAY,CAAC,SAAA,EAAE,EAAI,KAAK,CAAC,OAAO,CAAA,CAAC;SACjC,YAAY,EAAE,CAAA;IACjB,OAAO,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;AACzC,EAAC;AAED;;;;;;IAMa,aAAa,GAAG,UAAC,CAAU,IAAuB,OAAC,CAAiB,CAAC,IAAI,KAAKA,oBAAY,CAAC,KAAK,IAAA;AAE7G;;;;;;IAMa,YAAY,GAAG,UAAC,CAAU,IAAsB,OAAC,CAAgB,CAAC,IAAI,KAAKA,oBAAY,CAAC,IAAI,IAAA;AAEzG;;;;;;;;;IASa,iBAAiB,GAAG,UAAC,EAQjC;QAPC,MAAM,YAAA,EACN,OAAO,aAAA,EACP,iBAAiB,EAAjBC,WAAS,mBAAG,KAAK,KAAA;IAMjB,IAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAA;;IAEtE,OAAOA,WAAS,GAAGC,SAAe,CAAC,SAAS,CAAC,GAAG,SAAS,CAAA;AAC3D,EAAC;AAED;;;;;;IAMa,gBAAgB,GAAG,UAAC,MAAkB,IAAK,OAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAA;AAEpF;;;;;;IAMa,QAAQ,GAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE;AAEhF;;;;;;IAMa,QAAQ,GAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE;AAEhF;;;;;;IAMa,QAAQ,GAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE;AAEhF;;;;;;IAMa,QAAQ,GAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE;IAEnE,WAAW,GAAG,OAAM;AAEjC;;;;;;IAMa,YAAY,GAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,GAAE;AAE/F;;;;;;IAMa,YAAY,GAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,GAAE;AAE/F;;;;;;IAMa,eAAe,GAAU,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,GAAE;AAEpG;;;;;;IAMa,YAAY,GAAG,UAAC,KAAY,IAAc,OAAA,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,IAAA;AAExG;;;;;;;;;;;;;;;;;IAiBa,eAAe,GAAG,UAAC,CAAS;;IACvC,IAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACzB,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,OAAA,IAAI,CAAC,CAAC,CAAC,0CAAE,MAAM,IAAG,CAAC,EAAE;QAC3C,OAAO,IAAI,CAAA;KACZ;IAED,IAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;;IAErB,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAE1C,IAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IACtB,IAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAEnC,OAAO,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,MAAM,QAAA,EAAE,CAAA;AAClC,EAAC;AAED;;;;;;;;;;;;;;IAca,aAAa,GAAG,UAAC,EAAwB;QAAtB,KAAK,WAAA,EAAE,MAAM,YAAA;IAAc,OAAG,KAAK,SAAI,MAAQ;AAApB,EAAoB;AAK/E,WAAY,mBAAmB;IAC7B,sCAAU,CAAA;IACV,qCAAS,CAAA;IACT,yCAAa,CAAA;IACb,qCAAS,CAAA;IACT,gCAAS,CAAA;AACX,CAAC,EANWC,2BAAmB,KAAnBA,2BAAmB,QAM9B;AAED;;;;;;IAMa,qBAAqB,GAAG,UAAC,EAAiB;QAAf,MAAM,YAAA;IAC5C,QAAQ,IAAI;QACV,KAAK,MAAM,KAAK,WAAW;YACzB,OAAOA,2BAAmB,CAAC,IAAI,CAAA;QACjC,KAAK,MAAM,KAAK,QAAQ,CAAC,MAAM;YAC7B,OAAOA,2BAAmB,CAAC,GAAG,CAAA;QAChC,KAAK,MAAM,KAAK,QAAQ,CAAC,MAAM;YAC7B,OAAOA,2BAAmB,CAAC,GAAG,CAAA;QAChC,KAAK,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YACzB,OAAOA,2BAAmB,CAAC,GAAG,CAAA;QAChC;YACE,OAAO,MAAM,CAAA;KAChB;AACH,EAAC;AAED;;;;;;;;;;;IAWa,yBAAyB,GAAG,UAAC,EAUzC;;QATC,MAAM,YAAA,EACN,KAAK,WAAA,EACL,OAAO,aAAA,EACP,iBAAkC,EAAvB,eAAe,mBAAG,KAAK,KAAA;IAOlC,IAAM,eAAe,GAAG,iBAAiB,CAAC,EAAE,MAAM,QAAA,EAAE,OAAO,EAAE,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAA;IACrH,IAAM,MAAM,SAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,mCAAI,EAAE,CAAA;IAElC,IAAI,MAAM,EAAE;;QAEV,IAAI,KAAK,GAAG,IAAI,MAAM,CAAI,YAAY,CAAC,MAAM,SAAI,YAAY,CAAC,MAAM,SAAI,eAAe,CAAC,MAAQ,EAAE,GAAG,CAAC,CAAA;QACtG,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;YAAE,OAAUA,2BAAmB,CAAC,IAAI,SAAI,eAAiB,CAAA;;QAEhF,KAAK,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QACxC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE;YAClD,IAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;;YAEhC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE;gBAChD,OAAUA,2BAAmB,CAAC,OAAO,SAAI,gBAAgB,CAAC,IAAI,CAAG,CAAA;aAClE;YACD,OAAUA,2BAAmB,CAAC,GAAG,SAAI,eAAiB,CAAA;SACvD;;QAED,KAAK,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QACxC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;YAAE,OAAUA,2BAAmB,CAAC,GAAG,SAAI,eAAiB,CAAA;;QAE/E,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QAC9B,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;YAAE,OAAUA,2BAAmB,CAAC,GAAG,SAAI,eAAiB,CAAA;QAE/E,OAAU,eAAe,UAAK,MAAM,MAAG,CAAA;KACxC;IAED,OAAO,OAAK,eAAiB,CAAA;AAC/B,EAAC;AAED;;;;;;;;;IASa,uBAAuB,GAAG,UAAC,EAQvC;QAPC,MAAM,YAAA,EACN,OAAO,aAAA,EACP,iBAAiB,EAAjB,SAAS,mBAAG,KAAK,KAAA;IAKb,OAAA,iBAAiB,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,SAAA,EAAE,SAAS,WAAA,EAAE,CAAC;AAAtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} | ||
| {"version":3,"file":"index.js","sources":["../src/async.ts","../src/bn.ts","../src/string.ts","../src/chain.const.ts","../src/chain.ts","../src/types/index.ts","../src/asset.ts"],"sourcesContent":["/**\n * Helper to delay anything within an `async` function\n *\n * @param ms delay in milliseconds\n *\n * @example\n *\n * ```\n * const anyAsyncFunc = async () => {\n * // do something\n * console.log('before delay')\n * // wait for 200ms\n * await delay(200)\n * // and do other things\n * console.log('after delay')\n * }\n * ```\n */\nexport const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms))\n","import BigNumber from 'bignumber.js'\n\n/**\n * Shortcut to create a BigNumber\n *\n * @param {string | number | BigNumber.Instance} value\n * @returns {BigNumber} The BigNumber interface from the given value.\n */\nconst bn = (value: BigNumber.Value) => new BigNumber(value)\n\n/**\n * Helper to check whether a BigNumber is valid or not\n *\n * @param {BigNumber} value\n * @returns {boolean} `true` or `false`.\n * */\nexport const isValidBN = (value: BigNumber) => !value.isNaN()\n\n/**\n * Helper to create a big number from string or number\n * If it fails to create a big number, a big number with value 0 will be returned instead\n *\n * @param {string|number|undefined} value\n * @returns {BigNumber} The BigNumber interface from the given value. If invalid one is provided, will return `0`.\n * */\nexport const bnOrZero = (value: string | number | undefined) => {\n const b = value ? bn(value) : bn(0)\n return isValidBN(b) ? b : bn(0)\n}\n\n/**\n * Helper to validate a possible BigNumber\n * If the given valie is invalid or undefined, 0 is returned as a BigNumber\n *\n * @param {BigNumber|undefined} value\n * @returns {boolean} `true` or `false`.\n */\nexport const validBNOrZero = (value: BigNumber | undefined) => (value && isValidBN(value) ? value : bn(0))\n\n/**\n * Format a BaseNumber to a string depending on given decimal places\n *\n * @param {BigNumber} value\n * @param {number} decimal The decimal place. (optional)\n * @returns {string} The formatted string from the given BigNumber and decimal place.\n * */\nexport const formatBN = (value: BigNumber, decimal = 2) => value.toFormat(decimal)\n\n/**\n * The enumuration for symbol position.\n * `before` or `after`\n */\nexport enum SymbolPosition {\n BEFORE = 'before',\n AFTER = 'after',\n}\n/**\n * Formats a big number value by prefixing it with `$`\n *\n * @param {BigNumber} n\n * @param {number} decimalPlaces The decimal place. (optional)\n * @param {string} symbol The currency symbol. (optional)\n * @param {position} position The symbol position. (optional)\n * @returns {string} The formatted string from the given BigNumber, decimal places, symbol and position.\n */\nexport const formatBNCurrency = (\n n: BigNumber,\n decimalPlaces = 2,\n symbol = '$',\n position: SymbolPosition = SymbolPosition.BEFORE,\n) => {\n const value = formatBN(n, decimalPlaces)\n if (position === SymbolPosition.BEFORE) {\n return `${symbol}${value}`\n }\n return `${value}${symbol}`\n}\n\n/**\n * Helper to get a fixed `BigNumber`\n * Returns zero `BigNumber` if `value` is invalid\n *\n * @param {number|string|BigNumber|undefined} value\n * @param {number} decimalPlaces The decimal place. (optional)\n * @returns {BigNumber} The BigNumber interface from the given value and decimal.\n * */\nexport const fixedBN = (value: number | string | BigNumber | undefined, decimalPlaces = 2): BigNumber => {\n const n = bn(value || 0)\n const fixedBN = isValidBN(n) ? n.toFixed(decimalPlaces) : bn(0).toFixed(decimalPlaces)\n return bn(fixedBN)\n}\n\nexport default bn\n","/**\n * Removes leading / trailing zeros from a string of numbers\n * (1) Regex to remove trailing zeros https://stackoverflow.com/a/53397618/2032698\n * (2) Regex to remove leading zeros https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch06s06.html\n *\n * @param {string} value\n * @returns {string} The result after removing trailing zeros.\n */\nexport const trimZeros = (value: string) =>\n value\n // (1) remove trailing zeros\n .replace(/(\\.[0-9]*[1-9])0+$|\\.0*$/, '$1')\n // (2) remove leading zeros\n .replace(/\\b0*([1-9][0-9]*|0)\\b/, '$1')\n","/**\n * Binance Chain\n */\nexport const BNBChain = 'BNB'\n/**\n * Bitcoin Chain\n */\nexport const BTCChain = 'BTC'\n/**\n * Ethereum Chain\n */\nexport const ETHChain = 'ETH'\n/**\n * Thorchain\n */\nexport const THORChain = 'THOR'\n/**\n * Cosmos Chain\n */\nexport const CosmosChain = 'GAIA'\n/**\n * Polkadot Chain\n */\nexport const PolkadotChain = 'POLKA'\n/**\n * Bitcoin Cash\n */\nexport const BCHChain = 'BCH'\n/**\n * Litecoin Chain\n */\nexport const LTCChain = 'LTC'\n\n/**\n * All possible chains XChainJS currently supports\n * */\nexport const chains = [BNBChain, BTCChain, ETHChain, THORChain, CosmosChain, PolkadotChain, BCHChain, LTCChain] as const\n","import { chains } from './chain.const'\nimport { Chain } from './types'\n\n/**\n * Type guard to check whether string is based on type `Chain`\n *\n * @param {string} c The chain string.\n * @returns {boolean} `true` or `false`\n */\nexport const isChain = (c: string): c is Chain => chains.includes(c as Chain)\n\n/**\n * Convert chain to string.\n *\n * @param {Chain} chainId.\n * @returns {string} The string based on the given chain type.\n */\nexport const chainToString = (chainId: Chain) => {\n switch (chainId) {\n case 'THOR':\n return 'Thorchain'\n case 'BTC':\n return 'Bitcoin'\n case 'LTC':\n return 'Litecoin'\n case 'ETH':\n return 'Ethereum'\n case 'BNB':\n return 'Binance Chain'\n case 'GAIA':\n return 'Cosmos'\n case 'POLKA':\n return 'Polkadot'\n default:\n return 'unknown chain'\n }\n}\n","import BigNumber from 'bignumber.js'\nimport { chains } from '../chain.const'\n\nexport enum Denomination {\n /**\n * values for asset amounts in base units (no decimal)\n */\n BASE = 'BASE',\n /**\n * values of asset amounts (w/ decimal)\n */\n ASSET = 'ASSET',\n}\n\ntype Amount<T> = {\n type: T\n amount: () => BigNumber\n decimal: number\n}\n\nexport type BaseAmount = Amount<Denomination.BASE>\nexport type AssetAmount = Amount<Denomination.ASSET>\n\nexport type Amounts = AssetAmount | BaseAmount\n\n// Chain type to includes types of all possible chains\nexport type Chain = typeof chains[number]\n\nexport type Asset = {\n chain: Chain\n symbol: string\n ticker: string\n}\n","import BigNumber from 'bignumber.js'\nimport { fixedBN, formatBN } from './bn'\nimport { trimZeros as trimZerosHelper } from './string'\nimport { BTCChain, LTCChain, BNBChain, ETHChain, THORChain, BCHChain } from './chain.const'\nimport { isChain } from './chain'\nimport { Denomination, AssetAmount, BaseAmount, Amounts, Asset } from './types'\n\n/**\n * Default number of asset decimals\n * For history reason and by starting the project on Binance chain assets, it's 8 decimal.\n *\n * For example:\n * ```\n * RUNE has a maximum of 8 digits of decimal\n * 0.00000001 RUNE == 1 ð (tor)\n * ```\n * */\nconst ASSET_DECIMAL = 8\n\n/**\n * Factory to create values of assets (e.g. RUNE)\n *\n * @param {string|number|BigNumber|undefined} value - The asset amount, If the value is undefined, AssetAmount with value `0` will be returned.\n * @param {number} decimal The decimal places. (optional)\n * @returns {AssetAmount} The asset amount from the given value and decimal.\n *\n **/\nexport const assetAmount = (value: string | number | BigNumber | undefined, decimal: number = ASSET_DECIMAL) =>\n ({\n type: Denomination.ASSET,\n amount: () => fixedBN(value, decimal),\n decimal,\n } as AssetAmount)\n\n/**\n * Factory to create base amounts (e.g. tor)\n *\n * @param {string|number|BigNumber|undefined} value - The base amount, If the value is undefined, BaseAmount with value `0` will be returned.\n * @param {number} decimal The decimal places of its associated AssetAmount. (optional)\n * @returns {BaseAmount} The base amount from the given value and decimal.\n **/\nexport const baseAmount = (value: string | number | BigNumber | undefined, decimal: number = ASSET_DECIMAL) =>\n ({\n type: Denomination.BASE,\n amount: () => fixedBN(value, 0),\n decimal,\n } as BaseAmount)\n\n/**\n * Helper to convert values for a asset from base values (e.g. RUNE from tor)\n *\n * @param {BaseAmount} base\n * @returns {AssetAmount} The asset amount from the given base amount.\n * */\nexport const baseToAsset = (base: BaseAmount): AssetAmount => {\n const decimal = base.decimal\n const value = base\n .amount()\n .div(10 ** decimal)\n .decimalPlaces(decimal)\n return assetAmount(value, decimal)\n}\n\n/**\n * Helper to convert asset to base values (e.g. tor -> RUNE)\n *\n * @param {AssetAmount} asset\n * @returns {BaseAmount} The base amount from the given AssetAmount.\n * */\nexport const assetToBase = (asset: AssetAmount): BaseAmount => {\n const value = asset\n .amount()\n .multipliedBy(10 ** asset.decimal)\n .integerValue()\n return baseAmount(value, asset.decimal)\n}\n\n/**\n * Guard to check whether value is an amount of asset or not\n *\n * @param {BaseAmount|AssetAmount} v\n * @returns {boolean} `true` or `false`.\n * */\nexport const isAssetAmount = (v: Amounts): v is AssetAmount => (v as AssetAmount).type === Denomination.ASSET\n\n/**\n * Guard to check whether value is an amount of a base value or not\n *\n * @param {BaseAmount|AssetAmount} v\n * @returns {boolean} `true` or `false`.\n * */\nexport const isBaseAmount = (v: Amounts): v is BaseAmount => (v as BaseAmount).type === Denomination.BASE\n\n/**\n * Formats an `AssetAmount` into `string` based on decimal places\n *\n * If `decimal` is not set, `amount.decimal` is used\n * Note: `trimZeros` wins over `decimal`\n *\n * @param {Params} param The asset amount format options.\n * @returns {string} The formatted asset amount string from the given options.\n */\nexport const formatAssetAmount = ({\n amount,\n decimal,\n trimZeros = false,\n}: {\n amount: AssetAmount\n decimal?: number\n trimZeros?: boolean\n}) => {\n // strict check for `undefined` value as negate of 0 will return true and passed decimal value will be ignored\n const formatted = formatBN(amount.amount(), decimal === undefined ? amount.decimal : decimal)\n // Note: `trimZeros` wins over `decimal`\n return trimZeros ? trimZerosHelper(formatted) : formatted\n}\n\n/**\n * Formats a `BaseAmount` value into a `string`\n *\n * @param {BaseAmount} amount\n * @returns {string} The formatted base amount string from the given base amount.\n */\nexport const formatBaseAmount = (amount: BaseAmount) => formatBN(amount.amount(), 0)\n\n/**\n * Base \"chain\" asset of Binance chain.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetBNB: Asset = { chain: BNBChain, symbol: 'BNB', ticker: 'BNB' }\n\n/**\n * Base \"chain\" asset on bitcoin main net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetBTC: Asset = { chain: BTCChain, symbol: 'BTC', ticker: 'BTC' }\n\n/**\n * Base \"chain\" asset on bitcoin cash main net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetBCH: Asset = { chain: BCHChain, symbol: 'BCH', ticker: 'BCH' }\n\n/**\n * Base \"chain\" asset on litecoin main net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetLTC: Asset = { chain: LTCChain, symbol: 'LTC', ticker: 'LTC' }\n\n/**\n * Base \"chain\" asset on ethereum main net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetETH: Asset = { chain: ETHChain, symbol: 'ETH', ticker: 'ETH' }\n\nexport const RUNE_TICKER = 'RUNE'\n\n/**\n * Base \"chain\" asset for RUNE-67C on Binance test net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetRune67C: Asset = { chain: BNBChain, symbol: 'RUNE-67C', ticker: RUNE_TICKER }\n\n/**\n * Base \"chain\" asset for RUNE-B1A on Binance main net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetRuneB1A: Asset = { chain: BNBChain, symbol: 'RUNE-B1A', ticker: RUNE_TICKER }\n\n/**\n * Base \"chain\" asset on thorchain main net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetRuneNative: Asset = { chain: THORChain, symbol: RUNE_TICKER, ticker: RUNE_TICKER }\n\n/**\n * Base \"chain\" asset for RUNE on ethereum main net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetRuneERC20: Asset = {\n chain: ETHChain,\n symbol: `${RUNE_TICKER}-0x3155ba85d5f96b2d030a4966af206230e46849cb`,\n ticker: RUNE_TICKER,\n}\n\n/**\n * Base \"chain\" asset for RUNE on ethereum main net.\n *\n * Based on definition in Thorchain `common`\n * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24\n */\nexport const AssetRuneERC20Testnet: Asset = {\n chain: ETHChain,\n symbol: `${RUNE_TICKER}-0xd601c6A3a36721320573885A8d8420746dA3d7A0`,\n ticker: RUNE_TICKER,\n}\n\n/**\n * Helper to check whether asset is valid\n *\n * @param {Asset} asset\n * @returns {boolean} `true` or `false`\n */\nexport const isValidAsset = (asset: Asset): boolean => !!asset.chain && !!asset.ticker && !!asset.symbol\n\n/**\n * Creates an `Asset` by a given string\n *\n * This helper function expects a string with following naming convention:\n * `AAA.BBB-CCC`\n * where\n * chain: `AAA`\n * ticker (optional): `BBB`\n * symbol: `BBB-CCC` or `CCC` (if no ticker available)\n *\n * @see https://docs.thorchain.org/developers/transaction-memos#asset-notation\n *\n * If the naming convention fails, it returns null\n *\n * @param {string} s The given string.\n * @returns {Asset|null} The asset from the given string.\n */\nexport const assetFromString = (s: string): Asset | null => {\n const data = s.split('.')\n if (data.length <= 1 || data[1]?.length < 1) {\n return null\n }\n\n const chain = data[0]\n // filter out not supported string of chains\n if (!chain || !isChain(chain)) return null\n\n const symbol = data[1]\n const ticker = symbol.split('-')[0]\n\n return { chain, symbol, ticker }\n}\n\n/**\n * Returns an `Asset` as a string using following naming convention:\n *\n * `AAA.BBB-CCC`\n * where\n * chain: `AAA`\n * ticker (optional): `BBB`\n * symbol: `BBB-CCC` or `CCC` (if no ticker available)\n *\n * @see https://docs.thorchain.org/developers/transaction-memos#asset-notation\n *\n * @param {Asset} asset The given asset.\n * @returns {string} The string from the given asset.\n */\nexport const assetToString = ({ chain, symbol }: Asset) => `${chain}.${symbol}`\n\n/**\n * Currency symbols currently supported\n */\nexport enum AssetCurrencySymbol {\n RUNE = 'ᚱ',\n BTC = '₿',\n SATOSHI = '⚡',\n ETH = 'Ξ',\n USD = '$',\n}\n\n/**\n * Returns currency symbols by given `Asset`\n *\n * @param {Asset} asset The given asset.\n * @returns {string} The currency symbol from the given asset.\n */\nexport const currencySymbolByAsset = ({ ticker }: Asset) => {\n switch (true) {\n case ticker === RUNE_TICKER:\n return AssetCurrencySymbol.RUNE\n case ticker === AssetBTC.ticker:\n return AssetCurrencySymbol.BTC\n case ticker === AssetETH.ticker:\n return AssetCurrencySymbol.ETH\n case ticker.includes('USD'):\n return AssetCurrencySymbol.USD\n default:\n return ticker\n }\n}\n\n/**\n * Formats an asset amount using its currency symbol\n *\n * If `decimal` is not set, `amount.decimal` is used\n * If `asset` is not set, `$` will be used as currency symbol by default\n * `trimZeros` is `false` by default\n * Note: `trimZeros` wins over `decimal`\n *\n * @param {Params} params The asset amount currency format options.\n * @return {string} The formatted asset amount string using its currency format.\n */\nexport const formatAssetAmountCurrency = ({\n amount,\n asset,\n decimal,\n trimZeros: shouldTrimZeros = false,\n}: {\n amount: AssetAmount\n asset?: Asset\n decimal?: number\n trimZeros?: boolean\n}) => {\n const amountFormatted = formatAssetAmount({\n amount,\n // strict check for `undefined` value as negate of 0 will return true and passed decimal value will be ignored\n decimal: decimal === undefined ? amount.decimal : decimal,\n trimZeros: shouldTrimZeros,\n })\n const ticker = asset?.ticker ?? ''\n\n if (ticker) {\n // RUNE\n let regex = new RegExp(`${AssetRune67C.ticker}|${AssetRuneB1A.ticker}|${AssetRuneNative.ticker}`, 'i')\n if (ticker.match(regex)) return `${AssetCurrencySymbol.RUNE} ${amountFormatted}`\n // BTC\n regex = new RegExp(AssetBTC.ticker, 'i')\n if (ticker.match(new RegExp(AssetBTC.ticker, 'i'))) {\n const base = assetToBase(amount)\n // format all < ₿ 0.01 in statoshi\n if (base.amount().isLessThanOrEqualTo('1000000')) {\n return `${AssetCurrencySymbol.SATOSHI} ${formatBaseAmount(base)}`\n }\n return `${AssetCurrencySymbol.BTC} ${amountFormatted}`\n }\n // ETH\n regex = new RegExp(AssetETH.ticker, 'i')\n if (ticker.match(regex)) return `${AssetCurrencySymbol.ETH} ${amountFormatted}`\n // USD\n regex = new RegExp('USD', 'i')\n if (ticker.match('USD')) return `${AssetCurrencySymbol.USD} ${amountFormatted}`\n\n return `${amountFormatted} (${ticker})`\n }\n\n return `$ ${amountFormatted}`\n}\n\n/**\n * Formats a `BaseAmount` into a string of an `AssetAmount`\n *\n * If `decimal` is not set, `amount.decimal` is used\n * Note: `trimZeros` wins over `decimal`\n *\n * @param {Params} params The base amount currency format options.\n * @return {string} The formatted base amount string using its currency format.\n */\nexport const formatBaseAsAssetAmount = ({\n amount,\n decimal,\n trimZeros = false,\n}: {\n amount: BaseAmount\n decimal?: number\n trimZeros?: boolean\n}) => formatAssetAmount({ amount: baseToAsset(amount), decimal, trimZeros })\n"],"names":["BigNumber","Denomination","trimZeros","trimZerosHelper","AssetCurrencySymbol"],"mappings":"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"} |
+1
-1
| { | ||
| "name": "@xchainjs/xchain-util", | ||
| "version": "0.2.2", | ||
| "version": "0.2.3", | ||
| "description": "Helper utilities for XChain clients", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
110720
6.68%1546
6.47%9
28.57%