+
+
+ {showContractDetails && (
+ <>
+ {contractData.compilerVersion && (
+
+ Compiler Version
+ {contractData.compilerVersion}
+
+ )}
+
+ {contractData.evmVersion && (
+
+ EVM Version
+ {contractData.evmVersion}
+
+ )}
+
+ {contractData.chainId && (
+
+ Network ID
+ {contractData.chainId}
+
+ )}
+
+ {contractData.name && (
+
+ Contract Name
+ {contractData.name}
+
+ )}
+
+ {contractData.verifiedAt && (
+
+ Verified At
+ {new Date(contractData.verifiedAt).toLocaleString()}
+
+ )}
+
+ {contractData.match && (
+
+ Match Type
+
+ {isLocalArtifact ? "Local JSON" : contractData.match.toUpperCase()}
+
+
+ )}
+
+ {contractData.metadata?.compiler && (
+
+ Compiler
+ {contractData.metadata.compiler.version}
+
+ )}
+
+ {contractData.creation_match && (
+
+ Creation Match
+
+ {contractData.creation_match.toUpperCase()}
+
+
+ )}
+
+ {contractData.runtime_match && (
+
+ Runtime Match
+
+ {contractData.runtime_match.toUpperCase()}
+
+
+ )}
+
+ {/* Contract Bytecode */}
+
+
+
+ {code}
+
+
+
+ {/* Source Code */}
+ {sourceFiles.length > 0 && (
+
+
+
+ {sourceFiles.map((file) => (
+
+
📄 {file.name || file.path}
+
{file.content}
+
+ ))}
+
+
+ )}
+
+ {/* Raw ABI */}
+ {contractData.abi && contractData.abi.length > 0 && (
+
+
+
+ {JSON.stringify(contractData.abi, null, 2)}
+
+
+ )}
+
+ {/* Contract Functions */}
+ {contractData.abi && contractData.abi.length > 0 && (
+
+ )}
+
+ {sourcifyUrl && (
+
+ )}
+ >
+ )}
+
+ );
+};
+
+export default ContractDetails;
diff --git a/src/components/pages/address/shared/ContractInteraction.tsx b/src/components/pages/address/shared/ContractInteraction.tsx
new file mode 100644
index 00000000..d80de1d2
--- /dev/null
+++ b/src/components/pages/address/shared/ContractInteraction.tsx
@@ -0,0 +1,483 @@
+import { ConnectButton } from "@rainbow-me/rainbowkit";
+import type React from "react";
+import { useCallback, useContext, useState } from "react";
+import { Link } from "react-router-dom";
+import { encodeFunctionData, parseEther } from "viem";
+import { useWaitForTransactionReceipt, useWriteContract } from "wagmi";
+import { AppContext } from "../../../../context";
+import type { ABI, ABIParameter, EventABI, FunctionABI } from "../../../../types";
+
+interface ContractInteractionProps {
+ addressHash: string;
+ networkId: string;
+ abi: ABI[];
+}
+
+const ContractInteraction: React.FC