@rhea-finance/cross-chain-sdk 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -14
- package/dist/index.cjs +705 -292
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +210 -144
- package/dist/index.d.ts +210 -144
- package/dist/index.js +696 -291
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/config/config.ts","../src/config/constantConfig.ts","../src/chains/near.ts","../src/chains/evm.ts","../src/chains/solana.ts","../src/chains/btc.ts","../src/types/contract-methods.ts","../src/utils/chainsUtil.ts","../src/action/actionUtil/commonTx.ts","../src/action/adjust.ts","../src/view/am.ts","../src/view/batch-views.ts","../src/view/get-booster-tokens.ts","../src/view/get-prices.ts","../src/view/centralized_api.ts","../src/view/get-all-metadata.ts","../src/view/get-assets.ts","../src/utils/numbers.ts","../src/utils/lendingUtil.ts","../src/utils/transformers/farms.ts","../src/utils/transformers/account.ts","../src/utils/transformers/asstets.ts","../src/view/get-portfolio.ts","../src/view/get-balance.ts","../src/view/get-farms.ts","../src/view/get-config.ts","../src/action/actionUtil/commonAction.ts","../src/action/borrow.ts","../src/action/createMca.ts","../src/action/repay.ts","../src/action/repayFromSupplied.ts","../src/action/supply.ts","../src/action/withdraw.ts","../src/action/addWallet.ts","../src/action/removeWallet.ts","../src/action/innnerWithdraw.ts","../src/action/claim.ts","../src/healthFactor/common.ts","../src/other/computeRelayerGas.ts","../src/other/getSimpleWithdrawData.ts"],"names":["keyStores","connect","Decimal","ViewMethodsLogic","ViewMethodsOracle","ViewMethodsPyth","ViewMethodsToken","ChangeMethodsLogic","ChangeMethodsOracle","config","crypto","omit","pick","getConfig","_"],"mappings":"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","file":"index.cjs","sourcesContent":["const INFURA_KEY = \"45ad2962c1b5465bb6fe62db0d35b42f\";\ninterface INEARConfig {\n networkId: string;\n nodeUrl: string;\n explorerUrl: string;\n LOGIC_CONTRACT_NAME: string;\n REF_EXCHANGE_ID: string;\n WRAP_NEAR_CONTRACT_ID: string;\n XRHEA_TOKEN_ID: string;\n PYTH_ORACLE_ID: string;\n indexUrl: string;\n dataServiceUrl: string;\n txIdApiUrl: string;\n AM_CONTRACT: string;\n NBTCTokenId: string;\n WBTC_TOKEN_ID: string;\n hiddenAssets: string[];\n oneClickUrl: string;\n RELAYER_ID: string;\n \n}\nlet customNodeUrl = \"\";\nexport const setCustomNodeUrl = (nodeUrl: string) => {\n customNodeUrl = nodeUrl;\n};\nfunction getConfig() {\n let NEAR_CONFIG: INEARConfig = {\n networkId: \"mainnet\",\n nodeUrl: customNodeUrl || \"https://nearinner.deltarpc.com\",\n explorerUrl: \"https://nearblocks.io\",\n LOGIC_CONTRACT_NAME: \"contract.main.burrow.near\",\n AM_CONTRACT: \"multica.near\",\n RELAYER_ID: \"bestdome534.near\",\n REF_EXCHANGE_ID: \"v2.ref-finance.near\",\n PYTH_ORACLE_ID: \"pyth-oracle.near\",\n WRAP_NEAR_CONTRACT_ID: \"wrap.near\",\n XRHEA_TOKEN_ID: \"xtoken.rhealab.near\",\n NBTCTokenId: \"nbtc.bridge.near\",\n WBTC_TOKEN_ID:\n \"2260fac5e5542a773aa44fbcfedf7c193bc2c599.factory.bridge.near\",\n indexUrl: \"https://api.rhea.finance\",\n dataServiceUrl: \"https://apidata.rhea.finance\",\n txIdApiUrl: \"https://api3.nearblocks.io\",\n oneClickUrl: \"https://1click.chaindefuser.com/v0\",\n hiddenAssets: [\n \"meta-token.near\",\n \"usn\",\n \"a663b02cf0a4b149d2ad41910cb81e23e1c41c32.factory.bridge.near\",\n \"4691937a7508860f876c9c0a2a617e7d9e945d4b.factory.bridge.near\",\n \"v2-nearx.stader-labs.near\",\n \"aurora\",\n \"token.burrow.near\",\n \"45.contract.portalbridge.near\",\n \"shadow_ref_v1-4179\"\n ],\n };\n return {\n NEAR: NEAR_CONFIG,\n BTC: {},\n SOLANA: {\n nodeUrl: \"https://swr.xnftdata.com/rpc-proxy/\",\n },\n EVM: {\n chains: {\n arbitrum: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://arbiscan.io\",\n chainId: 42161,\n whChainId: 23,\n id: \"0xA4B1\",\n token: \"ETH\",\n label: \"Arbitrum\",\n rpcUrl: \"https://public-arb-mainnet.fastnode.io\",\n },\n aurora: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://explorer.aurora.dev\",\n chainId: 1313161554,\n id: \"0x4e454152\",\n token: \"ETH\",\n label: \"Aurora\",\n rpcUrl: \"https://mainnet.aurora.dev\",\n },\n avalanche: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://cchain.explorer.avax.network\",\n chainId: 43114,\n id: \"0xa86a\",\n token: \"AVAX\",\n label: \"Avalanche\",\n rpcUrl: \"https://avalanche.drpc.org\",\n },\n base: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://basescan.org\",\n chainId: 8453,\n whChainId: 30,\n id: \"0x2105\",\n token: \"ETH\",\n label: \"Base\",\n rpcUrl: \"https://mainnet.base.org\",\n },\n ethereum: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://etherscan.io\",\n chainId: 1,\n whChainId: 2,\n id: \"0x1\",\n token: \"ETH\",\n label: `Ethereum`,\n rpcUrl: \"https://mainnet.gateway.tenderly.co/\",\n },\n flare: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://flare-explorer.flare.network\",\n chainId: 14,\n id: \"0xe\",\n token: \"FLR\",\n label: \"Flare\",\n rpcUrl: \"https://flare-api.flare.network/ext/C/rpc\",\n },\n mantle: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://explorer.mantle.xyz\",\n chainId: 5000,\n id: \"0x1388\",\n token: \"MNT\",\n label: \"Mantle\",\n rpcUrl: \"https://rpc.mantle.xyz/\",\n },\n optimism: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://optimistic.etherscan.io\",\n chainId: 10,\n whChainId: 24,\n id: \"0xa\",\n token: \"ETH\",\n label: \"Optimism\",\n rpcUrl: \"https://mainnet.optimism.io\",\n },\n polygon: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://polygonscan.com\",\n chainId: 137,\n whChainId: 5,\n id: \"0x89\",\n token: \"MATIC\",\n label: \"Polygon\",\n rpcUrl: \"https://rpc-mainnet.matic.quiknode.pro\",\n },\n scroll: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://scrollscan.com\",\n chainId: 534352,\n id: \"0x82750\",\n token: \"ETH\",\n label: \"Scroll\",\n rpcUrl: \"https://rpc.ankr.com/scroll\",\n },\n sei: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://seitrace.com\",\n chainId: 1329,\n id: \"0x531\",\n token: \"SEI\",\n label: \"SEI\",\n rpcUrl: \"https://evm-rpc.sei-apis.com\",\n },\n taiko: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://taikoscan.io\",\n chainId: 167000,\n id: \"0x28c58\",\n token: \"ETH\",\n label: \"TAIKO\",\n rpcUrl: \"https://rpc.taiko.xyz\",\n },\n bsc: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://bscscan.com\",\n chainId: 56,\n whChainId: 4,\n id: \"0x38\",\n token: \"BNB\",\n label: \"BSC\",\n // rpcUrl: \"https://bsc.drpc.org\",\n rpcUrl: \"https://api.zan.top/bsc-mainnet\",\n },\n gravity: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://explorer.gravity.xyz\",\n chainId: 1625,\n id: \"0x659\",\n token: \"G\",\n label: \"Gravity\",\n rpcUrl: \"https://rpc.gravity.xyz\",\n },\n bera: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n id: \"0x138de\",\n chainId: 1385,\n rpcUrl: \"https://rpc.berachain.com\",\n explorerUrl: \"https://berascan.com/\",\n token: \"BERA\",\n label: \"BERA\",\n },\n },\n },\n };\n}\n\nconst config = getConfig();\n// Use Proxy to make config_near dynamic\nexport const config_near = new Proxy({} as INEARConfig, {\n get(target, prop: string | symbol) {\n // Every time a property is accessed, get fresh config\n return getConfig().NEAR[prop as keyof INEARConfig];\n },\n});\n\nexport const config_btc = config.BTC;\nexport const config_solana = config.SOLANA;\nexport const config_evm = config.EVM;\n","export const FRACTION_DIGITS = 4;\nexport const MAX_RATIO = 10000;\nexport const NEAR_STORAGE_DEPOSIT = 0.1;\nexport const TOKEN_STORAGE_DEPOSIT_READ = 0.00125;\nexport const DEFAULT_POSITION = \"REGULAR\";\nexport const lpTokenPrefix = \"shadow_ref_v1\";\n","import Decimal from \"decimal.js\";\nimport { keyStores, connect } from \"near-api-js\";\nimport { config_near } from \"../config\";\n\nasync function getAccountConnection(accountId?: string) {\n let keyStore: keyStores.KeyStore;\n if (typeof (globalThis as any)[\"window\"] === \"undefined\") {\n keyStore = new keyStores.InMemoryKeyStore();\n } else {\n keyStore = new keyStores.BrowserLocalStorageKeyStore();\n }\n const connection = await connect({\n keyStore,\n networkId: config_near.networkId,\n nodeUrl: config_near.nodeUrl,\n });\n const account = await connection.account(\n accountId || config_near.LOGIC_CONTRACT_NAME\n );\n return account;\n}\n\nexport async function view_on_near({\n contractId,\n methodName,\n args = {},\n}: {\n contractId: string;\n methodName: string;\n args?: Record<string, any>;\n}) {\n const account = await getAccountConnection();\n const res = await account.viewFunction({\n contractId,\n methodName,\n args,\n });\n return res;\n}\n\nexport async function getAccountBalance(accountId: string) {\n const account = await getAccountConnection(accountId);\n const { available, total } = await account.getAccountBalance();\n const accountBalance = Decimal.max(available, 0).toFixed();\n const totalAccountBalance = Decimal.max(total, 0).toFixed();\n return {\n accountBalance,\n totalAccountBalance,\n };\n}\n","import _ from \"lodash\";\n\nexport function prepare_sign_message_evm(message: string) {\n return message;\n}\nexport function process_signature_evm(signature: string) {\n return signature.slice(2);\n}\n","import _ from \"lodash\";\n\nexport function prepare_sign_message_solana(message: string) {\n const messageBuffer = new TextEncoder().encode(message);\n return messageBuffer;\n}\n\nexport function process_signature_solana(\n signature: Uint8Array<ArrayBufferLike>\n) {\n return Buffer.from(signature).toString(\"hex\");\n}\n","export function prepare_sign_message_btc(message: string) {\n return message;\n}\n\nexport function process_signature_btc(signature: string) {\n const res = Buffer.from(signature, \"base64\");\n const hex = res.toString(\"hex\");\n return hex;\n}\n","export enum ViewMethodsLogic {\n // accounts\n get_account,\n get_accounts_paged,\n get_account_all_positions,\n get_margin_account,\n // assets\n get_asset,\n get_assets,\n get_assets_paged,\n get_assets_paged_detailed,\n // config\n get_config,\n get_margin_config,\n get_default_margin_base_token_limit,\n list_margin_base_token_limit,\n get_booster_tokens,\n // farms\n get_asset_farm,\n get_asset_farms,\n get_asset_farms_paged,\n storage_balance_of,\n get_all_token_pyth_infos,\n // batch views\n batch_views,\n}\n\nexport enum ViewMethodsOracle {\n get_price_data,\n}\nexport enum ViewMethodsPyth {\n get_price,\n list_prices_no_older_than,\n list_prices,\n}\nexport enum ViewMethodsToken {\n ft_metadata,\n ft_balance_of,\n storage_balance_of,\n get_st_near_price,\n get_nearx_price,\n ft_price,\n get_high_precision_virtual_price,\n storage_balance_bounds,\n}\n\n// Change methods can modify the state. But you don't receive the returned value when called.\nexport enum ChangeMethodsLogic {\n execute,\n execute_with_pyth,\n storage_deposit,\n oracle_on_call,\n account_farm_claim_all,\n add_asset_farm_reward,\n register_account,\n simple_withdraw,\n}\nexport enum ChangeMethodsOracle {\n oracle_call,\n}\n","import Decimal from \"decimal.js\";\nimport _ from \"lodash\";\nimport { IChain } from \"../types/chains\";\nimport { view_on_near } from \"../chains\";\n\nexport function format_wallet({\n chain,\n identityKey,\n}: {\n chain: IChain;\n identityKey: string;\n}) {\n let w;\n if (chain == \"evm\") {\n w = { EVM: identityKey.slice(2) };\n } else if (chain == \"solana\") {\n w = { Solana: identityKey };\n } else if (chain == \"btc\") {\n w = { Bitcoin: identityKey };\n }\n return w;\n}\n\nexport async function get_nonce_deadline({ accountId }: { accountId: string }) {\n const nonce = await view_on_near({\n contractId: accountId,\n methodName: \"get_nonce\",\n });\n const deadline = Math.floor(\n new Date(new Date().getTime() + 5 * 60 * 1000).getTime()\n ).toString();\n return {\n nonce,\n deadline,\n };\n}\n\nexport function TGas(gas: string | number) {\n return new Decimal(gas).mul(1000000000000).toFixed();\n}\nexport function NDeposit(deposit: string | number) {\n return new Decimal(deposit).mul(1000000000000000000000000).toFixed();\n}\nexport function serializationObj(params: any) {\n return JSON.stringify(params || {});\n}\n","import { config_near, TOKEN_STORAGE_DEPOSIT_READ } from \"../../config\";\nimport { ChangeMethodsLogic, ISimpleWithdraw } from \"../../types/index\";\nimport { serializationObj, TGas, NDeposit } from \"../../utils/chainsUtil\";\nimport { view_on_near } from \"../../chains/near\";\n\nexport function get_simple_withdraw_tx({\n simpleWithdrawData,\n}: {\n simpleWithdrawData: ISimpleWithdraw;\n}) {\n return [\n {\n FunctionCall: {\n receiver_id: config_near.LOGIC_CONTRACT_NAME,\n function_calls: [\n {\n method_name: ChangeMethodsLogic[ChangeMethodsLogic.simple_withdraw],\n args: serializationObj({\n token_id: simpleWithdrawData.tokenId,\n amount_with_inner_decimal: simpleWithdrawData.amountBurrow,\n recipient_id: config_near.RELAYER_ID,\n }),\n gas: TGas(100),\n deposit: \"1\",\n },\n ],\n },\n },\n ];\n}\n\nexport async function query_account_register_token_tx({\n tokenId,\n accountId,\n}: {\n tokenId: string;\n accountId: string;\n}) {\n const isRegistered = await view_on_near({\n contractId: tokenId,\n methodName: \"storage_balance_of\",\n args: {\n account_id: accountId,\n },\n });\n return !!isRegistered\n ? []\n : [\n {\n FunctionCall: {\n receiver_id: tokenId,\n function_calls: [\n {\n method_name: \"storage_deposit\",\n args: serializationObj({\n registration_only: false,\n account_id: accountId,\n }),\n gas: TGas(10),\n deposit: NDeposit(TOKEN_STORAGE_DEPOSIT_READ),\n },\n ],\n },\n },\n ];\n}\n\nexport function query_intents_tansfer_txs({\n tokenId,\n depositAddress,\n amountToken,\n}: {\n tokenId: string;\n depositAddress: string;\n amountToken: string;\n}) {\n const intents_tansfer_txs = [\n {\n FunctionCall: {\n receiver_id: tokenId,\n function_calls: [\n {\n method_name: \"storage_deposit\",\n args: serializationObj({\n account_id: depositAddress,\n registration_only: true,\n }),\n gas: TGas(10),\n deposit: NDeposit(TOKEN_STORAGE_DEPOSIT_READ),\n },\n {\n method_name: \"ft_transfer\",\n args: serializationObj({\n receiver_id: depositAddress,\n amount: amountToken,\n memo: null,\n }),\n gas: TGas(10),\n deposit: \"1\",\n },\n ],\n interval_block: 2,\n },\n },\n ];\n return intents_tansfer_txs;\n}\n","import {\n ISimpleWithdraw,\n IConfig,\n ChangeMethodsLogic,\n ChangeMethodsOracle,\n IBusiness,\n} from \"../types/index\";\nimport { config_near } from \"../config/config\";\nimport { serializationObj, get_nonce_deadline } from \"../utils/chainsUtil\";\nimport { TGas } from \"../utils/chainsUtil\";\nimport { get_simple_withdraw_tx } from \"./actionUtil/commonTx\";\n\nexport async function prepareBusinessDataOnAdjust({\n mca,\n tokenId,\n config,\n simpleWithdrawData,\n isIncreaseCollateral,\n increaseAmountBurrow,\n isDecreaseCollateral,\n decreaseAmountBurrow,\n}: {\n mca: string;\n tokenId: string;\n config: IConfig;\n simpleWithdrawData: ISimpleWithdraw;\n isIncreaseCollateral?: boolean;\n increaseAmountBurrow?: string;\n isDecreaseCollateral?: boolean;\n decreaseAmountBurrow?: string;\n}) {\n const enable_pyth_oracle = config.enable_pyth_oracle;\n const logicContractId = config_near.LOGIC_CONTRACT_NAME;\n const oracleContractId = config.oracle_account_id;\n const simple_withdraw_tx = get_simple_withdraw_tx({ simpleWithdrawData });\n const adjust_tx = [];\n if (isIncreaseCollateral) {\n const increaseCollateralTemplate = {\n IncreaseCollateral: {\n token_id: tokenId,\n max_amount: increaseAmountBurrow,\n },\n };\n adjust_tx.push({\n FunctionCall: {\n receiver_id: logicContractId,\n function_calls: [\n {\n method_name: enable_pyth_oracle\n ? ChangeMethodsLogic[ChangeMethodsLogic.execute_with_pyth]\n : ChangeMethodsLogic[ChangeMethodsLogic.execute],\n args: serializationObj({\n actions: [increaseCollateralTemplate],\n }),\n gas: TGas(150),\n deposit: \"1\",\n },\n ],\n },\n });\n } else if (isDecreaseCollateral) {\n const decreaseCollateralTemplate = {\n DecreaseCollateral: {\n token_id: tokenId,\n max_amount: decreaseAmountBurrow,\n },\n };\n adjust_tx.push({\n FunctionCall: {\n receiver_id: enable_pyth_oracle ? logicContractId : oracleContractId,\n function_calls: [\n {\n method_name: enable_pyth_oracle\n ? ChangeMethodsLogic[ChangeMethodsLogic.execute_with_pyth]\n : ChangeMethodsOracle[ChangeMethodsOracle.oracle_call],\n args: serializationObj(\n enable_pyth_oracle\n ? {\n actions: [decreaseCollateralTemplate],\n }\n : {\n receiver_id: logicContractId,\n msg: JSON.stringify({\n Execute: {\n actions: [decreaseCollateralTemplate],\n },\n }),\n }\n ),\n gas: TGas(150),\n deposit: \"1\",\n },\n ],\n },\n });\n }\n const { nonce, deadline } = await get_nonce_deadline({ accountId: mca });\n const businessMap: IBusiness = {\n nonce,\n deadline,\n tx_requests: [...simple_withdraw_tx, ...adjust_tx],\n };\n return businessMap;\n}\n","import { config_near } from \"../config\";\nimport { view_on_near } from \"../chains\";\nimport { format_wallet } from \"../utils/chainsUtil\";\nimport { IChain } from \"../types/chains\";\n\nexport async function getMcaByWallet({\n chain,\n identityKey,\n}: {\n chain: IChain;\n identityKey: string;\n}) {\n const w = format_wallet({\n chain,\n identityKey,\n });\n const res = await view_on_near({\n contractId: config_near.AM_CONTRACT,\n methodName: \"get_mca_by_wallet\",\n args: {\n wallet: w,\n },\n });\n return res;\n}\n\nexport async function getListWalletsByMca(mca: string) {\n const res = await view_on_near({\n contractId: config_near.AM_CONTRACT,\n methodName: \"list_wallets_by_mca\",\n args: {\n mca_id: mca,\n },\n });\n return res;\n}\n\nexport async function getCeateMcaFee(token_id: string) {\n const res = await view_on_near({\n contractId: config_near.AM_CONTRACT,\n methodName: \"get_create_mca_fee\",\n args: {\n token_id,\n },\n });\n return res;\n}\n\nexport async function getCreateMcaFeePaged() {\n const res = await view_on_near({\n contractId: config_near.AM_CONTRACT,\n methodName: \"get_create_mca_fee_paged\",\n });\n return res;\n}\n\nexport async function getNearValue(token_id: string) {\n const res = await view_on_near({\n contractId: config_near.AM_CONTRACT,\n methodName: \"get_near_value\",\n args: {\n token_id,\n },\n });\n return res;\n}\n\nexport async function getNearValuesPaged() {\n const res = await view_on_near({\n contractId: config_near.AM_CONTRACT,\n methodName: \"get_near_values_paged\",\n });\n return res;\n}\n","import { view_on_near } from \"../chains\";\nimport { config_near } from \"../config\";\nimport { ViewMethodsLogic, ILendingData } from \"../types\";\nexport async function batchViews(\n account_id?: string | undefined\n): Promise<ILendingData> {\n try {\n const res = await view_on_near({\n contractId: config_near.LOGIC_CONTRACT_NAME,\n methodName: ViewMethodsLogic[ViewMethodsLogic.batch_views],\n args: {\n ...(account_id ? { account_id } : {}),\n assets: true,\n config: true,\n token_pyth_infos: true,\n },\n });\n const [\n account_all_positions,\n ,\n assets_paged_detailed,\n config,\n ,\n ,\n ,\n token_pyth_infos,\n ] = res;\n return {\n account_all_positions,\n assets_paged_detailed,\n config,\n token_pyth_infos,\n };\n } catch (e) {\n console.error(\"batchViews error:\", e);\n return {} as any;\n }\n}\n","import { ViewMethodsLogic } from \"../types\";\nimport { view_on_near } from \"../chains\";\nimport { config_near } from \"../config\";\n\nexport const getBoosterTokens = async (): Promise<any> => {\n try {\n const config = (await view_on_near({\n contractId: config_near.LOGIC_CONTRACT_NAME,\n methodName: ViewMethodsLogic[ViewMethodsLogic.get_booster_tokens],\n })) as any;\n return config;\n } catch (e) {\n console.error(e);\n throw new Error(\"getBoosterTokens\");\n }\n};\n","import Decimal from \"decimal.js\";\nimport {\n IPythPrice,\n IConfig,\n IPrices,\n IPythInfo,\n ViewMethodsPyth,\n IAssetPrice,\n IPrice,\n ViewMethodsOracle,\n ViewMethodsToken,\n ViewMethodsLogic,\n} from \"../types\";\nimport { config_near } from \"../config\";\nimport { view_on_near } from \"../chains\";\nimport { FRACTION_DIGITS } from \"../config/constantConfig\";\nconst getPrices = async ({\n token_pyth_infos,\n config,\n}: {\n token_pyth_infos: Record<string, IPythInfo>;\n config: IConfig;\n}): Promise<IPrices | undefined> => {\n const { enable_pyth_oracle } = config;\n if (enable_pyth_oracle) {\n const pythResponse = await getPythPrices(token_pyth_infos);\n return pythResponse;\n } else {\n const oracleResponse = await getOraclePrices();\n return oracleResponse;\n }\n};\nconst getPythPrices = async (token_pyth_infos: Record<string, IPythInfo>) => {\n const nearTokenId = \"wrap.near\";\n const XRHEA_TOKEN = \"xtoken.rhealab.near\";\n const NEARX_TOKEN = \"v2-nearx.stader-labs.near\";\n const LINEAR_TOKEN = \"linear-protocol.near\";\n const STNEAR_TOKEN = \"meta-pool.near\";\n const RNEAR_TOKEN = \"lst.rhealab.near\";\n const COINList = token_pyth_infos;\n\n try {\n const array_coins = Object.entries(COINList);\n let near_pyth_price_obj: IPythPrice = {\n price: \"0\",\n conf: \"0\",\n expo: 0,\n publish_time: 0,\n };\n let rhea_pyth_price_obj: IPythPrice = {\n price: \"0\",\n conf: \"0\",\n expo: 0,\n publish_time: 0,\n };\n const identifiers = array_coins.map((coin) => coin[1].price_identifier);\n const list_prices_map = await view_on_near({\n contractId: config_near.PYTH_ORACLE_ID,\n methodName: ViewMethodsPyth[ViewMethodsPyth.list_prices_no_older_than],\n args: {\n price_ids: identifiers,\n age: 60,\n },\n });\n const price_array = array_coins.map(\n (coin) => list_prices_map[coin[1].price_identifier]\n );\n const format_price: IAssetPrice[] = price_array.map(\n (priceObject: IPythPrice, index) => {\n const coin = array_coins[index];\n if (!priceObject) {\n if (coin[1].default_price) {\n return {\n asset_id: coin[0],\n price: coin[1].default_price as IPrice,\n };\n }\n return {\n asset_id: coin[0],\n price: {\n multiplier: \"0\",\n decimals: coin[1].decimals + coin[1].fraction_digits,\n },\n };\n }\n const { price, expo } = priceObject;\n const p = new Decimal(10).pow(expo).mul(price).toNumber();\n if (coin[0] === nearTokenId) {\n near_pyth_price_obj = priceObject;\n }\n if (coin[0] === XRHEA_TOKEN) {\n rhea_pyth_price_obj = priceObject;\n }\n coin[1].fraction_digits = coin[1].fraction_digits || FRACTION_DIGITS;\n const discrepancy_denominator = new Decimal(10)\n .pow(coin[1].fraction_digits)\n .toNumber();\n const object = {\n asset_id: coin[0],\n price: {\n multiplier: new Decimal(p).mul(discrepancy_denominator).toFixed(0),\n decimals: coin[1].decimals + coin[1].fraction_digits,\n },\n };\n return object;\n }\n );\n const format_price_map: any = format_price.reduce(\n (acc, p: IAssetPrice) => ({ ...acc, [p.asset_id]: p }),\n {}\n );\n // Enable special price calculation for LST tokens (rNEAR, NEARX, STNEAR, LINEAR)\n // These tokens use NEAR price * proportion ratio instead of direct Pyth price\n const do_it = true;\n if (do_it && near_pyth_price_obj) {\n const near_price = new Decimal(10)\n .pow(near_pyth_price_obj.expo)\n .mul(near_pyth_price_obj.price);\n const nearx_proportion = (await view_on_near({\n contractId: NEARX_TOKEN,\n methodName: ViewMethodsToken[ViewMethodsToken.get_nearx_price],\n })) as string;\n const stnear_proportion = (await view_on_near({\n contractId: STNEAR_TOKEN,\n methodName: ViewMethodsToken[ViewMethodsToken.get_st_near_price],\n })) as string;\n const linear_proportion = (await view_on_near({\n contractId: LINEAR_TOKEN,\n methodName: ViewMethodsToken[ViewMethodsToken.ft_price],\n })) as string;\n const rnear_proportion = (await view_on_near({\n contractId: RNEAR_TOKEN,\n methodName: ViewMethodsToken[ViewMethodsToken.ft_price],\n })) as string;\n const nearx_price = new Decimal(near_price)\n .mul(nearx_proportion)\n .div(new Decimal(10).pow(24));\n const stnear_price = new Decimal(near_price)\n .mul(stnear_proportion)\n .div(new Decimal(10).pow(24));\n const linear_price = new Decimal(near_price)\n .mul(linear_proportion)\n .div(new Decimal(10).pow(24));\n const rnear_price = new Decimal(near_price)\n .mul(rnear_proportion)\n .div(new Decimal(10).pow(24));\n format_price_map[NEARX_TOKEN] = {\n asset_id: NEARX_TOKEN,\n price: {\n multiplier: nearx_price\n .mul(new Decimal(10).pow(FRACTION_DIGITS))\n .toFixed(0),\n decimals: 24 + FRACTION_DIGITS,\n },\n };\n format_price_map[STNEAR_TOKEN] = {\n asset_id: STNEAR_TOKEN,\n price: {\n multiplier: stnear_price\n .mul(new Decimal(10).pow(FRACTION_DIGITS))\n .toFixed(0),\n decimals: 24 + FRACTION_DIGITS,\n },\n };\n format_price_map[LINEAR_TOKEN] = {\n asset_id: LINEAR_TOKEN,\n price: {\n multiplier: linear_price\n .mul(new Decimal(10).pow(FRACTION_DIGITS))\n .toFixed(0),\n decimals: 24 + FRACTION_DIGITS,\n },\n };\n format_price_map[RNEAR_TOKEN] = {\n asset_id: RNEAR_TOKEN,\n price: {\n multiplier: rnear_price\n .mul(new Decimal(10).pow(FRACTION_DIGITS))\n .toFixed(0),\n decimals: 24 + FRACTION_DIGITS,\n },\n };\n }\n if (do_it && rhea_pyth_price_obj) {\n const rhea_price = new Decimal(10)\n .pow(rhea_pyth_price_obj.expo)\n .mul(rhea_pyth_price_obj.price);\n const xrhea_proportion = (await view_on_near({\n contractId: XRHEA_TOKEN,\n methodName:\n ViewMethodsToken[ViewMethodsToken.get_high_precision_virtual_price],\n })) as string;\n const xrhea_price = new Decimal(rhea_price)\n .mul(xrhea_proportion)\n .div(new Decimal(10).pow(24));\n format_price_map[XRHEA_TOKEN] = {\n asset_id: XRHEA_TOKEN,\n price: {\n multiplier: xrhea_price\n .mul(new Decimal(10).pow(FRACTION_DIGITS))\n .toFixed(0),\n decimals: 18 + FRACTION_DIGITS,\n },\n };\n }\n return {\n prices: Object.values(format_price_map) as IAssetPrice[],\n recency_duration_sec: 0,\n timestamp: \"0\",\n };\n } catch (error) {\n return undefined;\n }\n};\nconst getOraclePrices = async () => {\n try {\n const priceResponse: IPrices = (await view_on_near({\n contractId: config_near.LOGIC_CONTRACT_NAME,\n methodName: ViewMethodsOracle[ViewMethodsOracle.get_price_data],\n })) as IPrices;\n\n if (priceResponse) {\n priceResponse.prices = priceResponse?.prices?.map(\n (assetPrice: IAssetPrice) => ({\n ...assetPrice,\n price: assetPrice.price,\n })\n );\n }\n return priceResponse;\n } catch (err: any) {\n console.error(\"Getting prices failed: \", err.message);\n return undefined;\n }\n};\n\nconst getTokenPythInfos = async () => {\n return (await view_on_near({\n contractId: config_near.LOGIC_CONTRACT_NAME,\n methodName: ViewMethodsLogic[ViewMethodsLogic.get_all_token_pyth_infos],\n })) as Record<string, IPythInfo>;\n};\n\nexport { getPrices, getTokenPythInfos };\n","import { config_near } from \"../config/config\";\n// @ts-ignore\nimport crypto from \"crypto-browserify\";\nimport {\n IRelayerResult,\n IIntentItem,\n IStatus,\n IIntentSwapDetails,\n IIntentsQuoteResult,\n QuotationParams,\n} from \"../types/index\";\nconst { oneClickUrl, indexUrl } = config_near;\nexport const getSignature = (plaintext: string) => {\n const key = process.env.NEXT_PUBLIC_CRYPTO_KEY;\n if (!key) return;\n const iv = crypto.randomBytes(16);\n const cipher = crypto.createCipheriv(\"aes-256-cbc\", Buffer.from(key), iv);\n let encrypted = cipher.update(plaintext, \"utf-8\", \"base64\");\n encrypted += cipher.final(\"base64\");\n return iv.toString(\"base64\") + encrypted;\n};\n\nexport const getAuthenticationHeaders = (path: string) => {\n const time = Math.round(new Date().getTime() / 1000);\n const o = { path, time };\n const str = JSON.stringify(o);\n const signature = getSignature(str);\n return {\n Authentication: signature,\n };\n};\n\nexport async function get_liquidations(\n accountId: string,\n page?: number,\n pageSize?: number,\n assets?: any\n) {\n try {\n const response = await fetch(\n `${config_near.dataServiceUrl}/burrow/get_burrow_liquidate_records/${accountId}?page_number=${page}&page_size=${pageSize}`,\n {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n ...getAuthenticationHeaders(\n `/burrow/get_burrow_liquidate_records/${accountId}`\n ),\n },\n }\n );\n\n const liquidationData: any = await response.json().catch(() => ({}));\n const unreadIds: Array<string> = [];\n liquidationData?.record_list?.forEach((d: any) => {\n if (d.RepaidAssets) {\n d.RepaidAssets?.forEach((a: any) => {\n const tokenId = a.token_id;\n const asset = assets?.data?.[tokenId];\n a.data = asset;\n });\n }\n if (d.LiquidatedAssets) {\n d.LiquidatedAssets?.forEach((a: any) => {\n const tokenId = a.token_id;\n const asset = assets?.data?.[tokenId];\n a.data = asset;\n });\n }\n if (d.isRead === false) {\n unreadIds.push(d.receipt_id);\n }\n });\n\n return { liquidationData, unreadIds };\n } catch (err) {\n console.error(err);\n return { liquidationData: {}, unreadIds: [] };\n }\n}\n\nexport async function get_token_detail(tokenId: string, period = 1) {\n try {\n const response = (\n await fetch(\n `${config_near.dataServiceUrl}/burrow/get_token_detail/${tokenId}?period=${period}`,\n {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n ...getAuthenticationHeaders(\n `${config_near.dataServiceUrl}/burrow/get_token_detail/${tokenId}`\n ),\n },\n }\n )\n )\n .json()\n .catch(() => {\n return [];\n });\n return response;\n } catch (err) {\n return [];\n }\n}\n\nexport async function get_all_tokens_metadata() {\n const data: any = await fetch(\n `${config_near.indexUrl}/list-burrow-asset-token`\n )\n .then((res) => res.json())\n .catch(() => {\n return {};\n });\n Object.keys(data).reduce((acc, cur) => {\n const tokenMetadata = data[cur];\n tokenMetadata.token_id = cur;\n acc[cur] = tokenMetadata;\n return acc;\n }, {} as any);\n return data;\n}\n\nexport async function get_interest_rate(tokenId: string) {\n try {\n const response = (\n await fetch(\n `${config_near.dataServiceUrl}/burrow/get_token_interest_rate/${tokenId}`,\n {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n ...getAuthenticationHeaders(\n `${config_near.dataServiceUrl}/burrow/get_token_interest_rate/${tokenId}`\n ),\n },\n }\n )\n )\n .json()\n .catch(() => {\n return {};\n });\n return response;\n } catch (err) {\n return {};\n }\n}\n\nexport async function get_records(\n accountId: string,\n pageNumber = 1,\n pageSize = 10\n) {\n try {\n const response = (\n await fetch(\n `${config_near.indexUrl}/get-burrow-records?account_id=${accountId}&page_number=${pageNumber}&page_size=${pageSize}`,\n {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n ...getAuthenticationHeaders(\n `${config_near.indexUrl}/get-burrow-records`\n ),\n },\n }\n )\n )\n .json()\n .catch(() => {\n return {};\n });\n return response;\n } catch (err) {\n return {};\n }\n}\n\nexport async function get_tx_id(receipt_id: string) {\n try {\n const res = await fetch(\n `${config_near.txIdApiUrl}/v1/search?keyword=${receipt_id}`,\n {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n },\n }\n );\n return await res.json().catch(() => ({}));\n } catch (error) {\n return {};\n }\n}\nexport async function fetchIntentsQuotation(\n params: QuotationParams\n): Promise<IIntentsQuoteResult> {\n try {\n const res_params = {\n originAsset: params?.originAsset,\n destinationAsset: params?.destinationAsset,\n amount: params?.amount,\n refundTo: params?.refundTo,\n recipient: params?.recipient,\n customRecipientMsg: params?.customRecipientMsg,\n dry: params?.dry || false,\n swapType: params.isReverse ? \"EXACT_OUTPUT\" : \"EXACT_INPUT\",\n refundType: \"ORIGIN_CHAIN\",\n recipientType: \"DESTINATION_CHAIN\",\n depositType: \"ORIGIN_CHAIN\",\n deadline: new Date(Date.now() + 10000 * 60 * 60 * 1000).toISOString(),\n referral: \"rhea\",\n quoteWaitingTimeMs: 3000,\n slippageTolerance:\n typeof params.slippageTolerance == \"number\"\n ? params.slippageTolerance\n : 50,\n };\n const response: any = await fetch(`${oneClickUrl}/quote`, {\n method: \"POST\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n },\n body: JSON.stringify(res_params),\n }).then((res) => {\n return res.json();\n });\n const quote = response?.quote;\n if (quote) {\n return {\n quoteStatus: \"success\",\n quoteSuccessResult: response,\n };\n } else {\n return {\n quoteStatus: \"error\",\n message: response?.message,\n };\n }\n } catch (error: any) {\n return {\n quoteStatus: \"error\",\n message: error?.message || error?.error,\n };\n }\n}\n\nexport async function fetchIntentsTransactionStatus(depositAddress: string) {\n try {\n const response = await fetch(\n `${oneClickUrl}/status?depositAddress=${depositAddress}`,\n {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n },\n }\n ).then((res) => {\n return res.json();\n });\n return response;\n } catch (error) {\n console.error(\"Error fetchIntentsTransactionStatus:\", error);\n return null;\n }\n}\n\nexport async function fetchIntentsTokens(): Promise<IIntentItem[]> {\n try {\n const response = await fetch(`${oneClickUrl}/tokens`, {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n },\n }).then((res) => {\n return res.json();\n });\n return response as IIntentItem[];\n } catch (error) {\n console.error(\"Error fetching fetchIntentsTokens:\", error);\n return [];\n }\n}\n\ntype IIntentsStatus = \"success\" | \"refunded\" | \"failed\";\nexport async function pollingTransactionStatus(\n depositAddress: string\n): Promise<{\n status: IIntentsStatus;\n swapDetails: IIntentSwapDetails;\n}> {\n let isOver = false;\n let status: any;\n let swapDetails: any;\n while (!isOver) {\n const resString = await fetchIntentsTransactionStatus(depositAddress);\n const parsed: any = resString || {};\n status = parsed?.status?.toLowerCase();\n if (status == \"success\" || status == \"refunded\" || status == \"failed\") {\n isOver = true;\n swapDetails = parsed?.swapDetails || {};\n } else {\n await new Promise((resolve) => {\n setTimeout(() => {\n resolve(true);\n }, 5000);\n });\n }\n }\n return {\n status,\n swapDetails,\n };\n}\n\nexport async function getMultichainLendingConfig(): Promise<\n Record<string, string>[]\n> {\n try {\n const response = await fetch(`${indexUrl}/get_multichain_lending_config`, {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n },\n }).then((res) => {\n return res.json();\n });\n return response as Record<string, string>[];\n } catch (error) {\n console.error(\"Error fetching get_multichain_lending_config:\", error);\n return [];\n }\n}\n\nexport async function postMultichainLendingRequests({\n mca_id,\n wallet,\n request,\n page_display_data,\n}: {\n mca_id: string;\n wallet: string;\n request: string[];\n page_display_data: string;\n}): Promise<{\n code: number;\n data: string;\n msg: string;\n}> {\n try {\n const params = {\n mca_id,\n wallet,\n request,\n page_display_data,\n };\n const response = await fetch(`${indexUrl}/multichain_lending_requests`, {\n method: \"POST\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n },\n body: JSON.stringify(params),\n }).then((res) => {\n return res.json();\n });\n return response as any;\n } catch (error) {\n console.error(\"Error fetching get_multichain_lending_config:\", error);\n return null as any;\n }\n}\n\nexport async function getMultichainLendingData(\n batch_id: string\n): Promise<IRelayerResult[]> {\n try {\n const response = await fetch(\n `${indexUrl}/get_multichain_lending_data?batch_id=${batch_id}`,\n {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n },\n }\n ).then((res) => {\n return res.json();\n });\n return response as IRelayerResult[];\n } catch (error) {\n console.error(\"Error fetching get_multichain_lending_data:\", error);\n return [];\n }\n}\n\n/**\n * 0(pending)1(processing) 2(complete)\n * tx_hash: The transaction has been recorded on the blockchain.\n * tx_err_msg: err msg on blockchain\n * other_err_msg: err msg on offChain\n */\nexport async function pollingRelayerTransactionResult(\n batch_id: string,\n interval?: number\n): Promise<{\n status: IStatus;\n tx_hash: string;\n}> {\n let isOver = false;\n let status: any;\n let tx_hash;\n while (!isOver) {\n const res = await getMultichainLendingData(batch_id);\n const isComplete = res.every((item) => item.batch_status == 2);\n if (isComplete) {\n isOver = true;\n const requestResult = res.map((item) => JSON.parse(item.request_result));\n const isSuccess = requestResult.every(\n (result) => !(result.other_err_msg || result.tx_err_msg)\n );\n status = isSuccess ? \"success\" : \"error\";\n tx_hash = requestResult[requestResult.length - 1].tx_hash;\n } else {\n await new Promise((resolve) => {\n setTimeout(() => {\n resolve(true);\n }, interval || 5000);\n });\n }\n }\n return {\n status,\n tx_hash,\n };\n}\n\nexport async function getMultichainLendingHistory({\n mca_id,\n page_number,\n page_size,\n}: {\n mca_id: string;\n page_number: number;\n page_size: number;\n}) {\n try {\n const response = await fetch(\n `${indexUrl}/get_multichain_lending_history?mca_id=${mca_id}&page_number=${page_number}&page_size=${page_size}`,\n {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n },\n }\n ).then((res) => {\n return res.json();\n });\n return response;\n } catch (error) {\n console.error(\"Error fetching get_multichain_lending_history:\", error);\n return null;\n }\n}\n\nexport async function postMultichainLendingReport({\n mca_id,\n wallet,\n request_hash,\n page_display_data,\n}: {\n mca_id: string;\n wallet: string;\n request_hash: string;\n page_display_data: string;\n}): Promise<{\n code: number;\n data: string;\n msg: string;\n}> {\n try {\n const params = {\n mca_id,\n wallet,\n request_hash,\n page_display_data,\n };\n const response = await fetch(`${indexUrl}/multichain_lending_report`, {\n method: \"POST\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n },\n body: JSON.stringify(params),\n }).then((res) => {\n return res.json();\n });\n return response as any;\n } catch (error) {\n console.error(\"Error fetching get_multichain_lending_config:\", error);\n return null as any;\n }\n}\n\n// get_multichain_lending_tokens_data?chains=bsc,stellar\nexport async function getMultichainTokensByChains(\n chains: string\n): Promise<IIntentItem[]> {\n try {\n const response = await fetch(\n `${indexUrl}/get_multichain_lending_tokens_data?chains=${chains}`,\n {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n },\n }\n ).then((res) => {\n return res.json();\n });\n return response as IIntentItem[];\n } catch (error) {\n console.error(\"Error fetching get_multichain_lending_tokens_data:\", error);\n return [];\n }\n}\n","import { IMetadata, ViewMethodsToken } from \"../types\";\nimport { get_all_tokens_metadata } from \"./centralized_api\";\nimport { view_on_near } from \"../chains\";\n\nexport const getAllMetadata = async (\n token_ids: string[]\n): Promise<IMetadata[]> => {\n try {\n const tokensMap = await get_all_tokens_metadata();\n const metadata: IMetadata[] = token_ids.map(\n (token_id) => tokensMap[token_id]\n );\n const emptyMetadatas = metadata.filter((meta) => !meta);\n if (emptyMetadatas.length) {\n throw new Error(\"missing token metadata\");\n }\n return metadata;\n } catch (err) {\n const metadata: IMetadata[] = (\n await Promise.all(token_ids.map((token_id) => getMetadata(token_id)))\n ).filter((m): m is IMetadata => !!m);\n return metadata;\n }\n};\n\nexport const getMetadata = async (\n token_id: string\n): Promise<IMetadata | undefined> => {\n try {\n const metadata: IMetadata = (await view_on_near({\n contractId: token_id,\n methodName: ViewMethodsToken[ViewMethodsToken.ft_metadata],\n })) as IMetadata;\n metadata.token_id = token_id;\n return metadata;\n } catch (err: any) {\n console.error(`Failed to get metadata for ${token_id} ${err.message}`);\n return undefined;\n }\n};\n","import Decimal from \"decimal.js\";\nimport {\n IPrices,\n IMetadata,\n IAssetDetailed,\n IPythInfo,\n IConfig,\n Assets,\n ViewMethodsLogic,\n} from \"../types\";\nimport { getAllMetadata } from \"./get-all-metadata\";\nimport { getPrices } from \"./get-prices\";\nimport { config_near } from \"../config\";\nimport { view_on_near } from \"../chains/near\";\n\nconst getPrice = (\n tokenId: string,\n priceResponse: IPrices | undefined,\n metadata: IMetadata | undefined\n) => {\n if (!priceResponse || !metadata) {\n return { usd: \"0\", decimals: metadata?.decimals || 0, multiplier: \"0\" };\n }\n const price = priceResponse.prices.find((p) => p.asset_id === tokenId)?.price;\n if (!price)\n return { usd: \"0\", decimals: metadata?.decimals || 0, multiplier: \"0\" };\n const usd = new Decimal(\n Number(price.multiplier) / 10 ** (price.decimals - metadata.decimals)\n ).toFixed();\n return { ...price, usd };\n};\n\nexport const getAssets = async ({\n assets_paged_detailed,\n token_pyth_infos,\n config,\n}: {\n assets_paged_detailed: IAssetDetailed[];\n token_pyth_infos: Record<string, IPythInfo>;\n config: IConfig;\n}) => {\n const hiddenAssets = config_near.hiddenAssets;\n const assets = assets_paged_detailed.filter(\n (asset) => !hiddenAssets.includes(asset.token_id)\n );\n const tokenIds = assets.map((asset) => asset.token_id);\n const metadatas: IMetadata[] = await getAllMetadata(tokenIds);\n const pricesResponse = await getPrices({ token_pyth_infos, config });\n const res: IAssetDetailed[] = [];\n for (const asset of assets) {\n const metadata = metadatas.find((m) => m.token_id === asset.token_id);\n res.push({\n ...asset,\n price: getPrice(asset.token_id, pricesResponse, metadata),\n metadata,\n });\n }\n const map = res.reduce((acc, cur) => {\n acc[cur.token_id] = cur;\n return acc;\n }, {} as Assets);\n return map;\n};\n\nexport const getAssetsDetail = async (): Promise<IAssetDetailed[]> => {\n return (await view_on_near({\n contractId: config_near.LOGIC_CONTRACT_NAME,\n methodName: ViewMethodsLogic[ViewMethodsLogic.get_assets_paged_detailed],\n })) as IAssetDetailed[];\n};\n","import Decimal from \"decimal.js\";\n\nexport const expandTokenDecimal = (\n value: string | number | Decimal,\n decimals: string | number\n): Decimal => {\n return new Decimal(value).mul(new Decimal(10).pow(decimals));\n};\n\nexport const expandToken = (\n value: string | number | Decimal,\n decimals: string | number,\n fixed?: number\n): string => {\n return expandTokenDecimal(value, decimals).toFixed(fixed);\n};\n\nexport const shrinkTokenDecimal = (\n value: string | number,\n decimals: string | number\n): Decimal => {\n return new Decimal(value).div(new Decimal(10).pow(decimals));\n};\nexport const shrinkToken = (\n value: string | number,\n decimals: string | number,\n fixed?: number\n): string => {\n if (!value) return \"\";\n return new Decimal(value).div(new Decimal(10).pow(decimals)).toFixed(fixed);\n};\n\nexport function decimalMax(\n a: string | number | Decimal,\n b: string | number | Decimal\n): Decimal {\n a = new Decimal(a);\n b = new Decimal(b);\n return a.gt(b) ? a : b;\n}\n\nexport function decimalMin(\n a: string | number | Decimal,\n b: string | number | Decimal\n): Decimal {\n a = new Decimal(a);\n b = new Decimal(b);\n return a.lt(b) ? a : b;\n}\n","import { IFarm } from \"../types\";\n// @ts-ignore\nimport { omit } from \"ramda\";\nexport const hasZeroSharesFarmRewards = (farms: IFarm[]): boolean => {\n return farms.some((farm) =>\n farm.rewards.some((reward) => +reward.boosted_shares === 0)\n );\n};\n\nexport const listFarmToMap = (list: any[]) =>\n list\n .map((asset) => ({ [asset.token_id]: omit([\"token_id\"], asset) }))\n .reduce((a, b) => ({ ...a, ...b }), {} as any);\n","// @ts-ignore\nimport { pick } from \"ramda\";\nimport { IAssetFarmView, IFarm, AccountFarmRewardView } from \"../../types\";\n\nconst transformFarmRewards = (rewards: AccountFarmRewardView[]) =>\n rewards.reduce(\n (o, item) => ({\n ...o,\n [item.reward_token_id]: {\n ...pick(\n [\"boosted_shares\", \"unclaimed_amount\", \"asset_farm_reward\"],\n item\n ),\n },\n }),\n {}\n );\n\nexport const transformAccountFarms = (list: IFarm[]) => {\n const farms = {\n supplied: {},\n borrowed: {},\n netTvl: {},\n tokennetbalance: {},\n };\n\n const netTvlFarms = list.find((f) => f.farm_id === \"NetTvl\");\n const restFarms = list.filter((f: any) => f.farm_id !== \"NetTvl\");\n\n restFarms.forEach((farm) => {\n const [action, token] = Object.entries(farm.farm_id)\n .flat()\n .map((s: any) => s.toLowerCase());\n\n farms[action as keyof typeof farms] = {\n ...farms[action as keyof typeof farms],\n [token]: transformFarmRewards(farm.rewards),\n };\n });\n\n if (netTvlFarms) {\n farms.netTvl = transformFarmRewards(netTvlFarms.rewards);\n }\n\n return farms;\n};\n\nexport const transformAssetFarms = (list: IAssetFarmView[]) => {\n const farms = {\n supplied: {},\n borrowed: {},\n tokennetbalance: {},\n };\n list.forEach((farm) => {\n const [action] = Object.entries(farm.farm_id)\n .flat()\n .map((s: any) => s.toLowerCase());\n farms[action as keyof typeof farms] = {\n ...farms[action as keyof typeof farms],\n ...farm.rewards,\n };\n });\n return farms;\n};\n","import { hasZeroSharesFarmRewards, listFarmToMap } from \"../../utils\";\nimport { transformAccountFarms } from \"./farms\";\nimport { DEFAULT_POSITION } from \"../../config/constantConfig\";\nimport type { IAccountAllPositionsDetailed, Portfolio } from \"../../types\";\n\nexport const initialStaking = {\n staked_booster_amount: \"0\",\n unlock_timestamp: \"0\",\n x_booster_amount: \"0\",\n};\n\nexport const transformPortfolio = (account: {\n portfolio: IAccountAllPositionsDetailed;\n}): Portfolio | undefined => {\n const { portfolio } = account;\n if (!portfolio) return undefined;\n const { booster_staking, booster_stakings, supplied, positions, farms } =\n portfolio;\n\n const hasNonFarmedAssets =\n account.portfolio.has_non_farmed_assets || hasZeroSharesFarmRewards(farms);\n Object.keys(positions).forEach((shadow_id: string) => {\n const { borrowed, collateral } = positions[shadow_id];\n positions[shadow_id].borrowed = listFarmToMap(borrowed);\n positions[shadow_id].collateral = listFarmToMap(collateral);\n });\n\n let collateralAll = {};\n const collaterals: any[] = [];\n const borrows: any[] = [];\n\n Object.entries(positions).forEach(([positionId, value]: [string, any]) => {\n if (value?.collateral) {\n collateralAll = {\n ...collateralAll,\n ...value.collateral,\n };\n }\n Object.entries(value.borrowed).forEach(\n ([tokenId, tokenObj]: [string, any]) => {\n borrows.push({\n ...tokenObj,\n token_id: tokenId,\n positionId,\n });\n }\n );\n Object.entries(value.collateral).forEach(\n ([tokenId, tokenObj]: [string, any]) => {\n collaterals.push({\n ...tokenObj,\n token_id: tokenId,\n positionId,\n });\n }\n );\n });\n\n return {\n supplies: supplied,\n borrows,\n collaterals,\n supplied: listFarmToMap(supplied),\n borrowed: positions[DEFAULT_POSITION]?.borrowed || {},\n collateral: positions[DEFAULT_POSITION]?.collateral || {},\n collateralAll,\n positions,\n farms: transformAccountFarms(farms),\n staking: booster_staking || initialStaking,\n stakings: booster_stakings || {},\n hasNonFarmedAssets,\n } as any;\n};\n","import { transformAssetFarms } from \"./farms\";\nimport { IFarms, IAssetsView, Assets, IAssetFarm } from \"../../types/asset\";\n\nexport function transformAssets(assets: Assets): IAssetsView {\n const data = Object.values(assets).reduce((map, asset) => {\n if (!asset.config) return map;\n map[asset.token_id] = {\n ...asset,\n farms: transformAssetFarms(asset.farms),\n };\n return map;\n }, {} as IAssetsView);\n return data;\n}\n\nexport function transformFarms(\n allFarms: [Record<string, string>, IAssetFarm][]\n): IFarms {\n const transformed = allFarms.reduce(\n (acc, cur) => {\n const [tokenData, farmData] = cur;\n const [[Type, tokenId]] = Object.entries(tokenData);\n if (Type === \"Supplied\") {\n acc.supplied[tokenId] = farmData.rewards;\n }\n if (Type === \"Borrowed\") {\n acc.borrowed[tokenId] = farmData.rewards;\n }\n if (Type === \"TokenNetBalance\") {\n acc.tokenNetBalance[tokenId] = farmData.rewards;\n }\n\n return acc;\n },\n { supplied: {}, borrowed: {}, netTvl: {}, tokenNetBalance: {} } as IFarms\n );\n return transformed;\n}\n","import {\n IAccountAllPositionsDetailed,\n Portfolio,\n IPortfolioAssetOrigin,\n PortfolioAsset,\n IPositionsOrigin,\n IPositions,\n ViewMethodsLogic,\n} from \"../types\";\nimport { DEFAULT_POSITION } from \"../config/constantConfig\";\nimport { hasZeroSharesFarmRewards } from \"../utils\";\nimport { view_on_near } from \"../chains\";\nimport { config_near } from \"../config\";\nconst convertAssetArrayToObject = (\n assets: IPortfolioAssetOrigin[]\n): { [tokenId: string]: PortfolioAsset } => {\n const result: { [tokenId: string]: PortfolioAsset } = {};\n for (const asset of assets) {\n result[asset.token_id] = {\n apr: asset.apr,\n balance: asset.balance,\n shares: asset.shares,\n };\n }\n return result;\n};\n\nconst convertPositions = (positionsOrigin: IPositionsOrigin): IPositions => {\n const result: IPositions = {};\n for (const shadowId in positionsOrigin) {\n const position = positionsOrigin[shadowId];\n result[shadowId] = {\n collateral: convertAssetArrayToObject(position.collateral),\n borrowed: convertAssetArrayToObject(position.borrowed),\n };\n }\n return result;\n};\n\n/**\n * Convert IAccountAllPositionsDetailed to Portfolio\n * @param accountPositions - Account all positions detailed data\n * @returns Portfolio object with array converted to object structure\n */\nexport const getPortfolio = (\n accountPositions: IAccountAllPositionsDetailed\n) => {\n const supplied = convertAssetArrayToObject(accountPositions.supplied);\n const positions = convertPositions(accountPositions.positions);\n const defaultPosition = positions[DEFAULT_POSITION] || {\n collateral: {},\n borrowed: {},\n };\n const collateral = defaultPosition.collateral;\n const borrowed = defaultPosition.borrowed;\n return {\n supplied,\n collateral,\n borrowed,\n positions,\n farms: accountPositions.farms,\n staking: accountPositions.booster_staking,\n stakings: accountPositions.booster_stakings,\n hasNonFarmedAssets:\n accountPositions.has_non_farmed_assets ||\n hasZeroSharesFarmRewards(accountPositions.farms),\n };\n};\n\nexport const getAccountAllPositions = async (\n account_id: string\n): Promise<IAccountAllPositionsDetailed> => {\n const accountDetailed = (await view_on_near({\n contractId: config_near.LOGIC_CONTRACT_NAME,\n methodName: ViewMethodsLogic[ViewMethodsLogic.get_account_all_positions],\n args: {\n account_id,\n },\n })) as IAccountAllPositionsDetailed;\n return accountDetailed;\n};\n","import { view_on_near } from \"../chains/near\";\nimport { ViewMethodsToken } from \"../types/contract-methods\";\n\nconst getBalance = async (\n tokenId: string,\n accountId: string\n): Promise<string> => {\n try {\n const balanceInYocto = (await view_on_near({\n contractId: tokenId,\n methodName: ViewMethodsToken[ViewMethodsToken.ft_balance_of],\n args: {\n account_id: accountId,\n },\n })) as string;\n return balanceInYocto;\n } catch (err: any) {\n console.error(\n `Failed to get balance for ${accountId} on ${tokenId} ${err.message}`\n );\n return \"0\";\n }\n};\nexport { getBalance };\n","import { ViewMethodsLogic, IAssetFarm } from \"../types\";\nimport { view_on_near } from \"../chains/near\";\nimport { config_near } from \"../config\";\n\nconst getAllFarms = async (): Promise<\n [Record<string, string>, IAssetFarm][]\n> => {\n try {\n const farms = await view_on_near({\n contractId: config_near.LOGIC_CONTRACT_NAME,\n methodName: ViewMethodsLogic[ViewMethodsLogic.get_asset_farms_paged],\n });\n\n return farms;\n } catch (e) {\n console.error(e);\n throw new Error(\"getAllFarms\");\n }\n};\n\nexport { getAllFarms };\n","import { view_on_near } from \"../chains/near\";\nimport { config_near } from \"../config\";\nimport { ViewMethodsLogic, IConfig } from \"../types\";\n\nexport const getConfig = async (): Promise<IConfig> => {\n try {\n const config = await view_on_near({\n contractId: config_near.LOGIC_CONTRACT_NAME,\n methodName: ViewMethodsLogic[ViewMethodsLogic.get_config],\n });\n return config;\n } catch (err: any) {\n console.error(`Failed to get config`);\n return {} as IConfig;\n }\n};\n","import { IWallet, IBusiness } from \"../../types/index\";\nimport { NDeposit } from \"../../utils/chainsUtil\";\nimport {\n fetchIntentsQuotation,\n postMultichainLendingRequests,\n pollingRelayerTransactionResult,\n} from \"../../view\";\nimport { TOKEN_STORAGE_DEPOSIT_READ } from \"../../config/constantConfig\";\n\nexport async function intentsQuotation({\n originAsset,\n destinationAsset,\n amount,\n refundTo,\n recipient,\n customRecipientMsg,\n isReverse,\n dry,\n slippageTolerance,\n}: {\n originAsset: string;\n destinationAsset: string;\n amount: string;\n refundTo: string;\n recipient: string;\n customRecipientMsg?: string;\n isReverse?: boolean;\n dry?: boolean;\n slippageTolerance?: number;\n}) {\n const res_quote = await fetchIntentsQuotation({\n originAsset,\n destinationAsset,\n amount,\n refundTo,\n recipient,\n isReverse,\n dry,\n slippageTolerance,\n ...(customRecipientMsg ? { customRecipientMsg } : {}),\n });\n return res_quote;\n}\n\nexport async function submitSignedTransactionToRelayer({\n mca,\n w,\n signedBusiness,\n business,\n reportData,\n pollingInterval,\n}: {\n mca: string;\n w: IWallet;\n signedBusiness: string;\n business: IBusiness;\n reportData?: string;\n pollingInterval?: number;\n}) {\n try {\n const relayer_result = await postMultichainLendingRequests({\n mca_id: mca,\n wallet: JSON.stringify(w),\n request: [\n JSON.stringify({\n signer_wallet: w,\n business: business,\n signature: signedBusiness,\n attach_deposit: NDeposit(TOKEN_STORAGE_DEPOSIT_READ),\n }),\n ],\n page_display_data: reportData || \"\",\n });\n if (relayer_result?.code == 0) {\n const { status, tx_hash } = await pollingRelayerTransactionResult(\n relayer_result.data,\n pollingInterval || 2000\n );\n return {\n status,\n tx_hash,\n message: status == \"error\" ? \"Relayer execution failed\" : \"\",\n };\n }\n return {\n status: \"error\",\n message: relayer_result?.msg,\n };\n } catch (error: any) {\n return {\n status: \"error\",\n message: error?.message || error?.error,\n };\n }\n}\n","import Decimal from \"decimal.js\";\nimport {\n ISimpleWithdraw,\n IConfig,\n ChangeMethodsLogic,\n ChangeMethodsOracle,\n IBusiness,\n} from \"../types/index\";\nimport { config_near } from \"../config/config\";\nimport {\n serializationObj,\n get_nonce_deadline,\n TGas,\n} from \"../utils/chainsUtil\";\nimport { intentsQuotation } from \"./actionUtil/commonAction\";\nimport {\n get_simple_withdraw_tx,\n query_account_register_token_tx,\n query_intents_tansfer_txs,\n} from \"./actionUtil/commonTx\";\n\nexport async function prepareBusinessDataOnBorrow({\n mca,\n recipient,\n tokenId,\n originAsset,\n destinationAsset,\n amountBurrow,\n amountToken,\n config,\n simpleWithdrawData,\n}: {\n mca: string;\n recipient: string;\n tokenId: string;\n originAsset: string;\n destinationAsset: string;\n amountBurrow: string;\n amountToken: string;\n config: IConfig;\n simpleWithdrawData: ISimpleWithdraw;\n}) {\n const enable_pyth_oracle = config.enable_pyth_oracle;\n const logicContractId = config_near.LOGIC_CONTRACT_NAME;\n const oracleContractId = config.oracle_account_id;\n const { nonce, deadline } = await get_nonce_deadline({ accountId: mca });\n const simple_withdraw_tx = get_simple_withdraw_tx({ simpleWithdrawData });\n const mca_register_token_tx = await query_account_register_token_tx({\n accountId: mca,\n tokenId,\n });\n // intents start\n const quoteResult = await intentsQuotation({\n originAsset,\n destinationAsset,\n amount: amountToken,\n refundTo: mca,\n recipient,\n });\n const depositAddress =\n quoteResult?.quoteSuccessResult?.quote?.depositAddress || \"\";\n // intents end\n\n const intents_tansfer_txs = query_intents_tansfer_txs({\n tokenId,\n depositAddress,\n amountToken,\n });\n const borrowTemplate = {\n Execute: {\n actions: [\n {\n Borrow: {\n token_id: tokenId,\n amount: new Decimal(amountBurrow).toFixed(),\n },\n },\n {\n Withdraw: {\n token_id: tokenId,\n max_amount: new Decimal(amountBurrow).toFixed(),\n },\n },\n ],\n },\n };\n const borrow_tx = [\n {\n FunctionCall: {\n receiver_id: enable_pyth_oracle ? logicContractId : oracleContractId,\n function_calls: [\n {\n method_name: enable_pyth_oracle\n ? ChangeMethodsLogic[ChangeMethodsLogic.execute_with_pyth]\n : ChangeMethodsOracle[ChangeMethodsOracle.oracle_call],\n args: serializationObj(\n config.enable_pyth_oracle\n ? {\n actions: borrowTemplate.Execute.actions,\n }\n : {\n receiver_id: logicContractId,\n msg: JSON.stringify(borrowTemplate),\n }\n ),\n gas: TGas(150),\n deposit: \"1\",\n },\n ],\n },\n },\n ];\n\n const businessMap: IBusiness = {\n nonce,\n deadline,\n tx_requests: [\n ...simple_withdraw_tx,\n ...mca_register_token_tx,\n ...borrow_tx,\n ...intents_tansfer_txs,\n ],\n };\n return {\n businessMap,\n quoteResult,\n };\n}\n\n/**\n * borrow的流程\n * 1. 准备borrow交易\n * 2. SDK使用者 将borrow交易序列化,使用mca绑定的任意钱包去签名序列化的borrow交易\n * 3. 签名完成后, 交给relayer上链\n * 4. 轮训relayer查询\n * 5. 返回relayer查询结果\n */\n","import { IWallet } from \"../types/chains\";\n\nexport function getCreateMcaCustomRecipientMsg({\n useAsCollateral,\n wallets,\n signedMessages,\n}: {\n useAsCollateral: boolean;\n wallets: IWallet[];\n signedMessages: string[];\n}) {\n const customRecipientMsg = JSON.stringify({\n w: wallets,\n b: {\n r: useAsCollateral\n ? \"BurrowRegisterAndCollateral\"\n : \"BurrowRegisterAndSupply\",\n },\n s: signedMessages,\n });\n return customRecipientMsg;\n}\n\n/**\n * 创建的流程\n * 1. SDK使用者需要用每一个待绑定的钱包对钱包列表进行签名。\n * 2. 签名完成后, 组织customRecipientMsg内容,进行intents试算,获得转账地址 depositAddress\n * 3. SDK使用者进行转账\n * 4. 多余的资金会自动进入用户的lending账户里\n */\n","import { IWallet } from \"../types/chains\";\nimport { serializationObj } from \"../utils/chainsUtil\";\n\nexport function getRepayCustomRecipientMsg({ w }: { w: IWallet }) {\n const customRecipientMsg = serializationObj({\n w: [w],\n b: {\n r: \"BurrowRepay\",\n },\n });\n return customRecipientMsg;\n}\n","import Decimal from \"decimal.js\";\nimport {\n ISimpleWithdraw,\n IConfig,\n ChangeMethodsLogic,\n ChangeMethodsOracle,\n IBusiness,\n} from \"../types/index\";\nimport { config_near } from \"../config/config\";\nimport { serializationObj, get_nonce_deadline } from \"../utils/chainsUtil\";\nimport { TGas } from \"../utils/chainsUtil\";\nimport { get_simple_withdraw_tx } from \"./actionUtil/commonTx\";\n\nexport async function prepareBusinessDataOnRepayFromSupplied({\n mca,\n tokenId,\n config,\n simpleWithdrawData,\n amountBurrow,\n decreaseAmountBurrow,\n}: {\n mca: string;\n tokenId: string;\n config: IConfig;\n simpleWithdrawData: ISimpleWithdraw;\n amountBurrow: string;\n decreaseAmountBurrow: string;\n}) {\n const enable_pyth_oracle = config.enable_pyth_oracle;\n const logicContractId = config_near.LOGIC_CONTRACT_NAME;\n const oracleContractId = config.oracle_account_id;\n const simple_withdraw_tx = get_simple_withdraw_tx({ simpleWithdrawData });\n const repay_tx = [];\n const repayTemplate = {\n Repay: {\n token_id: tokenId,\n amount: amountBurrow,\n },\n };\n const decreaseCollateralTemplate = {\n DecreaseCollateral: {\n token_id: tokenId,\n amount: decreaseAmountBurrow,\n },\n };\n repay_tx.push({\n FunctionCall: {\n receiver_id: enable_pyth_oracle ? logicContractId : oracleContractId,\n function_calls: [\n {\n method_name: enable_pyth_oracle\n ? ChangeMethodsLogic[ChangeMethodsLogic.execute_with_pyth]\n : ChangeMethodsOracle[ChangeMethodsOracle.oracle_call],\n args: serializationObj(\n enable_pyth_oracle\n ? {\n actions: [\n ...(new Decimal(decreaseAmountBurrow).gt(0)\n ? [decreaseCollateralTemplate]\n : []),\n repayTemplate,\n ],\n }\n : {\n receiver_id: logicContractId,\n msg: JSON.stringify({\n Execute: {\n actions: [\n ...(new Decimal(decreaseAmountBurrow).gt(0)\n ? [decreaseCollateralTemplate]\n : []),\n repayTemplate,\n ],\n },\n }),\n }\n ),\n gas: TGas(150),\n deposit: \"1\",\n },\n ],\n },\n });\n const { nonce, deadline } = await get_nonce_deadline({ accountId: mca });\n const businessMap: IBusiness = {\n nonce,\n deadline,\n tx_requests: [...simple_withdraw_tx, ...repay_tx],\n };\n return businessMap;\n}\n","import { IWallet } from \"../types/chains\";\nimport { serializationObj } from \"../utils/chainsUtil\";\n\nexport function getSupplyCustomRecipientMsg({\n useAsCollateral,\n w,\n}: {\n useAsCollateral: boolean;\n w: IWallet;\n}) {\n const customRecipientMsg = serializationObj({\n w: [w],\n b: {\n r: useAsCollateral ? \"BurrowCollateral\" : \"BurrowSupply\",\n },\n });\n return customRecipientMsg;\n}\n","import {\n ISimpleWithdraw,\n IConfig,\n ChangeMethodsLogic,\n ChangeMethodsOracle,\n IBusiness,\n} from \"../types/index\";\nimport { config_near } from \"../config/config\";\nimport {\n serializationObj,\n get_nonce_deadline,\n TGas,\n} from \"../utils/chainsUtil\";\nimport { intentsQuotation } from \"./actionUtil/commonAction\";\nimport {\n get_simple_withdraw_tx,\n query_account_register_token_tx,\n query_intents_tansfer_txs,\n} from \"./actionUtil/commonTx\";\n\nexport async function prepareBusinessDataOnWithdraw({\n mca,\n recipient,\n tokenId,\n originAsset,\n destinationAsset,\n amountBurrow,\n amountToken,\n config,\n simpleWithdrawData,\n isDecrease,\n decreaseCollateralAmount,\n}: {\n mca: string;\n recipient: string;\n tokenId: string;\n originAsset: string;\n destinationAsset: string;\n amountBurrow: string;\n amountToken: string;\n config: IConfig;\n simpleWithdrawData: ISimpleWithdraw;\n isDecrease: boolean;\n decreaseCollateralAmount: string;\n}) {\n const enable_pyth_oracle = config.enable_pyth_oracle;\n const logicContractId = config_near.LOGIC_CONTRACT_NAME;\n const oracleContractId = config.oracle_account_id;\n const { nonce, deadline } = await get_nonce_deadline({ accountId: mca });\n const simple_withdraw_tx = get_simple_withdraw_tx({ simpleWithdrawData });\n const mca_register_token_tx = await query_account_register_token_tx({\n accountId: mca,\n tokenId,\n });\n // intents start\n const quoteResult = await intentsQuotation({\n originAsset,\n destinationAsset,\n amount: amountToken,\n refundTo: mca,\n recipient,\n });\n const depositAddress =\n quoteResult?.quoteSuccessResult?.quote?.depositAddress || \"\";\n // intents end\n\n const intents_tansfer_txs = query_intents_tansfer_txs({\n tokenId,\n depositAddress,\n amountToken,\n });\n\n const withdraw_tx = [];\n const withdrawAction = {\n Withdraw: {\n token_id: tokenId,\n max_amount: amountBurrow,\n },\n };\n if (isDecrease) {\n const decreaseCollateralTemplate = {\n DecreaseCollateral: {\n token_id: tokenId,\n amount: decreaseCollateralAmount,\n },\n };\n withdraw_tx.push({\n FunctionCall: {\n receiver_id: enable_pyth_oracle ? logicContractId : oracleContractId,\n function_calls: [\n {\n method_name: enable_pyth_oracle\n ? ChangeMethodsLogic[ChangeMethodsLogic.execute_with_pyth]\n : ChangeMethodsOracle[ChangeMethodsOracle.oracle_call],\n args: serializationObj(\n enable_pyth_oracle\n ? {\n actions: [decreaseCollateralTemplate, withdrawAction],\n }\n : {\n receiver_id: logicContractId,\n msg: JSON.stringify({\n Execute: {\n actions: [decreaseCollateralTemplate, withdrawAction],\n },\n }),\n }\n ),\n gas: TGas(150),\n deposit: \"1\",\n },\n ],\n },\n });\n } else {\n withdraw_tx.push({\n FunctionCall: {\n receiver_id: logicContractId,\n function_calls: [\n {\n method_name: ChangeMethodsLogic[ChangeMethodsLogic.execute],\n args: serializationObj({\n actions: [withdrawAction],\n }),\n gas: TGas(150),\n deposit: \"1\",\n },\n ],\n },\n });\n }\n\n const businessMap: IBusiness = {\n nonce,\n deadline,\n tx_requests: [\n ...simple_withdraw_tx,\n ...mca_register_token_tx,\n ...withdraw_tx,\n ...intents_tansfer_txs,\n ],\n };\n return {\n businessMap,\n quoteResult,\n };\n}\n\n/**\n * withdraw的流程\n * 同 borrow\n */\n","import { get_nonce_deadline } from \"../utils/chainsUtil\";\nimport { IBusiness, IWallet } from \"../types/index\";\n\nexport async function prepareBusinessDataOnAddWallet({\n mca,\n w,\n signature_w,\n gas_token_id,\n gas_token_amount,\n}: {\n mca: string;\n gas_token_id: string;\n gas_token_amount: string;\n w: IWallet;\n signature_w: string;\n}) {\n const { nonce, deadline } = await get_nonce_deadline({ accountId: mca });\n const businessMap: IBusiness = {\n nonce,\n deadline,\n tx_requests: [\n {\n GasPayment: {\n token_id: gas_token_id,\n amount: gas_token_amount,\n },\n },\n {\n AddWallet: {\n wallet: w,\n signature: signature_w,\n },\n },\n ],\n };\n return businessMap;\n}\n","import { get_nonce_deadline } from \"../utils/chainsUtil\";\nimport { IBusiness, IWallet } from \"../types/index\";\n\nexport async function prepareBusinessDataOnRemoveWallet({\n mca,\n w,\n gas_token_id,\n gas_token_amount,\n}: {\n mca: string;\n gas_token_id: string;\n gas_token_amount: string;\n w: IWallet;\n}) {\n const { nonce, deadline } = await get_nonce_deadline({ accountId: mca });\n const businessMap: IBusiness = {\n nonce,\n deadline,\n tx_requests: [\n {\n GasPayment: {\n token_id: gas_token_id,\n amount: gas_token_amount,\n },\n },\n {\n RemoveWallet: w,\n },\n ],\n };\n return businessMap;\n}\n","import { IBusiness } from \"../types/index\";\nimport { get_nonce_deadline } from \"../utils/chainsUtil\";\nimport { intentsQuotation } from \"./actionUtil/commonAction\";\nimport { query_intents_tansfer_txs } from \"./actionUtil/commonTx\";\n\nexport async function prepareBusinessDataOninnerWithdraw({\n mca,\n recipient,\n tokenId,\n originAsset,\n destinationAsset,\n amountToken,\n gas_token_id,\n gas_token_amount,\n}: {\n mca: string;\n recipient: string;\n tokenId: string;\n originAsset: string;\n destinationAsset: string;\n amountToken: string;\n gas_token_id: string;\n gas_token_amount: string;\n}) {\n // intents start\n const quoteResult = await intentsQuotation({\n originAsset,\n destinationAsset,\n amount: amountToken,\n refundTo: mca,\n recipient,\n });\n const depositAddress =\n quoteResult?.quoteSuccessResult?.quote?.depositAddress || \"\";\n // intents end\n\n const intents_tansfer_txs = query_intents_tansfer_txs({\n tokenId,\n depositAddress,\n amountToken,\n });\n const { nonce, deadline } = await get_nonce_deadline({ accountId: mca });\n const businessMap: IBusiness = {\n nonce,\n deadline,\n tx_requests: [\n ...[\n {\n GasPayment: {\n token_id: gas_token_id,\n amount: gas_token_amount,\n },\n },\n ],\n ...intents_tansfer_txs,\n ],\n };\n return {\n businessMap,\n quoteResult,\n };\n}\n","import { IBusiness } from \"../types/index\";\nimport { config_near } from \"../config/config\";\nimport { serializationObj, get_nonce_deadline } from \"../utils/chainsUtil\";\nimport { TGas } from \"../utils/chainsUtil\";\n\nexport async function prepareBusinessDataOnClaim({\n mca,\n gas_token_id,\n gas_token_amount,\n}: {\n mca: string;\n gas_token_id: string;\n gas_token_amount: string;\n}) {\n const { nonce, deadline } = await get_nonce_deadline({ accountId: mca });\n const gas_payment_tx = [\n {\n GasPayment: {\n token_id: gas_token_id,\n amount: gas_token_amount,\n },\n },\n ];\n const claim_all_tx = [\n {\n FunctionCall: {\n receiver_id: config_near.LOGIC_CONTRACT_NAME,\n function_calls: [\n {\n method_name: \"account_farm_claim_all\",\n args: serializationObj({}),\n gas: TGas(100),\n deposit: \"0\",\n },\n ],\n },\n },\n ];\n const businessMap: IBusiness = {\n nonce,\n deadline,\n tx_requests: [...gas_payment_tx, ...claim_all_tx],\n };\n return businessMap;\n}\n","import Decimal from \"decimal.js\";\nimport { Portfolio, Assets } from \"../types\";\nimport { DEFAULT_POSITION } from \"../config/constantConfig\";\nimport { expandTokenDecimal } from \"../utils/numbers\";\nimport { MAX_RATIO } from \"../config/constantConfig\";\nconst sumReducerDecimal = (sum: Decimal, cur: Decimal) => sum.add(cur);\nexport const getAdjustedSum = ({\n type,\n portfolio,\n assets,\n}: {\n type: \"borrowed\" | \"collateral\";\n portfolio: Portfolio;\n assets: Assets;\n}) => {\n const positionId = DEFAULT_POSITION;\n const result = Object.keys(portfolio.positions[positionId]?.[type] || {}).map(\n (id) => {\n const asset = assets[id];\n let pricedBalance;\n const price = asset?.price\n ? new Decimal(asset.price.multiplier).div(\n new Decimal(10).pow(asset.price.decimals)\n )\n : new Decimal(0);\n pricedBalance = new Decimal(\n portfolio.positions[positionId][type][id].balance\n )\n .div(expandTokenDecimal(1, asset?.config?.extra_decimals || 0))\n .mul(price);\n\n return type === \"borrowed\"\n ? pricedBalance.div(asset?.config?.volatility_ratio || 1).mul(MAX_RATIO)\n : pricedBalance\n .mul(asset?.config?.volatility_ratio || 1)\n .div(MAX_RATIO);\n }\n );\n\n const sumResult = result?.reduce(sumReducerDecimal, new Decimal(0));\n return sumResult || new Decimal(0);\n};\n","import _ from \"lodash\";\nimport Decimal from \"decimal.js\";\nimport { Assets, Portfolio } from \"../types\";\nimport { DEFAULT_POSITION } from \"../config/constantConfig\";\nimport {\n decimalMax,\n expandTokenDecimal,\n decimalMin,\n shrinkToken,\n} from \"../utils\";\nimport { MAX_RATIO, config_near } from \"../config\";\nimport { getAdjustedSum } from \"../healthFactor\";\nexport const computeRelayerGas = ({\n nearStorageAmount,\n mca,\n relayerGasFees,\n assets,\n portfolio,\n}: {\n nearStorageAmount: string | number;\n mca: string;\n relayerGasFees: Record<string, string>;\n assets: Assets;\n portfolio: Portfolio;\n}) => {\n if (!mca || _.isEmpty(assets) || _.isEmpty(portfolio)) return;\n const { tokenId, amount, relayerFeeUsd } = searchMatchAssetId({\n portfolio,\n assets,\n nearStorageAmount,\n relayerGasFees,\n });\n if (!tokenId) return;\n const asset = assets[tokenId];\n const { metadata, config } = asset;\n const position = DEFAULT_POSITION;\n const decimals = metadata?.decimals || 0 + config.extra_decimals;\n const clonedPortfolio: Portfolio = JSON.parse(JSON.stringify(portfolio));\n\n if (!clonedPortfolio.positions[position]) {\n clonedPortfolio.positions[position] = {\n collateral: {\n [tokenId]: {\n balance: \"0\",\n shares: \"0\",\n apr: \"0\",\n },\n },\n borrowed: {},\n };\n } else if (!clonedPortfolio.positions[position].collateral[tokenId]) {\n clonedPortfolio.positions[position].collateral[tokenId] = {\n balance: \"0\",\n shares: \"0\",\n apr: \"0\",\n };\n }\n if (!clonedPortfolio.supplied[tokenId]) {\n clonedPortfolio.supplied[tokenId] = {\n balance: \"0\",\n shares: \"0\",\n apr: \"0\",\n };\n }\n const collateralBalance = new Decimal(\n clonedPortfolio.positions[position].collateral[tokenId].balance\n );\n const suppliedBalance = new Decimal(\n clonedPortfolio.supplied[tokenId].balance\n );\n const amountDecimal = expandTokenDecimal(amount || \"0\", decimals);\n const newCollateralBalance = decimalMax(\n 0,\n decimalMin(\n collateralBalance,\n collateralBalance.plus(suppliedBalance).minus(amountDecimal)\n )\n );\n const newSuppliedBalance = decimalMax(\n 0,\n suppliedBalance.minus(amountDecimal)\n );\n // update supplied on portfolio\n const newSuppliedBalanceMap = {\n shares: newSuppliedBalance.toFixed(),\n balance: newSuppliedBalance.toFixed(),\n };\n clonedPortfolio.supplied[tokenId] = {\n ...(clonedPortfolio.supplied[tokenId] || {}),\n ...newSuppliedBalanceMap,\n };\n // update collateral on portfolio\n const newCollateralBalanceMap = {\n shares: newCollateralBalance.toFixed(),\n balance: newCollateralBalance.toFixed(),\n };\n clonedPortfolio.collateral[tokenId] = {\n ...(clonedPortfolio.collateral[tokenId] || {}),\n ...newCollateralBalanceMap,\n };\n\n clonedPortfolio.positions[position].collateral[tokenId] = {\n ...clonedPortfolio.positions[position].collateral[tokenId],\n ...newCollateralBalanceMap,\n };\n const adjustedCollateralSum = getAdjustedSum({\n type: \"collateral\",\n portfolio: clonedPortfolio,\n assets,\n });\n const adjustedBorrowedSum = getAdjustedSum({\n type: \"borrowed\",\n portfolio,\n assets,\n });\n const healthFactorTemp = adjustedCollateralSum\n .div(adjustedBorrowedSum)\n .mul(100)\n .toNumber();\n const healthFactor =\n healthFactorTemp < MAX_RATIO ? healthFactorTemp : MAX_RATIO;\n if (healthFactor > 105) {\n return {\n portfolioMinusGas: clonedPortfolio,\n tokenId,\n amount,\n relayerFeeUsd,\n amountToken: expandTokenDecimal(\n amount,\n asset?.metadata?.decimals || 0\n ).toFixed(0, Decimal.ROUND_DOWN),\n amountBurrow: expandTokenDecimal(\n amount,\n (asset?.config?.extra_decimals || 0) + (asset?.metadata?.decimals || 0)\n ).toFixed(0, Decimal.ROUND_DOWN),\n };\n }\n return;\n};\n\nfunction searchMatchAssetId({\n portfolio,\n assets,\n nearStorageAmount,\n relayerGasFees,\n}: {\n portfolio: Portfolio;\n assets: Assets;\n nearStorageAmount: string | number;\n relayerGasFees: Record<string, string>;\n}) {\n const costNearUSD = new Decimal(\n assets[config_near.WRAP_NEAR_CONTRACT_ID]?.price?.usd || 0\n ).mul(nearStorageAmount || 0);\n const _suppliesUsd = Object.entries(portfolio.supplied)?.map(\n ([token_id, item]) => {\n const { balance } = item;\n const _asset = assets[token_id];\n const _price = _asset.price?.usd || 0;\n const _amount = shrinkToken(\n balance,\n (_asset?.config?.extra_decimals || 0) +\n (_asset?.metadata?.decimals || 0)\n );\n const _amount_relayer =\n shrinkToken(\n relayerGasFees[token_id] || 0,\n _asset?.metadata?.decimals || 0\n ) || 0;\n return {\n token_id,\n token_price: _price,\n token_decimals: _asset?.metadata?.decimals || 0,\n token_usd: new Decimal(_amount_relayer).gt(0)\n ? new Decimal(_price).mul(_amount).toFixed()\n : \"0\",\n relayerFeeUsd: new Decimal(_price).mul(_amount_relayer).toFixed(),\n totalFeeUsd: new Decimal(_price)\n .mul(_amount_relayer)\n .plus(costNearUSD)\n .toFixed(),\n };\n }\n );\n const maxSuppplied = _.maxBy(_suppliesUsd, (o) => +o.token_usd);\n if (\n new Decimal(maxSuppplied?.token_usd || 0).gt(0) &&\n new Decimal(maxSuppplied?.token_usd || 0).gte(\n maxSuppplied?.totalFeeUsd || 0\n )\n ) {\n return {\n tokenId: maxSuppplied?.token_id,\n amount: new Decimal(maxSuppplied?.token_price || 0).gt(0)\n ? new Decimal(maxSuppplied?.totalFeeUsd || 0)\n .div(maxSuppplied?.token_price || 0)\n .toFixed(maxSuppplied?.token_decimals || 0)\n : \"0\",\n relayerFeeUsd: maxSuppplied?.relayerFeeUsd,\n };\n } else {\n const _collateralUsd = Object.entries(\n portfolio?.positions?.[DEFAULT_POSITION]?.collateral || {}\n ).map(([token_id, _item]) => {\n const _asset = assets[token_id];\n const _price = _asset.price?.usd || 0;\n const _amount = shrinkToken(\n _item.balance,\n (_asset?.config?.extra_decimals || 0) +\n (_asset?.metadata?.decimals || 0)\n );\n const _amount_relayer =\n shrinkToken(\n relayerGasFees[token_id] || 0,\n _asset?.metadata?.decimals || 0\n ) || 0;\n return {\n token_id,\n token_price: _price,\n token_decimals: _asset?.metadata?.decimals || 0,\n token_usd: new Decimal(_amount_relayer).gt(0)\n ? new Decimal(_price).mul(_amount)\n : \"0\",\n relayerFeeUsd: new Decimal(_price).mul(_amount_relayer).toFixed(),\n totalFeeUsd: new Decimal(_price).mul(_amount_relayer).plus(costNearUSD),\n };\n });\n const maxCollateral = _.maxBy(_collateralUsd, (o) => +o.token_usd);\n if (\n new Decimal(maxCollateral?.token_usd || 0).gte(\n maxCollateral?.totalFeeUsd || 0\n )\n ) {\n return {\n tokenId: maxCollateral?.token_id,\n amount: new Decimal(maxCollateral?.token_price || 0).gt(0)\n ? new Decimal(maxCollateral?.totalFeeUsd || 0)\n .div(maxCollateral?.token_price || 0)\n .toFixed(maxCollateral?.token_decimals || 0)\n : \"0\",\n relayerFeeUsd: maxCollateral?.relayerFeeUsd,\n };\n }\n }\n return {};\n}\n","import _ from \"lodash\";\nimport { Assets, Portfolio } from \"../types\";\nimport { computeRelayerGas } from \"./computeRelayerGas\";\nexport const getSimpleWithdrawData = async ({\n nearStorageAmount,\n mca,\n relayerGasFees,\n assets,\n portfolio,\n}: {\n nearStorageAmount: string | number;\n mca: string;\n relayerGasFees: Record<string, string>;\n assets: Assets;\n portfolio: Portfolio;\n}) => {\n const gasData = await computeRelayerGas({\n nearStorageAmount,\n mca,\n relayerGasFees,\n assets,\n portfolio,\n });\n const simpleWithdrawData = gasData\n ? {\n tokenId: gasData.tokenId,\n amount: gasData.amount,\n amountToken: gasData.amountToken,\n amountBurrow: gasData.amountBurrow,\n }\n : null;\n return simpleWithdrawData;\n};\n\n\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/config/config.ts","../src/config/constantConfig.ts","../src/chains/near.ts","../src/chains/evm.ts","../src/chains/solana.ts","../src/chains/btc.ts","../src/types/contract-methods.ts","../src/utils/chainsUtil.ts","../src/action/actionUtil/commonTx.ts","../src/action/adjust.ts","../src/view/am.ts","../src/view/batch-views.ts","../src/view/get-booster-tokens.ts","../src/view/get-prices.ts","../src/view/centralized_api.ts","../src/view/get-all-metadata.ts","../src/view/get-assets.ts","../src/view/get-portfolio.ts","../src/view/get-balance.ts","../src/view/get-farms.ts","../src/view/get-config.ts","../src/action/actionUtil/commonAction.ts","../src/action/borrow.ts","../src/action/createMca.ts","../src/action/repay.ts","../src/action/repayFromSupplied.ts","../src/action/supply.ts","../src/action/withdraw.ts","../src/action/addWallet.ts","../src/action/removeWallet.ts","../src/action/innnerWithdraw.ts","../src/action/claim.ts","../src/utils/numbers.ts","../src/utils/lendingUtil.ts","../src/utils/transformers/farms.ts","../src/utils/transformers/account.ts","../src/utils/transformers/asstets.ts","../src/healthFactor/common.ts","../src/healthFactor/recomputeHealthFactorAdjust.ts","../src/healthFactor/recomputeHealthFactorBorrow.ts","../src/healthFactor/recomputeHealthFactorRepay.ts","../src/healthFactor/recomputeHealthFactorRepayFromDeposits.ts","../src/healthFactor/recomputeHealthFactorSupply.ts","../src/healthFactor/recomputeHealthFactorWithdraw.ts","../src/other/computeRelayerGas.ts","../src/maxAvailable/getBorrowMaxAmount.ts","../src/maxAvailable/getWithdrawMaxAmount.ts"],"names":["keyStores","connect","Decimal","ViewMethodsLogic","ViewMethodsOracle","ViewMethodsPyth","ViewMethodsToken","ChangeMethodsLogic","ChangeMethodsOracle","config","crypto","getConfig","omit","pick","_"],"mappings":"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","file":"index.cjs","sourcesContent":["const INFURA_KEY = \"45ad2962c1b5465bb6fe62db0d35b42f\";\ninterface INEARConfig {\n networkId: string;\n nodeUrl: string;\n explorerUrl: string;\n LOGIC_CONTRACT_NAME: string;\n REF_EXCHANGE_ID: string;\n WRAP_NEAR_CONTRACT_ID: string;\n XRHEA_TOKEN_ID: string;\n PYTH_ORACLE_ID: string;\n indexUrl: string;\n dataServiceUrl: string;\n txIdApiUrl: string;\n AM_CONTRACT: string;\n NBTCTokenId: string;\n WBTC_TOKEN_ID: string;\n hiddenAssets: string[];\n oneClickUrl: string;\n RELAYER_ID: string;\n HHHH: string;\n}\nlet customNodeUrl = \"\";\nexport const setCustomNodeUrl = (nodeUrl: string) => {\n customNodeUrl = nodeUrl;\n};\nfunction getConfig() {\n let NEAR_CONFIG: INEARConfig = {\n networkId: \"mainnet\",\n nodeUrl: customNodeUrl || \"https://free.rpc.fastnear.com\",\n explorerUrl: \"https://nearblocks.io\",\n LOGIC_CONTRACT_NAME: \"contract.main.burrow.near\",\n AM_CONTRACT: \"multica.near\",\n RELAYER_ID: \"bestdome534.near\",\n REF_EXCHANGE_ID: \"v2.ref-finance.near\",\n PYTH_ORACLE_ID: \"pyth-oracle.near\",\n WRAP_NEAR_CONTRACT_ID: \"wrap.near\",\n XRHEA_TOKEN_ID: \"xtoken.rhealab.near\",\n NBTCTokenId: \"nbtc.bridge.near\",\n WBTC_TOKEN_ID:\n \"2260fac5e5542a773aa44fbcfedf7c193bc2c599.factory.bridge.near\",\n indexUrl: \"https://api.rhea.finance\",\n dataServiceUrl: \"https://apidata.rhea.finance\",\n txIdApiUrl: \"https://api3.nearblocks.io\",\n oneClickUrl: \"https://1click.chaindefuser.com/v0\",\n hiddenAssets: [\n \"meta-token.near\",\n \"usn\",\n \"a663b02cf0a4b149d2ad41910cb81e23e1c41c32.factory.bridge.near\",\n \"4691937a7508860f876c9c0a2a617e7d9e945d4b.factory.bridge.near\",\n \"v2-nearx.stader-labs.near\",\n \"aurora\",\n \"token.burrow.near\",\n \"45.contract.portalbridge.near\",\n \"shadow_ref_v1-4179\",\n ],\n HHHH: \"xieqian\",\n };\n return {\n NEAR: NEAR_CONFIG,\n BTC: {},\n SOLANA: {\n nodeUrl: \"https://swr.xnftdata.com/rpc-proxy/\",\n },\n EVM: {\n chains: {\n arbitrum: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://arbiscan.io\",\n chainId: 42161,\n whChainId: 23,\n id: \"0xA4B1\",\n token: \"ETH\",\n label: \"Arbitrum\",\n rpcUrl: \"https://public-arb-mainnet.fastnode.io\",\n },\n aurora: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://explorer.aurora.dev\",\n chainId: 1313161554,\n id: \"0x4e454152\",\n token: \"ETH\",\n label: \"Aurora\",\n rpcUrl: \"https://mainnet.aurora.dev\",\n },\n avalanche: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://cchain.explorer.avax.network\",\n chainId: 43114,\n id: \"0xa86a\",\n token: \"AVAX\",\n label: \"Avalanche\",\n rpcUrl: \"https://avalanche.drpc.org\",\n },\n base: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://basescan.org\",\n chainId: 8453,\n whChainId: 30,\n id: \"0x2105\",\n token: \"ETH\",\n label: \"Base\",\n rpcUrl: \"https://mainnet.base.org\",\n },\n ethereum: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://etherscan.io\",\n chainId: 1,\n whChainId: 2,\n id: \"0x1\",\n token: \"ETH\",\n label: `Ethereum`,\n rpcUrl: \"https://mainnet.gateway.tenderly.co/\",\n },\n flare: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://flare-explorer.flare.network\",\n chainId: 14,\n id: \"0xe\",\n token: \"FLR\",\n label: \"Flare\",\n rpcUrl: \"https://flare-api.flare.network/ext/C/rpc\",\n },\n mantle: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://explorer.mantle.xyz\",\n chainId: 5000,\n id: \"0x1388\",\n token: \"MNT\",\n label: \"Mantle\",\n rpcUrl: \"https://rpc.mantle.xyz/\",\n },\n optimism: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://optimistic.etherscan.io\",\n chainId: 10,\n whChainId: 24,\n id: \"0xa\",\n token: \"ETH\",\n label: \"Optimism\",\n rpcUrl: \"https://mainnet.optimism.io\",\n },\n polygon: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://polygonscan.com\",\n chainId: 137,\n whChainId: 5,\n id: \"0x89\",\n token: \"MATIC\",\n label: \"Polygon\",\n rpcUrl: \"https://rpc-mainnet.matic.quiknode.pro\",\n },\n scroll: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://scrollscan.com\",\n chainId: 534352,\n id: \"0x82750\",\n token: \"ETH\",\n label: \"Scroll\",\n rpcUrl: \"https://rpc.ankr.com/scroll\",\n },\n sei: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://seitrace.com\",\n chainId: 1329,\n id: \"0x531\",\n token: \"SEI\",\n label: \"SEI\",\n rpcUrl: \"https://evm-rpc.sei-apis.com\",\n },\n taiko: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://taikoscan.io\",\n chainId: 167000,\n id: \"0x28c58\",\n token: \"ETH\",\n label: \"TAIKO\",\n rpcUrl: \"https://rpc.taiko.xyz\",\n },\n bsc: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://bscscan.com\",\n chainId: 56,\n whChainId: 4,\n id: \"0x38\",\n token: \"BNB\",\n label: \"BSC\",\n // rpcUrl: \"https://bsc.drpc.org\",\n rpcUrl: \"https://api.zan.top/bsc-mainnet\",\n },\n gravity: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n explorerUrl: \"https://explorer.gravity.xyz\",\n chainId: 1625,\n id: \"0x659\",\n token: \"G\",\n label: \"Gravity\",\n rpcUrl: \"https://rpc.gravity.xyz\",\n },\n bera: {\n network: \"mainnet\",\n infuraKey: INFURA_KEY,\n id: \"0x138de\",\n chainId: 1385,\n rpcUrl: \"https://rpc.berachain.com\",\n explorerUrl: \"https://berascan.com/\",\n token: \"BERA\",\n label: \"BERA\",\n },\n },\n },\n };\n}\n\nconst config = getConfig();\n// Use Proxy to make config_near dynamic\nexport const config_near = new Proxy({} as INEARConfig, {\n get(target, prop: string | symbol) {\n // Every time a property is accessed, get fresh config\n return getConfig().NEAR[prop as keyof INEARConfig];\n },\n});\n\nexport const config_btc = config.BTC;\nexport const config_solana = config.SOLANA;\nexport const config_evm = config.EVM;\n","export const FRACTION_DIGITS = 4;\nexport const MAX_RATIO = 10000;\nexport const NEAR_STORAGE_DEPOSIT = 0.1;\nexport const TOKEN_STORAGE_DEPOSIT_READ = 0.00125;\nexport const DEFAULT_POSITION = \"REGULAR\";\nexport const lpTokenPrefix = \"shadow_ref_v1\";\n","import Decimal from \"decimal.js\";\nimport { keyStores, connect } from \"near-api-js\";\nimport { config_near } from \"../config\";\n\nasync function getAccountConnection(accountId?: string) {\n let keyStore: keyStores.KeyStore;\n if (typeof (globalThis as any)[\"window\"] === \"undefined\") {\n keyStore = new keyStores.InMemoryKeyStore();\n } else {\n keyStore = new keyStores.BrowserLocalStorageKeyStore();\n }\n const connection = await connect({\n keyStore,\n networkId: config_near.networkId,\n nodeUrl: config_near.nodeUrl,\n });\n const account = await connection.account(\n accountId || config_near.LOGIC_CONTRACT_NAME\n );\n return account;\n}\n\nexport async function view_on_near({\n contractId,\n methodName,\n args = {},\n}: {\n contractId: string;\n methodName: string;\n args?: Record<string, any>;\n}) {\n const account = await getAccountConnection();\n const res = await account.viewFunction({\n contractId,\n methodName,\n args,\n });\n return res;\n}\n\nexport async function getAccountBalance(accountId: string) {\n const account = await getAccountConnection(accountId);\n const { available, total } = await account.getAccountBalance();\n const accountBalance = Decimal.max(available, 0).toFixed();\n const totalAccountBalance = Decimal.max(total, 0).toFixed();\n return {\n accountBalance,\n totalAccountBalance,\n };\n}\n","import _ from \"lodash\";\n\nexport function prepare_sign_message_evm(message: string) {\n return message;\n}\nexport function process_signature_evm(signature: string) {\n return signature.slice(2);\n}\n","import _ from \"lodash\";\n\nexport function prepare_sign_message_solana(message: string) {\n const messageBuffer = new TextEncoder().encode(message);\n return messageBuffer;\n}\n\nexport function process_signature_solana(\n signature: Uint8Array<ArrayBufferLike>\n) {\n return Buffer.from(signature).toString(\"hex\");\n}\n","export function prepare_sign_message_btc(message: string) {\n return message;\n}\n\nexport function process_signature_btc(signature: string) {\n const res = Buffer.from(signature, \"base64\");\n const hex = res.toString(\"hex\");\n return hex;\n}\n","export enum ViewMethodsLogic {\n // accounts\n get_account,\n get_accounts_paged,\n get_account_all_positions,\n get_margin_account,\n // assets\n get_asset,\n get_assets,\n get_assets_paged,\n get_assets_paged_detailed,\n // config\n get_config,\n get_margin_config,\n get_default_margin_base_token_limit,\n list_margin_base_token_limit,\n get_booster_tokens,\n // farms\n get_asset_farm,\n get_asset_farms,\n get_asset_farms_paged,\n storage_balance_of,\n get_all_token_pyth_infos,\n // batch views\n batch_views,\n}\n\nexport enum ViewMethodsOracle {\n get_price_data,\n}\nexport enum ViewMethodsPyth {\n get_price,\n list_prices_no_older_than,\n list_prices,\n}\nexport enum ViewMethodsToken {\n ft_metadata,\n ft_balance_of,\n storage_balance_of,\n get_st_near_price,\n get_nearx_price,\n ft_price,\n get_high_precision_virtual_price,\n storage_balance_bounds,\n}\n\n// Change methods can modify the state. But you don't receive the returned value when called.\nexport enum ChangeMethodsLogic {\n execute,\n execute_with_pyth,\n storage_deposit,\n oracle_on_call,\n account_farm_claim_all,\n add_asset_farm_reward,\n register_account,\n simple_withdraw,\n}\nexport enum ChangeMethodsOracle {\n oracle_call,\n}\n","import Decimal from \"decimal.js\";\nimport _ from \"lodash\";\nimport { IChain } from \"../types/chains\";\nimport { view_on_near } from \"../chains\";\n\nexport function format_wallet({\n chain,\n identityKey,\n}: {\n chain: IChain;\n identityKey: string;\n}) {\n let w;\n if (chain == \"evm\") {\n w = { EVM: identityKey.slice(2) };\n } else if (chain == \"solana\") {\n w = { Solana: identityKey };\n } else if (chain == \"btc\") {\n w = { Bitcoin: identityKey };\n }\n return w;\n}\n\nexport async function get_nonce_deadline({ accountId }: { accountId: string }) {\n const nonce = await view_on_near({\n contractId: accountId,\n methodName: \"get_nonce\",\n });\n const deadline = Math.floor(\n new Date(new Date().getTime() + 5 * 60 * 1000).getTime()\n ).toString();\n return {\n nonce,\n deadline,\n };\n}\n\nexport function TGas(gas: string | number) {\n return new Decimal(gas).mul(1000000000000).toFixed();\n}\nexport function NDeposit(deposit: string | number) {\n return new Decimal(deposit).mul(1000000000000000000000000).toFixed();\n}\nexport function serializationObj(params: any) {\n return JSON.stringify(params || {});\n}\n","import { config_near, TOKEN_STORAGE_DEPOSIT_READ } from \"../../config\";\nimport { ChangeMethodsLogic, ISimpleWithdraw } from \"../../types/index\";\nimport { serializationObj, TGas, NDeposit } from \"../../utils/chainsUtil\";\nimport { view_on_near } from \"../../chains/near\";\n\nexport function get_simple_withdraw_tx({\n simpleWithdrawData,\n}: {\n simpleWithdrawData: ISimpleWithdraw;\n}) {\n return [\n {\n FunctionCall: {\n receiver_id: config_near.LOGIC_CONTRACT_NAME,\n function_calls: [\n {\n method_name: ChangeMethodsLogic[ChangeMethodsLogic.simple_withdraw],\n args: serializationObj({\n token_id: simpleWithdrawData.tokenId,\n amount_with_inner_decimal: simpleWithdrawData.amountBurrow,\n recipient_id: config_near.RELAYER_ID,\n }),\n gas: TGas(100),\n deposit: \"1\",\n },\n ],\n },\n },\n ];\n}\n\nexport async function query_account_register_token_tx({\n tokenId,\n accountId,\n}: {\n tokenId: string;\n accountId: string;\n}) {\n const isRegistered = await view_on_near({\n contractId: tokenId,\n methodName: \"storage_balance_of\",\n args: {\n account_id: accountId,\n },\n });\n return !!isRegistered\n ? []\n : [\n {\n FunctionCall: {\n receiver_id: tokenId,\n function_calls: [\n {\n method_name: \"storage_deposit\",\n args: serializationObj({\n registration_only: false,\n account_id: accountId,\n }),\n gas: TGas(10),\n deposit: NDeposit(TOKEN_STORAGE_DEPOSIT_READ),\n },\n ],\n },\n },\n ];\n}\n\nexport function query_intents_tansfer_txs({\n tokenId,\n depositAddress,\n amountToken,\n}: {\n tokenId: string;\n depositAddress: string;\n amountToken: string;\n}) {\n const intents_tansfer_txs = [\n {\n FunctionCall: {\n receiver_id: tokenId,\n function_calls: [\n {\n method_name: \"storage_deposit\",\n args: serializationObj({\n account_id: depositAddress,\n registration_only: true,\n }),\n gas: TGas(10),\n deposit: NDeposit(TOKEN_STORAGE_DEPOSIT_READ),\n },\n {\n method_name: \"ft_transfer\",\n args: serializationObj({\n receiver_id: depositAddress,\n amount: amountToken,\n memo: null,\n }),\n gas: TGas(10),\n deposit: \"1\",\n },\n ],\n interval_block: 2,\n },\n },\n ];\n return intents_tansfer_txs;\n}\n","import {\n ISimpleWithdraw,\n IConfig,\n ChangeMethodsLogic,\n ChangeMethodsOracle,\n IBusiness,\n} from \"../types/index\";\nimport { config_near } from \"../config/config\";\nimport { serializationObj, get_nonce_deadline } from \"../utils/chainsUtil\";\nimport { TGas } from \"../utils/chainsUtil\";\nimport { get_simple_withdraw_tx } from \"./actionUtil/commonTx\";\n\nexport async function prepareBusinessDataOnAdjust({\n mca,\n tokenId,\n config,\n simpleWithdrawData,\n isIncreaseCollateral,\n increaseAmountBurrow,\n isDecreaseCollateral,\n decreaseAmountBurrow,\n}: {\n mca: string;\n tokenId: string;\n config: IConfig;\n simpleWithdrawData: ISimpleWithdraw;\n isIncreaseCollateral?: boolean;\n increaseAmountBurrow?: string;\n isDecreaseCollateral?: boolean;\n decreaseAmountBurrow?: string;\n}) {\n const enable_pyth_oracle = config.enable_pyth_oracle;\n const logicContractId = config_near.LOGIC_CONTRACT_NAME;\n const oracleContractId = config.oracle_account_id;\n const simple_withdraw_tx = get_simple_withdraw_tx({ simpleWithdrawData });\n const adjust_tx = [];\n if (isIncreaseCollateral) {\n const increaseCollateralTemplate = {\n IncreaseCollateral: {\n token_id: tokenId,\n max_amount: increaseAmountBurrow,\n },\n };\n adjust_tx.push({\n FunctionCall: {\n receiver_id: logicContractId,\n function_calls: [\n {\n method_name: enable_pyth_oracle\n ? ChangeMethodsLogic[ChangeMethodsLogic.execute_with_pyth]\n : ChangeMethodsLogic[ChangeMethodsLogic.execute],\n args: serializationObj({\n actions: [increaseCollateralTemplate],\n }),\n gas: TGas(150),\n deposit: \"1\",\n },\n ],\n },\n });\n } else if (isDecreaseCollateral) {\n const decreaseCollateralTemplate = {\n DecreaseCollateral: {\n token_id: tokenId,\n max_amount: decreaseAmountBurrow,\n },\n };\n adjust_tx.push({\n FunctionCall: {\n receiver_id: enable_pyth_oracle ? logicContractId : oracleContractId,\n function_calls: [\n {\n method_name: enable_pyth_oracle\n ? ChangeMethodsLogic[ChangeMethodsLogic.execute_with_pyth]\n : ChangeMethodsOracle[ChangeMethodsOracle.oracle_call],\n args: serializationObj(\n enable_pyth_oracle\n ? {\n actions: [decreaseCollateralTemplate],\n }\n : {\n receiver_id: logicContractId,\n msg: JSON.stringify({\n Execute: {\n actions: [decreaseCollateralTemplate],\n },\n }),\n }\n ),\n gas: TGas(150),\n deposit: \"1\",\n },\n ],\n },\n });\n }\n const { nonce, deadline } = await get_nonce_deadline({ accountId: mca });\n const businessMap: IBusiness = {\n nonce,\n deadline,\n tx_requests: [...simple_withdraw_tx, ...adjust_tx],\n };\n return businessMap;\n}\n","import { config_near } from \"../config\";\nimport { view_on_near } from \"../chains\";\nimport { format_wallet } from \"../utils/chainsUtil\";\nimport { IChain } from \"../types/chains\";\n\nexport async function getMcaByWallet({\n chain,\n identityKey,\n}: {\n chain: IChain;\n identityKey: string;\n}) {\n const w = format_wallet({\n chain,\n identityKey,\n });\n const res = await view_on_near({\n contractId: config_near.AM_CONTRACT,\n methodName: \"get_mca_by_wallet\",\n args: {\n wallet: w,\n },\n });\n return res;\n}\n\nexport async function getListWalletsByMca(mca: string) {\n const res = await view_on_near({\n contractId: config_near.AM_CONTRACT,\n methodName: \"list_wallets_by_mca\",\n args: {\n mca_id: mca,\n },\n });\n return res;\n}\n\nexport async function getCeateMcaFee(token_id: string) {\n const res = await view_on_near({\n contractId: config_near.AM_CONTRACT,\n methodName: \"get_create_mca_fee\",\n args: {\n token_id,\n },\n });\n return res;\n}\n\nexport async function getCreateMcaFeePaged() {\n const res = await view_on_near({\n contractId: config_near.AM_CONTRACT,\n methodName: \"get_create_mca_fee_paged\",\n });\n return res;\n}\n\nexport async function getNearValue(token_id: string) {\n const res = await view_on_near({\n contractId: config_near.AM_CONTRACT,\n methodName: \"get_near_value\",\n args: {\n token_id,\n },\n });\n return res;\n}\n\nexport async function getNearValuesPaged() {\n const res = await view_on_near({\n contractId: config_near.AM_CONTRACT,\n methodName: \"get_near_values_paged\",\n });\n return res;\n}\n","import { view_on_near } from \"../chains\";\nimport { config_near } from \"../config\";\nimport { ViewMethodsLogic, ILendingData } from \"../types\";\nexport async function batchViews(\n account_id?: string | undefined\n): Promise<ILendingData> {\n try {\n const res = await view_on_near({\n contractId: config_near.LOGIC_CONTRACT_NAME,\n methodName: ViewMethodsLogic[ViewMethodsLogic.batch_views],\n args: {\n ...(account_id ? { account_id } : {}),\n assets: true,\n config: true,\n token_pyth_infos: true,\n },\n });\n const [\n account_all_positions,\n ,\n assets_paged_detailed,\n config,\n ,\n ,\n ,\n token_pyth_infos,\n ] = res;\n return {\n account_all_positions,\n assets_paged_detailed,\n config,\n token_pyth_infos,\n };\n } catch (e) {\n console.error(\"batchViews error:\", e);\n return {} as any;\n }\n}\n","import { ViewMethodsLogic } from \"../types\";\nimport { view_on_near } from \"../chains\";\nimport { config_near } from \"../config\";\n\nexport const getBoosterTokens = async (): Promise<any> => {\n try {\n const config = (await view_on_near({\n contractId: config_near.LOGIC_CONTRACT_NAME,\n methodName: ViewMethodsLogic[ViewMethodsLogic.get_booster_tokens],\n })) as any;\n return config;\n } catch (e) {\n console.error(e);\n throw new Error(\"getBoosterTokens\");\n }\n};\n","import Decimal from \"decimal.js\";\nimport {\n IPythPrice,\n IConfig,\n IPrices,\n IPythInfo,\n ViewMethodsPyth,\n IAssetPrice,\n IPrice,\n ViewMethodsOracle,\n ViewMethodsToken,\n ViewMethodsLogic,\n} from \"../types\";\nimport { config_near } from \"../config\";\nimport { view_on_near } from \"../chains\";\nimport { FRACTION_DIGITS } from \"../config/constantConfig\";\nconst getPrices = async ({\n token_pyth_infos,\n config,\n}: {\n token_pyth_infos: Record<string, IPythInfo>;\n config: IConfig;\n}): Promise<IPrices | undefined> => {\n const { enable_pyth_oracle } = config;\n if (enable_pyth_oracle) {\n const pythResponse = await getPythPrices(token_pyth_infos);\n return pythResponse;\n } else {\n const oracleResponse = await getOraclePrices();\n return oracleResponse;\n }\n};\nconst getPythPrices = async (token_pyth_infos: Record<string, IPythInfo>) => {\n const nearTokenId = \"wrap.near\";\n const XRHEA_TOKEN = \"xtoken.rhealab.near\";\n const NEARX_TOKEN = \"v2-nearx.stader-labs.near\";\n const LINEAR_TOKEN = \"linear-protocol.near\";\n const STNEAR_TOKEN = \"meta-pool.near\";\n const RNEAR_TOKEN = \"lst.rhealab.near\";\n const COINList = token_pyth_infos;\n\n try {\n const array_coins = Object.entries(COINList);\n let near_pyth_price_obj: IPythPrice = {\n price: \"0\",\n conf: \"0\",\n expo: 0,\n publish_time: 0,\n };\n let rhea_pyth_price_obj: IPythPrice = {\n price: \"0\",\n conf: \"0\",\n expo: 0,\n publish_time: 0,\n };\n const identifiers = array_coins.map((coin) => coin[1].price_identifier);\n const list_prices_map = await view_on_near({\n contractId: config_near.PYTH_ORACLE_ID,\n methodName: ViewMethodsPyth[ViewMethodsPyth.list_prices_no_older_than],\n args: {\n price_ids: identifiers,\n age: 60,\n },\n });\n const price_array = array_coins.map(\n (coin) => list_prices_map[coin[1].price_identifier]\n );\n const format_price: IAssetPrice[] = price_array.map(\n (priceObject: IPythPrice, index) => {\n const coin = array_coins[index];\n if (!priceObject) {\n if (coin[1].default_price) {\n return {\n asset_id: coin[0],\n price: coin[1].default_price as IPrice,\n };\n }\n return {\n asset_id: coin[0],\n price: {\n multiplier: \"0\",\n decimals: coin[1].decimals + coin[1].fraction_digits,\n },\n };\n }\n const { price, expo } = priceObject;\n const p = new Decimal(10).pow(expo).mul(price).toNumber();\n if (coin[0] === nearTokenId) {\n near_pyth_price_obj = priceObject;\n }\n if (coin[0] === XRHEA_TOKEN) {\n rhea_pyth_price_obj = priceObject;\n }\n coin[1].fraction_digits = coin[1].fraction_digits || FRACTION_DIGITS;\n const discrepancy_denominator = new Decimal(10)\n .pow(coin[1].fraction_digits)\n .toNumber();\n const object = {\n asset_id: coin[0],\n price: {\n multiplier: new Decimal(p).mul(discrepancy_denominator).toFixed(0),\n decimals: coin[1].decimals + coin[1].fraction_digits,\n },\n };\n return object;\n }\n );\n const format_price_map: any = format_price.reduce(\n (acc, p: IAssetPrice) => ({ ...acc, [p.asset_id]: p }),\n {}\n );\n // Enable special price calculation for LST tokens (rNEAR, NEARX, STNEAR, LINEAR)\n // These tokens use NEAR price * proportion ratio instead of direct Pyth price\n const do_it = true;\n if (do_it && near_pyth_price_obj) {\n const near_price = new Decimal(10)\n .pow(near_pyth_price_obj.expo)\n .mul(near_pyth_price_obj.price);\n const nearx_proportion = (await view_on_near({\n contractId: NEARX_TOKEN,\n methodName: ViewMethodsToken[ViewMethodsToken.get_nearx_price],\n })) as string;\n const stnear_proportion = (await view_on_near({\n contractId: STNEAR_TOKEN,\n methodName: ViewMethodsToken[ViewMethodsToken.get_st_near_price],\n })) as string;\n const linear_proportion = (await view_on_near({\n contractId: LINEAR_TOKEN,\n methodName: ViewMethodsToken[ViewMethodsToken.ft_price],\n })) as string;\n const rnear_proportion = (await view_on_near({\n contractId: RNEAR_TOKEN,\n methodName: ViewMethodsToken[ViewMethodsToken.ft_price],\n })) as string;\n const nearx_price = new Decimal(near_price)\n .mul(nearx_proportion)\n .div(new Decimal(10).pow(24));\n const stnear_price = new Decimal(near_price)\n .mul(stnear_proportion)\n .div(new Decimal(10).pow(24));\n const linear_price = new Decimal(near_price)\n .mul(linear_proportion)\n .div(new Decimal(10).pow(24));\n const rnear_price = new Decimal(near_price)\n .mul(rnear_proportion)\n .div(new Decimal(10).pow(24));\n format_price_map[NEARX_TOKEN] = {\n asset_id: NEARX_TOKEN,\n price: {\n multiplier: nearx_price\n .mul(new Decimal(10).pow(FRACTION_DIGITS))\n .toFixed(0),\n decimals: 24 + FRACTION_DIGITS,\n },\n };\n format_price_map[STNEAR_TOKEN] = {\n asset_id: STNEAR_TOKEN,\n price: {\n multiplier: stnear_price\n .mul(new Decimal(10).pow(FRACTION_DIGITS))\n .toFixed(0),\n decimals: 24 + FRACTION_DIGITS,\n },\n };\n format_price_map[LINEAR_TOKEN] = {\n asset_id: LINEAR_TOKEN,\n price: {\n multiplier: linear_price\n .mul(new Decimal(10).pow(FRACTION_DIGITS))\n .toFixed(0),\n decimals: 24 + FRACTION_DIGITS,\n },\n };\n format_price_map[RNEAR_TOKEN] = {\n asset_id: RNEAR_TOKEN,\n price: {\n multiplier: rnear_price\n .mul(new Decimal(10).pow(FRACTION_DIGITS))\n .toFixed(0),\n decimals: 24 + FRACTION_DIGITS,\n },\n };\n }\n if (do_it && rhea_pyth_price_obj) {\n const rhea_price = new Decimal(10)\n .pow(rhea_pyth_price_obj.expo)\n .mul(rhea_pyth_price_obj.price);\n const xrhea_proportion = (await view_on_near({\n contractId: XRHEA_TOKEN,\n methodName:\n ViewMethodsToken[ViewMethodsToken.get_high_precision_virtual_price],\n })) as string;\n const xrhea_price = new Decimal(rhea_price)\n .mul(xrhea_proportion)\n .div(new Decimal(10).pow(24));\n format_price_map[XRHEA_TOKEN] = {\n asset_id: XRHEA_TOKEN,\n price: {\n multiplier: xrhea_price\n .mul(new Decimal(10).pow(FRACTION_DIGITS))\n .toFixed(0),\n decimals: 18 + FRACTION_DIGITS,\n },\n };\n }\n return {\n prices: Object.values(format_price_map) as IAssetPrice[],\n recency_duration_sec: 0,\n timestamp: \"0\",\n };\n } catch (error) {\n return undefined;\n }\n};\nconst getOraclePrices = async () => {\n try {\n const priceResponse: IPrices = (await view_on_near({\n contractId: config_near.LOGIC_CONTRACT_NAME,\n methodName: ViewMethodsOracle[ViewMethodsOracle.get_price_data],\n })) as IPrices;\n\n if (priceResponse) {\n priceResponse.prices = priceResponse?.prices?.map(\n (assetPrice: IAssetPrice) => ({\n ...assetPrice,\n price: assetPrice.price,\n })\n );\n }\n return priceResponse;\n } catch (err: any) {\n console.error(\"Getting prices failed: \", err.message);\n return undefined;\n }\n};\n\nconst getTokenPythInfos = async () => {\n return (await view_on_near({\n contractId: config_near.LOGIC_CONTRACT_NAME,\n methodName: ViewMethodsLogic[ViewMethodsLogic.get_all_token_pyth_infos],\n })) as Record<string, IPythInfo>;\n};\n\nexport { getPrices, getTokenPythInfos };\n","import { config_near } from \"../config/config\";\n// @ts-ignore\nimport crypto from \"crypto-browserify\";\nimport {\n IRelayerResult,\n IIntentItem,\n IStatus,\n IIntentSwapDetails,\n IIntentsQuoteResult,\n QuotationParams,\n} from \"../types/index\";\nconst { oneClickUrl, indexUrl } = config_near;\nexport const getSignature = (plaintext: string) => {\n const key = process.env.NEXT_PUBLIC_CRYPTO_KEY;\n if (!key) return;\n const iv = crypto.randomBytes(16);\n const cipher = crypto.createCipheriv(\"aes-256-cbc\", Buffer.from(key), iv);\n let encrypted = cipher.update(plaintext, \"utf-8\", \"base64\");\n encrypted += cipher.final(\"base64\");\n return iv.toString(\"base64\") + encrypted;\n};\n\nexport const getAuthenticationHeaders = (path: string) => {\n const time = Math.round(new Date().getTime() / 1000);\n const o = { path, time };\n const str = JSON.stringify(o);\n const signature = getSignature(str);\n return {\n Authentication: signature,\n };\n};\n\nexport async function get_liquidations(\n accountId: string,\n page?: number,\n pageSize?: number,\n assets?: any\n) {\n try {\n const response = await fetch(\n `${config_near.dataServiceUrl}/burrow/get_burrow_liquidate_records/${accountId}?page_number=${page}&page_size=${pageSize}`,\n {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n ...getAuthenticationHeaders(\n `/burrow/get_burrow_liquidate_records/${accountId}`\n ),\n },\n }\n );\n\n const liquidationData: any = await response.json().catch(() => ({}));\n const unreadIds: Array<string> = [];\n liquidationData?.record_list?.forEach((d: any) => {\n if (d.RepaidAssets) {\n d.RepaidAssets?.forEach((a: any) => {\n const tokenId = a.token_id;\n const asset = assets?.data?.[tokenId];\n a.data = asset;\n });\n }\n if (d.LiquidatedAssets) {\n d.LiquidatedAssets?.forEach((a: any) => {\n const tokenId = a.token_id;\n const asset = assets?.data?.[tokenId];\n a.data = asset;\n });\n }\n if (d.isRead === false) {\n unreadIds.push(d.receipt_id);\n }\n });\n\n return { liquidationData, unreadIds };\n } catch (err) {\n console.error(err);\n return { liquidationData: {}, unreadIds: [] };\n }\n}\n\nexport async function get_token_detail(tokenId: string, period = 1) {\n try {\n const response = (\n await fetch(\n `${config_near.dataServiceUrl}/burrow/get_token_detail/${tokenId}?period=${period}`,\n {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n ...getAuthenticationHeaders(\n `${config_near.dataServiceUrl}/burrow/get_token_detail/${tokenId}`\n ),\n },\n }\n )\n )\n .json()\n .catch(() => {\n return [];\n });\n return response;\n } catch (err) {\n return [];\n }\n}\n\nexport async function get_all_tokens_metadata() {\n const data: any = await fetch(\n `${config_near.indexUrl}/list-burrow-asset-token`\n )\n .then((res) => res.json())\n .catch(() => {\n return {};\n });\n Object.keys(data).reduce((acc, cur) => {\n const tokenMetadata = data[cur];\n tokenMetadata.token_id = cur;\n acc[cur] = tokenMetadata;\n return acc;\n }, {} as any);\n return data;\n}\n\nexport async function get_interest_rate(tokenId: string) {\n try {\n const response = (\n await fetch(\n `${config_near.dataServiceUrl}/burrow/get_token_interest_rate/${tokenId}`,\n {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n ...getAuthenticationHeaders(\n `${config_near.dataServiceUrl}/burrow/get_token_interest_rate/${tokenId}`\n ),\n },\n }\n )\n )\n .json()\n .catch(() => {\n return {};\n });\n return response;\n } catch (err) {\n return {};\n }\n}\n\nexport async function get_records(\n accountId: string,\n pageNumber = 1,\n pageSize = 10\n) {\n try {\n const response = (\n await fetch(\n `${config_near.indexUrl}/get-burrow-records?account_id=${accountId}&page_number=${pageNumber}&page_size=${pageSize}`,\n {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n ...getAuthenticationHeaders(\n `${config_near.indexUrl}/get-burrow-records`\n ),\n },\n }\n )\n )\n .json()\n .catch(() => {\n return {};\n });\n return response;\n } catch (err) {\n return {};\n }\n}\n\nexport async function get_tx_id(receipt_id: string) {\n try {\n const res = await fetch(\n `${config_near.txIdApiUrl}/v1/search?keyword=${receipt_id}`,\n {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n },\n }\n );\n return await res.json().catch(() => ({}));\n } catch (error) {\n return {};\n }\n}\nexport async function fetchIntentsQuotation(\n params: QuotationParams\n): Promise<IIntentsQuoteResult> {\n try {\n const res_params = {\n originAsset: params?.originAsset,\n destinationAsset: params?.destinationAsset,\n amount: params?.amount,\n refundTo: params?.refundTo,\n recipient: params?.recipient,\n customRecipientMsg: params?.customRecipientMsg,\n dry: params?.dry || false,\n swapType: params.isReverse ? \"EXACT_OUTPUT\" : \"EXACT_INPUT\",\n refundType: \"ORIGIN_CHAIN\",\n recipientType: \"DESTINATION_CHAIN\",\n depositType: \"ORIGIN_CHAIN\",\n deadline: new Date(Date.now() + 10000 * 60 * 60 * 1000).toISOString(),\n referral: \"rhea\",\n quoteWaitingTimeMs: 3000,\n slippageTolerance:\n typeof params.slippageTolerance == \"number\"\n ? params.slippageTolerance\n : 50,\n };\n const response: any = await fetch(`${oneClickUrl}/quote`, {\n method: \"POST\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n },\n body: JSON.stringify(res_params),\n }).then((res) => {\n return res.json();\n });\n const quote = response?.quote;\n if (quote) {\n return {\n quoteStatus: \"success\",\n quoteSuccessResult: response,\n };\n } else {\n return {\n quoteStatus: \"error\",\n message: response?.message,\n };\n }\n } catch (error: any) {\n return {\n quoteStatus: \"error\",\n message: error?.message || error?.error,\n };\n }\n}\n\nexport async function fetchIntentsTransactionStatus(depositAddress: string) {\n try {\n const response = await fetch(\n `${oneClickUrl}/status?depositAddress=${depositAddress}`,\n {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n },\n }\n ).then((res) => {\n return res.json();\n });\n return response;\n } catch (error) {\n console.error(\"Error fetchIntentsTransactionStatus:\", error);\n return null;\n }\n}\n\nexport async function fetchIntentsTokens(): Promise<IIntentItem[]> {\n try {\n const response = await fetch(`${oneClickUrl}/tokens`, {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n },\n }).then((res) => {\n return res.json();\n });\n return response as IIntentItem[];\n } catch (error) {\n console.error(\"Error fetching fetchIntentsTokens:\", error);\n return [];\n }\n}\n\ntype IIntentsStatus = \"success\" | \"refunded\" | \"failed\";\nexport async function pollingTransactionStatus(\n depositAddress: string\n): Promise<{\n status: IIntentsStatus;\n swapDetails: IIntentSwapDetails;\n}> {\n let isOver = false;\n let status: any;\n let swapDetails: any;\n while (!isOver) {\n const resString = await fetchIntentsTransactionStatus(depositAddress);\n const parsed: any = resString || {};\n status = parsed?.status?.toLowerCase();\n if (status == \"success\" || status == \"refunded\" || status == \"failed\") {\n isOver = true;\n swapDetails = parsed?.swapDetails || {};\n } else {\n await new Promise((resolve) => {\n setTimeout(() => {\n resolve(true);\n }, 5000);\n });\n }\n }\n return {\n status,\n swapDetails,\n };\n}\n\nexport async function getMultichainLendingConfig(): Promise<\n Record<string, string>[]\n> {\n try {\n const response = await fetch(`${indexUrl}/get_multichain_lending_config`, {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n },\n }).then((res) => {\n return res.json();\n });\n return response as Record<string, string>[];\n } catch (error) {\n console.error(\"Error fetching get_multichain_lending_config:\", error);\n return [];\n }\n}\n\nexport async function postMultichainLendingRequests({\n mca_id,\n wallet,\n request,\n page_display_data,\n}: {\n mca_id: string;\n wallet: string;\n request: string[];\n page_display_data: string;\n}): Promise<{\n code: number;\n data: string;\n msg: string;\n}> {\n try {\n const params = {\n mca_id,\n wallet,\n request,\n page_display_data,\n };\n const response = await fetch(`${indexUrl}/multichain_lending_requests`, {\n method: \"POST\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n },\n body: JSON.stringify(params),\n }).then((res) => {\n return res.json();\n });\n return response as any;\n } catch (error) {\n console.error(\"Error fetching get_multichain_lending_config:\", error);\n return null as any;\n }\n}\n\nexport async function getMultichainLendingData(\n batch_id: string\n): Promise<IRelayerResult[]> {\n try {\n const response = await fetch(\n `${indexUrl}/get_multichain_lending_data?batch_id=${batch_id}`,\n {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n },\n }\n ).then((res) => {\n return res.json();\n });\n return response as IRelayerResult[];\n } catch (error) {\n console.error(\"Error fetching get_multichain_lending_data:\", error);\n return [];\n }\n}\n\n/**\n * 0(pending)1(processing) 2(complete)\n * tx_hash: The transaction has been recorded on the blockchain.\n * tx_err_msg: err msg on blockchain\n * other_err_msg: err msg on offChain\n */\nexport async function pollingRelayerTransactionResult(\n batch_id: string,\n interval?: number\n): Promise<{\n status: IStatus;\n tx_hash: string;\n}> {\n let isOver = false;\n let status: any;\n let tx_hash;\n while (!isOver) {\n const res = await getMultichainLendingData(batch_id);\n const isComplete = res.every((item) => item.batch_status == 2);\n if (isComplete) {\n isOver = true;\n const requestResult = res.map((item) => JSON.parse(item.request_result));\n const isSuccess = requestResult.every(\n (result) => !(result.other_err_msg || result.tx_err_msg)\n );\n status = isSuccess ? \"success\" : \"error\";\n tx_hash = requestResult[requestResult.length - 1].tx_hash;\n } else {\n await new Promise((resolve) => {\n setTimeout(() => {\n resolve(true);\n }, interval || 5000);\n });\n }\n }\n return {\n status,\n tx_hash,\n };\n}\n\nexport async function getMultichainLendingHistory({\n mca_id,\n page_number,\n page_size,\n}: {\n mca_id: string;\n page_number: number;\n page_size: number;\n}) {\n try {\n const response = await fetch(\n `${indexUrl}/get_multichain_lending_history?mca_id=${mca_id}&page_number=${page_number}&page_size=${page_size}`,\n {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n },\n }\n ).then((res) => {\n return res.json();\n });\n return response;\n } catch (error) {\n console.error(\"Error fetching get_multichain_lending_history:\", error);\n return null;\n }\n}\n\nexport async function postMultichainLendingReport({\n mca_id,\n wallet,\n request_hash,\n page_display_data,\n}: {\n mca_id: string;\n wallet: string;\n request_hash: string;\n page_display_data: string;\n}): Promise<{\n code: number;\n data: string;\n msg: string;\n}> {\n try {\n const params = {\n mca_id,\n wallet,\n request_hash,\n page_display_data,\n };\n const response = await fetch(`${indexUrl}/multichain_lending_report`, {\n method: \"POST\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n },\n body: JSON.stringify(params),\n }).then((res) => {\n return res.json();\n });\n return response as any;\n } catch (error) {\n console.error(\"Error fetching get_multichain_lending_config:\", error);\n return null as any;\n }\n}\n\n// get_multichain_lending_tokens_data?chains=bsc,stellar\nexport async function getMultichainTokensByChains(\n chains: string\n): Promise<IIntentItem[]> {\n try {\n const response = await fetch(\n `${indexUrl}/get_multichain_lending_tokens_data?chains=${chains}`,\n {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json; charset=UTF-8\",\n },\n }\n ).then((res) => {\n return res.json();\n });\n return response as IIntentItem[];\n } catch (error) {\n console.error(\"Error fetching get_multichain_lending_tokens_data:\", error);\n return [];\n }\n}\n","import { IMetadata, ViewMethodsToken } from \"../types\";\nimport { get_all_tokens_metadata } from \"./centralized_api\";\nimport { view_on_near } from \"../chains\";\n\nexport const getAllMetadata = async (\n token_ids: string[]\n): Promise<IMetadata[]> => {\n try {\n const tokensMap = await get_all_tokens_metadata();\n const metadata: IMetadata[] = token_ids.map(\n (token_id) => tokensMap[token_id]\n );\n const emptyMetadatas = metadata.filter((meta) => !meta);\n if (emptyMetadatas.length) {\n throw new Error(\"missing token metadata\");\n }\n return metadata;\n } catch (err) {\n const metadata: IMetadata[] = (\n await Promise.all(token_ids.map((token_id) => getMetadata(token_id)))\n ).filter((m): m is IMetadata => !!m);\n return metadata;\n }\n};\n\nexport const getMetadata = async (\n token_id: string\n): Promise<IMetadata | undefined> => {\n try {\n const metadata: IMetadata = (await view_on_near({\n contractId: token_id,\n methodName: ViewMethodsToken[ViewMethodsToken.ft_metadata],\n })) as IMetadata;\n metadata.token_id = token_id;\n return metadata;\n } catch (err: any) {\n console.error(`Failed to get metadata for ${token_id} ${err.message}`);\n return undefined;\n }\n};\n","import Decimal from \"decimal.js\";\nimport {\n IPrices,\n IMetadata,\n IAssetDetailed,\n IPythInfo,\n IConfig,\n Assets,\n ViewMethodsLogic,\n} from \"../types\";\nimport { getAllMetadata } from \"./get-all-metadata\";\nimport { getPrices } from \"./get-prices\";\nimport { config_near } from \"../config\";\nimport { view_on_near } from \"../chains/near\";\n\nconst getPrice = (\n tokenId: string,\n priceResponse: IPrices | undefined,\n metadata: IMetadata | undefined\n) => {\n if (!priceResponse || !metadata) {\n return { usd: \"0\", decimals: metadata?.decimals || 0, multiplier: \"0\" };\n }\n const price = priceResponse.prices.find((p) => p.asset_id === tokenId)?.price;\n if (!price)\n return { usd: \"0\", decimals: metadata?.decimals || 0, multiplier: \"0\" };\n const usd = new Decimal(\n Number(price.multiplier) / 10 ** (price.decimals - metadata.decimals)\n ).toFixed();\n return { ...price, usd };\n};\n\nexport const getAssets = async ({\n assets_paged_detailed,\n token_pyth_infos,\n config,\n}: {\n assets_paged_detailed: IAssetDetailed[];\n token_pyth_infos: Record<string, IPythInfo>;\n config: IConfig;\n}) => {\n const hiddenAssets = config_near.hiddenAssets;\n const assets = assets_paged_detailed.filter(\n (asset) => !hiddenAssets.includes(asset.token_id)\n );\n const tokenIds = assets.map((asset) => asset.token_id);\n const metadatas: IMetadata[] = await getAllMetadata(tokenIds);\n const pricesResponse = await getPrices({ token_pyth_infos, config });\n const res: IAssetDetailed[] = [];\n for (const asset of assets) {\n const metadata = metadatas.find((m) => m.token_id === asset.token_id);\n res.push({\n ...asset,\n price: getPrice(asset.token_id, pricesResponse, metadata),\n metadata,\n });\n }\n const map = res.reduce((acc, cur) => {\n acc[cur.token_id] = cur;\n return acc;\n }, {} as Assets);\n return map;\n};\n\nexport const getAssetsDetail = async (): Promise<IAssetDetailed[]> => {\n return (await view_on_near({\n contractId: config_near.LOGIC_CONTRACT_NAME,\n methodName: ViewMethodsLogic[ViewMethodsLogic.get_assets_paged_detailed],\n })) as IAssetDetailed[];\n};\n","import { IAccountAllPositionsDetailed, ViewMethodsLogic } from \"../types\";\nimport { view_on_near } from \"../chains\";\nimport { config_near } from \"../config\";\n\nexport const getAccountAllPositions = async (\n account_id: string\n): Promise<IAccountAllPositionsDetailed> => {\n const accountDetailed = (await view_on_near({\n contractId: config_near.LOGIC_CONTRACT_NAME,\n methodName: ViewMethodsLogic[ViewMethodsLogic.get_account_all_positions],\n args: {\n account_id,\n },\n })) as IAccountAllPositionsDetailed;\n return accountDetailed;\n};\n","import { view_on_near } from \"../chains/near\";\nimport { ViewMethodsToken } from \"../types/contract-methods\";\n\nconst getBalance = async (\n tokenId: string,\n accountId: string\n): Promise<string> => {\n try {\n const balanceInYocto = (await view_on_near({\n contractId: tokenId,\n methodName: ViewMethodsToken[ViewMethodsToken.ft_balance_of],\n args: {\n account_id: accountId,\n },\n })) as string;\n return balanceInYocto;\n } catch (err: any) {\n console.error(\n `Failed to get balance for ${accountId} on ${tokenId} ${err.message}`\n );\n return \"0\";\n }\n};\nexport { getBalance };\n","import { ViewMethodsLogic, IAssetFarm } from \"../types\";\nimport { view_on_near } from \"../chains/near\";\nimport { config_near } from \"../config\";\n\nconst getAllFarms = async (): Promise<\n [Record<string, string>, IAssetFarm][]\n> => {\n try {\n const farms = await view_on_near({\n contractId: config_near.LOGIC_CONTRACT_NAME,\n methodName: ViewMethodsLogic[ViewMethodsLogic.get_asset_farms_paged],\n });\n\n return farms;\n } catch (e) {\n console.error(e);\n throw new Error(\"getAllFarms\");\n }\n};\n\nexport { getAllFarms };\n","import { view_on_near } from \"../chains/near\";\nimport { config_near } from \"../config\";\nimport { ViewMethodsLogic, IConfig } from \"../types\";\n\nexport const getConfig = async (): Promise<IConfig> => {\n try {\n const config = await view_on_near({\n contractId: config_near.LOGIC_CONTRACT_NAME,\n methodName: ViewMethodsLogic[ViewMethodsLogic.get_config],\n });\n return config;\n } catch (err: any) {\n console.error(`Failed to get config`);\n return {} as IConfig;\n }\n};\n","import { IWallet, IBusiness } from \"../../types/index\";\nimport { NDeposit } from \"../../utils/chainsUtil\";\nimport {\n fetchIntentsQuotation,\n postMultichainLendingRequests,\n pollingRelayerTransactionResult,\n} from \"../../view\";\nimport { TOKEN_STORAGE_DEPOSIT_READ } from \"../../config/constantConfig\";\n\nexport async function intentsQuotation({\n originAsset,\n destinationAsset,\n amount,\n refundTo,\n recipient,\n customRecipientMsg,\n isReverse,\n dry,\n slippageTolerance,\n}: {\n originAsset: string;\n destinationAsset: string;\n amount: string;\n refundTo: string;\n recipient: string;\n customRecipientMsg?: string;\n isReverse?: boolean;\n dry?: boolean;\n slippageTolerance?: number;\n}) {\n const res_quote = await fetchIntentsQuotation({\n originAsset,\n destinationAsset,\n amount,\n refundTo,\n recipient,\n isReverse,\n dry,\n slippageTolerance,\n ...(customRecipientMsg ? { customRecipientMsg } : {}),\n });\n return res_quote;\n}\n\nexport async function submitSignedTransactionToRelayer({\n mca,\n w,\n signedBusiness,\n business,\n reportData,\n pollingInterval,\n}: {\n mca: string;\n w: IWallet;\n signedBusiness: string;\n business: IBusiness;\n reportData?: string;\n pollingInterval?: number;\n}) {\n try {\n const relayer_result = await postMultichainLendingRequests({\n mca_id: mca,\n wallet: JSON.stringify(w),\n request: [\n JSON.stringify({\n signer_wallet: w,\n business: business,\n signature: signedBusiness,\n attach_deposit: NDeposit(TOKEN_STORAGE_DEPOSIT_READ),\n }),\n ],\n page_display_data: reportData || \"\",\n });\n if (relayer_result?.code == 0) {\n const { status, tx_hash } = await pollingRelayerTransactionResult(\n relayer_result.data,\n pollingInterval || 2000\n );\n return {\n status,\n tx_hash,\n message: status == \"error\" ? \"Relayer execution failed\" : \"\",\n };\n }\n return {\n status: \"error\",\n message: relayer_result?.msg,\n };\n } catch (error: any) {\n return {\n status: \"error\",\n message: error?.message || error?.error,\n };\n }\n}\n","import Decimal from \"decimal.js\";\nimport {\n ISimpleWithdraw,\n IConfig,\n ChangeMethodsLogic,\n ChangeMethodsOracle,\n IBusiness,\n} from \"../types/index\";\nimport { config_near } from \"../config/config\";\nimport {\n serializationObj,\n get_nonce_deadline,\n TGas,\n} from \"../utils/chainsUtil\";\nimport { intentsQuotation } from \"./actionUtil/commonAction\";\nimport {\n get_simple_withdraw_tx,\n query_account_register_token_tx,\n query_intents_tansfer_txs,\n} from \"./actionUtil/commonTx\";\n\nexport async function prepareBusinessDataOnBorrow({\n mca,\n recipient,\n tokenId,\n originAsset,\n destinationAsset,\n amountBurrow,\n amountToken,\n config,\n simpleWithdrawData,\n}: {\n mca: string;\n recipient: string;\n tokenId: string;\n originAsset: string;\n destinationAsset: string;\n amountBurrow: string;\n amountToken: string;\n config: IConfig;\n simpleWithdrawData: ISimpleWithdraw;\n}) {\n const enable_pyth_oracle = config.enable_pyth_oracle;\n const logicContractId = config_near.LOGIC_CONTRACT_NAME;\n const oracleContractId = config.oracle_account_id;\n const { nonce, deadline } = await get_nonce_deadline({ accountId: mca });\n const simple_withdraw_tx = get_simple_withdraw_tx({ simpleWithdrawData });\n const mca_register_token_tx = await query_account_register_token_tx({\n accountId: mca,\n tokenId,\n });\n // intents start\n const quoteResult = await intentsQuotation({\n originAsset,\n destinationAsset,\n amount: amountToken,\n refundTo: mca,\n recipient,\n });\n const depositAddress =\n quoteResult?.quoteSuccessResult?.quote?.depositAddress || \"\";\n // intents end\n\n const intents_tansfer_txs = query_intents_tansfer_txs({\n tokenId,\n depositAddress,\n amountToken,\n });\n const borrowTemplate = {\n Execute: {\n actions: [\n {\n Borrow: {\n token_id: tokenId,\n amount: new Decimal(amountBurrow).toFixed(),\n },\n },\n {\n Withdraw: {\n token_id: tokenId,\n max_amount: new Decimal(amountBurrow).toFixed(),\n },\n },\n ],\n },\n };\n const borrow_tx = [\n {\n FunctionCall: {\n receiver_id: enable_pyth_oracle ? logicContractId : oracleContractId,\n function_calls: [\n {\n method_name: enable_pyth_oracle\n ? ChangeMethodsLogic[ChangeMethodsLogic.execute_with_pyth]\n : ChangeMethodsOracle[ChangeMethodsOracle.oracle_call],\n args: serializationObj(\n config.enable_pyth_oracle\n ? {\n actions: borrowTemplate.Execute.actions,\n }\n : {\n receiver_id: logicContractId,\n msg: JSON.stringify(borrowTemplate),\n }\n ),\n gas: TGas(150),\n deposit: \"1\",\n },\n ],\n },\n },\n ];\n\n const businessMap: IBusiness = {\n nonce,\n deadline,\n tx_requests: [\n ...simple_withdraw_tx,\n ...mca_register_token_tx,\n ...borrow_tx,\n ...intents_tansfer_txs,\n ],\n };\n return {\n businessMap,\n quoteResult,\n };\n}\n\n/**\n * borrow的流程\n * 1. 准备borrow交易\n * 2. SDK使用者 将borrow交易序列化,使用mca绑定的任意钱包去签名序列化的borrow交易\n * 3. 签名完成后, 交给relayer上链\n * 4. 轮训relayer查询\n * 5. 返回relayer查询结果\n */\n","import { IWallet } from \"../types/chains\";\n\nexport function getCreateMcaCustomRecipientMsg({\n useAsCollateral,\n wallets,\n signedMessages,\n}: {\n useAsCollateral: boolean;\n wallets: IWallet[];\n signedMessages: string[];\n}) {\n const customRecipientMsg = JSON.stringify({\n w: wallets,\n b: {\n r: useAsCollateral\n ? \"BurrowRegisterAndCollateral\"\n : \"BurrowRegisterAndSupply\",\n },\n s: signedMessages,\n });\n return customRecipientMsg;\n}\n\n/**\n * 创建的流程\n * 1. SDK使用者需要用每一个待绑定的钱包对钱包列表进行签名。\n * 2. 签名完成后, 组织customRecipientMsg内容,进行intents试算,获得转账地址 depositAddress\n * 3. SDK使用者进行转账\n * 4. 多余的资金会自动进入用户的lending账户里\n */\n","import { IWallet } from \"../types/chains\";\nimport { serializationObj } from \"../utils/chainsUtil\";\n\nexport function getRepayCustomRecipientMsg({ w }: { w: IWallet }) {\n const customRecipientMsg = serializationObj({\n w: [w],\n b: {\n r: \"BurrowRepay\",\n },\n });\n return customRecipientMsg;\n}\n","import Decimal from \"decimal.js\";\nimport {\n ISimpleWithdraw,\n IConfig,\n ChangeMethodsLogic,\n ChangeMethodsOracle,\n IBusiness,\n} from \"../types/index\";\nimport { config_near } from \"../config/config\";\nimport { serializationObj, get_nonce_deadline } from \"../utils/chainsUtil\";\nimport { TGas } from \"../utils/chainsUtil\";\nimport { get_simple_withdraw_tx } from \"./actionUtil/commonTx\";\n\nexport async function prepareBusinessDataOnRepayFromSupplied({\n mca,\n tokenId,\n config,\n simpleWithdrawData,\n amountBurrow,\n decreaseAmountBurrow,\n}: {\n mca: string;\n tokenId: string;\n config: IConfig;\n simpleWithdrawData: ISimpleWithdraw;\n amountBurrow: string;\n decreaseAmountBurrow: string;\n}) {\n const enable_pyth_oracle = config.enable_pyth_oracle;\n const logicContractId = config_near.LOGIC_CONTRACT_NAME;\n const oracleContractId = config.oracle_account_id;\n const simple_withdraw_tx = get_simple_withdraw_tx({ simpleWithdrawData });\n const repay_tx = [];\n const repayTemplate = {\n Repay: {\n token_id: tokenId,\n amount: amountBurrow,\n },\n };\n const decreaseCollateralTemplate = {\n DecreaseCollateral: {\n token_id: tokenId,\n amount: decreaseAmountBurrow,\n },\n };\n repay_tx.push({\n FunctionCall: {\n receiver_id: enable_pyth_oracle ? logicContractId : oracleContractId,\n function_calls: [\n {\n method_name: enable_pyth_oracle\n ? ChangeMethodsLogic[ChangeMethodsLogic.execute_with_pyth]\n : ChangeMethodsOracle[ChangeMethodsOracle.oracle_call],\n args: serializationObj(\n enable_pyth_oracle\n ? {\n actions: [\n ...(new Decimal(decreaseAmountBurrow).gt(0)\n ? [decreaseCollateralTemplate]\n : []),\n repayTemplate,\n ],\n }\n : {\n receiver_id: logicContractId,\n msg: JSON.stringify({\n Execute: {\n actions: [\n ...(new Decimal(decreaseAmountBurrow).gt(0)\n ? [decreaseCollateralTemplate]\n : []),\n repayTemplate,\n ],\n },\n }),\n }\n ),\n gas: TGas(150),\n deposit: \"1\",\n },\n ],\n },\n });\n const { nonce, deadline } = await get_nonce_deadline({ accountId: mca });\n const businessMap: IBusiness = {\n nonce,\n deadline,\n tx_requests: [...simple_withdraw_tx, ...repay_tx],\n };\n return businessMap;\n}\n","import { IWallet } from \"../types/chains\";\nimport { serializationObj } from \"../utils/chainsUtil\";\n\nexport function getSupplyCustomRecipientMsg({\n useAsCollateral,\n w,\n}: {\n useAsCollateral: boolean;\n w: IWallet;\n}) {\n const customRecipientMsg = serializationObj({\n w: [w],\n b: {\n r: useAsCollateral ? \"BurrowCollateral\" : \"BurrowSupply\",\n },\n });\n return customRecipientMsg;\n}\n","import {\n ISimpleWithdraw,\n IConfig,\n ChangeMethodsLogic,\n ChangeMethodsOracle,\n IBusiness,\n} from \"../types/index\";\nimport { config_near } from \"../config/config\";\nimport {\n serializationObj,\n get_nonce_deadline,\n TGas,\n} from \"../utils/chainsUtil\";\nimport { intentsQuotation } from \"./actionUtil/commonAction\";\nimport {\n get_simple_withdraw_tx,\n query_account_register_token_tx,\n query_intents_tansfer_txs,\n} from \"./actionUtil/commonTx\";\n\nexport async function prepareBusinessDataOnWithdraw({\n mca,\n recipient,\n tokenId,\n originAsset,\n destinationAsset,\n amountBurrow,\n amountToken,\n config,\n simpleWithdrawData,\n isDecrease,\n decreaseCollateralAmount,\n}: {\n mca: string;\n recipient: string;\n tokenId: string;\n originAsset: string;\n destinationAsset: string;\n amountBurrow: string;\n amountToken: string;\n config: IConfig;\n simpleWithdrawData: ISimpleWithdraw;\n isDecrease: boolean;\n decreaseCollateralAmount: string;\n}) {\n const enable_pyth_oracle = config.enable_pyth_oracle;\n const logicContractId = config_near.LOGIC_CONTRACT_NAME;\n const oracleContractId = config.oracle_account_id;\n const { nonce, deadline } = await get_nonce_deadline({ accountId: mca });\n const simple_withdraw_tx = get_simple_withdraw_tx({ simpleWithdrawData });\n const mca_register_token_tx = await query_account_register_token_tx({\n accountId: mca,\n tokenId,\n });\n // intents start\n const quoteResult = await intentsQuotation({\n originAsset,\n destinationAsset,\n amount: amountToken,\n refundTo: mca,\n recipient,\n });\n const depositAddress =\n quoteResult?.quoteSuccessResult?.quote?.depositAddress || \"\";\n // intents end\n\n const intents_tansfer_txs = query_intents_tansfer_txs({\n tokenId,\n depositAddress,\n amountToken,\n });\n\n const withdraw_tx = [];\n const withdrawAction = {\n Withdraw: {\n token_id: tokenId,\n max_amount: amountBurrow,\n },\n };\n if (isDecrease) {\n const decreaseCollateralTemplate = {\n DecreaseCollateral: {\n token_id: tokenId,\n amount: decreaseCollateralAmount,\n },\n };\n withdraw_tx.push({\n FunctionCall: {\n receiver_id: enable_pyth_oracle ? logicContractId : oracleContractId,\n function_calls: [\n {\n method_name: enable_pyth_oracle\n ? ChangeMethodsLogic[ChangeMethodsLogic.execute_with_pyth]\n : ChangeMethodsOracle[ChangeMethodsOracle.oracle_call],\n args: serializationObj(\n enable_pyth_oracle\n ? {\n actions: [decreaseCollateralTemplate, withdrawAction],\n }\n : {\n receiver_id: logicContractId,\n msg: JSON.stringify({\n Execute: {\n actions: [decreaseCollateralTemplate, withdrawAction],\n },\n }),\n }\n ),\n gas: TGas(150),\n deposit: \"1\",\n },\n ],\n },\n });\n } else {\n withdraw_tx.push({\n FunctionCall: {\n receiver_id: logicContractId,\n function_calls: [\n {\n method_name: ChangeMethodsLogic[ChangeMethodsLogic.execute],\n args: serializationObj({\n actions: [withdrawAction],\n }),\n gas: TGas(150),\n deposit: \"1\",\n },\n ],\n },\n });\n }\n\n const businessMap: IBusiness = {\n nonce,\n deadline,\n tx_requests: [\n ...simple_withdraw_tx,\n ...mca_register_token_tx,\n ...withdraw_tx,\n ...intents_tansfer_txs,\n ],\n };\n return {\n businessMap,\n quoteResult,\n };\n}\n\n/**\n * withdraw的流程\n * 同 borrow\n */\n","import { get_nonce_deadline } from \"../utils/chainsUtil\";\nimport { IBusiness, IWallet } from \"../types/index\";\n\nexport async function prepareBusinessDataOnAddWallet({\n mca,\n w,\n signature_w,\n gas_token_id,\n gas_token_amount,\n}: {\n mca: string;\n gas_token_id: string;\n gas_token_amount: string;\n w: IWallet;\n signature_w: string;\n}) {\n const { nonce, deadline } = await get_nonce_deadline({ accountId: mca });\n const businessMap: IBusiness = {\n nonce,\n deadline,\n tx_requests: [\n {\n GasPayment: {\n token_id: gas_token_id,\n amount: gas_token_amount,\n },\n },\n {\n AddWallet: {\n wallet: w,\n signature: signature_w,\n },\n },\n ],\n };\n return businessMap;\n}\n","import { get_nonce_deadline } from \"../utils/chainsUtil\";\nimport { IBusiness, IWallet } from \"../types/index\";\n\nexport async function prepareBusinessDataOnRemoveWallet({\n mca,\n w,\n gas_token_id,\n gas_token_amount,\n}: {\n mca: string;\n gas_token_id: string;\n gas_token_amount: string;\n w: IWallet;\n}) {\n const { nonce, deadline } = await get_nonce_deadline({ accountId: mca });\n const businessMap: IBusiness = {\n nonce,\n deadline,\n tx_requests: [\n {\n GasPayment: {\n token_id: gas_token_id,\n amount: gas_token_amount,\n },\n },\n {\n RemoveWallet: w,\n },\n ],\n };\n return businessMap;\n}\n","import { IBusiness } from \"../types/index\";\nimport { get_nonce_deadline } from \"../utils/chainsUtil\";\nimport { intentsQuotation } from \"./actionUtil/commonAction\";\nimport { query_intents_tansfer_txs } from \"./actionUtil/commonTx\";\n\nexport async function prepareBusinessDataOninnerWithdraw({\n mca,\n recipient,\n tokenId,\n originAsset,\n destinationAsset,\n amountToken,\n gas_token_id,\n gas_token_amount,\n}: {\n mca: string;\n recipient: string;\n tokenId: string;\n originAsset: string;\n destinationAsset: string;\n amountToken: string;\n gas_token_id: string;\n gas_token_amount: string;\n}) {\n // intents start\n const quoteResult = await intentsQuotation({\n originAsset,\n destinationAsset,\n amount: amountToken,\n refundTo: mca,\n recipient,\n });\n const depositAddress =\n quoteResult?.quoteSuccessResult?.quote?.depositAddress || \"\";\n // intents end\n\n const intents_tansfer_txs = query_intents_tansfer_txs({\n tokenId,\n depositAddress,\n amountToken,\n });\n const { nonce, deadline } = await get_nonce_deadline({ accountId: mca });\n const businessMap: IBusiness = {\n nonce,\n deadline,\n tx_requests: [\n ...[\n {\n GasPayment: {\n token_id: gas_token_id,\n amount: gas_token_amount,\n },\n },\n ],\n ...intents_tansfer_txs,\n ],\n };\n return {\n businessMap,\n quoteResult,\n };\n}\n","import { IBusiness } from \"../types/index\";\nimport { config_near } from \"../config/config\";\nimport { serializationObj, get_nonce_deadline } from \"../utils/chainsUtil\";\nimport { TGas } from \"../utils/chainsUtil\";\n\nexport async function prepareBusinessDataOnClaim({\n mca,\n gas_token_id,\n gas_token_amount,\n}: {\n mca: string;\n gas_token_id: string;\n gas_token_amount: string;\n}) {\n const { nonce, deadline } = await get_nonce_deadline({ accountId: mca });\n const gas_payment_tx = [\n {\n GasPayment: {\n token_id: gas_token_id,\n amount: gas_token_amount,\n },\n },\n ];\n const claim_all_tx = [\n {\n FunctionCall: {\n receiver_id: config_near.LOGIC_CONTRACT_NAME,\n function_calls: [\n {\n method_name: \"account_farm_claim_all\",\n args: serializationObj({}),\n gas: TGas(100),\n deposit: \"0\",\n },\n ],\n },\n },\n ];\n const businessMap: IBusiness = {\n nonce,\n deadline,\n tx_requests: [...gas_payment_tx, ...claim_all_tx],\n };\n return businessMap;\n}\n","import Decimal from \"decimal.js\";\n\nexport const expandTokenDecimal = (\n value: string | number | Decimal,\n decimals: string | number\n): Decimal => {\n return new Decimal(value).mul(new Decimal(10).pow(decimals));\n};\n\nexport const expandToken = (\n value: string | number | Decimal,\n decimals: string | number,\n fixed?: number\n): string => {\n return expandTokenDecimal(value, decimals).toFixed(fixed);\n};\n\nexport const shrinkTokenDecimal = (\n value: string | number,\n decimals: string | number\n): Decimal => {\n return new Decimal(value).div(new Decimal(10).pow(decimals));\n};\nexport const shrinkToken = (\n value: string | number,\n decimals: string | number,\n fixed?: number\n): string => {\n if (!value) return \"\";\n return new Decimal(value).div(new Decimal(10).pow(decimals)).toFixed(fixed);\n};\n\nexport function decimalMax(\n a: string | number | Decimal,\n b: string | number | Decimal\n): Decimal {\n a = new Decimal(a);\n b = new Decimal(b);\n return a.gt(b) ? a : b;\n}\n\nexport function decimalMin(\n a: string | number | Decimal,\n b: string | number | Decimal\n): Decimal {\n a = new Decimal(a);\n b = new Decimal(b);\n return a.lt(b) ? a : b;\n}\n","import { IFarm } from \"../types\";\n// @ts-ignore\nimport { omit } from \"ramda\";\nexport const hasZeroSharesFarmRewards = (farms: IFarm[]): boolean => {\n return farms.some((farm) =>\n farm.rewards.some((reward) => +reward.boosted_shares === 0)\n );\n};\n\nexport const listFarmToMap = (list: any[]) =>\n list\n .map((asset) => ({ [asset.token_id]: omit([\"token_id\"], asset) }))\n .reduce((a, b) => ({ ...a, ...b }), {} as any);\n","// @ts-ignore\nimport { pick } from \"ramda\";\nimport { IAssetFarmView, IFarm, AccountFarmRewardView } from \"../../types\";\n\nconst transformFarmRewards = (rewards: AccountFarmRewardView[]) =>\n rewards.reduce(\n (o, item) => ({\n ...o,\n [item.reward_token_id]: {\n ...pick(\n [\"boosted_shares\", \"unclaimed_amount\", \"asset_farm_reward\"],\n item\n ),\n },\n }),\n {}\n );\n\nexport const transformAccountFarms = (list: IFarm[]) => {\n const farms = {\n supplied: {},\n borrowed: {},\n netTvl: {},\n tokennetbalance: {},\n };\n\n const netTvlFarms = list.find((f) => f.farm_id === \"NetTvl\");\n const restFarms = list.filter((f: any) => f.farm_id !== \"NetTvl\");\n\n restFarms.forEach((farm) => {\n const [action, token] = Object.entries(farm.farm_id)\n .flat()\n .map((s: any) => s.toLowerCase());\n\n farms[action as keyof typeof farms] = {\n ...farms[action as keyof typeof farms],\n [token]: transformFarmRewards(farm.rewards),\n };\n });\n\n if (netTvlFarms) {\n farms.netTvl = transformFarmRewards(netTvlFarms.rewards);\n }\n\n return farms;\n};\n\nexport const transformAssetFarms = (list: IAssetFarmView[]) => {\n const farms = {\n supplied: {},\n borrowed: {},\n tokennetbalance: {},\n };\n list.forEach((farm) => {\n const [action] = Object.entries(farm.farm_id)\n .flat()\n .map((s: any) => s.toLowerCase());\n farms[action as keyof typeof farms] = {\n ...farms[action as keyof typeof farms],\n ...farm.rewards,\n };\n });\n return farms;\n};\n","import { hasZeroSharesFarmRewards, listFarmToMap } from \"../../utils\";\nimport { transformAccountFarms } from \"./farms\";\nimport { DEFAULT_POSITION } from \"../../config/constantConfig\";\nimport type { IAccountAllPositionsDetailed, Portfolio } from \"../../types\";\n\nexport const initialStaking = {\n staked_booster_amount: \"0\",\n unlock_timestamp: \"0\",\n x_booster_amount: \"0\",\n};\n\nexport const transformPortfolio = (\n portfolio: IAccountAllPositionsDetailed\n): Portfolio | undefined => {\n if (!portfolio) return undefined;\n const { booster_staking, booster_stakings, supplied, positions, farms } =\n portfolio;\n\n const hasNonFarmedAssets =\n portfolio.has_non_farmed_assets || hasZeroSharesFarmRewards(farms);\n Object.keys(positions).forEach((shadow_id: string) => {\n const { borrowed, collateral } = positions[shadow_id];\n positions[shadow_id].borrowed = listFarmToMap(borrowed);\n positions[shadow_id].collateral = listFarmToMap(collateral);\n });\n\n let collateralAll = {};\n const collaterals: any[] = [];\n const borrows: any[] = [];\n\n Object.entries(positions).forEach(([positionId, value]: [string, any]) => {\n if (value?.collateral) {\n collateralAll = {\n ...collateralAll,\n ...value.collateral,\n };\n }\n Object.entries(value.borrowed).forEach(\n ([tokenId, tokenObj]: [string, any]) => {\n borrows.push({\n ...tokenObj,\n token_id: tokenId,\n positionId,\n });\n }\n );\n Object.entries(value.collateral).forEach(\n ([tokenId, tokenObj]: [string, any]) => {\n collaterals.push({\n ...tokenObj,\n token_id: tokenId,\n positionId,\n });\n }\n );\n });\n\n return {\n supplies: supplied,\n borrows,\n collaterals,\n supplied: listFarmToMap(supplied),\n borrowed: positions[DEFAULT_POSITION]?.borrowed || {},\n collateral: positions[DEFAULT_POSITION]?.collateral || {},\n collateralAll,\n positions,\n farms: transformAccountFarms(farms),\n staking: booster_staking || initialStaking,\n stakings: booster_stakings || {},\n hasNonFarmedAssets,\n } as any;\n};\n","import { transformAssetFarms } from \"./farms\";\nimport { IFarms, IAssetsView, Assets, IAssetFarm } from \"../../types/asset\";\n\nexport function transformAssets(assets: Assets): IAssetsView {\n const data = Object.values(assets).reduce((map, asset) => {\n if (!asset.config) return map;\n map[asset.token_id] = {\n ...asset,\n farms: transformAssetFarms(asset.farms),\n };\n return map;\n }, {} as IAssetsView);\n return data;\n}\n\nexport function transformFarms(\n allFarms: [Record<string, string>, IAssetFarm][]\n): IFarms {\n const transformed = allFarms.reduce(\n (acc, cur) => {\n const [tokenData, farmData] = cur;\n const [[Type, tokenId]] = Object.entries(tokenData);\n if (Type === \"Supplied\") {\n acc.supplied[tokenId] = farmData.rewards;\n }\n if (Type === \"Borrowed\") {\n acc.borrowed[tokenId] = farmData.rewards;\n }\n if (Type === \"TokenNetBalance\") {\n acc.tokenNetBalance[tokenId] = farmData.rewards;\n }\n\n return acc;\n },\n { supplied: {}, borrowed: {}, netTvl: {}, tokenNetBalance: {} } as IFarms\n );\n return transformed;\n}\n","import Decimal from \"decimal.js\";\nimport { Portfolio, Assets, IAssetsView } from \"../types\";\nimport { DEFAULT_POSITION } from \"../config/constantConfig\";\nimport { expandTokenDecimal } from \"../utils/numbers\";\nimport { MAX_RATIO } from \"../config/constantConfig\";\nconst sumReducerDecimal = (sum: Decimal, cur: Decimal) => sum.add(cur);\nexport const getAdjustedSum = ({\n type,\n portfolio,\n assets,\n}: {\n type: \"borrowed\" | \"collateral\";\n portfolio: Portfolio;\n assets: IAssetsView | Assets;\n}) => {\n const positionId = DEFAULT_POSITION;\n const result = Object.keys(portfolio.positions[positionId]?.[type] || {}).map(\n (id) => {\n const asset = assets[id];\n let pricedBalance;\n const price = asset?.price\n ? new Decimal(asset.price.multiplier).div(\n new Decimal(10).pow(asset.price.decimals)\n )\n : new Decimal(0);\n pricedBalance = new Decimal(\n portfolio.positions[positionId][type][id].balance\n )\n .div(expandTokenDecimal(1, asset?.config?.extra_decimals || 0))\n .mul(price);\n\n return type === \"borrowed\"\n ? pricedBalance.div(asset?.config?.volatility_ratio || 1).mul(MAX_RATIO)\n : pricedBalance\n .mul(asset?.config?.volatility_ratio || 1)\n .div(MAX_RATIO);\n }\n );\n\n const sumResult = result?.reduce(sumReducerDecimal, new Decimal(0));\n return sumResult || new Decimal(0);\n};\n","import Decimal from \"decimal.js\";\nimport _ from \"lodash\";\nimport { expandTokenDecimal } from \"../utils/numbers\";\nimport { MAX_RATIO, DEFAULT_POSITION } from \"../config/constantConfig\";\nimport { getAdjustedSum } from \"./common\";\nimport { Portfolio, Assets, IAssetsView } from \"../types\";\n\nexport const recomputeHealthFactorAdjust = ({\n tokenId,\n amount,\n portfolio,\n assets,\n}: {\n tokenId: string;\n amount: number;\n portfolio: Portfolio;\n assets: IAssetsView | Assets;\n}) => {\n if (_.isEmpty(assets))\n return { healthFactor: 0, maxBorrowValue: new Decimal(0) };\n if (!portfolio || !tokenId)\n return { healthFactor: 0, maxBorrowValue: new Decimal(0) };\n const asset = assets[tokenId];\n const { metadata, config } = asset;\n const position = DEFAULT_POSITION;\n\n const decimals = (metadata?.decimals || 0) + config.extra_decimals;\n\n const newBalance = expandTokenDecimal(amount, decimals).toFixed();\n\n const clonedPortfolio: Portfolio = JSON.parse(JSON.stringify(portfolio));\n\n if (!clonedPortfolio.positions[position]) {\n clonedPortfolio.positions[position] = {\n collateral: {\n [tokenId]: {\n balance: newBalance,\n shares: newBalance,\n apr: \"0\",\n },\n },\n borrowed: {},\n };\n } else if (!clonedPortfolio.positions[position].collateral[tokenId]) {\n clonedPortfolio.positions[position].collateral[tokenId] = {\n balance: newBalance,\n shares: newBalance,\n apr: \"0\",\n };\n }\n clonedPortfolio.positions[position].collateral[tokenId] = {\n ...clonedPortfolio.positions[position].collateral[tokenId],\n balance: newBalance,\n shares: newBalance,\n };\n\n const adjustedCollateralSum = getAdjustedSum({\n type: \"collateral\",\n portfolio: clonedPortfolio,\n assets,\n });\n const adjustedBorrowedSum = getAdjustedSum({\n type: \"borrowed\",\n portfolio: portfolio,\n assets,\n });\n\n const maxBorrowValue = adjustedCollateralSum.sub(adjustedBorrowedSum);\n const healthFactorTemp = adjustedCollateralSum\n .div(adjustedBorrowedSum)\n .mul(100)\n .toNumber();\n const healthFactor =\n healthFactorTemp < MAX_RATIO ? healthFactorTemp : MAX_RATIO;\n return { healthFactor, maxBorrowValue };\n};\n","import Decimal from \"decimal.js\";\nimport _ from \"lodash\";\nimport { expandTokenDecimal } from \"../utils/numbers\";\nimport { MAX_RATIO, DEFAULT_POSITION } from \"../config/constantConfig\";\nimport { getAdjustedSum } from \"./common\";\nimport { Portfolio, Assets, IAssetsView } from \"../types\";\nexport const recomputeHealthFactorBorrow = ({\n tokenId,\n amount,\n position,\n portfolio,\n assets,\n}: {\n tokenId: string;\n amount: number;\n position?: string;\n portfolio: Portfolio;\n assets: IAssetsView | Assets;\n}) => {\n if (_.isEmpty(assets))\n return { healthFactor: 0, maxBorrowValue: new Decimal(0) };\n if (!portfolio || !tokenId)\n return { healthFactor: 0, maxBorrowValue: new Decimal(0) };\n const asset = assets[tokenId];\n const { metadata, config } = asset;\n const decimals = (metadata?.decimals || 0) + config.extra_decimals;\n const clonedPortfolio: Portfolio = JSON.parse(JSON.stringify(portfolio));\n if (!clonedPortfolio.positions[position || DEFAULT_POSITION]) {\n clonedPortfolio.positions[position || DEFAULT_POSITION] = {\n borrowed: {\n [tokenId]: {\n balance: \"0\",\n shares: \"0\",\n apr: \"0\",\n },\n },\n collateral: {},\n };\n } else if (\n !clonedPortfolio.positions[position || DEFAULT_POSITION].borrowed[tokenId]\n ) {\n clonedPortfolio.positions[position || DEFAULT_POSITION].borrowed[tokenId] =\n {\n balance: \"0\",\n shares: \"0\",\n apr: \"0\",\n };\n }\n const newBalance = expandTokenDecimal(amount, decimals)\n .plus(\n new Decimal(\n clonedPortfolio.positions[position || DEFAULT_POSITION].borrowed[\n tokenId\n ]?.balance || 0\n )\n )\n .toFixed();\n clonedPortfolio.positions[position || DEFAULT_POSITION].borrowed[\n tokenId\n ].balance = newBalance;\n\n const adjustedCollateralSum = getAdjustedSum({\n type: \"collateral\",\n portfolio,\n assets,\n });\n const adjustedBorrowedSum = getAdjustedSum({\n type: \"borrowed\",\n portfolio: clonedPortfolio,\n assets,\n });\n\n const maxBorrowValue = adjustedCollateralSum.sub(adjustedBorrowedSum);\n const healthFactorTemp = adjustedCollateralSum\n .div(adjustedBorrowedSum)\n .mul(100)\n .toNumber();\n const healthFactor =\n healthFactorTemp < MAX_RATIO ? healthFactorTemp : MAX_RATIO;\n return { healthFactor, maxBorrowValue };\n};\n","import Decimal from \"decimal.js\";\nimport _ from \"lodash\";\nimport { expandTokenDecimal } from \"../utils/numbers\";\nimport { MAX_RATIO, DEFAULT_POSITION } from \"../config/constantConfig\";\nimport { getAdjustedSum } from \"./common\";\nimport { Portfolio, Assets, IAssetsView } from \"../types\";\n\nexport const recomputeHealthFactorRepay = ({\n tokenId,\n amount,\n position,\n portfolio,\n assets,\n}: {\n tokenId: string;\n amount: number;\n position?: string;\n portfolio: Portfolio;\n assets: IAssetsView | Assets;\n}) => {\n if (\n _.isEmpty(assets) ||\n !portfolio ||\n !tokenId ||\n !portfolio?.positions?.[position || DEFAULT_POSITION]?.borrowed?.[tokenId]\n )\n return { healthFactor: 0, maxBorrowValue: new Decimal(0) };\n const asset = assets[tokenId];\n const { metadata, config } = asset;\n const decimals = (metadata?.decimals || 0) + config.extra_decimals;\n const borrowedBalance = new Decimal(\n portfolio.positions[position || DEFAULT_POSITION].borrowed[tokenId].balance\n );\n const newBalance = Decimal.max(\n 0,\n borrowedBalance.minus(expandTokenDecimal(amount, decimals))\n );\n\n const clonedPortfolio = JSON.parse(JSON.stringify(portfolio));\n clonedPortfolio.positions[position || DEFAULT_POSITION].borrowed[\n tokenId\n ].balance = newBalance.toFixed();\n\n const adjustedCollateralSum = getAdjustedSum({\n type: \"collateral\",\n portfolio,\n assets,\n });\n const adjustedBorrowedSum = getAdjustedSum({\n type: \"borrowed\",\n portfolio: clonedPortfolio,\n assets,\n });\n const maxBorrowValue = adjustedCollateralSum.sub(adjustedBorrowedSum);\n const healthFactorTemp = adjustedCollateralSum\n .div(adjustedBorrowedSum)\n .mul(100)\n .toNumber();\n const healthFactor =\n healthFactorTemp < MAX_RATIO ? healthFactorTemp : MAX_RATIO;\n return { healthFactor, maxBorrowValue };\n};\n","import Decimal from \"decimal.js\";\nimport _ from \"lodash\";\nimport { expandTokenDecimal } from \"../utils/numbers\";\nimport { MAX_RATIO, DEFAULT_POSITION } from \"../config/constantConfig\";\nimport { getAdjustedSum } from \"./common\";\nimport { Portfolio, Assets, IAssetsView } from \"../types\";\nimport { decimalMax, decimalMin } from \"../utils/numbers\";\nexport const recomputeHealthFactorRepayFromDeposits = ({\n tokenId,\n amount,\n portfolio,\n assets,\n}: {\n tokenId: string;\n amount: number;\n portfolio: Portfolio;\n assets: IAssetsView | Assets;\n}) => {\n if (\n _.isEmpty(assets) ||\n !tokenId ||\n !portfolio ||\n !portfolio?.positions?.[DEFAULT_POSITION]?.borrowed?.[tokenId]\n )\n return { healthFactor: 0, maxBorrowValue: new Decimal(0) };\n const asset = assets[tokenId];\n const { metadata, config } = asset;\n const decimals = (metadata?.decimals || 0) + config.extra_decimals;\n const amountDecimal = expandTokenDecimal(amount, decimals);\n const position = DEFAULT_POSITION;\n const clonedPortfolio: Portfolio = JSON.parse(JSON.stringify(portfolio));\n // new borrowed balance\n const borrowedBalance = new Decimal(\n clonedPortfolio.positions[position].borrowed[tokenId].balance\n );\n const newBorrowedBalance = decimalMax(\n 0,\n borrowedBalance.minus(amountDecimal)\n );\n // new collateral balance\n const collateralBalance = new Decimal(\n clonedPortfolio.positions[position]?.collateral?.[tokenId]?.balance || 0\n );\n const suppliedBalance = new Decimal(\n clonedPortfolio.supplied?.[tokenId]?.balance || 0\n );\n\n const newCollateralBalance = decimalMax(\n 0,\n decimalMin(\n collateralBalance,\n collateralBalance.plus(suppliedBalance).minus(amountDecimal)\n )\n );\n // update collateral balance in position\n if (newCollateralBalance.lt(collateralBalance)) {\n clonedPortfolio.positions[position].collateral[tokenId] = {\n ...clonedPortfolio.positions[position].collateral[tokenId],\n shares: newCollateralBalance.toFixed(),\n balance: newCollateralBalance.toFixed(),\n };\n }\n\n // update borrowed balance in position\n clonedPortfolio.positions[position].borrowed[tokenId].balance =\n newBorrowedBalance.toFixed();\n const adjustedCollateralSum = getAdjustedSum({\n type: \"collateral\",\n portfolio: clonedPortfolio,\n assets,\n });\n const adjustedBorrowedSum = getAdjustedSum({\n type: \"borrowed\",\n portfolio: clonedPortfolio,\n assets,\n });\n const maxBorrowValue = adjustedCollateralSum.sub(adjustedBorrowedSum);\n const healthFactorTemp = adjustedCollateralSum\n .div(adjustedBorrowedSum)\n .mul(100)\n .toNumber();\n const healthFactor =\n healthFactorTemp < MAX_RATIO ? healthFactorTemp : MAX_RATIO;\n return { healthFactor, maxBorrowValue };\n};\n","import Decimal from \"decimal.js\";\nimport _ from \"lodash\";\nimport { expandTokenDecimal } from \"../utils/numbers\";\nimport { MAX_RATIO, DEFAULT_POSITION } from \"../config/constantConfig\";\nimport { getAdjustedSum } from \"./common\";\nimport { Portfolio, Assets, IAssetsView } from \"../types\";\n\nexport const recomputeHealthFactorSupply = ({\n tokenId,\n amount,\n portfolio,\n assets,\n useAsCollateral,\n}: {\n tokenId: string;\n amount: number;\n portfolio: Portfolio;\n assets: IAssetsView | Assets;\n useAsCollateral: boolean;\n}) => {\n if (_.isEmpty(assets) || !tokenId || !portfolio)\n return { healthFactor: 0, maxBorrowValue: new Decimal(0) };\n const asset = assets[tokenId];\n const { metadata, config } = asset;\n const decimals = (metadata?.decimals || 0) + config.extra_decimals;\n const position = DEFAULT_POSITION;\n const clonedPortfolio: Portfolio = JSON.parse(JSON.stringify(portfolio));\n const amountDecimal = expandTokenDecimal(amount, decimals);\n if (!clonedPortfolio.positions[position]) {\n clonedPortfolio.positions[position] = {\n collateral: {\n [tokenId]: {\n balance: \"0\",\n shares: \"0\",\n apr: \"0\",\n },\n },\n borrowed: {},\n };\n } else if (!clonedPortfolio.positions[position].collateral[tokenId]) {\n clonedPortfolio.positions[position].collateral[tokenId] = {\n balance: \"0\",\n shares: \"0\",\n apr: \"0\",\n };\n }\n const collateralBalance = new Decimal(\n clonedPortfolio.positions[position].collateral[tokenId].balance\n );\n const newBalance = collateralBalance.plus(\n useAsCollateral ? amountDecimal : 0\n );\n clonedPortfolio.positions[position].collateral[tokenId] = {\n ...clonedPortfolio.positions[position].collateral[tokenId],\n shares: newBalance.toFixed(),\n balance: newBalance.toFixed(),\n };\n const adjustedCollateralSum = getAdjustedSum({\n type: \"collateral\",\n portfolio: clonedPortfolio,\n assets,\n });\n const adjustedBorrowedSum = getAdjustedSum({\n type: \"borrowed\",\n portfolio,\n assets,\n });\n\n const maxBorrowValue = adjustedCollateralSum.sub(adjustedBorrowedSum);\n const healthFactorTemp = adjustedCollateralSum\n .div(adjustedBorrowedSum)\n .mul(100)\n .toNumber();\n const healthFactor =\n healthFactorTemp < MAX_RATIO ? healthFactorTemp : MAX_RATIO;\n return { healthFactor, maxBorrowValue };\n};\n","import Decimal from \"decimal.js\";\nimport _ from \"lodash\";\nimport { expandTokenDecimal } from \"../utils/numbers\";\nimport { MAX_RATIO, DEFAULT_POSITION } from \"../config/constantConfig\";\nimport { getAdjustedSum } from \"./common\";\nimport { Portfolio, Assets, IAssetsView } from \"../types\";\nimport { decimalMax, decimalMin } from \"../utils/numbers\";\n\nexport const recomputeHealthFactorWithdraw = ({\n tokenId,\n amount,\n portfolio,\n assets,\n}: {\n tokenId: string;\n amount: number;\n portfolio: Portfolio;\n assets: IAssetsView | Assets;\n}) => {\n if (_.isEmpty(assets) || !tokenId || !portfolio) {\n return { healthFactor: 0, maxBorrowValue: new Decimal(0) };\n }\n const asset = assets[tokenId];\n const { metadata, config } = asset;\n const decimals = (metadata?.decimals || 0) + config.extra_decimals;\n const position = DEFAULT_POSITION;\n const clonedPortfolio: Portfolio = JSON.parse(JSON.stringify(portfolio));\n if (!clonedPortfolio.positions[position]) {\n clonedPortfolio.positions[position] = {\n collateral: {\n [tokenId]: {\n balance: \"0\",\n shares: \"0\",\n apr: \"0\",\n },\n },\n borrowed: {},\n };\n } else if (!clonedPortfolio.positions[position].collateral[tokenId]) {\n clonedPortfolio.positions[position].collateral[tokenId] = {\n balance: \"0\",\n shares: \"0\",\n apr: \"0\",\n };\n }\n\n if (!clonedPortfolio.supplied[tokenId]) {\n clonedPortfolio.supplied[tokenId] = {\n balance: \"0\",\n shares: \"0\",\n apr: \"0\",\n };\n }\n const collateralBalance = new Decimal(\n clonedPortfolio.positions[position].collateral[tokenId].balance\n );\n const suppliedBalance = new Decimal(\n clonedPortfolio.supplied[tokenId].balance\n );\n const amountDecimal = expandTokenDecimal(amount, decimals);\n\n const newCollateralBalance = decimalMax(\n 0,\n decimalMin(\n collateralBalance,\n collateralBalance.plus(suppliedBalance).minus(amountDecimal)\n )\n );\n\n clonedPortfolio.positions[position].collateral[tokenId] = {\n ...clonedPortfolio.positions[position].collateral[tokenId],\n shares: newCollateralBalance.toFixed(),\n balance: newCollateralBalance.toFixed(),\n };\n const adjustedCollateralSum = getAdjustedSum({\n type: \"collateral\",\n portfolio: clonedPortfolio,\n assets,\n });\n const adjustedBorrowedSum = getAdjustedSum({\n type: \"borrowed\",\n portfolio,\n assets,\n });\n const maxBorrowValue = adjustedCollateralSum.sub(adjustedBorrowedSum);\n const healthFactorTemp = adjustedCollateralSum\n .div(adjustedBorrowedSum)\n .mul(100)\n .toNumber();\n const healthFactor =\n healthFactorTemp < MAX_RATIO ? healthFactorTemp : MAX_RATIO;\n return { healthFactor, maxBorrowValue };\n};\n","import _ from \"lodash\";\nimport Decimal from \"decimal.js\";\nimport { Assets, IAssetsView, Portfolio, IGasData } from \"../types\";\nimport { DEFAULT_POSITION } from \"../config/constantConfig\";\nimport {\n decimalMax,\n expandTokenDecimal,\n decimalMin,\n shrinkToken,\n} from \"../utils\";\nimport { MAX_RATIO, config_near } from \"../config\";\nimport { getAdjustedSum } from \"../healthFactor\";\nexport const computeRelayerGas = ({\n nearStorageAmount,\n mca,\n relayerGasFees,\n assets,\n portfolio,\n}: {\n nearStorageAmount: string | number;\n mca: string;\n relayerGasFees: Record<string, string>;\n assets: IAssetsView | Assets;\n portfolio: Portfolio;\n}): IGasData | undefined => {\n if (!mca || _.isEmpty(assets) || _.isEmpty(portfolio)) return;\n const { tokenId, amount, relayerFeeUsd } = searchMatchAssetId({\n portfolio,\n assets,\n nearStorageAmount,\n relayerGasFees,\n });\n if (!tokenId) return;\n const asset = assets[tokenId];\n const { metadata, config } = asset;\n const position = DEFAULT_POSITION;\n const decimals = (metadata?.decimals || 0) + config.extra_decimals;\n const clonedPortfolio: Portfolio = JSON.parse(JSON.stringify(portfolio));\n\n if (!clonedPortfolio.positions[position]) {\n clonedPortfolio.positions[position] = {\n collateral: {\n [tokenId]: {\n balance: \"0\",\n shares: \"0\",\n apr: \"0\",\n },\n },\n borrowed: {},\n };\n } else if (!clonedPortfolio.positions[position].collateral[tokenId]) {\n clonedPortfolio.positions[position].collateral[tokenId] = {\n balance: \"0\",\n shares: \"0\",\n apr: \"0\",\n };\n }\n if (!clonedPortfolio.supplied[tokenId]) {\n clonedPortfolio.supplied[tokenId] = {\n balance: \"0\",\n shares: \"0\",\n apr: \"0\",\n };\n }\n const collateralBalance = new Decimal(\n clonedPortfolio.positions[position].collateral[tokenId].balance\n );\n const suppliedBalance = new Decimal(\n clonedPortfolio.supplied[tokenId].balance\n );\n const amountDecimal = expandTokenDecimal(amount || \"0\", decimals);\n const newCollateralBalance = decimalMax(\n 0,\n decimalMin(\n collateralBalance,\n collateralBalance.plus(suppliedBalance).minus(amountDecimal)\n )\n );\n const newSuppliedBalance = decimalMax(\n 0,\n suppliedBalance.minus(amountDecimal)\n );\n // update supplied on portfolio\n const newSuppliedBalanceMap = {\n shares: newSuppliedBalance.toFixed(),\n balance: newSuppliedBalance.toFixed(),\n };\n clonedPortfolio.supplied[tokenId] = {\n ...(clonedPortfolio.supplied[tokenId] || {}),\n ...newSuppliedBalanceMap,\n };\n // update collateral on portfolio\n const newCollateralBalanceMap = {\n shares: newCollateralBalance.toFixed(),\n balance: newCollateralBalance.toFixed(),\n };\n clonedPortfolio.collateral[tokenId] = {\n ...(clonedPortfolio.collateral[tokenId] || {}),\n ...newCollateralBalanceMap,\n };\n\n clonedPortfolio.positions[position].collateral[tokenId] = {\n ...clonedPortfolio.positions[position].collateral[tokenId],\n ...newCollateralBalanceMap,\n };\n const adjustedCollateralSum = getAdjustedSum({\n type: \"collateral\",\n portfolio: clonedPortfolio,\n assets,\n });\n const adjustedBorrowedSum = getAdjustedSum({\n type: \"borrowed\",\n portfolio,\n assets,\n });\n const healthFactorTemp = adjustedCollateralSum\n .div(adjustedBorrowedSum)\n .mul(100)\n .toNumber();\n const healthFactor =\n healthFactorTemp < MAX_RATIO ? healthFactorTemp : MAX_RATIO;\n if (healthFactor > 105) {\n const amountToken = expandTokenDecimal(\n amount,\n asset?.metadata?.decimals || 0\n ).toFixed(0, Decimal.ROUND_DOWN);\n const amountBurrow = expandTokenDecimal(\n amount,\n (asset?.config?.extra_decimals || 0) + (asset?.metadata?.decimals || 0)\n ).toFixed(0, Decimal.ROUND_DOWN);\n return {\n portfolioMinusGas: clonedPortfolio,\n tokenId,\n amount,\n relayerFeeUsd: relayerFeeUsd || 0,\n amountToken,\n amountBurrow,\n simpleWithdrawData: {\n tokenId,\n amount,\n amountToken,\n amountBurrow,\n },\n };\n }\n return;\n};\n\nfunction searchMatchAssetId({\n portfolio,\n assets,\n nearStorageAmount,\n relayerGasFees,\n}: {\n portfolio: Portfolio;\n assets: IAssetsView | Assets;\n nearStorageAmount: string | number;\n relayerGasFees: Record<string, string>;\n}) {\n const costNearUSD = new Decimal(\n assets[config_near.WRAP_NEAR_CONTRACT_ID]?.price?.usd || 0\n ).mul(nearStorageAmount || 0);\n const _suppliesUsd = Object.entries(portfolio.supplied)?.map(\n ([token_id, item]) => {\n const { balance } = item;\n const _asset = assets[token_id];\n const _price = _asset.price?.usd || 0;\n const _amount = shrinkToken(\n balance,\n (_asset?.config?.extra_decimals || 0) +\n (_asset?.metadata?.decimals || 0)\n );\n const _amount_relayer =\n shrinkToken(\n relayerGasFees[token_id] || 0,\n _asset?.metadata?.decimals || 0\n ) || 0;\n return {\n token_id,\n token_price: _price,\n token_decimals: _asset?.metadata?.decimals || 0,\n token_usd: new Decimal(_amount_relayer).gt(0)\n ? new Decimal(_price).mul(_amount).toFixed()\n : \"0\",\n relayerFeeUsd: new Decimal(_price).mul(_amount_relayer).toFixed(),\n totalFeeUsd: new Decimal(_price)\n .mul(_amount_relayer)\n .plus(costNearUSD)\n .toFixed(),\n };\n }\n );\n const maxSuppplied = _.maxBy(_suppliesUsd, (o) => +o.token_usd);\n if (\n new Decimal(maxSuppplied?.token_usd || 0).gt(0) &&\n new Decimal(maxSuppplied?.token_usd || 0).gte(\n maxSuppplied?.totalFeeUsd || 0\n )\n ) {\n return {\n tokenId: maxSuppplied?.token_id,\n amount: new Decimal(maxSuppplied?.token_price || 0).gt(0)\n ? new Decimal(maxSuppplied?.totalFeeUsd || 0)\n .div(maxSuppplied?.token_price || 0)\n .toFixed(maxSuppplied?.token_decimals || 0)\n : \"0\",\n relayerFeeUsd: maxSuppplied?.relayerFeeUsd,\n };\n } else {\n const _collateralUsd = Object.entries(\n portfolio?.positions?.[DEFAULT_POSITION]?.collateral || {}\n ).map(([token_id, _item]) => {\n const _asset = assets[token_id];\n const _price = _asset.price?.usd || 0;\n const _amount = shrinkToken(\n _item.balance,\n (_asset?.config?.extra_decimals || 0) +\n (_asset?.metadata?.decimals || 0)\n );\n const _amount_relayer =\n shrinkToken(\n relayerGasFees[token_id] || 0,\n _asset?.metadata?.decimals || 0\n ) || 0;\n return {\n token_id,\n token_price: _price,\n token_decimals: _asset?.metadata?.decimals || 0,\n token_usd: new Decimal(_amount_relayer).gt(0)\n ? new Decimal(_price).mul(_amount)\n : \"0\",\n relayerFeeUsd: new Decimal(_price).mul(_amount_relayer).toFixed(),\n totalFeeUsd: new Decimal(_price).mul(_amount_relayer).plus(costNearUSD),\n };\n });\n const maxCollateral = _.maxBy(_collateralUsd, (o) => +o.token_usd);\n if (\n new Decimal(maxCollateral?.token_usd || 0).gte(\n maxCollateral?.totalFeeUsd || 0\n )\n ) {\n return {\n tokenId: maxCollateral?.token_id,\n amount: new Decimal(maxCollateral?.token_price || 0).gt(0)\n ? new Decimal(maxCollateral?.totalFeeUsd || 0)\n .div(maxCollateral?.token_price || 0)\n .toFixed(maxCollateral?.token_decimals || 0)\n : \"0\",\n relayerFeeUsd: maxCollateral?.relayerFeeUsd,\n };\n }\n }\n return {};\n}\n","import _ from \"lodash\";\nimport Decimal from \"decimal.js\";\nimport { Assets, IAssetsView } from \"../types\";\nimport { getAdjustedSum } from \"../healthFactor/common\";\nimport { DEFAULT_POSITION, MAX_RATIO } from \"../config/constantConfig\";\nimport { Portfolio } from \"../types\";\n\nconst computeBorrowMaxAmount = ({\n tokenId,\n assets,\n portfolio,\n}: {\n tokenId: string;\n assets: Assets | IAssetsView;\n portfolio: Portfolio;\n}) => {\n const asset = assets[tokenId];\n return Object.keys(portfolio.positions)\n .map((position: string) => {\n const adjustedCollateralSum = getAdjustedSum({\n type: \"collateral\",\n portfolio: portfolio,\n assets: assets,\n });\n const adjustedBorrowedSum = getAdjustedSum({\n type: \"borrowed\",\n portfolio: portfolio,\n assets: assets,\n });\n const volatiliyRatio = asset.config.volatility_ratio || 0;\n const price = asset.price?.usd || Infinity;\n const maxBorrowPricedForToken = adjustedCollateralSum\n .sub(adjustedBorrowedSum)\n .mul(volatiliyRatio)\n .div(MAX_RATIO)\n .mul(95)\n .div(100);\n const maxBorrowAmountTemp = maxBorrowPricedForToken.div(price);\n const maxBorrowAmount = Decimal(\n Math.max(0, maxBorrowAmountTemp.toNumber())\n );\n const maxBorrowPriced = adjustedCollateralSum.sub(adjustedBorrowedSum);\n return {\n [position]: {\n maxBorrowAmount: Math.max(maxBorrowAmount.toNumber(), 0),\n maxBorrowValue: Math.max(maxBorrowPriced.toNumber(), 0),\n },\n };\n })\n .reduce((acc, cur) => ({ ...acc, ...cur }), {});\n};\nexport const getBorrowMaxAmount = ({\n tokenId,\n portfolio,\n assets,\n}: {\n tokenId: string;\n portfolio: Portfolio;\n assets: Assets | IAssetsView;\n}) => {\n if (_.isEmpty(assets) || !portfolio || !tokenId)\n return {\n [DEFAULT_POSITION]: { maxBorrowAmount: 0, maxBorrowValue: 0 },\n };\n const clonedPortfolio: Portfolio = JSON.parse(JSON.stringify(portfolio));\n const maxBorrowAmount = computeBorrowMaxAmount({\n tokenId,\n assets,\n portfolio: clonedPortfolio,\n });\n return maxBorrowAmount;\n};\n","import Decimal from \"decimal.js\";\nimport _ from \"lodash\";\nimport { shrinkToken, expandTokenDecimal } from \"../utils/numbers\";\nimport { DEFAULT_POSITION } from \"../config/constantConfig\";\nimport { decimalMax, decimalMin } from \"../utils/numbers\";\nimport { Assets, IAssetsView, Portfolio } from \"../types\";\nimport { getAdjustedSum } from \"../healthFactor/common\";\nexport const computeWithdrawMaxAmount = ({\n tokenId,\n assets,\n portfolio,\n}: {\n tokenId: string;\n assets: Assets | IAssetsView;\n portfolio: Portfolio;\n}) => {\n const asset = assets[tokenId];\n const position = DEFAULT_POSITION;\n const assetPrice = asset.price\n ? new Decimal(asset.price.usd || \"0\")\n : new Decimal(0);\n const suppliedBalance = new Decimal(\n portfolio.supplied[tokenId]?.balance || 0\n );\n const collateralBalance = new Decimal(\n portfolio.positions[position]?.collateral?.[tokenId]?.balance || 0\n );\n\n let maxAmount = suppliedBalance;\n // has debt\n if (portfolio.borrows.length > 0 && collateralBalance.gt(0)) {\n const clonedPortfolio: Portfolio = JSON.parse(JSON.stringify(portfolio));\n clonedPortfolio.positions[position].collateral[tokenId] = {\n apr: \"0\",\n balance: \"0\",\n shares: \"0\",\n };\n const _adjustedCollateralSum = getAdjustedSum({\n type: \"collateral\",\n portfolio: clonedPortfolio,\n assets,\n });\n const adjustedBorrowedSum = getAdjustedSum({\n type: \"borrowed\",\n portfolio,\n assets,\n });\n const healthFactor = _adjustedCollateralSum\n .div(adjustedBorrowedSum)\n .mul(100)\n .toNumber();\n if (healthFactor <= 105) {\n const adjustedCollateralSum = getAdjustedSum({\n type: \"collateral\",\n portfolio,\n assets,\n });\n const adjustedPricedDiff = decimalMax(\n 0,\n adjustedCollateralSum.sub(adjustedBorrowedSum)\n );\n const safeAdjustedPricedDiff = adjustedPricedDiff.mul(999).div(1000);\n\n const safePricedDiff = safeAdjustedPricedDiff\n .div(asset.config.volatility_ratio)\n .mul(10000);\n const safeDiff = safePricedDiff\n .div(assetPrice)\n .mul(\n expandTokenDecimal(\n 1,\n asset.config.extra_decimals + (asset?.metadata?.decimals || 0)\n )\n )\n .trunc();\n maxAmount = maxAmount.add(decimalMin(safeDiff, collateralBalance));\n } else {\n maxAmount = suppliedBalance.plus(collateralBalance);\n }\n } else {\n maxAmount = suppliedBalance.plus(collateralBalance);\n }\n\n return {\n maxAmount,\n canWithdrawAll: maxAmount.eq(suppliedBalance.plus(collateralBalance)),\n };\n};\n\nexport const getWithdrawMaxAmount = ({\n tokenId,\n assets,\n portfolio,\n}: {\n tokenId: string;\n assets: Assets | IAssetsView;\n portfolio: Portfolio;\n}) => {\n const asset = assets[tokenId];\n const { metadata, config } = asset;\n const decimals = (metadata?.decimals || 0) + config.extra_decimals;\n const { maxAmount } = computeWithdrawMaxAmount({\n tokenId,\n assets,\n portfolio,\n });\n return Number(shrinkToken(maxAmount.toFixed(), decimals));\n};\n"]}
|