diff --git a/frontend/config-overrides.js b/frontend/config-overrides.js
new file mode 100644
index 0000000..8b1ffbc
--- /dev/null
+++ b/frontend/config-overrides.js
@@ -0,0 +1,7 @@
+const ModuleScopePlugin = require('react-dev-utils/ModuleScopePlugin');
+
+module.exports = function override(config, env) {
+ config.resolve.plugins = config.resolve.plugins.filter(plugin => !(plugin instanceof ModuleScopePlugin));
+
+ return config;
+};
diff --git a/frontend/constants/goerliAddress.ts b/frontend/constants/goerliAddress.ts
new file mode 100644
index 0000000..d3db51c
--- /dev/null
+++ b/frontend/constants/goerliAddress.ts
@@ -0,0 +1 @@
+export const SNT_ADDRESS = '0x86e5C5c884740894644dAD30021aAaAdE2B7bAbd';
diff --git a/frontend/package.json b/frontend/package.json
index de3bc38..a16be94 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -12,13 +12,14 @@
"@types/react-dom": "^16.9.0",
"ethers": "^5.0.17",
"react": "^16.14.0",
+ "react-app-rewired": "^2.1.8",
"react-dom": "^16.14.0",
"react-scripts": "3.4.3",
"typescript": "^3.9.7",
"web3modal": "^1.9.1"
},
"scripts": {
- "start": "react-scripts start",
+ "start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx
index 64d7df5..d291d8f 100644
--- a/frontend/src/App.tsx
+++ b/frontend/src/App.tsx
@@ -3,6 +3,7 @@ import logo from './logo.svg';
import './App.css';
import { Symfoni } from "./hardhat/SymfoniContext";
import { Greeter } from './components/Greeter';
+import { Bridge } from './components/Bridge'
function App() {
@@ -10,19 +11,7 @@ function App() {
diff --git a/frontend/src/components/Bridge.tsx b/frontend/src/components/Bridge.tsx
new file mode 100644
index 0000000..4d88601
--- /dev/null
+++ b/frontend/src/components/Bridge.tsx
@@ -0,0 +1,65 @@
+import React, { useContext, useEffect, useState } from 'react';
+import { BridgeContext, SymfoniBridge } from "./../hardhat/SymfoniContext";
+import { Wallet, providers, Contract, VoidSigner } from "ethers";
+import { Bridge as IBridge } from "../types/Bridge"
+import { SNT_ETHEREUM } from "../constants/goerliAddress";
+
+const wallet = Wallet.createRandom();
+
+interface Props { }
+const FUJI_BRIDGE = '0xE57Eb49689bCAE4dE61D326F7E79Bd14aB527f0f';
+const GOERLI_BRIDGE = '0xD0E461b1Dc56503fC72565FA964C28E274146D44';
+const fujiProvider = new providers.JsonRpcProvider("https://api.avax-test.network/ext/bc/C/rpc");
+const goerliProvider = new providers.InfuraProvider("goerli");
+const fujiSigner = new Wallet(wallet.privateKey, fujiProvider);
+const fujiVoidSigner = new VoidSigner(wallet.address, fujiProvider);
+const goerliVoidsigner = new VoidSigner(wallet.address, goerliProvider);
+
+
+export const Bridge: React.FC = () => {
+ const bridge: SymfoniBridge = useContext(BridgeContext);
+ /* fujiBridge.factory?.connect(fujiSigner);
+ * fujiBridge.factory?.attach(FUJI_BRIDGE); */
+ const [message, setMessage] = useState("");
+ const [inputGreeting, setInputGreeting] = useState("");
+ const [goerliBridge, setGoerliBridge] = useState();
+ const [fujiBridge, setFujiBridge] = useState();
+ useEffect(() => {
+ const doAsync = async () => {
+ if (!bridge.instance) return
+ console.log("Bridge is deployed at ", bridge.instance.address)
+ let gBridge = new Contract(
+ GOERLI_BRIDGE,
+ bridge.instance.interface,
+ goerliVoidsigner
+ ) as IBridge;
+ setGoerliBridge(gBridge);
+ let fBridge = new Contract(
+ FUJI_BRIDGE,
+ bridge.instance.interface,
+ fujiVoidSigner
+ ) as IBridge;
+ setFujiBridge(fBridge);
+ };
+ doAsync();
+ }, [bridge])
+
+ const handleSetGreeting = async (e: React.MouseEvent) => {
+ e.preventDefault()
+ if (!bridge.instance) throw Error("Bridge instance not ready")
+ if (bridge.instance) {
+ //const tx = await bridge.instance.setGreeting(inputGreeting)
+ const tx = await bridge.instance._expiry();
+ //const fuji = await fujiBridge.instance?._expiry();
+ const goerli = await goerliBridge?._expiry();
+ console.log("expiry", {tx, goerli}, goerliBridge?.address);
+ }
+ }
+ return (
+
+
{message}
+
setInputGreeting(e.target.value)}>
+
+
+ )
+}