Break up abacus-tests into the respective packages (#152)

pull/177/head
Asa Oines 3 years ago committed by GitHub
parent eaa89a9c52
commit 472aedfddb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 10
      .github/workflows/solidity.yml
  2. 1137
      package-lock.json
  3. 3
      package.json
  4. 18
      scripts/test-solidity.sh
  5. 11
      solidity/abacus-core/.prettierrc
  6. 8
      solidity/abacus-core/contracts/test/TestGovernanceRouter.sol
  7. 13
      solidity/abacus-core/contracts/test/TestHome.sol
  8. 14
      solidity/abacus-core/contracts/test/TestReplica.sol
  9. 9
      solidity/abacus-core/hardhat.config.ts
  10. 14
      solidity/abacus-core/libs/Message.sol
  11. 12
      solidity/abacus-core/package.json
  12. 9
      solidity/abacus-core/test/common.test.ts
  13. 205
      solidity/abacus-core/test/cross-chain/governanceRouter.test.ts
  14. 74
      solidity/abacus-core/test/cross-chain/recoveryManager.test.ts
  15. 60
      solidity/abacus-core/test/cross-chain/simpleMessage.test.ts
  16. 10
      solidity/abacus-core/test/cross-chain/utils.ts
  17. 62
      solidity/abacus-core/test/home.test.ts
  18. 188
      solidity/abacus-core/test/lib/AbacusDeployment.ts
  19. 85
      solidity/abacus-core/test/lib/GovernanceDeployment.ts
  20. 12
      solidity/abacus-core/test/lib/core.ts
  21. 3
      solidity/abacus-core/test/lib/index.ts
  22. 50
      solidity/abacus-core/test/lib/types.ts
  23. 8
      solidity/abacus-core/test/lib/utils.ts
  24. 7
      solidity/abacus-core/test/merkle.test.ts
  25. 5
      solidity/abacus-core/test/message.test.ts
  26. 5
      solidity/abacus-core/test/queue.test.ts
  27. 116
      solidity/abacus-core/test/replica.test.ts
  28. 31
      solidity/abacus-core/test/upgrade.test.ts
  29. 61
      solidity/abacus-core/test/utils.ts
  30. 105
      solidity/abacus-core/test/xAppConnectionManager.test.ts
  31. 123
      solidity/abacus-core/typechain/BadRecipient1.d.ts
  32. 123
      solidity/abacus-core/typechain/BadRecipient2.d.ts
  33. 123
      solidity/abacus-core/typechain/BadRecipient3.d.ts
  34. 123
      solidity/abacus-core/typechain/BadRecipient4.d.ts
  35. 123
      solidity/abacus-core/typechain/BadRecipient5.d.ts
  36. 123
      solidity/abacus-core/typechain/BadRecipient6.d.ts
  37. 118
      solidity/abacus-core/typechain/BadRecipientHandle.d.ts
  38. 255
      solidity/abacus-core/typechain/Common.d.ts
  39. 715
      solidity/abacus-core/typechain/GovernanceRouter.d.ts
  40. 799
      solidity/abacus-core/typechain/Home.d.ts
  41. 124
      solidity/abacus-core/typechain/IMessageRecipient.d.ts
  42. 127
      solidity/abacus-core/typechain/IUpdaterManager.d.ts
  43. 246
      solidity/abacus-core/typechain/MerkleLib.d.ts
  44. 123
      solidity/abacus-core/typechain/MerkleTreeManager.d.ts
  45. 173
      solidity/abacus-core/typechain/MysteryMath.d.ts
  46. 186
      solidity/abacus-core/typechain/MysteryMathV1.d.ts
  47. 186
      solidity/abacus-core/typechain/MysteryMathV2.d.ts
  48. 169
      solidity/abacus-core/typechain/Ownable.d.ts
  49. 169
      solidity/abacus-core/typechain/OwnableUpgradeable.d.ts
  50. 145
      solidity/abacus-core/typechain/QueueManager.d.ts
  51. 1104
      solidity/abacus-core/typechain/Replica.d.ts
  52. 324
      solidity/abacus-core/typechain/TestCommon.d.ts
  53. 788
      solidity/abacus-core/typechain/TestGovernanceRouter.d.ts
  54. 859
      solidity/abacus-core/typechain/TestHome.d.ts
  55. 392
      solidity/abacus-core/typechain/TestMerkle.d.ts
  56. 252
      solidity/abacus-core/typechain/TestMessage.d.ts
  57. 363
      solidity/abacus-core/typechain/TestQueue.d.ts
  58. 206
      solidity/abacus-core/typechain/TestRecipient.d.ts
  59. 1473
      solidity/abacus-core/typechain/TestReplica.d.ts
  60. 575
      solidity/abacus-core/typechain/TestXAppConnectionManager.d.ts
  61. 95
      solidity/abacus-core/typechain/TypedMemView.d.ts
  62. 276
      solidity/abacus-core/typechain/UpdaterManager.d.ts
  63. 86
      solidity/abacus-core/typechain/UpgradeBeacon.d.ts
  64. 215
      solidity/abacus-core/typechain/UpgradeBeaconController.d.ts
  65. 78
      solidity/abacus-core/typechain/UpgradeBeaconProxy.d.ts
  66. 95
      solidity/abacus-core/typechain/Version0.d.ts
  67. 526
      solidity/abacus-core/typechain/XAppConnectionManager.d.ts
  68. 36
      solidity/abacus-core/typechain/commons.ts
  69. 70
      solidity/abacus-core/typechain/factories/BadRecipient1__factory.ts
  70. 70
      solidity/abacus-core/typechain/factories/BadRecipient2__factory.ts
  71. 70
      solidity/abacus-core/typechain/factories/BadRecipient3__factory.ts
  72. 70
      solidity/abacus-core/typechain/factories/BadRecipient4__factory.ts
  73. 70
      solidity/abacus-core/typechain/factories/BadRecipient5__factory.ts
  74. 70
      solidity/abacus-core/typechain/factories/BadRecipient6__factory.ts
  75. 68
      solidity/abacus-core/typechain/factories/BadRecipientHandle__factory.ts
  76. 188
      solidity/abacus-core/typechain/factories/Common__factory.ts
  77. 537
      solidity/abacus-core/typechain/factories/GovernanceRouter__factory.ts
  78. 652
      solidity/abacus-core/typechain/factories/Home__factory.ts
  79. 49
      solidity/abacus-core/typechain/factories/IMessageRecipient__factory.ts
  80. 52
      solidity/abacus-core/typechain/factories/IUpdaterManager__factory.ts
  81. 60
      solidity/abacus-core/typechain/factories/MerkleLib__factory.ts
  82. 89
      solidity/abacus-core/typechain/factories/MerkleTreeManager__factory.ts
  83. 128
      solidity/abacus-core/typechain/factories/MysteryMathV1__factory.ts
  84. 128
      solidity/abacus-core/typechain/factories/MysteryMathV2__factory.ts
  85. 86
      solidity/abacus-core/typechain/factories/MysteryMath__factory.ts
  86. 78
      solidity/abacus-core/typechain/factories/OwnableUpgradeable__factory.ts
  87. 75
      solidity/abacus-core/typechain/factories/Ownable__factory.ts
  88. 92
      solidity/abacus-core/typechain/factories/QueueManager__factory.ts
  89. 586
      solidity/abacus-core/typechain/factories/Replica__factory.ts
  90. 288
      solidity/abacus-core/typechain/factories/TestCommon__factory.ts
  91. 578
      solidity/abacus-core/typechain/factories/TestGovernanceRouter__factory.ts
  92. 686
      solidity/abacus-core/typechain/factories/TestHome__factory.ts
  93. 133
      solidity/abacus-core/typechain/factories/TestMerkle__factory.ts
  94. 199
      solidity/abacus-core/typechain/factories/TestMessage__factory.ts
  95. 239
      solidity/abacus-core/typechain/factories/TestQueue__factory.ts
  96. 132
      solidity/abacus-core/typechain/factories/TestRecipient__factory.ts
  97. 667
      solidity/abacus-core/typechain/factories/TestReplica__factory.ts
  98. 405
      solidity/abacus-core/typechain/factories/TestXAppConnectionManager__factory.ts
  99. 60
      solidity/abacus-core/typechain/factories/TypedMemView__factory.ts
  100. 202
      solidity/abacus-core/typechain/factories/UpdaterManager__factory.ts
  101. Some files were not shown because too many files have changed in this diff Show More

@ -32,10 +32,8 @@ jobs:
- name: lint - name: lint
run: | run: |
cd ./solidity/abacus-core npm --prefix ./solidity/abacus-core run lint
npm run lint npm --prefix ./solidity/abacus-xapps run lint
cd ../abacus-xapps
npm run lint
solidity-test: solidity-test:
env: env:
@ -51,4 +49,6 @@ jobs:
with: with:
runneros: ${{ runner.os }} runneros: ${{ runner.os }}
- name: test - name: test
run: ./scripts/test-solidity.sh run: |
npm --prefix ./solidity/abacus-core run test
npm --prefix ./solidity/abacus-xapps run test

1137
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -10,8 +10,7 @@
"typescript/typechain", "typescript/typechain",
"typescript/abacus-sdk", "typescript/abacus-sdk",
"typescript/contract-metrics", "typescript/contract-metrics",
"typescript/abacus-deploy", "typescript/abacus-deploy"
"typescript/abacus-tests"
] ]
} }

@ -1,18 +0,0 @@
# script for running solidity tests locally
# Run from root (./scripts/test-solidity.sh)
set -e
# compile contracts
npm run build
# copy artifacts
cp -R ./solidity/abacus-xapps/artifacts ./typescript/abacus-tests
cp -R ./solidity/abacus-core/artifacts ./typescript/abacus-tests
# copy cache
cp -R ./solidity/abacus-xapps/cache ./typescript/abacus-tests
cp -R ./solidity/abacus-core/cache ./typescript/abacus-tests
# run tests
npm --prefix ./typescript/abacus-tests run testNoCompile

