descent-js
Version:
A Typescript library for interacting with the Descent Protocol
78 lines (77 loc) • 3.3 kB
JavaScript
// 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
};