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]?.symbol || t} +
+ ), + })) || [] + } + /> +
-
-
- -
-
-
- { - setPreflightDetails({ - ...preflightDetails, - token: tokenAddress, - receiver: "", - tokenAmount: 0, - tokenSymbol: "", - }); +
+ ({ - value: t, - label: ( -
- {tokens[t]?.imageUri && ( - {tokens[t]?.symbol} - )} - {tokens[t]?.symbol || t} -
- ), - })) || [] + tokenSelectorKey="token" + tokens={tokens} + disabled={ + !destinationChain || + !preflightDetails.token || + preflightDetails.token === "" } + name="tokenAmount" + label="I want to send" /> -
+
{ Start transfer
-
- 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; + + 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; + + "checkSignature(uint8,uint64,bytes32,bytes,bytes)"( + domainID: BigNumberish, + depositNonce: BigNumberish, + resourceID: BytesLike, + data: BytesLike, + signature: BytesLike, + overrides?: CallOverrides + ): Promise; + + 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; + + "getFee(uint8)"( + destinationDomainID: BigNumberish, + overrides?: CallOverrides + ): Promise; + + 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; + + "getRoleAdmin(bytes32)"( + role: BytesLike, + overrides?: CallOverrides + ): Promise; + + getRoleMember( + role: BytesLike, + index: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "getRoleMember(bytes32,uint256)"( + role: BytesLike, + index: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getRoleMemberCount( + role: BytesLike, + overrides?: CallOverrides + ): Promise; + + "getRoleMemberCount(bytes32)"( + role: BytesLike, + overrides?: CallOverrides + ): Promise; + + getRoleMemberIndex( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise; + + "getRoleMemberIndex(bytes32,address)"( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise; + + 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; + + "hasRole(bytes32,address)"( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise; + + isRelayer(relayer: string, overrides?: CallOverrides): Promise; + + "isRelayer(address)"( + relayer: string, + overrides?: CallOverrides + ): Promise; + + isValidForwarder(arg0: string, overrides?: CallOverrides): Promise; + + "isValidForwarder(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + paused(overrides?: CallOverrides): Promise; + + "paused()"(overrides?: CallOverrides): Promise; + + 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; + + "special(uint8)"( + arg0: BigNumberish, + overrides?: CallOverrides + ): Promise; + + specialFee(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + "specialFee(uint8)"( + arg0: BigNumberish, + overrides?: CallOverrides + ): Promise; + + 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; + + callStatic: { + 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?: CallOverrides + ): Promise; + + "adminAddRelayer(address)"( + relayerAddress: string, + overrides?: CallOverrides + ): Promise; + + adminChangeExpiry( + expiry: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "adminChangeExpiry(uint256)"( + expiry: BigNumberish, + overrides?: CallOverrides + ): Promise; + + adminChangeRelayerThreshold( + newThreshold: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "adminChangeRelayerThreshold(uint256)"( + newThreshold: BigNumberish, + overrides?: CallOverrides + ): Promise; + + adminPauseTransfers(overrides?: CallOverrides): Promise; + + "adminPauseTransfers()"(overrides?: CallOverrides): Promise; + + adminRemoveGenericResource( + resourceID: BytesLike, + contractAddress: string, + overrides?: CallOverrides + ): Promise; + + "adminRemoveGenericResource(bytes32,address)"( + resourceID: BytesLike, + contractAddress: string, + overrides?: CallOverrides + ): Promise; + + adminRemoveRelayer( + relayerAddress: string, + overrides?: CallOverrides + ): Promise; + + "adminRemoveRelayer(address)"( + relayerAddress: string, + overrides?: CallOverrides + ): Promise; + + adminRemoveResourceId( + resourceID: BytesLike, + tokenAddress: string, + isNative: boolean, + overrides?: CallOverrides + ): Promise; + + "adminRemoveResourceId(bytes32,address,bool)"( + resourceID: BytesLike, + tokenAddress: string, + isNative: boolean, + overrides?: CallOverrides + ): Promise; + + adminRemoveSpecialFee( + destinationDomainID: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "adminRemoveSpecialFee(uint8)"( + destinationDomainID: BigNumberish, + overrides?: CallOverrides + ): Promise; + + adminSetBurnable( + handlerAddress: string, + tokenAddress: string, + overrides?: CallOverrides + ): Promise; + + "adminSetBurnable(address,address)"( + handlerAddress: string, + tokenAddress: string, + overrides?: CallOverrides + ): Promise; + + adminSetDepositNonce( + domainID: BigNumberish, + nonce: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "adminSetDepositNonce(uint8,uint64)"( + domainID: BigNumberish, + nonce: BigNumberish, + overrides?: CallOverrides + ): Promise; + + adminSetDomainId( + domainID: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "adminSetDomainId(uint8)"( + domainID: BigNumberish, + overrides?: CallOverrides + ): Promise; + + adminSetFee(newFee: BigNumberish, overrides?: CallOverrides): Promise; + + "adminSetFee(uint256)"( + newFee: BigNumberish, + overrides?: CallOverrides + ): Promise; + + adminSetForwarder( + forwarder: string, + valid: boolean, + overrides?: CallOverrides + ): Promise; + + "adminSetForwarder(address,bool)"( + forwarder: string, + valid: boolean, + overrides?: CallOverrides + ): Promise; + + adminSetGenericResource( + handlerAddress: string, + resourceID: BytesLike, + contractAddress: string, + depositFunctionSig: BytesLike, + depositFunctionDepositorOffset: BigNumberish, + executeFunctionSig: BytesLike, + overrides?: CallOverrides + ): Promise; + + "adminSetGenericResource(address,bytes32,address,bytes4,uint256,bytes4)"( + handlerAddress: string, + resourceID: BytesLike, + contractAddress: string, + depositFunctionSig: BytesLike, + depositFunctionDepositorOffset: BigNumberish, + executeFunctionSig: BytesLike, + overrides?: CallOverrides + ): Promise; + + adminSetResource( + handlerAddress: string, + resourceID: BytesLike, + tokenAddress: string, + isNative: boolean, + overrides?: CallOverrides + ): Promise; + + "adminSetResource(address,bytes32,address,bool)"( + handlerAddress: string, + resourceID: BytesLike, + tokenAddress: string, + isNative: boolean, + overrides?: CallOverrides + ): Promise; + + adminSetSpecialFee( + destinationDomainID: BigNumberish, + _specialFee: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "adminSetSpecialFee(uint8,uint256)"( + destinationDomainID: BigNumberish, + _specialFee: BigNumberish, + overrides?: CallOverrides + ): Promise; + + adminUnpauseTransfers(overrides?: CallOverrides): Promise; + + "adminUnpauseTransfers()"(overrides?: CallOverrides): Promise; + + adminWithdraw( + handlerAddress: string, + data: BytesLike, + overrides?: CallOverrides + ): Promise; + + "adminWithdraw(address,bytes)"( + handlerAddress: string, + data: BytesLike, + overrides?: CallOverrides + ): Promise; + + adminWithdrawETH( + handlerAddress: string, + data: BytesLike, + overrides?: CallOverrides + ): Promise; + + "adminWithdrawETH(address,bytes)"( + handlerAddress: string, + data: BytesLike, + overrides?: CallOverrides + ): Promise; + + cancelProposal( + domainID: BigNumberish, + depositNonce: BigNumberish, + dataHash: BytesLike, + overrides?: CallOverrides + ): Promise; + + "cancelProposal(uint8,uint64,bytes32)"( + domainID: BigNumberish, + depositNonce: BigNumberish, + dataHash: BytesLike, + overrides?: CallOverrides + ): Promise; + + checkSignature( + domainID: BigNumberish, + depositNonce: BigNumberish, + resourceID: BytesLike, + data: BytesLike, + signature: BytesLike, + overrides?: CallOverrides + ): Promise; + + "checkSignature(uint8,uint64,bytes32,bytes,bytes)"( + domainID: BigNumberish, + depositNonce: BigNumberish, + resourceID: BytesLike, + data: BytesLike, + signature: BytesLike, + overrides?: CallOverrides + ): Promise; + + deposit( + destinationDomainID: BigNumberish, + resourceID: BytesLike, + depositData: BytesLike, + feeData: BytesLike, + overrides?: CallOverrides + ): Promise; + + "deposit(uint8,bytes32,bytes,bytes)"( + destinationDomainID: BigNumberish, + resourceID: BytesLike, + depositData: BytesLike, + feeData: BytesLike, + overrides?: CallOverrides + ): Promise; + + executeProposal( + domainID: BigNumberish, + depositNonce: BigNumberish, + data: BytesLike, + resourceID: BytesLike, + revertOnFail: boolean, + overrides?: CallOverrides + ): Promise; + + "executeProposal(uint8,uint64,bytes,bytes32,bool)"( + domainID: BigNumberish, + depositNonce: BigNumberish, + data: BytesLike, + resourceID: BytesLike, + revertOnFail: boolean, + overrides?: CallOverrides + ): Promise; + + getFee( + destinationDomainID: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "getFee(uint8)"( + destinationDomainID: BigNumberish, + overrides?: CallOverrides + ): Promise; + + 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; + + "getRoleAdmin(bytes32)"( + role: BytesLike, + overrides?: CallOverrides + ): Promise; + + getRoleMember( + role: BytesLike, + index: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "getRoleMember(bytes32,uint256)"( + role: BytesLike, + index: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getRoleMemberCount( + role: BytesLike, + overrides?: CallOverrides + ): Promise; + + "getRoleMemberCount(bytes32)"( + role: BytesLike, + overrides?: CallOverrides + ): Promise; + + getRoleMemberIndex( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise; + + "getRoleMemberIndex(bytes32,address)"( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise; + + grantRole( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise; + + "grantRole(bytes32,address)"( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise; + + hasRole( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise; + + "hasRole(bytes32,address)"( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise; + + isRelayer(relayer: string, overrides?: CallOverrides): Promise; + + "isRelayer(address)"( + relayer: string, + overrides?: CallOverrides + ): Promise; + + isValidForwarder(arg0: string, overrides?: CallOverrides): Promise; + + "isValidForwarder(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + paused(overrides?: CallOverrides): Promise; + + "paused()"(overrides?: CallOverrides): Promise; + + renounceAdmin(newAdmin: string, overrides?: CallOverrides): Promise; + + "renounceAdmin(address)"( + newAdmin: string, + overrides?: CallOverrides + ): Promise; + + renounceRole( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise; + + "renounceRole(bytes32,address)"( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise; + + revokeRole( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise; + + "revokeRole(bytes32,address)"( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise; + + special(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + "special(uint8)"( + arg0: BigNumberish, + overrides?: CallOverrides + ): Promise; + + specialFee( + arg0: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "specialFee(uint8)"( + arg0: BigNumberish, + overrides?: CallOverrides + ): Promise; + + transferFee( + addrs: string[], + amounts: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + "transferFee(address[],uint256[])"( + addrs: string[], + amounts: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + voteProposal( + domainID: BigNumberish, + depositNonce: BigNumberish, + resourceID: BytesLike, + data: BytesLike, + overrides?: CallOverrides + ): Promise; + + "voteProposal(uint8,uint64,bytes32,bytes)"( + domainID: BigNumberish, + depositNonce: BigNumberish, + resourceID: BytesLike, + data: BytesLike, + overrides?: CallOverrides + ): Promise; + + voteProposals( + domainID: BigNumberish, + depositNonce: BigNumberish, + resourceID: BytesLike, + data: BytesLike, + signatures: BytesLike[], + overrides?: CallOverrides + ): Promise; + + "voteProposals(uint8,uint64,bytes32,bytes,bytes[])"( + domainID: BigNumberish, + depositNonce: BigNumberish, + resourceID: BytesLike, + data: BytesLike, + signatures: BytesLike[], + overrides?: CallOverrides + ): Promise; + }; + + filters: { + Deposit( + destinationDomainID: null, + resourceID: null, + depositNonce: null, + user: string | null, + data: null, + handlerResponse: null + ): TypedEventFilter< + [number, string, BigNumber, string, string, string], + { + destinationDomainID: number; + resourceID: string; + depositNonce: BigNumber; + user: string; + data: string; + handlerResponse: string; + } + >; + + FailedHandlerExecution( + lowLevelData: null + ): TypedEventFilter<[string], { lowLevelData: string }>; + + FeeChanged( + newFee: null + ): TypedEventFilter<[BigNumber], { newFee: BigNumber }>; + + FeeDistributed( + tokenAddress: null, + recipient: null, + amount: null + ): TypedEventFilter< + [string, string, BigNumber], + { tokenAddress: string; recipient: string; amount: BigNumber } + >; + + FeeHandlerChanged( + newFeeHandler: null + ): TypedEventFilter<[string], { newFeeHandler: string }>; + + Paused(account: null): TypedEventFilter<[string], { account: string }>; + + ProposalEvent( + originDomainID: null, + depositNonce: null, + status: null, + dataHash: null + ): TypedEventFilter< + [number, BigNumber, number, string], + { + originDomainID: number; + depositNonce: BigNumber; + status: number; + dataHash: string; + } + >; + + ProposalVote( + originDomainID: null, + depositNonce: null, + status: null, + dataHash: null + ): TypedEventFilter< + [number, BigNumber, number, string], + { + originDomainID: number; + depositNonce: BigNumber; + status: number; + dataHash: string; + } + >; + + RelayerAdded( + relayer: null + ): TypedEventFilter<[string], { relayer: string }>; + + RelayerRemoved( + relayer: null + ): TypedEventFilter<[string], { relayer: string }>; + + RelayerThresholdChanged( + newThreshold: null + ): TypedEventFilter<[BigNumber], { newThreshold: BigNumber }>; + + RoleGranted( + role: BytesLike | null, + account: string | null, + sender: string | null + ): TypedEventFilter< + [string, string, string], + { role: string; account: string; sender: string } + >; + + RoleRevoked( + role: BytesLike | null, + account: string | null, + sender: string | null + ): TypedEventFilter< + [string, string, string], + { role: string; account: string; sender: string } + >; + + Unpaused(account: null): TypedEventFilter<[string], { account: string }>; + }; + + estimateGas: { + 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; + + 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; + + "checkSignature(uint8,uint64,bytes32,bytes,bytes)"( + domainID: BigNumberish, + depositNonce: BigNumberish, + resourceID: BytesLike, + data: BytesLike, + signature: BytesLike, + overrides?: CallOverrides + ): Promise; + + 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; + + "getFee(uint8)"( + destinationDomainID: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getProposal( + originDomainID: BigNumberish, + depositNonce: BigNumberish, + resourceID: BytesLike, + data: BytesLike, + overrides?: CallOverrides + ): Promise; + + "getProposal(uint8,uint64,bytes32,bytes)"( + originDomainID: BigNumberish, + depositNonce: BigNumberish, + resourceID: BytesLike, + data: BytesLike, + overrides?: CallOverrides + ): Promise; + + getRoleAdmin( + role: BytesLike, + overrides?: CallOverrides + ): Promise; + + "getRoleAdmin(bytes32)"( + role: BytesLike, + overrides?: CallOverrides + ): Promise; + + getRoleMember( + role: BytesLike, + index: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "getRoleMember(bytes32,uint256)"( + role: BytesLike, + index: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getRoleMemberCount( + role: BytesLike, + overrides?: CallOverrides + ): Promise; + + "getRoleMemberCount(bytes32)"( + role: BytesLike, + overrides?: CallOverrides + ): Promise; + + getRoleMemberIndex( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise; + + "getRoleMemberIndex(bytes32,address)"( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise; + + 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; + + "hasRole(bytes32,address)"( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise; + + isRelayer(relayer: string, overrides?: CallOverrides): Promise; + + "isRelayer(address)"( + relayer: string, + overrides?: CallOverrides + ): Promise; + + isValidForwarder( + arg0: string, + overrides?: CallOverrides + ): Promise; + + "isValidForwarder(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + paused(overrides?: CallOverrides): Promise; + + "paused()"(overrides?: CallOverrides): Promise; + + 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; + + "special(uint8)"( + arg0: BigNumberish, + overrides?: CallOverrides + ): Promise; + + specialFee( + arg0: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "specialFee(uint8)"( + arg0: BigNumberish, + overrides?: CallOverrides + ): Promise; + + 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; + }; + + populateTransaction: { + 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; + + 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; + + "checkSignature(uint8,uint64,bytes32,bytes,bytes)"( + domainID: BigNumberish, + depositNonce: BigNumberish, + resourceID: BytesLike, + data: BytesLike, + signature: BytesLike, + overrides?: CallOverrides + ): Promise; + + 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; + + "getFee(uint8)"( + destinationDomainID: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getProposal( + originDomainID: BigNumberish, + depositNonce: BigNumberish, + resourceID: BytesLike, + data: BytesLike, + overrides?: CallOverrides + ): Promise; + + "getProposal(uint8,uint64,bytes32,bytes)"( + originDomainID: BigNumberish, + depositNonce: BigNumberish, + resourceID: BytesLike, + data: BytesLike, + overrides?: CallOverrides + ): Promise; + + getRoleAdmin( + role: BytesLike, + overrides?: CallOverrides + ): Promise; + + "getRoleAdmin(bytes32)"( + role: BytesLike, + overrides?: CallOverrides + ): Promise; + + getRoleMember( + role: BytesLike, + index: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "getRoleMember(bytes32,uint256)"( + role: BytesLike, + index: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getRoleMemberCount( + role: BytesLike, + overrides?: CallOverrides + ): Promise; + + "getRoleMemberCount(bytes32)"( + role: BytesLike, + overrides?: CallOverrides + ): Promise; + + getRoleMemberIndex( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise; + + "getRoleMemberIndex(bytes32,address)"( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise; + + 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; + + "hasRole(bytes32,address)"( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise; + + isRelayer( + relayer: string, + overrides?: CallOverrides + ): Promise; + + "isRelayer(address)"( + relayer: string, + overrides?: CallOverrides + ): Promise; + + isValidForwarder( + arg0: string, + overrides?: CallOverrides + ): Promise; + + "isValidForwarder(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + paused(overrides?: CallOverrides): Promise; + + "paused()"(overrides?: CallOverrides): Promise; + + 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; + + "special(uint8)"( + arg0: BigNumberish, + overrides?: CallOverrides + ): Promise; + + specialFee( + arg0: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "specialFee(uint8)"( + arg0: BigNumberish, + overrides?: CallOverrides + ): Promise; + + 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; + }; +} diff --git a/src/Contracts/BridgeFactory.ts b/src/Contracts/BridgeFactory.ts new file mode 100644 index 00000000..153fe581 --- /dev/null +++ b/src/Contracts/BridgeFactory.ts @@ -0,0 +1,1463 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer } from "ethers"; +import { Provider } from "@ethersproject/providers"; + +import type { Bridge } from "./Bridge"; + +export class BridgeFactory { + static connect(address: string, signerOrProvider: Signer | Provider): Bridge { + return new Contract(address, _abi, signerOrProvider) as Bridge; + } +} + +const _abi = [ + { + inputs: [ + { + internalType: "uint8", + name: "domainID", + type: "uint8", + }, + { + internalType: "address[]", + name: "initialRelayers", + type: "address[]", + }, + { + internalType: "uint256", + name: "initialRelayerThreshold", + type: "uint256", + }, + { + internalType: "uint256", + name: "expiry", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [ + { + internalType: "uint256", + name: "msgValue", + type: "uint256", + }, + { + internalType: "uint256", + name: "fee", + type: "uint256", + }, + ], + name: "IncorrectFeeSupplied", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "signer", + type: "address", + }, + { + internalType: "uint256", + name: "index", + type: "uint256", + }, + ], + name: "InvalidSignature", + type: "error", + }, + { + inputs: [], + name: "ResourceIDNotMappedToHandler", + type: "error", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "destinationDomainID", + type: "uint8", + }, + { + indexed: false, + internalType: "bytes32", + name: "resourceID", + type: "bytes32", + }, + { + indexed: false, + internalType: "uint64", + name: "depositNonce", + type: "uint64", + }, + { + indexed: true, + internalType: "address", + name: "user", + type: "address", + }, + { + indexed: false, + internalType: "bytes", + name: "data", + type: "bytes", + }, + { + indexed: false, + internalType: "bytes", + name: "handlerResponse", + type: "bytes", + }, + ], + name: "Deposit", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "bytes", + name: "lowLevelData", + type: "bytes", + }, + ], + name: "FailedHandlerExecution", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "newFee", + type: "uint256", + }, + ], + name: "FeeChanged", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "tokenAddress", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "recipient", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "FeeDistributed", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "newFeeHandler", + type: "address", + }, + ], + name: "FeeHandlerChanged", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "Paused", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "originDomainID", + type: "uint8", + }, + { + indexed: false, + internalType: "uint64", + name: "depositNonce", + type: "uint64", + }, + { + indexed: false, + internalType: "enum IBridge.ProposalStatus", + name: "status", + type: "uint8", + }, + { + indexed: false, + internalType: "bytes32", + name: "dataHash", + type: "bytes32", + }, + ], + name: "ProposalEvent", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "originDomainID", + type: "uint8", + }, + { + indexed: false, + internalType: "uint64", + name: "depositNonce", + type: "uint64", + }, + { + indexed: false, + internalType: "enum IBridge.ProposalStatus", + name: "status", + type: "uint8", + }, + { + indexed: false, + internalType: "bytes32", + name: "dataHash", + type: "bytes32", + }, + ], + name: "ProposalVote", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "relayer", + type: "address", + }, + ], + name: "RelayerAdded", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "relayer", + type: "address", + }, + ], + name: "RelayerRemoved", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "newThreshold", + type: "uint256", + }, + ], + name: "RelayerThresholdChanged", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + indexed: true, + internalType: "address", + name: "account", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "RoleGranted", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + indexed: true, + internalType: "address", + name: "account", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "RoleRevoked", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "Unpaused", + type: "event", + }, + { + inputs: [], + name: "DEFAULT_ADMIN_ROLE", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "MAX_RELAYERS", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "PERMIT_TYPEHASH", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "RELAYER_ROLE", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "_chainId", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + name: "_depositCounts", + outputs: [ + { + internalType: "uint64", + name: "", + type: "uint64", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "_domainID", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "_expiry", + outputs: [ + { + internalType: "uint40", + name: "", + type: "uint40", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "_fee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "_feeHandler", + outputs: [ + { + internalType: "contract IFeeHandler", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "_feeReserve", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "_fee_", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint72", + name: "destNonce", + type: "uint72", + }, + { + internalType: "bytes32", + name: "dataHash", + type: "bytes32", + }, + { + internalType: "address", + name: "relayer", + type: "address", + }, + ], + name: "_hasVotedOnProposal", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "_relayerThreshold", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + name: "_resourceIDToHandlerAddress", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "_totalRelayers", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayerAddress", + type: "address", + }, + ], + name: "adminAddRelayer", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "expiry", + type: "uint256", + }, + ], + name: "adminChangeExpiry", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "newThreshold", + type: "uint256", + }, + ], + name: "adminChangeRelayerThreshold", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "adminPauseTransfers", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "resourceID", + type: "bytes32", + }, + { + internalType: "address", + name: "contractAddress", + type: "address", + }, + ], + name: "adminRemoveGenericResource", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayerAddress", + type: "address", + }, + ], + name: "adminRemoveRelayer", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "resourceID", + type: "bytes32", + }, + { + internalType: "address", + name: "tokenAddress", + type: "address", + }, + { + internalType: "bool", + name: "isNative", + type: "bool", + }, + ], + name: "adminRemoveResourceId", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint8", + name: "destinationDomainID", + type: "uint8", + }, + ], + name: "adminRemoveSpecialFee", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "handlerAddress", + type: "address", + }, + { + internalType: "address", + name: "tokenAddress", + type: "address", + }, + ], + name: "adminSetBurnable", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint8", + name: "domainID", + type: "uint8", + }, + { + internalType: "uint64", + name: "nonce", + type: "uint64", + }, + ], + name: "adminSetDepositNonce", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint8", + name: "domainID", + type: "uint8", + }, + ], + name: "adminSetDomainId", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "newFee", + type: "uint256", + }, + ], + name: "adminSetFee", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "forwarder", + type: "address", + }, + { + internalType: "bool", + name: "valid", + type: "bool", + }, + ], + name: "adminSetForwarder", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "handlerAddress", + type: "address", + }, + { + internalType: "bytes32", + name: "resourceID", + type: "bytes32", + }, + { + internalType: "address", + name: "contractAddress", + type: "address", + }, + { + internalType: "bytes4", + name: "depositFunctionSig", + type: "bytes4", + }, + { + internalType: "uint256", + name: "depositFunctionDepositorOffset", + type: "uint256", + }, + { + internalType: "bytes4", + name: "executeFunctionSig", + type: "bytes4", + }, + ], + name: "adminSetGenericResource", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "handlerAddress", + type: "address", + }, + { + internalType: "bytes32", + name: "resourceID", + type: "bytes32", + }, + { + internalType: "address", + name: "tokenAddress", + type: "address", + }, + { + internalType: "bool", + name: "isNative", + type: "bool", + }, + ], + name: "adminSetResource", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint8", + name: "destinationDomainID", + type: "uint8", + }, + { + internalType: "uint256", + name: "_specialFee", + type: "uint256", + }, + ], + name: "adminSetSpecialFee", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "adminUnpauseTransfers", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "handlerAddress", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "adminWithdraw", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "handlerAddress", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "adminWithdrawETH", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint8", + name: "domainID", + type: "uint8", + }, + { + internalType: "uint64", + name: "depositNonce", + type: "uint64", + }, + { + internalType: "bytes32", + name: "dataHash", + type: "bytes32", + }, + ], + name: "cancelProposal", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint8", + name: "domainID", + type: "uint8", + }, + { + internalType: "uint64", + name: "depositNonce", + type: "uint64", + }, + { + internalType: "bytes32", + name: "resourceID", + type: "bytes32", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + name: "checkSignature", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint8", + name: "destinationDomainID", + type: "uint8", + }, + { + internalType: "bytes32", + name: "resourceID", + type: "bytes32", + }, + { + internalType: "bytes", + name: "depositData", + type: "bytes", + }, + { + internalType: "bytes", + name: "feeData", + type: "bytes", + }, + ], + name: "deposit", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint8", + name: "domainID", + type: "uint8", + }, + { + internalType: "uint64", + name: "depositNonce", + type: "uint64", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + { + internalType: "bytes32", + name: "resourceID", + type: "bytes32", + }, + { + internalType: "bool", + name: "revertOnFail", + type: "bool", + }, + ], + name: "executeProposal", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint8", + name: "destinationDomainID", + type: "uint8", + }, + ], + name: "getFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint8", + name: "originDomainID", + type: "uint8", + }, + { + internalType: "uint64", + name: "depositNonce", + type: "uint64", + }, + { + internalType: "bytes32", + name: "resourceID", + type: "bytes32", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "getProposal", + outputs: [ + { + components: [ + { + internalType: "enum IBridge.ProposalStatus", + name: "_status", + type: "uint8", + }, + { + internalType: "uint200", + name: "_yesVotes", + type: "uint200", + }, + { + internalType: "uint8", + name: "_yesVotesTotal", + type: "uint8", + }, + { + internalType: "uint40", + name: "_proposedBlock", + type: "uint40", + }, + ], + internalType: "struct IBridge.Proposal", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + ], + name: "getRoleAdmin", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + internalType: "uint256", + name: "index", + type: "uint256", + }, + ], + name: "getRoleMember", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + ], + name: "getRoleMemberCount", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "getRoleMemberIndex", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "grantRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "hasRole", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + ], + name: "isRelayer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "isValidForwarder", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "paused", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newAdmin", + type: "address", + }, + ], + name: "renounceAdmin", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "renounceRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "revokeRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + name: "special", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + name: "specialFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address payable[]", + name: "addrs", + type: "address[]", + }, + { + internalType: "uint256[]", + name: "amounts", + type: "uint256[]", + }, + ], + name: "transferFee", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint8", + name: "domainID", + type: "uint8", + }, + { + internalType: "uint64", + name: "depositNonce", + type: "uint64", + }, + { + internalType: "bytes32", + name: "resourceID", + type: "bytes32", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "voteProposal", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint8", + name: "domainID", + type: "uint8", + }, + { + internalType: "uint64", + name: "depositNonce", + type: "uint64", + }, + { + internalType: "bytes32", + name: "resourceID", + type: "bytes32", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + { + internalType: "bytes[]", + name: "signatures", + type: "bytes[]", + }, + ], + name: "voteProposals", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; diff --git a/src/Contracts/GenericHandler.d.ts b/src/Contracts/GenericHandler.d.ts new file mode 100644 index 00000000..8d81c048 --- /dev/null +++ b/src/Contracts/GenericHandler.d.ts @@ -0,0 +1,1016 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { + ethers, + EventFilter, + Signer, + BigNumber, + BigNumberish, + PopulatedTransaction, +} from "ethers"; +import { + Contract, + ContractTransaction, + Overrides, + CallOverrides, +} from "@ethersproject/contracts"; +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 GenericHandlerInterface extends ethers.utils.Interface { + functions: { + "_bridgeAddress()": FunctionFragment; + "_contractAddressToDepositFunctionDepositerOffset(address)": FunctionFragment; + "_contractAddressToDepositFunctionSignature(address)": FunctionFragment; + "_contractAddressToExecuteFunctionSignature(address)": FunctionFragment; + "_contractAddressToResourceID(address)": FunctionFragment; + "_contractWhitelist(address)": FunctionFragment; + "_depositRecords(uint8,uint64)": FunctionFragment; + "_resourceIDToContractAddress(bytes32)": FunctionFragment; + "deposit(bytes32,uint8,uint64,address,bytes)": FunctionFragment; + "executeProposal(bytes32,bytes)": FunctionFragment; + "getDepositRecord(uint64,uint8)": FunctionFragment; + "setResource(bytes32,address,bytes4,uint256,bytes4)": FunctionFragment; + "updateBridgeAddress(address)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "_bridgeAddress", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "_contractAddressToDepositFunctionDepositerOffset", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "_contractAddressToDepositFunctionSignature", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "_contractAddressToExecuteFunctionSignature", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "_contractAddressToResourceID", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "_contractWhitelist", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "_depositRecords", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "_resourceIDToContractAddress", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "deposit", + values: [BytesLike, BigNumberish, BigNumberish, string, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "executeProposal", + values: [BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "getDepositRecord", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "setResource", + values: [BytesLike, string, BytesLike, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "updateBridgeAddress", + values: [string] + ): string; + + decodeFunctionResult( + functionFragment: "_bridgeAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "_contractAddressToDepositFunctionDepositerOffset", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "_contractAddressToDepositFunctionSignature", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "_contractAddressToExecuteFunctionSignature", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "_contractAddressToResourceID", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "_contractWhitelist", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "_depositRecords", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "_resourceIDToContractAddress", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "executeProposal", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getDepositRecord", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setResource", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "updateBridgeAddress", + data: BytesLike + ): Result; + + events: {}; +} + +export class GenericHandler 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: GenericHandlerInterface; + + functions: { + _bridgeAddress(overrides?: CallOverrides): Promise<[string]>; + + "_bridgeAddress()"(overrides?: CallOverrides): Promise<[string]>; + + _contractAddressToDepositFunctionDepositerOffset( + arg0: string, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "_contractAddressToDepositFunctionDepositerOffset(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + _contractAddressToDepositFunctionSignature( + arg0: string, + overrides?: CallOverrides + ): Promise<[string]>; + + "_contractAddressToDepositFunctionSignature(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise<[string]>; + + _contractAddressToExecuteFunctionSignature( + arg0: string, + overrides?: CallOverrides + ): Promise<[string]>; + + "_contractAddressToExecuteFunctionSignature(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise<[string]>; + + _contractAddressToResourceID( + arg0: string, + overrides?: CallOverrides + ): Promise<[string]>; + + "_contractAddressToResourceID(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise<[string]>; + + _contractWhitelist( + arg0: string, + overrides?: CallOverrides + ): Promise<[boolean]>; + + "_contractWhitelist(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise<[boolean]>; + + _depositRecords( + arg0: BigNumberish, + arg1: BigNumberish, + overrides?: CallOverrides + ): Promise< + [number, string, string, string] & { + _destinationChainID: number; + _depositer: string; + _resourceID: string; + _metaData: string; + } + >; + + "_depositRecords(uint8,uint64)"( + arg0: BigNumberish, + arg1: BigNumberish, + overrides?: CallOverrides + ): Promise< + [number, string, string, string] & { + _destinationChainID: number; + _depositer: string; + _resourceID: string; + _metaData: string; + } + >; + + _resourceIDToContractAddress( + arg0: BytesLike, + overrides?: CallOverrides + ): Promise<[string]>; + + "_resourceIDToContractAddress(bytes32)"( + arg0: BytesLike, + overrides?: CallOverrides + ): Promise<[string]>; + + deposit( + resourceID: BytesLike, + destinationChainID: BigNumberish, + depositNonce: BigNumberish, + depositer: string, + data: BytesLike, + overrides?: Overrides + ): Promise; + + "deposit(bytes32,uint8,uint64,address,bytes)"( + resourceID: BytesLike, + destinationChainID: BigNumberish, + depositNonce: BigNumberish, + depositer: string, + data: BytesLike, + overrides?: Overrides + ): Promise; + + executeProposal( + resourceID: BytesLike, + data: BytesLike, + overrides?: Overrides + ): Promise; + + "executeProposal(bytes32,bytes)"( + resourceID: BytesLike, + data: BytesLike, + overrides?: Overrides + ): Promise; + + getDepositRecord( + depositNonce: BigNumberish, + destId: BigNumberish, + overrides?: CallOverrides + ): Promise< + [ + [number, string, string, string] & { + _destinationChainID: number; + _depositer: string; + _resourceID: string; + _metaData: string; + } + ] + >; + + "getDepositRecord(uint64,uint8)"( + depositNonce: BigNumberish, + destId: BigNumberish, + overrides?: CallOverrides + ): Promise< + [ + [number, string, string, string] & { + _destinationChainID: number; + _depositer: string; + _resourceID: string; + _metaData: string; + } + ] + >; + + setResource( + resourceID: BytesLike, + contractAddress: string, + depositFunctionSig: BytesLike, + depositFunctionDepositerOffset: BigNumberish, + executeFunctionSig: BytesLike, + overrides?: Overrides + ): Promise; + + "setResource(bytes32,address,bytes4,uint256,bytes4)"( + resourceID: BytesLike, + contractAddress: string, + depositFunctionSig: BytesLike, + depositFunctionDepositerOffset: BigNumberish, + executeFunctionSig: BytesLike, + overrides?: Overrides + ): Promise; + + updateBridgeAddress( + newBridgeAddress: string, + overrides?: Overrides + ): Promise; + + "updateBridgeAddress(address)"( + newBridgeAddress: string, + overrides?: Overrides + ): Promise; + }; + + _bridgeAddress(overrides?: CallOverrides): Promise; + + "_bridgeAddress()"(overrides?: CallOverrides): Promise; + + _contractAddressToDepositFunctionDepositerOffset( + arg0: string, + overrides?: CallOverrides + ): Promise; + + "_contractAddressToDepositFunctionDepositerOffset(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + _contractAddressToDepositFunctionSignature( + arg0: string, + overrides?: CallOverrides + ): Promise; + + "_contractAddressToDepositFunctionSignature(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + _contractAddressToExecuteFunctionSignature( + arg0: string, + overrides?: CallOverrides + ): Promise; + + "_contractAddressToExecuteFunctionSignature(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + _contractAddressToResourceID( + arg0: string, + overrides?: CallOverrides + ): Promise; + + "_contractAddressToResourceID(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + _contractWhitelist(arg0: string, overrides?: CallOverrides): Promise; + + "_contractWhitelist(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + _depositRecords( + arg0: BigNumberish, + arg1: BigNumberish, + overrides?: CallOverrides + ): Promise< + [number, string, string, string] & { + _destinationChainID: number; + _depositer: string; + _resourceID: string; + _metaData: string; + } + >; + + "_depositRecords(uint8,uint64)"( + arg0: BigNumberish, + arg1: BigNumberish, + overrides?: CallOverrides + ): Promise< + [number, string, string, string] & { + _destinationChainID: number; + _depositer: string; + _resourceID: string; + _metaData: string; + } + >; + + _resourceIDToContractAddress( + arg0: BytesLike, + overrides?: CallOverrides + ): Promise; + + "_resourceIDToContractAddress(bytes32)"( + arg0: BytesLike, + overrides?: CallOverrides + ): Promise; + + deposit( + resourceID: BytesLike, + destinationChainID: BigNumberish, + depositNonce: BigNumberish, + depositer: string, + data: BytesLike, + overrides?: Overrides + ): Promise; + + "deposit(bytes32,uint8,uint64,address,bytes)"( + resourceID: BytesLike, + destinationChainID: BigNumberish, + depositNonce: BigNumberish, + depositer: string, + data: BytesLike, + overrides?: Overrides + ): Promise; + + executeProposal( + resourceID: BytesLike, + data: BytesLike, + overrides?: Overrides + ): Promise; + + "executeProposal(bytes32,bytes)"( + resourceID: BytesLike, + data: BytesLike, + overrides?: Overrides + ): Promise; + + getDepositRecord( + depositNonce: BigNumberish, + destId: BigNumberish, + overrides?: CallOverrides + ): Promise< + [number, string, string, string] & { + _destinationChainID: number; + _depositer: string; + _resourceID: string; + _metaData: string; + } + >; + + "getDepositRecord(uint64,uint8)"( + depositNonce: BigNumberish, + destId: BigNumberish, + overrides?: CallOverrides + ): Promise< + [number, string, string, string] & { + _destinationChainID: number; + _depositer: string; + _resourceID: string; + _metaData: string; + } + >; + + setResource( + resourceID: BytesLike, + contractAddress: string, + depositFunctionSig: BytesLike, + depositFunctionDepositerOffset: BigNumberish, + executeFunctionSig: BytesLike, + overrides?: Overrides + ): Promise; + + "setResource(bytes32,address,bytes4,uint256,bytes4)"( + resourceID: BytesLike, + contractAddress: string, + depositFunctionSig: BytesLike, + depositFunctionDepositerOffset: BigNumberish, + executeFunctionSig: BytesLike, + overrides?: Overrides + ): Promise; + + updateBridgeAddress( + newBridgeAddress: string, + overrides?: Overrides + ): Promise; + + "updateBridgeAddress(address)"( + newBridgeAddress: string, + overrides?: Overrides + ): Promise; + + callStatic: { + _bridgeAddress(overrides?: CallOverrides): Promise; + + "_bridgeAddress()"(overrides?: CallOverrides): Promise; + + _contractAddressToDepositFunctionDepositerOffset( + arg0: string, + overrides?: CallOverrides + ): Promise; + + "_contractAddressToDepositFunctionDepositerOffset(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + _contractAddressToDepositFunctionSignature( + arg0: string, + overrides?: CallOverrides + ): Promise; + + "_contractAddressToDepositFunctionSignature(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + _contractAddressToExecuteFunctionSignature( + arg0: string, + overrides?: CallOverrides + ): Promise; + + "_contractAddressToExecuteFunctionSignature(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + _contractAddressToResourceID( + arg0: string, + overrides?: CallOverrides + ): Promise; + + "_contractAddressToResourceID(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + _contractWhitelist( + arg0: string, + overrides?: CallOverrides + ): Promise; + + "_contractWhitelist(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + _depositRecords( + arg0: BigNumberish, + arg1: BigNumberish, + overrides?: CallOverrides + ): Promise< + [number, string, string, string] & { + _destinationChainID: number; + _depositer: string; + _resourceID: string; + _metaData: string; + } + >; + + "_depositRecords(uint8,uint64)"( + arg0: BigNumberish, + arg1: BigNumberish, + overrides?: CallOverrides + ): Promise< + [number, string, string, string] & { + _destinationChainID: number; + _depositer: string; + _resourceID: string; + _metaData: string; + } + >; + + _resourceIDToContractAddress( + arg0: BytesLike, + overrides?: CallOverrides + ): Promise; + + "_resourceIDToContractAddress(bytes32)"( + arg0: BytesLike, + overrides?: CallOverrides + ): Promise; + + deposit( + resourceID: BytesLike, + destinationChainID: BigNumberish, + depositNonce: BigNumberish, + depositer: string, + data: BytesLike, + overrides?: CallOverrides + ): Promise; + + "deposit(bytes32,uint8,uint64,address,bytes)"( + resourceID: BytesLike, + destinationChainID: BigNumberish, + depositNonce: BigNumberish, + depositer: string, + data: BytesLike, + overrides?: CallOverrides + ): Promise; + + executeProposal( + resourceID: BytesLike, + data: BytesLike, + overrides?: CallOverrides + ): Promise; + + "executeProposal(bytes32,bytes)"( + resourceID: BytesLike, + data: BytesLike, + overrides?: CallOverrides + ): Promise; + + getDepositRecord( + depositNonce: BigNumberish, + destId: BigNumberish, + overrides?: CallOverrides + ): Promise< + [number, string, string, string] & { + _destinationChainID: number; + _depositer: string; + _resourceID: string; + _metaData: string; + } + >; + + "getDepositRecord(uint64,uint8)"( + depositNonce: BigNumberish, + destId: BigNumberish, + overrides?: CallOverrides + ): Promise< + [number, string, string, string] & { + _destinationChainID: number; + _depositer: string; + _resourceID: string; + _metaData: string; + } + >; + + setResource( + resourceID: BytesLike, + contractAddress: string, + depositFunctionSig: BytesLike, + depositFunctionDepositerOffset: BigNumberish, + executeFunctionSig: BytesLike, + overrides?: CallOverrides + ): Promise; + + "setResource(bytes32,address,bytes4,uint256,bytes4)"( + resourceID: BytesLike, + contractAddress: string, + depositFunctionSig: BytesLike, + depositFunctionDepositerOffset: BigNumberish, + executeFunctionSig: BytesLike, + overrides?: CallOverrides + ): Promise; + + updateBridgeAddress( + newBridgeAddress: string, + overrides?: CallOverrides + ): Promise; + + "updateBridgeAddress(address)"( + newBridgeAddress: string, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + _bridgeAddress(overrides?: CallOverrides): Promise; + + "_bridgeAddress()"(overrides?: CallOverrides): Promise; + + _contractAddressToDepositFunctionDepositerOffset( + arg0: string, + overrides?: CallOverrides + ): Promise; + + "_contractAddressToDepositFunctionDepositerOffset(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + _contractAddressToDepositFunctionSignature( + arg0: string, + overrides?: CallOverrides + ): Promise; + + "_contractAddressToDepositFunctionSignature(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + _contractAddressToExecuteFunctionSignature( + arg0: string, + overrides?: CallOverrides + ): Promise; + + "_contractAddressToExecuteFunctionSignature(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + _contractAddressToResourceID( + arg0: string, + overrides?: CallOverrides + ): Promise; + + "_contractAddressToResourceID(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + _contractWhitelist( + arg0: string, + overrides?: CallOverrides + ): Promise; + + "_contractWhitelist(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + _depositRecords( + arg0: BigNumberish, + arg1: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "_depositRecords(uint8,uint64)"( + arg0: BigNumberish, + arg1: BigNumberish, + overrides?: CallOverrides + ): Promise; + + _resourceIDToContractAddress( + arg0: BytesLike, + overrides?: CallOverrides + ): Promise; + + "_resourceIDToContractAddress(bytes32)"( + arg0: BytesLike, + overrides?: CallOverrides + ): Promise; + + deposit( + resourceID: BytesLike, + destinationChainID: BigNumberish, + depositNonce: BigNumberish, + depositer: string, + data: BytesLike, + overrides?: Overrides + ): Promise; + + "deposit(bytes32,uint8,uint64,address,bytes)"( + resourceID: BytesLike, + destinationChainID: BigNumberish, + depositNonce: BigNumberish, + depositer: string, + data: BytesLike, + overrides?: Overrides + ): Promise; + + executeProposal( + resourceID: BytesLike, + data: BytesLike, + overrides?: Overrides + ): Promise; + + "executeProposal(bytes32,bytes)"( + resourceID: BytesLike, + data: BytesLike, + overrides?: Overrides + ): Promise; + + getDepositRecord( + depositNonce: BigNumberish, + destId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "getDepositRecord(uint64,uint8)"( + depositNonce: BigNumberish, + destId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + setResource( + resourceID: BytesLike, + contractAddress: string, + depositFunctionSig: BytesLike, + depositFunctionDepositerOffset: BigNumberish, + executeFunctionSig: BytesLike, + overrides?: Overrides + ): Promise; + + "setResource(bytes32,address,bytes4,uint256,bytes4)"( + resourceID: BytesLike, + contractAddress: string, + depositFunctionSig: BytesLike, + depositFunctionDepositerOffset: BigNumberish, + executeFunctionSig: BytesLike, + overrides?: Overrides + ): Promise; + + updateBridgeAddress( + newBridgeAddress: string, + overrides?: Overrides + ): Promise; + + "updateBridgeAddress(address)"( + newBridgeAddress: string, + overrides?: Overrides + ): Promise; + }; + + populateTransaction: { + _bridgeAddress(overrides?: CallOverrides): Promise; + + "_bridgeAddress()"( + overrides?: CallOverrides + ): Promise; + + _contractAddressToDepositFunctionDepositerOffset( + arg0: string, + overrides?: CallOverrides + ): Promise; + + "_contractAddressToDepositFunctionDepositerOffset(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + _contractAddressToDepositFunctionSignature( + arg0: string, + overrides?: CallOverrides + ): Promise; + + "_contractAddressToDepositFunctionSignature(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + _contractAddressToExecuteFunctionSignature( + arg0: string, + overrides?: CallOverrides + ): Promise; + + "_contractAddressToExecuteFunctionSignature(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + _contractAddressToResourceID( + arg0: string, + overrides?: CallOverrides + ): Promise; + + "_contractAddressToResourceID(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + _contractWhitelist( + arg0: string, + overrides?: CallOverrides + ): Promise; + + "_contractWhitelist(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + _depositRecords( + arg0: BigNumberish, + arg1: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "_depositRecords(uint8,uint64)"( + arg0: BigNumberish, + arg1: BigNumberish, + overrides?: CallOverrides + ): Promise; + + _resourceIDToContractAddress( + arg0: BytesLike, + overrides?: CallOverrides + ): Promise; + + "_resourceIDToContractAddress(bytes32)"( + arg0: BytesLike, + overrides?: CallOverrides + ): Promise; + + deposit( + resourceID: BytesLike, + destinationChainID: BigNumberish, + depositNonce: BigNumberish, + depositer: string, + data: BytesLike, + overrides?: Overrides + ): Promise; + + "deposit(bytes32,uint8,uint64,address,bytes)"( + resourceID: BytesLike, + destinationChainID: BigNumberish, + depositNonce: BigNumberish, + depositer: string, + data: BytesLike, + overrides?: Overrides + ): Promise; + + executeProposal( + resourceID: BytesLike, + data: BytesLike, + overrides?: Overrides + ): Promise; + + "executeProposal(bytes32,bytes)"( + resourceID: BytesLike, + data: BytesLike, + overrides?: Overrides + ): Promise; + + getDepositRecord( + depositNonce: BigNumberish, + destId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "getDepositRecord(uint64,uint8)"( + depositNonce: BigNumberish, + destId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + setResource( + resourceID: BytesLike, + contractAddress: string, + depositFunctionSig: BytesLike, + depositFunctionDepositerOffset: BigNumberish, + executeFunctionSig: BytesLike, + overrides?: Overrides + ): Promise; + + "setResource(bytes32,address,bytes4,uint256,bytes4)"( + resourceID: BytesLike, + contractAddress: string, + depositFunctionSig: BytesLike, + depositFunctionDepositerOffset: BigNumberish, + executeFunctionSig: BytesLike, + overrides?: Overrides + ): Promise; + + updateBridgeAddress( + newBridgeAddress: string, + overrides?: Overrides + ): Promise; + + "updateBridgeAddress(address)"( + newBridgeAddress: string, + overrides?: Overrides + ): Promise; + }; +} diff --git a/src/Contracts/GenericHandlerFactory.ts b/src/Contracts/GenericHandlerFactory.ts new file mode 100644 index 00000000..445ffc3d --- /dev/null +++ b/src/Contracts/GenericHandlerFactory.ts @@ -0,0 +1,417 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Signer, BytesLike, BigNumberish } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import { Contract, ContractFactory, Overrides } from "@ethersproject/contracts"; + +import type { GenericHandler } from "./GenericHandler"; + +export class GenericHandler__factory extends ContractFactory { + constructor(signer?: Signer) { + super(_abi, _bytecode, signer); + } + + deploy( + bridgeAddress: string, + initialResourceIDs: BytesLike[], + initialContractAddresses: string[], + initialDepositFunctionSignatures: BytesLike[], + initialDepositFunctionDepositerOffsets: BigNumberish[], + initialExecuteFunctionSignatures: BytesLike[], + overrides?: Overrides + ): Promise { + return super.deploy( + bridgeAddress, + initialResourceIDs, + initialContractAddresses, + initialDepositFunctionSignatures, + initialDepositFunctionDepositerOffsets, + initialExecuteFunctionSignatures, + overrides || {} + ) as Promise; + } + getDeployTransaction( + bridgeAddress: string, + initialResourceIDs: BytesLike[], + initialContractAddresses: string[], + initialDepositFunctionSignatures: BytesLike[], + initialDepositFunctionDepositerOffsets: BigNumberish[], + initialExecuteFunctionSignatures: BytesLike[], + overrides?: Overrides + ): TransactionRequest { + return super.getDeployTransaction( + bridgeAddress, + initialResourceIDs, + initialContractAddresses, + initialDepositFunctionSignatures, + initialDepositFunctionDepositerOffsets, + initialExecuteFunctionSignatures, + overrides || {} + ); + } + attach(address: string): GenericHandler { + return super.attach(address) as GenericHandler; + } + connect(signer: Signer): GenericHandler__factory { + return super.connect(signer) as GenericHandler__factory; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): GenericHandler { + return new Contract(address, _abi, signerOrProvider) as GenericHandler; + } +} + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "bridgeAddress", + type: "address", + }, + { + internalType: "bytes32[]", + name: "initialResourceIDs", + type: "bytes32[]", + }, + { + internalType: "address[]", + name: "initialContractAddresses", + type: "address[]", + }, + { + internalType: "bytes4[]", + name: "initialDepositFunctionSignatures", + type: "bytes4[]", + }, + { + internalType: "uint256[]", + name: "initialDepositFunctionDepositerOffsets", + type: "uint256[]", + }, + { + internalType: "bytes4[]", + name: "initialExecuteFunctionSignatures", + type: "bytes4[]", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [], + name: "_bridgeAddress", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "_contractAddressToDepositFunctionDepositerOffset", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "_contractAddressToDepositFunctionSignature", + outputs: [ + { + internalType: "bytes4", + name: "", + type: "bytes4", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "_contractAddressToExecuteFunctionSignature", + outputs: [ + { + internalType: "bytes4", + name: "", + type: "bytes4", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "_contractAddressToResourceID", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "_contractWhitelist", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + { + internalType: "uint64", + name: "", + type: "uint64", + }, + ], + name: "_depositRecords", + outputs: [ + { + internalType: "uint8", + name: "_destinationChainID", + type: "uint8", + }, + { + internalType: "address", + name: "_depositer", + type: "address", + }, + { + internalType: "bytes32", + name: "_resourceID", + type: "bytes32", + }, + { + internalType: "bytes", + name: "_metaData", + type: "bytes", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + name: "_resourceIDToContractAddress", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "resourceID", + type: "bytes32", + }, + { + internalType: "uint8", + name: "destinationChainID", + type: "uint8", + }, + { + internalType: "uint64", + name: "depositNonce", + type: "uint64", + }, + { + internalType: "address", + name: "depositer", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "deposit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "resourceID", + type: "bytes32", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "executeProposal", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint64", + name: "depositNonce", + type: "uint64", + }, + { + internalType: "uint8", + name: "destId", + type: "uint8", + }, + ], + name: "getDepositRecord", + outputs: [ + { + components: [ + { + internalType: "uint8", + name: "_destinationChainID", + type: "uint8", + }, + { + internalType: "address", + name: "_depositer", + type: "address", + }, + { + internalType: "bytes32", + name: "_resourceID", + type: "bytes32", + }, + { + internalType: "bytes", + name: "_metaData", + type: "bytes", + }, + ], + internalType: "struct GenericHandler.DepositRecord", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "resourceID", + type: "bytes32", + }, + { + internalType: "address", + name: "contractAddress", + type: "address", + }, + { + internalType: "bytes4", + name: "depositFunctionSig", + type: "bytes4", + }, + { + internalType: "uint256", + name: "depositFunctionDepositerOffset", + type: "uint256", + }, + { + internalType: "bytes4", + name: "executeFunctionSig", + type: "bytes4", + }, + ], + name: "setResource", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newBridgeAddress", + type: "address", + }, + ], + name: "updateBridgeAddress", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +const _bytecode = + "0x60806040523480156200001157600080fd5b5060405162002888380380620028888339818101604052810190620000379190620006b6565b83518551146200007e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000759062000969565b60405180910390fd5b8251845114620000c5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000bc90620009cf565b60405180910390fd5b80518351146200010c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200010390620009ad565b60405180910390fd5b805182511462000153576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200014a906200098b565b60405180910390fd5b856000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008090505b85518110156200022a576200021c868281518110620001b457fe5b6020026020010151868381518110620001c957fe5b6020026020010151868481518110620001de57fe5b6020026020010151868581518110620001f357fe5b60200260200101518686815181106200020857fe5b60200260200101516200023760201b60201c565b808060010191505062000199565b5050505050505062000bb0565b836002600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908360e01c021790555081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908360e01c02179055506001600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050505050565b600081519050620004378162000b48565b92915050565b600082601f8301126200044f57600080fd5b815162000466620004608262000a1f565b620009f1565b915081818352602084019350602081019050838560208402820111156200048c57600080fd5b60005b83811015620004c05781620004a5888262000426565b8452602084019350602083019250506001810190506200048f565b5050505092915050565b600082601f830112620004dc57600080fd5b8151620004f3620004ed8262000a48565b620009f1565b915081818352602084019350602081019050838560208402820111156200051957600080fd5b60005b838110156200054d578162000532888262000671565b8452602084019350602083019250506001810190506200051c565b5050505092915050565b600082601f8301126200056957600080fd5b8151620005806200057a8262000a71565b620009f1565b91508181835260208401935060208101905083856020840282011115620005a657600080fd5b60005b83811015620005da5781620005bf888262000688565b845260208401935060208301925050600181019050620005a9565b5050505092915050565b600082601f830112620005f657600080fd5b81516200060d620006078262000a9a565b620009f1565b915081818352602084019350602081019050838560208402820111156200063357600080fd5b60005b838110156200066757816200064c88826200069f565b84526020840193506020830192505060018101905062000636565b5050505092915050565b600081519050620006828162000b62565b92915050565b600081519050620006998162000b7c565b92915050565b600081519050620006b08162000b96565b92915050565b60008060008060008060c08789031215620006d057600080fd5b6000620006e089828a0162000426565b965050602087015167ffffffffffffffff811115620006fe57600080fd5b6200070c89828a01620004ca565b955050604087015167ffffffffffffffff8111156200072a57600080fd5b6200073889828a016200043d565b945050606087015167ffffffffffffffff8111156200075657600080fd5b6200076489828a0162000557565b935050608087015167ffffffffffffffff8111156200078257600080fd5b6200079089828a01620005e4565b92505060a087015167ffffffffffffffff811115620007ae57600080fd5b620007bc89828a0162000557565b9150509295509295509295565b6000620007d8603c8362000ac3565b91507f696e697469616c5265736f7572636549447320616e6420696e697469616c436f60008301527f6e7472616374416464726573736573206c656e206d69736d61746368000000006020830152604082019050919050565b600062000840603f8362000ac3565b91507f70726f7669646564206465706f7369746572206f66667365747320616e64206660008301527f756e6374696f6e207369676e617475726573206c656e206d69736d61746368006020830152604082019050919050565b6000620008a8603d8362000ac3565b91507f70726f7669646564206465706f73697420616e6420657865637574652066756e60008301527f6374696f6e207369676e617475726573206c656e206d69736d617463680000006020830152604082019050919050565b60006200091060408362000ac3565b91507f70726f766964656420636f6e74726163742061646472657373657320616e642060008301527f66756e6374696f6e207369676e617475726573206c656e206d69736d617463686020830152604082019050919050565b600060208201905081810360008301526200098481620007c9565b9050919050565b60006020820190508181036000830152620009a68162000831565b9050919050565b60006020820190508181036000830152620009c88162000899565b9050919050565b60006020820190508181036000830152620009ea8162000901565b9050919050565b6000604051905081810181811067ffffffffffffffff8211171562000a1557600080fd5b8060405250919050565b600067ffffffffffffffff82111562000a3757600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111562000a6057600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111562000a8957600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111562000ab257600080fd5b602082029050602081019050919050565b600082825260208201905092915050565b600062000ae18262000b1e565b9050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b62000b538162000ad4565b811462000b5f57600080fd5b50565b62000b6d8162000ae8565b811462000b7957600080fd5b50565b62000b878162000af2565b811462000b9357600080fd5b50565b62000ba18162000b3e565b811462000bad57600080fd5b50565b611cc88062000bc06000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063aa50800b1161008c578063cb62446311610066578063cb6244631461024d578063de319d991461027d578063e248cff214610299578063ec97d3b4146102b5576100cf565b8063aa50800b146101bd578063ba484c09146101ed578063c54c2a111461021d576100cf565b8063318c136e146100d457806338995da9146100f25780634402027f1461010e578063645c8a4b146101415780637f79bea81461015d578063a5c3a9851461018d575b600080fd5b6100dc6102e5565b6040516100e99190611912565b60405180910390f35b61010c6004803603810190610107919061140a565b61030a565b005b61012860048036038101906101239190611501565b6107b4565b6040516101389493929190611a7b565b60405180910390f35b61015b600480360381019061015691906112e9565b6108b6565b005b610177600480360381019061017291906112e9565b610991565b604051610184919061192d565b60405180910390f35b6101a760048036038101906101a291906112e9565b6109b1565b6040516101b49190611963565b60405180910390f35b6101d760048036038101906101d291906112e9565b6109d1565b6040516101e49190611a60565b60405180910390f35b610207600480360381019061020291906114c5565b6109e9565b6040516102149190611a3e565b60405180910390f35b61023760048036038101906102329190611312565b610b61565b6040516102449190611912565b60405180910390f35b610267600480360381019061026291906112e9565b610b94565b6040516102749190611963565b60405180910390f35b6102976004803603810190610292919061133b565b610bb4565b005b6102b360048036038101906102ae91906113b2565b610bd0565b005b6102cf60048036038101906102ca91906112e9565b610ea0565b6040516102dc9190611948565b60405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610312610eb8565b600060608383810190610325919061149c565b915083836020846020018082111561033c57600080fd5b8281111561034957600080fd5b6001820284019350818103925050508080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505090506000600260008a815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111156104a1576000816020850101519050606081901c73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161461049f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610496906119de565b60405180910390fd5b505b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661052d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610524906119fe565b60405180910390fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460e01b9050600060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461069d57606081856040516020016105dc9291906118d3565b604051602081830303815290604052905060008473ffffffffffffffffffffffffffffffffffffffff168260405161061491906118fb565b6000604051808303816000865af19150503d8060008114610651576040519150601f19603f3d011682016040523d82523d6000602084013e610656565b606091505b505090508061069a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069190611a1e565b60405180910390fd5b50505b60405180608001604052808b60ff1681526020018973ffffffffffffffffffffffffffffffffffffffff1681526020018c815260200185815250600160008c60ff1660ff16815260200190815260200160002060008b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816001015560608201518160020190805190602001906107a3929190611138565b509050505050505050505050505050565b6001602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900460ff16908060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108ac5780601f10610881576101008083540402835291602001916108ac565b820191906000526020600020905b81548152906001019060200180831161088f57829003601f168201915b5050505050905084565b6108be610eb8565b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561094e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109459061199e565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60076020528060005260406000206000915054906101000a900460ff1681565b60066020528060005260406000206000915054906101000a900460e01b81565b60056020528060005260406000206000915090505481565b6109f16111b8565b600160008360ff1660ff16815260200190815260200160002060008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060800160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b505780601f10610b2557610100808354040283529160200191610b50565b820191906000526020600020905b815481529060010190602001808311610b3357829003601f168201915b505050505081525050905092915050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460e01b81565b610bbc610eb8565b610bc98585858585610f49565b5050505050565b610bd8610eb8565b600060608383810190610beb919061149c565b9150838360208460200180821115610c0257600080fd5b82811115610c0f57600080fd5b6001820284019350818103925050508080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060006002600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1e906119fe565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460e01b9050600060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610e975760608184604051602001610dd69291906118d3565b604051602081830303815290604052905060008373ffffffffffffffffffffffffffffffffffffffff1682604051610e0e91906118fb565b6000604051808303816000865af19150503d8060008114610e4b576040519150601f19603f3d011682016040523d82523d6000602084013e610e50565b606091505b5050905080610e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8b906119be565b60405180910390fd5b50505b50505050505050565b60036020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3e9061197e565b60405180910390fd5b565b836002600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908360e01c021790555081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908360e01c02179055506001600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061117957805160ff19168380011785556111a7565b828001600101855582156111a7579182015b828111156111a657825182559160200191906001019061118b565b5b5090506111b491906111fc565b5090565b6040518060800160405280600060ff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008019168152602001606081525090565b61121e91905b8082111561121a576000816000905550600101611202565b5090565b90565b60008135905061123081611c08565b92915050565b60008135905061124581611c1f565b92915050565b60008135905061125a81611c36565b92915050565b60008083601f84011261127257600080fd5b8235905067ffffffffffffffff81111561128b57600080fd5b6020830191508360018202830111156112a357600080fd5b9250929050565b6000813590506112b981611c4d565b92915050565b6000813590506112ce81611c64565b92915050565b6000813590506112e381611c7b565b92915050565b6000602082840312156112fb57600080fd5b600061130984828501611221565b91505092915050565b60006020828403121561132457600080fd5b600061133284828501611236565b91505092915050565b600080600080600060a0868803121561135357600080fd5b600061136188828901611236565b955050602061137288828901611221565b94505060406113838882890161124b565b9350506060611394888289016112aa565b92505060806113a58882890161124b565b9150509295509295909350565b6000806000604084860312156113c757600080fd5b60006113d586828701611236565b935050602084013567ffffffffffffffff8111156113f257600080fd5b6113fe86828701611260565b92509250509250925092565b60008060008060008060a0878903121561142357600080fd5b600061143189828a01611236565b965050602061144289828a016112d4565b955050604061145389828a016112bf565b945050606061146489828a01611221565b935050608087013567ffffffffffffffff81111561148157600080fd5b61148d89828a01611260565b92509250509295509295509295565b6000602082840312156114ae57600080fd5b60006114bc848285016112aa565b91505092915050565b600080604083850312156114d857600080fd5b60006114e6858286016112bf565b92505060206114f7858286016112d4565b9150509250929050565b6000806040838503121561151457600080fd5b6000611522858286016112d4565b9250506020611533858286016112bf565b9150509250929050565b61154681611b1b565b82525050565b61155581611b1b565b82525050565b61156481611b2d565b82525050565b61157381611b39565b82525050565b61158281611b39565b82525050565b61159181611b43565b82525050565b6115a86115a382611b43565b611bed565b82525050565b60006115b982611ad2565b6115c38185611aff565b93506115d3818560208601611bba565b80840191505092915050565b60006115ea82611ac7565b6115f48185611add565b9350611604818560208601611bba565b61160d81611bf7565b840191505092915050565b600061162382611ac7565b61162d8185611aee565b935061163d818560208601611bba565b61164681611bf7565b840191505092915050565b600061165e601e83611b0a565b91507f73656e646572206d7573742062652062726964676520636f6e747261637400006000830152602082019050919050565b600061169e602c83611b0a565b91507f74686520757064617465642061646472657373206973207468652073616d652060008301527f7769746820746865206f6c6400000000000000000000000000000000000000006020830152604082019050919050565b6000611704602683611b0a565b91507f64656c656761746563616c6c20746f20636f6e7472616374416464726573732060008301527f6661696c656400000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061176a601f83611b0a565b91507f696e636f7272656374206465706f736974657220696e207468652064617461006000830152602082019050919050565b60006117aa602b83611b0a565b91507f70726f766964656420636f6e747261637441646472657373206973206e6f742060008301527f77686974656c69737465640000000000000000000000000000000000000000006020830152604082019050919050565b6000611810601e83611b0a565b91507f63616c6c20746f20636f6e747261637441646472657373206661696c656400006000830152602082019050919050565b600060808301600083015161185b60008601826118b5565b50602083015161186e602086018261153d565b506040830151611881604086018261156a565b506060830151848203606086015261189982826115df565b9150508091505092915050565b6118af81611b8f565b82525050565b6118be81611bad565b82525050565b6118cd81611bad565b82525050565b60006118df8285611597565b6004820191506118ef82846115ae565b91508190509392505050565b600061190782846115ae565b915081905092915050565b6000602082019050611927600083018461154c565b92915050565b6000602082019050611942600083018461155b565b92915050565b600060208201905061195d6000830184611579565b92915050565b60006020820190506119786000830184611588565b92915050565b6000602082019050818103600083015261199781611651565b9050919050565b600060208201905081810360008301526119b781611691565b9050919050565b600060208201905081810360008301526119d7816116f7565b9050919050565b600060208201905081810360008301526119f78161175d565b9050919050565b60006020820190508181036000830152611a178161179d565b9050919050565b60006020820190508181036000830152611a3781611803565b9050919050565b60006020820190508181036000830152611a588184611843565b905092915050565b6000602082019050611a7560008301846118a6565b92915050565b6000608082019050611a9060008301876118c4565b611a9d602083018661154c565b611aaa6040830185611579565b8181036060830152611abc8184611618565b905095945050505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611b2682611b6f565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b60005b83811015611bd8578082015181840152602081019050611bbd565b83811115611be7576000848401525b50505050565b6000819050919050565b6000601f19601f8301169050919050565b611c1181611b1b565b8114611c1c57600080fd5b50565b611c2881611b39565b8114611c3357600080fd5b50565b611c3f81611b43565b8114611c4a57600080fd5b50565b611c5681611b8f565b8114611c6157600080fd5b50565b611c6d81611b99565b8114611c7857600080fd5b50565b611c8481611bad565b8114611c8f57600080fd5b5056fea2646970667358221220b1bdc4176dfb2b3dbcb5c113880ccd032d739bbd87202fe18afdb73d351fff7664736f6c63430006040033"; diff --git a/src/Contracts/XCAmpleController.d.ts b/src/Contracts/XCAmpleController.d.ts new file mode 100644 index 00000000..46bbb052 --- /dev/null +++ b/src/Contracts/XCAmpleController.d.ts @@ -0,0 +1,1037 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { + ethers, + EventFilter, + Signer, + BigNumber, + BigNumberish, + PopulatedTransaction, +} from "ethers"; +import { + Contract, + ContractTransaction, + Overrides, + CallOverrides, +} from "@ethersproject/contracts"; +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 XCAmpleControllerInterface extends ethers.utils.Interface { + functions: { + "addBridgeGateway(address)": FunctionFragment; + "burn(address,uint256)": FunctionFragment; + "globalAmpleforthEpoch()": FunctionFragment; + "globalAmpleforthEpochAndAMPLSupply()": FunctionFragment; + "initialize(address,uint256)": FunctionFragment; + "lastRebaseTimestampSec()": FunctionFragment; + "mint(address,uint256)": FunctionFragment; + "nextGlobalAMPLSupply()": FunctionFragment; + "nextGlobalAmpleforthEpoch()": FunctionFragment; + "owner()": FunctionFragment; + "rebase()": FunctionFragment; + "rebaseRelayer()": FunctionFragment; + "removeBridgeGateway(address)": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "reportRebase(uint256,uint256)": FunctionFragment; + "setRebaseRelayer(address)": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + "whitelistedBridgeGateways(address)": FunctionFragment; + "xcAmple()": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "addBridgeGateway", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "burn", + values: [string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "globalAmpleforthEpoch", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "globalAmpleforthEpochAndAMPLSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "initialize", + values: [string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "lastRebaseTimestampSec", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "mint", + values: [string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "nextGlobalAMPLSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "nextGlobalAmpleforthEpoch", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData(functionFragment: "rebase", values?: undefined): string; + encodeFunctionData( + functionFragment: "rebaseRelayer", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "removeBridgeGateway", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "reportRebase", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "setRebaseRelayer", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "whitelistedBridgeGateways", + values: [string] + ): string; + encodeFunctionData(functionFragment: "xcAmple", values?: undefined): string; + + decodeFunctionResult( + functionFragment: "addBridgeGateway", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "globalAmpleforthEpoch", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "globalAmpleforthEpochAndAMPLSupply", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "lastRebaseTimestampSec", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "nextGlobalAMPLSupply", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "nextGlobalAmpleforthEpoch", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "rebase", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "rebaseRelayer", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "removeBridgeGateway", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "reportRebase", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setRebaseRelayer", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "whitelistedBridgeGateways", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "xcAmple", data: BytesLike): Result; + + events: { + "GatewayBurn(address,address,uint256)": EventFragment; + "GatewayMint(address,address,uint256)": EventFragment; + "GatewayRebaseReported(address,uint256,uint256,uint256)": EventFragment; + "GatewayWhitelistUpdated(address,bool)": EventFragment; + "LogRebase(uint256,int256,uint256)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "GatewayBurn"): EventFragment; + getEvent(nameOrSignatureOrTopic: "GatewayMint"): EventFragment; + getEvent(nameOrSignatureOrTopic: "GatewayRebaseReported"): EventFragment; + getEvent(nameOrSignatureOrTopic: "GatewayWhitelistUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "LogRebase"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; +} + +export class XCAmpleController 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: XCAmpleControllerInterface; + + functions: { + addBridgeGateway( + bridgeGateway: string, + overrides?: Overrides + ): Promise; + + "addBridgeGateway(address)"( + bridgeGateway: string, + overrides?: Overrides + ): Promise; + + burn( + depositor: string, + xcAmpleAmount: BigNumberish, + overrides?: Overrides + ): Promise; + + "burn(address,uint256)"( + depositor: string, + xcAmpleAmount: BigNumberish, + overrides?: Overrides + ): Promise; + + globalAmpleforthEpoch(overrides?: CallOverrides): Promise<[BigNumber]>; + + "globalAmpleforthEpoch()"(overrides?: CallOverrides): Promise<[BigNumber]>; + + globalAmpleforthEpochAndAMPLSupply( + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber]>; + + "globalAmpleforthEpochAndAMPLSupply()"( + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber]>; + + initialize( + xcAmple_: string, + globalAmpleforthEpoch_: BigNumberish, + overrides?: Overrides + ): Promise; + + "initialize(address,uint256)"( + xcAmple_: string, + globalAmpleforthEpoch_: BigNumberish, + overrides?: Overrides + ): Promise; + + lastRebaseTimestampSec(overrides?: CallOverrides): Promise<[BigNumber]>; + + "lastRebaseTimestampSec()"(overrides?: CallOverrides): Promise<[BigNumber]>; + + mint( + recipient: string, + xcAmpleAmount: BigNumberish, + overrides?: Overrides + ): Promise; + + "mint(address,uint256)"( + recipient: string, + xcAmpleAmount: BigNumberish, + overrides?: Overrides + ): Promise; + + nextGlobalAMPLSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + "nextGlobalAMPLSupply()"(overrides?: CallOverrides): Promise<[BigNumber]>; + + nextGlobalAmpleforthEpoch(overrides?: CallOverrides): Promise<[BigNumber]>; + + "nextGlobalAmpleforthEpoch()"( + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + "owner()"(overrides?: CallOverrides): Promise<[string]>; + + rebase(overrides?: Overrides): Promise; + + "rebase()"(overrides?: Overrides): Promise; + + rebaseRelayer(overrides?: CallOverrides): Promise<[string]>; + + "rebaseRelayer()"(overrides?: CallOverrides): Promise<[string]>; + + removeBridgeGateway( + bridgeGateway: string, + overrides?: Overrides + ): Promise; + + "removeBridgeGateway(address)"( + bridgeGateway: string, + overrides?: Overrides + ): Promise; + + renounceOwnership(overrides?: Overrides): Promise; + + "renounceOwnership()"(overrides?: Overrides): Promise; + + reportRebase( + nextGlobalAmpleforthEpoch_: BigNumberish, + nextGlobalAMPLSupply_: BigNumberish, + overrides?: Overrides + ): Promise; + + "reportRebase(uint256,uint256)"( + nextGlobalAmpleforthEpoch_: BigNumberish, + nextGlobalAMPLSupply_: BigNumberish, + overrides?: Overrides + ): Promise; + + setRebaseRelayer( + rebaseRelayer_: string, + overrides?: Overrides + ): Promise; + + "setRebaseRelayer(address)"( + rebaseRelayer_: string, + overrides?: Overrides + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides + ): Promise; + + "transferOwnership(address)"( + newOwner: string, + overrides?: Overrides + ): Promise; + + whitelistedBridgeGateways( + arg0: string, + overrides?: CallOverrides + ): Promise<[boolean]>; + + "whitelistedBridgeGateways(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise<[boolean]>; + + xcAmple(overrides?: CallOverrides): Promise<[string]>; + + "xcAmple()"(overrides?: CallOverrides): Promise<[string]>; + }; + + addBridgeGateway( + bridgeGateway: string, + overrides?: Overrides + ): Promise; + + "addBridgeGateway(address)"( + bridgeGateway: string, + overrides?: Overrides + ): Promise; + + burn( + depositor: string, + xcAmpleAmount: BigNumberish, + overrides?: Overrides + ): Promise; + + "burn(address,uint256)"( + depositor: string, + xcAmpleAmount: BigNumberish, + overrides?: Overrides + ): Promise; + + globalAmpleforthEpoch(overrides?: CallOverrides): Promise; + + "globalAmpleforthEpoch()"(overrides?: CallOverrides): Promise; + + globalAmpleforthEpochAndAMPLSupply( + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber]>; + + "globalAmpleforthEpochAndAMPLSupply()"( + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber]>; + + initialize( + xcAmple_: string, + globalAmpleforthEpoch_: BigNumberish, + overrides?: Overrides + ): Promise; + + "initialize(address,uint256)"( + xcAmple_: string, + globalAmpleforthEpoch_: BigNumberish, + overrides?: Overrides + ): Promise; + + lastRebaseTimestampSec(overrides?: CallOverrides): Promise; + + "lastRebaseTimestampSec()"(overrides?: CallOverrides): Promise; + + mint( + recipient: string, + xcAmpleAmount: BigNumberish, + overrides?: Overrides + ): Promise; + + "mint(address,uint256)"( + recipient: string, + xcAmpleAmount: BigNumberish, + overrides?: Overrides + ): Promise; + + nextGlobalAMPLSupply(overrides?: CallOverrides): Promise; + + "nextGlobalAMPLSupply()"(overrides?: CallOverrides): Promise; + + nextGlobalAmpleforthEpoch(overrides?: CallOverrides): Promise; + + "nextGlobalAmpleforthEpoch()"(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + rebase(overrides?: Overrides): Promise; + + "rebase()"(overrides?: Overrides): Promise; + + rebaseRelayer(overrides?: CallOverrides): Promise; + + "rebaseRelayer()"(overrides?: CallOverrides): Promise; + + removeBridgeGateway( + bridgeGateway: string, + overrides?: Overrides + ): Promise; + + "removeBridgeGateway(address)"( + bridgeGateway: string, + overrides?: Overrides + ): Promise; + + renounceOwnership(overrides?: Overrides): Promise; + + "renounceOwnership()"(overrides?: Overrides): Promise; + + reportRebase( + nextGlobalAmpleforthEpoch_: BigNumberish, + nextGlobalAMPLSupply_: BigNumberish, + overrides?: Overrides + ): Promise; + + "reportRebase(uint256,uint256)"( + nextGlobalAmpleforthEpoch_: BigNumberish, + nextGlobalAMPLSupply_: BigNumberish, + overrides?: Overrides + ): Promise; + + setRebaseRelayer( + rebaseRelayer_: string, + overrides?: Overrides + ): Promise; + + "setRebaseRelayer(address)"( + rebaseRelayer_: string, + overrides?: Overrides + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides + ): Promise; + + "transferOwnership(address)"( + newOwner: string, + overrides?: Overrides + ): Promise; + + whitelistedBridgeGateways( + arg0: string, + overrides?: CallOverrides + ): Promise; + + "whitelistedBridgeGateways(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + xcAmple(overrides?: CallOverrides): Promise; + + "xcAmple()"(overrides?: CallOverrides): Promise; + + callStatic: { + addBridgeGateway( + bridgeGateway: string, + overrides?: CallOverrides + ): Promise; + + "addBridgeGateway(address)"( + bridgeGateway: string, + overrides?: CallOverrides + ): Promise; + + burn( + depositor: string, + xcAmpleAmount: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "burn(address,uint256)"( + depositor: string, + xcAmpleAmount: BigNumberish, + overrides?: CallOverrides + ): Promise; + + globalAmpleforthEpoch(overrides?: CallOverrides): Promise; + + "globalAmpleforthEpoch()"(overrides?: CallOverrides): Promise; + + globalAmpleforthEpochAndAMPLSupply( + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber]>; + + "globalAmpleforthEpochAndAMPLSupply()"( + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber]>; + + initialize( + xcAmple_: string, + globalAmpleforthEpoch_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "initialize(address,uint256)"( + xcAmple_: string, + globalAmpleforthEpoch_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + lastRebaseTimestampSec(overrides?: CallOverrides): Promise; + + "lastRebaseTimestampSec()"(overrides?: CallOverrides): Promise; + + mint( + recipient: string, + xcAmpleAmount: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "mint(address,uint256)"( + recipient: string, + xcAmpleAmount: BigNumberish, + overrides?: CallOverrides + ): Promise; + + nextGlobalAMPLSupply(overrides?: CallOverrides): Promise; + + "nextGlobalAMPLSupply()"(overrides?: CallOverrides): Promise; + + nextGlobalAmpleforthEpoch(overrides?: CallOverrides): Promise; + + "nextGlobalAmpleforthEpoch()"( + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + rebase(overrides?: CallOverrides): Promise; + + "rebase()"(overrides?: CallOverrides): Promise; + + rebaseRelayer(overrides?: CallOverrides): Promise; + + "rebaseRelayer()"(overrides?: CallOverrides): Promise; + + removeBridgeGateway( + bridgeGateway: string, + overrides?: CallOverrides + ): Promise; + + "removeBridgeGateway(address)"( + bridgeGateway: string, + overrides?: CallOverrides + ): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + "renounceOwnership()"(overrides?: CallOverrides): Promise; + + reportRebase( + nextGlobalAmpleforthEpoch_: BigNumberish, + nextGlobalAMPLSupply_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "reportRebase(uint256,uint256)"( + nextGlobalAmpleforthEpoch_: BigNumberish, + nextGlobalAMPLSupply_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + setRebaseRelayer( + rebaseRelayer_: string, + overrides?: CallOverrides + ): Promise; + + "setRebaseRelayer(address)"( + rebaseRelayer_: string, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: CallOverrides + ): Promise; + + "transferOwnership(address)"( + newOwner: string, + overrides?: CallOverrides + ): Promise; + + whitelistedBridgeGateways( + arg0: string, + overrides?: CallOverrides + ): Promise; + + "whitelistedBridgeGateways(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + xcAmple(overrides?: CallOverrides): Promise; + + "xcAmple()"(overrides?: CallOverrides): Promise; + }; + + filters: { + GatewayBurn( + bridgeGateway: string | null, + depositor: string | null, + xcAmpleAmount: null + ): TypedEventFilter< + [string, string, BigNumber], + { bridgeGateway: string; depositor: string; xcAmpleAmount: BigNumber } + >; + + GatewayMint( + bridgeGateway: string | null, + recipient: string | null, + xcAmpleAmount: null + ): TypedEventFilter< + [string, string, BigNumber], + { bridgeGateway: string; recipient: string; xcAmpleAmount: BigNumber } + >; + + GatewayRebaseReported( + bridgeGateway: string | null, + epoch: BigNumberish | null, + globalAMPLSupply: null, + timestampSec: null + ): TypedEventFilter< + [string, BigNumber, BigNumber, BigNumber], + { + bridgeGateway: string; + epoch: BigNumber; + globalAMPLSupply: BigNumber; + timestampSec: BigNumber; + } + >; + + GatewayWhitelistUpdated( + bridgeGateway: string | null, + active: null + ): TypedEventFilter< + [string, boolean], + { bridgeGateway: string; active: boolean } + >; + + LogRebase( + epoch: BigNumberish | null, + requestedSupplyAdjustment: null, + timestampSec: null + ): TypedEventFilter< + [BigNumber, BigNumber, BigNumber], + { + epoch: BigNumber; + requestedSupplyAdjustment: BigNumber; + timestampSec: BigNumber; + } + >; + + OwnershipTransferred( + previousOwner: string | null, + newOwner: string | null + ): TypedEventFilter< + [string, string], + { previousOwner: string; newOwner: string } + >; + }; + + estimateGas: { + addBridgeGateway( + bridgeGateway: string, + overrides?: Overrides + ): Promise; + + "addBridgeGateway(address)"( + bridgeGateway: string, + overrides?: Overrides + ): Promise; + + burn( + depositor: string, + xcAmpleAmount: BigNumberish, + overrides?: Overrides + ): Promise; + + "burn(address,uint256)"( + depositor: string, + xcAmpleAmount: BigNumberish, + overrides?: Overrides + ): Promise; + + globalAmpleforthEpoch(overrides?: CallOverrides): Promise; + + "globalAmpleforthEpoch()"(overrides?: CallOverrides): Promise; + + globalAmpleforthEpochAndAMPLSupply( + overrides?: CallOverrides + ): Promise; + + "globalAmpleforthEpochAndAMPLSupply()"( + overrides?: CallOverrides + ): Promise; + + initialize( + xcAmple_: string, + globalAmpleforthEpoch_: BigNumberish, + overrides?: Overrides + ): Promise; + + "initialize(address,uint256)"( + xcAmple_: string, + globalAmpleforthEpoch_: BigNumberish, + overrides?: Overrides + ): Promise; + + lastRebaseTimestampSec(overrides?: CallOverrides): Promise; + + "lastRebaseTimestampSec()"(overrides?: CallOverrides): Promise; + + mint( + recipient: string, + xcAmpleAmount: BigNumberish, + overrides?: Overrides + ): Promise; + + "mint(address,uint256)"( + recipient: string, + xcAmpleAmount: BigNumberish, + overrides?: Overrides + ): Promise; + + nextGlobalAMPLSupply(overrides?: CallOverrides): Promise; + + "nextGlobalAMPLSupply()"(overrides?: CallOverrides): Promise; + + nextGlobalAmpleforthEpoch(overrides?: CallOverrides): Promise; + + "nextGlobalAmpleforthEpoch()"( + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + rebase(overrides?: Overrides): Promise; + + "rebase()"(overrides?: Overrides): Promise; + + rebaseRelayer(overrides?: CallOverrides): Promise; + + "rebaseRelayer()"(overrides?: CallOverrides): Promise; + + removeBridgeGateway( + bridgeGateway: string, + overrides?: Overrides + ): Promise; + + "removeBridgeGateway(address)"( + bridgeGateway: string, + overrides?: Overrides + ): Promise; + + renounceOwnership(overrides?: Overrides): Promise; + + "renounceOwnership()"(overrides?: Overrides): Promise; + + reportRebase( + nextGlobalAmpleforthEpoch_: BigNumberish, + nextGlobalAMPLSupply_: BigNumberish, + overrides?: Overrides + ): Promise; + + "reportRebase(uint256,uint256)"( + nextGlobalAmpleforthEpoch_: BigNumberish, + nextGlobalAMPLSupply_: BigNumberish, + overrides?: Overrides + ): Promise; + + setRebaseRelayer( + rebaseRelayer_: string, + overrides?: Overrides + ): Promise; + + "setRebaseRelayer(address)"( + rebaseRelayer_: string, + overrides?: Overrides + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides + ): Promise; + + "transferOwnership(address)"( + newOwner: string, + overrides?: Overrides + ): Promise; + + whitelistedBridgeGateways( + arg0: string, + overrides?: CallOverrides + ): Promise; + + "whitelistedBridgeGateways(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + xcAmple(overrides?: CallOverrides): Promise; + + "xcAmple()"(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + addBridgeGateway( + bridgeGateway: string, + overrides?: Overrides + ): Promise; + + "addBridgeGateway(address)"( + bridgeGateway: string, + overrides?: Overrides + ): Promise; + + burn( + depositor: string, + xcAmpleAmount: BigNumberish, + overrides?: Overrides + ): Promise; + + "burn(address,uint256)"( + depositor: string, + xcAmpleAmount: BigNumberish, + overrides?: Overrides + ): Promise; + + globalAmpleforthEpoch( + overrides?: CallOverrides + ): Promise; + + "globalAmpleforthEpoch()"( + overrides?: CallOverrides + ): Promise; + + globalAmpleforthEpochAndAMPLSupply( + overrides?: CallOverrides + ): Promise; + + "globalAmpleforthEpochAndAMPLSupply()"( + overrides?: CallOverrides + ): Promise; + + initialize( + xcAmple_: string, + globalAmpleforthEpoch_: BigNumberish, + overrides?: Overrides + ): Promise; + + "initialize(address,uint256)"( + xcAmple_: string, + globalAmpleforthEpoch_: BigNumberish, + overrides?: Overrides + ): Promise; + + lastRebaseTimestampSec( + overrides?: CallOverrides + ): Promise; + + "lastRebaseTimestampSec()"( + overrides?: CallOverrides + ): Promise; + + mint( + recipient: string, + xcAmpleAmount: BigNumberish, + overrides?: Overrides + ): Promise; + + "mint(address,uint256)"( + recipient: string, + xcAmpleAmount: BigNumberish, + overrides?: Overrides + ): Promise; + + nextGlobalAMPLSupply( + overrides?: CallOverrides + ): Promise; + + "nextGlobalAMPLSupply()"( + overrides?: CallOverrides + ): Promise; + + nextGlobalAmpleforthEpoch( + overrides?: CallOverrides + ): Promise; + + "nextGlobalAmpleforthEpoch()"( + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + rebase(overrides?: Overrides): Promise; + + "rebase()"(overrides?: Overrides): Promise; + + rebaseRelayer(overrides?: CallOverrides): Promise; + + "rebaseRelayer()"(overrides?: CallOverrides): Promise; + + removeBridgeGateway( + bridgeGateway: string, + overrides?: Overrides + ): Promise; + + "removeBridgeGateway(address)"( + bridgeGateway: string, + overrides?: Overrides + ): Promise; + + renounceOwnership(overrides?: Overrides): Promise; + + "renounceOwnership()"(overrides?: Overrides): Promise; + + reportRebase( + nextGlobalAmpleforthEpoch_: BigNumberish, + nextGlobalAMPLSupply_: BigNumberish, + overrides?: Overrides + ): Promise; + + "reportRebase(uint256,uint256)"( + nextGlobalAmpleforthEpoch_: BigNumberish, + nextGlobalAMPLSupply_: BigNumberish, + overrides?: Overrides + ): Promise; + + setRebaseRelayer( + rebaseRelayer_: string, + overrides?: Overrides + ): Promise; + + "setRebaseRelayer(address)"( + rebaseRelayer_: string, + overrides?: Overrides + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides + ): Promise; + + "transferOwnership(address)"( + newOwner: string, + overrides?: Overrides + ): Promise; + + whitelistedBridgeGateways( + arg0: string, + overrides?: CallOverrides + ): Promise; + + "whitelistedBridgeGateways(address)"( + arg0: string, + overrides?: CallOverrides + ): Promise; + + xcAmple(overrides?: CallOverrides): Promise; + + "xcAmple()"(overrides?: CallOverrides): Promise; + }; +} diff --git a/src/Contracts/XCAmpleControllerFactory.ts b/src/Contracts/XCAmpleControllerFactory.ts new file mode 100644 index 00000000..b6548de8 --- /dev/null +++ b/src/Contracts/XCAmpleControllerFactory.ts @@ -0,0 +1,450 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Signer } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import { Contract, ContractFactory, Overrides } from "@ethersproject/contracts"; + +import type { XCAmpleController } from "./XCAmpleController"; + +export class XCAmpleControllerFactory extends ContractFactory { + constructor(signer?: Signer) { + super(_abi, _bytecode, signer); + } + + deploy(overrides?: Overrides): Promise { + return super.deploy(overrides || {}) as Promise; + } + getDeployTransaction(overrides?: Overrides): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + attach(address: string): XCAmpleController { + return super.attach(address) as XCAmpleController; + } + connect(signer: Signer): XCAmpleControllerFactory { + return super.connect(signer) as XCAmpleControllerFactory; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): XCAmpleController { + return new Contract(address, _abi, signerOrProvider) as XCAmpleController; + } +} + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "bridgeGateway", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "depositor", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "xcAmpleAmount", + type: "uint256", + }, + ], + name: "GatewayBurn", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "bridgeGateway", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "recipient", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "xcAmpleAmount", + type: "uint256", + }, + ], + name: "GatewayMint", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "bridgeGateway", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "epoch", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "globalAMPLSupply", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "timestampSec", + type: "uint256", + }, + ], + name: "GatewayRebaseReported", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "bridgeGateway", + type: "address", + }, + { + indexed: false, + internalType: "bool", + name: "active", + type: "bool", + }, + ], + name: "GatewayWhitelistUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "epoch", + type: "uint256", + }, + { + indexed: false, + internalType: "int256", + name: "requestedSupplyAdjustment", + type: "int256", + }, + { + indexed: false, + internalType: "uint256", + name: "timestampSec", + type: "uint256", + }, + ], + name: "LogRebase", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "bridgeGateway", + type: "address", + }, + ], + name: "addBridgeGateway", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "depositor", + type: "address", + }, + { + internalType: "uint256", + name: "xcAmpleAmount", + type: "uint256", + }, + ], + name: "burn", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "globalAmpleforthEpoch", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "globalAmpleforthEpochAndAMPLSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "xcAmple_", + type: "address", + }, + { + internalType: "uint256", + name: "globalAmpleforthEpoch_", + type: "uint256", + }, + ], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "lastRebaseTimestampSec", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "xcAmpleAmount", + type: "uint256", + }, + ], + name: "mint", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "nextGlobalAMPLSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "nextGlobalAmpleforthEpoch", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "rebase", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "rebaseRelayer", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "bridgeGateway", + type: "address", + }, + ], + name: "removeBridgeGateway", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "nextGlobalAmpleforthEpoch_", + type: "uint256", + }, + { + internalType: "uint256", + name: "nextGlobalAMPLSupply_", + type: "uint256", + }, + ], + name: "reportRebase", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "rebaseRelayer_", + type: "address", + }, + ], + name: "setRebaseRelayer", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "whitelistedBridgeGateways", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "xcAmple", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, +]; + +const _bytecode = + "0x608060405234801561001057600080fd5b50611185806100206000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806399deb996116100ad578063cd6dc68711610071578063cd6dc68714610281578063d9e8ec23146102ad578063f2fde38b146102e7578063f9a920881461030d578063fe5f0d1a1461031557610121565b806399deb996146102355780639c09799d1461023d5780639dc29fac14610245578063af14052c14610271578063cc314dcb1461027957610121565b806366935278116100f457806366935278146101b5578063715018a6146101db5780637663f5e2146101e357806387921ea0146102075780638da5cb5b1461022d57610121565b806309b1f9fc14610126578063105bad4f1461014e5780633a93069b1461016f57806340c10f1914610189575b600080fd5b61014c6004803603602081101561013c57600080fd5b50356001600160a01b0316610338565b005b6101566103e6565b6040805192835260208301919091528051918290030190f35b61017761046f565b60408051918252519081900360200190f35b61014c6004803603604081101561019f57600080fd5b506001600160a01b038135169060200135610475565b61014c600480360360208110156101cb57600080fd5b50356001600160a01b0316610574565b61014c61062a565b6101eb6106cc565b604080516001600160a01b039092168252519081900360200190f35b61014c6004803603602081101561021d57600080fd5b50356001600160a01b03166106db565b6101eb610755565b610177610764565b61017761076a565b61014c6004803603604081101561025b57600080fd5b506001600160a01b038135169060200135610770565b61014c61086f565b6101eb610ada565b61014c6004803603604081101561029757600080fd5b506001600160a01b038135169060200135610ae9565b6102d3600480360360208110156102c357600080fd5b50356001600160a01b0316610bb5565b604080519115158252519081900360200190f35b61014c600480360360208110156102fd57600080fd5b50356001600160a01b0316610bca565b610177610cc3565b61014c6004803603604081101561032b57600080fd5b5080359060200135610cc9565b610340610d63565b6033546001600160a01b03908116911614610390576040805162461bcd60e51b8152602060048201819052602482015260008051602061110c833981519152604482015290519081900360640190fd5b6001600160a01b0381166000818152606b60209081526040808320805460ff191690558051928352517fac9ed55978d682b61923ed2b7e5972d9ec65bd33e859849eb45b136948f53dd49281900390910190a250565b600080606754606560009054906101000a90046001600160a01b03166001600160a01b0316631a795e296040518163ffffffff1660e01b815260040160206040518083038186803b15801561043a57600080fd5b505afa15801561044e573d6000803e3d6000fd5b505050506040513d602081101561046457600080fd5b505190925090509091565b60685481565b336000908152606b602052604090205460ff166104c35760405162461bcd60e51b81526004018080602001828103825260318152602001806110ad6031913960400191505060405180910390fd5b606554604080516340c10f1960e01b81526001600160a01b03858116600483015260248201859052915191909216916340c10f1991604480830192600092919082900301818387803b15801561051857600080fd5b505af115801561052c573d6000803e3d6000fd5b50506040805184815290516001600160a01b03861693503392507f2276cb64a5c1a1b4e0a9b3dd983a74152445c9a7205a8885994430f51eef1ef79181900360200190a35050565b61057c610d63565b6033546001600160a01b039081169116146105cc576040805162461bcd60e51b8152602060048201819052602482015260008051602061110c833981519152604482015290519081900360640190fd5b6001600160a01b0381166000818152606b6020908152604091829020805460ff19166001908117909155825190815291517fac9ed55978d682b61923ed2b7e5972d9ec65bd33e859849eb45b136948f53dd49281900390910190a250565b610632610d63565b6033546001600160a01b03908116911614610682576040805162461bcd60e51b8152602060048201819052602482015260008051602061110c833981519152604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319169055565b6066546001600160a01b031681565b6106e3610d63565b6033546001600160a01b03908116911614610733576040805162461bcd60e51b8152602060048201819052602482015260008051602061110c833981519152604482015290519081900360640190fd5b606680546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031690565b60675481565b60695481565b336000908152606b602052604090205460ff166107be5760405162461bcd60e51b81526004018080602001828103825260318152602001806110ad6031913960400191505060405180910390fd5b60655460408051632770a7eb60e21b81526001600160a01b0385811660048301526024820185905291519190921691639dc29fac91604480830192600092919082900301818387803b15801561081357600080fd5b505af1158015610827573d6000803e3d6000fd5b50506040805184815290516001600160a01b03861693503392507fc6b579eab3b88dfe8714487b5065949e975cd741c0fb9322bb967c8075ddde0c9181900360200190a35050565b606754606954116108c7576040805162461bcd60e51b815260206004820181905260248201527f5843416d706c65436f6e74726f6c6c65723a2045706f6368206e6f74206e6577604482015290519081900360640190fd5b600061094b606560009054906101000a90046001600160a01b03166001600160a01b0316631a795e296040518163ffffffff1660e01b815260040160206040518083038186803b15801561091a57600080fd5b505afa15801561092e573d6000803e3d6000fd5b505050506040513d602081101561094457600080fd5b5051610d67565b606554606954606a5460408051630163b36d60e21b815260048101939093526024830191909152519293506001600160a01b039091169163058ecdb4916044808201926020929091908290030181600087803b1580156109aa57600080fd5b505af11580156109be573d6000803e3d6000fd5b505050506040513d60208110156109d457600080fd5b5050606a546000906109f19083906109eb90610d67565b90610dc9565b6069546067819055426068819055604080518481526020810192909252805193945091927f103acf79ad7b5ac64c3d3a9adc0e6f80d75d4147d7bf72efcb61480457351eb0929181900390910190a26066546001600160a01b031615610ad657606660009054906101000a90046001600160a01b03166001600160a01b031663a378ff3e6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610aa157600080fd5b505af1158015610ab5573d6000803e3d6000fd5b505050506040513d6020811015610acb57600080fd5b5051610ad657600080fd5b5050565b6065546001600160a01b031681565b600054610100900460ff1680610b025750610b02610e35565b80610b10575060005460ff16155b610b4b5760405162461bcd60e51b815260040180806020018281038252602e8152602001806110de602e913960400191505060405180910390fd5b600054610100900460ff16158015610b76576000805460ff1961ff0019909116610100171660011790555b610b7e610e3b565b606580546001600160a01b0319166001600160a01b03851617905560678290558015610bb0576000805461ff00191690555b505050565b606b6020526000908152604090205460ff1681565b610bd2610d63565b6033546001600160a01b03908116911614610c22576040805162461bcd60e51b8152602060048201819052602482015260008051602061110c833981519152604482015290519081900360640190fd5b6001600160a01b038116610c675760405162461bcd60e51b81526004018080602001828103825260268152602001806110876026913960400191505060405180910390fd5b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b606a5481565b336000908152606b602052604090205460ff16610d175760405162461bcd60e51b81526004018080602001828103825260318152602001806110ad6031913960400191505060405180910390fd5b6069829055606a819055604080518281524260208201528151849233927faff3f230b06afa07a1935063aa6b673104174ba95f91110d5cf273fb5a73f6a1929081900390910190a35050565b3390565b60006001600160ff1b03821115610dc5576040805162461bcd60e51b815260206004820152601b60248201527f55496e743235364c69623a20696e74323536206f766572666c6f770000000000604482015290519081900360640190fd5b5090565b6000818303818312801590610dde5750838113155b80610df35750600083128015610df357508381135b610e2e5760405162461bcd60e51b815260040180806020018281038252602481526020018061112c6024913960400191505060405180910390fd5b9392505050565b303b1590565b600054610100900460ff1680610e545750610e54610e35565b80610e62575060005460ff16155b610e9d5760405162461bcd60e51b815260040180806020018281038252602e8152602001806110de602e913960400191505060405180910390fd5b600054610100900460ff16158015610ec8576000805460ff1961ff0019909116610100171660011790555b610ed0610eed565b610ed8610f8d565b8015610eea576000805461ff00191690555b50565b600054610100900460ff1680610f065750610f06610e35565b80610f14575060005460ff16155b610f4f5760405162461bcd60e51b815260040180806020018281038252602e8152602001806110de602e913960400191505060405180910390fd5b600054610100900460ff16158015610ed8576000805460ff1961ff0019909116610100171660011790558015610eea576000805461ff001916905550565b600054610100900460ff1680610fa65750610fa6610e35565b80610fb4575060005460ff16155b610fef5760405162461bcd60e51b815260040180806020018281038252602e8152602001806110de602e913960400191505060405180910390fd5b600054610100900460ff1615801561101a576000805460ff1961ff0019909116610100171660011790555b6000611024610d63565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015610eea576000805461ff00191690555056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735843416d706c65436f6e74726f6c6c65723a204272696467652067617465776179206e6f742077686974656c6973746564496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65644f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77a2646970667358221220533eed1b2e059ca8f1836d74de719d4d4d0da6e3c12663caa62d17480c9928a464736f6c634300060c0033"; diff --git a/src/Contracts/commons.ts b/src/Contracts/commons.ts new file mode 100644 index 00000000..760b7a6a --- /dev/null +++ b/src/Contracts/commons.ts @@ -0,0 +1,23 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { EventFilter, Event } from "ethers"; +import { Result } from "@ethersproject/abi"; + +export interface TypedEventFilter<_EventArgsArray, _EventArgsObject> + extends EventFilter {} + +export interface TypedEvent extends Event { + args: EventArgs; +} + +export type TypedListener< + EventArgsArray extends Array, + EventArgsObject +> = ( + ...listenerArg: [ + ...EventArgsArray, + TypedEvent + ] +) => void; diff --git a/src/Layouts/AppFooter.tsx b/src/Layouts/AppFooter.tsx new file mode 100644 index 00000000..291c44e1 --- /dev/null +++ b/src/Layouts/AppFooter.tsx @@ -0,0 +1,47 @@ +import { createStyles, ITheme, makeStyles } from "@chainsafe/common-theme"; +import React, { useState } from "react"; +import clsx from "clsx"; +import AboutDrawer from "../Modules/AboutDrawer"; +import MeterLogo from "../media/bridges/meter.png"; + +const useStyles = makeStyles(({ constants, palette, zIndex }: ITheme) => { + return createStyles({ + root: { + display: "flex", + position: "fixed", + justifyContent: "space-between", + padding: `${constants.generalUnit * 2}px ${constants.generalUnit * 4}px`, + width: "100%", + bottom: 0, + left: 0, + backgroundColor: palette.additional["header"][1], + borderTop: `1px solid ${palette.additional["header"][3]}`, + color: palette.additional["header"][2], + alignItems: "center", + zIndex: zIndex?.layer1, + }, + bridgeLogo: { + width: "50px", + } + }); +}); + +interface IAppFooter {} + +const AppFooter: React.FC = () => { + const classes = useStyles(); + const [aboutOpen, setAboutOpen] = useState(false); + return ( +
+ setAboutOpen(false)} /> + +
+ ); +}; + +export default AppFooter; diff --git a/src/Layouts/AppHeader.tsx b/src/Layouts/AppHeader.tsx index 98a0c678..aa6d08f8 100644 --- a/src/Layouts/AppHeader.tsx +++ b/src/Layouts/AppHeader.tsx @@ -3,8 +3,9 @@ import React from "react"; import clsx from "clsx"; import { Typography } from "@chainsafe/common-components"; import { shortenAddress } from "../Utils/Helpers"; -import { useWeb3 } from "@chainsafe/web3-context"; +import { useWeb3 } from "@meterio/web3-context"; import { useChainbridge } from "../Contexts/ChainbridgeContext"; +// import AMPLLogo from "../media/ample-logo/logo.png"; const useStyles = makeStyles(({ constants, palette, zIndex }: ITheme) => { return createStyles({ @@ -20,7 +21,7 @@ const useStyles = makeStyles(({ constants, palette, zIndex }: ITheme) => { borderBottom: `1px solid ${palette.additional["header"][3]}`, color: palette.additional["header"][2], alignItems: "center", - zIndex: zIndex?.layer2, + zIndex: zIndex?.layer1, }, left: { display: "flex", @@ -36,6 +37,17 @@ const useStyles = makeStyles(({ constants, palette, zIndex }: ITheme) => { maxWidth: "100%", }, }, + logoBranding: { + fontFamily: 'Montserrat Alternates', + fontWeight: 900, + fontStyle: "normal", + letterSpacing: "0px", + fontSize: "1.25rem", + color: "black", + }, + logoLink: { + textDecoration: "none", + }, state: { display: "flex", flexDirection: "row", @@ -65,11 +77,12 @@ const AppHeader: React.FC = () => { return (
- {/* ADD LOGO HERE */} - {/*
- -
*/} - ChainBridge Token Swap + {/*
+ +
*/} + + AMPL Bridge +
{!isReady ? ( diff --git a/src/Layouts/AppWrapper.tsx b/src/Layouts/AppWrapper.tsx index eab40626..792331c9 100644 --- a/src/Layouts/AppWrapper.tsx +++ b/src/Layouts/AppWrapper.tsx @@ -3,6 +3,7 @@ import { createStyles, ITheme, makeStyles } from "@chainsafe/common-theme"; import React from "react"; import { ReactNode } from "react"; import AppHeader from "./AppHeader"; +import AppFooter from "./AppFooter"; import { ReactComponent as GlobalSvg } from "../media/Icons/global.svg"; import { ReactComponent as GiftSvg } from "../media/Icons/gift.svg"; import { ROUTE_LINKS } from "../Components/Routes"; @@ -16,12 +17,12 @@ const useStyles = makeStyles(({ animation, constants, palette }: ITheme) => { minHeight: "100vh", display: "flex", flexDirection: "column", - justifyContent: "center", + // justifyContent: "center", paddingTop: 60, }, inner: { - paddingTop: (constants.navItemHeight as number) * 2, - paddingBottom: (constants.navItemHeight as number) * 2, + paddingTop: (constants.navItemHeight as number) * 0.5, + paddingBottom: (constants.navItemHeight as number) * 0.5, }, cta: { display: "block", @@ -40,15 +41,18 @@ const useStyles = makeStyles(({ animation, constants, palette }: ITheme) => { maxWidth: 460, display: "flex", flexDirection: "column", - overflow: "hidden", - borderRadius: 4, + // overflow: "hidden", + borderRadius: 0, }, pageArea: { height: "100%", width: "100%", overflow: "hidden", - border: `1px solid ${palette.additional["gray"][7]}`, - borderRadius: 4, + // border: `1px solid ${palette.additional["gray"][7]}`, + borderRadius: 0, + "-webkit-box-shadow": "0px -2px 25px -3px rgb(0 0 0 / 10%)", + "-moz-box-shadow": "0px -2px 25px -3px rgba(0, 0, 0, 0.1)", + "box-shadow": "0px -2px 25px -3px rgb(0 0 0 / 10%)", }, navTabs: { // position: "absolute", @@ -104,16 +108,12 @@ const AppWrapper: React.FC = ({ children }: IAppWrapper) => {
-
+ {/*
Transfer - - - Wrap token - -
+
*/}
{children}
@@ -121,6 +121,7 @@ const AppWrapper: React.FC = ({ children }: IAppWrapper) => { {/* */}
+
); }; diff --git a/src/Modules/AboutDrawer.tsx b/src/Modules/AboutDrawer.tsx index b60c28f6..121af1d9 100644 --- a/src/Modules/AboutDrawer.tsx +++ b/src/Modules/AboutDrawer.tsx @@ -4,12 +4,16 @@ import { makeStyles, createStyles, ITheme } from "@chainsafe/common-theme"; import CustomDrawer from "../Components/Custom/CustomDrawer"; import { Button, Typography } from "@chainsafe/common-components"; -const useStyles = makeStyles(({ constants }: ITheme) => +const useStyles = makeStyles(({ constants, zIndex }: ITheme) => createStyles({ root: { display: "flex", flexDirection: "column", justifyContent: "space-between", + zIndex: zIndex?.layer3, + }, + link: { + color: "#ffffff", }, buttons: { display: "flex", @@ -37,18 +41,20 @@ const AboutDrawer: React.FC = ({ return ( - What is ChainBridge? + What is the AMPL Bridge? - ChainBridge is a modular multi-directional blockchain bridge to allow - data and value transfer between any number of blockchains. This should - enable users to specify a destination blockchain from their source - chain, and send data to that blockchain for consumption on the - destination chain.
-
- This could be a token that is locked on ChainA and redeemed on ChainB, - or an operation that is executed on a destination chain and initiated on - the source chain. + The AMPL Bridge is a n-way POA +  blockchain bridge which allows AMPL to be + transferred between any two connected blockchains. +


+ + This bridge currently supports transfers between Ethereum and BSC and is validated by +  Meter Passport. +


+ + Learn more +  about how AMPL works acorss muliple chains.
diff --git a/src/Themes/AmpleforthTheme.ts b/src/Themes/AmpleforthTheme.ts new file mode 100644 index 00000000..63bbcd60 --- /dev/null +++ b/src/Themes/AmpleforthTheme.ts @@ -0,0 +1,114 @@ +import { createTheme } from "@chainsafe/common-theme"; + +export const ampleTheme = createTheme({ + globalStyling: { + body: { + background: "#ffffff", + }, + }, + themeConfig: { + constants: { + navItemHeight: 42, + }, + palette: { + additional: { + general: { + 1: "#007AFF", // Accents + }, + transferUi: { + 1: "#5856d6", // FAQ button + }, + header: { + 1: "#ffffff", // Background + 2: "#595959", // Text color + 3: "#ffffff00", // border + }, + preflight: { + 1: "#85A5FF", // Button bg color + 2: "#262626", // Button color + }, + transactionModal: { + 1: "#597EF7", // border //geekblue5 + 2: "#85A5FF", // indicator border //geekblue4 + 3: "#2F54EB", // indicator text //geekblue6 + }, + }, + }, + overrides: { + CheckboxInput: { + root: { + alignItems: "center", + }, + }, + Button: { + variants: { + primary: { + root: { + backgroundColor: "#262626", + color: "#ffffff", + border: `1px solid #262626`, + "& svg": { + fill: "#ffffff", + }, + }, + active: { + backgroundColor: "#ffffff", + color: "#262626", + "& svg": { + fill: "#262626", + }, + }, + hover: { + backgroundColor: "#ffffff", + color: "#262626", + "& svg": { + fill: "#262626", + }, + }, + focus: { + backgroundColor: "#ffffff", + color: "#262626", + "& svg": { + fill: "#262626", + }, + }, + }, + outline: { + root: { + backgroundColor: "transparent", + color: "#ffffff", + border: `1px solid #ffffff`, + "& svg": { + fill: "#ffffff", + }, + }, + active: { + backgroundColor: "#ffffff", + color: "#262626", + borderColor: "#ffffff", + "& svg": { + fill: "#262626", + }, + }, + hover: { + backgroundColor: "#ffffff", + color: "#262626", + borderColor: "#ffffff", + "& svg": { + fill: "#262626", + }, + }, + focus: { + backgroundColor: "#ffffff", + color: "#262626", + borderColor: "#ffffff", + "& svg": { + fill: "#262626", + }, + }, + }, + }, + }, + }, + }, +}); diff --git a/src/Utils/XCAmple.tsx b/src/Utils/XCAmple.tsx new file mode 100644 index 00000000..d7ccef73 --- /dev/null +++ b/src/Utils/XCAmple.tsx @@ -0,0 +1,56 @@ +import { + BigNumber, + BigNumberish, + utils, +} from "ethers"; + + +const toHex = (covertThis:number, padding:number):string => { + return utils.hexZeroPad(utils.hexlify(covertThis), padding); +}; + +const createGenericDepositData = (hexMetaData:string):string => { + if (hexMetaData === null) { + return '0x' + toHex(0, 32).substr(2); + } + const hexMetaDataLength = hexMetaData.substr(2).length / 2; + return '0x' + toHex(hexMetaDataLength, 32).substr(2) + hexMetaData.substr(2); +}; + +export const safeRound = (amount:number, decimals:number):string => { + const nDecimals = decimals/2; + const adjFactor = 10**(nDecimals); + return (Math.floor(amount*adjFactor) / adjFactor).toFixed(nDecimals); +} + +export const packXCTransferData = (depositor:string, recipient:string, amount:BigNumberish, totalSupply:BigNumberish):string => { + return createGenericDepositData( + utils.defaultAbiCoder.encode( + ['address', 'address', 'uint256', 'uint256'], + [depositor, recipient, amount, totalSupply], + ), + ); +}; + +export type TransferData = { + depositor: string; + recipient: string; + amount: BigNumber; + totalSupply: BigNumber; +}; + +export const decodeXCTransferData = (data:string):TransferData => { + const r = utils.defaultAbiCoder.decode( + ['address', 'address', 'uint256', 'uint256'], + data, + ); + + const t:TransferData = { + depositor:r[0], + recipient:r[1], + amount:BigNumber.from(r[2]), + totalSupply:BigNumber.from(r[3]), + }; + + return t; +}; diff --git a/src/chainbridgeConfig.ts b/src/chainbridgeConfig.ts index bf1f4458..bb8dc38c 100644 --- a/src/chainbridgeConfig.ts +++ b/src/chainbridgeConfig.ts @@ -1,5 +1,5 @@ -import ETHIcon from "./media/tokens/eth.svg"; -import WETHIcon from "./media/tokens/weth.svg"; +import AMPLIcon from "./media/ample-logo/logo.png"; +// import AMPL_BSC_MP_Icon from "./media/ample-logo/ampl_bsc_mp.png"; export type TokenConfig = { address: string; @@ -15,121 +15,166 @@ export type BridgeConfig = { networkId: number; name: string; bridgeAddress: string; - erc20HandlerAddress: string; + genericHandlerAddress: string; + controller: string; + approvalContract: string; rpcUrl: string; type: "Ethereum" | "Substrate"; tokens: TokenConfig[]; nativeTokenSymbol: string; - //This should be the full path to display a tx hash, without the trailing slash, ie. https://etherscan.io/tx + // This should be the full path to display a tx hash, without the trailing slash, ie. https://etherscan.io/tx blockExplorer?: string; defaultGasPrice?: number; + deployedBlockNumber?: number; }; export type ChainbridgeConfig = { chains: BridgeConfig[]; }; +// mainnet export const chainbridgeConfig: ChainbridgeConfig = { - // Goerli - Kotti Bridge chains: [ { chainId: 1, - networkId: 5, - name: "Ethereum - Goerli", - bridgeAddress: "0x2524d71D163f60747630c4EBeB077a9832329646", - erc20HandlerAddress: "0xDc26320258ADfd806d125223Fb0F94e54D13FA51", - rpcUrl: "https://goerli.prylabs.net", + networkId: 1, + name: "Ethereum", + bridgeAddress: "0xa7E2cE557980618253D9dafdEDb27ecCe2F82167", + genericHandlerAddress: "0x5945432d6c0A4b30c1178888F776a4d430d5BC94", + controller: "0x1B228a749077b8e307C5856cE62Ef35d96Dca2ea", + approvalContract: "0x805c7Ecba41f9321bb098ec1cf31d86d9407de2F", + rpcUrl: + "https://eth-mainnet.alchemyapi.io/v2/x2jT9wfMVj9S3IjBoniQXNAF14Yaktg6", type: "Ethereum", - blockExplorer: "https://goerli.etherscan.io/tx", + blockExplorer: "https://etherscan.io/tx", nativeTokenSymbol: "ETH", + deployedBlockNumber: 15648033, tokens: [ { - address: "0x735B895bCb37cBba5812154f4F34480EcE1B672C", - name: "Wrapped ETC", - symbol: "wETC", - imageUri: WETHIcon, + address: "0xD46bA6D942050d489DBd938a2C909A5d5039A161", + imageUri: AMPLIcon, resourceId: - "0x000000000000000000000023A9FD05ef0c5fb9dDE964C4d4191A169Fd221f802", + "0x1f3eb8ee12ce38ffa19fc4c635621ad2c9a0bd609def9ddce77680e33bc2224b", }, + ], + }, + { + chainId: 4, + networkId: 56, + name: "BSC", + bridgeAddress: "0x8209815136b35F21B8C0f5AA2E2f915a73530dF9", + genericHandlerAddress: "0x431a7Bb43b6242225Ceb97Bde140219b4d043116", + controller: "0x17F084dFF8a71e38521BCBD3Da871753Dc67aa81", + approvalContract: "0x17F084dFF8a71e38521BCBD3Da871753Dc67aa81", + rpcUrl: "https://bsc-dataseed.binance.org/", + type: "Ethereum", + blockExplorer: "https://bscscan.com/tx", + nativeTokenSymbol: "BNB", + deployedBlockNumber: 21787431, + tokens: [ { - address: "0x14dD060dB55c0E7cc072BD3ab4709d55583119c0", - name: "An ERC20", - symbol: "ERC20", - imageUri: ETHIcon, + address: "0xDB021b1B247fe2F1fa57e0A87C748Cc1E321F07F", + imageUri: AMPLIcon, resourceId: - "0x000000000000000000000014dD060dB55c0E7cc072BD3ab4709d55583119c001", + "0x1f3eb8ee12ce38ffa19fc4c635621ad2c9a0bd609def9ddce77680e33bc2224b", }, ], }, { chainId: 2, - networkId: 6, - name: "Ethereum Classic - Kotti", - bridgeAddress: "0x2524d71D163f60747630c4EBeB077a9832329646", - erc20HandlerAddress: "0xDc26320258ADfd806d125223Fb0F94e54D13FA51", - rpcUrl: "https://www.ethercluster.com/kotti", + networkId: 43114, + name: "AVAX", + bridgeAddress: "0xB447acD21831F6615e208c9EEa7E6049dB3391Cd", + genericHandlerAddress: "0x0B9709FE3aa76068f07d054fd4417445D5c7DA9A", + controller: "0x24232ccAf8bB87908C419aD7dDCca8cc9e74746d", + approvalContract: "0x24232ccAf8bB87908C419aD7dDCca8cc9e74746d", + rpcUrl: "https://api.avax.network/ext/bc/C/rpc", type: "Ethereum", - blockExplorer: "https://blockscout.com/etc/kotti/tx", - nativeTokenSymbol: "ETC", + blockExplorer: "https://snowtrace.io/tx", + nativeTokenSymbol: "AVAX", + deployedBlockNumber: 20477952, + defaultGasPrice: 20, tokens: [ { - address: "0x23A9FD05ef0c5fb9dDE964C4d4191A169Fd221f8", - name: "Wrapped ETC", - symbol: "wETC", - imageUri: WETHIcon, + address: "0x027dbcA046ca156De9622cD1e2D907d375e53aa7", + imageUri: AMPLIcon, resourceId: - "0x000000000000000000000023A9FD05ef0c5fb9dDE964C4d4191A169Fd221f802", - isNativeWrappedToken: true, + "0x1f3eb8ee12ce38ffa19fc4c635621ad2c9a0bd609def9ddce77680e33bc2224b", }, + ], + }, + { + chainId: 3, + networkId: 82, + name: "MTR", + bridgeAddress: "0x23894d2937A2a4A479f0407909DA5B028049568E", + genericHandlerAddress: "0x701627e8638c452732eceCC7d0238746654fb365", + controller: "0x5353C43b3aF8E9F9c044B55Ea2c139aC977E0F19", + approvalContract: "0x5353C43b3aF8E9F9c044B55Ea2c139aC977E0F19", + rpcUrl: "https://rpc.meter.io", + type: "Ethereum", + blockExplorer: "https://scan.meter.io/tx", + nativeTokenSymbol: "MTR", + deployedBlockNumber: 28698530, + tokens: [ { - address: "0x14dD060dB55c0E7cc072BD3ab4709d55583119c0", - name: "An ERC20", - symbol: "ERC20", - imageUri: ETHIcon, + address: "0x1cf09D1B5Da9d9d24365D87B932A7c4bD018A419", + imageUri: AMPLIcon, resourceId: - "0x000000000000000000000014dD060dB55c0E7cc072BD3ab4709d55583119c001", + "0x1f3eb8ee12ce38ffa19fc4c635621ad2c9a0bd609def9ddce77680e33bc2224b", }, ], }, ], - - // DEVNET - // erc20ResourceId: - // "0x00000000000000000000000021605f71845f372A9ed84253d2D024B7B10999f4", - // chains: [ - // { - // chainId: 1, - // networkId: 5, - // name: "Ethereum - A", - // bridgeAddress: "0x62877dDCd49aD22f5eDfc6ac108e9a4b5D2bD88B", - // erc20HandlerAddress: "0x3167776db165D8eA0f51790CA2bbf44Db5105ADF", - // rpcUrl: "http://localhost:8545", - // type: "Ethereum", - // tokens: [ - // { - // address: "0x21605f71845f372A9ed84253d2D024B7B10999f4", - // name: "Test EthA", - // symbol: "TESTA", - // imageUri: ETHIcon, - // }, - // ], - // }, - // { - // chainId: 2, - // networkId: 6, - // name: "Ethereum - B", - // bridgeAddress: "0x62877dDCd49aD22f5eDfc6ac108e9a4b5D2bD88B", - // erc20HandlerAddress: "0x3167776db165D8eA0f51790CA2bbf44Db5105ADF", - // rpcUrl: "http://localhost:8546", - // type: "Ethereum", - // tokens: [ - // { - // address: "0x21605f71845f372A9ed84253d2D024B7B10999f4", - // name: "Test EthB", - // symbol: "TESTB", - // imageUri: ETHIcon, - // }, - // ], - // }, - // ] }; + +// testnet +// export const chainbridgeConfig: ChainbridgeConfig = { +// chains: [ +// { +// chainId: 1, +// networkId: 5, +// name: "Goeril", +// bridgeAddress: "0x2Ff19376B6F27A03B621b5c018f852BFAa416835", +// genericHandlerAddress: "0xEe373E583e313B0bd9d7dc6DEc694dc074212e86", +// controller: "0xE5D1351801aE21BA9A4d4880b58ce72F60b31546", +// approvalContract: "0x7b939c0BC023bdffA520791A30628FCabE6164Ae", +// rpcUrl: +// "https://eth-goerli.alchemyapi.io/v2/x2jT9wfMVj9S3IjBoniQXNAF14Yaktg6", +// type: "Ethereum", +// blockExplorer: "https://goerli.etherscan.io/tx", +// nativeTokenSymbol: "GETH", +// deployedBlockNumber: 7554032, +// tokens: [ +// { +// address: "0x28C07523b22ADb47424A835a124C1A31236FFfE4", +// imageUri: AMPLIcon, +// resourceId: +// "0x1f3eb8ee12ce38ffa19fc4c635621ad2c9a0bd609def9ddce77680e33bc2224b", +// }, +// ], +// }, +// { +// chainId: 3, +// networkId: 83, +// name: "Meter Testnet", +// bridgeAddress: "0xcE785E92bc448de7c58D3f7D74F2BDcEd9Cc7c49", +// genericHandlerAddress: "0x64BBA8492a0CfaB65a954860Cf1D99b28eD2D418", +// controller: "0x122ef99672eFD49123Ce54cE1Ca902fC3125678f", +// approvalContract: "0x122ef99672eFD49123Ce54cE1Ca902fC3125678f", +// rpcUrl: "https://rpctest.meter.io", +// type: "Ethereum", +// blockExplorer: "https://scan-warringstakes.meter.io/", +// nativeTokenSymbol: "TMTR", +// deployedBlockNumber: 19726633, +// tokens: [ +// { +// address: "0xEc133791822D441d2CA58A51D4b53cC23b2e7B73", +// imageUri: AMPLIcon, +// resourceId: +// "0x1f3eb8ee12ce38ffa19fc4c635621ad2c9a0bd609def9ddce77680e33bc2224b", +// }, +// ], +// }, +// ], +// }; diff --git a/src/media/ample-logo/ampl_bsc_mp.png b/src/media/ample-logo/ampl_bsc_mp.png new file mode 100644 index 00000000..6030f76e Binary files /dev/null and b/src/media/ample-logo/ampl_bsc_mp.png differ diff --git a/src/media/ample-logo/logo.png b/src/media/ample-logo/logo.png new file mode 100644 index 00000000..da535f6d Binary files /dev/null and b/src/media/ample-logo/logo.png differ diff --git a/src/media/ample-logo/logo_clear.png b/src/media/ample-logo/logo_clear.png new file mode 100755 index 00000000..02a67ea5 Binary files /dev/null and b/src/media/ample-logo/logo_clear.png differ diff --git a/src/media/ample-logo/logo_small_text b/src/media/ample-logo/logo_small_text new file mode 100755 index 00000000..3872d3f5 Binary files /dev/null and b/src/media/ample-logo/logo_small_text differ diff --git a/src/media/ample-logo/logo_white.png b/src/media/ample-logo/logo_white.png new file mode 100755 index 00000000..0d3e6488 Binary files /dev/null and b/src/media/ample-logo/logo_white.png differ diff --git a/src/media/bridges/meter.png b/src/media/bridges/meter.png new file mode 100644 index 00000000..51b342b8 Binary files /dev/null and b/src/media/bridges/meter.png differ diff --git a/tsconfig.json b/tsconfig.json index 2cd50b9f..76aab169 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -17,7 +17,8 @@ "sourceMap": true, "inlineSources": true, "sourceRoot": "/", - "downlevelIteration": true + "downlevelIteration": true, + "noImplicitAny": false }, "include": ["src"] } diff --git a/yarn.lock b/yarn.lock index 2a1aeb86..38fdba9f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1190,13 +1190,6 @@ dependencies: ts-essentials "^7.0.1" -"@chainsafe/web3-context@1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@chainsafe/web3-context/-/web3-context-1.2.0.tgz#679509ed9da7e9dea4567c2151bfd7d612e89914" - integrity sha512-BajGPIbzSRn0vQ4eNmwz+EAq2ax1U7E5BMp36uxNf674ZzvpZbG2nkU9rP9JlCHKVOrpy0608cMUBWa4IPdH2g== - dependencies: - bignumber.js "^9.0.1" - "@chaitanyapotti/random-id@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@chaitanyapotti/random-id/-/random-id-1.0.3.tgz#f52f647cfe9f79fc7723ea2b01b0ad3889204002" @@ -1306,7 +1299,7 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== -"@ethersproject/abi@5.0.7", "@ethersproject/abi@^5.0.5": +"@ethersproject/abi@5.0.7": version "5.0.7" resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.7.tgz#79e52452bd3ca2956d0e1c964207a58ad1a0ee7b" integrity sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw== @@ -1321,7 +1314,35 @@ "@ethersproject/properties" "^5.0.3" "@ethersproject/strings" "^5.0.4" -"@ethersproject/abstract-provider@5.0.5", "@ethersproject/abstract-provider@^5.0.4": +"@ethersproject/abi@5.4.0", "@ethersproject/abi@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.4.0.tgz#a6d63bdb3672f738398846d4279fa6b6c9818242" + integrity sha512-9gU2H+/yK1j2eVMdzm6xvHSnMxk8waIHQGYCZg5uvAyH0rsAzxkModzBSpbAkAuhKFEovC2S9hM4nPuLym8IZw== + dependencies: + "@ethersproject/address" "^5.4.0" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/constants" "^5.4.0" + "@ethersproject/hash" "^5.4.0" + "@ethersproject/keccak256" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/strings" "^5.4.0" + +"@ethersproject/abstract-provider@5.4.1", "@ethersproject/abstract-provider@^5.4.0": + version "5.4.1" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.4.1.tgz#e404309a29f771bd4d28dbafadcaa184668c2a6e" + integrity sha512-3EedfKI3LVpjSKgAxoUaI+gB27frKsxzm+r21w9G60Ugk+3wVLQwhi1LsEJAKNV7WoZc8CIpNrATlL1QFABjtQ== + dependencies: + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/networks" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/transactions" "^5.4.0" + "@ethersproject/web" "^5.4.0" + +"@ethersproject/abstract-provider@^5.0.4": version "5.0.5" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.0.5.tgz#797a32a8707830af1ad8f833e9c228994d5572b9" integrity sha512-i/CjElAkzV7vQBAeoz+IpjGfcFYEP9eD7j3fzZ0fzTq03DO7PPnR+xkEZ1IoDXGwDS+55aLM1xvLDwB/Lx6IOQ== @@ -1334,7 +1355,18 @@ "@ethersproject/transactions" "^5.0.5" "@ethersproject/web" "^5.0.6" -"@ethersproject/abstract-signer@5.0.7", "@ethersproject/abstract-signer@^5.0.4", "@ethersproject/abstract-signer@^5.0.6": +"@ethersproject/abstract-signer@5.4.1", "@ethersproject/abstract-signer@^5.4.0": + version "5.4.1" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.4.1.tgz#e4e9abcf4dd4f1ba0db7dff9746a5f78f355ea81" + integrity sha512-SkkFL5HVq1k4/25dM+NWP9MILgohJCgGv5xT5AcRruGz4ILpfHeBtO/y6j+Z3UN/PAjDeb4P7E51Yh8wcGNLGA== + dependencies: + "@ethersproject/abstract-provider" "^5.4.0" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + +"@ethersproject/abstract-signer@^5.0.6": version "5.0.7" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.0.7.tgz#cdbd3bd479edf77c71b7f6a6156b0275b1176ded" integrity sha512-8W8gy/QutEL60EoMEpvxZ8MFAEWs/JvH5nmZ6xeLXoZvmBCasGmxqHdYjo2cxg0nevkPkq9SeenSsBBZSCx+SQ== @@ -1345,7 +1377,18 @@ "@ethersproject/logger" "^5.0.5" "@ethersproject/properties" "^5.0.3" -"@ethersproject/address@5.0.5", "@ethersproject/address@^5.0.4", "@ethersproject/address@^5.0.5": +"@ethersproject/address@5.4.0", "@ethersproject/address@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.4.0.tgz#ba2d00a0f8c4c0854933b963b9a3a9f6eb4a37a3" + integrity sha512-SD0VgOEkcACEG/C6xavlU1Hy3m5DGSXW3CUHkaaEHbAPPsgi0coP5oNPsxau8eTlZOk/bpa/hKeCNoK5IzVI2Q== + dependencies: + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/keccak256" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/rlp" "^5.4.0" + +"@ethersproject/address@^5.0.4", "@ethersproject/address@^5.0.5": version "5.0.5" resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.5.tgz#2caa65f6b7125015395b1b54c985ee0b27059cc7" integrity sha512-DpkQ6rwk9jTefrRsJzEm6nhRiJd9pvhn1xN0rw5N/jswXG5r7BLk/GVA0mMAVWAsYfvi2xSc5L41FMox43RYEA== @@ -1357,22 +1400,38 @@ "@ethersproject/rlp" "^5.0.3" bn.js "^4.4.0" -"@ethersproject/base64@5.0.4", "@ethersproject/base64@^5.0.3": +"@ethersproject/base64@5.4.0", "@ethersproject/base64@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.4.0.tgz#7252bf65295954c9048c7ca5f43e5c86441b2a9a" + integrity sha512-CjQw6E17QDSSC5jiM9YpF7N1aSCHmYGMt9bWD8PWv6YPMxjsys2/Q8xLrROKI3IWJ7sFfZ8B3flKDTM5wlWuZQ== + dependencies: + "@ethersproject/bytes" "^5.4.0" + +"@ethersproject/base64@^5.0.3": version "5.0.4" resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.0.4.tgz#b0d8fdbf3dda977cf546dcd35725a7b1d5256caa" integrity sha512-4KRykQ7BQMeOXfvio1YITwHjxwBzh92UoXIdzxDE1p53CK28bbHPdsPNYo0wl0El7lJAMpT2SOdL0hhbWRnyIA== dependencies: "@ethersproject/bytes" "^5.0.4" -"@ethersproject/basex@5.0.4", "@ethersproject/basex@^5.0.3": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.0.4.tgz#93e1cd11f9a47281da2389de24f88e13e9d90847" - integrity sha512-ixIr/kKiAoSzOnSc777AGIOAhKai5Ivqr4HO/Gz+YG+xkfv6kqD6AW4ga9vM20Wwb0QBhh3LoRWTu4V1K+x9Ew== +"@ethersproject/basex@5.4.0", "@ethersproject/basex@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.4.0.tgz#0a2da0f4e76c504a94f2b21d3161ed9438c7f8a6" + integrity sha512-J07+QCVJ7np2bcpxydFVf/CuYo9mZ7T73Pe7KQY4c1lRlrixMeblauMxHXD0MPwFmUHZIILDNViVkykFBZylbg== dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/properties" "^5.0.3" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/properties" "^5.4.0" -"@ethersproject/bignumber@5.0.8", "@ethersproject/bignumber@^5.0.7", "@ethersproject/bignumber@^5.0.8": +"@ethersproject/bignumber@5.4.1", "@ethersproject/bignumber@^5.4.0": + version "5.4.1" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.4.1.tgz#64399d3b9ae80aa83d483e550ba57ea062c1042d" + integrity sha512-fJhdxqoQNuDOk6epfM7yD6J8Pol4NUCy1vkaGAkuujZm0+lNow//MKu1hLhRiYV4BsOHyBv5/lsTjF+7hWwhJg== + dependencies: + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + bn.js "^4.11.9" + +"@ethersproject/bignumber@^5.0.7", "@ethersproject/bignumber@^5.0.8": version "5.0.8" resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.0.8.tgz#cee33bd8eb0266176def0d371b45274b1d2c4ec0" integrity sha512-KXFVAFKS1jdTXYN8BE5Oj+ZfPMh28iRdFeNGBVT6cUFdtiPVqeXqc0ggvBqA3A1VoFFGgM7oAeaagA393aORHA== @@ -1381,36 +1440,65 @@ "@ethersproject/logger" "^5.0.5" bn.js "^4.4.0" -"@ethersproject/bytes@5.0.5", "@ethersproject/bytes@^5.0.4": +"@ethersproject/bytes@5.4.0", "@ethersproject/bytes@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.4.0.tgz#56fa32ce3bf67153756dbaefda921d1d4774404e" + integrity sha512-H60ceqgTHbhzOj4uRc/83SCN9d+BSUnOkrr2intevqdtEMO1JFVZ1XL84OEZV+QjV36OaZYxtnt4lGmxcGsPfA== + dependencies: + "@ethersproject/logger" "^5.4.0" + +"@ethersproject/bytes@^5.0.4": version "5.0.5" resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.0.5.tgz#688b70000e550de0c97a151a21f15b87d7f97d7c" integrity sha512-IEj9HpZB+ACS6cZ+QQMTqmu/cnUK2fYNE6ms/PVxjoBjoxc6HCraLpam1KuRvreMy0i523PLmjN8OYeikRdcUQ== dependencies: "@ethersproject/logger" "^5.0.5" -"@ethersproject/constants@5.0.5", "@ethersproject/constants@^5.0.4": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.5.tgz#0ed19b002e8404bdf6d135234dc86a7d9bcf9b71" - integrity sha512-foaQVmxp2+ik9FrLUCtVrLZCj4M3Ibgkqvh+Xw/vFRSerkjVSYePApaVE5essxhoSlF1U9oXfWY09QI2AXtgKA== +"@ethersproject/constants@5.4.0", "@ethersproject/constants@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.4.0.tgz#ee0bdcb30bf1b532d2353c977bf2ef1ee117958a" + integrity sha512-tzjn6S7sj9+DIIeKTJLjK9WGN2Tj0P++Z8ONEIlZjyoTkBuODN+0VfhAyYksKi43l1Sx9tX2VlFfzjfmr5Wl3Q== dependencies: - "@ethersproject/bignumber" "^5.0.7" + "@ethersproject/bignumber" "^5.4.0" -"@ethersproject/contracts@5.0.5": +"@ethersproject/constants@^5.0.4": version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.0.5.tgz#64831a341ec8ca225e83ff3e9437c26b970fd5d7" - integrity sha512-tFI255lFbmbqMkgnuyhDWHl3yWqttPlReplYuVvDCT/SuvBjLR4ad2uipBlh1fh5X1ipK9ettAoV4S0HKim4Kw== + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.5.tgz#0ed19b002e8404bdf6d135234dc86a7d9bcf9b71" + integrity sha512-foaQVmxp2+ik9FrLUCtVrLZCj4M3Ibgkqvh+Xw/vFRSerkjVSYePApaVE5essxhoSlF1U9oXfWY09QI2AXtgKA== dependencies: - "@ethersproject/abi" "^5.0.5" - "@ethersproject/abstract-provider" "^5.0.4" - "@ethersproject/abstract-signer" "^5.0.4" - "@ethersproject/address" "^5.0.4" "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/constants" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" -"@ethersproject/hash@5.0.6", "@ethersproject/hash@^5.0.4": +"@ethersproject/contracts@5.4.1": + version "5.4.1" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.4.1.tgz#3eb4f35b7fe60a962a75804ada2746494df3e470" + integrity sha512-m+z2ZgPy4pyR15Je//dUaymRUZq5MtDajF6GwFbGAVmKz/RF+DNIPwF0k5qEcL3wPGVqUjFg2/krlCRVTU4T5w== + dependencies: + "@ethersproject/abi" "^5.4.0" + "@ethersproject/abstract-provider" "^5.4.0" + "@ethersproject/abstract-signer" "^5.4.0" + "@ethersproject/address" "^5.4.0" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/constants" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/transactions" "^5.4.0" + +"@ethersproject/hash@5.4.0", "@ethersproject/hash@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.4.0.tgz#d18a8e927e828e22860a011f39e429d388344ae0" + integrity sha512-xymAM9tmikKgbktOCjW60Z5sdouiIIurkZUr9oW5NOex5uwxrbsYG09kb5bMcNjlVeJD3yPivTNzViIs1GCbqA== + dependencies: + "@ethersproject/abstract-signer" "^5.4.0" + "@ethersproject/address" "^5.4.0" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/keccak256" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/strings" "^5.4.0" + +"@ethersproject/hash@^5.0.4": version "5.0.6" resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.0.6.tgz#2a2e8a1470685421217e9e86e9971ca636e609ce" integrity sha512-Gvh57v6BWhwnud6l7tMfQm32PRQ2DYx2WaAAQmAxAfYvmzUkpQCBstnGeNMXIL8/2wdkvcB2u+WZRWaZtsFuUQ== @@ -1424,44 +1512,52 @@ "@ethersproject/properties" "^5.0.4" "@ethersproject/strings" "^5.0.4" -"@ethersproject/hdnode@5.0.5", "@ethersproject/hdnode@^5.0.4": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.0.5.tgz#1f89aad0a5ba9dfae3a85a36e0669f8bc7a74781" - integrity sha512-Ho4HZaK+KijE5adayvjAGusWMnT0mgwGa5hGMBofBOgX9nqiKf6Wxx68SXBGI1/L3rmKo6mlAjxUd8gefs0teQ== - dependencies: - "@ethersproject/abstract-signer" "^5.0.4" - "@ethersproject/basex" "^5.0.3" - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/pbkdf2" "^5.0.3" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/sha2" "^5.0.3" - "@ethersproject/signing-key" "^5.0.4" - "@ethersproject/strings" "^5.0.4" - "@ethersproject/transactions" "^5.0.5" - "@ethersproject/wordlists" "^5.0.4" - -"@ethersproject/json-wallets@5.0.7", "@ethersproject/json-wallets@^5.0.6": - version "5.0.7" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.0.7.tgz#4c48753b38ce7bce23a55f25c23f24617cf560e5" - integrity sha512-dgOn9JtGgjT28mDXs4LYY2rT4CzS6bG/rxoYuPq3TLHIf6nmvBcr33Fee6RrM/y8UAx4gyIkf6wb2cXsOctvQQ== - dependencies: - "@ethersproject/abstract-signer" "^5.0.4" - "@ethersproject/address" "^5.0.4" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/hdnode" "^5.0.4" - "@ethersproject/keccak256" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/pbkdf2" "^5.0.3" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/random" "^5.0.3" - "@ethersproject/strings" "^5.0.4" - "@ethersproject/transactions" "^5.0.5" +"@ethersproject/hdnode@5.4.0", "@ethersproject/hdnode@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.4.0.tgz#4bc9999b9a12eb5ce80c5faa83114a57e4107cac" + integrity sha512-pKxdS0KAaeVGfZPp1KOiDLB0jba11tG6OP1u11QnYfb7pXn6IZx0xceqWRr6ygke8+Kw74IpOoSi7/DwANhy8Q== + dependencies: + "@ethersproject/abstract-signer" "^5.4.0" + "@ethersproject/basex" "^5.4.0" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/pbkdf2" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/sha2" "^5.4.0" + "@ethersproject/signing-key" "^5.4.0" + "@ethersproject/strings" "^5.4.0" + "@ethersproject/transactions" "^5.4.0" + "@ethersproject/wordlists" "^5.4.0" + +"@ethersproject/json-wallets@5.4.0", "@ethersproject/json-wallets@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.4.0.tgz#2583341cfe313fc9856642e8ace3080154145e95" + integrity sha512-igWcu3fx4aiczrzEHwG1xJZo9l1cFfQOWzTqwRw/xcvxTk58q4f9M7cjh51EKphMHvrJtcezJ1gf1q1AUOfEQQ== + dependencies: + "@ethersproject/abstract-signer" "^5.4.0" + "@ethersproject/address" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/hdnode" "^5.4.0" + "@ethersproject/keccak256" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/pbkdf2" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/random" "^5.4.0" + "@ethersproject/strings" "^5.4.0" + "@ethersproject/transactions" "^5.4.0" aes-js "3.0.0" scrypt-js "3.0.1" -"@ethersproject/keccak256@5.0.4", "@ethersproject/keccak256@^5.0.3": +"@ethersproject/keccak256@5.4.0", "@ethersproject/keccak256@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.4.0.tgz#7143b8eea4976080241d2bd92e3b1f1bf7025318" + integrity sha512-FBI1plWet+dPUvAzPAeHzRKiPpETQzqSUWR1wXJGHVWi4i8bOSrpC3NwpkPjgeXG7MnugVc1B42VbfnQikyC/A== + dependencies: + "@ethersproject/bytes" "^5.4.0" + js-sha3 "0.5.7" + +"@ethersproject/keccak256@^5.0.3": version "5.0.4" resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.0.4.tgz#36ca0a7d1ae2a272da5654cb886776d0c680ef3a" integrity sha512-GNpiOUm9PGUxFNqOxYKDQBM0u68bG9XC9iOulEQ8I0tOx/4qUpgVzvgXL6ugxr0RY554Gz/NQsVqknqPzUcxpQ== @@ -1469,67 +1565,94 @@ "@ethersproject/bytes" "^5.0.4" js-sha3 "0.5.7" -"@ethersproject/logger@5.0.6", "@ethersproject/logger@^5.0.5": +"@ethersproject/logger@5.4.0", "@ethersproject/logger@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.4.0.tgz#f39adadf62ad610c420bcd156fd41270e91b3ca9" + integrity sha512-xYdWGGQ9P2cxBayt64d8LC8aPFJk6yWCawQi/4eJ4+oJdMMjEBMrIcIMZ9AxhwpPVmnBPrsB10PcXGmGAqgUEQ== + +"@ethersproject/logger@^5.0.5": version "5.0.6" resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.0.6.tgz#faa484203e86e08be9e07fef826afeef7183fe88" integrity sha512-FrX0Vnb3JZ1md/7GIZfmJ06XOAA8r3q9Uqt9O5orr4ZiksnbpXKlyDzQtlZ5Yv18RS8CAUbiKH9vwidJg1BPmQ== -"@ethersproject/networks@5.0.4", "@ethersproject/networks@^5.0.3": +"@ethersproject/networks@5.4.2", "@ethersproject/networks@^5.4.0": + version "5.4.2" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.4.2.tgz#2247d977626e97e2c3b8ee73cd2457babde0ce35" + integrity sha512-eekOhvJyBnuibfJnhtK46b8HimBc5+4gqpvd1/H9LEl7Q7/qhsIhM81dI9Fcnjpk3jB1aTy6bj0hz3cifhNeYw== + dependencies: + "@ethersproject/logger" "^5.4.0" + +"@ethersproject/networks@^5.0.3": version "5.0.4" resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.0.4.tgz#6d320a5e15a0cda804f5da88be0ba846156f6eec" integrity sha512-/wHDTRms5mpJ09BoDrbNdFWINzONe05wZRgohCXvEv39rrH/Gd/yAnct8wC0RsW3tmFOgjgQxuBvypIxuUynTw== dependencies: "@ethersproject/logger" "^5.0.5" -"@ethersproject/pbkdf2@5.0.4", "@ethersproject/pbkdf2@^5.0.3": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.0.4.tgz#a0841d53f5ce9a2b52a65a349d2dc15910b0a767" - integrity sha512-9jVBjHXQKfr9+3bkCg01a8Cd1H9e+7Kw3ZMIvAxD0lZtuzrXsJxm1hVwY9KA+PRUvgS/9tTP4viXQYwLAax7zg== +"@ethersproject/pbkdf2@5.4.0", "@ethersproject/pbkdf2@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.4.0.tgz#ed88782a67fda1594c22d60d0ca911a9d669641c" + integrity sha512-x94aIv6tiA04g6BnazZSLoRXqyusawRyZWlUhKip2jvoLpzJuLb//KtMM6PEovE47pMbW+Qe1uw+68ameJjB7g== dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/sha2" "^5.0.3" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/sha2" "^5.4.0" + +"@ethersproject/properties@5.4.0", "@ethersproject/properties@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.4.0.tgz#38ba20539b44dcc5d5f80c45ad902017dcdbefe7" + integrity sha512-7jczalGVRAJ+XSRvNA6D5sAwT4gavLq3OXPuV/74o3Rd2wuzSL035IMpIMgei4CYyBdialJMrTqkOnzccLHn4A== + dependencies: + "@ethersproject/logger" "^5.4.0" -"@ethersproject/properties@5.0.4", "@ethersproject/properties@^5.0.3", "@ethersproject/properties@^5.0.4": +"@ethersproject/properties@^5.0.3", "@ethersproject/properties@^5.0.4": version "5.0.4" resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.0.4.tgz#a67a1f5a52c30850b5062c861631e73d131f666e" integrity sha512-UdyX3GqBxFt15B0uSESdDNmhvEbK3ACdDXl2soshoPcneXuTswHDeA0LoPlnaZzhbgk4p6jqb4GMms5C26Qu6A== dependencies: "@ethersproject/logger" "^5.0.5" -"@ethersproject/providers@5.0.14": - version "5.0.14" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.0.14.tgz#751ccb14b4a8c8e9e4be171818c23f4601be90ba" - integrity sha512-K9QRRkkHWyprm3g4L8U9aPx5uyivznL4RYemkN2shCQumyGqFJ5SO+OtQrgebVm0JpGwFAUGugnhRUh49sjErw== - dependencies: - "@ethersproject/abstract-provider" "^5.0.4" - "@ethersproject/abstract-signer" "^5.0.4" - "@ethersproject/address" "^5.0.4" - "@ethersproject/basex" "^5.0.3" - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/constants" "^5.0.4" - "@ethersproject/hash" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/networks" "^5.0.3" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/random" "^5.0.3" - "@ethersproject/rlp" "^5.0.3" - "@ethersproject/sha2" "^5.0.3" - "@ethersproject/strings" "^5.0.4" - "@ethersproject/transactions" "^5.0.5" - "@ethersproject/web" "^5.0.6" +"@ethersproject/providers@5.4.3": + version "5.4.3" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.4.3.tgz#4cd7ccd9e12bc3875b33df8b24abf735663958a5" + integrity sha512-VURwkaWPoUj7jq9NheNDT5Iyy64Qcyf6BOFDwVdHsmLmX/5prNjFrgSX3GHPE4z1BRrVerDxe2yayvXKFm/NNg== + dependencies: + "@ethersproject/abstract-provider" "^5.4.0" + "@ethersproject/abstract-signer" "^5.4.0" + "@ethersproject/address" "^5.4.0" + "@ethersproject/basex" "^5.4.0" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/constants" "^5.4.0" + "@ethersproject/hash" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/networks" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/random" "^5.4.0" + "@ethersproject/rlp" "^5.4.0" + "@ethersproject/sha2" "^5.4.0" + "@ethersproject/strings" "^5.4.0" + "@ethersproject/transactions" "^5.4.0" + "@ethersproject/web" "^5.4.0" bech32 "1.1.4" - ws "7.2.3" + ws "7.4.6" -"@ethersproject/random@5.0.4", "@ethersproject/random@^5.0.3": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.0.4.tgz#98f7cf65b0e588cec39ef24843e391ed5004556f" - integrity sha512-AIZJhqs6Ba4/+U3lOjt3QZbP6b/kuuGLJUYFUonAgWmkTHwqsCwYnFvnHKQSUuHbXHvErp7WFXFlztx+yMn3kQ== +"@ethersproject/random@5.4.0", "@ethersproject/random@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.4.0.tgz#9cdde60e160d024be39cc16f8de3b9ce39191e16" + integrity sha512-pnpWNQlf0VAZDEOVp1rsYQosmv2o0ITS/PecNw+mS2/btF8eYdspkN0vIXrCMtkX09EAh9bdk8GoXmFXM1eAKw== dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + +"@ethersproject/rlp@5.4.0", "@ethersproject/rlp@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.4.0.tgz#de61afda5ff979454e76d3b3310a6c32ad060931" + integrity sha512-0I7MZKfi+T5+G8atId9QaQKHRvvasM/kqLyAH4XxBCBchAooH2EX5rL9kYZWwcm3awYV+XC7VF6nLhfeQFKVPg== + dependencies: + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" -"@ethersproject/rlp@5.0.4", "@ethersproject/rlp@^5.0.3": +"@ethersproject/rlp@^5.0.3": version "5.0.4" resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.0.4.tgz#0090a0271e84ea803016a112a79f5cfd80271a77" integrity sha512-5qrrZad7VTjofxSsm7Zg/7Dr4ZOln4S2CqiDdOuTv6MBKnXj0CiBojXyuDy52M8O3wxH0CyE924hXWTDV1PQWQ== @@ -1537,16 +1660,28 @@ "@ethersproject/bytes" "^5.0.4" "@ethersproject/logger" "^5.0.5" -"@ethersproject/sha2@5.0.4", "@ethersproject/sha2@^5.0.3": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.0.4.tgz#40f639721a27dbe034b3dee021ba20b054586fec" - integrity sha512-0yFhf1mspxAfWdXXoPtK94adUeu1R7/FzAa+DfEiZTc76sz/vHXf0LSIazoR3znYKFny6haBxME+usbvvEcF3A== +"@ethersproject/sha2@5.4.0", "@ethersproject/sha2@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.4.0.tgz#c9a8db1037014cbc4e9482bd662f86c090440371" + integrity sha512-siheo36r1WD7Cy+bDdE1BJ8y0bDtqXCOxRMzPa4bV1TGt/eTUUt03BHoJNB6reWJD8A30E/pdJ8WFkq+/uz4Gg== dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - hash.js "1.1.3" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.4.0", "@ethersproject/signing-key@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.4.0.tgz#2f05120984e81cf89a3d5f6dec5c68ee0894fbec" + integrity sha512-q8POUeywx6AKg2/jX9qBYZIAmKSB4ubGXdQ88l40hmATj29JnG5pp331nAWwwxPn2Qao4JpWHNZsQN+bPiSW9A== + dependencies: + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + bn.js "^4.11.9" + elliptic "6.5.4" + hash.js "1.1.7" -"@ethersproject/signing-key@5.0.5", "@ethersproject/signing-key@^5.0.4": +"@ethersproject/signing-key@^5.0.4": version "5.0.5" resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.0.5.tgz#acfd06fc05a14180df7e027688bbd23fc4baf782" integrity sha512-Z1wY7JC1HVO4CvQWY2TyTTuAr8xK3bJijZw1a9G92JEmKdv1j255R/0YLBBcFTl2J65LUjtXynNJ2GbArPGi5g== @@ -1556,18 +1691,27 @@ "@ethersproject/properties" "^5.0.3" elliptic "6.5.3" -"@ethersproject/solidity@5.0.5": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.0.5.tgz#97a7d8a67f2d944f208c948fed0d565512bcc2be" - integrity sha512-DMFQ0ouXmNVoKWbGEUFGi8Urli4SJip9jXafQyFHWPRr5oJUqDVkNfwcyC37k+mhBG93k7qrYXCH2xJnGEOxHg== +"@ethersproject/solidity@5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.4.0.tgz#1305e058ea02dc4891df18b33232b11a14ece9ec" + integrity sha512-XFQTZ7wFSHOhHcV1DpcWj7VXECEiSrBuv7JErJvB9Uo+KfCdc3QtUZV+Vjh/AAaYgezUEKbCtE6Khjm44seevQ== dependencies: - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/keccak256" "^5.0.3" - "@ethersproject/sha2" "^5.0.3" - "@ethersproject/strings" "^5.0.4" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/keccak256" "^5.4.0" + "@ethersproject/sha2" "^5.4.0" + "@ethersproject/strings" "^5.4.0" + +"@ethersproject/strings@5.4.0", "@ethersproject/strings@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.4.0.tgz#fb12270132dd84b02906a8d895ae7e7fa3d07d9a" + integrity sha512-k/9DkH5UGDhv7aReXLluFG5ExurwtIpUfnDNhQA29w896Dw3i4uDTz01Quaptbks1Uj9kI8wo9tmW73wcIEaWA== + dependencies: + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/constants" "^5.4.0" + "@ethersproject/logger" "^5.4.0" -"@ethersproject/strings@5.0.5", "@ethersproject/strings@^5.0.4": +"@ethersproject/strings@^5.0.4": version "5.0.5" resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.0.5.tgz#ed7e99a282a02f40757691b04a24cd83f3752195" integrity sha512-JED6WaIV00xM/gvj8vSnd+0VWtDYdidTmavFRCTQakqfz+4tDo6Jz5LHgG+dd45h7ah7ykCHW0C7ZXWEDROCXQ== @@ -1576,7 +1720,22 @@ "@ethersproject/constants" "^5.0.4" "@ethersproject/logger" "^5.0.5" -"@ethersproject/transactions@5.0.6", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.0.5": +"@ethersproject/transactions@5.4.0", "@ethersproject/transactions@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.4.0.tgz#a159d035179334bd92f340ce0f77e83e9e1522e0" + integrity sha512-s3EjZZt7xa4BkLknJZ98QGoIza94rVjaEed0rzZ/jB9WrIuu/1+tjvYCWzVrystXtDswy7TPBeIepyXwSYa4WQ== + dependencies: + "@ethersproject/address" "^5.4.0" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/constants" "^5.4.0" + "@ethersproject/keccak256" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/rlp" "^5.4.0" + "@ethersproject/signing-key" "^5.4.0" + +"@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.0.5": version "5.0.6" resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.0.6.tgz#b8b27938be6e9ed671dbdd35fe98af8b14d0df7c" integrity sha512-htsFhOD+NMBxx676A8ehSuwVV49iqpSB+CkjPZ02tpNew0K6p8g0CZ46Z1ZP946gIHAU80xQ0NACHYrjIUaCFA== @@ -1591,37 +1750,48 @@ "@ethersproject/rlp" "^5.0.3" "@ethersproject/signing-key" "^5.0.4" -"@ethersproject/units@5.0.6": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.0.6.tgz#e1169ecffb7e8d5eab84e1481a4e35df19045708" - integrity sha512-tsJuy4mipppdmooukRfhXt8fGx9nxvfvG6Xdy0RDm7LzHsjghjwQ69m2bCpId6SDSR1Uq1cQ9irPiUBSyWolUA== - dependencies: - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/constants" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - -"@ethersproject/wallet@5.0.7": - version "5.0.7" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.0.7.tgz#9d4540f97d534e3d61548ace30f15857209b3f02" - integrity sha512-n2GX1+2Tc0qV8dguUcLkjNugINKvZY7u/5fEsn0skW9rz5+jHTR5IKMV6jSfXA+WjQT8UCNMvkI3CNcdhaPbTQ== - dependencies: - "@ethersproject/abstract-provider" "^5.0.4" - "@ethersproject/abstract-signer" "^5.0.4" - "@ethersproject/address" "^5.0.4" - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/hash" "^5.0.4" - "@ethersproject/hdnode" "^5.0.4" - "@ethersproject/json-wallets" "^5.0.6" - "@ethersproject/keccak256" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/random" "^5.0.3" - "@ethersproject/signing-key" "^5.0.4" - "@ethersproject/transactions" "^5.0.5" - "@ethersproject/wordlists" "^5.0.4" - -"@ethersproject/web@5.0.9", "@ethersproject/web@^5.0.6": +"@ethersproject/units@5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.4.0.tgz#d57477a4498b14b88b10396062c8cbbaf20c79fe" + integrity sha512-Z88krX40KCp+JqPCP5oPv5p750g+uU6gopDYRTBGcDvOASh6qhiEYCRatuM/suC4S2XW9Zz90QI35MfSrTIaFg== + dependencies: + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/constants" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + +"@ethersproject/wallet@5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.4.0.tgz#fa5b59830b42e9be56eadd45a16a2e0933ad9353" + integrity sha512-wU29majLjM6AjCjpat21mPPviG+EpK7wY1+jzKD0fg3ui5fgedf2zEu1RDgpfIMsfn8fJHJuzM4zXZ2+hSHaSQ== + dependencies: + "@ethersproject/abstract-provider" "^5.4.0" + "@ethersproject/abstract-signer" "^5.4.0" + "@ethersproject/address" "^5.4.0" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/hash" "^5.4.0" + "@ethersproject/hdnode" "^5.4.0" + "@ethersproject/json-wallets" "^5.4.0" + "@ethersproject/keccak256" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/random" "^5.4.0" + "@ethersproject/signing-key" "^5.4.0" + "@ethersproject/transactions" "^5.4.0" + "@ethersproject/wordlists" "^5.4.0" + +"@ethersproject/web@5.4.0", "@ethersproject/web@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.4.0.tgz#49fac173b96992334ed36a175538ba07a7413d1f" + integrity sha512-1bUusGmcoRLYgMn6c1BLk1tOKUIFuTg8j+6N8lYlbMpDesnle+i3pGSagGNvwjaiLo4Y5gBibwctpPRmjrh4Og== + dependencies: + "@ethersproject/base64" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/strings" "^5.4.0" + +"@ethersproject/web@^5.0.6": version "5.0.9" resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.0.9.tgz#b08f8295f4bfd4777c8723fe9572f5453b9f03cb" integrity sha512-//QNlv1MSkOII1hv3+HQwWoiVFS+BMVGI0KYeUww4cyrEktnx1QIez5bTSab9s9fWTFaWKNmQNBwMbxAqPuYDw== @@ -1632,16 +1802,16 @@ "@ethersproject/properties" "^5.0.3" "@ethersproject/strings" "^5.0.4" -"@ethersproject/wordlists@5.0.5", "@ethersproject/wordlists@^5.0.4": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.0.5.tgz#a935b7fdb86c96b44ea8391fed94b3fa2f33c606" - integrity sha512-XA3ycFltVrCTQt04w5nHu3Xq5Z6HjqWsXaAYQHFdqtugyUsIumaO9S5MOwFFuUYTNkZUoT3jCRa/OBS+K4tLfA== +"@ethersproject/wordlists@5.4.0", "@ethersproject/wordlists@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.4.0.tgz#f34205ec3bbc9e2c49cadaee774cf0b07e7573d7" + integrity sha512-FemEkf6a+EBKEPxlzeVgUaVSodU7G0Na89jqKjmWMlDB0tomoU8RlEMgUvXyqtrg8N4cwpLh8nyRnm1Nay1isA== dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/hash" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/strings" "^5.0.4" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/hash" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/strings" "^5.4.0" "@hapi/address@2.x.x": version "2.1.4" @@ -1953,6 +2123,13 @@ resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz#af577b477c683fad17c619a78208cede06f9605c" integrity sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q== +"@meterio/web3-context@1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@meterio/web3-context/-/web3-context-1.2.3.tgz#d9ae45bb5a0df02f31a24c84be64647f15f788c2" + integrity sha512-El96RMFdg0inFwsz8LXkjPU9p8Pl0OsLqw+tL0ezxlJfirhGIXD3GAyuE7D2QP5gcwdbl+vXZ7X3IAk8Zmgs3Q== + dependencies: + bignumber.js "^9.0.1" + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -4746,9 +4923,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001135: - version "1.0.30001151" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001151.tgz#1ddfde5e6fff02aad7940b4edb7d3ac76b0cb00b" - integrity sha512-Zh3sHqskX6mHNrqUerh+fkf0N72cMxrmflzje/JyVImfpknscMnkeJrlFGJcqTmaa0iszdYptGpWMJCRQDkBVw== + version "1.0.30001228" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz" + integrity sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A== capture-exit@^2.0.0: version "2.0.0" @@ -6106,7 +6283,7 @@ elliptic@6.5.3, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" -elliptic@^6.5.4: +elliptic@6.5.4, elliptic@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== @@ -6986,41 +7163,41 @@ ethers@4.0.47: uuid "2.0.1" xmlhttprequest "1.8.0" -ethers@^5.0.17: - version "5.0.19" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.0.19.tgz#a4636f62a180135b13fd1f0a393477beafd535b7" - integrity sha512-0AZnUgZh98q888WAd1oI3aLeI+iyDtrupjANVtPPS7O63lVopkR/No8A1NqSkgl/rU+b2iuu2mUZor6GD4RG2w== - dependencies: - "@ethersproject/abi" "5.0.7" - "@ethersproject/abstract-provider" "5.0.5" - "@ethersproject/abstract-signer" "5.0.7" - "@ethersproject/address" "5.0.5" - "@ethersproject/base64" "5.0.4" - "@ethersproject/basex" "5.0.4" - "@ethersproject/bignumber" "5.0.8" - "@ethersproject/bytes" "5.0.5" - "@ethersproject/constants" "5.0.5" - "@ethersproject/contracts" "5.0.5" - "@ethersproject/hash" "5.0.6" - "@ethersproject/hdnode" "5.0.5" - "@ethersproject/json-wallets" "5.0.7" - "@ethersproject/keccak256" "5.0.4" - "@ethersproject/logger" "5.0.6" - "@ethersproject/networks" "5.0.4" - "@ethersproject/pbkdf2" "5.0.4" - "@ethersproject/properties" "5.0.4" - "@ethersproject/providers" "5.0.14" - "@ethersproject/random" "5.0.4" - "@ethersproject/rlp" "5.0.4" - "@ethersproject/sha2" "5.0.4" - "@ethersproject/signing-key" "5.0.5" - "@ethersproject/solidity" "5.0.5" - "@ethersproject/strings" "5.0.5" - "@ethersproject/transactions" "5.0.6" - "@ethersproject/units" "5.0.6" - "@ethersproject/wallet" "5.0.7" - "@ethersproject/web" "5.0.9" - "@ethersproject/wordlists" "5.0.5" +ethers@^5.4.4: + version "5.4.4" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.4.4.tgz#35cce530505b84c699da944162195cfb3f894947" + integrity sha512-zaTs8yaDjfb0Zyj8tT6a+/hEkC+kWAA350MWRp6yP5W7NdGcURRPMOpOU+6GtkfxV9wyJEShWesqhE/TjdqpMA== + dependencies: + "@ethersproject/abi" "5.4.0" + "@ethersproject/abstract-provider" "5.4.1" + "@ethersproject/abstract-signer" "5.4.1" + "@ethersproject/address" "5.4.0" + "@ethersproject/base64" "5.4.0" + "@ethersproject/basex" "5.4.0" + "@ethersproject/bignumber" "5.4.1" + "@ethersproject/bytes" "5.4.0" + "@ethersproject/constants" "5.4.0" + "@ethersproject/contracts" "5.4.1" + "@ethersproject/hash" "5.4.0" + "@ethersproject/hdnode" "5.4.0" + "@ethersproject/json-wallets" "5.4.0" + "@ethersproject/keccak256" "5.4.0" + "@ethersproject/logger" "5.4.0" + "@ethersproject/networks" "5.4.2" + "@ethersproject/pbkdf2" "5.4.0" + "@ethersproject/properties" "5.4.0" + "@ethersproject/providers" "5.4.3" + "@ethersproject/random" "5.4.0" + "@ethersproject/rlp" "5.4.0" + "@ethersproject/sha2" "5.4.0" + "@ethersproject/signing-key" "5.4.0" + "@ethersproject/solidity" "5.4.0" + "@ethersproject/strings" "5.4.0" + "@ethersproject/transactions" "5.4.0" + "@ethersproject/units" "5.4.0" + "@ethersproject/wallet" "5.4.0" + "@ethersproject/web" "5.4.0" + "@ethersproject/wordlists" "5.4.0" ethjs-unit@0.1.6: version "0.1.6" @@ -15430,16 +15607,16 @@ write@1.0.3: dependencies: mkdirp "^0.5.1" -ws@7.2.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.3.tgz#a5411e1fb04d5ed0efee76d26d5c46d830c39b46" - integrity sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ== - ws@7.3.0: version "7.3.0" resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.0.tgz#4b2f7f219b3d3737bc1a2fbf145d825b94d38ffd" integrity sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w== +ws@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + ws@^5.1.1, ws@^5.2.0: version "5.2.2" resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f"