@ -1,13 +1,8 @@
{ {
"tabWidth": 2,
"singleQuote": true,
"trailingComma": "all",
"overrides": [ "overrides": [
{
"files": "*.js",
"options": {
"tabWidth": 2,
"singleQuote": true,
"trailingComma": "all"
}
},
{ {
"files": "*.sol", "files": "*.sol",
"options": { "options": {

@ -6,10 +6,6 @@ import "../governance/GovernanceRouter.sol";
import {TypeCasts} from "../XAppConnectionManager.sol"; import {TypeCasts} from "../XAppConnectionManager.sol";
contract TestGovernanceRouter is GovernanceRouter { contract TestGovernanceRouter is GovernanceRouter {
using TypedMemView for bytes;
using TypedMemView for bytes29;
using GovernanceMessage for bytes29;
constructor(uint32 _localDomain, uint256 _recoveryTimelock) constructor(uint32 _localDomain, uint256 _recoveryTimelock)
GovernanceRouter(_localDomain, 50) GovernanceRouter(_localDomain, 50)
{} // solhint-disable-line no-empty-blocks {} // solhint-disable-line no-empty-blocks
@ -25,10 +21,6 @@ contract TestGovernanceRouter is GovernanceRouter {
_sendToAllRemoteRouters(_setRouterMessage); _sendToAllRemoteRouters(_setRouterMessage);
} }
function setRouterAddress(uint32 _domain, address _router) external {
_setRouter(_domain, TypeCasts.addressToBytes32(_router));
}
function containsDomain(uint32 _domain) external view returns (bool) { function containsDomain(uint32 _domain) external view returns (bool) {
for (uint256 i = 0; i < domains.length; i++) { for (uint256 i = 0; i < domains.length; i++) {
if (domains[i] == _domain) return true; if (domains[i] == _domain) return true;

@ -4,20 +4,9 @@ pragma solidity >=0.6.11;
import "../Home.sol"; import "../Home.sol";
contract TestHome is Home { contract TestHome is Home {
using QueueLib for QueueLib.Queue;
using MerkleLib for MerkleLib.Tree;
constructor(uint32 _localDomain) Home(_localDomain) {} // solhint-disable-line no-empty-blocks constructor(uint32 _localDomain) Home(_localDomain) {} // solhint-disable-line no-empty-blocks
function nextLeafIndex() external view returns (uint256) { function destinationAndNonce(uint32 _destination, uint32 _nonce)
return count();
}
function testHomeDomainHash() external view returns (bytes32) {
return homeDomainHash();
}
function testDestinationAndNonce(uint32 _destination, uint32 _nonce)
external external
pure pure
returns (uint64) returns (uint64)

@ -18,11 +18,7 @@ contract TestReplica is Replica {
_setFailed(); _setFailed();
} }
function setRemoteDomain(uint32 _remoteDomain) external { function setMessageProven(bytes memory _message) external {
remoteDomain = _remoteDomain;
}
function setMessagePending(bytes memory _message) external {
bytes29 _m = _message.ref(0); bytes29 _m = _message.ref(0);
messages[_m.keccak()] = MessageStatus.Proven; messages[_m.keccak()] = MessageStatus.Proven;
} }
@ -32,14 +28,6 @@ contract TestReplica is Replica {
confirmAt[_newRoot] = 1; confirmAt[_newRoot] = 1;
} }
function timestamp() external view returns (uint256) {
return block.timestamp;
}
function testHomeDomainHash() external view returns (bytes32) {
return homeDomainHash();
}
function testBranchRoot( function testBranchRoot(
bytes32 leaf, bytes32 leaf,
bytes32[32] calldata proof, bytes32[32] calldata proof,

@ -1,6 +1,9 @@
import "solidity-coverage"; import "solidity-coverage";
import "@typechain/hardhat"; import "@typechain/hardhat";
import "@nomiclabs/hardhat-etherscan"; import "@nomiclabs/hardhat-etherscan";
import "@nomiclabs/hardhat-waffle";
import "hardhat-gas-reporter";
import './test/lib/index';
import { task } from "hardhat/config"; import { task } from "hardhat/config";
import { verifyLatestCoreDeploy } from "../../typescript/abacus-deploy/src/verification/verifyLatestDeploy"; import { verifyLatestCoreDeploy } from "../../typescript/abacus-deploy/src/verification/verifyLatestDeploy";
@ -33,7 +36,9 @@ module.exports = {
}, },
}, },
}, },
gasReporter: {
currency: "USD",
},
networks: { networks: {
localhost: { localhost: {
url: "http://localhost:8545", url: "http://localhost:8545",
@ -56,7 +61,7 @@ module.exports = {
// TODO: add Ropsten // TODO: add Ropsten
}, },
typechain: { typechain: {
outDir: "../../typescript/typechain/abacus-core", outDir: "./typechain",
target: "ethers-v5", target: "ethers-v5",
alwaysGenerateOverloads: false, // should overloads with full signatures like deposit(uint256) be generated always, even if there are no overloads? alwaysGenerateOverloads: false, // should overloads with full signatures like deposit(uint256) be generated always, even if there are no overloads?
}, },

@ -3,9 +3,7 @@ pragma solidity >=0.6.11;
import "@summa-tx/memview-sol/contracts/TypedMemView.sol"; import "@summa-tx/memview-sol/contracts/TypedMemView.sol";
import { import {TypeCasts} from "./TypeCasts.sol";
TypeCasts
} from "./TypeCasts.sol";
/** /**
* @title Message Library * @title Message Library
@ -119,6 +117,14 @@ library Message {
} }
function leaf(bytes29 _message) internal view returns (bytes32) { function leaf(bytes29 _message) internal view returns (bytes32) {
return messageHash(origin(_message), sender(_message), nonce(_message), destination(_message), recipient(_message), TypedMemView.clone(body(_message))); return
messageHash(
origin(_message),
sender(_message),
nonce(_message),
destination(_message),
recipient(_message),
TypedMemView.clone(body(_message))
);
} }
} }

@ -10,7 +10,8 @@
"eslint": "^7.20.0", "eslint": "^7.20.0",
"ethereum-waffle": "^3.2.2", "ethereum-waffle": "^3.2.2",
"ethers": "^5.4.4", "ethers": "^5.4.4",
"hardhat": "^2.0.8", "hardhat": "^2.8.3",
"hardhat-gas-reporter": "^1.0.7",
"prettier": "^2.2.1", "prettier": "^2.2.1",
"prettier-plugin-solidity": "^1.0.0-beta.5", "prettier-plugin-solidity": "^1.0.0-beta.5",
"solhint": "^3.3.2", "solhint": "^3.3.2",
@ -20,17 +21,18 @@
"typechain": "^5.0.0" "typechain": "^5.0.0"
}, },
"version": "0.0.0", "version": "0.0.0",
"description": "Optimistic Interchain Communications", "description": "Abacus Interchain Communications",
"main": " ", "main": " ",
"directories": { "directories": {
"test": "test" "test": "test"
}, },
"scripts": { "scripts": {
"prettier": "prettier --write ./contracts", "prettier": "prettier --write ./contracts ./libs ./test",
"compile": "hardhat compile && hardhat typechain && npm run prettier && ./update_abis.sh", "compile": "hardhat compile && hardhat typechain && npm run prettier && npm run copy-typechain",
"copy-typechain": "cp -r typechain/* ../../typescript/typechain/abacus-core/",
"build": "npm run compile", "build": "npm run compile",
"test": "hardhat test",
"coverage": "npm run compile && hardhat coverage", "coverage": "npm run compile && hardhat coverage",
"test": "cd ../../ && ./scripts/test-solidity.sh",
"lint": "solhint 'contracts/*.sol' && solhint 'contracts/**/*.sol'", "lint": "solhint 'contracts/*.sol' && solhint 'contracts/**/*.sol'",
"lint:fix": "solhint --fix 'contracts/*.sol' && solhint --fix 'contracts/**/*.sol'", "lint:fix": "solhint --fix 'contracts/*.sol' && solhint --fix 'contracts/**/*.sol'",
"deploy": "npm run compile && cd ../../typescript/abacus-deploy && npm run deploy-core", "deploy": "npm run compile && cd ../../typescript/abacus-deploy && npm run deploy-core",

@ -1,13 +1,10 @@
import { ethers } from 'hardhat'; import { ethers } from 'hardhat';
import { expect } from 'chai'; import { expect } from 'chai';
import { AbacusState, Updater } from '../lib/core'; import { AbacusState, Updater } from './lib/core';
import { Signer } from '../lib/types'; import { Signer } from './lib/types';
import { import { TestCommon__factory, TestCommon } from '../typechain';
TestCommon__factory,
TestCommon,
} from '@abacus-network/ts-interface/dist/abacus-core';
const signedUpdateTestCases = require('../../../vectors/signedUpdate.json'); const signedUpdateTestCases = require('../../../vectors/signedUpdate.json');
const localDomain = 1000; const localDomain = 1000;

@ -3,42 +3,49 @@ import { expect } from 'chai';
import { updateReplica, formatCall, formatAbacusMessage } from './utils'; import { updateReplica, formatCall, formatAbacusMessage } from './utils';
import { increaseTimestampBy, UpgradeTestHelpers } from '../utils'; import { increaseTimestampBy, UpgradeTestHelpers } from '../utils';
import { getTestDeploy } from '../testChain'; import { Updater } from '../lib/core';
import { Updater } from '../../lib/core'; import { Address, Signer } from '../lib/types';
import { Address, Signer } from '../../lib/types'; import { AbacusDeployment } from '../lib/AbacusDeployment';
import { CoreDeploy as Deploy } from '@abacus-network/abacus-deploy/dist/src/core/CoreDeploy'; import { GovernanceDeployment } from '../lib/GovernanceDeployment';
import { import {
deployNChains, MysteryMathV2__factory,
deployUnenrolledReplica, TestReplica,
} from '@abacus-network/abacus-deploy/dist/src/core'; TestReplica__factory,
import * as contracts from '@abacus-network/ts-interface/dist/abacus-core'; TestRecipient__factory,
TestGovernanceRouter,
Replica,
Home,
} from '../../typechain';
const helpers = require('../../../../vectors/proof.json'); const helpers = require('../../../../vectors/proof.json');
const governorDomain = 1000; const governorDomain = 1000;
const nonGovernorDomain = 2000; const nonGovernorDomain = 2000;
const thirdDomain = 3000; const thirdDomain = 3000;
const domains = [governorDomain, nonGovernorDomain, thirdDomain];
const processGas = 850000;
const reserveGas = 15000;
/* /*
* Deploy the full Abacus suite on two chains * Deploy the full Abacus suite on two chains
*/ */
describe('GovernanceRouter', async () => { describe('GovernanceRouter', async () => {
let deploys: Deploy[] = []; let abacusDeployment: AbacusDeployment;
let governanceDeployment: GovernanceDeployment;
let signer: Signer, let signer: Signer,
secondGovernorSigner: Signer, secondSigner: Signer,
thirdRouter: Signer, thirdRouter: Signer,
governorRouter: contracts.TestGovernanceRouter,
governorHome: contracts.Home,
governorReplicaOnNonGovernorChain: contracts.TestReplica,
nonGovernorRouter: contracts.TestGovernanceRouter,
nonGovernorReplicaOnGovernorChain: contracts.TestReplica,
firstGovernor: Address, firstGovernor: Address,
secondGovernor: Address, secondGovernor: Address,
governorRouter: TestGovernanceRouter,
nonGovernorRouter: TestGovernanceRouter,
governorHome: Home,
governorReplicaOnNonGovernorChain: TestReplica,
nonGovernorReplicaOnGovernorChain: TestReplica,
updater: Updater; updater: Updater;
async function expectGovernor( async function expectGovernor(
governanceRouter: contracts.TestGovernanceRouter, governanceRouter: TestGovernanceRouter,
expectedGovernorDomain: number, expectedGovernorDomain: number,
expectedGovernor: Address, expectedGovernor: Address,
) { ) {
@ -49,130 +56,82 @@ describe('GovernanceRouter', async () => {
} }
before(async () => { before(async () => {
[thirdRouter, signer, secondGovernorSigner] = await ethers.getSigners(); [thirdRouter, signer, secondSigner] = await ethers.getSigners();
updater = await Updater.fromSigner(signer, governorDomain); updater = await Updater.fromSigner(signer, governorDomain);
}); });
beforeEach(async () => { beforeEach(async () => {
// reset deploys abacusDeployment = await abacus.deployment.fromDomains(domains, signer);
deploys[0] = await getTestDeploy(governorDomain, updater.address, []); governanceDeployment = await GovernanceDeployment.fromAbacusDeployment(
deploys[1] = await getTestDeploy(nonGovernorDomain, updater.address, []); abacusDeployment,
deploys[2] = await getTestDeploy(thirdDomain, updater.address, []); signer,
);
// deploy the entire Abacus suite on two chains
await deployNChains([deploys[0], deploys[1]]); firstGovernor = await signer.getAddress();
secondGovernor = await secondSigner.getAddress();
// get both governanceRouters
governorRouter = deploys[0].contracts.governanceRouter governorRouter = governanceDeployment.router(governorDomain);
?.proxy! as contracts.TestGovernanceRouter; nonGovernorRouter = governanceDeployment.router(nonGovernorDomain);
nonGovernorRouter = deploys[1].contracts.governanceRouter
?.proxy! as contracts.TestGovernanceRouter; governorReplicaOnNonGovernorChain = abacusDeployment.replica(
nonGovernorDomain,
firstGovernor = await governorRouter.governor(); governorDomain,
secondGovernor = await secondGovernorSigner.getAddress(); );
nonGovernorReplicaOnGovernorChain = abacusDeployment.replica(
governorHome = deploys[0].contracts.home?.proxy!; governorDomain,
nonGovernorDomain,
governorReplicaOnNonGovernorChain = deploys[1].contracts.replicas[ );
governorDomain
].proxy! as contracts.TestReplica; governorHome = abacusDeployment.home(governorDomain);
nonGovernorReplicaOnGovernorChain = deploys[0].contracts.replicas[
nonGovernorDomain
].proxy! as contracts.TestReplica;
}); });
// NB: must be first test for message proof // NB: must be first test for message proof
it('Sends cross-chain message to upgrade contract', async () => { it('Sends cross-chain message to upgrade contract', async () => {
const deploy = deploys[1];
const upgradeUtils = new UpgradeTestHelpers(); const upgradeUtils = new UpgradeTestHelpers();
// get upgradeBeaconController // get upgradeBeaconController
const upgradeBeaconController = deploy.contracts.upgradeBeaconController!; const ubc = abacusDeployment.ubc(nonGovernorDomain);
// Transfer ownership of the UBC to governance.
await ubc.transferOwnership(nonGovernorRouter.address);
const mysteryMath = await upgradeUtils.deployMysteryMathUpgradeSetup( const mysteryMath = await upgradeUtils.deployMysteryMathUpgradeSetup(
deploy,
signer, signer,
false, ubc,
); );
// expect results before upgrade // expect results before upgrade
await upgradeUtils.expectMysteryMathV1(mysteryMath.proxy); await upgradeUtils.expectMysteryMathV1(mysteryMath.proxy);
// Deploy Implementation 2 // Deploy Implementation 2
const factory2 = new contracts.MysteryMathV2__factory(signer); const factory2 = new MysteryMathV2__factory(signer);
const implementation2 = await factory2.deploy(); const implementation2 = await factory2.deploy();
// Format abacus call message // Format abacus call message
const call = await formatCall(upgradeBeaconController, 'upgrade', [ const call = await formatCall(ubc, 'upgrade', [
mysteryMath.beacon.address, mysteryMath.beacon.address,
implementation2.address, implementation2.address,
]); ]);
const committedRoot = await governorHome.committedRoot();
// dispatch call on local governorRouter // dispatch call on local governorRouter
let tx = await governorRouter.callRemote(nonGovernorDomain, [call]); let tx = await governorRouter.callRemote(nonGovernorDomain, [call]);
let receipt = await tx.wait(0);
let leaf = receipt.events?.[0].topics[1];
expect(leaf).to.equal(helpers.proof.leaf);
const [, latestRoot] = await governorHome.suggestUpdate();
expect(latestRoot).to.equal(helpers.root);
const { signature } = await updater.signUpdate(committedRoot, latestRoot);
await expect(governorHome.update(committedRoot, latestRoot, signature))
.to.emit(governorHome, 'Update')
.withArgs(governorDomain, committedRoot, latestRoot, signature);
expect(await governorHome.committedRoot()).to.equal(latestRoot);
expect(await governorHome.queueContains(latestRoot)).to.be.false;
await updateReplica(
{ oldRoot: committedRoot, newRoot: latestRoot, signature },
governorReplicaOnNonGovernorChain,
);
// Increase time enough for both updates to be confirmable
const optimisticSeconds = deploy.config.optimisticSeconds;
await increaseTimestampBy(deploy.chain.provider, optimisticSeconds * 2);
// after confirming, committedRoot should be equal to the last submitted update
expect(await governorReplicaOnNonGovernorChain.committedRoot()).to.equal(
latestRoot,
);
const callMessage = abacus.governance.formatCalls([call]);
const nonce = await governorHome.nonces(nonGovernorDomain);
const abacusMessage = abacus.formatMessage(
governorDomain,
governorRouter.address,
nonce - 1,
nonGovernorDomain,
nonGovernorRouter.address,
callMessage,
);
expect(ethers.utils.keccak256(abacusMessage)).to.equal(leaf);
const { path, index } = helpers.proof;
await governorReplicaOnNonGovernorChain.proveAndProcess(
abacusMessage,
path,
index,
);
await abacusDeployment.processMessages();
// test implementation was upgraded // test implementation was upgraded
await upgradeUtils.expectMysteryMathV2(mysteryMath.proxy); await upgradeUtils.expectMysteryMathV2(mysteryMath.proxy);
}); });
it('Rejects message from unenrolled replica', async () => { it('Rejects message from unenrolled replica', async () => {
await deployUnenrolledReplica(deploys[1], deploys[2]); const replicaFactory = new TestReplica__factory(signer);
const unenrolledReplica = await replicaFactory.deploy(
const unenrolledReplica = deploys[1].contracts.replicas[thirdDomain] nonGovernorDomain,
.proxy! as contracts.TestReplica; processGas,
reserveGas,
);
await unenrolledReplica.initialize(
thirdDomain,
await signer.getAddress(),
ethers.constants.HashZero,
0,
);
// Create TransferGovernor message // Create TransferGovernor message
const transferGovernorMessage = abacus.governance.formatTransferGovernor( const transferGovernorMessage = abacus.governance.formatTransferGovernor(
@ -206,8 +165,8 @@ describe('GovernanceRouter', async () => {
transferGovernorMessage, transferGovernorMessage,
); );
// Set message status to MessageStatus.Pending // Set message status to MessageStatus.Proven
await nonGovernorReplicaOnGovernorChain.setMessagePending(abacusMessage); await nonGovernorReplicaOnGovernorChain.setMessageProven(abacusMessage);
// Expect replica processing to fail when nonGovernorRouter reverts in handle // Expect replica processing to fail when nonGovernorRouter reverts in handle
let success = let success =
@ -286,12 +245,12 @@ describe('GovernanceRouter', async () => {
it('Accepts valid call messages', async () => { it('Accepts valid call messages', async () => {
// const TestRecipient = await abacus.deployImplementation('TestRecipient'); // const TestRecipient = await abacus.deployImplementation('TestRecipient');
const testRecipientFactory = new contracts.TestRecipient__factory(signer); const testRecipientFactory = new TestRecipient__factory(signer);
const TestRecipient = await testRecipientFactory.deploy(); const testRecipient = await testRecipientFactory.deploy();
// Format abacus call message // Format abacus call message
const arg = 'String!'; const arg = 'String!';
const call = await formatCall(TestRecipient, 'receiveString', [arg]); const call = await formatCall(testRecipient, 'receiveString', [arg]);
// Create Call message to test recipient that calls receiveString // Create Call message to test recipient that calls receiveString
const callMessage = abacus.governance.formatCalls([call, call]); const callMessage = abacus.governance.formatCalls([call, call]);
@ -393,31 +352,32 @@ describe('GovernanceRouter', async () => {
it('Upgrades using GovernanceRouter call', async () => { it('Upgrades using GovernanceRouter call', async () => {
const upgradeUtils = new UpgradeTestHelpers(); const upgradeUtils = new UpgradeTestHelpers();
const deploy = deploys[0];
// get upgradeBeaconController
const ubc = abacusDeployment.ubc(governorDomain);
// Transfer ownership of the UBC to governance.
await ubc.transferOwnership(governorRouter.address);
const mysteryMath = await upgradeUtils.deployMysteryMathUpgradeSetup( const mysteryMath = await upgradeUtils.deployMysteryMathUpgradeSetup(
deploy,
signer, signer,
ubc,
); );
const upgradeBeaconController = deploy.contracts.upgradeBeaconController!;
// expect results before upgrade // expect results before upgrade
await upgradeUtils.expectMysteryMathV1(mysteryMath.proxy); await upgradeUtils.expectMysteryMathV1(mysteryMath.proxy);
// Deploy Implementation 2 // Deploy Implementation 2
const v2Factory = new contracts.MysteryMathV2__factory(signer); const v2Factory = new MysteryMathV2__factory(signer);
const implementation = await v2Factory.deploy(); const implementation = await v2Factory.deploy();
// Format abacus call message // Format abacus call message
const call = await formatCall(upgradeBeaconController, 'upgrade', [ const call = await formatCall(ubc, 'upgrade', [
mysteryMath.beacon.address, mysteryMath.beacon.address,
implementation.address, implementation.address,
]); ]);
// dispatch call on local governorRouter // dispatch call on local governorRouter
await expect(governorRouter.callLocal([call])).to.emit( await expect(governorRouter.callLocal([call])).to.emit(
upgradeBeaconController, ubc,
'BeaconUpgraded', 'BeaconUpgraded',
); );
@ -427,11 +387,14 @@ describe('GovernanceRouter', async () => {
it('Calls UpdaterManager to change the Updater on Home', async () => { it('Calls UpdaterManager to change the Updater on Home', async () => {
const [newUpdater] = await ethers.getSigners(); const [newUpdater] = await ethers.getSigners();
const updaterManager = deploys[0].contracts.updaterManager!; const updaterManager = abacusDeployment.updaterManager(governorDomain);
await updaterManager.transferOwnership(governorRouter.address);
// check current Updater address on Home // check current Updater address on Home
let currentUpdaterAddr = await governorHome.updater(); let currentUpdaterAddr = await governorHome.updater();
expect(currentUpdaterAddr).to.equal(deploys[0].updater); expect(currentUpdaterAddr).to.equal(
await abacusDeployment.updater(governorDomain).signer.getAddress(),
);
// format abacus call message // format abacus call message
const call = await formatCall(updaterManager, 'setUpdater', [ const call = await formatCall(updaterManager, 'setUpdater', [

@ -4,20 +4,23 @@ import * as types from 'ethers';
import { formatCall, sendFromSigner } from './utils'; import { formatCall, sendFromSigner } from './utils';
import { increaseTimestampBy } from '../utils'; import { increaseTimestampBy } from '../utils';
import { getTestDeploy } from '../testChain'; import { Updater } from '../lib/core';
import { Updater } from '../../lib/core'; import { Signer } from '../lib/types';
import { Signer } from '../../lib/types'; import {
import { CoreDeploy as Deploy } from '@abacus-network/abacus-deploy/dist/src/core/CoreDeploy'; UpdaterManager,
import { deployNChains } from '@abacus-network/abacus-deploy/dist/src/core'; TestGovernanceRouter,
import * as contracts from '@abacus-network/ts-interface/dist/abacus-core'; TestHome,
} from '../../typechain';
import { AbacusDeployment } from '../lib/AbacusDeployment';
import { GovernanceDeployment } from '../lib/GovernanceDeployment';
async function expectNotInRecovery( async function expectNotInRecovery(
updaterManager: contracts.UpdaterManager, updaterManager: UpdaterManager,
recoveryManager: types.Signer, recoveryManager: types.Signer,
randomSigner: Signer, randomSigner: Signer,
governor: Signer, governor: Signer,
governanceRouter: contracts.TestGovernanceRouter, governanceRouter: TestGovernanceRouter,
home: contracts.TestHome, home: TestHome,
) { ) {
expect(await governanceRouter.inRecovery()).to.be.false; expect(await governanceRouter.inRecovery()).to.be.false;
@ -102,7 +105,7 @@ async function expectNotInRecovery(
async function expectOnlyRecoveryManagerCanTransferRole( async function expectOnlyRecoveryManagerCanTransferRole(
governor: Signer, governor: Signer,
governanceRouter: contracts.TestGovernanceRouter, governanceRouter: TestGovernanceRouter,
randomSigner: Signer, randomSigner: Signer,
recoveryManager: Signer, recoveryManager: Signer,
) { ) {
@ -140,7 +143,7 @@ async function expectOnlyRecoveryManagerCanTransferRole(
async function expectOnlyRecoveryManagerCanExitRecovery( async function expectOnlyRecoveryManagerCanExitRecovery(
governor: Signer, governor: Signer,
governanceRouter: contracts.TestGovernanceRouter, governanceRouter: TestGovernanceRouter,
randomSigner: Signer, randomSigner: Signer,
recoveryManager: Signer, recoveryManager: Signer,
) { ) {
@ -161,7 +164,7 @@ async function expectOnlyRecoveryManagerCanExitRecovery(
async function expectOnlyRecoveryManagerCanInitiateRecovery( async function expectOnlyRecoveryManagerCanInitiateRecovery(
governor: Signer, governor: Signer,
governanceRouter: contracts.TestGovernanceRouter, governanceRouter: TestGovernanceRouter,
randomSigner: Signer, randomSigner: Signer,
recoveryManager: Signer, recoveryManager: Signer,
) { ) {
@ -194,47 +197,42 @@ async function expectOnlyRecoveryManagerCanInitiateRecovery(
const localDomain = 1000; const localDomain = 1000;
const remoteDomain = 2000; const remoteDomain = 2000;
const domains = [localDomain, remoteDomain];
/* /*
* Deploy the full Abacus suite on two chains * Deploy the full Abacus suite on two chains
*/ */
describe('RecoveryManager', async () => { describe('RecoveryManager', async () => {
let abacusDeployment: AbacusDeployment;
let governanceDeployment: GovernanceDeployment;
let governor: Signer, let governor: Signer,
recoveryManager: Signer, recoveryManager: Signer,
randomSigner: Signer, randomSigner: Signer,
governanceRouter: contracts.TestGovernanceRouter, governanceRouter: TestGovernanceRouter,
home: contracts.TestHome, home: TestHome,
updaterManager: contracts.UpdaterManager; updaterManager: UpdaterManager;
let deploys: Deploy[] = [];
before(async () => { before(async () => {
[governor, recoveryManager, randomSigner] = await ethers.getSigners(); [governor, recoveryManager, randomSigner] = await ethers.getSigners();
const updater = await Updater.fromSigner(randomSigner, localDomain); const updater = await Updater.fromSigner(randomSigner, localDomain);
abacusDeployment = await abacus.deployment.fromDomains(
deploys.push( domains,
await getTestDeploy( randomSigner,
localDomain,
updater.address,
[],
recoveryManager.address,
),
); );
deploys.push( governanceDeployment = await GovernanceDeployment.fromAbacusDeployment(
await getTestDeploy( abacusDeployment,
remoteDomain, recoveryManager,
updater.address,
[],
recoveryManager.address,
),
); );
for (const domain of domains) {
await abacusDeployment.transferOwnership(
domain,
governanceDeployment.router(domain).address,
);
}
await deployNChains(deploys); governanceRouter = governanceDeployment.router(localDomain);
home = abacusDeployment.home(localDomain);
governanceRouter = deploys[0].contracts.governanceRouter updaterManager = abacusDeployment.updaterManager(localDomain);
?.proxy! as contracts.TestGovernanceRouter;
home = deploys[0].contracts.home?.proxy! as contracts.TestHome;
updaterManager = deploys[0].contracts.updaterManager!;
// set governor // set governor
await governanceRouter.transferGovernor(localDomain, governor.address); await governanceRouter.transferGovernor(localDomain, governor.address);

@ -2,15 +2,11 @@ import { abacus, ethers } from 'hardhat';
import { expect } from 'chai'; import { expect } from 'chai';
import * as utils from './utils'; import * as utils from './utils';
import { getTestDeploy } from '../testChain'; import { Updater, MessageStatus } from '../lib/core';
import { Updater, MessageStatus } from '../../lib/core'; import { Update, Signer, BytesArray } from '../lib/types';
import { Update, Signer, BytesArray } from '../../lib/types'; import { TestRecipient__factory, TestReplica } from '../../typechain';
import { CoreDeploy as Deploy } from '@abacus-network/abacus-deploy/dist/src/core/CoreDeploy'; import { AbacusDeployment } from '../lib/AbacusDeployment';
import { deployTwoChains } from '@abacus-network/abacus-deploy/dist/src/core'; import { GovernanceDeployment } from '../lib/GovernanceDeployment';
import {
TestRecipient__factory,
TestReplica,
} from '@abacus-network/ts-interface/dist/abacus-core';
const proveAndProcessTestCases = require('../../../../vectors/proveAndProcess.json'); const proveAndProcessTestCases = require('../../../../vectors/proveAndProcess.json');
@ -27,37 +23,38 @@ const remoteDomain = domains[1];
* TODO prove and process messages on Replica * TODO prove and process messages on Replica
*/ */
describe('SimpleCrossChainMessage', async () => { describe('SimpleCrossChainMessage', async () => {
// deploys[0] is the local deploy and governor chain let abacusDeployment: AbacusDeployment;
// deploys[1] is the remote deploy let governanceDeployment: GovernanceDeployment;
let deploys: Deploy[] = [];
let randomSigner: Signer, updater: Updater, latestUpdate: Update; let randomSigner: Signer, updater: Updater, latestUpdate: Update;
before(async () => { before(async () => {
[randomSigner] = await ethers.getSigners(); [randomSigner] = await ethers.getSigners();
updater = await Updater.fromSigner(randomSigner, localDomain); updater = await Updater.fromSigner(randomSigner, localDomain);
abacusDeployment = await abacus.deployment.fromDomains(
deploys.push(await getTestDeploy(localDomain, updater.address, [])); domains,
deploys.push(await getTestDeploy(remoteDomain, updater.address, [])); randomSigner,
);
await deployTwoChains(deploys[0], deploys[1]); governanceDeployment = await GovernanceDeployment.fromAbacusDeployment(
abacusDeployment,
randomSigner,
);
}); });
it('All Homes have correct initial state', async () => { it('All Homes have correct initial state', async () => {
const nullRoot = '0x' + '00'.repeat(32); const nullRoot = '0x' + '00'.repeat(32);
// governorHome has 1 updates // governorHome has 0 updates
const governorHome = deploys[0].contracts.home?.proxy!; const governorHome = abacusDeployment.home(localDomain);
let length = await governorHome.queueLength(); let length = await governorHome.queueLength();
expect(length).to.equal(1); expect(length).to.equal(0);
let [suggestedCommitted, suggestedNew] = await governorHome.suggestUpdate(); let [suggestedCommitted, suggestedNew] = await governorHome.suggestUpdate();
expect(suggestedCommitted).to.equal(nullRoot); expect(suggestedCommitted).to.equal(nullRoot);
expect(suggestedNew).to.not.equal(nullRoot); expect(suggestedNew).to.equal(nullRoot);
// nonGovernorHome has 2 updates // nonGovernorHome has 2 updates
const nonGovernorHome = deploys[1].contracts.home?.proxy!; const nonGovernorHome = abacusDeployment.home(remoteDomain);
length = await nonGovernorHome.queueLength(); length = await nonGovernorHome.queueLength();
expect(length).to.equal(2); expect(length).to.equal(2);
@ -72,7 +69,7 @@ describe('SimpleCrossChainMessage', async () => {
utils.formatMessage(message, remoteDomain, randomSigner.address), utils.formatMessage(message, remoteDomain, randomSigner.address),
); );
const update = await utils.dispatchMessagesAndUpdateHome( const update = await utils.dispatchMessagesAndUpdateHome(
deploys[0].contracts.home?.proxy!, abacusDeployment.home(localDomain),
messages, messages,
updater, updater,
); );
@ -83,7 +80,7 @@ describe('SimpleCrossChainMessage', async () => {
it('Destination Replica Accepts the first update', async () => { it('Destination Replica Accepts the first update', async () => {
await utils.updateReplica( await utils.updateReplica(
latestUpdate, latestUpdate,
deploys[1].contracts.replicas[localDomain].proxy!, abacusDeployment.replica(remoteDomain, localDomain),
); );
}); });
@ -92,7 +89,7 @@ describe('SimpleCrossChainMessage', async () => {
utils.formatMessage(message, remoteDomain, randomSigner.address), utils.formatMessage(message, remoteDomain, randomSigner.address),
); );
const update = await utils.dispatchMessagesAndUpdateHome( const update = await utils.dispatchMessagesAndUpdateHome(
deploys[0].contracts.home?.proxy!, abacusDeployment.home(localDomain),
messages, messages,
updater, updater,
); );
@ -102,23 +99,22 @@ describe('SimpleCrossChainMessage', async () => {
it('Destination Replica Accepts the second update', async () => { it('Destination Replica Accepts the second update', async () => {
await utils.updateReplica( await utils.updateReplica(
latestUpdate, latestUpdate,
deploys[1].contracts.replicas[localDomain].proxy, abacusDeployment.replica(remoteDomain, localDomain),
); );
}); });
it('Destination Replica shows latest update as the committed root', async () => { it('Destination Replica shows latest update as the committed root', async () => {
const replica = deploys[1].contracts.replicas[localDomain].proxy; const replica = abacusDeployment.replica(remoteDomain, localDomain);
const { newRoot } = latestUpdate; const { newRoot } = latestUpdate;
expect(await replica.committedRoot()).to.equal(newRoot); expect(await replica.committedRoot()).to.equal(newRoot);
}); });
it('Proves and processes a message on Replica', async () => { it('Proves and processes a message on Replica', async () => {
// get governance routers // get governance routers
const governorRouter = deploys[0].contracts.governanceRouter!.proxy; const governorRouter = governanceDeployment.router(localDomain);
const nonGovernorRouter = deploys[1].contracts.governanceRouter!.proxy; const nonGovernorRouter = governanceDeployment.router(remoteDomain);
const replica = deploys[1].contracts.replicas[localDomain] const replica = abacusDeployment.replica(remoteDomain, localDomain);
.proxy as TestReplica;
const testRecipientFactory = new TestRecipient__factory(randomSigner); const testRecipientFactory = new TestRecipient__factory(randomSigner);
const TestRecipient = await testRecipientFactory.deploy(); const TestRecipient = await testRecipientFactory.deploy();

@ -2,14 +2,14 @@ import { expect } from 'chai';
import { ethers, abacus } from 'hardhat'; import { ethers, abacus } from 'hardhat';
import * as types from 'ethers'; import * as types from 'ethers';
import { Updater } from '../../lib/core'; import { Updater } from '../lib/core';
import { Update, CallData, Address } from '../../lib/types'; import { Update, CallData, Address } from '../lib/types';
import { import {
Replica, Replica,
TestReplica, TestReplica,
Home, Home,
TestGovernanceRouter, TestGovernanceRouter,
} from '@abacus-network/ts-interface/dist/abacus-core'; } from '../../typechain';
type MessageDetails = { type MessageDetails = {
message: string; message: string;
@ -175,8 +175,8 @@ export async function formatAbacusMessage(
message, message,
); );
// Set message status to MessageStatus.Pending // Set message status to MessageStatus.Proven
await replica.setMessagePending(abacusMessage); await replica.setMessageProven(abacusMessage);
return abacusMessage; return abacusMessage;
} }

@ -1,16 +1,14 @@
import { ethers, abacus } from 'hardhat'; import { ethers, abacus } from 'hardhat';
import { expect } from 'chai'; import { expect } from 'chai';
import { getTestDeploy } from './testChain'; import { AbacusState, Updater } from './lib/core';
import { AbacusState, Updater } from '../lib/core'; import { Signer } from './lib/types';
import { Signer } from '../lib/types';
import { CoreDeploy as Deploy } from '@abacus-network/abacus-deploy/dist/src/core/CoreDeploy';
import * as deploys from '@abacus-network/abacus-deploy/dist/src/core';
import { import {
TestHome, TestHome,
TestHome__factory,
UpdaterManager__factory, UpdaterManager__factory,
UpdaterManager, UpdaterManager,
} from '@abacus-network/ts-interface/dist/abacus-core'; } from '../typechain';
const homeDomainHashTestCases = require('../../../vectors/homeDomainHash.json'); const homeDomainHashTestCases = require('../../../vectors/homeDomainHash.json');
const destinationNonceTestCases = require('../../../vectors/destinationNonce.json'); const destinationNonceTestCases = require('../../../vectors/destinationNonce.json');
@ -19,15 +17,14 @@ const localDomain = 1000;
const destDomain = 2000; const destDomain = 2000;
const emptyAddress: string = '0x' + '00'.repeat(32); const emptyAddress: string = '0x' + '00'.repeat(32);
describe.only('Home', async () => { describe('Home', async () => {
let deploy: Deploy, let home: TestHome,
home: TestHome,
signer: Signer, signer: Signer,
fakeSigner: Signer, fakeSigner: Signer,
recipient: Signer, recipient: Signer,
updater: Updater, updater: Updater,
fakeUpdater: Updater, fakeUpdater: Updater,
fakeUpdaterManager: UpdaterManager; updaterManager: UpdaterManager;
// Helper function that dispatches message and returns intermediate root. // Helper function that dispatches message and returns intermediate root.
// The message recipient is the same for all messages dispatched. // The message recipient is the same for all messages dispatched.
@ -45,35 +42,26 @@ describe.only('Home', async () => {
before(async () => { before(async () => {
[signer, fakeSigner, recipient] = await ethers.getSigners(); [signer, fakeSigner, recipient] = await ethers.getSigners();
updater = await Updater.fromSigner(signer, localDomain); updater = await Updater.fromSigner(signer, localDomain);
deploy = await getTestDeploy(localDomain, updater.address, []);
await deploys.deployUpdaterManager(deploy);
await deploys.deployUpgradeBeaconController(deploy);
fakeUpdater = await Updater.fromSigner(fakeSigner, localDomain); fakeUpdater = await Updater.fromSigner(fakeSigner, localDomain);
// deploy fake UpdaterManager // deploy UpdaterManagers
const updaterManagerFactory = new UpdaterManager__factory(signer); const updaterManagerFactory = new UpdaterManager__factory(signer);
fakeUpdaterManager = await updaterManagerFactory.deploy(updater.address); updaterManager = await updaterManagerFactory.deploy(updater.address);
const ret = await fakeUpdaterManager.updater();
expect(ret).to.equal(signer.address);
}); });
beforeEach(async () => { beforeEach(async () => {
// redeploy the home before each test run // redeploy the home before each test run
await deploys.deployHome(deploy); const homeFactory = new TestHome__factory(signer);
home = deploy.contracts.home?.proxy as TestHome; home = await homeFactory.deploy(localDomain);
await home.initialize(updaterManager.address);
// set home on UpdaterManager // set home on UpdaterManager
await deploy.contracts.updaterManager!.setHome(home.address); await updaterManager.setHome(home.address);
}); });
it('Cannot be initialized twice', async () => { it('Cannot be initialized twice', async () => {
await expect( await expect(home.initialize(updaterManager.address)).to.be.revertedWith(
home.initialize(fakeUpdaterManager.address), 'Initializable: contract is already initialized',
).to.be.revertedWith('Initializable: contract is already initialized'); );
}); });
it('Halts on fail', async () => { it('Halts on fail', async () => {
@ -94,18 +82,10 @@ describe.only('Home', async () => {
// Compare Rust output in json file to solidity output (json file matches // Compare Rust output in json file to solidity output (json file matches
// hash for local domain of 1000) // hash for local domain of 1000)
for (let testCase of homeDomainHashTestCases) { for (let testCase of homeDomainHashTestCases) {
let deploy = await getTestDeploy( const homeFactory = new TestHome__factory(signer);
testCase.homeDomain, const tempHome = await homeFactory.deploy(testCase.homeDomain);
fakeUpdaterManager.address,
[],
);
await deploys.deployUpdaterManager(deploy);
await deploys.deployUpgradeBeaconController(deploy);
await deploys.deployHome(deploy);
const tempHome = deploy.contracts.home?.proxy! as TestHome;
const { expectedDomainHash } = testCase; const { expectedDomainHash } = testCase;
const homeDomainHash = await tempHome.testHomeDomainHash(); const homeDomainHash = await tempHome.homeDomainHash();
expect(homeDomainHash).to.equal(expectedDomainHash); expect(homeDomainHash).to.equal(expectedDomainHash);
} }
}); });
@ -139,7 +119,7 @@ describe.only('Home', async () => {
message, message,
); );
const messageHash = abacus.messageHash(abacusMessage); const messageHash = abacus.messageHash(abacusMessage);
const leafIndex = await home.nextLeafIndex(); const leafIndex = await home.tree();
const committedRoot = await home.committedRoot(); const committedRoot = await home.committedRoot();
// Send message with signer address as msg.sender // Send message with signer address as msg.sender
@ -272,7 +252,7 @@ describe.only('Home', async () => {
it('Correctly calculates destinationAndNonce', async () => { it('Correctly calculates destinationAndNonce', async () => {
for (let testCase of destinationNonceTestCases) { for (let testCase of destinationNonceTestCases) {
let { destination, nonce, expectedDestinationAndNonce } = testCase; let { destination, nonce, expectedDestinationAndNonce } = testCase;
const solidityDestinationAndNonce = await home.testDestinationAndNonce( const solidityDestinationAndNonce = await home.destinationAndNonce(
destination, destination,
nonce, nonce,
); );

@ -0,0 +1,188 @@
import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
import { assert } from 'chai';
import * as ethers from 'ethers';
import * as types from './types';
import { Updater } from './core';
import {
TestHome,
TestHome__factory,
UpdaterManager,
UpdaterManager__factory,
UpgradeBeaconController,
UpgradeBeaconController__factory,
XAppConnectionManager,
XAppConnectionManager__factory,
TestReplica,
TestReplica__factory,
} from '../../typechain';
export interface AbacusInstance {
domain: types.Domain;
updater: Updater;
updaterManager: UpdaterManager;
home: TestHome;
connectionManager: XAppConnectionManager;
ubc: UpgradeBeaconController;
replicas: Record<number, TestReplica>;
}
const processGas = 850000;
const reserveGas = 15000;
const optimisticSeconds = 0;
export class AbacusDeployment {
constructor(
public readonly domains: types.Domain[],
public readonly instances: Record<number, AbacusInstance>,
public readonly signer: ethers.Signer,
) {}
static async fromDomains(domains: types.Domain[], signer: ethers.Signer) {
const instances: Record<number, AbacusInstance> = {};
for (const local of domains) {
const instance = await AbacusDeployment.deployInstance(
local,
domains.filter((d) => d !== local),
signer,
);
instances[local] = instance;
}
return new AbacusDeployment(domains, instances, signer);
}
static async deployInstance(
local: types.Domain,
remotes: types.Domain[],
signer: ethers.Signer,
): Promise<AbacusInstance> {
const updaterManagerFactory = new UpdaterManager__factory(signer);
const updaterManager = await updaterManagerFactory.deploy(
await signer.getAddress(),
);
const ubcFactory = new UpgradeBeaconController__factory(signer);
const ubc = await ubcFactory.deploy();
const homeFactory = new TestHome__factory(signer);
const home = await homeFactory.deploy(local);
await home.initialize(updaterManager.address);
await updaterManager.setHome(home.address);
const connectionManagerFactory = new XAppConnectionManager__factory(signer);
const connectionManager = await connectionManagerFactory.deploy();
await connectionManager.setHome(home.address);
const replicaFactory = new TestReplica__factory(signer);
const replicas: Record<number, TestReplica> = {};
const deploys = remotes.map(async (remoteDomain) => {
const replica = await replicaFactory.deploy(
local,
processGas,
reserveGas,
);
await replica.initialize(
remoteDomain,
await signer.getAddress(),
ethers.constants.HashZero,
optimisticSeconds,
);
await connectionManager.ownerEnrollReplica(replica.address, remoteDomain);
replicas[remoteDomain] = replica;
});
await Promise.all(deploys);
return {
domain: local,
updater: await Updater.fromSigner(signer, local),
home,
connectionManager,
updaterManager,
replicas,
ubc,
};
}
async transferOwnership(domain: types.Domain, address: types.Address) {
await this.home(domain).transferOwnership(address);
await this.ubc(domain).transferOwnership(address);
await this.connectionManager(domain).transferOwnership(address);
await this.updaterManager(domain).transferOwnership(address);
for (const remote of this.domains) {
if (remote !== domain) {
await this.replica(domain, remote).transferOwnership(address);
}
}
}
home(domain: types.Domain): TestHome {
return this.instances[domain].home;
}
ubc(domain: types.Domain): UpgradeBeaconController {
return this.instances[domain].ubc;
}
updater(domain: types.Domain): Updater {
return this.instances[domain].updater;
}
replica(local: types.Domain, remote: types.Domain): TestReplica {
return this.instances[local].replicas[remote];
}
connectionManager(domain: types.Domain): XAppConnectionManager {
return this.instances[domain].connectionManager;
}
updaterManager(domain: types.Domain): UpdaterManager {
return this.instances[domain].updaterManager;
}
async processMessages() {
await Promise.all(
this.domains.map((d) => this.processMessagesFromDomain(d)),
);
}
async processMessagesFromDomain(local: types.Domain) {
const home = this.home(local);
const [committedRoot, latestRoot] = await home.suggestUpdate();
// Find the block number of the last update submitted on Home.
const updateFilter = home.filters.Update(null, null, committedRoot);
const updates = await home.queryFilter(updateFilter);
assert(updates.length === 0 || updates.length === 1);
const fromBlock = updates.length === 0 ? 0 : updates[0].blockNumber;
// Update the Home and Replicas to the latest roots.
// This is technically not necessary given that we are not proving against
// a root in the TestReplica.
const updater = this.updater(local);
const { signature } = await updater.signUpdate(committedRoot, latestRoot);
await home.update(committedRoot, latestRoot, signature);
for (const remote of this.domains) {
if (remote !== local) {
const replica = this.replica(remote, local);
await replica.update(committedRoot, latestRoot, signature);
}
}
// Find all messages dispatched on the home since the previous update.
const dispatchFilter = home.filters.Dispatch();
const dispatches = await home.queryFilter(dispatchFilter, fromBlock);
for (const dispatch of dispatches) {
const destination = dispatch.args.destinationAndNonce.shr(32).toNumber();
if (destination !== local) {
const replica = this.replica(destination, local);
await replica.setMessageProven(dispatch.args.message);
await replica.testProcess(dispatch.args.message);
}
}
}
}
export const abacus: any = {
AbacusDeployment,
};

@ -0,0 +1,85 @@
import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
import { assert } from 'chai';
import * as ethers from 'ethers';
import { AbacusDeployment } from './AbacusDeployment';
import { toBytes32 } from './utils';
import * as types from './types';
import {
TestGovernanceRouter__factory,
TestGovernanceRouter,
} from '../../typechain';
export interface GovernanceInstance {
domain: types.Domain;
router: TestGovernanceRouter;
}
const recoveryTimelock = 60 * 60 * 24 * 7;
export class GovernanceDeployment {
constructor(
public readonly domains: types.Domain[],
public readonly instances: Record<number, GovernanceInstance>,
) {}
static async fromAbacusDeployment(
abacus: AbacusDeployment,
signer: ethers.Signer,
) {
// Deploy routers.
const instances: Record<number, GovernanceInstance> = {};
for (const domain of abacus.domains) {
const instance = await GovernanceDeployment.deployInstance(
domain,
signer,
abacus.connectionManager(domain).address,
);
instances[domain] = instance;
}
// Make all routers aware of eachother.
for (const local of abacus.domains) {
for (const remote of abacus.domains) {
await instances[local].router.setRouterLocal(
remote,
toBytes32(instances[remote].router.address),
);
}
}
// Set the governor on all routers.
for (let i = 0; i < abacus.domains.length; i++) {
if (i > 0) {
await instances[abacus.domains[i]].router.transferGovernor(
abacus.domains[0],
instances[abacus.domains[0]].router.address,
);
}
}
return new GovernanceDeployment(abacus.domains, instances);
}
static async deployInstance(
domain: types.Domain,
signer: ethers.Signer,
connectionManagerAddress: types.Address,
): Promise<GovernanceInstance> {
const routerFactory = new TestGovernanceRouter__factory(signer);
const router = await routerFactory.deploy(domain, recoveryTimelock);
await router.initialize(
connectionManagerAddress,
await signer.getAddress(),
);
return {
domain,
router,
};
}
router(domain: types.Domain): TestGovernanceRouter {
return this.instances[domain].router;
}
}

@ -1,17 +1,17 @@
import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
import { assert } from 'chai'; import { assert } from 'chai';
import * as ethers from 'ethers'; import * as ethers from 'ethers';
import * as types from './types'; import * as types from './types';
import { getHexStringByteLength } from './utils'; import { getHexStringByteLength } from './utils';
import { AbacusDeployment } from './AbacusDeployment';
export class Updater { export class Updater {
localDomain: types.Domain; localDomain: types.Domain;
signer: SignerWithAddress; signer: ethers.Signer;
address: types.Address; address: types.Address;
constructor( constructor(
signer: SignerWithAddress, signer: ethers.Signer,
address: types.Address, address: types.Address,
localDomain: types.Domain, localDomain: types.Domain,
disableWarn: boolean, disableWarn: boolean,
@ -24,10 +24,7 @@ export class Updater {
this.address = address; this.address = address;
} }
static async fromSigner( static async fromSigner(signer: ethers.Signer, localDomain: types.Domain) {
signer: SignerWithAddress,
localDomain: types.Domain,
) {
return new Updater(signer, await signer.getAddress(), localDomain, true); return new Updater(signer, await signer.getAddress(), localDomain, true);
} }
@ -187,6 +184,7 @@ function formatCalls(callsData: types.CallData[]): string {
} }
export const abacus: types.HardhatAbacusHelpers = { export const abacus: types.HardhatAbacusHelpers = {
deployment: AbacusDeployment,
formatMessage, formatMessage,
governance: { governance: {
formatTransferGovernor, formatTransferGovernor,

@ -3,10 +3,7 @@ import { extendEnvironment } from 'hardhat/config';
import { abacus } from './core'; import { abacus } from './core';
import { bridge } from './bridge';
// HardhatRuntimeEnvironment // HardhatRuntimeEnvironment
extendEnvironment((hre) => { extendEnvironment((hre) => {
hre.abacus = abacus; hre.abacus = abacus;
hre.bridge = bridge;
}); });

@ -1,11 +1,10 @@
import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers'; import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
import { TokenIdentifier } from '@abacus-network/sdk/dist/abacus';
import { BytesLike, ethers } from 'ethers'; import { BytesLike, ethers } from 'ethers';
import { BridgeMessageTypes } from './bridge';
/********* HRE *********/ /********* HRE *********/
export interface HardhatAbacusHelpers { export interface HardhatAbacusHelpers {
deployment: any;
formatMessage: Function; formatMessage: Function;
governance: { governance: {
formatTransferGovernor: Function; formatTransferGovernor: Function;
@ -19,22 +18,9 @@ export interface HardhatAbacusHelpers {
signedFailureNotification: Function; signedFailureNotification: Function;
} }
export interface HardhatBridgeHelpers {
BridgeMessageTypes: typeof BridgeMessageTypes;
typeToByte: Function;
MESSAGE_LEN: MessageLen;
serializeTransferAction: Function;
serializeDetailsAction: Function;
serializeRequestDetailsAction: Function;
serializeAction: Function;
serializeTokenId: Function;
serializeMessage: Function;
}
declare module 'hardhat/types/runtime' { declare module 'hardhat/types/runtime' {
interface HardhatRuntimeEnvironment { interface HardhatRuntimeEnvironment {
abacus: HardhatAbacusHelpers; abacus: HardhatAbacusHelpers;
bridge: HardhatBridgeHelpers;
} }
} }
@ -101,37 +87,3 @@ export type SignedFailureNotification = {
failureNotification: FailureNotification; failureNotification: FailureNotification;
signature: string; signature: string;
}; };
/********* TOKEN BRIDGE *********/
export type MessageLen = {
identifier: number;
tokenId: number;
transfer: number;
details: number;
requestDetails: number;
};
export type Action = DetailsAction | TransferAction | RequestDetailsAction;
export type Message = {
tokenId: TokenIdentifier;
action: Action;
};
export type TransferAction = {
type: BridgeMessageTypes.TRANSFER;
recipient: ethers.BytesLike;
amount: number | ethers.BytesLike;
};
export type DetailsAction = {
type: BridgeMessageTypes.DETAILS;
name: string;
symbol: string;
decimals: number;
};
export type RequestDetailsAction = {
type: BridgeMessageTypes.REQUEST_DETAILS;
};

@ -25,3 +25,11 @@ export function getHexStringByteLength(hexStr: string) {
export function toBytes32(address: string): string { export function toBytes32(address: string): string {
return '0x' + '00'.repeat(12) + address.slice(2); return '0x' + '00'.repeat(12) + address.slice(2);
} }
export const stringToBytes32 = (s: string): string => {
const str = Buffer.from(s.slice(0, 32), 'utf-8');
const result = Buffer.alloc(32);
str.copy(result);
return '0x' + result.toString('hex');
};

@ -1,11 +1,8 @@
import { ethers } from 'hardhat'; import { ethers } from 'hardhat';
import { expect } from 'chai'; import { expect } from 'chai';
import { BytesArray } from '../lib/types'; import { BytesArray } from './lib/types';
import { import { TestMerkle, TestMerkle__factory } from '../typechain';
TestMerkle,
TestMerkle__factory,
} from '@abacus-network/ts-interface/dist/abacus-core';
const merkleTestCases = require('../../../vectors/merkle.json'); const merkleTestCases = require('../../../vectors/merkle.json');

@ -1,9 +1,6 @@
import { ethers, abacus } from 'hardhat'; import { ethers, abacus } from 'hardhat';
import { expect } from 'chai'; import { expect } from 'chai';
import { import { TestMessage, TestMessage__factory } from '../typechain';
TestMessage,
TestMessage__factory,
} from '@abacus-network/ts-interface/dist/abacus-core';
const testCases = require('../../../vectors/message.json'); const testCases = require('../../../vectors/message.json');

@ -1,9 +1,6 @@
import { ethers } from 'hardhat'; import { ethers } from 'hardhat';
import { expect } from 'chai'; import { expect } from 'chai';
import { import { TestQueue, TestQueue__factory } from '../typechain';
TestQueue,
TestQueue__factory,
} from '@abacus-network/ts-interface/dist/abacus-core';
// create a proper hex encoded bytes32 filled with number. e.g 0x01010101... // create a proper hex encoded bytes32 filled with number. e.g 0x01010101...
const bytes32 = (num: number) => `0x${Buffer.alloc(32, num).toString('hex')}`; const bytes32 = (num: number) => `0x${Buffer.alloc(32, num).toString('hex')}`;

@ -1,17 +1,20 @@
import { ethers, abacus } from 'hardhat'; import { ethers, abacus } from 'hardhat';
import { expect } from 'chai'; import { expect } from 'chai';
import { getTestDeploy } from './testChain'; import { Updater, AbacusState, MessageStatus } from './lib/core';
import { Updater, AbacusState, MessageStatus } from '../lib/core'; import { Signer, BytesArray } from './lib/types';
import { Signer, BytesArray } from '../lib/types';
import { CoreDeploy as Deploy } from '@abacus-network/abacus-deploy/dist/src/core/CoreDeploy';
import { import {
deployUnenrolledReplica, BadRecipient1__factory,
deployUpgradeBeaconController, BadRecipient2__factory,
deployUpdaterManager, BadRecipient3__factory,
} from '@abacus-network/abacus-deploy/dist/src/core'; BadRecipient4__factory,
BadRecipient5__factory,
import * as contracts from '@abacus-network/ts-interface/dist/abacus-core'; BadRecipient6__factory,
BadRecipientHandle__factory,
TestReplica,
TestReplica__factory,
TestRecipient__factory,
} from '../typechain';
const homeDomainHashTestCases = require('../../../vectors/homeDomainHash.json'); const homeDomainHashTestCases = require('../../../vectors/homeDomainHash.json');
const merkleTestCases = require('../../../vectors/merkle.json'); const merkleTestCases = require('../../../vectors/merkle.json');
@ -19,19 +22,21 @@ const proveAndProcessTestCases = require('../../../vectors/proveAndProcess.json'
const localDomain = 2000; const localDomain = 2000;
const remoteDomain = 1000; const remoteDomain = 1000;
const processGas = 850000;
const reserveGas = 15000;
const optimisticSeconds = 3;
describe('Replica', async () => { describe('Replica', async () => {
const badRecipientFactories = [ const badRecipientFactories = [
contracts.BadRecipient1__factory, BadRecipient1__factory,
contracts.BadRecipient2__factory, BadRecipient2__factory,
contracts.BadRecipient3__factory, BadRecipient3__factory,
contracts.BadRecipient4__factory, BadRecipient4__factory,
contracts.BadRecipient5__factory, BadRecipient5__factory,
contracts.BadRecipient6__factory, BadRecipient6__factory,
]; ];
let deploys: Deploy[] = []; let replica: TestReplica,
let replica: contracts.TestReplica,
signer: Signer, signer: Signer,
fakeSigner: Signer, fakeSigner: Signer,
abacusMessageSender: Signer, abacusMessageSender: Signer,
@ -49,34 +54,27 @@ describe('Replica', async () => {
[signer, fakeSigner, abacusMessageSender] = await ethers.getSigners(); [signer, fakeSigner, abacusMessageSender] = await ethers.getSigners();
updater = await Updater.fromSigner(signer, remoteDomain); updater = await Updater.fromSigner(signer, remoteDomain);
fakeUpdater = await Updater.fromSigner(fakeSigner, remoteDomain); fakeUpdater = await Updater.fromSigner(fakeSigner, remoteDomain);
deploys.push(await getTestDeploy(localDomain, updater.address, []));
deploys.push(await getTestDeploy(remoteDomain, updater.address, []));
}); });
beforeEach(async () => { beforeEach(async () => {
await deployUpdaterManager(deploys[0]); const replicaFactory = new TestReplica__factory(signer);
await deployUpgradeBeaconController(deploys[0]); replica = await replicaFactory.deploy(localDomain, processGas, reserveGas);
await replica.initialize(
await deployUnenrolledReplica(deploys[0], deploys[1]); remoteDomain,
updater.address,
replica = deploys[0].contracts.replicas[remoteDomain] ethers.constants.HashZero,
.proxy! as contracts.TestReplica; optimisticSeconds,
);
}); });
it('Cannot be initialized twice', async () => { it('Cannot be initialized twice', async () => {
let initData = replica.interface.encodeFunctionData('initialize', [
deploys[0].chain.domain,
deploys[0].updater,
ethers.constants.HashZero,
deploys[0].config.optimisticSeconds,
]);
await expect( await expect(
signer.sendTransaction({ replica.initialize(
to: replica.address, remoteDomain,
data: initData, updater.address,
}), ethers.constants.HashZero,
optimisticSeconds,
),
).to.be.revertedWith('Initializable: contract is already initialized'); ).to.be.revertedWith('Initializable: contract is already initialized');
}); });
@ -119,21 +117,23 @@ describe('Replica', async () => {
it('Calculated domain hash matches Rust-produced domain hash', async () => { it('Calculated domain hash matches Rust-produced domain hash', async () => {
// Compare Rust output in json file to solidity output (json file matches // Compare Rust output in json file to solidity output (json file matches
// hash for remote domain of 1000) // hash for remote domain of 1000)
let testDeploy = await getTestDeploy(0, updater.address, []);
for (let testCase of homeDomainHashTestCases) { for (let testCase of homeDomainHashTestCases) {
// set domain, updaterManager and upgradeBeaconController
testDeploy.chain.domain = testCase.homeDomain;
testDeploy.contracts.updaterManager = deploys[0].contracts.updaterManager;
testDeploy.contracts.upgradeBeaconController =
deploys[0].contracts.upgradeBeaconController;
// deploy replica // deploy replica
await deployUnenrolledReplica(testDeploy, testDeploy); const replicaFactory = new TestReplica__factory(signer);
const tempReplica = testDeploy.contracts.replicas[testCase.homeDomain] const tempReplica = await replicaFactory.deploy(
.proxy! as contracts.TestReplica; testCase.homeDomain,
processGas,
reserveGas,
);
await tempReplica.initialize(
testCase.homeDomain,
updater.address,
ethers.constants.HashZero,
optimisticSeconds,
);
const { expectedDomainHash } = testCase; const { expectedDomainHash } = testCase;
const homeDomainHash = await tempReplica.testHomeDomainHash(); const homeDomainHash = await tempReplica.homeDomainHash();
expect(homeDomainHash).to.equal(expectedDomainHash); expect(homeDomainHash).to.equal(expectedDomainHash);
} }
}); });
@ -265,7 +265,7 @@ describe('Replica', async () => {
it('Processes a proved message', async () => { it('Processes a proved message', async () => {
const sender = abacusMessageSender; const sender = abacusMessageSender;
const testRecipientFactory = new contracts.TestRecipient__factory(signer); const testRecipientFactory = new TestRecipient__factory(signer);
const testRecipient = await testRecipientFactory.deploy(); const testRecipient = await testRecipientFactory.deploy();
const nonce = 0; const nonce = 0;
@ -279,7 +279,7 @@ describe('Replica', async () => {
); );
// Set message status to MessageStatus.Pending // Set message status to MessageStatus.Pending
await replica.setMessagePending(abacusMessage); await replica.setMessageProven(abacusMessage);
// Ensure proper static call return value // Ensure proper static call return value
const success = await replica.callStatic.process(abacusMessage); const success = await replica.callStatic.process(abacusMessage);
@ -327,7 +327,7 @@ describe('Replica', async () => {
); );
// Set message status to MessageStatus.Pending // Set message status to MessageStatus.Pending
await replica.setMessagePending(abacusMessage); await replica.setMessageProven(abacusMessage);
await replica.process(abacusMessage); await replica.process(abacusMessage);
}); });
} }
@ -366,7 +366,7 @@ describe('Replica', async () => {
); );
// Set message status to MessageStatus.Pending // Set message status to MessageStatus.Pending
await replica.setMessagePending(abacusMessage); await replica.setMessageProven(abacusMessage);
await expect(replica.process(abacusMessage)).to.not.be.reverted; await expect(replica.process(abacusMessage)).to.not.be.reverted;
}); });
@ -385,7 +385,7 @@ describe('Replica', async () => {
); );
// Set message status to MessageStatus.Pending // Set message status to MessageStatus.Pending
await replica.setMessagePending(abacusMessage); await replica.setMessageProven(abacusMessage);
// Required gas is >= 510,000 (we provide 500,000) // Required gas is >= 510,000 (we provide 500,000)
await expect( await expect(
@ -396,7 +396,7 @@ describe('Replica', async () => {
it('Returns false when processing message for bad handler function', async () => { it('Returns false when processing message for bad handler function', async () => {
const sender = abacusMessageSender; const sender = abacusMessageSender;
const [recipient] = await ethers.getSigners(); const [recipient] = await ethers.getSigners();
const factory = new contracts.BadRecipientHandle__factory(recipient); const factory = new BadRecipientHandle__factory(recipient);
const testRecipient = await factory.deploy(); const testRecipient = await factory.deploy();
const nonce = 0; const nonce = 0;
@ -410,7 +410,7 @@ describe('Replica', async () => {
); );
// Set message status to MessageStatus.Pending // Set message status to MessageStatus.Pending
await replica.setMessagePending(abacusMessage); await replica.setMessageProven(abacusMessage);
// Ensure bad handler function causes process to return false // Ensure bad handler function causes process to return false
let success = await replica.callStatic.process(abacusMessage); let success = await replica.callStatic.process(abacusMessage);
@ -419,7 +419,7 @@ describe('Replica', async () => {
it('Proves and processes a message', async () => { it('Proves and processes a message', async () => {
const sender = abacusMessageSender; const sender = abacusMessageSender;
const testRecipientFactory = new contracts.TestRecipient__factory(signer); const testRecipientFactory = new TestRecipient__factory(signer);
const testRecipient = await testRecipientFactory.deploy(); const testRecipient = await testRecipientFactory.deploy();
const nonce = 0; const nonce = 0;

@ -1,32 +1,28 @@
import { ethers } from 'hardhat'; import { ethers } from 'hardhat';
import { getTestDeploy } from './testChain';
import { UpgradeTestHelpers, MysteryMathUpgrade } from './utils'; import { UpgradeTestHelpers, MysteryMathUpgrade } from './utils';
import { Signer } from '../lib/types'; import { Signer } from './lib/types';
import * as contracts from '@abacus-network/ts-interface/dist/abacus-core'; import {
UpgradeBeaconController__factory,
UpgradeBeaconController,
MysteryMathV2__factory,
} from '../typechain';
describe('Upgrade', async () => { describe('Upgrade', async () => {
const utils = new UpgradeTestHelpers(); const utils = new UpgradeTestHelpers();
let signer: Signer, let signer: Signer,
mysteryMath: MysteryMathUpgrade, mysteryMath: MysteryMathUpgrade,
upgradeBeaconController: contracts.UpgradeBeaconController; ubc: UpgradeBeaconController;
before(async () => { before(async () => {
// set signer // set signer
[signer] = await ethers.getSigners(); [signer] = await ethers.getSigners();
// set up fresh test deploy const ubcFactory = new UpgradeBeaconController__factory(signer);
const deploy = await getTestDeploy(1000, ethers.constants.AddressZero, []); ubc = await ubcFactory.deploy();
// deploy upgrade setup for mysteryMath contract // deploy upgrade setup for mysteryMath contract
mysteryMath = await utils.deployMysteryMathUpgradeSetup( mysteryMath = await utils.deployMysteryMathUpgradeSetup(signer, ubc);
deploy,
signer,
true,
);
// set upgradeBeaconController
upgradeBeaconController = deploy.contracts.upgradeBeaconController!;
}); });
it('Pre-Upgrade returns values from MysteryMathV1', async () => { it('Pre-Upgrade returns values from MysteryMathV1', async () => {
@ -35,14 +31,11 @@ describe('Upgrade', async () => {
it('Upgrades without problem', async () => { it('Upgrades without problem', async () => {
// Deploy Implementation 2 // Deploy Implementation 2
const factory = new contracts.MysteryMathV2__factory(signer); const factory = new MysteryMathV2__factory(signer);
const implementation = await factory.deploy(); const implementation = await factory.deploy();
// Upgrade to implementation 2 // Upgrade to implementation 2
await upgradeBeaconController.upgrade( await ubc.upgrade(mysteryMath.beacon.address, implementation.address);
mysteryMath.beacon.address,
implementation.address,
);
}); });
it('Post-Upgrade returns values from MysteryMathV2', async () => { it('Post-Upgrade returns values from MysteryMathV2', async () => {

@ -1,13 +1,16 @@
import { expect } from 'chai'; import { expect } from 'chai';
import ethers from 'ethers'; import ethers from 'ethers';
import { Signer } from '../lib/types'; import { Signer } from './lib/types';
import { CoreDeploy as Deploy } from '@abacus-network/abacus-deploy/dist/src/core/CoreDeploy';
import { import {
deployUpdaterManager, MysteryMathV1,
deployUpgradeBeaconController, MysteryMathV2,
} from '@abacus-network/abacus-deploy/dist/src/core'; MysteryMathV1__factory,
import * as contracts from '@abacus-network/ts-interface/dist/abacus-core'; UpgradeBeaconController,
UpgradeBeacon,
UpgradeBeacon__factory,
UpgradeBeaconProxy__factory,
} from '../typechain';
export const increaseTimestampBy = async ( export const increaseTimestampBy = async (
provider: ethers.providers.JsonRpcProvider, provider: ethers.providers.JsonRpcProvider,
@ -18,9 +21,9 @@ export const increaseTimestampBy = async (
}; };
export type MysteryMathUpgrade = { export type MysteryMathUpgrade = {
proxy: contracts.MysteryMathV1 | contracts.MysteryMathV2; proxy: MysteryMathV1 | MysteryMathV2;
beacon: contracts.UpgradeBeacon; beacon: UpgradeBeacon;
implementation: contracts.MysteryMathV1 | contracts.MysteryMathV2; implementation: MysteryMathV1 | MysteryMathV2;
}; };
export class UpgradeTestHelpers { export class UpgradeTestHelpers {
@ -29,39 +32,23 @@ export class UpgradeTestHelpers {
stateVar: number = 17; stateVar: number = 17;
async deployMysteryMathUpgradeSetup( async deployMysteryMathUpgradeSetup(
deploy: Deploy,
signer: Signer, signer: Signer,
isNewDeploy?: boolean, ubc: UpgradeBeaconController,
): Promise<MysteryMathUpgrade> { ): Promise<MysteryMathUpgrade> {
// deploy implementation // deploy implementation
const mysteryMathFactory = new contracts.MysteryMathV1__factory(signer); const mysteryMathFactory = new MysteryMathV1__factory(signer);
const mysteryMathImplementation = await mysteryMathFactory.deploy(); const mysteryMathImplementation = await mysteryMathFactory.deploy();
if (isNewDeploy) {
// deploy UpdaterManager
await deployUpdaterManager(deploy);
// deploy and set UpgradeBeaconController
await deployUpgradeBeaconController(deploy);
}
// deploy and set upgrade beacon // deploy and set upgrade beacon
const beaconFactory = new contracts.UpgradeBeacon__factory( const beaconFactory = new UpgradeBeacon__factory(signer);
deploy.chain.signer,
);
const beacon = await beaconFactory.deploy( const beacon = await beaconFactory.deploy(
mysteryMathImplementation.address, mysteryMathImplementation.address,
deploy.contracts.upgradeBeaconController!.address, ubc.address,
{ gasPrice: deploy.chain.gasPrice, gasLimit: 2_000_000 },
); );
// deploy proxy // deploy proxy
let factory = new contracts.UpgradeBeaconProxy__factory( const proxyFactory = new UpgradeBeaconProxy__factory(signer);
deploy.chain.signer, const upgradeBeaconProxy = await proxyFactory.deploy(beacon.address, []);
);
const upgradeBeaconProxy = await factory.deploy(beacon.address, [], {
gasPrice: deploy.chain.gasPrice,
gasLimit: 1_000_000,
});
// set proxy // set proxy
const proxy = mysteryMathFactory.attach(upgradeBeaconProxy.address); const proxy = mysteryMathFactory.attach(upgradeBeaconProxy.address);
@ -72,7 +59,7 @@ export class UpgradeTestHelpers {
return { proxy, beacon, implementation: mysteryMathImplementation }; return { proxy, beacon, implementation: mysteryMathImplementation };
} }
async expectMysteryMathV1(mysteryMathProxy: contracts.MysteryMathV1) { async expectMysteryMathV1(mysteryMathProxy: MysteryMathV1) {
const versionResult = await mysteryMathProxy.version(); const versionResult = await mysteryMathProxy.version();
expect(versionResult).to.equal(1); expect(versionResult).to.equal(1);
@ -83,7 +70,7 @@ export class UpgradeTestHelpers {
expect(stateResult).to.equal(this.stateVar); expect(stateResult).to.equal(this.stateVar);
} }
async expectMysteryMathV2(mysteryMathProxy: contracts.MysteryMathV2) { async expectMysteryMathV2(mysteryMathProxy: MysteryMathV2) {
const versionResult = await mysteryMathProxy.version(); const versionResult = await mysteryMathProxy.version();
expect(versionResult).to.equal(2); expect(versionResult).to.equal(2);
@ -94,11 +81,3 @@ export class UpgradeTestHelpers {
expect(stateResult).to.equal(this.stateVar); expect(stateResult).to.equal(this.stateVar);
} }
} }
export const stringToBytes32 = (s: string): string => {
const str = Buffer.from(s.slice(0, 32), 'utf-8');
const result = Buffer.alloc(32);
str.copy(result);
return '0x' + result.toString('hex');
};

@ -1,52 +1,62 @@
import { ethers, abacus } from 'hardhat'; import { ethers, abacus } from 'hardhat';
import { expect } from 'chai'; import { expect } from 'chai';
import { getTestDeploy } from './testChain'; import {
import { Updater } from '../lib/core'; TestHome__factory,
import { Signer } from '../lib/types'; TestReplica__factory,
import { CoreDeploy as Deploy } from '@abacus-network/abacus-deploy/dist/src/core/CoreDeploy'; TestXAppConnectionManager,
import * as deploys from '@abacus-network/abacus-deploy/dist/src/core'; TestXAppConnectionManager__factory,
import * as contracts from '@abacus-network/ts-interface/dist/abacus-core'; TestReplica,
} from '../typechain';
import { Updater } from './lib/core';
import { Signer } from './lib/types';
const signedFailureTestCases = require('../../../vectors/signedFailure.json'); const signedFailureTestCases = require('../../../vectors/signedFailure.json');
const ONLY_OWNER_REVERT_MSG = 'Ownable: caller is not the owner'; const ONLY_OWNER_REVERT_MSG = 'Ownable: caller is not the owner';
const localDomain = 1000; const localDomain = 1000;
const remoteDomain = 2000; const remoteDomain = 2000;
const processGas = 850000;
const reserveGas = 15000;
const optimisticSeconds = 3;
describe('XAppConnectionManager', async () => { describe('XAppConnectionManager', async () => {
let localDeploy: Deploy, let connectionManager: TestXAppConnectionManager,
remoteDeploy: Deploy, enrolledReplica: TestReplica,
connectionManager: contracts.TestXAppConnectionManager,
enrolledReplica: contracts.TestReplica,
signer: Signer, signer: Signer,
updater: Updater; updater: Updater;
before(async () => { before(async () => {
[signer] = await ethers.getSigners(); [signer] = await ethers.getSigners();
updater = await Updater.fromSigner(signer, localDomain); updater = await Updater.fromSigner(signer, localDomain);
// get fresh test deploys
localDeploy = await getTestDeploy(localDomain, updater.address, []);
remoteDeploy = await getTestDeploy(remoteDomain, updater.address, []);
// deploy abacus on remote domain
// NB: as tests stand currently, this only needs to be done once
await deploys.deployAbacus(remoteDeploy);
}); });
beforeEach(async () => { beforeEach(async () => {
// deploy abacus on local domain const homeFactory = new TestHome__factory(signer);
await deploys.deployAbacus(localDeploy); const home = await homeFactory.deploy(localDomain);
// deploy replica and enroll on local deploy const replicaFactory = new TestReplica__factory(signer);
await deploys.enrollRemote(localDeploy, remoteDeploy); enrolledReplica = await replicaFactory.deploy(
localDomain,
processGas,
reserveGas,
);
await enrolledReplica.initialize(
remoteDomain,
updater.address,
ethers.constants.HashZero,
optimisticSeconds,
);
// set respective variables const connectionManagerFactory = new TestXAppConnectionManager__factory(
connectionManager = localDeploy.contracts signer,
.xAppConnectionManager! as contracts.TestXAppConnectionManager; );
enrolledReplica = localDeploy.contracts.replicas[remoteDomain] connectionManager = await connectionManagerFactory.deploy();
.proxy as contracts.TestReplica; await connectionManager.setHome(home.address);
await connectionManager.ownerEnrollReplica(
enrolledReplica.address,
remoteDomain,
);
}); });
it('Returns the local domain', async () => { it('Returns the local domain', async () => {
@ -54,7 +64,7 @@ describe('XAppConnectionManager', async () => {
}); });
it('onlyOwner function rejects call from non-owner', async () => { it('onlyOwner function rejects call from non-owner', async () => {
const [nonOwner, nonHome] = await ethers.getSigners(); const [nonHome, nonOwner] = await ethers.getSigners();
await expect( await expect(
connectionManager.connect(nonOwner).setHome(nonHome.address), connectionManager.connect(nonOwner).setHome(nonHome.address),
).to.be.revertedWith(ONLY_OWNER_REVERT_MSG); ).to.be.revertedWith(ONLY_OWNER_REVERT_MSG);
@ -69,8 +79,8 @@ describe('XAppConnectionManager', async () => {
}); });
it('Allows owner to set the home', async () => { it('Allows owner to set the home', async () => {
await deploys.deployHome(localDeploy); const homeFactory = new TestHome__factory(signer);
const newHome = localDeploy.contracts.home?.proxy as contracts.TestHome; const newHome = await homeFactory.deploy(localDomain);
await connectionManager.setHome(newHome.address); await connectionManager.setHome(newHome.address);
expect(await connectionManager.home()).to.equal(newHome.address); expect(await connectionManager.home()).to.equal(newHome.address);
@ -78,34 +88,27 @@ describe('XAppConnectionManager', async () => {
it('Owner can enroll a new replica', async () => { it('Owner can enroll a new replica', async () => {
const newRemoteDomain = 3000; const newRemoteDomain = 3000;
const newRemoteDeploy = await getTestDeploy( const replicaFactory = new TestReplica__factory(signer);
newRemoteDomain, const newReplica = await replicaFactory.deploy(
updater.address, localDomain,
[], processGas,
reserveGas,
); );
await deploys.deployUnenrolledReplica(localDeploy, newRemoteDeploy);
const newReplicaProxy =
localDeploy.contracts.replicas[newRemoteDomain].proxy;
// Assert new replica not considered replica before enrolled // Assert new replica not considered replica before enrolled
expect(await connectionManager.isReplica(newReplicaProxy.address)).to.be expect(await connectionManager.isReplica(newReplica.address)).to.be.false;
.false;
await expect( await expect(
connectionManager.ownerEnrollReplica( connectionManager.ownerEnrollReplica(newReplica.address, newRemoteDomain),
newReplicaProxy.address,
newRemoteDomain,
),
).to.emit(connectionManager, 'ReplicaEnrolled'); ).to.emit(connectionManager, 'ReplicaEnrolled');
expect(await connectionManager.domainToReplica(newRemoteDomain)).to.equal( expect(await connectionManager.domainToReplica(newRemoteDomain)).to.equal(
newReplicaProxy.address, newReplica.address,
); );
expect( expect(
await connectionManager.replicaToDomain(newReplicaProxy.address), await connectionManager.replicaToDomain(newReplica.address),
).to.equal(newRemoteDomain); ).to.equal(newRemoteDomain);
expect(await connectionManager.isReplica(newReplicaProxy.address)).to.be expect(await connectionManager.isReplica(newReplica.address)).to.be.true;
.true;
}); });
it('Owner can unenroll a replica', async () => { it('Owner can unenroll a replica', async () => {
@ -156,7 +159,7 @@ describe('XAppConnectionManager', async () => {
await abacus.signedFailureNotification( await abacus.signedFailureNotification(
watcher, watcher,
remoteDomain, remoteDomain,
updater.signer.address, await updater.signer.getAddress(),
); );
// Assert new replica considered replica before unenrolled // Assert new replica considered replica before unenrolled
@ -198,7 +201,7 @@ describe('XAppConnectionManager', async () => {
await abacus.signedFailureNotification( await abacus.signedFailureNotification(
watcher, watcher,
noReplicaDomain, noReplicaDomain,
updater.signer.address, await updater.signer.getAddress(),
); );
// Expect unenrollReplica call to revert // Expect unenrollReplica call to revert
@ -254,7 +257,7 @@ describe('XAppConnectionManager', async () => {
await abacus.signedFailureNotification( await abacus.signedFailureNotification(
nonWatcher, nonWatcher,
remoteDomain, remoteDomain,
updater.signer.address, await updater.signer.getAddress(),
); );
// Expect unenrollReplica call to revert // Expect unenrollReplica call to revert

@ -0,0 +1,123 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
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 BadRecipient1Interface extends ethers.utils.Interface {
functions: {
"handle(uint32,bytes32,bytes)": FunctionFragment;
};
encodeFunctionData(
functionFragment: "handle",
values: [BigNumberish, BytesLike, BytesLike]
): string;
decodeFunctionResult(functionFragment: "handle", data: BytesLike): Result;
events: {};
}
export class BadRecipient1 extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: BadRecipient1Interface;
functions: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<[void]>;
};
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<void>;
callStatic: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<void>;
};
filters: {};
estimateGas: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<BigNumber>;
};
populateTransaction: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,123 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
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 BadRecipient2Interface extends ethers.utils.Interface {
functions: {
"handle(uint32,bytes32,bytes)": FunctionFragment;
};
encodeFunctionData(
functionFragment: "handle",
values: [BigNumberish, BytesLike, BytesLike]
): string;
decodeFunctionResult(functionFragment: "handle", data: BytesLike): Result;
events: {};
}
export class BadRecipient2 extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: BadRecipient2Interface;
functions: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<[void]>;
};
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<void>;
callStatic: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<void>;
};
filters: {};
estimateGas: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<BigNumber>;
};
populateTransaction: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,123 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
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 BadRecipient3Interface extends ethers.utils.Interface {
functions: {
"handle(uint32,bytes32,bytes)": FunctionFragment;
};
encodeFunctionData(
functionFragment: "handle",
values: [BigNumberish, BytesLike, BytesLike]
): string;
decodeFunctionResult(functionFragment: "handle", data: BytesLike): Result;
events: {};
}
export class BadRecipient3 extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: BadRecipient3Interface;
functions: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<[void]>;
};
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<void>;
callStatic: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<void>;
};
filters: {};
estimateGas: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<BigNumber>;
};
populateTransaction: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,123 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
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 BadRecipient4Interface extends ethers.utils.Interface {
functions: {
"handle(uint32,bytes32,bytes)": FunctionFragment;
};
encodeFunctionData(
functionFragment: "handle",
values: [BigNumberish, BytesLike, BytesLike]
): string;
decodeFunctionResult(functionFragment: "handle", data: BytesLike): Result;
events: {};
}
export class BadRecipient4 extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: BadRecipient4Interface;
functions: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<[void]>;
};
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<void>;
callStatic: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<void>;
};
filters: {};
estimateGas: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<BigNumber>;
};
populateTransaction: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,123 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
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 BadRecipient5Interface extends ethers.utils.Interface {
functions: {
"handle(uint32,bytes32,bytes)": FunctionFragment;
};
encodeFunctionData(
functionFragment: "handle",
values: [BigNumberish, BytesLike, BytesLike]
): string;
decodeFunctionResult(functionFragment: "handle", data: BytesLike): Result;
events: {};
}
export class BadRecipient5 extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: BadRecipient5Interface;
functions: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<[void]>;
};
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<void>;
callStatic: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<void>;
};
filters: {};
estimateGas: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<BigNumber>;
};
populateTransaction: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,123 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
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 BadRecipient6Interface extends ethers.utils.Interface {
functions: {
"handle(uint32,bytes32,bytes)": FunctionFragment;
};
encodeFunctionData(
functionFragment: "handle",
values: [BigNumberish, BytesLike, BytesLike]
): string;
decodeFunctionResult(functionFragment: "handle", data: BytesLike): Result;
events: {};
}
export class BadRecipient6 extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: BadRecipient6Interface;
functions: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<[void]>;
};
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<void>;
callStatic: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<void>;
};
filters: {};
estimateGas: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<BigNumber>;
};
populateTransaction: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,118 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
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 BadRecipientHandleInterface extends ethers.utils.Interface {
functions: {
"handle(uint32,bytes32)": FunctionFragment;
};
encodeFunctionData(
functionFragment: "handle",
values: [BigNumberish, BytesLike]
): string;
decodeFunctionResult(functionFragment: "handle", data: BytesLike): Result;
events: {};
}
export class BadRecipientHandle extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: BadRecipientHandleInterface;
functions: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
overrides?: CallOverrides
): Promise<[void]>;
};
handle(
arg0: BigNumberish,
arg1: BytesLike,
overrides?: CallOverrides
): Promise<void>;
callStatic: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
overrides?: CallOverrides
): Promise<void>;
};
filters: {};
estimateGas: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
overrides?: CallOverrides
): Promise<BigNumber>;
};
populateTransaction: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,255 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
Overrides,
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 CommonInterface extends ethers.utils.Interface {
functions: {
"committedRoot()": FunctionFragment;
"doubleUpdate(bytes32,bytes32[2],bytes,bytes)": FunctionFragment;
"homeDomainHash()": FunctionFragment;
"localDomain()": FunctionFragment;
"state()": FunctionFragment;
"updater()": FunctionFragment;
};
encodeFunctionData(
functionFragment: "committedRoot",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "doubleUpdate",
values: [BytesLike, [BytesLike, BytesLike], BytesLike, BytesLike]
): string;
encodeFunctionData(
functionFragment: "homeDomainHash",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "localDomain",
values?: undefined
): string;
encodeFunctionData(functionFragment: "state", values?: undefined): string;
encodeFunctionData(functionFragment: "updater", values?: undefined): string;
decodeFunctionResult(
functionFragment: "committedRoot",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "doubleUpdate",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "homeDomainHash",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "localDomain",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "state", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "updater", data: BytesLike): Result;
events: {
"DoubleUpdate(bytes32,bytes32[2],bytes,bytes)": EventFragment;
"NewUpdater(address)": EventFragment;
"Update(uint32,bytes32,bytes32,bytes)": EventFragment;
};
getEvent(nameOrSignatureOrTopic: "DoubleUpdate"): EventFragment;
getEvent(nameOrSignatureOrTopic: "NewUpdater"): EventFragment;
getEvent(nameOrSignatureOrTopic: "Update"): EventFragment;
}
export class Common extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: CommonInterface;
functions: {
committedRoot(overrides?: CallOverrides): Promise<[string]>;
doubleUpdate(
_oldRoot: BytesLike,
_newRoot: [BytesLike, BytesLike],
_signature: BytesLike,
_signature2: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
homeDomainHash(overrides?: CallOverrides): Promise<[string]>;
localDomain(overrides?: CallOverrides): Promise<[number]>;
state(overrides?: CallOverrides): Promise<[number]>;
updater(overrides?: CallOverrides): Promise<[string]>;
};
committedRoot(overrides?: CallOverrides): Promise<string>;
doubleUpdate(
_oldRoot: BytesLike,
_newRoot: [BytesLike, BytesLike],
_signature: BytesLike,
_signature2: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
homeDomainHash(overrides?: CallOverrides): Promise<string>;
localDomain(overrides?: CallOverrides): Promise<number>;
state(overrides?: CallOverrides): Promise<number>;
updater(overrides?: CallOverrides): Promise<string>;
callStatic: {
committedRoot(overrides?: CallOverrides): Promise<string>;
doubleUpdate(
_oldRoot: BytesLike,
_newRoot: [BytesLike, BytesLike],
_signature: BytesLike,
_signature2: BytesLike,
overrides?: CallOverrides
): Promise<void>;
homeDomainHash(overrides?: CallOverrides): Promise<string>;
localDomain(overrides?: CallOverrides): Promise<number>;
state(overrides?: CallOverrides): Promise<number>;
updater(overrides?: CallOverrides): Promise<string>;
};
filters: {
DoubleUpdate(
oldRoot?: null,
newRoot?: null,
signature?: null,
signature2?: null
): TypedEventFilter<
[string, [string, string], string, string],
{
oldRoot: string;
newRoot: [string, string];
signature: string;
signature2: string;
}
>;
NewUpdater(updater?: null): TypedEventFilter<[string], { updater: string }>;
Update(
homeDomain?: BigNumberish | null,
oldRoot?: BytesLike | null,
newRoot?: BytesLike | null,
signature?: null
): TypedEventFilter<
[number, string, string, string],
{
homeDomain: number;
oldRoot: string;
newRoot: string;
signature: string;
}
>;
};
estimateGas: {
committedRoot(overrides?: CallOverrides): Promise<BigNumber>;
doubleUpdate(
_oldRoot: BytesLike,
_newRoot: [BytesLike, BytesLike],
_signature: BytesLike,
_signature2: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
homeDomainHash(overrides?: CallOverrides): Promise<BigNumber>;
localDomain(overrides?: CallOverrides): Promise<BigNumber>;
state(overrides?: CallOverrides): Promise<BigNumber>;
updater(overrides?: CallOverrides): Promise<BigNumber>;
};
populateTransaction: {
committedRoot(overrides?: CallOverrides): Promise<PopulatedTransaction>;
doubleUpdate(
_oldRoot: BytesLike,
_newRoot: [BytesLike, BytesLike],
_signature: BytesLike,
_signature2: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
homeDomainHash(overrides?: CallOverrides): Promise<PopulatedTransaction>;
localDomain(overrides?: CallOverrides): Promise<PopulatedTransaction>;
state(overrides?: CallOverrides): Promise<PopulatedTransaction>;
updater(overrides?: CallOverrides): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,715 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
Overrides,
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 GovernanceRouterInterface extends ethers.utils.Interface {
functions: {
"VERSION()": FunctionFragment;
"callLocal(tuple[])": FunctionFragment;
"callRemote(uint32,tuple[])": FunctionFragment;
"domains(uint256)": FunctionFragment;
"exitRecovery()": FunctionFragment;
"governor()": FunctionFragment;
"governorDomain()": FunctionFragment;
"handle(uint32,bytes32,bytes)": FunctionFragment;
"inRecovery()": FunctionFragment;
"initialize(address,address)": FunctionFragment;
"initiateRecoveryTimelock()": FunctionFragment;
"localDomain()": FunctionFragment;
"recoveryActiveAt()": FunctionFragment;
"recoveryManager()": FunctionFragment;
"recoveryTimelock()": FunctionFragment;
"routers(uint32)": FunctionFragment;
"setRouter(uint32,bytes32)": FunctionFragment;
"setRouterLocal(uint32,bytes32)": FunctionFragment;
"setXAppConnectionManager(address)": FunctionFragment;
"transferGovernor(uint32,address)": FunctionFragment;
"transferRecoveryManager(address)": FunctionFragment;
"xAppConnectionManager()": FunctionFragment;
};
encodeFunctionData(functionFragment: "VERSION", values?: undefined): string;
encodeFunctionData(
functionFragment: "callLocal",
values: [{ to: BytesLike; data: BytesLike }[]]
): string;
encodeFunctionData(
functionFragment: "callRemote",
values: [BigNumberish, { to: BytesLike; data: BytesLike }[]]
): string;
encodeFunctionData(
functionFragment: "domains",
values: [BigNumberish]
): string;
encodeFunctionData(
functionFragment: "exitRecovery",
values?: undefined
): string;
encodeFunctionData(functionFragment: "governor", values?: undefined): string;
encodeFunctionData(
functionFragment: "governorDomain",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "handle",
values: [BigNumberish, BytesLike, BytesLike]
): string;
encodeFunctionData(
functionFragment: "inRecovery",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "initialize",
values: [string, string]
): string;
encodeFunctionData(
functionFragment: "initiateRecoveryTimelock",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "localDomain",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "recoveryActiveAt",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "recoveryManager",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "recoveryTimelock",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "routers",
values: [BigNumberish]
): string;
encodeFunctionData(
functionFragment: "setRouter",
values: [BigNumberish, BytesLike]
): string;
encodeFunctionData(
functionFragment: "setRouterLocal",
values: [BigNumberish, BytesLike]
): string;
encodeFunctionData(
functionFragment: "setXAppConnectionManager",
values: [string]
): string;
encodeFunctionData(
functionFragment: "transferGovernor",
values: [BigNumberish, string]
): string;
encodeFunctionData(
functionFragment: "transferRecoveryManager",
values: [string]
): string;
encodeFunctionData(
functionFragment: "xAppConnectionManager",
values?: undefined
): string;
decodeFunctionResult(functionFragment: "VERSION", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "callLocal", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "callRemote", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "domains", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "exitRecovery",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "governor", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "governorDomain",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "handle", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "inRecovery", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "initiateRecoveryTimelock",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "localDomain",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "recoveryActiveAt",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "recoveryManager",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "recoveryTimelock",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "routers", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "setRouter", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "setRouterLocal",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "setXAppConnectionManager",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "transferGovernor",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "transferRecoveryManager",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "xAppConnectionManager",
data: BytesLike
): Result;
events: {
"ExitRecovery(address)": EventFragment;
"InitiateRecovery(address,uint256)": EventFragment;
"SetRouter(uint32,bytes32,bytes32)": EventFragment;
"TransferGovernor(uint32,uint32,address,address)": EventFragment;
"TransferRecoveryManager(address,address)": EventFragment;
};
getEvent(nameOrSignatureOrTopic: "ExitRecovery"): EventFragment;
getEvent(nameOrSignatureOrTopic: "InitiateRecovery"): EventFragment;
getEvent(nameOrSignatureOrTopic: "SetRouter"): EventFragment;
getEvent(nameOrSignatureOrTopic: "TransferGovernor"): EventFragment;
getEvent(nameOrSignatureOrTopic: "TransferRecoveryManager"): EventFragment;
}
export class GovernanceRouter extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: GovernanceRouterInterface;
functions: {
VERSION(overrides?: CallOverrides): Promise<[number]>;
callLocal(
_calls: { to: BytesLike; data: BytesLike }[],
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
callRemote(
_destination: BigNumberish,
_calls: { to: BytesLike; data: BytesLike }[],
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
domains(arg0: BigNumberish, overrides?: CallOverrides): Promise<[number]>;
exitRecovery(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
governor(overrides?: CallOverrides): Promise<[string]>;
governorDomain(overrides?: CallOverrides): Promise<[number]>;
handle(
_origin: BigNumberish,
_sender: BytesLike,
_message: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
inRecovery(overrides?: CallOverrides): Promise<[boolean]>;
initialize(
_xAppConnectionManager: string,
_recoveryManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
initiateRecoveryTimelock(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
localDomain(overrides?: CallOverrides): Promise<[number]>;
recoveryActiveAt(overrides?: CallOverrides): Promise<[BigNumber]>;
recoveryManager(overrides?: CallOverrides): Promise<[string]>;
recoveryTimelock(overrides?: CallOverrides): Promise<[BigNumber]>;
routers(arg0: BigNumberish, overrides?: CallOverrides): Promise<[string]>;
setRouter(
_domain: BigNumberish,
_router: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
setRouterLocal(
_domain: BigNumberish,
_router: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
setXAppConnectionManager(
_xAppConnectionManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
transferGovernor(
_newDomain: BigNumberish,
_newGovernor: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
transferRecoveryManager(
_newRecoveryManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
xAppConnectionManager(overrides?: CallOverrides): Promise<[string]>;
};
VERSION(overrides?: CallOverrides): Promise<number>;
callLocal(
_calls: { to: BytesLike; data: BytesLike }[],
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
callRemote(
_destination: BigNumberish,
_calls: { to: BytesLike; data: BytesLike }[],
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
domains(arg0: BigNumberish, overrides?: CallOverrides): Promise<number>;
exitRecovery(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
governor(overrides?: CallOverrides): Promise<string>;
governorDomain(overrides?: CallOverrides): Promise<number>;
handle(
_origin: BigNumberish,
_sender: BytesLike,
_message: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
inRecovery(overrides?: CallOverrides): Promise<boolean>;
initialize(
_xAppConnectionManager: string,
_recoveryManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
initiateRecoveryTimelock(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
localDomain(overrides?: CallOverrides): Promise<number>;
recoveryActiveAt(overrides?: CallOverrides): Promise<BigNumber>;
recoveryManager(overrides?: CallOverrides): Promise<string>;
recoveryTimelock(overrides?: CallOverrides): Promise<BigNumber>;
routers(arg0: BigNumberish, overrides?: CallOverrides): Promise<string>;
setRouter(
_domain: BigNumberish,
_router: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
setRouterLocal(
_domain: BigNumberish,
_router: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
setXAppConnectionManager(
_xAppConnectionManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
transferGovernor(
_newDomain: BigNumberish,
_newGovernor: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
transferRecoveryManager(
_newRecoveryManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
xAppConnectionManager(overrides?: CallOverrides): Promise<string>;
callStatic: {
VERSION(overrides?: CallOverrides): Promise<number>;
callLocal(
_calls: { to: BytesLike; data: BytesLike }[],
overrides?: CallOverrides
): Promise<void>;
callRemote(
_destination: BigNumberish,
_calls: { to: BytesLike; data: BytesLike }[],
overrides?: CallOverrides
): Promise<void>;
domains(arg0: BigNumberish, overrides?: CallOverrides): Promise<number>;
exitRecovery(overrides?: CallOverrides): Promise<void>;
governor(overrides?: CallOverrides): Promise<string>;
governorDomain(overrides?: CallOverrides): Promise<number>;
handle(
_origin: BigNumberish,
_sender: BytesLike,
_message: BytesLike,
overrides?: CallOverrides
): Promise<void>;
inRecovery(overrides?: CallOverrides): Promise<boolean>;
initialize(
_xAppConnectionManager: string,
_recoveryManager: string,
overrides?: CallOverrides
): Promise<void>;
initiateRecoveryTimelock(overrides?: CallOverrides): Promise<void>;
localDomain(overrides?: CallOverrides): Promise<number>;
recoveryActiveAt(overrides?: CallOverrides): Promise<BigNumber>;
recoveryManager(overrides?: CallOverrides): Promise<string>;
recoveryTimelock(overrides?: CallOverrides): Promise<BigNumber>;
routers(arg0: BigNumberish, overrides?: CallOverrides): Promise<string>;
setRouter(
_domain: BigNumberish,
_router: BytesLike,
overrides?: CallOverrides
): Promise<void>;
setRouterLocal(
_domain: BigNumberish,
_router: BytesLike,
overrides?: CallOverrides
): Promise<void>;
setXAppConnectionManager(
_xAppConnectionManager: string,
overrides?: CallOverrides
): Promise<void>;
transferGovernor(
_newDomain: BigNumberish,
_newGovernor: string,
overrides?: CallOverrides
): Promise<void>;
transferRecoveryManager(
_newRecoveryManager: string,
overrides?: CallOverrides
): Promise<void>;
xAppConnectionManager(overrides?: CallOverrides): Promise<string>;
};
filters: {
ExitRecovery(
recoveryManager?: null
): TypedEventFilter<[string], { recoveryManager: string }>;
InitiateRecovery(
recoveryManager?: string | null,
recoveryActiveAt?: null
): TypedEventFilter<
[string, BigNumber],
{ recoveryManager: string; recoveryActiveAt: BigNumber }
>;
SetRouter(
domain?: BigNumberish | null,
previousRouter?: null,
newRouter?: null
): TypedEventFilter<
[number, string, string],
{ domain: number; previousRouter: string; newRouter: string }
>;
TransferGovernor(
previousGovernorDomain?: null,
newGovernorDomain?: null,
previousGovernor?: string | null,
newGovernor?: string | null
): TypedEventFilter<
[number, number, string, string],
{
previousGovernorDomain: number;
newGovernorDomain: number;
previousGovernor: string;
newGovernor: string;
}
>;
TransferRecoveryManager(
previousRecoveryManager?: string | null,
newRecoveryManager?: string | null
): TypedEventFilter<
[string, string],
{ previousRecoveryManager: string; newRecoveryManager: string }
>;
};
estimateGas: {
VERSION(overrides?: CallOverrides): Promise<BigNumber>;
callLocal(
_calls: { to: BytesLike; data: BytesLike }[],
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
callRemote(
_destination: BigNumberish,
_calls: { to: BytesLike; data: BytesLike }[],
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
domains(arg0: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
exitRecovery(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
governor(overrides?: CallOverrides): Promise<BigNumber>;
governorDomain(overrides?: CallOverrides): Promise<BigNumber>;
handle(
_origin: BigNumberish,
_sender: BytesLike,
_message: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
inRecovery(overrides?: CallOverrides): Promise<BigNumber>;
initialize(
_xAppConnectionManager: string,
_recoveryManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
initiateRecoveryTimelock(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
localDomain(overrides?: CallOverrides): Promise<BigNumber>;
recoveryActiveAt(overrides?: CallOverrides): Promise<BigNumber>;
recoveryManager(overrides?: CallOverrides): Promise<BigNumber>;
recoveryTimelock(overrides?: CallOverrides): Promise<BigNumber>;
routers(arg0: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
setRouter(
_domain: BigNumberish,
_router: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
setRouterLocal(
_domain: BigNumberish,
_router: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
setXAppConnectionManager(
_xAppConnectionManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
transferGovernor(
_newDomain: BigNumberish,
_newGovernor: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
transferRecoveryManager(
_newRecoveryManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
xAppConnectionManager(overrides?: CallOverrides): Promise<BigNumber>;
};
populateTransaction: {
VERSION(overrides?: CallOverrides): Promise<PopulatedTransaction>;
callLocal(
_calls: { to: BytesLike; data: BytesLike }[],
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
callRemote(
_destination: BigNumberish,
_calls: { to: BytesLike; data: BytesLike }[],
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
domains(
arg0: BigNumberish,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
exitRecovery(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
governor(overrides?: CallOverrides): Promise<PopulatedTransaction>;
governorDomain(overrides?: CallOverrides): Promise<PopulatedTransaction>;
handle(
_origin: BigNumberish,
_sender: BytesLike,
_message: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
inRecovery(overrides?: CallOverrides): Promise<PopulatedTransaction>;
initialize(
_xAppConnectionManager: string,
_recoveryManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
initiateRecoveryTimelock(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
localDomain(overrides?: CallOverrides): Promise<PopulatedTransaction>;
recoveryActiveAt(overrides?: CallOverrides): Promise<PopulatedTransaction>;
recoveryManager(overrides?: CallOverrides): Promise<PopulatedTransaction>;
recoveryTimelock(overrides?: CallOverrides): Promise<PopulatedTransaction>;
routers(
arg0: BigNumberish,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
setRouter(
_domain: BigNumberish,
_router: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
setRouterLocal(
_domain: BigNumberish,
_router: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
setXAppConnectionManager(
_xAppConnectionManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
transferGovernor(
_newDomain: BigNumberish,
_newGovernor: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
transferRecoveryManager(
_newRecoveryManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
xAppConnectionManager(
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,799 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
Overrides,
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 HomeInterface extends ethers.utils.Interface {
functions: {
"MAX_MESSAGE_BODY_BYTES()": FunctionFragment;
"VERSION()": FunctionFragment;
"committedRoot()": FunctionFragment;
"count()": FunctionFragment;
"dispatch(uint32,bytes32,bytes)": FunctionFragment;
"doubleUpdate(bytes32,bytes32[2],bytes,bytes)": FunctionFragment;
"homeDomainHash()": FunctionFragment;
"improperUpdate(bytes32,bytes32,bytes)": FunctionFragment;
"initialize(address)": FunctionFragment;
"localDomain()": FunctionFragment;
"nonces(uint32)": FunctionFragment;
"owner()": FunctionFragment;
"queueContains(bytes32)": FunctionFragment;
"queueEnd()": FunctionFragment;
"queueLength()": FunctionFragment;
"renounceOwnership()": FunctionFragment;
"root()": FunctionFragment;
"setUpdater(address)": FunctionFragment;
"setUpdaterManager(address)": FunctionFragment;
"state()": FunctionFragment;
"suggestUpdate()": FunctionFragment;
"transferOwnership(address)": FunctionFragment;
"tree()": FunctionFragment;
"update(bytes32,bytes32,bytes)": FunctionFragment;
"updater()": FunctionFragment;
"updaterManager()": FunctionFragment;
};
encodeFunctionData(
functionFragment: "MAX_MESSAGE_BODY_BYTES",
values?: undefined
): string;
encodeFunctionData(functionFragment: "VERSION", values?: undefined): string;
encodeFunctionData(
functionFragment: "committedRoot",
values?: undefined
): string;
encodeFunctionData(functionFragment: "count", values?: undefined): string;
encodeFunctionData(
functionFragment: "dispatch",
values: [BigNumberish, BytesLike, BytesLike]
): string;
encodeFunctionData(
functionFragment: "doubleUpdate",
values: [BytesLike, [BytesLike, BytesLike], BytesLike, BytesLike]
): string;
encodeFunctionData(
functionFragment: "homeDomainHash",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "improperUpdate",
values: [BytesLike, BytesLike, BytesLike]
): string;
encodeFunctionData(functionFragment: "initialize", values: [string]): string;
encodeFunctionData(
functionFragment: "localDomain",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "nonces",
values: [BigNumberish]
): string;
encodeFunctionData(functionFragment: "owner", values?: undefined): string;
encodeFunctionData(
functionFragment: "queueContains",
values: [BytesLike]
): string;
encodeFunctionData(functionFragment: "queueEnd", values?: undefined): string;
encodeFunctionData(
functionFragment: "queueLength",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "renounceOwnership",
values?: undefined
): string;
encodeFunctionData(functionFragment: "root", values?: undefined): string;
encodeFunctionData(functionFragment: "setUpdater", values: [string]): string;
encodeFunctionData(
functionFragment: "setUpdaterManager",
values: [string]
): string;
encodeFunctionData(functionFragment: "state", values?: undefined): string;
encodeFunctionData(
functionFragment: "suggestUpdate",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "transferOwnership",
values: [string]
): string;
encodeFunctionData(functionFragment: "tree", values?: undefined): string;
encodeFunctionData(
functionFragment: "update",
values: [BytesLike, BytesLike, BytesLike]
): string;
encodeFunctionData(functionFragment: "updater", values?: undefined): string;
encodeFunctionData(
functionFragment: "updaterManager",
values?: undefined
): string;
decodeFunctionResult(
functionFragment: "MAX_MESSAGE_BODY_BYTES",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "VERSION", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "committedRoot",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "count", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "dispatch", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "doubleUpdate",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "homeDomainHash",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "improperUpdate",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "localDomain",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "queueContains",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "queueEnd", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "queueLength",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "renounceOwnership",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "root", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "setUpdater", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "setUpdaterManager",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "state", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "suggestUpdate",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "transferOwnership",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "tree", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "update", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "updater", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "updaterManager",
data: BytesLike
): Result;
events: {
"Dispatch(bytes32,uint256,uint64,bytes32,bytes)": EventFragment;
"DoubleUpdate(bytes32,bytes32[2],bytes,bytes)": EventFragment;
"ImproperUpdate(bytes32,bytes32,bytes)": EventFragment;
"NewUpdater(address)": EventFragment;
"NewUpdaterManager(address)": EventFragment;
"OwnershipTransferred(address,address)": EventFragment;
"Update(uint32,bytes32,bytes32,bytes)": EventFragment;
"UpdaterSlashed(address,address)": EventFragment;
};
getEvent(nameOrSignatureOrTopic: "Dispatch"): EventFragment;
getEvent(nameOrSignatureOrTopic: "DoubleUpdate"): EventFragment;
getEvent(nameOrSignatureOrTopic: "ImproperUpdate"): EventFragment;
getEvent(nameOrSignatureOrTopic: "NewUpdater"): EventFragment;
getEvent(nameOrSignatureOrTopic: "NewUpdaterManager"): EventFragment;
getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
getEvent(nameOrSignatureOrTopic: "Update"): EventFragment;
getEvent(nameOrSignatureOrTopic: "UpdaterSlashed"): EventFragment;
}
export class Home extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: HomeInterface;
functions: {
MAX_MESSAGE_BODY_BYTES(overrides?: CallOverrides): Promise<[BigNumber]>;
VERSION(overrides?: CallOverrides): Promise<[number]>;
committedRoot(overrides?: CallOverrides): Promise<[string]>;
count(overrides?: CallOverrides): Promise<[BigNumber]>;
dispatch(
_destinationDomain: BigNumberish,
_recipientAddress: BytesLike,
_messageBody: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
doubleUpdate(
_oldRoot: BytesLike,
_newRoot: [BytesLike, BytesLike],
_signature: BytesLike,
_signature2: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
homeDomainHash(overrides?: CallOverrides): Promise<[string]>;
improperUpdate(
_oldRoot: BytesLike,
_newRoot: BytesLike,
_signature: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
initialize(
_updaterManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
localDomain(overrides?: CallOverrides): Promise<[number]>;
nonces(arg0: BigNumberish, overrides?: CallOverrides): Promise<[number]>;
owner(overrides?: CallOverrides): Promise<[string]>;
queueContains(
_item: BytesLike,
overrides?: CallOverrides
): Promise<[boolean]>;
queueEnd(overrides?: CallOverrides): Promise<[string]>;
queueLength(overrides?: CallOverrides): Promise<[BigNumber]>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
root(overrides?: CallOverrides): Promise<[string]>;
setUpdater(
_updater: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
setUpdaterManager(
_updaterManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
state(overrides?: CallOverrides): Promise<[number]>;
suggestUpdate(
overrides?: CallOverrides
): Promise<[string, string] & { _committedRoot: string; _new: string }>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
tree(
overrides?: CallOverrides
): Promise<[BigNumber] & { count: BigNumber }>;
update(
_committedRoot: BytesLike,
_newRoot: BytesLike,
_signature: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
updater(overrides?: CallOverrides): Promise<[string]>;
updaterManager(overrides?: CallOverrides): Promise<[string]>;
};
MAX_MESSAGE_BODY_BYTES(overrides?: CallOverrides): Promise<BigNumber>;
VERSION(overrides?: CallOverrides): Promise<number>;
committedRoot(overrides?: CallOverrides): Promise<string>;
count(overrides?: CallOverrides): Promise<BigNumber>;
dispatch(
_destinationDomain: BigNumberish,
_recipientAddress: BytesLike,
_messageBody: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
doubleUpdate(
_oldRoot: BytesLike,
_newRoot: [BytesLike, BytesLike],
_signature: BytesLike,
_signature2: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
homeDomainHash(overrides?: CallOverrides): Promise<string>;
improperUpdate(
_oldRoot: BytesLike,
_newRoot: BytesLike,
_signature: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
initialize(
_updaterManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
localDomain(overrides?: CallOverrides): Promise<number>;
nonces(arg0: BigNumberish, overrides?: CallOverrides): Promise<number>;
owner(overrides?: CallOverrides): Promise<string>;
queueContains(_item: BytesLike, overrides?: CallOverrides): Promise<boolean>;
queueEnd(overrides?: CallOverrides): Promise<string>;
queueLength(overrides?: CallOverrides): Promise<BigNumber>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
root(overrides?: CallOverrides): Promise<string>;
setUpdater(
_updater: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
setUpdaterManager(
_updaterManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
state(overrides?: CallOverrides): Promise<number>;
suggestUpdate(
overrides?: CallOverrides
): Promise<[string, string] & { _committedRoot: string; _new: string }>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
tree(overrides?: CallOverrides): Promise<BigNumber>;
update(
_committedRoot: BytesLike,
_newRoot: BytesLike,
_signature: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
updater(overrides?: CallOverrides): Promise<string>;
updaterManager(overrides?: CallOverrides): Promise<string>;
callStatic: {
MAX_MESSAGE_BODY_BYTES(overrides?: CallOverrides): Promise<BigNumber>;
VERSION(overrides?: CallOverrides): Promise<number>;
committedRoot(overrides?: CallOverrides): Promise<string>;
count(overrides?: CallOverrides): Promise<BigNumber>;
dispatch(
_destinationDomain: BigNumberish,
_recipientAddress: BytesLike,
_messageBody: BytesLike,
overrides?: CallOverrides
): Promise<void>;
doubleUpdate(
_oldRoot: BytesLike,
_newRoot: [BytesLike, BytesLike],
_signature: BytesLike,
_signature2: BytesLike,
overrides?: CallOverrides
): Promise<void>;
homeDomainHash(overrides?: CallOverrides): Promise<string>;
improperUpdate(
_oldRoot: BytesLike,
_newRoot: BytesLike,
_signature: BytesLike,
overrides?: CallOverrides
): Promise<boolean>;
initialize(
_updaterManager: string,
overrides?: CallOverrides
): Promise<void>;
localDomain(overrides?: CallOverrides): Promise<number>;
nonces(arg0: BigNumberish, overrides?: CallOverrides): Promise<number>;
owner(overrides?: CallOverrides): Promise<string>;
queueContains(
_item: BytesLike,
overrides?: CallOverrides
): Promise<boolean>;
queueEnd(overrides?: CallOverrides): Promise<string>;
queueLength(overrides?: CallOverrides): Promise<BigNumber>;
renounceOwnership(overrides?: CallOverrides): Promise<void>;
root(overrides?: CallOverrides): Promise<string>;
setUpdater(_updater: string, overrides?: CallOverrides): Promise<void>;
setUpdaterManager(
_updaterManager: string,
overrides?: CallOverrides
): Promise<void>;
state(overrides?: CallOverrides): Promise<number>;
suggestUpdate(
overrides?: CallOverrides
): Promise<[string, string] & { _committedRoot: string; _new: string }>;
transferOwnership(
newOwner: string,
overrides?: CallOverrides
): Promise<void>;
tree(overrides?: CallOverrides): Promise<BigNumber>;
update(
_committedRoot: BytesLike,
_newRoot: BytesLike,
_signature: BytesLike,
overrides?: CallOverrides
): Promise<void>;
updater(overrides?: CallOverrides): Promise<string>;
updaterManager(overrides?: CallOverrides): Promise<string>;
};
filters: {
Dispatch(
messageHash?: BytesLike | null,
leafIndex?: BigNumberish | null,
destinationAndNonce?: BigNumberish | null,
committedRoot?: null,
message?: null
): TypedEventFilter<
[string, BigNumber, BigNumber, string, string],
{
messageHash: string;
leafIndex: BigNumber;
destinationAndNonce: BigNumber;
committedRoot: string;
message: string;
}
>;
DoubleUpdate(
oldRoot?: null,
newRoot?: null,
signature?: null,
signature2?: null
): TypedEventFilter<
[string, [string, string], string, string],
{
oldRoot: string;
newRoot: [string, string];
signature: string;
signature2: string;
}
>;
ImproperUpdate(
oldRoot?: null,
newRoot?: null,
signature?: null
): TypedEventFilter<
[string, string, string],
{ oldRoot: string; newRoot: string; signature: string }
>;
NewUpdater(updater?: null): TypedEventFilter<[string], { updater: string }>;
NewUpdaterManager(
updaterManager?: null
): TypedEventFilter<[string], { updaterManager: string }>;
OwnershipTransferred(
previousOwner?: string | null,
newOwner?: string | null
): TypedEventFilter<
[string, string],
{ previousOwner: string; newOwner: string }
>;
Update(
homeDomain?: BigNumberish | null,
oldRoot?: BytesLike | null,
newRoot?: BytesLike | null,
signature?: null
): TypedEventFilter<
[number, string, string, string],
{
homeDomain: number;
oldRoot: string;
newRoot: string;
signature: string;
}
>;
UpdaterSlashed(
updater?: string | null,
reporter?: string | null
): TypedEventFilter<
[string, string],
{ updater: string; reporter: string }
>;
};
estimateGas: {
MAX_MESSAGE_BODY_BYTES(overrides?: CallOverrides): Promise<BigNumber>;
VERSION(overrides?: CallOverrides): Promise<BigNumber>;
committedRoot(overrides?: CallOverrides): Promise<BigNumber>;
count(overrides?: CallOverrides): Promise<BigNumber>;
dispatch(
_destinationDomain: BigNumberish,
_recipientAddress: BytesLike,
_messageBody: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
doubleUpdate(
_oldRoot: BytesLike,
_newRoot: [BytesLike, BytesLike],
_signature: BytesLike,
_signature2: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
homeDomainHash(overrides?: CallOverrides): Promise<BigNumber>;
improperUpdate(
_oldRoot: BytesLike,
_newRoot: BytesLike,
_signature: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
initialize(
_updaterManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
localDomain(overrides?: CallOverrides): Promise<BigNumber>;
nonces(arg0: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
owner(overrides?: CallOverrides): Promise<BigNumber>;
queueContains(
_item: BytesLike,
overrides?: CallOverrides
): Promise<BigNumber>;
queueEnd(overrides?: CallOverrides): Promise<BigNumber>;
queueLength(overrides?: CallOverrides): Promise<BigNumber>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
root(overrides?: CallOverrides): Promise<BigNumber>;
setUpdater(
_updater: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
setUpdaterManager(
_updaterManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
state(overrides?: CallOverrides): Promise<BigNumber>;
suggestUpdate(overrides?: CallOverrides): Promise<BigNumber>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
tree(overrides?: CallOverrides): Promise<BigNumber>;
update(
_committedRoot: BytesLike,
_newRoot: BytesLike,
_signature: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
updater(overrides?: CallOverrides): Promise<BigNumber>;
updaterManager(overrides?: CallOverrides): Promise<BigNumber>;
};
populateTransaction: {
MAX_MESSAGE_BODY_BYTES(
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
VERSION(overrides?: CallOverrides): Promise<PopulatedTransaction>;
committedRoot(overrides?: CallOverrides): Promise<PopulatedTransaction>;
count(overrides?: CallOverrides): Promise<PopulatedTransaction>;
dispatch(
_destinationDomain: BigNumberish,
_recipientAddress: BytesLike,
_messageBody: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
doubleUpdate(
_oldRoot: BytesLike,
_newRoot: [BytesLike, BytesLike],
_signature: BytesLike,
_signature2: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
homeDomainHash(overrides?: CallOverrides): Promise<PopulatedTransaction>;
improperUpdate(
_oldRoot: BytesLike,
_newRoot: BytesLike,
_signature: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
initialize(
_updaterManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
localDomain(overrides?: CallOverrides): Promise<PopulatedTransaction>;
nonces(
arg0: BigNumberish,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
queueContains(
_item: BytesLike,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
queueEnd(overrides?: CallOverrides): Promise<PopulatedTransaction>;
queueLength(overrides?: CallOverrides): Promise<PopulatedTransaction>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
root(overrides?: CallOverrides): Promise<PopulatedTransaction>;
setUpdater(
_updater: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
setUpdaterManager(
_updaterManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
state(overrides?: CallOverrides): Promise<PopulatedTransaction>;
suggestUpdate(overrides?: CallOverrides): Promise<PopulatedTransaction>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
tree(overrides?: CallOverrides): Promise<PopulatedTransaction>;
update(
_committedRoot: BytesLike,
_newRoot: BytesLike,
_signature: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
updater(overrides?: CallOverrides): Promise<PopulatedTransaction>;
updaterManager(overrides?: CallOverrides): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,124 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
Overrides,
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 IMessageRecipientInterface extends ethers.utils.Interface {
functions: {
"handle(uint32,bytes32,bytes)": FunctionFragment;
};
encodeFunctionData(
functionFragment: "handle",
values: [BigNumberish, BytesLike, BytesLike]
): string;
decodeFunctionResult(functionFragment: "handle", data: BytesLike): Result;
events: {};
}
export class IMessageRecipient extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: IMessageRecipientInterface;
functions: {
handle(
_origin: BigNumberish,
_sender: BytesLike,
_message: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
};
handle(
_origin: BigNumberish,
_sender: BytesLike,
_message: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
callStatic: {
handle(
_origin: BigNumberish,
_sender: BytesLike,
_message: BytesLike,
overrides?: CallOverrides
): Promise<void>;
};
filters: {};
estimateGas: {
handle(
_origin: BigNumberish,
_sender: BytesLike,
_message: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
};
populateTransaction: {
handle(
_origin: BigNumberish,
_sender: BytesLike,
_message: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,127 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
Overrides,
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 IUpdaterManagerInterface extends ethers.utils.Interface {
functions: {
"slashUpdater(address)": FunctionFragment;
"updater()": FunctionFragment;
};
encodeFunctionData(
functionFragment: "slashUpdater",
values: [string]
): string;
encodeFunctionData(functionFragment: "updater", values?: undefined): string;
decodeFunctionResult(
functionFragment: "slashUpdater",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "updater", data: BytesLike): Result;
events: {};
}
export class IUpdaterManager extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: IUpdaterManagerInterface;
functions: {
slashUpdater(
_reporter: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
updater(overrides?: CallOverrides): Promise<[string]>;
};
slashUpdater(
_reporter: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
updater(overrides?: CallOverrides): Promise<string>;
callStatic: {
slashUpdater(_reporter: string, overrides?: CallOverrides): Promise<void>;
updater(overrides?: CallOverrides): Promise<string>;
};
filters: {};
estimateGas: {
slashUpdater(
_reporter: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
updater(overrides?: CallOverrides): Promise<BigNumber>;
};
populateTransaction: {
slashUpdater(
_reporter: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
updater(overrides?: CallOverrides): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,246 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
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 MerkleLibInterface extends ethers.utils.Interface {
functions: {
"zeroHashes()": FunctionFragment;
};
encodeFunctionData(
functionFragment: "zeroHashes",
values?: undefined
): string;
decodeFunctionResult(functionFragment: "zeroHashes", data: BytesLike): Result;
events: {};
}
export class MerkleLib extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: MerkleLibInterface;
functions: {
zeroHashes(
overrides?: CallOverrides
): Promise<
[
[
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string
]
] & {
_zeroes: [
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string
];
}
>;
};
zeroHashes(
overrides?: CallOverrides
): Promise<
[
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string
]
>;
callStatic: {
zeroHashes(
overrides?: CallOverrides
): Promise<
[
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string,
string
]
>;
};
filters: {};
estimateGas: {
zeroHashes(overrides?: CallOverrides): Promise<BigNumber>;
};
populateTransaction: {
zeroHashes(overrides?: CallOverrides): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,123 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
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 MerkleTreeManagerInterface extends ethers.utils.Interface {
functions: {
"count()": FunctionFragment;
"root()": FunctionFragment;
"tree()": FunctionFragment;
};
encodeFunctionData(functionFragment: "count", values?: undefined): string;
encodeFunctionData(functionFragment: "root", values?: undefined): string;
encodeFunctionData(functionFragment: "tree", values?: undefined): string;
decodeFunctionResult(functionFragment: "count", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "root", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "tree", data: BytesLike): Result;
events: {};
}
export class MerkleTreeManager extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: MerkleTreeManagerInterface;
functions: {
count(overrides?: CallOverrides): Promise<[BigNumber]>;
root(overrides?: CallOverrides): Promise<[string]>;
tree(
overrides?: CallOverrides
): Promise<[BigNumber] & { count: BigNumber }>;
};
count(overrides?: CallOverrides): Promise<BigNumber>;
root(overrides?: CallOverrides): Promise<string>;
tree(overrides?: CallOverrides): Promise<BigNumber>;
callStatic: {
count(overrides?: CallOverrides): Promise<BigNumber>;
root(overrides?: CallOverrides): Promise<string>;
tree(overrides?: CallOverrides): Promise<BigNumber>;
};
filters: {};
estimateGas: {
count(overrides?: CallOverrides): Promise<BigNumber>;
root(overrides?: CallOverrides): Promise<BigNumber>;
tree(overrides?: CallOverrides): Promise<BigNumber>;
};
populateTransaction: {
count(overrides?: CallOverrides): Promise<PopulatedTransaction>;
root(overrides?: CallOverrides): Promise<PopulatedTransaction>;
tree(overrides?: CallOverrides): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,173 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
Overrides,
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 MysteryMathInterface extends ethers.utils.Interface {
functions: {
"doMath(uint256,uint256)": FunctionFragment;
"getState()": FunctionFragment;
"setState(uint256)": FunctionFragment;
"stateVar()": FunctionFragment;
};
encodeFunctionData(
functionFragment: "doMath",
values: [BigNumberish, BigNumberish]
): string;
encodeFunctionData(functionFragment: "getState", values?: undefined): string;
encodeFunctionData(
functionFragment: "setState",
values: [BigNumberish]
): string;
encodeFunctionData(functionFragment: "stateVar", values?: undefined): string;
decodeFunctionResult(functionFragment: "doMath", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "getState", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "setState", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "stateVar", data: BytesLike): Result;
events: {};
}
export class MysteryMath extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: MysteryMathInterface;
functions: {
doMath(
a: BigNumberish,
b: BigNumberish,
overrides?: CallOverrides
): Promise<[BigNumber] & { _result: BigNumber }>;
getState(overrides?: CallOverrides): Promise<[BigNumber]>;
setState(
_var: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
stateVar(overrides?: CallOverrides): Promise<[BigNumber]>;
};
doMath(
a: BigNumberish,
b: BigNumberish,
overrides?: CallOverrides
): Promise<BigNumber>;
getState(overrides?: CallOverrides): Promise<BigNumber>;
setState(
_var: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
stateVar(overrides?: CallOverrides): Promise<BigNumber>;
callStatic: {
doMath(
a: BigNumberish,
b: BigNumberish,
overrides?: CallOverrides
): Promise<BigNumber>;
getState(overrides?: CallOverrides): Promise<BigNumber>;
setState(_var: BigNumberish, overrides?: CallOverrides): Promise<void>;
stateVar(overrides?: CallOverrides): Promise<BigNumber>;
};
filters: {};
estimateGas: {
doMath(
a: BigNumberish,
b: BigNumberish,
overrides?: CallOverrides
): Promise<BigNumber>;
getState(overrides?: CallOverrides): Promise<BigNumber>;
setState(
_var: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
stateVar(overrides?: CallOverrides): Promise<BigNumber>;
};
populateTransaction: {
doMath(
a: BigNumberish,
b: BigNumberish,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
getState(overrides?: CallOverrides): Promise<PopulatedTransaction>;
setState(
_var: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
stateVar(overrides?: CallOverrides): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,186 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
Overrides,
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 MysteryMathV1Interface extends ethers.utils.Interface {
functions: {
"doMath(uint256,uint256)": FunctionFragment;
"getState()": FunctionFragment;
"setState(uint256)": FunctionFragment;
"stateVar()": FunctionFragment;
"version()": FunctionFragment;
};
encodeFunctionData(
functionFragment: "doMath",
values: [BigNumberish, BigNumberish]
): string;
encodeFunctionData(functionFragment: "getState", values?: undefined): string;
encodeFunctionData(
functionFragment: "setState",
values: [BigNumberish]
): string;
encodeFunctionData(functionFragment: "stateVar", values?: undefined): string;
encodeFunctionData(functionFragment: "version", values?: undefined): string;
decodeFunctionResult(functionFragment: "doMath", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "getState", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "setState", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "stateVar", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "version", data: BytesLike): Result;
events: {};
}
export class MysteryMathV1 extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: MysteryMathV1Interface;
functions: {
doMath(
a: BigNumberish,
b: BigNumberish,
overrides?: CallOverrides
): Promise<[BigNumber] & { _result: BigNumber }>;
getState(overrides?: CallOverrides): Promise<[BigNumber]>;
setState(
_var: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
stateVar(overrides?: CallOverrides): Promise<[BigNumber]>;
version(overrides?: CallOverrides): Promise<[number]>;
};
doMath(
a: BigNumberish,
b: BigNumberish,
overrides?: CallOverrides
): Promise<BigNumber>;
getState(overrides?: CallOverrides): Promise<BigNumber>;
setState(
_var: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
stateVar(overrides?: CallOverrides): Promise<BigNumber>;
version(overrides?: CallOverrides): Promise<number>;
callStatic: {
doMath(
a: BigNumberish,
b: BigNumberish,
overrides?: CallOverrides
): Promise<BigNumber>;
getState(overrides?: CallOverrides): Promise<BigNumber>;
setState(_var: BigNumberish, overrides?: CallOverrides): Promise<void>;
stateVar(overrides?: CallOverrides): Promise<BigNumber>;
version(overrides?: CallOverrides): Promise<number>;
};
filters: {};
estimateGas: {
doMath(
a: BigNumberish,
b: BigNumberish,
overrides?: CallOverrides
): Promise<BigNumber>;
getState(overrides?: CallOverrides): Promise<BigNumber>;
setState(
_var: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
stateVar(overrides?: CallOverrides): Promise<BigNumber>;
version(overrides?: CallOverrides): Promise<BigNumber>;
};
populateTransaction: {
doMath(
a: BigNumberish,
b: BigNumberish,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
getState(overrides?: CallOverrides): Promise<PopulatedTransaction>;
setState(
_var: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
stateVar(overrides?: CallOverrides): Promise<PopulatedTransaction>;
version(overrides?: CallOverrides): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,186 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
Overrides,
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 MysteryMathV2Interface extends ethers.utils.Interface {
functions: {
"doMath(uint256,uint256)": FunctionFragment;
"getState()": FunctionFragment;
"setState(uint256)": FunctionFragment;
"stateVar()": FunctionFragment;
"version()": FunctionFragment;
};
encodeFunctionData(
functionFragment: "doMath",
values: [BigNumberish, BigNumberish]
): string;
encodeFunctionData(functionFragment: "getState", values?: undefined): string;
encodeFunctionData(
functionFragment: "setState",
values: [BigNumberish]
): string;
encodeFunctionData(functionFragment: "stateVar", values?: undefined): string;
encodeFunctionData(functionFragment: "version", values?: undefined): string;
decodeFunctionResult(functionFragment: "doMath", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "getState", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "setState", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "stateVar", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "version", data: BytesLike): Result;
events: {};
}
export class MysteryMathV2 extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: MysteryMathV2Interface;
functions: {
doMath(
a: BigNumberish,
b: BigNumberish,
overrides?: CallOverrides
): Promise<[BigNumber] & { _result: BigNumber }>;
getState(overrides?: CallOverrides): Promise<[BigNumber]>;
setState(
_var: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
stateVar(overrides?: CallOverrides): Promise<[BigNumber]>;
version(overrides?: CallOverrides): Promise<[number]>;
};
doMath(
a: BigNumberish,
b: BigNumberish,
overrides?: CallOverrides
): Promise<BigNumber>;
getState(overrides?: CallOverrides): Promise<BigNumber>;
setState(
_var: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
stateVar(overrides?: CallOverrides): Promise<BigNumber>;
version(overrides?: CallOverrides): Promise<number>;
callStatic: {
doMath(
a: BigNumberish,
b: BigNumberish,
overrides?: CallOverrides
): Promise<BigNumber>;
getState(overrides?: CallOverrides): Promise<BigNumber>;
setState(_var: BigNumberish, overrides?: CallOverrides): Promise<void>;
stateVar(overrides?: CallOverrides): Promise<BigNumber>;
version(overrides?: CallOverrides): Promise<number>;
};
filters: {};
estimateGas: {
doMath(
a: BigNumberish,
b: BigNumberish,
overrides?: CallOverrides
): Promise<BigNumber>;
getState(overrides?: CallOverrides): Promise<BigNumber>;
setState(
_var: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
stateVar(overrides?: CallOverrides): Promise<BigNumber>;
version(overrides?: CallOverrides): Promise<BigNumber>;
};
populateTransaction: {
doMath(
a: BigNumberish,
b: BigNumberish,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
getState(overrides?: CallOverrides): Promise<PopulatedTransaction>;
setState(
_var: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
stateVar(overrides?: CallOverrides): Promise<PopulatedTransaction>;
version(overrides?: CallOverrides): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,169 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
Overrides,
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 OwnableInterface extends ethers.utils.Interface {
functions: {
"owner()": FunctionFragment;
"renounceOwnership()": FunctionFragment;
"transferOwnership(address)": FunctionFragment;
};
encodeFunctionData(functionFragment: "owner", values?: undefined): string;
encodeFunctionData(
functionFragment: "renounceOwnership",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "transferOwnership",
values: [string]
): string;
decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "renounceOwnership",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "transferOwnership",
data: BytesLike
): Result;
events: {
"OwnershipTransferred(address,address)": EventFragment;
};
getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
}
export class Ownable extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: OwnableInterface;
functions: {
owner(overrides?: CallOverrides): Promise<[string]>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
};
owner(overrides?: CallOverrides): Promise<string>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
callStatic: {
owner(overrides?: CallOverrides): Promise<string>;
renounceOwnership(overrides?: CallOverrides): Promise<void>;
transferOwnership(
newOwner: string,
overrides?: CallOverrides
): Promise<void>;
};
filters: {
OwnershipTransferred(
previousOwner?: string | null,
newOwner?: string | null
): TypedEventFilter<
[string, string],
{ previousOwner: string; newOwner: string }
>;
};
estimateGas: {
owner(overrides?: CallOverrides): Promise<BigNumber>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
};
populateTransaction: {
owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,169 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
Overrides,
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 OwnableUpgradeableInterface extends ethers.utils.Interface {
functions: {
"owner()": FunctionFragment;
"renounceOwnership()": FunctionFragment;
"transferOwnership(address)": FunctionFragment;
};
encodeFunctionData(functionFragment: "owner", values?: undefined): string;
encodeFunctionData(
functionFragment: "renounceOwnership",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "transferOwnership",
values: [string]
): string;
decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "renounceOwnership",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "transferOwnership",
data: BytesLike
): Result;
events: {
"OwnershipTransferred(address,address)": EventFragment;
};
getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
}
export class OwnableUpgradeable extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: OwnableUpgradeableInterface;
functions: {
owner(overrides?: CallOverrides): Promise<[string]>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
};
owner(overrides?: CallOverrides): Promise<string>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
callStatic: {
owner(overrides?: CallOverrides): Promise<string>;
renounceOwnership(overrides?: CallOverrides): Promise<void>;
transferOwnership(
newOwner: string,
overrides?: CallOverrides
): Promise<void>;
};
filters: {
OwnershipTransferred(
previousOwner?: string | null,
newOwner?: string | null
): TypedEventFilter<
[string, string],
{ previousOwner: string; newOwner: string }
>;
};
estimateGas: {
owner(overrides?: CallOverrides): Promise<BigNumber>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
};
populateTransaction: {
owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,145 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
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 QueueManagerInterface extends ethers.utils.Interface {
functions: {
"queueContains(bytes32)": FunctionFragment;
"queueEnd()": FunctionFragment;
"queueLength()": FunctionFragment;
};
encodeFunctionData(
functionFragment: "queueContains",
values: [BytesLike]
): string;
encodeFunctionData(functionFragment: "queueEnd", values?: undefined): string;
encodeFunctionData(
functionFragment: "queueLength",
values?: undefined
): string;
decodeFunctionResult(
functionFragment: "queueContains",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "queueEnd", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "queueLength",
data: BytesLike
): Result;
events: {};
}
export class QueueManager extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: QueueManagerInterface;
functions: {
queueContains(
_item: BytesLike,
overrides?: CallOverrides
): Promise<[boolean]>;
queueEnd(overrides?: CallOverrides): Promise<[string]>;
queueLength(overrides?: CallOverrides): Promise<[BigNumber]>;
};
queueContains(_item: BytesLike, overrides?: CallOverrides): Promise<boolean>;
queueEnd(overrides?: CallOverrides): Promise<string>;
queueLength(overrides?: CallOverrides): Promise<BigNumber>;
callStatic: {
queueContains(
_item: BytesLike,
overrides?: CallOverrides
): Promise<boolean>;
queueEnd(overrides?: CallOverrides): Promise<string>;
queueLength(overrides?: CallOverrides): Promise<BigNumber>;
};
filters: {};
estimateGas: {
queueContains(
_item: BytesLike,
overrides?: CallOverrides
): Promise<BigNumber>;
queueEnd(overrides?: CallOverrides): Promise<BigNumber>;
queueLength(overrides?: CallOverrides): Promise<BigNumber>;
};
populateTransaction: {
queueContains(
_item: BytesLike,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
queueEnd(overrides?: CallOverrides): Promise<PopulatedTransaction>;
queueLength(overrides?: CallOverrides): Promise<PopulatedTransaction>;
};
}

File diff suppressed because it is too large Load Diff

@ -0,0 +1,324 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
Overrides,
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 TestCommonInterface extends ethers.utils.Interface {
functions: {
"committedRoot()": FunctionFragment;
"doubleUpdate(bytes32,bytes32[2],bytes,bytes)": FunctionFragment;
"homeDomainHash()": FunctionFragment;
"localDomain()": FunctionFragment;
"setUpdater(address)": FunctionFragment;
"state()": FunctionFragment;
"testIsUpdaterSignature(bytes32,bytes32,bytes)": FunctionFragment;
"updater()": FunctionFragment;
};
encodeFunctionData(
functionFragment: "committedRoot",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "doubleUpdate",
values: [BytesLike, [BytesLike, BytesLike], BytesLike, BytesLike]
): string;
encodeFunctionData(
functionFragment: "homeDomainHash",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "localDomain",
values?: undefined
): string;
encodeFunctionData(functionFragment: "setUpdater", values: [string]): string;
encodeFunctionData(functionFragment: "state", values?: undefined): string;
encodeFunctionData(
functionFragment: "testIsUpdaterSignature",
values: [BytesLike, BytesLike, BytesLike]
): string;
encodeFunctionData(functionFragment: "updater", values?: undefined): string;
decodeFunctionResult(
functionFragment: "committedRoot",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "doubleUpdate",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "homeDomainHash",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "localDomain",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "setUpdater", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "state", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "testIsUpdaterSignature",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "updater", data: BytesLike): Result;
events: {
"DoubleUpdate(bytes32,bytes32[2],bytes,bytes)": EventFragment;
"NewUpdater(address)": EventFragment;
"Update(uint32,bytes32,bytes32,bytes)": EventFragment;
};
getEvent(nameOrSignatureOrTopic: "DoubleUpdate"): EventFragment;
getEvent(nameOrSignatureOrTopic: "NewUpdater"): EventFragment;
getEvent(nameOrSignatureOrTopic: "Update"): EventFragment;
}
export class TestCommon extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: TestCommonInterface;
functions: {
committedRoot(overrides?: CallOverrides): Promise<[string]>;
doubleUpdate(
_oldRoot: BytesLike,
_newRoot: [BytesLike, BytesLike],
_signature: BytesLike,
_signature2: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
homeDomainHash(overrides?: CallOverrides): Promise<[string]>;
localDomain(overrides?: CallOverrides): Promise<[number]>;
setUpdater(
_updater: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
state(overrides?: CallOverrides): Promise<[number]>;
testIsUpdaterSignature(
_oldRoot: BytesLike,
_newRoot: BytesLike,
_signature: BytesLike,
overrides?: CallOverrides
): Promise<[boolean]>;
updater(overrides?: CallOverrides): Promise<[string]>;
};
committedRoot(overrides?: CallOverrides): Promise<string>;
doubleUpdate(
_oldRoot: BytesLike,
_newRoot: [BytesLike, BytesLike],
_signature: BytesLike,
_signature2: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
homeDomainHash(overrides?: CallOverrides): Promise<string>;
localDomain(overrides?: CallOverrides): Promise<number>;
setUpdater(
_updater: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
state(overrides?: CallOverrides): Promise<number>;
testIsUpdaterSignature(
_oldRoot: BytesLike,
_newRoot: BytesLike,
_signature: BytesLike,
overrides?: CallOverrides
): Promise<boolean>;
updater(overrides?: CallOverrides): Promise<string>;
callStatic: {
committedRoot(overrides?: CallOverrides): Promise<string>;
doubleUpdate(
_oldRoot: BytesLike,
_newRoot: [BytesLike, BytesLike],
_signature: BytesLike,
_signature2: BytesLike,
overrides?: CallOverrides
): Promise<void>;
homeDomainHash(overrides?: CallOverrides): Promise<string>;
localDomain(overrides?: CallOverrides): Promise<number>;
setUpdater(_updater: string, overrides?: CallOverrides): Promise<void>;
state(overrides?: CallOverrides): Promise<number>;
testIsUpdaterSignature(
_oldRoot: BytesLike,
_newRoot: BytesLike,
_signature: BytesLike,
overrides?: CallOverrides
): Promise<boolean>;
updater(overrides?: CallOverrides): Promise<string>;
};
filters: {
DoubleUpdate(
oldRoot?: null,
newRoot?: null,
signature?: null,
signature2?: null
): TypedEventFilter<
[string, [string, string], string, string],
{
oldRoot: string;
newRoot: [string, string];
signature: string;
signature2: string;
}
>;
NewUpdater(updater?: null): TypedEventFilter<[string], { updater: string }>;
Update(
homeDomain?: BigNumberish | null,
oldRoot?: BytesLike | null,
newRoot?: BytesLike | null,
signature?: null
): TypedEventFilter<
[number, string, string, string],
{
homeDomain: number;
oldRoot: string;
newRoot: string;
signature: string;
}
>;
};
estimateGas: {
committedRoot(overrides?: CallOverrides): Promise<BigNumber>;
doubleUpdate(
_oldRoot: BytesLike,
_newRoot: [BytesLike, BytesLike],
_signature: BytesLike,
_signature2: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
homeDomainHash(overrides?: CallOverrides): Promise<BigNumber>;
localDomain(overrides?: CallOverrides): Promise<BigNumber>;
setUpdater(
_updater: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
state(overrides?: CallOverrides): Promise<BigNumber>;
testIsUpdaterSignature(
_oldRoot: BytesLike,
_newRoot: BytesLike,
_signature: BytesLike,
overrides?: CallOverrides
): Promise<BigNumber>;
updater(overrides?: CallOverrides): Promise<BigNumber>;
};
populateTransaction: {
committedRoot(overrides?: CallOverrides): Promise<PopulatedTransaction>;
doubleUpdate(
_oldRoot: BytesLike,
_newRoot: [BytesLike, BytesLike],
_signature: BytesLike,
_signature2: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
homeDomainHash(overrides?: CallOverrides): Promise<PopulatedTransaction>;
localDomain(overrides?: CallOverrides): Promise<PopulatedTransaction>;
setUpdater(
_updater: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
state(overrides?: CallOverrides): Promise<PopulatedTransaction>;
testIsUpdaterSignature(
_oldRoot: BytesLike,
_newRoot: BytesLike,
_signature: BytesLike,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
updater(overrides?: CallOverrides): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,788 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
Overrides,
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 TestGovernanceRouterInterface extends ethers.utils.Interface {
functions: {
"VERSION()": FunctionFragment;
"callLocal(tuple[])": FunctionFragment;
"callRemote(uint32,tuple[])": FunctionFragment;
"containsDomain(uint32)": FunctionFragment;
"domains(uint256)": FunctionFragment;
"exitRecovery()": FunctionFragment;
"governor()": FunctionFragment;
"governorDomain()": FunctionFragment;
"handle(uint32,bytes32,bytes)": FunctionFragment;
"inRecovery()": FunctionFragment;
"initialize(address,address)": FunctionFragment;
"initiateRecoveryTimelock()": FunctionFragment;
"localDomain()": FunctionFragment;
"recoveryActiveAt()": FunctionFragment;
"recoveryManager()": FunctionFragment;
"recoveryTimelock()": FunctionFragment;
"routers(uint32)": FunctionFragment;
"setRouter(uint32,bytes32)": FunctionFragment;
"setRouterLocal(uint32,bytes32)": FunctionFragment;
"setXAppConnectionManager(address)": FunctionFragment;
"testSetRouter(uint32,bytes32)": FunctionFragment;
"transferGovernor(uint32,address)": FunctionFragment;
"transferRecoveryManager(address)": FunctionFragment;
"xAppConnectionManager()": FunctionFragment;
};
encodeFunctionData(functionFragment: "VERSION", values?: undefined): string;
encodeFunctionData(
functionFragment: "callLocal",
values: [{ to: BytesLike; data: BytesLike }[]]
): string;
encodeFunctionData(
functionFragment: "callRemote",
values: [BigNumberish, { to: BytesLike; data: BytesLike }[]]
): string;
encodeFunctionData(
functionFragment: "containsDomain",
values: [BigNumberish]
): string;
encodeFunctionData(
functionFragment: "domains",
values: [BigNumberish]
): string;
encodeFunctionData(
functionFragment: "exitRecovery",
values?: undefined
): string;
encodeFunctionData(functionFragment: "governor", values?: undefined): string;
encodeFunctionData(
functionFragment: "governorDomain",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "handle",
values: [BigNumberish, BytesLike, BytesLike]
): string;
encodeFunctionData(
functionFragment: "inRecovery",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "initialize",
values: [string, string]
): string;
encodeFunctionData(
functionFragment: "initiateRecoveryTimelock",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "localDomain",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "recoveryActiveAt",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "recoveryManager",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "recoveryTimelock",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "routers",
values: [BigNumberish]
): string;
encodeFunctionData(
functionFragment: "setRouter",
values: [BigNumberish, BytesLike]
): string;
encodeFunctionData(
functionFragment: "setRouterLocal",
values: [BigNumberish, BytesLike]
): string;
encodeFunctionData(
functionFragment: "setXAppConnectionManager",
values: [string]
): string;
encodeFunctionData(
functionFragment: "testSetRouter",
values: [BigNumberish, BytesLike]
): string;
encodeFunctionData(
functionFragment: "transferGovernor",
values: [BigNumberish, string]
): string;
encodeFunctionData(
functionFragment: "transferRecoveryManager",
values: [string]
): string;
encodeFunctionData(
functionFragment: "xAppConnectionManager",
values?: undefined
): string;
decodeFunctionResult(functionFragment: "VERSION", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "callLocal", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "callRemote", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "containsDomain",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "domains", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "exitRecovery",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "governor", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "governorDomain",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "handle", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "inRecovery", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "initiateRecoveryTimelock",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "localDomain",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "recoveryActiveAt",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "recoveryManager",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "recoveryTimelock",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "routers", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "setRouter", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "setRouterLocal",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "setXAppConnectionManager",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "testSetRouter",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "transferGovernor",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "transferRecoveryManager",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "xAppConnectionManager",
data: BytesLike
): Result;
events: {
"ExitRecovery(address)": EventFragment;
"InitiateRecovery(address,uint256)": EventFragment;
"SetRouter(uint32,bytes32,bytes32)": EventFragment;
"TransferGovernor(uint32,uint32,address,address)": EventFragment;
"TransferRecoveryManager(address,address)": EventFragment;
};
getEvent(nameOrSignatureOrTopic: "ExitRecovery"): EventFragment;
getEvent(nameOrSignatureOrTopic: "InitiateRecovery"): EventFragment;
getEvent(nameOrSignatureOrTopic: "SetRouter"): EventFragment;
getEvent(nameOrSignatureOrTopic: "TransferGovernor"): EventFragment;
getEvent(nameOrSignatureOrTopic: "TransferRecoveryManager"): EventFragment;
}
export class TestGovernanceRouter extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: TestGovernanceRouterInterface;
functions: {
VERSION(overrides?: CallOverrides): Promise<[number]>;
callLocal(
_calls: { to: BytesLike; data: BytesLike }[],
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
callRemote(
_destination: BigNumberish,
_calls: { to: BytesLike; data: BytesLike }[],
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
containsDomain(
_domain: BigNumberish,
overrides?: CallOverrides
): Promise<[boolean]>;
domains(arg0: BigNumberish, overrides?: CallOverrides): Promise<[number]>;
exitRecovery(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
governor(overrides?: CallOverrides): Promise<[string]>;
governorDomain(overrides?: CallOverrides): Promise<[number]>;
handle(
_origin: BigNumberish,
_sender: BytesLike,
_message: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
inRecovery(overrides?: CallOverrides): Promise<[boolean]>;
initialize(
_xAppConnectionManager: string,
_recoveryManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
initiateRecoveryTimelock(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
localDomain(overrides?: CallOverrides): Promise<[number]>;
recoveryActiveAt(overrides?: CallOverrides): Promise<[BigNumber]>;
recoveryManager(overrides?: CallOverrides): Promise<[string]>;
recoveryTimelock(overrides?: CallOverrides): Promise<[BigNumber]>;
routers(arg0: BigNumberish, overrides?: CallOverrides): Promise<[string]>;
setRouter(
_domain: BigNumberish,
_router: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
setRouterLocal(
_domain: BigNumberish,
_router: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
setXAppConnectionManager(
_xAppConnectionManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
testSetRouter(
_domain: BigNumberish,
_router: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
transferGovernor(
_newDomain: BigNumberish,
_newGovernor: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
transferRecoveryManager(
_newRecoveryManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
xAppConnectionManager(overrides?: CallOverrides): Promise<[string]>;
};
VERSION(overrides?: CallOverrides): Promise<number>;
callLocal(
_calls: { to: BytesLike; data: BytesLike }[],
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
callRemote(
_destination: BigNumberish,
_calls: { to: BytesLike; data: BytesLike }[],
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
containsDomain(
_domain: BigNumberish,
overrides?: CallOverrides
): Promise<boolean>;
domains(arg0: BigNumberish, overrides?: CallOverrides): Promise<number>;
exitRecovery(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
governor(overrides?: CallOverrides): Promise<string>;
governorDomain(overrides?: CallOverrides): Promise<number>;
handle(
_origin: BigNumberish,
_sender: BytesLike,
_message: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
inRecovery(overrides?: CallOverrides): Promise<boolean>;
initialize(
_xAppConnectionManager: string,
_recoveryManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
initiateRecoveryTimelock(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
localDomain(overrides?: CallOverrides): Promise<number>;
recoveryActiveAt(overrides?: CallOverrides): Promise<BigNumber>;
recoveryManager(overrides?: CallOverrides): Promise<string>;
recoveryTimelock(overrides?: CallOverrides): Promise<BigNumber>;
routers(arg0: BigNumberish, overrides?: CallOverrides): Promise<string>;
setRouter(
_domain: BigNumberish,
_router: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
setRouterLocal(
_domain: BigNumberish,
_router: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
setXAppConnectionManager(
_xAppConnectionManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
testSetRouter(
_domain: BigNumberish,
_router: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
transferGovernor(
_newDomain: BigNumberish,
_newGovernor: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
transferRecoveryManager(
_newRecoveryManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
xAppConnectionManager(overrides?: CallOverrides): Promise<string>;
callStatic: {
VERSION(overrides?: CallOverrides): Promise<number>;
callLocal(
_calls: { to: BytesLike; data: BytesLike }[],
overrides?: CallOverrides
): Promise<void>;
callRemote(
_destination: BigNumberish,
_calls: { to: BytesLike; data: BytesLike }[],
overrides?: CallOverrides
): Promise<void>;
containsDomain(
_domain: BigNumberish,
overrides?: CallOverrides
): Promise<boolean>;
domains(arg0: BigNumberish, overrides?: CallOverrides): Promise<number>;
exitRecovery(overrides?: CallOverrides): Promise<void>;
governor(overrides?: CallOverrides): Promise<string>;
governorDomain(overrides?: CallOverrides): Promise<number>;
handle(
_origin: BigNumberish,
_sender: BytesLike,
_message: BytesLike,
overrides?: CallOverrides
): Promise<void>;
inRecovery(overrides?: CallOverrides): Promise<boolean>;
initialize(
_xAppConnectionManager: string,
_recoveryManager: string,
overrides?: CallOverrides
): Promise<void>;
initiateRecoveryTimelock(overrides?: CallOverrides): Promise<void>;
localDomain(overrides?: CallOverrides): Promise<number>;
recoveryActiveAt(overrides?: CallOverrides): Promise<BigNumber>;
recoveryManager(overrides?: CallOverrides): Promise<string>;
recoveryTimelock(overrides?: CallOverrides): Promise<BigNumber>;
routers(arg0: BigNumberish, overrides?: CallOverrides): Promise<string>;
setRouter(
_domain: BigNumberish,
_router: BytesLike,
overrides?: CallOverrides
): Promise<void>;
setRouterLocal(
_domain: BigNumberish,
_router: BytesLike,
overrides?: CallOverrides
): Promise<void>;
setXAppConnectionManager(
_xAppConnectionManager: string,
overrides?: CallOverrides
): Promise<void>;
testSetRouter(
_domain: BigNumberish,
_router: BytesLike,
overrides?: CallOverrides
): Promise<void>;
transferGovernor(
_newDomain: BigNumberish,
_newGovernor: string,
overrides?: CallOverrides
): Promise<void>;
transferRecoveryManager(
_newRecoveryManager: string,
overrides?: CallOverrides
): Promise<void>;
xAppConnectionManager(overrides?: CallOverrides): Promise<string>;
};
filters: {
ExitRecovery(
recoveryManager?: null
): TypedEventFilter<[string], { recoveryManager: string }>;
InitiateRecovery(
recoveryManager?: string | null,
recoveryActiveAt?: null
): TypedEventFilter<
[string, BigNumber],
{ recoveryManager: string; recoveryActiveAt: BigNumber }
>;
SetRouter(
domain?: BigNumberish | null,
previousRouter?: null,
newRouter?: null
): TypedEventFilter<
[number, string, string],
{ domain: number; previousRouter: string; newRouter: string }
>;
TransferGovernor(
previousGovernorDomain?: null,
newGovernorDomain?: null,
previousGovernor?: string | null,
newGovernor?: string | null
): TypedEventFilter<
[number, number, string, string],
{
previousGovernorDomain: number;
newGovernorDomain: number;
previousGovernor: string;
newGovernor: string;
}
>;
TransferRecoveryManager(
previousRecoveryManager?: string | null,
newRecoveryManager?: string | null
): TypedEventFilter<
[string, string],
{ previousRecoveryManager: string; newRecoveryManager: string }
>;
};
estimateGas: {
VERSION(overrides?: CallOverrides): Promise<BigNumber>;
callLocal(
_calls: { to: BytesLike; data: BytesLike }[],
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
callRemote(
_destination: BigNumberish,
_calls: { to: BytesLike; data: BytesLike }[],
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
containsDomain(
_domain: BigNumberish,
overrides?: CallOverrides
): Promise<BigNumber>;
domains(arg0: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
exitRecovery(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
governor(overrides?: CallOverrides): Promise<BigNumber>;
governorDomain(overrides?: CallOverrides): Promise<BigNumber>;
handle(
_origin: BigNumberish,
_sender: BytesLike,
_message: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
inRecovery(overrides?: CallOverrides): Promise<BigNumber>;
initialize(
_xAppConnectionManager: string,
_recoveryManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
initiateRecoveryTimelock(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
localDomain(overrides?: CallOverrides): Promise<BigNumber>;
recoveryActiveAt(overrides?: CallOverrides): Promise<BigNumber>;
recoveryManager(overrides?: CallOverrides): Promise<BigNumber>;
recoveryTimelock(overrides?: CallOverrides): Promise<BigNumber>;
routers(arg0: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
setRouter(
_domain: BigNumberish,
_router: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
setRouterLocal(
_domain: BigNumberish,
_router: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
setXAppConnectionManager(
_xAppConnectionManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
testSetRouter(
_domain: BigNumberish,
_router: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
transferGovernor(
_newDomain: BigNumberish,
_newGovernor: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
transferRecoveryManager(
_newRecoveryManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
xAppConnectionManager(overrides?: CallOverrides): Promise<BigNumber>;
};
populateTransaction: {
VERSION(overrides?: CallOverrides): Promise<PopulatedTransaction>;
callLocal(
_calls: { to: BytesLike; data: BytesLike }[],
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
callRemote(
_destination: BigNumberish,
_calls: { to: BytesLike; data: BytesLike }[],
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
containsDomain(
_domain: BigNumberish,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
domains(
arg0: BigNumberish,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
exitRecovery(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
governor(overrides?: CallOverrides): Promise<PopulatedTransaction>;
governorDomain(overrides?: CallOverrides): Promise<PopulatedTransaction>;
handle(
_origin: BigNumberish,
_sender: BytesLike,
_message: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
inRecovery(overrides?: CallOverrides): Promise<PopulatedTransaction>;
initialize(
_xAppConnectionManager: string,
_recoveryManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
initiateRecoveryTimelock(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
localDomain(overrides?: CallOverrides): Promise<PopulatedTransaction>;
recoveryActiveAt(overrides?: CallOverrides): Promise<PopulatedTransaction>;
recoveryManager(overrides?: CallOverrides): Promise<PopulatedTransaction>;
recoveryTimelock(overrides?: CallOverrides): Promise<PopulatedTransaction>;
routers(
arg0: BigNumberish,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
setRouter(
_domain: BigNumberish,
_router: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
setRouterLocal(
_domain: BigNumberish,
_router: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
setXAppConnectionManager(
_xAppConnectionManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
testSetRouter(
_domain: BigNumberish,
_router: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
transferGovernor(
_newDomain: BigNumberish,
_newGovernor: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
transferRecoveryManager(
_newRecoveryManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
xAppConnectionManager(
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,859 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
Overrides,
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 TestHomeInterface extends ethers.utils.Interface {
functions: {
"MAX_MESSAGE_BODY_BYTES()": FunctionFragment;
"VERSION()": FunctionFragment;
"committedRoot()": FunctionFragment;
"count()": FunctionFragment;
"destinationAndNonce(uint32,uint32)": FunctionFragment;
"dispatch(uint32,bytes32,bytes)": FunctionFragment;
"doubleUpdate(bytes32,bytes32[2],bytes,bytes)": FunctionFragment;
"homeDomainHash()": FunctionFragment;
"improperUpdate(bytes32,bytes32,bytes)": FunctionFragment;
"initialize(address)": FunctionFragment;
"localDomain()": FunctionFragment;
"nonces(uint32)": FunctionFragment;
"owner()": FunctionFragment;
"queueContains(bytes32)": FunctionFragment;
"queueEnd()": FunctionFragment;
"queueLength()": FunctionFragment;
"renounceOwnership()": FunctionFragment;
"root()": FunctionFragment;
"setFailed()": FunctionFragment;
"setUpdater(address)": FunctionFragment;
"setUpdaterManager(address)": FunctionFragment;
"state()": FunctionFragment;
"suggestUpdate()": FunctionFragment;
"transferOwnership(address)": FunctionFragment;
"tree()": FunctionFragment;
"update(bytes32,bytes32,bytes)": FunctionFragment;
"updater()": FunctionFragment;
"updaterManager()": FunctionFragment;
};
encodeFunctionData(
functionFragment: "MAX_MESSAGE_BODY_BYTES",
values?: undefined
): string;
encodeFunctionData(functionFragment: "VERSION", values?: undefined): string;
encodeFunctionData(
functionFragment: "committedRoot",
values?: undefined
): string;
encodeFunctionData(functionFragment: "count", values?: undefined): string;
encodeFunctionData(
functionFragment: "destinationAndNonce",
values: [BigNumberish, BigNumberish]
): string;
encodeFunctionData(
functionFragment: "dispatch",
values: [BigNumberish, BytesLike, BytesLike]
): string;
encodeFunctionData(
functionFragment: "doubleUpdate",
values: [BytesLike, [BytesLike, BytesLike], BytesLike, BytesLike]
): string;
encodeFunctionData(
functionFragment: "homeDomainHash",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "improperUpdate",
values: [BytesLike, BytesLike, BytesLike]
): string;
encodeFunctionData(functionFragment: "initialize", values: [string]): string;
encodeFunctionData(
functionFragment: "localDomain",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "nonces",
values: [BigNumberish]
): string;
encodeFunctionData(functionFragment: "owner", values?: undefined): string;
encodeFunctionData(
functionFragment: "queueContains",
values: [BytesLike]
): string;
encodeFunctionData(functionFragment: "queueEnd", values?: undefined): string;
encodeFunctionData(
functionFragment: "queueLength",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "renounceOwnership",
values?: undefined
): string;
encodeFunctionData(functionFragment: "root", values?: undefined): string;
encodeFunctionData(functionFragment: "setFailed", values?: undefined): string;
encodeFunctionData(functionFragment: "setUpdater", values: [string]): string;
encodeFunctionData(
functionFragment: "setUpdaterManager",
values: [string]
): string;
encodeFunctionData(functionFragment: "state", values?: undefined): string;
encodeFunctionData(
functionFragment: "suggestUpdate",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "transferOwnership",
values: [string]
): string;
encodeFunctionData(functionFragment: "tree", values?: undefined): string;
encodeFunctionData(
functionFragment: "update",
values: [BytesLike, BytesLike, BytesLike]
): string;
encodeFunctionData(functionFragment: "updater", values?: undefined): string;
encodeFunctionData(
functionFragment: "updaterManager",
values?: undefined
): string;
decodeFunctionResult(
functionFragment: "MAX_MESSAGE_BODY_BYTES",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "VERSION", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "committedRoot",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "count", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "destinationAndNonce",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "dispatch", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "doubleUpdate",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "homeDomainHash",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "improperUpdate",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "localDomain",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "queueContains",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "queueEnd", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "queueLength",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "renounceOwnership",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "root", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "setFailed", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "setUpdater", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "setUpdaterManager",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "state", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "suggestUpdate",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "transferOwnership",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "tree", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "update", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "updater", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "updaterManager",
data: BytesLike
): Result;
events: {
"Dispatch(bytes32,uint256,uint64,bytes32,bytes)": EventFragment;
"DoubleUpdate(bytes32,bytes32[2],bytes,bytes)": EventFragment;
"ImproperUpdate(bytes32,bytes32,bytes)": EventFragment;
"NewUpdater(address)": EventFragment;
"NewUpdaterManager(address)": EventFragment;
"OwnershipTransferred(address,address)": EventFragment;
"Update(uint32,bytes32,bytes32,bytes)": EventFragment;
"UpdaterSlashed(address,address)": EventFragment;
};
getEvent(nameOrSignatureOrTopic: "Dispatch"): EventFragment;
getEvent(nameOrSignatureOrTopic: "DoubleUpdate"): EventFragment;
getEvent(nameOrSignatureOrTopic: "ImproperUpdate"): EventFragment;
getEvent(nameOrSignatureOrTopic: "NewUpdater"): EventFragment;
getEvent(nameOrSignatureOrTopic: "NewUpdaterManager"): EventFragment;
getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
getEvent(nameOrSignatureOrTopic: "Update"): EventFragment;
getEvent(nameOrSignatureOrTopic: "UpdaterSlashed"): EventFragment;
}
export class TestHome extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: TestHomeInterface;
functions: {
MAX_MESSAGE_BODY_BYTES(overrides?: CallOverrides): Promise<[BigNumber]>;
VERSION(overrides?: CallOverrides): Promise<[number]>;
committedRoot(overrides?: CallOverrides): Promise<[string]>;
count(overrides?: CallOverrides): Promise<[BigNumber]>;
destinationAndNonce(
_destination: BigNumberish,
_nonce: BigNumberish,
overrides?: CallOverrides
): Promise<[BigNumber]>;
dispatch(
_destinationDomain: BigNumberish,
_recipientAddress: BytesLike,
_messageBody: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
doubleUpdate(
_oldRoot: BytesLike,
_newRoot: [BytesLike, BytesLike],
_signature: BytesLike,
_signature2: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
homeDomainHash(overrides?: CallOverrides): Promise<[string]>;
improperUpdate(
_oldRoot: BytesLike,
_newRoot: BytesLike,
_signature: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
initialize(
_updaterManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
localDomain(overrides?: CallOverrides): Promise<[number]>;
nonces(arg0: BigNumberish, overrides?: CallOverrides): Promise<[number]>;
owner(overrides?: CallOverrides): Promise<[string]>;
queueContains(
_item: BytesLike,
overrides?: CallOverrides
): Promise<[boolean]>;
queueEnd(overrides?: CallOverrides): Promise<[string]>;
queueLength(overrides?: CallOverrides): Promise<[BigNumber]>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
root(overrides?: CallOverrides): Promise<[string]>;
setFailed(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
setUpdater(
_updater: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
setUpdaterManager(
_updaterManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
state(overrides?: CallOverrides): Promise<[number]>;
suggestUpdate(
overrides?: CallOverrides
): Promise<[string, string] & { _committedRoot: string; _new: string }>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
tree(
overrides?: CallOverrides
): Promise<[BigNumber] & { count: BigNumber }>;
update(
_committedRoot: BytesLike,
_newRoot: BytesLike,
_signature: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
updater(overrides?: CallOverrides): Promise<[string]>;
updaterManager(overrides?: CallOverrides): Promise<[string]>;
};
MAX_MESSAGE_BODY_BYTES(overrides?: CallOverrides): Promise<BigNumber>;
VERSION(overrides?: CallOverrides): Promise<number>;
committedRoot(overrides?: CallOverrides): Promise<string>;
count(overrides?: CallOverrides): Promise<BigNumber>;
destinationAndNonce(
_destination: BigNumberish,
_nonce: BigNumberish,
overrides?: CallOverrides
): Promise<BigNumber>;
dispatch(
_destinationDomain: BigNumberish,
_recipientAddress: BytesLike,
_messageBody: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
doubleUpdate(
_oldRoot: BytesLike,
_newRoot: [BytesLike, BytesLike],
_signature: BytesLike,
_signature2: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
homeDomainHash(overrides?: CallOverrides): Promise<string>;
improperUpdate(
_oldRoot: BytesLike,
_newRoot: BytesLike,
_signature: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
initialize(
_updaterManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
localDomain(overrides?: CallOverrides): Promise<number>;
nonces(arg0: BigNumberish, overrides?: CallOverrides): Promise<number>;
owner(overrides?: CallOverrides): Promise<string>;
queueContains(_item: BytesLike, overrides?: CallOverrides): Promise<boolean>;
queueEnd(overrides?: CallOverrides): Promise<string>;
queueLength(overrides?: CallOverrides): Promise<BigNumber>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
root(overrides?: CallOverrides): Promise<string>;
setFailed(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
setUpdater(
_updater: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
setUpdaterManager(
_updaterManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
state(overrides?: CallOverrides): Promise<number>;
suggestUpdate(
overrides?: CallOverrides
): Promise<[string, string] & { _committedRoot: string; _new: string }>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
tree(overrides?: CallOverrides): Promise<BigNumber>;
update(
_committedRoot: BytesLike,
_newRoot: BytesLike,
_signature: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
updater(overrides?: CallOverrides): Promise<string>;
updaterManager(overrides?: CallOverrides): Promise<string>;
callStatic: {
MAX_MESSAGE_BODY_BYTES(overrides?: CallOverrides): Promise<BigNumber>;
VERSION(overrides?: CallOverrides): Promise<number>;
committedRoot(overrides?: CallOverrides): Promise<string>;
count(overrides?: CallOverrides): Promise<BigNumber>;
destinationAndNonce(
_destination: BigNumberish,
_nonce: BigNumberish,
overrides?: CallOverrides
): Promise<BigNumber>;
dispatch(
_destinationDomain: BigNumberish,
_recipientAddress: BytesLike,
_messageBody: BytesLike,
overrides?: CallOverrides
): Promise<void>;
doubleUpdate(
_oldRoot: BytesLike,
_newRoot: [BytesLike, BytesLike],
_signature: BytesLike,
_signature2: BytesLike,
overrides?: CallOverrides
): Promise<void>;
homeDomainHash(overrides?: CallOverrides): Promise<string>;
improperUpdate(
_oldRoot: BytesLike,
_newRoot: BytesLike,
_signature: BytesLike,
overrides?: CallOverrides
): Promise<boolean>;
initialize(
_updaterManager: string,
overrides?: CallOverrides
): Promise<void>;
localDomain(overrides?: CallOverrides): Promise<number>;
nonces(arg0: BigNumberish, overrides?: CallOverrides): Promise<number>;
owner(overrides?: CallOverrides): Promise<string>;
queueContains(
_item: BytesLike,
overrides?: CallOverrides
): Promise<boolean>;
queueEnd(overrides?: CallOverrides): Promise<string>;
queueLength(overrides?: CallOverrides): Promise<BigNumber>;
renounceOwnership(overrides?: CallOverrides): Promise<void>;
root(overrides?: CallOverrides): Promise<string>;
setFailed(overrides?: CallOverrides): Promise<void>;
setUpdater(_updater: string, overrides?: CallOverrides): Promise<void>;
setUpdaterManager(
_updaterManager: string,
overrides?: CallOverrides
): Promise<void>;
state(overrides?: CallOverrides): Promise<number>;
suggestUpdate(
overrides?: CallOverrides
): Promise<[string, string] & { _committedRoot: string; _new: string }>;
transferOwnership(
newOwner: string,
overrides?: CallOverrides
): Promise<void>;
tree(overrides?: CallOverrides): Promise<BigNumber>;
update(
_committedRoot: BytesLike,
_newRoot: BytesLike,
_signature: BytesLike,
overrides?: CallOverrides
): Promise<void>;
updater(overrides?: CallOverrides): Promise<string>;
updaterManager(overrides?: CallOverrides): Promise<string>;
};
filters: {
Dispatch(
messageHash?: BytesLike | null,
leafIndex?: BigNumberish | null,
destinationAndNonce?: BigNumberish | null,
committedRoot?: null,
message?: null
): TypedEventFilter<
[string, BigNumber, BigNumber, string, string],
{
messageHash: string;
leafIndex: BigNumber;
destinationAndNonce: BigNumber;
committedRoot: string;
message: string;
}
>;
DoubleUpdate(
oldRoot?: null,
newRoot?: null,
signature?: null,
signature2?: null
): TypedEventFilter<
[string, [string, string], string, string],
{
oldRoot: string;
newRoot: [string, string];
signature: string;
signature2: string;
}
>;
ImproperUpdate(
oldRoot?: null,
newRoot?: null,
signature?: null
): TypedEventFilter<
[string, string, string],
{ oldRoot: string; newRoot: string; signature: string }
>;
NewUpdater(updater?: null): TypedEventFilter<[string], { updater: string }>;
NewUpdaterManager(
updaterManager?: null
): TypedEventFilter<[string], { updaterManager: string }>;
OwnershipTransferred(
previousOwner?: string | null,
newOwner?: string | null
): TypedEventFilter<
[string, string],
{ previousOwner: string; newOwner: string }
>;
Update(
homeDomain?: BigNumberish | null,
oldRoot?: BytesLike | null,
newRoot?: BytesLike | null,
signature?: null
): TypedEventFilter<
[number, string, string, string],
{
homeDomain: number;
oldRoot: string;
newRoot: string;
signature: string;
}
>;
UpdaterSlashed(
updater?: string | null,
reporter?: string | null
): TypedEventFilter<
[string, string],
{ updater: string; reporter: string }
>;
};
estimateGas: {
MAX_MESSAGE_BODY_BYTES(overrides?: CallOverrides): Promise<BigNumber>;
VERSION(overrides?: CallOverrides): Promise<BigNumber>;
committedRoot(overrides?: CallOverrides): Promise<BigNumber>;
count(overrides?: CallOverrides): Promise<BigNumber>;
destinationAndNonce(
_destination: BigNumberish,
_nonce: BigNumberish,
overrides?: CallOverrides
): Promise<BigNumber>;
dispatch(
_destinationDomain: BigNumberish,
_recipientAddress: BytesLike,
_messageBody: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
doubleUpdate(
_oldRoot: BytesLike,
_newRoot: [BytesLike, BytesLike],
_signature: BytesLike,
_signature2: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
homeDomainHash(overrides?: CallOverrides): Promise<BigNumber>;
improperUpdate(
_oldRoot: BytesLike,
_newRoot: BytesLike,
_signature: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
initialize(
_updaterManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
localDomain(overrides?: CallOverrides): Promise<BigNumber>;
nonces(arg0: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
owner(overrides?: CallOverrides): Promise<BigNumber>;
queueContains(
_item: BytesLike,
overrides?: CallOverrides
): Promise<BigNumber>;
queueEnd(overrides?: CallOverrides): Promise<BigNumber>;
queueLength(overrides?: CallOverrides): Promise<BigNumber>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
root(overrides?: CallOverrides): Promise<BigNumber>;
setFailed(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
setUpdater(
_updater: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
setUpdaterManager(
_updaterManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
state(overrides?: CallOverrides): Promise<BigNumber>;
suggestUpdate(overrides?: CallOverrides): Promise<BigNumber>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
tree(overrides?: CallOverrides): Promise<BigNumber>;
update(
_committedRoot: BytesLike,
_newRoot: BytesLike,
_signature: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
updater(overrides?: CallOverrides): Promise<BigNumber>;
updaterManager(overrides?: CallOverrides): Promise<BigNumber>;
};
populateTransaction: {
MAX_MESSAGE_BODY_BYTES(
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
VERSION(overrides?: CallOverrides): Promise<PopulatedTransaction>;
committedRoot(overrides?: CallOverrides): Promise<PopulatedTransaction>;
count(overrides?: CallOverrides): Promise<PopulatedTransaction>;
destinationAndNonce(
_destination: BigNumberish,
_nonce: BigNumberish,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
dispatch(
_destinationDomain: BigNumberish,
_recipientAddress: BytesLike,
_messageBody: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
doubleUpdate(
_oldRoot: BytesLike,
_newRoot: [BytesLike, BytesLike],
_signature: BytesLike,
_signature2: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
homeDomainHash(overrides?: CallOverrides): Promise<PopulatedTransaction>;
improperUpdate(
_oldRoot: BytesLike,
_newRoot: BytesLike,
_signature: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
initialize(
_updaterManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
localDomain(overrides?: CallOverrides): Promise<PopulatedTransaction>;
nonces(
arg0: BigNumberish,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
queueContains(
_item: BytesLike,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
queueEnd(overrides?: CallOverrides): Promise<PopulatedTransaction>;
queueLength(overrides?: CallOverrides): Promise<PopulatedTransaction>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
root(overrides?: CallOverrides): Promise<PopulatedTransaction>;
setFailed(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
setUpdater(
_updater: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
setUpdaterManager(
_updaterManager: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
state(overrides?: CallOverrides): Promise<PopulatedTransaction>;
suggestUpdate(overrides?: CallOverrides): Promise<PopulatedTransaction>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
tree(overrides?: CallOverrides): Promise<PopulatedTransaction>;
update(
_committedRoot: BytesLike,
_newRoot: BytesLike,
_signature: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
updater(overrides?: CallOverrides): Promise<PopulatedTransaction>;
updaterManager(overrides?: CallOverrides): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,392 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
Overrides,
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 TestMerkleInterface extends ethers.utils.Interface {
functions: {
"branchRoot(bytes32,bytes32[32],uint256)": FunctionFragment;
"count()": FunctionFragment;
"insert(bytes32)": FunctionFragment;
"root()": FunctionFragment;
"tree()": FunctionFragment;
};
encodeFunctionData(
functionFragment: "branchRoot",
values: [
BytesLike,
[
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike
],
BigNumberish
]
): string;
encodeFunctionData(functionFragment: "count", values?: undefined): string;
encodeFunctionData(functionFragment: "insert", values: [BytesLike]): string;
encodeFunctionData(functionFragment: "root", values?: undefined): string;
encodeFunctionData(functionFragment: "tree", values?: undefined): string;
decodeFunctionResult(functionFragment: "branchRoot", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "count", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "insert", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "root", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "tree", data: BytesLike): Result;
events: {};
}
export class TestMerkle extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: TestMerkleInterface;
functions: {
branchRoot(
_leaf: BytesLike,
_proof: [
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike
],
_index: BigNumberish,
overrides?: CallOverrides
): Promise<[string] & { _node: string }>;
count(overrides?: CallOverrides): Promise<[BigNumber]>;
insert(
_node: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
root(overrides?: CallOverrides): Promise<[string]>;
tree(
overrides?: CallOverrides
): Promise<[BigNumber] & { count: BigNumber }>;
};
branchRoot(
_leaf: BytesLike,
_proof: [
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike
],
_index: BigNumberish,
overrides?: CallOverrides
): Promise<string>;
count(overrides?: CallOverrides): Promise<BigNumber>;
insert(
_node: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
root(overrides?: CallOverrides): Promise<string>;
tree(overrides?: CallOverrides): Promise<BigNumber>;
callStatic: {
branchRoot(
_leaf: BytesLike,
_proof: [
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike
],
_index: BigNumberish,
overrides?: CallOverrides
): Promise<string>;
count(overrides?: CallOverrides): Promise<BigNumber>;
insert(_node: BytesLike, overrides?: CallOverrides): Promise<void>;
root(overrides?: CallOverrides): Promise<string>;
tree(overrides?: CallOverrides): Promise<BigNumber>;
};
filters: {};
estimateGas: {
branchRoot(
_leaf: BytesLike,
_proof: [
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike
],
_index: BigNumberish,
overrides?: CallOverrides
): Promise<BigNumber>;
count(overrides?: CallOverrides): Promise<BigNumber>;
insert(
_node: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
root(overrides?: CallOverrides): Promise<BigNumber>;
tree(overrides?: CallOverrides): Promise<BigNumber>;
};
populateTransaction: {
branchRoot(
_leaf: BytesLike,
_proof: [
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike,
BytesLike
],
_index: BigNumberish,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
count(overrides?: CallOverrides): Promise<PopulatedTransaction>;
insert(
_node: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
root(overrides?: CallOverrides): Promise<PopulatedTransaction>;
tree(overrides?: CallOverrides): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,252 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
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 TestMessageInterface extends ethers.utils.Interface {
functions: {
"body(bytes)": FunctionFragment;
"destination(bytes)": FunctionFragment;
"leaf(bytes)": FunctionFragment;
"nonce(bytes)": FunctionFragment;
"origin(bytes)": FunctionFragment;
"recipient(bytes)": FunctionFragment;
"recipientAddress(bytes)": FunctionFragment;
"sender(bytes)": FunctionFragment;
};
encodeFunctionData(functionFragment: "body", values: [BytesLike]): string;
encodeFunctionData(
functionFragment: "destination",
values: [BytesLike]
): string;
encodeFunctionData(functionFragment: "leaf", values: [BytesLike]): string;
encodeFunctionData(functionFragment: "nonce", values: [BytesLike]): string;
encodeFunctionData(functionFragment: "origin", values: [BytesLike]): string;
encodeFunctionData(
functionFragment: "recipient",
values: [BytesLike]
): string;
encodeFunctionData(
functionFragment: "recipientAddress",
values: [BytesLike]
): string;
encodeFunctionData(functionFragment: "sender", values: [BytesLike]): string;
decodeFunctionResult(functionFragment: "body", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "destination",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "leaf", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "nonce", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "origin", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "recipient", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "recipientAddress",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "sender", data: BytesLike): Result;
events: {};
}
export class TestMessage extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: TestMessageInterface;
functions: {
body(_message: BytesLike, overrides?: CallOverrides): Promise<[string]>;
destination(
_message: BytesLike,
overrides?: CallOverrides
): Promise<[number]>;
leaf(_message: BytesLike, overrides?: CallOverrides): Promise<[string]>;
nonce(_message: BytesLike, overrides?: CallOverrides): Promise<[number]>;
origin(_message: BytesLike, overrides?: CallOverrides): Promise<[number]>;
recipient(
_message: BytesLike,
overrides?: CallOverrides
): Promise<[string]>;
recipientAddress(
_message: BytesLike,
overrides?: CallOverrides
): Promise<[string]>;
sender(_message: BytesLike, overrides?: CallOverrides): Promise<[string]>;
};
body(_message: BytesLike, overrides?: CallOverrides): Promise<string>;
destination(_message: BytesLike, overrides?: CallOverrides): Promise<number>;
leaf(_message: BytesLike, overrides?: CallOverrides): Promise<string>;
nonce(_message: BytesLike, overrides?: CallOverrides): Promise<number>;
origin(_message: BytesLike, overrides?: CallOverrides): Promise<number>;
recipient(_message: BytesLike, overrides?: CallOverrides): Promise<string>;
recipientAddress(
_message: BytesLike,
overrides?: CallOverrides
): Promise<string>;
sender(_message: BytesLike, overrides?: CallOverrides): Promise<string>;
callStatic: {
body(_message: BytesLike, overrides?: CallOverrides): Promise<string>;
destination(
_message: BytesLike,
overrides?: CallOverrides
): Promise<number>;
leaf(_message: BytesLike, overrides?: CallOverrides): Promise<string>;
nonce(_message: BytesLike, overrides?: CallOverrides): Promise<number>;
origin(_message: BytesLike, overrides?: CallOverrides): Promise<number>;
recipient(_message: BytesLike, overrides?: CallOverrides): Promise<string>;
recipientAddress(
_message: BytesLike,
overrides?: CallOverrides
): Promise<string>;
sender(_message: BytesLike, overrides?: CallOverrides): Promise<string>;
};
filters: {};
estimateGas: {
body(_message: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
destination(
_message: BytesLike,
overrides?: CallOverrides
): Promise<BigNumber>;
leaf(_message: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
nonce(_message: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
origin(_message: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
recipient(
_message: BytesLike,
overrides?: CallOverrides
): Promise<BigNumber>;
recipientAddress(
_message: BytesLike,
overrides?: CallOverrides
): Promise<BigNumber>;
sender(_message: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
};
populateTransaction: {
body(
_message: BytesLike,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
destination(
_message: BytesLike,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
leaf(
_message: BytesLike,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
nonce(
_message: BytesLike,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
origin(
_message: BytesLike,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
recipient(
_message: BytesLike,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
recipientAddress(
_message: BytesLike,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
sender(
_message: BytesLike,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,363 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
Overrides,
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 TestQueueInterface extends ethers.utils.Interface {
functions: {
"contains(bytes32)": FunctionFragment;
"dequeue()": FunctionFragment;
"dequeueMany(uint256)": FunctionFragment;
"drain()": FunctionFragment;
"enqueue(bytes32)": FunctionFragment;
"enqueueMany(bytes32[])": FunctionFragment;
"initializeAgain()": FunctionFragment;
"lastItem()": FunctionFragment;
"length()": FunctionFragment;
"peek()": FunctionFragment;
"queueContains(bytes32)": FunctionFragment;
"queueEnd()": FunctionFragment;
"queueLength()": FunctionFragment;
};
encodeFunctionData(functionFragment: "contains", values: [BytesLike]): string;
encodeFunctionData(functionFragment: "dequeue", values?: undefined): string;
encodeFunctionData(
functionFragment: "dequeueMany",
values: [BigNumberish]
): string;
encodeFunctionData(functionFragment: "drain", values?: undefined): string;
encodeFunctionData(functionFragment: "enqueue", values: [BytesLike]): string;
encodeFunctionData(
functionFragment: "enqueueMany",
values: [BytesLike[]]
): string;
encodeFunctionData(
functionFragment: "initializeAgain",
values?: undefined
): string;
encodeFunctionData(functionFragment: "lastItem", values?: undefined): string;
encodeFunctionData(functionFragment: "length", values?: undefined): string;
encodeFunctionData(functionFragment: "peek", values?: undefined): string;
encodeFunctionData(
functionFragment: "queueContains",
values: [BytesLike]
): string;
encodeFunctionData(functionFragment: "queueEnd", values?: undefined): string;
encodeFunctionData(
functionFragment: "queueLength",
values?: undefined
): string;
decodeFunctionResult(functionFragment: "contains", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "dequeue", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "dequeueMany",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "drain", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "enqueue", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "enqueueMany",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "initializeAgain",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "lastItem", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "length", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "peek", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "queueContains",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "queueEnd", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "queueLength",
data: BytesLike
): Result;
events: {};
}
export class TestQueue extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: TestQueueInterface;
functions: {
contains(_item: BytesLike, overrides?: CallOverrides): Promise<[boolean]>;
dequeue(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
dequeueMany(
_number: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
drain(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
enqueue(
_item: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
enqueueMany(
_items: BytesLike[],
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
initializeAgain(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
lastItem(overrides?: CallOverrides): Promise<[string]>;
length(overrides?: CallOverrides): Promise<[BigNumber]>;
peek(overrides?: CallOverrides): Promise<[string] & { _item: string }>;
queueContains(
_item: BytesLike,
overrides?: CallOverrides
): Promise<[boolean]>;
queueEnd(overrides?: CallOverrides): Promise<[string]>;
queueLength(overrides?: CallOverrides): Promise<[BigNumber]>;
};
contains(_item: BytesLike, overrides?: CallOverrides): Promise<boolean>;
dequeue(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
dequeueMany(
_number: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
drain(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
enqueue(
_item: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
enqueueMany(
_items: BytesLike[],
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
initializeAgain(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
lastItem(overrides?: CallOverrides): Promise<string>;
length(overrides?: CallOverrides): Promise<BigNumber>;
peek(overrides?: CallOverrides): Promise<string>;
queueContains(_item: BytesLike, overrides?: CallOverrides): Promise<boolean>;
queueEnd(overrides?: CallOverrides): Promise<string>;
queueLength(overrides?: CallOverrides): Promise<BigNumber>;
callStatic: {
contains(_item: BytesLike, overrides?: CallOverrides): Promise<boolean>;
dequeue(overrides?: CallOverrides): Promise<string>;
dequeueMany(
_number: BigNumberish,
overrides?: CallOverrides
): Promise<string[]>;
drain(overrides?: CallOverrides): Promise<void>;
enqueue(_item: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
enqueueMany(
_items: BytesLike[],
overrides?: CallOverrides
): Promise<BigNumber>;
initializeAgain(overrides?: CallOverrides): Promise<void>;
lastItem(overrides?: CallOverrides): Promise<string>;
length(overrides?: CallOverrides): Promise<BigNumber>;
peek(overrides?: CallOverrides): Promise<string>;
queueContains(
_item: BytesLike,
overrides?: CallOverrides
): Promise<boolean>;
queueEnd(overrides?: CallOverrides): Promise<string>;
queueLength(overrides?: CallOverrides): Promise<BigNumber>;
};
filters: {};
estimateGas: {
contains(_item: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
dequeue(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
dequeueMany(
_number: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
drain(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
enqueue(
_item: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
enqueueMany(
_items: BytesLike[],
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
initializeAgain(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
lastItem(overrides?: CallOverrides): Promise<BigNumber>;
length(overrides?: CallOverrides): Promise<BigNumber>;
peek(overrides?: CallOverrides): Promise<BigNumber>;
queueContains(
_item: BytesLike,
overrides?: CallOverrides
): Promise<BigNumber>;
queueEnd(overrides?: CallOverrides): Promise<BigNumber>;
queueLength(overrides?: CallOverrides): Promise<BigNumber>;
};
populateTransaction: {
contains(
_item: BytesLike,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
dequeue(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
dequeueMany(
_number: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
drain(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
enqueue(
_item: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
enqueueMany(
_items: BytesLike[],
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
initializeAgain(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
lastItem(overrides?: CallOverrides): Promise<PopulatedTransaction>;
length(overrides?: CallOverrides): Promise<PopulatedTransaction>;
peek(overrides?: CallOverrides): Promise<PopulatedTransaction>;
queueContains(
_item: BytesLike,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
queueEnd(overrides?: CallOverrides): Promise<PopulatedTransaction>;
queueLength(overrides?: CallOverrides): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,206 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
Overrides,
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 TestRecipientInterface extends ethers.utils.Interface {
functions: {
"handle(uint32,bytes32,bytes)": FunctionFragment;
"message()": FunctionFragment;
"processCall(bool)": FunctionFragment;
"processed()": FunctionFragment;
"receiveString(string)": FunctionFragment;
};
encodeFunctionData(
functionFragment: "handle",
values: [BigNumberish, BytesLike, BytesLike]
): string;
encodeFunctionData(functionFragment: "message", values?: undefined): string;
encodeFunctionData(
functionFragment: "processCall",
values: [boolean]
): string;
encodeFunctionData(functionFragment: "processed", values?: undefined): string;
encodeFunctionData(
functionFragment: "receiveString",
values: [string]
): string;
decodeFunctionResult(functionFragment: "handle", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "message", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "processCall",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "processed", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "receiveString",
data: BytesLike
): Result;
events: {};
}
export class TestRecipient extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: TestRecipientInterface;
functions: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<[void]>;
message(overrides?: CallOverrides): Promise<[string]>;
processCall(
callProcessed: boolean,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
processed(overrides?: CallOverrides): Promise<[boolean]>;
receiveString(_str: string, overrides?: CallOverrides): Promise<[string]>;
};
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<void>;
message(overrides?: CallOverrides): Promise<string>;
processCall(
callProcessed: boolean,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
processed(overrides?: CallOverrides): Promise<boolean>;
receiveString(_str: string, overrides?: CallOverrides): Promise<string>;
callStatic: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<void>;
message(overrides?: CallOverrides): Promise<string>;
processCall(
callProcessed: boolean,
overrides?: CallOverrides
): Promise<void>;
processed(overrides?: CallOverrides): Promise<boolean>;
receiveString(_str: string, overrides?: CallOverrides): Promise<string>;
};
filters: {};
estimateGas: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<BigNumber>;
message(overrides?: CallOverrides): Promise<BigNumber>;
processCall(
callProcessed: boolean,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
processed(overrides?: CallOverrides): Promise<BigNumber>;
receiveString(_str: string, overrides?: CallOverrides): Promise<BigNumber>;
};
populateTransaction: {
handle(
arg0: BigNumberish,
arg1: BytesLike,
arg2: BytesLike,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
message(overrides?: CallOverrides): Promise<PopulatedTransaction>;
processCall(
callProcessed: boolean,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
processed(overrides?: CallOverrides): Promise<PopulatedTransaction>;
receiveString(
_str: string,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
};
}

File diff suppressed because it is too large Load Diff

@ -0,0 +1,575 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
Overrides,
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 TestXAppConnectionManagerInterface extends ethers.utils.Interface {
functions: {
"domainToReplica(uint32)": FunctionFragment;
"home()": FunctionFragment;
"isReplica(address)": FunctionFragment;
"localDomain()": FunctionFragment;
"owner()": FunctionFragment;
"ownerEnrollReplica(address,uint32)": FunctionFragment;
"ownerUnenrollReplica(address)": FunctionFragment;
"renounceOwnership()": FunctionFragment;
"replicaToDomain(address)": FunctionFragment;
"setHome(address)": FunctionFragment;
"setWatcherPermission(address,uint32,bool)": FunctionFragment;
"testRecoverWatcherFromSig(uint32,address,address,bytes)": FunctionFragment;
"transferOwnership(address)": FunctionFragment;
"unenrollReplica(uint32,bytes32,bytes)": FunctionFragment;
"watcherPermission(address,uint32)": FunctionFragment;
};
encodeFunctionData(
functionFragment: "domainToReplica",
values: [BigNumberish]
): string;
encodeFunctionData(functionFragment: "home", values?: undefined): string;
encodeFunctionData(functionFragment: "isReplica", values: [string]): string;
encodeFunctionData(
functionFragment: "localDomain",
values?: undefined
): string;
encodeFunctionData(functionFragment: "owner", values?: undefined): string;
encodeFunctionData(
functionFragment: "ownerEnrollReplica",
values: [string, BigNumberish]
): string;
encodeFunctionData(
functionFragment: "ownerUnenrollReplica",
values: [string]
): string;
encodeFunctionData(
functionFragment: "renounceOwnership",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "replicaToDomain",
values: [string]
): string;
encodeFunctionData(functionFragment: "setHome", values: [string]): string;
encodeFunctionData(
functionFragment: "setWatcherPermission",
values: [string, BigNumberish, boolean]
): string;
encodeFunctionData(
functionFragment: "testRecoverWatcherFromSig",
values: [BigNumberish, string, string, BytesLike]
): string;
encodeFunctionData(
functionFragment: "transferOwnership",
values: [string]
): string;
encodeFunctionData(
functionFragment: "unenrollReplica",
values: [BigNumberish, BytesLike, BytesLike]
): string;
encodeFunctionData(
functionFragment: "watcherPermission",
values: [string, BigNumberish]
): string;
decodeFunctionResult(
functionFragment: "domainToReplica",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "home", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "isReplica", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "localDomain",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "ownerEnrollReplica",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "ownerUnenrollReplica",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "renounceOwnership",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "replicaToDomain",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "setHome", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "setWatcherPermission",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "testRecoverWatcherFromSig",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "transferOwnership",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "unenrollReplica",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "watcherPermission",
data: BytesLike
): Result;
events: {
"OwnershipTransferred(address,address)": EventFragment;
"ReplicaEnrolled(uint32,address)": EventFragment;
"ReplicaUnenrolled(uint32,address)": EventFragment;
"WatcherPermissionSet(uint32,address,bool)": EventFragment;
};
getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
getEvent(nameOrSignatureOrTopic: "ReplicaEnrolled"): EventFragment;
getEvent(nameOrSignatureOrTopic: "ReplicaUnenrolled"): EventFragment;
getEvent(nameOrSignatureOrTopic: "WatcherPermissionSet"): EventFragment;
}
export class TestXAppConnectionManager extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: TestXAppConnectionManagerInterface;
functions: {
domainToReplica(
arg0: BigNumberish,
overrides?: CallOverrides
): Promise<[string]>;
home(overrides?: CallOverrides): Promise<[string]>;
isReplica(_replica: string, overrides?: CallOverrides): Promise<[boolean]>;
localDomain(overrides?: CallOverrides): Promise<[number]>;
owner(overrides?: CallOverrides): Promise<[string]>;
ownerEnrollReplica(
_replica: string,
_domain: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
ownerUnenrollReplica(
_replica: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
replicaToDomain(arg0: string, overrides?: CallOverrides): Promise<[number]>;
setHome(
_home: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
setWatcherPermission(
_watcher: string,
_domain: BigNumberish,
_access: boolean,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
testRecoverWatcherFromSig(
_domain: BigNumberish,
_replica: string,
_updater: string,
_signature: BytesLike,
overrides?: CallOverrides
): Promise<[string]>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
unenrollReplica(
_domain: BigNumberish,
_updater: BytesLike,
_signature: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
watcherPermission(
_watcher: string,
_domain: BigNumberish,
overrides?: CallOverrides
): Promise<[boolean]>;
};
domainToReplica(
arg0: BigNumberish,
overrides?: CallOverrides
): Promise<string>;
home(overrides?: CallOverrides): Promise<string>;
isReplica(_replica: string, overrides?: CallOverrides): Promise<boolean>;
localDomain(overrides?: CallOverrides): Promise<number>;
owner(overrides?: CallOverrides): Promise<string>;
ownerEnrollReplica(
_replica: string,
_domain: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
ownerUnenrollReplica(
_replica: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
replicaToDomain(arg0: string, overrides?: CallOverrides): Promise<number>;
setHome(
_home: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
setWatcherPermission(
_watcher: string,
_domain: BigNumberish,
_access: boolean,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
testRecoverWatcherFromSig(
_domain: BigNumberish,
_replica: string,
_updater: string,
_signature: BytesLike,
overrides?: CallOverrides
): Promise<string>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
unenrollReplica(
_domain: BigNumberish,
_updater: BytesLike,
_signature: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
watcherPermission(
_watcher: string,
_domain: BigNumberish,
overrides?: CallOverrides
): Promise<boolean>;
callStatic: {
domainToReplica(
arg0: BigNumberish,
overrides?: CallOverrides
): Promise<string>;
home(overrides?: CallOverrides): Promise<string>;
isReplica(_replica: string, overrides?: CallOverrides): Promise<boolean>;
localDomain(overrides?: CallOverrides): Promise<number>;
owner(overrides?: CallOverrides): Promise<string>;
ownerEnrollReplica(
_replica: string,
_domain: BigNumberish,
overrides?: CallOverrides
): Promise<void>;
ownerUnenrollReplica(
_replica: string,
overrides?: CallOverrides
): Promise<void>;
renounceOwnership(overrides?: CallOverrides): Promise<void>;
replicaToDomain(arg0: string, overrides?: CallOverrides): Promise<number>;
setHome(_home: string, overrides?: CallOverrides): Promise<void>;
setWatcherPermission(
_watcher: string,
_domain: BigNumberish,
_access: boolean,
overrides?: CallOverrides
): Promise<void>;
testRecoverWatcherFromSig(
_domain: BigNumberish,
_replica: string,
_updater: string,
_signature: BytesLike,
overrides?: CallOverrides
): Promise<string>;
transferOwnership(
newOwner: string,
overrides?: CallOverrides
): Promise<void>;
unenrollReplica(
_domain: BigNumberish,
_updater: BytesLike,
_signature: BytesLike,
overrides?: CallOverrides
): Promise<void>;
watcherPermission(
_watcher: string,
_domain: BigNumberish,
overrides?: CallOverrides
): Promise<boolean>;
};
filters: {
OwnershipTransferred(
previousOwner?: string | null,
newOwner?: string | null
): TypedEventFilter<
[string, string],
{ previousOwner: string; newOwner: string }
>;
ReplicaEnrolled(
domain?: BigNumberish | null,
replica?: null
): TypedEventFilter<[number, string], { domain: number; replica: string }>;
ReplicaUnenrolled(
domain?: BigNumberish | null,
replica?: null
): TypedEventFilter<[number, string], { domain: number; replica: string }>;
WatcherPermissionSet(
domain?: BigNumberish | null,
watcher?: null,
access?: null
): TypedEventFilter<
[number, string, boolean],
{ domain: number; watcher: string; access: boolean }
>;
};
estimateGas: {
domainToReplica(
arg0: BigNumberish,
overrides?: CallOverrides
): Promise<BigNumber>;
home(overrides?: CallOverrides): Promise<BigNumber>;
isReplica(_replica: string, overrides?: CallOverrides): Promise<BigNumber>;
localDomain(overrides?: CallOverrides): Promise<BigNumber>;
owner(overrides?: CallOverrides): Promise<BigNumber>;
ownerEnrollReplica(
_replica: string,
_domain: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
ownerUnenrollReplica(
_replica: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
replicaToDomain(
arg0: string,
overrides?: CallOverrides
): Promise<BigNumber>;
setHome(
_home: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
setWatcherPermission(
_watcher: string,
_domain: BigNumberish,
_access: boolean,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
testRecoverWatcherFromSig(
_domain: BigNumberish,
_replica: string,
_updater: string,
_signature: BytesLike,
overrides?: CallOverrides
): Promise<BigNumber>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
unenrollReplica(
_domain: BigNumberish,
_updater: BytesLike,
_signature: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
watcherPermission(
_watcher: string,
_domain: BigNumberish,
overrides?: CallOverrides
): Promise<BigNumber>;
};
populateTransaction: {
domainToReplica(
arg0: BigNumberish,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
home(overrides?: CallOverrides): Promise<PopulatedTransaction>;
isReplica(
_replica: string,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
localDomain(overrides?: CallOverrides): Promise<PopulatedTransaction>;
owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
ownerEnrollReplica(
_replica: string,
_domain: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
ownerUnenrollReplica(
_replica: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
replicaToDomain(
arg0: string,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
setHome(
_home: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
setWatcherPermission(
_watcher: string,
_domain: BigNumberish,
_access: boolean,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
testRecoverWatcherFromSig(
_domain: BigNumberish,
_replica: string,
_updater: string,
_signature: BytesLike,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
unenrollReplica(
_domain: BigNumberish,
_updater: BytesLike,
_signature: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
watcherPermission(
_watcher: string,
_domain: BigNumberish,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,95 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
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 TypedMemViewInterface extends ethers.utils.Interface {
functions: {
"NULL()": FunctionFragment;
};
encodeFunctionData(functionFragment: "NULL", values?: undefined): string;
decodeFunctionResult(functionFragment: "NULL", data: BytesLike): Result;
events: {};
}
export class TypedMemView extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: TypedMemViewInterface;
functions: {
NULL(overrides?: CallOverrides): Promise<[string]>;
};
NULL(overrides?: CallOverrides): Promise<string>;
callStatic: {
NULL(overrides?: CallOverrides): Promise<string>;
};
filters: {};
estimateGas: {
NULL(overrides?: CallOverrides): Promise<BigNumber>;
};
populateTransaction: {
NULL(overrides?: CallOverrides): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,276 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
Overrides,
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 UpdaterManagerInterface extends ethers.utils.Interface {
functions: {
"owner()": FunctionFragment;
"renounceOwnership()": FunctionFragment;
"setHome(address)": FunctionFragment;
"setUpdater(address)": FunctionFragment;
"slashUpdater(address)": FunctionFragment;
"transferOwnership(address)": FunctionFragment;
"updater()": FunctionFragment;
};
encodeFunctionData(functionFragment: "owner", values?: undefined): string;
encodeFunctionData(
functionFragment: "renounceOwnership",
values?: undefined
): string;
encodeFunctionData(functionFragment: "setHome", values: [string]): string;
encodeFunctionData(functionFragment: "setUpdater", values: [string]): string;
encodeFunctionData(
functionFragment: "slashUpdater",
values: [string]
): string;
encodeFunctionData(
functionFragment: "transferOwnership",
values: [string]
): string;
encodeFunctionData(functionFragment: "updater", values?: undefined): string;
decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "renounceOwnership",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "setHome", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "setUpdater", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "slashUpdater",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "transferOwnership",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "updater", data: BytesLike): Result;
events: {
"FakeSlashed(address)": EventFragment;
"NewHome(address)": EventFragment;
"OwnershipTransferred(address,address)": EventFragment;
};
getEvent(nameOrSignatureOrTopic: "FakeSlashed"): EventFragment;
getEvent(nameOrSignatureOrTopic: "NewHome"): EventFragment;
getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
}
export class UpdaterManager extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: UpdaterManagerInterface;
functions: {
owner(overrides?: CallOverrides): Promise<[string]>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
setHome(
_home: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
setUpdater(
_updaterAddress: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
slashUpdater(
_reporter: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
updater(overrides?: CallOverrides): Promise<[string]>;
};
owner(overrides?: CallOverrides): Promise<string>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
setHome(
_home: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
setUpdater(
_updaterAddress: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
slashUpdater(
_reporter: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
updater(overrides?: CallOverrides): Promise<string>;
callStatic: {
owner(overrides?: CallOverrides): Promise<string>;
renounceOwnership(overrides?: CallOverrides): Promise<void>;
setHome(_home: string, overrides?: CallOverrides): Promise<void>;
setUpdater(
_updaterAddress: string,
overrides?: CallOverrides
): Promise<void>;
slashUpdater(_reporter: string, overrides?: CallOverrides): Promise<void>;
transferOwnership(
newOwner: string,
overrides?: CallOverrides
): Promise<void>;
updater(overrides?: CallOverrides): Promise<string>;
};
filters: {
FakeSlashed(
reporter?: null
): TypedEventFilter<[string], { reporter: string }>;
NewHome(home?: null): TypedEventFilter<[string], { home: string }>;
OwnershipTransferred(
previousOwner?: string | null,
newOwner?: string | null
): TypedEventFilter<
[string, string],
{ previousOwner: string; newOwner: string }
>;
};
estimateGas: {
owner(overrides?: CallOverrides): Promise<BigNumber>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
setHome(
_home: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
setUpdater(
_updaterAddress: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
slashUpdater(
_reporter: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
updater(overrides?: CallOverrides): Promise<BigNumber>;
};
populateTransaction: {
owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
setHome(
_home: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
setUpdater(
_updaterAddress: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
slashUpdater(
_reporter: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
updater(overrides?: CallOverrides): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,86 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
} 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 UpgradeBeaconInterface extends ethers.utils.Interface {
functions: {};
events: {
"Upgrade(address)": EventFragment;
};
getEvent(nameOrSignatureOrTopic: "Upgrade"): EventFragment;
}
export class UpgradeBeacon extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: UpgradeBeaconInterface;
functions: {};
callStatic: {};
filters: {
Upgrade(
implementation?: string | null
): TypedEventFilter<[string], { implementation: string }>;
};
estimateGas: {};
populateTransaction: {};
}

@ -0,0 +1,215 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
Overrides,
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 UpgradeBeaconControllerInterface extends ethers.utils.Interface {
functions: {
"owner()": FunctionFragment;
"renounceOwnership()": FunctionFragment;
"transferOwnership(address)": FunctionFragment;
"upgrade(address,address)": FunctionFragment;
};
encodeFunctionData(functionFragment: "owner", values?: undefined): string;
encodeFunctionData(
functionFragment: "renounceOwnership",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "transferOwnership",
values: [string]
): string;
encodeFunctionData(
functionFragment: "upgrade",
values: [string, string]
): string;
decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "renounceOwnership",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "transferOwnership",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "upgrade", data: BytesLike): Result;
events: {
"BeaconUpgraded(address,address)": EventFragment;
"OwnershipTransferred(address,address)": EventFragment;
};
getEvent(nameOrSignatureOrTopic: "BeaconUpgraded"): EventFragment;
getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
}
export class UpgradeBeaconController extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: UpgradeBeaconControllerInterface;
functions: {
owner(overrides?: CallOverrides): Promise<[string]>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
upgrade(
_beacon: string,
_implementation: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
};
owner(overrides?: CallOverrides): Promise<string>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
upgrade(
_beacon: string,
_implementation: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
callStatic: {
owner(overrides?: CallOverrides): Promise<string>;
renounceOwnership(overrides?: CallOverrides): Promise<void>;
transferOwnership(
newOwner: string,
overrides?: CallOverrides
): Promise<void>;
upgrade(
_beacon: string,
_implementation: string,
overrides?: CallOverrides
): Promise<void>;
};
filters: {
BeaconUpgraded(
beacon?: string | null,
implementation?: null
): TypedEventFilter<
[string, string],
{ beacon: string; implementation: string }
>;
OwnershipTransferred(
previousOwner?: string | null,
newOwner?: string | null
): TypedEventFilter<
[string, string],
{ previousOwner: string; newOwner: string }
>;
};
estimateGas: {
owner(overrides?: CallOverrides): Promise<BigNumber>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
upgrade(
_beacon: string,
_implementation: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
};
populateTransaction: {
owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
upgrade(
_beacon: string,
_implementation: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,78 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
} 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 UpgradeBeaconProxyInterface extends ethers.utils.Interface {
functions: {};
events: {};
}
export class UpgradeBeaconProxy extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: UpgradeBeaconProxyInterface;
functions: {};
callStatic: {};
filters: {};
estimateGas: {};
populateTransaction: {};
}

@ -0,0 +1,95 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
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 Version0Interface extends ethers.utils.Interface {
functions: {
"VERSION()": FunctionFragment;
};
encodeFunctionData(functionFragment: "VERSION", values?: undefined): string;
decodeFunctionResult(functionFragment: "VERSION", data: BytesLike): Result;
events: {};
}
export class Version0 extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: Version0Interface;
functions: {
VERSION(overrides?: CallOverrides): Promise<[number]>;
};
VERSION(overrides?: CallOverrides): Promise<number>;
callStatic: {
VERSION(overrides?: CallOverrides): Promise<number>;
};
filters: {};
estimateGas: {
VERSION(overrides?: CallOverrides): Promise<BigNumber>;
};
populateTransaction: {
VERSION(overrides?: CallOverrides): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,526 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
Overrides,
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 XAppConnectionManagerInterface extends ethers.utils.Interface {
functions: {
"domainToReplica(uint32)": FunctionFragment;
"home()": FunctionFragment;
"isReplica(address)": FunctionFragment;
"localDomain()": FunctionFragment;
"owner()": FunctionFragment;
"ownerEnrollReplica(address,uint32)": FunctionFragment;
"ownerUnenrollReplica(address)": FunctionFragment;
"renounceOwnership()": FunctionFragment;
"replicaToDomain(address)": FunctionFragment;
"setHome(address)": FunctionFragment;
"setWatcherPermission(address,uint32,bool)": FunctionFragment;
"transferOwnership(address)": FunctionFragment;
"unenrollReplica(uint32,bytes32,bytes)": FunctionFragment;
"watcherPermission(address,uint32)": FunctionFragment;
};
encodeFunctionData(
functionFragment: "domainToReplica",
values: [BigNumberish]
): string;
encodeFunctionData(functionFragment: "home", values?: undefined): string;
encodeFunctionData(functionFragment: "isReplica", values: [string]): string;
encodeFunctionData(
functionFragment: "localDomain",
values?: undefined
): string;
encodeFunctionData(functionFragment: "owner", values?: undefined): string;
encodeFunctionData(
functionFragment: "ownerEnrollReplica",
values: [string, BigNumberish]
): string;
encodeFunctionData(
functionFragment: "ownerUnenrollReplica",
values: [string]
): string;
encodeFunctionData(
functionFragment: "renounceOwnership",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "replicaToDomain",
values: [string]
): string;
encodeFunctionData(functionFragment: "setHome", values: [string]): string;
encodeFunctionData(
functionFragment: "setWatcherPermission",
values: [string, BigNumberish, boolean]
): string;
encodeFunctionData(
functionFragment: "transferOwnership",
values: [string]
): string;
encodeFunctionData(
functionFragment: "unenrollReplica",
values: [BigNumberish, BytesLike, BytesLike]
): string;
encodeFunctionData(
functionFragment: "watcherPermission",
values: [string, BigNumberish]
): string;
decodeFunctionResult(
functionFragment: "domainToReplica",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "home", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "isReplica", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "localDomain",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "ownerEnrollReplica",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "ownerUnenrollReplica",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "renounceOwnership",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "replicaToDomain",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "setHome", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "setWatcherPermission",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "transferOwnership",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "unenrollReplica",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "watcherPermission",
data: BytesLike
): Result;
events: {
"OwnershipTransferred(address,address)": EventFragment;
"ReplicaEnrolled(uint32,address)": EventFragment;
"ReplicaUnenrolled(uint32,address)": EventFragment;
"WatcherPermissionSet(uint32,address,bool)": EventFragment;
};
getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
getEvent(nameOrSignatureOrTopic: "ReplicaEnrolled"): EventFragment;
getEvent(nameOrSignatureOrTopic: "ReplicaUnenrolled"): EventFragment;
getEvent(nameOrSignatureOrTopic: "WatcherPermissionSet"): EventFragment;
}
export class XAppConnectionManager extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;
listeners(eventName?: string): Array<Listener>;
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<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
interface: XAppConnectionManagerInterface;
functions: {
domainToReplica(
arg0: BigNumberish,
overrides?: CallOverrides
): Promise<[string]>;
home(overrides?: CallOverrides): Promise<[string]>;
isReplica(_replica: string, overrides?: CallOverrides): Promise<[boolean]>;
localDomain(overrides?: CallOverrides): Promise<[number]>;
owner(overrides?: CallOverrides): Promise<[string]>;
ownerEnrollReplica(
_replica: string,
_domain: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
ownerUnenrollReplica(
_replica: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
replicaToDomain(arg0: string, overrides?: CallOverrides): Promise<[number]>;
setHome(
_home: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
setWatcherPermission(
_watcher: string,
_domain: BigNumberish,
_access: boolean,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
unenrollReplica(
_domain: BigNumberish,
_updater: BytesLike,
_signature: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
watcherPermission(
_watcher: string,
_domain: BigNumberish,
overrides?: CallOverrides
): Promise<[boolean]>;
};
domainToReplica(
arg0: BigNumberish,
overrides?: CallOverrides
): Promise<string>;
home(overrides?: CallOverrides): Promise<string>;
isReplica(_replica: string, overrides?: CallOverrides): Promise<boolean>;
localDomain(overrides?: CallOverrides): Promise<number>;
owner(overrides?: CallOverrides): Promise<string>;
ownerEnrollReplica(
_replica: string,
_domain: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
ownerUnenrollReplica(
_replica: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
replicaToDomain(arg0: string, overrides?: CallOverrides): Promise<number>;
setHome(
_home: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
setWatcherPermission(
_watcher: string,
_domain: BigNumberish,
_access: boolean,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
unenrollReplica(
_domain: BigNumberish,
_updater: BytesLike,
_signature: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
watcherPermission(
_watcher: string,
_domain: BigNumberish,
overrides?: CallOverrides
): Promise<boolean>;
callStatic: {
domainToReplica(
arg0: BigNumberish,
overrides?: CallOverrides
): Promise<string>;
home(overrides?: CallOverrides): Promise<string>;
isReplica(_replica: string, overrides?: CallOverrides): Promise<boolean>;
localDomain(overrides?: CallOverrides): Promise<number>;
owner(overrides?: CallOverrides): Promise<string>;
ownerEnrollReplica(
_replica: string,
_domain: BigNumberish,
overrides?: CallOverrides
): Promise<void>;
ownerUnenrollReplica(
_replica: string,
overrides?: CallOverrides
): Promise<void>;
renounceOwnership(overrides?: CallOverrides): Promise<void>;
replicaToDomain(arg0: string, overrides?: CallOverrides): Promise<number>;
setHome(_home: string, overrides?: CallOverrides): Promise<void>;
setWatcherPermission(
_watcher: string,
_domain: BigNumberish,
_access: boolean,
overrides?: CallOverrides
): Promise<void>;
transferOwnership(
newOwner: string,
overrides?: CallOverrides
): Promise<void>;
unenrollReplica(
_domain: BigNumberish,
_updater: BytesLike,
_signature: BytesLike,
overrides?: CallOverrides
): Promise<void>;
watcherPermission(
_watcher: string,
_domain: BigNumberish,
overrides?: CallOverrides
): Promise<boolean>;
};
filters: {
OwnershipTransferred(
previousOwner?: string | null,
newOwner?: string | null
): TypedEventFilter<
[string, string],
{ previousOwner: string; newOwner: string }
>;
ReplicaEnrolled(
domain?: BigNumberish | null,
replica?: null
): TypedEventFilter<[number, string], { domain: number; replica: string }>;
ReplicaUnenrolled(
domain?: BigNumberish | null,
replica?: null
): TypedEventFilter<[number, string], { domain: number; replica: string }>;
WatcherPermissionSet(
domain?: BigNumberish | null,
watcher?: null,
access?: null
): TypedEventFilter<
[number, string, boolean],
{ domain: number; watcher: string; access: boolean }
>;
};
estimateGas: {
domainToReplica(
arg0: BigNumberish,
overrides?: CallOverrides
): Promise<BigNumber>;
home(overrides?: CallOverrides): Promise<BigNumber>;
isReplica(_replica: string, overrides?: CallOverrides): Promise<BigNumber>;
localDomain(overrides?: CallOverrides): Promise<BigNumber>;
owner(overrides?: CallOverrides): Promise<BigNumber>;
ownerEnrollReplica(
_replica: string,
_domain: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
ownerUnenrollReplica(
_replica: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
replicaToDomain(
arg0: string,
overrides?: CallOverrides
): Promise<BigNumber>;
setHome(
_home: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
setWatcherPermission(
_watcher: string,
_domain: BigNumberish,
_access: boolean,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
unenrollReplica(
_domain: BigNumberish,
_updater: BytesLike,
_signature: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
watcherPermission(
_watcher: string,
_domain: BigNumberish,
overrides?: CallOverrides
): Promise<BigNumber>;
};
populateTransaction: {
domainToReplica(
arg0: BigNumberish,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
home(overrides?: CallOverrides): Promise<PopulatedTransaction>;
isReplica(
_replica: string,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
localDomain(overrides?: CallOverrides): Promise<PopulatedTransaction>;
owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
ownerEnrollReplica(
_replica: string,
_domain: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
ownerUnenrollReplica(
_replica: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
renounceOwnership(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
replicaToDomain(
arg0: string,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
setHome(
_home: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
setWatcherPermission(
_watcher: string,
_domain: BigNumberish,
_access: boolean,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
transferOwnership(
newOwner: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
unenrollReplica(
_domain: BigNumberish,
_updater: BytesLike,
_signature: BytesLike,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
watcherPermission(
_watcher: string,
_domain: BigNumberish,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
};
}

@ -0,0 +1,36 @@
/* 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<EventArgs extends Result> extends Event {
args: EventArgs;
}
export type TypedListener<
EventArgsArray extends Array<any>,
EventArgsObject
> = (
...listenerArg: [
...EventArgsArray,
TypedEvent<EventArgsArray & EventArgsObject>
]
) => void;
export type MinEthersFactory<C, ARGS> = {
deploy(...a: ARGS[]): Promise<C>;
};
export type GetContractTypeFromFactory<F> = F extends MinEthersFactory<
infer C,
any
>
? C
: never;
export type GetARGsTypeFromFactory<F> = F extends MinEthersFactory<any, any>
? Parameters<F["deploy"]>
: never;

@ -0,0 +1,70 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers";
import { Provider, TransactionRequest } from "@ethersproject/providers";
import type { BadRecipient1, BadRecipient1Interface } from "../BadRecipient1";
const _abi = [
{
inputs: [
{
internalType: "uint32",
name: "",
type: "uint32",
},
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
{
internalType: "bytes",
name: "",
type: "bytes",
},
],
name: "handle",
outputs: [],
stateMutability: "pure",
type: "function",
},
];
const _bytecode =
"0x608060405234801561001057600080fd5b50610117806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806356d5d47514602d575b600080fd5b60df60048036036060811015604157600080fd5b63ffffffff82351691602081013591810190606081016040820135640100000000811115606d57600080fd5b820183602082011115607e57600080fd5b80359060200191846001830284011164010000000083111715609f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506028945050505050565b00fea26469706673582212203117ae1693eae5da24a6e5577157a0058bfb01a60a3d3d0a27a051482e0f787e64736f6c63430007060033";
export class BadRecipient1__factory extends ContractFactory {
constructor(signer?: Signer) {
super(_abi, _bytecode, signer);
}
deploy(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BadRecipient1> {
return super.deploy(overrides || {}) as Promise<BadRecipient1>;
}
getDeployTransaction(
overrides?: Overrides & { from?: string | Promise<string> }
): TransactionRequest {
return super.getDeployTransaction(overrides || {});
}
attach(address: string): BadRecipient1 {
return super.attach(address) as BadRecipient1;
}
connect(signer: Signer): BadRecipient1__factory {
return super.connect(signer) as BadRecipient1__factory;
}
static readonly bytecode = _bytecode;
static readonly abi = _abi;
static createInterface(): BadRecipient1Interface {
return new utils.Interface(_abi) as BadRecipient1Interface;
}
static connect(
address: string,
signerOrProvider: Signer | Provider
): BadRecipient1 {
return new Contract(address, _abi, signerOrProvider) as BadRecipient1;
}
}

@ -0,0 +1,70 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers";
import { Provider, TransactionRequest } from "@ethersproject/providers";
import type { BadRecipient2, BadRecipient2Interface } from "../BadRecipient2";
const _abi = [
{
inputs: [
{
internalType: "uint32",
name: "",
type: "uint32",
},
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
{
internalType: "bytes",
name: "",
type: "bytes",
},
],
name: "handle",
outputs: [],
stateMutability: "pure",
type: "function",
},
];
const _bytecode =
"0x608060405234801561001057600080fd5b50610117806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806356d5d47514602d575b600080fd5b60df60048036036060811015604157600080fd5b63ffffffff82351691602081013591810190606081016040820135640100000000811115606d57600080fd5b820183602082011115607e57600080fd5b80359060200191846001830284011164010000000083111715609f57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955060df945050505050565b00fea264697066735822122015f340edec8150a0a5acf888f811c882cb93e41d4c3439a3224ab159a251cd3a64736f6c63430007060033";
export class BadRecipient2__factory extends ContractFactory {
constructor(signer?: Signer) {
super(_abi, _bytecode, signer);
}
deploy(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BadRecipient2> {
return super.deploy(overrides || {}) as Promise<BadRecipient2>;
}
getDeployTransaction(
overrides?: Overrides & { from?: string | Promise<string> }
): TransactionRequest {
return super.getDeployTransaction(overrides || {});
}
attach(address: string): BadRecipient2 {
return super.attach(address) as BadRecipient2;
}
connect(signer: Signer): BadRecipient2__factory {
return super.connect(signer) as BadRecipient2__factory;
}
static readonly bytecode = _bytecode;
static readonly abi = _abi;
static createInterface(): BadRecipient2Interface {
return new utils.Interface(_abi) as BadRecipient2Interface;
}
static connect(
address: string,
signerOrProvider: Signer | Provider
): BadRecipient2 {
return new Contract(address, _abi, signerOrProvider) as BadRecipient2;
}
}

@ -0,0 +1,70 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers";
import { Provider, TransactionRequest } from "@ethersproject/providers";
import type { BadRecipient3, BadRecipient3Interface } from "../BadRecipient3";
const _abi = [
{
inputs: [
{
internalType: "uint32",
name: "",
type: "uint32",
},
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
{
internalType: "bytes",
name: "",
type: "bytes",
},
],
name: "handle",
outputs: [],
stateMutability: "pure",
type: "function",
},
];
const _bytecode =
"0x608060405234801561001057600080fd5b50610124806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806356d5d47514602d575b600080fd5b60df60048036036060811015604157600080fd5b63ffffffff82351691602081013591810190606081016040820135640100000000811115606d57600080fd5b820183602082011115607e57600080fd5b80359060200191846001830284011164010000000083111715609f57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955060e1945050505050565b005b62abcdef60005260206000fdfea2646970667358221220ebe6cd34d60c56fedb5458f11d4ed1a5a0954b199fd0cd646685a6dda46c497764736f6c63430007060033";
export class BadRecipient3__factory extends ContractFactory {
constructor(signer?: Signer) {
super(_abi, _bytecode, signer);
}
deploy(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BadRecipient3> {
return super.deploy(overrides || {}) as Promise<BadRecipient3>;
}
getDeployTransaction(
overrides?: Overrides & { from?: string | Promise<string> }
): TransactionRequest {
return super.getDeployTransaction(overrides || {});
}
attach(address: string): BadRecipient3 {
return super.attach(address) as BadRecipient3;
}
connect(signer: Signer): BadRecipient3__factory {
return super.connect(signer) as BadRecipient3__factory;
}
static readonly bytecode = _bytecode;
static readonly abi = _abi;
static createInterface(): BadRecipient3Interface {
return new utils.Interface(_abi) as BadRecipient3Interface;
}
static connect(
address: string,
signerOrProvider: Signer | Provider
): BadRecipient3 {
return new Contract(address, _abi, signerOrProvider) as BadRecipient3;
}
}

@ -0,0 +1,70 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers";
import { Provider, TransactionRequest } from "@ethersproject/providers";
import type { BadRecipient4, BadRecipient4Interface } from "../BadRecipient4";
const _abi = [
{
inputs: [
{
internalType: "uint32",
name: "",
type: "uint32",
},
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
{
internalType: "bytes",
name: "",
type: "bytes",
},
],
name: "handle",
outputs: [],
stateMutability: "pure",
type: "function",
},
];
const _bytecode =
"0x608060405234801561001057600080fd5b50610124806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806356d5d47514602d575b600080fd5b60df60048036036060811015604157600080fd5b63ffffffff82351691602081013591810190606081016040820135640100000000811115606d57600080fd5b820183602082011115607e57600080fd5b80359060200191846001830284011164010000000083111715609f57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955060e1945050505050565b005b62abcdef60005260206000f3fea2646970667358221220177e0626c8693836f2b6f508fb993cc339d3e4f2f9c9f13475d1af5f0bb34b4e64736f6c63430007060033";
export class BadRecipient4__factory extends ContractFactory {
constructor(signer?: Signer) {
super(_abi, _bytecode, signer);
}
deploy(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BadRecipient4> {
return super.deploy(overrides || {}) as Promise<BadRecipient4>;
}
getDeployTransaction(
overrides?: Overrides & { from?: string | Promise<string> }
): TransactionRequest {
return super.getDeployTransaction(overrides || {});
}
attach(address: string): BadRecipient4 {
return super.attach(address) as BadRecipient4;
}
connect(signer: Signer): BadRecipient4__factory {
return super.connect(signer) as BadRecipient4__factory;
}
static readonly bytecode = _bytecode;
static readonly abi = _abi;
static createInterface(): BadRecipient4Interface {
return new utils.Interface(_abi) as BadRecipient4Interface;
}
static connect(
address: string,
signerOrProvider: Signer | Provider
): BadRecipient4 {
return new Contract(address, _abi, signerOrProvider) as BadRecipient4;
}
}

@ -0,0 +1,70 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers";
import { Provider, TransactionRequest } from "@ethersproject/providers";
import type { BadRecipient5, BadRecipient5Interface } from "../BadRecipient5";
const _abi = [
{
inputs: [
{
internalType: "uint32",
name: "",
type: "uint32",
},
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
{
internalType: "bytes",
name: "",
type: "bytes",
},
],
name: "handle",
outputs: [],
stateMutability: "pure",
type: "function",
},
];
const _bytecode =
"0x608060405234801561001057600080fd5b50610187806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806356d5d47514610030575b600080fd5b6100e86004803603606081101561004657600080fd5b63ffffffff8235169160208101359181019060608101604082013564010000000081111561007357600080fd5b82018360208201111561008557600080fd5b803590602001918460018302840111640100000000831117156100a757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506100ea945050505050565b005b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f6e6f2063616e20646f0000000000000000000000000000000000000000000000604482015290519081900360640190fdfea264697066735822122005bff28742770cfa349a79ff0d13671853ca6c36d1162f1dca3e148ca67b604364736f6c63430007060033";
export class BadRecipient5__factory extends ContractFactory {
constructor(signer?: Signer) {
super(_abi, _bytecode, signer);
}
deploy(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BadRecipient5> {
return super.deploy(overrides || {}) as Promise<BadRecipient5>;
}
getDeployTransaction(
overrides?: Overrides & { from?: string | Promise<string> }
): TransactionRequest {
return super.getDeployTransaction(overrides || {});
}
attach(address: string): BadRecipient5 {
return super.attach(address) as BadRecipient5;
}
connect(signer: Signer): BadRecipient5__factory {
return super.connect(signer) as BadRecipient5__factory;
}
static readonly bytecode = _bytecode;
static readonly abi = _abi;
static createInterface(): BadRecipient5Interface {
return new utils.Interface(_abi) as BadRecipient5Interface;
}
static connect(
address: string,
signerOrProvider: Signer | Provider
): BadRecipient5 {
return new Contract(address, _abi, signerOrProvider) as BadRecipient5;
}
}

@ -0,0 +1,70 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers";
import { Provider, TransactionRequest } from "@ethersproject/providers";
import type { BadRecipient6, BadRecipient6Interface } from "../BadRecipient6";
const _abi = [
{
inputs: [
{
internalType: "uint32",
name: "",
type: "uint32",
},
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
{
internalType: "bytes",
name: "",
type: "bytes",
},
],
name: "handle",
outputs: [],
stateMutability: "pure",
type: "function",
},
];
const _bytecode =
"0x608060405234801561001057600080fd5b50610117806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806356d5d47514602d575b600080fd5b60df60048036036060811015604157600080fd5b63ffffffff82351691602081013591810190606081016040820135640100000000811115606d57600080fd5b820183602082011115607e57600080fd5b80359060200191846001830284011164010000000083111715609f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506028945050505050565b00fea2646970667358221220e4e58579306f6204f12ceaa33bf9d882837d909bf16a1d0feff175c36a8ec99064736f6c63430007060033";
export class BadRecipient6__factory extends ContractFactory {
constructor(signer?: Signer) {
super(_abi, _bytecode, signer);
}
deploy(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BadRecipient6> {
return super.deploy(overrides || {}) as Promise<BadRecipient6>;
}
getDeployTransaction(
overrides?: Overrides & { from?: string | Promise<string> }
): TransactionRequest {
return super.getDeployTransaction(overrides || {});
}
attach(address: string): BadRecipient6 {
return super.attach(address) as BadRecipient6;
}
connect(signer: Signer): BadRecipient6__factory {
return super.connect(signer) as BadRecipient6__factory;
}
static readonly bytecode = _bytecode;
static readonly abi = _abi;
static createInterface(): BadRecipient6Interface {
return new utils.Interface(_abi) as BadRecipient6Interface;
}
static connect(
address: string,
signerOrProvider: Signer | Provider
): BadRecipient6 {
return new Contract(address, _abi, signerOrProvider) as BadRecipient6;
}
}

@ -0,0 +1,68 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers";
import { Provider, TransactionRequest } from "@ethersproject/providers";
import type {
BadRecipientHandle,
BadRecipientHandleInterface,
} from "../BadRecipientHandle";
const _abi = [
{
inputs: [
{
internalType: "uint32",
name: "",
type: "uint32",
},
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
name: "handle",
outputs: [],
stateMutability: "pure",
type: "function",
},
];
const _bytecode =
"0x6080604052348015600f57600080fd5b50608f8061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c122ad8d14602d575b600080fd5b605360048036036040811015604157600080fd5b5063ffffffff81351690602001356055565b005b505056fea2646970667358221220f12eb0ee3b0ef6e5ecfb5840d141b289fb62ac8961ed2d136c581457e678076364736f6c63430007060033";
export class BadRecipientHandle__factory extends ContractFactory {
constructor(signer?: Signer) {
super(_abi, _bytecode, signer);
}
deploy(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BadRecipientHandle> {
return super.deploy(overrides || {}) as Promise<BadRecipientHandle>;
}
getDeployTransaction(
overrides?: Overrides & { from?: string | Promise<string> }
): TransactionRequest {
return super.getDeployTransaction(overrides || {});
}
attach(address: string): BadRecipientHandle {
return super.attach(address) as BadRecipientHandle;
}
connect(signer: Signer): BadRecipientHandle__factory {
return super.connect(signer) as BadRecipientHandle__factory;
}
static readonly bytecode = _bytecode;
static readonly abi = _abi;
static createInterface(): BadRecipientHandleInterface {
return new utils.Interface(_abi) as BadRecipientHandleInterface;
}
static connect(
address: string,
signerOrProvider: Signer | Provider
): BadRecipientHandle {
return new Contract(address, _abi, signerOrProvider) as BadRecipientHandle;
}
}

@ -0,0 +1,188 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import { Contract, Signer, utils } from "ethers";
import { Provider } from "@ethersproject/providers";
import type { Common, CommonInterface } from "../Common";
const _abi = [
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "bytes32",
name: "oldRoot",
type: "bytes32",
},
{
indexed: false,
internalType: "bytes32[2]",
name: "newRoot",
type: "bytes32[2]",
},
{
indexed: false,
internalType: "bytes",
name: "signature",
type: "bytes",
},
{
indexed: false,
internalType: "bytes",
name: "signature2",
type: "bytes",
},
],
name: "DoubleUpdate",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "updater",
type: "address",
},
],
name: "NewUpdater",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "uint32",
name: "homeDomain",
type: "uint32",
},
{
indexed: true,
internalType: "bytes32",
name: "oldRoot",
type: "bytes32",
},
{
indexed: true,
internalType: "bytes32",
name: "newRoot",
type: "bytes32",
},
{
indexed: false,
internalType: "bytes",
name: "signature",
type: "bytes",
},
],
name: "Update",
type: "event",
},
{
inputs: [],
name: "committedRoot",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "bytes32",
name: "_oldRoot",
type: "bytes32",
},
{
internalType: "bytes32[2]",
name: "_newRoot",
type: "bytes32[2]",
},
{
internalType: "bytes",
name: "_signature",
type: "bytes",
},
{
internalType: "bytes",
name: "_signature2",
type: "bytes",
},
],
name: "doubleUpdate",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "homeDomainHash",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "localDomain",
outputs: [
{
internalType: "uint32",
name: "",
type: "uint32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "state",
outputs: [
{
internalType: "enum Common.States",
name: "",
type: "uint8",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "updater",
outputs: [
{
internalType: "address",
name: "",
type: "address",
},
],
stateMutability: "view",
type: "function",
},
];
export class Common__factory {
static readonly abi = _abi;
static createInterface(): CommonInterface {
return new utils.Interface(_abi) as CommonInterface;
}
static connect(address: string, signerOrProvider: Signer | Provider): Common {
return new Contract(address, _abi, signerOrProvider) as Common;
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,49 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import { Contract, Signer, utils } from "ethers";
import { Provider } from "@ethersproject/providers";
import type {
IMessageRecipient,
IMessageRecipientInterface,
} from "../IMessageRecipient";
const _abi = [
{
inputs: [
{
internalType: "uint32",
name: "_origin",
type: "uint32",
},
{
internalType: "bytes32",
name: "_sender",
type: "bytes32",
},
{
internalType: "bytes",
name: "_message",
type: "bytes",
},
],
name: "handle",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
];
export class IMessageRecipient__factory {
static readonly abi = _abi;
static createInterface(): IMessageRecipientInterface {
return new utils.Interface(_abi) as IMessageRecipientInterface;
}
static connect(
address: string,
signerOrProvider: Signer | Provider
): IMessageRecipient {
return new Contract(address, _abi, signerOrProvider) as IMessageRecipient;
}
}

@ -0,0 +1,52 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import { Contract, Signer, utils } from "ethers";
import { Provider } from "@ethersproject/providers";
import type {
IUpdaterManager,
IUpdaterManagerInterface,
} from "../IUpdaterManager";
const _abi = [
{
inputs: [
{
internalType: "address payable",
name: "_reporter",
type: "address",
},
],
name: "slashUpdater",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "updater",
outputs: [
{
internalType: "address",
name: "",
type: "address",
},
],
stateMutability: "view",
type: "function",
},
];
export class IUpdaterManager__factory {
static readonly abi = _abi;
static createInterface(): IUpdaterManagerInterface {
return new utils.Interface(_abi) as IUpdaterManagerInterface;
}
static connect(
address: string,
signerOrProvider: Signer | Provider
): IUpdaterManager {
return new Contract(address, _abi, signerOrProvider) as IUpdaterManager;
}
}

@ -0,0 +1,60 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers";
import { Provider, TransactionRequest } from "@ethersproject/providers";
import type { MerkleLib, MerkleLibInterface } from "../MerkleLib";
const _abi = [
{
inputs: [],
name: "zeroHashes",
outputs: [
{
internalType: "bytes32[32]",
name: "_zeroes",
type: "bytes32[32]",
},
],
stateMutability: "pure",
type: "function",
},
];
const _bytecode =
"0x610591610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063b35658081461003a575b600080fd5b61004261007b565b604051808261040080838360005b83811015610068578181015183820152602001610050565b5050505090500191505060405180910390f35b61008361053c565b600081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb560208201527fb4c11951957c6f8f642c4af61cd6b24640fec6dc7fc607ee8206a99e92410d3060408201527f21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba8560608201527fe58769b32a1beaf1ea27375a44095a0d1fb664ce2dd358e7fcbfb78c26a1934460808201527f0eb01ebfc9ed27500cd4dfc979272d1f0913cc9f66540d7e8005811109e1cf2d60a08201527f887c22bd8750d34016ac3c66b5ff102dacdd73f6b014e710b51e8022af9a196860c08201527fffd70157e48063fc33c97a050f7f640233bf646cc98d9524c6b92bcf3ab56f8360e08201527f9867cc5f7f196b93bae1e27e6320742445d290f2263827498b54fec539f756af6101008201527fcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e06101208201527ff9dc3e7fe016e050eff260334f18a5d4fe391d82092319f5964f2e2eb7c1c3a56101408201527ff8b13a49e282f609c317a833fb8d976d11517c571d1221a265d25af778ecf8926101608201527f3490c6ceeb450aecdc82e28293031d10c7d73bf85e57bf041a97360aa2c5d99c6101808201527fc1df82d9c4b87413eae2ef048f94b4d3554cea73d92b0f7af96e0271c691e2bb6101a08201527f5c67add7c6caf302256adedf7ab114da0acfe870d449a3a489f781d659e8becc6101c08201527fda7bce9f4e8618b6bd2f4132ce798cdc7a60e7e1460a7299e3c6342a579626d26101e08201527f2733e50f526ec2fa19a22b31e8ed50f23cd1fdf94c9154ed3a7609a2f1ff981f6102008201527fe1d3b5c807b281e4683cc6d6315cf95b9ade8641defcb32372f1c126e398ef7a6102208201527f5a2dce0a8a7f68bb74560f8f71837c2c2ebbcbf7fffb42ae1896f13f7c7479a06102408201527fb46a28b6f55540f89444f63de0378e3d121be09e06cc9ded1c20e65876d36aa06102608201527fc65e9645644786b620e2dd2ad648ddfcbf4a7e5b1a3a4ecfe7f64667a3f0b7e26102808201527ff4418588ed35a2458cffeb39b93d26f18d2ab13bdce6aee58e7b99359ec2dfd96102a08201527f5a9c16dc00d6ef18b7933a6f8dc65ccb55667138776f7dea101070dc8796e3776102c08201527f4df84f40ae0c8229d0d6069e5c8f39a7c299677a09d367fc7b05e3bc380ee6526102e08201527fcdc72595f74c7b1043d0e1ffbab734648c838dfb0527d971b602bc216c9619ef6103008201527f0abf5ac974a1ed57f4050aa510dd9c74f508277b39d7973bb2dfccc5eeb0618d6103208201527fb8cd74046ff337f0a7bf2c8e03e10f642c1886798d71806ab1e888d9e5ee87d06103408201527f838c5655cb21c6cb83313b5a631175dff4963772cce9108188b34ac87c81c41e6103608201527f662ee4dd2dd7b2bc707961b1e646c4047669dcb6584f0d8d770daf5d7e7deb2e6103808201527f388ab20e2573d171a88108e79d820e98f26c0b84aa8b2f4aa4968dbb818ea3226103a08201527f93237c50ba75ee485f4c22adf2f741400bdf8d6a9cc7df7ecae576221665d7356103c08201527f8448818bb4ae4562849e949e17ac16e0be16688e156b5cf15e098c627c0056a96103e082015290565b604051806104000160405280602090602082028036833750919291505056fea2646970667358221220ad3bfe4cefe5c51f17b8c40895bafc1076c16176a71ee813684032f85042016e64736f6c63430007060033";
export class MerkleLib__factory extends ContractFactory {
constructor(signer?: Signer) {
super(_abi, _bytecode, signer);
}
deploy(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<MerkleLib> {
return super.deploy(overrides || {}) as Promise<MerkleLib>;
}
getDeployTransaction(
overrides?: Overrides & { from?: string | Promise<string> }
): TransactionRequest {
return super.getDeployTransaction(overrides || {});
}
attach(address: string): MerkleLib {
return super.attach(address) as MerkleLib;
}
connect(signer: Signer): MerkleLib__factory {
return super.connect(signer) as MerkleLib__factory;
}
static readonly bytecode = _bytecode;
static readonly abi = _abi;
static createInterface(): MerkleLibInterface {
return new utils.Interface(_abi) as MerkleLibInterface;
}
static connect(
address: string,
signerOrProvider: Signer | Provider
): MerkleLib {
return new Contract(address, _abi, signerOrProvider) as MerkleLib;
}
}

@ -0,0 +1,89 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers";
import { Provider, TransactionRequest } from "@ethersproject/providers";
import type {
MerkleTreeManager,
MerkleTreeManagerInterface,
} from "../MerkleTreeManager";
const _abi = [
{
inputs: [],
name: "count",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "root",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "tree",
outputs: [
{
internalType: "uint256",
name: "count",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
];
const _bytecode =
"0x608060405234801561001057600080fd5b5061067a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806306661abd14610046578063ebf0c71714610060578063fd54b22814610068575b600080fd5b61004e610070565b60408051918252519081900360200190f35b61004e610076565b61004e610087565b60205490565b6000610082600061008d565b905090565b60205481565b60006100a08261009b6100a6565b610567565b92915050565b6100ae610625565b600081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb560208201527fb4c11951957c6f8f642c4af61cd6b24640fec6dc7fc607ee8206a99e92410d3060408201527f21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba8560608201527fe58769b32a1beaf1ea27375a44095a0d1fb664ce2dd358e7fcbfb78c26a1934460808201527f0eb01ebfc9ed27500cd4dfc979272d1f0913cc9f66540d7e8005811109e1cf2d60a08201527f887c22bd8750d34016ac3c66b5ff102dacdd73f6b014e710b51e8022af9a196860c08201527fffd70157e48063fc33c97a050f7f640233bf646cc98d9524c6b92bcf3ab56f8360e08201527f9867cc5f7f196b93bae1e27e6320742445d290f2263827498b54fec539f756af6101008201527fcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e06101208201527ff9dc3e7fe016e050eff260334f18a5d4fe391d82092319f5964f2e2eb7c1c3a56101408201527ff8b13a49e282f609c317a833fb8d976d11517c571d1221a265d25af778ecf8926101608201527f3490c6ceeb450aecdc82e28293031d10c7d73bf85e57bf041a97360aa2c5d99c6101808201527fc1df82d9c4b87413eae2ef048f94b4d3554cea73d92b0f7af96e0271c691e2bb6101a08201527f5c67add7c6caf302256adedf7ab114da0acfe870d449a3a489f781d659e8becc6101c08201527fda7bce9f4e8618b6bd2f4132ce798cdc7a60e7e1460a7299e3c6342a579626d26101e08201527f2733e50f526ec2fa19a22b31e8ed50f23cd1fdf94c9154ed3a7609a2f1ff981f6102008201527fe1d3b5c807b281e4683cc6d6315cf95b9ade8641defcb32372f1c126e398ef7a6102208201527f5a2dce0a8a7f68bb74560f8f71837c2c2ebbcbf7fffb42ae1896f13f7c7479a06102408201527fb46a28b6f55540f89444f63de0378e3d121be09e06cc9ded1c20e65876d36aa06102608201527fc65e9645644786b620e2dd2ad648ddfcbf4a7e5b1a3a4ecfe7f64667a3f0b7e26102808201527ff4418588ed35a2458cffeb39b93d26f18d2ab13bdce6aee58e7b99359ec2dfd96102a08201527f5a9c16dc00d6ef18b7933a6f8dc65ccb55667138776f7dea101070dc8796e3776102c08201527f4df84f40ae0c8229d0d6069e5c8f39a7c299677a09d367fc7b05e3bc380ee6526102e08201527fcdc72595f74c7b1043d0e1ffbab734648c838dfb0527d971b602bc216c9619ef6103008201527f0abf5ac974a1ed57f4050aa510dd9c74f508277b39d7973bb2dfccc5eeb0618d6103208201527fb8cd74046ff337f0a7bf2c8e03e10f642c1886798d71806ab1e888d9e5ee87d06103408201527f838c5655cb21c6cb83313b5a631175dff4963772cce9108188b34ac87c81c41e6103608201527f662ee4dd2dd7b2bc707961b1e646c4047669dcb6584f0d8d770daf5d7e7deb2e6103808201527f388ab20e2573d171a88108e79d820e98f26c0b84aa8b2f4aa4968dbb818ea3226103a08201527f93237c50ba75ee485f4c22adf2f741400bdf8d6a9cc7df7ecae576221665d7356103c08201527f8448818bb4ae4562849e949e17ac16e0be16688e156b5cf15e098c627c0056a96103e082015290565b6020820154600090815b602081101561061d57600182821c16600086836020811061058e57fe5b0154905081600114156105d15780856040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209450610613565b848684602081106105de57fe5b602002015160405160200180838152602001828152602001925050506040516020818303038152906040528051906020012094505b5050600101610571565b505092915050565b604051806104000160405280602090602082028036833750919291505056fea26469706673582212203a85471519851d2f70affe5fe6cefaad02a6b1f4b075bb70f894a0282509d1ad64736f6c63430007060033";
export class MerkleTreeManager__factory extends ContractFactory {
constructor(signer?: Signer) {
super(_abi, _bytecode, signer);
}
deploy(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<MerkleTreeManager> {
return super.deploy(overrides || {}) as Promise<MerkleTreeManager>;
}
getDeployTransaction(
overrides?: Overrides & { from?: string | Promise<string> }
): TransactionRequest {
return super.getDeployTransaction(overrides || {});
}
attach(address: string): MerkleTreeManager {
return super.attach(address) as MerkleTreeManager;
}
connect(signer: Signer): MerkleTreeManager__factory {
return super.connect(signer) as MerkleTreeManager__factory;
}
static readonly bytecode = _bytecode;
static readonly abi = _abi;
static createInterface(): MerkleTreeManagerInterface {
return new utils.Interface(_abi) as MerkleTreeManagerInterface;
}
static connect(
address: string,
signerOrProvider: Signer | Provider
): MerkleTreeManager {
return new Contract(address, _abi, signerOrProvider) as MerkleTreeManager;
}
}

@ -0,0 +1,128 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers";
import { Provider, TransactionRequest } from "@ethersproject/providers";
import type { MysteryMathV1, MysteryMathV1Interface } from "../MysteryMathV1";
const _abi = [
{
inputs: [],
stateMutability: "nonpayable",
type: "constructor",
},
{
inputs: [
{
internalType: "uint256",
name: "a",
type: "uint256",
},
{
internalType: "uint256",
name: "b",
type: "uint256",
},
],
name: "doMath",
outputs: [
{
internalType: "uint256",
name: "_result",
type: "uint256",
},
],
stateMutability: "pure",
type: "function",
},
{
inputs: [],
name: "getState",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "uint256",
name: "_var",
type: "uint256",
},
],
name: "setState",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "stateVar",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "version",
outputs: [
{
internalType: "uint32",
name: "",
type: "uint32",
},
],
stateMutability: "view",
type: "function",
},
];
const _bytecode =
"0x60a060405234801561001057600080fd5b50600160e01b60805260016101606100316000398060f952506101606000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063793816ec11610050578063793816ec146100a7578063a9e966b7146100af578063d6c4979c146100ce57610067565b80631865c57d1461006c57806354fd4d5014610086575b600080fd5b6100746100f1565b60408051918252519081900360200190f35b61008e6100f7565b6040805163ffffffff9092168252519081900360200190f35b61007461011b565b6100cc600480360360208110156100c557600080fd5b5035610121565b005b610074600480360360408110156100e457600080fd5b5080359060200135610126565b60005490565b7f000000000000000000000000000000000000000000000000000000000000000081565b60005481565b600055565b019056fea26469706673582212202cd3e240eb7513b7e99ad8aad10be88dc51153cca445d8263caebdc15674f10564736f6c63430007060033";
export class MysteryMathV1__factory extends ContractFactory {
constructor(signer?: Signer) {
super(_abi, _bytecode, signer);
}
deploy(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<MysteryMathV1> {
return super.deploy(overrides || {}) as Promise<MysteryMathV1>;
}
getDeployTransaction(
overrides?: Overrides & { from?: string | Promise<string> }
): TransactionRequest {
return super.getDeployTransaction(overrides || {});
}
attach(address: string): MysteryMathV1 {
return super.attach(address) as MysteryMathV1;
}
connect(signer: Signer): MysteryMathV1__factory {
return super.connect(signer) as MysteryMathV1__factory;
}
static readonly bytecode = _bytecode;
static readonly abi = _abi;
static createInterface(): MysteryMathV1Interface {
return new utils.Interface(_abi) as MysteryMathV1Interface;
}
static connect(
address: string,
signerOrProvider: Signer | Provider
): MysteryMathV1 {
return new Contract(address, _abi, signerOrProvider) as MysteryMathV1;
}
}

@ -0,0 +1,128 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers";
import { Provider, TransactionRequest } from "@ethersproject/providers";
import type { MysteryMathV2, MysteryMathV2Interface } from "../MysteryMathV2";
const _abi = [
{
inputs: [],
stateMutability: "nonpayable",
type: "constructor",
},
{
inputs: [
{
internalType: "uint256",
name: "a",
type: "uint256",
},
{
internalType: "uint256",
name: "b",
type: "uint256",
},
],
name: "doMath",
outputs: [
{
internalType: "uint256",
name: "_result",
type: "uint256",
},
],
stateMutability: "pure",
type: "function",
},
{
inputs: [],
name: "getState",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "uint256",
name: "_var",
type: "uint256",
},
],
name: "setState",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "stateVar",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "version",
outputs: [
{
internalType: "uint32",
name: "",
type: "uint32",
},
],
stateMutability: "view",
type: "function",
},
];
const _bytecode =
"0x60a060405234801561001057600080fd5b50600160e11b60805260026101606100316000398060f952506101606000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063793816ec11610050578063793816ec146100a7578063a9e966b7146100af578063d6c4979c146100ce57610067565b80631865c57d1461006c57806354fd4d5014610086575b600080fd5b6100746100f1565b60408051918252519081900360200190f35b61008e6100f7565b6040805163ffffffff9092168252519081900360200190f35b61007461011b565b6100cc600480360360208110156100c557600080fd5b5035610121565b005b610074600480360360408110156100e457600080fd5b5080359060200135610126565b60005490565b7f000000000000000000000000000000000000000000000000000000000000000081565b60005481565b600055565b029056fea264697066735822122034f6d0a8100e82e9f9e2453439dbf2c723da18fb2f703bfcfb8f313bc5d5b35164736f6c63430007060033";
export class MysteryMathV2__factory extends ContractFactory {
constructor(signer?: Signer) {
super(_abi, _bytecode, signer);
}
deploy(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<MysteryMathV2> {
return super.deploy(overrides || {}) as Promise<MysteryMathV2>;
}
getDeployTransaction(
overrides?: Overrides & { from?: string | Promise<string> }
): TransactionRequest {
return super.getDeployTransaction(overrides || {});
}
attach(address: string): MysteryMathV2 {
return super.attach(address) as MysteryMathV2;
}
connect(signer: Signer): MysteryMathV2__factory {
return super.connect(signer) as MysteryMathV2__factory;
}
static readonly bytecode = _bytecode;
static readonly abi = _abi;
static createInterface(): MysteryMathV2Interface {
return new utils.Interface(_abi) as MysteryMathV2Interface;
}
static connect(
address: string,
signerOrProvider: Signer | Provider
): MysteryMathV2 {
return new Contract(address, _abi, signerOrProvider) as MysteryMathV2;
}
}

@ -0,0 +1,86 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import { Contract, Signer, utils } from "ethers";
import { Provider } from "@ethersproject/providers";
import type { MysteryMath, MysteryMathInterface } from "../MysteryMath";
const _abi = [
{
inputs: [
{
internalType: "uint256",
name: "a",
type: "uint256",
},
{
internalType: "uint256",
name: "b",
type: "uint256",
},
],
name: "doMath",
outputs: [
{
internalType: "uint256",
name: "_result",
type: "uint256",
},
],
stateMutability: "pure",
type: "function",
},
{
inputs: [],
name: "getState",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "uint256",
name: "_var",
type: "uint256",
},
],
name: "setState",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "stateVar",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
];
export class MysteryMath__factory {
static readonly abi = _abi;
static createInterface(): MysteryMathInterface {
return new utils.Interface(_abi) as MysteryMathInterface;
}
static connect(
address: string,
signerOrProvider: Signer | Provider
): MysteryMath {
return new Contract(address, _abi, signerOrProvider) as MysteryMath;
}
}

@ -0,0 +1,78 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import { Contract, Signer, utils } from "ethers";
import { Provider } from "@ethersproject/providers";
import type {
OwnableUpgradeable,
OwnableUpgradeableInterface,
} from "../OwnableUpgradeable";
const _abi = [
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "previousOwner",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "newOwner",
type: "address",
},
],
name: "OwnershipTransferred",
type: "event",
},
{
inputs: [],
name: "owner",
outputs: [
{
internalType: "address",
name: "",
type: "address",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "renounceOwnership",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "newOwner",
type: "address",
},
],
name: "transferOwnership",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
];
export class OwnableUpgradeable__factory {
static readonly abi = _abi;
static createInterface(): OwnableUpgradeableInterface {
return new utils.Interface(_abi) as OwnableUpgradeableInterface;
}
static connect(
address: string,
signerOrProvider: Signer | Provider
): OwnableUpgradeable {
return new Contract(address, _abi, signerOrProvider) as OwnableUpgradeable;
}
}

@ -0,0 +1,75 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import { Contract, Signer, utils } from "ethers";
import { Provider } from "@ethersproject/providers";
import type { Ownable, OwnableInterface } from "../Ownable";
const _abi = [
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "previousOwner",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "newOwner",
type: "address",
},
],
name: "OwnershipTransferred",
type: "event",
},
{
inputs: [],
name: "owner",
outputs: [
{
internalType: "address",
name: "",
type: "address",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "renounceOwnership",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "newOwner",
type: "address",
},
],
name: "transferOwnership",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
];
export class Ownable__factory {
static readonly abi = _abi;
static createInterface(): OwnableInterface {
return new utils.Interface(_abi) as OwnableInterface;
}
static connect(
address: string,
signerOrProvider: Signer | Provider
): Ownable {
return new Contract(address, _abi, signerOrProvider) as Ownable;
}
}

@ -0,0 +1,92 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers";
import { Provider, TransactionRequest } from "@ethersproject/providers";
import type { QueueManager, QueueManagerInterface } from "../QueueManager";
const _abi = [
{
inputs: [
{
internalType: "bytes32",
name: "_item",
type: "bytes32",
},
],
name: "queueContains",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "queueEnd",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "queueLength",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
];
const _bytecode =
"0x608060405234801561001057600080fd5b50610210806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632bef289214610046578063ab91c7b014610077578063f6d1610214610091575b600080fd5b6100636004803603602081101561005c57600080fd5b5035610099565b604080519115158252519081900360200190f35b61007f6100ac565b60408051918252519081900360200190f35b61007f6100bd565b60006100a66001836100c9565b92915050565b60006100b86001610143565b905090565b60006100b86001610183565b81546000906fffffffffffffffffffffffffffffffff165b835470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681116101395760008181526001850160205260409020548314156101315760019150506100a6565b6001016100e1565b5060009392505050565b80546000906fffffffffffffffffffffffffffffffff70010000000000000000000000000000000082048116911661017b82826101c0565b949350505050565b805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1660009081526001909101602052604090205490565b60019103016fffffffffffffffffffffffffffffffff169056fea26469706673582212203986df16bf8151067b530f7c4dd7bfa6f63b1423d179f41091358a28bd2a54e564736f6c63430007060033";
export class QueueManager__factory extends ContractFactory {
constructor(signer?: Signer) {
super(_abi, _bytecode, signer);
}
deploy(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<QueueManager> {
return super.deploy(overrides || {}) as Promise<QueueManager>;
}
getDeployTransaction(
overrides?: Overrides & { from?: string | Promise<string> }
): TransactionRequest {
return super.getDeployTransaction(overrides || {});
}
attach(address: string): QueueManager {
return super.attach(address) as QueueManager;
}
connect(signer: Signer): QueueManager__factory {
return super.connect(signer) as QueueManager__factory;
}
static readonly bytecode = _bytecode;
static readonly abi = _abi;
static createInterface(): QueueManagerInterface {
return new utils.Interface(_abi) as QueueManagerInterface;
}
static connect(
address: string,
signerOrProvider: Signer | Provider
): QueueManager {
return new Contract(address, _abi, signerOrProvider) as QueueManager;
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,133 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers";
import { Provider, TransactionRequest } from "@ethersproject/providers";
import type { TestMerkle, TestMerkleInterface } from "../TestMerkle";
const _abi = [
{
inputs: [],
stateMutability: "nonpayable",
type: "constructor",
},
{
inputs: [
{
internalType: "bytes32",
name: "_leaf",
type: "bytes32",
},
{
internalType: "bytes32[32]",
name: "_proof",
type: "bytes32[32]",
},
{
internalType: "uint256",
name: "_index",
type: "uint256",
},
],
name: "branchRoot",
outputs: [
{
internalType: "bytes32",
name: "_node",
type: "bytes32",
},
],
stateMutability: "pure",
type: "function",
},
{
inputs: [],
name: "count",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "bytes32",
name: "_node",
type: "bytes32",
},
],
name: "insert",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "root",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "tree",
outputs: [
{
internalType: "uint256",
name: "count",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
];
const _bytecode =
"0x608060405234801561001057600080fd5b506108ec806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806377d63d1d1161005057806377d63d1d146100a5578063ebf0c717146100cf578063fd54b228146100d757610067565b806306661abd1461006c5780632d287e4314610086575b600080fd5b6100746100df565b60408051918252519081900360200190f35b6100a36004803603602081101561009c57600080fd5b50356100e5565b005b61007460048036036104408110156100bc57600080fd5b50803590602081019061042001356100f3565b610074610131565b610074610142565b60205490565b6100f0600082610148565b50565b60006101298484602080602002604051908101604052809291908260208002808284376000920191909152508691506102549050565b949350505050565b600061013d60006102ff565b905090565b60205481565b602082015463ffffffff116101be57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6d65726b6c6520747265652066756c6c00000000000000000000000000000000604482015290519081900360640190fd5b6020820180546001019081905560005b602081101561024d5781600116600114156101fa57828482602081106101f057fe5b0155506102509050565b83816020811061020657fe5b01548360405160200180838152602001828152602001925050506040516020818303038152906040528051906020012092506002828161024257fe5b0491506001016101ce565b50fe5b5050565b8260005b60208110156102f757600183821c16600085836020811061027557fe5b6020020151905081600114156102bb57808460405160200180838152602001828152602001925050506040516020818303038152906040528051906020012093506102ed565b838160405160200180838152602001828152602001925050506040516020818303038152906040528051906020012093505b5050600101610258565b509392505050565b60006103128261030d610318565b6107d9565b92915050565b610320610897565b600081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb560208201527fb4c11951957c6f8f642c4af61cd6b24640fec6dc7fc607ee8206a99e92410d3060408201527f21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba8560608201527fe58769b32a1beaf1ea27375a44095a0d1fb664ce2dd358e7fcbfb78c26a1934460808201527f0eb01ebfc9ed27500cd4dfc979272d1f0913cc9f66540d7e8005811109e1cf2d60a08201527f887c22bd8750d34016ac3c66b5ff102dacdd73f6b014e710b51e8022af9a196860c08201527fffd70157e48063fc33c97a050f7f640233bf646cc98d9524c6b92bcf3ab56f8360e08201527f9867cc5f7f196b93bae1e27e6320742445d290f2263827498b54fec539f756af6101008201527fcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e06101208201527ff9dc3e7fe016e050eff260334f18a5d4fe391d82092319f5964f2e2eb7c1c3a56101408201527ff8b13a49e282f609c317a833fb8d976d11517c571d1221a265d25af778ecf8926101608201527f3490c6ceeb450aecdc82e28293031d10c7d73bf85e57bf041a97360aa2c5d99c6101808201527fc1df82d9c4b87413eae2ef048f94b4d3554cea73d92b0f7af96e0271c691e2bb6101a08201527f5c67add7c6caf302256adedf7ab114da0acfe870d449a3a489f781d659e8becc6101c08201527fda7bce9f4e8618b6bd2f4132ce798cdc7a60e7e1460a7299e3c6342a579626d26101e08201527f2733e50f526ec2fa19a22b31e8ed50f23cd1fdf94c9154ed3a7609a2f1ff981f6102008201527fe1d3b5c807b281e4683cc6d6315cf95b9ade8641defcb32372f1c126e398ef7a6102208201527f5a2dce0a8a7f68bb74560f8f71837c2c2ebbcbf7fffb42ae1896f13f7c7479a06102408201527fb46a28b6f55540f89444f63de0378e3d121be09e06cc9ded1c20e65876d36aa06102608201527fc65e9645644786b620e2dd2ad648ddfcbf4a7e5b1a3a4ecfe7f64667a3f0b7e26102808201527ff4418588ed35a2458cffeb39b93d26f18d2ab13bdce6aee58e7b99359ec2dfd96102a08201527f5a9c16dc00d6ef18b7933a6f8dc65ccb55667138776f7dea101070dc8796e3776102c08201527f4df84f40ae0c8229d0d6069e5c8f39a7c299677a09d367fc7b05e3bc380ee6526102e08201527fcdc72595f74c7b1043d0e1ffbab734648c838dfb0527d971b602bc216c9619ef6103008201527f0abf5ac974a1ed57f4050aa510dd9c74f508277b39d7973bb2dfccc5eeb0618d6103208201527fb8cd74046ff337f0a7bf2c8e03e10f642c1886798d71806ab1e888d9e5ee87d06103408201527f838c5655cb21c6cb83313b5a631175dff4963772cce9108188b34ac87c81c41e6103608201527f662ee4dd2dd7b2bc707961b1e646c4047669dcb6584f0d8d770daf5d7e7deb2e6103808201527f388ab20e2573d171a88108e79d820e98f26c0b84aa8b2f4aa4968dbb818ea3226103a08201527f93237c50ba75ee485f4c22adf2f741400bdf8d6a9cc7df7ecae576221665d7356103c08201527f8448818bb4ae4562849e949e17ac16e0be16688e156b5cf15e098c627c0056a96103e082015290565b6020820154600090815b602081101561088f57600182821c16600086836020811061080057fe5b0154905081600114156108435780856040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209450610885565b8486846020811061085057fe5b602002015160405160200180838152602001828152602001925050506040516020818303038152906040528051906020012094505b50506001016107e3565b505092915050565b604051806104000160405280602090602082028036833750919291505056fea2646970667358221220fa2e7de552199308ae93bb99d5bbbcaf4a3beed6157b4da5ffbf4d2bc292f34a64736f6c63430007060033";
export class TestMerkle__factory extends ContractFactory {
constructor(signer?: Signer) {
super(_abi, _bytecode, signer);
}
deploy(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<TestMerkle> {
return super.deploy(overrides || {}) as Promise<TestMerkle>;
}
getDeployTransaction(
overrides?: Overrides & { from?: string | Promise<string> }
): TransactionRequest {
return super.getDeployTransaction(overrides || {});
}
attach(address: string): TestMerkle {
return super.attach(address) as TestMerkle;
}
connect(signer: Signer): TestMerkle__factory {
return super.connect(signer) as TestMerkle__factory;
}
static readonly bytecode = _bytecode;
static readonly abi = _abi;
static createInterface(): TestMerkleInterface {
return new utils.Interface(_abi) as TestMerkleInterface;
}
static connect(
address: string,
signerOrProvider: Signer | Provider
): TestMerkle {
return new Contract(address, _abi, signerOrProvider) as TestMerkle;
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,132 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers";
import { Provider, TransactionRequest } from "@ethersproject/providers";
import type { TestRecipient, TestRecipientInterface } from "../TestRecipient";
const _abi = [
{
stateMutability: "nonpayable",
type: "fallback",
},
{
inputs: [
{
internalType: "uint32",
name: "",
type: "uint32",
},
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
{
internalType: "bytes",
name: "",
type: "bytes",
},
],
name: "handle",
outputs: [],
stateMutability: "pure",
type: "function",
},
{
inputs: [],
name: "message",
outputs: [
{
internalType: "string",
name: "",
type: "string",
},
],
stateMutability: "pure",
type: "function",
},
{
inputs: [
{
internalType: "bool",
name: "callProcessed",
type: "bool",
},
],
name: "processCall",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "processed",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "string",
name: "_str",
type: "string",
},
],
name: "receiveString",
outputs: [
{
internalType: "string",
name: "",
type: "string",
},
],
stateMutability: "pure",
type: "function",
},
];
const _bytecode =
"0x60806040526000805460ff1916905534801561001a57600080fd5b5061039c8061002a6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806356d5d4751161005057806356d5d475146101cf578063c0a58a4d14610289578063e21f37ce146102a857610067565b80632ce5c284146100ce5780634e376c5d146100ea575b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f46616c6c6261636b000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6100d66102b0565b604080519115158252519081900360200190f35b61015a6004803603602081101561010057600080fd5b81019060208101813564010000000081111561011b57600080fd5b82018360208201111561012d57600080fd5b8035906020019184600183028401116401000000008311171561014f57600080fd5b5090925090506102b9565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019457818101518382015260200161017c565b50505050905090810190601f1680156101c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610287600480360360608110156101e557600080fd5b63ffffffff8235169160208101359181019060608101604082013564010000000081111561021257600080fd5b82018360208201111561022457600080fd5b8035906020019184600183028401116401000000008311171561024657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506102f9945050505050565b005b6102876004803603602081101561029f57600080fd5b503515156102fe565b61015a61032f565b60005460ff1681565b606082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b505050565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60408051808201909152601081527f6d6573736167652072656365697665640000000000000000000000000000000060208201529056fea264697066735822122097826225a1efb1c42f91488ad92d10ca3dba981ac77c1c66b5771b0446d732ef64736f6c63430007060033";
export class TestRecipient__factory extends ContractFactory {
constructor(signer?: Signer) {
super(_abi, _bytecode, signer);
}
deploy(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<TestRecipient> {
return super.deploy(overrides || {}) as Promise<TestRecipient>;
}
getDeployTransaction(
overrides?: Overrides & { from?: string | Promise<string> }
): TransactionRequest {
return super.getDeployTransaction(overrides || {});
}
attach(address: string): TestRecipient {
return super.attach(address) as TestRecipient;
}
connect(signer: Signer): TestRecipient__factory {
return super.connect(signer) as TestRecipient__factory;
}
static readonly bytecode = _bytecode;
static readonly abi = _abi;
static createInterface(): TestRecipientInterface {
return new utils.Interface(_abi) as TestRecipientInterface;
}
static connect(
address: string,
signerOrProvider: Signer | Provider
): TestRecipient {
return new Contract(address, _abi, signerOrProvider) as TestRecipient;
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,60 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers";
import { Provider, TransactionRequest } from "@ethersproject/providers";
import type { TypedMemView, TypedMemViewInterface } from "../TypedMemView";
const _abi = [
{
inputs: [],
name: "NULL",
outputs: [
{
internalType: "bytes29",
name: "",
type: "bytes29",
},
],
stateMutability: "view",
type: "function",
},
];
const _bytecode =
"0x60cd610025600b82828239805160001a60731461001857fe5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063f26be3fc146038575b600080fd5b603e6073565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009092168252519081900360200190f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008156fea2646970667358221220b07daa2cfa732a0712e14f333f7fb26a0736db4a4fce155c515a5dd1fc062de564736f6c63430007060033";
export class TypedMemView__factory extends ContractFactory {
constructor(signer?: Signer) {
super(_abi, _bytecode, signer);
}
deploy(
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<TypedMemView> {
return super.deploy(overrides || {}) as Promise<TypedMemView>;
}
getDeployTransaction(
overrides?: Overrides & { from?: string | Promise<string> }
): TransactionRequest {
return super.getDeployTransaction(overrides || {});
}
attach(address: string): TypedMemView {
return super.attach(address) as TypedMemView;
}
connect(signer: Signer): TypedMemView__factory {
return super.connect(signer) as TypedMemView__factory;
}
static readonly bytecode = _bytecode;
static readonly abi = _abi;
static createInterface(): TypedMemViewInterface {
return new utils.Interface(_abi) as TypedMemViewInterface;
}
static connect(
address: string,
signerOrProvider: Signer | Provider
): TypedMemView {
return new Contract(address, _abi, signerOrProvider) as TypedMemView;
}
}

@ -0,0 +1,202 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
Signer,
utils,
Contract,
ContractFactory,
PayableOverrides,
} from "ethers";
import { Provider, TransactionRequest } from "@ethersproject/providers";
import type {
UpdaterManager,
UpdaterManagerInterface,
} from "../UpdaterManager";
const _abi = [
{
inputs: [
{
internalType: "address",
name: "_updaterAddress",
type: "address",
},
],
stateMutability: "payable",
type: "constructor",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "reporter",
type: "address",
},
],
name: "FakeSlashed",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "home",
type: "address",
},
],
name: "NewHome",
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: [],
name: "owner",
outputs: [
{
internalType: "address",
name: "",
type: "address",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "renounceOwnership",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "_home",
type: "address",
},
],
name: "setHome",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "_updaterAddress",
type: "address",
},
],
name: "setUpdater",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address payable",
name: "_reporter",
type: "address",
},
],
name: "slashUpdater",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "newOwner",
type: "address",
},
],
name: "transferOwnership",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "updater",
outputs: [
{
internalType: "address",
name: "",
type: "address",
},
],
stateMutability: "view",
type: "function",
},
];
const _bytecode =
"0x60806040526040516109663803806109668339818101604052602081101561002657600080fd5b505160006100326100a1565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600280546001600160a01b0319166001600160a01b03929092169190911790556100a5565b3390565b6108b2806100b46000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100f25780639d54f41914610123578063df034cd014610156578063f2fde38b1461015e5761007d565b80635b3c2cbf146100825780636ef0f37f146100b7578063715018a6146100ea575b600080fd5b6100b56004803603602081101561009857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610191565b005b6100b5600480360360208110156100cd57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610263565b6100b56103f8565b6100fa61050f565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b56004803603602081101561013957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661052b565b6100fa61068f565b6100b56004803603602081101561017457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106ab565b60015473ffffffffffffffffffffffffffffffffffffffff16331461021757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f21686f6d65000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517f4180932f5f5f11458bcd408e42c54626987799e7c4c89f40f484fefdfdfff14f9181900360200190a150565b61026b61084c565b73ffffffffffffffffffffffffffffffffffffffff1661028961050f565b73ffffffffffffffffffffffffffffffffffffffff161461030b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61031481610850565b61037f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f21636f6e747261637420686f6d65000000000000000000000000000000000000604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517fa6c230e5615262e310dcb42eaf014e813e5d8580abf5b00d2186ca8e9833de219181900360200190a150565b61040061084c565b73ffffffffffffffffffffffffffffffffffffffff1661041e61050f565b73ffffffffffffffffffffffffffffffffffffffff16146104a057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b61053361084c565b73ffffffffffffffffffffffffffffffffffffffff1661055161050f565b73ffffffffffffffffffffffffffffffffffffffff16146105d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116918217909255600154604080517f9d54f419000000000000000000000000000000000000000000000000000000008152600481019390935251921691639d54f4199160248082019260009290919082900301818387803b15801561067457600080fd5b505af1158015610688573d6000803e3d6000fd5b5050505050565b60025473ffffffffffffffffffffffffffffffffffffffff1690565b6106b361084c565b73ffffffffffffffffffffffffffffffffffffffff166106d161050f565b73ffffffffffffffffffffffffffffffffffffffff161461075357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166107bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806108576026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3390565b3b15159056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a26469706673582212206a89c5c4e18144cd4168abe90868abf0d0cd57bdd92b36ff23b682243dda36c064736f6c63430007060033";
export class UpdaterManager__factory extends ContractFactory {
constructor(signer?: Signer) {
super(_abi, _bytecode, signer);
}
deploy(
_updaterAddress: string,
overrides?: PayableOverrides & { from?: string | Promise<string> }
): Promise<UpdaterManager> {
return super.deploy(
_updaterAddress,
overrides || {}
) as Promise<UpdaterManager>;
}
getDeployTransaction(
_updaterAddress: string,
overrides?: PayableOverrides & { from?: string | Promise<string> }
): TransactionRequest {
return super.getDeployTransaction(_updaterAddress, overrides || {});
}
attach(address: string): UpdaterManager {
return super.attach(address) as UpdaterManager;
}
connect(signer: Signer): UpdaterManager__factory {
return super.connect(signer) as UpdaterManager__factory;
}
static readonly bytecode = _bytecode;
static readonly abi = _abi;
static createInterface(): UpdaterManagerInterface {
return new utils.Interface(_abi) as UpdaterManagerInterface;
}
static connect(
address: string,
signerOrProvider: Signer | Provider
): UpdaterManager {
return new Contract(address, _abi, signerOrProvider) as UpdaterManager;
}
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save