UNPKG

descent-js

Version:

A Typescript library for interacting with the Descent Protocol

78 lines (77 loc) 3.3 kB
// src/libs/utils.ts import ContractManager from "../contracts.mjs"; import { getContractAddress } from "../contracts/getContractAddresses.mjs"; import { Currency__factory, USDC__factory } from "../generated.mjs"; var createError = (message) => { const defaultMsg = message && typeof message === "string" ? message : "Something went wrong. Please try again later."; const contractErrorMessage = message?.error?.body && JSON.parse(message?.error?.body)?.error?.message; const systemMessage = message?.errorArgs?.[0]; const contractRevertErrorMessage = message?.error?.error?.body && JSON.parse(message?.error?.error?.body)?.error?.message; return new Error( contractErrorMessage || contractRevertErrorMessage || systemMessage || defaultMsg ); }; var approveUSDC = async (spender, amount, signer, transaction, internal) => { const chainId = (await signer?.provider?.getNetwork())?.chainId.toString(); const owner = await signer.getAddress(); const to = getContractAddress("USDC")[chainId]; let iface = internal.getInterface(USDC__factory.abi); const data = iface.encodeFunctionData("approve", [spender, amount]); const txConfig = await internal.getTransactionConfig({ from: owner, to, data }); await transaction.send(txConfig, {}); await waitTime(50); }; var waitTime = (seconds) => new Promise((resolve) => setTimeout(resolve, seconds * 1e3)); var updateTestPrice = async (signer) => { const chainId = (await signer?.provider?.getNetwork())?.chainId.toString(); const collateralAddress = getContractAddress("USDC")[chainId]; const feedContractAddress = getContractAddress("Feed")[chainId]; const contract = new ContractManager(signer); await (await contract.getVaultContract()).updateFeedContract(feedContractAddress); await waitTime(50); const price = BigInt(1100) * BigInt(1e6); const priceUpdate = (await contract.getFeedContract()).mockUpdatePrice(collateralAddress, price); (await priceUpdate).wait(); await waitTime(50); }; var setMinterRole = async (signer, owner) => { const chainId = (await signer?.provider?.getNetwork())?.chainId.toString(); const vaultContractAddress = getContractAddress("Vault")[chainId]; const contract = new ContractManager(signer); await (await contract.getCurrencyContract()).setMinterRole(vaultContractAddress); await waitTime(50); }; var getxNGNBalance = async (owner, signer) => { const contract = new ContractManager(signer); const balance = await (await contract.getCurrencyContract()).balanceOf(owner); await waitTime(50); return balance * BigInt(1e19); }; var approvexNGN = async (spender, amount, signer, transaction, internal) => { const chainId = (await signer?.provider?.getNetwork())?.chainId.toString(); const owner = await signer.getAddress(); const _amount = BigInt(amount) * BigInt(1e19); const to = getContractAddress("Currency")[chainId]; let iface = internal.getInterface(Currency__factory.abi); const data = iface.encodeFunctionData("approve", [spender, _amount]); const txConfig = await internal.getTransactionConfig({ from: owner, to, data }); await transaction.send(txConfig, {}); await waitTime(50); }; export { approveUSDC, approvexNGN, createError, getxNGNBalance, setMinterRole, updateTestPrice, waitTime };