diff --git a/.nvmrc b/.nvmrc
new file mode 100644
index 00000000..acabd5c1
--- /dev/null
+++ b/.nvmrc
@@ -0,0 +1 @@
+15.8.0
diff --git a/README.md b/README.md
index 0f07e760..ae605b08 100755
--- a/README.md
+++ b/README.md
@@ -47,7 +47,7 @@ type BridgeConfig = {
networkId: number // The networkId of this chain.
name: string // The human readable name of this chain.
bridgeAddress: string // The address on the brdige contract deployed on this chain.
- erc20HandlerAddress: string // The ERC20 handler address.
+ genericHandlerAddress: string // The ERC20 handler address.
rpcUrl: string // An RPC URL for this chain.
type: "Ethereum" | "Substrate" // The type of chain.
tokens: TokenConfig[] // An object to configure the tokens this bridge can transfer. See the TokenConfig object below.
diff --git a/package.json b/package.json
index 0cce92d5..8ed837bc 100755
--- a/package.json
+++ b/package.json
@@ -6,7 +6,7 @@
"@babel/core": "^7.12.3",
"@babel/runtime": "^7.12.1",
"@chainsafe/chainbridge-contracts": "^1.0.3",
- "@chainsafe/web3-context": "1.2.0",
+ "@meterio/web3-context": "1.2.3",
"@chainsafe/common-components": "1.0.26",
"@chainsafe/common-theme": "1.0.6",
"@material-ui/styles": "4.10.0",
@@ -15,7 +15,7 @@
"bnc-onboard": "1.19.2",
"clsx": "^1.1.1",
"dayjs": "^1.9.1",
- "ethers": "^5.0.17",
+ "ethers": "^5.4.4",
"formik": "^2.2.0",
"history": "^5.0.0",
"react": "^16.13.1",
diff --git a/public/ChainSafe-logo.png b/public/ChainSafe-logo.png
deleted file mode 100644
index 95ee5385..00000000
Binary files a/public/ChainSafe-logo.png and /dev/null differ
diff --git a/public/ample-favicon/android-icon-144x144.png b/public/ample-favicon/android-icon-144x144.png
new file mode 100755
index 00000000..c3365741
Binary files /dev/null and b/public/ample-favicon/android-icon-144x144.png differ
diff --git a/public/ample-favicon/android-icon-192x192.png b/public/ample-favicon/android-icon-192x192.png
new file mode 100755
index 00000000..dd7ca09e
Binary files /dev/null and b/public/ample-favicon/android-icon-192x192.png differ
diff --git a/public/ample-favicon/android-icon-36x36.png b/public/ample-favicon/android-icon-36x36.png
new file mode 100755
index 00000000..5d2cda3b
Binary files /dev/null and b/public/ample-favicon/android-icon-36x36.png differ
diff --git a/public/ample-favicon/android-icon-48x48.png b/public/ample-favicon/android-icon-48x48.png
new file mode 100755
index 00000000..468a68d9
Binary files /dev/null and b/public/ample-favicon/android-icon-48x48.png differ
diff --git a/public/ample-favicon/android-icon-72x72.png b/public/ample-favicon/android-icon-72x72.png
new file mode 100755
index 00000000..468476a7
Binary files /dev/null and b/public/ample-favicon/android-icon-72x72.png differ
diff --git a/public/ample-favicon/android-icon-96x96.png b/public/ample-favicon/android-icon-96x96.png
new file mode 100755
index 00000000..5c33f356
Binary files /dev/null and b/public/ample-favicon/android-icon-96x96.png differ
diff --git a/public/ample-favicon/apple-icon-114x114.png b/public/ample-favicon/apple-icon-114x114.png
new file mode 100755
index 00000000..7e1bac99
Binary files /dev/null and b/public/ample-favicon/apple-icon-114x114.png differ
diff --git a/public/ample-favicon/apple-icon-120x120.png b/public/ample-favicon/apple-icon-120x120.png
new file mode 100755
index 00000000..50706e13
Binary files /dev/null and b/public/ample-favicon/apple-icon-120x120.png differ
diff --git a/public/ample-favicon/apple-icon-144x144.png b/public/ample-favicon/apple-icon-144x144.png
new file mode 100755
index 00000000..c3365741
Binary files /dev/null and b/public/ample-favicon/apple-icon-144x144.png differ
diff --git a/public/ample-favicon/apple-icon-152x152.png b/public/ample-favicon/apple-icon-152x152.png
new file mode 100755
index 00000000..13929c9d
Binary files /dev/null and b/public/ample-favicon/apple-icon-152x152.png differ
diff --git a/public/ample-favicon/apple-icon-180x180.png b/public/ample-favicon/apple-icon-180x180.png
new file mode 100755
index 00000000..7108afa2
Binary files /dev/null and b/public/ample-favicon/apple-icon-180x180.png differ
diff --git a/public/ample-favicon/apple-icon-57x57.png b/public/ample-favicon/apple-icon-57x57.png
new file mode 100755
index 00000000..e9d4d7a2
Binary files /dev/null and b/public/ample-favicon/apple-icon-57x57.png differ
diff --git a/public/ample-favicon/apple-icon-60x60.png b/public/ample-favicon/apple-icon-60x60.png
new file mode 100755
index 00000000..cd53c2ee
Binary files /dev/null and b/public/ample-favicon/apple-icon-60x60.png differ
diff --git a/public/ample-favicon/apple-icon-72x72.png b/public/ample-favicon/apple-icon-72x72.png
new file mode 100755
index 00000000..468476a7
Binary files /dev/null and b/public/ample-favicon/apple-icon-72x72.png differ
diff --git a/public/ample-favicon/apple-icon-76x76.png b/public/ample-favicon/apple-icon-76x76.png
new file mode 100755
index 00000000..f22d55e9
Binary files /dev/null and b/public/ample-favicon/apple-icon-76x76.png differ
diff --git a/public/ample-favicon/apple-icon-precomposed.png b/public/ample-favicon/apple-icon-precomposed.png
new file mode 100755
index 00000000..d847d4d5
Binary files /dev/null and b/public/ample-favicon/apple-icon-precomposed.png differ
diff --git a/public/ample-favicon/apple-icon.png b/public/ample-favicon/apple-icon.png
new file mode 100755
index 00000000..d847d4d5
Binary files /dev/null and b/public/ample-favicon/apple-icon.png differ
diff --git a/public/ample-favicon/browserconfig.xml b/public/ample-favicon/browserconfig.xml
new file mode 100755
index 00000000..c5541482
--- /dev/null
+++ b/public/ample-favicon/browserconfig.xml
@@ -0,0 +1,2 @@
+
+#ffffff
\ No newline at end of file
diff --git a/public/ample-favicon/favicon-16x16.png b/public/ample-favicon/favicon-16x16.png
new file mode 100755
index 00000000..7351a6c2
Binary files /dev/null and b/public/ample-favicon/favicon-16x16.png differ
diff --git a/public/ample-favicon/favicon-32x32.png b/public/ample-favicon/favicon-32x32.png
new file mode 100755
index 00000000..22d65175
Binary files /dev/null and b/public/ample-favicon/favicon-32x32.png differ
diff --git a/public/ample-favicon/favicon-96x96.png b/public/ample-favicon/favicon-96x96.png
new file mode 100755
index 00000000..5c33f356
Binary files /dev/null and b/public/ample-favicon/favicon-96x96.png differ
diff --git a/public/ample-favicon/favicon.ico b/public/ample-favicon/favicon.ico
new file mode 100755
index 00000000..1a341e23
Binary files /dev/null and b/public/ample-favicon/favicon.ico differ
diff --git a/public/ample-favicon/manifest.json b/public/ample-favicon/manifest.json
new file mode 100755
index 00000000..013d4a6a
--- /dev/null
+++ b/public/ample-favicon/manifest.json
@@ -0,0 +1,41 @@
+{
+ "name": "App",
+ "icons": [
+ {
+ "src": "\/android-icon-36x36.png",
+ "sizes": "36x36",
+ "type": "image\/png",
+ "density": "0.75"
+ },
+ {
+ "src": "\/android-icon-48x48.png",
+ "sizes": "48x48",
+ "type": "image\/png",
+ "density": "1.0"
+ },
+ {
+ "src": "\/android-icon-72x72.png",
+ "sizes": "72x72",
+ "type": "image\/png",
+ "density": "1.5"
+ },
+ {
+ "src": "\/android-icon-96x96.png",
+ "sizes": "96x96",
+ "type": "image\/png",
+ "density": "2.0"
+ },
+ {
+ "src": "\/android-icon-144x144.png",
+ "sizes": "144x144",
+ "type": "image\/png",
+ "density": "3.0"
+ },
+ {
+ "src": "\/android-icon-192x192.png",
+ "sizes": "192x192",
+ "type": "image\/png",
+ "density": "4.0"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/public/ample-favicon/ms-icon-144x144.png b/public/ample-favicon/ms-icon-144x144.png
new file mode 100755
index 00000000..c3365741
Binary files /dev/null and b/public/ample-favicon/ms-icon-144x144.png differ
diff --git a/public/ample-favicon/ms-icon-150x150.png b/public/ample-favicon/ms-icon-150x150.png
new file mode 100755
index 00000000..3f8bb8d4
Binary files /dev/null and b/public/ample-favicon/ms-icon-150x150.png differ
diff --git a/public/ample-favicon/ms-icon-310x310.png b/public/ample-favicon/ms-icon-310x310.png
new file mode 100755
index 00000000..d02993b7
Binary files /dev/null and b/public/ample-favicon/ms-icon-310x310.png differ
diff --git a/public/ample-favicon/ms-icon-70x70.png b/public/ample-favicon/ms-icon-70x70.png
new file mode 100755
index 00000000..e2e6e308
Binary files /dev/null and b/public/ample-favicon/ms-icon-70x70.png differ
diff --git a/public/downtime.html b/public/downtime.html
new file mode 100644
index 00000000..3ec29ea5
--- /dev/null
+++ b/public/downtime.html
@@ -0,0 +1,5 @@
+
+
+The Meter Passport bridge is experiencing downtime. Check back again soon.
+
+
diff --git a/public/favicon.ico b/public/favicon.ico
deleted file mode 100644
index 0c72c715..00000000
Binary files a/public/favicon.ico and /dev/null differ
diff --git a/public/index.html b/public/index.html
index ea13a8dd..8a9fe358 100644
--- a/public/index.html
+++ b/public/index.html
@@ -2,11 +2,9 @@
-
-
-
+
- Chainbridge
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ample Bridge
diff --git a/public/manifest.json b/public/manifest.json
index 76a05f8e..301e9bd3 100644
--- a/public/manifest.json
+++ b/public/manifest.json
@@ -1,15 +1,15 @@
{
- "short_name": "Chainbridge",
- "name": "Chainbridge",
+ "short_name": "Ample Bridge",
+ "name": "Ample Bridge",
"icons": [
{
- "src": "ChainSafe-logo.png",
+ "src": "ample-logo/logo.png",
"sizes": "64x64 32x32 24x24 16x16",
"type": "image/x-icon"
}
],
"start_url": ".",
"display": "standalone",
- "theme_color": "#000000",
- "background_color": "#ffffff"
+ "theme_color": "#ffffff",
+ "background_color": "#000000"
}
diff --git a/scripts/deploy.sh b/scripts/deploy.sh
new file mode 100755
index 00000000..eb0b8a71
--- /dev/null
+++ b/scripts/deploy.sh
@@ -0,0 +1,3 @@
+yarn build
+aws s3 sync build/ s3://bridge.ampleforth.org/ --cache-control max-age=86400 --acl public-read
+
diff --git a/src/App.tsx b/src/App.tsx
index b773952d..87a2f0c8 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -8,10 +8,10 @@ import {
} from "@chainsafe/common-components";
import Routes from "./Components/Routes";
-import { lightTheme } from "./Themes/LightTheme";
+import { ampleTheme } from "./Themes/AmpleforthTheme";
import { ChainbridgeProvider } from "./Contexts/ChainbridgeContext";
import AppWrapper from "./Layouts/AppWrapper";
-import { Web3Provider } from "@chainsafe/web3-context";
+import { Web3Provider } from "@meterio/web3-context";
import { chainbridgeConfig } from "./chainbridgeConfig";
import { utils } from "ethers";
@@ -53,7 +53,7 @@ const App: React.FC<{}> = () => {
)}
onReset={() => window.location.reload()}
>
-
+
= () => {
}}
checkNetwork={false}
gasPricePollingInterval={120}
- gasPriceSetting="fast"
+ gasPriceSetting="recommendedBaseFee"
>
diff --git a/src/Components/Custom/TokenInput.tsx b/src/Components/Custom/TokenInput.tsx
index 333140a9..e49becea 100644
--- a/src/Components/Custom/TokenInput.tsx
+++ b/src/Components/Custom/TokenInput.tsx
@@ -2,7 +2,9 @@ import React from "react";
import { useField, useFormikContext } from "formik";
import { Button, FormikTextInput } from "@chainsafe/common-components";
-import { Tokens } from "@chainsafe/web3-context/dist/context/tokensReducer";
+import { Tokens } from "@meterio/web3-context/dist/context/tokensReducer";
+
+import {safeRound} from "../../Utils/XCAmple";
interface ITokenInput {
disabled?: boolean;
@@ -42,7 +44,9 @@ const TokenInput: React.FC = ({
className={classNames?.button}
onClick={() => {
helpers.setValue(
- tokens[(values as Record)[tokenSelectorKey]].balance
+ safeRound(
+ tokens[(values as Record)[tokenSelectorKey]].balance,
+ tokens[(values as Record)[tokenSelectorKey]].decimals)
);
}}
variant="outline"
diff --git a/src/Components/Custom/TokenSelectInput.tsx b/src/Components/Custom/TokenSelectInput.tsx
index 319cb0e5..586df1e2 100644
--- a/src/Components/Custom/TokenSelectInput.tsx
+++ b/src/Components/Custom/TokenSelectInput.tsx
@@ -4,7 +4,8 @@ import {
IFormikSelectInputProps,
FormikSelectInput,
} from "@chainsafe/common-components";
-import { Tokens } from "@chainsafe/web3-context/dist/context/tokensReducer";
+import { Tokens } from "@meterio/web3-context/dist/context/tokensReducer";
+import {safeRound} from "../../Utils/XCAmple";
interface ITokenSelectInput extends IFormikSelectInputProps {
tokens: Tokens;
@@ -20,10 +21,15 @@ const TokenSelectInput: React.FC = ({
...rest
}: ITokenSelectInput) => {
const [field] = useField(name);
+ const roundedBalance = safeRound(tokens[field.value]?.balance, tokens[field.value]?.decimals);
+ const amountToDisplay = parseFloat(roundedBalance).toLocaleString();
const labelParsed = tokens[field.value]
- ? `${label} ${tokens[field.value]?.balance} ${tokens[field.value]?.symbol}`
+ ? `${label} ${amountToDisplay} ${tokens[field.value]?.symbol}`
: "Please select token";
+ const tokenList = Object.keys(tokens);
+ const nTokens = tokenList.length;
+
const [synced, setSynced] = useState();
useEffect(() => {
if (sync && field.value !== synced) {
diff --git a/src/Components/Pages/FormikContextElements/Fees.tsx b/src/Components/Pages/FormikContextElements/Fees.tsx
index e079e157..1cdd02af 100644
--- a/src/Components/Pages/FormikContextElements/Fees.tsx
+++ b/src/Components/Pages/FormikContextElements/Fees.tsx
@@ -22,15 +22,15 @@ const FeesFormikWrapped: React.FC = ({
return (
- {fee !== undefined && feeSymbol !== undefined && (
+ {(
<>
Bridge Fee
- {fee} {feeSymbol}
+ {fee||"0"} {feeSymbol}
>
)}
- {symbol !== undefined && (
+ {(
<>
Transfer Amount:
diff --git a/src/Components/Pages/TransferPage.tsx b/src/Components/Pages/TransferPage.tsx
index 32d69f1a..045a1260 100644
--- a/src/Components/Pages/TransferPage.tsx
+++ b/src/Components/Pages/TransferPage.tsx
@@ -14,7 +14,7 @@ import { Form, Formik } from "formik";
import AddressInput from "../Custom/AddressInput";
import clsx from "clsx";
import TransferActiveModal from "../../Modules/TransferActiveModal";
-import { useWeb3 } from "@chainsafe/web3-context";
+import { useWeb3 } from "@meterio/web3-context";
import { useChainbridge } from "../../Contexts/ChainbridgeContext";
import TokenSelectInput from "../Custom/TokenSelectInput";
import TokenInput from "../Custom/TokenInput";
@@ -28,6 +28,7 @@ const useStyles = makeStyles(({ constants, palette }: ITheme) =>
root: {
padding: constants.generalUnit * 6,
position: "relative",
+ minHeight: '800px',
},
walletArea: {
display: "flex",
@@ -35,6 +36,7 @@ const useStyles = makeStyles(({ constants, palette }: ITheme) =>
alignItems: "center",
justifyContent: "center",
width: "100%",
+ minHeight: "130px",
},
connectButton: {
margin: `${constants.generalUnit * 3}px 0 ${constants.generalUnit * 6}px`,
@@ -83,7 +85,7 @@ const useStyles = makeStyles(({ constants, palette }: ITheme) =>
flexDirection: "row",
alignItems: "flex-end",
justifyContent: "space-around",
- paddingRight: constants.generalUnit,
+ // paddingRight: constants.generalUnit,
},
tokenInput: {
margin: 0,
@@ -117,7 +119,12 @@ const useStyles = makeStyles(({ constants, palette }: ITheme) =>
},
},
currencySelector: {
- width: 120,
+ display: "flex",
+ flexDirection: "row",
+ justifyContent: "space-between",
+ alignItems: "flex-end",
+ margin: `${constants.generalUnit * 3}px 0`,
+ width: '100%',
"& *": {
cursor: "pointer",
},
@@ -129,6 +136,7 @@ const useStyles = makeStyles(({ constants, palette }: ITheme) =>
},
addressInput: {},
generalInput: {
+ width: '100%',
"& > span": {
marginBottom: constants.generalUnit,
},
@@ -162,7 +170,10 @@ const useStyles = makeStyles(({ constants, palette }: ITheme) =>
flexDirection: "row",
flexWrap: "wrap",
justifyContent: "space-between",
- marginBottom: constants.generalUnit,
+ marginTop: 2*constants.generalUnit,
+ marginBottom: 2*constants.generalUnit,
+ background: palette.additional["gray"][2],
+ padding: `${constants.generalUnit}px ${2*constants.generalUnit}px`,
"& > *": {
display: "block",
width: "50%",
@@ -204,7 +215,6 @@ const TransferPage = () => {
resetDeposit,
bridgeFee,
} = useChainbridge();
-
const [aboutOpen, setAboutOpen] = useState(false);
const [walletConnecting, setWalletConnecting] = useState(false);
const [changeNetworkOpen, setChangeNetworkOpen] = useState(false);
@@ -269,7 +279,7 @@ const TransferPage = () => {
})
.test("Min", "Less than minimum", (value) => {
if (value) {
- return parseFloat(value) > 0;
+ return parseFloat(value) >= (10 ** -(tokens[preflightDetails.token].decimals/2));
}
return false;
})
@@ -360,63 +370,61 @@ const TransferPage = () => {
value={destinationChain?.chainId}
/>
+
+ {
+ setPreflightDetails({
+ ...preflightDetails,
+ token: tokenAddress,
+ receiver: "",
+ tokenAmount: 0,
+ tokenSymbol: "",
+ });
+ }}
+ options={
+ Object.keys(tokens).map((t) => ({
+ value: t,
+ label: (
+
+ {tokens[t]?.imageUri && (
+
![{tokens[t]?.symbol}]({tokens[t]?.imageUri})
+ )}
+
{tokens[t]?.symbol || t}
+
+ ),
+ })) || []
+ }
+ />
+
-
-
- {
- setPreflightDetails({
- ...preflightDetails,
- token: tokenAddress,
- receiver: "",
- tokenAmount: 0,
- tokenSymbol: "",
- });
+
+
({
- value: t,
- label: (
-
- {tokens[t]?.imageUri && (
-
![{tokens[t]?.symbol}]({tokens[t]?.imageUri})
- )}
-
{tokens[t]?.symbol || t}
-
- ),
- })) || []
+ tokenSelectorKey="token"
+ tokens={tokens}
+ disabled={
+ !destinationChain ||
+ !preflightDetails.token ||
+ preflightDetails.token === ""
}
+ name="tokenAmount"
+ label="I want to send"
/>
-
+
-
- setAboutOpen(true)}
- className={classes.faqButton}
- />
-
- setAboutOpen(false)} />
setChangeNetworkOpen(false)}
diff --git a/src/Components/Pages/WrapperPage.tsx b/src/Components/Pages/WrapperPage.tsx
index 2c7e70f4..80b02f05 100644
--- a/src/Components/Pages/WrapperPage.tsx
+++ b/src/Components/Pages/WrapperPage.tsx
@@ -11,7 +11,7 @@ import {
} from "@chainsafe/common-components";
import { Form, Formik } from "formik";
import clsx from "clsx";
-import { useWeb3 } from "@chainsafe/web3-context";
+import { useWeb3 } from "@meterio/web3-context";
import { useChainbridge } from "../../Contexts/ChainbridgeContext";
import { object, string } from "yup";
import { ReactComponent as ETHIcon } from "../../media/tokens/eth.svg";
diff --git a/src/Components/Routes.tsx b/src/Components/Routes.tsx
index 9ad20ae2..295502ef 100644
--- a/src/Components/Routes.tsx
+++ b/src/Components/Routes.tsx
@@ -1,18 +1,16 @@
import React from "react";
import { Switch, Route, Redirect } from "@chainsafe/common-components";
import TransferPage from "./Pages/TransferPage";
-import WrapperPage from "./Pages/WrapperPage";
export const ROUTE_LINKS = {
- Transfer: "/transfer",
- Wrap: "/wrap",
+ Transfer: "/transfer"
};
const FilesRoutes = () => {
return (
-
+
diff --git a/src/Contexts/ChainbridgeContext.tsx b/src/Contexts/ChainbridgeContext.tsx
index 6e48d189..1a62781b 100644
--- a/src/Contexts/ChainbridgeContext.tsx
+++ b/src/Contexts/ChainbridgeContext.tsx
@@ -1,6 +1,7 @@
-import { useWeb3 } from "@chainsafe/web3-context";
+import { useWeb3 } from "@meterio/web3-context";
import React, { useContext, useEffect, useReducer, useState } from "react";
-import { Bridge, BridgeFactory } from "@chainsafe/chainbridge-contracts";
+import { Bridge } from "../Contracts/Bridge";
+import { BridgeFactory } from "../Contracts/BridgeFactory";
import {
BigNumber,
BigNumberish,
@@ -11,6 +12,7 @@ import {
utils,
} from "ethers";
import { Erc20DetailedFactory } from "../Contracts/Erc20DetailedFactory";
+import { XCAmpleControllerFactory } from "../Contracts/XCAmpleControllerFactory";
import {
BridgeConfig,
chainbridgeConfig,
@@ -19,6 +21,7 @@ import {
import { transitMessageReducer } from "./Reducers/TransitMessageReducer";
import { Weth } from "../Contracts/Weth";
import { WethFactory } from "../Contracts/WethFactory";
+import { packXCTransferData } from "../Utils/XCAmple";
interface IChainbridgeContextProps {
children: React.ReactNode | React.ReactNode[];
@@ -199,7 +202,6 @@ const ChainbridgeProvider = ({ children }: IChainbridgeContextProps) => {
const destChain = chainbridgeConfig.chains.find(
(c) => c.networkId !== network
);
-
destChain && setDestinationChain(destChain);
}
@@ -233,26 +235,29 @@ const ChainbridgeProvider = ({ children }: IChainbridgeContextProps) => {
}
};
const getBridgeFee = async () => {
- if (homeBridge) {
- const bridgeFee = Number(utils.formatEther(await homeBridge._fee()));
+ if (homeBridge && destinationBridge && homeChain) {
+ const targetDomainID = await destinationBridge._domainID();
+ const fee = await homeBridge.getFee(
+ targetDomainID
+ );
+ const bridgeFee = Number(utils.formatEther(fee));
setBridgeFee(bridgeFee);
}
};
getRelayerThreshold();
getBridgeFee();
- }, [homeBridge]);
+ }, [homeBridge, destinationBridge]);
useEffect(() => {
if (homeChain && destinationBridge && depositNonce) {
destinationBridge.on(
destinationBridge.filters.ProposalEvent(
- homeChain.chainId,
- BigNumber.from(depositNonce),
+ null,
null,
null,
null
),
- (originChainId, depositNonce, status, resourceId, dataHash, tx) => {
+ (originChainId, depositNonce, status, dataHash, tx) => {
switch (BigNumber.from(status).toNumber()) {
case 1:
tokensDispatch({
@@ -280,12 +285,12 @@ const ChainbridgeProvider = ({ children }: IChainbridgeContextProps) => {
destinationBridge.on(
destinationBridge.filters.ProposalVote(
- homeChain.chainId,
- BigNumber.from(depositNonce),
+ null,
+ null,
null,
null
),
- async (originChainId, depositNonce, status, resourceId, tx) => {
+ async (originChainId, depositNonce, status, dataHash, tx) => {
const txReceipt = await tx.getTransactionReceipt();
if (txReceipt.status === 1) {
setDepositVotes(depositVotes + 1);
@@ -333,6 +338,7 @@ const ChainbridgeProvider = ({ children }: IChainbridgeContextProps) => {
console.log("No signer");
return;
}
+ const sender = await signer.getAddress();
const token = homeChain.tokens.find(
(token) => token.address === tokenAddress
@@ -346,55 +352,44 @@ const ChainbridgeProvider = ({ children }: IChainbridgeContextProps) => {
setDepositAmount(amount);
setSelectedToken(tokenAddress);
const erc20 = Erc20DetailedFactory.connect(tokenAddress, signer);
+ const controller = XCAmpleControllerFactory.connect(homeChain.controller, signer);
const erc20Decimals = tokens[tokenAddress].decimals;
- const data =
- "0x" +
- utils
- .hexZeroPad(
- // TODO Wire up dynamic token decimals
- BigNumber.from(
- utils.parseUnits(amount.toString(), erc20Decimals)
- ).toHexString(),
- 32
- )
- .substr(2) + // Deposit Amount (32 bytes)
- utils
- .hexZeroPad(utils.hexlify((recipient.length - 2) / 2), 32)
- .substr(2) + // len(recipientAddress) (32 bytes)
- recipient.substr(2); // recipientAddress (?? bytes)
+ const [epoch, totalSupply] = await controller.globalAmpleforthEpochAndAMPLSupply();
+ const data = packXCTransferData(address, recipient, utils.parseUnits(amount.toString(), erc20Decimals), totalSupply);
try {
const currentAllowance = await erc20.allowance(
address,
- homeChain.erc20HandlerAddress
+ homeChain.approvalContract
);
+ const gasLimit = 500000;
if (Number(utils.formatUnits(currentAllowance, erc20Decimals)) < amount) {
- if (
- Number(utils.formatUnits(currentAllowance, erc20Decimals)) > 0 &&
- resetAllowanceLogicFor.includes(tokenAddress)
- ) {
- //We need to reset the user's allowance to 0 before we give them a new allowance
- //TODO Should we alert the user this is happening here?
- await (
- await erc20.approve(
- homeChain.erc20HandlerAddress,
- BigNumber.from(utils.parseUnits("0", erc20Decimals)),
- {
- gasPrice: BigNumber.from(
- utils.parseUnits(
- (homeChain.defaultGasPrice || gasPrice).toString(),
- 9
- )
- ).toString(),
- }
- )
- ).wait(1);
- }
+ // if (
+ // Number(utils.formatUnits(currentAllowance, erc20Decimals)) > 0 &&
+ // resetAllowanceLogicFor.includes(tokenAddress)
+ // ) {
+ // // We need to reset the user's allowance to 0 before we give them a new allowance
+ // //TODO Should we alert the user this is happening here?
+ // await (
+ // await erc20.approve(
+ // homeChain.approvalContract,
+ // BigNumber.from(utils.parseUnits("0", erc20Decimals)),
+ // {
+ // gasPrice: BigNumber.from(
+ // utils.parseUnits(
+ // (homeChain.defaultGasPrice || gasPrice).toString(),
+ // 9
+ // )
+ // ).toString(),
+ // }
+ // )
+ // ).wait(1);
+ // }
await (
await erc20.approve(
- homeChain.erc20HandlerAddress,
+ homeChain.approvalContract,
BigNumber.from(utils.parseUnits(amount.toString(), erc20Decimals)),
{
gasPrice: BigNumber.from(
@@ -403,6 +398,7 @@ const ChainbridgeProvider = ({ children }: IChainbridgeContextProps) => {
9
)
).toString(),
+ gasLimit,
}
)
).wait(1);
@@ -410,11 +406,14 @@ const ChainbridgeProvider = ({ children }: IChainbridgeContextProps) => {
homeBridge.once(
homeBridge.filters.Deposit(
- destinationChain.chainId,
- token.resourceId,
- null
+ null,
+ null,
+ null,
+ sender,
+ null,
+ null,
),
- (destChainId, resourceId, depositNonce) => {
+ (destChainId, resourceId, depositNonce, user, data, handlerResponse) => {
setDepositNonce(`${depositNonce.toString()}`);
setTransactionStatus("In Transit");
}
@@ -425,11 +424,13 @@ const ChainbridgeProvider = ({ children }: IChainbridgeContextProps) => {
destinationChain.chainId,
token.resourceId,
data,
+ [],
{
gasPrice: utils.parseUnits(
(homeChain.defaultGasPrice || gasPrice).toString(),
9
),
+ gasLimit,
value: utils.parseUnits((bridgeFee || 0).toString(), 18),
}
)
diff --git a/src/Contracts/Bridge.d.ts b/src/Contracts/Bridge.d.ts
new file mode 100644
index 00000000..d8f97e43
--- /dev/null
+++ b/src/Contracts/Bridge.d.ts
@@ -0,0 +1,3627 @@
+/* Autogenerated file. Do not edit manually. */
+/* tslint:disable */
+/* eslint-disable */
+
+import {
+ ethers,
+ EventFilter,
+ Signer,
+ BigNumber,
+ BigNumberish,
+ PopulatedTransaction,
+ Contract,
+ ContractTransaction,
+ Overrides,
+ PayableOverrides,
+ CallOverrides,
+} from "ethers";
+import { BytesLike } from "@ethersproject/bytes";
+import { Listener, Provider } from "@ethersproject/providers";
+import { FunctionFragment, EventFragment, Result } from "@ethersproject/abi";
+import { TypedEventFilter, TypedEvent, TypedListener } from "./commons";
+
+interface BridgeInterface extends ethers.utils.Interface {
+ functions: {
+ "DEFAULT_ADMIN_ROLE()": FunctionFragment;
+ "MAX_RELAYERS()": FunctionFragment;
+ "PERMIT_TYPEHASH()": FunctionFragment;
+ "RELAYER_ROLE()": FunctionFragment;
+ "_chainId()": FunctionFragment;
+ "_depositCounts(uint8)": FunctionFragment;
+ "_domainID()": FunctionFragment;
+ "_expiry()": FunctionFragment;
+ "_fee()": FunctionFragment;
+ "_feeHandler()": FunctionFragment;
+ "_feeReserve()": FunctionFragment;
+ "_fee_()": FunctionFragment;
+ "_hasVotedOnProposal(uint72,bytes32,address)": FunctionFragment;
+ "_relayerThreshold()": FunctionFragment;
+ "_resourceIDToHandlerAddress(bytes32)": FunctionFragment;
+ "_totalRelayers()": FunctionFragment;
+ "adminAddRelayer(address)": FunctionFragment;
+ "adminChangeExpiry(uint256)": FunctionFragment;
+ "adminChangeRelayerThreshold(uint256)": FunctionFragment;
+ "adminPauseTransfers()": FunctionFragment;
+ "adminRemoveGenericResource(bytes32,address)": FunctionFragment;
+ "adminRemoveRelayer(address)": FunctionFragment;
+ "adminRemoveResourceId(bytes32,address,bool)": FunctionFragment;
+ "adminRemoveSpecialFee(uint8)": FunctionFragment;
+ "adminSetBurnable(address,address)": FunctionFragment;
+ "adminSetDepositNonce(uint8,uint64)": FunctionFragment;
+ "adminSetDomainId(uint8)": FunctionFragment;
+ "adminSetFee(uint256)": FunctionFragment;
+ "adminSetForwarder(address,bool)": FunctionFragment;
+ "adminSetGenericResource(address,bytes32,address,bytes4,uint256,bytes4)": FunctionFragment;
+ "adminSetResource(address,bytes32,address,bool)": FunctionFragment;
+ "adminSetSpecialFee(uint8,uint256)": FunctionFragment;
+ "adminUnpauseTransfers()": FunctionFragment;
+ "adminWithdraw(address,bytes)": FunctionFragment;
+ "adminWithdrawETH(address,bytes)": FunctionFragment;
+ "cancelProposal(uint8,uint64,bytes32)": FunctionFragment;
+ "checkSignature(uint8,uint64,bytes32,bytes,bytes)": FunctionFragment;
+ "deposit(uint8,bytes32,bytes,bytes)": FunctionFragment;
+ "executeProposal(uint8,uint64,bytes,bytes32,bool)": FunctionFragment;
+ "getFee(uint8)": FunctionFragment;
+ "getProposal(uint8,uint64,bytes32,bytes)": FunctionFragment;
+ "getRoleAdmin(bytes32)": FunctionFragment;
+ "getRoleMember(bytes32,uint256)": FunctionFragment;
+ "getRoleMemberCount(bytes32)": FunctionFragment;
+ "getRoleMemberIndex(bytes32,address)": FunctionFragment;
+ "grantRole(bytes32,address)": FunctionFragment;
+ "hasRole(bytes32,address)": FunctionFragment;
+ "isRelayer(address)": FunctionFragment;
+ "isValidForwarder(address)": FunctionFragment;
+ "paused()": FunctionFragment;
+ "renounceAdmin(address)": FunctionFragment;
+ "renounceRole(bytes32,address)": FunctionFragment;
+ "revokeRole(bytes32,address)": FunctionFragment;
+ "special(uint8)": FunctionFragment;
+ "specialFee(uint8)": FunctionFragment;
+ "transferFee(address[],uint256[])": FunctionFragment;
+ "voteProposal(uint8,uint64,bytes32,bytes)": FunctionFragment;
+ "voteProposals(uint8,uint64,bytes32,bytes,bytes[])": FunctionFragment;
+ };
+
+ encodeFunctionData(
+ functionFragment: "DEFAULT_ADMIN_ROLE",
+ values?: undefined
+ ): string;
+ encodeFunctionData(
+ functionFragment: "MAX_RELAYERS",
+ values?: undefined
+ ): string;
+ encodeFunctionData(
+ functionFragment: "PERMIT_TYPEHASH",
+ values?: undefined
+ ): string;
+ encodeFunctionData(
+ functionFragment: "RELAYER_ROLE",
+ values?: undefined
+ ): string;
+ encodeFunctionData(functionFragment: "_chainId", values?: undefined): string;
+ encodeFunctionData(
+ functionFragment: "_depositCounts",
+ values: [BigNumberish]
+ ): string;
+ encodeFunctionData(functionFragment: "_domainID", values?: undefined): string;
+ encodeFunctionData(functionFragment: "_expiry", values?: undefined): string;
+ encodeFunctionData(functionFragment: "_fee", values?: undefined): string;
+ encodeFunctionData(
+ functionFragment: "_feeHandler",
+ values?: undefined
+ ): string;
+ encodeFunctionData(
+ functionFragment: "_feeReserve",
+ values?: undefined
+ ): string;
+ encodeFunctionData(functionFragment: "_fee_", values?: undefined): string;
+ encodeFunctionData(
+ functionFragment: "_hasVotedOnProposal",
+ values: [BigNumberish, BytesLike, string]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "_relayerThreshold",
+ values?: undefined
+ ): string;
+ encodeFunctionData(
+ functionFragment: "_resourceIDToHandlerAddress",
+ values: [BytesLike]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "_totalRelayers",
+ values?: undefined
+ ): string;
+ encodeFunctionData(
+ functionFragment: "adminAddRelayer",
+ values: [string]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "adminChangeExpiry",
+ values: [BigNumberish]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "adminChangeRelayerThreshold",
+ values: [BigNumberish]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "adminPauseTransfers",
+ values?: undefined
+ ): string;
+ encodeFunctionData(
+ functionFragment: "adminRemoveGenericResource",
+ values: [BytesLike, string]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "adminRemoveRelayer",
+ values: [string]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "adminRemoveResourceId",
+ values: [BytesLike, string, boolean]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "adminRemoveSpecialFee",
+ values: [BigNumberish]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "adminSetBurnable",
+ values: [string, string]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "adminSetDepositNonce",
+ values: [BigNumberish, BigNumberish]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "adminSetDomainId",
+ values: [BigNumberish]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "adminSetFee",
+ values: [BigNumberish]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "adminSetForwarder",
+ values: [string, boolean]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "adminSetGenericResource",
+ values: [string, BytesLike, string, BytesLike, BigNumberish, BytesLike]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "adminSetResource",
+ values: [string, BytesLike, string, boolean]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "adminSetSpecialFee",
+ values: [BigNumberish, BigNumberish]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "adminUnpauseTransfers",
+ values?: undefined
+ ): string;
+ encodeFunctionData(
+ functionFragment: "adminWithdraw",
+ values: [string, BytesLike]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "adminWithdrawETH",
+ values: [string, BytesLike]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "cancelProposal",
+ values: [BigNumberish, BigNumberish, BytesLike]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "checkSignature",
+ values: [BigNumberish, BigNumberish, BytesLike, BytesLike, BytesLike]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "deposit",
+ values: [BigNumberish, BytesLike, BytesLike, BytesLike]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "executeProposal",
+ values: [BigNumberish, BigNumberish, BytesLike, BytesLike, boolean]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "getFee",
+ values: [BigNumberish]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "getProposal",
+ values: [BigNumberish, BigNumberish, BytesLike, BytesLike]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "getRoleAdmin",
+ values: [BytesLike]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "getRoleMember",
+ values: [BytesLike, BigNumberish]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "getRoleMemberCount",
+ values: [BytesLike]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "getRoleMemberIndex",
+ values: [BytesLike, string]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "grantRole",
+ values: [BytesLike, string]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "hasRole",
+ values: [BytesLike, string]
+ ): string;
+ encodeFunctionData(functionFragment: "isRelayer", values: [string]): string;
+ encodeFunctionData(
+ functionFragment: "isValidForwarder",
+ values: [string]
+ ): string;
+ encodeFunctionData(functionFragment: "paused", values?: undefined): string;
+ encodeFunctionData(
+ functionFragment: "renounceAdmin",
+ values: [string]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "renounceRole",
+ values: [BytesLike, string]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "revokeRole",
+ values: [BytesLike, string]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "special",
+ values: [BigNumberish]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "specialFee",
+ values: [BigNumberish]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "transferFee",
+ values: [string[], BigNumberish[]]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "voteProposal",
+ values: [BigNumberish, BigNumberish, BytesLike, BytesLike]
+ ): string;
+ encodeFunctionData(
+ functionFragment: "voteProposals",
+ values: [BigNumberish, BigNumberish, BytesLike, BytesLike, BytesLike[]]
+ ): string;
+
+ decodeFunctionResult(
+ functionFragment: "DEFAULT_ADMIN_ROLE",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "MAX_RELAYERS",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "PERMIT_TYPEHASH",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "RELAYER_ROLE",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(functionFragment: "_chainId", data: BytesLike): Result;
+ decodeFunctionResult(
+ functionFragment: "_depositCounts",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(functionFragment: "_domainID", data: BytesLike): Result;
+ decodeFunctionResult(functionFragment: "_expiry", data: BytesLike): Result;
+ decodeFunctionResult(functionFragment: "_fee", data: BytesLike): Result;
+ decodeFunctionResult(
+ functionFragment: "_feeHandler",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "_feeReserve",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(functionFragment: "_fee_", data: BytesLike): Result;
+ decodeFunctionResult(
+ functionFragment: "_hasVotedOnProposal",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "_relayerThreshold",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "_resourceIDToHandlerAddress",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "_totalRelayers",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "adminAddRelayer",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "adminChangeExpiry",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "adminChangeRelayerThreshold",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "adminPauseTransfers",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "adminRemoveGenericResource",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "adminRemoveRelayer",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "adminRemoveResourceId",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "adminRemoveSpecialFee",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "adminSetBurnable",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "adminSetDepositNonce",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "adminSetDomainId",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "adminSetFee",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "adminSetForwarder",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "adminSetGenericResource",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "adminSetResource",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "adminSetSpecialFee",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "adminUnpauseTransfers",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "adminWithdraw",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "adminWithdrawETH",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "cancelProposal",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "checkSignature",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result;
+ decodeFunctionResult(
+ functionFragment: "executeProposal",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(functionFragment: "getFee", data: BytesLike): Result;
+ decodeFunctionResult(
+ functionFragment: "getProposal",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "getRoleAdmin",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "getRoleMember",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "getRoleMemberCount",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "getRoleMemberIndex",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result;
+ decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result;
+ decodeFunctionResult(functionFragment: "isRelayer", data: BytesLike): Result;
+ decodeFunctionResult(
+ functionFragment: "isValidForwarder",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result;
+ decodeFunctionResult(
+ functionFragment: "renounceAdmin",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "renounceRole",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result;
+ decodeFunctionResult(functionFragment: "special", data: BytesLike): Result;
+ decodeFunctionResult(functionFragment: "specialFee", data: BytesLike): Result;
+ decodeFunctionResult(
+ functionFragment: "transferFee",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "voteProposal",
+ data: BytesLike
+ ): Result;
+ decodeFunctionResult(
+ functionFragment: "voteProposals",
+ data: BytesLike
+ ): Result;
+
+ events: {
+ "Deposit(uint8,bytes32,uint64,address,bytes,bytes)": EventFragment;
+ "FailedHandlerExecution(bytes)": EventFragment;
+ "FeeChanged(uint256)": EventFragment;
+ "FeeDistributed(address,address,uint256)": EventFragment;
+ "FeeHandlerChanged(address)": EventFragment;
+ "Paused(address)": EventFragment;
+ "ProposalEvent(uint8,uint64,uint8,bytes32)": EventFragment;
+ "ProposalVote(uint8,uint64,uint8,bytes32)": EventFragment;
+ "RelayerAdded(address)": EventFragment;
+ "RelayerRemoved(address)": EventFragment;
+ "RelayerThresholdChanged(uint256)": EventFragment;
+ "RoleGranted(bytes32,address,address)": EventFragment;
+ "RoleRevoked(bytes32,address,address)": EventFragment;
+ "Unpaused(address)": EventFragment;
+ };
+
+ getEvent(nameOrSignatureOrTopic: "Deposit"): EventFragment;
+ getEvent(nameOrSignatureOrTopic: "FailedHandlerExecution"): EventFragment;
+ getEvent(nameOrSignatureOrTopic: "FeeChanged"): EventFragment;
+ getEvent(nameOrSignatureOrTopic: "FeeDistributed"): EventFragment;
+ getEvent(nameOrSignatureOrTopic: "FeeHandlerChanged"): EventFragment;
+ getEvent(nameOrSignatureOrTopic: "Paused"): EventFragment;
+ getEvent(nameOrSignatureOrTopic: "ProposalEvent"): EventFragment;
+ getEvent(nameOrSignatureOrTopic: "ProposalVote"): EventFragment;
+ getEvent(nameOrSignatureOrTopic: "RelayerAdded"): EventFragment;
+ getEvent(nameOrSignatureOrTopic: "RelayerRemoved"): EventFragment;
+ getEvent(nameOrSignatureOrTopic: "RelayerThresholdChanged"): EventFragment;
+ getEvent(nameOrSignatureOrTopic: "RoleGranted"): EventFragment;
+ getEvent(nameOrSignatureOrTopic: "RoleRevoked"): EventFragment;
+ getEvent(nameOrSignatureOrTopic: "Unpaused"): EventFragment;
+}
+
+export class Bridge extends Contract {
+ connect(signerOrProvider: Signer | Provider | string): this;
+ attach(addressOrName: string): this;
+ deployed(): Promise;
+
+ listeners, EventArgsObject>(
+ eventFilter?: TypedEventFilter
+ ): Array>;
+ off, EventArgsObject>(
+ eventFilter: TypedEventFilter,
+ listener: TypedListener
+ ): this;
+ on, EventArgsObject>(
+ eventFilter: TypedEventFilter,
+ listener: TypedListener
+ ): this;
+ once, EventArgsObject>(
+ eventFilter: TypedEventFilter,
+ listener: TypedListener
+ ): this;
+ removeListener, EventArgsObject>(
+ eventFilter: TypedEventFilter,
+ listener: TypedListener
+ ): this;
+ removeAllListeners, EventArgsObject>(
+ eventFilter: TypedEventFilter
+ ): this;
+
+ listeners(eventName?: string): Array;
+ off(eventName: string, listener: Listener): this;
+ on(eventName: string, listener: Listener): this;
+ once(eventName: string, listener: Listener): this;
+ removeListener(eventName: string, listener: Listener): this;
+ removeAllListeners(eventName?: string): this;
+
+ queryFilter, EventArgsObject>(
+ event: TypedEventFilter,
+ fromBlockOrBlockhash?: string | number | undefined,
+ toBlock?: string | number | undefined
+ ): Promise>>;
+
+ interface: BridgeInterface;
+
+ functions: {
+ DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<[string]>;
+
+ "DEFAULT_ADMIN_ROLE()"(overrides?: CallOverrides): Promise<[string]>;
+
+ MAX_RELAYERS(overrides?: CallOverrides): Promise<[BigNumber]>;
+
+ "MAX_RELAYERS()"(overrides?: CallOverrides): Promise<[BigNumber]>;
+
+ PERMIT_TYPEHASH(overrides?: CallOverrides): Promise<[string]>;
+
+ "PERMIT_TYPEHASH()"(overrides?: CallOverrides): Promise<[string]>;
+
+ RELAYER_ROLE(overrides?: CallOverrides): Promise<[string]>;
+
+ "RELAYER_ROLE()"(overrides?: CallOverrides): Promise<[string]>;
+
+ _chainId(overrides?: CallOverrides): Promise<[BigNumber]>;
+
+ "_chainId()"(overrides?: CallOverrides): Promise<[BigNumber]>;
+
+ _depositCounts(
+ arg0: BigNumberish,
+ overrides?: CallOverrides
+ ): Promise<[BigNumber]>;
+
+ "_depositCounts(uint8)"(
+ arg0: BigNumberish,
+ overrides?: CallOverrides
+ ): Promise<[BigNumber]>;
+
+ _domainID(overrides?: CallOverrides): Promise<[number]>;
+
+ "_domainID()"(overrides?: CallOverrides): Promise<[number]>;
+
+ _expiry(overrides?: CallOverrides): Promise<[number]>;
+
+ "_expiry()"(overrides?: CallOverrides): Promise<[number]>;
+
+ _fee(overrides?: CallOverrides): Promise<[BigNumber]>;
+
+ "_fee()"(overrides?: CallOverrides): Promise<[BigNumber]>;
+
+ _feeHandler(overrides?: CallOverrides): Promise<[string]>;
+
+ "_feeHandler()"(overrides?: CallOverrides): Promise<[string]>;
+
+ _feeReserve(overrides?: CallOverrides): Promise<[BigNumber]>;
+
+ "_feeReserve()"(overrides?: CallOverrides): Promise<[BigNumber]>;
+
+ _fee_(overrides?: CallOverrides): Promise<[BigNumber]>;
+
+ "_fee_()"(overrides?: CallOverrides): Promise<[BigNumber]>;
+
+ _hasVotedOnProposal(
+ destNonce: BigNumberish,
+ dataHash: BytesLike,
+ relayer: string,
+ overrides?: CallOverrides
+ ): Promise<[boolean]>;
+
+ "_hasVotedOnProposal(uint72,bytes32,address)"(
+ destNonce: BigNumberish,
+ dataHash: BytesLike,
+ relayer: string,
+ overrides?: CallOverrides
+ ): Promise<[boolean]>;
+
+ _relayerThreshold(overrides?: CallOverrides): Promise<[number]>;
+
+ "_relayerThreshold()"(overrides?: CallOverrides): Promise<[number]>;
+
+ _resourceIDToHandlerAddress(
+ arg0: BytesLike,
+ overrides?: CallOverrides
+ ): Promise<[string]>;
+
+ "_resourceIDToHandlerAddress(bytes32)"(
+ arg0: BytesLike,
+ overrides?: CallOverrides
+ ): Promise<[string]>;
+
+ _totalRelayers(overrides?: CallOverrides): Promise<[BigNumber]>;
+
+ "_totalRelayers()"(overrides?: CallOverrides): Promise<[BigNumber]>;
+
+ adminAddRelayer(
+ relayerAddress: string,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminAddRelayer(address)"(
+ relayerAddress: string,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminChangeExpiry(
+ expiry: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminChangeExpiry(uint256)"(
+ expiry: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminChangeRelayerThreshold(
+ newThreshold: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminChangeRelayerThreshold(uint256)"(
+ newThreshold: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminPauseTransfers(
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminPauseTransfers()"(
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminRemoveGenericResource(
+ resourceID: BytesLike,
+ contractAddress: string,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminRemoveGenericResource(bytes32,address)"(
+ resourceID: BytesLike,
+ contractAddress: string,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminRemoveRelayer(
+ relayerAddress: string,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminRemoveRelayer(address)"(
+ relayerAddress: string,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminRemoveResourceId(
+ resourceID: BytesLike,
+ tokenAddress: string,
+ isNative: boolean,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminRemoveResourceId(bytes32,address,bool)"(
+ resourceID: BytesLike,
+ tokenAddress: string,
+ isNative: boolean,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminRemoveSpecialFee(
+ destinationDomainID: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminRemoveSpecialFee(uint8)"(
+ destinationDomainID: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminSetBurnable(
+ handlerAddress: string,
+ tokenAddress: string,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminSetBurnable(address,address)"(
+ handlerAddress: string,
+ tokenAddress: string,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminSetDepositNonce(
+ domainID: BigNumberish,
+ nonce: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminSetDepositNonce(uint8,uint64)"(
+ domainID: BigNumberish,
+ nonce: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminSetDomainId(
+ domainID: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminSetDomainId(uint8)"(
+ domainID: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminSetFee(
+ newFee: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminSetFee(uint256)"(
+ newFee: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminSetForwarder(
+ forwarder: string,
+ valid: boolean,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminSetForwarder(address,bool)"(
+ forwarder: string,
+ valid: boolean,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminSetGenericResource(
+ handlerAddress: string,
+ resourceID: BytesLike,
+ contractAddress: string,
+ depositFunctionSig: BytesLike,
+ depositFunctionDepositorOffset: BigNumberish,
+ executeFunctionSig: BytesLike,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminSetGenericResource(address,bytes32,address,bytes4,uint256,bytes4)"(
+ handlerAddress: string,
+ resourceID: BytesLike,
+ contractAddress: string,
+ depositFunctionSig: BytesLike,
+ depositFunctionDepositorOffset: BigNumberish,
+ executeFunctionSig: BytesLike,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminSetResource(
+ handlerAddress: string,
+ resourceID: BytesLike,
+ tokenAddress: string,
+ isNative: boolean,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminSetResource(address,bytes32,address,bool)"(
+ handlerAddress: string,
+ resourceID: BytesLike,
+ tokenAddress: string,
+ isNative: boolean,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminSetSpecialFee(
+ destinationDomainID: BigNumberish,
+ _specialFee: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminSetSpecialFee(uint8,uint256)"(
+ destinationDomainID: BigNumberish,
+ _specialFee: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminUnpauseTransfers(
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminUnpauseTransfers()"(
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminWithdraw(
+ handlerAddress: string,
+ data: BytesLike,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminWithdraw(address,bytes)"(
+ handlerAddress: string,
+ data: BytesLike,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminWithdrawETH(
+ handlerAddress: string,
+ data: BytesLike,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminWithdrawETH(address,bytes)"(
+ handlerAddress: string,
+ data: BytesLike,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ cancelProposal(
+ domainID: BigNumberish,
+ depositNonce: BigNumberish,
+ dataHash: BytesLike,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "cancelProposal(uint8,uint64,bytes32)"(
+ domainID: BigNumberish,
+ depositNonce: BigNumberish,
+ dataHash: BytesLike,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ checkSignature(
+ domainID: BigNumberish,
+ depositNonce: BigNumberish,
+ resourceID: BytesLike,
+ data: BytesLike,
+ signature: BytesLike,
+ overrides?: CallOverrides
+ ): Promise<[boolean]>;
+
+ "checkSignature(uint8,uint64,bytes32,bytes,bytes)"(
+ domainID: BigNumberish,
+ depositNonce: BigNumberish,
+ resourceID: BytesLike,
+ data: BytesLike,
+ signature: BytesLike,
+ overrides?: CallOverrides
+ ): Promise<[boolean]>;
+
+ deposit(
+ destinationDomainID: BigNumberish,
+ resourceID: BytesLike,
+ depositData: BytesLike,
+ feeData: BytesLike,
+ overrides?: PayableOverrides & { from?: string | Promise }
+ ): Promise;
+
+ "deposit(uint8,bytes32,bytes,bytes)"(
+ destinationDomainID: BigNumberish,
+ resourceID: BytesLike,
+ depositData: BytesLike,
+ feeData: BytesLike,
+ overrides?: PayableOverrides & { from?: string | Promise }
+ ): Promise;
+
+ executeProposal(
+ domainID: BigNumberish,
+ depositNonce: BigNumberish,
+ data: BytesLike,
+ resourceID: BytesLike,
+ revertOnFail: boolean,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "executeProposal(uint8,uint64,bytes,bytes32,bool)"(
+ domainID: BigNumberish,
+ depositNonce: BigNumberish,
+ data: BytesLike,
+ resourceID: BytesLike,
+ revertOnFail: boolean,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ getFee(
+ destinationDomainID: BigNumberish,
+ overrides?: CallOverrides
+ ): Promise<[BigNumber]>;
+
+ "getFee(uint8)"(
+ destinationDomainID: BigNumberish,
+ overrides?: CallOverrides
+ ): Promise<[BigNumber]>;
+
+ getProposal(
+ originDomainID: BigNumberish,
+ depositNonce: BigNumberish,
+ resourceID: BytesLike,
+ data: BytesLike,
+ overrides?: CallOverrides
+ ): Promise<
+ [
+ [number, BigNumber, number, number] & {
+ _status: number;
+ _yesVotes: BigNumber;
+ _yesVotesTotal: number;
+ _proposedBlock: number;
+ }
+ ]
+ >;
+
+ "getProposal(uint8,uint64,bytes32,bytes)"(
+ originDomainID: BigNumberish,
+ depositNonce: BigNumberish,
+ resourceID: BytesLike,
+ data: BytesLike,
+ overrides?: CallOverrides
+ ): Promise<
+ [
+ [number, BigNumber, number, number] & {
+ _status: number;
+ _yesVotes: BigNumber;
+ _yesVotesTotal: number;
+ _proposedBlock: number;
+ }
+ ]
+ >;
+
+ getRoleAdmin(role: BytesLike, overrides?: CallOverrides): Promise<[string]>;
+
+ "getRoleAdmin(bytes32)"(
+ role: BytesLike,
+ overrides?: CallOverrides
+ ): Promise<[string]>;
+
+ getRoleMember(
+ role: BytesLike,
+ index: BigNumberish,
+ overrides?: CallOverrides
+ ): Promise<[string]>;
+
+ "getRoleMember(bytes32,uint256)"(
+ role: BytesLike,
+ index: BigNumberish,
+ overrides?: CallOverrides
+ ): Promise<[string]>;
+
+ getRoleMemberCount(
+ role: BytesLike,
+ overrides?: CallOverrides
+ ): Promise<[BigNumber]>;
+
+ "getRoleMemberCount(bytes32)"(
+ role: BytesLike,
+ overrides?: CallOverrides
+ ): Promise<[BigNumber]>;
+
+ getRoleMemberIndex(
+ role: BytesLike,
+ account: string,
+ overrides?: CallOverrides
+ ): Promise<[BigNumber]>;
+
+ "getRoleMemberIndex(bytes32,address)"(
+ role: BytesLike,
+ account: string,
+ overrides?: CallOverrides
+ ): Promise<[BigNumber]>;
+
+ grantRole(
+ role: BytesLike,
+ account: string,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "grantRole(bytes32,address)"(
+ role: BytesLike,
+ account: string,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ hasRole(
+ role: BytesLike,
+ account: string,
+ overrides?: CallOverrides
+ ): Promise<[boolean]>;
+
+ "hasRole(bytes32,address)"(
+ role: BytesLike,
+ account: string,
+ overrides?: CallOverrides
+ ): Promise<[boolean]>;
+
+ isRelayer(relayer: string, overrides?: CallOverrides): Promise<[boolean]>;
+
+ "isRelayer(address)"(
+ relayer: string,
+ overrides?: CallOverrides
+ ): Promise<[boolean]>;
+
+ isValidForwarder(
+ arg0: string,
+ overrides?: CallOverrides
+ ): Promise<[boolean]>;
+
+ "isValidForwarder(address)"(
+ arg0: string,
+ overrides?: CallOverrides
+ ): Promise<[boolean]>;
+
+ paused(overrides?: CallOverrides): Promise<[boolean]>;
+
+ "paused()"(overrides?: CallOverrides): Promise<[boolean]>;
+
+ renounceAdmin(
+ newAdmin: string,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "renounceAdmin(address)"(
+ newAdmin: string,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ renounceRole(
+ role: BytesLike,
+ account: string,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "renounceRole(bytes32,address)"(
+ role: BytesLike,
+ account: string,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ revokeRole(
+ role: BytesLike,
+ account: string,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "revokeRole(bytes32,address)"(
+ role: BytesLike,
+ account: string,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ special(arg0: BigNumberish, overrides?: CallOverrides): Promise<[boolean]>;
+
+ "special(uint8)"(
+ arg0: BigNumberish,
+ overrides?: CallOverrides
+ ): Promise<[boolean]>;
+
+ specialFee(
+ arg0: BigNumberish,
+ overrides?: CallOverrides
+ ): Promise<[BigNumber]>;
+
+ "specialFee(uint8)"(
+ arg0: BigNumberish,
+ overrides?: CallOverrides
+ ): Promise<[BigNumber]>;
+
+ transferFee(
+ addrs: string[],
+ amounts: BigNumberish[],
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "transferFee(address[],uint256[])"(
+ addrs: string[],
+ amounts: BigNumberish[],
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ voteProposal(
+ domainID: BigNumberish,
+ depositNonce: BigNumberish,
+ resourceID: BytesLike,
+ data: BytesLike,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "voteProposal(uint8,uint64,bytes32,bytes)"(
+ domainID: BigNumberish,
+ depositNonce: BigNumberish,
+ resourceID: BytesLike,
+ data: BytesLike,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ voteProposals(
+ domainID: BigNumberish,
+ depositNonce: BigNumberish,
+ resourceID: BytesLike,
+ data: BytesLike,
+ signatures: BytesLike[],
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "voteProposals(uint8,uint64,bytes32,bytes,bytes[])"(
+ domainID: BigNumberish,
+ depositNonce: BigNumberish,
+ resourceID: BytesLike,
+ data: BytesLike,
+ signatures: BytesLike[],
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+ };
+
+ DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise;
+
+ "DEFAULT_ADMIN_ROLE()"(overrides?: CallOverrides): Promise;
+
+ MAX_RELAYERS(overrides?: CallOverrides): Promise;
+
+ "MAX_RELAYERS()"(overrides?: CallOverrides): Promise;
+
+ PERMIT_TYPEHASH(overrides?: CallOverrides): Promise;
+
+ "PERMIT_TYPEHASH()"(overrides?: CallOverrides): Promise;
+
+ RELAYER_ROLE(overrides?: CallOverrides): Promise;
+
+ "RELAYER_ROLE()"(overrides?: CallOverrides): Promise;
+
+ _chainId(overrides?: CallOverrides): Promise;
+
+ "_chainId()"(overrides?: CallOverrides): Promise;
+
+ _depositCounts(
+ arg0: BigNumberish,
+ overrides?: CallOverrides
+ ): Promise;
+
+ "_depositCounts(uint8)"(
+ arg0: BigNumberish,
+ overrides?: CallOverrides
+ ): Promise;
+
+ _domainID(overrides?: CallOverrides): Promise;
+
+ "_domainID()"(overrides?: CallOverrides): Promise;
+
+ _expiry(overrides?: CallOverrides): Promise;
+
+ "_expiry()"(overrides?: CallOverrides): Promise;
+
+ _fee(overrides?: CallOverrides): Promise;
+
+ "_fee()"(overrides?: CallOverrides): Promise;
+
+ _feeHandler(overrides?: CallOverrides): Promise;
+
+ "_feeHandler()"(overrides?: CallOverrides): Promise;
+
+ _feeReserve(overrides?: CallOverrides): Promise;
+
+ "_feeReserve()"(overrides?: CallOverrides): Promise;
+
+ _fee_(overrides?: CallOverrides): Promise;
+
+ "_fee_()"(overrides?: CallOverrides): Promise;
+
+ _hasVotedOnProposal(
+ destNonce: BigNumberish,
+ dataHash: BytesLike,
+ relayer: string,
+ overrides?: CallOverrides
+ ): Promise;
+
+ "_hasVotedOnProposal(uint72,bytes32,address)"(
+ destNonce: BigNumberish,
+ dataHash: BytesLike,
+ relayer: string,
+ overrides?: CallOverrides
+ ): Promise;
+
+ _relayerThreshold(overrides?: CallOverrides): Promise;
+
+ "_relayerThreshold()"(overrides?: CallOverrides): Promise;
+
+ _resourceIDToHandlerAddress(
+ arg0: BytesLike,
+ overrides?: CallOverrides
+ ): Promise;
+
+ "_resourceIDToHandlerAddress(bytes32)"(
+ arg0: BytesLike,
+ overrides?: CallOverrides
+ ): Promise;
+
+ _totalRelayers(overrides?: CallOverrides): Promise;
+
+ "_totalRelayers()"(overrides?: CallOverrides): Promise;
+
+ adminAddRelayer(
+ relayerAddress: string,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminAddRelayer(address)"(
+ relayerAddress: string,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminChangeExpiry(
+ expiry: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminChangeExpiry(uint256)"(
+ expiry: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminChangeRelayerThreshold(
+ newThreshold: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminChangeRelayerThreshold(uint256)"(
+ newThreshold: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminPauseTransfers(
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminPauseTransfers()"(
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminRemoveGenericResource(
+ resourceID: BytesLike,
+ contractAddress: string,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminRemoveGenericResource(bytes32,address)"(
+ resourceID: BytesLike,
+ contractAddress: string,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminRemoveRelayer(
+ relayerAddress: string,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminRemoveRelayer(address)"(
+ relayerAddress: string,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminRemoveResourceId(
+ resourceID: BytesLike,
+ tokenAddress: string,
+ isNative: boolean,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminRemoveResourceId(bytes32,address,bool)"(
+ resourceID: BytesLike,
+ tokenAddress: string,
+ isNative: boolean,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminRemoveSpecialFee(
+ destinationDomainID: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminRemoveSpecialFee(uint8)"(
+ destinationDomainID: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminSetBurnable(
+ handlerAddress: string,
+ tokenAddress: string,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminSetBurnable(address,address)"(
+ handlerAddress: string,
+ tokenAddress: string,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminSetDepositNonce(
+ domainID: BigNumberish,
+ nonce: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminSetDepositNonce(uint8,uint64)"(
+ domainID: BigNumberish,
+ nonce: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminSetDomainId(
+ domainID: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminSetDomainId(uint8)"(
+ domainID: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminSetFee(
+ newFee: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminSetFee(uint256)"(
+ newFee: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminSetForwarder(
+ forwarder: string,
+ valid: boolean,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminSetForwarder(address,bool)"(
+ forwarder: string,
+ valid: boolean,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminSetGenericResource(
+ handlerAddress: string,
+ resourceID: BytesLike,
+ contractAddress: string,
+ depositFunctionSig: BytesLike,
+ depositFunctionDepositorOffset: BigNumberish,
+ executeFunctionSig: BytesLike,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminSetGenericResource(address,bytes32,address,bytes4,uint256,bytes4)"(
+ handlerAddress: string,
+ resourceID: BytesLike,
+ contractAddress: string,
+ depositFunctionSig: BytesLike,
+ depositFunctionDepositorOffset: BigNumberish,
+ executeFunctionSig: BytesLike,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminSetResource(
+ handlerAddress: string,
+ resourceID: BytesLike,
+ tokenAddress: string,
+ isNative: boolean,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminSetResource(address,bytes32,address,bool)"(
+ handlerAddress: string,
+ resourceID: BytesLike,
+ tokenAddress: string,
+ isNative: boolean,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminSetSpecialFee(
+ destinationDomainID: BigNumberish,
+ _specialFee: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminSetSpecialFee(uint8,uint256)"(
+ destinationDomainID: BigNumberish,
+ _specialFee: BigNumberish,
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ adminUnpauseTransfers(
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise;
+
+ "adminUnpauseTransfers()"(
+ overrides?: Overrides & { from?: string | Promise }
+ ): Promise