import React from "react"; import { ConstructorFragment, EventFragment, Fragment, FunctionFragment, Interface, } from "@ethersproject/abi"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faCaretRight } from "@fortawesome/free-solid-svg-icons/faCaretRight"; type DecodedFragmentProps = { intf: Interface; fragment: Fragment; }; const DecodedFragment: React.FC = ({ intf, fragment, }) => { let fragmentType: "constructor" | "event" | "function" | undefined; let sig: string | undefined; let letter: string | undefined; let letterBg: string | undefined; let hashBg: string | undefined; if (FunctionFragment.isFunctionFragment(fragment)) { fragmentType = "function"; sig = intf.getSighash(fragment); letter = "F"; letterBg = "bg-purple-500"; hashBg = "bg-purple-50"; } else if (EventFragment.isEventFragment(fragment)) { fragmentType = "event"; sig = intf.getEventTopic(fragment); letter = "E"; letterBg = "bg-green-300"; hashBg = "bg-green-50"; } else if (ConstructorFragment.isConstructorFragment(fragment)) { fragmentType = "constructor"; letter = "C"; letterBg = "bg-blue-500"; } return (
{letter && ( {letter} )} {fragment.format("full")} {sig && ( {sig} )}
); }; export default React.memo(DecodedFragment);