@rhea-finance/cross-chain-sdk 0.1.1 → 0.1.2

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/dist/index.js.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":["Decimal","ViewMethodsLogic","ViewMethodsOracle","ViewMethodsPyth","ViewMethodsToken","ChangeMethodsLogic","ChangeMethodsOracle","config","getConfig","_"],"mappings":"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","file":"index.js","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 hiddenAssets: string[];\n oneClickUrl: string;\n RELAYER_ID: 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://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 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/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":["Decimal","ViewMethodsLogic","ViewMethodsOracle","ViewMethodsPyth","ViewMethodsToken","ChangeMethodsLogic","ChangeMethodsOracle","config","getConfig","_"],"mappings":"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","file":"index.js","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"]}