import { motion } from 'framer-motion' import { Download, RefreshCcw, Send } from 'lucide-react' import Image from 'next/image' import { useContractWrite, useWaitForTransaction } from 'wagmi' import { BlockExplorerLink } from '@/components/blockchain/block-explorer-link' import { Button } from '@/components/ui/button' import { ScrollArea } from '@/components/ui/scroll-area' import { GOVERNOR_BRAVO_ABI } from '@/lib/abis/governorBravo' import { FormItems, SimulationConfig } from '@/lib/types/types' import { downloadConfigAsJson } from '@/lib/utils' import successIcon from '@/public/assets/success.png' import { BaseError } from 'viem' const successVariants = { hidden: { opacity: 0, y: 50, }, visible: { opacity: 1, y: 0, transition: { ease: 'backIn', duration: 0.6, }, }, } const SuccessMessage = ({ configSim, formData }: { configSim: SimulationConfig; formData: FormItems }) => { const refresh = () => window.location.reload() const { data, isLoading, isSuccess, error, isError, write } = useContractWrite({ abi: GOVERNOR_BRAVO_ABI, address: formData.governanceContract.value as `0x${string}`, functionName: 'propose', }) const { isLoading: isLoadingWait, isSuccess: isSuccessWait } = useWaitForTransaction({ hash: data?.hash, }) const sendTx = async () => { write({ args: [configSim.targets, configSim.values, configSim.signatures, configSim.calldatas, configSim.description], }) } return ( Success Icon

Simulation Completed!

Congratulations! Your proposal simulation has been executed successfully. You can now submit your proposal or perform more comprehensive simulations using governance-seatbelt.

{isError ? ( {(error as BaseError)?.shortMessage} ) : ( <> )} {isSuccessWait ? ( Transaction submitted! Refresh ) : ( <> )} {isLoadingWait ? ( Waiting for transaction to be mined... Refresh ) : ( <> )}
) } export default SuccessMessage