diff --git a/packages/dapp/components/redeem/debt-coupon-deposit.tsx b/packages/dapp/components/redeem/debt-coupon-deposit.tsx index df692e6a5..a32e9531b 100644 --- a/packages/dapp/components/redeem/debt-coupon-deposit.tsx +++ b/packages/dapp/components/redeem/debt-coupon-deposit.tsx @@ -4,8 +4,7 @@ import { useState } from "react"; import { ensureERC20Allowance } from "@/lib/contracts-shortcuts"; import { formatEther } from "@/lib/format"; import { safeParseEther } from "@/lib/utils"; -import useDeployedContracts from "../lib/hooks/contracts/use-deployed-contracts"; -import useManagerManaged from "../lib/hooks/contracts/use-manager-managed"; +import useProtocolContracts from "@/components/lib/hooks/contracts/use-protocol-contracts"; import useBalances from "../lib/hooks/use-balances"; import useSigner from "../lib/hooks/use-signer"; import useTransactionLogger from "../lib/hooks/use-transaction-logger"; @@ -18,8 +17,7 @@ const UcrNftGenerator = () => { const signer = useSigner(); const [balances, refreshBalances] = useBalances(); const [, doTransaction, doingTransaction] = useTransactionLogger(); - const deployedContracts = useDeployedContracts(); - const managedContracts = useManagerManaged(); + const protocolContracts = useProtocolContracts(); const [inputVal, setInputVal] = useState(""); const [expectedDebtCoupon, setExpectedDebtCoupon] = useState(null); @@ -28,15 +26,15 @@ const UcrNftGenerator = () => { return Connect wallet; } - if (!balances || !managedContracts || !deployedContracts) { + if (!balances || !protocolContracts) { return · · ·; } const depositDollarForDebtCoupons = async (amount: BigNumber) => { - const { debtCouponManager } = deployedContracts; + const contracts = await protocolContracts; // cspell: disable-next-line - await ensureERC20Allowance("uAD -> DebtCouponManager", managedContracts.dollarToken, amount, signer, debtCouponManager.address); - await (await debtCouponManager.connect(signer).exchangeDollarsForCreditNft(amount)).wait(); + await ensureERC20Allowance("uCR -> CreditNftManagerFacet", contracts.dollarToken, amount, signer, contracts.creditNftManagerFacet!.address); + await (await contracts.creditNftManagerFacet!.connect(signer).exchangeDollarsForCreditNft(amount)).wait(); refreshBalances(); }; @@ -52,11 +50,12 @@ const UcrNftGenerator = () => { }; const handleInput = async (val: string) => { + const contracts = await protocolContracts; setInputVal(val); const amount = extractValidAmount(val); if (amount) { setExpectedDebtCoupon(null); - setExpectedDebtCoupon(await managedContracts.creditNftCalculator.connect(signer).getCreditNftAmount(amount)); + setExpectedDebtCoupon(await contracts.creditNftRedemptionCalculatorFacet!.connect(signer).getCreditNftAmount(amount)); } }; diff --git a/packages/dapp/components/redeem/ucr-nft-redeem.tsx b/packages/dapp/components/redeem/ucr-nft-redeem.tsx index 44d7c87e8..dcb88bae6 100644 --- a/packages/dapp/components/redeem/ucr-nft-redeem.tsx +++ b/packages/dapp/components/redeem/ucr-nft-redeem.tsx @@ -1,25 +1,24 @@ import { BigNumber, ethers, Contract } from "ethers"; -import { useEffect, useState } from "react"; +import { useState } from "react"; import { ensureERC1155Allowance } from "@/lib/contracts-shortcuts"; import { formatEther } from "@/lib/format"; import { safeParseEther } from "@/lib/utils"; -import useDeployedContracts from "../lib/hooks/contracts/use-deployed-contracts"; -import useManagerManaged from "../lib/hooks/contracts/use-manager-managed"; +import useProtocolContracts from "@/components/lib/hooks/contracts/use-protocol-contracts"; import useBalances from "../lib/hooks/use-balances"; import useSigner from "../lib/hooks/use-signer"; import useTransactionLogger from "../lib/hooks/use-transaction-logger"; import useWalletAddress from "../lib/hooks/use-wallet-address"; import Button from "../ui/button"; import PositiveNumberInput from "../ui/positive-number-input"; +import useEffectAsync from "../lib/hooks/use-effect-async"; const UcrNftRedeem = () => { const [walletAddress] = useWalletAddress(); const signer = useSigner(); const [, refreshBalances] = useBalances(); const [, doTransaction, doingTransaction] = useTransactionLogger(); - const deployedContracts = useDeployedContracts(); - const managedContracts = useManagerManaged(); + const protocolContracts = useProtocolContracts(); const [inputVal, setInputVal] = useState(""); const [debtIds, setDebtIds] = useState(null); @@ -32,14 +31,15 @@ const UcrNftRedeem = () => { } }; - useEffect(() => { - if (managedContracts && walletAddress) { - fetchDebts(walletAddress, managedContracts.creditNft); + useEffectAsync(async () => { + const contracts = await protocolContracts; + if (walletAddress) { + fetchDebts(walletAddress, contracts.creditNft!); } - }, [managedContracts, walletAddress]); + }, [protocolContracts, walletAddress]); if (!walletAddress || !signer) return Connect wallet; - if (!deployedContracts || !managedContracts || !debtIds) return · · ·; + if (!protocolContracts || !debtIds) return · · ·; if (debtIds.length === 0) return No uCR-NFT coupons; async function fetchDebts(address: string, contract: Contract) { @@ -67,12 +67,12 @@ const UcrNftRedeem = () => { }; const redeemUcrNftForUad = async (amount: BigNumber) => { - const { debtCouponManager } = deployedContracts; + const contracts = await protocolContracts; const debtId = debtIds[selectedDebtId]; - if (debtId && (await ensureERC1155Allowance("uCR-NFT -> DebtCouponManager", managedContracts.creditNft, signer, debtCouponManager.address))) { - await (await debtCouponManager.connect(signer).redeemCreditNft(debtId, amount)).wait(); + if (debtId && (await ensureERC1155Allowance("uCR-NFT -> CreditNftManagerFacet", contracts.creditNft, signer, contracts.creditNftManagerFacet!.address))) { + await (await contracts.creditNftManagerFacet!.connect(signer).redeemCreditNft(debtId, amount)).wait(); refreshBalances(); - fetchDebts(walletAddress, managedContracts.creditNft); + fetchDebts(walletAddress, contracts.creditNft!); } }; diff --git a/packages/dapp/components/redeem/ucr-redeem.tsx b/packages/dapp/components/redeem/ucr-redeem.tsx index 5e3097a75..04ce28f2c 100644 --- a/packages/dapp/components/redeem/ucr-redeem.tsx +++ b/packages/dapp/components/redeem/ucr-redeem.tsx @@ -3,8 +3,7 @@ import { useState } from "react"; import { SwapWidget } from "@uniswap/widgets"; import { ensureERC20Allowance } from "@/lib/contracts-shortcuts"; import { safeParseEther } from "@/lib/utils"; -import useDeployedContracts from "../lib/hooks/contracts/use-deployed-contracts"; -import useManagerManaged from "../lib/hooks/contracts/use-manager-managed"; +import useProtocolContracts from "@/components/lib/hooks/contracts/use-protocol-contracts"; import useBalances from "../lib/hooks/use-balances"; import useSigner from "../lib/hooks/use-signer"; import useTransactionLogger from "../lib/hooks/use-transaction-logger"; @@ -21,8 +20,7 @@ const UcrRedeem = ({ twapInteger }: { twapInteger: number }) => { const signer = useSigner(); const [balances, refreshBalances] = useBalances(); const [, doTransaction, doingTransaction] = useTransactionLogger(); - const deployedContracts = useDeployedContracts(); - const managedContracts = useManagerManaged(); + const protocolContracts = useProtocolContracts(); const [inputVal, setInputVal] = useState("0"); // cspell: disable-next-line @@ -34,20 +32,20 @@ const UcrRedeem = ({ twapInteger }: { twapInteger: number }) => { return Connect wallet; } - if (!managedContracts || !deployedContracts || !balances) { + if (!protocolContracts || !balances) { return · · ·; } const redeemUcr = async (amount: BigNumber) => { - const { debtCouponManager } = deployedContracts; + const contracts = await protocolContracts; // cspell: disable-next-line - await ensureERC20Allowance("uCR -> DebtCouponManager", managedContracts.creditToken, amount, signer, debtCouponManager.address); - await (await debtCouponManager.connect(signer).burnCreditTokensForDollars(amount)).wait(); + await ensureERC20Allowance("uCR -> CreditNftManagerFacet", contracts.creditToken, amount, signer, contracts.creditNftManagerFacet!.address); + await (await contracts.creditNftManagerFacet!.connect(signer).burnCreditTokensForDollars(amount)).wait(); refreshBalances(); // cspell: disable-next-line if (provider && quoteAmount && selectedRedeemToken !== "uAD") { const routerContract = getUniswapV3RouterContract(V3_ROUTER_ADDRESS, provider); - await (await routerContract.connect(signer).approveMax(managedContracts.dollarToken.address)).wait(); + await (await routerContract.connect(signer).approveMax(contracts.dollarToken!.address)).wait(); await useTrade(selectedRedeemToken, quoteAmount); refreshBalances(); } diff --git a/packages/dapp/pages/credits.tsx b/packages/dapp/pages/credits.tsx index 80320e0d2..448378146 100644 --- a/packages/dapp/pages/credits.tsx +++ b/packages/dapp/pages/credits.tsx @@ -3,7 +3,7 @@ import DollarPrice from "@/components/redeem/dollar-price"; import UcrRedeem from "@/components/redeem/ucr-redeem"; import UcrNftGenerator from "@/components/redeem/debt-coupon-deposit"; import UcrNftRedeem from "@/components/redeem/ucr-nft-redeem"; -import useManagerManaged from "@/components/lib/hooks/contracts/use-manager-managed"; +import useProtocolContracts from "@/components/lib/hooks/contracts/use-protocol-contracts"; import useEffectAsync from "@/components/lib/hooks/use-effect-async"; // import DisabledBlurredMessage from "@/components/ui/DisabledBlurredMessage"; import dynamic from "next/dynamic"; @@ -11,17 +11,19 @@ const WalletConnectionWall = dynamic(() => import("@/components/ui/wallet-connec const PriceStabilization: FC = (): JSX.Element => { const [twapInteger, setTwapInteger] = useState(0); - const managedContracts = useManagerManaged(); + const protocolContracts = useProtocolContracts(); useEffectAsync(async () => { - if (managedContracts) { - const twapPrice = await managedContracts.dollarTwapOracle.consult(managedContracts.dollarToken.address); + const contracts = await protocolContracts; + if (contracts) { + const dollarTokenAddress = await contracts.managerFacet!.dollarTokenAddress(); + const twapPrice = await contracts.twapOracleDollar3poolFacet!.consult(dollarTokenAddress); if (twapPrice) { const twapPriceInteger = (twapPrice as unknown as number) / 1e18; setTwapInteger(twapPriceInteger); } } - }, [managedContracts]); + }, [protocolContracts]); return (