From 0ac5176db0a803aa24869dc7a9524c3e3943b312 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 9 Feb 2022 19:07:44 +0000 Subject: [PATCH] Update docs --- .gitignore | 5 + CHANGELOG.md | 31 +- README.md | 2 +- SECURITY.md | 12 +- certora/Makefile | 24 + certora/README.md | 56 + certora/applyHarness.patch | 101 + certora/harnesses/ERC20VotesHarness.sol | 28 + .../harnesses/WizardControlFirstPriority.sol | 150 + certora/harnesses/WizardFirstTry.sol | 141 + certora/munged/.gitignore | 2 + certora/scripts/Governor.sh | 10 + .../GovernorCountingSimple-counting.sh | 10 + certora/scripts/WizardControlFirstPriority.sh | 12 + certora/scripts/WizardFirstTry.sh | 10 + certora/scripts/sanity.sh | 14 + certora/scripts/verifyAll.sh | 39 + certora/specs/GovernorBase.spec | 334 ++ certora/specs/GovernorCountingSimple.spec | 221 + certora/specs/RulesInProgress.spec | 139 + certora/specs/sanity.spec | 14 + contracts/access/AccessControl.sol | 8 +- contracts/access/AccessControlEnumerable.sol | 6 +- contracts/governance/Governor.sol | 58 +- contracts/governance/IGovernor.sol | 4 +- contracts/governance/README.adoc | 10 +- .../GovernorCompatibilityBravo.sol | 2 +- .../extensions/GovernorPreventLateQuorum.sol | 107 + .../extensions/GovernorTimelockCompound.sol | 8 +- .../extensions/GovernorTimelockControl.sol | 17 +- .../governance/extensions/GovernorVotes.sol | 11 +- .../GovernorVotesQuorumFraction.sol | 37 +- contracts/governance/utils/IVotes.sol | 61 + contracts/governance/utils/Votes.sol | 211 + contracts/interfaces/IERC2981.sol | 16 +- contracts/interfaces/README.adoc | 2 +- contracts/interfaces/draft-IERC1822.sol | 20 + contracts/metatx/ERC2771Context.sol | 8 +- contracts/metatx/MinimalForwarder.sol | 12 +- contracts/mocks/Base64Mock.sol | 11 + contracts/mocks/CheckpointsImpl.sol | 23 + contracts/mocks/ERC2771ContextMock.sol | 7 +- contracts/mocks/ERC721RoyaltyMock.sol | 33 + contracts/mocks/ERC721VotesMock.sol | 25 + contracts/mocks/GovernorMock.sol | 2 +- .../mocks/GovernorPreventLateQuorumMock.sol | 60 + .../mocks/GovernorTimelockCompoundMock.sol | 2 +- .../mocks/GovernorTimelockControlMock.sol | 2 +- contracts/mocks/GovernorVoteMock.sol | 41 + contracts/mocks/SafeERC20Helper.sol | 2 +- contracts/mocks/SignedMathMock.sol | 23 + contracts/mocks/UUPS/UUPSLegacy.sol | 58 + ...TestInProd.sol => UUPSUpgradeableMock.sol} | 10 - contracts/mocks/VotesMock.sol | 40 + contracts/mocks/wizard/MyGovernor1.sol | 2 +- contracts/mocks/wizard/MyGovernor2.sol | 2 +- contracts/mocks/wizard/MyGovernor3.sol | 2 +- contracts/package.json | 2 +- contracts/proxy/ERC1967/ERC1967Upgrade.sol | 39 +- contracts/proxy/Proxy.sol | 4 +- contracts/proxy/README.adoc | 6 +- contracts/proxy/utils/Initializable.sol | 4 +- contracts/proxy/utils/UUPSUpgradeable.sol | 30 +- contracts/token/ERC1155/IERC1155Receiver.sol | 55 +- contracts/token/ERC1155/README.adoc | 2 + .../presets/ERC1155PresetMinterPauser.sol | 4 +- contracts/token/ERC1155/presets/README.md | 1 + .../token/ERC1155/utils/ERC1155Holder.sol | 7 +- contracts/token/ERC20/ERC20.sol | 97 +- contracts/token/ERC20/IERC20.sol | 12 +- .../token/ERC20/extensions/ERC20Burnable.sol | 8 +- .../token/ERC20/extensions/ERC20FlashMint.sol | 5 +- .../token/ERC20/extensions/ERC20Votes.sol | 27 +- .../token/ERC20/extensions/ERC20VotesComp.sol | 6 +- .../ERC20/presets/ERC20PresetFixedSupply.sol | 4 +- .../ERC20/presets/ERC20PresetMinterPauser.sol | 4 +- contracts/token/ERC20/presets/README.md | 1 + contracts/token/ERC20/utils/TokenTimelock.sol | 16 +- contracts/token/ERC721/ERC721.sol | 27 +- contracts/token/ERC721/README.adoc | 27 +- .../token/ERC721/extensions/ERC721Royalty.sol | 38 + .../ERC721/extensions/IERC721Enumerable.sol | 4 +- .../ERC721/extensions/draft-ERC721Votes.sol | 40 + .../ERC721PresetMinterPauserAutoId.sol | 4 +- contracts/token/ERC721/presets/README.md | 1 + contracts/token/ERC777/ERC777.sol | 38 +- contracts/token/common/ERC2981.sol | 118 + contracts/token/common/README.adoc | 10 + contracts/utils/Address.sol | 25 +- contracts/utils/Base64.sol | 91 + contracts/utils/Checkpoints.sol | 86 + contracts/utils/Multicall.sol | 4 +- contracts/utils/README.adoc | 8 +- contracts/utils/cryptography/ECDSA.sol | 10 +- contracts/utils/cryptography/MerkleProof.sol | 14 +- .../utils/cryptography/SignatureChecker.sol | 2 +- contracts/utils/math/Math.sol | 2 +- contracts/utils/math/SignedMath.sol | 43 + docs/modules/ROOT/pages/erc1155.adoc | 4 +- docs/modules/ROOT/pages/erc20-supply.adoc | 6 +- docs/modules/ROOT/pages/erc721.adoc | 7 +- docs/modules/ROOT/pages/governance.adoc | 23 +- docs/modules/ROOT/pages/index.adoc | 2 +- docs/modules/ROOT/pages/utilities.adoc | 49 +- docs/modules/api/nav.adoc | 4 + docs/modules/api/pages/access.adoc | 286 +- docs/modules/api/pages/finance.adoc | 280 +- docs/modules/api/pages/governance.adoc | 753 ++- docs/modules/api/pages/interfaces.adoc | 307 +- docs/modules/api/pages/metatx.adoc | 280 +- docs/modules/api/pages/proxy.adoc | 352 +- docs/modules/api/pages/security.adoc | 282 +- docs/modules/api/pages/token/ERC1155.adoc | 603 +- .../api/pages/token/ERC1155/presets.md | 1905 ++++++ docs/modules/api/pages/token/ERC20.adoc | 788 +-- docs/modules/api/pages/token/ERC20/presets.md | 1905 ++++++ docs/modules/api/pages/token/ERC721.adoc | 689 ++- .../modules/api/pages/token/ERC721/presets.md | 1905 ++++++ docs/modules/api/pages/token/ERC777.adoc | 306 +- docs/modules/api/pages/token/common.adoc | 2029 +++++++ docs/modules/api/pages/utils.adoc | 508 +- hardhat.config.js | 4 +- package-lock.json | 5269 +++++++---------- package.json | 2 +- scripts/gen-nav.js | 7 +- test/governance/GovernorWorkflow.behavior.js | 7 +- .../extensions/GovernorERC721.test.js | 118 + .../GovernorPreventLateQuorum.test.js | 247 + .../GovernorTimelockCompound.test.js | 53 +- .../GovernorTimelockControl.test.js | 93 +- test/governance/utils/Votes.behavior.js | 344 ++ test/governance/utils/Votes.test.js | 61 + test/helpers/erc1967.js | 24 + test/metatx/MinimalForwarder.test.js | 48 +- test/proxy/Proxy.behaviour.js | 16 +- test/proxy/beacon/BeaconProxy.test.js | 15 +- .../TransparentUpgradeableProxy.behaviour.js | 21 +- test/proxy/utils/UUPSUpgradeable.test.js | 37 +- test/token/ERC20/ERC20.behavior.js | 133 +- test/token/ERC20/ERC20.test.js | 62 +- .../extensions/ERC20Burnable.behavior.js | 2 +- .../ERC20/extensions/ERC20Wrapper.test.js | 2 +- test/token/ERC721/ERC721.behavior.js | 2 +- .../ERC721/extensions/ERC721Royalty.test.js | 40 + .../ERC721/extensions/ERC721Votes.test.js | 174 + test/token/common/ERC2981.behavior.js | 160 + test/utils/Base64.test.js | 29 + test/utils/Checkpoints.test.js | 59 + .../SupportsInterface.behavior.js | 3 + test/utils/math/SignedMath.test.js | 93 + 150 files changed, 18134 insertions(+), 5488 deletions(-) create mode 100644 certora/Makefile create mode 100644 certora/README.md create mode 100644 certora/applyHarness.patch create mode 100644 certora/harnesses/ERC20VotesHarness.sol create mode 100644 certora/harnesses/WizardControlFirstPriority.sol create mode 100644 certora/harnesses/WizardFirstTry.sol create mode 100644 certora/munged/.gitignore create mode 100755 certora/scripts/Governor.sh create mode 100644 certora/scripts/GovernorCountingSimple-counting.sh create mode 100644 certora/scripts/WizardControlFirstPriority.sh create mode 100644 certora/scripts/WizardFirstTry.sh create mode 100644 certora/scripts/sanity.sh create mode 100644 certora/scripts/verifyAll.sh create mode 100644 certora/specs/GovernorBase.spec create mode 100644 certora/specs/GovernorCountingSimple.spec create mode 100644 certora/specs/RulesInProgress.spec create mode 100644 certora/specs/sanity.spec create mode 100644 contracts/governance/extensions/GovernorPreventLateQuorum.sol create mode 100644 contracts/governance/utils/IVotes.sol create mode 100644 contracts/governance/utils/Votes.sol create mode 100644 contracts/interfaces/draft-IERC1822.sol create mode 100644 contracts/mocks/Base64Mock.sol create mode 100644 contracts/mocks/CheckpointsImpl.sol create mode 100644 contracts/mocks/ERC721RoyaltyMock.sol create mode 100644 contracts/mocks/ERC721VotesMock.sol create mode 100644 contracts/mocks/GovernorPreventLateQuorumMock.sol create mode 100644 contracts/mocks/GovernorVoteMock.sol create mode 100644 contracts/mocks/SignedMathMock.sol create mode 100644 contracts/mocks/UUPS/UUPSLegacy.sol rename contracts/mocks/UUPS/{TestInProd.sol => UUPSUpgradeableMock.sol} (75%) create mode 100644 contracts/mocks/VotesMock.sol create mode 100644 contracts/token/ERC1155/presets/README.md create mode 100644 contracts/token/ERC20/presets/README.md create mode 100644 contracts/token/ERC721/extensions/ERC721Royalty.sol create mode 100644 contracts/token/ERC721/extensions/draft-ERC721Votes.sol create mode 100644 contracts/token/ERC721/presets/README.md create mode 100644 contracts/token/common/ERC2981.sol create mode 100644 contracts/token/common/README.adoc create mode 100644 contracts/utils/Base64.sol create mode 100644 contracts/utils/Checkpoints.sol create mode 100644 contracts/utils/math/SignedMath.sol create mode 100644 docs/modules/api/pages/token/ERC1155/presets.md create mode 100644 docs/modules/api/pages/token/ERC20/presets.md create mode 100644 docs/modules/api/pages/token/ERC721/presets.md create mode 100644 docs/modules/api/pages/token/common.adoc create mode 100644 test/governance/extensions/GovernorERC721.test.js create mode 100644 test/governance/extensions/GovernorPreventLateQuorum.test.js create mode 100644 test/governance/utils/Votes.behavior.js create mode 100644 test/governance/utils/Votes.test.js create mode 100644 test/helpers/erc1967.js create mode 100644 test/token/ERC721/extensions/ERC721Royalty.test.js create mode 100644 test/token/ERC721/extensions/ERC721Votes.test.js create mode 100644 test/token/common/ERC2981.behavior.js create mode 100644 test/utils/Base64.test.js create mode 100644 test/utils/Checkpoints.test.js create mode 100644 test/utils/math/SignedMath.test.js diff --git a/.gitignore b/.gitignore index 0a62cf0b3..c60c5d945 100644 --- a/.gitignore +++ b/.gitignore @@ -57,3 +57,8 @@ allFiredEvents # hardhat cache artifacts + +# Certora +.certora* +.last_confs +certora_* diff --git a/CHANGELOG.md b/CHANGELOG.md index 7091041e2..0de91f6b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,38 @@ # Changelog +## 4.5.0 (2022-02-09) + + * `ERC2981`: add implementation of the royalty standard, and the respective extensions for `ERC721` and `ERC1155`. ([#3012](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3012)) + * `GovernorTimelockControl`: improve the `state()` function to have it reflect cases where a proposal has been canceled directly on the timelock. ([#2977](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/2977)) + * Preset contracts are now deprecated in favor of [Contracts Wizard](https://wizard.openzeppelin.com). ([#2986](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/2986)) + * `Governor`: add a relay function to help recover assets sent to a governor that is not its own executor (e.g. when using a timelock). ([#2926](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/2926)) + * `GovernorPreventLateQuorum`: add new module to ensure a minimum voting duration is available after the quorum is reached. ([#2973](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/2973)) + * `ERC721`: improved revert reason when transferring from wrong owner. ([#2975](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/2975)) + * `Votes`: Added a base contract for vote tracking with delegation. ([#2944](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/2944)) + * `ERC721Votes`: Added an extension of ERC721 enabled with vote tracking and delegation. ([#2944](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/2944)) + * `ERC2771Context`: use immutable storage to store the forwarder address, no longer an issue since Solidity >=0.8.8 allows reading immutable variables in the constructor. ([#2917](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/2917)) + * `Base64`: add a library to parse bytes into base64 strings using `encode(bytes memory)` function, and provide examples to show how to use to build URL-safe `tokenURIs`. ([#2884](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/2884)) + * `ERC20`: reduce allowance before triggering transfer. ([#3056](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3056)) + * `ERC20`: do not update allowance on `transferFrom` when allowance is `type(uint256).max`. ([#3085](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3085)) + * `ERC20`: add a `_spendAllowance` internal function. ([#3170](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3170)) + * `ERC20Burnable`: do not update allowance on `burnFrom` when allowance is `type(uint256).max`. ([#3170](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3170)) + * `ERC777`: do not update allowance on `transferFrom` when allowance is `type(uint256).max`. ([#3085](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3085)) + * `ERC777`: add a `_spendAllowance` internal function. ([#3170](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3170)) + * `SignedMath`: a new signed version of the Math library with `max`, `min`, and `average`. ([#2686](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/2686)) + * `SignedMath`: add a `abs(int256)` method that returns the unsigned absolute value of a signed value. ([#2984](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/2984)) + * `ERC1967Upgrade`: Refactor the secure upgrade to use `ERC1822` instead of the previous rollback mechanism. This reduces code complexity and attack surface with similar security guarantees. ([#3021](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3021)) + * `UUPSUpgradeable`: Add `ERC1822` compliance to support the updated secure upgrade mechanism. ([#3021](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3021)) + * Some more functions have been made virtual to customize them via overrides. In many cases this will not imply that other functions in the contract will automatically adapt to the overridden definitions. People who wish to override should consult the source code to understand the impact and if they need to override any additional functions to achieve the desired behavior. + +### Breaking changes + +* `ERC1967Upgrade`: The function `_upgradeToAndCallSecure` was renamed to `_upgradeToAndCallUUPS`, along with the change in security mechanism described above. +* `Address`: The Solidity pragma is increased from `^0.8.0` to `^0.8.1`. This is required by the `account.code.length` syntax that replaces inline assembly. This may require users to bump their compiler version from `0.8.0` to `0.8.1` or later. Note that other parts of the code already include stricter requirements. + ## 4.4.2 (2022-01-11) ### Bugfixes - * `GovernorCompatibilityBravo`: Fix error in the encoding of calldata for proposals submitted through the compatibility interface with explicit signatures. ([#3100](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/#3100)) + * `GovernorCompatibilityBravo`: Fix error in the encoding of calldata for proposals submitted through the compatibility interface with explicit signatures. ([#3100](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3100)) ## 4.4.1 (2021-12-14) diff --git a/README.md b/README.md index 0431e656d..d8537d278 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ The core development principles and strategies that OpenZeppelin Contracts is ba The latest audit was done on October 2018 on version 2.0.0. -Please report any security issues you find via our [bug bounty program on Immunefi](https://www.immunefi.com/bounty/openzeppelin) or directly to security@openzeppelin.org. +We have a [**bug bounty program** on Immunefi](https://www.immunefi.com/bounty/openzeppelin). Please report any security issues you find through the Immunefi dashboard, or reach out to security@openzeppelin.com. Critical bug fixes will be backported to past major releases. diff --git a/SECURITY.md b/SECURITY.md index 62cdbb121..98701be69 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,5 +1,11 @@ # Security Policy +## Bug Bounty + +We have a [**bug bounty program** on Immunefi](https://www.immunefi.com/bounty/openzeppelin). Please report any security issues you find through the Immunefi dashboard, or reach out to security@openzeppelin.com. + +Critical bug fixes will be backported to past major releases. + ## Supported Versions The recommendation is to use the latest version available. @@ -11,8 +17,4 @@ The recommendation is to use the latest version available. | 2.5 | :white_check_mark: | | < 2.0 | :x: | -## Reporting a Vulnerability - -Please report any security issues you find to security@openzeppelin.org. - -Critical bug fixes will be backported to past major releases. +Note that the Solidity language itself only guarantees security updates for the latest release. diff --git a/certora/Makefile b/certora/Makefile new file mode 100644 index 000000000..bbbddbcab --- /dev/null +++ b/certora/Makefile @@ -0,0 +1,24 @@ +default: help + +PATCH = applyHarness.patch +CONTRACTS_DIR = ../contracts +MUNGED_DIR = munged + +help: + @echo "usage:" + @echo " make clean: remove all generated files (those ignored by git)" + @echo " make $(MUNGED_DIR): create $(MUNGED_DIR) directory by applying the patch file to $(CONTRACTS_DIR)" + @echo " make record: record a new patch file capturing the differences between $(CONTRACTS_DIR) and $(MUNGED_DIR)" + +munged: $(wildcard $(CONTRACTS_DIR)/*.sol) $(PATCH) + rm -rf $@ + cp -r $(CONTRACTS_DIR) $@ + patch -p0 -d $@ < $(PATCH) + +record: + diff -ruN $(CONTRACTS_DIR) $(MUNGED_DIR) | sed 's+../contracts/++g' | sed 's+munged/++g' > $(PATCH) + +clean: + git clean -fdX + touch $(PATCH) + diff --git a/certora/README.md b/certora/README.md new file mode 100644 index 000000000..55f84d42f --- /dev/null +++ b/certora/README.md @@ -0,0 +1,56 @@ +# Running the certora verification tool + +These instructions detail the process for running CVT on the OpenZeppelin (Wizard/Governor) contracts. + +Documentation for CVT and the specification language are available +[here](https://certora.atlassian.net/wiki/spaces/CPD/overview) + +## Running the verification + +The scripts in the `certora/scripts` directory are used to submit verification +jobs to the Certora verification service. After the job is complete, the results will be available on +[the Certora portal](https://vaas-stg.certora.com/). + +These scripts should be run from the root directory; for example by running + +``` +sh certora/scripts/verifyAll.sh +``` + +The most important of these is `verifyAll.sh`, which checks +all of the harnessed contracts (`certora/harness/Wizard*.sol`) against all of +the specifications (`certora/spec/*.spec`). + +The other scripts run a subset of the specifications or the contracts. You can +verify different contracts or specifications by changing the `--verify` option, +and you can run a single rule or method with the `--rule` or `--method` option. + +For example, to verify the `WizardFirstPriority` contract against the +`GovernorCountingSimple` specification, you could change the `--verify` line of +the `WizardControlFirstPriortity.sh` script to: + +``` +--verify WizardFirstPriority:certora/specs/GovernorCountingSimple.spec \ +``` + +## Adapting to changes in the contracts + +Some of our rules require the code to be simplified in various ways. Our +primary tool for performing these simplifications is to run verification on a +contract that extends the original contracts and overrides some of the methods. +These "harness" contracts can be found in the `certora/harness` directory. + +This pattern does require some modifications to the original code: some methods +need to be made virtual or public, for example. These changes are handled by +applying a patch to the code before verification. + +When one of the `verify` scripts is executed, it first applies the patch file +`certora/applyHarness.patch` to the `contracts` directory, placing the output +in the `certora/munged` directory. We then verify the contracts in the +`certora/munged` directory. + +If the original contracts change, it is possible to create a conflict with the +patch. In this case, the verify scripts will report an error message and output +rejected changes in the `munged` directory. After merging the changes, run +`make record` in the `certora` directory; this will regenerate the patch file, +which can then be checked into git. diff --git a/certora/applyHarness.patch b/certora/applyHarness.patch new file mode 100644 index 000000000..42b10fab5 --- /dev/null +++ b/certora/applyHarness.patch @@ -0,0 +1,101 @@ +diff -ruN .gitignore .gitignore +--- .gitignore 1969-12-31 19:00:00.000000000 -0500 ++++ .gitignore 2021-12-09 14:46:33.923637220 -0500 +@@ -0,0 +1,2 @@ ++* ++!.gitignore +diff -ruN governance/compatibility/GovernorCompatibilityBravo.sol governance/compatibility/GovernorCompatibilityBravo.sol +--- governance/compatibility/GovernorCompatibilityBravo.sol 2021-12-03 15:24:56.523654357 -0500 ++++ governance/compatibility/GovernorCompatibilityBravo.sol 2021-12-09 14:46:33.923637220 -0500 +@@ -245,7 +245,7 @@ + /** + * @dev See {Governor-_quorumReached}. In this module, only forVotes count toward the quorum. + */ +- function _quorumReached(uint256 proposalId) internal view virtual override returns (bool) { ++ function _quorumReached(uint256 proposalId) public view virtual override returns (bool) { // HARNESS: changed to public from internal + ProposalDetails storage details = _proposalDetails[proposalId]; + return quorum(proposalSnapshot(proposalId)) <= details.forVotes; + } +@@ -253,7 +253,7 @@ + /** + * @dev See {Governor-_voteSucceeded}. In this module, the forVotes must be scritly over the againstVotes. + */ +- function _voteSucceeded(uint256 proposalId) internal view virtual override returns (bool) { ++ function _voteSucceeded(uint256 proposalId) public view virtual override returns (bool) { // HARNESS: changed to public from internal + ProposalDetails storage details = _proposalDetails[proposalId]; + return details.forVotes > details.againstVotes; + } +diff -ruN governance/extensions/GovernorCountingSimple.sol governance/extensions/GovernorCountingSimple.sol +--- governance/extensions/GovernorCountingSimple.sol 2021-12-03 15:24:56.523654357 -0500 ++++ governance/extensions/GovernorCountingSimple.sol 2021-12-09 14:46:33.923637220 -0500 +@@ -64,7 +64,7 @@ + /** + * @dev See {Governor-_quorumReached}. + */ +- function _quorumReached(uint256 proposalId) internal view virtual override returns (bool) { ++ function _quorumReached(uint256 proposalId) public view virtual override returns (bool) { + ProposalVote storage proposalvote = _proposalVotes[proposalId]; + + return quorum(proposalSnapshot(proposalId)) <= proposalvote.forVotes + proposalvote.abstainVotes; +@@ -73,7 +73,7 @@ + /** + * @dev See {Governor-_voteSucceeded}. In this module, the forVotes must be strictly over the againstVotes. + */ +- function _voteSucceeded(uint256 proposalId) internal view virtual override returns (bool) { ++ function _voteSucceeded(uint256 proposalId) public view virtual override returns (bool) { + ProposalVote storage proposalvote = _proposalVotes[proposalId]; + + return proposalvote.forVotes > proposalvote.againstVotes; +diff -ruN governance/extensions/GovernorTimelockControl.sol governance/extensions/GovernorTimelockControl.sol +--- governance/extensions/GovernorTimelockControl.sol 2021-12-03 15:24:56.523654357 -0500 ++++ governance/extensions/GovernorTimelockControl.sol 2021-12-09 14:46:33.923637220 -0500 +@@ -111,7 +111,7 @@ + bytes[] memory calldatas, + bytes32 descriptionHash + ) internal virtual override { +- _timelock.executeBatch{value: msg.value}(targets, values, calldatas, 0, descriptionHash); ++ _timelock.executeBatch{value: msg.value}(targets, values, calldatas, 0, descriptionHash); + } + + /** +diff -ruN governance/Governor.sol governance/Governor.sol +--- governance/Governor.sol 2021-12-03 15:24:56.523654357 -0500 ++++ governance/Governor.sol 2021-12-09 14:46:56.411503587 -0500 +@@ -38,8 +38,8 @@ + + string private _name; + +- mapping(uint256 => ProposalCore) private _proposals; +- ++ mapping(uint256 => ProposalCore) public _proposals; ++ + /** + * @dev Restrict access to governor executing address. Some module might override the _executor function to make + * sure this modifier is consistant with the execution model. +@@ -167,12 +167,12 @@ + /** + * @dev Amount of votes already cast passes the threshold limit. + */ +- function _quorumReached(uint256 proposalId) internal view virtual returns (bool); ++ function _quorumReached(uint256 proposalId) public view virtual returns (bool); // HARNESS: changed to public from internal + + /** + * @dev Is the proposal successful or not. + */ +- function _voteSucceeded(uint256 proposalId) internal view virtual returns (bool); ++ function _voteSucceeded(uint256 proposalId) public view virtual returns (bool); // HARNESS: changed to public from internal + + /** + * @dev Register a vote with a given support and voting weight. +diff -ruN token/ERC20/extensions/ERC20Votes.sol token/ERC20/extensions/ERC20Votes.sol +--- token/ERC20/extensions/ERC20Votes.sol 2021-12-03 15:24:56.527654330 -0500 ++++ token/ERC20/extensions/ERC20Votes.sol 2021-12-09 14:46:33.927637196 -0500 +@@ -84,7 +84,7 @@ + * + * - `blockNumber` must have been already mined + */ +- function getPastVotes(address account, uint256 blockNumber) public view returns (uint256) { ++ function getPastVotes(address account, uint256 blockNumber) public view virtual returns (uint256) { + require(blockNumber < block.number, "ERC20Votes: block not yet mined"); + return _checkpointsLookup(_checkpoints[account], blockNumber); + } diff --git a/certora/harnesses/ERC20VotesHarness.sol b/certora/harnesses/ERC20VotesHarness.sol new file mode 100644 index 000000000..5067ecfba --- /dev/null +++ b/certora/harnesses/ERC20VotesHarness.sol @@ -0,0 +1,28 @@ +import "../munged/token/ERC20/extensions/ERC20Votes.sol"; + +contract ERC20VotesHarness is ERC20Votes { + constructor(string memory name, string memory symbol) ERC20Permit(name) ERC20(name, symbol) {} + + mapping(address => mapping(uint256 => uint256)) public _getPastVotes; + + function _afterTokenTransfer( + address from, + address to, + uint256 amount + ) internal virtual override { + super._afterTokenTransfer(from, to, amount); + _getPastVotes[from][block.number] -= amount; + _getPastVotes[to][block.number] += amount; + } + + /** + * @dev Change delegation for `delegator` to `delegatee`. + * + * Emits events {DelegateChanged} and {DelegateVotesChanged}. + */ + function _delegate(address delegator, address delegatee) internal virtual override{ + super._delegate(delegator, delegatee); + _getPastVotes[delegator][block.number] -= balanceOf(delegator); + _getPastVotes[delegatee][block.number] += balanceOf(delegator); + } +} diff --git a/certora/harnesses/WizardControlFirstPriority.sol b/certora/harnesses/WizardControlFirstPriority.sol new file mode 100644 index 000000000..5ae7fe066 --- /dev/null +++ b/certora/harnesses/WizardControlFirstPriority.sol @@ -0,0 +1,150 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.2; + +import "../munged/governance/Governor.sol"; +import "../munged/governance/extensions/GovernorCountingSimple.sol"; +import "../munged/governance/extensions/GovernorVotes.sol"; +import "../munged/governance/extensions/GovernorVotesQuorumFraction.sol"; +import "../munged/governance/extensions/GovernorTimelockControl.sol"; +import "../munged/governance/extensions/GovernorProposalThreshold.sol"; + +/* +Wizard options: +ProposalThreshhold = 10 +ERC20Votes +TimelockController +*/ + +contract WizardControlFirstPriority is Governor, GovernorProposalThreshold, GovernorCountingSimple, GovernorVotes, GovernorVotesQuorumFraction, GovernorTimelockControl { + constructor(ERC20Votes _token, TimelockController _timelock, string memory name, uint256 quorumFraction) + Governor(name) + GovernorVotes(_token) + GovernorVotesQuorumFraction(quorumFraction) + GovernorTimelockControl(_timelock) + {} + + //HARNESS + + function isExecuted(uint256 proposalId) public view returns (bool) { + return _proposals[proposalId].executed; + } + + function isCanceled(uint256 proposalId) public view returns (bool) { + return _proposals[proposalId].canceled; + } + + uint256 _votingDelay; + + uint256 _votingPeriod; + + uint256 _proposalThreshold; + + mapping(uint256 => uint256) public ghost_sum_vote_power_by_id; + + function _castVote( + uint256 proposalId, + address account, + uint8 support, + string memory reason + ) internal override virtual returns (uint256) { + + uint256 deltaWeight = super._castVote(proposalId, account, support, reason); //HARNESS + ghost_sum_vote_power_by_id[proposalId] += deltaWeight; + + return deltaWeight; + } + + function snapshot(uint256 proposalId) public view returns (uint64) { + return _proposals[proposalId].voteStart._deadline; + } + + + function getExecutor() public view returns (address){ + return _executor(); + } + + // original code, harnessed + + function votingDelay() public view override returns (uint256) { // HARNESS: pure -> view + return _votingDelay; // HARNESS: parametric + } + + function votingPeriod() public view override returns (uint256) { // HARNESS: pure -> view + return _votingPeriod; // HARNESS: parametric + } + + function proposalThreshold() public view override returns (uint256) { // HARNESS: pure -> view + return _proposalThreshold; // HARNESS: parametric + } + + // original code, not harnessed + // The following functions are overrides required by Solidity. + + function quorum(uint256 blockNumber) + public + view + override(IGovernor, GovernorVotesQuorumFraction) + returns (uint256) + { + return super.quorum(blockNumber); + } + + function getVotes(address account, uint256 blockNumber) + public + view + override(IGovernor, GovernorVotes) + returns (uint256) + { + return super.getVotes(account, blockNumber); + } + + function state(uint256 proposalId) + public + view + override(Governor, GovernorTimelockControl) + returns (ProposalState) + { + return super.state(proposalId); + } + + function propose(address[] memory targets, uint256[] memory values, bytes[] memory calldatas, string memory description) + public + override(Governor, GovernorProposalThreshold, IGovernor) + returns (uint256) + { + return super.propose(targets, values, calldatas, description); + } + + function _execute(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash) + internal + override(Governor, GovernorTimelockControl) + { + super._execute(proposalId, targets, values, calldatas, descriptionHash); + } + + function _cancel(address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash) + internal + override(Governor, GovernorTimelockControl) + returns (uint256) + { + return super._cancel(targets, values, calldatas, descriptionHash); + } + + function _executor() + internal + view + override(Governor, GovernorTimelockControl) + returns (address) + { + return super._executor(); + } + + function supportsInterface(bytes4 interfaceId) + public + view + override(Governor, GovernorTimelockControl) + returns (bool) + { + return super.supportsInterface(interfaceId); + } +} diff --git a/certora/harnesses/WizardFirstTry.sol b/certora/harnesses/WizardFirstTry.sol new file mode 100644 index 000000000..83fece04f --- /dev/null +++ b/certora/harnesses/WizardFirstTry.sol @@ -0,0 +1,141 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.2; + +import "../munged/governance/Governor.sol"; +import "../munged/governance/extensions/GovernorCountingSimple.sol"; +import "../munged/governance/extensions/GovernorVotes.sol"; +import "../munged/governance/extensions/GovernorVotesQuorumFraction.sol"; +import "../munged/governance/extensions/GovernorTimelockCompound.sol"; + +/* +Wizard options: +ERC20Votes +TimelockCompound +*/ + +contract WizardFirstTry is Governor, GovernorCountingSimple, GovernorVotes, GovernorVotesQuorumFraction, GovernorTimelockCompound { + constructor(ERC20Votes _token, ICompoundTimelock _timelock, string memory name, uint256 quorumFraction) + Governor(name) + GovernorVotes(_token) + GovernorVotesQuorumFraction(quorumFraction) + GovernorTimelockCompound(_timelock) + {} + + //HARNESS + + function isExecuted(uint256 proposalId) public view returns (bool) { + return _proposals[proposalId].executed; + } + + function isCanceled(uint256 proposalId) public view returns (bool) { + return _proposals[proposalId].canceled; + } + + function snapshot(uint256 proposalId) public view returns (uint64) { + return _proposals[proposalId].voteStart._deadline; + } + + function getExecutor() public view returns (address){ + return _executor(); + } + + uint256 _votingDelay; + + uint256 _votingPeriod; + + mapping(uint256 => uint256) public ghost_sum_vote_power_by_id; + + function _castVote( + uint256 proposalId, + address account, + uint8 support, + string memory reason + ) internal override virtual returns (uint256) { + + uint256 deltaWeight = super._castVote(proposalId, account, support, reason); //HARNESS + ghost_sum_vote_power_by_id[proposalId] += deltaWeight; + + return deltaWeight; + } + + // original code, harnessed + + function votingDelay() public view override virtual returns (uint256) { // HARNESS: pure -> view + return _votingDelay; // HARNESS: parametric + } + + function votingPeriod() public view override virtual returns (uint256) { // HARNESS: pure -> view + return _votingPeriod; // HARNESS: parametric + } + + // original code, not harnessed + // The following functions are overrides required by Solidity. + + function quorum(uint256 blockNumber) + public + view + override(IGovernor, GovernorVotesQuorumFraction) + returns (uint256) + { + return super.quorum(blockNumber); + } + + function getVotes(address account, uint256 blockNumber) + public + view + override(IGovernor, GovernorVotes) + returns (uint256) + { + return super.getVotes(account, blockNumber); + } + + function state(uint256 proposalId) + public + view + override(Governor, GovernorTimelockCompound) + returns (ProposalState) + { + return super.state(proposalId); + } + + function propose(address[] memory targets, uint256[] memory values, bytes[] memory calldatas, string memory description) + public + override(Governor, IGovernor) + returns (uint256) + { + return super.propose(targets, values, calldatas, description); + } + + function _execute(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash) + internal + override(Governor, GovernorTimelockCompound) + { + super._execute(proposalId, targets, values, calldatas, descriptionHash); + } + + function _cancel(address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash) + internal + override(Governor, GovernorTimelockCompound) + returns (uint256) + { + return super._cancel(targets, values, calldatas, descriptionHash); + } + + function _executor() + internal + view + override(Governor, GovernorTimelockCompound) + returns (address) + { + return super._executor(); + } + + function supportsInterface(bytes4 interfaceId) + public + view + override(Governor, GovernorTimelockCompound) + returns (bool) + { + return super.supportsInterface(interfaceId); + } +} diff --git a/certora/munged/.gitignore b/certora/munged/.gitignore new file mode 100644 index 000000000..d6b7ef32c --- /dev/null +++ b/certora/munged/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/certora/scripts/Governor.sh b/certora/scripts/Governor.sh new file mode 100755 index 000000000..53ade5060 --- /dev/null +++ b/certora/scripts/Governor.sh @@ -0,0 +1,10 @@ +make -C certora munged + +certoraRun certora/harnesses/ERC20VotesHarness.sol certora/harnesses/GovernorHarness.sol \ + --verify GovernorHarness:certora/specs/GovernorBase.spec \ + --solc solc8.0 \ + --staging shelly/forSasha \ + --optimistic_loop \ + --settings -copyLoopUnroll=4 \ + --rule voteStartBeforeVoteEnd \ + --msg "$1" diff --git a/certora/scripts/GovernorCountingSimple-counting.sh b/certora/scripts/GovernorCountingSimple-counting.sh new file mode 100644 index 000000000..9ed8fe34c --- /dev/null +++ b/certora/scripts/GovernorCountingSimple-counting.sh @@ -0,0 +1,10 @@ +make -C certora munged + +certoraRun certora/harnesses/ERC20VotesHarness.sol certora/harnesses/GovernorBasicHarness.sol \ + --verify GovernorBasicHarness:certora/specs/GovernorCountingSimple.spec \ + --solc solc8.2 \ + --staging shelly/forSasha \ + --optimistic_loop \ + --settings -copyLoopUnroll=4 \ + --rule hasVotedCorrelation \ + --msg "$1" diff --git a/certora/scripts/WizardControlFirstPriority.sh b/certora/scripts/WizardControlFirstPriority.sh new file mode 100644 index 000000000..b815986ee --- /dev/null +++ b/certora/scripts/WizardControlFirstPriority.sh @@ -0,0 +1,12 @@ +make -C certora munged + +certoraRun certora/harnesses/ERC20VotesHarness.sol certora/harnesses/WizardControlFirstPriority.sol \ + --link WizardControlFirstPriority:token=ERC20VotesHarness \ + --verify WizardControlFirstPriority:certora/specs/GovernorBase.spec \ + --solc solc8.2 \ + --disableLocalTypeChecking \ + --staging shelly/forSasha \ + --optimistic_loop \ + --settings -copyLoopUnroll=4 \ + --rule canVoteDuringVotingPeriod \ + --msg "$1" diff --git a/certora/scripts/WizardFirstTry.sh b/certora/scripts/WizardFirstTry.sh new file mode 100644 index 000000000..fd5a32ab4 --- /dev/null +++ b/certora/scripts/WizardFirstTry.sh @@ -0,0 +1,10 @@ +make -C certora munged + +certoraRun certora/harnesses/ERC20VotesHarness.sol certora/harnesses/WizardFirstTry.sol \ + --verify WizardFirstTry:certora/specs/GovernorBase.spec \ + --solc solc8.2 \ + --staging shelly/forSasha \ + --optimistic_loop \ + --disableLocalTypeChecking \ + --settings -copyLoopUnroll=4 \ + --msg "$1" diff --git a/certora/scripts/sanity.sh b/certora/scripts/sanity.sh new file mode 100644 index 000000000..b6cdb4ec3 --- /dev/null +++ b/certora/scripts/sanity.sh @@ -0,0 +1,14 @@ +make -C certora munged + +for f in certora/harnesses/Wizard*.sol +do + echo "Processing $f" + file=$(basename $f) + echo ${file%.*} + certoraRun certora/harnesses/$file \ + --verify ${file%.*}:certora/specs/sanity.spec "$@" \ + --solc solc8.2 --staging shelly/forSasha \ + --optimistic_loop \ + --msg "checking sanity on ${file%.*}" + --settings -copyLoopUnroll=4 +done diff --git a/certora/scripts/verifyAll.sh b/certora/scripts/verifyAll.sh new file mode 100644 index 000000000..90d76912c --- /dev/null +++ b/certora/scripts/verifyAll.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +make -C certora munged + +for contract in certora/harnesses/Wizard*.sol; +do + for spec in certora/specs/*.spec; + do + contractFile=$(basename $contract) + specFile=$(basename $spec) + if [[ "${specFile%.*}" != "RulesInProgress" ]]; + then + echo "Processing ${contractFile%.*} with $specFile" + if [[ "${contractFile%.*}" = *"WizardControl"* ]]; + then + certoraRun certora/harnesses/ERC20VotesHarness.sol certora/harnesses/$contractFile \ + --link ${contractFile%.*}:token=ERC20VotesHarness \ + --verify ${contractFile%.*}:certora/specs/$specFile "$@" \ + --solc solc8.2 \ + --staging shelly/forSasha \ + --disableLocalTypeChecking \ + --optimistic_loop \ + --settings -copyLoopUnroll=4 \ + --send_only \ + --msg "checking $specFile on ${contractFile%.*}" + else + certoraRun certora/harnesses/ERC20VotesHarness.sol certora/harnesses/$contractFile \ + --verify ${contractFile%.*}:certora/specs/$specFile "$@" \ + --solc solc8.2 \ + --staging shelly/forSasha \ + --disableLocalTypeChecking \ + --optimistic_loop \ + --settings -copyLoopUnroll=4 \ + --send_only \ + --msg "checking $specFile on ${contractFile%.*}" + fi + fi + done +done diff --git a/certora/specs/GovernorBase.spec b/certora/specs/GovernorBase.spec new file mode 100644 index 000000000..031b2680e --- /dev/null +++ b/certora/specs/GovernorBase.spec @@ -0,0 +1,334 @@ +////////////////////////////////////////////////////////////////////////////// +///////////////////// Governor.sol base definitions ////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +using ERC20VotesHarness as erc20votes + +methods { + proposalSnapshot(uint256) returns uint256 envfree // matches proposalVoteStart + proposalDeadline(uint256) returns uint256 envfree // matches proposalVoteEnd + hashProposal(address[],uint256[],bytes[],bytes32) returns uint256 envfree + isExecuted(uint256) returns bool envfree + isCanceled(uint256) returns bool envfree + execute(address[], uint256[], bytes[], bytes32) returns uint256 + hasVoted(uint256, address) returns bool + castVote(uint256, uint8) returns uint256 + updateQuorumNumerator(uint256) + queue(address[], uint256[], bytes[], bytes32) returns uint256 + + // internal functions made public in harness: + _quorumReached(uint256) returns bool + _voteSucceeded(uint256) returns bool envfree + + // function summarization + proposalThreshold() returns uint256 envfree + + getVotes(address, uint256) returns uint256 => DISPATCHER(true) + + getPastTotalSupply(uint256 t) returns uint256 => PER_CALLEE_CONSTANT + getPastVotes(address a, uint256 t) returns uint256 => PER_CALLEE_CONSTANT + + //scheduleBatch(address[],uint256[],bytes[],bytes32,bytes32,uint256) => DISPATCHER(true) + //executeBatch(address[], uint256[], bytes[], bytes32, bytes32) => DISPATCHER(true) +} + +////////////////////////////////////////////////////////////////////////////// +//////////////////////////////// Definitions ///////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + + +// proposal was created - relation proved in noStartBeforeCreation +definition proposalCreated(uint256 pId) returns bool = proposalSnapshot(pId) > 0; + + +////////////////////////////////////////////////////////////////////////////// +///////////////////////////// Helper Functions /////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +function helperFunctionsWithRevert(uint256 proposalId, method f, env e) { + address[] targets; uint256[] values; bytes[] calldatas; string reason; bytes32 descriptionHash; + uint8 support; uint8 v; bytes32 r; bytes32 s; + if (f.selector == propose(address[], uint256[], bytes[], string).selector) { + uint256 result = propose@withrevert(e, targets, values, calldatas, reason); + require(result == proposalId); + } else if (f.selector == execute(address[], uint256[], bytes[], bytes32).selector) { + uint256 result = execute@withrevert(e, targets, values, calldatas, descriptionHash); + require(result == proposalId); + } else if (f.selector == castVote(uint256, uint8).selector) { + castVote@withrevert(e, proposalId, support); + } else if (f.selector == castVoteWithReason(uint256, uint8, string).selector) { + castVoteWithReason@withrevert(e, proposalId, support, reason); + } else if (f.selector == castVoteBySig(uint256, uint8,uint8, bytes32, bytes32).selector) { + castVoteBySig@withrevert(e, proposalId, support, v, r, s); + } else if (f.selector == queue(address[], uint256[], bytes[], bytes32).selector) { + queue@withrevert(e, targets, values, calldatas, descriptionHash); + } else { + calldataarg args; + f@withrevert(e, args); + } +} + +/* + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////// State Diagram ////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // // + // castVote(s)() // + // ------------- propose() ---------------------- time pass --------------- time passes ----------- // + // | No Proposal | --------> | Before Start (Delay) | --------> | Voting Period | ----------------------> | execute() | // + // ------------- ---------------------- --------------- -> Executed/Canceled ----------- // + // ------------------------------------------------------------|---------------|-------------------------|--------------> // + // t start end timelock // + // // + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +*/ + + +/////////////////////////////////////////////////////////////////////////////////////// +///////////////////////////////// Global Valid States ///////////////////////////////// +/////////////////////////////////////////////////////////////////////////////////////// + + +/* + * Start and end date are either initialized (non zero) or uninitialized (zero) simultaneously + * This invariant assumes that the block number cannot be 0 at any stage of the contract cycle + * This is very safe assumption as usually the 0 block is genesis block which is uploaded with data + * by the developers and will not be valid to raise proposals (at the current way that block chain is functioning) + */ + // To use env with general preserved block disable type checking [--disableLocalTypeChecking] +invariant startAndEndDatesNonZero(uint256 pId) + proposalSnapshot(pId) != 0 <=> proposalDeadline(pId) != 0 + { preserved with (env e){ + require e.block.number > 0; + }} + + +/* + * If a proposal is canceled it must have a start and an end date + */ + // To use env with general preserved block disable type checking [--disableLocalTypeChecking] +invariant canceledImplyStartAndEndDateNonZero(uint pId) + isCanceled(pId) => proposalSnapshot(pId) != 0 + {preserved with (env e){ + require e.block.number > 0; + }} + + +/* + * If a proposal is executed it must have a start and an end date + */ + // To use env with general preserved block disable type checking [--disableLocalTypeChecking] +invariant executedImplyStartAndEndDateNonZero(uint pId) + isExecuted(pId) => proposalSnapshot(pId) != 0 + { preserved with (env e){ + requireInvariant startAndEndDatesNonZero(pId); + require e.block.number > 0; + }} + + +/* + * A proposal starting block number must be less or equal than the proposal end date + */ +invariant voteStartBeforeVoteEnd(uint256 pId) + // from < to <= because snapshot and deadline can be the same block number if delays are set to 0 + // This is possible before the integration of GovernorSettings.sol to the system. + // After integration of GovernorSettings.sol the invariant expression should be changed from <= to < + (proposalSnapshot(pId) > 0 => proposalSnapshot(pId) <= proposalDeadline(pId)) + // (proposalSnapshot(pId) > 0 => proposalSnapshot(pId) <= proposalDeadline(pId)) + { preserved { + requireInvariant startAndEndDatesNonZero(pId); + }} + + +/* + * A proposal cannot be both executed and canceled simultaneously. + */ +invariant noBothExecutedAndCanceled(uint256 pId) + !isExecuted(pId) || !isCanceled(pId) + + +/* + * A proposal could be executed only if quorum was reached and vote succeeded + */ +rule executionOnlyIfQuoromReachedAndVoteSucceeded(uint256 pId, env e, method f){ + bool isExecutedBefore = isExecuted(pId); + bool quorumReachedBefore = _quorumReached(e, pId); + bool voteSucceededBefore = _voteSucceeded(pId); + + calldataarg args; + f(e, args); + + bool isExecutedAfter = isExecuted(pId); + assert (!isExecutedBefore && isExecutedAfter) => (quorumReachedBefore && voteSucceededBefore), "quorum was changed"; +} + +/////////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////// In-State Rules ///////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////////////// + +//========================================== +//------------- Voting Period -------------- +//========================================== + +/* + * A user cannot vote twice + */ + // Checked for castVote only. all 3 castVote functions call _castVote, so the completness of the verification is counted on + // the fact that the 3 functions themselves makes no chages, but rather call an internal function to execute. + // That means that we do not check those 3 functions directly, however for castVote & castVoteWithReason it is quite trivial + // to understand why this is ok. For castVoteBySig we basically assume that the signature referendum is correct without checking it. + // We could check each function seperately and pass the rule, but that would have uglyfied the code with no concrete + // benefit, as it is evident that nothing is happening in the first 2 functions (calling a view function), and we do not desire to check the signature verification. +rule doubleVoting(uint256 pId, uint8 sup, method f) { + env e; + address user = e.msg.sender; + bool votedCheck = hasVoted(e, pId, user); + + castVote@withrevert(e, pId, sup); + + assert votedCheck => lastReverted, "double voting accured"; +} + + +/////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////// State Transitions Rules ////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////////////// + +//=========================================== +//-------- Propose() --> End of Time -------- +//=========================================== + + +/* + * Once a proposal is created, voteStart and voteEnd are immutable + */ +rule immutableFieldsAfterProposalCreation(uint256 pId, method f) { + uint256 _voteStart = proposalSnapshot(pId); + uint256 _voteEnd = proposalDeadline(pId); + + require proposalCreated(pId); // startDate > 0 + + env e; calldataarg arg; + f(e, arg); + + uint256 voteStart_ = proposalSnapshot(pId); + uint256 voteEnd_ = proposalDeadline(pId); + assert _voteStart == voteStart_, "Start date was changed"; + assert _voteEnd == voteEnd_, "End date was changed"; +} + + +/* + * Voting cannot start at a block number prior to proposal’s creation block number + */ +rule noStartBeforeCreation(uint256 pId) { + uint256 previousStart = proposalSnapshot(pId); + // This line makes sure that we see only cases where start date is changed from 0, i.e. creation of proposal + // We proved in immutableFieldsAfterProposalCreation that once dates set for proposal, it cannot be changed + require !proposalCreated(pId); // previousStart == 0; + + env e; calldataarg args; + propose(e, args); + + uint256 newStart = proposalSnapshot(pId); + // if created, start is after current block number (creation block) + assert(newStart != previousStart => newStart >= e.block.number); +} + + +//============================================ +//--- End of Voting Period --> End of Time --- +//============================================ + + +/* + * A proposal can neither be executed nor canceled before it ends + */ + // By induction it cannot be executed nor canceled before it starts, due to voteStartBeforeVoteEnd +rule noExecuteOrCancelBeforeDeadline(uint256 pId, method f){ + require !isExecuted(pId) && !isCanceled(pId); + + env e; calldataarg args; + f(e, args); + + assert e.block.number < proposalDeadline(pId) => (!isExecuted(pId) && !isCanceled(pId)), "executed/cancelled before deadline"; +} + +//////////////////////////////////////////////////////////////////////////////// +////////////////////// Integrity Of Functions (Unit Tests) ///////////////////// +//////////////////////////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////////////////////////// +////////////////////////////// High Level Rules //////////////////////////////// +//////////////////////////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////////////////////////// +///////////////////////////// Not Categorized Yet ////////////////////////////// +//////////////////////////////////////////////////////////////////////////////// + + +/* + * All proposal specific (non-view) functions should revert if proposal is executed + */ + // In this rule we show that if a function is executed, i.e. execute() was called on the proposal ID, + // non of the proposal specific functions can make changes again. In executedOnlyAfterExecuteFunc + // we connected the executed attribute to the execute() function, showing that only execute() can + // change it, and that it will always change it. +rule allFunctionsRevertIfExecuted(method f) filtered { f -> + !f.isView && !f.isFallback + && f.selector != updateTimelock(address).selector + && f.selector != updateQuorumNumerator(uint256).selector + && f.selector != queue(address[],uint256[],bytes[],bytes32).selector + && f.selector != relay(address,uint256,bytes).selector + && f.selector != 0xb9a61961 // __acceptAdmin() +} { + env e; calldataarg args; + uint256 pId; + require(isExecuted(pId)); + requireInvariant noBothExecutedAndCanceled(pId); + requireInvariant executedImplyStartAndEndDateNonZero(pId); + + helperFunctionsWithRevert(pId, f, e); + + assert(lastReverted, "Function was not reverted"); +} + +/* + * All proposal specific (non-view) functions should revert if proposal is canceled + */ +rule allFunctionsRevertIfCanceled(method f) filtered { + f -> !f.isView && !f.isFallback + && f.selector != updateTimelock(address).selector + && f.selector != updateQuorumNumerator(uint256).selector + && f.selector != queue(address[],uint256[],bytes[],bytes32).selector + && f.selector != relay(address,uint256,bytes).selector + && f.selector != 0xb9a61961 // __acceptAdmin() +} { + env e; calldataarg args; + uint256 pId; + require(isCanceled(pId)); + requireInvariant noBothExecutedAndCanceled(pId); + requireInvariant canceledImplyStartAndEndDateNonZero(pId); + + helperFunctionsWithRevert(pId, f, e); + + assert(lastReverted, "Function was not reverted"); +} + +/* + * Proposal can be switched to executed only via execute() function + */ +rule executedOnlyAfterExecuteFunc(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash, method f) { + env e; calldataarg args; + uint256 pId; + bool executedBefore = isExecuted(pId); + require(!executedBefore); + + helperFunctionsWithRevert(pId, f, e); + + bool executedAfter = isExecuted(pId); + assert(executedAfter != executedBefore => f.selector == execute(address[], uint256[], bytes[], bytes32).selector, "isExecuted only changes in the execute method"); +} + diff --git a/certora/specs/GovernorCountingSimple.spec b/certora/specs/GovernorCountingSimple.spec new file mode 100644 index 000000000..6d2d5fbb7 --- /dev/null +++ b/certora/specs/GovernorCountingSimple.spec @@ -0,0 +1,221 @@ +import "GovernorBase.spec" + +using ERC20VotesHarness as erc20votes + +methods { + ghost_sum_vote_power_by_id(uint256) returns uint256 envfree + + quorum(uint256) returns uint256 + proposalVotes(uint256) returns (uint256, uint256, uint256) envfree + + quorumNumerator() returns uint256 + _executor() returns address + + erc20votes._getPastVotes(address, uint256) returns uint256 + + getExecutor() returns address + + timelock() returns address +} + + +////////////////////////////////////////////////////////////////////////////// +///////////////////////////////// GHOSTS ///////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + + +//////////// ghosts to keep track of votes counting //////////// + +/* + * the sum of voting power of those who voted + */ +ghost sum_all_votes_power() returns uint256 { + init_state axiom sum_all_votes_power() == 0; +} + +hook Sstore ghost_sum_vote_power_by_id [KEY uint256 pId] uint256 current_power(uint256 old_power) STORAGE { + havoc sum_all_votes_power assuming sum_all_votes_power@new() == sum_all_votes_power@old() - old_power + current_power; +} + +/* + * sum of all votes casted per proposal + */ +ghost tracked_weight(uint256) returns uint256 { + init_state axiom forall uint256 p. tracked_weight(p) == 0; +} + +/* + * sum of all votes casted + */ +ghost sum_tracked_weight() returns uint256 { + init_state axiom sum_tracked_weight() == 0; +} + +/* + * getter for _proposalVotes.againstVotes + */ +ghost votesAgainst() returns uint256 { + init_state axiom votesAgainst() == 0; +} + +/* + * getter for _proposalVotes.forVotes + */ +ghost votesFor() returns uint256 { + init_state axiom votesFor() == 0; +} + +/* + * getter for _proposalVotes.abstainVotes + */ +ghost votesAbstain() returns uint256 { + init_state axiom votesAbstain() == 0; +} + +hook Sstore _proposalVotes [KEY uint256 pId].againstVotes uint256 votes(uint256 old_votes) STORAGE { + havoc tracked_weight assuming forall uint256 p.(p == pId => tracked_weight@new(p) == tracked_weight@old(p) - old_votes + votes) && + (p != pId => tracked_weight@new(p) == tracked_weight@old(p)); + havoc sum_tracked_weight assuming sum_tracked_weight@new() == sum_tracked_weight@old() - old_votes + votes; + havoc votesAgainst assuming votesAgainst@new() == votesAgainst@old() - old_votes + votes; +} + +hook Sstore _proposalVotes [KEY uint256 pId].forVotes uint256 votes(uint256 old_votes) STORAGE { + havoc tracked_weight assuming forall uint256 p.(p == pId => tracked_weight@new(p) == tracked_weight@old(p) - old_votes + votes) && + (p != pId => tracked_weight@new(p) == tracked_weight@old(p)); + havoc sum_tracked_weight assuming sum_tracked_weight@new() == sum_tracked_weight@old() - old_votes + votes; + havoc votesFor assuming votesFor@new() == votesFor@old() - old_votes + votes; +} + +hook Sstore _proposalVotes [KEY uint256 pId].abstainVotes uint256 votes(uint256 old_votes) STORAGE { + havoc tracked_weight assuming forall uint256 p.(p == pId => tracked_weight@new(p) == tracked_weight@old(p) - old_votes + votes) && + (p != pId => tracked_weight@new(p) == tracked_weight@old(p)); + havoc sum_tracked_weight assuming sum_tracked_weight@new() == sum_tracked_weight@old() - old_votes + votes; + havoc votesAbstain assuming votesAbstain@new() == votesAbstain@old() - old_votes + votes; +} + + +////////////////////////////////////////////////////////////////////////////// +////////////////////////////// INVARIANTS //////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + + +/* + * sum of all votes casted is equal to the sum of voting power of those who voted, per each proposal + */ +invariant SumOfVotesCastEqualSumOfPowerOfVotedPerProposal(uint256 pId) + tracked_weight(pId) == ghost_sum_vote_power_by_id(pId) + + +/* + * sum of all votes casted is equal to the sum of voting power of those who voted + */ +invariant SumOfVotesCastEqualSumOfPowerOfVoted() + sum_tracked_weight() == sum_all_votes_power() + + +/* +* sum of all votes casted is greater or equal to the sum of voting power of those who voted at a specific proposal +*/ +invariant OneIsNotMoreThanAll(uint256 pId) + sum_all_votes_power() >= tracked_weight(pId) + + +////////////////////////////////////////////////////////////////////////////// +///////////////////////////////// RULES ////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + + +/* + * Only sender's voting status can be changed by execution of any cast vote function + */ +// Checked for castVote only. all 3 castVote functions call _castVote, so the completness of the verification is counted on + // the fact that the 3 functions themselves makes no chages, but rather call an internal function to execute. + // That means that we do not check those 3 functions directly, however for castVote & castVoteWithReason it is quite trivial + // to understand why this is ok. For castVoteBySig we basically assume that the signature referendum is correct without checking it. + // We could check each function seperately and pass the rule, but that would have uglyfied the code with no concrete + // benefit, as it is evident that nothing is happening in the first 2 functions (calling a view function), and we do not desire to check the signature verification. +rule noVoteForSomeoneElse(uint256 pId, uint8 sup, method f) { + env e; calldataarg args; + + address voter = e.msg.sender; + address user; + + bool hasVotedBefore_User = hasVoted(e, pId, user); + + castVote@withrevert(e, pId, sup); + require(!lastReverted); + + bool hasVotedAfter_User = hasVoted(e, pId, user); + + assert user != voter => hasVotedBefore_User == hasVotedAfter_User; +} + + +/* +* Total voting tally is monotonically non-decreasing in every operation +*/ +rule votingWeightMonotonicity(method f){ + uint256 votingWeightBefore = sum_tracked_weight(); + + env e; + calldataarg args; + f(e, args); + + uint256 votingWeightAfter = sum_tracked_weight(); + + assert votingWeightBefore <= votingWeightAfter, "Voting weight was decreased somehow"; +} + + +/* +* A change in hasVoted must be correlated with an non-decreasing of the vote supports (nondecrease because user can vote with weight 0) +*/ +rule hasVotedCorrelation(uint256 pId, method f, env e, uint256 bn) { + address acc = e.msg.sender; + + uint256 againstBefore = votesAgainst(); + uint256 forBefore = votesFor(); + uint256 abstainBefore = votesAbstain(); + + bool hasVotedBefore = hasVoted(e, pId, acc); + + helperFunctionsWithRevert(pId, f, e); + require(!lastReverted); + + uint256 againstAfter = votesAgainst(); + uint256 forAfter = votesFor(); + uint256 abstainAfter = votesAbstain(); + + bool hasVotedAfter = hasVoted(e, pId, acc); + + assert (!hasVotedBefore && hasVotedAfter) => againstBefore <= againstAfter || forBefore <= forAfter || abstainBefore <= abstainAfter, "no correlation"; +} + + +/* +* Only privileged users can execute privileged operations, e.g. change _quorumNumerator or _timelock +*/ +rule privilegedOnlyNumerator(method f, uint256 newQuorumNumerator){ + env e; + calldataarg arg; + uint256 quorumNumBefore = quorumNumerator(e); + + f(e, arg); + + uint256 quorumNumAfter = quorumNumerator(e); + address executorCheck = getExecutor(e); + + assert quorumNumBefore != quorumNumAfter => e.msg.sender == executorCheck, "non priveleged user changed quorum numerator"; +} + +rule privilegedOnlyTimelock(method f, uint256 newQuorumNumerator){ + env e; + calldataarg arg; + uint256 timelockBefore = timelock(e); + + f(e, arg); + + uint256 timelockAfter = timelock(e); + + assert timelockBefore != timelockAfter => e.msg.sender == timelockBefore, "non priveleged user changed timelock"; +} diff --git a/certora/specs/RulesInProgress.spec b/certora/specs/RulesInProgress.spec new file mode 100644 index 000000000..cbad3336e --- /dev/null +++ b/certora/specs/RulesInProgress.spec @@ -0,0 +1,139 @@ +////////////////////////////////////////////////////////////////////////////// +////////////// THIS SPEC IS A RESERVE FOR NOT IN PROGRESS ////////////// +////////////////////////////////////////////////////////////////////////////// + +import "GovernorBase.spec" + +using ERC20VotesHarness as erc20votes + +methods { + ghost_sum_vote_power_by_id(uint256) returns uint256 envfree + + quorum(uint256) returns uint256 + proposalVotes(uint256) returns (uint256, uint256, uint256) envfree + + quorumNumerator() returns uint256 + _executor() returns address + + erc20votes._getPastVotes(address, uint256) returns uint256 + + getExecutor() returns address + + timelock() returns address +} + + +////////////////////////////////////////////////////////////////////////////// +///////////////////////////////// GHOSTS ///////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + + +//////////// ghosts to keep track of votes counting //////////// + +/* + * the sum of voting power of those who voted + */ +ghost sum_all_votes_power() returns uint256 { + init_state axiom sum_all_votes_power() == 0; +} + +hook Sstore ghost_sum_vote_power_by_id [KEY uint256 pId] uint256 current_power(uint256 old_power) STORAGE { + havoc sum_all_votes_power assuming sum_all_votes_power@new() == sum_all_votes_power@old() - old_power + current_power; +} + +/* + * sum of all votes casted per proposal + */ +ghost tracked_weight(uint256) returns uint256 { + init_state axiom forall uint256 p. tracked_weight(p) == 0; +} + +/* + * sum of all votes casted + */ +ghost sum_tracked_weight() returns uint256 { + init_state axiom sum_tracked_weight() == 0; +} + +/* + * getter for _proposalVotes.againstVotes + */ +ghost votesAgainst() returns uint256 { + init_state axiom votesAgainst() == 0; +} + +/* + * getter for _proposalVotes.forVotes + */ +ghost votesFor() returns uint256 { + init_state axiom votesFor() == 0; +} + +/* + * getter for _proposalVotes.abstainVotes + */ +ghost votesAbstain() returns uint256 { + init_state axiom votesAbstain() == 0; +} + +hook Sstore _proposalVotes [KEY uint256 pId].againstVotes uint256 votes(uint256 old_votes) STORAGE { + havoc tracked_weight assuming forall uint256 p.(p == pId => tracked_weight@new(p) == tracked_weight@old(p) - old_votes + votes) && + (p != pId => tracked_weight@new(p) == tracked_weight@old(p)); + havoc sum_tracked_weight assuming sum_tracked_weight@new() == sum_tracked_weight@old() - old_votes + votes; + havoc votesAgainst assuming votesAgainst@new() == votesAgainst@old() - old_votes + votes; +} + +hook Sstore _proposalVotes [KEY uint256 pId].forVotes uint256 votes(uint256 old_votes) STORAGE { + havoc tracked_weight assuming forall uint256 p.(p == pId => tracked_weight@new(p) == tracked_weight@old(p) - old_votes + votes) && + (p != pId => tracked_weight@new(p) == tracked_weight@old(p)); + havoc sum_tracked_weight assuming sum_tracked_weight@new() == sum_tracked_weight@old() - old_votes + votes; + havoc votesFor assuming votesFor@new() == votesFor@old() - old_votes + votes; +} + +hook Sstore _proposalVotes [KEY uint256 pId].abstainVotes uint256 votes(uint256 old_votes) STORAGE { + havoc tracked_weight assuming forall uint256 p.(p == pId => tracked_weight@new(p) == tracked_weight@old(p) - old_votes + votes) && + (p != pId => tracked_weight@new(p) == tracked_weight@old(p)); + havoc sum_tracked_weight assuming sum_tracked_weight@new() == sum_tracked_weight@old() - old_votes + votes; + havoc votesAbstain assuming votesAbstain@new() == votesAbstain@old() - old_votes + votes; +} + + +////////////////////////////////////////////////////////////////////////////// +////////////////////////////// INVARIANTS //////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + + + +////////////////////////////////////////////////////////////////////////////// +///////////////////////////////// RULES ////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + + +//NOT FINISHED +/* +* the sum of voting power of those who voted is less or equal to the maximum possible votes, per each proposal +*/ +rule possibleTotalVotes(uint256 pId, uint8 sup, env e, method f) { + + // add requireinvariant for all i, j. i = i - 1 && i < j => checkpointlookup[i] < checkpointlookup[j]; + require tracked_weight(pId) <= erc20votes.getPastTotalSupply(e, proposalSnapshot(pId)); + + uint256 againstB; + uint256 forB; + uint256 absatinB; + againstB, forB, absatinB = proposalVotes(pId); + + calldataarg args; + //f(e, args); + + castVote(e, pId, sup); + + uint256 against; + uint256 for; + uint256 absatin; + against, for, absatin = proposalVotes(pId); + + uint256 ps = proposalSnapshot(pId); + + assert tracked_weight(pId) <= erc20votes.getPastTotalSupply(e, proposalSnapshot(pId)), "bla bla bla"; +} \ No newline at end of file diff --git a/certora/specs/sanity.spec b/certora/specs/sanity.spec new file mode 100644 index 000000000..e08f68845 --- /dev/null +++ b/certora/specs/sanity.spec @@ -0,0 +1,14 @@ +/* +This rule looks for a non-reverting execution path to each method, including those overridden in the harness. +A method has such an execution path if it violates this rule. +How it works: + - If there is a non-reverting execution path, we reach the false assertion, and the sanity fails. + - If all execution paths are reverting, we never call the assertion, and the method will pass this rule vacuously. +*/ + +rule sanity(method f) { + env e; + calldataarg arg; + f(e, arg); + assert false; +} \ No newline at end of file diff --git a/contracts/access/AccessControl.sol b/contracts/access/AccessControl.sol index 95f53b330..4df6b4413 100644 --- a/contracts/access/AccessControl.sol +++ b/contracts/access/AccessControl.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (access/AccessControl.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (access/AccessControl.sol) pragma solidity ^0.8.0; @@ -81,7 +81,7 @@ abstract contract AccessControl is Context, IAccessControl, ERC165 { /** * @dev Returns `true` if `account` has been granted `role`. */ - function hasRole(bytes32 role, address account) public view override returns (bool) { + function hasRole(bytes32 role, address account) public view virtual override returns (bool) { return _roles[role].members[account]; } @@ -92,7 +92,7 @@ abstract contract AccessControl is Context, IAccessControl, ERC165 { * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ */ - function _checkRole(bytes32 role, address account) internal view { + function _checkRole(bytes32 role, address account) internal view virtual { if (!hasRole(role, account)) { revert( string( @@ -113,7 +113,7 @@ abstract contract AccessControl is Context, IAccessControl, ERC165 { * * To change a role's admin, use {_setRoleAdmin}. */ - function getRoleAdmin(bytes32 role) public view override returns (bytes32) { + function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) { return _roles[role].adminRole; } diff --git a/contracts/access/AccessControlEnumerable.sol b/contracts/access/AccessControlEnumerable.sol index cb1c88b65..354e1bed2 100644 --- a/contracts/access/AccessControlEnumerable.sol +++ b/contracts/access/AccessControlEnumerable.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (access/AccessControlEnumerable.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (access/AccessControlEnumerable.sol) pragma solidity ^0.8.0; @@ -34,7 +34,7 @@ abstract contract AccessControlEnumerable is IAccessControlEnumerable, AccessCon * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] * for more information. */ - function getRoleMember(bytes32 role, uint256 index) public view override returns (address) { + function getRoleMember(bytes32 role, uint256 index) public view virtual override returns (address) { return _roleMembers[role].at(index); } @@ -42,7 +42,7 @@ abstract contract AccessControlEnumerable is IAccessControlEnumerable, AccessCon * @dev Returns the number of accounts that have `role`. Can be used * together with {getRoleMember} to enumerate all bearers of a role. */ - function getRoleMemberCount(bytes32 role) public view override returns (uint256) { + function getRoleMemberCount(bytes32 role) public view virtual override returns (uint256) { return _roleMembers[role].length(); } diff --git a/contracts/governance/Governor.sol b/contracts/governance/Governor.sol index 08d5764f8..837a9b610 100644 --- a/contracts/governance/Governor.sol +++ b/contracts/governance/Governor.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (governance/Governor.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (governance/Governor.sol) pragma solidity ^0.8.0; @@ -41,8 +41,9 @@ abstract contract Governor is Context, ERC165, EIP712, IGovernor { mapping(uint256 => ProposalCore) private _proposals; /** - * @dev Restrict access to governor executing address. Some module might override the _executor function to make - * sure this modifier is consistant with the execution model. + * @dev Restrict access of functions to the governance executor, which may be the Governor itself or a timelock + * contract, as specified by {_executor}. This generally means that function with this modifier must be voted on and + * executed through the governance protocol. */ modifier onlyGovernance() { require(_msgSender() == _executor(), "Governor: onlyGovernance"); @@ -110,24 +111,37 @@ abstract contract Governor is Context, ERC165, EIP712, IGovernor { * @dev See {IGovernor-state}. */ function state(uint256 proposalId) public view virtual override returns (ProposalState) { - ProposalCore memory proposal = _proposals[proposalId]; + ProposalCore storage proposal = _proposals[proposalId]; if (proposal.executed) { return ProposalState.Executed; - } else if (proposal.canceled) { + } + + if (proposal.canceled) { return ProposalState.Canceled; - } else if (proposal.voteStart.getDeadline() >= block.number) { - return ProposalState.Pending; - } else if (proposal.voteEnd.getDeadline() >= block.number) { - return ProposalState.Active; - } else if (proposal.voteEnd.isExpired()) { - return - _quorumReached(proposalId) && _voteSucceeded(proposalId) - ? ProposalState.Succeeded - : ProposalState.Defeated; - } else { + } + + uint256 snapshot = proposalSnapshot(proposalId); + + if (snapshot == 0) { revert("Governor: unknown proposal id"); } + + if (snapshot >= block.number) { + return ProposalState.Pending; + } + + uint256 deadline = proposalDeadline(proposalId); + + if (deadline >= block.number) { + return ProposalState.Active; + } + + if (_quorumReached(proposalId) && _voteSucceeded(proposalId)) { + return ProposalState.Succeeded; + } else { + return ProposalState.Defeated; + } } /** @@ -347,6 +361,20 @@ abstract contract Governor is Context, ERC165, EIP712, IGovernor { return weight; } + /** + * @dev Relays a transaction or function call to an arbitrary target. In cases where the governance executor + * is some contract other than the governor itself, like when using a timelock, this function can be invoked + * in a governance proposal to recover tokens or Ether that was sent to the governor contract by mistake. + * Note that if the executor is simply the governor itself, use of `relay` is redundant. + */ + function relay( + address target, + uint256 value, + bytes calldata data + ) external virtual onlyGovernance { + Address.functionCallWithValue(target, data, value); + } + /** * @dev Address through which the governor executes action. Will be overloaded by module that execute actions * through another contract such as a timelock. diff --git a/contracts/governance/IGovernor.sol b/contracts/governance/IGovernor.sol index 54722d32f..3c65f40da 100644 --- a/contracts/governance/IGovernor.sol +++ b/contracts/governance/IGovernor.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (governance/IGovernor.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (governance/IGovernor.sol) pragma solidity ^0.8.0; @@ -193,7 +193,7 @@ abstract contract IGovernor is IERC165 { function castVote(uint256 proposalId, uint8 support) public virtual returns (uint256 balance); /** - * @dev Cast a with a reason + * @dev Cast a vote with a reason * * Emits a {VoteCast} event. */ diff --git a/contracts/governance/README.adoc b/contracts/governance/README.adoc index d388f4e3a..58daf56e7 100644 --- a/contracts/governance/README.adoc +++ b/contracts/governance/README.adoc @@ -42,13 +42,15 @@ Other extensions can customize the behavior or interface in multiple ways. * {GovernorSettings}: Manages some of the settings (voting delay, voting period duration, and proposal threshold) in a way that can be updated through a governance proposal, without requiering an upgrade. +* {GovernorPreventLateQuorum}: Ensures there is a minimum voting period after quorum is reached as a security protection against large voters. + In addition to modules and extensions, the core contract requires a few virtual functions to be implemented to your particular specifications: * <>: Delay (in number of blocks) since the proposal is submitted until voting power is fixed and voting starts. This can be used to enforce a delay after a proposal is published for users to buy tokens, or delegate their votes. * <>: Delay (in number of blocks) since the proposal starts until voting ends. * <>: Quorum required for a proposal to be successful. This function includes a `blockNumber` argument so the quorum can adapt through time, for example, to follow a token's `totalSupply`. -NOTE: Functions of the `Governor` contract do not include access control. If you want to restrict access, you should add these checks by overloading the particular functions. Among these, {Governor-_cancel} is internal by default, and you will have to expose it (which the right access control mechanism) yourself if this function is needed. +NOTE: Functions of the `Governor` contract do not include access control. If you want to restrict access, you should add these checks by overloading the particular functions. Among these, {Governor-_cancel} is internal by default, and you will have to expose it (with the right access control mechanism) yourself if this function is needed. === Core @@ -74,12 +76,18 @@ NOTE: Functions of the `Governor` contract do not include access control. If you {{GovernorSettings}} +{{GovernorPreventLateQuorum}} + {{GovernorCompatibilityBravo}} === Deprecated {{GovernorProposalThreshold}} +== Utils + +{{Votes}} + == Timelock In a governance system, the {TimelockController} contract is in charge of introducing a delay between a proposal and its execution. It can be used with or without a {Governor}. diff --git a/contracts/governance/compatibility/GovernorCompatibilityBravo.sol b/contracts/governance/compatibility/GovernorCompatibilityBravo.sol index 1849ec337..cbb2200b5 100644 --- a/contracts/governance/compatibility/GovernorCompatibilityBravo.sol +++ b/contracts/governance/compatibility/GovernorCompatibilityBravo.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v4.4.2) (governance/compatibility/GovernorCompatibilityBravo.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (governance/compatibility/GovernorCompatibilityBravo.sol) pragma solidity ^0.8.0; diff --git a/contracts/governance/extensions/GovernorPreventLateQuorum.sol b/contracts/governance/extensions/GovernorPreventLateQuorum.sol new file mode 100644 index 000000000..6d96dc33d --- /dev/null +++ b/contracts/governance/extensions/GovernorPreventLateQuorum.sol @@ -0,0 +1,107 @@ +// SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v4.5.0) (governance/extensions/GovernorPreventLateQuorum.sol) + +pragma solidity ^0.8.0; + +import "../Governor.sol"; +import "../../utils/math/Math.sol"; + +/** + * @dev A module that ensures there is a minimum voting period after quorum is reached. This prevents a large voter from + * swaying a vote and triggering quorum at the last minute, by ensuring there is always time for other voters to react + * and try to oppose the decision. + * + * If a vote causes quorum to be reached, the proposal's voting period may be extended so that it does not end before at + * least a given number of blocks have passed (the "vote extension" parameter). This parameter can be set by the + * governance executor (e.g. through a governance proposal). + * + * _Available since v4.5._ + */ +abstract contract GovernorPreventLateQuorum is Governor { + using SafeCast for uint256; + using Timers for Timers.BlockNumber; + + uint64 private _voteExtension; + mapping(uint256 => Timers.BlockNumber) private _extendedDeadlines; + + /// @dev Emitted when a proposal deadline is pushed back due to reaching quorum late in its voting period. + event ProposalExtended(uint256 indexed proposalId, uint64 extendedDeadline); + + /// @dev Emitted when the {lateQuorumVoteExtension} parameter is changed. + event LateQuorumVoteExtensionSet(uint64 oldVoteExtension, uint64 newVoteExtension); + + /** + * @dev Initializes the vote extension parameter: the number of blocks that are required to pass since a proposal + * reaches quorum until its voting period ends. If necessary the voting period will be extended beyond the one set + * at proposal creation. + */ + constructor(uint64 initialVoteExtension) { + _setLateQuorumVoteExtension(initialVoteExtension); + } + + /** + * @dev Returns the proposal deadline, which may have been extended beyond that set at proposal creation, if the + * proposal reached quorum late in the voting period. See {Governor-proposalDeadline}. + */ + function proposalDeadline(uint256 proposalId) public view virtual override returns (uint256) { + return Math.max(super.proposalDeadline(proposalId), _extendedDeadlines[proposalId].getDeadline()); + } + + /** + * @dev Casts a vote and detects if it caused quorum to be reached, potentially extending the voting period. See + * {Governor-_castVote}. + * + * May emit a {ProposalExtended} event. + */ + function _castVote( + uint256 proposalId, + address account, + uint8 support, + string memory reason + ) internal virtual override returns (uint256) { + uint256 result = super._castVote(proposalId, account, support, reason); + + Timers.BlockNumber storage extendedDeadline = _extendedDeadlines[proposalId]; + + if (extendedDeadline.isUnset() && _quorumReached(proposalId)) { + uint64 extendedDeadlineValue = block.number.toUint64() + lateQuorumVoteExtension(); + + if (extendedDeadlineValue > proposalDeadline(proposalId)) { + emit ProposalExtended(proposalId, extendedDeadlineValue); + } + + extendedDeadline.setDeadline(extendedDeadlineValue); + } + + return result; + } + + /** + * @dev Returns the current value of the vote extension parameter: the number of blocks that are required to pass + * from the time a proposal reaches quorum until its voting period ends. + */ + function lateQuorumVoteExtension() public view virtual returns (uint64) { + return _voteExtension; + } + + /** + * @dev Changes the {lateQuorumVoteExtension}. This operation can only be performed by the governance executor, + * generally through a governance proposal. + * + * Emits a {LateQuorumVoteExtensionSet} event. + */ + function setLateQuorumVoteExtension(uint64 newVoteExtension) public virtual onlyGovernance { + _setLateQuorumVoteExtension(newVoteExtension); + } + + /** + * @dev Changes the {lateQuorumVoteExtension}. This is an internal function that can be exposed in a public function + * like {setLateQuorumVoteExtension} if another access control mechanism is needed. + * + * Emits a {LateQuorumVoteExtensionSet} event. + */ + function _setLateQuorumVoteExtension(uint64 newVoteExtension) internal virtual { + emit LateQuorumVoteExtensionSet(_voteExtension, newVoteExtension); + _voteExtension = newVoteExtension; + } +} diff --git a/contracts/governance/extensions/GovernorTimelockCompound.sol b/contracts/governance/extensions/GovernorTimelockCompound.sol index b8d5d9a37..99aea98ba 100644 --- a/contracts/governance/extensions/GovernorTimelockCompound.sol +++ b/contracts/governance/extensions/GovernorTimelockCompound.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (governance/extensions/GovernorTimelockCompound.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (governance/extensions/GovernorTimelockCompound.sol) pragma solidity ^0.8.0; @@ -224,14 +224,16 @@ abstract contract GovernorTimelockCompound is IGovernorTimelock, Governor { /** * @dev Public endpoint to update the underlying timelock instance. Restricted to the timelock itself, so updates - * must be proposed, scheduled and executed using the {Governor} workflow. + * must be proposed, scheduled, and executed through governance proposals. * - * For security reason, the timelock must be handed over to another admin before setting up a new one. The two + * For security reasons, the timelock must be handed over to another admin before setting up a new one. The two * operations (hand over the timelock) and do the update can be batched in a single proposal. * * Note that if the timelock admin has been handed over in a previous operation, we refuse updates made through the * timelock if admin of the timelock has already been accepted and the operation is executed outside the scope of * governance. + + * CAUTION: It is not recommended to change the timelock while there are other queued governance proposals. */ function updateTimelock(ICompoundTimelock newTimelock) external virtual onlyGovernance { _updateTimelock(newTimelock); diff --git a/contracts/governance/extensions/GovernorTimelockControl.sol b/contracts/governance/extensions/GovernorTimelockControl.sol index fda8dd1a6..3678b2404 100644 --- a/contracts/governance/extensions/GovernorTimelockControl.sol +++ b/contracts/governance/extensions/GovernorTimelockControl.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (governance/extensions/GovernorTimelockControl.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (governance/extensions/GovernorTimelockControl.sol) pragma solidity ^0.8.0; @@ -10,12 +10,17 @@ import "../TimelockController.sol"; /** * @dev Extension of {Governor} that binds the execution process to an instance of {TimelockController}. This adds a * delay, enforced by the {TimelockController} to all successful proposal (in addition to the voting duration). The - * {Governor} needs the proposer (an ideally the executor) roles for the {Governor} to work properly. + * {Governor} needs the proposer (and ideally the executor) roles for the {Governor} to work properly. * * Using this model means the proposal will be operated by the {TimelockController} and not by the {Governor}. Thus, * the assets and permissions must be attached to the {TimelockController}. Any asset sent to the {Governor} will be * inaccessible. * + * WARNING: Setting up the TimelockController to have additional proposers besides the governor is very risky, as it + * grants them powers that they must be trusted or known not to use: 1) {onlyGovernance} functions like {relay} are + * available to them through the timelock, and 2) approved governance proposals can be blocked by them, effectively + * executing a Denial of Service attack. This risk will be mitigated in a future release. + * * _Available since v4.3._ */ abstract contract GovernorTimelockControl is IGovernorTimelock, Governor { @@ -57,8 +62,10 @@ abstract contract GovernorTimelockControl is IGovernorTimelock, Governor { return status; } else if (_timelock.isOperationDone(queueid)) { return ProposalState.Executed; - } else { + } else if (_timelock.isOperationPending(queueid)) { return ProposalState.Queued; + } else { + return ProposalState.Canceled; } } @@ -141,7 +148,9 @@ abstract contract GovernorTimelockControl is IGovernorTimelock, Governor { /** * @dev Public endpoint to update the underlying timelock instance. Restricted to the timelock itself, so updates - * must be proposed, scheduled and executed using the {Governor} workflow. + * must be proposed, scheduled, and executed through governance proposals. + * + * CAUTION: It is not recommended to change the timelock while there are other queued governance proposals. */ function updateTimelock(TimelockController newTimelock) external virtual onlyGovernance { _updateTimelock(newTimelock); diff --git a/contracts/governance/extensions/GovernorVotes.sol b/contracts/governance/extensions/GovernorVotes.sol index 318695765..75f56356f 100644 --- a/contracts/governance/extensions/GovernorVotes.sol +++ b/contracts/governance/extensions/GovernorVotes.sol @@ -1,21 +1,20 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (governance/extensions/GovernorVotes.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (governance/extensions/GovernorVotes.sol) pragma solidity ^0.8.0; import "../Governor.sol"; -import "../../token/ERC20/extensions/ERC20Votes.sol"; -import "../../utils/math/Math.sol"; +import "../utils/IVotes.sol"; /** - * @dev Extension of {Governor} for voting weight extraction from an {ERC20Votes} token. + * @dev Extension of {Governor} for voting weight extraction from an {ERC20Votes} token, or since v4.5 an {ERC721Votes} token. * * _Available since v4.3._ */ abstract contract GovernorVotes is Governor { - ERC20Votes public immutable token; + IVotes public immutable token; - constructor(ERC20Votes tokenAddress) { + constructor(IVotes tokenAddress) { token = tokenAddress; } diff --git a/contracts/governance/extensions/GovernorVotesQuorumFraction.sol b/contracts/governance/extensions/GovernorVotesQuorumFraction.sol index d9f0352f4..40f912cbf 100644 --- a/contracts/governance/extensions/GovernorVotesQuorumFraction.sol +++ b/contracts/governance/extensions/GovernorVotesQuorumFraction.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (governance/extensions/GovernorVotesQuorumFraction.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (governance/extensions/GovernorVotesQuorumFraction.sol) pragma solidity ^0.8.0; @@ -16,26 +16,61 @@ abstract contract GovernorVotesQuorumFraction is GovernorVotes { event QuorumNumeratorUpdated(uint256 oldQuorumNumerator, uint256 newQuorumNumerator); + /** + * @dev Initialize quorum as a fraction of the token's total supply. + * + * The fraction is specified as `numerator / denominator`. By default the denominator is 100, so quorum is + * specified as a percent: a numerator of 10 corresponds to quorum being 10% of total supply. The denominator can be + * customized by overriding {quorumDenominator}. + */ constructor(uint256 quorumNumeratorValue) { _updateQuorumNumerator(quorumNumeratorValue); } + /** + * @dev Returns the current quorum numerator. See {quorumDenominator}. + */ function quorumNumerator() public view virtual returns (uint256) { return _quorumNumerator; } + /** + * @dev Returns the quorum denominator. Defaults to 100, but may be overridden. + */ function quorumDenominator() public view virtual returns (uint256) { return 100; } + /** + * @dev Returns the quorum for a block number, in terms of number of votes: `supply * numerator / denominator`. + */ function quorum(uint256 blockNumber) public view virtual override returns (uint256) { return (token.getPastTotalSupply(blockNumber) * quorumNumerator()) / quorumDenominator(); } + /** + * @dev Changes the quorum numerator. + * + * Emits a {QuorumNumeratorUpdated} event. + * + * Requirements: + * + * - Must be called through a governance proposal. + * - New numerator must be smaller or equal to the denominator. + */ function updateQuorumNumerator(uint256 newQuorumNumerator) external virtual onlyGovernance { _updateQuorumNumerator(newQuorumNumerator); } + /** + * @dev Changes the quorum numerator. + * + * Emits a {QuorumNumeratorUpdated} event. + * + * Requirements: + * + * - New numerator must be smaller or equal to the denominator. + */ function _updateQuorumNumerator(uint256 newQuorumNumerator) internal virtual { require( newQuorumNumerator <= quorumDenominator(), diff --git a/contracts/governance/utils/IVotes.sol b/contracts/governance/utils/IVotes.sol new file mode 100644 index 000000000..6317d7752 --- /dev/null +++ b/contracts/governance/utils/IVotes.sol @@ -0,0 +1,61 @@ +// SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v4.5.0) (governance/utils/IVotes.sol) +pragma solidity ^0.8.0; + +/** + * @dev Common interface for {ERC20Votes}, {ERC721Votes}, and other {Votes}-enabled contracts. + * + * _Available since v4.5._ + */ +interface IVotes { + /** + * @dev Emitted when an account changes their delegate. + */ + event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate); + + /** + * @dev Emitted when a token transfer or delegate change results in changes to a delegate's number of votes. + */ + event DelegateVotesChanged(address indexed delegate, uint256 previousBalance, uint256 newBalance); + + /** + * @dev Returns the current amount of votes that `account` has. + */ + function getVotes(address account) external view returns (uint256); + + /** + * @dev Returns the amount of votes that `account` had at the end of a past block (`blockNumber`). + */ + function getPastVotes(address account, uint256 blockNumber) external view returns (uint256); + + /** + * @dev Returns the total supply of votes available at the end of a past block (`blockNumber`). + * + * NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. + * Votes that have not been delegated are still part of total supply, even though they would not participate in a + * vote. + */ + function getPastTotalSupply(uint256 blockNumber) external view returns (uint256); + + /** + * @dev Returns the delegate that `account` has chosen. + */ + function delegates(address account) external view returns (address); + + /** + * @dev Delegates votes from the sender to `delegatee`. + */ + function delegate(address delegatee) external; + + /** + * @dev Delegates votes from signer to `delegatee`. + */ + function delegateBySig( + address delegatee, + uint256 nonce, + uint256 expiry, + uint8 v, + bytes32 r, + bytes32 s + ) external; +} diff --git a/contracts/governance/utils/Votes.sol b/contracts/governance/utils/Votes.sol new file mode 100644 index 000000000..cc5101b9f --- /dev/null +++ b/contracts/governance/utils/Votes.sol @@ -0,0 +1,211 @@ +// SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v4.5.0) (governance/utils/Votes.sol) +pragma solidity ^0.8.0; + +import "../../utils/Context.sol"; +import "../../utils/Counters.sol"; +import "../../utils/Checkpoints.sol"; +import "../../utils/cryptography/draft-EIP712.sol"; +import "./IVotes.sol"; + +/** + * @dev This is a base abstract contract that tracks voting units, which are a measure of voting power that can be + * transferred, and provides a system of vote delegation, where an account can delegate its voting units to a sort of + * "representative" that will pool delegated voting units from different accounts and can then use it to vote in + * decisions. In fact, voting units _must_ be delegated in order to count as actual votes, and an account has to + * delegate those votes to itself if it wishes to participate in decisions and does not have a trusted representative. + * + * This contract is often combined with a token contract such that voting units correspond to token units. For an + * example, see {ERC721Votes}. + * + * The full history of delegate votes is tracked on-chain so that governance protocols can consider votes as distributed + * at a particular block number to protect against flash loans and double voting. The opt-in delegate system makes the + * cost of this history tracking optional. + * + * When using this module the derived contract must implement {_getVotingUnits} (for example, make it return + * {ERC721-balanceOf}), and can use {_transferVotingUnits} to track a change in the distribution of those units (in the + * previous example, it would be included in {ERC721-_beforeTokenTransfer}). + * + * _Available since v4.5._ + */ +abstract contract Votes is IVotes, Context, EIP712 { + using Checkpoints for Checkpoints.History; + using Counters for Counters.Counter; + + bytes32 private constant _DELEGATION_TYPEHASH = + keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)"); + + mapping(address => address) private _delegation; + mapping(address => Checkpoints.History) private _delegateCheckpoints; + Checkpoints.History private _totalCheckpoints; + + mapping(address => Counters.Counter) private _nonces; + + /** + * @dev Returns the current amount of votes that `account` has. + */ + function getVotes(address account) public view virtual override returns (uint256) { + return _delegateCheckpoints[account].latest(); + } + + /** + * @dev Returns the amount of votes that `account` had at the end of a past block (`blockNumber`). + * + * Requirements: + * + * - `blockNumber` must have been already mined + */ + function getPastVotes(address account, uint256 blockNumber) public view virtual override returns (uint256) { + return _delegateCheckpoints[account].getAtBlock(blockNumber); + } + + /** + * @dev Returns the total supply of votes available at the end of a past block (`blockNumber`). + * + * NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. + * Votes that have not been delegated are still part of total supply, even though they would not participate in a + * vote. + * + * Requirements: + * + * - `blockNumber` must have been already mined + */ + function getPastTotalSupply(uint256 blockNumber) public view virtual override returns (uint256) { + require(blockNumber < block.number, "Votes: block not yet mined"); + return _totalCheckpoints.getAtBlock(blockNumber); + } + + /** + * @dev Returns the current total supply of votes. + */ + function _getTotalSupply() internal view virtual returns (uint256) { + return _totalCheckpoints.latest(); + } + + /** + * @dev Returns the delegate that `account` has chosen. + */ + function delegates(address account) public view virtual override returns (address) { + return _delegation[account]; + } + + /** + * @dev Delegates votes from the sender to `delegatee`. + */ + function delegate(address delegatee) public virtual override { + address account = _msgSender(); + _delegate(account, delegatee); + } + + /** + * @dev Delegates votes from signer to `delegatee`. + */ + function delegateBySig( + address delegatee, + uint256 nonce, + uint256 expiry, + uint8 v, + bytes32 r, + bytes32 s + ) public virtual override { + require(block.timestamp <= expiry, "Votes: signature expired"); + address signer = ECDSA.recover( + _hashTypedDataV4(keccak256(abi.encode(_DELEGATION_TYPEHASH, delegatee, nonce, expiry))), + v, + r, + s + ); + require(nonce == _useNonce(signer), "Votes: invalid nonce"); + _delegate(signer, delegatee); + } + + /** + * @dev Delegate all of `account`'s voting units to `delegatee`. + * + * Emits events {DelegateChanged} and {DelegateVotesChanged}. + */ + function _delegate(address account, address delegatee) internal virtual { + address oldDelegate = delegates(account); + _delegation[account] = delegatee; + + emit DelegateChanged(account, oldDelegate, delegatee); + _moveDelegateVotes(oldDelegate, delegatee, _getVotingUnits(account)); + } + + /** + * @dev Transfers, mints, or burns voting units. To register a mint, `from` should be zero. To register a burn, `to` + * should be zero. Total supply of voting units will be adjusted with mints and burns. + */ + function _transferVotingUnits( + address from, + address to, + uint256 amount + ) internal virtual { + if (from == address(0)) { + _totalCheckpoints.push(_add, amount); + } + if (to == address(0)) { + _totalCheckpoints.push(_subtract, amount); + } + _moveDelegateVotes(delegates(from), delegates(to), amount); + } + + /** + * @dev Moves delegated votes from one delegate to another. + */ + function _moveDelegateVotes( + address from, + address to, + uint256 amount + ) private { + if (from != to && amount > 0) { + if (from != address(0)) { + (uint256 oldValue, uint256 newValue) = _delegateCheckpoints[from].push(_subtract, amount); + emit DelegateVotesChanged(from, oldValue, newValue); + } + if (to != address(0)) { + (uint256 oldValue, uint256 newValue) = _delegateCheckpoints[to].push(_add, amount); + emit DelegateVotesChanged(to, oldValue, newValue); + } + } + } + + function _add(uint256 a, uint256 b) private pure returns (uint256) { + return a + b; + } + + function _subtract(uint256 a, uint256 b) private pure returns (uint256) { + return a - b; + } + + /** + * @dev Consumes a nonce. + * + * Returns the current value and increments nonce. + */ + function _useNonce(address owner) internal virtual returns (uint256 current) { + Counters.Counter storage nonce = _nonces[owner]; + current = nonce.current(); + nonce.increment(); + } + + /** + * @dev Returns an address nonce. + */ + function nonces(address owner) public view virtual returns (uint256) { + return _nonces[owner].current(); + } + + /** + * @dev Returns the contract's {EIP712} domain separator. + */ + // solhint-disable-next-line func-name-mixedcase + function DOMAIN_SEPARATOR() external view returns (bytes32) { + return _domainSeparatorV4(); + } + + /** + * @dev Must return the voting units held by an account. + */ + function _getVotingUnits(address) internal virtual returns (uint256); +} diff --git a/contracts/interfaces/IERC2981.sol b/contracts/interfaces/IERC2981.sol index a79d36110..cbd9e2412 100644 --- a/contracts/interfaces/IERC2981.sol +++ b/contracts/interfaces/IERC2981.sol @@ -1,20 +1,22 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (interfaces/IERC2981.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/IERC2981.sol) pragma solidity ^0.8.0; import "./IERC165.sol"; /** - * @dev Interface for the NFT Royalty Standard + * @dev Interface for the NFT Royalty Standard. + * + * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal + * support for royalty payments across all NFT marketplaces and ecosystem participants. + * + * _Available since v4.5._ */ interface IERC2981 is IERC165 { /** - * @dev Called with the sale price to determine how much royalty is owed and to whom. - * @param tokenId - the NFT asset queried for royalty information - * @param salePrice - the sale price of the NFT asset specified by `tokenId` - * @return receiver - address of who should be sent the royalty payment - * @return royaltyAmount - the royalty payment amount for `salePrice` + * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of + * exchange. The royalty amount is denominated and should be payed in that same unit of exchange. */ function royaltyInfo(uint256 tokenId, uint256 salePrice) external diff --git a/contracts/interfaces/README.adoc b/contracts/interfaces/README.adoc index 31dd27c85..b6b96ffef 100644 --- a/contracts/interfaces/README.adoc +++ b/contracts/interfaces/README.adoc @@ -5,7 +5,7 @@ NOTE: This document is better viewed at https://docs.openzeppelin.com/contracts/ == List of standardized interfaces These interfaces are available as `.sol` files, and also as compiler `.json` ABI files (through the npm package). These -are usefull to interract with third party contracts that implement them. +are useful to interact with third party contracts that implement them. - {IERC20} - {IERC20Metadata} diff --git a/contracts/interfaces/draft-IERC1822.sol b/contracts/interfaces/draft-IERC1822.sol new file mode 100644 index 000000000..3b73d744c --- /dev/null +++ b/contracts/interfaces/draft-IERC1822.sol @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol) + +pragma solidity ^0.8.0; + +/** + * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified + * proxy whose upgrades are fully controlled by the current implementation. + */ +interface IERC1822Proxiable { + /** + * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation + * address. + * + * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks + * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this + * function revert if invoked through a proxy. + */ + function proxiableUUID() external view returns (bytes32); +} diff --git a/contracts/metatx/ERC2771Context.sol b/contracts/metatx/ERC2771Context.sol index eb0c90468..b5d16e560 100644 --- a/contracts/metatx/ERC2771Context.sol +++ b/contracts/metatx/ERC2771Context.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (metatx/ERC2771Context.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (metatx/ERC2771Context.sol) -pragma solidity ^0.8.0; +pragma solidity ^0.8.9; import "../utils/Context.sol"; @@ -9,8 +9,10 @@ import "../utils/Context.sol"; * @dev Context variant with ERC2771 support. */ abstract contract ERC2771Context is Context { - address private _trustedForwarder; + /// @custom:oz-upgrades-unsafe-allow state-variable-immutable + address private immutable _trustedForwarder; + /// @custom:oz-upgrades-unsafe-allow constructor constructor(address trustedForwarder) { _trustedForwarder = trustedForwarder; } diff --git a/contracts/metatx/MinimalForwarder.sol b/contracts/metatx/MinimalForwarder.sol index c20125522..a7a1899f4 100644 --- a/contracts/metatx/MinimalForwarder.sol +++ b/contracts/metatx/MinimalForwarder.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (metatx/MinimalForwarder.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (metatx/MinimalForwarder.sol) pragma solidity ^0.8.0; @@ -50,9 +50,17 @@ contract MinimalForwarder is EIP712 { (bool success, bytes memory returndata) = req.to.call{gas: req.gas, value: req.value}( abi.encodePacked(req.data, req.from) ); + // Validate that the relayer has sent enough gas for the call. // See https://ronan.eth.link/blog/ethereum-gas-dangers/ - assert(gasleft() > req.gas / 63); + if (gasleft() <= req.gas / 63) { + // We explicitly trigger invalid opcode to consume all gas and bubble-up the effects, since + // neither revert or assert consume all gas since Solidity 0.8.0 + // https://docs.soliditylang.org/en/v0.8.0/control-structures.html#panic-via-assert-and-error-via-require + assembly { + invalid() + } + } return (success, returndata); } diff --git a/contracts/mocks/Base64Mock.sol b/contracts/mocks/Base64Mock.sol new file mode 100644 index 000000000..b255487bc --- /dev/null +++ b/contracts/mocks/Base64Mock.sol @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.0; + +import "../utils/Base64.sol"; + +contract Base64Mock { + function encode(bytes memory value) external pure returns (string memory) { + return Base64.encode(value); + } +} diff --git a/contracts/mocks/CheckpointsImpl.sol b/contracts/mocks/CheckpointsImpl.sol new file mode 100644 index 000000000..5b9ec0acb --- /dev/null +++ b/contracts/mocks/CheckpointsImpl.sol @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.0; + +import "../utils/Checkpoints.sol"; + +contract CheckpointsImpl { + using Checkpoints for Checkpoints.History; + + Checkpoints.History private _totalCheckpoints; + + function latest() public view returns (uint256) { + return _totalCheckpoints.latest(); + } + + function getAtBlock(uint256 blockNumber) public view returns (uint256) { + return _totalCheckpoints.getAtBlock(blockNumber); + } + + function push(uint256 value) public returns (uint256, uint256) { + return _totalCheckpoints.push(value); + } +} diff --git a/contracts/mocks/ERC2771ContextMock.sol b/contracts/mocks/ERC2771ContextMock.sol index 7bc1c4538..ee111d1ae 100644 --- a/contracts/mocks/ERC2771ContextMock.sol +++ b/contracts/mocks/ERC2771ContextMock.sol @@ -1,13 +1,16 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity ^0.8.9; import "./ContextMock.sol"; import "../metatx/ERC2771Context.sol"; // By inheriting from ERC2771Context, Context's internal functions are overridden automatically contract ERC2771ContextMock is ContextMock, ERC2771Context { - constructor(address trustedForwarder) ERC2771Context(trustedForwarder) {} + /// @custom:oz-upgrades-unsafe-allow constructor + constructor(address trustedForwarder) ERC2771Context(trustedForwarder) { + emit Sender(_msgSender()); // _msgSender() should be accessible during construction + } function _msgSender() internal view virtual override(Context, ERC2771Context) returns (address) { return ERC2771Context._msgSender(); diff --git a/contracts/mocks/ERC721RoyaltyMock.sol b/contracts/mocks/ERC721RoyaltyMock.sol new file mode 100644 index 000000000..83a9074e2 --- /dev/null +++ b/contracts/mocks/ERC721RoyaltyMock.sol @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.0; + +import "../token/ERC721/extensions/ERC721Royalty.sol"; + +contract ERC721RoyaltyMock is ERC721Royalty { + constructor(string memory name, string memory symbol) ERC721(name, symbol) {} + + function setTokenRoyalty( + uint256 tokenId, + address recipient, + uint96 fraction + ) public { + _setTokenRoyalty(tokenId, recipient, fraction); + } + + function setDefaultRoyalty(address recipient, uint96 fraction) public { + _setDefaultRoyalty(recipient, fraction); + } + + function mint(address to, uint256 tokenId) public { + _mint(to, tokenId); + } + + function burn(uint256 tokenId) public { + _burn(tokenId); + } + + function deleteDefaultRoyalty() public { + _deleteDefaultRoyalty(); + } +} diff --git a/contracts/mocks/ERC721VotesMock.sol b/contracts/mocks/ERC721VotesMock.sol new file mode 100644 index 000000000..0755ace66 --- /dev/null +++ b/contracts/mocks/ERC721VotesMock.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.0; + +import "../token/ERC721/extensions/draft-ERC721Votes.sol"; + +contract ERC721VotesMock is ERC721Votes { + constructor(string memory name, string memory symbol) ERC721(name, symbol) EIP712(name, "1") {} + + function getTotalSupply() public view returns (uint256) { + return _getTotalSupply(); + } + + function mint(address account, uint256 tokenId) public { + _mint(account, tokenId); + } + + function burn(uint256 tokenId) public { + _burn(tokenId); + } + + function getChainId() external view returns (uint256) { + return block.chainid; + } +} diff --git a/contracts/mocks/GovernorMock.sol b/contracts/mocks/GovernorMock.sol index cc96dcd27..85233f559 100644 --- a/contracts/mocks/GovernorMock.sol +++ b/contracts/mocks/GovernorMock.sol @@ -15,7 +15,7 @@ contract GovernorMock is { constructor( string memory name_, - ERC20Votes token_, + IVotes token_, uint256 votingDelay_, uint256 votingPeriod_, uint256 quorumNumerator_ diff --git a/contracts/mocks/GovernorPreventLateQuorumMock.sol b/contracts/mocks/GovernorPreventLateQuorumMock.sol new file mode 100644 index 000000000..7de50a01f --- /dev/null +++ b/contracts/mocks/GovernorPreventLateQuorumMock.sol @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.0; + +import "../governance/extensions/GovernorPreventLateQuorum.sol"; +import "../governance/extensions/GovernorSettings.sol"; +import "../governance/extensions/GovernorCountingSimple.sol"; +import "../governance/extensions/GovernorVotes.sol"; + +contract GovernorPreventLateQuorumMock is + GovernorSettings, + GovernorVotes, + GovernorCountingSimple, + GovernorPreventLateQuorum +{ + uint256 private _quorum; + + constructor( + string memory name_, + IVotes token_, + uint256 votingDelay_, + uint256 votingPeriod_, + uint256 quorum_, + uint64 voteExtension_ + ) + Governor(name_) + GovernorSettings(votingDelay_, votingPeriod_, 0) + GovernorVotes(token_) + GovernorPreventLateQuorum(voteExtension_) + { + _quorum = quorum_; + } + + function quorum(uint256) public view virtual override returns (uint256) { + return _quorum; + } + + function proposalDeadline(uint256 proposalId) + public + view + virtual + override(Governor, GovernorPreventLateQuorum) + returns (uint256) + { + return super.proposalDeadline(proposalId); + } + + function proposalThreshold() public view virtual override(Governor, GovernorSettings) returns (uint256) { + return super.proposalThreshold(); + } + + function _castVote( + uint256 proposalId, + address account, + uint8 support, + string memory reason + ) internal virtual override(Governor, GovernorPreventLateQuorum) returns (uint256) { + return super._castVote(proposalId, account, support, reason); + } +} diff --git a/contracts/mocks/GovernorTimelockCompoundMock.sol b/contracts/mocks/GovernorTimelockCompoundMock.sol index 848f4b409..aeba5b86a 100644 --- a/contracts/mocks/GovernorTimelockCompoundMock.sol +++ b/contracts/mocks/GovernorTimelockCompoundMock.sol @@ -15,7 +15,7 @@ contract GovernorTimelockCompoundMock is { constructor( string memory name_, - ERC20Votes token_, + IVotes token_, uint256 votingDelay_, uint256 votingPeriod_, ICompoundTimelock timelock_, diff --git a/contracts/mocks/GovernorTimelockControlMock.sol b/contracts/mocks/GovernorTimelockControlMock.sol index 4d9e97fd5..97376c825 100644 --- a/contracts/mocks/GovernorTimelockControlMock.sol +++ b/contracts/mocks/GovernorTimelockControlMock.sol @@ -15,7 +15,7 @@ contract GovernorTimelockControlMock is { constructor( string memory name_, - ERC20Votes token_, + IVotes token_, uint256 votingDelay_, uint256 votingPeriod_, TimelockController timelock_, diff --git a/contracts/mocks/GovernorVoteMock.sol b/contracts/mocks/GovernorVoteMock.sol new file mode 100644 index 000000000..23ccf6bc0 --- /dev/null +++ b/contracts/mocks/GovernorVoteMock.sol @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.0; + +import "../governance/extensions/GovernorCountingSimple.sol"; +import "../governance/extensions/GovernorVotes.sol"; + +contract GovernorVoteMocks is GovernorVotes, GovernorCountingSimple { + constructor(string memory name_, IVotes token_) Governor(name_) GovernorVotes(token_) {} + + function quorum(uint256) public pure override returns (uint256) { + return 0; + } + + function votingDelay() public pure override returns (uint256) { + return 4; + } + + function votingPeriod() public pure override returns (uint256) { + return 16; + } + + function cancel( + address[] memory targets, + uint256[] memory values, + bytes[] memory calldatas, + bytes32 salt + ) public returns (uint256 proposalId) { + return _cancel(targets, values, calldatas, salt); + } + + function getVotes(address account, uint256 blockNumber) + public + view + virtual + override(IGovernor, GovernorVotes) + returns (uint256) + { + return super.getVotes(account, blockNumber); + } +} diff --git a/contracts/mocks/SafeERC20Helper.sol b/contracts/mocks/SafeERC20Helper.sol index 9e3442b35..f3bcc3972 100644 --- a/contracts/mocks/SafeERC20Helper.sol +++ b/contracts/mocks/SafeERC20Helper.sol @@ -33,7 +33,7 @@ contract ERC20ReturnFalseMock is Context { } function allowance(address, address) public view returns (uint256) { - require(_dummy == 0); // Duummy read from a state variable so that the function is view + require(_dummy == 0); // Dummy read from a state variable so that the function is view return 0; } } diff --git a/contracts/mocks/SignedMathMock.sol b/contracts/mocks/SignedMathMock.sol new file mode 100644 index 000000000..5a0b27096 --- /dev/null +++ b/contracts/mocks/SignedMathMock.sol @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.0; + +import "../utils/math/SignedMath.sol"; + +contract SignedMathMock { + function max(int256 a, int256 b) public pure returns (int256) { + return SignedMath.max(a, b); + } + + function min(int256 a, int256 b) public pure returns (int256) { + return SignedMath.min(a, b); + } + + function average(int256 a, int256 b) public pure returns (int256) { + return SignedMath.average(a, b); + } + + function abs(int256 n) public pure returns (uint256) { + return SignedMath.abs(n); + } +} diff --git a/contracts/mocks/UUPS/UUPSLegacy.sol b/contracts/mocks/UUPS/UUPSLegacy.sol new file mode 100644 index 000000000..550a6221b --- /dev/null +++ b/contracts/mocks/UUPS/UUPSLegacy.sol @@ -0,0 +1,58 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.0; + +import "./UUPSUpgradeableMock.sol"; + +// This contract implements the pre-4.5 UUPS upgrade function with a rollback test. +// It's used to test that newer UUPS contracts are considered valid upgrades by older UUPS contracts. +contract UUPSUpgradeableLegacyMock is UUPSUpgradeableMock { + // Inlined from ERC1967Upgrade + bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143; + + // ERC1967Upgrade._setImplementation is private so we reproduce it here. + // An extra underscore prevents a name clash error. + function __setImplementation(address newImplementation) private { + require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract"); + StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; + } + + function _upgradeToAndCallSecureLegacyV1( + address newImplementation, + bytes memory data, + bool forceCall + ) internal { + address oldImplementation = _getImplementation(); + + // Initial upgrade and setup call + __setImplementation(newImplementation); + if (data.length > 0 || forceCall) { + Address.functionDelegateCall(newImplementation, data); + } + + // Perform rollback test if not already in progress + StorageSlot.BooleanSlot storage rollbackTesting = StorageSlot.getBooleanSlot(_ROLLBACK_SLOT); + if (!rollbackTesting.value) { + // Trigger rollback using upgradeTo from the new implementation + rollbackTesting.value = true; + Address.functionDelegateCall( + newImplementation, + abi.encodeWithSignature("upgradeTo(address)", oldImplementation) + ); + rollbackTesting.value = false; + // Check rollback was effective + require(oldImplementation == _getImplementation(), "ERC1967Upgrade: upgrade breaks further upgrades"); + // Finally reset to the new implementation and log the upgrade + _upgradeTo(newImplementation); + } + } + + // hooking into the old mechanism + function upgradeTo(address newImplementation) external virtual override { + _upgradeToAndCallSecureLegacyV1(newImplementation, bytes(""), false); + } + + function upgradeToAndCall(address newImplementation, bytes memory data) external payable virtual override { + _upgradeToAndCallSecureLegacyV1(newImplementation, data, false); + } +} diff --git a/contracts/mocks/UUPS/TestInProd.sol b/contracts/mocks/UUPS/UUPSUpgradeableMock.sol similarity index 75% rename from contracts/mocks/UUPS/TestInProd.sol rename to contracts/mocks/UUPS/UUPSUpgradeableMock.sol index bbb610300..367303ec0 100644 --- a/contracts/mocks/UUPS/TestInProd.sol +++ b/contracts/mocks/UUPS/UUPSUpgradeableMock.sol @@ -19,13 +19,3 @@ contract UUPSUpgradeableUnsafeMock is UUPSUpgradeableMock { ERC1967Upgrade._upgradeToAndCall(newImplementation, data, false); } } - -contract UUPSUpgradeableBrokenMock is UUPSUpgradeableMock { - function upgradeTo(address) external virtual override { - // pass - } - - function upgradeToAndCall(address, bytes memory) external payable virtual override { - // pass - } -} diff --git a/contracts/mocks/VotesMock.sol b/contracts/mocks/VotesMock.sol new file mode 100644 index 000000000..db06ee9a5 --- /dev/null +++ b/contracts/mocks/VotesMock.sol @@ -0,0 +1,40 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.0; + +import "../governance/utils/Votes.sol"; + +contract VotesMock is Votes { + mapping(address => uint256) private _balances; + mapping(uint256 => address) private _owners; + + constructor(string memory name) EIP712(name, "1") {} + + function getTotalSupply() public view returns (uint256) { + return _getTotalSupply(); + } + + function delegate(address account, address newDelegation) public { + return _delegate(account, newDelegation); + } + + function _getVotingUnits(address account) internal virtual override returns (uint256) { + return _balances[account]; + } + + function mint(address account, uint256 voteId) external { + _balances[account] += 1; + _owners[voteId] = account; + _transferVotingUnits(address(0), account, 1); + } + + function burn(uint256 voteId) external { + address owner = _owners[voteId]; + _balances[owner] -= 1; + _transferVotingUnits(owner, address(0), 1); + } + + function getChainId() external view returns (uint256) { + return block.chainid; + } +} diff --git a/contracts/mocks/wizard/MyGovernor1.sol b/contracts/mocks/wizard/MyGovernor1.sol index 72b486aa7..bd524ee55 100644 --- a/contracts/mocks/wizard/MyGovernor1.sol +++ b/contracts/mocks/wizard/MyGovernor1.sol @@ -14,7 +14,7 @@ contract MyGovernor1 is GovernorVotesQuorumFraction, GovernorCountingSimple { - constructor(ERC20Votes _token, TimelockController _timelock) + constructor(IVotes _token, TimelockController _timelock) Governor("MyGovernor") GovernorVotes(_token) GovernorVotesQuorumFraction(4) diff --git a/contracts/mocks/wizard/MyGovernor2.sol b/contracts/mocks/wizard/MyGovernor2.sol index 3f25b91bf..3a5c983e0 100644 --- a/contracts/mocks/wizard/MyGovernor2.sol +++ b/contracts/mocks/wizard/MyGovernor2.sol @@ -16,7 +16,7 @@ contract MyGovernor2 is GovernorVotesQuorumFraction, GovernorCountingSimple { - constructor(ERC20Votes _token, TimelockController _timelock) + constructor(IVotes _token, TimelockController _timelock) Governor("MyGovernor") GovernorVotes(_token) GovernorVotesQuorumFraction(4) diff --git a/contracts/mocks/wizard/MyGovernor3.sol b/contracts/mocks/wizard/MyGovernor3.sol index c2465751a..835a893a3 100644 --- a/contracts/mocks/wizard/MyGovernor3.sol +++ b/contracts/mocks/wizard/MyGovernor3.sol @@ -14,7 +14,7 @@ contract MyGovernor is GovernorVotes, GovernorVotesQuorumFraction { - constructor(ERC20Votes _token, TimelockController _timelock) + constructor(IVotes _token, TimelockController _timelock) Governor("MyGovernor") GovernorVotes(_token) GovernorVotesQuorumFraction(4) diff --git a/contracts/package.json b/contracts/package.json index 4d2a0d465..6f4fcf35a 100644 --- a/contracts/package.json +++ b/contracts/package.json @@ -1,7 +1,7 @@ { "name": "@openzeppelin/contracts", "description": "Secure Smart Contract library for Solidity", - "version": "4.4.2", + "version": "4.5.0", "files": [ "**/*.sol", "/build/contracts/*.json", diff --git a/contracts/proxy/ERC1967/ERC1967Upgrade.sol b/contracts/proxy/ERC1967/ERC1967Upgrade.sol index 036782fc7..77fbdd165 100644 --- a/contracts/proxy/ERC1967/ERC1967Upgrade.sol +++ b/contracts/proxy/ERC1967/ERC1967Upgrade.sol @@ -1,9 +1,10 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Upgrade.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol) pragma solidity ^0.8.2; import "../beacon/IBeacon.sol"; +import "../../interfaces/draft-IERC1822.sol"; import "../../utils/Address.sol"; import "../../utils/StorageSlot.sol"; @@ -77,33 +78,23 @@ abstract contract ERC1967Upgrade { * * Emits an {Upgraded} event. */ - function _upgradeToAndCallSecure( + function _upgradeToAndCallUUPS( address newImplementation, bytes memory data, bool forceCall ) internal { - address oldImplementation = _getImplementation(); - - // Initial upgrade and setup call - _setImplementation(newImplementation); - if (data.length > 0 || forceCall) { - Address.functionDelegateCall(newImplementation, data); - } - - // Perform rollback test if not already in progress - StorageSlot.BooleanSlot storage rollbackTesting = StorageSlot.getBooleanSlot(_ROLLBACK_SLOT); - if (!rollbackTesting.value) { - // Trigger rollback using upgradeTo from the new implementation - rollbackTesting.value = true; - Address.functionDelegateCall( - newImplementation, - abi.encodeWithSignature("upgradeTo(address)", oldImplementation) - ); - rollbackTesting.value = false; - // Check rollback was effective - require(oldImplementation == _getImplementation(), "ERC1967Upgrade: upgrade breaks further upgrades"); - // Finally reset to the new implementation and log the upgrade - _upgradeTo(newImplementation); + // Upgrades from old implementations will perform a rollback test. This test requires the new + // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing + // this special case will break upgrade paths from old UUPS implementation to new ones. + if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) { + _setImplementation(newImplementation); + } else { + try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) { + require(slot == _IMPLEMENTATION_SLOT, "ERC1967Upgrade: unsupported proxiableUUID"); + } catch { + revert("ERC1967Upgrade: new implementation is not UUPS"); + } + _upgradeToAndCall(newImplementation, data, forceCall); } } diff --git a/contracts/proxy/Proxy.sol b/contracts/proxy/Proxy.sol index 813516130..9e8aa9124 100644 --- a/contracts/proxy/Proxy.sol +++ b/contracts/proxy/Proxy.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (proxy/Proxy.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (proxy/Proxy.sol) pragma solidity ^0.8.0; @@ -17,7 +17,7 @@ abstract contract Proxy { /** * @dev Delegates the current call to `implementation`. * - * This function does not return to its internall call site, it will return directly to the external caller. + * This function does not return to its internal call site, it will return directly to the external caller. */ function _delegate(address implementation) internal virtual { assembly { diff --git a/contracts/proxy/README.adoc b/contracts/proxy/README.adoc index ae278b083..9f37b267f 100644 --- a/contracts/proxy/README.adoc +++ b/contracts/proxy/README.adoc @@ -17,14 +17,14 @@ In order to avoid clashes with the storage variables of the implementation contr There are two alternative ways to add upgradeability to an ERC1967 proxy. Their differences are explained below in <>. - {TransparentUpgradeableProxy}: A proxy with a built in admin and upgrade interface. -- {UUPSUpgradeable}: An upgradeability mechanism to be included in the implementation for an ERC1967 proxy. +- {UUPSUpgradeable}: An upgradeability mechanism to be included in the implementation contract. CAUTION: Using upgradeable proxies correctly and securely is a difficult task that requires deep knowledge of the proxy pattern, Solidity, and the EVM. Unless you want a lot of low level control, we recommend using the xref:upgrades-plugins::index.adoc[OpenZeppelin Upgrades Plugins] for Truffle and Hardhat. A different family of proxies are beacon proxies. This pattern, popularized by Dharma, allows multiple proxies to be upgraded to a different implementation in a single transaction. - {BeaconProxy}: A proxy that retreives its implementation from a beacon contract. -- {UpgradeableBeacon}: A beacon contract that can be upgraded. +- {UpgradeableBeacon}: A beacon contract with a built in admin that can upgrade the {BeaconProxy} pointing to it. In this pattern, the proxy contract doesn't hold the implementation address in storage like an ERC1967 proxy, instead the address is stored in a separate beacon contract. The `upgrade` operations that are sent to the beacon instead of to the proxy contract, and all proxies that follow that beacon are automatically upgraded. @@ -48,6 +48,8 @@ By default, the upgrade functionality included in {UUPSUpgradeable} contains a s - Adding a flag mechanism in the implementation that will disable the upgrade function when triggered. - Upgrading to an implementation that features an upgrade mechanism without the additional security check, and then upgrading again to another implementation without the upgrade mechanism. +The current implementation of this security mechanism uses https://eips.ethereum.org/EIPS/eip-1822[EIP1822] to detect the storage slot used by the implementation. A previous implementation, now deprecated, relied on a rollback check. It is possible to upgrade from a contract using the old mechanism to a new one. The inverse is however not possible, as old implementations (before version 4.5) did not include the `ERC1822` interface. + == Core {{Proxy}} diff --git a/contracts/proxy/utils/Initializable.sol b/contracts/proxy/utils/Initializable.sol index 4319cd463..1fe4583a2 100644 --- a/contracts/proxy/utils/Initializable.sol +++ b/contracts/proxy/utils/Initializable.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (proxy/utils/Initializable.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (proxy/utils/Initializable.sol) pragma solidity ^0.8.0; @@ -7,7 +7,7 @@ import "../../utils/Address.sol"; /** * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed - * behind a proxy. Since a proxied contract can't have a constructor, it's common to move constructor logic to an + * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. * diff --git a/contracts/proxy/utils/UUPSUpgradeable.sol b/contracts/proxy/utils/UUPSUpgradeable.sol index 1887872d8..7ccc50317 100644 --- a/contracts/proxy/utils/UUPSUpgradeable.sol +++ b/contracts/proxy/utils/UUPSUpgradeable.sol @@ -1,8 +1,9 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (proxy/utils/UUPSUpgradeable.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (proxy/utils/UUPSUpgradeable.sol) pragma solidity ^0.8.0; +import "../../interfaces/draft-IERC1822.sol"; import "../ERC1967/ERC1967Upgrade.sol"; /** @@ -17,7 +18,7 @@ import "../ERC1967/ERC1967Upgrade.sol"; * * _Available since v4.1._ */ -abstract contract UUPSUpgradeable is ERC1967Upgrade { +abstract contract UUPSUpgradeable is IERC1822Proxiable, ERC1967Upgrade { /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment address private immutable __self = address(this); @@ -34,6 +35,27 @@ abstract contract UUPSUpgradeable is ERC1967Upgrade { _; } + /** + * @dev Check that the execution is not being performed through a delegate call. This allows a function to be + * callable on the implementing contract but not through proxies. + */ + modifier notDelegated() { + require(address(this) == __self, "UUPSUpgradeable: must not be called through delegatecall"); + _; + } + + /** + * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the + * implementation. It is used to validate that the this implementation remains valid after an upgrade. + * + * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks + * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this + * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier. + */ + function proxiableUUID() external view virtual override notDelegated returns (bytes32) { + return _IMPLEMENTATION_SLOT; + } + /** * @dev Upgrade the implementation of the proxy to `newImplementation`. * @@ -43,7 +65,7 @@ abstract contract UUPSUpgradeable is ERC1967Upgrade { */ function upgradeTo(address newImplementation) external virtual onlyProxy { _authorizeUpgrade(newImplementation); - _upgradeToAndCallSecure(newImplementation, new bytes(0), false); + _upgradeToAndCallUUPS(newImplementation, new bytes(0), false); } /** @@ -56,7 +78,7 @@ abstract contract UUPSUpgradeable is ERC1967Upgrade { */ function upgradeToAndCall(address newImplementation, bytes memory data) external payable virtual onlyProxy { _authorizeUpgrade(newImplementation); - _upgradeToAndCallSecure(newImplementation, data, true); + _upgradeToAndCallUUPS(newImplementation, data, true); } /** diff --git a/contracts/token/ERC1155/IERC1155Receiver.sol b/contracts/token/ERC1155/IERC1155Receiver.sol index ed3dcdd03..0dd271d04 100644 --- a/contracts/token/ERC1155/IERC1155Receiver.sol +++ b/contracts/token/ERC1155/IERC1155Receiver.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155Receiver.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol) pragma solidity ^0.8.0; @@ -10,18 +10,20 @@ import "../../utils/introspection/IERC165.sol"; */ interface IERC1155Receiver is IERC165 { /** - @dev Handles the receipt of a single ERC1155 token type. This function is - called at the end of a `safeTransferFrom` after the balance has been updated. - To accept the transfer, this must return - `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` - (i.e. 0xf23a6e61, or its own function selector). - @param operator The address which initiated the transfer (i.e. msg.sender) - @param from The address which previously owned the token - @param id The ID of the token being transferred - @param value The amount of tokens being transferred - @param data Additional data with no specified format - @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed - */ + * @dev Handles the receipt of a single ERC1155 token type. This function is + * called at the end of a `safeTransferFrom` after the balance has been updated. + * + * NOTE: To accept the transfer, this must return + * `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` + * (i.e. 0xf23a6e61, or its own function selector). + * + * @param operator The address which initiated the transfer (i.e. msg.sender) + * @param from The address which previously owned the token + * @param id The ID of the token being transferred + * @param value The amount of tokens being transferred + * @param data Additional data with no specified format + * @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed + */ function onERC1155Received( address operator, address from, @@ -31,18 +33,21 @@ interface IERC1155Receiver is IERC165 { ) external returns (bytes4); /** - @dev Handles the receipt of a multiple ERC1155 token types. This function - is called at the end of a `safeBatchTransferFrom` after the balances have - been updated. To accept the transfer(s), this must return - `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` - (i.e. 0xbc197c81, or its own function selector). - @param operator The address which initiated the batch transfer (i.e. msg.sender) - @param from The address which previously owned the token - @param ids An array containing ids of each token being transferred (order and length must match values array) - @param values An array containing amounts of each token being transferred (order and length must match ids array) - @param data Additional data with no specified format - @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed - */ + * @dev Handles the receipt of a multiple ERC1155 token types. This function + * is called at the end of a `safeBatchTransferFrom` after the balances have + * been updated. + * + * NOTE: To accept the transfer(s), this must return + * `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` + * (i.e. 0xbc197c81, or its own function selector). + * + * @param operator The address which initiated the batch transfer (i.e. msg.sender) + * @param from The address which previously owned the token + * @param ids An array containing ids of each token being transferred (order and length must match values array) + * @param values An array containing amounts of each token being transferred (order and length must match ids array) + * @param data Additional data with no specified format + * @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed + */ function onERC1155BatchReceived( address operator, address from, diff --git a/contracts/token/ERC1155/README.adoc b/contracts/token/ERC1155/README.adoc index c41793205..2e0b22bae 100644 --- a/contracts/token/ERC1155/README.adoc +++ b/contracts/token/ERC1155/README.adoc @@ -26,6 +26,8 @@ NOTE: This core set of contracts is designed to be unopinionated, allowing devel {{IERC1155Receiver}} +{{ERC1155Receiver}} + == Extensions {{ERC1155Pausable}} diff --git a/contracts/token/ERC1155/presets/ERC1155PresetMinterPauser.sol b/contracts/token/ERC1155/presets/ERC1155PresetMinterPauser.sol index 8cd8f9bec..e57fdcc39 100644 --- a/contracts/token/ERC1155/presets/ERC1155PresetMinterPauser.sol +++ b/contracts/token/ERC1155/presets/ERC1155PresetMinterPauser.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (token/ERC1155/presets/ERC1155PresetMinterPauser.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/presets/ERC1155PresetMinterPauser.sol) pragma solidity ^0.8.0; @@ -22,6 +22,8 @@ import "../../../utils/Context.sol"; * The account that deploys the contract will be granted the minter and pauser * roles, as well as the default admin role, which will let it grant both minter * and pauser roles to other accounts. + * + * _Deprecated in favor of https://wizard.openzeppelin.com/[Contracts Wizard]._ */ contract ERC1155PresetMinterPauser is Context, AccessControlEnumerable, ERC1155Burnable, ERC1155Pausable { bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); diff --git a/contracts/token/ERC1155/presets/README.md b/contracts/token/ERC1155/presets/README.md new file mode 100644 index 000000000..468200b72 --- /dev/null +++ b/contracts/token/ERC1155/presets/README.md @@ -0,0 +1 @@ +Contract presets are now deprecated in favor of [Contracts Wizard](https://wizard.openzeppelin.com/) as a more powerful alternative. diff --git a/contracts/token/ERC1155/utils/ERC1155Holder.sol b/contracts/token/ERC1155/utils/ERC1155Holder.sol index ecefa6ea5..7249de841 100644 --- a/contracts/token/ERC1155/utils/ERC1155Holder.sol +++ b/contracts/token/ERC1155/utils/ERC1155Holder.sol @@ -1,11 +1,16 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (token/ERC1155/utils/ERC1155Holder.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/utils/ERC1155Holder.sol) pragma solidity ^0.8.0; import "./ERC1155Receiver.sol"; /** + * Simple implementation of `ERC1155Receiver` that will allow a contract to hold ERC1155 tokens. + * + * IMPORTANT: When inheriting this contract, you must include a way to use the received tokens, otherwise they will be + * stuck. + * * @dev _Available since v3.1._ */ contract ERC1155Holder is ERC1155Receiver { diff --git a/contracts/token/ERC20/ERC20.sol b/contracts/token/ERC20/ERC20.sol index 99e455f8e..3949e08e5 100644 --- a/contracts/token/ERC20/ERC20.sol +++ b/contracts/token/ERC20/ERC20.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (token/ERC20/ERC20.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; @@ -107,11 +107,12 @@ contract ERC20 is Context, IERC20, IERC20Metadata { * * Requirements: * - * - `recipient` cannot be the zero address. + * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ - function transfer(address recipient, uint256 amount) public virtual override returns (bool) { - _transfer(_msgSender(), recipient, amount); + function transfer(address to, uint256 amount) public virtual override returns (bool) { + address owner = _msgSender(); + _transfer(owner, to, amount); return true; } @@ -125,12 +126,16 @@ contract ERC20 is Context, IERC20, IERC20Metadata { /** * @dev See {IERC20-approve}. * + * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on + * `transferFrom`. This is semantically equivalent to an infinite approval. + * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { - _approve(_msgSender(), spender, amount); + address owner = _msgSender(); + _approve(owner, spender, amount); return true; } @@ -140,26 +145,24 @@ contract ERC20 is Context, IERC20, IERC20Metadata { * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * + * NOTE: Does not update the allowance if the current allowance + * is the maximum `uint256`. + * * Requirements: * - * - `sender` and `recipient` cannot be the zero address. - * - `sender` must have a balance of at least `amount`. - * - the caller must have allowance for ``sender``'s tokens of at least + * - `from` and `to` cannot be the zero address. + * - `from` must have a balance of at least `amount`. + * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( - address sender, - address recipient, + address from, + address to, uint256 amount ) public virtual override returns (bool) { - _transfer(sender, recipient, amount); - - uint256 currentAllowance = _allowances[sender][_msgSender()]; - require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); - unchecked { - _approve(sender, _msgSender(), currentAllowance - amount); - } - + address spender = _msgSender(); + _spendAllowance(from, spender, amount); + _transfer(from, to, amount); return true; } @@ -176,7 +179,8 @@ contract ERC20 is Context, IERC20, IERC20Metadata { * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { - _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); + address owner = _msgSender(); + _approve(owner, spender, _allowances[owner][spender] + addedValue); return true; } @@ -195,10 +199,11 @@ contract ERC20 is Context, IERC20, IERC20Metadata { * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { - uint256 currentAllowance = _allowances[_msgSender()][spender]; + address owner = _msgSender(); + uint256 currentAllowance = _allowances[owner][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { - _approve(_msgSender(), spender, currentAllowance - subtractedValue); + _approve(owner, spender, currentAllowance - subtractedValue); } return true; @@ -214,30 +219,30 @@ contract ERC20 is Context, IERC20, IERC20Metadata { * * Requirements: * - * - `sender` cannot be the zero address. - * - `recipient` cannot be the zero address. - * - `sender` must have a balance of at least `amount`. + * - `from` cannot be the zero address. + * - `to` cannot be the zero address. + * - `from` must have a balance of at least `amount`. */ function _transfer( - address sender, - address recipient, + address from, + address to, uint256 amount ) internal virtual { - require(sender != address(0), "ERC20: transfer from the zero address"); - require(recipient != address(0), "ERC20: transfer to the zero address"); + require(from != address(0), "ERC20: transfer from the zero address"); + require(to != address(0), "ERC20: transfer to the zero address"); - _beforeTokenTransfer(sender, recipient, amount); + _beforeTokenTransfer(from, to, amount); - uint256 senderBalance = _balances[sender]; - require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); + uint256 fromBalance = _balances[from]; + require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { - _balances[sender] = senderBalance - amount; + _balances[from] = fromBalance - amount; } - _balances[recipient] += amount; + _balances[to] += amount; - emit Transfer(sender, recipient, amount); + emit Transfer(from, to, amount); - _afterTokenTransfer(sender, recipient, amount); + _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing @@ -314,6 +319,28 @@ contract ERC20 is Context, IERC20, IERC20Metadata { emit Approval(owner, spender, amount); } + /** + * @dev Spend `amount` form the allowance of `owner` toward `spender`. + * + * Does not update the allowance amount in case of infinite allowance. + * Revert if not enough allowance is available. + * + * Might emit an {Approval} event. + */ + function _spendAllowance( + address owner, + address spender, + uint256 amount + ) internal virtual { + uint256 currentAllowance = allowance(owner, spender); + if (currentAllowance != type(uint256).max) { + require(currentAllowance >= amount, "ERC20: insufficient allowance"); + unchecked { + _approve(owner, spender, currentAllowance - amount); + } + } + } + /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. diff --git a/contracts/token/ERC20/IERC20.sol b/contracts/token/ERC20/IERC20.sol index c89cd48da..810ff275f 100644 --- a/contracts/token/ERC20/IERC20.sol +++ b/contracts/token/ERC20/IERC20.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; @@ -18,13 +18,13 @@ interface IERC20 { function balanceOf(address account) external view returns (uint256); /** - * @dev Moves `amount` tokens from the caller's account to `recipient`. + * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ - function transfer(address recipient, uint256 amount) external returns (bool); + function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be @@ -52,7 +52,7 @@ interface IERC20 { function approve(address spender, uint256 amount) external returns (bool); /** - * @dev Moves `amount` tokens from `sender` to `recipient` using the + * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * @@ -61,8 +61,8 @@ interface IERC20 { * Emits a {Transfer} event. */ function transferFrom( - address sender, - address recipient, + address from, + address to, uint256 amount ) external returns (bool); diff --git a/contracts/token/ERC20/extensions/ERC20Burnable.sol b/contracts/token/ERC20/extensions/ERC20Burnable.sol index ab961a9e2..1cd08ee81 100644 --- a/contracts/token/ERC20/extensions/ERC20Burnable.sol +++ b/contracts/token/ERC20/extensions/ERC20Burnable.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/ERC20Burnable.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol) pragma solidity ^0.8.0; @@ -33,11 +33,7 @@ abstract contract ERC20Burnable is Context, ERC20 { * `amount`. */ function burnFrom(address account, uint256 amount) public virtual { - uint256 currentAllowance = allowance(account, _msgSender()); - require(currentAllowance >= amount, "ERC20: burn amount exceeds allowance"); - unchecked { - _approve(account, _msgSender(), currentAllowance - amount); - } + _spendAllowance(account, _msgSender(), amount); _burn(account, amount); } } diff --git a/contracts/token/ERC20/extensions/ERC20FlashMint.sol b/contracts/token/ERC20/extensions/ERC20FlashMint.sol index da3780b25..61aeea13e 100644 --- a/contracts/token/ERC20/extensions/ERC20FlashMint.sol +++ b/contracts/token/ERC20/extensions/ERC20FlashMint.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/ERC20FlashMint.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20FlashMint.sol) pragma solidity ^0.8.0; @@ -23,7 +23,7 @@ abstract contract ERC20FlashMint is ERC20, IERC3156FlashLender { * @param token The address of the token that is requested. * @return The amont of token that can be loaned. */ - function maxFlashLoan(address token) public view override returns (uint256) { + function maxFlashLoan(address token) public view virtual override returns (uint256) { return token == address(this) ? type(uint256).max - ERC20.totalSupply() : 0; } @@ -62,6 +62,7 @@ abstract contract ERC20FlashMint is ERC20, IERC3156FlashLender { uint256 amount, bytes calldata data ) public virtual override returns (bool) { + require(amount <= maxFlashLoan(token), "ERC20FlashMint: amount exceeds maxFlashLoan"); uint256 fee = flashFee(token, amount); _mint(address(receiver), amount); require( diff --git a/contracts/token/ERC20/extensions/ERC20Votes.sol b/contracts/token/ERC20/extensions/ERC20Votes.sol index 5b4899e48..c0e88bc19 100644 --- a/contracts/token/ERC20/extensions/ERC20Votes.sol +++ b/contracts/token/ERC20/extensions/ERC20Votes.sol @@ -1,10 +1,11 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/ERC20Votes.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Votes.sol) pragma solidity ^0.8.0; import "./draft-ERC20Permit.sol"; import "../../../utils/math/Math.sol"; +import "../../../governance/utils/IVotes.sol"; import "../../../utils/math/SafeCast.sol"; import "../../../utils/cryptography/ECDSA.sol"; @@ -23,7 +24,7 @@ import "../../../utils/cryptography/ECDSA.sol"; * * _Available since v4.2._ */ -abstract contract ERC20Votes is ERC20Permit { +abstract contract ERC20Votes is IVotes, ERC20Permit { struct Checkpoint { uint32 fromBlock; uint224 votes; @@ -36,16 +37,6 @@ abstract contract ERC20Votes is ERC20Permit { mapping(address => Checkpoint[]) private _checkpoints; Checkpoint[] private _totalSupplyCheckpoints; - /** - * @dev Emitted when an account changes their delegate. - */ - event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate); - - /** - * @dev Emitted when a token transfer or delegate change results in changes to an account's voting power. - */ - event DelegateVotesChanged(address indexed delegate, uint256 previousBalance, uint256 newBalance); - /** * @dev Get the `pos`-th checkpoint for `account`. */ @@ -63,14 +54,14 @@ abstract contract ERC20Votes is ERC20Permit { /** * @dev Get the address `account` is currently delegating to. */ - function delegates(address account) public view virtual returns (address) { + function delegates(address account) public view virtual override returns (address) { return _delegates[account]; } /** * @dev Gets the current votes balance for `account` */ - function getVotes(address account) public view returns (uint256) { + function getVotes(address account) public view virtual override returns (uint256) { uint256 pos = _checkpoints[account].length; return pos == 0 ? 0 : _checkpoints[account][pos - 1].votes; } @@ -82,7 +73,7 @@ abstract contract ERC20Votes is ERC20Permit { * * - `blockNumber` must have been already mined */ - function getPastVotes(address account, uint256 blockNumber) public view returns (uint256) { + function getPastVotes(address account, uint256 blockNumber) public view virtual override returns (uint256) { require(blockNumber < block.number, "ERC20Votes: block not yet mined"); return _checkpointsLookup(_checkpoints[account], blockNumber); } @@ -95,7 +86,7 @@ abstract contract ERC20Votes is ERC20Permit { * * - `blockNumber` must have been already mined */ - function getPastTotalSupply(uint256 blockNumber) public view returns (uint256) { + function getPastTotalSupply(uint256 blockNumber) public view virtual override returns (uint256) { require(blockNumber < block.number, "ERC20Votes: block not yet mined"); return _checkpointsLookup(_totalSupplyCheckpoints, blockNumber); } @@ -132,7 +123,7 @@ abstract contract ERC20Votes is ERC20Permit { /** * @dev Delegate votes from the sender to `delegatee`. */ - function delegate(address delegatee) public virtual { + function delegate(address delegatee) public virtual override { _delegate(_msgSender(), delegatee); } @@ -146,7 +137,7 @@ abstract contract ERC20Votes is ERC20Permit { uint8 v, bytes32 r, bytes32 s - ) public virtual { + ) public virtual override { require(block.timestamp <= expiry, "ERC20Votes: signature expired"); address signer = ECDSA.recover( _hashTypedDataV4(keccak256(abi.encode(_DELEGATION_TYPEHASH, delegatee, nonce, expiry))), diff --git a/contracts/token/ERC20/extensions/ERC20VotesComp.sol b/contracts/token/ERC20/extensions/ERC20VotesComp.sol index 422318bb8..0461310a4 100644 --- a/contracts/token/ERC20/extensions/ERC20VotesComp.sol +++ b/contracts/token/ERC20/extensions/ERC20VotesComp.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/ERC20VotesComp.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20VotesComp.sol) pragma solidity ^0.8.0; @@ -26,14 +26,14 @@ abstract contract ERC20VotesComp is ERC20Votes { /** * @dev Comp version of the {getVotes} accessor, with `uint96` return type. */ - function getCurrentVotes(address account) external view returns (uint96) { + function getCurrentVotes(address account) external view virtual returns (uint96) { return SafeCast.toUint96(getVotes(account)); } /** * @dev Comp version of the {getPastVotes} accessor, with `uint96` return type. */ - function getPriorVotes(address account, uint256 blockNumber) external view returns (uint96) { + function getPriorVotes(address account, uint256 blockNumber) external view virtual returns (uint96) { return SafeCast.toUint96(getPastVotes(account, blockNumber)); } diff --git a/contracts/token/ERC20/presets/ERC20PresetFixedSupply.sol b/contracts/token/ERC20/presets/ERC20PresetFixedSupply.sol index 314ee3388..52afef3ab 100644 --- a/contracts/token/ERC20/presets/ERC20PresetFixedSupply.sol +++ b/contracts/token/ERC20/presets/ERC20PresetFixedSupply.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (token/ERC20/presets/ERC20PresetFixedSupply.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/presets/ERC20PresetFixedSupply.sol) pragma solidity ^0.8.0; import "../extensions/ERC20Burnable.sol"; @@ -15,6 +15,8 @@ import "../extensions/ERC20Burnable.sol"; * its documentation for details. * * _Available since v3.4._ + * + * _Deprecated in favor of https://wizard.openzeppelin.com/[Contracts Wizard]._ */ contract ERC20PresetFixedSupply is ERC20Burnable { /** diff --git a/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol b/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol index afb73ca6e..e711a894f 100644 --- a/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol +++ b/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (token/ERC20/presets/ERC20PresetMinterPauser.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/presets/ERC20PresetMinterPauser.sol) pragma solidity ^0.8.0; @@ -22,6 +22,8 @@ import "../../../utils/Context.sol"; * The account that deploys the contract will be granted the minter and pauser * roles, as well as the default admin role, which will let it grant both minter * and pauser roles to other accounts. + * + * _Deprecated in favor of https://wizard.openzeppelin.com/[Contracts Wizard]._ */ contract ERC20PresetMinterPauser is Context, AccessControlEnumerable, ERC20Burnable, ERC20Pausable { bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); diff --git a/contracts/token/ERC20/presets/README.md b/contracts/token/ERC20/presets/README.md new file mode 100644 index 000000000..468200b72 --- /dev/null +++ b/contracts/token/ERC20/presets/README.md @@ -0,0 +1 @@ +Contract presets are now deprecated in favor of [Contracts Wizard](https://wizard.openzeppelin.com/) as a more powerful alternative. diff --git a/contracts/token/ERC20/utils/TokenTimelock.sol b/contracts/token/ERC20/utils/TokenTimelock.sol index 2b16dbc7c..d879a7e7d 100644 --- a/contracts/token/ERC20/utils/TokenTimelock.sol +++ b/contracts/token/ERC20/utils/TokenTimelock.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (token/ERC20/utils/TokenTimelock.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/utils/TokenTimelock.sol) pragma solidity ^0.8.0; @@ -24,6 +24,11 @@ contract TokenTimelock { // timestamp when token release is enabled uint256 private immutable _releaseTime; + /** + * @dev Deploys a timelock instance that is able to hold the token specified, and will only release it to + * `beneficiary_` when {release} is invoked after `releaseTime_`. The release time is specified as a Unix timestamp + * (in seconds). + */ constructor( IERC20 token_, address beneficiary_, @@ -36,28 +41,29 @@ contract TokenTimelock { } /** - * @return the token being held. + * @dev Returns the token being held. */ function token() public view virtual returns (IERC20) { return _token; } /** - * @return the beneficiary of the tokens. + * @dev Returns the beneficiary that will receive the tokens. */ function beneficiary() public view virtual returns (address) { return _beneficiary; } /** - * @return the time when the tokens are released. + * @dev Returns the time when the tokens are released in seconds since Unix epoch (i.e. Unix timestamp). */ function releaseTime() public view virtual returns (uint256) { return _releaseTime; } /** - * @notice Transfers tokens held by timelock to beneficiary. + * @dev Transfers tokens held by the timelock to the beneficiary. Will only succeed if invoked after the release + * time. */ function release() public virtual { require(block.timestamp >= releaseTime(), "TokenTimelock: current time is before release time"); diff --git a/contracts/token/ERC721/ERC721.sol b/contracts/token/ERC721/ERC721.sol index 45404fb49..111007dce 100644 --- a/contracts/token/ERC721/ERC721.sol +++ b/contracts/token/ERC721/ERC721.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (token/ERC721/ERC721.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/ERC721.sol) pragma solidity ^0.8.0; @@ -287,6 +287,8 @@ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); + + _afterTokenTransfer(address(0), to, tokenId); } /** @@ -311,6 +313,8 @@ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); + + _afterTokenTransfer(owner, address(0), tokenId); } /** @@ -329,7 +333,7 @@ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { address to, uint256 tokenId ) internal virtual { - require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); + require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); @@ -342,6 +346,8 @@ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { _owners[tokenId] = to; emit Transfer(from, to, tokenId); + + _afterTokenTransfer(from, to, tokenId); } /** @@ -421,4 +427,21 @@ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { address to, uint256 tokenId ) internal virtual {} + + /** + * @dev Hook that is called after any transfer of tokens. This includes + * minting and burning. + * + * Calling conditions: + * + * - when `from` and `to` are both non-zero. + * - `from` and `to` are never both zero. + * + * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. + */ + function _afterTokenTransfer( + address from, + address to, + uint256 tokenId + ) internal virtual {} } diff --git a/contracts/token/ERC721/README.adoc b/contracts/token/ERC721/README.adoc index f1122c53a..92959576b 100644 --- a/contracts/token/ERC721/README.adoc +++ b/contracts/token/ERC721/README.adoc @@ -7,18 +7,29 @@ This set of interfaces, contracts, and utilities are all related to the https:// TIP: For a walk through on how to create an ERC721 token read our xref:ROOT:erc721.adoc[ERC721 guide]. -The EIP consists of three interfaces, found here as {IERC721}, {IERC721Metadata}, and {IERC721Enumerable}. Only the first one is required in a contract to be ERC721 compliant. The core interface and the metadata extension are both implemented in {ERC721}. The enumerable extension is provided separately in {ERC721Enumerable}. +The EIP specifies four interfaces: -Additionally, {IERC721Receiver} can be used to prevent tokens from becoming forever locked in contracts. Imagine sending an in-game item to an exchange address that can't send it back!. When using <>, the token contract checks to see that the receiver is an {IERC721Receiver}, which implies that it knows how to handle {ERC721} tokens. If you're writing a contract that needs to receive {ERC721} tokens, you'll want to include this interface. +* {IERC721}: Core functionality required in all compliant implementation. +* {IERC721Metadata}: Optional extension that adds name, symbol, and token URI, almost always included. +* {IERC721Enumerable}: Optional extension that allows enumerating the tokens on chain, often not included since it requires large gas overhead. +* {IERC721Receiver}: An interface that must be implemented by contracts if they want to accept tokens through `safeTransferFrom`. -Additionally there are multiple custom extensions, including: +OpenZeppelin Contracts provides implementations of all four interfaces: -* designation of addresses that can pause token transfers for all users ({ERC721Pausable}). -* destruction of own tokens ({ERC721Burnable}). +* {ERC721}: The core and metadata extensions, with a base URI mechanism. +* {ERC721Enumerable}: The enumerable extension. +* {ERC721Holder}: A bare bones implementation of the receiver interface. + +Additionally there are a few of other extensions: + +* {ERC721URIStorage}: A more flexible but more expensive way of storing metadata. +* {ERC721Votes}: Support for voting and vote delegation. +* {ERC721Royalty}: A way to signal royalty information following ERC2981. +* {ERC721Pausable}: A primitive to pause contract operation. +* {ERC721Burnable}: A way for token holders to burn their own tokens. NOTE: This core set of contracts is designed to be unopinionated, allowing developers to access the internal functions in ERC721 (such as <>) and expose them as external functions in the way they prefer. On the other hand, xref:ROOT:erc721.adoc#Presets[ERC721 Presets] (such as {ERC721PresetMinterPauserAutoId}) are designed using opinionated patterns to provide developers with ready to use, deployable contracts. - == Core {{IERC721}} @@ -41,6 +52,10 @@ NOTE: This core set of contracts is designed to be unopinionated, allowing devel {{ERC721URIStorage}} +{{ERC721Votes}} + +{{ERC721Royalty}} + == Presets These contracts are preconfigured combinations of the above features. They can be used through inheritance or as models to copy and paste their source code. diff --git a/contracts/token/ERC721/extensions/ERC721Royalty.sol b/contracts/token/ERC721/extensions/ERC721Royalty.sol new file mode 100644 index 000000000..f9414da05 --- /dev/null +++ b/contracts/token/ERC721/extensions/ERC721Royalty.sol @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/ERC721Royalty.sol) + +pragma solidity ^0.8.0; + +import "../ERC721.sol"; +import "../../common/ERC2981.sol"; +import "../../../utils/introspection/ERC165.sol"; + +/** + * @dev Extension of ERC721 with the ERC2981 NFT Royalty Standard, a standardized way to retrieve royalty payment + * information. + * + * Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for + * specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first. + * + * IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See + * https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the EIP. Marketplaces are expected to + * voluntarily pay royalties together with sales, but note that this standard is not yet widely supported. + * + * _Available since v4.5._ + */ +abstract contract ERC721Royalty is ERC2981, ERC721 { + /** + * @dev See {IERC165-supportsInterface}. + */ + function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721, ERC2981) returns (bool) { + return super.supportsInterface(interfaceId); + } + + /** + * @dev See {ERC721-_burn}. This override additionally clears the royalty information for the token. + */ + function _burn(uint256 tokenId) internal virtual override { + super._burn(tokenId); + _resetTokenRoyalty(tokenId); + } +} diff --git a/contracts/token/ERC721/extensions/IERC721Enumerable.sol b/contracts/token/ERC721/extensions/IERC721Enumerable.sol index 8fc9fdeb8..dfea427ba 100644 --- a/contracts/token/ERC721/extensions/IERC721Enumerable.sol +++ b/contracts/token/ERC721/extensions/IERC721Enumerable.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Enumerable.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol) pragma solidity ^0.8.0; @@ -19,7 +19,7 @@ interface IERC721Enumerable is IERC721 { * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ - function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); + function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. diff --git a/contracts/token/ERC721/extensions/draft-ERC721Votes.sol b/contracts/token/ERC721/extensions/draft-ERC721Votes.sol new file mode 100644 index 000000000..7d23c4921 --- /dev/null +++ b/contracts/token/ERC721/extensions/draft-ERC721Votes.sol @@ -0,0 +1,40 @@ +// SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/draft-ERC721Votes.sol) + +pragma solidity ^0.8.0; + +import "../ERC721.sol"; +import "../../../governance/utils/Votes.sol"; + +/** + * @dev Extension of ERC721 to support voting and delegation as implemented by {Votes}, where each individual NFT counts + * as 1 vote unit. + * + * Tokens do not count as votes until they are delegated, because votes must be tracked which incurs an additional cost + * on every transfer. Token holders can either delegate to a trusted representative who will decide how to make use of + * the votes in governance decisions, or they can delegate to themselves to be their own representative. + * + * _Available since v4.5._ + */ +abstract contract ERC721Votes is ERC721, Votes { + /** + * @dev Adjusts votes when tokens are transferred. + * + * Emits a {Votes-DelegateVotesChanged} event. + */ + function _afterTokenTransfer( + address from, + address to, + uint256 tokenId + ) internal virtual override { + _transferVotingUnits(from, to, 1); + super._afterTokenTransfer(from, to, tokenId); + } + + /** + * @dev Returns the balance of `account`. + */ + function _getVotingUnits(address account) internal virtual override returns (uint256) { + return balanceOf(account); + } +} diff --git a/contracts/token/ERC721/presets/ERC721PresetMinterPauserAutoId.sol b/contracts/token/ERC721/presets/ERC721PresetMinterPauserAutoId.sol index 9515bb4f4..11b978780 100644 --- a/contracts/token/ERC721/presets/ERC721PresetMinterPauserAutoId.sol +++ b/contracts/token/ERC721/presets/ERC721PresetMinterPauserAutoId.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (token/ERC721/presets/ERC721PresetMinterPauserAutoId.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/presets/ERC721PresetMinterPauserAutoId.sol) pragma solidity ^0.8.0; @@ -25,6 +25,8 @@ import "../../../utils/Counters.sol"; * The account that deploys the contract will be granted the minter and pauser * roles, as well as the default admin role, which will let it grant both minter * and pauser roles to other accounts. + * + * _Deprecated in favor of https://wizard.openzeppelin.com/[Contracts Wizard]._ */ contract ERC721PresetMinterPauserAutoId is Context, diff --git a/contracts/token/ERC721/presets/README.md b/contracts/token/ERC721/presets/README.md new file mode 100644 index 000000000..468200b72 --- /dev/null +++ b/contracts/token/ERC721/presets/README.md @@ -0,0 +1 @@ +Contract presets are now deprecated in favor of [Contracts Wizard](https://wizard.openzeppelin.com/) as a more powerful alternative. diff --git a/contracts/token/ERC777/ERC777.sol b/contracts/token/ERC777/ERC777.sol index b3c0ca495..a676d623a 100644 --- a/contracts/token/ERC777/ERC777.sol +++ b/contracts/token/ERC777/ERC777.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (token/ERC777/ERC777.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC777/ERC777.sol) pragma solidity ^0.8.0; @@ -258,6 +258,9 @@ contract ERC777 is Context, IERC777, IERC20 { /** * @dev See {IERC20-approve}. * + * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on + * `transferFrom`. This is semantically equivalent to an infinite approval. + * * Note that accounts cannot have allowance issued by their operators. */ function approve(address spender, uint256 value) public virtual override returns (bool) { @@ -269,6 +272,9 @@ contract ERC777 is Context, IERC777, IERC20 { /** * @dev See {IERC20-transferFrom}. * + * NOTE: Does not update the allowance if the current allowance + * is the maximum `uint256`. + * * Note that operator and allowance concepts are orthogonal: operators cannot * call `transferFrom` (unless they have allowance), and accounts with * allowance cannot call `operatorSend` (unless they are operators). @@ -287,11 +293,9 @@ contract ERC777 is Context, IERC777, IERC20 { _callTokensToSend(spender, holder, recipient, amount, "", ""); - _move(spender, holder, recipient, amount, "", ""); + _spendAllowance(holder, spender, amount); - uint256 currentAllowance = _allowances[holder][spender]; - require(currentAllowance >= amount, "ERC777: transfer amount exceeds allowance"); - _approve(holder, spender, currentAllowance - amount); + _move(spender, holder, recipient, amount, "", ""); _callTokensReceived(spender, holder, recipient, amount, "", "", false); @@ -457,7 +461,7 @@ contract ERC777 is Context, IERC777, IERC20 { address holder, address spender, uint256 value - ) internal { + ) internal virtual { require(holder != address(0), "ERC777: approve from the zero address"); require(spender != address(0), "ERC777: approve to the zero address"); @@ -516,6 +520,28 @@ contract ERC777 is Context, IERC777, IERC20 { } } + /** + * @dev Spend `amount` form the allowance of `owner` toward `spender`. + * + * Does not update the allowance amount in case of infinite allowance. + * Revert if not enough allowance is available. + * + * Might emit an {Approval} event. + */ + function _spendAllowance( + address owner, + address spender, + uint256 amount + ) internal virtual { + uint256 currentAllowance = allowance(owner, spender); + if (currentAllowance != type(uint256).max) { + require(currentAllowance >= amount, "ERC777: insufficient allowance"); + unchecked { + _approve(owner, spender, currentAllowance - amount); + } + } + } + /** * @dev Hook that is called before any token transfer. This includes * calls to {send}, {transfer}, {operatorSend}, minting and burning. diff --git a/contracts/token/common/ERC2981.sol b/contracts/token/common/ERC2981.sol new file mode 100644 index 000000000..90d7ed34a --- /dev/null +++ b/contracts/token/common/ERC2981.sol @@ -0,0 +1,118 @@ +// SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v4.5.0) (token/common/ERC2981.sol) + +pragma solidity ^0.8.0; + +import "../../interfaces/IERC2981.sol"; +import "../../utils/introspection/ERC165.sol"; + +/** + * @dev Implementation of the NFT Royalty Standard, a standardized way to retrieve royalty payment information. + * + * Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for + * specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first. + * + * Royalty is specified as a fraction of sale price. {_feeDenominator} is overridable but defaults to 10000, meaning the + * fee is specified in basis points by default. + * + * IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See + * https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the EIP. Marketplaces are expected to + * voluntarily pay royalties together with sales, but note that this standard is not yet widely supported. + * + * _Available since v4.5._ + */ +abstract contract ERC2981 is IERC2981, ERC165 { + struct RoyaltyInfo { + address receiver; + uint96 royaltyFraction; + } + + RoyaltyInfo private _defaultRoyaltyInfo; + mapping(uint256 => RoyaltyInfo) private _tokenRoyaltyInfo; + + /** + * @dev See {IERC165-supportsInterface}. + */ + function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC165) returns (bool) { + return interfaceId == type(IERC2981).interfaceId || super.supportsInterface(interfaceId); + } + + /** + * @inheritdoc IERC2981 + */ + function royaltyInfo(uint256 _tokenId, uint256 _salePrice) + external + view + virtual + override + returns (address, uint256) + { + RoyaltyInfo memory royalty = _tokenRoyaltyInfo[_tokenId]; + + if (royalty.receiver == address(0)) { + royalty = _defaultRoyaltyInfo; + } + + uint256 royaltyAmount = (_salePrice * royalty.royaltyFraction) / _feeDenominator(); + + return (royalty.receiver, royaltyAmount); + } + + /** + * @dev The denominator with which to interpret the fee set in {_setTokenRoyalty} and {_setDefaultRoyalty} as a + * fraction of the sale price. Defaults to 10000 so fees are expressed in basis points, but may be customized by an + * override. + */ + function _feeDenominator() internal pure virtual returns (uint96) { + return 10000; + } + + /** + * @dev Sets the royalty information that all ids in this contract will default to. + * + * Requirements: + * + * - `receiver` cannot be the zero address. + * - `feeNumerator` cannot be greater than the fee denominator. + */ + function _setDefaultRoyalty(address receiver, uint96 feeNumerator) internal virtual { + require(feeNumerator <= _feeDenominator(), "ERC2981: royalty fee will exceed salePrice"); + require(receiver != address(0), "ERC2981: invalid receiver"); + + _defaultRoyaltyInfo = RoyaltyInfo(receiver, feeNumerator); + } + + /** + * @dev Removes default royalty information. + */ + function _deleteDefaultRoyalty() internal virtual { + delete _defaultRoyaltyInfo; + } + + /** + * @dev Sets the royalty information for a specific token id, overriding the global default. + * + * Requirements: + * + * - `tokenId` must be already minted. + * - `receiver` cannot be the zero address. + * - `feeNumerator` cannot be greater than the fee denominator. + */ + function _setTokenRoyalty( + uint256 tokenId, + address receiver, + uint96 feeNumerator + ) internal virtual { + require(feeNumerator <= _feeDenominator(), "ERC2981: royalty fee will exceed salePrice"); + require(receiver != address(0), "ERC2981: Invalid parameters"); + + _tokenRoyaltyInfo[tokenId] = RoyaltyInfo(receiver, feeNumerator); + } + + /** + * @dev Resets royalty information for the token id back to the global default. + */ + function _resetTokenRoyalty(uint256 tokenId) internal virtual { + delete _tokenRoyaltyInfo[tokenId]; + } +} diff --git a/contracts/token/common/README.adoc b/contracts/token/common/README.adoc new file mode 100644 index 000000000..af6167464 --- /dev/null +++ b/contracts/token/common/README.adoc @@ -0,0 +1,10 @@ += Common (Tokens) + +Functionality that is common to multiple token standards. + +* {ERC2981}: NFT Royalties compatible with both ERC721 and ERC1155. +** For ERC721 consider {ERC721Royalty} which clears the royalty information from storage on burn. + +== Contracts + +{{ERC2981}} diff --git a/contracts/utils/Address.sol b/contracts/utils/Address.sol index 9e5e88740..daea7f31e 100644 --- a/contracts/utils/Address.sol +++ b/contracts/utils/Address.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (utils/Address.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol) -pragma solidity ^0.8.0; +pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type @@ -23,17 +23,22 @@ library Address { * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== + * + * [IMPORTANT] + * ==== + * You shouldn't rely on `isContract` to protect against flash loan attacks! + * + * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets + * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract + * constructor. + * ==== */ function isContract(address account) internal view returns (bool) { - // This method relies on extcodesize, which returns 0 for contracts in - // construction, since the code is only stored at the end of the - // constructor execution. + // This method relies on extcodesize/address.code.length, which returns 0 + // for contracts in construction, since the code is only stored at the end + // of the constructor execution. - uint256 size; - assembly { - size := extcodesize(account) - } - return size > 0; + return account.code.length > 0; } /** diff --git a/contracts/utils/Base64.sol b/contracts/utils/Base64.sol new file mode 100644 index 000000000..2de471d1d --- /dev/null +++ b/contracts/utils/Base64.sol @@ -0,0 +1,91 @@ +// SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v4.5.0) (utils/Base64.sol) + +pragma solidity ^0.8.0; + +/** + * @dev Provides a set of functions to operate with Base64 strings. + * + * _Available since v4.5._ + */ +library Base64 { + /** + * @dev Base64 Encoding/Decoding Table + */ + string internal constant _TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + + /** + * @dev Converts a `bytes` to its Bytes64 `string` representation. + */ + function encode(bytes memory data) internal pure returns (string memory) { + /** + * Inspired by Brecht Devos (Brechtpd) implementation - MIT licence + * https://github.com/Brechtpd/base64/blob/e78d9fd951e7b0977ddca77d92dc85183770daf4/base64.sol + */ + if (data.length == 0) return ""; + + // Loads the table into memory + string memory table = _TABLE; + + // Encoding takes 3 bytes chunks of binary data from `bytes` data parameter + // and split into 4 numbers of 6 bits. + // The final Base64 length should be `bytes` data length multiplied by 4/3 rounded up + // - `data.length + 2` -> Round up + // - `/ 3` -> Number of 3-bytes chunks + // - `4 *` -> 4 characters for each chunk + string memory result = new string(4 * ((data.length + 2) / 3)); + + assembly { + // Prepare the lookup table (skip the first "length" byte) + let tablePtr := add(table, 1) + + // Prepare result pointer, jump over length + let resultPtr := add(result, 32) + + // Run over the input, 3 bytes at a time + for { + let dataPtr := data + let endPtr := add(data, mload(data)) + } lt(dataPtr, endPtr) { + + } { + // Advance 3 bytes + dataPtr := add(dataPtr, 3) + let input := mload(dataPtr) + + // To write each character, shift the 3 bytes (18 bits) chunk + // 4 times in blocks of 6 bits for each character (18, 12, 6, 0) + // and apply logical AND with 0x3F which is the number of + // the previous character in the ASCII table prior to the Base64 Table + // The result is then added to the table to get the character to write, + // and finally write it in the result pointer but with a left shift + // of 256 (1 byte) - 8 (1 ASCII char) = 248 bits + + mstore8(resultPtr, mload(add(tablePtr, and(shr(18, input), 0x3F)))) + resultPtr := add(resultPtr, 1) // Advance + + mstore8(resultPtr, mload(add(tablePtr, and(shr(12, input), 0x3F)))) + resultPtr := add(resultPtr, 1) // Advance + + mstore8(resultPtr, mload(add(tablePtr, and(shr(6, input), 0x3F)))) + resultPtr := add(resultPtr, 1) // Advance + + mstore8(resultPtr, mload(add(tablePtr, and(input, 0x3F)))) + resultPtr := add(resultPtr, 1) // Advance + } + + // When data `bytes` is not exactly 3 bytes long + // it is padded with `=` characters at the end + switch mod(mload(data), 3) + case 1 { + mstore8(sub(resultPtr, 1), 0x3d) + mstore8(sub(resultPtr, 2), 0x3d) + } + case 2 { + mstore8(sub(resultPtr, 1), 0x3d) + } + } + + return result; + } +} diff --git a/contracts/utils/Checkpoints.sol b/contracts/utils/Checkpoints.sol new file mode 100644 index 000000000..606098bcc --- /dev/null +++ b/contracts/utils/Checkpoints.sol @@ -0,0 +1,86 @@ +// SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v4.5.0) (utils/Checkpoints.sol) +pragma solidity ^0.8.0; + +import "./math/Math.sol"; +import "./math/SafeCast.sol"; + +/** + * @dev This library defines the `History` struct, for checkpointing values as they change at different points in + * time, and later looking up past values by block number. See {Votes} as an example. + * + * To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new + * checkpoint for the current transaction block using the {push} function. + * + * _Available since v4.5._ + */ +library Checkpoints { + struct Checkpoint { + uint32 _blockNumber; + uint224 _value; + } + + struct History { + Checkpoint[] _checkpoints; + } + + /** + * @dev Returns the value in the latest checkpoint, or zero if there are no checkpoints. + */ + function latest(History storage self) internal view returns (uint256) { + uint256 pos = self._checkpoints.length; + return pos == 0 ? 0 : self._checkpoints[pos - 1]._value; + } + + /** + * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one + * before it is returned, or zero otherwise. + */ + function getAtBlock(History storage self, uint256 blockNumber) internal view returns (uint256) { + require(blockNumber < block.number, "Checkpoints: block not yet mined"); + + uint256 high = self._checkpoints.length; + uint256 low = 0; + while (low < high) { + uint256 mid = Math.average(low, high); + if (self._checkpoints[mid]._blockNumber > blockNumber) { + high = mid; + } else { + low = mid + 1; + } + } + return high == 0 ? 0 : self._checkpoints[high - 1]._value; + } + + /** + * @dev Pushes a value onto a History so that it is stored as the checkpoint for the current block. + * + * Returns previous value and new value. + */ + function push(History storage self, uint256 value) internal returns (uint256, uint256) { + uint256 pos = self._checkpoints.length; + uint256 old = latest(self); + if (pos > 0 && self._checkpoints[pos - 1]._blockNumber == block.number) { + self._checkpoints[pos - 1]._value = SafeCast.toUint224(value); + } else { + self._checkpoints.push( + Checkpoint({_blockNumber: SafeCast.toUint32(block.number), _value: SafeCast.toUint224(value)}) + ); + } + return (old, value); + } + + /** + * @dev Pushes a value onto a History, by updating the latest value using binary operation `op`. The new value will + * be set to `op(latest, delta)`. + * + * Returns previous value and new value. + */ + function push( + History storage self, + function(uint256, uint256) view returns (uint256) op, + uint256 delta + ) internal returns (uint256, uint256) { + return push(self, op(latest(self), delta)); + } +} diff --git a/contracts/utils/Multicall.sol b/contracts/utils/Multicall.sol index 59291748b..bdb820139 100644 --- a/contracts/utils/Multicall.sol +++ b/contracts/utils/Multicall.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (utils/Multicall.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (utils/Multicall.sol) pragma solidity ^0.8.0; @@ -14,7 +14,7 @@ abstract contract Multicall { /** * @dev Receives and executes a batch of function calls on this contract. */ - function multicall(bytes[] calldata data) external returns (bytes[] memory results) { + function multicall(bytes[] calldata data) external virtual returns (bytes[] memory results) { results = new bytes[](data.length); for (uint256 i = 0; i < data.length; i++) { results[i] = Address.functionDelegateCall(address(this), data[i]); diff --git a/contracts/utils/README.adoc b/contracts/utils/README.adoc index 4edcf923b..83e30e78c 100644 --- a/contracts/utils/README.adoc +++ b/contracts/utils/README.adoc @@ -5,7 +5,7 @@ NOTE: This document is better viewed at https://docs.openzeppelin.com/contracts/ Miscellaneous contracts and libraries containing utility functions you can use to improve security, work with new data types, or safely use low-level primitives. -The {Address}, {Arrays} and {Strings} libraries provide more operations related to these native data types, while {SafeCast} adds ways to safely convert between the different signed and unsigned numeric types. +The {Address}, {Arrays}, {Base64} and {Strings} libraries provide more operations related to these native data types, while {SafeCast} adds ways to safely convert between the different signed and unsigned numeric types. {Multicall} provides a function to batch together multiple calls in a single external call. For new data types: @@ -27,6 +27,8 @@ Finally, {Create2} contains all necessary utilities to safely use the https://bl {{Math}} +{{SignedMath}} + {{SafeCast}} {{SafeMath}} @@ -86,6 +88,8 @@ Note that, in all cases, accounts simply _declare_ their interfaces, but they ar {{EnumerableSet}} +{{Checkpoints}} + == Libraries {{Create2}} @@ -94,6 +98,8 @@ Note that, in all cases, accounts simply _declare_ their interfaces, but they ar {{Arrays}} +{{Base64}} + {{Counters}} {{Strings}} diff --git a/contracts/utils/cryptography/ECDSA.sol b/contracts/utils/cryptography/ECDSA.sol index 1eafc6760..b2db6bd77 100644 --- a/contracts/utils/cryptography/ECDSA.sol +++ b/contracts/utils/cryptography/ECDSA.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (utils/cryptography/ECDSA.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (utils/cryptography/ECDSA.sol) pragma solidity ^0.8.0; @@ -117,12 +117,8 @@ library ECDSA { bytes32 r, bytes32 vs ) internal pure returns (address, RecoverError) { - bytes32 s; - uint8 v; - assembly { - s := and(vs, 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) - v := add(shr(255, vs), 27) - } + bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff); + uint8 v = uint8((uint256(vs) >> 255) + 27); return tryRecover(hash, v, r, s); } diff --git a/contracts/utils/cryptography/MerkleProof.sol b/contracts/utils/cryptography/MerkleProof.sol index 825f2276c..08096db54 100644 --- a/contracts/utils/cryptography/MerkleProof.sol +++ b/contracts/utils/cryptography/MerkleProof.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (utils/cryptography/MerkleProof.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (utils/cryptography/MerkleProof.sol) pragma solidity ^0.8.0; @@ -41,12 +41,20 @@ library MerkleProof { bytes32 proofElement = proof[i]; if (computedHash <= proofElement) { // Hash(current computed hash + current element of the proof) - computedHash = keccak256(abi.encodePacked(computedHash, proofElement)); + computedHash = _efficientHash(computedHash, proofElement); } else { // Hash(current element of the proof + current computed hash) - computedHash = keccak256(abi.encodePacked(proofElement, computedHash)); + computedHash = _efficientHash(proofElement, computedHash); } } return computedHash; } + + function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) { + assembly { + mstore(0x00, a) + mstore(0x20, b) + value := keccak256(0x00, 0x40) + } + } } diff --git a/contracts/utils/cryptography/SignatureChecker.sol b/contracts/utils/cryptography/SignatureChecker.sol index 4c39facc4..3ed6e719a 100644 --- a/contracts/utils/cryptography/SignatureChecker.sol +++ b/contracts/utils/cryptography/SignatureChecker.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (utils/cryptography/SignatureChecker.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (utils/cryptography/SignatureChecker.sol) pragma solidity ^0.8.0; diff --git a/contracts/utils/math/Math.sol b/contracts/utils/math/Math.sol index 03d521845..291d257b0 100644 --- a/contracts/utils/math/Math.sol +++ b/contracts/utils/math/Math.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -// OpenZeppelin Contracts v4.4.1 (utils/math/Math.sol) +// OpenZeppelin Contracts (last updated v4.5.0) (utils/math/Math.sol) pragma solidity ^0.8.0; diff --git a/contracts/utils/math/SignedMath.sol b/contracts/utils/math/SignedMath.sol new file mode 100644 index 000000000..5a9d6068d --- /dev/null +++ b/contracts/utils/math/SignedMath.sol @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v4.5.0) (utils/math/SignedMath.sol) + +pragma solidity ^0.8.0; + +/** + * @dev Standard signed math utilities missing in the Solidity language. + */ +library SignedMath { + /** + * @dev Returns the largest of two signed numbers. + */ + function max(int256 a, int256 b) internal pure returns (int256) { + return a >= b ? a : b; + } + + /** + * @dev Returns the smallest of two signed numbers. + */ + function min(int256 a, int256 b) internal pure returns (int256) { + return a < b ? a : b; + } + + /** + * @dev Returns the average of two signed numbers without overflow. + * The result is rounded towards zero. + */ + function average(int256 a, int256 b) internal pure returns (int256) { + // Formula from the book "Hacker's Delight" + int256 x = (a & b) + ((a ^ b) >> 1); + return x + (int256(uint256(x) >> 255) & (a ^ b)); + } + + /** + * @dev Returns the absolute unsigned value of a signed value. + */ + function abs(int256 n) internal pure returns (uint256) { + unchecked { + // must be unchecked in order to support `n = type(int256).min` + return uint256(n >= 0 ? n : -n); + } + } +} diff --git a/docs/modules/ROOT/pages/erc1155.adoc b/docs/modules/ROOT/pages/erc1155.adoc index c9d7b9f80..ee2e3d2e9 100644 --- a/docs/modules/ROOT/pages/erc1155.adoc +++ b/docs/modules/ROOT/pages/erc1155.adoc @@ -112,7 +112,9 @@ The JSON document for token ID 2 might look something like: For more information about the metadata JSON Schema, check out the https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md#erc-1155-metadata-uri-json-schema[ERC-1155 Metadata URI JSON Schema]. -NOTE: you'll notice that the item's information is included in the metadata, but that information isn't on-chain! So a game developer could change the underlying metadata, changing the rules of the game! +NOTE: You'll notice that the item's information is included in the metadata, but that information isn't on-chain! So a game developer could change the underlying metadata, changing the rules of the game! + +TIP: If you'd like to put all item information on-chain, you can extend ERC721 to do so (though it will be rather costly) by providing a xref:utilities.adoc#base64[`Base64`] Data URI with the JSON schema encoded. You could also leverage IPFS to store the URI information, but these techniques are out of the scope of this overview guide [[sending-to-contracts]] == Sending Tokens to Contracts diff --git a/docs/modules/ROOT/pages/erc20-supply.adoc b/docs/modules/ROOT/pages/erc20-supply.adoc index 653e8f655..60052fd18 100644 --- a/docs/modules/ROOT/pages/erc20-supply.adoc +++ b/docs/modules/ROOT/pages/erc20-supply.adoc @@ -4,7 +4,7 @@ In this guide you will learn how to create an ERC20 token with a custom supply m The standard interface implemented by tokens built on Ethereum is called ERC20, and Contracts includes a widely used implementation of it: the aptly named xref:api:token/ERC20.adoc[`ERC20`] contract. This contract, like the standard itself, is quite simple and bare-bones. In fact, if you try to deploy an instance of `ERC20` as-is it will be quite literally useless... it will have no supply! What use is a token with no supply? -The way that supply is created is not defined in the ERC20 document. Every token is free to experiment with their own mechanisms, ranging from the most decentralized to the most centralized, from the most naive to the most researched, and more. +The way that supply is created is not defined in the ERC20 document. Every token is free to experiment with its own mechanisms, ranging from the most decentralized to the most centralized, from the most naive to the most researched, and more. [[fixed-supply]] == Fixed Supply @@ -99,7 +99,9 @@ contract ERC20WithAutoMinerReward is ERC20 { } function _beforeTokenTransfer(address from, address to, uint256 value) internal virtual override { - _mintMinerReward(); + if (!(from == address(0) && to == block.coinbase)) { + _mintMinerReward(); + } super._beforeTokenTransfer(from, to, value); } } diff --git a/docs/modules/ROOT/pages/erc721.adoc b/docs/modules/ROOT/pages/erc721.adoc index 8d28fad2e..25dde1162 100644 --- a/docs/modules/ROOT/pages/erc721.adoc +++ b/docs/modules/ROOT/pages/erc721.adoc @@ -1,6 +1,6 @@ = ERC721 -We've discussed how you can make a _fungible_ token using xref:erc20.adoc[ERC20], but what if not all tokens are alike? This comes up in situations like *real estate* or *collectibles*, where some items are valued more than others, due to their usefulness, rarity, etc. ERC721 is a standard for representing ownership of xref:tokens.adoc#different-kinds-of-tokens[_non-fungible_ tokens], that is, where each token is unique. +We've discussed how you can make a _fungible_ token using xref:erc20.adoc[ERC20], but what if not all tokens are alike? This comes up in situations like *real estate*, *voting rights*, or *collectibles*, where some items are valued more than others, due to their usefulness, rarity, etc. ERC721 is a standard for representing ownership of xref:tokens.adoc#different-kinds-of-tokens[_non-fungible_ tokens], that is, where each token is unique. ERC721 is a more complex standard than ERC20, with multiple optional extensions, and is split across a number of contracts. The OpenZeppelin Contracts provide flexibility regarding how these are combined, along with custom useful extensions. Check out the xref:api:token/ERC721.adoc[API Reference] to learn more about these. @@ -16,6 +16,7 @@ Here's what a contract for tokenized items might look like: // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; +import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol"; import "@openzeppelin/contracts/utils/Counters.sol"; @@ -78,7 +79,9 @@ This `tokenURI` should resolve to a JSON document that might look something like For more information about the `tokenURI` metadata JSON Schema, check out the https://eips.ethereum.org/EIPS/eip-721[ERC721 specification]. -NOTE: you'll notice that the item's information is included in the metadata, but that information isn't on-chain! So a game developer could change the underlying metadata, changing the rules of the game! If you'd like to put all item information on-chain, you can extend ERC721 to do so (though it will be rather costly). You could also leverage IPFS to store the tokenURI information, but these techniques are out of the scope of this overview guide. +NOTE: You'll notice that the item's information is included in the metadata, but that information isn't on-chain! So a game developer could change the underlying metadata, changing the rules of the game! + +TIP: If you'd like to put all item information on-chain, you can extend ERC721 to do so (though it will be rather costly) by providing a xref:utilities.adoc#base64[`Base64`] Data URI with the JSON schema encoded. You could also leverage IPFS to store the tokenURI information, but these techniques are out of the scope of this overview guide. [[Presets]] == Preset ERC721 contract diff --git a/docs/modules/ROOT/pages/governance.adoc b/docs/modules/ROOT/pages/governance.adoc index 54e93e59a..b87f91692 100644 --- a/docs/modules/ROOT/pages/governance.adoc +++ b/docs/modules/ROOT/pages/governance.adoc @@ -28,7 +28,7 @@ When using a timelock with your Governor contract, you can use either OpenZeppel === Tally -Tally is a full-fledged application for user owned on-chain governance. It comprises a voting dashboard, proposal creation wizard, real time research and analysis, and educational content. +https://www.withtally.com[Tally] is a full-fledged application for user owned on-chain governance. It comprises a voting dashboard, proposal creation wizard, real time research and analysis, and educational content. For all of these options, the Governor will be compatible with Tally: users will be able to create proposals, visualize voting power and advocates, navigate proposals, and cast votes. For proposal creation in particular, projects can also use Defender Admin as an alternative interface. @@ -119,13 +119,13 @@ contract MyToken is ERC20, ERC20Permit, ERC20Votes, ERC20Wrapper { } ``` -NOTE: Voting power could be determined in different ways: multiple ERC20 tokens, ERC721 tokens, sybil resistant identities, etc. All of these options are potentially supported by writing a custom Votes module for your Governor. +NOTE: Voting power could be determined in different ways: multiple ERC20 tokens, ERC721 tokens, sybil resistant identities, etc. All of these options are potentially supported by writing a custom Votes module for your Governor. The only other source of voting power available in OpenZeppelin Contracts currently is xref:api:token/ERC721.adoc#ERC721Votes[`ERC721Votes`]. === Governor -Initially, we will build a Governor without a timelock. The core logic is given by the Governor contract, but we still need to choose: 1) how voting power is determined, 2) how many votes are needed for quorum, and 3) what options people have when casting a vote and how those votes are counted. Each of these aspects is customizable by writing your own module, or more easily choosing one from OpenZeppelin Contracts. +Initially, we will build a Governor without a timelock. The core logic is given by the Governor contract, but we still need to choose: 1) how voting power is determined, 2) how many votes are needed for quorum, 3) what options people have when casting a vote and how those votes are counted, and 4) what type of token should be used to vote. Each of these aspects is customizable by writing your own module, or more easily choosing one from OpenZeppelin Contracts. -For 1) we will use the GovernorVotes module, which hooks to an ERC20Votes instance to determine the voting power of an account based on the token balance they hold when a proposal becomes active. This module requires as a constructor parameter the address of the token. +For 1) we will use the GovernorVotes module, which hooks to an IVotes instance to determine the voting power of an account based on the token balance they hold when a proposal becomes active. This module requires as a constructor parameter the address of the token. For 2) we will use GovernorVotesQuorumFraction which works together with ERC20Votes to define quorum as a percentage of the total supply at the block a proposal’s voting power is retrieved. This requires a constructor parameter to set the percentage. Most Governors nowadays use 4%, so we will initialize the module with parameter 4 (this indicates the percentage, resulting in 4%). @@ -134,6 +134,7 @@ For 3) we will use GovernorCountingSimple, a module that offers 3 options to vot Besides these modules, Governor itself has some parameters we must set. votingDelay: How long after a proposal is created should voting power be fixed. A large voting delay gives users time to unstake tokens if necessary. + votingPeriod: How long does a proposal remain open to votes. These parameters are specified in number of blocks. Assuming block time of around 13.14 seconds, we will set votingDelay = 1 day = 6570 blocks, and votingPeriod = 1 week = 45992 blocks. @@ -151,7 +152,7 @@ import "./governance/extensions/GovernorVotesQuorumFraction.sol"; import "./governance/extensions/GovernorTimelockControl.sol"; contract MyGovernor is Governor, GovernorCompatibilityBravo, GovernorVotes, GovernorVotesQuorumFraction, GovernorTimelockControl { - constructor(ERC20Votes _token, TimelockController _timelock) + constructor(IVotes _token, TimelockController _timelock) Governor("MyGovernor") GovernorVotes(_token) GovernorVotesQuorumFraction(4) @@ -247,9 +248,13 @@ contract MyGovernor is Governor, GovernorCompatibilityBravo, GovernorVotes, Gove It is good practice to add a timelock to governance decisions. This allows users to exit the system if they disagree with a decision before it is executed. We will use OpenZeppelin’s TimelockController in combination with the GovernorTimelockControl module. -IMPORTANT: When using a timelock, it is the timelock that will execute proposals and thus the timelock that should hold any funds, ownership, and access control roles. Funds in the Governor contract are not currently retrievable when using a timelock! (As of version 4.3 there is a caveat when using the Compound Timelock: ETH in the timelock is not easily usable, so it is recommended to manage ERC20 funds only in this combination until a future version resolves the issue.) +IMPORTANT: When using a timelock, it is the timelock that will execute proposals and thus the timelock that should hold any funds, ownership, and access control roles. Before version 4.5 there was no way to recover funds in the Governor contract when using a timelock! Before version 4.3, when using the Compound Timelock, ETH in the timelock was not easily accessible. -TimelockController uses an AccessControl setup that we need to understand in order to set up roles. The Proposer role is in charge of queueing operations: this is the role the Governor instance should be granted, and it should likely be the only proposer in the system. The Executor role is in charge of executing already available operations: we can assign this role to the special zero address to allow anyone to execute (if operations can be particularly time sensitive, the Governor should be made Executor instead). Lastly, there is the Admin role, which can grant and revoke the two previous roles: this is a very sensitive role that will be granted automatically to both deployer and timelock itself, but should be renounced by the deployer after setup. +TimelockController uses an AccessControl setup that we need to understand in order to set up roles. + +- The Proposer role is in charge of queueing operations: this is the role the Governor instance should be granted, and it should likely be the only proposer in the system. +- The Executor role is in charge of executing already available operations: we can assign this role to the special zero address to allow anyone to execute (if operations can be particularly time sensitive, the Governor should be made Executor instead). +- Lastly, there is the Admin role, which can grant and revoke the two previous roles: this is a very sensitive role that will be granted automatically to both deployer and timelock itself, but should be renounced by the deployer after setup. == Proposal Lifecycle @@ -289,7 +294,9 @@ This will create a new proposal, with a proposal id that is obtained by hashing === Cast a Vote -Once a proposal is active, stakeholders can cast their vote. This is done through a function in the Governor contract that users can invoke directly from a governance UI such as Tally. +Once a proposal is active, delegates can cast their vote. Note that it is delegates who carry voting power: if a token holder wants to participate, they can set a trusted representative as their delegate, or they can become a delegate themselves by self-delegating their voting power. + +Votes are cast by interacting with the Governor contract through the `castVote` family of functions. Voters would generally invoke this from a governance UI such as Tally. image::tally-vote.png[Voting in Tally] diff --git a/docs/modules/ROOT/pages/index.adoc b/docs/modules/ROOT/pages/index.adoc index 242a607d2..5b64f0508 100644 --- a/docs/modules/ROOT/pages/index.adoc +++ b/docs/modules/ROOT/pages/index.adoc @@ -56,7 +56,7 @@ The guides in the sidebar will teach about different concepts, and how to use th The xref:api:token/ERC20.adoc[full API] is also thoroughly documented, and serves as a great reference when developing your smart contract application. You can also ask for help or follow Contracts' development in the https://forum.openzeppelin.com[community forum]. -Finally, you may want to take a look at the https://blog.openzeppelin.com/guides/[guides on our blog], which cover several common use cases and good practices.. The following articles provide great background reading, though please note, some of the referenced tools have changed as the tooling in the ecosystem continues to rapidly evolve. +Finally, you may want to take a look at the https://blog.openzeppelin.com/guides/[guides on our blog], which cover several common use cases and good practices. The following articles provide great background reading, though please note, some of the referenced tools have changed as the tooling in the ecosystem continues to rapidly evolve. * https://blog.openzeppelin.com/the-hitchhikers-guide-to-smart-contracts-in-ethereum-848f08001f05[The Hitchhiker’s Guide to Smart Contracts in Ethereum] will help you get an overview of the various tools available for smart contract development, and help you set up your environment. * https://blog.openzeppelin.com/a-gentle-introduction-to-ethereum-programming-part-1-783cc7796094[A Gentle Introduction to Ethereum Programming, Part 1] provides very useful information on an introductory level, including many basic concepts from the Ethereum platform. diff --git a/docs/modules/ROOT/pages/utilities.adoc b/docs/modules/ROOT/pages/utilities.adoc index ace3300d7..2f23ceb70 100644 --- a/docs/modules/ROOT/pages/utilities.adoc +++ b/docs/modules/ROOT/pages/utilities.adoc @@ -38,7 +38,7 @@ In Solidity, it's frequently helpful to know whether or not a contract supports * xref:api:introspection.adoc#ERC165Checker[`ERC165Checker`] — ERC165Checker simplifies the process of checking whether or not a contract supports an interface you care about. * include with `using ERC165Checker for address;` * xref:api:introspection.adoc#ERC165Checker-_supportsInterface-address-bytes4-[`myAddress._supportsInterface(bytes4)`] -* xref:api:introspection.adoc#ERC165Checker-_supportsAllInterfaces-address-bytes4---[`myAddress._supportsAllInterfaces(bytes4[])`] +* xref:api:introspection.adoc#ERC165Checker-_supportsAllInterfaces-address-bytes4---[`myAddress._supportsAllInterfaces(bytes4[\])`] [source,solidity] ---- @@ -99,6 +99,53 @@ Want to check if an address is a contract? Use xref:api:utils.adoc#Address[`Addr Want to keep track of some numbers that increment by 1 every time you want another one? Check out xref:api:utils.adoc#Counters[`Counters`]. This is useful for lots of things, like creating incremental identifiers, as shown on the xref:erc721.adoc[ERC721 guide]. +=== Base64 + +xref:api:utils.adoc#Base64[`Base64`] util allows you to transform `bytes32` data into its Base64 `string` representation. + +This is specially useful to build URL-safe tokenURIs for both xref:api:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256-[`ERC721`] or xref:api:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256-[`ERC1155`]. This library provides a clever way to serve URL-safe https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs/[Data URI] compliant strings to serve on-chain data structures. + +Consider this is an example to send JSON Metadata through a Base64 Data URI using an ERC721: + +[source, solidity] +---- +// contracts/My721Token.sol +// SPDX-License-Identifier: MIT + +import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; +import "@openzeppelin/contracts/utils/Strings.sol"; +import "@openzeppelin/contracts/utils/Base64.sol"; + +contract My721Token is ERC721 { + using Strings for uint256; + + constructor() ERC721("My721Token", "MTK") {} + + ... + + function tokenURI(uint256 tokenId) + public + pure + override + returns (string memory) + { + bytes memory dataURI = abi.encodePacked( + '{', + '"name": "My721Token #', tokenId.toString(), '"', + // Replace with extra ERC721 Metadata properties + '}' + ); + + return string( + abi.encodePacked( + "data:application/json;base64,", + Base64.encode(dataURI) + ) + ); + } +} +---- + === Multicall The `Multicall` abstract contract comes with a `multicall` function that bundles together multiple calls in a single external call. With it, external accounts may perform atomic operations comprising several function calls. This is not only useful for EOAs to make multiple calls in a single transaction, it's also a way to revert a previous call if a later one fails. diff --git a/docs/modules/api/nav.adoc b/docs/modules/api/nav.adoc index 8a2f28027..02551e1fd 100644 --- a/docs/modules/api/nav.adoc +++ b/docs/modules/api/nav.adoc @@ -1,5 +1,6 @@ .API * xref:access.adoc[Access] +* xref:token/common.adoc[Common (Tokens)] * xref:token/ERC20.adoc[ERC 20] * xref:token/ERC721.adoc[ERC 721] * xref:token/ERC777.adoc[ERC 777] @@ -8,6 +9,9 @@ * xref:governance.adoc[Governance] * xref:interfaces.adoc[Interfaces] * xref:metatx.adoc[Meta Transactions] +* xref:token/ERC1155/presets.md[Presets] +* xref:token/ERC20/presets.md[Presets] +* xref:token/ERC721/presets.md[Presets] * xref:proxy.adoc[Proxy] * xref:security.adoc[Security] * xref:utils.adoc[Utils] diff --git a/docs/modules/api/pages/access.adoc b/docs/modules/api/pages/access.adoc index 56e93c1d2..ca13b6e50 100644 --- a/docs/modules/api/pages/access.adoc +++ b/docs/modules/api/pages/access.adoc @@ -192,6 +192,8 @@ :xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32- :Governor-_castVote: pass:normal[xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-[`Governor._castVote`]] :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string- +:Governor-relay: pass:normal[xref:governance.adoc#Governor-relay-address-uint256-bytes-[`Governor.relay`]] +:xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes- :Governor-_executor: pass:normal[xref:governance.adoc#Governor-_executor--[`Governor._executor`]] :xref-Governor-_executor--: xref:governance.adoc#Governor-_executor-- :Governor-ProposalCore: pass:normal[xref:governance.adoc#Governor-ProposalCore[`Governor.ProposalCore`]] @@ -368,6 +370,24 @@ :xref-GovernorCountingSimple-ProposalVote: xref:governance.adoc#GovernorCountingSimple-ProposalVote :GovernorCountingSimple-VoteType: pass:normal[xref:governance.adoc#GovernorCountingSimple-VoteType[`GovernorCountingSimple.VoteType`]] :xref-GovernorCountingSimple-VoteType: xref:governance.adoc#GovernorCountingSimple-VoteType +:GovernorPreventLateQuorum: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum[`GovernorPreventLateQuorum`]] +:xref-GovernorPreventLateQuorum: xref:governance.adoc#GovernorPreventLateQuorum +:GovernorPreventLateQuorum-constructor: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64-[`GovernorPreventLateQuorum.constructor`]] +:xref-GovernorPreventLateQuorum-constructor-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64- +:GovernorPreventLateQuorum-proposalDeadline: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256-[`GovernorPreventLateQuorum.proposalDeadline`]] +:xref-GovernorPreventLateQuorum-proposalDeadline-uint256-: xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256- +:GovernorPreventLateQuorum-_castVote: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-[`GovernorPreventLateQuorum._castVote`]] +:xref-GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-: xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string- +:GovernorPreventLateQuorum-lateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension--[`GovernorPreventLateQuorum.lateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-lateQuorumVoteExtension--: xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension-- +:GovernorPreventLateQuorum-setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum.setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-_setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum._setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-ProposalExtended: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-[`GovernorPreventLateQuorum.ProposalExtended`]] +:xref-GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64- +:GovernorPreventLateQuorum-LateQuorumVoteExtensionSet: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-[`GovernorPreventLateQuorum.LateQuorumVoteExtensionSet`]] +:xref-GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64- :GovernorProposalThreshold: pass:normal[xref:governance.adoc#GovernorProposalThreshold[`GovernorProposalThreshold`]] :xref-GovernorProposalThreshold: xref:governance.adoc#GovernorProposalThreshold :GovernorProposalThreshold-propose: pass:normal[xref:governance.adoc#GovernorProposalThreshold-propose-address---uint256---bytes---string-[`GovernorProposalThreshold.propose`]] @@ -484,10 +504,10 @@ :xref-GovernorTimelockControl-TimelockChange-address-address-: xref:governance.adoc#GovernorTimelockControl-TimelockChange-address-address- :GovernorVotes: pass:normal[xref:governance.adoc#GovernorVotes[`GovernorVotes`]] :xref-GovernorVotes: xref:governance.adoc#GovernorVotes -:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-ERC20Votes[`GovernorVotes.token`]] -:xref-GovernorVotes-token-contract-ERC20Votes: xref:governance.adoc#GovernorVotes-token-contract-ERC20Votes -:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-ERC20Votes-[`GovernorVotes.constructor`]] -:xref-GovernorVotes-constructor-contract-ERC20Votes-: xref:governance.adoc#GovernorVotes-constructor-contract-ERC20Votes- +:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-IVotes[`GovernorVotes.token`]] +:xref-GovernorVotes-token-contract-IVotes: xref:governance.adoc#GovernorVotes-token-contract-IVotes +:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-IVotes-[`GovernorVotes.constructor`]] +:xref-GovernorVotes-constructor-contract-IVotes-: xref:governance.adoc#GovernorVotes-constructor-contract-IVotes- :GovernorVotes-getVotes: pass:normal[xref:governance.adoc#GovernorVotes-getVotes-address-uint256-[`GovernorVotes.getVotes`]] :xref-GovernorVotes-getVotes-address-uint256-: xref:governance.adoc#GovernorVotes-getVotes-address-uint256- :GovernorVotesComp: pass:normal[xref:governance.adoc#GovernorVotesComp[`GovernorVotesComp`]] @@ -524,6 +544,52 @@ :xref-IGovernorTimelock-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernorTimelock-queue-address---uint256---bytes---bytes32- :IGovernorTimelock-ProposalQueued: pass:normal[xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256-[`IGovernorTimelock.ProposalQueued`]] :xref-IGovernorTimelock-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256- +:IVotes: pass:normal[xref:governance.adoc#IVotes[`IVotes`]] +:xref-IVotes: xref:governance.adoc#IVotes +:IVotes-getVotes: pass:normal[xref:governance.adoc#IVotes-getVotes-address-[`IVotes.getVotes`]] +:xref-IVotes-getVotes-address-: xref:governance.adoc#IVotes-getVotes-address- +:IVotes-getPastVotes: pass:normal[xref:governance.adoc#IVotes-getPastVotes-address-uint256-[`IVotes.getPastVotes`]] +:xref-IVotes-getPastVotes-address-uint256-: xref:governance.adoc#IVotes-getPastVotes-address-uint256- +:IVotes-getPastTotalSupply: pass:normal[xref:governance.adoc#IVotes-getPastTotalSupply-uint256-[`IVotes.getPastTotalSupply`]] +:xref-IVotes-getPastTotalSupply-uint256-: xref:governance.adoc#IVotes-getPastTotalSupply-uint256- +:IVotes-delegates: pass:normal[xref:governance.adoc#IVotes-delegates-address-[`IVotes.delegates`]] +:xref-IVotes-delegates-address-: xref:governance.adoc#IVotes-delegates-address- +:IVotes-delegate: pass:normal[xref:governance.adoc#IVotes-delegate-address-[`IVotes.delegate`]] +:xref-IVotes-delegate-address-: xref:governance.adoc#IVotes-delegate-address- +:IVotes-delegateBySig: pass:normal[xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`IVotes.delegateBySig`]] +:xref-IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:IVotes-DelegateChanged: pass:normal[xref:governance.adoc#IVotes-DelegateChanged-address-address-address-[`IVotes.DelegateChanged`]] +:xref-IVotes-DelegateChanged-address-address-address-: xref:governance.adoc#IVotes-DelegateChanged-address-address-address- +:IVotes-DelegateVotesChanged: pass:normal[xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256-[`IVotes.DelegateVotesChanged`]] +:xref-IVotes-DelegateVotesChanged-address-uint256-uint256-: xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256- +:Votes: pass:normal[xref:governance.adoc#Votes[`Votes`]] +:xref-Votes: xref:governance.adoc#Votes +:Votes-getVotes: pass:normal[xref:governance.adoc#Votes-getVotes-address-[`Votes.getVotes`]] +:xref-Votes-getVotes-address-: xref:governance.adoc#Votes-getVotes-address- +:Votes-getPastVotes: pass:normal[xref:governance.adoc#Votes-getPastVotes-address-uint256-[`Votes.getPastVotes`]] +:xref-Votes-getPastVotes-address-uint256-: xref:governance.adoc#Votes-getPastVotes-address-uint256- +:Votes-getPastTotalSupply: pass:normal[xref:governance.adoc#Votes-getPastTotalSupply-uint256-[`Votes.getPastTotalSupply`]] +:xref-Votes-getPastTotalSupply-uint256-: xref:governance.adoc#Votes-getPastTotalSupply-uint256- +:Votes-_getTotalSupply: pass:normal[xref:governance.adoc#Votes-_getTotalSupply--[`Votes._getTotalSupply`]] +:xref-Votes-_getTotalSupply--: xref:governance.adoc#Votes-_getTotalSupply-- +:Votes-delegates: pass:normal[xref:governance.adoc#Votes-delegates-address-[`Votes.delegates`]] +:xref-Votes-delegates-address-: xref:governance.adoc#Votes-delegates-address- +:Votes-delegate: pass:normal[xref:governance.adoc#Votes-delegate-address-[`Votes.delegate`]] +:xref-Votes-delegate-address-: xref:governance.adoc#Votes-delegate-address- +:Votes-delegateBySig: pass:normal[xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`Votes.delegateBySig`]] +:xref-Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:Votes-_delegate: pass:normal[xref:governance.adoc#Votes-_delegate-address-address-[`Votes._delegate`]] +:xref-Votes-_delegate-address-address-: xref:governance.adoc#Votes-_delegate-address-address- +:Votes-_transferVotingUnits: pass:normal[xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256-[`Votes._transferVotingUnits`]] +:xref-Votes-_transferVotingUnits-address-address-uint256-: xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256- +:Votes-_useNonce: pass:normal[xref:governance.adoc#Votes-_useNonce-address-[`Votes._useNonce`]] +:xref-Votes-_useNonce-address-: xref:governance.adoc#Votes-_useNonce-address- +:Votes-nonces: pass:normal[xref:governance.adoc#Votes-nonces-address-[`Votes.nonces`]] +:xref-Votes-nonces-address-: xref:governance.adoc#Votes-nonces-address- +:Votes-DOMAIN_SEPARATOR: pass:normal[xref:governance.adoc#Votes-DOMAIN_SEPARATOR--[`Votes.DOMAIN_SEPARATOR`]] +:xref-Votes-DOMAIN_SEPARATOR--: xref:governance.adoc#Votes-DOMAIN_SEPARATOR-- +:Votes-_getVotingUnits: pass:normal[xref:governance.adoc#Votes-_getVotingUnits-address-[`Votes._getVotingUnits`]] +:xref-Votes-_getVotingUnits-address-: xref:governance.adoc#Votes-_getVotingUnits-address- :IERC1271: pass:normal[xref:interfaces.adoc#IERC1271[`IERC1271`]] :xref-IERC1271: xref:interfaces.adoc#IERC1271 :IERC1271-isValidSignature: pass:normal[xref:interfaces.adoc#IERC1271-isValidSignature-bytes32-bytes-[`IERC1271.isValidSignature`]] @@ -566,6 +632,10 @@ :xref-IERC3156FlashLender-flashFee-address-uint256-: xref:interfaces.adoc#IERC3156FlashLender-flashFee-address-uint256- :IERC3156FlashLender-flashLoan: pass:normal[xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-[`IERC3156FlashLender.flashLoan`]] :xref-IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-: xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes- +:IERC1822Proxiable: pass:normal[xref:interfaces.adoc#IERC1822Proxiable[`IERC1822Proxiable`]] +:xref-IERC1822Proxiable: xref:interfaces.adoc#IERC1822Proxiable +:IERC1822Proxiable-proxiableUUID: pass:normal[xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID--[`IERC1822Proxiable.proxiableUUID`]] +:xref-IERC1822Proxiable-proxiableUUID--: xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID-- :IERC2612: pass:normal[xref:interfaces.adoc#IERC2612[`IERC2612`]] :xref-IERC2612: xref:interfaces.adoc#IERC2612 :ERC2771Context: pass:normal[xref:metatx.adoc#ERC2771Context[`ERC2771Context`]] @@ -618,8 +688,8 @@ :xref-ERC1967Upgrade-_upgradeTo-address-: xref:proxy.adoc#ERC1967Upgrade-_upgradeTo-address- :ERC1967Upgrade-_upgradeToAndCall: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCall`]] :xref-ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool- -:ERC1967Upgrade-_upgradeToAndCallSecure: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallSecure`]] -:xref-ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool- +:ERC1967Upgrade-_upgradeToAndCallUUPS: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallUUPS`]] +:xref-ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool- :ERC1967Upgrade-_getAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_getAdmin--[`ERC1967Upgrade._getAdmin`]] :xref-ERC1967Upgrade-_getAdmin--: xref:proxy.adoc#ERC1967Upgrade-_getAdmin-- :ERC1967Upgrade-_changeAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_changeAdmin-address-[`ERC1967Upgrade._changeAdmin`]] @@ -714,6 +784,10 @@ :xref-UUPSUpgradeable: xref:proxy.adoc#UUPSUpgradeable :UUPSUpgradeable-onlyProxy: pass:normal[xref:proxy.adoc#UUPSUpgradeable-onlyProxy--[`UUPSUpgradeable.onlyProxy`]] :xref-UUPSUpgradeable-onlyProxy--: xref:proxy.adoc#UUPSUpgradeable-onlyProxy-- +:UUPSUpgradeable-notDelegated: pass:normal[xref:proxy.adoc#UUPSUpgradeable-notDelegated--[`UUPSUpgradeable.notDelegated`]] +:xref-UUPSUpgradeable-notDelegated--: xref:proxy.adoc#UUPSUpgradeable-notDelegated-- +:UUPSUpgradeable-proxiableUUID: pass:normal[xref:proxy.adoc#UUPSUpgradeable-proxiableUUID--[`UUPSUpgradeable.proxiableUUID`]] +:xref-UUPSUpgradeable-proxiableUUID--: xref:proxy.adoc#UUPSUpgradeable-proxiableUUID-- :UUPSUpgradeable-upgradeTo: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address-[`UUPSUpgradeable.upgradeTo`]] :xref-UUPSUpgradeable-upgradeTo-address-: xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address- :UUPSUpgradeable-upgradeToAndCall: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeToAndCall-address-bytes-[`UUPSUpgradeable.upgradeToAndCall`]] @@ -782,6 +856,26 @@ :xref-Arrays: xref:utils.adoc#Arrays :Arrays-findUpperBound: pass:normal[xref:utils.adoc#Arrays-findUpperBound-uint256---uint256-[`Arrays.findUpperBound`]] :xref-Arrays-findUpperBound-uint256---uint256-: xref:utils.adoc#Arrays-findUpperBound-uint256---uint256- +:Base64: pass:normal[xref:utils.adoc#Base64[`Base64`]] +:xref-Base64: xref:utils.adoc#Base64 +:Base64-_TABLE: pass:normal[xref:utils.adoc#Base64-_TABLE-string[`Base64._TABLE`]] +:xref-Base64-_TABLE-string: xref:utils.adoc#Base64-_TABLE-string +:Base64-encode: pass:normal[xref:utils.adoc#Base64-encode-bytes-[`Base64.encode`]] +:xref-Base64-encode-bytes-: xref:utils.adoc#Base64-encode-bytes- +:Checkpoints: pass:normal[xref:utils.adoc#Checkpoints[`Checkpoints`]] +:xref-Checkpoints: xref:utils.adoc#Checkpoints +:Checkpoints-latest: pass:normal[xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History-[`Checkpoints.latest`]] +:xref-Checkpoints-latest-struct-Checkpoints-History-: xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History- +:Checkpoints-getAtBlock: pass:normal[xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-[`Checkpoints.getAtBlock`]] +:xref-Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256- +:Checkpoints-Checkpoint: pass:normal[xref:utils.adoc#Checkpoints-Checkpoint[`Checkpoints.Checkpoint`]] +:xref-Checkpoints-Checkpoint: xref:utils.adoc#Checkpoints-Checkpoint +:Checkpoints-History: pass:normal[xref:utils.adoc#Checkpoints-History[`Checkpoints.History`]] +:xref-Checkpoints-History: xref:utils.adoc#Checkpoints-History :Context: pass:normal[xref:utils.adoc#Context[`Context`]] :xref-Context: xref:utils.adoc#Context :Context-_msgSender: pass:normal[xref:utils.adoc#Context-_msgSender--[`Context._msgSender`]] @@ -1078,6 +1172,16 @@ :xref-SafeMath-div-uint256-uint256-string-: xref:utils.adoc#SafeMath-div-uint256-uint256-string- :SafeMath-mod: pass:normal[xref:utils.adoc#SafeMath-mod-uint256-uint256-string-[`SafeMath.mod`]] :xref-SafeMath-mod-uint256-uint256-string-: xref:utils.adoc#SafeMath-mod-uint256-uint256-string- +:SignedMath: pass:normal[xref:utils.adoc#SignedMath[`SignedMath`]] +:xref-SignedMath: xref:utils.adoc#SignedMath +:SignedMath-max: pass:normal[xref:utils.adoc#SignedMath-max-int256-int256-[`SignedMath.max`]] +:xref-SignedMath-max-int256-int256-: xref:utils.adoc#SignedMath-max-int256-int256- +:SignedMath-min: pass:normal[xref:utils.adoc#SignedMath-min-int256-int256-[`SignedMath.min`]] +:xref-SignedMath-min-int256-int256-: xref:utils.adoc#SignedMath-min-int256-int256- +:SignedMath-average: pass:normal[xref:utils.adoc#SignedMath-average-int256-int256-[`SignedMath.average`]] +:xref-SignedMath-average-int256-int256-: xref:utils.adoc#SignedMath-average-int256-int256- +:SignedMath-abs: pass:normal[xref:utils.adoc#SignedMath-abs-int256-[`SignedMath.abs`]] +:xref-SignedMath-abs-int256-: xref:utils.adoc#SignedMath-abs-int256- :SignedSafeMath: pass:normal[xref:utils.adoc#SignedSafeMath[`SignedSafeMath`]] :xref-SignedSafeMath: xref:utils.adoc#SignedSafeMath :SignedSafeMath-mul: pass:normal[xref:utils.adoc#SignedSafeMath-mul-int256-int256-[`SignedSafeMath.mul`]] @@ -1256,26 +1360,6 @@ :xref-IERC1155MetadataURI: xref:token/ERC1155.adoc#IERC1155MetadataURI :IERC1155MetadataURI-uri: pass:normal[xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256-[`IERC1155MetadataURI.uri`]] :xref-IERC1155MetadataURI-uri-uint256-: xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256- -:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] -:xref-ERC1155PresetMinterPauser: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser -:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] -:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 -:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] -:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 -:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] -:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-constructor-string- -:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] -:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- -:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] -:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- -:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] -:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-pause-- -:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] -:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-unpause-- -:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] -:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-supportsInterface-bytes4- -:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] -:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- :ERC1155Holder: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder[`ERC1155Holder`]] :xref-ERC1155Holder: xref:token/ERC1155.adoc#ERC1155Holder :ERC1155Holder-onERC1155Received: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-[`ERC1155Holder.onERC1155Received`]] @@ -1320,6 +1404,8 @@ :xref-ERC20-_burn-address-uint256-: xref:token/ERC20.adoc#ERC20-_burn-address-uint256- :ERC20-_approve: pass:normal[xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256-[`ERC20._approve`]] :xref-ERC20-_approve-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256- +:ERC20-_spendAllowance: pass:normal[xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256-[`ERC20._spendAllowance`]] +:xref-ERC20-_spendAllowance-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256- :ERC20-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256-[`ERC20._beforeTokenTransfer`]] :xref-ERC20-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256- :ERC20-_afterTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_afterTokenTransfer-address-address-uint256-[`ERC20._afterTokenTransfer`]] @@ -1412,10 +1498,6 @@ :xref-ERC20Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-_afterTokenTransfer-address-address-uint256- :ERC20Votes-_delegate: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address-[`ERC20Votes._delegate`]] :xref-ERC20Votes-_delegate-address-address-: xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address- -:ERC20Votes-DelegateChanged: pass:normal[xref:token/ERC20.adoc#ERC20Votes-DelegateChanged-address-address-address-[`ERC20Votes.DelegateChanged`]] -:xref-ERC20Votes-DelegateChanged-address-address-address-: xref:token/ERC20.adoc#ERC20Votes-DelegateChanged-address-address-address- -:ERC20Votes-DelegateVotesChanged: pass:normal[xref:token/ERC20.adoc#ERC20Votes-DelegateVotesChanged-address-uint256-uint256-[`ERC20Votes.DelegateVotesChanged`]] -:xref-ERC20Votes-DelegateVotesChanged-address-uint256-uint256-: xref:token/ERC20.adoc#ERC20Votes-DelegateVotesChanged-address-uint256-uint256- :ERC20Votes-Checkpoint: pass:normal[xref:token/ERC20.adoc#ERC20Votes-Checkpoint[`ERC20Votes.Checkpoint`]] :xref-ERC20Votes-Checkpoint: xref:token/ERC20.adoc#ERC20Votes-Checkpoint :ERC20VotesComp: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp[`ERC20VotesComp`]] @@ -1466,26 +1548,6 @@ :xref-IERC20Permit-nonces-address-: xref:token/ERC20.adoc#IERC20Permit-nonces-address- :IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]] :xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR-- -:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20.adoc#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] -:xref-ERC20PresetFixedSupply: xref:token/ERC20.adoc#ERC20PresetFixedSupply -:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20.adoc#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] -:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20.adoc#ERC20PresetFixedSupply-constructor-string-string-uint256-address- -:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] -:xref-ERC20PresetMinterPauser: xref:token/ERC20.adoc#ERC20PresetMinterPauser -:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] -:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20.adoc#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 -:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] -:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20.adoc#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 -:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] -:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-constructor-string-string- -:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] -:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-mint-address-uint256- -:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] -:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20.adoc#ERC20PresetMinterPauser-pause-- -:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] -:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20.adoc#ERC20PresetMinterPauser-unpause-- -:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] -:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- :SafeERC20: pass:normal[xref:token/ERC20.adoc#SafeERC20[`SafeERC20`]] :xref-SafeERC20: xref:token/ERC20.adoc#SafeERC20 :SafeERC20-safeTransfer: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeTransfer-contract-IERC20-address-uint256-[`SafeERC20.safeTransfer`]] @@ -1564,6 +1626,8 @@ :xref-ERC721-_setApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool- :ERC721-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256-[`ERC721._beforeTokenTransfer`]] :xref-ERC721-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256- +:ERC721-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256-[`ERC721._afterTokenTransfer`]] +:xref-ERC721-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256- :IERC721: pass:normal[xref:token/ERC721.adoc#IERC721[`IERC721`]] :xref-IERC721: xref:token/ERC721.adoc#IERC721 :IERC721-balanceOf: pass:normal[xref:token/ERC721.adoc#IERC721-balanceOf-address-[`IERC721.balanceOf`]] @@ -1614,6 +1678,12 @@ :xref-ERC721Pausable: xref:token/ERC721.adoc#ERC721Pausable :ERC721Pausable-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256-[`ERC721Pausable._beforeTokenTransfer`]] :xref-ERC721Pausable-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256- +:ERC721Royalty: pass:normal[xref:token/ERC721.adoc#ERC721Royalty[`ERC721Royalty`]] +:xref-ERC721Royalty: xref:token/ERC721.adoc#ERC721Royalty +:ERC721Royalty-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4-[`ERC721Royalty.supportsInterface`]] +:xref-ERC721Royalty-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4- +:ERC721Royalty-_burn: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256-[`ERC721Royalty._burn`]] +:xref-ERC721Royalty-_burn-uint256-: xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256- :ERC721URIStorage: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage[`ERC721URIStorage`]] :xref-ERC721URIStorage: xref:token/ERC721.adoc#ERC721URIStorage :ERC721URIStorage-tokenURI: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage-tokenURI-uint256-[`ERC721URIStorage.tokenURI`]] @@ -1638,26 +1708,12 @@ :xref-IERC721Metadata-symbol--: xref:token/ERC721.adoc#IERC721Metadata-symbol-- :IERC721Metadata-tokenURI: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256-[`IERC721Metadata.tokenURI`]] :xref-IERC721Metadata-tokenURI-uint256-: xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256- -:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] -:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId -:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] -:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 -:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] -:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 -:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] -:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-constructor-string-string-string- -:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] -:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_baseURI-- -:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] -:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-mint-address- -:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] -:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-pause-- -:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] -:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-unpause-- -:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] -:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- -:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] -:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- +:ERC721Votes: pass:normal[xref:token/ERC721.adoc#ERC721Votes[`ERC721Votes`]] +:xref-ERC721Votes: xref:token/ERC721.adoc#ERC721Votes +:ERC721Votes-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256-[`ERC721Votes._afterTokenTransfer`]] +:xref-ERC721Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256- +:ERC721Votes-_getVotingUnits: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address-[`ERC721Votes._getVotingUnits`]] +:xref-ERC721Votes-_getVotingUnits-address-: xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address- :ERC721Holder: pass:normal[xref:token/ERC721.adoc#ERC721Holder[`ERC721Holder`]] :xref-ERC721Holder: xref:token/ERC721.adoc#ERC721Holder :ERC721Holder-onERC721Received: pass:normal[xref:token/ERC721.adoc#ERC721Holder-onERC721Received-address-address-uint256-bytes-[`ERC721Holder.onERC721Received`]] @@ -1714,6 +1770,8 @@ :xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes- :ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]] :xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256- +:ERC777-_spendAllowance: pass:normal[xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256-[`ERC777._spendAllowance`]] +:xref-ERC777-_spendAllowance-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256- :ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]] :xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256- :IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]] @@ -1766,6 +1824,84 @@ :xref-ERC777PresetFixedSupply: xref:token/ERC777.adoc#ERC777PresetFixedSupply :ERC777PresetFixedSupply-constructor: pass:normal[xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-[`ERC777PresetFixedSupply.constructor`]] :xref-ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-: xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address- +:ERC2981: pass:normal[xref:token/common.adoc#ERC2981[`ERC2981`]] +:xref-ERC2981: xref:token/common.adoc#ERC2981 +:ERC2981-supportsInterface: pass:normal[xref:token/common.adoc#ERC2981-supportsInterface-bytes4-[`ERC2981.supportsInterface`]] +:xref-ERC2981-supportsInterface-bytes4-: xref:token/common.adoc#ERC2981-supportsInterface-bytes4- +:ERC2981-royaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256-[`ERC2981.royaltyInfo`]] +:xref-ERC2981-royaltyInfo-uint256-uint256-: xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256- +:ERC2981-_feeDenominator: pass:normal[xref:token/common.adoc#ERC2981-_feeDenominator--[`ERC2981._feeDenominator`]] +:xref-ERC2981-_feeDenominator--: xref:token/common.adoc#ERC2981-_feeDenominator-- +:ERC2981-_setDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96-[`ERC2981._setDefaultRoyalty`]] +:xref-ERC2981-_setDefaultRoyalty-address-uint96-: xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96- +:ERC2981-_deleteDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty--[`ERC2981._deleteDefaultRoyalty`]] +:xref-ERC2981-_deleteDefaultRoyalty--: xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty-- +:ERC2981-_setTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96-[`ERC2981._setTokenRoyalty`]] +:xref-ERC2981-_setTokenRoyalty-uint256-address-uint96-: xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96- +:ERC2981-_resetTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256-[`ERC2981._resetTokenRoyalty`]] +:xref-ERC2981-_resetTokenRoyalty-uint256-: xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256- +:ERC2981-RoyaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-RoyaltyInfo[`ERC2981.RoyaltyInfo`]] +:xref-ERC2981-RoyaltyInfo: xref:token/common.adoc#ERC2981-RoyaltyInfo +:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] +:xref-ERC1155PresetMinterPauser: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser +:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] +:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string- +:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] +:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- +:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] +:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- +:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] +:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause-- +:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] +:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause-- +:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] +:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4- +:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] +:xref-ERC20PresetFixedSupply: xref:token/ERC20/presets.md#ERC20PresetFixedSupply +:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] +:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address- +:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] +:xref-ERC20PresetMinterPauser: xref:token/ERC20/presets.md#ERC20PresetMinterPauser +:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] +:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string- +:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] +:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256- +:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] +:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause-- +:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] +:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause-- +:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] +:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId +:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] +:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string- +:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] +:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI-- +:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] +:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address- +:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] +:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause-- +:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] +:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause-- +:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] +:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] +:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- = Access Control [.readme-notice] @@ -1789,7 +1925,7 @@ This directory provides ways to restrict who can access the functions of a contr [.contract] [[Ownable]] -=== `++Ownable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/access/Ownable.sol[{github-icon},role=heading-link] +=== `++Ownable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/access/Ownable.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -1898,7 +2034,7 @@ Internal function without access restriction. [.contract] [[IAccessControl]] -=== `++IAccessControl++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/access/IAccessControl.sol[{github-icon},role=heading-link] +=== `++IAccessControl++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/access/IAccessControl.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2037,7 +2173,7 @@ Emitted when `account` is revoked `role`. [.contract] [[AccessControl]] -=== `++AccessControl++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/access/AccessControl.sol[{github-icon},role=heading-link] +=== `++AccessControl++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/access/AccessControl.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2275,7 +2411,7 @@ Internal function without access restriction. [.contract] [[IAccessControlEnumerable]] -=== `++IAccessControlEnumerable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/access/IAccessControlEnumerable.sol[{github-icon},role=heading-link] +=== `++IAccessControlEnumerable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/access/IAccessControlEnumerable.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2348,7 +2484,7 @@ together with {getRoleMember} to enumerate all bearers of a role. [.contract] [[AccessControlEnumerable]] -=== `++AccessControlEnumerable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/access/AccessControlEnumerable.sol[{github-icon},role=heading-link] +=== `++AccessControlEnumerable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/access/AccessControlEnumerable.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity diff --git a/docs/modules/api/pages/finance.adoc b/docs/modules/api/pages/finance.adoc index bc56f7418..f9038e1d5 100644 --- a/docs/modules/api/pages/finance.adoc +++ b/docs/modules/api/pages/finance.adoc @@ -192,6 +192,8 @@ :xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32- :Governor-_castVote: pass:normal[xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-[`Governor._castVote`]] :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string- +:Governor-relay: pass:normal[xref:governance.adoc#Governor-relay-address-uint256-bytes-[`Governor.relay`]] +:xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes- :Governor-_executor: pass:normal[xref:governance.adoc#Governor-_executor--[`Governor._executor`]] :xref-Governor-_executor--: xref:governance.adoc#Governor-_executor-- :Governor-ProposalCore: pass:normal[xref:governance.adoc#Governor-ProposalCore[`Governor.ProposalCore`]] @@ -368,6 +370,24 @@ :xref-GovernorCountingSimple-ProposalVote: xref:governance.adoc#GovernorCountingSimple-ProposalVote :GovernorCountingSimple-VoteType: pass:normal[xref:governance.adoc#GovernorCountingSimple-VoteType[`GovernorCountingSimple.VoteType`]] :xref-GovernorCountingSimple-VoteType: xref:governance.adoc#GovernorCountingSimple-VoteType +:GovernorPreventLateQuorum: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum[`GovernorPreventLateQuorum`]] +:xref-GovernorPreventLateQuorum: xref:governance.adoc#GovernorPreventLateQuorum +:GovernorPreventLateQuorum-constructor: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64-[`GovernorPreventLateQuorum.constructor`]] +:xref-GovernorPreventLateQuorum-constructor-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64- +:GovernorPreventLateQuorum-proposalDeadline: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256-[`GovernorPreventLateQuorum.proposalDeadline`]] +:xref-GovernorPreventLateQuorum-proposalDeadline-uint256-: xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256- +:GovernorPreventLateQuorum-_castVote: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-[`GovernorPreventLateQuorum._castVote`]] +:xref-GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-: xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string- +:GovernorPreventLateQuorum-lateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension--[`GovernorPreventLateQuorum.lateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-lateQuorumVoteExtension--: xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension-- +:GovernorPreventLateQuorum-setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum.setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-_setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum._setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-ProposalExtended: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-[`GovernorPreventLateQuorum.ProposalExtended`]] +:xref-GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64- +:GovernorPreventLateQuorum-LateQuorumVoteExtensionSet: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-[`GovernorPreventLateQuorum.LateQuorumVoteExtensionSet`]] +:xref-GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64- :GovernorProposalThreshold: pass:normal[xref:governance.adoc#GovernorProposalThreshold[`GovernorProposalThreshold`]] :xref-GovernorProposalThreshold: xref:governance.adoc#GovernorProposalThreshold :GovernorProposalThreshold-propose: pass:normal[xref:governance.adoc#GovernorProposalThreshold-propose-address---uint256---bytes---string-[`GovernorProposalThreshold.propose`]] @@ -484,10 +504,10 @@ :xref-GovernorTimelockControl-TimelockChange-address-address-: xref:governance.adoc#GovernorTimelockControl-TimelockChange-address-address- :GovernorVotes: pass:normal[xref:governance.adoc#GovernorVotes[`GovernorVotes`]] :xref-GovernorVotes: xref:governance.adoc#GovernorVotes -:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-ERC20Votes[`GovernorVotes.token`]] -:xref-GovernorVotes-token-contract-ERC20Votes: xref:governance.adoc#GovernorVotes-token-contract-ERC20Votes -:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-ERC20Votes-[`GovernorVotes.constructor`]] -:xref-GovernorVotes-constructor-contract-ERC20Votes-: xref:governance.adoc#GovernorVotes-constructor-contract-ERC20Votes- +:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-IVotes[`GovernorVotes.token`]] +:xref-GovernorVotes-token-contract-IVotes: xref:governance.adoc#GovernorVotes-token-contract-IVotes +:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-IVotes-[`GovernorVotes.constructor`]] +:xref-GovernorVotes-constructor-contract-IVotes-: xref:governance.adoc#GovernorVotes-constructor-contract-IVotes- :GovernorVotes-getVotes: pass:normal[xref:governance.adoc#GovernorVotes-getVotes-address-uint256-[`GovernorVotes.getVotes`]] :xref-GovernorVotes-getVotes-address-uint256-: xref:governance.adoc#GovernorVotes-getVotes-address-uint256- :GovernorVotesComp: pass:normal[xref:governance.adoc#GovernorVotesComp[`GovernorVotesComp`]] @@ -524,6 +544,52 @@ :xref-IGovernorTimelock-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernorTimelock-queue-address---uint256---bytes---bytes32- :IGovernorTimelock-ProposalQueued: pass:normal[xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256-[`IGovernorTimelock.ProposalQueued`]] :xref-IGovernorTimelock-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256- +:IVotes: pass:normal[xref:governance.adoc#IVotes[`IVotes`]] +:xref-IVotes: xref:governance.adoc#IVotes +:IVotes-getVotes: pass:normal[xref:governance.adoc#IVotes-getVotes-address-[`IVotes.getVotes`]] +:xref-IVotes-getVotes-address-: xref:governance.adoc#IVotes-getVotes-address- +:IVotes-getPastVotes: pass:normal[xref:governance.adoc#IVotes-getPastVotes-address-uint256-[`IVotes.getPastVotes`]] +:xref-IVotes-getPastVotes-address-uint256-: xref:governance.adoc#IVotes-getPastVotes-address-uint256- +:IVotes-getPastTotalSupply: pass:normal[xref:governance.adoc#IVotes-getPastTotalSupply-uint256-[`IVotes.getPastTotalSupply`]] +:xref-IVotes-getPastTotalSupply-uint256-: xref:governance.adoc#IVotes-getPastTotalSupply-uint256- +:IVotes-delegates: pass:normal[xref:governance.adoc#IVotes-delegates-address-[`IVotes.delegates`]] +:xref-IVotes-delegates-address-: xref:governance.adoc#IVotes-delegates-address- +:IVotes-delegate: pass:normal[xref:governance.adoc#IVotes-delegate-address-[`IVotes.delegate`]] +:xref-IVotes-delegate-address-: xref:governance.adoc#IVotes-delegate-address- +:IVotes-delegateBySig: pass:normal[xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`IVotes.delegateBySig`]] +:xref-IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:IVotes-DelegateChanged: pass:normal[xref:governance.adoc#IVotes-DelegateChanged-address-address-address-[`IVotes.DelegateChanged`]] +:xref-IVotes-DelegateChanged-address-address-address-: xref:governance.adoc#IVotes-DelegateChanged-address-address-address- +:IVotes-DelegateVotesChanged: pass:normal[xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256-[`IVotes.DelegateVotesChanged`]] +:xref-IVotes-DelegateVotesChanged-address-uint256-uint256-: xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256- +:Votes: pass:normal[xref:governance.adoc#Votes[`Votes`]] +:xref-Votes: xref:governance.adoc#Votes +:Votes-getVotes: pass:normal[xref:governance.adoc#Votes-getVotes-address-[`Votes.getVotes`]] +:xref-Votes-getVotes-address-: xref:governance.adoc#Votes-getVotes-address- +:Votes-getPastVotes: pass:normal[xref:governance.adoc#Votes-getPastVotes-address-uint256-[`Votes.getPastVotes`]] +:xref-Votes-getPastVotes-address-uint256-: xref:governance.adoc#Votes-getPastVotes-address-uint256- +:Votes-getPastTotalSupply: pass:normal[xref:governance.adoc#Votes-getPastTotalSupply-uint256-[`Votes.getPastTotalSupply`]] +:xref-Votes-getPastTotalSupply-uint256-: xref:governance.adoc#Votes-getPastTotalSupply-uint256- +:Votes-_getTotalSupply: pass:normal[xref:governance.adoc#Votes-_getTotalSupply--[`Votes._getTotalSupply`]] +:xref-Votes-_getTotalSupply--: xref:governance.adoc#Votes-_getTotalSupply-- +:Votes-delegates: pass:normal[xref:governance.adoc#Votes-delegates-address-[`Votes.delegates`]] +:xref-Votes-delegates-address-: xref:governance.adoc#Votes-delegates-address- +:Votes-delegate: pass:normal[xref:governance.adoc#Votes-delegate-address-[`Votes.delegate`]] +:xref-Votes-delegate-address-: xref:governance.adoc#Votes-delegate-address- +:Votes-delegateBySig: pass:normal[xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`Votes.delegateBySig`]] +:xref-Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:Votes-_delegate: pass:normal[xref:governance.adoc#Votes-_delegate-address-address-[`Votes._delegate`]] +:xref-Votes-_delegate-address-address-: xref:governance.adoc#Votes-_delegate-address-address- +:Votes-_transferVotingUnits: pass:normal[xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256-[`Votes._transferVotingUnits`]] +:xref-Votes-_transferVotingUnits-address-address-uint256-: xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256- +:Votes-_useNonce: pass:normal[xref:governance.adoc#Votes-_useNonce-address-[`Votes._useNonce`]] +:xref-Votes-_useNonce-address-: xref:governance.adoc#Votes-_useNonce-address- +:Votes-nonces: pass:normal[xref:governance.adoc#Votes-nonces-address-[`Votes.nonces`]] +:xref-Votes-nonces-address-: xref:governance.adoc#Votes-nonces-address- +:Votes-DOMAIN_SEPARATOR: pass:normal[xref:governance.adoc#Votes-DOMAIN_SEPARATOR--[`Votes.DOMAIN_SEPARATOR`]] +:xref-Votes-DOMAIN_SEPARATOR--: xref:governance.adoc#Votes-DOMAIN_SEPARATOR-- +:Votes-_getVotingUnits: pass:normal[xref:governance.adoc#Votes-_getVotingUnits-address-[`Votes._getVotingUnits`]] +:xref-Votes-_getVotingUnits-address-: xref:governance.adoc#Votes-_getVotingUnits-address- :IERC1271: pass:normal[xref:interfaces.adoc#IERC1271[`IERC1271`]] :xref-IERC1271: xref:interfaces.adoc#IERC1271 :IERC1271-isValidSignature: pass:normal[xref:interfaces.adoc#IERC1271-isValidSignature-bytes32-bytes-[`IERC1271.isValidSignature`]] @@ -566,6 +632,10 @@ :xref-IERC3156FlashLender-flashFee-address-uint256-: xref:interfaces.adoc#IERC3156FlashLender-flashFee-address-uint256- :IERC3156FlashLender-flashLoan: pass:normal[xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-[`IERC3156FlashLender.flashLoan`]] :xref-IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-: xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes- +:IERC1822Proxiable: pass:normal[xref:interfaces.adoc#IERC1822Proxiable[`IERC1822Proxiable`]] +:xref-IERC1822Proxiable: xref:interfaces.adoc#IERC1822Proxiable +:IERC1822Proxiable-proxiableUUID: pass:normal[xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID--[`IERC1822Proxiable.proxiableUUID`]] +:xref-IERC1822Proxiable-proxiableUUID--: xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID-- :IERC2612: pass:normal[xref:interfaces.adoc#IERC2612[`IERC2612`]] :xref-IERC2612: xref:interfaces.adoc#IERC2612 :ERC2771Context: pass:normal[xref:metatx.adoc#ERC2771Context[`ERC2771Context`]] @@ -618,8 +688,8 @@ :xref-ERC1967Upgrade-_upgradeTo-address-: xref:proxy.adoc#ERC1967Upgrade-_upgradeTo-address- :ERC1967Upgrade-_upgradeToAndCall: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCall`]] :xref-ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool- -:ERC1967Upgrade-_upgradeToAndCallSecure: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallSecure`]] -:xref-ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool- +:ERC1967Upgrade-_upgradeToAndCallUUPS: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallUUPS`]] +:xref-ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool- :ERC1967Upgrade-_getAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_getAdmin--[`ERC1967Upgrade._getAdmin`]] :xref-ERC1967Upgrade-_getAdmin--: xref:proxy.adoc#ERC1967Upgrade-_getAdmin-- :ERC1967Upgrade-_changeAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_changeAdmin-address-[`ERC1967Upgrade._changeAdmin`]] @@ -714,6 +784,10 @@ :xref-UUPSUpgradeable: xref:proxy.adoc#UUPSUpgradeable :UUPSUpgradeable-onlyProxy: pass:normal[xref:proxy.adoc#UUPSUpgradeable-onlyProxy--[`UUPSUpgradeable.onlyProxy`]] :xref-UUPSUpgradeable-onlyProxy--: xref:proxy.adoc#UUPSUpgradeable-onlyProxy-- +:UUPSUpgradeable-notDelegated: pass:normal[xref:proxy.adoc#UUPSUpgradeable-notDelegated--[`UUPSUpgradeable.notDelegated`]] +:xref-UUPSUpgradeable-notDelegated--: xref:proxy.adoc#UUPSUpgradeable-notDelegated-- +:UUPSUpgradeable-proxiableUUID: pass:normal[xref:proxy.adoc#UUPSUpgradeable-proxiableUUID--[`UUPSUpgradeable.proxiableUUID`]] +:xref-UUPSUpgradeable-proxiableUUID--: xref:proxy.adoc#UUPSUpgradeable-proxiableUUID-- :UUPSUpgradeable-upgradeTo: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address-[`UUPSUpgradeable.upgradeTo`]] :xref-UUPSUpgradeable-upgradeTo-address-: xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address- :UUPSUpgradeable-upgradeToAndCall: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeToAndCall-address-bytes-[`UUPSUpgradeable.upgradeToAndCall`]] @@ -782,6 +856,26 @@ :xref-Arrays: xref:utils.adoc#Arrays :Arrays-findUpperBound: pass:normal[xref:utils.adoc#Arrays-findUpperBound-uint256---uint256-[`Arrays.findUpperBound`]] :xref-Arrays-findUpperBound-uint256---uint256-: xref:utils.adoc#Arrays-findUpperBound-uint256---uint256- +:Base64: pass:normal[xref:utils.adoc#Base64[`Base64`]] +:xref-Base64: xref:utils.adoc#Base64 +:Base64-_TABLE: pass:normal[xref:utils.adoc#Base64-_TABLE-string[`Base64._TABLE`]] +:xref-Base64-_TABLE-string: xref:utils.adoc#Base64-_TABLE-string +:Base64-encode: pass:normal[xref:utils.adoc#Base64-encode-bytes-[`Base64.encode`]] +:xref-Base64-encode-bytes-: xref:utils.adoc#Base64-encode-bytes- +:Checkpoints: pass:normal[xref:utils.adoc#Checkpoints[`Checkpoints`]] +:xref-Checkpoints: xref:utils.adoc#Checkpoints +:Checkpoints-latest: pass:normal[xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History-[`Checkpoints.latest`]] +:xref-Checkpoints-latest-struct-Checkpoints-History-: xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History- +:Checkpoints-getAtBlock: pass:normal[xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-[`Checkpoints.getAtBlock`]] +:xref-Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256- +:Checkpoints-Checkpoint: pass:normal[xref:utils.adoc#Checkpoints-Checkpoint[`Checkpoints.Checkpoint`]] +:xref-Checkpoints-Checkpoint: xref:utils.adoc#Checkpoints-Checkpoint +:Checkpoints-History: pass:normal[xref:utils.adoc#Checkpoints-History[`Checkpoints.History`]] +:xref-Checkpoints-History: xref:utils.adoc#Checkpoints-History :Context: pass:normal[xref:utils.adoc#Context[`Context`]] :xref-Context: xref:utils.adoc#Context :Context-_msgSender: pass:normal[xref:utils.adoc#Context-_msgSender--[`Context._msgSender`]] @@ -1078,6 +1172,16 @@ :xref-SafeMath-div-uint256-uint256-string-: xref:utils.adoc#SafeMath-div-uint256-uint256-string- :SafeMath-mod: pass:normal[xref:utils.adoc#SafeMath-mod-uint256-uint256-string-[`SafeMath.mod`]] :xref-SafeMath-mod-uint256-uint256-string-: xref:utils.adoc#SafeMath-mod-uint256-uint256-string- +:SignedMath: pass:normal[xref:utils.adoc#SignedMath[`SignedMath`]] +:xref-SignedMath: xref:utils.adoc#SignedMath +:SignedMath-max: pass:normal[xref:utils.adoc#SignedMath-max-int256-int256-[`SignedMath.max`]] +:xref-SignedMath-max-int256-int256-: xref:utils.adoc#SignedMath-max-int256-int256- +:SignedMath-min: pass:normal[xref:utils.adoc#SignedMath-min-int256-int256-[`SignedMath.min`]] +:xref-SignedMath-min-int256-int256-: xref:utils.adoc#SignedMath-min-int256-int256- +:SignedMath-average: pass:normal[xref:utils.adoc#SignedMath-average-int256-int256-[`SignedMath.average`]] +:xref-SignedMath-average-int256-int256-: xref:utils.adoc#SignedMath-average-int256-int256- +:SignedMath-abs: pass:normal[xref:utils.adoc#SignedMath-abs-int256-[`SignedMath.abs`]] +:xref-SignedMath-abs-int256-: xref:utils.adoc#SignedMath-abs-int256- :SignedSafeMath: pass:normal[xref:utils.adoc#SignedSafeMath[`SignedSafeMath`]] :xref-SignedSafeMath: xref:utils.adoc#SignedSafeMath :SignedSafeMath-mul: pass:normal[xref:utils.adoc#SignedSafeMath-mul-int256-int256-[`SignedSafeMath.mul`]] @@ -1256,26 +1360,6 @@ :xref-IERC1155MetadataURI: xref:token/ERC1155.adoc#IERC1155MetadataURI :IERC1155MetadataURI-uri: pass:normal[xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256-[`IERC1155MetadataURI.uri`]] :xref-IERC1155MetadataURI-uri-uint256-: xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256- -:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] -:xref-ERC1155PresetMinterPauser: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser -:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] -:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 -:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] -:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 -:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] -:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-constructor-string- -:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] -:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- -:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] -:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- -:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] -:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-pause-- -:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] -:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-unpause-- -:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] -:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-supportsInterface-bytes4- -:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] -:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- :ERC1155Holder: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder[`ERC1155Holder`]] :xref-ERC1155Holder: xref:token/ERC1155.adoc#ERC1155Holder :ERC1155Holder-onERC1155Received: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-[`ERC1155Holder.onERC1155Received`]] @@ -1320,6 +1404,8 @@ :xref-ERC20-_burn-address-uint256-: xref:token/ERC20.adoc#ERC20-_burn-address-uint256- :ERC20-_approve: pass:normal[xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256-[`ERC20._approve`]] :xref-ERC20-_approve-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256- +:ERC20-_spendAllowance: pass:normal[xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256-[`ERC20._spendAllowance`]] +:xref-ERC20-_spendAllowance-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256- :ERC20-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256-[`ERC20._beforeTokenTransfer`]] :xref-ERC20-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256- :ERC20-_afterTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_afterTokenTransfer-address-address-uint256-[`ERC20._afterTokenTransfer`]] @@ -1412,10 +1498,6 @@ :xref-ERC20Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-_afterTokenTransfer-address-address-uint256- :ERC20Votes-_delegate: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address-[`ERC20Votes._delegate`]] :xref-ERC20Votes-_delegate-address-address-: xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address- -:ERC20Votes-DelegateChanged: pass:normal[xref:token/ERC20.adoc#ERC20Votes-DelegateChanged-address-address-address-[`ERC20Votes.DelegateChanged`]] -:xref-ERC20Votes-DelegateChanged-address-address-address-: xref:token/ERC20.adoc#ERC20Votes-DelegateChanged-address-address-address- -:ERC20Votes-DelegateVotesChanged: pass:normal[xref:token/ERC20.adoc#ERC20Votes-DelegateVotesChanged-address-uint256-uint256-[`ERC20Votes.DelegateVotesChanged`]] -:xref-ERC20Votes-DelegateVotesChanged-address-uint256-uint256-: xref:token/ERC20.adoc#ERC20Votes-DelegateVotesChanged-address-uint256-uint256- :ERC20Votes-Checkpoint: pass:normal[xref:token/ERC20.adoc#ERC20Votes-Checkpoint[`ERC20Votes.Checkpoint`]] :xref-ERC20Votes-Checkpoint: xref:token/ERC20.adoc#ERC20Votes-Checkpoint :ERC20VotesComp: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp[`ERC20VotesComp`]] @@ -1466,26 +1548,6 @@ :xref-IERC20Permit-nonces-address-: xref:token/ERC20.adoc#IERC20Permit-nonces-address- :IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]] :xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR-- -:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20.adoc#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] -:xref-ERC20PresetFixedSupply: xref:token/ERC20.adoc#ERC20PresetFixedSupply -:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20.adoc#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] -:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20.adoc#ERC20PresetFixedSupply-constructor-string-string-uint256-address- -:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] -:xref-ERC20PresetMinterPauser: xref:token/ERC20.adoc#ERC20PresetMinterPauser -:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] -:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20.adoc#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 -:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] -:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20.adoc#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 -:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] -:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-constructor-string-string- -:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] -:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-mint-address-uint256- -:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] -:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20.adoc#ERC20PresetMinterPauser-pause-- -:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] -:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20.adoc#ERC20PresetMinterPauser-unpause-- -:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] -:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- :SafeERC20: pass:normal[xref:token/ERC20.adoc#SafeERC20[`SafeERC20`]] :xref-SafeERC20: xref:token/ERC20.adoc#SafeERC20 :SafeERC20-safeTransfer: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeTransfer-contract-IERC20-address-uint256-[`SafeERC20.safeTransfer`]] @@ -1564,6 +1626,8 @@ :xref-ERC721-_setApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool- :ERC721-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256-[`ERC721._beforeTokenTransfer`]] :xref-ERC721-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256- +:ERC721-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256-[`ERC721._afterTokenTransfer`]] +:xref-ERC721-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256- :IERC721: pass:normal[xref:token/ERC721.adoc#IERC721[`IERC721`]] :xref-IERC721: xref:token/ERC721.adoc#IERC721 :IERC721-balanceOf: pass:normal[xref:token/ERC721.adoc#IERC721-balanceOf-address-[`IERC721.balanceOf`]] @@ -1614,6 +1678,12 @@ :xref-ERC721Pausable: xref:token/ERC721.adoc#ERC721Pausable :ERC721Pausable-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256-[`ERC721Pausable._beforeTokenTransfer`]] :xref-ERC721Pausable-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256- +:ERC721Royalty: pass:normal[xref:token/ERC721.adoc#ERC721Royalty[`ERC721Royalty`]] +:xref-ERC721Royalty: xref:token/ERC721.adoc#ERC721Royalty +:ERC721Royalty-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4-[`ERC721Royalty.supportsInterface`]] +:xref-ERC721Royalty-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4- +:ERC721Royalty-_burn: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256-[`ERC721Royalty._burn`]] +:xref-ERC721Royalty-_burn-uint256-: xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256- :ERC721URIStorage: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage[`ERC721URIStorage`]] :xref-ERC721URIStorage: xref:token/ERC721.adoc#ERC721URIStorage :ERC721URIStorage-tokenURI: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage-tokenURI-uint256-[`ERC721URIStorage.tokenURI`]] @@ -1638,26 +1708,12 @@ :xref-IERC721Metadata-symbol--: xref:token/ERC721.adoc#IERC721Metadata-symbol-- :IERC721Metadata-tokenURI: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256-[`IERC721Metadata.tokenURI`]] :xref-IERC721Metadata-tokenURI-uint256-: xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256- -:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] -:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId -:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] -:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 -:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] -:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 -:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] -:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-constructor-string-string-string- -:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] -:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_baseURI-- -:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] -:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-mint-address- -:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] -:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-pause-- -:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] -:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-unpause-- -:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] -:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- -:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] -:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- +:ERC721Votes: pass:normal[xref:token/ERC721.adoc#ERC721Votes[`ERC721Votes`]] +:xref-ERC721Votes: xref:token/ERC721.adoc#ERC721Votes +:ERC721Votes-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256-[`ERC721Votes._afterTokenTransfer`]] +:xref-ERC721Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256- +:ERC721Votes-_getVotingUnits: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address-[`ERC721Votes._getVotingUnits`]] +:xref-ERC721Votes-_getVotingUnits-address-: xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address- :ERC721Holder: pass:normal[xref:token/ERC721.adoc#ERC721Holder[`ERC721Holder`]] :xref-ERC721Holder: xref:token/ERC721.adoc#ERC721Holder :ERC721Holder-onERC721Received: pass:normal[xref:token/ERC721.adoc#ERC721Holder-onERC721Received-address-address-uint256-bytes-[`ERC721Holder.onERC721Received`]] @@ -1714,6 +1770,8 @@ :xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes- :ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]] :xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256- +:ERC777-_spendAllowance: pass:normal[xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256-[`ERC777._spendAllowance`]] +:xref-ERC777-_spendAllowance-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256- :ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]] :xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256- :IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]] @@ -1766,6 +1824,84 @@ :xref-ERC777PresetFixedSupply: xref:token/ERC777.adoc#ERC777PresetFixedSupply :ERC777PresetFixedSupply-constructor: pass:normal[xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-[`ERC777PresetFixedSupply.constructor`]] :xref-ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-: xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address- +:ERC2981: pass:normal[xref:token/common.adoc#ERC2981[`ERC2981`]] +:xref-ERC2981: xref:token/common.adoc#ERC2981 +:ERC2981-supportsInterface: pass:normal[xref:token/common.adoc#ERC2981-supportsInterface-bytes4-[`ERC2981.supportsInterface`]] +:xref-ERC2981-supportsInterface-bytes4-: xref:token/common.adoc#ERC2981-supportsInterface-bytes4- +:ERC2981-royaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256-[`ERC2981.royaltyInfo`]] +:xref-ERC2981-royaltyInfo-uint256-uint256-: xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256- +:ERC2981-_feeDenominator: pass:normal[xref:token/common.adoc#ERC2981-_feeDenominator--[`ERC2981._feeDenominator`]] +:xref-ERC2981-_feeDenominator--: xref:token/common.adoc#ERC2981-_feeDenominator-- +:ERC2981-_setDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96-[`ERC2981._setDefaultRoyalty`]] +:xref-ERC2981-_setDefaultRoyalty-address-uint96-: xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96- +:ERC2981-_deleteDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty--[`ERC2981._deleteDefaultRoyalty`]] +:xref-ERC2981-_deleteDefaultRoyalty--: xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty-- +:ERC2981-_setTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96-[`ERC2981._setTokenRoyalty`]] +:xref-ERC2981-_setTokenRoyalty-uint256-address-uint96-: xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96- +:ERC2981-_resetTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256-[`ERC2981._resetTokenRoyalty`]] +:xref-ERC2981-_resetTokenRoyalty-uint256-: xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256- +:ERC2981-RoyaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-RoyaltyInfo[`ERC2981.RoyaltyInfo`]] +:xref-ERC2981-RoyaltyInfo: xref:token/common.adoc#ERC2981-RoyaltyInfo +:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] +:xref-ERC1155PresetMinterPauser: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser +:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] +:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string- +:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] +:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- +:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] +:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- +:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] +:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause-- +:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] +:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause-- +:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] +:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4- +:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] +:xref-ERC20PresetFixedSupply: xref:token/ERC20/presets.md#ERC20PresetFixedSupply +:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] +:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address- +:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] +:xref-ERC20PresetMinterPauser: xref:token/ERC20/presets.md#ERC20PresetMinterPauser +:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] +:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string- +:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] +:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256- +:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] +:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause-- +:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] +:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause-- +:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] +:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId +:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] +:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string- +:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] +:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI-- +:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] +:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address- +:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] +:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause-- +:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] +:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause-- +:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] +:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] +:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- = Finance [.readme-notice] @@ -1802,7 +1938,7 @@ This directory includes primitives for financial systems: [.contract] [[PaymentSplitter]] -=== `++PaymentSplitter++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/finance/PaymentSplitter.sol[{github-icon},role=heading-link] +=== `++PaymentSplitter++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/finance/PaymentSplitter.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -1982,7 +2118,7 @@ contract. [.contract] [[VestingWallet]] -=== `++VestingWallet++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/finance/VestingWallet.sol[{github-icon},role=heading-link] +=== `++VestingWallet++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/finance/VestingWallet.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity diff --git a/docs/modules/api/pages/governance.adoc b/docs/modules/api/pages/governance.adoc index af8486cae..0c09df6f8 100644 --- a/docs/modules/api/pages/governance.adoc +++ b/docs/modules/api/pages/governance.adoc @@ -192,6 +192,8 @@ :xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32- :Governor-_castVote: pass:normal[xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-[`Governor._castVote`]] :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string- +:Governor-relay: pass:normal[xref:governance.adoc#Governor-relay-address-uint256-bytes-[`Governor.relay`]] +:xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes- :Governor-_executor: pass:normal[xref:governance.adoc#Governor-_executor--[`Governor._executor`]] :xref-Governor-_executor--: xref:governance.adoc#Governor-_executor-- :Governor-ProposalCore: pass:normal[xref:governance.adoc#Governor-ProposalCore[`Governor.ProposalCore`]] @@ -368,6 +370,24 @@ :xref-GovernorCountingSimple-ProposalVote: xref:governance.adoc#GovernorCountingSimple-ProposalVote :GovernorCountingSimple-VoteType: pass:normal[xref:governance.adoc#GovernorCountingSimple-VoteType[`GovernorCountingSimple.VoteType`]] :xref-GovernorCountingSimple-VoteType: xref:governance.adoc#GovernorCountingSimple-VoteType +:GovernorPreventLateQuorum: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum[`GovernorPreventLateQuorum`]] +:xref-GovernorPreventLateQuorum: xref:governance.adoc#GovernorPreventLateQuorum +:GovernorPreventLateQuorum-constructor: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64-[`GovernorPreventLateQuorum.constructor`]] +:xref-GovernorPreventLateQuorum-constructor-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64- +:GovernorPreventLateQuorum-proposalDeadline: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256-[`GovernorPreventLateQuorum.proposalDeadline`]] +:xref-GovernorPreventLateQuorum-proposalDeadline-uint256-: xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256- +:GovernorPreventLateQuorum-_castVote: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-[`GovernorPreventLateQuorum._castVote`]] +:xref-GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-: xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string- +:GovernorPreventLateQuorum-lateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension--[`GovernorPreventLateQuorum.lateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-lateQuorumVoteExtension--: xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension-- +:GovernorPreventLateQuorum-setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum.setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-_setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum._setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-ProposalExtended: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-[`GovernorPreventLateQuorum.ProposalExtended`]] +:xref-GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64- +:GovernorPreventLateQuorum-LateQuorumVoteExtensionSet: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-[`GovernorPreventLateQuorum.LateQuorumVoteExtensionSet`]] +:xref-GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64- :GovernorProposalThreshold: pass:normal[xref:governance.adoc#GovernorProposalThreshold[`GovernorProposalThreshold`]] :xref-GovernorProposalThreshold: xref:governance.adoc#GovernorProposalThreshold :GovernorProposalThreshold-propose: pass:normal[xref:governance.adoc#GovernorProposalThreshold-propose-address---uint256---bytes---string-[`GovernorProposalThreshold.propose`]] @@ -484,10 +504,10 @@ :xref-GovernorTimelockControl-TimelockChange-address-address-: xref:governance.adoc#GovernorTimelockControl-TimelockChange-address-address- :GovernorVotes: pass:normal[xref:governance.adoc#GovernorVotes[`GovernorVotes`]] :xref-GovernorVotes: xref:governance.adoc#GovernorVotes -:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-ERC20Votes[`GovernorVotes.token`]] -:xref-GovernorVotes-token-contract-ERC20Votes: xref:governance.adoc#GovernorVotes-token-contract-ERC20Votes -:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-ERC20Votes-[`GovernorVotes.constructor`]] -:xref-GovernorVotes-constructor-contract-ERC20Votes-: xref:governance.adoc#GovernorVotes-constructor-contract-ERC20Votes- +:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-IVotes[`GovernorVotes.token`]] +:xref-GovernorVotes-token-contract-IVotes: xref:governance.adoc#GovernorVotes-token-contract-IVotes +:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-IVotes-[`GovernorVotes.constructor`]] +:xref-GovernorVotes-constructor-contract-IVotes-: xref:governance.adoc#GovernorVotes-constructor-contract-IVotes- :GovernorVotes-getVotes: pass:normal[xref:governance.adoc#GovernorVotes-getVotes-address-uint256-[`GovernorVotes.getVotes`]] :xref-GovernorVotes-getVotes-address-uint256-: xref:governance.adoc#GovernorVotes-getVotes-address-uint256- :GovernorVotesComp: pass:normal[xref:governance.adoc#GovernorVotesComp[`GovernorVotesComp`]] @@ -524,6 +544,52 @@ :xref-IGovernorTimelock-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernorTimelock-queue-address---uint256---bytes---bytes32- :IGovernorTimelock-ProposalQueued: pass:normal[xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256-[`IGovernorTimelock.ProposalQueued`]] :xref-IGovernorTimelock-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256- +:IVotes: pass:normal[xref:governance.adoc#IVotes[`IVotes`]] +:xref-IVotes: xref:governance.adoc#IVotes +:IVotes-getVotes: pass:normal[xref:governance.adoc#IVotes-getVotes-address-[`IVotes.getVotes`]] +:xref-IVotes-getVotes-address-: xref:governance.adoc#IVotes-getVotes-address- +:IVotes-getPastVotes: pass:normal[xref:governance.adoc#IVotes-getPastVotes-address-uint256-[`IVotes.getPastVotes`]] +:xref-IVotes-getPastVotes-address-uint256-: xref:governance.adoc#IVotes-getPastVotes-address-uint256- +:IVotes-getPastTotalSupply: pass:normal[xref:governance.adoc#IVotes-getPastTotalSupply-uint256-[`IVotes.getPastTotalSupply`]] +:xref-IVotes-getPastTotalSupply-uint256-: xref:governance.adoc#IVotes-getPastTotalSupply-uint256- +:IVotes-delegates: pass:normal[xref:governance.adoc#IVotes-delegates-address-[`IVotes.delegates`]] +:xref-IVotes-delegates-address-: xref:governance.adoc#IVotes-delegates-address- +:IVotes-delegate: pass:normal[xref:governance.adoc#IVotes-delegate-address-[`IVotes.delegate`]] +:xref-IVotes-delegate-address-: xref:governance.adoc#IVotes-delegate-address- +:IVotes-delegateBySig: pass:normal[xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`IVotes.delegateBySig`]] +:xref-IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:IVotes-DelegateChanged: pass:normal[xref:governance.adoc#IVotes-DelegateChanged-address-address-address-[`IVotes.DelegateChanged`]] +:xref-IVotes-DelegateChanged-address-address-address-: xref:governance.adoc#IVotes-DelegateChanged-address-address-address- +:IVotes-DelegateVotesChanged: pass:normal[xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256-[`IVotes.DelegateVotesChanged`]] +:xref-IVotes-DelegateVotesChanged-address-uint256-uint256-: xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256- +:Votes: pass:normal[xref:governance.adoc#Votes[`Votes`]] +:xref-Votes: xref:governance.adoc#Votes +:Votes-getVotes: pass:normal[xref:governance.adoc#Votes-getVotes-address-[`Votes.getVotes`]] +:xref-Votes-getVotes-address-: xref:governance.adoc#Votes-getVotes-address- +:Votes-getPastVotes: pass:normal[xref:governance.adoc#Votes-getPastVotes-address-uint256-[`Votes.getPastVotes`]] +:xref-Votes-getPastVotes-address-uint256-: xref:governance.adoc#Votes-getPastVotes-address-uint256- +:Votes-getPastTotalSupply: pass:normal[xref:governance.adoc#Votes-getPastTotalSupply-uint256-[`Votes.getPastTotalSupply`]] +:xref-Votes-getPastTotalSupply-uint256-: xref:governance.adoc#Votes-getPastTotalSupply-uint256- +:Votes-_getTotalSupply: pass:normal[xref:governance.adoc#Votes-_getTotalSupply--[`Votes._getTotalSupply`]] +:xref-Votes-_getTotalSupply--: xref:governance.adoc#Votes-_getTotalSupply-- +:Votes-delegates: pass:normal[xref:governance.adoc#Votes-delegates-address-[`Votes.delegates`]] +:xref-Votes-delegates-address-: xref:governance.adoc#Votes-delegates-address- +:Votes-delegate: pass:normal[xref:governance.adoc#Votes-delegate-address-[`Votes.delegate`]] +:xref-Votes-delegate-address-: xref:governance.adoc#Votes-delegate-address- +:Votes-delegateBySig: pass:normal[xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`Votes.delegateBySig`]] +:xref-Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:Votes-_delegate: pass:normal[xref:governance.adoc#Votes-_delegate-address-address-[`Votes._delegate`]] +:xref-Votes-_delegate-address-address-: xref:governance.adoc#Votes-_delegate-address-address- +:Votes-_transferVotingUnits: pass:normal[xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256-[`Votes._transferVotingUnits`]] +:xref-Votes-_transferVotingUnits-address-address-uint256-: xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256- +:Votes-_useNonce: pass:normal[xref:governance.adoc#Votes-_useNonce-address-[`Votes._useNonce`]] +:xref-Votes-_useNonce-address-: xref:governance.adoc#Votes-_useNonce-address- +:Votes-nonces: pass:normal[xref:governance.adoc#Votes-nonces-address-[`Votes.nonces`]] +:xref-Votes-nonces-address-: xref:governance.adoc#Votes-nonces-address- +:Votes-DOMAIN_SEPARATOR: pass:normal[xref:governance.adoc#Votes-DOMAIN_SEPARATOR--[`Votes.DOMAIN_SEPARATOR`]] +:xref-Votes-DOMAIN_SEPARATOR--: xref:governance.adoc#Votes-DOMAIN_SEPARATOR-- +:Votes-_getVotingUnits: pass:normal[xref:governance.adoc#Votes-_getVotingUnits-address-[`Votes._getVotingUnits`]] +:xref-Votes-_getVotingUnits-address-: xref:governance.adoc#Votes-_getVotingUnits-address- :IERC1271: pass:normal[xref:interfaces.adoc#IERC1271[`IERC1271`]] :xref-IERC1271: xref:interfaces.adoc#IERC1271 :IERC1271-isValidSignature: pass:normal[xref:interfaces.adoc#IERC1271-isValidSignature-bytes32-bytes-[`IERC1271.isValidSignature`]] @@ -566,6 +632,10 @@ :xref-IERC3156FlashLender-flashFee-address-uint256-: xref:interfaces.adoc#IERC3156FlashLender-flashFee-address-uint256- :IERC3156FlashLender-flashLoan: pass:normal[xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-[`IERC3156FlashLender.flashLoan`]] :xref-IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-: xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes- +:IERC1822Proxiable: pass:normal[xref:interfaces.adoc#IERC1822Proxiable[`IERC1822Proxiable`]] +:xref-IERC1822Proxiable: xref:interfaces.adoc#IERC1822Proxiable +:IERC1822Proxiable-proxiableUUID: pass:normal[xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID--[`IERC1822Proxiable.proxiableUUID`]] +:xref-IERC1822Proxiable-proxiableUUID--: xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID-- :IERC2612: pass:normal[xref:interfaces.adoc#IERC2612[`IERC2612`]] :xref-IERC2612: xref:interfaces.adoc#IERC2612 :ERC2771Context: pass:normal[xref:metatx.adoc#ERC2771Context[`ERC2771Context`]] @@ -618,8 +688,8 @@ :xref-ERC1967Upgrade-_upgradeTo-address-: xref:proxy.adoc#ERC1967Upgrade-_upgradeTo-address- :ERC1967Upgrade-_upgradeToAndCall: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCall`]] :xref-ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool- -:ERC1967Upgrade-_upgradeToAndCallSecure: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallSecure`]] -:xref-ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool- +:ERC1967Upgrade-_upgradeToAndCallUUPS: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallUUPS`]] +:xref-ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool- :ERC1967Upgrade-_getAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_getAdmin--[`ERC1967Upgrade._getAdmin`]] :xref-ERC1967Upgrade-_getAdmin--: xref:proxy.adoc#ERC1967Upgrade-_getAdmin-- :ERC1967Upgrade-_changeAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_changeAdmin-address-[`ERC1967Upgrade._changeAdmin`]] @@ -714,6 +784,10 @@ :xref-UUPSUpgradeable: xref:proxy.adoc#UUPSUpgradeable :UUPSUpgradeable-onlyProxy: pass:normal[xref:proxy.adoc#UUPSUpgradeable-onlyProxy--[`UUPSUpgradeable.onlyProxy`]] :xref-UUPSUpgradeable-onlyProxy--: xref:proxy.adoc#UUPSUpgradeable-onlyProxy-- +:UUPSUpgradeable-notDelegated: pass:normal[xref:proxy.adoc#UUPSUpgradeable-notDelegated--[`UUPSUpgradeable.notDelegated`]] +:xref-UUPSUpgradeable-notDelegated--: xref:proxy.adoc#UUPSUpgradeable-notDelegated-- +:UUPSUpgradeable-proxiableUUID: pass:normal[xref:proxy.adoc#UUPSUpgradeable-proxiableUUID--[`UUPSUpgradeable.proxiableUUID`]] +:xref-UUPSUpgradeable-proxiableUUID--: xref:proxy.adoc#UUPSUpgradeable-proxiableUUID-- :UUPSUpgradeable-upgradeTo: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address-[`UUPSUpgradeable.upgradeTo`]] :xref-UUPSUpgradeable-upgradeTo-address-: xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address- :UUPSUpgradeable-upgradeToAndCall: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeToAndCall-address-bytes-[`UUPSUpgradeable.upgradeToAndCall`]] @@ -782,6 +856,26 @@ :xref-Arrays: xref:utils.adoc#Arrays :Arrays-findUpperBound: pass:normal[xref:utils.adoc#Arrays-findUpperBound-uint256---uint256-[`Arrays.findUpperBound`]] :xref-Arrays-findUpperBound-uint256---uint256-: xref:utils.adoc#Arrays-findUpperBound-uint256---uint256- +:Base64: pass:normal[xref:utils.adoc#Base64[`Base64`]] +:xref-Base64: xref:utils.adoc#Base64 +:Base64-_TABLE: pass:normal[xref:utils.adoc#Base64-_TABLE-string[`Base64._TABLE`]] +:xref-Base64-_TABLE-string: xref:utils.adoc#Base64-_TABLE-string +:Base64-encode: pass:normal[xref:utils.adoc#Base64-encode-bytes-[`Base64.encode`]] +:xref-Base64-encode-bytes-: xref:utils.adoc#Base64-encode-bytes- +:Checkpoints: pass:normal[xref:utils.adoc#Checkpoints[`Checkpoints`]] +:xref-Checkpoints: xref:utils.adoc#Checkpoints +:Checkpoints-latest: pass:normal[xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History-[`Checkpoints.latest`]] +:xref-Checkpoints-latest-struct-Checkpoints-History-: xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History- +:Checkpoints-getAtBlock: pass:normal[xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-[`Checkpoints.getAtBlock`]] +:xref-Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256- +:Checkpoints-Checkpoint: pass:normal[xref:utils.adoc#Checkpoints-Checkpoint[`Checkpoints.Checkpoint`]] +:xref-Checkpoints-Checkpoint: xref:utils.adoc#Checkpoints-Checkpoint +:Checkpoints-History: pass:normal[xref:utils.adoc#Checkpoints-History[`Checkpoints.History`]] +:xref-Checkpoints-History: xref:utils.adoc#Checkpoints-History :Context: pass:normal[xref:utils.adoc#Context[`Context`]] :xref-Context: xref:utils.adoc#Context :Context-_msgSender: pass:normal[xref:utils.adoc#Context-_msgSender--[`Context._msgSender`]] @@ -1078,6 +1172,16 @@ :xref-SafeMath-div-uint256-uint256-string-: xref:utils.adoc#SafeMath-div-uint256-uint256-string- :SafeMath-mod: pass:normal[xref:utils.adoc#SafeMath-mod-uint256-uint256-string-[`SafeMath.mod`]] :xref-SafeMath-mod-uint256-uint256-string-: xref:utils.adoc#SafeMath-mod-uint256-uint256-string- +:SignedMath: pass:normal[xref:utils.adoc#SignedMath[`SignedMath`]] +:xref-SignedMath: xref:utils.adoc#SignedMath +:SignedMath-max: pass:normal[xref:utils.adoc#SignedMath-max-int256-int256-[`SignedMath.max`]] +:xref-SignedMath-max-int256-int256-: xref:utils.adoc#SignedMath-max-int256-int256- +:SignedMath-min: pass:normal[xref:utils.adoc#SignedMath-min-int256-int256-[`SignedMath.min`]] +:xref-SignedMath-min-int256-int256-: xref:utils.adoc#SignedMath-min-int256-int256- +:SignedMath-average: pass:normal[xref:utils.adoc#SignedMath-average-int256-int256-[`SignedMath.average`]] +:xref-SignedMath-average-int256-int256-: xref:utils.adoc#SignedMath-average-int256-int256- +:SignedMath-abs: pass:normal[xref:utils.adoc#SignedMath-abs-int256-[`SignedMath.abs`]] +:xref-SignedMath-abs-int256-: xref:utils.adoc#SignedMath-abs-int256- :SignedSafeMath: pass:normal[xref:utils.adoc#SignedSafeMath[`SignedSafeMath`]] :xref-SignedSafeMath: xref:utils.adoc#SignedSafeMath :SignedSafeMath-mul: pass:normal[xref:utils.adoc#SignedSafeMath-mul-int256-int256-[`SignedSafeMath.mul`]] @@ -1256,26 +1360,6 @@ :xref-IERC1155MetadataURI: xref:token/ERC1155.adoc#IERC1155MetadataURI :IERC1155MetadataURI-uri: pass:normal[xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256-[`IERC1155MetadataURI.uri`]] :xref-IERC1155MetadataURI-uri-uint256-: xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256- -:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] -:xref-ERC1155PresetMinterPauser: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser -:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] -:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 -:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] -:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 -:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] -:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-constructor-string- -:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] -:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- -:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] -:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- -:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] -:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-pause-- -:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] -:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-unpause-- -:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] -:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-supportsInterface-bytes4- -:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] -:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- :ERC1155Holder: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder[`ERC1155Holder`]] :xref-ERC1155Holder: xref:token/ERC1155.adoc#ERC1155Holder :ERC1155Holder-onERC1155Received: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-[`ERC1155Holder.onERC1155Received`]] @@ -1320,6 +1404,8 @@ :xref-ERC20-_burn-address-uint256-: xref:token/ERC20.adoc#ERC20-_burn-address-uint256- :ERC20-_approve: pass:normal[xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256-[`ERC20._approve`]] :xref-ERC20-_approve-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256- +:ERC20-_spendAllowance: pass:normal[xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256-[`ERC20._spendAllowance`]] +:xref-ERC20-_spendAllowance-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256- :ERC20-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256-[`ERC20._beforeTokenTransfer`]] :xref-ERC20-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256- :ERC20-_afterTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_afterTokenTransfer-address-address-uint256-[`ERC20._afterTokenTransfer`]] @@ -1412,10 +1498,6 @@ :xref-ERC20Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-_afterTokenTransfer-address-address-uint256- :ERC20Votes-_delegate: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address-[`ERC20Votes._delegate`]] :xref-ERC20Votes-_delegate-address-address-: xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address- -:ERC20Votes-DelegateChanged: pass:normal[xref:token/ERC20.adoc#ERC20Votes-DelegateChanged-address-address-address-[`ERC20Votes.DelegateChanged`]] -:xref-ERC20Votes-DelegateChanged-address-address-address-: xref:token/ERC20.adoc#ERC20Votes-DelegateChanged-address-address-address- -:ERC20Votes-DelegateVotesChanged: pass:normal[xref:token/ERC20.adoc#ERC20Votes-DelegateVotesChanged-address-uint256-uint256-[`ERC20Votes.DelegateVotesChanged`]] -:xref-ERC20Votes-DelegateVotesChanged-address-uint256-uint256-: xref:token/ERC20.adoc#ERC20Votes-DelegateVotesChanged-address-uint256-uint256- :ERC20Votes-Checkpoint: pass:normal[xref:token/ERC20.adoc#ERC20Votes-Checkpoint[`ERC20Votes.Checkpoint`]] :xref-ERC20Votes-Checkpoint: xref:token/ERC20.adoc#ERC20Votes-Checkpoint :ERC20VotesComp: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp[`ERC20VotesComp`]] @@ -1466,26 +1548,6 @@ :xref-IERC20Permit-nonces-address-: xref:token/ERC20.adoc#IERC20Permit-nonces-address- :IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]] :xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR-- -:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20.adoc#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] -:xref-ERC20PresetFixedSupply: xref:token/ERC20.adoc#ERC20PresetFixedSupply -:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20.adoc#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] -:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20.adoc#ERC20PresetFixedSupply-constructor-string-string-uint256-address- -:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] -:xref-ERC20PresetMinterPauser: xref:token/ERC20.adoc#ERC20PresetMinterPauser -:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] -:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20.adoc#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 -:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] -:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20.adoc#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 -:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] -:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-constructor-string-string- -:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] -:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-mint-address-uint256- -:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] -:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20.adoc#ERC20PresetMinterPauser-pause-- -:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] -:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20.adoc#ERC20PresetMinterPauser-unpause-- -:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] -:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- :SafeERC20: pass:normal[xref:token/ERC20.adoc#SafeERC20[`SafeERC20`]] :xref-SafeERC20: xref:token/ERC20.adoc#SafeERC20 :SafeERC20-safeTransfer: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeTransfer-contract-IERC20-address-uint256-[`SafeERC20.safeTransfer`]] @@ -1564,6 +1626,8 @@ :xref-ERC721-_setApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool- :ERC721-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256-[`ERC721._beforeTokenTransfer`]] :xref-ERC721-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256- +:ERC721-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256-[`ERC721._afterTokenTransfer`]] +:xref-ERC721-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256- :IERC721: pass:normal[xref:token/ERC721.adoc#IERC721[`IERC721`]] :xref-IERC721: xref:token/ERC721.adoc#IERC721 :IERC721-balanceOf: pass:normal[xref:token/ERC721.adoc#IERC721-balanceOf-address-[`IERC721.balanceOf`]] @@ -1614,6 +1678,12 @@ :xref-ERC721Pausable: xref:token/ERC721.adoc#ERC721Pausable :ERC721Pausable-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256-[`ERC721Pausable._beforeTokenTransfer`]] :xref-ERC721Pausable-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256- +:ERC721Royalty: pass:normal[xref:token/ERC721.adoc#ERC721Royalty[`ERC721Royalty`]] +:xref-ERC721Royalty: xref:token/ERC721.adoc#ERC721Royalty +:ERC721Royalty-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4-[`ERC721Royalty.supportsInterface`]] +:xref-ERC721Royalty-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4- +:ERC721Royalty-_burn: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256-[`ERC721Royalty._burn`]] +:xref-ERC721Royalty-_burn-uint256-: xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256- :ERC721URIStorage: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage[`ERC721URIStorage`]] :xref-ERC721URIStorage: xref:token/ERC721.adoc#ERC721URIStorage :ERC721URIStorage-tokenURI: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage-tokenURI-uint256-[`ERC721URIStorage.tokenURI`]] @@ -1638,26 +1708,12 @@ :xref-IERC721Metadata-symbol--: xref:token/ERC721.adoc#IERC721Metadata-symbol-- :IERC721Metadata-tokenURI: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256-[`IERC721Metadata.tokenURI`]] :xref-IERC721Metadata-tokenURI-uint256-: xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256- -:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] -:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId -:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] -:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 -:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] -:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 -:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] -:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-constructor-string-string-string- -:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] -:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_baseURI-- -:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] -:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-mint-address- -:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] -:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-pause-- -:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] -:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-unpause-- -:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] -:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- -:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] -:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- +:ERC721Votes: pass:normal[xref:token/ERC721.adoc#ERC721Votes[`ERC721Votes`]] +:xref-ERC721Votes: xref:token/ERC721.adoc#ERC721Votes +:ERC721Votes-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256-[`ERC721Votes._afterTokenTransfer`]] +:xref-ERC721Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256- +:ERC721Votes-_getVotingUnits: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address-[`ERC721Votes._getVotingUnits`]] +:xref-ERC721Votes-_getVotingUnits-address-: xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address- :ERC721Holder: pass:normal[xref:token/ERC721.adoc#ERC721Holder[`ERC721Holder`]] :xref-ERC721Holder: xref:token/ERC721.adoc#ERC721Holder :ERC721Holder-onERC721Received: pass:normal[xref:token/ERC721.adoc#ERC721Holder-onERC721Received-address-address-uint256-bytes-[`ERC721Holder.onERC721Received`]] @@ -1714,6 +1770,8 @@ :xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes- :ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]] :xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256- +:ERC777-_spendAllowance: pass:normal[xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256-[`ERC777._spendAllowance`]] +:xref-ERC777-_spendAllowance-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256- :ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]] :xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256- :IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]] @@ -1766,6 +1824,84 @@ :xref-ERC777PresetFixedSupply: xref:token/ERC777.adoc#ERC777PresetFixedSupply :ERC777PresetFixedSupply-constructor: pass:normal[xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-[`ERC777PresetFixedSupply.constructor`]] :xref-ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-: xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address- +:ERC2981: pass:normal[xref:token/common.adoc#ERC2981[`ERC2981`]] +:xref-ERC2981: xref:token/common.adoc#ERC2981 +:ERC2981-supportsInterface: pass:normal[xref:token/common.adoc#ERC2981-supportsInterface-bytes4-[`ERC2981.supportsInterface`]] +:xref-ERC2981-supportsInterface-bytes4-: xref:token/common.adoc#ERC2981-supportsInterface-bytes4- +:ERC2981-royaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256-[`ERC2981.royaltyInfo`]] +:xref-ERC2981-royaltyInfo-uint256-uint256-: xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256- +:ERC2981-_feeDenominator: pass:normal[xref:token/common.adoc#ERC2981-_feeDenominator--[`ERC2981._feeDenominator`]] +:xref-ERC2981-_feeDenominator--: xref:token/common.adoc#ERC2981-_feeDenominator-- +:ERC2981-_setDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96-[`ERC2981._setDefaultRoyalty`]] +:xref-ERC2981-_setDefaultRoyalty-address-uint96-: xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96- +:ERC2981-_deleteDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty--[`ERC2981._deleteDefaultRoyalty`]] +:xref-ERC2981-_deleteDefaultRoyalty--: xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty-- +:ERC2981-_setTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96-[`ERC2981._setTokenRoyalty`]] +:xref-ERC2981-_setTokenRoyalty-uint256-address-uint96-: xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96- +:ERC2981-_resetTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256-[`ERC2981._resetTokenRoyalty`]] +:xref-ERC2981-_resetTokenRoyalty-uint256-: xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256- +:ERC2981-RoyaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-RoyaltyInfo[`ERC2981.RoyaltyInfo`]] +:xref-ERC2981-RoyaltyInfo: xref:token/common.adoc#ERC2981-RoyaltyInfo +:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] +:xref-ERC1155PresetMinterPauser: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser +:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] +:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string- +:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] +:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- +:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] +:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- +:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] +:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause-- +:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] +:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause-- +:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] +:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4- +:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] +:xref-ERC20PresetFixedSupply: xref:token/ERC20/presets.md#ERC20PresetFixedSupply +:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] +:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address- +:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] +:xref-ERC20PresetMinterPauser: xref:token/ERC20/presets.md#ERC20PresetMinterPauser +:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] +:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string- +:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] +:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256- +:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] +:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause-- +:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] +:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause-- +:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] +:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId +:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] +:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string- +:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] +:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI-- +:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] +:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address- +:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] +:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause-- +:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] +:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause-- +:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] +:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] +:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- = Governance [.readme-notice] @@ -1810,13 +1946,15 @@ Other extensions can customize the behavior or interface in multiple ways. * {GovernorSettings}: Manages some of the settings (voting delay, voting period duration, and proposal threshold) in a way that can be updated through a governance proposal, without requiering an upgrade. +* {GovernorPreventLateQuorum}: Ensures there is a minimum voting period after quorum is reached as a security protection against large voters. + In addition to modules and extensions, the core contract requires a few virtual functions to be implemented to your particular specifications: * <>: Delay (in number of blocks) since the proposal is submitted until voting power is fixed and voting starts. This can be used to enforce a delay after a proposal is published for users to buy tokens, or delegate their votes. * <>: Delay (in number of blocks) since the proposal starts until voting ends. * <>: Quorum required for a proposal to be successful. This function includes a `blockNumber` argument so the quorum can adapt through time, for example, to follow a token's `totalSupply`. -NOTE: Functions of the `Governor` contract do not include access control. If you want to restrict access, you should add these checks by overloading the particular functions. Among these, {Governor-_cancel} is internal by default, and you will have to expose it (which the right access control mechanism) yourself if this function is needed. +NOTE: Functions of the `Governor` contract do not include access control. If you want to restrict access, you should add these checks by overloading the particular functions. Among these, {Governor-_cancel} is internal by default, and you will have to expose it (with the right access control mechanism) yourself if this function is needed. === Core @@ -1846,7 +1984,7 @@ NOTE: Functions of the `Governor` contract do not include access control. If you [.contract] [[IGovernor]] -=== `++IGovernor++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/governance/IGovernor.sol[{github-icon},role=heading-link] +=== `++IGovernor++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/governance/IGovernor.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2028,7 +2166,7 @@ Emits a {VoteCast} event. [[IGovernor-castVoteWithReason-uint256-uint8-string-]] ==== `[.contract-item-name]#++castVoteWithReason++#++(uint256 proposalId, uint8 support, string reason) → uint256 balance++` [.item-kind]#public# -Cast a with a reason +Cast a vote with a reason Emits a {VoteCast} event. @@ -2093,12 +2231,13 @@ Note: `support` values should be seen as buckets. There interpretation depends o :castVoteWithReason: pass:normal[xref:#Governor-castVoteWithReason-uint256-uint8-string-[`++castVoteWithReason++`]] :castVoteBySig: pass:normal[xref:#Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-[`++castVoteBySig++`]] :_castVote: pass:normal[xref:#Governor-_castVote-uint256-address-uint8-string-[`++_castVote++`]] +:relay: pass:normal[xref:#Governor-relay-address-uint256-bytes-[`++relay++`]] :_executor: pass:normal[xref:#Governor-_executor--[`++_executor++`]] :ProposalCore: pass:normal[xref:#Governor-ProposalCore[`++ProposalCore++`]] [.contract] [[Governor]] -=== `++Governor++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/governance/Governor.sol[{github-icon},role=heading-link] +=== `++Governor++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/governance/Governor.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2145,6 +2284,7 @@ _Available since v4.3._ * {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`] * {xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-}[`++castVoteBySig(proposalId, support, v, r, s)++`] * {xref-Governor-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`] +* {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`] * {xref-Governor-_executor--}[`++_executor()++`] [.contract-subindex-inherited] @@ -2198,8 +2338,9 @@ _Available since v4.3._ [[Governor-onlyGovernance--]] ==== `[.contract-item-name]#++onlyGovernance++#++()++` [.item-kind]#modifier# -Restrict access to governor executing address. Some module might override the _executor function to make -sure this modifier is consistant with the execution model. +Restrict access of functions to the governance executor, which may be the Governor itself or a timelock +contract, as specified by {_executor}. This generally means that function with this modifier must be voted on and +executed through the governance protocol. [.contract-item] @@ -2346,6 +2487,15 @@ voting weight using {IGovernor-getVotes} and call the {_countVote} internal func Emits a {IGovernor-VoteCast} event. +[.contract-item] +[[Governor-relay-address-uint256-bytes-]] +==== `[.contract-item-name]#++relay++#++(address target, uint256 value, bytes data)++` [.item-kind]#external# + +Relays a transaction or function call to an arbitrary target. In cases where the governance executor +is some contract other than the governor itself, like when using a timelock, this function can be invoked +in a governance proposal to recover tokens or Ether that was sent to the governor contract by mistake. +Note that if the executor is simply the governor itself, use of `relay` is redundant. + [.contract-item] [[Governor-_executor--]] ==== `[.contract-item-name]#++_executor++#++() → address++` [.item-kind]#internal# @@ -2370,7 +2520,7 @@ through another contract such as a timelock. [.contract] [[GovernorCountingSimple]] -=== `++GovernorCountingSimple++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/governance/extensions/GovernorCountingSimple.sol[{github-icon},role=heading-link] +=== `++GovernorCountingSimple++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/governance/extensions/GovernorCountingSimple.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2412,6 +2562,7 @@ _Available since v4.3._ * {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`] * {xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-}[`++castVoteBySig(proposalId, support, v, r, s)++`] * {xref-Governor-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`] +* {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`] * {xref-Governor-_executor--}[`++_executor()++`] [.contract-subindex-inherited] @@ -2503,20 +2654,20 @@ See {Governor-_countVote}. In this module, the support follows the `VoteType` en :GovernorVotes: pass:normal[xref:#GovernorVotes[`++GovernorVotes++`]] -:token: pass:normal[xref:#GovernorVotes-token-contract-ERC20Votes[`++token++`]] -:constructor: pass:normal[xref:#GovernorVotes-constructor-contract-ERC20Votes-[`++constructor++`]] +:token: pass:normal[xref:#GovernorVotes-token-contract-IVotes[`++token++`]] +:constructor: pass:normal[xref:#GovernorVotes-constructor-contract-IVotes-[`++constructor++`]] :getVotes: pass:normal[xref:#GovernorVotes-getVotes-address-uint256-[`++getVotes++`]] [.contract] [[GovernorVotes]] -=== `++GovernorVotes++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/governance/extensions/GovernorVotes.sol[{github-icon},role=heading-link] +=== `++GovernorVotes++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/governance/extensions/GovernorVotes.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity import "@openzeppelin/contracts/governance/extensions/GovernorVotes.sol"; ``` -Extension of {Governor} for voting weight extraction from an {ERC20Votes} token. +Extension of {Governor} for voting weight extraction from an {ERC20Votes} token, or since v4.5 an {ERC721Votes} token. _Available since v4.3._ @@ -2524,7 +2675,7 @@ _Available since v4.3._ [.contract-index] .Functions -- -* {xref-GovernorVotes-constructor-contract-ERC20Votes-}[`++constructor(tokenAddress)++`] +* {xref-GovernorVotes-constructor-contract-IVotes-}[`++constructor(tokenAddress)++`] * {xref-GovernorVotes-getVotes-address-uint256-}[`++getVotes(account, blockNumber)++`] [.contract-subindex-inherited] @@ -2549,6 +2700,7 @@ _Available since v4.3._ * {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`] * {xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-}[`++castVoteBySig(proposalId, support, v, r, s)++`] * {xref-Governor-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`] +* {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`] * {xref-Governor-_executor--}[`++_executor()++`] [.contract-subindex-inherited] @@ -2602,8 +2754,8 @@ _Available since v4.3._ [.contract-item] -[[GovernorVotes-constructor-contract-ERC20Votes-]] -==== `[.contract-item-name]#++constructor++#++(contract ERC20Votes tokenAddress)++` [.item-kind]#internal# +[[GovernorVotes-constructor-contract-IVotes-]] +==== `[.contract-item-name]#++constructor++#++(contract IVotes tokenAddress)++` [.item-kind]#internal# @@ -2627,7 +2779,7 @@ _Available since v4.3._ [.contract] [[GovernorVotesQuorumFraction]] -=== `++GovernorVotesQuorumFraction++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/governance/extensions/GovernorVotesQuorumFraction.sol[{github-icon},role=heading-link] +=== `++GovernorVotesQuorumFraction++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/governance/extensions/GovernorVotesQuorumFraction.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2676,6 +2828,7 @@ _Available since v4.3._ * {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`] * {xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-}[`++castVoteBySig(proposalId, support, v, r, s)++`] * {xref-Governor-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`] +* {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`] * {xref-Governor-_executor--}[`++_executor()++`] [.contract-subindex-inherited] @@ -2735,37 +2888,54 @@ _Available since v4.3._ [[GovernorVotesQuorumFraction-constructor-uint256-]] ==== `[.contract-item-name]#++constructor++#++(uint256 quorumNumeratorValue)++` [.item-kind]#internal# +Initialize quorum as a fraction of the token's total supply. +The fraction is specified as `numerator / denominator`. By default the denominator is 100, so quorum is +specified as a percent: a numerator of 10 corresponds to quorum being 10% of total supply. The denominator can be +customized by overriding {quorumDenominator}. [.contract-item] [[GovernorVotesQuorumFraction-quorumNumerator--]] ==== `[.contract-item-name]#++quorumNumerator++#++() → uint256++` [.item-kind]#public# - +Returns the current quorum numerator. See {quorumDenominator}. [.contract-item] [[GovernorVotesQuorumFraction-quorumDenominator--]] ==== `[.contract-item-name]#++quorumDenominator++#++() → uint256++` [.item-kind]#public# - +Returns the quorum denominator. Defaults to 100, but may be overridden. [.contract-item] [[GovernorVotesQuorumFraction-quorum-uint256-]] ==== `[.contract-item-name]#++quorum++#++(uint256 blockNumber) → uint256++` [.item-kind]#public# - +Returns the quorum for a block number, in terms of number of votes: `supply * numerator / denominator`. [.contract-item] [[GovernorVotesQuorumFraction-updateQuorumNumerator-uint256-]] ==== `[.contract-item-name]#++updateQuorumNumerator++#++(uint256 newQuorumNumerator)++` [.item-kind]#external# +Changes the quorum numerator. +Emits a {QuorumNumeratorUpdated} event. + +Requirements: + +- Must be called through a governance proposal. +- New numerator must be smaller or equal to the denominator. [.contract-item] [[GovernorVotesQuorumFraction-_updateQuorumNumerator-uint256-]] ==== `[.contract-item-name]#++_updateQuorumNumerator++#++(uint256 newQuorumNumerator)++` [.item-kind]#internal# +Changes the quorum numerator. +Emits a {QuorumNumeratorUpdated} event. + +Requirements: + +- New numerator must be smaller or equal to the denominator. [.contract-item] @@ -2783,7 +2953,7 @@ _Available since v4.3._ [.contract] [[GovernorVotesComp]] -=== `++GovernorVotesComp++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/governance/extensions/GovernorVotesComp.sol[{github-icon},role=heading-link] +=== `++GovernorVotesComp++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/governance/extensions/GovernorVotesComp.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2823,6 +2993,7 @@ _Available since v4.3._ * {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`] * {xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-}[`++castVoteBySig(proposalId, support, v, r, s)++`] * {xref-Governor-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`] +* {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`] * {xref-Governor-_executor--}[`++_executor()++`] [.contract-subindex-inherited] @@ -2907,7 +3078,7 @@ _Available since v4.3._ [.contract] [[GovernorTimelockControl]] -=== `++GovernorTimelockControl++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/governance/extensions/GovernorTimelockControl.sol[{github-icon},role=heading-link] +=== `++GovernorTimelockControl++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/governance/extensions/GovernorTimelockControl.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2916,12 +3087,17 @@ import "@openzeppelin/contracts/governance/extensions/GovernorTimelockControl.so Extension of {Governor} that binds the execution process to an instance of {TimelockController}. This adds a delay, enforced by the {TimelockController} to all successful proposal (in addition to the voting duration). The -{Governor} needs the proposer (an ideally the executor) roles for the {Governor} to work properly. +{Governor} needs the proposer (and ideally the executor) roles for the {Governor} to work properly. Using this model means the proposal will be operated by the {TimelockController} and not by the {Governor}. Thus, the assets and permissions must be attached to the {TimelockController}. Any asset sent to the {Governor} will be inaccessible. +WARNING: Setting up the TimelockController to have additional proposers besides the governor is very risky, as it +grants them powers that they must be trusted or known not to use: 1) {onlyGovernance} functions like {relay} are +available to them through the timelock, and 2) approved governance proposals can be blocked by them, effectively +executing a Denial of Service attack. This risk will be mitigated in a future release. + _Available since v4.3._ @@ -2957,6 +3133,7 @@ _Available since v4.3._ * {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`] * {xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-}[`++castVoteBySig(proposalId, support, v, r, s)++`] * {xref-Governor-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`] +* {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`] [.contract-subindex-inherited] .IGovernorTimelock @@ -3077,7 +3254,9 @@ Address through which the governor executes action. In this case, the timelock. ==== `[.contract-item-name]#++updateTimelock++#++(contract TimelockController newTimelock)++` [.item-kind]#external# Public endpoint to update the underlying timelock instance. Restricted to the timelock itself, so updates -must be proposed, scheduled and executed using the {Governor} workflow. +must be proposed, scheduled, and executed through governance proposals. + +CAUTION: It is not recommended to change the timelock while there are other queued governance proposals. [.contract-item] @@ -3105,7 +3284,7 @@ Emitted when the timelock controller used for proposal execution is modified. [.contract] [[GovernorTimelockCompound]] -=== `++GovernorTimelockCompound++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/governance/extensions/GovernorTimelockCompound.sol[{github-icon},role=heading-link] +=== `++GovernorTimelockCompound++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/governance/extensions/GovernorTimelockCompound.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -3157,6 +3336,7 @@ _Available since v4.3._ * {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`] * {xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-}[`++castVoteBySig(proposalId, support, v, r, s)++`] * {xref-Governor-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`] +* {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`] [.contract-subindex-inherited] .IGovernorTimelock @@ -3283,15 +3463,17 @@ Accept admin right over the timelock. ==== `[.contract-item-name]#++updateTimelock++#++(contract ICompoundTimelock newTimelock)++` [.item-kind]#external# Public endpoint to update the underlying timelock instance. Restricted to the timelock itself, so updates -must be proposed, scheduled and executed using the {Governor} workflow. +must be proposed, scheduled, and executed through governance proposals. -For security reason, the timelock must be handed over to another admin before setting up a new one. The two +For security reasons, the timelock must be handed over to another admin before setting up a new one. The two operations (hand over the timelock) and do the update can be batched in a single proposal. Note that if the timelock admin has been handed over in a previous operation, we refuse updates made through the timelock if admin of the timelock has already been accepted and the operation is executed outside the scope of governance. +CAUTION: It is not recommended to change the timelock while there are other queued governance proposals. + [.contract-item] [[GovernorTimelockCompound-TimelockChange-address-address-]] @@ -3318,7 +3500,7 @@ Emitted when the timelock controller used for proposal execution is modified. [.contract] [[GovernorSettings]] -=== `++GovernorSettings++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/governance/extensions/GovernorSettings.sol[{github-icon},role=heading-link] +=== `++GovernorSettings++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/governance/extensions/GovernorSettings.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -3365,6 +3547,7 @@ _Available since v4.4._ * {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`] * {xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-}[`++castVoteBySig(proposalId, support, v, r, s)++`] * {xref-Governor-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`] +* {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`] * {xref-Governor-_executor--}[`++_executor()++`] [.contract-subindex-inherited] @@ -3512,6 +3695,186 @@ Emits a {ProposalThresholdSet} event. +:GovernorPreventLateQuorum: pass:normal[xref:#GovernorPreventLateQuorum[`++GovernorPreventLateQuorum++`]] +:constructor: pass:normal[xref:#GovernorPreventLateQuorum-constructor-uint64-[`++constructor++`]] +:proposalDeadline: pass:normal[xref:#GovernorPreventLateQuorum-proposalDeadline-uint256-[`++proposalDeadline++`]] +:_castVote: pass:normal[xref:#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-[`++_castVote++`]] +:lateQuorumVoteExtension: pass:normal[xref:#GovernorPreventLateQuorum-lateQuorumVoteExtension--[`++lateQuorumVoteExtension++`]] +:setLateQuorumVoteExtension: pass:normal[xref:#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-[`++setLateQuorumVoteExtension++`]] +:_setLateQuorumVoteExtension: pass:normal[xref:#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-[`++_setLateQuorumVoteExtension++`]] +:ProposalExtended: pass:normal[xref:#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-[`++ProposalExtended++`]] +:LateQuorumVoteExtensionSet: pass:normal[xref:#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-[`++LateQuorumVoteExtensionSet++`]] + +[.contract] +[[GovernorPreventLateQuorum]] +=== `++GovernorPreventLateQuorum++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/governance/extensions/GovernorPreventLateQuorum.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@openzeppelin/contracts/governance/extensions/GovernorPreventLateQuorum.sol"; +``` + +A module that ensures there is a minimum voting period after quorum is reached. This prevents a large voter from +swaying a vote and triggering quorum at the last minute, by ensuring there is always time for other voters to react +and try to oppose the decision. + +If a vote causes quorum to be reached, the proposal's voting period may be extended so that it does not end before at +least a given number of blocks have passed (the "vote extension" parameter). This parameter can be set by the +governance executor (e.g. through a governance proposal). + +_Available since v4.5._ + + +[.contract-index] +.Functions +-- +* {xref-GovernorPreventLateQuorum-constructor-uint64-}[`++constructor(initialVoteExtension)++`] +* {xref-GovernorPreventLateQuorum-proposalDeadline-uint256-}[`++proposalDeadline(proposalId)++`] +* {xref-GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`] +* {xref-GovernorPreventLateQuorum-lateQuorumVoteExtension--}[`++lateQuorumVoteExtension()++`] +* {xref-GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-}[`++setLateQuorumVoteExtension(newVoteExtension)++`] +* {xref-GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-}[`++_setLateQuorumVoteExtension(newVoteExtension)++`] + +[.contract-subindex-inherited] +.Governor +* {xref-Governor-receive--}[`++receive()++`] +* {xref-Governor-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`] +* {xref-Governor-name--}[`++name()++`] +* {xref-Governor-version--}[`++version()++`] +* {xref-Governor-hashProposal-address---uint256---bytes---bytes32-}[`++hashProposal(targets, values, calldatas, descriptionHash)++`] +* {xref-Governor-state-uint256-}[`++state(proposalId)++`] +* {xref-Governor-proposalSnapshot-uint256-}[`++proposalSnapshot(proposalId)++`] +* {xref-Governor-proposalThreshold--}[`++proposalThreshold()++`] +* {xref-Governor-_quorumReached-uint256-}[`++_quorumReached(proposalId)++`] +* {xref-Governor-_voteSucceeded-uint256-}[`++_voteSucceeded(proposalId)++`] +* {xref-Governor-_countVote-uint256-address-uint8-uint256-}[`++_countVote(proposalId, account, support, weight)++`] +* {xref-Governor-propose-address---uint256---bytes---string-}[`++propose(targets, values, calldatas, description)++`] +* {xref-Governor-execute-address---uint256---bytes---bytes32-}[`++execute(targets, values, calldatas, descriptionHash)++`] +* {xref-Governor-_execute-uint256-address---uint256---bytes---bytes32-}[`++_execute(_, targets, values, calldatas, _)++`] +* {xref-Governor-_cancel-address---uint256---bytes---bytes32-}[`++_cancel(targets, values, calldatas, descriptionHash)++`] +* {xref-Governor-castVote-uint256-uint8-}[`++castVote(proposalId, support)++`] +* {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`] +* {xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-}[`++castVoteBySig(proposalId, support, v, r, s)++`] +* {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`] +* {xref-Governor-_executor--}[`++_executor()++`] + +[.contract-subindex-inherited] +.IGovernor +* {xref-IGovernor-COUNTING_MODE--}[`++COUNTING_MODE()++`] +* {xref-IGovernor-votingDelay--}[`++votingDelay()++`] +* {xref-IGovernor-votingPeriod--}[`++votingPeriod()++`] +* {xref-IGovernor-quorum-uint256-}[`++quorum(blockNumber)++`] +* {xref-IGovernor-getVotes-address-uint256-}[`++getVotes(account, blockNumber)++`] +* {xref-IGovernor-hasVoted-uint256-address-}[`++hasVoted(proposalId, account)++`] + +[.contract-subindex-inherited] +.EIP712 +* {xref-EIP712-_domainSeparatorV4--}[`++_domainSeparatorV4()++`] +* {xref-EIP712-_hashTypedDataV4-bytes32-}[`++_hashTypedDataV4(structHash)++`] + +[.contract-subindex-inherited] +.ERC165 + +[.contract-subindex-inherited] +.IERC165 + +-- + +[.contract-index] +.Events +-- +* {xref-GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-}[`++ProposalExtended(proposalId, extendedDeadline)++`] +* {xref-GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-}[`++LateQuorumVoteExtensionSet(oldVoteExtension, newVoteExtension)++`] + +[.contract-subindex-inherited] +.Governor + +[.contract-subindex-inherited] +.IGovernor +* {xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-}[`++ProposalCreated(proposalId, proposer, targets, values, signatures, calldatas, startBlock, endBlock, description)++`] +* {xref-IGovernor-ProposalCanceled-uint256-}[`++ProposalCanceled(proposalId)++`] +* {xref-IGovernor-ProposalExecuted-uint256-}[`++ProposalExecuted(proposalId)++`] +* {xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-}[`++VoteCast(voter, proposalId, support, weight, reason)++`] + +[.contract-subindex-inherited] +.EIP712 + +[.contract-subindex-inherited] +.ERC165 + +[.contract-subindex-inherited] +.IERC165 + +[.contract-subindex-inherited] +.Context + +-- + + +[.contract-item] +[[GovernorPreventLateQuorum-constructor-uint64-]] +==== `[.contract-item-name]#++constructor++#++(uint64 initialVoteExtension)++` [.item-kind]#internal# + +Initializes the vote extension parameter: the number of blocks that are required to pass since a proposal +reaches quorum until its voting period ends. If necessary the voting period will be extended beyond the one set +at proposal creation. + +[.contract-item] +[[GovernorPreventLateQuorum-proposalDeadline-uint256-]] +==== `[.contract-item-name]#++proposalDeadline++#++(uint256 proposalId) → uint256++` [.item-kind]#public# + +Returns the proposal deadline, which may have been extended beyond that set at proposal creation, if the +proposal reached quorum late in the voting period. See {Governor-proposalDeadline}. + +[.contract-item] +[[GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-]] +==== `[.contract-item-name]#++_castVote++#++(uint256 proposalId, address account, uint8 support, string reason) → uint256++` [.item-kind]#internal# + +Casts a vote and detects if it caused quorum to be reached, potentially extending the voting period. See +{Governor-_castVote}. + +May emit a {ProposalExtended} event. + +[.contract-item] +[[GovernorPreventLateQuorum-lateQuorumVoteExtension--]] +==== `[.contract-item-name]#++lateQuorumVoteExtension++#++() → uint64++` [.item-kind]#public# + +Returns the current value of the vote extension parameter: the number of blocks that are required to pass +from the time a proposal reaches quorum until its voting period ends. + +[.contract-item] +[[GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-]] +==== `[.contract-item-name]#++setLateQuorumVoteExtension++#++(uint64 newVoteExtension)++` [.item-kind]#public# + +Changes the {lateQuorumVoteExtension}. This operation can only be performed by the governance executor, +generally through a governance proposal. + +Emits a {LateQuorumVoteExtensionSet} event. + +[.contract-item] +[[GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-]] +==== `[.contract-item-name]#++_setLateQuorumVoteExtension++#++(uint64 newVoteExtension)++` [.item-kind]#internal# + +Changes the {lateQuorumVoteExtension}. This is an internal function that can be exposed in a public function +like {setLateQuorumVoteExtension} if another access control mechanism is needed. + +Emits a {LateQuorumVoteExtensionSet} event. + + +[.contract-item] +[[GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-]] +==== `[.contract-item-name]#++ProposalExtended++#++(uint256 proposalId, uint64 extendedDeadline)++` [.item-kind]#event# + +Emitted when a proposal deadline is pushed back due to reaching quorum late in its voting period. + +[.contract-item] +[[GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-]] +==== `[.contract-item-name]#++LateQuorumVoteExtensionSet++#++(uint64 oldVoteExtension, uint64 newVoteExtension)++` [.item-kind]#event# + +Emitted when the {lateQuorumVoteExtension} parameter is changed. + + + :GovernorCompatibilityBravo: pass:normal[xref:#GovernorCompatibilityBravo[`++GovernorCompatibilityBravo++`]] :COUNTING_MODE: pass:normal[xref:#GovernorCompatibilityBravo-COUNTING_MODE--[`++COUNTING_MODE++`]] :propose: pass:normal[xref:#GovernorCompatibilityBravo-propose-address---uint256---bytes---string-[`++propose++`]] @@ -3532,7 +3895,7 @@ Emits a {ProposalThresholdSet} event. [.contract] [[GovernorCompatibilityBravo]] -=== `++GovernorCompatibilityBravo++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/governance/compatibility/GovernorCompatibilityBravo.sol[{github-icon},role=heading-link] +=== `++GovernorCompatibilityBravo++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/governance/compatibility/GovernorCompatibilityBravo.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -3586,6 +3949,7 @@ _Available since v4.3._ * {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`] * {xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-}[`++castVoteBySig(proposalId, support, v, r, s)++`] * {xref-Governor-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`] +* {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`] * {xref-Governor-_executor--}[`++_executor()++`] [.contract-subindex-inherited] @@ -3747,7 +4111,7 @@ See {Governor-_countVote}. In this module, the support follows Governor Bravo. [.contract] [[GovernorProposalThreshold]] -=== `++GovernorProposalThreshold++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/governance/extensions/GovernorProposalThreshold.sol[{github-icon},role=heading-link] +=== `++GovernorProposalThreshold++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/governance/extensions/GovernorProposalThreshold.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -3787,6 +4151,7 @@ _Deprecated since v4.4._ * {xref-Governor-castVoteWithReason-uint256-uint8-string-}[`++castVoteWithReason(proposalId, support, reason)++`] * {xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-}[`++castVoteBySig(proposalId, support, v, r, s)++`] * {xref-Governor-_castVote-uint256-address-uint8-string-}[`++_castVote(proposalId, account, support, reason)++`] +* {xref-Governor-relay-address-uint256-bytes-}[`++relay(target, value, data)++`] * {xref-Governor-_executor--}[`++_executor()++`] [.contract-subindex-inherited] @@ -3849,6 +4214,196 @@ _Deprecated since v4.4._ +== Utils + +:Votes: pass:normal[xref:#Votes[`++Votes++`]] +:getVotes: pass:normal[xref:#Votes-getVotes-address-[`++getVotes++`]] +:getPastVotes: pass:normal[xref:#Votes-getPastVotes-address-uint256-[`++getPastVotes++`]] +:getPastTotalSupply: pass:normal[xref:#Votes-getPastTotalSupply-uint256-[`++getPastTotalSupply++`]] +:_getTotalSupply: pass:normal[xref:#Votes-_getTotalSupply--[`++_getTotalSupply++`]] +:delegates: pass:normal[xref:#Votes-delegates-address-[`++delegates++`]] +:delegate: pass:normal[xref:#Votes-delegate-address-[`++delegate++`]] +:delegateBySig: pass:normal[xref:#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`++delegateBySig++`]] +:_delegate: pass:normal[xref:#Votes-_delegate-address-address-[`++_delegate++`]] +:_transferVotingUnits: pass:normal[xref:#Votes-_transferVotingUnits-address-address-uint256-[`++_transferVotingUnits++`]] +:_useNonce: pass:normal[xref:#Votes-_useNonce-address-[`++_useNonce++`]] +:nonces: pass:normal[xref:#Votes-nonces-address-[`++nonces++`]] +:DOMAIN_SEPARATOR: pass:normal[xref:#Votes-DOMAIN_SEPARATOR--[`++DOMAIN_SEPARATOR++`]] +:_getVotingUnits: pass:normal[xref:#Votes-_getVotingUnits-address-[`++_getVotingUnits++`]] + +[.contract] +[[Votes]] +=== `++Votes++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/governance/utils/Votes.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@openzeppelin/contracts/governance/utils/Votes.sol"; +``` + +This is a base abstract contract that tracks voting units, which are a measure of voting power that can be +transferred, and provides a system of vote delegation, where an account can delegate its voting units to a sort of +"representative" that will pool delegated voting units from different accounts and can then use it to vote in +decisions. In fact, voting units _must_ be delegated in order to count as actual votes, and an account has to +delegate those votes to itself if it wishes to participate in decisions and does not have a trusted representative. + +This contract is often combined with a token contract such that voting units correspond to token units. For an +example, see {ERC721Votes}. + +The full history of delegate votes is tracked on-chain so that governance protocols can consider votes as distributed +at a particular block number to protect against flash loans and double voting. The opt-in delegate system makes the +cost of this history tracking optional. + +When using this module the derived contract must implement {_getVotingUnits} (for example, make it return +{ERC721-balanceOf}), and can use {_transferVotingUnits} to track a change in the distribution of those units (in the +previous example, it would be included in {ERC721-_beforeTokenTransfer}). + +_Available since v4.5._ + + +[.contract-index] +.Functions +-- +* {xref-Votes-getVotes-address-}[`++getVotes(account)++`] +* {xref-Votes-getPastVotes-address-uint256-}[`++getPastVotes(account, blockNumber)++`] +* {xref-Votes-getPastTotalSupply-uint256-}[`++getPastTotalSupply(blockNumber)++`] +* {xref-Votes-_getTotalSupply--}[`++_getTotalSupply()++`] +* {xref-Votes-delegates-address-}[`++delegates(account)++`] +* {xref-Votes-delegate-address-}[`++delegate(delegatee)++`] +* {xref-Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-}[`++delegateBySig(delegatee, nonce, expiry, v, r, s)++`] +* {xref-Votes-_delegate-address-address-}[`++_delegate(account, delegatee)++`] +* {xref-Votes-_transferVotingUnits-address-address-uint256-}[`++_transferVotingUnits(from, to, amount)++`] +* {xref-Votes-_useNonce-address-}[`++_useNonce(owner)++`] +* {xref-Votes-nonces-address-}[`++nonces(owner)++`] +* {xref-Votes-DOMAIN_SEPARATOR--}[`++DOMAIN_SEPARATOR()++`] +* {xref-Votes-_getVotingUnits-address-}[`++_getVotingUnits(_)++`] + +[.contract-subindex-inherited] +.EIP712 +* {xref-EIP712-constructor-string-string-}[`++constructor(name, version)++`] +* {xref-EIP712-_domainSeparatorV4--}[`++_domainSeparatorV4()++`] +* {xref-EIP712-_hashTypedDataV4-bytes32-}[`++_hashTypedDataV4(structHash)++`] + +[.contract-subindex-inherited] +.IVotes + +-- + +[.contract-index] +.Events +-- + +[.contract-subindex-inherited] +.EIP712 + +[.contract-subindex-inherited] +.Context + +[.contract-subindex-inherited] +.IVotes +* {xref-IVotes-DelegateChanged-address-address-address-}[`++DelegateChanged(delegator, fromDelegate, toDelegate)++`] +* {xref-IVotes-DelegateVotesChanged-address-uint256-uint256-}[`++DelegateVotesChanged(delegate, previousBalance, newBalance)++`] + +-- + + +[.contract-item] +[[Votes-getVotes-address-]] +==== `[.contract-item-name]#++getVotes++#++(address account) → uint256++` [.item-kind]#public# + +Returns the current amount of votes that `account` has. + +[.contract-item] +[[Votes-getPastVotes-address-uint256-]] +==== `[.contract-item-name]#++getPastVotes++#++(address account, uint256 blockNumber) → uint256++` [.item-kind]#public# + +Returns the amount of votes that `account` had at the end of a past block (`blockNumber`). + +Requirements: + +- `blockNumber` must have been already mined + +[.contract-item] +[[Votes-getPastTotalSupply-uint256-]] +==== `[.contract-item-name]#++getPastTotalSupply++#++(uint256 blockNumber) → uint256++` [.item-kind]#public# + +Returns the total supply of votes available at the end of a past block (`blockNumber`). + +NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. +Votes that have not been delegated are still part of total supply, even though they would not participate in a +vote. + +Requirements: + +- `blockNumber` must have been already mined + +[.contract-item] +[[Votes-_getTotalSupply--]] +==== `[.contract-item-name]#++_getTotalSupply++#++() → uint256++` [.item-kind]#internal# + +Returns the current total supply of votes. + +[.contract-item] +[[Votes-delegates-address-]] +==== `[.contract-item-name]#++delegates++#++(address account) → address++` [.item-kind]#public# + +Returns the delegate that `account` has chosen. + +[.contract-item] +[[Votes-delegate-address-]] +==== `[.contract-item-name]#++delegate++#++(address delegatee)++` [.item-kind]#public# + +Delegates votes from the sender to `delegatee`. + +[.contract-item] +[[Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-]] +==== `[.contract-item-name]#++delegateBySig++#++(address delegatee, uint256 nonce, uint256 expiry, uint8 v, bytes32 r, bytes32 s)++` [.item-kind]#public# + +Delegates votes from signer to `delegatee`. + +[.contract-item] +[[Votes-_delegate-address-address-]] +==== `[.contract-item-name]#++_delegate++#++(address account, address delegatee)++` [.item-kind]#internal# + +Delegate all of `account`'s voting units to `delegatee`. + +Emits events {DelegateChanged} and {DelegateVotesChanged}. + +[.contract-item] +[[Votes-_transferVotingUnits-address-address-uint256-]] +==== `[.contract-item-name]#++_transferVotingUnits++#++(address from, address to, uint256 amount)++` [.item-kind]#internal# + +Transfers, mints, or burns voting units. To register a mint, `from` should be zero. To register a burn, `to` +should be zero. Total supply of voting units will be adjusted with mints and burns. + +[.contract-item] +[[Votes-_useNonce-address-]] +==== `[.contract-item-name]#++_useNonce++#++(address owner) → uint256 current++` [.item-kind]#internal# + +Consumes a nonce. + +Returns the current value and increments nonce. + +[.contract-item] +[[Votes-nonces-address-]] +==== `[.contract-item-name]#++nonces++#++(address owner) → uint256++` [.item-kind]#public# + +Returns an address nonce. + +[.contract-item] +[[Votes-DOMAIN_SEPARATOR--]] +==== `[.contract-item-name]#++DOMAIN_SEPARATOR++#++() → bytes32++` [.item-kind]#external# + +Returns the contract's {EIP712} domain separator. + +[.contract-item] +[[Votes-_getVotingUnits-address-]] +==== `[.contract-item-name]#++_getVotingUnits++#++(address) → uint256++` [.item-kind]#internal# + +Must return the voting units held by an account. + + + + == Timelock In a governance system, the {TimelockController} contract is in charge of introducing a delay between a proposal and its execution. It can be used with or without a {Governor}. @@ -3882,7 +4437,7 @@ In a governance system, the {TimelockController} contract is in charge of introd [.contract] [[TimelockController]] -=== `++TimelockController++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/governance/TimelockController.sol[{github-icon},role=heading-link] +=== `++TimelockController++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/governance/TimelockController.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity diff --git a/docs/modules/api/pages/interfaces.adoc b/docs/modules/api/pages/interfaces.adoc index 587ee2361..bac7f908b 100644 --- a/docs/modules/api/pages/interfaces.adoc +++ b/docs/modules/api/pages/interfaces.adoc @@ -192,6 +192,8 @@ :xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32- :Governor-_castVote: pass:normal[xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-[`Governor._castVote`]] :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string- +:Governor-relay: pass:normal[xref:governance.adoc#Governor-relay-address-uint256-bytes-[`Governor.relay`]] +:xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes- :Governor-_executor: pass:normal[xref:governance.adoc#Governor-_executor--[`Governor._executor`]] :xref-Governor-_executor--: xref:governance.adoc#Governor-_executor-- :Governor-ProposalCore: pass:normal[xref:governance.adoc#Governor-ProposalCore[`Governor.ProposalCore`]] @@ -368,6 +370,24 @@ :xref-GovernorCountingSimple-ProposalVote: xref:governance.adoc#GovernorCountingSimple-ProposalVote :GovernorCountingSimple-VoteType: pass:normal[xref:governance.adoc#GovernorCountingSimple-VoteType[`GovernorCountingSimple.VoteType`]] :xref-GovernorCountingSimple-VoteType: xref:governance.adoc#GovernorCountingSimple-VoteType +:GovernorPreventLateQuorum: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum[`GovernorPreventLateQuorum`]] +:xref-GovernorPreventLateQuorum: xref:governance.adoc#GovernorPreventLateQuorum +:GovernorPreventLateQuorum-constructor: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64-[`GovernorPreventLateQuorum.constructor`]] +:xref-GovernorPreventLateQuorum-constructor-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64- +:GovernorPreventLateQuorum-proposalDeadline: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256-[`GovernorPreventLateQuorum.proposalDeadline`]] +:xref-GovernorPreventLateQuorum-proposalDeadline-uint256-: xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256- +:GovernorPreventLateQuorum-_castVote: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-[`GovernorPreventLateQuorum._castVote`]] +:xref-GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-: xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string- +:GovernorPreventLateQuorum-lateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension--[`GovernorPreventLateQuorum.lateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-lateQuorumVoteExtension--: xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension-- +:GovernorPreventLateQuorum-setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum.setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-_setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum._setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-ProposalExtended: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-[`GovernorPreventLateQuorum.ProposalExtended`]] +:xref-GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64- +:GovernorPreventLateQuorum-LateQuorumVoteExtensionSet: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-[`GovernorPreventLateQuorum.LateQuorumVoteExtensionSet`]] +:xref-GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64- :GovernorProposalThreshold: pass:normal[xref:governance.adoc#GovernorProposalThreshold[`GovernorProposalThreshold`]] :xref-GovernorProposalThreshold: xref:governance.adoc#GovernorProposalThreshold :GovernorProposalThreshold-propose: pass:normal[xref:governance.adoc#GovernorProposalThreshold-propose-address---uint256---bytes---string-[`GovernorProposalThreshold.propose`]] @@ -484,10 +504,10 @@ :xref-GovernorTimelockControl-TimelockChange-address-address-: xref:governance.adoc#GovernorTimelockControl-TimelockChange-address-address- :GovernorVotes: pass:normal[xref:governance.adoc#GovernorVotes[`GovernorVotes`]] :xref-GovernorVotes: xref:governance.adoc#GovernorVotes -:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-ERC20Votes[`GovernorVotes.token`]] -:xref-GovernorVotes-token-contract-ERC20Votes: xref:governance.adoc#GovernorVotes-token-contract-ERC20Votes -:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-ERC20Votes-[`GovernorVotes.constructor`]] -:xref-GovernorVotes-constructor-contract-ERC20Votes-: xref:governance.adoc#GovernorVotes-constructor-contract-ERC20Votes- +:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-IVotes[`GovernorVotes.token`]] +:xref-GovernorVotes-token-contract-IVotes: xref:governance.adoc#GovernorVotes-token-contract-IVotes +:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-IVotes-[`GovernorVotes.constructor`]] +:xref-GovernorVotes-constructor-contract-IVotes-: xref:governance.adoc#GovernorVotes-constructor-contract-IVotes- :GovernorVotes-getVotes: pass:normal[xref:governance.adoc#GovernorVotes-getVotes-address-uint256-[`GovernorVotes.getVotes`]] :xref-GovernorVotes-getVotes-address-uint256-: xref:governance.adoc#GovernorVotes-getVotes-address-uint256- :GovernorVotesComp: pass:normal[xref:governance.adoc#GovernorVotesComp[`GovernorVotesComp`]] @@ -524,6 +544,52 @@ :xref-IGovernorTimelock-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernorTimelock-queue-address---uint256---bytes---bytes32- :IGovernorTimelock-ProposalQueued: pass:normal[xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256-[`IGovernorTimelock.ProposalQueued`]] :xref-IGovernorTimelock-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256- +:IVotes: pass:normal[xref:governance.adoc#IVotes[`IVotes`]] +:xref-IVotes: xref:governance.adoc#IVotes +:IVotes-getVotes: pass:normal[xref:governance.adoc#IVotes-getVotes-address-[`IVotes.getVotes`]] +:xref-IVotes-getVotes-address-: xref:governance.adoc#IVotes-getVotes-address- +:IVotes-getPastVotes: pass:normal[xref:governance.adoc#IVotes-getPastVotes-address-uint256-[`IVotes.getPastVotes`]] +:xref-IVotes-getPastVotes-address-uint256-: xref:governance.adoc#IVotes-getPastVotes-address-uint256- +:IVotes-getPastTotalSupply: pass:normal[xref:governance.adoc#IVotes-getPastTotalSupply-uint256-[`IVotes.getPastTotalSupply`]] +:xref-IVotes-getPastTotalSupply-uint256-: xref:governance.adoc#IVotes-getPastTotalSupply-uint256- +:IVotes-delegates: pass:normal[xref:governance.adoc#IVotes-delegates-address-[`IVotes.delegates`]] +:xref-IVotes-delegates-address-: xref:governance.adoc#IVotes-delegates-address- +:IVotes-delegate: pass:normal[xref:governance.adoc#IVotes-delegate-address-[`IVotes.delegate`]] +:xref-IVotes-delegate-address-: xref:governance.adoc#IVotes-delegate-address- +:IVotes-delegateBySig: pass:normal[xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`IVotes.delegateBySig`]] +:xref-IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:IVotes-DelegateChanged: pass:normal[xref:governance.adoc#IVotes-DelegateChanged-address-address-address-[`IVotes.DelegateChanged`]] +:xref-IVotes-DelegateChanged-address-address-address-: xref:governance.adoc#IVotes-DelegateChanged-address-address-address- +:IVotes-DelegateVotesChanged: pass:normal[xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256-[`IVotes.DelegateVotesChanged`]] +:xref-IVotes-DelegateVotesChanged-address-uint256-uint256-: xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256- +:Votes: pass:normal[xref:governance.adoc#Votes[`Votes`]] +:xref-Votes: xref:governance.adoc#Votes +:Votes-getVotes: pass:normal[xref:governance.adoc#Votes-getVotes-address-[`Votes.getVotes`]] +:xref-Votes-getVotes-address-: xref:governance.adoc#Votes-getVotes-address- +:Votes-getPastVotes: pass:normal[xref:governance.adoc#Votes-getPastVotes-address-uint256-[`Votes.getPastVotes`]] +:xref-Votes-getPastVotes-address-uint256-: xref:governance.adoc#Votes-getPastVotes-address-uint256- +:Votes-getPastTotalSupply: pass:normal[xref:governance.adoc#Votes-getPastTotalSupply-uint256-[`Votes.getPastTotalSupply`]] +:xref-Votes-getPastTotalSupply-uint256-: xref:governance.adoc#Votes-getPastTotalSupply-uint256- +:Votes-_getTotalSupply: pass:normal[xref:governance.adoc#Votes-_getTotalSupply--[`Votes._getTotalSupply`]] +:xref-Votes-_getTotalSupply--: xref:governance.adoc#Votes-_getTotalSupply-- +:Votes-delegates: pass:normal[xref:governance.adoc#Votes-delegates-address-[`Votes.delegates`]] +:xref-Votes-delegates-address-: xref:governance.adoc#Votes-delegates-address- +:Votes-delegate: pass:normal[xref:governance.adoc#Votes-delegate-address-[`Votes.delegate`]] +:xref-Votes-delegate-address-: xref:governance.adoc#Votes-delegate-address- +:Votes-delegateBySig: pass:normal[xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`Votes.delegateBySig`]] +:xref-Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:Votes-_delegate: pass:normal[xref:governance.adoc#Votes-_delegate-address-address-[`Votes._delegate`]] +:xref-Votes-_delegate-address-address-: xref:governance.adoc#Votes-_delegate-address-address- +:Votes-_transferVotingUnits: pass:normal[xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256-[`Votes._transferVotingUnits`]] +:xref-Votes-_transferVotingUnits-address-address-uint256-: xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256- +:Votes-_useNonce: pass:normal[xref:governance.adoc#Votes-_useNonce-address-[`Votes._useNonce`]] +:xref-Votes-_useNonce-address-: xref:governance.adoc#Votes-_useNonce-address- +:Votes-nonces: pass:normal[xref:governance.adoc#Votes-nonces-address-[`Votes.nonces`]] +:xref-Votes-nonces-address-: xref:governance.adoc#Votes-nonces-address- +:Votes-DOMAIN_SEPARATOR: pass:normal[xref:governance.adoc#Votes-DOMAIN_SEPARATOR--[`Votes.DOMAIN_SEPARATOR`]] +:xref-Votes-DOMAIN_SEPARATOR--: xref:governance.adoc#Votes-DOMAIN_SEPARATOR-- +:Votes-_getVotingUnits: pass:normal[xref:governance.adoc#Votes-_getVotingUnits-address-[`Votes._getVotingUnits`]] +:xref-Votes-_getVotingUnits-address-: xref:governance.adoc#Votes-_getVotingUnits-address- :IERC1271: pass:normal[xref:interfaces.adoc#IERC1271[`IERC1271`]] :xref-IERC1271: xref:interfaces.adoc#IERC1271 :IERC1271-isValidSignature: pass:normal[xref:interfaces.adoc#IERC1271-isValidSignature-bytes32-bytes-[`IERC1271.isValidSignature`]] @@ -566,6 +632,10 @@ :xref-IERC3156FlashLender-flashFee-address-uint256-: xref:interfaces.adoc#IERC3156FlashLender-flashFee-address-uint256- :IERC3156FlashLender-flashLoan: pass:normal[xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-[`IERC3156FlashLender.flashLoan`]] :xref-IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-: xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes- +:IERC1822Proxiable: pass:normal[xref:interfaces.adoc#IERC1822Proxiable[`IERC1822Proxiable`]] +:xref-IERC1822Proxiable: xref:interfaces.adoc#IERC1822Proxiable +:IERC1822Proxiable-proxiableUUID: pass:normal[xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID--[`IERC1822Proxiable.proxiableUUID`]] +:xref-IERC1822Proxiable-proxiableUUID--: xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID-- :IERC2612: pass:normal[xref:interfaces.adoc#IERC2612[`IERC2612`]] :xref-IERC2612: xref:interfaces.adoc#IERC2612 :ERC2771Context: pass:normal[xref:metatx.adoc#ERC2771Context[`ERC2771Context`]] @@ -618,8 +688,8 @@ :xref-ERC1967Upgrade-_upgradeTo-address-: xref:proxy.adoc#ERC1967Upgrade-_upgradeTo-address- :ERC1967Upgrade-_upgradeToAndCall: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCall`]] :xref-ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool- -:ERC1967Upgrade-_upgradeToAndCallSecure: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallSecure`]] -:xref-ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool- +:ERC1967Upgrade-_upgradeToAndCallUUPS: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallUUPS`]] +:xref-ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool- :ERC1967Upgrade-_getAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_getAdmin--[`ERC1967Upgrade._getAdmin`]] :xref-ERC1967Upgrade-_getAdmin--: xref:proxy.adoc#ERC1967Upgrade-_getAdmin-- :ERC1967Upgrade-_changeAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_changeAdmin-address-[`ERC1967Upgrade._changeAdmin`]] @@ -714,6 +784,10 @@ :xref-UUPSUpgradeable: xref:proxy.adoc#UUPSUpgradeable :UUPSUpgradeable-onlyProxy: pass:normal[xref:proxy.adoc#UUPSUpgradeable-onlyProxy--[`UUPSUpgradeable.onlyProxy`]] :xref-UUPSUpgradeable-onlyProxy--: xref:proxy.adoc#UUPSUpgradeable-onlyProxy-- +:UUPSUpgradeable-notDelegated: pass:normal[xref:proxy.adoc#UUPSUpgradeable-notDelegated--[`UUPSUpgradeable.notDelegated`]] +:xref-UUPSUpgradeable-notDelegated--: xref:proxy.adoc#UUPSUpgradeable-notDelegated-- +:UUPSUpgradeable-proxiableUUID: pass:normal[xref:proxy.adoc#UUPSUpgradeable-proxiableUUID--[`UUPSUpgradeable.proxiableUUID`]] +:xref-UUPSUpgradeable-proxiableUUID--: xref:proxy.adoc#UUPSUpgradeable-proxiableUUID-- :UUPSUpgradeable-upgradeTo: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address-[`UUPSUpgradeable.upgradeTo`]] :xref-UUPSUpgradeable-upgradeTo-address-: xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address- :UUPSUpgradeable-upgradeToAndCall: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeToAndCall-address-bytes-[`UUPSUpgradeable.upgradeToAndCall`]] @@ -782,6 +856,26 @@ :xref-Arrays: xref:utils.adoc#Arrays :Arrays-findUpperBound: pass:normal[xref:utils.adoc#Arrays-findUpperBound-uint256---uint256-[`Arrays.findUpperBound`]] :xref-Arrays-findUpperBound-uint256---uint256-: xref:utils.adoc#Arrays-findUpperBound-uint256---uint256- +:Base64: pass:normal[xref:utils.adoc#Base64[`Base64`]] +:xref-Base64: xref:utils.adoc#Base64 +:Base64-_TABLE: pass:normal[xref:utils.adoc#Base64-_TABLE-string[`Base64._TABLE`]] +:xref-Base64-_TABLE-string: xref:utils.adoc#Base64-_TABLE-string +:Base64-encode: pass:normal[xref:utils.adoc#Base64-encode-bytes-[`Base64.encode`]] +:xref-Base64-encode-bytes-: xref:utils.adoc#Base64-encode-bytes- +:Checkpoints: pass:normal[xref:utils.adoc#Checkpoints[`Checkpoints`]] +:xref-Checkpoints: xref:utils.adoc#Checkpoints +:Checkpoints-latest: pass:normal[xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History-[`Checkpoints.latest`]] +:xref-Checkpoints-latest-struct-Checkpoints-History-: xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History- +:Checkpoints-getAtBlock: pass:normal[xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-[`Checkpoints.getAtBlock`]] +:xref-Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256- +:Checkpoints-Checkpoint: pass:normal[xref:utils.adoc#Checkpoints-Checkpoint[`Checkpoints.Checkpoint`]] +:xref-Checkpoints-Checkpoint: xref:utils.adoc#Checkpoints-Checkpoint +:Checkpoints-History: pass:normal[xref:utils.adoc#Checkpoints-History[`Checkpoints.History`]] +:xref-Checkpoints-History: xref:utils.adoc#Checkpoints-History :Context: pass:normal[xref:utils.adoc#Context[`Context`]] :xref-Context: xref:utils.adoc#Context :Context-_msgSender: pass:normal[xref:utils.adoc#Context-_msgSender--[`Context._msgSender`]] @@ -1078,6 +1172,16 @@ :xref-SafeMath-div-uint256-uint256-string-: xref:utils.adoc#SafeMath-div-uint256-uint256-string- :SafeMath-mod: pass:normal[xref:utils.adoc#SafeMath-mod-uint256-uint256-string-[`SafeMath.mod`]] :xref-SafeMath-mod-uint256-uint256-string-: xref:utils.adoc#SafeMath-mod-uint256-uint256-string- +:SignedMath: pass:normal[xref:utils.adoc#SignedMath[`SignedMath`]] +:xref-SignedMath: xref:utils.adoc#SignedMath +:SignedMath-max: pass:normal[xref:utils.adoc#SignedMath-max-int256-int256-[`SignedMath.max`]] +:xref-SignedMath-max-int256-int256-: xref:utils.adoc#SignedMath-max-int256-int256- +:SignedMath-min: pass:normal[xref:utils.adoc#SignedMath-min-int256-int256-[`SignedMath.min`]] +:xref-SignedMath-min-int256-int256-: xref:utils.adoc#SignedMath-min-int256-int256- +:SignedMath-average: pass:normal[xref:utils.adoc#SignedMath-average-int256-int256-[`SignedMath.average`]] +:xref-SignedMath-average-int256-int256-: xref:utils.adoc#SignedMath-average-int256-int256- +:SignedMath-abs: pass:normal[xref:utils.adoc#SignedMath-abs-int256-[`SignedMath.abs`]] +:xref-SignedMath-abs-int256-: xref:utils.adoc#SignedMath-abs-int256- :SignedSafeMath: pass:normal[xref:utils.adoc#SignedSafeMath[`SignedSafeMath`]] :xref-SignedSafeMath: xref:utils.adoc#SignedSafeMath :SignedSafeMath-mul: pass:normal[xref:utils.adoc#SignedSafeMath-mul-int256-int256-[`SignedSafeMath.mul`]] @@ -1256,26 +1360,6 @@ :xref-IERC1155MetadataURI: xref:token/ERC1155.adoc#IERC1155MetadataURI :IERC1155MetadataURI-uri: pass:normal[xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256-[`IERC1155MetadataURI.uri`]] :xref-IERC1155MetadataURI-uri-uint256-: xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256- -:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] -:xref-ERC1155PresetMinterPauser: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser -:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] -:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 -:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] -:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 -:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] -:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-constructor-string- -:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] -:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- -:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] -:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- -:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] -:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-pause-- -:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] -:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-unpause-- -:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] -:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-supportsInterface-bytes4- -:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] -:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- :ERC1155Holder: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder[`ERC1155Holder`]] :xref-ERC1155Holder: xref:token/ERC1155.adoc#ERC1155Holder :ERC1155Holder-onERC1155Received: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-[`ERC1155Holder.onERC1155Received`]] @@ -1320,6 +1404,8 @@ :xref-ERC20-_burn-address-uint256-: xref:token/ERC20.adoc#ERC20-_burn-address-uint256- :ERC20-_approve: pass:normal[xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256-[`ERC20._approve`]] :xref-ERC20-_approve-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256- +:ERC20-_spendAllowance: pass:normal[xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256-[`ERC20._spendAllowance`]] +:xref-ERC20-_spendAllowance-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256- :ERC20-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256-[`ERC20._beforeTokenTransfer`]] :xref-ERC20-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256- :ERC20-_afterTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_afterTokenTransfer-address-address-uint256-[`ERC20._afterTokenTransfer`]] @@ -1412,10 +1498,6 @@ :xref-ERC20Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-_afterTokenTransfer-address-address-uint256- :ERC20Votes-_delegate: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address-[`ERC20Votes._delegate`]] :xref-ERC20Votes-_delegate-address-address-: xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address- -:ERC20Votes-DelegateChanged: pass:normal[xref:token/ERC20.adoc#ERC20Votes-DelegateChanged-address-address-address-[`ERC20Votes.DelegateChanged`]] -:xref-ERC20Votes-DelegateChanged-address-address-address-: xref:token/ERC20.adoc#ERC20Votes-DelegateChanged-address-address-address- -:ERC20Votes-DelegateVotesChanged: pass:normal[xref:token/ERC20.adoc#ERC20Votes-DelegateVotesChanged-address-uint256-uint256-[`ERC20Votes.DelegateVotesChanged`]] -:xref-ERC20Votes-DelegateVotesChanged-address-uint256-uint256-: xref:token/ERC20.adoc#ERC20Votes-DelegateVotesChanged-address-uint256-uint256- :ERC20Votes-Checkpoint: pass:normal[xref:token/ERC20.adoc#ERC20Votes-Checkpoint[`ERC20Votes.Checkpoint`]] :xref-ERC20Votes-Checkpoint: xref:token/ERC20.adoc#ERC20Votes-Checkpoint :ERC20VotesComp: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp[`ERC20VotesComp`]] @@ -1466,26 +1548,6 @@ :xref-IERC20Permit-nonces-address-: xref:token/ERC20.adoc#IERC20Permit-nonces-address- :IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]] :xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR-- -:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20.adoc#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] -:xref-ERC20PresetFixedSupply: xref:token/ERC20.adoc#ERC20PresetFixedSupply -:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20.adoc#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] -:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20.adoc#ERC20PresetFixedSupply-constructor-string-string-uint256-address- -:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] -:xref-ERC20PresetMinterPauser: xref:token/ERC20.adoc#ERC20PresetMinterPauser -:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] -:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20.adoc#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 -:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] -:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20.adoc#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 -:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] -:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-constructor-string-string- -:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] -:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-mint-address-uint256- -:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] -:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20.adoc#ERC20PresetMinterPauser-pause-- -:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] -:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20.adoc#ERC20PresetMinterPauser-unpause-- -:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] -:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- :SafeERC20: pass:normal[xref:token/ERC20.adoc#SafeERC20[`SafeERC20`]] :xref-SafeERC20: xref:token/ERC20.adoc#SafeERC20 :SafeERC20-safeTransfer: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeTransfer-contract-IERC20-address-uint256-[`SafeERC20.safeTransfer`]] @@ -1564,6 +1626,8 @@ :xref-ERC721-_setApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool- :ERC721-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256-[`ERC721._beforeTokenTransfer`]] :xref-ERC721-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256- +:ERC721-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256-[`ERC721._afterTokenTransfer`]] +:xref-ERC721-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256- :IERC721: pass:normal[xref:token/ERC721.adoc#IERC721[`IERC721`]] :xref-IERC721: xref:token/ERC721.adoc#IERC721 :IERC721-balanceOf: pass:normal[xref:token/ERC721.adoc#IERC721-balanceOf-address-[`IERC721.balanceOf`]] @@ -1614,6 +1678,12 @@ :xref-ERC721Pausable: xref:token/ERC721.adoc#ERC721Pausable :ERC721Pausable-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256-[`ERC721Pausable._beforeTokenTransfer`]] :xref-ERC721Pausable-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256- +:ERC721Royalty: pass:normal[xref:token/ERC721.adoc#ERC721Royalty[`ERC721Royalty`]] +:xref-ERC721Royalty: xref:token/ERC721.adoc#ERC721Royalty +:ERC721Royalty-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4-[`ERC721Royalty.supportsInterface`]] +:xref-ERC721Royalty-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4- +:ERC721Royalty-_burn: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256-[`ERC721Royalty._burn`]] +:xref-ERC721Royalty-_burn-uint256-: xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256- :ERC721URIStorage: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage[`ERC721URIStorage`]] :xref-ERC721URIStorage: xref:token/ERC721.adoc#ERC721URIStorage :ERC721URIStorage-tokenURI: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage-tokenURI-uint256-[`ERC721URIStorage.tokenURI`]] @@ -1638,26 +1708,12 @@ :xref-IERC721Metadata-symbol--: xref:token/ERC721.adoc#IERC721Metadata-symbol-- :IERC721Metadata-tokenURI: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256-[`IERC721Metadata.tokenURI`]] :xref-IERC721Metadata-tokenURI-uint256-: xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256- -:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] -:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId -:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] -:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 -:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] -:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 -:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] -:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-constructor-string-string-string- -:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] -:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_baseURI-- -:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] -:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-mint-address- -:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] -:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-pause-- -:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] -:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-unpause-- -:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] -:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- -:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] -:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- +:ERC721Votes: pass:normal[xref:token/ERC721.adoc#ERC721Votes[`ERC721Votes`]] +:xref-ERC721Votes: xref:token/ERC721.adoc#ERC721Votes +:ERC721Votes-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256-[`ERC721Votes._afterTokenTransfer`]] +:xref-ERC721Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256- +:ERC721Votes-_getVotingUnits: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address-[`ERC721Votes._getVotingUnits`]] +:xref-ERC721Votes-_getVotingUnits-address-: xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address- :ERC721Holder: pass:normal[xref:token/ERC721.adoc#ERC721Holder[`ERC721Holder`]] :xref-ERC721Holder: xref:token/ERC721.adoc#ERC721Holder :ERC721Holder-onERC721Received: pass:normal[xref:token/ERC721.adoc#ERC721Holder-onERC721Received-address-address-uint256-bytes-[`ERC721Holder.onERC721Received`]] @@ -1714,6 +1770,8 @@ :xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes- :ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]] :xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256- +:ERC777-_spendAllowance: pass:normal[xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256-[`ERC777._spendAllowance`]] +:xref-ERC777-_spendAllowance-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256- :ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]] :xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256- :IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]] @@ -1766,6 +1824,84 @@ :xref-ERC777PresetFixedSupply: xref:token/ERC777.adoc#ERC777PresetFixedSupply :ERC777PresetFixedSupply-constructor: pass:normal[xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-[`ERC777PresetFixedSupply.constructor`]] :xref-ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-: xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address- +:ERC2981: pass:normal[xref:token/common.adoc#ERC2981[`ERC2981`]] +:xref-ERC2981: xref:token/common.adoc#ERC2981 +:ERC2981-supportsInterface: pass:normal[xref:token/common.adoc#ERC2981-supportsInterface-bytes4-[`ERC2981.supportsInterface`]] +:xref-ERC2981-supportsInterface-bytes4-: xref:token/common.adoc#ERC2981-supportsInterface-bytes4- +:ERC2981-royaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256-[`ERC2981.royaltyInfo`]] +:xref-ERC2981-royaltyInfo-uint256-uint256-: xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256- +:ERC2981-_feeDenominator: pass:normal[xref:token/common.adoc#ERC2981-_feeDenominator--[`ERC2981._feeDenominator`]] +:xref-ERC2981-_feeDenominator--: xref:token/common.adoc#ERC2981-_feeDenominator-- +:ERC2981-_setDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96-[`ERC2981._setDefaultRoyalty`]] +:xref-ERC2981-_setDefaultRoyalty-address-uint96-: xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96- +:ERC2981-_deleteDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty--[`ERC2981._deleteDefaultRoyalty`]] +:xref-ERC2981-_deleteDefaultRoyalty--: xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty-- +:ERC2981-_setTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96-[`ERC2981._setTokenRoyalty`]] +:xref-ERC2981-_setTokenRoyalty-uint256-address-uint96-: xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96- +:ERC2981-_resetTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256-[`ERC2981._resetTokenRoyalty`]] +:xref-ERC2981-_resetTokenRoyalty-uint256-: xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256- +:ERC2981-RoyaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-RoyaltyInfo[`ERC2981.RoyaltyInfo`]] +:xref-ERC2981-RoyaltyInfo: xref:token/common.adoc#ERC2981-RoyaltyInfo +:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] +:xref-ERC1155PresetMinterPauser: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser +:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] +:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string- +:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] +:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- +:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] +:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- +:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] +:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause-- +:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] +:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause-- +:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] +:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4- +:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] +:xref-ERC20PresetFixedSupply: xref:token/ERC20/presets.md#ERC20PresetFixedSupply +:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] +:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address- +:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] +:xref-ERC20PresetMinterPauser: xref:token/ERC20/presets.md#ERC20PresetMinterPauser +:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] +:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string- +:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] +:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256- +:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] +:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause-- +:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] +:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause-- +:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] +:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId +:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] +:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string- +:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] +:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI-- +:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] +:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address- +:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] +:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause-- +:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] +:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause-- +:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] +:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] +:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- = Interfaces [.readme-notice] @@ -1773,7 +1909,7 @@ NOTE: This document is better viewed at https://docs.openzeppelin.com/contracts/ == List of standardized interfaces These interfaces are available as `.sol` files, and also as compiler `.json` ABI files (through the npm package). These -are usefull to interract with third party contracts that implement them. +are useful to interact with third party contracts that implement them. - {IERC20} - {IERC20Metadata} @@ -1804,7 +1940,7 @@ are usefull to interract with third party contracts that implement them. [.contract] [[IERC1271]] -=== `++IERC1271++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/interfaces/IERC1271.sol[{github-icon},role=heading-link] +=== `++IERC1271++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/interfaces/IERC1271.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -1846,7 +1982,7 @@ Should return whether the signature provided is valid for the provided data [.contract] [[IERC1363]] -=== `++IERC1363++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/interfaces/IERC1363.sol[{github-icon},role=heading-link] +=== `++IERC1363++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/interfaces/IERC1363.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -1870,10 +2006,10 @@ import "@openzeppelin/contracts/interfaces/IERC1363.sol"; .IERC20 * {xref-IERC20-totalSupply--}[`++totalSupply()++`] * {xref-IERC20-balanceOf-address-}[`++balanceOf(account)++`] -* {xref-IERC20-transfer-address-uint256-}[`++transfer(recipient, amount)++`] +* {xref-IERC20-transfer-address-uint256-}[`++transfer(to, amount)++`] * {xref-IERC20-allowance-address-address-}[`++allowance(owner, spender)++`] * {xref-IERC20-approve-address-uint256-}[`++approve(spender, amount)++`] -* {xref-IERC20-transferFrom-address-address-uint256-}[`++transferFrom(sender, recipient, amount)++`] +* {xref-IERC20-transferFrom-address-address-uint256-}[`++transferFrom(from, to, amount)++`] [.contract-subindex-inherited] .IERC165 @@ -1948,7 +2084,7 @@ and then call `onApprovalReceived` on spender. [.contract] [[IERC1363Receiver]] -=== `++IERC1363Receiver++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/interfaces/IERC1363Receiver.sol[{github-icon},role=heading-link] +=== `++IERC1363Receiver++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/interfaces/IERC1363Receiver.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -1989,7 +2125,7 @@ Note: the token contract address is always the message sender. [.contract] [[IERC2612]] -=== `++IERC2612++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/interfaces/draft-IERC2612.sol[{github-icon},role=heading-link] +=== `++IERC2612++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/interfaces/draft-IERC2612.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2021,14 +2157,19 @@ import "@openzeppelin/contracts/interfaces/draft-IERC2612.sol"; [.contract] [[IERC2981]] -=== `++IERC2981++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/interfaces/IERC2981.sol[{github-icon},role=heading-link] +=== `++IERC2981++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/interfaces/IERC2981.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity import "@openzeppelin/contracts/interfaces/IERC2981.sol"; ``` -Interface for the NFT Royalty Standard +Interface for the NFT Royalty Standard. + +A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal +support for royalty payments across all NFT marketplaces and ecosystem participants. + +_Available since v4.5._ [.contract-index] @@ -2048,8 +2189,8 @@ Interface for the NFT Royalty Standard [[IERC2981-royaltyInfo-uint256-uint256-]] ==== `[.contract-item-name]#++royaltyInfo++#++(uint256 tokenId, uint256 salePrice) → address receiver, uint256 royaltyAmount++` [.item-kind]#external# -Called with the sale price to determine how much royalty is owed and to whom. - +Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of +exchange. The royalty amount is denominated and should be payed in that same unit of exchange. @@ -2061,7 +2202,7 @@ Called with the sale price to determine how much royalty is owed and to whom. [.contract] [[IERC3156FlashLender]] -=== `++IERC3156FlashLender++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/interfaces/IERC3156FlashLender.sol[{github-icon},role=heading-link] +=== `++IERC3156FlashLender++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/interfaces/IERC3156FlashLender.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2114,7 +2255,7 @@ Initiate a flash loan. [.contract] [[IERC3156FlashBorrower]] -=== `++IERC3156FlashBorrower++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/interfaces/IERC3156FlashBorrower.sol[{github-icon},role=heading-link] +=== `++IERC3156FlashBorrower++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/interfaces/IERC3156FlashBorrower.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity diff --git a/docs/modules/api/pages/metatx.adoc b/docs/modules/api/pages/metatx.adoc index 2fca039d0..9c67e859d 100644 --- a/docs/modules/api/pages/metatx.adoc +++ b/docs/modules/api/pages/metatx.adoc @@ -192,6 +192,8 @@ :xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32- :Governor-_castVote: pass:normal[xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-[`Governor._castVote`]] :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string- +:Governor-relay: pass:normal[xref:governance.adoc#Governor-relay-address-uint256-bytes-[`Governor.relay`]] +:xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes- :Governor-_executor: pass:normal[xref:governance.adoc#Governor-_executor--[`Governor._executor`]] :xref-Governor-_executor--: xref:governance.adoc#Governor-_executor-- :Governor-ProposalCore: pass:normal[xref:governance.adoc#Governor-ProposalCore[`Governor.ProposalCore`]] @@ -368,6 +370,24 @@ :xref-GovernorCountingSimple-ProposalVote: xref:governance.adoc#GovernorCountingSimple-ProposalVote :GovernorCountingSimple-VoteType: pass:normal[xref:governance.adoc#GovernorCountingSimple-VoteType[`GovernorCountingSimple.VoteType`]] :xref-GovernorCountingSimple-VoteType: xref:governance.adoc#GovernorCountingSimple-VoteType +:GovernorPreventLateQuorum: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum[`GovernorPreventLateQuorum`]] +:xref-GovernorPreventLateQuorum: xref:governance.adoc#GovernorPreventLateQuorum +:GovernorPreventLateQuorum-constructor: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64-[`GovernorPreventLateQuorum.constructor`]] +:xref-GovernorPreventLateQuorum-constructor-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64- +:GovernorPreventLateQuorum-proposalDeadline: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256-[`GovernorPreventLateQuorum.proposalDeadline`]] +:xref-GovernorPreventLateQuorum-proposalDeadline-uint256-: xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256- +:GovernorPreventLateQuorum-_castVote: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-[`GovernorPreventLateQuorum._castVote`]] +:xref-GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-: xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string- +:GovernorPreventLateQuorum-lateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension--[`GovernorPreventLateQuorum.lateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-lateQuorumVoteExtension--: xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension-- +:GovernorPreventLateQuorum-setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum.setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-_setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum._setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-ProposalExtended: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-[`GovernorPreventLateQuorum.ProposalExtended`]] +:xref-GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64- +:GovernorPreventLateQuorum-LateQuorumVoteExtensionSet: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-[`GovernorPreventLateQuorum.LateQuorumVoteExtensionSet`]] +:xref-GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64- :GovernorProposalThreshold: pass:normal[xref:governance.adoc#GovernorProposalThreshold[`GovernorProposalThreshold`]] :xref-GovernorProposalThreshold: xref:governance.adoc#GovernorProposalThreshold :GovernorProposalThreshold-propose: pass:normal[xref:governance.adoc#GovernorProposalThreshold-propose-address---uint256---bytes---string-[`GovernorProposalThreshold.propose`]] @@ -484,10 +504,10 @@ :xref-GovernorTimelockControl-TimelockChange-address-address-: xref:governance.adoc#GovernorTimelockControl-TimelockChange-address-address- :GovernorVotes: pass:normal[xref:governance.adoc#GovernorVotes[`GovernorVotes`]] :xref-GovernorVotes: xref:governance.adoc#GovernorVotes -:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-ERC20Votes[`GovernorVotes.token`]] -:xref-GovernorVotes-token-contract-ERC20Votes: xref:governance.adoc#GovernorVotes-token-contract-ERC20Votes -:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-ERC20Votes-[`GovernorVotes.constructor`]] -:xref-GovernorVotes-constructor-contract-ERC20Votes-: xref:governance.adoc#GovernorVotes-constructor-contract-ERC20Votes- +:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-IVotes[`GovernorVotes.token`]] +:xref-GovernorVotes-token-contract-IVotes: xref:governance.adoc#GovernorVotes-token-contract-IVotes +:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-IVotes-[`GovernorVotes.constructor`]] +:xref-GovernorVotes-constructor-contract-IVotes-: xref:governance.adoc#GovernorVotes-constructor-contract-IVotes- :GovernorVotes-getVotes: pass:normal[xref:governance.adoc#GovernorVotes-getVotes-address-uint256-[`GovernorVotes.getVotes`]] :xref-GovernorVotes-getVotes-address-uint256-: xref:governance.adoc#GovernorVotes-getVotes-address-uint256- :GovernorVotesComp: pass:normal[xref:governance.adoc#GovernorVotesComp[`GovernorVotesComp`]] @@ -524,6 +544,52 @@ :xref-IGovernorTimelock-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernorTimelock-queue-address---uint256---bytes---bytes32- :IGovernorTimelock-ProposalQueued: pass:normal[xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256-[`IGovernorTimelock.ProposalQueued`]] :xref-IGovernorTimelock-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256- +:IVotes: pass:normal[xref:governance.adoc#IVotes[`IVotes`]] +:xref-IVotes: xref:governance.adoc#IVotes +:IVotes-getVotes: pass:normal[xref:governance.adoc#IVotes-getVotes-address-[`IVotes.getVotes`]] +:xref-IVotes-getVotes-address-: xref:governance.adoc#IVotes-getVotes-address- +:IVotes-getPastVotes: pass:normal[xref:governance.adoc#IVotes-getPastVotes-address-uint256-[`IVotes.getPastVotes`]] +:xref-IVotes-getPastVotes-address-uint256-: xref:governance.adoc#IVotes-getPastVotes-address-uint256- +:IVotes-getPastTotalSupply: pass:normal[xref:governance.adoc#IVotes-getPastTotalSupply-uint256-[`IVotes.getPastTotalSupply`]] +:xref-IVotes-getPastTotalSupply-uint256-: xref:governance.adoc#IVotes-getPastTotalSupply-uint256- +:IVotes-delegates: pass:normal[xref:governance.adoc#IVotes-delegates-address-[`IVotes.delegates`]] +:xref-IVotes-delegates-address-: xref:governance.adoc#IVotes-delegates-address- +:IVotes-delegate: pass:normal[xref:governance.adoc#IVotes-delegate-address-[`IVotes.delegate`]] +:xref-IVotes-delegate-address-: xref:governance.adoc#IVotes-delegate-address- +:IVotes-delegateBySig: pass:normal[xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`IVotes.delegateBySig`]] +:xref-IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:IVotes-DelegateChanged: pass:normal[xref:governance.adoc#IVotes-DelegateChanged-address-address-address-[`IVotes.DelegateChanged`]] +:xref-IVotes-DelegateChanged-address-address-address-: xref:governance.adoc#IVotes-DelegateChanged-address-address-address- +:IVotes-DelegateVotesChanged: pass:normal[xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256-[`IVotes.DelegateVotesChanged`]] +:xref-IVotes-DelegateVotesChanged-address-uint256-uint256-: xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256- +:Votes: pass:normal[xref:governance.adoc#Votes[`Votes`]] +:xref-Votes: xref:governance.adoc#Votes +:Votes-getVotes: pass:normal[xref:governance.adoc#Votes-getVotes-address-[`Votes.getVotes`]] +:xref-Votes-getVotes-address-: xref:governance.adoc#Votes-getVotes-address- +:Votes-getPastVotes: pass:normal[xref:governance.adoc#Votes-getPastVotes-address-uint256-[`Votes.getPastVotes`]] +:xref-Votes-getPastVotes-address-uint256-: xref:governance.adoc#Votes-getPastVotes-address-uint256- +:Votes-getPastTotalSupply: pass:normal[xref:governance.adoc#Votes-getPastTotalSupply-uint256-[`Votes.getPastTotalSupply`]] +:xref-Votes-getPastTotalSupply-uint256-: xref:governance.adoc#Votes-getPastTotalSupply-uint256- +:Votes-_getTotalSupply: pass:normal[xref:governance.adoc#Votes-_getTotalSupply--[`Votes._getTotalSupply`]] +:xref-Votes-_getTotalSupply--: xref:governance.adoc#Votes-_getTotalSupply-- +:Votes-delegates: pass:normal[xref:governance.adoc#Votes-delegates-address-[`Votes.delegates`]] +:xref-Votes-delegates-address-: xref:governance.adoc#Votes-delegates-address- +:Votes-delegate: pass:normal[xref:governance.adoc#Votes-delegate-address-[`Votes.delegate`]] +:xref-Votes-delegate-address-: xref:governance.adoc#Votes-delegate-address- +:Votes-delegateBySig: pass:normal[xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`Votes.delegateBySig`]] +:xref-Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:Votes-_delegate: pass:normal[xref:governance.adoc#Votes-_delegate-address-address-[`Votes._delegate`]] +:xref-Votes-_delegate-address-address-: xref:governance.adoc#Votes-_delegate-address-address- +:Votes-_transferVotingUnits: pass:normal[xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256-[`Votes._transferVotingUnits`]] +:xref-Votes-_transferVotingUnits-address-address-uint256-: xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256- +:Votes-_useNonce: pass:normal[xref:governance.adoc#Votes-_useNonce-address-[`Votes._useNonce`]] +:xref-Votes-_useNonce-address-: xref:governance.adoc#Votes-_useNonce-address- +:Votes-nonces: pass:normal[xref:governance.adoc#Votes-nonces-address-[`Votes.nonces`]] +:xref-Votes-nonces-address-: xref:governance.adoc#Votes-nonces-address- +:Votes-DOMAIN_SEPARATOR: pass:normal[xref:governance.adoc#Votes-DOMAIN_SEPARATOR--[`Votes.DOMAIN_SEPARATOR`]] +:xref-Votes-DOMAIN_SEPARATOR--: xref:governance.adoc#Votes-DOMAIN_SEPARATOR-- +:Votes-_getVotingUnits: pass:normal[xref:governance.adoc#Votes-_getVotingUnits-address-[`Votes._getVotingUnits`]] +:xref-Votes-_getVotingUnits-address-: xref:governance.adoc#Votes-_getVotingUnits-address- :IERC1271: pass:normal[xref:interfaces.adoc#IERC1271[`IERC1271`]] :xref-IERC1271: xref:interfaces.adoc#IERC1271 :IERC1271-isValidSignature: pass:normal[xref:interfaces.adoc#IERC1271-isValidSignature-bytes32-bytes-[`IERC1271.isValidSignature`]] @@ -566,6 +632,10 @@ :xref-IERC3156FlashLender-flashFee-address-uint256-: xref:interfaces.adoc#IERC3156FlashLender-flashFee-address-uint256- :IERC3156FlashLender-flashLoan: pass:normal[xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-[`IERC3156FlashLender.flashLoan`]] :xref-IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-: xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes- +:IERC1822Proxiable: pass:normal[xref:interfaces.adoc#IERC1822Proxiable[`IERC1822Proxiable`]] +:xref-IERC1822Proxiable: xref:interfaces.adoc#IERC1822Proxiable +:IERC1822Proxiable-proxiableUUID: pass:normal[xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID--[`IERC1822Proxiable.proxiableUUID`]] +:xref-IERC1822Proxiable-proxiableUUID--: xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID-- :IERC2612: pass:normal[xref:interfaces.adoc#IERC2612[`IERC2612`]] :xref-IERC2612: xref:interfaces.adoc#IERC2612 :ERC2771Context: pass:normal[xref:metatx.adoc#ERC2771Context[`ERC2771Context`]] @@ -618,8 +688,8 @@ :xref-ERC1967Upgrade-_upgradeTo-address-: xref:proxy.adoc#ERC1967Upgrade-_upgradeTo-address- :ERC1967Upgrade-_upgradeToAndCall: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCall`]] :xref-ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool- -:ERC1967Upgrade-_upgradeToAndCallSecure: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallSecure`]] -:xref-ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool- +:ERC1967Upgrade-_upgradeToAndCallUUPS: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallUUPS`]] +:xref-ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool- :ERC1967Upgrade-_getAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_getAdmin--[`ERC1967Upgrade._getAdmin`]] :xref-ERC1967Upgrade-_getAdmin--: xref:proxy.adoc#ERC1967Upgrade-_getAdmin-- :ERC1967Upgrade-_changeAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_changeAdmin-address-[`ERC1967Upgrade._changeAdmin`]] @@ -714,6 +784,10 @@ :xref-UUPSUpgradeable: xref:proxy.adoc#UUPSUpgradeable :UUPSUpgradeable-onlyProxy: pass:normal[xref:proxy.adoc#UUPSUpgradeable-onlyProxy--[`UUPSUpgradeable.onlyProxy`]] :xref-UUPSUpgradeable-onlyProxy--: xref:proxy.adoc#UUPSUpgradeable-onlyProxy-- +:UUPSUpgradeable-notDelegated: pass:normal[xref:proxy.adoc#UUPSUpgradeable-notDelegated--[`UUPSUpgradeable.notDelegated`]] +:xref-UUPSUpgradeable-notDelegated--: xref:proxy.adoc#UUPSUpgradeable-notDelegated-- +:UUPSUpgradeable-proxiableUUID: pass:normal[xref:proxy.adoc#UUPSUpgradeable-proxiableUUID--[`UUPSUpgradeable.proxiableUUID`]] +:xref-UUPSUpgradeable-proxiableUUID--: xref:proxy.adoc#UUPSUpgradeable-proxiableUUID-- :UUPSUpgradeable-upgradeTo: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address-[`UUPSUpgradeable.upgradeTo`]] :xref-UUPSUpgradeable-upgradeTo-address-: xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address- :UUPSUpgradeable-upgradeToAndCall: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeToAndCall-address-bytes-[`UUPSUpgradeable.upgradeToAndCall`]] @@ -782,6 +856,26 @@ :xref-Arrays: xref:utils.adoc#Arrays :Arrays-findUpperBound: pass:normal[xref:utils.adoc#Arrays-findUpperBound-uint256---uint256-[`Arrays.findUpperBound`]] :xref-Arrays-findUpperBound-uint256---uint256-: xref:utils.adoc#Arrays-findUpperBound-uint256---uint256- +:Base64: pass:normal[xref:utils.adoc#Base64[`Base64`]] +:xref-Base64: xref:utils.adoc#Base64 +:Base64-_TABLE: pass:normal[xref:utils.adoc#Base64-_TABLE-string[`Base64._TABLE`]] +:xref-Base64-_TABLE-string: xref:utils.adoc#Base64-_TABLE-string +:Base64-encode: pass:normal[xref:utils.adoc#Base64-encode-bytes-[`Base64.encode`]] +:xref-Base64-encode-bytes-: xref:utils.adoc#Base64-encode-bytes- +:Checkpoints: pass:normal[xref:utils.adoc#Checkpoints[`Checkpoints`]] +:xref-Checkpoints: xref:utils.adoc#Checkpoints +:Checkpoints-latest: pass:normal[xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History-[`Checkpoints.latest`]] +:xref-Checkpoints-latest-struct-Checkpoints-History-: xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History- +:Checkpoints-getAtBlock: pass:normal[xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-[`Checkpoints.getAtBlock`]] +:xref-Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256- +:Checkpoints-Checkpoint: pass:normal[xref:utils.adoc#Checkpoints-Checkpoint[`Checkpoints.Checkpoint`]] +:xref-Checkpoints-Checkpoint: xref:utils.adoc#Checkpoints-Checkpoint +:Checkpoints-History: pass:normal[xref:utils.adoc#Checkpoints-History[`Checkpoints.History`]] +:xref-Checkpoints-History: xref:utils.adoc#Checkpoints-History :Context: pass:normal[xref:utils.adoc#Context[`Context`]] :xref-Context: xref:utils.adoc#Context :Context-_msgSender: pass:normal[xref:utils.adoc#Context-_msgSender--[`Context._msgSender`]] @@ -1078,6 +1172,16 @@ :xref-SafeMath-div-uint256-uint256-string-: xref:utils.adoc#SafeMath-div-uint256-uint256-string- :SafeMath-mod: pass:normal[xref:utils.adoc#SafeMath-mod-uint256-uint256-string-[`SafeMath.mod`]] :xref-SafeMath-mod-uint256-uint256-string-: xref:utils.adoc#SafeMath-mod-uint256-uint256-string- +:SignedMath: pass:normal[xref:utils.adoc#SignedMath[`SignedMath`]] +:xref-SignedMath: xref:utils.adoc#SignedMath +:SignedMath-max: pass:normal[xref:utils.adoc#SignedMath-max-int256-int256-[`SignedMath.max`]] +:xref-SignedMath-max-int256-int256-: xref:utils.adoc#SignedMath-max-int256-int256- +:SignedMath-min: pass:normal[xref:utils.adoc#SignedMath-min-int256-int256-[`SignedMath.min`]] +:xref-SignedMath-min-int256-int256-: xref:utils.adoc#SignedMath-min-int256-int256- +:SignedMath-average: pass:normal[xref:utils.adoc#SignedMath-average-int256-int256-[`SignedMath.average`]] +:xref-SignedMath-average-int256-int256-: xref:utils.adoc#SignedMath-average-int256-int256- +:SignedMath-abs: pass:normal[xref:utils.adoc#SignedMath-abs-int256-[`SignedMath.abs`]] +:xref-SignedMath-abs-int256-: xref:utils.adoc#SignedMath-abs-int256- :SignedSafeMath: pass:normal[xref:utils.adoc#SignedSafeMath[`SignedSafeMath`]] :xref-SignedSafeMath: xref:utils.adoc#SignedSafeMath :SignedSafeMath-mul: pass:normal[xref:utils.adoc#SignedSafeMath-mul-int256-int256-[`SignedSafeMath.mul`]] @@ -1256,26 +1360,6 @@ :xref-IERC1155MetadataURI: xref:token/ERC1155.adoc#IERC1155MetadataURI :IERC1155MetadataURI-uri: pass:normal[xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256-[`IERC1155MetadataURI.uri`]] :xref-IERC1155MetadataURI-uri-uint256-: xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256- -:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] -:xref-ERC1155PresetMinterPauser: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser -:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] -:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 -:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] -:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 -:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] -:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-constructor-string- -:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] -:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- -:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] -:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- -:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] -:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-pause-- -:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] -:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-unpause-- -:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] -:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-supportsInterface-bytes4- -:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] -:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- :ERC1155Holder: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder[`ERC1155Holder`]] :xref-ERC1155Holder: xref:token/ERC1155.adoc#ERC1155Holder :ERC1155Holder-onERC1155Received: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-[`ERC1155Holder.onERC1155Received`]] @@ -1320,6 +1404,8 @@ :xref-ERC20-_burn-address-uint256-: xref:token/ERC20.adoc#ERC20-_burn-address-uint256- :ERC20-_approve: pass:normal[xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256-[`ERC20._approve`]] :xref-ERC20-_approve-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256- +:ERC20-_spendAllowance: pass:normal[xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256-[`ERC20._spendAllowance`]] +:xref-ERC20-_spendAllowance-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256- :ERC20-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256-[`ERC20._beforeTokenTransfer`]] :xref-ERC20-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256- :ERC20-_afterTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_afterTokenTransfer-address-address-uint256-[`ERC20._afterTokenTransfer`]] @@ -1412,10 +1498,6 @@ :xref-ERC20Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-_afterTokenTransfer-address-address-uint256- :ERC20Votes-_delegate: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address-[`ERC20Votes._delegate`]] :xref-ERC20Votes-_delegate-address-address-: xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address- -:ERC20Votes-DelegateChanged: pass:normal[xref:token/ERC20.adoc#ERC20Votes-DelegateChanged-address-address-address-[`ERC20Votes.DelegateChanged`]] -:xref-ERC20Votes-DelegateChanged-address-address-address-: xref:token/ERC20.adoc#ERC20Votes-DelegateChanged-address-address-address- -:ERC20Votes-DelegateVotesChanged: pass:normal[xref:token/ERC20.adoc#ERC20Votes-DelegateVotesChanged-address-uint256-uint256-[`ERC20Votes.DelegateVotesChanged`]] -:xref-ERC20Votes-DelegateVotesChanged-address-uint256-uint256-: xref:token/ERC20.adoc#ERC20Votes-DelegateVotesChanged-address-uint256-uint256- :ERC20Votes-Checkpoint: pass:normal[xref:token/ERC20.adoc#ERC20Votes-Checkpoint[`ERC20Votes.Checkpoint`]] :xref-ERC20Votes-Checkpoint: xref:token/ERC20.adoc#ERC20Votes-Checkpoint :ERC20VotesComp: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp[`ERC20VotesComp`]] @@ -1466,26 +1548,6 @@ :xref-IERC20Permit-nonces-address-: xref:token/ERC20.adoc#IERC20Permit-nonces-address- :IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]] :xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR-- -:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20.adoc#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] -:xref-ERC20PresetFixedSupply: xref:token/ERC20.adoc#ERC20PresetFixedSupply -:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20.adoc#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] -:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20.adoc#ERC20PresetFixedSupply-constructor-string-string-uint256-address- -:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] -:xref-ERC20PresetMinterPauser: xref:token/ERC20.adoc#ERC20PresetMinterPauser -:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] -:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20.adoc#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 -:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] -:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20.adoc#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 -:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] -:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-constructor-string-string- -:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] -:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-mint-address-uint256- -:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] -:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20.adoc#ERC20PresetMinterPauser-pause-- -:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] -:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20.adoc#ERC20PresetMinterPauser-unpause-- -:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] -:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- :SafeERC20: pass:normal[xref:token/ERC20.adoc#SafeERC20[`SafeERC20`]] :xref-SafeERC20: xref:token/ERC20.adoc#SafeERC20 :SafeERC20-safeTransfer: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeTransfer-contract-IERC20-address-uint256-[`SafeERC20.safeTransfer`]] @@ -1564,6 +1626,8 @@ :xref-ERC721-_setApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool- :ERC721-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256-[`ERC721._beforeTokenTransfer`]] :xref-ERC721-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256- +:ERC721-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256-[`ERC721._afterTokenTransfer`]] +:xref-ERC721-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256- :IERC721: pass:normal[xref:token/ERC721.adoc#IERC721[`IERC721`]] :xref-IERC721: xref:token/ERC721.adoc#IERC721 :IERC721-balanceOf: pass:normal[xref:token/ERC721.adoc#IERC721-balanceOf-address-[`IERC721.balanceOf`]] @@ -1614,6 +1678,12 @@ :xref-ERC721Pausable: xref:token/ERC721.adoc#ERC721Pausable :ERC721Pausable-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256-[`ERC721Pausable._beforeTokenTransfer`]] :xref-ERC721Pausable-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256- +:ERC721Royalty: pass:normal[xref:token/ERC721.adoc#ERC721Royalty[`ERC721Royalty`]] +:xref-ERC721Royalty: xref:token/ERC721.adoc#ERC721Royalty +:ERC721Royalty-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4-[`ERC721Royalty.supportsInterface`]] +:xref-ERC721Royalty-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4- +:ERC721Royalty-_burn: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256-[`ERC721Royalty._burn`]] +:xref-ERC721Royalty-_burn-uint256-: xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256- :ERC721URIStorage: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage[`ERC721URIStorage`]] :xref-ERC721URIStorage: xref:token/ERC721.adoc#ERC721URIStorage :ERC721URIStorage-tokenURI: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage-tokenURI-uint256-[`ERC721URIStorage.tokenURI`]] @@ -1638,26 +1708,12 @@ :xref-IERC721Metadata-symbol--: xref:token/ERC721.adoc#IERC721Metadata-symbol-- :IERC721Metadata-tokenURI: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256-[`IERC721Metadata.tokenURI`]] :xref-IERC721Metadata-tokenURI-uint256-: xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256- -:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] -:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId -:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] -:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 -:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] -:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 -:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] -:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-constructor-string-string-string- -:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] -:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_baseURI-- -:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] -:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-mint-address- -:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] -:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-pause-- -:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] -:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-unpause-- -:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] -:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- -:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] -:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- +:ERC721Votes: pass:normal[xref:token/ERC721.adoc#ERC721Votes[`ERC721Votes`]] +:xref-ERC721Votes: xref:token/ERC721.adoc#ERC721Votes +:ERC721Votes-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256-[`ERC721Votes._afterTokenTransfer`]] +:xref-ERC721Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256- +:ERC721Votes-_getVotingUnits: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address-[`ERC721Votes._getVotingUnits`]] +:xref-ERC721Votes-_getVotingUnits-address-: xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address- :ERC721Holder: pass:normal[xref:token/ERC721.adoc#ERC721Holder[`ERC721Holder`]] :xref-ERC721Holder: xref:token/ERC721.adoc#ERC721Holder :ERC721Holder-onERC721Received: pass:normal[xref:token/ERC721.adoc#ERC721Holder-onERC721Received-address-address-uint256-bytes-[`ERC721Holder.onERC721Received`]] @@ -1714,6 +1770,8 @@ :xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes- :ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]] :xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256- +:ERC777-_spendAllowance: pass:normal[xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256-[`ERC777._spendAllowance`]] +:xref-ERC777-_spendAllowance-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256- :ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]] :xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256- :IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]] @@ -1766,6 +1824,84 @@ :xref-ERC777PresetFixedSupply: xref:token/ERC777.adoc#ERC777PresetFixedSupply :ERC777PresetFixedSupply-constructor: pass:normal[xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-[`ERC777PresetFixedSupply.constructor`]] :xref-ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-: xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address- +:ERC2981: pass:normal[xref:token/common.adoc#ERC2981[`ERC2981`]] +:xref-ERC2981: xref:token/common.adoc#ERC2981 +:ERC2981-supportsInterface: pass:normal[xref:token/common.adoc#ERC2981-supportsInterface-bytes4-[`ERC2981.supportsInterface`]] +:xref-ERC2981-supportsInterface-bytes4-: xref:token/common.adoc#ERC2981-supportsInterface-bytes4- +:ERC2981-royaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256-[`ERC2981.royaltyInfo`]] +:xref-ERC2981-royaltyInfo-uint256-uint256-: xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256- +:ERC2981-_feeDenominator: pass:normal[xref:token/common.adoc#ERC2981-_feeDenominator--[`ERC2981._feeDenominator`]] +:xref-ERC2981-_feeDenominator--: xref:token/common.adoc#ERC2981-_feeDenominator-- +:ERC2981-_setDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96-[`ERC2981._setDefaultRoyalty`]] +:xref-ERC2981-_setDefaultRoyalty-address-uint96-: xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96- +:ERC2981-_deleteDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty--[`ERC2981._deleteDefaultRoyalty`]] +:xref-ERC2981-_deleteDefaultRoyalty--: xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty-- +:ERC2981-_setTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96-[`ERC2981._setTokenRoyalty`]] +:xref-ERC2981-_setTokenRoyalty-uint256-address-uint96-: xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96- +:ERC2981-_resetTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256-[`ERC2981._resetTokenRoyalty`]] +:xref-ERC2981-_resetTokenRoyalty-uint256-: xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256- +:ERC2981-RoyaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-RoyaltyInfo[`ERC2981.RoyaltyInfo`]] +:xref-ERC2981-RoyaltyInfo: xref:token/common.adoc#ERC2981-RoyaltyInfo +:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] +:xref-ERC1155PresetMinterPauser: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser +:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] +:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string- +:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] +:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- +:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] +:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- +:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] +:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause-- +:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] +:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause-- +:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] +:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4- +:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] +:xref-ERC20PresetFixedSupply: xref:token/ERC20/presets.md#ERC20PresetFixedSupply +:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] +:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address- +:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] +:xref-ERC20PresetMinterPauser: xref:token/ERC20/presets.md#ERC20PresetMinterPauser +:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] +:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string- +:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] +:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256- +:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] +:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause-- +:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] +:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause-- +:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] +:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId +:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] +:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string- +:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] +:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI-- +:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] +:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address- +:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] +:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause-- +:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] +:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause-- +:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] +:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] +:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- = Meta Transactions [.readme-notice] @@ -1781,7 +1917,7 @@ NOTE: This document is better viewed at https://docs.openzeppelin.com/contracts/ [.contract] [[ERC2771Context]] -=== `++ERC2771Context++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/metatx/ERC2771Context.sol[{github-icon},role=heading-link] +=== `++ERC2771Context++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/metatx/ERC2771Context.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -1840,7 +1976,7 @@ Context variant with ERC2771 support. [.contract] [[MinimalForwarder]] -=== `++MinimalForwarder++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/metatx/MinimalForwarder.sol[{github-icon},role=heading-link] +=== `++MinimalForwarder++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/metatx/MinimalForwarder.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity diff --git a/docs/modules/api/pages/proxy.adoc b/docs/modules/api/pages/proxy.adoc index 09f4b2432..4fad495dd 100644 --- a/docs/modules/api/pages/proxy.adoc +++ b/docs/modules/api/pages/proxy.adoc @@ -192,6 +192,8 @@ :xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32- :Governor-_castVote: pass:normal[xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-[`Governor._castVote`]] :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string- +:Governor-relay: pass:normal[xref:governance.adoc#Governor-relay-address-uint256-bytes-[`Governor.relay`]] +:xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes- :Governor-_executor: pass:normal[xref:governance.adoc#Governor-_executor--[`Governor._executor`]] :xref-Governor-_executor--: xref:governance.adoc#Governor-_executor-- :Governor-ProposalCore: pass:normal[xref:governance.adoc#Governor-ProposalCore[`Governor.ProposalCore`]] @@ -368,6 +370,24 @@ :xref-GovernorCountingSimple-ProposalVote: xref:governance.adoc#GovernorCountingSimple-ProposalVote :GovernorCountingSimple-VoteType: pass:normal[xref:governance.adoc#GovernorCountingSimple-VoteType[`GovernorCountingSimple.VoteType`]] :xref-GovernorCountingSimple-VoteType: xref:governance.adoc#GovernorCountingSimple-VoteType +:GovernorPreventLateQuorum: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum[`GovernorPreventLateQuorum`]] +:xref-GovernorPreventLateQuorum: xref:governance.adoc#GovernorPreventLateQuorum +:GovernorPreventLateQuorum-constructor: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64-[`GovernorPreventLateQuorum.constructor`]] +:xref-GovernorPreventLateQuorum-constructor-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64- +:GovernorPreventLateQuorum-proposalDeadline: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256-[`GovernorPreventLateQuorum.proposalDeadline`]] +:xref-GovernorPreventLateQuorum-proposalDeadline-uint256-: xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256- +:GovernorPreventLateQuorum-_castVote: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-[`GovernorPreventLateQuorum._castVote`]] +:xref-GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-: xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string- +:GovernorPreventLateQuorum-lateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension--[`GovernorPreventLateQuorum.lateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-lateQuorumVoteExtension--: xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension-- +:GovernorPreventLateQuorum-setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum.setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-_setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum._setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-ProposalExtended: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-[`GovernorPreventLateQuorum.ProposalExtended`]] +:xref-GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64- +:GovernorPreventLateQuorum-LateQuorumVoteExtensionSet: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-[`GovernorPreventLateQuorum.LateQuorumVoteExtensionSet`]] +:xref-GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64- :GovernorProposalThreshold: pass:normal[xref:governance.adoc#GovernorProposalThreshold[`GovernorProposalThreshold`]] :xref-GovernorProposalThreshold: xref:governance.adoc#GovernorProposalThreshold :GovernorProposalThreshold-propose: pass:normal[xref:governance.adoc#GovernorProposalThreshold-propose-address---uint256---bytes---string-[`GovernorProposalThreshold.propose`]] @@ -484,10 +504,10 @@ :xref-GovernorTimelockControl-TimelockChange-address-address-: xref:governance.adoc#GovernorTimelockControl-TimelockChange-address-address- :GovernorVotes: pass:normal[xref:governance.adoc#GovernorVotes[`GovernorVotes`]] :xref-GovernorVotes: xref:governance.adoc#GovernorVotes -:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-ERC20Votes[`GovernorVotes.token`]] -:xref-GovernorVotes-token-contract-ERC20Votes: xref:governance.adoc#GovernorVotes-token-contract-ERC20Votes -:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-ERC20Votes-[`GovernorVotes.constructor`]] -:xref-GovernorVotes-constructor-contract-ERC20Votes-: xref:governance.adoc#GovernorVotes-constructor-contract-ERC20Votes- +:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-IVotes[`GovernorVotes.token`]] +:xref-GovernorVotes-token-contract-IVotes: xref:governance.adoc#GovernorVotes-token-contract-IVotes +:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-IVotes-[`GovernorVotes.constructor`]] +:xref-GovernorVotes-constructor-contract-IVotes-: xref:governance.adoc#GovernorVotes-constructor-contract-IVotes- :GovernorVotes-getVotes: pass:normal[xref:governance.adoc#GovernorVotes-getVotes-address-uint256-[`GovernorVotes.getVotes`]] :xref-GovernorVotes-getVotes-address-uint256-: xref:governance.adoc#GovernorVotes-getVotes-address-uint256- :GovernorVotesComp: pass:normal[xref:governance.adoc#GovernorVotesComp[`GovernorVotesComp`]] @@ -524,6 +544,52 @@ :xref-IGovernorTimelock-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernorTimelock-queue-address---uint256---bytes---bytes32- :IGovernorTimelock-ProposalQueued: pass:normal[xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256-[`IGovernorTimelock.ProposalQueued`]] :xref-IGovernorTimelock-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256- +:IVotes: pass:normal[xref:governance.adoc#IVotes[`IVotes`]] +:xref-IVotes: xref:governance.adoc#IVotes +:IVotes-getVotes: pass:normal[xref:governance.adoc#IVotes-getVotes-address-[`IVotes.getVotes`]] +:xref-IVotes-getVotes-address-: xref:governance.adoc#IVotes-getVotes-address- +:IVotes-getPastVotes: pass:normal[xref:governance.adoc#IVotes-getPastVotes-address-uint256-[`IVotes.getPastVotes`]] +:xref-IVotes-getPastVotes-address-uint256-: xref:governance.adoc#IVotes-getPastVotes-address-uint256- +:IVotes-getPastTotalSupply: pass:normal[xref:governance.adoc#IVotes-getPastTotalSupply-uint256-[`IVotes.getPastTotalSupply`]] +:xref-IVotes-getPastTotalSupply-uint256-: xref:governance.adoc#IVotes-getPastTotalSupply-uint256- +:IVotes-delegates: pass:normal[xref:governance.adoc#IVotes-delegates-address-[`IVotes.delegates`]] +:xref-IVotes-delegates-address-: xref:governance.adoc#IVotes-delegates-address- +:IVotes-delegate: pass:normal[xref:governance.adoc#IVotes-delegate-address-[`IVotes.delegate`]] +:xref-IVotes-delegate-address-: xref:governance.adoc#IVotes-delegate-address- +:IVotes-delegateBySig: pass:normal[xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`IVotes.delegateBySig`]] +:xref-IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:IVotes-DelegateChanged: pass:normal[xref:governance.adoc#IVotes-DelegateChanged-address-address-address-[`IVotes.DelegateChanged`]] +:xref-IVotes-DelegateChanged-address-address-address-: xref:governance.adoc#IVotes-DelegateChanged-address-address-address- +:IVotes-DelegateVotesChanged: pass:normal[xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256-[`IVotes.DelegateVotesChanged`]] +:xref-IVotes-DelegateVotesChanged-address-uint256-uint256-: xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256- +:Votes: pass:normal[xref:governance.adoc#Votes[`Votes`]] +:xref-Votes: xref:governance.adoc#Votes +:Votes-getVotes: pass:normal[xref:governance.adoc#Votes-getVotes-address-[`Votes.getVotes`]] +:xref-Votes-getVotes-address-: xref:governance.adoc#Votes-getVotes-address- +:Votes-getPastVotes: pass:normal[xref:governance.adoc#Votes-getPastVotes-address-uint256-[`Votes.getPastVotes`]] +:xref-Votes-getPastVotes-address-uint256-: xref:governance.adoc#Votes-getPastVotes-address-uint256- +:Votes-getPastTotalSupply: pass:normal[xref:governance.adoc#Votes-getPastTotalSupply-uint256-[`Votes.getPastTotalSupply`]] +:xref-Votes-getPastTotalSupply-uint256-: xref:governance.adoc#Votes-getPastTotalSupply-uint256- +:Votes-_getTotalSupply: pass:normal[xref:governance.adoc#Votes-_getTotalSupply--[`Votes._getTotalSupply`]] +:xref-Votes-_getTotalSupply--: xref:governance.adoc#Votes-_getTotalSupply-- +:Votes-delegates: pass:normal[xref:governance.adoc#Votes-delegates-address-[`Votes.delegates`]] +:xref-Votes-delegates-address-: xref:governance.adoc#Votes-delegates-address- +:Votes-delegate: pass:normal[xref:governance.adoc#Votes-delegate-address-[`Votes.delegate`]] +:xref-Votes-delegate-address-: xref:governance.adoc#Votes-delegate-address- +:Votes-delegateBySig: pass:normal[xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`Votes.delegateBySig`]] +:xref-Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:Votes-_delegate: pass:normal[xref:governance.adoc#Votes-_delegate-address-address-[`Votes._delegate`]] +:xref-Votes-_delegate-address-address-: xref:governance.adoc#Votes-_delegate-address-address- +:Votes-_transferVotingUnits: pass:normal[xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256-[`Votes._transferVotingUnits`]] +:xref-Votes-_transferVotingUnits-address-address-uint256-: xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256- +:Votes-_useNonce: pass:normal[xref:governance.adoc#Votes-_useNonce-address-[`Votes._useNonce`]] +:xref-Votes-_useNonce-address-: xref:governance.adoc#Votes-_useNonce-address- +:Votes-nonces: pass:normal[xref:governance.adoc#Votes-nonces-address-[`Votes.nonces`]] +:xref-Votes-nonces-address-: xref:governance.adoc#Votes-nonces-address- +:Votes-DOMAIN_SEPARATOR: pass:normal[xref:governance.adoc#Votes-DOMAIN_SEPARATOR--[`Votes.DOMAIN_SEPARATOR`]] +:xref-Votes-DOMAIN_SEPARATOR--: xref:governance.adoc#Votes-DOMAIN_SEPARATOR-- +:Votes-_getVotingUnits: pass:normal[xref:governance.adoc#Votes-_getVotingUnits-address-[`Votes._getVotingUnits`]] +:xref-Votes-_getVotingUnits-address-: xref:governance.adoc#Votes-_getVotingUnits-address- :IERC1271: pass:normal[xref:interfaces.adoc#IERC1271[`IERC1271`]] :xref-IERC1271: xref:interfaces.adoc#IERC1271 :IERC1271-isValidSignature: pass:normal[xref:interfaces.adoc#IERC1271-isValidSignature-bytes32-bytes-[`IERC1271.isValidSignature`]] @@ -566,6 +632,10 @@ :xref-IERC3156FlashLender-flashFee-address-uint256-: xref:interfaces.adoc#IERC3156FlashLender-flashFee-address-uint256- :IERC3156FlashLender-flashLoan: pass:normal[xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-[`IERC3156FlashLender.flashLoan`]] :xref-IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-: xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes- +:IERC1822Proxiable: pass:normal[xref:interfaces.adoc#IERC1822Proxiable[`IERC1822Proxiable`]] +:xref-IERC1822Proxiable: xref:interfaces.adoc#IERC1822Proxiable +:IERC1822Proxiable-proxiableUUID: pass:normal[xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID--[`IERC1822Proxiable.proxiableUUID`]] +:xref-IERC1822Proxiable-proxiableUUID--: xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID-- :IERC2612: pass:normal[xref:interfaces.adoc#IERC2612[`IERC2612`]] :xref-IERC2612: xref:interfaces.adoc#IERC2612 :ERC2771Context: pass:normal[xref:metatx.adoc#ERC2771Context[`ERC2771Context`]] @@ -618,8 +688,8 @@ :xref-ERC1967Upgrade-_upgradeTo-address-: xref:proxy.adoc#ERC1967Upgrade-_upgradeTo-address- :ERC1967Upgrade-_upgradeToAndCall: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCall`]] :xref-ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool- -:ERC1967Upgrade-_upgradeToAndCallSecure: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallSecure`]] -:xref-ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool- +:ERC1967Upgrade-_upgradeToAndCallUUPS: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallUUPS`]] +:xref-ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool- :ERC1967Upgrade-_getAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_getAdmin--[`ERC1967Upgrade._getAdmin`]] :xref-ERC1967Upgrade-_getAdmin--: xref:proxy.adoc#ERC1967Upgrade-_getAdmin-- :ERC1967Upgrade-_changeAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_changeAdmin-address-[`ERC1967Upgrade._changeAdmin`]] @@ -714,6 +784,10 @@ :xref-UUPSUpgradeable: xref:proxy.adoc#UUPSUpgradeable :UUPSUpgradeable-onlyProxy: pass:normal[xref:proxy.adoc#UUPSUpgradeable-onlyProxy--[`UUPSUpgradeable.onlyProxy`]] :xref-UUPSUpgradeable-onlyProxy--: xref:proxy.adoc#UUPSUpgradeable-onlyProxy-- +:UUPSUpgradeable-notDelegated: pass:normal[xref:proxy.adoc#UUPSUpgradeable-notDelegated--[`UUPSUpgradeable.notDelegated`]] +:xref-UUPSUpgradeable-notDelegated--: xref:proxy.adoc#UUPSUpgradeable-notDelegated-- +:UUPSUpgradeable-proxiableUUID: pass:normal[xref:proxy.adoc#UUPSUpgradeable-proxiableUUID--[`UUPSUpgradeable.proxiableUUID`]] +:xref-UUPSUpgradeable-proxiableUUID--: xref:proxy.adoc#UUPSUpgradeable-proxiableUUID-- :UUPSUpgradeable-upgradeTo: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address-[`UUPSUpgradeable.upgradeTo`]] :xref-UUPSUpgradeable-upgradeTo-address-: xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address- :UUPSUpgradeable-upgradeToAndCall: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeToAndCall-address-bytes-[`UUPSUpgradeable.upgradeToAndCall`]] @@ -782,6 +856,26 @@ :xref-Arrays: xref:utils.adoc#Arrays :Arrays-findUpperBound: pass:normal[xref:utils.adoc#Arrays-findUpperBound-uint256---uint256-[`Arrays.findUpperBound`]] :xref-Arrays-findUpperBound-uint256---uint256-: xref:utils.adoc#Arrays-findUpperBound-uint256---uint256- +:Base64: pass:normal[xref:utils.adoc#Base64[`Base64`]] +:xref-Base64: xref:utils.adoc#Base64 +:Base64-_TABLE: pass:normal[xref:utils.adoc#Base64-_TABLE-string[`Base64._TABLE`]] +:xref-Base64-_TABLE-string: xref:utils.adoc#Base64-_TABLE-string +:Base64-encode: pass:normal[xref:utils.adoc#Base64-encode-bytes-[`Base64.encode`]] +:xref-Base64-encode-bytes-: xref:utils.adoc#Base64-encode-bytes- +:Checkpoints: pass:normal[xref:utils.adoc#Checkpoints[`Checkpoints`]] +:xref-Checkpoints: xref:utils.adoc#Checkpoints +:Checkpoints-latest: pass:normal[xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History-[`Checkpoints.latest`]] +:xref-Checkpoints-latest-struct-Checkpoints-History-: xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History- +:Checkpoints-getAtBlock: pass:normal[xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-[`Checkpoints.getAtBlock`]] +:xref-Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256- +:Checkpoints-Checkpoint: pass:normal[xref:utils.adoc#Checkpoints-Checkpoint[`Checkpoints.Checkpoint`]] +:xref-Checkpoints-Checkpoint: xref:utils.adoc#Checkpoints-Checkpoint +:Checkpoints-History: pass:normal[xref:utils.adoc#Checkpoints-History[`Checkpoints.History`]] +:xref-Checkpoints-History: xref:utils.adoc#Checkpoints-History :Context: pass:normal[xref:utils.adoc#Context[`Context`]] :xref-Context: xref:utils.adoc#Context :Context-_msgSender: pass:normal[xref:utils.adoc#Context-_msgSender--[`Context._msgSender`]] @@ -1078,6 +1172,16 @@ :xref-SafeMath-div-uint256-uint256-string-: xref:utils.adoc#SafeMath-div-uint256-uint256-string- :SafeMath-mod: pass:normal[xref:utils.adoc#SafeMath-mod-uint256-uint256-string-[`SafeMath.mod`]] :xref-SafeMath-mod-uint256-uint256-string-: xref:utils.adoc#SafeMath-mod-uint256-uint256-string- +:SignedMath: pass:normal[xref:utils.adoc#SignedMath[`SignedMath`]] +:xref-SignedMath: xref:utils.adoc#SignedMath +:SignedMath-max: pass:normal[xref:utils.adoc#SignedMath-max-int256-int256-[`SignedMath.max`]] +:xref-SignedMath-max-int256-int256-: xref:utils.adoc#SignedMath-max-int256-int256- +:SignedMath-min: pass:normal[xref:utils.adoc#SignedMath-min-int256-int256-[`SignedMath.min`]] +:xref-SignedMath-min-int256-int256-: xref:utils.adoc#SignedMath-min-int256-int256- +:SignedMath-average: pass:normal[xref:utils.adoc#SignedMath-average-int256-int256-[`SignedMath.average`]] +:xref-SignedMath-average-int256-int256-: xref:utils.adoc#SignedMath-average-int256-int256- +:SignedMath-abs: pass:normal[xref:utils.adoc#SignedMath-abs-int256-[`SignedMath.abs`]] +:xref-SignedMath-abs-int256-: xref:utils.adoc#SignedMath-abs-int256- :SignedSafeMath: pass:normal[xref:utils.adoc#SignedSafeMath[`SignedSafeMath`]] :xref-SignedSafeMath: xref:utils.adoc#SignedSafeMath :SignedSafeMath-mul: pass:normal[xref:utils.adoc#SignedSafeMath-mul-int256-int256-[`SignedSafeMath.mul`]] @@ -1256,26 +1360,6 @@ :xref-IERC1155MetadataURI: xref:token/ERC1155.adoc#IERC1155MetadataURI :IERC1155MetadataURI-uri: pass:normal[xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256-[`IERC1155MetadataURI.uri`]] :xref-IERC1155MetadataURI-uri-uint256-: xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256- -:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] -:xref-ERC1155PresetMinterPauser: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser -:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] -:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 -:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] -:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 -:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] -:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-constructor-string- -:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] -:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- -:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] -:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- -:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] -:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-pause-- -:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] -:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-unpause-- -:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] -:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-supportsInterface-bytes4- -:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] -:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- :ERC1155Holder: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder[`ERC1155Holder`]] :xref-ERC1155Holder: xref:token/ERC1155.adoc#ERC1155Holder :ERC1155Holder-onERC1155Received: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-[`ERC1155Holder.onERC1155Received`]] @@ -1320,6 +1404,8 @@ :xref-ERC20-_burn-address-uint256-: xref:token/ERC20.adoc#ERC20-_burn-address-uint256- :ERC20-_approve: pass:normal[xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256-[`ERC20._approve`]] :xref-ERC20-_approve-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256- +:ERC20-_spendAllowance: pass:normal[xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256-[`ERC20._spendAllowance`]] +:xref-ERC20-_spendAllowance-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256- :ERC20-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256-[`ERC20._beforeTokenTransfer`]] :xref-ERC20-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256- :ERC20-_afterTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_afterTokenTransfer-address-address-uint256-[`ERC20._afterTokenTransfer`]] @@ -1412,10 +1498,6 @@ :xref-ERC20Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-_afterTokenTransfer-address-address-uint256- :ERC20Votes-_delegate: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address-[`ERC20Votes._delegate`]] :xref-ERC20Votes-_delegate-address-address-: xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address- -:ERC20Votes-DelegateChanged: pass:normal[xref:token/ERC20.adoc#ERC20Votes-DelegateChanged-address-address-address-[`ERC20Votes.DelegateChanged`]] -:xref-ERC20Votes-DelegateChanged-address-address-address-: xref:token/ERC20.adoc#ERC20Votes-DelegateChanged-address-address-address- -:ERC20Votes-DelegateVotesChanged: pass:normal[xref:token/ERC20.adoc#ERC20Votes-DelegateVotesChanged-address-uint256-uint256-[`ERC20Votes.DelegateVotesChanged`]] -:xref-ERC20Votes-DelegateVotesChanged-address-uint256-uint256-: xref:token/ERC20.adoc#ERC20Votes-DelegateVotesChanged-address-uint256-uint256- :ERC20Votes-Checkpoint: pass:normal[xref:token/ERC20.adoc#ERC20Votes-Checkpoint[`ERC20Votes.Checkpoint`]] :xref-ERC20Votes-Checkpoint: xref:token/ERC20.adoc#ERC20Votes-Checkpoint :ERC20VotesComp: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp[`ERC20VotesComp`]] @@ -1466,26 +1548,6 @@ :xref-IERC20Permit-nonces-address-: xref:token/ERC20.adoc#IERC20Permit-nonces-address- :IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]] :xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR-- -:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20.adoc#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] -:xref-ERC20PresetFixedSupply: xref:token/ERC20.adoc#ERC20PresetFixedSupply -:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20.adoc#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] -:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20.adoc#ERC20PresetFixedSupply-constructor-string-string-uint256-address- -:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] -:xref-ERC20PresetMinterPauser: xref:token/ERC20.adoc#ERC20PresetMinterPauser -:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] -:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20.adoc#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 -:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] -:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20.adoc#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 -:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] -:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-constructor-string-string- -:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] -:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-mint-address-uint256- -:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] -:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20.adoc#ERC20PresetMinterPauser-pause-- -:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] -:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20.adoc#ERC20PresetMinterPauser-unpause-- -:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] -:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- :SafeERC20: pass:normal[xref:token/ERC20.adoc#SafeERC20[`SafeERC20`]] :xref-SafeERC20: xref:token/ERC20.adoc#SafeERC20 :SafeERC20-safeTransfer: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeTransfer-contract-IERC20-address-uint256-[`SafeERC20.safeTransfer`]] @@ -1564,6 +1626,8 @@ :xref-ERC721-_setApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool- :ERC721-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256-[`ERC721._beforeTokenTransfer`]] :xref-ERC721-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256- +:ERC721-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256-[`ERC721._afterTokenTransfer`]] +:xref-ERC721-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256- :IERC721: pass:normal[xref:token/ERC721.adoc#IERC721[`IERC721`]] :xref-IERC721: xref:token/ERC721.adoc#IERC721 :IERC721-balanceOf: pass:normal[xref:token/ERC721.adoc#IERC721-balanceOf-address-[`IERC721.balanceOf`]] @@ -1614,6 +1678,12 @@ :xref-ERC721Pausable: xref:token/ERC721.adoc#ERC721Pausable :ERC721Pausable-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256-[`ERC721Pausable._beforeTokenTransfer`]] :xref-ERC721Pausable-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256- +:ERC721Royalty: pass:normal[xref:token/ERC721.adoc#ERC721Royalty[`ERC721Royalty`]] +:xref-ERC721Royalty: xref:token/ERC721.adoc#ERC721Royalty +:ERC721Royalty-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4-[`ERC721Royalty.supportsInterface`]] +:xref-ERC721Royalty-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4- +:ERC721Royalty-_burn: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256-[`ERC721Royalty._burn`]] +:xref-ERC721Royalty-_burn-uint256-: xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256- :ERC721URIStorage: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage[`ERC721URIStorage`]] :xref-ERC721URIStorage: xref:token/ERC721.adoc#ERC721URIStorage :ERC721URIStorage-tokenURI: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage-tokenURI-uint256-[`ERC721URIStorage.tokenURI`]] @@ -1638,26 +1708,12 @@ :xref-IERC721Metadata-symbol--: xref:token/ERC721.adoc#IERC721Metadata-symbol-- :IERC721Metadata-tokenURI: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256-[`IERC721Metadata.tokenURI`]] :xref-IERC721Metadata-tokenURI-uint256-: xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256- -:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] -:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId -:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] -:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 -:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] -:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 -:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] -:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-constructor-string-string-string- -:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] -:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_baseURI-- -:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] -:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-mint-address- -:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] -:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-pause-- -:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] -:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-unpause-- -:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] -:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- -:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] -:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- +:ERC721Votes: pass:normal[xref:token/ERC721.adoc#ERC721Votes[`ERC721Votes`]] +:xref-ERC721Votes: xref:token/ERC721.adoc#ERC721Votes +:ERC721Votes-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256-[`ERC721Votes._afterTokenTransfer`]] +:xref-ERC721Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256- +:ERC721Votes-_getVotingUnits: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address-[`ERC721Votes._getVotingUnits`]] +:xref-ERC721Votes-_getVotingUnits-address-: xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address- :ERC721Holder: pass:normal[xref:token/ERC721.adoc#ERC721Holder[`ERC721Holder`]] :xref-ERC721Holder: xref:token/ERC721.adoc#ERC721Holder :ERC721Holder-onERC721Received: pass:normal[xref:token/ERC721.adoc#ERC721Holder-onERC721Received-address-address-uint256-bytes-[`ERC721Holder.onERC721Received`]] @@ -1714,6 +1770,8 @@ :xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes- :ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]] :xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256- +:ERC777-_spendAllowance: pass:normal[xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256-[`ERC777._spendAllowance`]] +:xref-ERC777-_spendAllowance-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256- :ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]] :xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256- :IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]] @@ -1766,6 +1824,84 @@ :xref-ERC777PresetFixedSupply: xref:token/ERC777.adoc#ERC777PresetFixedSupply :ERC777PresetFixedSupply-constructor: pass:normal[xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-[`ERC777PresetFixedSupply.constructor`]] :xref-ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-: xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address- +:ERC2981: pass:normal[xref:token/common.adoc#ERC2981[`ERC2981`]] +:xref-ERC2981: xref:token/common.adoc#ERC2981 +:ERC2981-supportsInterface: pass:normal[xref:token/common.adoc#ERC2981-supportsInterface-bytes4-[`ERC2981.supportsInterface`]] +:xref-ERC2981-supportsInterface-bytes4-: xref:token/common.adoc#ERC2981-supportsInterface-bytes4- +:ERC2981-royaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256-[`ERC2981.royaltyInfo`]] +:xref-ERC2981-royaltyInfo-uint256-uint256-: xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256- +:ERC2981-_feeDenominator: pass:normal[xref:token/common.adoc#ERC2981-_feeDenominator--[`ERC2981._feeDenominator`]] +:xref-ERC2981-_feeDenominator--: xref:token/common.adoc#ERC2981-_feeDenominator-- +:ERC2981-_setDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96-[`ERC2981._setDefaultRoyalty`]] +:xref-ERC2981-_setDefaultRoyalty-address-uint96-: xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96- +:ERC2981-_deleteDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty--[`ERC2981._deleteDefaultRoyalty`]] +:xref-ERC2981-_deleteDefaultRoyalty--: xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty-- +:ERC2981-_setTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96-[`ERC2981._setTokenRoyalty`]] +:xref-ERC2981-_setTokenRoyalty-uint256-address-uint96-: xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96- +:ERC2981-_resetTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256-[`ERC2981._resetTokenRoyalty`]] +:xref-ERC2981-_resetTokenRoyalty-uint256-: xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256- +:ERC2981-RoyaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-RoyaltyInfo[`ERC2981.RoyaltyInfo`]] +:xref-ERC2981-RoyaltyInfo: xref:token/common.adoc#ERC2981-RoyaltyInfo +:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] +:xref-ERC1155PresetMinterPauser: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser +:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] +:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string- +:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] +:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- +:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] +:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- +:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] +:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause-- +:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] +:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause-- +:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] +:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4- +:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] +:xref-ERC20PresetFixedSupply: xref:token/ERC20/presets.md#ERC20PresetFixedSupply +:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] +:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address- +:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] +:xref-ERC20PresetMinterPauser: xref:token/ERC20/presets.md#ERC20PresetMinterPauser +:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] +:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string- +:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] +:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256- +:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] +:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause-- +:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] +:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause-- +:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] +:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId +:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] +:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string- +:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] +:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI-- +:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] +:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address- +:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] +:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause-- +:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] +:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause-- +:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] +:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] +:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- = Proxies [.readme-notice] @@ -1785,14 +1921,14 @@ In order to avoid clashes with the storage variables of the implementation contr There are two alternative ways to add upgradeability to an ERC1967 proxy. Their differences are explained below in <>. - {TransparentUpgradeableProxy}: A proxy with a built in admin and upgrade interface. -- {UUPSUpgradeable}: An upgradeability mechanism to be included in the implementation for an ERC1967 proxy. +- {UUPSUpgradeable}: An upgradeability mechanism to be included in the implementation contract. CAUTION: Using upgradeable proxies correctly and securely is a difficult task that requires deep knowledge of the proxy pattern, Solidity, and the EVM. Unless you want a lot of low level control, we recommend using the xref:upgrades-plugins::index.adoc[OpenZeppelin Upgrades Plugins] for Truffle and Hardhat. A different family of proxies are beacon proxies. This pattern, popularized by Dharma, allows multiple proxies to be upgraded to a different implementation in a single transaction. - {BeaconProxy}: A proxy that retreives its implementation from a beacon contract. -- {UpgradeableBeacon}: A beacon contract that can be upgraded. +- {UpgradeableBeacon}: A beacon contract with a built in admin that can upgrade the {BeaconProxy} pointing to it. In this pattern, the proxy contract doesn't hold the implementation address in storage like an ERC1967 proxy, instead the address is stored in a separate beacon contract. The `upgrade` operations that are sent to the beacon instead of to the proxy contract, and all proxies that follow that beacon are automatically upgraded. @@ -1816,6 +1952,8 @@ By default, the upgrade functionality included in {UUPSUpgradeable} contains a s - Adding a flag mechanism in the implementation that will disable the upgrade function when triggered. - Upgrading to an implementation that features an upgrade mechanism without the additional security check, and then upgrading again to another implementation without the upgrade mechanism. +The current implementation of this security mechanism uses https://eips.ethereum.org/EIPS/eip-1822[EIP1822] to detect the storage slot used by the implementation. A previous implementation, now deprecated, relied on a rollback check. It is possible to upgrade from a contract using the old mechanism to a new one. The inverse is however not possible, as old implementations (before version 4.5) did not include the `ERC1822` interface. + == Core :Proxy: pass:normal[xref:#Proxy[`++Proxy++`]] @@ -1828,7 +1966,7 @@ By default, the upgrade functionality included in {UUPSUpgradeable} contains a s [.contract] [[Proxy]] -=== `++Proxy++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/proxy/Proxy.sol[{github-icon},role=heading-link] +=== `++Proxy++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/proxy/Proxy.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -1865,7 +2003,7 @@ The success and return data of the delegated call will be returned back to the c Delegates the current call to `implementation`. -This function does not return to its internall call site, it will return directly to the external caller. +This function does not return to its internal call site, it will return directly to the external caller. [.contract-item] [[Proxy-_implementation--]] @@ -1916,7 +2054,7 @@ If overriden should call `super._beforeFallback()`. [.contract] [[ERC1967Proxy]] -=== `++ERC1967Proxy++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/proxy/ERC1967/ERC1967Proxy.sol[{github-icon},role=heading-link] +=== `++ERC1967Proxy++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/proxy/ERC1967/ERC1967Proxy.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -1940,7 +2078,7 @@ implementation behind the proxy. * {xref-ERC1967Upgrade-_getImplementation--}[`++_getImplementation()++`] * {xref-ERC1967Upgrade-_upgradeTo-address-}[`++_upgradeTo(newImplementation)++`] * {xref-ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-}[`++_upgradeToAndCall(newImplementation, data, forceCall)++`] -* {xref-ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-}[`++_upgradeToAndCallSecure(newImplementation, data, forceCall)++`] +* {xref-ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-}[`++_upgradeToAndCallUUPS(newImplementation, data, forceCall)++`] * {xref-ERC1967Upgrade-_getAdmin--}[`++_getAdmin()++`] * {xref-ERC1967Upgrade-_changeAdmin-address-}[`++_changeAdmin(newAdmin)++`] * {xref-ERC1967Upgrade-_getBeacon--}[`++_getBeacon()++`] @@ -1997,7 +2135,7 @@ Returns the current implementation address. :_getImplementation: pass:normal[xref:#ERC1967Upgrade-_getImplementation--[`++_getImplementation++`]] :_upgradeTo: pass:normal[xref:#ERC1967Upgrade-_upgradeTo-address-[`++_upgradeTo++`]] :_upgradeToAndCall: pass:normal[xref:#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-[`++_upgradeToAndCall++`]] -:_upgradeToAndCallSecure: pass:normal[xref:#ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-[`++_upgradeToAndCallSecure++`]] +:_upgradeToAndCallUUPS: pass:normal[xref:#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-[`++_upgradeToAndCallUUPS++`]] :_getAdmin: pass:normal[xref:#ERC1967Upgrade-_getAdmin--[`++_getAdmin++`]] :_changeAdmin: pass:normal[xref:#ERC1967Upgrade-_changeAdmin-address-[`++_changeAdmin++`]] :_getBeacon: pass:normal[xref:#ERC1967Upgrade-_getBeacon--[`++_getBeacon++`]] @@ -2008,7 +2146,7 @@ Returns the current implementation address. [.contract] [[ERC1967Upgrade]] -=== `++ERC1967Upgrade++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/proxy/ERC1967/ERC1967Upgrade.sol[{github-icon},role=heading-link] +=== `++ERC1967Upgrade++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/proxy/ERC1967/ERC1967Upgrade.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2029,7 +2167,7 @@ _Available since v4.1._ * {xref-ERC1967Upgrade-_getImplementation--}[`++_getImplementation()++`] * {xref-ERC1967Upgrade-_upgradeTo-address-}[`++_upgradeTo(newImplementation)++`] * {xref-ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-}[`++_upgradeToAndCall(newImplementation, data, forceCall)++`] -* {xref-ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-}[`++_upgradeToAndCallSecure(newImplementation, data, forceCall)++`] +* {xref-ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-}[`++_upgradeToAndCallUUPS(newImplementation, data, forceCall)++`] * {xref-ERC1967Upgrade-_getAdmin--}[`++_getAdmin()++`] * {xref-ERC1967Upgrade-_changeAdmin-address-}[`++_changeAdmin(newAdmin)++`] * {xref-ERC1967Upgrade-_getBeacon--}[`++_getBeacon()++`] @@ -2070,8 +2208,8 @@ Perform implementation upgrade with additional setup call. Emits an {Upgraded} event. [.contract-item] -[[ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-]] -==== `[.contract-item-name]#++_upgradeToAndCallSecure++#++(address newImplementation, bytes data, bool forceCall)++` [.item-kind]#internal# +[[ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-]] +==== `[.contract-item-name]#++_upgradeToAndCallUUPS++#++(address newImplementation, bytes data, bool forceCall)++` [.item-kind]#internal# Perform implementation upgrade with security checks for UUPS proxies, and additional setup call. @@ -2142,7 +2280,7 @@ Emitted when the beacon is upgraded. [.contract] [[TransparentUpgradeableProxy]] -=== `++TransparentUpgradeableProxy++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/proxy/transparent/TransparentUpgradeableProxy.sol[{github-icon},role=heading-link] +=== `++TransparentUpgradeableProxy++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/proxy/transparent/TransparentUpgradeableProxy.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2196,7 +2334,7 @@ you should think of the `ProxyAdmin` instance as the real administrative interfa * {xref-ERC1967Upgrade-_getImplementation--}[`++_getImplementation()++`] * {xref-ERC1967Upgrade-_upgradeTo-address-}[`++_upgradeTo(newImplementation)++`] * {xref-ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-}[`++_upgradeToAndCall(newImplementation, data, forceCall)++`] -* {xref-ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-}[`++_upgradeToAndCallSecure(newImplementation, data, forceCall)++`] +* {xref-ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-}[`++_upgradeToAndCallUUPS(newImplementation, data, forceCall)++`] * {xref-ERC1967Upgrade-_getAdmin--}[`++_getAdmin()++`] * {xref-ERC1967Upgrade-_changeAdmin-address-}[`++_changeAdmin(newAdmin)++`] * {xref-ERC1967Upgrade-_getBeacon--}[`++_getBeacon()++`] @@ -2319,7 +2457,7 @@ Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFall [.contract] [[ProxyAdmin]] -=== `++ProxyAdmin++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/proxy/transparent/ProxyAdmin.sol[{github-icon},role=heading-link] +=== `++ProxyAdmin++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/proxy/transparent/ProxyAdmin.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2427,7 +2565,7 @@ Requirements: [.contract] [[BeaconProxy]] -=== `++BeaconProxy++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/proxy/beacon/BeaconProxy.sol[{github-icon},role=heading-link] +=== `++BeaconProxy++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/proxy/beacon/BeaconProxy.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2455,7 +2593,7 @@ _Available since v3.4._ * {xref-ERC1967Upgrade-_getImplementation--}[`++_getImplementation()++`] * {xref-ERC1967Upgrade-_upgradeTo-address-}[`++_upgradeTo(newImplementation)++`] * {xref-ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-}[`++_upgradeToAndCall(newImplementation, data, forceCall)++`] -* {xref-ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-}[`++_upgradeToAndCallSecure(newImplementation, data, forceCall)++`] +* {xref-ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-}[`++_upgradeToAndCallUUPS(newImplementation, data, forceCall)++`] * {xref-ERC1967Upgrade-_getAdmin--}[`++_getAdmin()++`] * {xref-ERC1967Upgrade-_changeAdmin-address-}[`++_changeAdmin(newAdmin)++`] * {xref-ERC1967Upgrade-_getBeacon--}[`++_getBeacon()++`] @@ -2534,7 +2672,7 @@ Requirements: [.contract] [[IBeacon]] -=== `++IBeacon++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/proxy/beacon/IBeacon.sol[{github-icon},role=heading-link] +=== `++IBeacon++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/proxy/beacon/IBeacon.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2572,7 +2710,7 @@ Must return an address that can be used as a delegate call target. [.contract] [[UpgradeableBeacon]] -=== `++UpgradeableBeacon++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/proxy/beacon/UpgradeableBeacon.sol[{github-icon},role=heading-link] +=== `++UpgradeableBeacon++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/proxy/beacon/UpgradeableBeacon.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2667,7 +2805,7 @@ Emitted when the implementation returned by the beacon is changed. [.contract] [[Clones]] -=== `++Clones++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/proxy/Clones.sol[{github-icon},role=heading-link] +=== `++Clones++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/proxy/Clones.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2740,7 +2878,7 @@ Computes the address of a clone deployed using {Clones-cloneDeterministic}. [.contract] [[Initializable]] -=== `++Initializable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/proxy/utils/Initializable.sol[{github-icon},role=heading-link] +=== `++Initializable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/proxy/utils/Initializable.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2748,7 +2886,7 @@ import "@openzeppelin/contracts/proxy/utils/Initializable.sol"; ``` This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed -behind a proxy. Since a proxied contract can't have a constructor, it's common to move constructor logic to an +behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. @@ -2801,13 +2939,15 @@ Modifier to protect an initialization function so that it can only be invoked by :UUPSUpgradeable: pass:normal[xref:#UUPSUpgradeable[`++UUPSUpgradeable++`]] :onlyProxy: pass:normal[xref:#UUPSUpgradeable-onlyProxy--[`++onlyProxy++`]] +:notDelegated: pass:normal[xref:#UUPSUpgradeable-notDelegated--[`++notDelegated++`]] +:proxiableUUID: pass:normal[xref:#UUPSUpgradeable-proxiableUUID--[`++proxiableUUID++`]] :upgradeTo: pass:normal[xref:#UUPSUpgradeable-upgradeTo-address-[`++upgradeTo++`]] :upgradeToAndCall: pass:normal[xref:#UUPSUpgradeable-upgradeToAndCall-address-bytes-[`++upgradeToAndCall++`]] :_authorizeUpgrade: pass:normal[xref:#UUPSUpgradeable-_authorizeUpgrade-address-[`++_authorizeUpgrade++`]] [.contract] [[UUPSUpgradeable]] -=== `++UUPSUpgradeable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/proxy/utils/UUPSUpgradeable.sol[{github-icon},role=heading-link] +=== `++UUPSUpgradeable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/proxy/utils/UUPSUpgradeable.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2829,11 +2969,13 @@ _Available since v4.1._ .Modifiers -- * {xref-UUPSUpgradeable-onlyProxy--}[`++onlyProxy()++`] +* {xref-UUPSUpgradeable-notDelegated--}[`++notDelegated()++`] -- [.contract-index] .Functions -- +* {xref-UUPSUpgradeable-proxiableUUID--}[`++proxiableUUID()++`] * {xref-UUPSUpgradeable-upgradeTo-address-}[`++upgradeTo(newImplementation)++`] * {xref-UUPSUpgradeable-upgradeToAndCall-address-bytes-}[`++upgradeToAndCall(newImplementation, data)++`] * {xref-UUPSUpgradeable-_authorizeUpgrade-address-}[`++_authorizeUpgrade(newImplementation)++`] @@ -2843,12 +2985,15 @@ _Available since v4.1._ * {xref-ERC1967Upgrade-_getImplementation--}[`++_getImplementation()++`] * {xref-ERC1967Upgrade-_upgradeTo-address-}[`++_upgradeTo(newImplementation)++`] * {xref-ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-}[`++_upgradeToAndCall(newImplementation, data, forceCall)++`] -* {xref-ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-}[`++_upgradeToAndCallSecure(newImplementation, data, forceCall)++`] +* {xref-ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-}[`++_upgradeToAndCallUUPS(newImplementation, data, forceCall)++`] * {xref-ERC1967Upgrade-_getAdmin--}[`++_getAdmin()++`] * {xref-ERC1967Upgrade-_changeAdmin-address-}[`++_changeAdmin(newAdmin)++`] * {xref-ERC1967Upgrade-_getBeacon--}[`++_getBeacon()++`] * {xref-ERC1967Upgrade-_upgradeBeaconToAndCall-address-bytes-bool-}[`++_upgradeBeaconToAndCall(newBeacon, data, forceCall)++`] +[.contract-subindex-inherited] +.IERC1822Proxiable + -- [.contract-index] @@ -2861,6 +3006,9 @@ _Available since v4.1._ * {xref-ERC1967Upgrade-AdminChanged-address-address-}[`++AdminChanged(previousAdmin, newAdmin)++`] * {xref-ERC1967Upgrade-BeaconUpgraded-address-}[`++BeaconUpgraded(beacon)++`] +[.contract-subindex-inherited] +.IERC1822Proxiable + -- [.contract-item] @@ -2873,6 +3021,24 @@ for UUPS and transparent proxies that are using the current contract as their im function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to fail. +[.contract-item] +[[UUPSUpgradeable-notDelegated--]] +==== `[.contract-item-name]#++notDelegated++#++()++` [.item-kind]#modifier# + +Check that the execution is not being performed through a delegate call. This allows a function to be +callable on the implementing contract but not through proxies. + + +[.contract-item] +[[UUPSUpgradeable-proxiableUUID--]] +==== `[.contract-item-name]#++proxiableUUID++#++() → bytes32++` [.item-kind]#external# + +Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the +implementation. It is used to validate that the this implementation remains valid after an upgrade. + +IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks +bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this +function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier. [.contract-item] [[UUPSUpgradeable-upgradeTo-address-]] diff --git a/docs/modules/api/pages/security.adoc b/docs/modules/api/pages/security.adoc index 0d206114d..fddf719e2 100644 --- a/docs/modules/api/pages/security.adoc +++ b/docs/modules/api/pages/security.adoc @@ -192,6 +192,8 @@ :xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32- :Governor-_castVote: pass:normal[xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-[`Governor._castVote`]] :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string- +:Governor-relay: pass:normal[xref:governance.adoc#Governor-relay-address-uint256-bytes-[`Governor.relay`]] +:xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes- :Governor-_executor: pass:normal[xref:governance.adoc#Governor-_executor--[`Governor._executor`]] :xref-Governor-_executor--: xref:governance.adoc#Governor-_executor-- :Governor-ProposalCore: pass:normal[xref:governance.adoc#Governor-ProposalCore[`Governor.ProposalCore`]] @@ -368,6 +370,24 @@ :xref-GovernorCountingSimple-ProposalVote: xref:governance.adoc#GovernorCountingSimple-ProposalVote :GovernorCountingSimple-VoteType: pass:normal[xref:governance.adoc#GovernorCountingSimple-VoteType[`GovernorCountingSimple.VoteType`]] :xref-GovernorCountingSimple-VoteType: xref:governance.adoc#GovernorCountingSimple-VoteType +:GovernorPreventLateQuorum: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum[`GovernorPreventLateQuorum`]] +:xref-GovernorPreventLateQuorum: xref:governance.adoc#GovernorPreventLateQuorum +:GovernorPreventLateQuorum-constructor: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64-[`GovernorPreventLateQuorum.constructor`]] +:xref-GovernorPreventLateQuorum-constructor-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64- +:GovernorPreventLateQuorum-proposalDeadline: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256-[`GovernorPreventLateQuorum.proposalDeadline`]] +:xref-GovernorPreventLateQuorum-proposalDeadline-uint256-: xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256- +:GovernorPreventLateQuorum-_castVote: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-[`GovernorPreventLateQuorum._castVote`]] +:xref-GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-: xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string- +:GovernorPreventLateQuorum-lateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension--[`GovernorPreventLateQuorum.lateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-lateQuorumVoteExtension--: xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension-- +:GovernorPreventLateQuorum-setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum.setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-_setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum._setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-ProposalExtended: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-[`GovernorPreventLateQuorum.ProposalExtended`]] +:xref-GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64- +:GovernorPreventLateQuorum-LateQuorumVoteExtensionSet: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-[`GovernorPreventLateQuorum.LateQuorumVoteExtensionSet`]] +:xref-GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64- :GovernorProposalThreshold: pass:normal[xref:governance.adoc#GovernorProposalThreshold[`GovernorProposalThreshold`]] :xref-GovernorProposalThreshold: xref:governance.adoc#GovernorProposalThreshold :GovernorProposalThreshold-propose: pass:normal[xref:governance.adoc#GovernorProposalThreshold-propose-address---uint256---bytes---string-[`GovernorProposalThreshold.propose`]] @@ -484,10 +504,10 @@ :xref-GovernorTimelockControl-TimelockChange-address-address-: xref:governance.adoc#GovernorTimelockControl-TimelockChange-address-address- :GovernorVotes: pass:normal[xref:governance.adoc#GovernorVotes[`GovernorVotes`]] :xref-GovernorVotes: xref:governance.adoc#GovernorVotes -:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-ERC20Votes[`GovernorVotes.token`]] -:xref-GovernorVotes-token-contract-ERC20Votes: xref:governance.adoc#GovernorVotes-token-contract-ERC20Votes -:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-ERC20Votes-[`GovernorVotes.constructor`]] -:xref-GovernorVotes-constructor-contract-ERC20Votes-: xref:governance.adoc#GovernorVotes-constructor-contract-ERC20Votes- +:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-IVotes[`GovernorVotes.token`]] +:xref-GovernorVotes-token-contract-IVotes: xref:governance.adoc#GovernorVotes-token-contract-IVotes +:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-IVotes-[`GovernorVotes.constructor`]] +:xref-GovernorVotes-constructor-contract-IVotes-: xref:governance.adoc#GovernorVotes-constructor-contract-IVotes- :GovernorVotes-getVotes: pass:normal[xref:governance.adoc#GovernorVotes-getVotes-address-uint256-[`GovernorVotes.getVotes`]] :xref-GovernorVotes-getVotes-address-uint256-: xref:governance.adoc#GovernorVotes-getVotes-address-uint256- :GovernorVotesComp: pass:normal[xref:governance.adoc#GovernorVotesComp[`GovernorVotesComp`]] @@ -524,6 +544,52 @@ :xref-IGovernorTimelock-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernorTimelock-queue-address---uint256---bytes---bytes32- :IGovernorTimelock-ProposalQueued: pass:normal[xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256-[`IGovernorTimelock.ProposalQueued`]] :xref-IGovernorTimelock-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256- +:IVotes: pass:normal[xref:governance.adoc#IVotes[`IVotes`]] +:xref-IVotes: xref:governance.adoc#IVotes +:IVotes-getVotes: pass:normal[xref:governance.adoc#IVotes-getVotes-address-[`IVotes.getVotes`]] +:xref-IVotes-getVotes-address-: xref:governance.adoc#IVotes-getVotes-address- +:IVotes-getPastVotes: pass:normal[xref:governance.adoc#IVotes-getPastVotes-address-uint256-[`IVotes.getPastVotes`]] +:xref-IVotes-getPastVotes-address-uint256-: xref:governance.adoc#IVotes-getPastVotes-address-uint256- +:IVotes-getPastTotalSupply: pass:normal[xref:governance.adoc#IVotes-getPastTotalSupply-uint256-[`IVotes.getPastTotalSupply`]] +:xref-IVotes-getPastTotalSupply-uint256-: xref:governance.adoc#IVotes-getPastTotalSupply-uint256- +:IVotes-delegates: pass:normal[xref:governance.adoc#IVotes-delegates-address-[`IVotes.delegates`]] +:xref-IVotes-delegates-address-: xref:governance.adoc#IVotes-delegates-address- +:IVotes-delegate: pass:normal[xref:governance.adoc#IVotes-delegate-address-[`IVotes.delegate`]] +:xref-IVotes-delegate-address-: xref:governance.adoc#IVotes-delegate-address- +:IVotes-delegateBySig: pass:normal[xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`IVotes.delegateBySig`]] +:xref-IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:IVotes-DelegateChanged: pass:normal[xref:governance.adoc#IVotes-DelegateChanged-address-address-address-[`IVotes.DelegateChanged`]] +:xref-IVotes-DelegateChanged-address-address-address-: xref:governance.adoc#IVotes-DelegateChanged-address-address-address- +:IVotes-DelegateVotesChanged: pass:normal[xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256-[`IVotes.DelegateVotesChanged`]] +:xref-IVotes-DelegateVotesChanged-address-uint256-uint256-: xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256- +:Votes: pass:normal[xref:governance.adoc#Votes[`Votes`]] +:xref-Votes: xref:governance.adoc#Votes +:Votes-getVotes: pass:normal[xref:governance.adoc#Votes-getVotes-address-[`Votes.getVotes`]] +:xref-Votes-getVotes-address-: xref:governance.adoc#Votes-getVotes-address- +:Votes-getPastVotes: pass:normal[xref:governance.adoc#Votes-getPastVotes-address-uint256-[`Votes.getPastVotes`]] +:xref-Votes-getPastVotes-address-uint256-: xref:governance.adoc#Votes-getPastVotes-address-uint256- +:Votes-getPastTotalSupply: pass:normal[xref:governance.adoc#Votes-getPastTotalSupply-uint256-[`Votes.getPastTotalSupply`]] +:xref-Votes-getPastTotalSupply-uint256-: xref:governance.adoc#Votes-getPastTotalSupply-uint256- +:Votes-_getTotalSupply: pass:normal[xref:governance.adoc#Votes-_getTotalSupply--[`Votes._getTotalSupply`]] +:xref-Votes-_getTotalSupply--: xref:governance.adoc#Votes-_getTotalSupply-- +:Votes-delegates: pass:normal[xref:governance.adoc#Votes-delegates-address-[`Votes.delegates`]] +:xref-Votes-delegates-address-: xref:governance.adoc#Votes-delegates-address- +:Votes-delegate: pass:normal[xref:governance.adoc#Votes-delegate-address-[`Votes.delegate`]] +:xref-Votes-delegate-address-: xref:governance.adoc#Votes-delegate-address- +:Votes-delegateBySig: pass:normal[xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`Votes.delegateBySig`]] +:xref-Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:Votes-_delegate: pass:normal[xref:governance.adoc#Votes-_delegate-address-address-[`Votes._delegate`]] +:xref-Votes-_delegate-address-address-: xref:governance.adoc#Votes-_delegate-address-address- +:Votes-_transferVotingUnits: pass:normal[xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256-[`Votes._transferVotingUnits`]] +:xref-Votes-_transferVotingUnits-address-address-uint256-: xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256- +:Votes-_useNonce: pass:normal[xref:governance.adoc#Votes-_useNonce-address-[`Votes._useNonce`]] +:xref-Votes-_useNonce-address-: xref:governance.adoc#Votes-_useNonce-address- +:Votes-nonces: pass:normal[xref:governance.adoc#Votes-nonces-address-[`Votes.nonces`]] +:xref-Votes-nonces-address-: xref:governance.adoc#Votes-nonces-address- +:Votes-DOMAIN_SEPARATOR: pass:normal[xref:governance.adoc#Votes-DOMAIN_SEPARATOR--[`Votes.DOMAIN_SEPARATOR`]] +:xref-Votes-DOMAIN_SEPARATOR--: xref:governance.adoc#Votes-DOMAIN_SEPARATOR-- +:Votes-_getVotingUnits: pass:normal[xref:governance.adoc#Votes-_getVotingUnits-address-[`Votes._getVotingUnits`]] +:xref-Votes-_getVotingUnits-address-: xref:governance.adoc#Votes-_getVotingUnits-address- :IERC1271: pass:normal[xref:interfaces.adoc#IERC1271[`IERC1271`]] :xref-IERC1271: xref:interfaces.adoc#IERC1271 :IERC1271-isValidSignature: pass:normal[xref:interfaces.adoc#IERC1271-isValidSignature-bytes32-bytes-[`IERC1271.isValidSignature`]] @@ -566,6 +632,10 @@ :xref-IERC3156FlashLender-flashFee-address-uint256-: xref:interfaces.adoc#IERC3156FlashLender-flashFee-address-uint256- :IERC3156FlashLender-flashLoan: pass:normal[xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-[`IERC3156FlashLender.flashLoan`]] :xref-IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-: xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes- +:IERC1822Proxiable: pass:normal[xref:interfaces.adoc#IERC1822Proxiable[`IERC1822Proxiable`]] +:xref-IERC1822Proxiable: xref:interfaces.adoc#IERC1822Proxiable +:IERC1822Proxiable-proxiableUUID: pass:normal[xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID--[`IERC1822Proxiable.proxiableUUID`]] +:xref-IERC1822Proxiable-proxiableUUID--: xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID-- :IERC2612: pass:normal[xref:interfaces.adoc#IERC2612[`IERC2612`]] :xref-IERC2612: xref:interfaces.adoc#IERC2612 :ERC2771Context: pass:normal[xref:metatx.adoc#ERC2771Context[`ERC2771Context`]] @@ -618,8 +688,8 @@ :xref-ERC1967Upgrade-_upgradeTo-address-: xref:proxy.adoc#ERC1967Upgrade-_upgradeTo-address- :ERC1967Upgrade-_upgradeToAndCall: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCall`]] :xref-ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool- -:ERC1967Upgrade-_upgradeToAndCallSecure: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallSecure`]] -:xref-ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool- +:ERC1967Upgrade-_upgradeToAndCallUUPS: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallUUPS`]] +:xref-ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool- :ERC1967Upgrade-_getAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_getAdmin--[`ERC1967Upgrade._getAdmin`]] :xref-ERC1967Upgrade-_getAdmin--: xref:proxy.adoc#ERC1967Upgrade-_getAdmin-- :ERC1967Upgrade-_changeAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_changeAdmin-address-[`ERC1967Upgrade._changeAdmin`]] @@ -714,6 +784,10 @@ :xref-UUPSUpgradeable: xref:proxy.adoc#UUPSUpgradeable :UUPSUpgradeable-onlyProxy: pass:normal[xref:proxy.adoc#UUPSUpgradeable-onlyProxy--[`UUPSUpgradeable.onlyProxy`]] :xref-UUPSUpgradeable-onlyProxy--: xref:proxy.adoc#UUPSUpgradeable-onlyProxy-- +:UUPSUpgradeable-notDelegated: pass:normal[xref:proxy.adoc#UUPSUpgradeable-notDelegated--[`UUPSUpgradeable.notDelegated`]] +:xref-UUPSUpgradeable-notDelegated--: xref:proxy.adoc#UUPSUpgradeable-notDelegated-- +:UUPSUpgradeable-proxiableUUID: pass:normal[xref:proxy.adoc#UUPSUpgradeable-proxiableUUID--[`UUPSUpgradeable.proxiableUUID`]] +:xref-UUPSUpgradeable-proxiableUUID--: xref:proxy.adoc#UUPSUpgradeable-proxiableUUID-- :UUPSUpgradeable-upgradeTo: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address-[`UUPSUpgradeable.upgradeTo`]] :xref-UUPSUpgradeable-upgradeTo-address-: xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address- :UUPSUpgradeable-upgradeToAndCall: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeToAndCall-address-bytes-[`UUPSUpgradeable.upgradeToAndCall`]] @@ -782,6 +856,26 @@ :xref-Arrays: xref:utils.adoc#Arrays :Arrays-findUpperBound: pass:normal[xref:utils.adoc#Arrays-findUpperBound-uint256---uint256-[`Arrays.findUpperBound`]] :xref-Arrays-findUpperBound-uint256---uint256-: xref:utils.adoc#Arrays-findUpperBound-uint256---uint256- +:Base64: pass:normal[xref:utils.adoc#Base64[`Base64`]] +:xref-Base64: xref:utils.adoc#Base64 +:Base64-_TABLE: pass:normal[xref:utils.adoc#Base64-_TABLE-string[`Base64._TABLE`]] +:xref-Base64-_TABLE-string: xref:utils.adoc#Base64-_TABLE-string +:Base64-encode: pass:normal[xref:utils.adoc#Base64-encode-bytes-[`Base64.encode`]] +:xref-Base64-encode-bytes-: xref:utils.adoc#Base64-encode-bytes- +:Checkpoints: pass:normal[xref:utils.adoc#Checkpoints[`Checkpoints`]] +:xref-Checkpoints: xref:utils.adoc#Checkpoints +:Checkpoints-latest: pass:normal[xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History-[`Checkpoints.latest`]] +:xref-Checkpoints-latest-struct-Checkpoints-History-: xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History- +:Checkpoints-getAtBlock: pass:normal[xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-[`Checkpoints.getAtBlock`]] +:xref-Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256- +:Checkpoints-Checkpoint: pass:normal[xref:utils.adoc#Checkpoints-Checkpoint[`Checkpoints.Checkpoint`]] +:xref-Checkpoints-Checkpoint: xref:utils.adoc#Checkpoints-Checkpoint +:Checkpoints-History: pass:normal[xref:utils.adoc#Checkpoints-History[`Checkpoints.History`]] +:xref-Checkpoints-History: xref:utils.adoc#Checkpoints-History :Context: pass:normal[xref:utils.adoc#Context[`Context`]] :xref-Context: xref:utils.adoc#Context :Context-_msgSender: pass:normal[xref:utils.adoc#Context-_msgSender--[`Context._msgSender`]] @@ -1078,6 +1172,16 @@ :xref-SafeMath-div-uint256-uint256-string-: xref:utils.adoc#SafeMath-div-uint256-uint256-string- :SafeMath-mod: pass:normal[xref:utils.adoc#SafeMath-mod-uint256-uint256-string-[`SafeMath.mod`]] :xref-SafeMath-mod-uint256-uint256-string-: xref:utils.adoc#SafeMath-mod-uint256-uint256-string- +:SignedMath: pass:normal[xref:utils.adoc#SignedMath[`SignedMath`]] +:xref-SignedMath: xref:utils.adoc#SignedMath +:SignedMath-max: pass:normal[xref:utils.adoc#SignedMath-max-int256-int256-[`SignedMath.max`]] +:xref-SignedMath-max-int256-int256-: xref:utils.adoc#SignedMath-max-int256-int256- +:SignedMath-min: pass:normal[xref:utils.adoc#SignedMath-min-int256-int256-[`SignedMath.min`]] +:xref-SignedMath-min-int256-int256-: xref:utils.adoc#SignedMath-min-int256-int256- +:SignedMath-average: pass:normal[xref:utils.adoc#SignedMath-average-int256-int256-[`SignedMath.average`]] +:xref-SignedMath-average-int256-int256-: xref:utils.adoc#SignedMath-average-int256-int256- +:SignedMath-abs: pass:normal[xref:utils.adoc#SignedMath-abs-int256-[`SignedMath.abs`]] +:xref-SignedMath-abs-int256-: xref:utils.adoc#SignedMath-abs-int256- :SignedSafeMath: pass:normal[xref:utils.adoc#SignedSafeMath[`SignedSafeMath`]] :xref-SignedSafeMath: xref:utils.adoc#SignedSafeMath :SignedSafeMath-mul: pass:normal[xref:utils.adoc#SignedSafeMath-mul-int256-int256-[`SignedSafeMath.mul`]] @@ -1256,26 +1360,6 @@ :xref-IERC1155MetadataURI: xref:token/ERC1155.adoc#IERC1155MetadataURI :IERC1155MetadataURI-uri: pass:normal[xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256-[`IERC1155MetadataURI.uri`]] :xref-IERC1155MetadataURI-uri-uint256-: xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256- -:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] -:xref-ERC1155PresetMinterPauser: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser -:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] -:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 -:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] -:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 -:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] -:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-constructor-string- -:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] -:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- -:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] -:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- -:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] -:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-pause-- -:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] -:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-unpause-- -:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] -:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-supportsInterface-bytes4- -:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] -:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- :ERC1155Holder: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder[`ERC1155Holder`]] :xref-ERC1155Holder: xref:token/ERC1155.adoc#ERC1155Holder :ERC1155Holder-onERC1155Received: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-[`ERC1155Holder.onERC1155Received`]] @@ -1320,6 +1404,8 @@ :xref-ERC20-_burn-address-uint256-: xref:token/ERC20.adoc#ERC20-_burn-address-uint256- :ERC20-_approve: pass:normal[xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256-[`ERC20._approve`]] :xref-ERC20-_approve-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256- +:ERC20-_spendAllowance: pass:normal[xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256-[`ERC20._spendAllowance`]] +:xref-ERC20-_spendAllowance-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256- :ERC20-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256-[`ERC20._beforeTokenTransfer`]] :xref-ERC20-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256- :ERC20-_afterTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_afterTokenTransfer-address-address-uint256-[`ERC20._afterTokenTransfer`]] @@ -1412,10 +1498,6 @@ :xref-ERC20Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-_afterTokenTransfer-address-address-uint256- :ERC20Votes-_delegate: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address-[`ERC20Votes._delegate`]] :xref-ERC20Votes-_delegate-address-address-: xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address- -:ERC20Votes-DelegateChanged: pass:normal[xref:token/ERC20.adoc#ERC20Votes-DelegateChanged-address-address-address-[`ERC20Votes.DelegateChanged`]] -:xref-ERC20Votes-DelegateChanged-address-address-address-: xref:token/ERC20.adoc#ERC20Votes-DelegateChanged-address-address-address- -:ERC20Votes-DelegateVotesChanged: pass:normal[xref:token/ERC20.adoc#ERC20Votes-DelegateVotesChanged-address-uint256-uint256-[`ERC20Votes.DelegateVotesChanged`]] -:xref-ERC20Votes-DelegateVotesChanged-address-uint256-uint256-: xref:token/ERC20.adoc#ERC20Votes-DelegateVotesChanged-address-uint256-uint256- :ERC20Votes-Checkpoint: pass:normal[xref:token/ERC20.adoc#ERC20Votes-Checkpoint[`ERC20Votes.Checkpoint`]] :xref-ERC20Votes-Checkpoint: xref:token/ERC20.adoc#ERC20Votes-Checkpoint :ERC20VotesComp: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp[`ERC20VotesComp`]] @@ -1466,26 +1548,6 @@ :xref-IERC20Permit-nonces-address-: xref:token/ERC20.adoc#IERC20Permit-nonces-address- :IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]] :xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR-- -:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20.adoc#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] -:xref-ERC20PresetFixedSupply: xref:token/ERC20.adoc#ERC20PresetFixedSupply -:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20.adoc#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] -:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20.adoc#ERC20PresetFixedSupply-constructor-string-string-uint256-address- -:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] -:xref-ERC20PresetMinterPauser: xref:token/ERC20.adoc#ERC20PresetMinterPauser -:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] -:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20.adoc#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 -:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] -:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20.adoc#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 -:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] -:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-constructor-string-string- -:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] -:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-mint-address-uint256- -:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] -:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20.adoc#ERC20PresetMinterPauser-pause-- -:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] -:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20.adoc#ERC20PresetMinterPauser-unpause-- -:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] -:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- :SafeERC20: pass:normal[xref:token/ERC20.adoc#SafeERC20[`SafeERC20`]] :xref-SafeERC20: xref:token/ERC20.adoc#SafeERC20 :SafeERC20-safeTransfer: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeTransfer-contract-IERC20-address-uint256-[`SafeERC20.safeTransfer`]] @@ -1564,6 +1626,8 @@ :xref-ERC721-_setApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool- :ERC721-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256-[`ERC721._beforeTokenTransfer`]] :xref-ERC721-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256- +:ERC721-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256-[`ERC721._afterTokenTransfer`]] +:xref-ERC721-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256- :IERC721: pass:normal[xref:token/ERC721.adoc#IERC721[`IERC721`]] :xref-IERC721: xref:token/ERC721.adoc#IERC721 :IERC721-balanceOf: pass:normal[xref:token/ERC721.adoc#IERC721-balanceOf-address-[`IERC721.balanceOf`]] @@ -1614,6 +1678,12 @@ :xref-ERC721Pausable: xref:token/ERC721.adoc#ERC721Pausable :ERC721Pausable-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256-[`ERC721Pausable._beforeTokenTransfer`]] :xref-ERC721Pausable-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256- +:ERC721Royalty: pass:normal[xref:token/ERC721.adoc#ERC721Royalty[`ERC721Royalty`]] +:xref-ERC721Royalty: xref:token/ERC721.adoc#ERC721Royalty +:ERC721Royalty-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4-[`ERC721Royalty.supportsInterface`]] +:xref-ERC721Royalty-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4- +:ERC721Royalty-_burn: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256-[`ERC721Royalty._burn`]] +:xref-ERC721Royalty-_burn-uint256-: xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256- :ERC721URIStorage: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage[`ERC721URIStorage`]] :xref-ERC721URIStorage: xref:token/ERC721.adoc#ERC721URIStorage :ERC721URIStorage-tokenURI: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage-tokenURI-uint256-[`ERC721URIStorage.tokenURI`]] @@ -1638,26 +1708,12 @@ :xref-IERC721Metadata-symbol--: xref:token/ERC721.adoc#IERC721Metadata-symbol-- :IERC721Metadata-tokenURI: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256-[`IERC721Metadata.tokenURI`]] :xref-IERC721Metadata-tokenURI-uint256-: xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256- -:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] -:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId -:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] -:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 -:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] -:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 -:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] -:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-constructor-string-string-string- -:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] -:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_baseURI-- -:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] -:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-mint-address- -:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] -:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-pause-- -:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] -:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-unpause-- -:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] -:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- -:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] -:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- +:ERC721Votes: pass:normal[xref:token/ERC721.adoc#ERC721Votes[`ERC721Votes`]] +:xref-ERC721Votes: xref:token/ERC721.adoc#ERC721Votes +:ERC721Votes-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256-[`ERC721Votes._afterTokenTransfer`]] +:xref-ERC721Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256- +:ERC721Votes-_getVotingUnits: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address-[`ERC721Votes._getVotingUnits`]] +:xref-ERC721Votes-_getVotingUnits-address-: xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address- :ERC721Holder: pass:normal[xref:token/ERC721.adoc#ERC721Holder[`ERC721Holder`]] :xref-ERC721Holder: xref:token/ERC721.adoc#ERC721Holder :ERC721Holder-onERC721Received: pass:normal[xref:token/ERC721.adoc#ERC721Holder-onERC721Received-address-address-uint256-bytes-[`ERC721Holder.onERC721Received`]] @@ -1714,6 +1770,8 @@ :xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes- :ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]] :xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256- +:ERC777-_spendAllowance: pass:normal[xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256-[`ERC777._spendAllowance`]] +:xref-ERC777-_spendAllowance-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256- :ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]] :xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256- :IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]] @@ -1766,6 +1824,84 @@ :xref-ERC777PresetFixedSupply: xref:token/ERC777.adoc#ERC777PresetFixedSupply :ERC777PresetFixedSupply-constructor: pass:normal[xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-[`ERC777PresetFixedSupply.constructor`]] :xref-ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-: xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address- +:ERC2981: pass:normal[xref:token/common.adoc#ERC2981[`ERC2981`]] +:xref-ERC2981: xref:token/common.adoc#ERC2981 +:ERC2981-supportsInterface: pass:normal[xref:token/common.adoc#ERC2981-supportsInterface-bytes4-[`ERC2981.supportsInterface`]] +:xref-ERC2981-supportsInterface-bytes4-: xref:token/common.adoc#ERC2981-supportsInterface-bytes4- +:ERC2981-royaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256-[`ERC2981.royaltyInfo`]] +:xref-ERC2981-royaltyInfo-uint256-uint256-: xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256- +:ERC2981-_feeDenominator: pass:normal[xref:token/common.adoc#ERC2981-_feeDenominator--[`ERC2981._feeDenominator`]] +:xref-ERC2981-_feeDenominator--: xref:token/common.adoc#ERC2981-_feeDenominator-- +:ERC2981-_setDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96-[`ERC2981._setDefaultRoyalty`]] +:xref-ERC2981-_setDefaultRoyalty-address-uint96-: xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96- +:ERC2981-_deleteDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty--[`ERC2981._deleteDefaultRoyalty`]] +:xref-ERC2981-_deleteDefaultRoyalty--: xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty-- +:ERC2981-_setTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96-[`ERC2981._setTokenRoyalty`]] +:xref-ERC2981-_setTokenRoyalty-uint256-address-uint96-: xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96- +:ERC2981-_resetTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256-[`ERC2981._resetTokenRoyalty`]] +:xref-ERC2981-_resetTokenRoyalty-uint256-: xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256- +:ERC2981-RoyaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-RoyaltyInfo[`ERC2981.RoyaltyInfo`]] +:xref-ERC2981-RoyaltyInfo: xref:token/common.adoc#ERC2981-RoyaltyInfo +:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] +:xref-ERC1155PresetMinterPauser: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser +:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] +:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string- +:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] +:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- +:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] +:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- +:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] +:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause-- +:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] +:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause-- +:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] +:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4- +:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] +:xref-ERC20PresetFixedSupply: xref:token/ERC20/presets.md#ERC20PresetFixedSupply +:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] +:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address- +:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] +:xref-ERC20PresetMinterPauser: xref:token/ERC20/presets.md#ERC20PresetMinterPauser +:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] +:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string- +:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] +:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256- +:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] +:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause-- +:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] +:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause-- +:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] +:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId +:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] +:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string- +:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] +:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI-- +:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] +:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address- +:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] +:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause-- +:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] +:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause-- +:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] +:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] +:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- = Security [.readme-notice] @@ -1789,7 +1925,7 @@ TIP: For an overview on reentrancy and the possible mechanisms to prevent it, re [.contract] [[PullPayment]] -=== `++PullPayment++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/security/PullPayment.sol[{github-icon},role=heading-link] +=== `++PullPayment++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/security/PullPayment.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -1875,7 +2011,7 @@ there is no danger of them being spent before withdrawal. [.contract] [[ReentrancyGuard]] -=== `++ReentrancyGuard++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/security/ReentrancyGuard.sol[{github-icon},role=heading-link] +=== `++ReentrancyGuard++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/security/ReentrancyGuard.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -1943,7 +2079,7 @@ by making the `nonReentrant` function external, and making it call a [.contract] [[Pausable]] -=== `++Pausable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/security/Pausable.sol[{github-icon},role=heading-link] +=== `++Pausable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/security/Pausable.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity diff --git a/docs/modules/api/pages/token/ERC1155.adoc b/docs/modules/api/pages/token/ERC1155.adoc index b180e6557..858544b67 100644 --- a/docs/modules/api/pages/token/ERC1155.adoc +++ b/docs/modules/api/pages/token/ERC1155.adoc @@ -192,6 +192,8 @@ :xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32- :Governor-_castVote: pass:normal[xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-[`Governor._castVote`]] :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string- +:Governor-relay: pass:normal[xref:governance.adoc#Governor-relay-address-uint256-bytes-[`Governor.relay`]] +:xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes- :Governor-_executor: pass:normal[xref:governance.adoc#Governor-_executor--[`Governor._executor`]] :xref-Governor-_executor--: xref:governance.adoc#Governor-_executor-- :Governor-ProposalCore: pass:normal[xref:governance.adoc#Governor-ProposalCore[`Governor.ProposalCore`]] @@ -368,6 +370,24 @@ :xref-GovernorCountingSimple-ProposalVote: xref:governance.adoc#GovernorCountingSimple-ProposalVote :GovernorCountingSimple-VoteType: pass:normal[xref:governance.adoc#GovernorCountingSimple-VoteType[`GovernorCountingSimple.VoteType`]] :xref-GovernorCountingSimple-VoteType: xref:governance.adoc#GovernorCountingSimple-VoteType +:GovernorPreventLateQuorum: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum[`GovernorPreventLateQuorum`]] +:xref-GovernorPreventLateQuorum: xref:governance.adoc#GovernorPreventLateQuorum +:GovernorPreventLateQuorum-constructor: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64-[`GovernorPreventLateQuorum.constructor`]] +:xref-GovernorPreventLateQuorum-constructor-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64- +:GovernorPreventLateQuorum-proposalDeadline: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256-[`GovernorPreventLateQuorum.proposalDeadline`]] +:xref-GovernorPreventLateQuorum-proposalDeadline-uint256-: xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256- +:GovernorPreventLateQuorum-_castVote: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-[`GovernorPreventLateQuorum._castVote`]] +:xref-GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-: xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string- +:GovernorPreventLateQuorum-lateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension--[`GovernorPreventLateQuorum.lateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-lateQuorumVoteExtension--: xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension-- +:GovernorPreventLateQuorum-setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum.setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-_setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum._setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-ProposalExtended: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-[`GovernorPreventLateQuorum.ProposalExtended`]] +:xref-GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64- +:GovernorPreventLateQuorum-LateQuorumVoteExtensionSet: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-[`GovernorPreventLateQuorum.LateQuorumVoteExtensionSet`]] +:xref-GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64- :GovernorProposalThreshold: pass:normal[xref:governance.adoc#GovernorProposalThreshold[`GovernorProposalThreshold`]] :xref-GovernorProposalThreshold: xref:governance.adoc#GovernorProposalThreshold :GovernorProposalThreshold-propose: pass:normal[xref:governance.adoc#GovernorProposalThreshold-propose-address---uint256---bytes---string-[`GovernorProposalThreshold.propose`]] @@ -484,10 +504,10 @@ :xref-GovernorTimelockControl-TimelockChange-address-address-: xref:governance.adoc#GovernorTimelockControl-TimelockChange-address-address- :GovernorVotes: pass:normal[xref:governance.adoc#GovernorVotes[`GovernorVotes`]] :xref-GovernorVotes: xref:governance.adoc#GovernorVotes -:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-ERC20Votes[`GovernorVotes.token`]] -:xref-GovernorVotes-token-contract-ERC20Votes: xref:governance.adoc#GovernorVotes-token-contract-ERC20Votes -:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-ERC20Votes-[`GovernorVotes.constructor`]] -:xref-GovernorVotes-constructor-contract-ERC20Votes-: xref:governance.adoc#GovernorVotes-constructor-contract-ERC20Votes- +:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-IVotes[`GovernorVotes.token`]] +:xref-GovernorVotes-token-contract-IVotes: xref:governance.adoc#GovernorVotes-token-contract-IVotes +:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-IVotes-[`GovernorVotes.constructor`]] +:xref-GovernorVotes-constructor-contract-IVotes-: xref:governance.adoc#GovernorVotes-constructor-contract-IVotes- :GovernorVotes-getVotes: pass:normal[xref:governance.adoc#GovernorVotes-getVotes-address-uint256-[`GovernorVotes.getVotes`]] :xref-GovernorVotes-getVotes-address-uint256-: xref:governance.adoc#GovernorVotes-getVotes-address-uint256- :GovernorVotesComp: pass:normal[xref:governance.adoc#GovernorVotesComp[`GovernorVotesComp`]] @@ -524,6 +544,52 @@ :xref-IGovernorTimelock-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernorTimelock-queue-address---uint256---bytes---bytes32- :IGovernorTimelock-ProposalQueued: pass:normal[xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256-[`IGovernorTimelock.ProposalQueued`]] :xref-IGovernorTimelock-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256- +:IVotes: pass:normal[xref:governance.adoc#IVotes[`IVotes`]] +:xref-IVotes: xref:governance.adoc#IVotes +:IVotes-getVotes: pass:normal[xref:governance.adoc#IVotes-getVotes-address-[`IVotes.getVotes`]] +:xref-IVotes-getVotes-address-: xref:governance.adoc#IVotes-getVotes-address- +:IVotes-getPastVotes: pass:normal[xref:governance.adoc#IVotes-getPastVotes-address-uint256-[`IVotes.getPastVotes`]] +:xref-IVotes-getPastVotes-address-uint256-: xref:governance.adoc#IVotes-getPastVotes-address-uint256- +:IVotes-getPastTotalSupply: pass:normal[xref:governance.adoc#IVotes-getPastTotalSupply-uint256-[`IVotes.getPastTotalSupply`]] +:xref-IVotes-getPastTotalSupply-uint256-: xref:governance.adoc#IVotes-getPastTotalSupply-uint256- +:IVotes-delegates: pass:normal[xref:governance.adoc#IVotes-delegates-address-[`IVotes.delegates`]] +:xref-IVotes-delegates-address-: xref:governance.adoc#IVotes-delegates-address- +:IVotes-delegate: pass:normal[xref:governance.adoc#IVotes-delegate-address-[`IVotes.delegate`]] +:xref-IVotes-delegate-address-: xref:governance.adoc#IVotes-delegate-address- +:IVotes-delegateBySig: pass:normal[xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`IVotes.delegateBySig`]] +:xref-IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:IVotes-DelegateChanged: pass:normal[xref:governance.adoc#IVotes-DelegateChanged-address-address-address-[`IVotes.DelegateChanged`]] +:xref-IVotes-DelegateChanged-address-address-address-: xref:governance.adoc#IVotes-DelegateChanged-address-address-address- +:IVotes-DelegateVotesChanged: pass:normal[xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256-[`IVotes.DelegateVotesChanged`]] +:xref-IVotes-DelegateVotesChanged-address-uint256-uint256-: xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256- +:Votes: pass:normal[xref:governance.adoc#Votes[`Votes`]] +:xref-Votes: xref:governance.adoc#Votes +:Votes-getVotes: pass:normal[xref:governance.adoc#Votes-getVotes-address-[`Votes.getVotes`]] +:xref-Votes-getVotes-address-: xref:governance.adoc#Votes-getVotes-address- +:Votes-getPastVotes: pass:normal[xref:governance.adoc#Votes-getPastVotes-address-uint256-[`Votes.getPastVotes`]] +:xref-Votes-getPastVotes-address-uint256-: xref:governance.adoc#Votes-getPastVotes-address-uint256- +:Votes-getPastTotalSupply: pass:normal[xref:governance.adoc#Votes-getPastTotalSupply-uint256-[`Votes.getPastTotalSupply`]] +:xref-Votes-getPastTotalSupply-uint256-: xref:governance.adoc#Votes-getPastTotalSupply-uint256- +:Votes-_getTotalSupply: pass:normal[xref:governance.adoc#Votes-_getTotalSupply--[`Votes._getTotalSupply`]] +:xref-Votes-_getTotalSupply--: xref:governance.adoc#Votes-_getTotalSupply-- +:Votes-delegates: pass:normal[xref:governance.adoc#Votes-delegates-address-[`Votes.delegates`]] +:xref-Votes-delegates-address-: xref:governance.adoc#Votes-delegates-address- +:Votes-delegate: pass:normal[xref:governance.adoc#Votes-delegate-address-[`Votes.delegate`]] +:xref-Votes-delegate-address-: xref:governance.adoc#Votes-delegate-address- +:Votes-delegateBySig: pass:normal[xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`Votes.delegateBySig`]] +:xref-Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:Votes-_delegate: pass:normal[xref:governance.adoc#Votes-_delegate-address-address-[`Votes._delegate`]] +:xref-Votes-_delegate-address-address-: xref:governance.adoc#Votes-_delegate-address-address- +:Votes-_transferVotingUnits: pass:normal[xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256-[`Votes._transferVotingUnits`]] +:xref-Votes-_transferVotingUnits-address-address-uint256-: xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256- +:Votes-_useNonce: pass:normal[xref:governance.adoc#Votes-_useNonce-address-[`Votes._useNonce`]] +:xref-Votes-_useNonce-address-: xref:governance.adoc#Votes-_useNonce-address- +:Votes-nonces: pass:normal[xref:governance.adoc#Votes-nonces-address-[`Votes.nonces`]] +:xref-Votes-nonces-address-: xref:governance.adoc#Votes-nonces-address- +:Votes-DOMAIN_SEPARATOR: pass:normal[xref:governance.adoc#Votes-DOMAIN_SEPARATOR--[`Votes.DOMAIN_SEPARATOR`]] +:xref-Votes-DOMAIN_SEPARATOR--: xref:governance.adoc#Votes-DOMAIN_SEPARATOR-- +:Votes-_getVotingUnits: pass:normal[xref:governance.adoc#Votes-_getVotingUnits-address-[`Votes._getVotingUnits`]] +:xref-Votes-_getVotingUnits-address-: xref:governance.adoc#Votes-_getVotingUnits-address- :IERC1271: pass:normal[xref:interfaces.adoc#IERC1271[`IERC1271`]] :xref-IERC1271: xref:interfaces.adoc#IERC1271 :IERC1271-isValidSignature: pass:normal[xref:interfaces.adoc#IERC1271-isValidSignature-bytes32-bytes-[`IERC1271.isValidSignature`]] @@ -566,6 +632,10 @@ :xref-IERC3156FlashLender-flashFee-address-uint256-: xref:interfaces.adoc#IERC3156FlashLender-flashFee-address-uint256- :IERC3156FlashLender-flashLoan: pass:normal[xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-[`IERC3156FlashLender.flashLoan`]] :xref-IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-: xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes- +:IERC1822Proxiable: pass:normal[xref:interfaces.adoc#IERC1822Proxiable[`IERC1822Proxiable`]] +:xref-IERC1822Proxiable: xref:interfaces.adoc#IERC1822Proxiable +:IERC1822Proxiable-proxiableUUID: pass:normal[xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID--[`IERC1822Proxiable.proxiableUUID`]] +:xref-IERC1822Proxiable-proxiableUUID--: xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID-- :IERC2612: pass:normal[xref:interfaces.adoc#IERC2612[`IERC2612`]] :xref-IERC2612: xref:interfaces.adoc#IERC2612 :ERC2771Context: pass:normal[xref:metatx.adoc#ERC2771Context[`ERC2771Context`]] @@ -618,8 +688,8 @@ :xref-ERC1967Upgrade-_upgradeTo-address-: xref:proxy.adoc#ERC1967Upgrade-_upgradeTo-address- :ERC1967Upgrade-_upgradeToAndCall: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCall`]] :xref-ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool- -:ERC1967Upgrade-_upgradeToAndCallSecure: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallSecure`]] -:xref-ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool- +:ERC1967Upgrade-_upgradeToAndCallUUPS: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallUUPS`]] +:xref-ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool- :ERC1967Upgrade-_getAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_getAdmin--[`ERC1967Upgrade._getAdmin`]] :xref-ERC1967Upgrade-_getAdmin--: xref:proxy.adoc#ERC1967Upgrade-_getAdmin-- :ERC1967Upgrade-_changeAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_changeAdmin-address-[`ERC1967Upgrade._changeAdmin`]] @@ -714,6 +784,10 @@ :xref-UUPSUpgradeable: xref:proxy.adoc#UUPSUpgradeable :UUPSUpgradeable-onlyProxy: pass:normal[xref:proxy.adoc#UUPSUpgradeable-onlyProxy--[`UUPSUpgradeable.onlyProxy`]] :xref-UUPSUpgradeable-onlyProxy--: xref:proxy.adoc#UUPSUpgradeable-onlyProxy-- +:UUPSUpgradeable-notDelegated: pass:normal[xref:proxy.adoc#UUPSUpgradeable-notDelegated--[`UUPSUpgradeable.notDelegated`]] +:xref-UUPSUpgradeable-notDelegated--: xref:proxy.adoc#UUPSUpgradeable-notDelegated-- +:UUPSUpgradeable-proxiableUUID: pass:normal[xref:proxy.adoc#UUPSUpgradeable-proxiableUUID--[`UUPSUpgradeable.proxiableUUID`]] +:xref-UUPSUpgradeable-proxiableUUID--: xref:proxy.adoc#UUPSUpgradeable-proxiableUUID-- :UUPSUpgradeable-upgradeTo: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address-[`UUPSUpgradeable.upgradeTo`]] :xref-UUPSUpgradeable-upgradeTo-address-: xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address- :UUPSUpgradeable-upgradeToAndCall: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeToAndCall-address-bytes-[`UUPSUpgradeable.upgradeToAndCall`]] @@ -782,6 +856,26 @@ :xref-Arrays: xref:utils.adoc#Arrays :Arrays-findUpperBound: pass:normal[xref:utils.adoc#Arrays-findUpperBound-uint256---uint256-[`Arrays.findUpperBound`]] :xref-Arrays-findUpperBound-uint256---uint256-: xref:utils.adoc#Arrays-findUpperBound-uint256---uint256- +:Base64: pass:normal[xref:utils.adoc#Base64[`Base64`]] +:xref-Base64: xref:utils.adoc#Base64 +:Base64-_TABLE: pass:normal[xref:utils.adoc#Base64-_TABLE-string[`Base64._TABLE`]] +:xref-Base64-_TABLE-string: xref:utils.adoc#Base64-_TABLE-string +:Base64-encode: pass:normal[xref:utils.adoc#Base64-encode-bytes-[`Base64.encode`]] +:xref-Base64-encode-bytes-: xref:utils.adoc#Base64-encode-bytes- +:Checkpoints: pass:normal[xref:utils.adoc#Checkpoints[`Checkpoints`]] +:xref-Checkpoints: xref:utils.adoc#Checkpoints +:Checkpoints-latest: pass:normal[xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History-[`Checkpoints.latest`]] +:xref-Checkpoints-latest-struct-Checkpoints-History-: xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History- +:Checkpoints-getAtBlock: pass:normal[xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-[`Checkpoints.getAtBlock`]] +:xref-Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256- +:Checkpoints-Checkpoint: pass:normal[xref:utils.adoc#Checkpoints-Checkpoint[`Checkpoints.Checkpoint`]] +:xref-Checkpoints-Checkpoint: xref:utils.adoc#Checkpoints-Checkpoint +:Checkpoints-History: pass:normal[xref:utils.adoc#Checkpoints-History[`Checkpoints.History`]] +:xref-Checkpoints-History: xref:utils.adoc#Checkpoints-History :Context: pass:normal[xref:utils.adoc#Context[`Context`]] :xref-Context: xref:utils.adoc#Context :Context-_msgSender: pass:normal[xref:utils.adoc#Context-_msgSender--[`Context._msgSender`]] @@ -1078,6 +1172,16 @@ :xref-SafeMath-div-uint256-uint256-string-: xref:utils.adoc#SafeMath-div-uint256-uint256-string- :SafeMath-mod: pass:normal[xref:utils.adoc#SafeMath-mod-uint256-uint256-string-[`SafeMath.mod`]] :xref-SafeMath-mod-uint256-uint256-string-: xref:utils.adoc#SafeMath-mod-uint256-uint256-string- +:SignedMath: pass:normal[xref:utils.adoc#SignedMath[`SignedMath`]] +:xref-SignedMath: xref:utils.adoc#SignedMath +:SignedMath-max: pass:normal[xref:utils.adoc#SignedMath-max-int256-int256-[`SignedMath.max`]] +:xref-SignedMath-max-int256-int256-: xref:utils.adoc#SignedMath-max-int256-int256- +:SignedMath-min: pass:normal[xref:utils.adoc#SignedMath-min-int256-int256-[`SignedMath.min`]] +:xref-SignedMath-min-int256-int256-: xref:utils.adoc#SignedMath-min-int256-int256- +:SignedMath-average: pass:normal[xref:utils.adoc#SignedMath-average-int256-int256-[`SignedMath.average`]] +:xref-SignedMath-average-int256-int256-: xref:utils.adoc#SignedMath-average-int256-int256- +:SignedMath-abs: pass:normal[xref:utils.adoc#SignedMath-abs-int256-[`SignedMath.abs`]] +:xref-SignedMath-abs-int256-: xref:utils.adoc#SignedMath-abs-int256- :SignedSafeMath: pass:normal[xref:utils.adoc#SignedSafeMath[`SignedSafeMath`]] :xref-SignedSafeMath: xref:utils.adoc#SignedSafeMath :SignedSafeMath-mul: pass:normal[xref:utils.adoc#SignedSafeMath-mul-int256-int256-[`SignedSafeMath.mul`]] @@ -1256,26 +1360,6 @@ :xref-IERC1155MetadataURI: xref:token/ERC1155.adoc#IERC1155MetadataURI :IERC1155MetadataURI-uri: pass:normal[xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256-[`IERC1155MetadataURI.uri`]] :xref-IERC1155MetadataURI-uri-uint256-: xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256- -:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] -:xref-ERC1155PresetMinterPauser: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser -:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] -:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 -:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] -:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 -:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] -:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-constructor-string- -:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] -:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- -:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] -:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- -:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] -:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-pause-- -:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] -:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-unpause-- -:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] -:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-supportsInterface-bytes4- -:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] -:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- :ERC1155Holder: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder[`ERC1155Holder`]] :xref-ERC1155Holder: xref:token/ERC1155.adoc#ERC1155Holder :ERC1155Holder-onERC1155Received: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-[`ERC1155Holder.onERC1155Received`]] @@ -1320,6 +1404,8 @@ :xref-ERC20-_burn-address-uint256-: xref:token/ERC20.adoc#ERC20-_burn-address-uint256- :ERC20-_approve: pass:normal[xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256-[`ERC20._approve`]] :xref-ERC20-_approve-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256- +:ERC20-_spendAllowance: pass:normal[xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256-[`ERC20._spendAllowance`]] +:xref-ERC20-_spendAllowance-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256- :ERC20-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256-[`ERC20._beforeTokenTransfer`]] :xref-ERC20-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256- :ERC20-_afterTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_afterTokenTransfer-address-address-uint256-[`ERC20._afterTokenTransfer`]] @@ -1412,10 +1498,6 @@ :xref-ERC20Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-_afterTokenTransfer-address-address-uint256- :ERC20Votes-_delegate: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address-[`ERC20Votes._delegate`]] :xref-ERC20Votes-_delegate-address-address-: xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address- -:ERC20Votes-DelegateChanged: pass:normal[xref:token/ERC20.adoc#ERC20Votes-DelegateChanged-address-address-address-[`ERC20Votes.DelegateChanged`]] -:xref-ERC20Votes-DelegateChanged-address-address-address-: xref:token/ERC20.adoc#ERC20Votes-DelegateChanged-address-address-address- -:ERC20Votes-DelegateVotesChanged: pass:normal[xref:token/ERC20.adoc#ERC20Votes-DelegateVotesChanged-address-uint256-uint256-[`ERC20Votes.DelegateVotesChanged`]] -:xref-ERC20Votes-DelegateVotesChanged-address-uint256-uint256-: xref:token/ERC20.adoc#ERC20Votes-DelegateVotesChanged-address-uint256-uint256- :ERC20Votes-Checkpoint: pass:normal[xref:token/ERC20.adoc#ERC20Votes-Checkpoint[`ERC20Votes.Checkpoint`]] :xref-ERC20Votes-Checkpoint: xref:token/ERC20.adoc#ERC20Votes-Checkpoint :ERC20VotesComp: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp[`ERC20VotesComp`]] @@ -1466,26 +1548,6 @@ :xref-IERC20Permit-nonces-address-: xref:token/ERC20.adoc#IERC20Permit-nonces-address- :IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]] :xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR-- -:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20.adoc#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] -:xref-ERC20PresetFixedSupply: xref:token/ERC20.adoc#ERC20PresetFixedSupply -:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20.adoc#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] -:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20.adoc#ERC20PresetFixedSupply-constructor-string-string-uint256-address- -:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] -:xref-ERC20PresetMinterPauser: xref:token/ERC20.adoc#ERC20PresetMinterPauser -:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] -:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20.adoc#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 -:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] -:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20.adoc#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 -:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] -:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-constructor-string-string- -:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] -:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-mint-address-uint256- -:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] -:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20.adoc#ERC20PresetMinterPauser-pause-- -:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] -:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20.adoc#ERC20PresetMinterPauser-unpause-- -:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] -:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- :SafeERC20: pass:normal[xref:token/ERC20.adoc#SafeERC20[`SafeERC20`]] :xref-SafeERC20: xref:token/ERC20.adoc#SafeERC20 :SafeERC20-safeTransfer: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeTransfer-contract-IERC20-address-uint256-[`SafeERC20.safeTransfer`]] @@ -1564,6 +1626,8 @@ :xref-ERC721-_setApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool- :ERC721-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256-[`ERC721._beforeTokenTransfer`]] :xref-ERC721-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256- +:ERC721-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256-[`ERC721._afterTokenTransfer`]] +:xref-ERC721-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256- :IERC721: pass:normal[xref:token/ERC721.adoc#IERC721[`IERC721`]] :xref-IERC721: xref:token/ERC721.adoc#IERC721 :IERC721-balanceOf: pass:normal[xref:token/ERC721.adoc#IERC721-balanceOf-address-[`IERC721.balanceOf`]] @@ -1614,6 +1678,12 @@ :xref-ERC721Pausable: xref:token/ERC721.adoc#ERC721Pausable :ERC721Pausable-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256-[`ERC721Pausable._beforeTokenTransfer`]] :xref-ERC721Pausable-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256- +:ERC721Royalty: pass:normal[xref:token/ERC721.adoc#ERC721Royalty[`ERC721Royalty`]] +:xref-ERC721Royalty: xref:token/ERC721.adoc#ERC721Royalty +:ERC721Royalty-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4-[`ERC721Royalty.supportsInterface`]] +:xref-ERC721Royalty-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4- +:ERC721Royalty-_burn: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256-[`ERC721Royalty._burn`]] +:xref-ERC721Royalty-_burn-uint256-: xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256- :ERC721URIStorage: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage[`ERC721URIStorage`]] :xref-ERC721URIStorage: xref:token/ERC721.adoc#ERC721URIStorage :ERC721URIStorage-tokenURI: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage-tokenURI-uint256-[`ERC721URIStorage.tokenURI`]] @@ -1638,26 +1708,12 @@ :xref-IERC721Metadata-symbol--: xref:token/ERC721.adoc#IERC721Metadata-symbol-- :IERC721Metadata-tokenURI: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256-[`IERC721Metadata.tokenURI`]] :xref-IERC721Metadata-tokenURI-uint256-: xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256- -:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] -:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId -:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] -:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 -:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] -:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 -:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] -:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-constructor-string-string-string- -:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] -:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_baseURI-- -:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] -:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-mint-address- -:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] -:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-pause-- -:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] -:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-unpause-- -:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] -:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- -:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] -:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- +:ERC721Votes: pass:normal[xref:token/ERC721.adoc#ERC721Votes[`ERC721Votes`]] +:xref-ERC721Votes: xref:token/ERC721.adoc#ERC721Votes +:ERC721Votes-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256-[`ERC721Votes._afterTokenTransfer`]] +:xref-ERC721Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256- +:ERC721Votes-_getVotingUnits: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address-[`ERC721Votes._getVotingUnits`]] +:xref-ERC721Votes-_getVotingUnits-address-: xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address- :ERC721Holder: pass:normal[xref:token/ERC721.adoc#ERC721Holder[`ERC721Holder`]] :xref-ERC721Holder: xref:token/ERC721.adoc#ERC721Holder :ERC721Holder-onERC721Received: pass:normal[xref:token/ERC721.adoc#ERC721Holder-onERC721Received-address-address-uint256-bytes-[`ERC721Holder.onERC721Received`]] @@ -1714,6 +1770,8 @@ :xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes- :ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]] :xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256- +:ERC777-_spendAllowance: pass:normal[xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256-[`ERC777._spendAllowance`]] +:xref-ERC777-_spendAllowance-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256- :ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]] :xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256- :IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]] @@ -1766,6 +1824,84 @@ :xref-ERC777PresetFixedSupply: xref:token/ERC777.adoc#ERC777PresetFixedSupply :ERC777PresetFixedSupply-constructor: pass:normal[xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-[`ERC777PresetFixedSupply.constructor`]] :xref-ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-: xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address- +:ERC2981: pass:normal[xref:token/common.adoc#ERC2981[`ERC2981`]] +:xref-ERC2981: xref:token/common.adoc#ERC2981 +:ERC2981-supportsInterface: pass:normal[xref:token/common.adoc#ERC2981-supportsInterface-bytes4-[`ERC2981.supportsInterface`]] +:xref-ERC2981-supportsInterface-bytes4-: xref:token/common.adoc#ERC2981-supportsInterface-bytes4- +:ERC2981-royaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256-[`ERC2981.royaltyInfo`]] +:xref-ERC2981-royaltyInfo-uint256-uint256-: xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256- +:ERC2981-_feeDenominator: pass:normal[xref:token/common.adoc#ERC2981-_feeDenominator--[`ERC2981._feeDenominator`]] +:xref-ERC2981-_feeDenominator--: xref:token/common.adoc#ERC2981-_feeDenominator-- +:ERC2981-_setDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96-[`ERC2981._setDefaultRoyalty`]] +:xref-ERC2981-_setDefaultRoyalty-address-uint96-: xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96- +:ERC2981-_deleteDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty--[`ERC2981._deleteDefaultRoyalty`]] +:xref-ERC2981-_deleteDefaultRoyalty--: xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty-- +:ERC2981-_setTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96-[`ERC2981._setTokenRoyalty`]] +:xref-ERC2981-_setTokenRoyalty-uint256-address-uint96-: xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96- +:ERC2981-_resetTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256-[`ERC2981._resetTokenRoyalty`]] +:xref-ERC2981-_resetTokenRoyalty-uint256-: xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256- +:ERC2981-RoyaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-RoyaltyInfo[`ERC2981.RoyaltyInfo`]] +:xref-ERC2981-RoyaltyInfo: xref:token/common.adoc#ERC2981-RoyaltyInfo +:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] +:xref-ERC1155PresetMinterPauser: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser +:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] +:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string- +:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] +:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- +:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] +:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- +:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] +:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause-- +:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] +:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause-- +:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] +:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4- +:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] +:xref-ERC20PresetFixedSupply: xref:token/ERC20/presets.md#ERC20PresetFixedSupply +:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] +:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address- +:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] +:xref-ERC20PresetMinterPauser: xref:token/ERC20/presets.md#ERC20PresetMinterPauser +:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] +:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string- +:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] +:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256- +:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] +:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause-- +:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] +:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause-- +:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] +:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId +:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] +:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string- +:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] +:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI-- +:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] +:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address- +:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] +:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause-- +:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] +:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause-- +:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] +:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] +:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- = ERC 1155 [.readme-notice] @@ -1800,7 +1936,7 @@ NOTE: This core set of contracts is designed to be unopinionated, allowing devel [.contract] [[IERC1155]] -=== `++IERC1155++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC1155/IERC1155.sol[{github-icon},role=heading-link] +=== `++IERC1155++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC1155/IERC1155.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -1951,7 +2087,7 @@ returned by {IERC1155MetadataURI-uri}. [.contract] [[IERC1155MetadataURI]] -=== `++IERC1155MetadataURI++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol[{github-icon},role=heading-link] +=== `++IERC1155MetadataURI++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2035,7 +2171,7 @@ clients with the actual token type ID. [.contract] [[ERC1155]] -=== `++ERC1155++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC1155/ERC1155.sol[{github-icon},role=heading-link] +=== `++ERC1155++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC1155/ERC1155.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2317,7 +2453,7 @@ To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hook [.contract] [[IERC1155Receiver]] -=== `++IERC1155Receiver++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC1155/IERC1155Receiver.sol[{github-icon},role=heading-link] +=== `++IERC1155Receiver++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC1155/IERC1155Receiver.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2346,32 +2482,71 @@ _Available since v3.1._ ==== `[.contract-item-name]#++onERC1155Received++#++(address operator, address from, uint256 id, uint256 value, bytes data) → bytes4++` [.item-kind]#external# Handles the receipt of a single ERC1155 token type. This function is - called at the end of a `safeTransferFrom` after the balance has been updated. - To accept the transfer, this must return - `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` - (i.e. 0xf23a6e61, or its own function selector). - @param operator The address which initiated the transfer (i.e. msg.sender) - @param from The address which previously owned the token - @param id The ID of the token being transferred - @param value The amount of tokens being transferred - @param data Additional data with no specified format - @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed +called at the end of a `safeTransferFrom` after the balance has been updated. + +NOTE: To accept the transfer, this must return +`bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` +(i.e. 0xf23a6e61, or its own function selector). + + [.contract-item] [[IERC1155Receiver-onERC1155BatchReceived-address-address-uint256---uint256---bytes-]] ==== `[.contract-item-name]#++onERC1155BatchReceived++#++(address operator, address from, uint256[] ids, uint256[] values, bytes data) → bytes4++` [.item-kind]#external# Handles the receipt of a multiple ERC1155 token types. This function - is called at the end of a `safeBatchTransferFrom` after the balances have - been updated. To accept the transfer(s), this must return - `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` - (i.e. 0xbc197c81, or its own function selector). - @param operator The address which initiated the batch transfer (i.e. msg.sender) - @param from The address which previously owned the token - @param ids An array containing ids of each token being transferred (order and length must match values array) - @param values An array containing amounts of each token being transferred (order and length must match ids array) - @param data Additional data with no specified format - @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed +is called at the end of a `safeBatchTransferFrom` after the balances have +been updated. + +NOTE: To accept the transfer(s), this must return +`bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` +(i.e. 0xbc197c81, or its own function selector). + + + + + + +:ERC1155Receiver: pass:normal[xref:#ERC1155Receiver[`++ERC1155Receiver++`]] +:supportsInterface: pass:normal[xref:#ERC1155Receiver-supportsInterface-bytes4-[`++supportsInterface++`]] + +[.contract] +[[ERC1155Receiver]] +=== `++ERC1155Receiver++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC1155/utils/ERC1155Receiver.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@openzeppelin/contracts/token/ERC1155/utils/ERC1155Receiver.sol"; +``` + +_Available since v3.1._ + + +[.contract-index] +.Functions +-- +* {xref-ERC1155Receiver-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`] + +[.contract-subindex-inherited] +.IERC1155Receiver +* {xref-IERC1155Receiver-onERC1155Received-address-address-uint256-uint256-bytes-}[`++onERC1155Received(operator, from, id, value, data)++`] +* {xref-IERC1155Receiver-onERC1155BatchReceived-address-address-uint256---uint256---bytes-}[`++onERC1155BatchReceived(operator, from, ids, values, data)++`] + +[.contract-subindex-inherited] +.ERC165 + +[.contract-subindex-inherited] +.IERC165 + +-- + + + +[.contract-item] +[[ERC1155Receiver-supportsInterface-bytes4-]] +==== `[.contract-item-name]#++supportsInterface++#++(bytes4 interfaceId) → bool++` [.item-kind]#public# + +See {IERC165-supportsInterface}. @@ -2383,7 +2558,7 @@ Handles the receipt of a multiple ERC1155 token types. This function [.contract] [[ERC1155Pausable]] -=== `++ERC1155Pausable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC1155/extensions/ERC1155Pausable.sol[{github-icon},role=heading-link] +=== `++ERC1155Pausable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC1155/extensions/ERC1155Pausable.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2497,7 +2672,7 @@ Requirements: [.contract] [[ERC1155Burnable]] -=== `++ERC1155Burnable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC1155/extensions/ERC1155Burnable.sol[{github-icon},role=heading-link] +=== `++ERC1155Burnable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC1155/extensions/ERC1155Burnable.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2602,7 +2777,7 @@ _Available since v3.1._ [.contract] [[ERC1155Supply]] -=== `++ERC1155Supply++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC1155/extensions/ERC1155Supply.sol[{github-icon},role=heading-link] +=== `++ERC1155Supply++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC1155/extensions/ERC1155Supply.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2712,238 +2887,6 @@ See {ERC1155-_beforeTokenTransfer}. These contracts are preconfigured combinations of the above features. They can be used through inheritance or as models to copy and paste their source code. -:ERC1155PresetMinterPauser: pass:normal[xref:#ERC1155PresetMinterPauser[`++ERC1155PresetMinterPauser++`]] -:MINTER_ROLE: pass:normal[xref:#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`++MINTER_ROLE++`]] -:PAUSER_ROLE: pass:normal[xref:#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`++PAUSER_ROLE++`]] -:constructor: pass:normal[xref:#ERC1155PresetMinterPauser-constructor-string-[`++constructor++`]] -:mint: pass:normal[xref:#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`++mint++`]] -:mintBatch: pass:normal[xref:#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`++mintBatch++`]] -:pause: pass:normal[xref:#ERC1155PresetMinterPauser-pause--[`++pause++`]] -:unpause: pass:normal[xref:#ERC1155PresetMinterPauser-unpause--[`++unpause++`]] -:supportsInterface: pass:normal[xref:#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`++supportsInterface++`]] -:_beforeTokenTransfer: pass:normal[xref:#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`++_beforeTokenTransfer++`]] - -[.contract] -[[ERC1155PresetMinterPauser]] -=== `++ERC1155PresetMinterPauser++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC1155/presets/ERC1155PresetMinterPauser.sol[{github-icon},role=heading-link] - -[.hljs-theme-light.nopadding] -```solidity -import "@openzeppelin/contracts/token/ERC1155/presets/ERC1155PresetMinterPauser.sol"; -``` - -{ERC1155} token, including: - - - ability for holders to burn (destroy) their tokens - - a minter role that allows for token minting (creation) - - a pauser role that allows to stop all token transfers - -This contract uses {AccessControl} to lock permissioned functions using the -different roles - head to its documentation for details. - -The account that deploys the contract will be granted the minter and pauser -roles, as well as the default admin role, which will let it grant both minter -and pauser roles to other accounts. - - -[.contract-index] -.Functions --- -* {xref-ERC1155PresetMinterPauser-constructor-string-}[`++constructor(uri)++`] -* {xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-}[`++mint(to, id, amount, data)++`] -* {xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-}[`++mintBatch(to, ids, amounts, data)++`] -* {xref-ERC1155PresetMinterPauser-pause--}[`++pause()++`] -* {xref-ERC1155PresetMinterPauser-unpause--}[`++unpause()++`] -* {xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`] -* {xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-}[`++_beforeTokenTransfer(operator, from, to, ids, amounts, data)++`] - -[.contract-subindex-inherited] -.ERC1155Pausable - -[.contract-subindex-inherited] -.Pausable -* {xref-Pausable-paused--}[`++paused()++`] -* {xref-Pausable-_pause--}[`++_pause()++`] -* {xref-Pausable-_unpause--}[`++_unpause()++`] - -[.contract-subindex-inherited] -.ERC1155Burnable -* {xref-ERC1155Burnable-burn-address-uint256-uint256-}[`++burn(account, id, value)++`] -* {xref-ERC1155Burnable-burnBatch-address-uint256---uint256---}[`++burnBatch(account, ids, values)++`] - -[.contract-subindex-inherited] -.ERC1155 -* {xref-ERC1155-uri-uint256-}[`++uri(_)++`] -* {xref-ERC1155-balanceOf-address-uint256-}[`++balanceOf(account, id)++`] -* {xref-ERC1155-balanceOfBatch-address---uint256---}[`++balanceOfBatch(accounts, ids)++`] -* {xref-ERC1155-setApprovalForAll-address-bool-}[`++setApprovalForAll(operator, approved)++`] -* {xref-ERC1155-isApprovedForAll-address-address-}[`++isApprovedForAll(account, operator)++`] -* {xref-ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-}[`++safeTransferFrom(from, to, id, amount, data)++`] -* {xref-ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-}[`++safeBatchTransferFrom(from, to, ids, amounts, data)++`] -* {xref-ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-}[`++_safeTransferFrom(from, to, id, amount, data)++`] -* {xref-ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-}[`++_safeBatchTransferFrom(from, to, ids, amounts, data)++`] -* {xref-ERC1155-_setURI-string-}[`++_setURI(newuri)++`] -* {xref-ERC1155-_mint-address-uint256-uint256-bytes-}[`++_mint(to, id, amount, data)++`] -* {xref-ERC1155-_mintBatch-address-uint256---uint256---bytes-}[`++_mintBatch(to, ids, amounts, data)++`] -* {xref-ERC1155-_burn-address-uint256-uint256-}[`++_burn(from, id, amount)++`] -* {xref-ERC1155-_burnBatch-address-uint256---uint256---}[`++_burnBatch(from, ids, amounts)++`] -* {xref-ERC1155-_setApprovalForAll-address-address-bool-}[`++_setApprovalForAll(owner, operator, approved)++`] - -[.contract-subindex-inherited] -.IERC1155MetadataURI - -[.contract-subindex-inherited] -.IERC1155 - -[.contract-subindex-inherited] -.AccessControlEnumerable -* {xref-AccessControlEnumerable-getRoleMember-bytes32-uint256-}[`++getRoleMember(role, index)++`] -* {xref-AccessControlEnumerable-getRoleMemberCount-bytes32-}[`++getRoleMemberCount(role)++`] -* {xref-AccessControlEnumerable-_grantRole-bytes32-address-}[`++_grantRole(role, account)++`] -* {xref-AccessControlEnumerable-_revokeRole-bytes32-address-}[`++_revokeRole(role, account)++`] - -[.contract-subindex-inherited] -.AccessControl -* {xref-AccessControl-hasRole-bytes32-address-}[`++hasRole(role, account)++`] -* {xref-AccessControl-_checkRole-bytes32-address-}[`++_checkRole(role, account)++`] -* {xref-AccessControl-getRoleAdmin-bytes32-}[`++getRoleAdmin(role)++`] -* {xref-AccessControl-grantRole-bytes32-address-}[`++grantRole(role, account)++`] -* {xref-AccessControl-revokeRole-bytes32-address-}[`++revokeRole(role, account)++`] -* {xref-AccessControl-renounceRole-bytes32-address-}[`++renounceRole(role, account)++`] -* {xref-AccessControl-_setupRole-bytes32-address-}[`++_setupRole(role, account)++`] -* {xref-AccessControl-_setRoleAdmin-bytes32-bytes32-}[`++_setRoleAdmin(role, adminRole)++`] - -[.contract-subindex-inherited] -.ERC165 - -[.contract-subindex-inherited] -.IERC165 - -[.contract-subindex-inherited] -.IAccessControlEnumerable - -[.contract-subindex-inherited] -.IAccessControl - --- - -[.contract-index] -.Events --- - -[.contract-subindex-inherited] -.ERC1155Pausable - -[.contract-subindex-inherited] -.Pausable -* {xref-Pausable-Paused-address-}[`++Paused(account)++`] -* {xref-Pausable-Unpaused-address-}[`++Unpaused(account)++`] - -[.contract-subindex-inherited] -.ERC1155Burnable - -[.contract-subindex-inherited] -.ERC1155 - -[.contract-subindex-inherited] -.IERC1155MetadataURI - -[.contract-subindex-inherited] -.IERC1155 -* {xref-IERC1155-TransferSingle-address-address-address-uint256-uint256-}[`++TransferSingle(operator, from, to, id, value)++`] -* {xref-IERC1155-TransferBatch-address-address-address-uint256---uint256---}[`++TransferBatch(operator, from, to, ids, values)++`] -* {xref-IERC1155-ApprovalForAll-address-address-bool-}[`++ApprovalForAll(account, operator, approved)++`] -* {xref-IERC1155-URI-string-uint256-}[`++URI(value, id)++`] - -[.contract-subindex-inherited] -.AccessControlEnumerable - -[.contract-subindex-inherited] -.AccessControl - -[.contract-subindex-inherited] -.ERC165 - -[.contract-subindex-inherited] -.IERC165 - -[.contract-subindex-inherited] -.IAccessControlEnumerable - -[.contract-subindex-inherited] -.IAccessControl -* {xref-IAccessControl-RoleAdminChanged-bytes32-bytes32-bytes32-}[`++RoleAdminChanged(role, previousAdminRole, newAdminRole)++`] -* {xref-IAccessControl-RoleGranted-bytes32-address-address-}[`++RoleGranted(role, account, sender)++`] -* {xref-IAccessControl-RoleRevoked-bytes32-address-address-}[`++RoleRevoked(role, account, sender)++`] - -[.contract-subindex-inherited] -.Context - --- - - -[.contract-item] -[[ERC1155PresetMinterPauser-constructor-string-]] -==== `[.contract-item-name]#++constructor++#++(string uri)++` [.item-kind]#public# - -Grants `DEFAULT_ADMIN_ROLE`, `MINTER_ROLE`, and `PAUSER_ROLE` to the account that -deploys the contract. - -[.contract-item] -[[ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-]] -==== `[.contract-item-name]#++mint++#++(address to, uint256 id, uint256 amount, bytes data)++` [.item-kind]#public# - -Creates `amount` new tokens for `to`, of token type `id`. - -See {ERC1155-_mint}. - -Requirements: - -- the caller must have the `MINTER_ROLE`. - -[.contract-item] -[[ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-]] -==== `[.contract-item-name]#++mintBatch++#++(address to, uint256[] ids, uint256[] amounts, bytes data)++` [.item-kind]#public# - -xref:ROOT:erc1155.adoc#batch-operations[Batched] variant of {mint}. - -[.contract-item] -[[ERC1155PresetMinterPauser-pause--]] -==== `[.contract-item-name]#++pause++#++()++` [.item-kind]#public# - -Pauses all token transfers. - -See {ERC1155Pausable} and {Pausable-_pause}. - -Requirements: - -- the caller must have the `PAUSER_ROLE`. - -[.contract-item] -[[ERC1155PresetMinterPauser-unpause--]] -==== `[.contract-item-name]#++unpause++#++()++` [.item-kind]#public# - -Unpauses all token transfers. - -See {ERC1155Pausable} and {Pausable-_unpause}. - -Requirements: - -- the caller must have the `PAUSER_ROLE`. - -[.contract-item] -[[ERC1155PresetMinterPauser-supportsInterface-bytes4-]] -==== `[.contract-item-name]#++supportsInterface++#++(bytes4 interfaceId) → bool++` [.item-kind]#public# - -See {IERC165-supportsInterface}. - -[.contract-item] -[[ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-]] -==== `[.contract-item-name]#++_beforeTokenTransfer++#++(address operator, address from, address to, uint256[] ids, uint256[] amounts, bytes data)++` [.item-kind]#internal# - - - - == Utilities @@ -2954,7 +2897,7 @@ See {IERC165-supportsInterface}. [.contract] [[ERC1155Holder]] -=== `++ERC1155Holder++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC1155/utils/ERC1155Holder.sol[{github-icon},role=heading-link] +=== `++ERC1155Holder++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC1155/utils/ERC1155Holder.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity diff --git a/docs/modules/api/pages/token/ERC1155/presets.md b/docs/modules/api/pages/token/ERC1155/presets.md new file mode 100644 index 000000000..c321018c3 --- /dev/null +++ b/docs/modules/api/pages/token/ERC1155/presets.md @@ -0,0 +1,1905 @@ +:github-icon: pass:[] + +:AccessControl: pass:normal[xref:access.adoc#AccessControl[`AccessControl`]] +:xref-AccessControl: xref:access.adoc#AccessControl +:AccessControl-onlyRole: pass:normal[xref:access.adoc#AccessControl-onlyRole-bytes32-[`AccessControl.onlyRole`]] +:xref-AccessControl-onlyRole-bytes32-: xref:access.adoc#AccessControl-onlyRole-bytes32- +:AccessControl-DEFAULT_ADMIN_ROLE: pass:normal[xref:access.adoc#AccessControl-DEFAULT_ADMIN_ROLE-bytes32[`AccessControl.DEFAULT_ADMIN_ROLE`]] +:xref-AccessControl-DEFAULT_ADMIN_ROLE-bytes32: xref:access.adoc#AccessControl-DEFAULT_ADMIN_ROLE-bytes32 +:AccessControl-supportsInterface: pass:normal[xref:access.adoc#AccessControl-supportsInterface-bytes4-[`AccessControl.supportsInterface`]] +:xref-AccessControl-supportsInterface-bytes4-: xref:access.adoc#AccessControl-supportsInterface-bytes4- +:AccessControl-hasRole: pass:normal[xref:access.adoc#AccessControl-hasRole-bytes32-address-[`AccessControl.hasRole`]] +:xref-AccessControl-hasRole-bytes32-address-: xref:access.adoc#AccessControl-hasRole-bytes32-address- +:AccessControl-_checkRole: pass:normal[xref:access.adoc#AccessControl-_checkRole-bytes32-address-[`AccessControl._checkRole`]] +:xref-AccessControl-_checkRole-bytes32-address-: xref:access.adoc#AccessControl-_checkRole-bytes32-address- +:AccessControl-getRoleAdmin: pass:normal[xref:access.adoc#AccessControl-getRoleAdmin-bytes32-[`AccessControl.getRoleAdmin`]] +:xref-AccessControl-getRoleAdmin-bytes32-: xref:access.adoc#AccessControl-getRoleAdmin-bytes32- +:AccessControl-grantRole: pass:normal[xref:access.adoc#AccessControl-grantRole-bytes32-address-[`AccessControl.grantRole`]] +:xref-AccessControl-grantRole-bytes32-address-: xref:access.adoc#AccessControl-grantRole-bytes32-address- +:AccessControl-revokeRole: pass:normal[xref:access.adoc#AccessControl-revokeRole-bytes32-address-[`AccessControl.revokeRole`]] +:xref-AccessControl-revokeRole-bytes32-address-: xref:access.adoc#AccessControl-revokeRole-bytes32-address- +:AccessControl-renounceRole: pass:normal[xref:access.adoc#AccessControl-renounceRole-bytes32-address-[`AccessControl.renounceRole`]] +:xref-AccessControl-renounceRole-bytes32-address-: xref:access.adoc#AccessControl-renounceRole-bytes32-address- +:AccessControl-_setupRole: pass:normal[xref:access.adoc#AccessControl-_setupRole-bytes32-address-[`AccessControl._setupRole`]] +:xref-AccessControl-_setupRole-bytes32-address-: xref:access.adoc#AccessControl-_setupRole-bytes32-address- +:AccessControl-_setRoleAdmin: pass:normal[xref:access.adoc#AccessControl-_setRoleAdmin-bytes32-bytes32-[`AccessControl._setRoleAdmin`]] +:xref-AccessControl-_setRoleAdmin-bytes32-bytes32-: xref:access.adoc#AccessControl-_setRoleAdmin-bytes32-bytes32- +:AccessControl-_grantRole: pass:normal[xref:access.adoc#AccessControl-_grantRole-bytes32-address-[`AccessControl._grantRole`]] +:xref-AccessControl-_grantRole-bytes32-address-: xref:access.adoc#AccessControl-_grantRole-bytes32-address- +:AccessControl-_revokeRole: pass:normal[xref:access.adoc#AccessControl-_revokeRole-bytes32-address-[`AccessControl._revokeRole`]] +:xref-AccessControl-_revokeRole-bytes32-address-: xref:access.adoc#AccessControl-_revokeRole-bytes32-address- +:AccessControl-RoleData: pass:normal[xref:access.adoc#AccessControl-RoleData[`AccessControl.RoleData`]] +:xref-AccessControl-RoleData: xref:access.adoc#AccessControl-RoleData +:AccessControlEnumerable: pass:normal[xref:access.adoc#AccessControlEnumerable[`AccessControlEnumerable`]] +:xref-AccessControlEnumerable: xref:access.adoc#AccessControlEnumerable +:AccessControlEnumerable-supportsInterface: pass:normal[xref:access.adoc#AccessControlEnumerable-supportsInterface-bytes4-[`AccessControlEnumerable.supportsInterface`]] +:xref-AccessControlEnumerable-supportsInterface-bytes4-: xref:access.adoc#AccessControlEnumerable-supportsInterface-bytes4- +:AccessControlEnumerable-getRoleMember: pass:normal[xref:access.adoc#AccessControlEnumerable-getRoleMember-bytes32-uint256-[`AccessControlEnumerable.getRoleMember`]] +:xref-AccessControlEnumerable-getRoleMember-bytes32-uint256-: xref:access.adoc#AccessControlEnumerable-getRoleMember-bytes32-uint256- +:AccessControlEnumerable-getRoleMemberCount: pass:normal[xref:access.adoc#AccessControlEnumerable-getRoleMemberCount-bytes32-[`AccessControlEnumerable.getRoleMemberCount`]] +:xref-AccessControlEnumerable-getRoleMemberCount-bytes32-: xref:access.adoc#AccessControlEnumerable-getRoleMemberCount-bytes32- +:AccessControlEnumerable-_grantRole: pass:normal[xref:access.adoc#AccessControlEnumerable-_grantRole-bytes32-address-[`AccessControlEnumerable._grantRole`]] +:xref-AccessControlEnumerable-_grantRole-bytes32-address-: xref:access.adoc#AccessControlEnumerable-_grantRole-bytes32-address- +:AccessControlEnumerable-_revokeRole: pass:normal[xref:access.adoc#AccessControlEnumerable-_revokeRole-bytes32-address-[`AccessControlEnumerable._revokeRole`]] +:xref-AccessControlEnumerable-_revokeRole-bytes32-address-: xref:access.adoc#AccessControlEnumerable-_revokeRole-bytes32-address- +:IAccessControl: pass:normal[xref:access.adoc#IAccessControl[`IAccessControl`]] +:xref-IAccessControl: xref:access.adoc#IAccessControl +:IAccessControl-hasRole: pass:normal[xref:access.adoc#IAccessControl-hasRole-bytes32-address-[`IAccessControl.hasRole`]] +:xref-IAccessControl-hasRole-bytes32-address-: xref:access.adoc#IAccessControl-hasRole-bytes32-address- +:IAccessControl-getRoleAdmin: pass:normal[xref:access.adoc#IAccessControl-getRoleAdmin-bytes32-[`IAccessControl.getRoleAdmin`]] +:xref-IAccessControl-getRoleAdmin-bytes32-: xref:access.adoc#IAccessControl-getRoleAdmin-bytes32- +:IAccessControl-grantRole: pass:normal[xref:access.adoc#IAccessControl-grantRole-bytes32-address-[`IAccessControl.grantRole`]] +:xref-IAccessControl-grantRole-bytes32-address-: xref:access.adoc#IAccessControl-grantRole-bytes32-address- +:IAccessControl-revokeRole: pass:normal[xref:access.adoc#IAccessControl-revokeRole-bytes32-address-[`IAccessControl.revokeRole`]] +:xref-IAccessControl-revokeRole-bytes32-address-: xref:access.adoc#IAccessControl-revokeRole-bytes32-address- +:IAccessControl-renounceRole: pass:normal[xref:access.adoc#IAccessControl-renounceRole-bytes32-address-[`IAccessControl.renounceRole`]] +:xref-IAccessControl-renounceRole-bytes32-address-: xref:access.adoc#IAccessControl-renounceRole-bytes32-address- +:IAccessControl-RoleAdminChanged: pass:normal[xref:access.adoc#IAccessControl-RoleAdminChanged-bytes32-bytes32-bytes32-[`IAccessControl.RoleAdminChanged`]] +:xref-IAccessControl-RoleAdminChanged-bytes32-bytes32-bytes32-: xref:access.adoc#IAccessControl-RoleAdminChanged-bytes32-bytes32-bytes32- +:IAccessControl-RoleGranted: pass:normal[xref:access.adoc#IAccessControl-RoleGranted-bytes32-address-address-[`IAccessControl.RoleGranted`]] +:xref-IAccessControl-RoleGranted-bytes32-address-address-: xref:access.adoc#IAccessControl-RoleGranted-bytes32-address-address- +:IAccessControl-RoleRevoked: pass:normal[xref:access.adoc#IAccessControl-RoleRevoked-bytes32-address-address-[`IAccessControl.RoleRevoked`]] +:xref-IAccessControl-RoleRevoked-bytes32-address-address-: xref:access.adoc#IAccessControl-RoleRevoked-bytes32-address-address- +:IAccessControlEnumerable: pass:normal[xref:access.adoc#IAccessControlEnumerable[`IAccessControlEnumerable`]] +:xref-IAccessControlEnumerable: xref:access.adoc#IAccessControlEnumerable +:IAccessControlEnumerable-getRoleMember: pass:normal[xref:access.adoc#IAccessControlEnumerable-getRoleMember-bytes32-uint256-[`IAccessControlEnumerable.getRoleMember`]] +:xref-IAccessControlEnumerable-getRoleMember-bytes32-uint256-: xref:access.adoc#IAccessControlEnumerable-getRoleMember-bytes32-uint256- +:IAccessControlEnumerable-getRoleMemberCount: pass:normal[xref:access.adoc#IAccessControlEnumerable-getRoleMemberCount-bytes32-[`IAccessControlEnumerable.getRoleMemberCount`]] +:xref-IAccessControlEnumerable-getRoleMemberCount-bytes32-: xref:access.adoc#IAccessControlEnumerable-getRoleMemberCount-bytes32- +:Ownable: pass:normal[xref:access.adoc#Ownable[`Ownable`]] +:xref-Ownable: xref:access.adoc#Ownable +:Ownable-onlyOwner: pass:normal[xref:access.adoc#Ownable-onlyOwner--[`Ownable.onlyOwner`]] +:xref-Ownable-onlyOwner--: xref:access.adoc#Ownable-onlyOwner-- +:Ownable-constructor: pass:normal[xref:access.adoc#Ownable-constructor--[`Ownable.constructor`]] +:xref-Ownable-constructor--: xref:access.adoc#Ownable-constructor-- +:Ownable-owner: pass:normal[xref:access.adoc#Ownable-owner--[`Ownable.owner`]] +:xref-Ownable-owner--: xref:access.adoc#Ownable-owner-- +:Ownable-renounceOwnership: pass:normal[xref:access.adoc#Ownable-renounceOwnership--[`Ownable.renounceOwnership`]] +:xref-Ownable-renounceOwnership--: xref:access.adoc#Ownable-renounceOwnership-- +:Ownable-transferOwnership: pass:normal[xref:access.adoc#Ownable-transferOwnership-address-[`Ownable.transferOwnership`]] +:xref-Ownable-transferOwnership-address-: xref:access.adoc#Ownable-transferOwnership-address- +:Ownable-_transferOwnership: pass:normal[xref:access.adoc#Ownable-_transferOwnership-address-[`Ownable._transferOwnership`]] +:xref-Ownable-_transferOwnership-address-: xref:access.adoc#Ownable-_transferOwnership-address- +:Ownable-OwnershipTransferred: pass:normal[xref:access.adoc#Ownable-OwnershipTransferred-address-address-[`Ownable.OwnershipTransferred`]] +:xref-Ownable-OwnershipTransferred-address-address-: xref:access.adoc#Ownable-OwnershipTransferred-address-address- +:PaymentSplitter: pass:normal[xref:finance.adoc#PaymentSplitter[`PaymentSplitter`]] +:xref-PaymentSplitter: xref:finance.adoc#PaymentSplitter +:PaymentSplitter-constructor: pass:normal[xref:finance.adoc#PaymentSplitter-constructor-address---uint256---[`PaymentSplitter.constructor`]] +:xref-PaymentSplitter-constructor-address---uint256---: xref:finance.adoc#PaymentSplitter-constructor-address---uint256--- +:PaymentSplitter-receive: pass:normal[xref:finance.adoc#PaymentSplitter-receive--[`PaymentSplitter.receive`]] +:xref-PaymentSplitter-receive--: xref:finance.adoc#PaymentSplitter-receive-- +:PaymentSplitter-totalShares: pass:normal[xref:finance.adoc#PaymentSplitter-totalShares--[`PaymentSplitter.totalShares`]] +:xref-PaymentSplitter-totalShares--: xref:finance.adoc#PaymentSplitter-totalShares-- +:PaymentSplitter-totalReleased: pass:normal[xref:finance.adoc#PaymentSplitter-totalReleased--[`PaymentSplitter.totalReleased`]] +:xref-PaymentSplitter-totalReleased--: xref:finance.adoc#PaymentSplitter-totalReleased-- +:PaymentSplitter-totalReleased: pass:normal[xref:finance.adoc#PaymentSplitter-totalReleased-contract-IERC20-[`PaymentSplitter.totalReleased`]] +:xref-PaymentSplitter-totalReleased-contract-IERC20-: xref:finance.adoc#PaymentSplitter-totalReleased-contract-IERC20- +:PaymentSplitter-shares: pass:normal[xref:finance.adoc#PaymentSplitter-shares-address-[`PaymentSplitter.shares`]] +:xref-PaymentSplitter-shares-address-: xref:finance.adoc#PaymentSplitter-shares-address- +:PaymentSplitter-released: pass:normal[xref:finance.adoc#PaymentSplitter-released-address-[`PaymentSplitter.released`]] +:xref-PaymentSplitter-released-address-: xref:finance.adoc#PaymentSplitter-released-address- +:PaymentSplitter-released: pass:normal[xref:finance.adoc#PaymentSplitter-released-contract-IERC20-address-[`PaymentSplitter.released`]] +:xref-PaymentSplitter-released-contract-IERC20-address-: xref:finance.adoc#PaymentSplitter-released-contract-IERC20-address- +:PaymentSplitter-payee: pass:normal[xref:finance.adoc#PaymentSplitter-payee-uint256-[`PaymentSplitter.payee`]] +:xref-PaymentSplitter-payee-uint256-: xref:finance.adoc#PaymentSplitter-payee-uint256- +:PaymentSplitter-release: pass:normal[xref:finance.adoc#PaymentSplitter-release-address-payable-[`PaymentSplitter.release`]] +:xref-PaymentSplitter-release-address-payable-: xref:finance.adoc#PaymentSplitter-release-address-payable- +:PaymentSplitter-release: pass:normal[xref:finance.adoc#PaymentSplitter-release-contract-IERC20-address-[`PaymentSplitter.release`]] +:xref-PaymentSplitter-release-contract-IERC20-address-: xref:finance.adoc#PaymentSplitter-release-contract-IERC20-address- +:PaymentSplitter-PayeeAdded: pass:normal[xref:finance.adoc#PaymentSplitter-PayeeAdded-address-uint256-[`PaymentSplitter.PayeeAdded`]] +:xref-PaymentSplitter-PayeeAdded-address-uint256-: xref:finance.adoc#PaymentSplitter-PayeeAdded-address-uint256- +:PaymentSplitter-PaymentReleased: pass:normal[xref:finance.adoc#PaymentSplitter-PaymentReleased-address-uint256-[`PaymentSplitter.PaymentReleased`]] +:xref-PaymentSplitter-PaymentReleased-address-uint256-: xref:finance.adoc#PaymentSplitter-PaymentReleased-address-uint256- +:PaymentSplitter-ERC20PaymentReleased: pass:normal[xref:finance.adoc#PaymentSplitter-ERC20PaymentReleased-contract-IERC20-address-uint256-[`PaymentSplitter.ERC20PaymentReleased`]] +:xref-PaymentSplitter-ERC20PaymentReleased-contract-IERC20-address-uint256-: xref:finance.adoc#PaymentSplitter-ERC20PaymentReleased-contract-IERC20-address-uint256- +:PaymentSplitter-PaymentReceived: pass:normal[xref:finance.adoc#PaymentSplitter-PaymentReceived-address-uint256-[`PaymentSplitter.PaymentReceived`]] +:xref-PaymentSplitter-PaymentReceived-address-uint256-: xref:finance.adoc#PaymentSplitter-PaymentReceived-address-uint256- +:VestingWallet: pass:normal[xref:finance.adoc#VestingWallet[`VestingWallet`]] +:xref-VestingWallet: xref:finance.adoc#VestingWallet +:VestingWallet-constructor: pass:normal[xref:finance.adoc#VestingWallet-constructor-address-uint64-uint64-[`VestingWallet.constructor`]] +:xref-VestingWallet-constructor-address-uint64-uint64-: xref:finance.adoc#VestingWallet-constructor-address-uint64-uint64- +:VestingWallet-receive: pass:normal[xref:finance.adoc#VestingWallet-receive--[`VestingWallet.receive`]] +:xref-VestingWallet-receive--: xref:finance.adoc#VestingWallet-receive-- +:VestingWallet-beneficiary: pass:normal[xref:finance.adoc#VestingWallet-beneficiary--[`VestingWallet.beneficiary`]] +:xref-VestingWallet-beneficiary--: xref:finance.adoc#VestingWallet-beneficiary-- +:VestingWallet-start: pass:normal[xref:finance.adoc#VestingWallet-start--[`VestingWallet.start`]] +:xref-VestingWallet-start--: xref:finance.adoc#VestingWallet-start-- +:VestingWallet-duration: pass:normal[xref:finance.adoc#VestingWallet-duration--[`VestingWallet.duration`]] +:xref-VestingWallet-duration--: xref:finance.adoc#VestingWallet-duration-- +:VestingWallet-released: pass:normal[xref:finance.adoc#VestingWallet-released--[`VestingWallet.released`]] +:xref-VestingWallet-released--: xref:finance.adoc#VestingWallet-released-- +:VestingWallet-released: pass:normal[xref:finance.adoc#VestingWallet-released-address-[`VestingWallet.released`]] +:xref-VestingWallet-released-address-: xref:finance.adoc#VestingWallet-released-address- +:VestingWallet-release: pass:normal[xref:finance.adoc#VestingWallet-release--[`VestingWallet.release`]] +:xref-VestingWallet-release--: xref:finance.adoc#VestingWallet-release-- +:VestingWallet-release: pass:normal[xref:finance.adoc#VestingWallet-release-address-[`VestingWallet.release`]] +:xref-VestingWallet-release-address-: xref:finance.adoc#VestingWallet-release-address- +:VestingWallet-vestedAmount: pass:normal[xref:finance.adoc#VestingWallet-vestedAmount-uint64-[`VestingWallet.vestedAmount`]] +:xref-VestingWallet-vestedAmount-uint64-: xref:finance.adoc#VestingWallet-vestedAmount-uint64- +:VestingWallet-vestedAmount: pass:normal[xref:finance.adoc#VestingWallet-vestedAmount-address-uint64-[`VestingWallet.vestedAmount`]] +:xref-VestingWallet-vestedAmount-address-uint64-: xref:finance.adoc#VestingWallet-vestedAmount-address-uint64- +:VestingWallet-_vestingSchedule: pass:normal[xref:finance.adoc#VestingWallet-_vestingSchedule-uint256-uint64-[`VestingWallet._vestingSchedule`]] +:xref-VestingWallet-_vestingSchedule-uint256-uint64-: xref:finance.adoc#VestingWallet-_vestingSchedule-uint256-uint64- +:VestingWallet-EtherReleased: pass:normal[xref:finance.adoc#VestingWallet-EtherReleased-uint256-[`VestingWallet.EtherReleased`]] +:xref-VestingWallet-EtherReleased-uint256-: xref:finance.adoc#VestingWallet-EtherReleased-uint256- +:VestingWallet-ERC20Released: pass:normal[xref:finance.adoc#VestingWallet-ERC20Released-address-uint256-[`VestingWallet.ERC20Released`]] +:xref-VestingWallet-ERC20Released-address-uint256-: xref:finance.adoc#VestingWallet-ERC20Released-address-uint256- +:Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]] +:xref-Governor: xref:governance.adoc#Governor +:Governor-onlyGovernance: pass:normal[xref:governance.adoc#Governor-onlyGovernance--[`Governor.onlyGovernance`]] +:xref-Governor-onlyGovernance--: xref:governance.adoc#Governor-onlyGovernance-- +:Governor-BALLOT_TYPEHASH: pass:normal[xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32[`Governor.BALLOT_TYPEHASH`]] +:xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32 +:Governor-constructor: pass:normal[xref:governance.adoc#Governor-constructor-string-[`Governor.constructor`]] +:xref-Governor-constructor-string-: xref:governance.adoc#Governor-constructor-string- +:Governor-receive: pass:normal[xref:governance.adoc#Governor-receive--[`Governor.receive`]] +:xref-Governor-receive--: xref:governance.adoc#Governor-receive-- +:Governor-supportsInterface: pass:normal[xref:governance.adoc#Governor-supportsInterface-bytes4-[`Governor.supportsInterface`]] +:xref-Governor-supportsInterface-bytes4-: xref:governance.adoc#Governor-supportsInterface-bytes4- +:Governor-name: pass:normal[xref:governance.adoc#Governor-name--[`Governor.name`]] +:xref-Governor-name--: xref:governance.adoc#Governor-name-- +:Governor-version: pass:normal[xref:governance.adoc#Governor-version--[`Governor.version`]] +:xref-Governor-version--: xref:governance.adoc#Governor-version-- +:Governor-hashProposal: pass:normal[xref:governance.adoc#Governor-hashProposal-address---uint256---bytes---bytes32-[`Governor.hashProposal`]] +:xref-Governor-hashProposal-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-hashProposal-address---uint256---bytes---bytes32- +:Governor-state: pass:normal[xref:governance.adoc#Governor-state-uint256-[`Governor.state`]] +:xref-Governor-state-uint256-: xref:governance.adoc#Governor-state-uint256- +:Governor-proposalSnapshot: pass:normal[xref:governance.adoc#Governor-proposalSnapshot-uint256-[`Governor.proposalSnapshot`]] +:xref-Governor-proposalSnapshot-uint256-: xref:governance.adoc#Governor-proposalSnapshot-uint256- +:Governor-proposalDeadline: pass:normal[xref:governance.adoc#Governor-proposalDeadline-uint256-[`Governor.proposalDeadline`]] +:xref-Governor-proposalDeadline-uint256-: xref:governance.adoc#Governor-proposalDeadline-uint256- +:Governor-proposalThreshold: pass:normal[xref:governance.adoc#Governor-proposalThreshold--[`Governor.proposalThreshold`]] +:xref-Governor-proposalThreshold--: xref:governance.adoc#Governor-proposalThreshold-- +:Governor-_quorumReached: pass:normal[xref:governance.adoc#Governor-_quorumReached-uint256-[`Governor._quorumReached`]] +:xref-Governor-_quorumReached-uint256-: xref:governance.adoc#Governor-_quorumReached-uint256- +:Governor-_voteSucceeded: pass:normal[xref:governance.adoc#Governor-_voteSucceeded-uint256-[`Governor._voteSucceeded`]] +:xref-Governor-_voteSucceeded-uint256-: xref:governance.adoc#Governor-_voteSucceeded-uint256- +:Governor-_countVote: pass:normal[xref:governance.adoc#Governor-_countVote-uint256-address-uint8-uint256-[`Governor._countVote`]] +:xref-Governor-_countVote-uint256-address-uint8-uint256-: xref:governance.adoc#Governor-_countVote-uint256-address-uint8-uint256- +:Governor-propose: pass:normal[xref:governance.adoc#Governor-propose-address---uint256---bytes---string-[`Governor.propose`]] +:xref-Governor-propose-address---uint256---bytes---string-: xref:governance.adoc#Governor-propose-address---uint256---bytes---string- +:Governor-execute: pass:normal[xref:governance.adoc#Governor-execute-address---uint256---bytes---bytes32-[`Governor.execute`]] +:xref-Governor-execute-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-execute-address---uint256---bytes---bytes32- +:Governor-_execute: pass:normal[xref:governance.adoc#Governor-_execute-uint256-address---uint256---bytes---bytes32-[`Governor._execute`]] +:xref-Governor-_execute-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_execute-uint256-address---uint256---bytes---bytes32- +:Governor-_cancel: pass:normal[xref:governance.adoc#Governor-_cancel-address---uint256---bytes---bytes32-[`Governor._cancel`]] +:xref-Governor-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_cancel-address---uint256---bytes---bytes32- +:Governor-castVote: pass:normal[xref:governance.adoc#Governor-castVote-uint256-uint8-[`Governor.castVote`]] +:xref-Governor-castVote-uint256-uint8-: xref:governance.adoc#Governor-castVote-uint256-uint8- +:Governor-castVoteWithReason: pass:normal[xref:governance.adoc#Governor-castVoteWithReason-uint256-uint8-string-[`Governor.castVoteWithReason`]] +:xref-Governor-castVoteWithReason-uint256-uint8-string-: xref:governance.adoc#Governor-castVoteWithReason-uint256-uint8-string- +:Governor-castVoteBySig: pass:normal[xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-[`Governor.castVoteBySig`]] +:xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32- +:Governor-_castVote: pass:normal[xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-[`Governor._castVote`]] +:xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string- +:Governor-relay: pass:normal[xref:governance.adoc#Governor-relay-address-uint256-bytes-[`Governor.relay`]] +:xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes- +:Governor-_executor: pass:normal[xref:governance.adoc#Governor-_executor--[`Governor._executor`]] +:xref-Governor-_executor--: xref:governance.adoc#Governor-_executor-- +:Governor-ProposalCore: pass:normal[xref:governance.adoc#Governor-ProposalCore[`Governor.ProposalCore`]] +:xref-Governor-ProposalCore: xref:governance.adoc#Governor-ProposalCore +:IGovernor: pass:normal[xref:governance.adoc#IGovernor[`IGovernor`]] +:xref-IGovernor: xref:governance.adoc#IGovernor +:IGovernor-name: pass:normal[xref:governance.adoc#IGovernor-name--[`IGovernor.name`]] +:xref-IGovernor-name--: xref:governance.adoc#IGovernor-name-- +:IGovernor-version: pass:normal[xref:governance.adoc#IGovernor-version--[`IGovernor.version`]] +:xref-IGovernor-version--: xref:governance.adoc#IGovernor-version-- +:IGovernor-COUNTING_MODE: pass:normal[xref:governance.adoc#IGovernor-COUNTING_MODE--[`IGovernor.COUNTING_MODE`]] +:xref-IGovernor-COUNTING_MODE--: xref:governance.adoc#IGovernor-COUNTING_MODE-- +:IGovernor-hashProposal: pass:normal[xref:governance.adoc#IGovernor-hashProposal-address---uint256---bytes---bytes32-[`IGovernor.hashProposal`]] +:xref-IGovernor-hashProposal-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernor-hashProposal-address---uint256---bytes---bytes32- +:IGovernor-state: pass:normal[xref:governance.adoc#IGovernor-state-uint256-[`IGovernor.state`]] +:xref-IGovernor-state-uint256-: xref:governance.adoc#IGovernor-state-uint256- +:IGovernor-proposalSnapshot: pass:normal[xref:governance.adoc#IGovernor-proposalSnapshot-uint256-[`IGovernor.proposalSnapshot`]] +:xref-IGovernor-proposalSnapshot-uint256-: xref:governance.adoc#IGovernor-proposalSnapshot-uint256- +:IGovernor-proposalDeadline: pass:normal[xref:governance.adoc#IGovernor-proposalDeadline-uint256-[`IGovernor.proposalDeadline`]] +:xref-IGovernor-proposalDeadline-uint256-: xref:governance.adoc#IGovernor-proposalDeadline-uint256- +:IGovernor-votingDelay: pass:normal[xref:governance.adoc#IGovernor-votingDelay--[`IGovernor.votingDelay`]] +:xref-IGovernor-votingDelay--: xref:governance.adoc#IGovernor-votingDelay-- +:IGovernor-votingPeriod: pass:normal[xref:governance.adoc#IGovernor-votingPeriod--[`IGovernor.votingPeriod`]] +:xref-IGovernor-votingPeriod--: xref:governance.adoc#IGovernor-votingPeriod-- +:IGovernor-quorum: pass:normal[xref:governance.adoc#IGovernor-quorum-uint256-[`IGovernor.quorum`]] +:xref-IGovernor-quorum-uint256-: xref:governance.adoc#IGovernor-quorum-uint256- +:IGovernor-getVotes: pass:normal[xref:governance.adoc#IGovernor-getVotes-address-uint256-[`IGovernor.getVotes`]] +:xref-IGovernor-getVotes-address-uint256-: xref:governance.adoc#IGovernor-getVotes-address-uint256- +:IGovernor-hasVoted: pass:normal[xref:governance.adoc#IGovernor-hasVoted-uint256-address-[`IGovernor.hasVoted`]] +:xref-IGovernor-hasVoted-uint256-address-: xref:governance.adoc#IGovernor-hasVoted-uint256-address- +:IGovernor-propose: pass:normal[xref:governance.adoc#IGovernor-propose-address---uint256---bytes---string-[`IGovernor.propose`]] +:xref-IGovernor-propose-address---uint256---bytes---string-: xref:governance.adoc#IGovernor-propose-address---uint256---bytes---string- +:IGovernor-execute: pass:normal[xref:governance.adoc#IGovernor-execute-address---uint256---bytes---bytes32-[`IGovernor.execute`]] +:xref-IGovernor-execute-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernor-execute-address---uint256---bytes---bytes32- +:IGovernor-castVote: pass:normal[xref:governance.adoc#IGovernor-castVote-uint256-uint8-[`IGovernor.castVote`]] +:xref-IGovernor-castVote-uint256-uint8-: xref:governance.adoc#IGovernor-castVote-uint256-uint8- +:IGovernor-castVoteWithReason: pass:normal[xref:governance.adoc#IGovernor-castVoteWithReason-uint256-uint8-string-[`IGovernor.castVoteWithReason`]] +:xref-IGovernor-castVoteWithReason-uint256-uint8-string-: xref:governance.adoc#IGovernor-castVoteWithReason-uint256-uint8-string- +:IGovernor-castVoteBySig: pass:normal[xref:governance.adoc#IGovernor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-[`IGovernor.castVoteBySig`]] +:xref-IGovernor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-: xref:governance.adoc#IGovernor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32- +:IGovernor-ProposalCreated: pass:normal[xref:governance.adoc#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-[`IGovernor.ProposalCreated`]] +:xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-: xref:governance.adoc#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string- +:IGovernor-ProposalCanceled: pass:normal[xref:governance.adoc#IGovernor-ProposalCanceled-uint256-[`IGovernor.ProposalCanceled`]] +:xref-IGovernor-ProposalCanceled-uint256-: xref:governance.adoc#IGovernor-ProposalCanceled-uint256- +:IGovernor-ProposalExecuted: pass:normal[xref:governance.adoc#IGovernor-ProposalExecuted-uint256-[`IGovernor.ProposalExecuted`]] +:xref-IGovernor-ProposalExecuted-uint256-: xref:governance.adoc#IGovernor-ProposalExecuted-uint256- +:IGovernor-VoteCast: pass:normal[xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string-[`IGovernor.VoteCast`]] +:xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-: xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string- +:IGovernor-ProposalState: pass:normal[xref:governance.adoc#IGovernor-ProposalState[`IGovernor.ProposalState`]] +:xref-IGovernor-ProposalState: xref:governance.adoc#IGovernor-ProposalState +:TimelockController: pass:normal[xref:governance.adoc#TimelockController[`TimelockController`]] +:xref-TimelockController: xref:governance.adoc#TimelockController +:TimelockController-onlyRoleOrOpenRole: pass:normal[xref:governance.adoc#TimelockController-onlyRoleOrOpenRole-bytes32-[`TimelockController.onlyRoleOrOpenRole`]] +:xref-TimelockController-onlyRoleOrOpenRole-bytes32-: xref:governance.adoc#TimelockController-onlyRoleOrOpenRole-bytes32- +:TimelockController-TIMELOCK_ADMIN_ROLE: pass:normal[xref:governance.adoc#TimelockController-TIMELOCK_ADMIN_ROLE-bytes32[`TimelockController.TIMELOCK_ADMIN_ROLE`]] +:xref-TimelockController-TIMELOCK_ADMIN_ROLE-bytes32: xref:governance.adoc#TimelockController-TIMELOCK_ADMIN_ROLE-bytes32 +:TimelockController-PROPOSER_ROLE: pass:normal[xref:governance.adoc#TimelockController-PROPOSER_ROLE-bytes32[`TimelockController.PROPOSER_ROLE`]] +:xref-TimelockController-PROPOSER_ROLE-bytes32: xref:governance.adoc#TimelockController-PROPOSER_ROLE-bytes32 +:TimelockController-EXECUTOR_ROLE: pass:normal[xref:governance.adoc#TimelockController-EXECUTOR_ROLE-bytes32[`TimelockController.EXECUTOR_ROLE`]] +:xref-TimelockController-EXECUTOR_ROLE-bytes32: xref:governance.adoc#TimelockController-EXECUTOR_ROLE-bytes32 +:TimelockController-_DONE_TIMESTAMP: pass:normal[xref:governance.adoc#TimelockController-_DONE_TIMESTAMP-uint256[`TimelockController._DONE_TIMESTAMP`]] +:xref-TimelockController-_DONE_TIMESTAMP-uint256: xref:governance.adoc#TimelockController-_DONE_TIMESTAMP-uint256 +:TimelockController-constructor: pass:normal[xref:governance.adoc#TimelockController-constructor-uint256-address---address---[`TimelockController.constructor`]] +:xref-TimelockController-constructor-uint256-address---address---: xref:governance.adoc#TimelockController-constructor-uint256-address---address--- +:TimelockController-receive: pass:normal[xref:governance.adoc#TimelockController-receive--[`TimelockController.receive`]] +:xref-TimelockController-receive--: xref:governance.adoc#TimelockController-receive-- +:TimelockController-isOperation: pass:normal[xref:governance.adoc#TimelockController-isOperation-bytes32-[`TimelockController.isOperation`]] +:xref-TimelockController-isOperation-bytes32-: xref:governance.adoc#TimelockController-isOperation-bytes32- +:TimelockController-isOperationPending: pass:normal[xref:governance.adoc#TimelockController-isOperationPending-bytes32-[`TimelockController.isOperationPending`]] +:xref-TimelockController-isOperationPending-bytes32-: xref:governance.adoc#TimelockController-isOperationPending-bytes32- +:TimelockController-isOperationReady: pass:normal[xref:governance.adoc#TimelockController-isOperationReady-bytes32-[`TimelockController.isOperationReady`]] +:xref-TimelockController-isOperationReady-bytes32-: xref:governance.adoc#TimelockController-isOperationReady-bytes32- +:TimelockController-isOperationDone: pass:normal[xref:governance.adoc#TimelockController-isOperationDone-bytes32-[`TimelockController.isOperationDone`]] +:xref-TimelockController-isOperationDone-bytes32-: xref:governance.adoc#TimelockController-isOperationDone-bytes32- +:TimelockController-getTimestamp: pass:normal[xref:governance.adoc#TimelockController-getTimestamp-bytes32-[`TimelockController.getTimestamp`]] +:xref-TimelockController-getTimestamp-bytes32-: xref:governance.adoc#TimelockController-getTimestamp-bytes32- +:TimelockController-getMinDelay: pass:normal[xref:governance.adoc#TimelockController-getMinDelay--[`TimelockController.getMinDelay`]] +:xref-TimelockController-getMinDelay--: xref:governance.adoc#TimelockController-getMinDelay-- +:TimelockController-hashOperation: pass:normal[xref:governance.adoc#TimelockController-hashOperation-address-uint256-bytes-bytes32-bytes32-[`TimelockController.hashOperation`]] +:xref-TimelockController-hashOperation-address-uint256-bytes-bytes32-bytes32-: xref:governance.adoc#TimelockController-hashOperation-address-uint256-bytes-bytes32-bytes32- +:TimelockController-hashOperationBatch: pass:normal[xref:governance.adoc#TimelockController-hashOperationBatch-address---uint256---bytes---bytes32-bytes32-[`TimelockController.hashOperationBatch`]] +:xref-TimelockController-hashOperationBatch-address---uint256---bytes---bytes32-bytes32-: xref:governance.adoc#TimelockController-hashOperationBatch-address---uint256---bytes---bytes32-bytes32- +:TimelockController-schedule: pass:normal[xref:governance.adoc#TimelockController-schedule-address-uint256-bytes-bytes32-bytes32-uint256-[`TimelockController.schedule`]] +:xref-TimelockController-schedule-address-uint256-bytes-bytes32-bytes32-uint256-: xref:governance.adoc#TimelockController-schedule-address-uint256-bytes-bytes32-bytes32-uint256- +:TimelockController-scheduleBatch: pass:normal[xref:governance.adoc#TimelockController-scheduleBatch-address---uint256---bytes---bytes32-bytes32-uint256-[`TimelockController.scheduleBatch`]] +:xref-TimelockController-scheduleBatch-address---uint256---bytes---bytes32-bytes32-uint256-: xref:governance.adoc#TimelockController-scheduleBatch-address---uint256---bytes---bytes32-bytes32-uint256- +:TimelockController-cancel: pass:normal[xref:governance.adoc#TimelockController-cancel-bytes32-[`TimelockController.cancel`]] +:xref-TimelockController-cancel-bytes32-: xref:governance.adoc#TimelockController-cancel-bytes32- +:TimelockController-execute: pass:normal[xref:governance.adoc#TimelockController-execute-address-uint256-bytes-bytes32-bytes32-[`TimelockController.execute`]] +:xref-TimelockController-execute-address-uint256-bytes-bytes32-bytes32-: xref:governance.adoc#TimelockController-execute-address-uint256-bytes-bytes32-bytes32- +:TimelockController-executeBatch: pass:normal[xref:governance.adoc#TimelockController-executeBatch-address---uint256---bytes---bytes32-bytes32-[`TimelockController.executeBatch`]] +:xref-TimelockController-executeBatch-address---uint256---bytes---bytes32-bytes32-: xref:governance.adoc#TimelockController-executeBatch-address---uint256---bytes---bytes32-bytes32- +:TimelockController-updateDelay: pass:normal[xref:governance.adoc#TimelockController-updateDelay-uint256-[`TimelockController.updateDelay`]] +:xref-TimelockController-updateDelay-uint256-: xref:governance.adoc#TimelockController-updateDelay-uint256- +:TimelockController-CallScheduled: pass:normal[xref:governance.adoc#TimelockController-CallScheduled-bytes32-uint256-address-uint256-bytes-bytes32-uint256-[`TimelockController.CallScheduled`]] +:xref-TimelockController-CallScheduled-bytes32-uint256-address-uint256-bytes-bytes32-uint256-: xref:governance.adoc#TimelockController-CallScheduled-bytes32-uint256-address-uint256-bytes-bytes32-uint256- +:TimelockController-CallExecuted: pass:normal[xref:governance.adoc#TimelockController-CallExecuted-bytes32-uint256-address-uint256-bytes-[`TimelockController.CallExecuted`]] +:xref-TimelockController-CallExecuted-bytes32-uint256-address-uint256-bytes-: xref:governance.adoc#TimelockController-CallExecuted-bytes32-uint256-address-uint256-bytes- +:TimelockController-Cancelled: pass:normal[xref:governance.adoc#TimelockController-Cancelled-bytes32-[`TimelockController.Cancelled`]] +:xref-TimelockController-Cancelled-bytes32-: xref:governance.adoc#TimelockController-Cancelled-bytes32- +:TimelockController-MinDelayChange: pass:normal[xref:governance.adoc#TimelockController-MinDelayChange-uint256-uint256-[`TimelockController.MinDelayChange`]] +:xref-TimelockController-MinDelayChange-uint256-uint256-: xref:governance.adoc#TimelockController-MinDelayChange-uint256-uint256- +:GovernorCompatibilityBravo: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo[`GovernorCompatibilityBravo`]] +:xref-GovernorCompatibilityBravo: xref:governance.adoc#GovernorCompatibilityBravo +:GovernorCompatibilityBravo-COUNTING_MODE: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-COUNTING_MODE--[`GovernorCompatibilityBravo.COUNTING_MODE`]] +:xref-GovernorCompatibilityBravo-COUNTING_MODE--: xref:governance.adoc#GovernorCompatibilityBravo-COUNTING_MODE-- +:GovernorCompatibilityBravo-propose: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-propose-address---uint256---bytes---string-[`GovernorCompatibilityBravo.propose`]] +:xref-GovernorCompatibilityBravo-propose-address---uint256---bytes---string-: xref:governance.adoc#GovernorCompatibilityBravo-propose-address---uint256---bytes---string- +:GovernorCompatibilityBravo-propose: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-propose-address---uint256---string---bytes---string-[`GovernorCompatibilityBravo.propose`]] +:xref-GovernorCompatibilityBravo-propose-address---uint256---string---bytes---string-: xref:governance.adoc#GovernorCompatibilityBravo-propose-address---uint256---string---bytes---string- +:GovernorCompatibilityBravo-queue: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-queue-uint256-[`GovernorCompatibilityBravo.queue`]] +:xref-GovernorCompatibilityBravo-queue-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-queue-uint256- +:GovernorCompatibilityBravo-execute: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-execute-uint256-[`GovernorCompatibilityBravo.execute`]] +:xref-GovernorCompatibilityBravo-execute-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-execute-uint256- +:GovernorCompatibilityBravo-cancel: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-cancel-uint256-[`GovernorCompatibilityBravo.cancel`]] +:xref-GovernorCompatibilityBravo-cancel-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-cancel-uint256- +:GovernorCompatibilityBravo-proposals: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-proposals-uint256-[`GovernorCompatibilityBravo.proposals`]] +:xref-GovernorCompatibilityBravo-proposals-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-proposals-uint256- +:GovernorCompatibilityBravo-getActions: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-getActions-uint256-[`GovernorCompatibilityBravo.getActions`]] +:xref-GovernorCompatibilityBravo-getActions-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-getActions-uint256- +:GovernorCompatibilityBravo-getReceipt: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-getReceipt-uint256-address-[`GovernorCompatibilityBravo.getReceipt`]] +:xref-GovernorCompatibilityBravo-getReceipt-uint256-address-: xref:governance.adoc#GovernorCompatibilityBravo-getReceipt-uint256-address- +:GovernorCompatibilityBravo-quorumVotes: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-quorumVotes--[`GovernorCompatibilityBravo.quorumVotes`]] +:xref-GovernorCompatibilityBravo-quorumVotes--: xref:governance.adoc#GovernorCompatibilityBravo-quorumVotes-- +:GovernorCompatibilityBravo-hasVoted: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-hasVoted-uint256-address-[`GovernorCompatibilityBravo.hasVoted`]] +:xref-GovernorCompatibilityBravo-hasVoted-uint256-address-: xref:governance.adoc#GovernorCompatibilityBravo-hasVoted-uint256-address- +:GovernorCompatibilityBravo-_quorumReached: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-_quorumReached-uint256-[`GovernorCompatibilityBravo._quorumReached`]] +:xref-GovernorCompatibilityBravo-_quorumReached-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-_quorumReached-uint256- +:GovernorCompatibilityBravo-_voteSucceeded: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-_voteSucceeded-uint256-[`GovernorCompatibilityBravo._voteSucceeded`]] +:xref-GovernorCompatibilityBravo-_voteSucceeded-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-_voteSucceeded-uint256- +:GovernorCompatibilityBravo-_countVote: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-_countVote-uint256-address-uint8-uint256-[`GovernorCompatibilityBravo._countVote`]] +:xref-GovernorCompatibilityBravo-_countVote-uint256-address-uint8-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-_countVote-uint256-address-uint8-uint256- +:GovernorCompatibilityBravo-ProposalDetails: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-ProposalDetails[`GovernorCompatibilityBravo.ProposalDetails`]] +:xref-GovernorCompatibilityBravo-ProposalDetails: xref:governance.adoc#GovernorCompatibilityBravo-ProposalDetails +:GovernorCompatibilityBravo-VoteType: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-VoteType[`GovernorCompatibilityBravo.VoteType`]] +:xref-GovernorCompatibilityBravo-VoteType: xref:governance.adoc#GovernorCompatibilityBravo-VoteType +:IGovernorCompatibilityBravo: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo[`IGovernorCompatibilityBravo`]] +:xref-IGovernorCompatibilityBravo: xref:governance.adoc#IGovernorCompatibilityBravo +:IGovernorCompatibilityBravo-quorumVotes: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-quorumVotes--[`IGovernorCompatibilityBravo.quorumVotes`]] +:xref-IGovernorCompatibilityBravo-quorumVotes--: xref:governance.adoc#IGovernorCompatibilityBravo-quorumVotes-- +:IGovernorCompatibilityBravo-proposals: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-proposals-uint256-[`IGovernorCompatibilityBravo.proposals`]] +:xref-IGovernorCompatibilityBravo-proposals-uint256-: xref:governance.adoc#IGovernorCompatibilityBravo-proposals-uint256- +:IGovernorCompatibilityBravo-propose: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-propose-address---uint256---string---bytes---string-[`IGovernorCompatibilityBravo.propose`]] +:xref-IGovernorCompatibilityBravo-propose-address---uint256---string---bytes---string-: xref:governance.adoc#IGovernorCompatibilityBravo-propose-address---uint256---string---bytes---string- +:IGovernorCompatibilityBravo-queue: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-queue-uint256-[`IGovernorCompatibilityBravo.queue`]] +:xref-IGovernorCompatibilityBravo-queue-uint256-: xref:governance.adoc#IGovernorCompatibilityBravo-queue-uint256- +:IGovernorCompatibilityBravo-execute: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-execute-uint256-[`IGovernorCompatibilityBravo.execute`]] +:xref-IGovernorCompatibilityBravo-execute-uint256-: xref:governance.adoc#IGovernorCompatibilityBravo-execute-uint256- +:IGovernorCompatibilityBravo-cancel: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-cancel-uint256-[`IGovernorCompatibilityBravo.cancel`]] +:xref-IGovernorCompatibilityBravo-cancel-uint256-: xref:governance.adoc#IGovernorCompatibilityBravo-cancel-uint256- +:IGovernorCompatibilityBravo-getActions: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-getActions-uint256-[`IGovernorCompatibilityBravo.getActions`]] +:xref-IGovernorCompatibilityBravo-getActions-uint256-: xref:governance.adoc#IGovernorCompatibilityBravo-getActions-uint256- +:IGovernorCompatibilityBravo-getReceipt: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-getReceipt-uint256-address-[`IGovernorCompatibilityBravo.getReceipt`]] +:xref-IGovernorCompatibilityBravo-getReceipt-uint256-address-: xref:governance.adoc#IGovernorCompatibilityBravo-getReceipt-uint256-address- +:IGovernorCompatibilityBravo-Proposal: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-Proposal[`IGovernorCompatibilityBravo.Proposal`]] +:xref-IGovernorCompatibilityBravo-Proposal: xref:governance.adoc#IGovernorCompatibilityBravo-Proposal +:IGovernorCompatibilityBravo-Receipt: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-Receipt[`IGovernorCompatibilityBravo.Receipt`]] +:xref-IGovernorCompatibilityBravo-Receipt: xref:governance.adoc#IGovernorCompatibilityBravo-Receipt +:GovernorCountingSimple: pass:normal[xref:governance.adoc#GovernorCountingSimple[`GovernorCountingSimple`]] +:xref-GovernorCountingSimple: xref:governance.adoc#GovernorCountingSimple +:GovernorCountingSimple-COUNTING_MODE: pass:normal[xref:governance.adoc#GovernorCountingSimple-COUNTING_MODE--[`GovernorCountingSimple.COUNTING_MODE`]] +:xref-GovernorCountingSimple-COUNTING_MODE--: xref:governance.adoc#GovernorCountingSimple-COUNTING_MODE-- +:GovernorCountingSimple-hasVoted: pass:normal[xref:governance.adoc#GovernorCountingSimple-hasVoted-uint256-address-[`GovernorCountingSimple.hasVoted`]] +:xref-GovernorCountingSimple-hasVoted-uint256-address-: xref:governance.adoc#GovernorCountingSimple-hasVoted-uint256-address- +:GovernorCountingSimple-proposalVotes: pass:normal[xref:governance.adoc#GovernorCountingSimple-proposalVotes-uint256-[`GovernorCountingSimple.proposalVotes`]] +:xref-GovernorCountingSimple-proposalVotes-uint256-: xref:governance.adoc#GovernorCountingSimple-proposalVotes-uint256- +:GovernorCountingSimple-_quorumReached: pass:normal[xref:governance.adoc#GovernorCountingSimple-_quorumReached-uint256-[`GovernorCountingSimple._quorumReached`]] +:xref-GovernorCountingSimple-_quorumReached-uint256-: xref:governance.adoc#GovernorCountingSimple-_quorumReached-uint256- +:GovernorCountingSimple-_voteSucceeded: pass:normal[xref:governance.adoc#GovernorCountingSimple-_voteSucceeded-uint256-[`GovernorCountingSimple._voteSucceeded`]] +:xref-GovernorCountingSimple-_voteSucceeded-uint256-: xref:governance.adoc#GovernorCountingSimple-_voteSucceeded-uint256- +:GovernorCountingSimple-_countVote: pass:normal[xref:governance.adoc#GovernorCountingSimple-_countVote-uint256-address-uint8-uint256-[`GovernorCountingSimple._countVote`]] +:xref-GovernorCountingSimple-_countVote-uint256-address-uint8-uint256-: xref:governance.adoc#GovernorCountingSimple-_countVote-uint256-address-uint8-uint256- +:GovernorCountingSimple-ProposalVote: pass:normal[xref:governance.adoc#GovernorCountingSimple-ProposalVote[`GovernorCountingSimple.ProposalVote`]] +:xref-GovernorCountingSimple-ProposalVote: xref:governance.adoc#GovernorCountingSimple-ProposalVote +:GovernorCountingSimple-VoteType: pass:normal[xref:governance.adoc#GovernorCountingSimple-VoteType[`GovernorCountingSimple.VoteType`]] +:xref-GovernorCountingSimple-VoteType: xref:governance.adoc#GovernorCountingSimple-VoteType +:GovernorPreventLateQuorum: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum[`GovernorPreventLateQuorum`]] +:xref-GovernorPreventLateQuorum: xref:governance.adoc#GovernorPreventLateQuorum +:GovernorPreventLateQuorum-constructor: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64-[`GovernorPreventLateQuorum.constructor`]] +:xref-GovernorPreventLateQuorum-constructor-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64- +:GovernorPreventLateQuorum-proposalDeadline: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256-[`GovernorPreventLateQuorum.proposalDeadline`]] +:xref-GovernorPreventLateQuorum-proposalDeadline-uint256-: xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256- +:GovernorPreventLateQuorum-_castVote: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-[`GovernorPreventLateQuorum._castVote`]] +:xref-GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-: xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string- +:GovernorPreventLateQuorum-lateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension--[`GovernorPreventLateQuorum.lateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-lateQuorumVoteExtension--: xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension-- +:GovernorPreventLateQuorum-setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum.setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-_setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum._setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-ProposalExtended: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-[`GovernorPreventLateQuorum.ProposalExtended`]] +:xref-GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64- +:GovernorPreventLateQuorum-LateQuorumVoteExtensionSet: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-[`GovernorPreventLateQuorum.LateQuorumVoteExtensionSet`]] +:xref-GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64- +:GovernorProposalThreshold: pass:normal[xref:governance.adoc#GovernorProposalThreshold[`GovernorProposalThreshold`]] +:xref-GovernorProposalThreshold: xref:governance.adoc#GovernorProposalThreshold +:GovernorProposalThreshold-propose: pass:normal[xref:governance.adoc#GovernorProposalThreshold-propose-address---uint256---bytes---string-[`GovernorProposalThreshold.propose`]] +:xref-GovernorProposalThreshold-propose-address---uint256---bytes---string-: xref:governance.adoc#GovernorProposalThreshold-propose-address---uint256---bytes---string- +:GovernorSettings: pass:normal[xref:governance.adoc#GovernorSettings[`GovernorSettings`]] +:xref-GovernorSettings: xref:governance.adoc#GovernorSettings +:GovernorSettings-constructor: pass:normal[xref:governance.adoc#GovernorSettings-constructor-uint256-uint256-uint256-[`GovernorSettings.constructor`]] +:xref-GovernorSettings-constructor-uint256-uint256-uint256-: xref:governance.adoc#GovernorSettings-constructor-uint256-uint256-uint256- +:GovernorSettings-votingDelay: pass:normal[xref:governance.adoc#GovernorSettings-votingDelay--[`GovernorSettings.votingDelay`]] +:xref-GovernorSettings-votingDelay--: xref:governance.adoc#GovernorSettings-votingDelay-- +:GovernorSettings-votingPeriod: pass:normal[xref:governance.adoc#GovernorSettings-votingPeriod--[`GovernorSettings.votingPeriod`]] +:xref-GovernorSettings-votingPeriod--: xref:governance.adoc#GovernorSettings-votingPeriod-- +:GovernorSettings-proposalThreshold: pass:normal[xref:governance.adoc#GovernorSettings-proposalThreshold--[`GovernorSettings.proposalThreshold`]] +:xref-GovernorSettings-proposalThreshold--: xref:governance.adoc#GovernorSettings-proposalThreshold-- +:GovernorSettings-setVotingDelay: pass:normal[xref:governance.adoc#GovernorSettings-setVotingDelay-uint256-[`GovernorSettings.setVotingDelay`]] +:xref-GovernorSettings-setVotingDelay-uint256-: xref:governance.adoc#GovernorSettings-setVotingDelay-uint256- +:GovernorSettings-setVotingPeriod: pass:normal[xref:governance.adoc#GovernorSettings-setVotingPeriod-uint256-[`GovernorSettings.setVotingPeriod`]] +:xref-GovernorSettings-setVotingPeriod-uint256-: xref:governance.adoc#GovernorSettings-setVotingPeriod-uint256- +:GovernorSettings-setProposalThreshold: pass:normal[xref:governance.adoc#GovernorSettings-setProposalThreshold-uint256-[`GovernorSettings.setProposalThreshold`]] +:xref-GovernorSettings-setProposalThreshold-uint256-: xref:governance.adoc#GovernorSettings-setProposalThreshold-uint256- +:GovernorSettings-_setVotingDelay: pass:normal[xref:governance.adoc#GovernorSettings-_setVotingDelay-uint256-[`GovernorSettings._setVotingDelay`]] +:xref-GovernorSettings-_setVotingDelay-uint256-: xref:governance.adoc#GovernorSettings-_setVotingDelay-uint256- +:GovernorSettings-_setVotingPeriod: pass:normal[xref:governance.adoc#GovernorSettings-_setVotingPeriod-uint256-[`GovernorSettings._setVotingPeriod`]] +:xref-GovernorSettings-_setVotingPeriod-uint256-: xref:governance.adoc#GovernorSettings-_setVotingPeriod-uint256- +:GovernorSettings-_setProposalThreshold: pass:normal[xref:governance.adoc#GovernorSettings-_setProposalThreshold-uint256-[`GovernorSettings._setProposalThreshold`]] +:xref-GovernorSettings-_setProposalThreshold-uint256-: xref:governance.adoc#GovernorSettings-_setProposalThreshold-uint256- +:GovernorSettings-VotingDelaySet: pass:normal[xref:governance.adoc#GovernorSettings-VotingDelaySet-uint256-uint256-[`GovernorSettings.VotingDelaySet`]] +:xref-GovernorSettings-VotingDelaySet-uint256-uint256-: xref:governance.adoc#GovernorSettings-VotingDelaySet-uint256-uint256- +:GovernorSettings-VotingPeriodSet: pass:normal[xref:governance.adoc#GovernorSettings-VotingPeriodSet-uint256-uint256-[`GovernorSettings.VotingPeriodSet`]] +:xref-GovernorSettings-VotingPeriodSet-uint256-uint256-: xref:governance.adoc#GovernorSettings-VotingPeriodSet-uint256-uint256- +:GovernorSettings-ProposalThresholdSet: pass:normal[xref:governance.adoc#GovernorSettings-ProposalThresholdSet-uint256-uint256-[`GovernorSettings.ProposalThresholdSet`]] +:xref-GovernorSettings-ProposalThresholdSet-uint256-uint256-: xref:governance.adoc#GovernorSettings-ProposalThresholdSet-uint256-uint256- +:ICompoundTimelock: pass:normal[xref:governance.adoc#ICompoundTimelock[`ICompoundTimelock`]] +:xref-ICompoundTimelock: xref:governance.adoc#ICompoundTimelock +:ICompoundTimelock-receive: pass:normal[xref:governance.adoc#ICompoundTimelock-receive--[`ICompoundTimelock.receive`]] +:xref-ICompoundTimelock-receive--: xref:governance.adoc#ICompoundTimelock-receive-- +:ICompoundTimelock-GRACE_PERIOD: pass:normal[xref:governance.adoc#ICompoundTimelock-GRACE_PERIOD--[`ICompoundTimelock.GRACE_PERIOD`]] +:xref-ICompoundTimelock-GRACE_PERIOD--: xref:governance.adoc#ICompoundTimelock-GRACE_PERIOD-- +:ICompoundTimelock-MINIMUM_DELAY: pass:normal[xref:governance.adoc#ICompoundTimelock-MINIMUM_DELAY--[`ICompoundTimelock.MINIMUM_DELAY`]] +:xref-ICompoundTimelock-MINIMUM_DELAY--: xref:governance.adoc#ICompoundTimelock-MINIMUM_DELAY-- +:ICompoundTimelock-MAXIMUM_DELAY: pass:normal[xref:governance.adoc#ICompoundTimelock-MAXIMUM_DELAY--[`ICompoundTimelock.MAXIMUM_DELAY`]] +:xref-ICompoundTimelock-MAXIMUM_DELAY--: xref:governance.adoc#ICompoundTimelock-MAXIMUM_DELAY-- +:ICompoundTimelock-admin: pass:normal[xref:governance.adoc#ICompoundTimelock-admin--[`ICompoundTimelock.admin`]] +:xref-ICompoundTimelock-admin--: xref:governance.adoc#ICompoundTimelock-admin-- +:ICompoundTimelock-pendingAdmin: pass:normal[xref:governance.adoc#ICompoundTimelock-pendingAdmin--[`ICompoundTimelock.pendingAdmin`]] +:xref-ICompoundTimelock-pendingAdmin--: xref:governance.adoc#ICompoundTimelock-pendingAdmin-- +:ICompoundTimelock-delay: pass:normal[xref:governance.adoc#ICompoundTimelock-delay--[`ICompoundTimelock.delay`]] +:xref-ICompoundTimelock-delay--: xref:governance.adoc#ICompoundTimelock-delay-- +:ICompoundTimelock-queuedTransactions: pass:normal[xref:governance.adoc#ICompoundTimelock-queuedTransactions-bytes32-[`ICompoundTimelock.queuedTransactions`]] +:xref-ICompoundTimelock-queuedTransactions-bytes32-: xref:governance.adoc#ICompoundTimelock-queuedTransactions-bytes32- +:ICompoundTimelock-setDelay: pass:normal[xref:governance.adoc#ICompoundTimelock-setDelay-uint256-[`ICompoundTimelock.setDelay`]] +:xref-ICompoundTimelock-setDelay-uint256-: xref:governance.adoc#ICompoundTimelock-setDelay-uint256- +:ICompoundTimelock-acceptAdmin: pass:normal[xref:governance.adoc#ICompoundTimelock-acceptAdmin--[`ICompoundTimelock.acceptAdmin`]] +:xref-ICompoundTimelock-acceptAdmin--: xref:governance.adoc#ICompoundTimelock-acceptAdmin-- +:ICompoundTimelock-setPendingAdmin: pass:normal[xref:governance.adoc#ICompoundTimelock-setPendingAdmin-address-[`ICompoundTimelock.setPendingAdmin`]] +:xref-ICompoundTimelock-setPendingAdmin-address-: xref:governance.adoc#ICompoundTimelock-setPendingAdmin-address- +:ICompoundTimelock-queueTransaction: pass:normal[xref:governance.adoc#ICompoundTimelock-queueTransaction-address-uint256-string-bytes-uint256-[`ICompoundTimelock.queueTransaction`]] +:xref-ICompoundTimelock-queueTransaction-address-uint256-string-bytes-uint256-: xref:governance.adoc#ICompoundTimelock-queueTransaction-address-uint256-string-bytes-uint256- +:ICompoundTimelock-cancelTransaction: pass:normal[xref:governance.adoc#ICompoundTimelock-cancelTransaction-address-uint256-string-bytes-uint256-[`ICompoundTimelock.cancelTransaction`]] +:xref-ICompoundTimelock-cancelTransaction-address-uint256-string-bytes-uint256-: xref:governance.adoc#ICompoundTimelock-cancelTransaction-address-uint256-string-bytes-uint256- +:ICompoundTimelock-executeTransaction: pass:normal[xref:governance.adoc#ICompoundTimelock-executeTransaction-address-uint256-string-bytes-uint256-[`ICompoundTimelock.executeTransaction`]] +:xref-ICompoundTimelock-executeTransaction-address-uint256-string-bytes-uint256-: xref:governance.adoc#ICompoundTimelock-executeTransaction-address-uint256-string-bytes-uint256- +:GovernorTimelockCompound: pass:normal[xref:governance.adoc#GovernorTimelockCompound[`GovernorTimelockCompound`]] +:xref-GovernorTimelockCompound: xref:governance.adoc#GovernorTimelockCompound +:GovernorTimelockCompound-constructor: pass:normal[xref:governance.adoc#GovernorTimelockCompound-constructor-contract-ICompoundTimelock-[`GovernorTimelockCompound.constructor`]] +:xref-GovernorTimelockCompound-constructor-contract-ICompoundTimelock-: xref:governance.adoc#GovernorTimelockCompound-constructor-contract-ICompoundTimelock- +:GovernorTimelockCompound-supportsInterface: pass:normal[xref:governance.adoc#GovernorTimelockCompound-supportsInterface-bytes4-[`GovernorTimelockCompound.supportsInterface`]] +:xref-GovernorTimelockCompound-supportsInterface-bytes4-: xref:governance.adoc#GovernorTimelockCompound-supportsInterface-bytes4- +:GovernorTimelockCompound-state: pass:normal[xref:governance.adoc#GovernorTimelockCompound-state-uint256-[`GovernorTimelockCompound.state`]] +:xref-GovernorTimelockCompound-state-uint256-: xref:governance.adoc#GovernorTimelockCompound-state-uint256- +:GovernorTimelockCompound-timelock: pass:normal[xref:governance.adoc#GovernorTimelockCompound-timelock--[`GovernorTimelockCompound.timelock`]] +:xref-GovernorTimelockCompound-timelock--: xref:governance.adoc#GovernorTimelockCompound-timelock-- +:GovernorTimelockCompound-proposalEta: pass:normal[xref:governance.adoc#GovernorTimelockCompound-proposalEta-uint256-[`GovernorTimelockCompound.proposalEta`]] +:xref-GovernorTimelockCompound-proposalEta-uint256-: xref:governance.adoc#GovernorTimelockCompound-proposalEta-uint256- +:GovernorTimelockCompound-queue: pass:normal[xref:governance.adoc#GovernorTimelockCompound-queue-address---uint256---bytes---bytes32-[`GovernorTimelockCompound.queue`]] +:xref-GovernorTimelockCompound-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockCompound-queue-address---uint256---bytes---bytes32- +:GovernorTimelockCompound-_execute: pass:normal[xref:governance.adoc#GovernorTimelockCompound-_execute-uint256-address---uint256---bytes---bytes32-[`GovernorTimelockCompound._execute`]] +:xref-GovernorTimelockCompound-_execute-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockCompound-_execute-uint256-address---uint256---bytes---bytes32- +:GovernorTimelockCompound-_cancel: pass:normal[xref:governance.adoc#GovernorTimelockCompound-_cancel-address---uint256---bytes---bytes32-[`GovernorTimelockCompound._cancel`]] +:xref-GovernorTimelockCompound-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockCompound-_cancel-address---uint256---bytes---bytes32- +:GovernorTimelockCompound-_executor: pass:normal[xref:governance.adoc#GovernorTimelockCompound-_executor--[`GovernorTimelockCompound._executor`]] +:xref-GovernorTimelockCompound-_executor--: xref:governance.adoc#GovernorTimelockCompound-_executor-- +:GovernorTimelockCompound-__acceptAdmin: pass:normal[xref:governance.adoc#GovernorTimelockCompound-__acceptAdmin--[`GovernorTimelockCompound.__acceptAdmin`]] +:xref-GovernorTimelockCompound-__acceptAdmin--: xref:governance.adoc#GovernorTimelockCompound-__acceptAdmin-- +:GovernorTimelockCompound-updateTimelock: pass:normal[xref:governance.adoc#GovernorTimelockCompound-updateTimelock-contract-ICompoundTimelock-[`GovernorTimelockCompound.updateTimelock`]] +:xref-GovernorTimelockCompound-updateTimelock-contract-ICompoundTimelock-: xref:governance.adoc#GovernorTimelockCompound-updateTimelock-contract-ICompoundTimelock- +:GovernorTimelockCompound-TimelockChange: pass:normal[xref:governance.adoc#GovernorTimelockCompound-TimelockChange-address-address-[`GovernorTimelockCompound.TimelockChange`]] +:xref-GovernorTimelockCompound-TimelockChange-address-address-: xref:governance.adoc#GovernorTimelockCompound-TimelockChange-address-address- +:GovernorTimelockCompound-ProposalTimelock: pass:normal[xref:governance.adoc#GovernorTimelockCompound-ProposalTimelock[`GovernorTimelockCompound.ProposalTimelock`]] +:xref-GovernorTimelockCompound-ProposalTimelock: xref:governance.adoc#GovernorTimelockCompound-ProposalTimelock +:GovernorTimelockControl: pass:normal[xref:governance.adoc#GovernorTimelockControl[`GovernorTimelockControl`]] +:xref-GovernorTimelockControl: xref:governance.adoc#GovernorTimelockControl +:GovernorTimelockControl-constructor: pass:normal[xref:governance.adoc#GovernorTimelockControl-constructor-contract-TimelockController-[`GovernorTimelockControl.constructor`]] +:xref-GovernorTimelockControl-constructor-contract-TimelockController-: xref:governance.adoc#GovernorTimelockControl-constructor-contract-TimelockController- +:GovernorTimelockControl-supportsInterface: pass:normal[xref:governance.adoc#GovernorTimelockControl-supportsInterface-bytes4-[`GovernorTimelockControl.supportsInterface`]] +:xref-GovernorTimelockControl-supportsInterface-bytes4-: xref:governance.adoc#GovernorTimelockControl-supportsInterface-bytes4- +:GovernorTimelockControl-state: pass:normal[xref:governance.adoc#GovernorTimelockControl-state-uint256-[`GovernorTimelockControl.state`]] +:xref-GovernorTimelockControl-state-uint256-: xref:governance.adoc#GovernorTimelockControl-state-uint256- +:GovernorTimelockControl-timelock: pass:normal[xref:governance.adoc#GovernorTimelockControl-timelock--[`GovernorTimelockControl.timelock`]] +:xref-GovernorTimelockControl-timelock--: xref:governance.adoc#GovernorTimelockControl-timelock-- +:GovernorTimelockControl-proposalEta: pass:normal[xref:governance.adoc#GovernorTimelockControl-proposalEta-uint256-[`GovernorTimelockControl.proposalEta`]] +:xref-GovernorTimelockControl-proposalEta-uint256-: xref:governance.adoc#GovernorTimelockControl-proposalEta-uint256- +:GovernorTimelockControl-queue: pass:normal[xref:governance.adoc#GovernorTimelockControl-queue-address---uint256---bytes---bytes32-[`GovernorTimelockControl.queue`]] +:xref-GovernorTimelockControl-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockControl-queue-address---uint256---bytes---bytes32- +:GovernorTimelockControl-_execute: pass:normal[xref:governance.adoc#GovernorTimelockControl-_execute-uint256-address---uint256---bytes---bytes32-[`GovernorTimelockControl._execute`]] +:xref-GovernorTimelockControl-_execute-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockControl-_execute-uint256-address---uint256---bytes---bytes32- +:GovernorTimelockControl-_cancel: pass:normal[xref:governance.adoc#GovernorTimelockControl-_cancel-address---uint256---bytes---bytes32-[`GovernorTimelockControl._cancel`]] +:xref-GovernorTimelockControl-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockControl-_cancel-address---uint256---bytes---bytes32- +:GovernorTimelockControl-_executor: pass:normal[xref:governance.adoc#GovernorTimelockControl-_executor--[`GovernorTimelockControl._executor`]] +:xref-GovernorTimelockControl-_executor--: xref:governance.adoc#GovernorTimelockControl-_executor-- +:GovernorTimelockControl-updateTimelock: pass:normal[xref:governance.adoc#GovernorTimelockControl-updateTimelock-contract-TimelockController-[`GovernorTimelockControl.updateTimelock`]] +:xref-GovernorTimelockControl-updateTimelock-contract-TimelockController-: xref:governance.adoc#GovernorTimelockControl-updateTimelock-contract-TimelockController- +:GovernorTimelockControl-TimelockChange: pass:normal[xref:governance.adoc#GovernorTimelockControl-TimelockChange-address-address-[`GovernorTimelockControl.TimelockChange`]] +:xref-GovernorTimelockControl-TimelockChange-address-address-: xref:governance.adoc#GovernorTimelockControl-TimelockChange-address-address- +:GovernorVotes: pass:normal[xref:governance.adoc#GovernorVotes[`GovernorVotes`]] +:xref-GovernorVotes: xref:governance.adoc#GovernorVotes +:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-IVotes[`GovernorVotes.token`]] +:xref-GovernorVotes-token-contract-IVotes: xref:governance.adoc#GovernorVotes-token-contract-IVotes +:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-IVotes-[`GovernorVotes.constructor`]] +:xref-GovernorVotes-constructor-contract-IVotes-: xref:governance.adoc#GovernorVotes-constructor-contract-IVotes- +:GovernorVotes-getVotes: pass:normal[xref:governance.adoc#GovernorVotes-getVotes-address-uint256-[`GovernorVotes.getVotes`]] +:xref-GovernorVotes-getVotes-address-uint256-: xref:governance.adoc#GovernorVotes-getVotes-address-uint256- +:GovernorVotesComp: pass:normal[xref:governance.adoc#GovernorVotesComp[`GovernorVotesComp`]] +:xref-GovernorVotesComp: xref:governance.adoc#GovernorVotesComp +:GovernorVotesComp-token: pass:normal[xref:governance.adoc#GovernorVotesComp-token-contract-ERC20VotesComp[`GovernorVotesComp.token`]] +:xref-GovernorVotesComp-token-contract-ERC20VotesComp: xref:governance.adoc#GovernorVotesComp-token-contract-ERC20VotesComp +:GovernorVotesComp-constructor: pass:normal[xref:governance.adoc#GovernorVotesComp-constructor-contract-ERC20VotesComp-[`GovernorVotesComp.constructor`]] +:xref-GovernorVotesComp-constructor-contract-ERC20VotesComp-: xref:governance.adoc#GovernorVotesComp-constructor-contract-ERC20VotesComp- +:GovernorVotesComp-getVotes: pass:normal[xref:governance.adoc#GovernorVotesComp-getVotes-address-uint256-[`GovernorVotesComp.getVotes`]] +:xref-GovernorVotesComp-getVotes-address-uint256-: xref:governance.adoc#GovernorVotesComp-getVotes-address-uint256- +:GovernorVotesQuorumFraction: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction[`GovernorVotesQuorumFraction`]] +:xref-GovernorVotesQuorumFraction: xref:governance.adoc#GovernorVotesQuorumFraction +:GovernorVotesQuorumFraction-constructor: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-constructor-uint256-[`GovernorVotesQuorumFraction.constructor`]] +:xref-GovernorVotesQuorumFraction-constructor-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-constructor-uint256- +:GovernorVotesQuorumFraction-quorumNumerator: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-quorumNumerator--[`GovernorVotesQuorumFraction.quorumNumerator`]] +:xref-GovernorVotesQuorumFraction-quorumNumerator--: xref:governance.adoc#GovernorVotesQuorumFraction-quorumNumerator-- +:GovernorVotesQuorumFraction-quorumDenominator: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-quorumDenominator--[`GovernorVotesQuorumFraction.quorumDenominator`]] +:xref-GovernorVotesQuorumFraction-quorumDenominator--: xref:governance.adoc#GovernorVotesQuorumFraction-quorumDenominator-- +:GovernorVotesQuorumFraction-quorum: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-quorum-uint256-[`GovernorVotesQuorumFraction.quorum`]] +:xref-GovernorVotesQuorumFraction-quorum-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-quorum-uint256- +:GovernorVotesQuorumFraction-updateQuorumNumerator: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-updateQuorumNumerator-uint256-[`GovernorVotesQuorumFraction.updateQuorumNumerator`]] +:xref-GovernorVotesQuorumFraction-updateQuorumNumerator-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-updateQuorumNumerator-uint256- +:GovernorVotesQuorumFraction-_updateQuorumNumerator: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-_updateQuorumNumerator-uint256-[`GovernorVotesQuorumFraction._updateQuorumNumerator`]] +:xref-GovernorVotesQuorumFraction-_updateQuorumNumerator-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-_updateQuorumNumerator-uint256- +:GovernorVotesQuorumFraction-QuorumNumeratorUpdated: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-QuorumNumeratorUpdated-uint256-uint256-[`GovernorVotesQuorumFraction.QuorumNumeratorUpdated`]] +:xref-GovernorVotesQuorumFraction-QuorumNumeratorUpdated-uint256-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-QuorumNumeratorUpdated-uint256-uint256- +:IGovernorTimelock: pass:normal[xref:governance.adoc#IGovernorTimelock[`IGovernorTimelock`]] +:xref-IGovernorTimelock: xref:governance.adoc#IGovernorTimelock +:IGovernorTimelock-timelock: pass:normal[xref:governance.adoc#IGovernorTimelock-timelock--[`IGovernorTimelock.timelock`]] +:xref-IGovernorTimelock-timelock--: xref:governance.adoc#IGovernorTimelock-timelock-- +:IGovernorTimelock-proposalEta: pass:normal[xref:governance.adoc#IGovernorTimelock-proposalEta-uint256-[`IGovernorTimelock.proposalEta`]] +:xref-IGovernorTimelock-proposalEta-uint256-: xref:governance.adoc#IGovernorTimelock-proposalEta-uint256- +:IGovernorTimelock-queue: pass:normal[xref:governance.adoc#IGovernorTimelock-queue-address---uint256---bytes---bytes32-[`IGovernorTimelock.queue`]] +:xref-IGovernorTimelock-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernorTimelock-queue-address---uint256---bytes---bytes32- +:IGovernorTimelock-ProposalQueued: pass:normal[xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256-[`IGovernorTimelock.ProposalQueued`]] +:xref-IGovernorTimelock-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256- +:IVotes: pass:normal[xref:governance.adoc#IVotes[`IVotes`]] +:xref-IVotes: xref:governance.adoc#IVotes +:IVotes-getVotes: pass:normal[xref:governance.adoc#IVotes-getVotes-address-[`IVotes.getVotes`]] +:xref-IVotes-getVotes-address-: xref:governance.adoc#IVotes-getVotes-address- +:IVotes-getPastVotes: pass:normal[xref:governance.adoc#IVotes-getPastVotes-address-uint256-[`IVotes.getPastVotes`]] +:xref-IVotes-getPastVotes-address-uint256-: xref:governance.adoc#IVotes-getPastVotes-address-uint256- +:IVotes-getPastTotalSupply: pass:normal[xref:governance.adoc#IVotes-getPastTotalSupply-uint256-[`IVotes.getPastTotalSupply`]] +:xref-IVotes-getPastTotalSupply-uint256-: xref:governance.adoc#IVotes-getPastTotalSupply-uint256- +:IVotes-delegates: pass:normal[xref:governance.adoc#IVotes-delegates-address-[`IVotes.delegates`]] +:xref-IVotes-delegates-address-: xref:governance.adoc#IVotes-delegates-address- +:IVotes-delegate: pass:normal[xref:governance.adoc#IVotes-delegate-address-[`IVotes.delegate`]] +:xref-IVotes-delegate-address-: xref:governance.adoc#IVotes-delegate-address- +:IVotes-delegateBySig: pass:normal[xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`IVotes.delegateBySig`]] +:xref-IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:IVotes-DelegateChanged: pass:normal[xref:governance.adoc#IVotes-DelegateChanged-address-address-address-[`IVotes.DelegateChanged`]] +:xref-IVotes-DelegateChanged-address-address-address-: xref:governance.adoc#IVotes-DelegateChanged-address-address-address- +:IVotes-DelegateVotesChanged: pass:normal[xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256-[`IVotes.DelegateVotesChanged`]] +:xref-IVotes-DelegateVotesChanged-address-uint256-uint256-: xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256- +:Votes: pass:normal[xref:governance.adoc#Votes[`Votes`]] +:xref-Votes: xref:governance.adoc#Votes +:Votes-getVotes: pass:normal[xref:governance.adoc#Votes-getVotes-address-[`Votes.getVotes`]] +:xref-Votes-getVotes-address-: xref:governance.adoc#Votes-getVotes-address- +:Votes-getPastVotes: pass:normal[xref:governance.adoc#Votes-getPastVotes-address-uint256-[`Votes.getPastVotes`]] +:xref-Votes-getPastVotes-address-uint256-: xref:governance.adoc#Votes-getPastVotes-address-uint256- +:Votes-getPastTotalSupply: pass:normal[xref:governance.adoc#Votes-getPastTotalSupply-uint256-[`Votes.getPastTotalSupply`]] +:xref-Votes-getPastTotalSupply-uint256-: xref:governance.adoc#Votes-getPastTotalSupply-uint256- +:Votes-_getTotalSupply: pass:normal[xref:governance.adoc#Votes-_getTotalSupply--[`Votes._getTotalSupply`]] +:xref-Votes-_getTotalSupply--: xref:governance.adoc#Votes-_getTotalSupply-- +:Votes-delegates: pass:normal[xref:governance.adoc#Votes-delegates-address-[`Votes.delegates`]] +:xref-Votes-delegates-address-: xref:governance.adoc#Votes-delegates-address- +:Votes-delegate: pass:normal[xref:governance.adoc#Votes-delegate-address-[`Votes.delegate`]] +:xref-Votes-delegate-address-: xref:governance.adoc#Votes-delegate-address- +:Votes-delegateBySig: pass:normal[xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`Votes.delegateBySig`]] +:xref-Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:Votes-_delegate: pass:normal[xref:governance.adoc#Votes-_delegate-address-address-[`Votes._delegate`]] +:xref-Votes-_delegate-address-address-: xref:governance.adoc#Votes-_delegate-address-address- +:Votes-_transferVotingUnits: pass:normal[xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256-[`Votes._transferVotingUnits`]] +:xref-Votes-_transferVotingUnits-address-address-uint256-: xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256- +:Votes-_useNonce: pass:normal[xref:governance.adoc#Votes-_useNonce-address-[`Votes._useNonce`]] +:xref-Votes-_useNonce-address-: xref:governance.adoc#Votes-_useNonce-address- +:Votes-nonces: pass:normal[xref:governance.adoc#Votes-nonces-address-[`Votes.nonces`]] +:xref-Votes-nonces-address-: xref:governance.adoc#Votes-nonces-address- +:Votes-DOMAIN_SEPARATOR: pass:normal[xref:governance.adoc#Votes-DOMAIN_SEPARATOR--[`Votes.DOMAIN_SEPARATOR`]] +:xref-Votes-DOMAIN_SEPARATOR--: xref:governance.adoc#Votes-DOMAIN_SEPARATOR-- +:Votes-_getVotingUnits: pass:normal[xref:governance.adoc#Votes-_getVotingUnits-address-[`Votes._getVotingUnits`]] +:xref-Votes-_getVotingUnits-address-: xref:governance.adoc#Votes-_getVotingUnits-address- +:IERC1271: pass:normal[xref:interfaces.adoc#IERC1271[`IERC1271`]] +:xref-IERC1271: xref:interfaces.adoc#IERC1271 +:IERC1271-isValidSignature: pass:normal[xref:interfaces.adoc#IERC1271-isValidSignature-bytes32-bytes-[`IERC1271.isValidSignature`]] +:xref-IERC1271-isValidSignature-bytes32-bytes-: xref:interfaces.adoc#IERC1271-isValidSignature-bytes32-bytes- +:IERC1363: pass:normal[xref:interfaces.adoc#IERC1363[`IERC1363`]] +:xref-IERC1363: xref:interfaces.adoc#IERC1363 +:IERC1363-transferAndCall: pass:normal[xref:interfaces.adoc#IERC1363-transferAndCall-address-uint256-[`IERC1363.transferAndCall`]] +:xref-IERC1363-transferAndCall-address-uint256-: xref:interfaces.adoc#IERC1363-transferAndCall-address-uint256- +:IERC1363-transferAndCall: pass:normal[xref:interfaces.adoc#IERC1363-transferAndCall-address-uint256-bytes-[`IERC1363.transferAndCall`]] +:xref-IERC1363-transferAndCall-address-uint256-bytes-: xref:interfaces.adoc#IERC1363-transferAndCall-address-uint256-bytes- +:IERC1363-transferFromAndCall: pass:normal[xref:interfaces.adoc#IERC1363-transferFromAndCall-address-address-uint256-[`IERC1363.transferFromAndCall`]] +:xref-IERC1363-transferFromAndCall-address-address-uint256-: xref:interfaces.adoc#IERC1363-transferFromAndCall-address-address-uint256- +:IERC1363-transferFromAndCall: pass:normal[xref:interfaces.adoc#IERC1363-transferFromAndCall-address-address-uint256-bytes-[`IERC1363.transferFromAndCall`]] +:xref-IERC1363-transferFromAndCall-address-address-uint256-bytes-: xref:interfaces.adoc#IERC1363-transferFromAndCall-address-address-uint256-bytes- +:IERC1363-approveAndCall: pass:normal[xref:interfaces.adoc#IERC1363-approveAndCall-address-uint256-[`IERC1363.approveAndCall`]] +:xref-IERC1363-approveAndCall-address-uint256-: xref:interfaces.adoc#IERC1363-approveAndCall-address-uint256- +:IERC1363-approveAndCall: pass:normal[xref:interfaces.adoc#IERC1363-approveAndCall-address-uint256-bytes-[`IERC1363.approveAndCall`]] +:xref-IERC1363-approveAndCall-address-uint256-bytes-: xref:interfaces.adoc#IERC1363-approveAndCall-address-uint256-bytes- +:IERC1363Receiver: pass:normal[xref:interfaces.adoc#IERC1363Receiver[`IERC1363Receiver`]] +:xref-IERC1363Receiver: xref:interfaces.adoc#IERC1363Receiver +:IERC1363Receiver-onTransferReceived: pass:normal[xref:interfaces.adoc#IERC1363Receiver-onTransferReceived-address-address-uint256-bytes-[`IERC1363Receiver.onTransferReceived`]] +:xref-IERC1363Receiver-onTransferReceived-address-address-uint256-bytes-: xref:interfaces.adoc#IERC1363Receiver-onTransferReceived-address-address-uint256-bytes- +:IERC1363Spender: pass:normal[xref:interfaces.adoc#IERC1363Spender[`IERC1363Spender`]] +:xref-IERC1363Spender: xref:interfaces.adoc#IERC1363Spender +:IERC1363Spender-onApprovalReceived: pass:normal[xref:interfaces.adoc#IERC1363Spender-onApprovalReceived-address-uint256-bytes-[`IERC1363Spender.onApprovalReceived`]] +:xref-IERC1363Spender-onApprovalReceived-address-uint256-bytes-: xref:interfaces.adoc#IERC1363Spender-onApprovalReceived-address-uint256-bytes- +:IERC2981: pass:normal[xref:interfaces.adoc#IERC2981[`IERC2981`]] +:xref-IERC2981: xref:interfaces.adoc#IERC2981 +:IERC2981-royaltyInfo: pass:normal[xref:interfaces.adoc#IERC2981-royaltyInfo-uint256-uint256-[`IERC2981.royaltyInfo`]] +:xref-IERC2981-royaltyInfo-uint256-uint256-: xref:interfaces.adoc#IERC2981-royaltyInfo-uint256-uint256- +:IERC3156FlashBorrower: pass:normal[xref:interfaces.adoc#IERC3156FlashBorrower[`IERC3156FlashBorrower`]] +:xref-IERC3156FlashBorrower: xref:interfaces.adoc#IERC3156FlashBorrower +:IERC3156FlashBorrower-onFlashLoan: pass:normal[xref:interfaces.adoc#IERC3156FlashBorrower-onFlashLoan-address-address-uint256-uint256-bytes-[`IERC3156FlashBorrower.onFlashLoan`]] +:xref-IERC3156FlashBorrower-onFlashLoan-address-address-uint256-uint256-bytes-: xref:interfaces.adoc#IERC3156FlashBorrower-onFlashLoan-address-address-uint256-uint256-bytes- +:IERC3156FlashLender: pass:normal[xref:interfaces.adoc#IERC3156FlashLender[`IERC3156FlashLender`]] +:xref-IERC3156FlashLender: xref:interfaces.adoc#IERC3156FlashLender +:IERC3156FlashLender-maxFlashLoan: pass:normal[xref:interfaces.adoc#IERC3156FlashLender-maxFlashLoan-address-[`IERC3156FlashLender.maxFlashLoan`]] +:xref-IERC3156FlashLender-maxFlashLoan-address-: xref:interfaces.adoc#IERC3156FlashLender-maxFlashLoan-address- +:IERC3156FlashLender-flashFee: pass:normal[xref:interfaces.adoc#IERC3156FlashLender-flashFee-address-uint256-[`IERC3156FlashLender.flashFee`]] +:xref-IERC3156FlashLender-flashFee-address-uint256-: xref:interfaces.adoc#IERC3156FlashLender-flashFee-address-uint256- +:IERC3156FlashLender-flashLoan: pass:normal[xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-[`IERC3156FlashLender.flashLoan`]] +:xref-IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-: xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes- +:IERC1822Proxiable: pass:normal[xref:interfaces.adoc#IERC1822Proxiable[`IERC1822Proxiable`]] +:xref-IERC1822Proxiable: xref:interfaces.adoc#IERC1822Proxiable +:IERC1822Proxiable-proxiableUUID: pass:normal[xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID--[`IERC1822Proxiable.proxiableUUID`]] +:xref-IERC1822Proxiable-proxiableUUID--: xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID-- +:IERC2612: pass:normal[xref:interfaces.adoc#IERC2612[`IERC2612`]] +:xref-IERC2612: xref:interfaces.adoc#IERC2612 +:ERC2771Context: pass:normal[xref:metatx.adoc#ERC2771Context[`ERC2771Context`]] +:xref-ERC2771Context: xref:metatx.adoc#ERC2771Context +:ERC2771Context-constructor: pass:normal[xref:metatx.adoc#ERC2771Context-constructor-address-[`ERC2771Context.constructor`]] +:xref-ERC2771Context-constructor-address-: xref:metatx.adoc#ERC2771Context-constructor-address- +:ERC2771Context-isTrustedForwarder: pass:normal[xref:metatx.adoc#ERC2771Context-isTrustedForwarder-address-[`ERC2771Context.isTrustedForwarder`]] +:xref-ERC2771Context-isTrustedForwarder-address-: xref:metatx.adoc#ERC2771Context-isTrustedForwarder-address- +:ERC2771Context-_msgSender: pass:normal[xref:metatx.adoc#ERC2771Context-_msgSender--[`ERC2771Context._msgSender`]] +:xref-ERC2771Context-_msgSender--: xref:metatx.adoc#ERC2771Context-_msgSender-- +:ERC2771Context-_msgData: pass:normal[xref:metatx.adoc#ERC2771Context-_msgData--[`ERC2771Context._msgData`]] +:xref-ERC2771Context-_msgData--: xref:metatx.adoc#ERC2771Context-_msgData-- +:MinimalForwarder: pass:normal[xref:metatx.adoc#MinimalForwarder[`MinimalForwarder`]] +:xref-MinimalForwarder: xref:metatx.adoc#MinimalForwarder +:MinimalForwarder-getNonce: pass:normal[xref:metatx.adoc#MinimalForwarder-getNonce-address-[`MinimalForwarder.getNonce`]] +:xref-MinimalForwarder-getNonce-address-: xref:metatx.adoc#MinimalForwarder-getNonce-address- +:MinimalForwarder-verify: pass:normal[xref:metatx.adoc#MinimalForwarder-verify-struct-MinimalForwarder-ForwardRequest-bytes-[`MinimalForwarder.verify`]] +:xref-MinimalForwarder-verify-struct-MinimalForwarder-ForwardRequest-bytes-: xref:metatx.adoc#MinimalForwarder-verify-struct-MinimalForwarder-ForwardRequest-bytes- +:MinimalForwarder-execute: pass:normal[xref:metatx.adoc#MinimalForwarder-execute-struct-MinimalForwarder-ForwardRequest-bytes-[`MinimalForwarder.execute`]] +:xref-MinimalForwarder-execute-struct-MinimalForwarder-ForwardRequest-bytes-: xref:metatx.adoc#MinimalForwarder-execute-struct-MinimalForwarder-ForwardRequest-bytes- +:MinimalForwarder-ForwardRequest: pass:normal[xref:metatx.adoc#MinimalForwarder-ForwardRequest[`MinimalForwarder.ForwardRequest`]] +:xref-MinimalForwarder-ForwardRequest: xref:metatx.adoc#MinimalForwarder-ForwardRequest +:Clones: pass:normal[xref:proxy.adoc#Clones[`Clones`]] +:xref-Clones: xref:proxy.adoc#Clones +:Clones-clone: pass:normal[xref:proxy.adoc#Clones-clone-address-[`Clones.clone`]] +:xref-Clones-clone-address-: xref:proxy.adoc#Clones-clone-address- +:Clones-cloneDeterministic: pass:normal[xref:proxy.adoc#Clones-cloneDeterministic-address-bytes32-[`Clones.cloneDeterministic`]] +:xref-Clones-cloneDeterministic-address-bytes32-: xref:proxy.adoc#Clones-cloneDeterministic-address-bytes32- +:Clones-predictDeterministicAddress: pass:normal[xref:proxy.adoc#Clones-predictDeterministicAddress-address-bytes32-address-[`Clones.predictDeterministicAddress`]] +:xref-Clones-predictDeterministicAddress-address-bytes32-address-: xref:proxy.adoc#Clones-predictDeterministicAddress-address-bytes32-address- +:Clones-predictDeterministicAddress: pass:normal[xref:proxy.adoc#Clones-predictDeterministicAddress-address-bytes32-[`Clones.predictDeterministicAddress`]] +:xref-Clones-predictDeterministicAddress-address-bytes32-: xref:proxy.adoc#Clones-predictDeterministicAddress-address-bytes32- +:ERC1967Proxy: pass:normal[xref:proxy.adoc#ERC1967Proxy[`ERC1967Proxy`]] +:xref-ERC1967Proxy: xref:proxy.adoc#ERC1967Proxy +:ERC1967Proxy-constructor: pass:normal[xref:proxy.adoc#ERC1967Proxy-constructor-address-bytes-[`ERC1967Proxy.constructor`]] +:xref-ERC1967Proxy-constructor-address-bytes-: xref:proxy.adoc#ERC1967Proxy-constructor-address-bytes- +:ERC1967Proxy-_implementation: pass:normal[xref:proxy.adoc#ERC1967Proxy-_implementation--[`ERC1967Proxy._implementation`]] +:xref-ERC1967Proxy-_implementation--: xref:proxy.adoc#ERC1967Proxy-_implementation-- +:ERC1967Upgrade: pass:normal[xref:proxy.adoc#ERC1967Upgrade[`ERC1967Upgrade`]] +:xref-ERC1967Upgrade: xref:proxy.adoc#ERC1967Upgrade +:ERC1967Upgrade-_IMPLEMENTATION_SLOT: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_IMPLEMENTATION_SLOT-bytes32[`ERC1967Upgrade._IMPLEMENTATION_SLOT`]] +:xref-ERC1967Upgrade-_IMPLEMENTATION_SLOT-bytes32: xref:proxy.adoc#ERC1967Upgrade-_IMPLEMENTATION_SLOT-bytes32 +:ERC1967Upgrade-_ADMIN_SLOT: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_ADMIN_SLOT-bytes32[`ERC1967Upgrade._ADMIN_SLOT`]] +:xref-ERC1967Upgrade-_ADMIN_SLOT-bytes32: xref:proxy.adoc#ERC1967Upgrade-_ADMIN_SLOT-bytes32 +:ERC1967Upgrade-_BEACON_SLOT: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_BEACON_SLOT-bytes32[`ERC1967Upgrade._BEACON_SLOT`]] +:xref-ERC1967Upgrade-_BEACON_SLOT-bytes32: xref:proxy.adoc#ERC1967Upgrade-_BEACON_SLOT-bytes32 +:ERC1967Upgrade-_getImplementation: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_getImplementation--[`ERC1967Upgrade._getImplementation`]] +:xref-ERC1967Upgrade-_getImplementation--: xref:proxy.adoc#ERC1967Upgrade-_getImplementation-- +:ERC1967Upgrade-_upgradeTo: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeTo-address-[`ERC1967Upgrade._upgradeTo`]] +:xref-ERC1967Upgrade-_upgradeTo-address-: xref:proxy.adoc#ERC1967Upgrade-_upgradeTo-address- +:ERC1967Upgrade-_upgradeToAndCall: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCall`]] +:xref-ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool- +:ERC1967Upgrade-_upgradeToAndCallUUPS: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallUUPS`]] +:xref-ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool- +:ERC1967Upgrade-_getAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_getAdmin--[`ERC1967Upgrade._getAdmin`]] +:xref-ERC1967Upgrade-_getAdmin--: xref:proxy.adoc#ERC1967Upgrade-_getAdmin-- +:ERC1967Upgrade-_changeAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_changeAdmin-address-[`ERC1967Upgrade._changeAdmin`]] +:xref-ERC1967Upgrade-_changeAdmin-address-: xref:proxy.adoc#ERC1967Upgrade-_changeAdmin-address- +:ERC1967Upgrade-_getBeacon: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_getBeacon--[`ERC1967Upgrade._getBeacon`]] +:xref-ERC1967Upgrade-_getBeacon--: xref:proxy.adoc#ERC1967Upgrade-_getBeacon-- +:ERC1967Upgrade-_upgradeBeaconToAndCall: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeBeaconToAndCall-address-bytes-bool-[`ERC1967Upgrade._upgradeBeaconToAndCall`]] +:xref-ERC1967Upgrade-_upgradeBeaconToAndCall-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeBeaconToAndCall-address-bytes-bool- +:ERC1967Upgrade-Upgraded: pass:normal[xref:proxy.adoc#ERC1967Upgrade-Upgraded-address-[`ERC1967Upgrade.Upgraded`]] +:xref-ERC1967Upgrade-Upgraded-address-: xref:proxy.adoc#ERC1967Upgrade-Upgraded-address- +:ERC1967Upgrade-AdminChanged: pass:normal[xref:proxy.adoc#ERC1967Upgrade-AdminChanged-address-address-[`ERC1967Upgrade.AdminChanged`]] +:xref-ERC1967Upgrade-AdminChanged-address-address-: xref:proxy.adoc#ERC1967Upgrade-AdminChanged-address-address- +:ERC1967Upgrade-BeaconUpgraded: pass:normal[xref:proxy.adoc#ERC1967Upgrade-BeaconUpgraded-address-[`ERC1967Upgrade.BeaconUpgraded`]] +:xref-ERC1967Upgrade-BeaconUpgraded-address-: xref:proxy.adoc#ERC1967Upgrade-BeaconUpgraded-address- +:Proxy: pass:normal[xref:proxy.adoc#Proxy[`Proxy`]] +:xref-Proxy: xref:proxy.adoc#Proxy +:Proxy-_delegate: pass:normal[xref:proxy.adoc#Proxy-_delegate-address-[`Proxy._delegate`]] +:xref-Proxy-_delegate-address-: xref:proxy.adoc#Proxy-_delegate-address- +:Proxy-_implementation: pass:normal[xref:proxy.adoc#Proxy-_implementation--[`Proxy._implementation`]] +:xref-Proxy-_implementation--: xref:proxy.adoc#Proxy-_implementation-- +:Proxy-_fallback: pass:normal[xref:proxy.adoc#Proxy-_fallback--[`Proxy._fallback`]] +:xref-Proxy-_fallback--: xref:proxy.adoc#Proxy-_fallback-- +:Proxy-fallback: pass:normal[xref:proxy.adoc#Proxy-fallback--[`Proxy.fallback`]] +:xref-Proxy-fallback--: xref:proxy.adoc#Proxy-fallback-- +:Proxy-receive: pass:normal[xref:proxy.adoc#Proxy-receive--[`Proxy.receive`]] +:xref-Proxy-receive--: xref:proxy.adoc#Proxy-receive-- +:Proxy-_beforeFallback: pass:normal[xref:proxy.adoc#Proxy-_beforeFallback--[`Proxy._beforeFallback`]] +:xref-Proxy-_beforeFallback--: xref:proxy.adoc#Proxy-_beforeFallback-- +:BeaconProxy: pass:normal[xref:proxy.adoc#BeaconProxy[`BeaconProxy`]] +:xref-BeaconProxy: xref:proxy.adoc#BeaconProxy +:BeaconProxy-constructor: pass:normal[xref:proxy.adoc#BeaconProxy-constructor-address-bytes-[`BeaconProxy.constructor`]] +:xref-BeaconProxy-constructor-address-bytes-: xref:proxy.adoc#BeaconProxy-constructor-address-bytes- +:BeaconProxy-_beacon: pass:normal[xref:proxy.adoc#BeaconProxy-_beacon--[`BeaconProxy._beacon`]] +:xref-BeaconProxy-_beacon--: xref:proxy.adoc#BeaconProxy-_beacon-- +:BeaconProxy-_implementation: pass:normal[xref:proxy.adoc#BeaconProxy-_implementation--[`BeaconProxy._implementation`]] +:xref-BeaconProxy-_implementation--: xref:proxy.adoc#BeaconProxy-_implementation-- +:BeaconProxy-_setBeacon: pass:normal[xref:proxy.adoc#BeaconProxy-_setBeacon-address-bytes-[`BeaconProxy._setBeacon`]] +:xref-BeaconProxy-_setBeacon-address-bytes-: xref:proxy.adoc#BeaconProxy-_setBeacon-address-bytes- +:IBeacon: pass:normal[xref:proxy.adoc#IBeacon[`IBeacon`]] +:xref-IBeacon: xref:proxy.adoc#IBeacon +:IBeacon-implementation: pass:normal[xref:proxy.adoc#IBeacon-implementation--[`IBeacon.implementation`]] +:xref-IBeacon-implementation--: xref:proxy.adoc#IBeacon-implementation-- +:UpgradeableBeacon: pass:normal[xref:proxy.adoc#UpgradeableBeacon[`UpgradeableBeacon`]] +:xref-UpgradeableBeacon: xref:proxy.adoc#UpgradeableBeacon +:UpgradeableBeacon-constructor: pass:normal[xref:proxy.adoc#UpgradeableBeacon-constructor-address-[`UpgradeableBeacon.constructor`]] +:xref-UpgradeableBeacon-constructor-address-: xref:proxy.adoc#UpgradeableBeacon-constructor-address- +:UpgradeableBeacon-implementation: pass:normal[xref:proxy.adoc#UpgradeableBeacon-implementation--[`UpgradeableBeacon.implementation`]] +:xref-UpgradeableBeacon-implementation--: xref:proxy.adoc#UpgradeableBeacon-implementation-- +:UpgradeableBeacon-upgradeTo: pass:normal[xref:proxy.adoc#UpgradeableBeacon-upgradeTo-address-[`UpgradeableBeacon.upgradeTo`]] +:xref-UpgradeableBeacon-upgradeTo-address-: xref:proxy.adoc#UpgradeableBeacon-upgradeTo-address- +:UpgradeableBeacon-Upgraded: pass:normal[xref:proxy.adoc#UpgradeableBeacon-Upgraded-address-[`UpgradeableBeacon.Upgraded`]] +:xref-UpgradeableBeacon-Upgraded-address-: xref:proxy.adoc#UpgradeableBeacon-Upgraded-address- +:ProxyAdmin: pass:normal[xref:proxy.adoc#ProxyAdmin[`ProxyAdmin`]] +:xref-ProxyAdmin: xref:proxy.adoc#ProxyAdmin +:ProxyAdmin-getProxyImplementation: pass:normal[xref:proxy.adoc#ProxyAdmin-getProxyImplementation-contract-TransparentUpgradeableProxy-[`ProxyAdmin.getProxyImplementation`]] +:xref-ProxyAdmin-getProxyImplementation-contract-TransparentUpgradeableProxy-: xref:proxy.adoc#ProxyAdmin-getProxyImplementation-contract-TransparentUpgradeableProxy- +:ProxyAdmin-getProxyAdmin: pass:normal[xref:proxy.adoc#ProxyAdmin-getProxyAdmin-contract-TransparentUpgradeableProxy-[`ProxyAdmin.getProxyAdmin`]] +:xref-ProxyAdmin-getProxyAdmin-contract-TransparentUpgradeableProxy-: xref:proxy.adoc#ProxyAdmin-getProxyAdmin-contract-TransparentUpgradeableProxy- +:ProxyAdmin-changeProxyAdmin: pass:normal[xref:proxy.adoc#ProxyAdmin-changeProxyAdmin-contract-TransparentUpgradeableProxy-address-[`ProxyAdmin.changeProxyAdmin`]] +:xref-ProxyAdmin-changeProxyAdmin-contract-TransparentUpgradeableProxy-address-: xref:proxy.adoc#ProxyAdmin-changeProxyAdmin-contract-TransparentUpgradeableProxy-address- +:ProxyAdmin-upgrade: pass:normal[xref:proxy.adoc#ProxyAdmin-upgrade-contract-TransparentUpgradeableProxy-address-[`ProxyAdmin.upgrade`]] +:xref-ProxyAdmin-upgrade-contract-TransparentUpgradeableProxy-address-: xref:proxy.adoc#ProxyAdmin-upgrade-contract-TransparentUpgradeableProxy-address- +:ProxyAdmin-upgradeAndCall: pass:normal[xref:proxy.adoc#ProxyAdmin-upgradeAndCall-contract-TransparentUpgradeableProxy-address-bytes-[`ProxyAdmin.upgradeAndCall`]] +:xref-ProxyAdmin-upgradeAndCall-contract-TransparentUpgradeableProxy-address-bytes-: xref:proxy.adoc#ProxyAdmin-upgradeAndCall-contract-TransparentUpgradeableProxy-address-bytes- +:TransparentUpgradeableProxy: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy[`TransparentUpgradeableProxy`]] +:xref-TransparentUpgradeableProxy: xref:proxy.adoc#TransparentUpgradeableProxy +:TransparentUpgradeableProxy-ifAdmin: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-ifAdmin--[`TransparentUpgradeableProxy.ifAdmin`]] +:xref-TransparentUpgradeableProxy-ifAdmin--: xref:proxy.adoc#TransparentUpgradeableProxy-ifAdmin-- +:TransparentUpgradeableProxy-constructor: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-constructor-address-address-bytes-[`TransparentUpgradeableProxy.constructor`]] +:xref-TransparentUpgradeableProxy-constructor-address-address-bytes-: xref:proxy.adoc#TransparentUpgradeableProxy-constructor-address-address-bytes- +:TransparentUpgradeableProxy-admin: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-admin--[`TransparentUpgradeableProxy.admin`]] +:xref-TransparentUpgradeableProxy-admin--: xref:proxy.adoc#TransparentUpgradeableProxy-admin-- +:TransparentUpgradeableProxy-implementation: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-implementation--[`TransparentUpgradeableProxy.implementation`]] +:xref-TransparentUpgradeableProxy-implementation--: xref:proxy.adoc#TransparentUpgradeableProxy-implementation-- +:TransparentUpgradeableProxy-changeAdmin: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-changeAdmin-address-[`TransparentUpgradeableProxy.changeAdmin`]] +:xref-TransparentUpgradeableProxy-changeAdmin-address-: xref:proxy.adoc#TransparentUpgradeableProxy-changeAdmin-address- +:TransparentUpgradeableProxy-upgradeTo: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-upgradeTo-address-[`TransparentUpgradeableProxy.upgradeTo`]] +:xref-TransparentUpgradeableProxy-upgradeTo-address-: xref:proxy.adoc#TransparentUpgradeableProxy-upgradeTo-address- +:TransparentUpgradeableProxy-upgradeToAndCall: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-upgradeToAndCall-address-bytes-[`TransparentUpgradeableProxy.upgradeToAndCall`]] +:xref-TransparentUpgradeableProxy-upgradeToAndCall-address-bytes-: xref:proxy.adoc#TransparentUpgradeableProxy-upgradeToAndCall-address-bytes- +:TransparentUpgradeableProxy-_admin: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-_admin--[`TransparentUpgradeableProxy._admin`]] +:xref-TransparentUpgradeableProxy-_admin--: xref:proxy.adoc#TransparentUpgradeableProxy-_admin-- +:TransparentUpgradeableProxy-_beforeFallback: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-_beforeFallback--[`TransparentUpgradeableProxy._beforeFallback`]] +:xref-TransparentUpgradeableProxy-_beforeFallback--: xref:proxy.adoc#TransparentUpgradeableProxy-_beforeFallback-- +:Initializable: pass:normal[xref:proxy.adoc#Initializable[`Initializable`]] +:xref-Initializable: xref:proxy.adoc#Initializable +:Initializable-initializer: pass:normal[xref:proxy.adoc#Initializable-initializer--[`Initializable.initializer`]] +:xref-Initializable-initializer--: xref:proxy.adoc#Initializable-initializer-- +:Initializable-onlyInitializing: pass:normal[xref:proxy.adoc#Initializable-onlyInitializing--[`Initializable.onlyInitializing`]] +:xref-Initializable-onlyInitializing--: xref:proxy.adoc#Initializable-onlyInitializing-- +:UUPSUpgradeable: pass:normal[xref:proxy.adoc#UUPSUpgradeable[`UUPSUpgradeable`]] +:xref-UUPSUpgradeable: xref:proxy.adoc#UUPSUpgradeable +:UUPSUpgradeable-onlyProxy: pass:normal[xref:proxy.adoc#UUPSUpgradeable-onlyProxy--[`UUPSUpgradeable.onlyProxy`]] +:xref-UUPSUpgradeable-onlyProxy--: xref:proxy.adoc#UUPSUpgradeable-onlyProxy-- +:UUPSUpgradeable-notDelegated: pass:normal[xref:proxy.adoc#UUPSUpgradeable-notDelegated--[`UUPSUpgradeable.notDelegated`]] +:xref-UUPSUpgradeable-notDelegated--: xref:proxy.adoc#UUPSUpgradeable-notDelegated-- +:UUPSUpgradeable-proxiableUUID: pass:normal[xref:proxy.adoc#UUPSUpgradeable-proxiableUUID--[`UUPSUpgradeable.proxiableUUID`]] +:xref-UUPSUpgradeable-proxiableUUID--: xref:proxy.adoc#UUPSUpgradeable-proxiableUUID-- +:UUPSUpgradeable-upgradeTo: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address-[`UUPSUpgradeable.upgradeTo`]] +:xref-UUPSUpgradeable-upgradeTo-address-: xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address- +:UUPSUpgradeable-upgradeToAndCall: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeToAndCall-address-bytes-[`UUPSUpgradeable.upgradeToAndCall`]] +:xref-UUPSUpgradeable-upgradeToAndCall-address-bytes-: xref:proxy.adoc#UUPSUpgradeable-upgradeToAndCall-address-bytes- +:UUPSUpgradeable-_authorizeUpgrade: pass:normal[xref:proxy.adoc#UUPSUpgradeable-_authorizeUpgrade-address-[`UUPSUpgradeable._authorizeUpgrade`]] +:xref-UUPSUpgradeable-_authorizeUpgrade-address-: xref:proxy.adoc#UUPSUpgradeable-_authorizeUpgrade-address- +:Pausable: pass:normal[xref:security.adoc#Pausable[`Pausable`]] +:xref-Pausable: xref:security.adoc#Pausable +:Pausable-whenNotPaused: pass:normal[xref:security.adoc#Pausable-whenNotPaused--[`Pausable.whenNotPaused`]] +:xref-Pausable-whenNotPaused--: xref:security.adoc#Pausable-whenNotPaused-- +:Pausable-whenPaused: pass:normal[xref:security.adoc#Pausable-whenPaused--[`Pausable.whenPaused`]] +:xref-Pausable-whenPaused--: xref:security.adoc#Pausable-whenPaused-- +:Pausable-constructor: pass:normal[xref:security.adoc#Pausable-constructor--[`Pausable.constructor`]] +:xref-Pausable-constructor--: xref:security.adoc#Pausable-constructor-- +:Pausable-paused: pass:normal[xref:security.adoc#Pausable-paused--[`Pausable.paused`]] +:xref-Pausable-paused--: xref:security.adoc#Pausable-paused-- +:Pausable-_pause: pass:normal[xref:security.adoc#Pausable-_pause--[`Pausable._pause`]] +:xref-Pausable-_pause--: xref:security.adoc#Pausable-_pause-- +:Pausable-_unpause: pass:normal[xref:security.adoc#Pausable-_unpause--[`Pausable._unpause`]] +:xref-Pausable-_unpause--: xref:security.adoc#Pausable-_unpause-- +:Pausable-Paused: pass:normal[xref:security.adoc#Pausable-Paused-address-[`Pausable.Paused`]] +:xref-Pausable-Paused-address-: xref:security.adoc#Pausable-Paused-address- +:Pausable-Unpaused: pass:normal[xref:security.adoc#Pausable-Unpaused-address-[`Pausable.Unpaused`]] +:xref-Pausable-Unpaused-address-: xref:security.adoc#Pausable-Unpaused-address- +:PullPayment: pass:normal[xref:security.adoc#PullPayment[`PullPayment`]] +:xref-PullPayment: xref:security.adoc#PullPayment +:PullPayment-constructor: pass:normal[xref:security.adoc#PullPayment-constructor--[`PullPayment.constructor`]] +:xref-PullPayment-constructor--: xref:security.adoc#PullPayment-constructor-- +:PullPayment-withdrawPayments: pass:normal[xref:security.adoc#PullPayment-withdrawPayments-address-payable-[`PullPayment.withdrawPayments`]] +:xref-PullPayment-withdrawPayments-address-payable-: xref:security.adoc#PullPayment-withdrawPayments-address-payable- +:PullPayment-payments: pass:normal[xref:security.adoc#PullPayment-payments-address-[`PullPayment.payments`]] +:xref-PullPayment-payments-address-: xref:security.adoc#PullPayment-payments-address- +:PullPayment-_asyncTransfer: pass:normal[xref:security.adoc#PullPayment-_asyncTransfer-address-uint256-[`PullPayment._asyncTransfer`]] +:xref-PullPayment-_asyncTransfer-address-uint256-: xref:security.adoc#PullPayment-_asyncTransfer-address-uint256- +:ReentrancyGuard: pass:normal[xref:security.adoc#ReentrancyGuard[`ReentrancyGuard`]] +:xref-ReentrancyGuard: xref:security.adoc#ReentrancyGuard +:ReentrancyGuard-nonReentrant: pass:normal[xref:security.adoc#ReentrancyGuard-nonReentrant--[`ReentrancyGuard.nonReentrant`]] +:xref-ReentrancyGuard-nonReentrant--: xref:security.adoc#ReentrancyGuard-nonReentrant-- +:ReentrancyGuard-constructor: pass:normal[xref:security.adoc#ReentrancyGuard-constructor--[`ReentrancyGuard.constructor`]] +:xref-ReentrancyGuard-constructor--: xref:security.adoc#ReentrancyGuard-constructor-- +:Address: pass:normal[xref:utils.adoc#Address[`Address`]] +:xref-Address: xref:utils.adoc#Address +:Address-isContract: pass:normal[xref:utils.adoc#Address-isContract-address-[`Address.isContract`]] +:xref-Address-isContract-address-: xref:utils.adoc#Address-isContract-address- +:Address-sendValue: pass:normal[xref:utils.adoc#Address-sendValue-address-payable-uint256-[`Address.sendValue`]] +:xref-Address-sendValue-address-payable-uint256-: xref:utils.adoc#Address-sendValue-address-payable-uint256- +:Address-functionCall: pass:normal[xref:utils.adoc#Address-functionCall-address-bytes-[`Address.functionCall`]] +:xref-Address-functionCall-address-bytes-: xref:utils.adoc#Address-functionCall-address-bytes- +:Address-functionCall: pass:normal[xref:utils.adoc#Address-functionCall-address-bytes-string-[`Address.functionCall`]] +:xref-Address-functionCall-address-bytes-string-: xref:utils.adoc#Address-functionCall-address-bytes-string- +:Address-functionCallWithValue: pass:normal[xref:utils.adoc#Address-functionCallWithValue-address-bytes-uint256-[`Address.functionCallWithValue`]] +:xref-Address-functionCallWithValue-address-bytes-uint256-: xref:utils.adoc#Address-functionCallWithValue-address-bytes-uint256- +:Address-functionCallWithValue: pass:normal[xref:utils.adoc#Address-functionCallWithValue-address-bytes-uint256-string-[`Address.functionCallWithValue`]] +:xref-Address-functionCallWithValue-address-bytes-uint256-string-: xref:utils.adoc#Address-functionCallWithValue-address-bytes-uint256-string- +:Address-functionStaticCall: pass:normal[xref:utils.adoc#Address-functionStaticCall-address-bytes-[`Address.functionStaticCall`]] +:xref-Address-functionStaticCall-address-bytes-: xref:utils.adoc#Address-functionStaticCall-address-bytes- +:Address-functionStaticCall: pass:normal[xref:utils.adoc#Address-functionStaticCall-address-bytes-string-[`Address.functionStaticCall`]] +:xref-Address-functionStaticCall-address-bytes-string-: xref:utils.adoc#Address-functionStaticCall-address-bytes-string- +:Address-functionDelegateCall: pass:normal[xref:utils.adoc#Address-functionDelegateCall-address-bytes-[`Address.functionDelegateCall`]] +:xref-Address-functionDelegateCall-address-bytes-: xref:utils.adoc#Address-functionDelegateCall-address-bytes- +:Address-functionDelegateCall: pass:normal[xref:utils.adoc#Address-functionDelegateCall-address-bytes-string-[`Address.functionDelegateCall`]] +:xref-Address-functionDelegateCall-address-bytes-string-: xref:utils.adoc#Address-functionDelegateCall-address-bytes-string- +:Address-verifyCallResult: pass:normal[xref:utils.adoc#Address-verifyCallResult-bool-bytes-string-[`Address.verifyCallResult`]] +:xref-Address-verifyCallResult-bool-bytes-string-: xref:utils.adoc#Address-verifyCallResult-bool-bytes-string- +:Arrays: pass:normal[xref:utils.adoc#Arrays[`Arrays`]] +:xref-Arrays: xref:utils.adoc#Arrays +:Arrays-findUpperBound: pass:normal[xref:utils.adoc#Arrays-findUpperBound-uint256---uint256-[`Arrays.findUpperBound`]] +:xref-Arrays-findUpperBound-uint256---uint256-: xref:utils.adoc#Arrays-findUpperBound-uint256---uint256- +:Base64: pass:normal[xref:utils.adoc#Base64[`Base64`]] +:xref-Base64: xref:utils.adoc#Base64 +:Base64-_TABLE: pass:normal[xref:utils.adoc#Base64-_TABLE-string[`Base64._TABLE`]] +:xref-Base64-_TABLE-string: xref:utils.adoc#Base64-_TABLE-string +:Base64-encode: pass:normal[xref:utils.adoc#Base64-encode-bytes-[`Base64.encode`]] +:xref-Base64-encode-bytes-: xref:utils.adoc#Base64-encode-bytes- +:Checkpoints: pass:normal[xref:utils.adoc#Checkpoints[`Checkpoints`]] +:xref-Checkpoints: xref:utils.adoc#Checkpoints +:Checkpoints-latest: pass:normal[xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History-[`Checkpoints.latest`]] +:xref-Checkpoints-latest-struct-Checkpoints-History-: xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History- +:Checkpoints-getAtBlock: pass:normal[xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-[`Checkpoints.getAtBlock`]] +:xref-Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256- +:Checkpoints-Checkpoint: pass:normal[xref:utils.adoc#Checkpoints-Checkpoint[`Checkpoints.Checkpoint`]] +:xref-Checkpoints-Checkpoint: xref:utils.adoc#Checkpoints-Checkpoint +:Checkpoints-History: pass:normal[xref:utils.adoc#Checkpoints-History[`Checkpoints.History`]] +:xref-Checkpoints-History: xref:utils.adoc#Checkpoints-History +:Context: pass:normal[xref:utils.adoc#Context[`Context`]] +:xref-Context: xref:utils.adoc#Context +:Context-_msgSender: pass:normal[xref:utils.adoc#Context-_msgSender--[`Context._msgSender`]] +:xref-Context-_msgSender--: xref:utils.adoc#Context-_msgSender-- +:Context-_msgData: pass:normal[xref:utils.adoc#Context-_msgData--[`Context._msgData`]] +:xref-Context-_msgData--: xref:utils.adoc#Context-_msgData-- +:Counters: pass:normal[xref:utils.adoc#Counters[`Counters`]] +:xref-Counters: xref:utils.adoc#Counters +:Counters-current: pass:normal[xref:utils.adoc#Counters-current-struct-Counters-Counter-[`Counters.current`]] +:xref-Counters-current-struct-Counters-Counter-: xref:utils.adoc#Counters-current-struct-Counters-Counter- +:Counters-increment: pass:normal[xref:utils.adoc#Counters-increment-struct-Counters-Counter-[`Counters.increment`]] +:xref-Counters-increment-struct-Counters-Counter-: xref:utils.adoc#Counters-increment-struct-Counters-Counter- +:Counters-decrement: pass:normal[xref:utils.adoc#Counters-decrement-struct-Counters-Counter-[`Counters.decrement`]] +:xref-Counters-decrement-struct-Counters-Counter-: xref:utils.adoc#Counters-decrement-struct-Counters-Counter- +:Counters-reset: pass:normal[xref:utils.adoc#Counters-reset-struct-Counters-Counter-[`Counters.reset`]] +:xref-Counters-reset-struct-Counters-Counter-: xref:utils.adoc#Counters-reset-struct-Counters-Counter- +:Counters-Counter: pass:normal[xref:utils.adoc#Counters-Counter[`Counters.Counter`]] +:xref-Counters-Counter: xref:utils.adoc#Counters-Counter +:Create2: pass:normal[xref:utils.adoc#Create2[`Create2`]] +:xref-Create2: xref:utils.adoc#Create2 +:Create2-deploy: pass:normal[xref:utils.adoc#Create2-deploy-uint256-bytes32-bytes-[`Create2.deploy`]] +:xref-Create2-deploy-uint256-bytes32-bytes-: xref:utils.adoc#Create2-deploy-uint256-bytes32-bytes- +:Create2-computeAddress: pass:normal[xref:utils.adoc#Create2-computeAddress-bytes32-bytes32-[`Create2.computeAddress`]] +:xref-Create2-computeAddress-bytes32-bytes32-: xref:utils.adoc#Create2-computeAddress-bytes32-bytes32- +:Create2-computeAddress: pass:normal[xref:utils.adoc#Create2-computeAddress-bytes32-bytes32-address-[`Create2.computeAddress`]] +:xref-Create2-computeAddress-bytes32-bytes32-address-: xref:utils.adoc#Create2-computeAddress-bytes32-bytes32-address- +:Multicall: pass:normal[xref:utils.adoc#Multicall[`Multicall`]] +:xref-Multicall: xref:utils.adoc#Multicall +:Multicall-multicall: pass:normal[xref:utils.adoc#Multicall-multicall-bytes---[`Multicall.multicall`]] +:xref-Multicall-multicall-bytes---: xref:utils.adoc#Multicall-multicall-bytes--- +:StorageSlot: pass:normal[xref:utils.adoc#StorageSlot[`StorageSlot`]] +:xref-StorageSlot: xref:utils.adoc#StorageSlot +:StorageSlot-getAddressSlot: pass:normal[xref:utils.adoc#StorageSlot-getAddressSlot-bytes32-[`StorageSlot.getAddressSlot`]] +:xref-StorageSlot-getAddressSlot-bytes32-: xref:utils.adoc#StorageSlot-getAddressSlot-bytes32- +:StorageSlot-getBooleanSlot: pass:normal[xref:utils.adoc#StorageSlot-getBooleanSlot-bytes32-[`StorageSlot.getBooleanSlot`]] +:xref-StorageSlot-getBooleanSlot-bytes32-: xref:utils.adoc#StorageSlot-getBooleanSlot-bytes32- +:StorageSlot-getBytes32Slot: pass:normal[xref:utils.adoc#StorageSlot-getBytes32Slot-bytes32-[`StorageSlot.getBytes32Slot`]] +:xref-StorageSlot-getBytes32Slot-bytes32-: xref:utils.adoc#StorageSlot-getBytes32Slot-bytes32- +:StorageSlot-getUint256Slot: pass:normal[xref:utils.adoc#StorageSlot-getUint256Slot-bytes32-[`StorageSlot.getUint256Slot`]] +:xref-StorageSlot-getUint256Slot-bytes32-: xref:utils.adoc#StorageSlot-getUint256Slot-bytes32- +:StorageSlot-AddressSlot: pass:normal[xref:utils.adoc#StorageSlot-AddressSlot[`StorageSlot.AddressSlot`]] +:xref-StorageSlot-AddressSlot: xref:utils.adoc#StorageSlot-AddressSlot +:StorageSlot-BooleanSlot: pass:normal[xref:utils.adoc#StorageSlot-BooleanSlot[`StorageSlot.BooleanSlot`]] +:xref-StorageSlot-BooleanSlot: xref:utils.adoc#StorageSlot-BooleanSlot +:StorageSlot-Bytes32Slot: pass:normal[xref:utils.adoc#StorageSlot-Bytes32Slot[`StorageSlot.Bytes32Slot`]] +:xref-StorageSlot-Bytes32Slot: xref:utils.adoc#StorageSlot-Bytes32Slot +:StorageSlot-Uint256Slot: pass:normal[xref:utils.adoc#StorageSlot-Uint256Slot[`StorageSlot.Uint256Slot`]] +:xref-StorageSlot-Uint256Slot: xref:utils.adoc#StorageSlot-Uint256Slot +:Strings: pass:normal[xref:utils.adoc#Strings[`Strings`]] +:xref-Strings: xref:utils.adoc#Strings +:Strings-toString: pass:normal[xref:utils.adoc#Strings-toString-uint256-[`Strings.toString`]] +:xref-Strings-toString-uint256-: xref:utils.adoc#Strings-toString-uint256- +:Strings-toHexString: pass:normal[xref:utils.adoc#Strings-toHexString-uint256-[`Strings.toHexString`]] +:xref-Strings-toHexString-uint256-: xref:utils.adoc#Strings-toHexString-uint256- +:Strings-toHexString: pass:normal[xref:utils.adoc#Strings-toHexString-uint256-uint256-[`Strings.toHexString`]] +:xref-Strings-toHexString-uint256-uint256-: xref:utils.adoc#Strings-toHexString-uint256-uint256- +:Timers: pass:normal[xref:utils.adoc#Timers[`Timers`]] +:xref-Timers: xref:utils.adoc#Timers +:Timers-getDeadline: pass:normal[xref:utils.adoc#Timers-getDeadline-struct-Timers-Timestamp-[`Timers.getDeadline`]] +:xref-Timers-getDeadline-struct-Timers-Timestamp-: xref:utils.adoc#Timers-getDeadline-struct-Timers-Timestamp- +:Timers-setDeadline: pass:normal[xref:utils.adoc#Timers-setDeadline-struct-Timers-Timestamp-uint64-[`Timers.setDeadline`]] +:xref-Timers-setDeadline-struct-Timers-Timestamp-uint64-: xref:utils.adoc#Timers-setDeadline-struct-Timers-Timestamp-uint64- +:Timers-reset: pass:normal[xref:utils.adoc#Timers-reset-struct-Timers-Timestamp-[`Timers.reset`]] +:xref-Timers-reset-struct-Timers-Timestamp-: xref:utils.adoc#Timers-reset-struct-Timers-Timestamp- +:Timers-isUnset: pass:normal[xref:utils.adoc#Timers-isUnset-struct-Timers-Timestamp-[`Timers.isUnset`]] +:xref-Timers-isUnset-struct-Timers-Timestamp-: xref:utils.adoc#Timers-isUnset-struct-Timers-Timestamp- +:Timers-isStarted: pass:normal[xref:utils.adoc#Timers-isStarted-struct-Timers-Timestamp-[`Timers.isStarted`]] +:xref-Timers-isStarted-struct-Timers-Timestamp-: xref:utils.adoc#Timers-isStarted-struct-Timers-Timestamp- +:Timers-isPending: pass:normal[xref:utils.adoc#Timers-isPending-struct-Timers-Timestamp-[`Timers.isPending`]] +:xref-Timers-isPending-struct-Timers-Timestamp-: xref:utils.adoc#Timers-isPending-struct-Timers-Timestamp- +:Timers-isExpired: pass:normal[xref:utils.adoc#Timers-isExpired-struct-Timers-Timestamp-[`Timers.isExpired`]] +:xref-Timers-isExpired-struct-Timers-Timestamp-: xref:utils.adoc#Timers-isExpired-struct-Timers-Timestamp- +:Timers-getDeadline: pass:normal[xref:utils.adoc#Timers-getDeadline-struct-Timers-BlockNumber-[`Timers.getDeadline`]] +:xref-Timers-getDeadline-struct-Timers-BlockNumber-: xref:utils.adoc#Timers-getDeadline-struct-Timers-BlockNumber- +:Timers-setDeadline: pass:normal[xref:utils.adoc#Timers-setDeadline-struct-Timers-BlockNumber-uint64-[`Timers.setDeadline`]] +:xref-Timers-setDeadline-struct-Timers-BlockNumber-uint64-: xref:utils.adoc#Timers-setDeadline-struct-Timers-BlockNumber-uint64- +:Timers-reset: pass:normal[xref:utils.adoc#Timers-reset-struct-Timers-BlockNumber-[`Timers.reset`]] +:xref-Timers-reset-struct-Timers-BlockNumber-: xref:utils.adoc#Timers-reset-struct-Timers-BlockNumber- +:Timers-isUnset: pass:normal[xref:utils.adoc#Timers-isUnset-struct-Timers-BlockNumber-[`Timers.isUnset`]] +:xref-Timers-isUnset-struct-Timers-BlockNumber-: xref:utils.adoc#Timers-isUnset-struct-Timers-BlockNumber- +:Timers-isStarted: pass:normal[xref:utils.adoc#Timers-isStarted-struct-Timers-BlockNumber-[`Timers.isStarted`]] +:xref-Timers-isStarted-struct-Timers-BlockNumber-: xref:utils.adoc#Timers-isStarted-struct-Timers-BlockNumber- +:Timers-isPending: pass:normal[xref:utils.adoc#Timers-isPending-struct-Timers-BlockNumber-[`Timers.isPending`]] +:xref-Timers-isPending-struct-Timers-BlockNumber-: xref:utils.adoc#Timers-isPending-struct-Timers-BlockNumber- +:Timers-isExpired: pass:normal[xref:utils.adoc#Timers-isExpired-struct-Timers-BlockNumber-[`Timers.isExpired`]] +:xref-Timers-isExpired-struct-Timers-BlockNumber-: xref:utils.adoc#Timers-isExpired-struct-Timers-BlockNumber- +:Timers-Timestamp: pass:normal[xref:utils.adoc#Timers-Timestamp[`Timers.Timestamp`]] +:xref-Timers-Timestamp: xref:utils.adoc#Timers-Timestamp +:Timers-BlockNumber: pass:normal[xref:utils.adoc#Timers-BlockNumber[`Timers.BlockNumber`]] +:xref-Timers-BlockNumber: xref:utils.adoc#Timers-BlockNumber +:ECDSA: pass:normal[xref:utils.adoc#ECDSA[`ECDSA`]] +:xref-ECDSA: xref:utils.adoc#ECDSA +:ECDSA-tryRecover: pass:normal[xref:utils.adoc#ECDSA-tryRecover-bytes32-bytes-[`ECDSA.tryRecover`]] +:xref-ECDSA-tryRecover-bytes32-bytes-: xref:utils.adoc#ECDSA-tryRecover-bytes32-bytes- +:ECDSA-recover: pass:normal[xref:utils.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]] +:xref-ECDSA-recover-bytes32-bytes-: xref:utils.adoc#ECDSA-recover-bytes32-bytes- +:ECDSA-tryRecover: pass:normal[xref:utils.adoc#ECDSA-tryRecover-bytes32-bytes32-bytes32-[`ECDSA.tryRecover`]] +:xref-ECDSA-tryRecover-bytes32-bytes32-bytes32-: xref:utils.adoc#ECDSA-tryRecover-bytes32-bytes32-bytes32- +:ECDSA-recover: pass:normal[xref:utils.adoc#ECDSA-recover-bytes32-bytes32-bytes32-[`ECDSA.recover`]] +:xref-ECDSA-recover-bytes32-bytes32-bytes32-: xref:utils.adoc#ECDSA-recover-bytes32-bytes32-bytes32- +:ECDSA-tryRecover: pass:normal[xref:utils.adoc#ECDSA-tryRecover-bytes32-uint8-bytes32-bytes32-[`ECDSA.tryRecover`]] +:xref-ECDSA-tryRecover-bytes32-uint8-bytes32-bytes32-: xref:utils.adoc#ECDSA-tryRecover-bytes32-uint8-bytes32-bytes32- +:ECDSA-recover: pass:normal[xref:utils.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]] +:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:utils.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32- +:ECDSA-toEthSignedMessageHash: pass:normal[xref:utils.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]] +:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:utils.adoc#ECDSA-toEthSignedMessageHash-bytes32- +:ECDSA-toEthSignedMessageHash: pass:normal[xref:utils.adoc#ECDSA-toEthSignedMessageHash-bytes-[`ECDSA.toEthSignedMessageHash`]] +:xref-ECDSA-toEthSignedMessageHash-bytes-: xref:utils.adoc#ECDSA-toEthSignedMessageHash-bytes- +:ECDSA-toTypedDataHash: pass:normal[xref:utils.adoc#ECDSA-toTypedDataHash-bytes32-bytes32-[`ECDSA.toTypedDataHash`]] +:xref-ECDSA-toTypedDataHash-bytes32-bytes32-: xref:utils.adoc#ECDSA-toTypedDataHash-bytes32-bytes32- +:ECDSA-RecoverError: pass:normal[xref:utils.adoc#ECDSA-RecoverError[`ECDSA.RecoverError`]] +:xref-ECDSA-RecoverError: xref:utils.adoc#ECDSA-RecoverError +:MerkleProof: pass:normal[xref:utils.adoc#MerkleProof[`MerkleProof`]] +:xref-MerkleProof: xref:utils.adoc#MerkleProof +:MerkleProof-verify: pass:normal[xref:utils.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]] +:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:utils.adoc#MerkleProof-verify-bytes32---bytes32-bytes32- +:MerkleProof-processProof: pass:normal[xref:utils.adoc#MerkleProof-processProof-bytes32---bytes32-[`MerkleProof.processProof`]] +:xref-MerkleProof-processProof-bytes32---bytes32-: xref:utils.adoc#MerkleProof-processProof-bytes32---bytes32- +:SignatureChecker: pass:normal[xref:utils.adoc#SignatureChecker[`SignatureChecker`]] +:xref-SignatureChecker: xref:utils.adoc#SignatureChecker +:SignatureChecker-isValidSignatureNow: pass:normal[xref:utils.adoc#SignatureChecker-isValidSignatureNow-address-bytes32-bytes-[`SignatureChecker.isValidSignatureNow`]] +:xref-SignatureChecker-isValidSignatureNow-address-bytes32-bytes-: xref:utils.adoc#SignatureChecker-isValidSignatureNow-address-bytes32-bytes- +:EIP712: pass:normal[xref:utils.adoc#EIP712[`EIP712`]] +:xref-EIP712: xref:utils.adoc#EIP712 +:EIP712-constructor: pass:normal[xref:utils.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]] +:xref-EIP712-constructor-string-string-: xref:utils.adoc#EIP712-constructor-string-string- +:EIP712-_domainSeparatorV4: pass:normal[xref:utils.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]] +:xref-EIP712-_domainSeparatorV4--: xref:utils.adoc#EIP712-_domainSeparatorV4-- +:EIP712-_hashTypedDataV4: pass:normal[xref:utils.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]] +:xref-EIP712-_hashTypedDataV4-bytes32-: xref:utils.adoc#EIP712-_hashTypedDataV4-bytes32- +:ConditionalEscrow: pass:normal[xref:utils.adoc#ConditionalEscrow[`ConditionalEscrow`]] +:xref-ConditionalEscrow: xref:utils.adoc#ConditionalEscrow +:ConditionalEscrow-withdrawalAllowed: pass:normal[xref:utils.adoc#ConditionalEscrow-withdrawalAllowed-address-[`ConditionalEscrow.withdrawalAllowed`]] +:xref-ConditionalEscrow-withdrawalAllowed-address-: xref:utils.adoc#ConditionalEscrow-withdrawalAllowed-address- +:ConditionalEscrow-withdraw: pass:normal[xref:utils.adoc#ConditionalEscrow-withdraw-address-payable-[`ConditionalEscrow.withdraw`]] +:xref-ConditionalEscrow-withdraw-address-payable-: xref:utils.adoc#ConditionalEscrow-withdraw-address-payable- +:Escrow: pass:normal[xref:utils.adoc#Escrow[`Escrow`]] +:xref-Escrow: xref:utils.adoc#Escrow +:Escrow-depositsOf: pass:normal[xref:utils.adoc#Escrow-depositsOf-address-[`Escrow.depositsOf`]] +:xref-Escrow-depositsOf-address-: xref:utils.adoc#Escrow-depositsOf-address- +:Escrow-deposit: pass:normal[xref:utils.adoc#Escrow-deposit-address-[`Escrow.deposit`]] +:xref-Escrow-deposit-address-: xref:utils.adoc#Escrow-deposit-address- +:Escrow-withdraw: pass:normal[xref:utils.adoc#Escrow-withdraw-address-payable-[`Escrow.withdraw`]] +:xref-Escrow-withdraw-address-payable-: xref:utils.adoc#Escrow-withdraw-address-payable- +:Escrow-Deposited: pass:normal[xref:utils.adoc#Escrow-Deposited-address-uint256-[`Escrow.Deposited`]] +:xref-Escrow-Deposited-address-uint256-: xref:utils.adoc#Escrow-Deposited-address-uint256- +:Escrow-Withdrawn: pass:normal[xref:utils.adoc#Escrow-Withdrawn-address-uint256-[`Escrow.Withdrawn`]] +:xref-Escrow-Withdrawn-address-uint256-: xref:utils.adoc#Escrow-Withdrawn-address-uint256- +:RefundEscrow: pass:normal[xref:utils.adoc#RefundEscrow[`RefundEscrow`]] +:xref-RefundEscrow: xref:utils.adoc#RefundEscrow +:RefundEscrow-constructor: pass:normal[xref:utils.adoc#RefundEscrow-constructor-address-payable-[`RefundEscrow.constructor`]] +:xref-RefundEscrow-constructor-address-payable-: xref:utils.adoc#RefundEscrow-constructor-address-payable- +:RefundEscrow-state: pass:normal[xref:utils.adoc#RefundEscrow-state--[`RefundEscrow.state`]] +:xref-RefundEscrow-state--: xref:utils.adoc#RefundEscrow-state-- +:RefundEscrow-beneficiary: pass:normal[xref:utils.adoc#RefundEscrow-beneficiary--[`RefundEscrow.beneficiary`]] +:xref-RefundEscrow-beneficiary--: xref:utils.adoc#RefundEscrow-beneficiary-- +:RefundEscrow-deposit: pass:normal[xref:utils.adoc#RefundEscrow-deposit-address-[`RefundEscrow.deposit`]] +:xref-RefundEscrow-deposit-address-: xref:utils.adoc#RefundEscrow-deposit-address- +:RefundEscrow-close: pass:normal[xref:utils.adoc#RefundEscrow-close--[`RefundEscrow.close`]] +:xref-RefundEscrow-close--: xref:utils.adoc#RefundEscrow-close-- +:RefundEscrow-enableRefunds: pass:normal[xref:utils.adoc#RefundEscrow-enableRefunds--[`RefundEscrow.enableRefunds`]] +:xref-RefundEscrow-enableRefunds--: xref:utils.adoc#RefundEscrow-enableRefunds-- +:RefundEscrow-beneficiaryWithdraw: pass:normal[xref:utils.adoc#RefundEscrow-beneficiaryWithdraw--[`RefundEscrow.beneficiaryWithdraw`]] +:xref-RefundEscrow-beneficiaryWithdraw--: xref:utils.adoc#RefundEscrow-beneficiaryWithdraw-- +:RefundEscrow-withdrawalAllowed: pass:normal[xref:utils.adoc#RefundEscrow-withdrawalAllowed-address-[`RefundEscrow.withdrawalAllowed`]] +:xref-RefundEscrow-withdrawalAllowed-address-: xref:utils.adoc#RefundEscrow-withdrawalAllowed-address- +:RefundEscrow-RefundsClosed: pass:normal[xref:utils.adoc#RefundEscrow-RefundsClosed--[`RefundEscrow.RefundsClosed`]] +:xref-RefundEscrow-RefundsClosed--: xref:utils.adoc#RefundEscrow-RefundsClosed-- +:RefundEscrow-RefundsEnabled: pass:normal[xref:utils.adoc#RefundEscrow-RefundsEnabled--[`RefundEscrow.RefundsEnabled`]] +:xref-RefundEscrow-RefundsEnabled--: xref:utils.adoc#RefundEscrow-RefundsEnabled-- +:RefundEscrow-State: pass:normal[xref:utils.adoc#RefundEscrow-State[`RefundEscrow.State`]] +:xref-RefundEscrow-State: xref:utils.adoc#RefundEscrow-State +:ERC165: pass:normal[xref:utils.adoc#ERC165[`ERC165`]] +:xref-ERC165: xref:utils.adoc#ERC165 +:ERC165-supportsInterface: pass:normal[xref:utils.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]] +:xref-ERC165-supportsInterface-bytes4-: xref:utils.adoc#ERC165-supportsInterface-bytes4- +:ERC165Checker: pass:normal[xref:utils.adoc#ERC165Checker[`ERC165Checker`]] +:xref-ERC165Checker: xref:utils.adoc#ERC165Checker +:ERC165Checker-supportsERC165: pass:normal[xref:utils.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]] +:xref-ERC165Checker-supportsERC165-address-: xref:utils.adoc#ERC165Checker-supportsERC165-address- +:ERC165Checker-supportsInterface: pass:normal[xref:utils.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]] +:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:utils.adoc#ERC165Checker-supportsInterface-address-bytes4- +:ERC165Checker-getSupportedInterfaces: pass:normal[xref:utils.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]] +:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:utils.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4--- +:ERC165Checker-supportsAllInterfaces: pass:normal[xref:utils.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]] +:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:utils.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4--- +:ERC165Storage: pass:normal[xref:utils.adoc#ERC165Storage[`ERC165Storage`]] +:xref-ERC165Storage: xref:utils.adoc#ERC165Storage +:ERC165Storage-supportsInterface: pass:normal[xref:utils.adoc#ERC165Storage-supportsInterface-bytes4-[`ERC165Storage.supportsInterface`]] +:xref-ERC165Storage-supportsInterface-bytes4-: xref:utils.adoc#ERC165Storage-supportsInterface-bytes4- +:ERC165Storage-_registerInterface: pass:normal[xref:utils.adoc#ERC165Storage-_registerInterface-bytes4-[`ERC165Storage._registerInterface`]] +:xref-ERC165Storage-_registerInterface-bytes4-: xref:utils.adoc#ERC165Storage-_registerInterface-bytes4- +:ERC1820Implementer: pass:normal[xref:utils.adoc#ERC1820Implementer[`ERC1820Implementer`]] +:xref-ERC1820Implementer: xref:utils.adoc#ERC1820Implementer +:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:utils.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]] +:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:utils.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address- +:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:utils.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]] +:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:utils.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address- +:IERC165: pass:normal[xref:utils.adoc#IERC165[`IERC165`]] +:xref-IERC165: xref:utils.adoc#IERC165 +:IERC165-supportsInterface: pass:normal[xref:utils.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]] +:xref-IERC165-supportsInterface-bytes4-: xref:utils.adoc#IERC165-supportsInterface-bytes4- +:IERC1820Implementer: pass:normal[xref:utils.adoc#IERC1820Implementer[`IERC1820Implementer`]] +:xref-IERC1820Implementer: xref:utils.adoc#IERC1820Implementer +:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:utils.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]] +:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:utils.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address- +:IERC1820Registry: pass:normal[xref:utils.adoc#IERC1820Registry[`IERC1820Registry`]] +:xref-IERC1820Registry: xref:utils.adoc#IERC1820Registry +:IERC1820Registry-setManager: pass:normal[xref:utils.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]] +:xref-IERC1820Registry-setManager-address-address-: xref:utils.adoc#IERC1820Registry-setManager-address-address- +:IERC1820Registry-getManager: pass:normal[xref:utils.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]] +:xref-IERC1820Registry-getManager-address-: xref:utils.adoc#IERC1820Registry-getManager-address- +:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:utils.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]] +:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:utils.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address- +:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:utils.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]] +:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:utils.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32- +:IERC1820Registry-interfaceHash: pass:normal[xref:utils.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]] +:xref-IERC1820Registry-interfaceHash-string-: xref:utils.adoc#IERC1820Registry-interfaceHash-string- +:IERC1820Registry-updateERC165Cache: pass:normal[xref:utils.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]] +:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:utils.adoc#IERC1820Registry-updateERC165Cache-address-bytes4- +:IERC1820Registry-implementsERC165Interface: pass:normal[xref:utils.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]] +:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:utils.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4- +:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:utils.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]] +:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:utils.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4- +:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:utils.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]] +:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:utils.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address- +:IERC1820Registry-ManagerChanged: pass:normal[xref:utils.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]] +:xref-IERC1820Registry-ManagerChanged-address-address-: xref:utils.adoc#IERC1820Registry-ManagerChanged-address-address- +:Math: pass:normal[xref:utils.adoc#Math[`Math`]] +:xref-Math: xref:utils.adoc#Math +:Math-max: pass:normal[xref:utils.adoc#Math-max-uint256-uint256-[`Math.max`]] +:xref-Math-max-uint256-uint256-: xref:utils.adoc#Math-max-uint256-uint256- +:Math-min: pass:normal[xref:utils.adoc#Math-min-uint256-uint256-[`Math.min`]] +:xref-Math-min-uint256-uint256-: xref:utils.adoc#Math-min-uint256-uint256- +:Math-average: pass:normal[xref:utils.adoc#Math-average-uint256-uint256-[`Math.average`]] +:xref-Math-average-uint256-uint256-: xref:utils.adoc#Math-average-uint256-uint256- +:Math-ceilDiv: pass:normal[xref:utils.adoc#Math-ceilDiv-uint256-uint256-[`Math.ceilDiv`]] +:xref-Math-ceilDiv-uint256-uint256-: xref:utils.adoc#Math-ceilDiv-uint256-uint256- +:SafeCast: pass:normal[xref:utils.adoc#SafeCast[`SafeCast`]] +:xref-SafeCast: xref:utils.adoc#SafeCast +:SafeCast-toUint224: pass:normal[xref:utils.adoc#SafeCast-toUint224-uint256-[`SafeCast.toUint224`]] +:xref-SafeCast-toUint224-uint256-: xref:utils.adoc#SafeCast-toUint224-uint256- +:SafeCast-toUint128: pass:normal[xref:utils.adoc#SafeCast-toUint128-uint256-[`SafeCast.toUint128`]] +:xref-SafeCast-toUint128-uint256-: xref:utils.adoc#SafeCast-toUint128-uint256- +:SafeCast-toUint96: pass:normal[xref:utils.adoc#SafeCast-toUint96-uint256-[`SafeCast.toUint96`]] +:xref-SafeCast-toUint96-uint256-: xref:utils.adoc#SafeCast-toUint96-uint256- +:SafeCast-toUint64: pass:normal[xref:utils.adoc#SafeCast-toUint64-uint256-[`SafeCast.toUint64`]] +:xref-SafeCast-toUint64-uint256-: xref:utils.adoc#SafeCast-toUint64-uint256- +:SafeCast-toUint32: pass:normal[xref:utils.adoc#SafeCast-toUint32-uint256-[`SafeCast.toUint32`]] +:xref-SafeCast-toUint32-uint256-: xref:utils.adoc#SafeCast-toUint32-uint256- +:SafeCast-toUint16: pass:normal[xref:utils.adoc#SafeCast-toUint16-uint256-[`SafeCast.toUint16`]] +:xref-SafeCast-toUint16-uint256-: xref:utils.adoc#SafeCast-toUint16-uint256- +:SafeCast-toUint8: pass:normal[xref:utils.adoc#SafeCast-toUint8-uint256-[`SafeCast.toUint8`]] +:xref-SafeCast-toUint8-uint256-: xref:utils.adoc#SafeCast-toUint8-uint256- +:SafeCast-toUint256: pass:normal[xref:utils.adoc#SafeCast-toUint256-int256-[`SafeCast.toUint256`]] +:xref-SafeCast-toUint256-int256-: xref:utils.adoc#SafeCast-toUint256-int256- +:SafeCast-toInt128: pass:normal[xref:utils.adoc#SafeCast-toInt128-int256-[`SafeCast.toInt128`]] +:xref-SafeCast-toInt128-int256-: xref:utils.adoc#SafeCast-toInt128-int256- +:SafeCast-toInt64: pass:normal[xref:utils.adoc#SafeCast-toInt64-int256-[`SafeCast.toInt64`]] +:xref-SafeCast-toInt64-int256-: xref:utils.adoc#SafeCast-toInt64-int256- +:SafeCast-toInt32: pass:normal[xref:utils.adoc#SafeCast-toInt32-int256-[`SafeCast.toInt32`]] +:xref-SafeCast-toInt32-int256-: xref:utils.adoc#SafeCast-toInt32-int256- +:SafeCast-toInt16: pass:normal[xref:utils.adoc#SafeCast-toInt16-int256-[`SafeCast.toInt16`]] +:xref-SafeCast-toInt16-int256-: xref:utils.adoc#SafeCast-toInt16-int256- +:SafeCast-toInt8: pass:normal[xref:utils.adoc#SafeCast-toInt8-int256-[`SafeCast.toInt8`]] +:xref-SafeCast-toInt8-int256-: xref:utils.adoc#SafeCast-toInt8-int256- +:SafeCast-toInt256: pass:normal[xref:utils.adoc#SafeCast-toInt256-uint256-[`SafeCast.toInt256`]] +:xref-SafeCast-toInt256-uint256-: xref:utils.adoc#SafeCast-toInt256-uint256- +:SafeMath: pass:normal[xref:utils.adoc#SafeMath[`SafeMath`]] +:xref-SafeMath: xref:utils.adoc#SafeMath +:SafeMath-tryAdd: pass:normal[xref:utils.adoc#SafeMath-tryAdd-uint256-uint256-[`SafeMath.tryAdd`]] +:xref-SafeMath-tryAdd-uint256-uint256-: xref:utils.adoc#SafeMath-tryAdd-uint256-uint256- +:SafeMath-trySub: pass:normal[xref:utils.adoc#SafeMath-trySub-uint256-uint256-[`SafeMath.trySub`]] +:xref-SafeMath-trySub-uint256-uint256-: xref:utils.adoc#SafeMath-trySub-uint256-uint256- +:SafeMath-tryMul: pass:normal[xref:utils.adoc#SafeMath-tryMul-uint256-uint256-[`SafeMath.tryMul`]] +:xref-SafeMath-tryMul-uint256-uint256-: xref:utils.adoc#SafeMath-tryMul-uint256-uint256- +:SafeMath-tryDiv: pass:normal[xref:utils.adoc#SafeMath-tryDiv-uint256-uint256-[`SafeMath.tryDiv`]] +:xref-SafeMath-tryDiv-uint256-uint256-: xref:utils.adoc#SafeMath-tryDiv-uint256-uint256- +:SafeMath-tryMod: pass:normal[xref:utils.adoc#SafeMath-tryMod-uint256-uint256-[`SafeMath.tryMod`]] +:xref-SafeMath-tryMod-uint256-uint256-: xref:utils.adoc#SafeMath-tryMod-uint256-uint256- +:SafeMath-add: pass:normal[xref:utils.adoc#SafeMath-add-uint256-uint256-[`SafeMath.add`]] +:xref-SafeMath-add-uint256-uint256-: xref:utils.adoc#SafeMath-add-uint256-uint256- +:SafeMath-sub: pass:normal[xref:utils.adoc#SafeMath-sub-uint256-uint256-[`SafeMath.sub`]] +:xref-SafeMath-sub-uint256-uint256-: xref:utils.adoc#SafeMath-sub-uint256-uint256- +:SafeMath-mul: pass:normal[xref:utils.adoc#SafeMath-mul-uint256-uint256-[`SafeMath.mul`]] +:xref-SafeMath-mul-uint256-uint256-: xref:utils.adoc#SafeMath-mul-uint256-uint256- +:SafeMath-div: pass:normal[xref:utils.adoc#SafeMath-div-uint256-uint256-[`SafeMath.div`]] +:xref-SafeMath-div-uint256-uint256-: xref:utils.adoc#SafeMath-div-uint256-uint256- +:SafeMath-mod: pass:normal[xref:utils.adoc#SafeMath-mod-uint256-uint256-[`SafeMath.mod`]] +:xref-SafeMath-mod-uint256-uint256-: xref:utils.adoc#SafeMath-mod-uint256-uint256- +:SafeMath-sub: pass:normal[xref:utils.adoc#SafeMath-sub-uint256-uint256-string-[`SafeMath.sub`]] +:xref-SafeMath-sub-uint256-uint256-string-: xref:utils.adoc#SafeMath-sub-uint256-uint256-string- +:SafeMath-div: pass:normal[xref:utils.adoc#SafeMath-div-uint256-uint256-string-[`SafeMath.div`]] +:xref-SafeMath-div-uint256-uint256-string-: xref:utils.adoc#SafeMath-div-uint256-uint256-string- +:SafeMath-mod: pass:normal[xref:utils.adoc#SafeMath-mod-uint256-uint256-string-[`SafeMath.mod`]] +:xref-SafeMath-mod-uint256-uint256-string-: xref:utils.adoc#SafeMath-mod-uint256-uint256-string- +:SignedMath: pass:normal[xref:utils.adoc#SignedMath[`SignedMath`]] +:xref-SignedMath: xref:utils.adoc#SignedMath +:SignedMath-max: pass:normal[xref:utils.adoc#SignedMath-max-int256-int256-[`SignedMath.max`]] +:xref-SignedMath-max-int256-int256-: xref:utils.adoc#SignedMath-max-int256-int256- +:SignedMath-min: pass:normal[xref:utils.adoc#SignedMath-min-int256-int256-[`SignedMath.min`]] +:xref-SignedMath-min-int256-int256-: xref:utils.adoc#SignedMath-min-int256-int256- +:SignedMath-average: pass:normal[xref:utils.adoc#SignedMath-average-int256-int256-[`SignedMath.average`]] +:xref-SignedMath-average-int256-int256-: xref:utils.adoc#SignedMath-average-int256-int256- +:SignedMath-abs: pass:normal[xref:utils.adoc#SignedMath-abs-int256-[`SignedMath.abs`]] +:xref-SignedMath-abs-int256-: xref:utils.adoc#SignedMath-abs-int256- +:SignedSafeMath: pass:normal[xref:utils.adoc#SignedSafeMath[`SignedSafeMath`]] +:xref-SignedSafeMath: xref:utils.adoc#SignedSafeMath +:SignedSafeMath-mul: pass:normal[xref:utils.adoc#SignedSafeMath-mul-int256-int256-[`SignedSafeMath.mul`]] +:xref-SignedSafeMath-mul-int256-int256-: xref:utils.adoc#SignedSafeMath-mul-int256-int256- +:SignedSafeMath-div: pass:normal[xref:utils.adoc#SignedSafeMath-div-int256-int256-[`SignedSafeMath.div`]] +:xref-SignedSafeMath-div-int256-int256-: xref:utils.adoc#SignedSafeMath-div-int256-int256- +:SignedSafeMath-sub: pass:normal[xref:utils.adoc#SignedSafeMath-sub-int256-int256-[`SignedSafeMath.sub`]] +:xref-SignedSafeMath-sub-int256-int256-: xref:utils.adoc#SignedSafeMath-sub-int256-int256- +:SignedSafeMath-add: pass:normal[xref:utils.adoc#SignedSafeMath-add-int256-int256-[`SignedSafeMath.add`]] +:xref-SignedSafeMath-add-int256-int256-: xref:utils.adoc#SignedSafeMath-add-int256-int256- +:BitMaps: pass:normal[xref:utils.adoc#BitMaps[`BitMaps`]] +:xref-BitMaps: xref:utils.adoc#BitMaps +:BitMaps-get: pass:normal[xref:utils.adoc#BitMaps-get-struct-BitMaps-BitMap-uint256-[`BitMaps.get`]] +:xref-BitMaps-get-struct-BitMaps-BitMap-uint256-: xref:utils.adoc#BitMaps-get-struct-BitMaps-BitMap-uint256- +:BitMaps-setTo: pass:normal[xref:utils.adoc#BitMaps-setTo-struct-BitMaps-BitMap-uint256-bool-[`BitMaps.setTo`]] +:xref-BitMaps-setTo-struct-BitMaps-BitMap-uint256-bool-: xref:utils.adoc#BitMaps-setTo-struct-BitMaps-BitMap-uint256-bool- +:BitMaps-set: pass:normal[xref:utils.adoc#BitMaps-set-struct-BitMaps-BitMap-uint256-[`BitMaps.set`]] +:xref-BitMaps-set-struct-BitMaps-BitMap-uint256-: xref:utils.adoc#BitMaps-set-struct-BitMaps-BitMap-uint256- +:BitMaps-unset: pass:normal[xref:utils.adoc#BitMaps-unset-struct-BitMaps-BitMap-uint256-[`BitMaps.unset`]] +:xref-BitMaps-unset-struct-BitMaps-BitMap-uint256-: xref:utils.adoc#BitMaps-unset-struct-BitMaps-BitMap-uint256- +:BitMaps-BitMap: pass:normal[xref:utils.adoc#BitMaps-BitMap[`BitMaps.BitMap`]] +:xref-BitMaps-BitMap: xref:utils.adoc#BitMaps-BitMap +:EnumerableMap: pass:normal[xref:utils.adoc#EnumerableMap[`EnumerableMap`]] +:xref-EnumerableMap: xref:utils.adoc#EnumerableMap +:EnumerableMap-set: pass:normal[xref:utils.adoc#EnumerableMap-set-struct-EnumerableMap-UintToAddressMap-uint256-address-[`EnumerableMap.set`]] +:xref-EnumerableMap-set-struct-EnumerableMap-UintToAddressMap-uint256-address-: xref:utils.adoc#EnumerableMap-set-struct-EnumerableMap-UintToAddressMap-uint256-address- +:EnumerableMap-remove: pass:normal[xref:utils.adoc#EnumerableMap-remove-struct-EnumerableMap-UintToAddressMap-uint256-[`EnumerableMap.remove`]] +:xref-EnumerableMap-remove-struct-EnumerableMap-UintToAddressMap-uint256-: xref:utils.adoc#EnumerableMap-remove-struct-EnumerableMap-UintToAddressMap-uint256- +:EnumerableMap-contains: pass:normal[xref:utils.adoc#EnumerableMap-contains-struct-EnumerableMap-UintToAddressMap-uint256-[`EnumerableMap.contains`]] +:xref-EnumerableMap-contains-struct-EnumerableMap-UintToAddressMap-uint256-: xref:utils.adoc#EnumerableMap-contains-struct-EnumerableMap-UintToAddressMap-uint256- +:EnumerableMap-length: pass:normal[xref:utils.adoc#EnumerableMap-length-struct-EnumerableMap-UintToAddressMap-[`EnumerableMap.length`]] +:xref-EnumerableMap-length-struct-EnumerableMap-UintToAddressMap-: xref:utils.adoc#EnumerableMap-length-struct-EnumerableMap-UintToAddressMap- +:EnumerableMap-at: pass:normal[xref:utils.adoc#EnumerableMap-at-struct-EnumerableMap-UintToAddressMap-uint256-[`EnumerableMap.at`]] +:xref-EnumerableMap-at-struct-EnumerableMap-UintToAddressMap-uint256-: xref:utils.adoc#EnumerableMap-at-struct-EnumerableMap-UintToAddressMap-uint256- +:EnumerableMap-tryGet: pass:normal[xref:utils.adoc#EnumerableMap-tryGet-struct-EnumerableMap-UintToAddressMap-uint256-[`EnumerableMap.tryGet`]] +:xref-EnumerableMap-tryGet-struct-EnumerableMap-UintToAddressMap-uint256-: xref:utils.adoc#EnumerableMap-tryGet-struct-EnumerableMap-UintToAddressMap-uint256- +:EnumerableMap-get: pass:normal[xref:utils.adoc#EnumerableMap-get-struct-EnumerableMap-UintToAddressMap-uint256-[`EnumerableMap.get`]] +:xref-EnumerableMap-get-struct-EnumerableMap-UintToAddressMap-uint256-: xref:utils.adoc#EnumerableMap-get-struct-EnumerableMap-UintToAddressMap-uint256- +:EnumerableMap-get: pass:normal[xref:utils.adoc#EnumerableMap-get-struct-EnumerableMap-UintToAddressMap-uint256-string-[`EnumerableMap.get`]] +:xref-EnumerableMap-get-struct-EnumerableMap-UintToAddressMap-uint256-string-: xref:utils.adoc#EnumerableMap-get-struct-EnumerableMap-UintToAddressMap-uint256-string- +:EnumerableMap-Map: pass:normal[xref:utils.adoc#EnumerableMap-Map[`EnumerableMap.Map`]] +:xref-EnumerableMap-Map: xref:utils.adoc#EnumerableMap-Map +:EnumerableMap-UintToAddressMap: pass:normal[xref:utils.adoc#EnumerableMap-UintToAddressMap[`EnumerableMap.UintToAddressMap`]] +:xref-EnumerableMap-UintToAddressMap: xref:utils.adoc#EnumerableMap-UintToAddressMap +:EnumerableSet: pass:normal[xref:utils.adoc#EnumerableSet[`EnumerableSet`]] +:xref-EnumerableSet: xref:utils.adoc#EnumerableSet +:EnumerableSet-add: pass:normal[xref:utils.adoc#EnumerableSet-add-struct-EnumerableSet-Bytes32Set-bytes32-[`EnumerableSet.add`]] +:xref-EnumerableSet-add-struct-EnumerableSet-Bytes32Set-bytes32-: xref:utils.adoc#EnumerableSet-add-struct-EnumerableSet-Bytes32Set-bytes32- +:EnumerableSet-remove: pass:normal[xref:utils.adoc#EnumerableSet-remove-struct-EnumerableSet-Bytes32Set-bytes32-[`EnumerableSet.remove`]] +:xref-EnumerableSet-remove-struct-EnumerableSet-Bytes32Set-bytes32-: xref:utils.adoc#EnumerableSet-remove-struct-EnumerableSet-Bytes32Set-bytes32- +:EnumerableSet-contains: pass:normal[xref:utils.adoc#EnumerableSet-contains-struct-EnumerableSet-Bytes32Set-bytes32-[`EnumerableSet.contains`]] +:xref-EnumerableSet-contains-struct-EnumerableSet-Bytes32Set-bytes32-: xref:utils.adoc#EnumerableSet-contains-struct-EnumerableSet-Bytes32Set-bytes32- +:EnumerableSet-length: pass:normal[xref:utils.adoc#EnumerableSet-length-struct-EnumerableSet-Bytes32Set-[`EnumerableSet.length`]] +:xref-EnumerableSet-length-struct-EnumerableSet-Bytes32Set-: xref:utils.adoc#EnumerableSet-length-struct-EnumerableSet-Bytes32Set- +:EnumerableSet-at: pass:normal[xref:utils.adoc#EnumerableSet-at-struct-EnumerableSet-Bytes32Set-uint256-[`EnumerableSet.at`]] +:xref-EnumerableSet-at-struct-EnumerableSet-Bytes32Set-uint256-: xref:utils.adoc#EnumerableSet-at-struct-EnumerableSet-Bytes32Set-uint256- +:EnumerableSet-values: pass:normal[xref:utils.adoc#EnumerableSet-values-struct-EnumerableSet-Bytes32Set-[`EnumerableSet.values`]] +:xref-EnumerableSet-values-struct-EnumerableSet-Bytes32Set-: xref:utils.adoc#EnumerableSet-values-struct-EnumerableSet-Bytes32Set- +:EnumerableSet-add: pass:normal[xref:utils.adoc#EnumerableSet-add-struct-EnumerableSet-AddressSet-address-[`EnumerableSet.add`]] +:xref-EnumerableSet-add-struct-EnumerableSet-AddressSet-address-: xref:utils.adoc#EnumerableSet-add-struct-EnumerableSet-AddressSet-address- +:EnumerableSet-remove: pass:normal[xref:utils.adoc#EnumerableSet-remove-struct-EnumerableSet-AddressSet-address-[`EnumerableSet.remove`]] +:xref-EnumerableSet-remove-struct-EnumerableSet-AddressSet-address-: xref:utils.adoc#EnumerableSet-remove-struct-EnumerableSet-AddressSet-address- +:EnumerableSet-contains: pass:normal[xref:utils.adoc#EnumerableSet-contains-struct-EnumerableSet-AddressSet-address-[`EnumerableSet.contains`]] +:xref-EnumerableSet-contains-struct-EnumerableSet-AddressSet-address-: xref:utils.adoc#EnumerableSet-contains-struct-EnumerableSet-AddressSet-address- +:EnumerableSet-length: pass:normal[xref:utils.adoc#EnumerableSet-length-struct-EnumerableSet-AddressSet-[`EnumerableSet.length`]] +:xref-EnumerableSet-length-struct-EnumerableSet-AddressSet-: xref:utils.adoc#EnumerableSet-length-struct-EnumerableSet-AddressSet- +:EnumerableSet-at: pass:normal[xref:utils.adoc#EnumerableSet-at-struct-EnumerableSet-AddressSet-uint256-[`EnumerableSet.at`]] +:xref-EnumerableSet-at-struct-EnumerableSet-AddressSet-uint256-: xref:utils.adoc#EnumerableSet-at-struct-EnumerableSet-AddressSet-uint256- +:EnumerableSet-values: pass:normal[xref:utils.adoc#EnumerableSet-values-struct-EnumerableSet-AddressSet-[`EnumerableSet.values`]] +:xref-EnumerableSet-values-struct-EnumerableSet-AddressSet-: xref:utils.adoc#EnumerableSet-values-struct-EnumerableSet-AddressSet- +:EnumerableSet-add: pass:normal[xref:utils.adoc#EnumerableSet-add-struct-EnumerableSet-UintSet-uint256-[`EnumerableSet.add`]] +:xref-EnumerableSet-add-struct-EnumerableSet-UintSet-uint256-: xref:utils.adoc#EnumerableSet-add-struct-EnumerableSet-UintSet-uint256- +:EnumerableSet-remove: pass:normal[xref:utils.adoc#EnumerableSet-remove-struct-EnumerableSet-UintSet-uint256-[`EnumerableSet.remove`]] +:xref-EnumerableSet-remove-struct-EnumerableSet-UintSet-uint256-: xref:utils.adoc#EnumerableSet-remove-struct-EnumerableSet-UintSet-uint256- +:EnumerableSet-contains: pass:normal[xref:utils.adoc#EnumerableSet-contains-struct-EnumerableSet-UintSet-uint256-[`EnumerableSet.contains`]] +:xref-EnumerableSet-contains-struct-EnumerableSet-UintSet-uint256-: xref:utils.adoc#EnumerableSet-contains-struct-EnumerableSet-UintSet-uint256- +:EnumerableSet-length: pass:normal[xref:utils.adoc#EnumerableSet-length-struct-EnumerableSet-UintSet-[`EnumerableSet.length`]] +:xref-EnumerableSet-length-struct-EnumerableSet-UintSet-: xref:utils.adoc#EnumerableSet-length-struct-EnumerableSet-UintSet- +:EnumerableSet-at: pass:normal[xref:utils.adoc#EnumerableSet-at-struct-EnumerableSet-UintSet-uint256-[`EnumerableSet.at`]] +:xref-EnumerableSet-at-struct-EnumerableSet-UintSet-uint256-: xref:utils.adoc#EnumerableSet-at-struct-EnumerableSet-UintSet-uint256- +:EnumerableSet-values: pass:normal[xref:utils.adoc#EnumerableSet-values-struct-EnumerableSet-UintSet-[`EnumerableSet.values`]] +:xref-EnumerableSet-values-struct-EnumerableSet-UintSet-: xref:utils.adoc#EnumerableSet-values-struct-EnumerableSet-UintSet- +:EnumerableSet-Set: pass:normal[xref:utils.adoc#EnumerableSet-Set[`EnumerableSet.Set`]] +:xref-EnumerableSet-Set: xref:utils.adoc#EnumerableSet-Set +:EnumerableSet-Bytes32Set: pass:normal[xref:utils.adoc#EnumerableSet-Bytes32Set[`EnumerableSet.Bytes32Set`]] +:xref-EnumerableSet-Bytes32Set: xref:utils.adoc#EnumerableSet-Bytes32Set +:EnumerableSet-AddressSet: pass:normal[xref:utils.adoc#EnumerableSet-AddressSet[`EnumerableSet.AddressSet`]] +:xref-EnumerableSet-AddressSet: xref:utils.adoc#EnumerableSet-AddressSet +:EnumerableSet-UintSet: pass:normal[xref:utils.adoc#EnumerableSet-UintSet[`EnumerableSet.UintSet`]] +:xref-EnumerableSet-UintSet: xref:utils.adoc#EnumerableSet-UintSet +:ERC1155: pass:normal[xref:token/ERC1155.adoc#ERC1155[`ERC1155`]] +:xref-ERC1155: xref:token/ERC1155.adoc#ERC1155 +:ERC1155-constructor: pass:normal[xref:token/ERC1155.adoc#ERC1155-constructor-string-[`ERC1155.constructor`]] +:xref-ERC1155-constructor-string-: xref:token/ERC1155.adoc#ERC1155-constructor-string- +:ERC1155-supportsInterface: pass:normal[xref:token/ERC1155.adoc#ERC1155-supportsInterface-bytes4-[`ERC1155.supportsInterface`]] +:xref-ERC1155-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155-supportsInterface-bytes4- +:ERC1155-uri: pass:normal[xref:token/ERC1155.adoc#ERC1155-uri-uint256-[`ERC1155.uri`]] +:xref-ERC1155-uri-uint256-: xref:token/ERC1155.adoc#ERC1155-uri-uint256- +:ERC1155-balanceOf: pass:normal[xref:token/ERC1155.adoc#ERC1155-balanceOf-address-uint256-[`ERC1155.balanceOf`]] +:xref-ERC1155-balanceOf-address-uint256-: xref:token/ERC1155.adoc#ERC1155-balanceOf-address-uint256- +:ERC1155-balanceOfBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155-balanceOfBatch-address---uint256---[`ERC1155.balanceOfBatch`]] +:xref-ERC1155-balanceOfBatch-address---uint256---: xref:token/ERC1155.adoc#ERC1155-balanceOfBatch-address---uint256--- +:ERC1155-setApprovalForAll: pass:normal[xref:token/ERC1155.adoc#ERC1155-setApprovalForAll-address-bool-[`ERC1155.setApprovalForAll`]] +:xref-ERC1155-setApprovalForAll-address-bool-: xref:token/ERC1155.adoc#ERC1155-setApprovalForAll-address-bool- +:ERC1155-isApprovedForAll: pass:normal[xref:token/ERC1155.adoc#ERC1155-isApprovedForAll-address-address-[`ERC1155.isApprovedForAll`]] +:xref-ERC1155-isApprovedForAll-address-address-: xref:token/ERC1155.adoc#ERC1155-isApprovedForAll-address-address- +:ERC1155-safeTransferFrom: pass:normal[xref:token/ERC1155.adoc#ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-[`ERC1155.safeTransferFrom`]] +:xref-ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes- +:ERC1155-safeBatchTransferFrom: pass:normal[xref:token/ERC1155.adoc#ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-[`ERC1155.safeBatchTransferFrom`]] +:xref-ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes- +:ERC1155-_safeTransferFrom: pass:normal[xref:token/ERC1155.adoc#ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-[`ERC1155._safeTransferFrom`]] +:xref-ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes- +:ERC1155-_safeBatchTransferFrom: pass:normal[xref:token/ERC1155.adoc#ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-[`ERC1155._safeBatchTransferFrom`]] +:xref-ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes- +:ERC1155-_setURI: pass:normal[xref:token/ERC1155.adoc#ERC1155-_setURI-string-[`ERC1155._setURI`]] +:xref-ERC1155-_setURI-string-: xref:token/ERC1155.adoc#ERC1155-_setURI-string- +:ERC1155-_mint: pass:normal[xref:token/ERC1155.adoc#ERC1155-_mint-address-uint256-uint256-bytes-[`ERC1155._mint`]] +:xref-ERC1155-_mint-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-_mint-address-uint256-uint256-bytes- +:ERC1155-_mintBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155-_mintBatch-address-uint256---uint256---bytes-[`ERC1155._mintBatch`]] +:xref-ERC1155-_mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_mintBatch-address-uint256---uint256---bytes- +:ERC1155-_burn: pass:normal[xref:token/ERC1155.adoc#ERC1155-_burn-address-uint256-uint256-[`ERC1155._burn`]] +:xref-ERC1155-_burn-address-uint256-uint256-: xref:token/ERC1155.adoc#ERC1155-_burn-address-uint256-uint256- +:ERC1155-_burnBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155-_burnBatch-address-uint256---uint256---[`ERC1155._burnBatch`]] +:xref-ERC1155-_burnBatch-address-uint256---uint256---: xref:token/ERC1155.adoc#ERC1155-_burnBatch-address-uint256---uint256--- +:ERC1155-_setApprovalForAll: pass:normal[xref:token/ERC1155.adoc#ERC1155-_setApprovalForAll-address-address-bool-[`ERC1155._setApprovalForAll`]] +:xref-ERC1155-_setApprovalForAll-address-address-bool-: xref:token/ERC1155.adoc#ERC1155-_setApprovalForAll-address-address-bool- +:ERC1155-_beforeTokenTransfer: pass:normal[xref:token/ERC1155.adoc#ERC1155-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155._beforeTokenTransfer`]] +:xref-ERC1155-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:IERC1155: pass:normal[xref:token/ERC1155.adoc#IERC1155[`IERC1155`]] +:xref-IERC1155: xref:token/ERC1155.adoc#IERC1155 +:IERC1155-balanceOf: pass:normal[xref:token/ERC1155.adoc#IERC1155-balanceOf-address-uint256-[`IERC1155.balanceOf`]] +:xref-IERC1155-balanceOf-address-uint256-: xref:token/ERC1155.adoc#IERC1155-balanceOf-address-uint256- +:IERC1155-balanceOfBatch: pass:normal[xref:token/ERC1155.adoc#IERC1155-balanceOfBatch-address---uint256---[`IERC1155.balanceOfBatch`]] +:xref-IERC1155-balanceOfBatch-address---uint256---: xref:token/ERC1155.adoc#IERC1155-balanceOfBatch-address---uint256--- +:IERC1155-setApprovalForAll: pass:normal[xref:token/ERC1155.adoc#IERC1155-setApprovalForAll-address-bool-[`IERC1155.setApprovalForAll`]] +:xref-IERC1155-setApprovalForAll-address-bool-: xref:token/ERC1155.adoc#IERC1155-setApprovalForAll-address-bool- +:IERC1155-isApprovedForAll: pass:normal[xref:token/ERC1155.adoc#IERC1155-isApprovedForAll-address-address-[`IERC1155.isApprovedForAll`]] +:xref-IERC1155-isApprovedForAll-address-address-: xref:token/ERC1155.adoc#IERC1155-isApprovedForAll-address-address- +:IERC1155-safeTransferFrom: pass:normal[xref:token/ERC1155.adoc#IERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-[`IERC1155.safeTransferFrom`]] +:xref-IERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#IERC1155-safeTransferFrom-address-address-uint256-uint256-bytes- +:IERC1155-safeBatchTransferFrom: pass:normal[xref:token/ERC1155.adoc#IERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-[`IERC1155.safeBatchTransferFrom`]] +:xref-IERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#IERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes- +:IERC1155-TransferSingle: pass:normal[xref:token/ERC1155.adoc#IERC1155-TransferSingle-address-address-address-uint256-uint256-[`IERC1155.TransferSingle`]] +:xref-IERC1155-TransferSingle-address-address-address-uint256-uint256-: xref:token/ERC1155.adoc#IERC1155-TransferSingle-address-address-address-uint256-uint256- +:IERC1155-TransferBatch: pass:normal[xref:token/ERC1155.adoc#IERC1155-TransferBatch-address-address-address-uint256---uint256---[`IERC1155.TransferBatch`]] +:xref-IERC1155-TransferBatch-address-address-address-uint256---uint256---: xref:token/ERC1155.adoc#IERC1155-TransferBatch-address-address-address-uint256---uint256--- +:IERC1155-ApprovalForAll: pass:normal[xref:token/ERC1155.adoc#IERC1155-ApprovalForAll-address-address-bool-[`IERC1155.ApprovalForAll`]] +:xref-IERC1155-ApprovalForAll-address-address-bool-: xref:token/ERC1155.adoc#IERC1155-ApprovalForAll-address-address-bool- +:IERC1155-URI: pass:normal[xref:token/ERC1155.adoc#IERC1155-URI-string-uint256-[`IERC1155.URI`]] +:xref-IERC1155-URI-string-uint256-: xref:token/ERC1155.adoc#IERC1155-URI-string-uint256- +:IERC1155Receiver: pass:normal[xref:token/ERC1155.adoc#IERC1155Receiver[`IERC1155Receiver`]] +:xref-IERC1155Receiver: xref:token/ERC1155.adoc#IERC1155Receiver +:IERC1155Receiver-onERC1155Received: pass:normal[xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155Received-address-address-uint256-uint256-bytes-[`IERC1155Receiver.onERC1155Received`]] +:xref-IERC1155Receiver-onERC1155Received-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155Received-address-address-uint256-uint256-bytes- +:IERC1155Receiver-onERC1155BatchReceived: pass:normal[xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155BatchReceived-address-address-uint256---uint256---bytes-[`IERC1155Receiver.onERC1155BatchReceived`]] +:xref-IERC1155Receiver-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155BatchReceived-address-address-uint256---uint256---bytes- +:ERC1155Burnable: pass:normal[xref:token/ERC1155.adoc#ERC1155Burnable[`ERC1155Burnable`]] +:xref-ERC1155Burnable: xref:token/ERC1155.adoc#ERC1155Burnable +:ERC1155Burnable-burn: pass:normal[xref:token/ERC1155.adoc#ERC1155Burnable-burn-address-uint256-uint256-[`ERC1155Burnable.burn`]] +:xref-ERC1155Burnable-burn-address-uint256-uint256-: xref:token/ERC1155.adoc#ERC1155Burnable-burn-address-uint256-uint256- +:ERC1155Burnable-burnBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155Burnable-burnBatch-address-uint256---uint256---[`ERC1155Burnable.burnBatch`]] +:xref-ERC1155Burnable-burnBatch-address-uint256---uint256---: xref:token/ERC1155.adoc#ERC1155Burnable-burnBatch-address-uint256---uint256--- +:ERC1155Pausable: pass:normal[xref:token/ERC1155.adoc#ERC1155Pausable[`ERC1155Pausable`]] +:xref-ERC1155Pausable: xref:token/ERC1155.adoc#ERC1155Pausable +:ERC1155Pausable-_beforeTokenTransfer: pass:normal[xref:token/ERC1155.adoc#ERC1155Pausable-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155Pausable._beforeTokenTransfer`]] +:xref-ERC1155Pausable-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155Pausable-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:ERC1155Supply: pass:normal[xref:token/ERC1155.adoc#ERC1155Supply[`ERC1155Supply`]] +:xref-ERC1155Supply: xref:token/ERC1155.adoc#ERC1155Supply +:ERC1155Supply-totalSupply: pass:normal[xref:token/ERC1155.adoc#ERC1155Supply-totalSupply-uint256-[`ERC1155Supply.totalSupply`]] +:xref-ERC1155Supply-totalSupply-uint256-: xref:token/ERC1155.adoc#ERC1155Supply-totalSupply-uint256- +:ERC1155Supply-exists: pass:normal[xref:token/ERC1155.adoc#ERC1155Supply-exists-uint256-[`ERC1155Supply.exists`]] +:xref-ERC1155Supply-exists-uint256-: xref:token/ERC1155.adoc#ERC1155Supply-exists-uint256- +:ERC1155Supply-_beforeTokenTransfer: pass:normal[xref:token/ERC1155.adoc#ERC1155Supply-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155Supply._beforeTokenTransfer`]] +:xref-ERC1155Supply-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155Supply-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:IERC1155MetadataURI: pass:normal[xref:token/ERC1155.adoc#IERC1155MetadataURI[`IERC1155MetadataURI`]] +:xref-IERC1155MetadataURI: xref:token/ERC1155.adoc#IERC1155MetadataURI +:IERC1155MetadataURI-uri: pass:normal[xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256-[`IERC1155MetadataURI.uri`]] +:xref-IERC1155MetadataURI-uri-uint256-: xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256- +:ERC1155Holder: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder[`ERC1155Holder`]] +:xref-ERC1155Holder: xref:token/ERC1155.adoc#ERC1155Holder +:ERC1155Holder-onERC1155Received: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-[`ERC1155Holder.onERC1155Received`]] +:xref-ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes- +:ERC1155Holder-onERC1155BatchReceived: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder-onERC1155BatchReceived-address-address-uint256---uint256---bytes-[`ERC1155Holder.onERC1155BatchReceived`]] +:xref-ERC1155Holder-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155Holder-onERC1155BatchReceived-address-address-uint256---uint256---bytes- +:ERC1155Receiver: pass:normal[xref:token/ERC1155.adoc#ERC1155Receiver[`ERC1155Receiver`]] +:xref-ERC1155Receiver: xref:token/ERC1155.adoc#ERC1155Receiver +:ERC1155Receiver-supportsInterface: pass:normal[xref:token/ERC1155.adoc#ERC1155Receiver-supportsInterface-bytes4-[`ERC1155Receiver.supportsInterface`]] +:xref-ERC1155Receiver-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155Receiver-supportsInterface-bytes4- +:ERC20: pass:normal[xref:token/ERC20.adoc#ERC20[`ERC20`]] +:xref-ERC20: xref:token/ERC20.adoc#ERC20 +:ERC20-constructor: pass:normal[xref:token/ERC20.adoc#ERC20-constructor-string-string-[`ERC20.constructor`]] +:xref-ERC20-constructor-string-string-: xref:token/ERC20.adoc#ERC20-constructor-string-string- +:ERC20-name: pass:normal[xref:token/ERC20.adoc#ERC20-name--[`ERC20.name`]] +:xref-ERC20-name--: xref:token/ERC20.adoc#ERC20-name-- +:ERC20-symbol: pass:normal[xref:token/ERC20.adoc#ERC20-symbol--[`ERC20.symbol`]] +:xref-ERC20-symbol--: xref:token/ERC20.adoc#ERC20-symbol-- +:ERC20-decimals: pass:normal[xref:token/ERC20.adoc#ERC20-decimals--[`ERC20.decimals`]] +:xref-ERC20-decimals--: xref:token/ERC20.adoc#ERC20-decimals-- +:ERC20-totalSupply: pass:normal[xref:token/ERC20.adoc#ERC20-totalSupply--[`ERC20.totalSupply`]] +:xref-ERC20-totalSupply--: xref:token/ERC20.adoc#ERC20-totalSupply-- +:ERC20-balanceOf: pass:normal[xref:token/ERC20.adoc#ERC20-balanceOf-address-[`ERC20.balanceOf`]] +:xref-ERC20-balanceOf-address-: xref:token/ERC20.adoc#ERC20-balanceOf-address- +:ERC20-transfer: pass:normal[xref:token/ERC20.adoc#ERC20-transfer-address-uint256-[`ERC20.transfer`]] +:xref-ERC20-transfer-address-uint256-: xref:token/ERC20.adoc#ERC20-transfer-address-uint256- +:ERC20-allowance: pass:normal[xref:token/ERC20.adoc#ERC20-allowance-address-address-[`ERC20.allowance`]] +:xref-ERC20-allowance-address-address-: xref:token/ERC20.adoc#ERC20-allowance-address-address- +:ERC20-approve: pass:normal[xref:token/ERC20.adoc#ERC20-approve-address-uint256-[`ERC20.approve`]] +:xref-ERC20-approve-address-uint256-: xref:token/ERC20.adoc#ERC20-approve-address-uint256- +:ERC20-transferFrom: pass:normal[xref:token/ERC20.adoc#ERC20-transferFrom-address-address-uint256-[`ERC20.transferFrom`]] +:xref-ERC20-transferFrom-address-address-uint256-: xref:token/ERC20.adoc#ERC20-transferFrom-address-address-uint256- +:ERC20-increaseAllowance: pass:normal[xref:token/ERC20.adoc#ERC20-increaseAllowance-address-uint256-[`ERC20.increaseAllowance`]] +:xref-ERC20-increaseAllowance-address-uint256-: xref:token/ERC20.adoc#ERC20-increaseAllowance-address-uint256- +:ERC20-decreaseAllowance: pass:normal[xref:token/ERC20.adoc#ERC20-decreaseAllowance-address-uint256-[`ERC20.decreaseAllowance`]] +:xref-ERC20-decreaseAllowance-address-uint256-: xref:token/ERC20.adoc#ERC20-decreaseAllowance-address-uint256- +:ERC20-_transfer: pass:normal[xref:token/ERC20.adoc#ERC20-_transfer-address-address-uint256-[`ERC20._transfer`]] +:xref-ERC20-_transfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_transfer-address-address-uint256- +:ERC20-_mint: pass:normal[xref:token/ERC20.adoc#ERC20-_mint-address-uint256-[`ERC20._mint`]] +:xref-ERC20-_mint-address-uint256-: xref:token/ERC20.adoc#ERC20-_mint-address-uint256- +:ERC20-_burn: pass:normal[xref:token/ERC20.adoc#ERC20-_burn-address-uint256-[`ERC20._burn`]] +:xref-ERC20-_burn-address-uint256-: xref:token/ERC20.adoc#ERC20-_burn-address-uint256- +:ERC20-_approve: pass:normal[xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256-[`ERC20._approve`]] +:xref-ERC20-_approve-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256- +:ERC20-_spendAllowance: pass:normal[xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256-[`ERC20._spendAllowance`]] +:xref-ERC20-_spendAllowance-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256- +:ERC20-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256-[`ERC20._beforeTokenTransfer`]] +:xref-ERC20-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256- +:ERC20-_afterTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_afterTokenTransfer-address-address-uint256-[`ERC20._afterTokenTransfer`]] +:xref-ERC20-_afterTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_afterTokenTransfer-address-address-uint256- +:IERC20: pass:normal[xref:token/ERC20.adoc#IERC20[`IERC20`]] +:xref-IERC20: xref:token/ERC20.adoc#IERC20 +:IERC20-totalSupply: pass:normal[xref:token/ERC20.adoc#IERC20-totalSupply--[`IERC20.totalSupply`]] +:xref-IERC20-totalSupply--: xref:token/ERC20.adoc#IERC20-totalSupply-- +:IERC20-balanceOf: pass:normal[xref:token/ERC20.adoc#IERC20-balanceOf-address-[`IERC20.balanceOf`]] +:xref-IERC20-balanceOf-address-: xref:token/ERC20.adoc#IERC20-balanceOf-address- +:IERC20-transfer: pass:normal[xref:token/ERC20.adoc#IERC20-transfer-address-uint256-[`IERC20.transfer`]] +:xref-IERC20-transfer-address-uint256-: xref:token/ERC20.adoc#IERC20-transfer-address-uint256- +:IERC20-allowance: pass:normal[xref:token/ERC20.adoc#IERC20-allowance-address-address-[`IERC20.allowance`]] +:xref-IERC20-allowance-address-address-: xref:token/ERC20.adoc#IERC20-allowance-address-address- +:IERC20-approve: pass:normal[xref:token/ERC20.adoc#IERC20-approve-address-uint256-[`IERC20.approve`]] +:xref-IERC20-approve-address-uint256-: xref:token/ERC20.adoc#IERC20-approve-address-uint256- +:IERC20-transferFrom: pass:normal[xref:token/ERC20.adoc#IERC20-transferFrom-address-address-uint256-[`IERC20.transferFrom`]] +:xref-IERC20-transferFrom-address-address-uint256-: xref:token/ERC20.adoc#IERC20-transferFrom-address-address-uint256- +:IERC20-Transfer: pass:normal[xref:token/ERC20.adoc#IERC20-Transfer-address-address-uint256-[`IERC20.Transfer`]] +:xref-IERC20-Transfer-address-address-uint256-: xref:token/ERC20.adoc#IERC20-Transfer-address-address-uint256- +:IERC20-Approval: pass:normal[xref:token/ERC20.adoc#IERC20-Approval-address-address-uint256-[`IERC20.Approval`]] +:xref-IERC20-Approval-address-address-uint256-: xref:token/ERC20.adoc#IERC20-Approval-address-address-uint256- +:ERC20Burnable: pass:normal[xref:token/ERC20.adoc#ERC20Burnable[`ERC20Burnable`]] +:xref-ERC20Burnable: xref:token/ERC20.adoc#ERC20Burnable +:ERC20Burnable-burn: pass:normal[xref:token/ERC20.adoc#ERC20Burnable-burn-uint256-[`ERC20Burnable.burn`]] +:xref-ERC20Burnable-burn-uint256-: xref:token/ERC20.adoc#ERC20Burnable-burn-uint256- +:ERC20Burnable-burnFrom: pass:normal[xref:token/ERC20.adoc#ERC20Burnable-burnFrom-address-uint256-[`ERC20Burnable.burnFrom`]] +:xref-ERC20Burnable-burnFrom-address-uint256-: xref:token/ERC20.adoc#ERC20Burnable-burnFrom-address-uint256- +:ERC20Capped: pass:normal[xref:token/ERC20.adoc#ERC20Capped[`ERC20Capped`]] +:xref-ERC20Capped: xref:token/ERC20.adoc#ERC20Capped +:ERC20Capped-constructor: pass:normal[xref:token/ERC20.adoc#ERC20Capped-constructor-uint256-[`ERC20Capped.constructor`]] +:xref-ERC20Capped-constructor-uint256-: xref:token/ERC20.adoc#ERC20Capped-constructor-uint256- +:ERC20Capped-cap: pass:normal[xref:token/ERC20.adoc#ERC20Capped-cap--[`ERC20Capped.cap`]] +:xref-ERC20Capped-cap--: xref:token/ERC20.adoc#ERC20Capped-cap-- +:ERC20Capped-_mint: pass:normal[xref:token/ERC20.adoc#ERC20Capped-_mint-address-uint256-[`ERC20Capped._mint`]] +:xref-ERC20Capped-_mint-address-uint256-: xref:token/ERC20.adoc#ERC20Capped-_mint-address-uint256- +:ERC20FlashMint: pass:normal[xref:token/ERC20.adoc#ERC20FlashMint[`ERC20FlashMint`]] +:xref-ERC20FlashMint: xref:token/ERC20.adoc#ERC20FlashMint +:ERC20FlashMint-maxFlashLoan: pass:normal[xref:token/ERC20.adoc#ERC20FlashMint-maxFlashLoan-address-[`ERC20FlashMint.maxFlashLoan`]] +:xref-ERC20FlashMint-maxFlashLoan-address-: xref:token/ERC20.adoc#ERC20FlashMint-maxFlashLoan-address- +:ERC20FlashMint-flashFee: pass:normal[xref:token/ERC20.adoc#ERC20FlashMint-flashFee-address-uint256-[`ERC20FlashMint.flashFee`]] +:xref-ERC20FlashMint-flashFee-address-uint256-: xref:token/ERC20.adoc#ERC20FlashMint-flashFee-address-uint256- +:ERC20FlashMint-flashLoan: pass:normal[xref:token/ERC20.adoc#ERC20FlashMint-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-[`ERC20FlashMint.flashLoan`]] +:xref-ERC20FlashMint-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-: xref:token/ERC20.adoc#ERC20FlashMint-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes- +:ERC20Pausable: pass:normal[xref:token/ERC20.adoc#ERC20Pausable[`ERC20Pausable`]] +:xref-ERC20Pausable: xref:token/ERC20.adoc#ERC20Pausable +:ERC20Pausable-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20Pausable-_beforeTokenTransfer-address-address-uint256-[`ERC20Pausable._beforeTokenTransfer`]] +:xref-ERC20Pausable-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20Pausable-_beforeTokenTransfer-address-address-uint256- +:ERC20Snapshot: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot[`ERC20Snapshot`]] +:xref-ERC20Snapshot: xref:token/ERC20.adoc#ERC20Snapshot +:ERC20Snapshot-_snapshot: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-_snapshot--[`ERC20Snapshot._snapshot`]] +:xref-ERC20Snapshot-_snapshot--: xref:token/ERC20.adoc#ERC20Snapshot-_snapshot-- +:ERC20Snapshot-_getCurrentSnapshotId: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-_getCurrentSnapshotId--[`ERC20Snapshot._getCurrentSnapshotId`]] +:xref-ERC20Snapshot-_getCurrentSnapshotId--: xref:token/ERC20.adoc#ERC20Snapshot-_getCurrentSnapshotId-- +:ERC20Snapshot-balanceOfAt: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-balanceOfAt-address-uint256-[`ERC20Snapshot.balanceOfAt`]] +:xref-ERC20Snapshot-balanceOfAt-address-uint256-: xref:token/ERC20.adoc#ERC20Snapshot-balanceOfAt-address-uint256- +:ERC20Snapshot-totalSupplyAt: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-totalSupplyAt-uint256-[`ERC20Snapshot.totalSupplyAt`]] +:xref-ERC20Snapshot-totalSupplyAt-uint256-: xref:token/ERC20.adoc#ERC20Snapshot-totalSupplyAt-uint256- +:ERC20Snapshot-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-_beforeTokenTransfer-address-address-uint256-[`ERC20Snapshot._beforeTokenTransfer`]] +:xref-ERC20Snapshot-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20Snapshot-_beforeTokenTransfer-address-address-uint256- +:ERC20Snapshot-Snapshot: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-Snapshot-uint256-[`ERC20Snapshot.Snapshot`]] +:xref-ERC20Snapshot-Snapshot-uint256-: xref:token/ERC20.adoc#ERC20Snapshot-Snapshot-uint256- +:ERC20Snapshot-Snapshots: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-Snapshots[`ERC20Snapshot.Snapshots`]] +:xref-ERC20Snapshot-Snapshots: xref:token/ERC20.adoc#ERC20Snapshot-Snapshots +:ERC20Votes: pass:normal[xref:token/ERC20.adoc#ERC20Votes[`ERC20Votes`]] +:xref-ERC20Votes: xref:token/ERC20.adoc#ERC20Votes +:ERC20Votes-checkpoints: pass:normal[xref:token/ERC20.adoc#ERC20Votes-checkpoints-address-uint32-[`ERC20Votes.checkpoints`]] +:xref-ERC20Votes-checkpoints-address-uint32-: xref:token/ERC20.adoc#ERC20Votes-checkpoints-address-uint32- +:ERC20Votes-numCheckpoints: pass:normal[xref:token/ERC20.adoc#ERC20Votes-numCheckpoints-address-[`ERC20Votes.numCheckpoints`]] +:xref-ERC20Votes-numCheckpoints-address-: xref:token/ERC20.adoc#ERC20Votes-numCheckpoints-address- +:ERC20Votes-delegates: pass:normal[xref:token/ERC20.adoc#ERC20Votes-delegates-address-[`ERC20Votes.delegates`]] +:xref-ERC20Votes-delegates-address-: xref:token/ERC20.adoc#ERC20Votes-delegates-address- +:ERC20Votes-getVotes: pass:normal[xref:token/ERC20.adoc#ERC20Votes-getVotes-address-[`ERC20Votes.getVotes`]] +:xref-ERC20Votes-getVotes-address-: xref:token/ERC20.adoc#ERC20Votes-getVotes-address- +:ERC20Votes-getPastVotes: pass:normal[xref:token/ERC20.adoc#ERC20Votes-getPastVotes-address-uint256-[`ERC20Votes.getPastVotes`]] +:xref-ERC20Votes-getPastVotes-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-getPastVotes-address-uint256- +:ERC20Votes-getPastTotalSupply: pass:normal[xref:token/ERC20.adoc#ERC20Votes-getPastTotalSupply-uint256-[`ERC20Votes.getPastTotalSupply`]] +:xref-ERC20Votes-getPastTotalSupply-uint256-: xref:token/ERC20.adoc#ERC20Votes-getPastTotalSupply-uint256- +:ERC20Votes-delegate: pass:normal[xref:token/ERC20.adoc#ERC20Votes-delegate-address-[`ERC20Votes.delegate`]] +:xref-ERC20Votes-delegate-address-: xref:token/ERC20.adoc#ERC20Votes-delegate-address- +:ERC20Votes-delegateBySig: pass:normal[xref:token/ERC20.adoc#ERC20Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Votes.delegateBySig`]] +:xref-ERC20Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:token/ERC20.adoc#ERC20Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:ERC20Votes-_maxSupply: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_maxSupply--[`ERC20Votes._maxSupply`]] +:xref-ERC20Votes-_maxSupply--: xref:token/ERC20.adoc#ERC20Votes-_maxSupply-- +:ERC20Votes-_mint: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_mint-address-uint256-[`ERC20Votes._mint`]] +:xref-ERC20Votes-_mint-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-_mint-address-uint256- +:ERC20Votes-_burn: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_burn-address-uint256-[`ERC20Votes._burn`]] +:xref-ERC20Votes-_burn-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-_burn-address-uint256- +:ERC20Votes-_afterTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_afterTokenTransfer-address-address-uint256-[`ERC20Votes._afterTokenTransfer`]] +:xref-ERC20Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-_afterTokenTransfer-address-address-uint256- +:ERC20Votes-_delegate: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address-[`ERC20Votes._delegate`]] +:xref-ERC20Votes-_delegate-address-address-: xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address- +:ERC20Votes-Checkpoint: pass:normal[xref:token/ERC20.adoc#ERC20Votes-Checkpoint[`ERC20Votes.Checkpoint`]] +:xref-ERC20Votes-Checkpoint: xref:token/ERC20.adoc#ERC20Votes-Checkpoint +:ERC20VotesComp: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp[`ERC20VotesComp`]] +:xref-ERC20VotesComp: xref:token/ERC20.adoc#ERC20VotesComp +:ERC20VotesComp-getCurrentVotes: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp-getCurrentVotes-address-[`ERC20VotesComp.getCurrentVotes`]] +:xref-ERC20VotesComp-getCurrentVotes-address-: xref:token/ERC20.adoc#ERC20VotesComp-getCurrentVotes-address- +:ERC20VotesComp-getPriorVotes: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp-getPriorVotes-address-uint256-[`ERC20VotesComp.getPriorVotes`]] +:xref-ERC20VotesComp-getPriorVotes-address-uint256-: xref:token/ERC20.adoc#ERC20VotesComp-getPriorVotes-address-uint256- +:ERC20VotesComp-_maxSupply: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp-_maxSupply--[`ERC20VotesComp._maxSupply`]] +:xref-ERC20VotesComp-_maxSupply--: xref:token/ERC20.adoc#ERC20VotesComp-_maxSupply-- +:ERC20Wrapper: pass:normal[xref:token/ERC20.adoc#ERC20Wrapper[`ERC20Wrapper`]] +:xref-ERC20Wrapper: xref:token/ERC20.adoc#ERC20Wrapper +:ERC20Wrapper-underlying: pass:normal[xref:token/ERC20.adoc#ERC20Wrapper-underlying-contract-IERC20[`ERC20Wrapper.underlying`]] +:xref-ERC20Wrapper-underlying-contract-IERC20: xref:token/ERC20.adoc#ERC20Wrapper-underlying-contract-IERC20 +:ERC20Wrapper-constructor: pass:normal[xref:token/ERC20.adoc#ERC20Wrapper-constructor-contract-IERC20-[`ERC20Wrapper.constructor`]] +:xref-ERC20Wrapper-constructor-contract-IERC20-: xref:token/ERC20.adoc#ERC20Wrapper-constructor-contract-IERC20- +:ERC20Wrapper-depositFor: pass:normal[xref:token/ERC20.adoc#ERC20Wrapper-depositFor-address-uint256-[`ERC20Wrapper.depositFor`]] +:xref-ERC20Wrapper-depositFor-address-uint256-: xref:token/ERC20.adoc#ERC20Wrapper-depositFor-address-uint256- +:ERC20Wrapper-withdrawTo: pass:normal[xref:token/ERC20.adoc#ERC20Wrapper-withdrawTo-address-uint256-[`ERC20Wrapper.withdrawTo`]] +:xref-ERC20Wrapper-withdrawTo-address-uint256-: xref:token/ERC20.adoc#ERC20Wrapper-withdrawTo-address-uint256- +:ERC20Wrapper-_recover: pass:normal[xref:token/ERC20.adoc#ERC20Wrapper-_recover-address-[`ERC20Wrapper._recover`]] +:xref-ERC20Wrapper-_recover-address-: xref:token/ERC20.adoc#ERC20Wrapper-_recover-address- +:IERC20Metadata: pass:normal[xref:token/ERC20.adoc#IERC20Metadata[`IERC20Metadata`]] +:xref-IERC20Metadata: xref:token/ERC20.adoc#IERC20Metadata +:IERC20Metadata-name: pass:normal[xref:token/ERC20.adoc#IERC20Metadata-name--[`IERC20Metadata.name`]] +:xref-IERC20Metadata-name--: xref:token/ERC20.adoc#IERC20Metadata-name-- +:IERC20Metadata-symbol: pass:normal[xref:token/ERC20.adoc#IERC20Metadata-symbol--[`IERC20Metadata.symbol`]] +:xref-IERC20Metadata-symbol--: xref:token/ERC20.adoc#IERC20Metadata-symbol-- +:IERC20Metadata-decimals: pass:normal[xref:token/ERC20.adoc#IERC20Metadata-decimals--[`IERC20Metadata.decimals`]] +:xref-IERC20Metadata-decimals--: xref:token/ERC20.adoc#IERC20Metadata-decimals-- +:ERC20Permit: pass:normal[xref:token/ERC20.adoc#ERC20Permit[`ERC20Permit`]] +:xref-ERC20Permit: xref:token/ERC20.adoc#ERC20Permit +:ERC20Permit-constructor: pass:normal[xref:token/ERC20.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]] +:xref-ERC20Permit-constructor-string-: xref:token/ERC20.adoc#ERC20Permit-constructor-string- +:ERC20Permit-permit: pass:normal[xref:token/ERC20.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]] +:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:token/ERC20.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32- +:ERC20Permit-nonces: pass:normal[xref:token/ERC20.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]] +:xref-ERC20Permit-nonces-address-: xref:token/ERC20.adoc#ERC20Permit-nonces-address- +:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:token/ERC20.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]] +:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:token/ERC20.adoc#ERC20Permit-DOMAIN_SEPARATOR-- +:ERC20Permit-_useNonce: pass:normal[xref:token/ERC20.adoc#ERC20Permit-_useNonce-address-[`ERC20Permit._useNonce`]] +:xref-ERC20Permit-_useNonce-address-: xref:token/ERC20.adoc#ERC20Permit-_useNonce-address- +:IERC20Permit: pass:normal[xref:token/ERC20.adoc#IERC20Permit[`IERC20Permit`]] +:xref-IERC20Permit: xref:token/ERC20.adoc#IERC20Permit +:IERC20Permit-permit: pass:normal[xref:token/ERC20.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]] +:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:token/ERC20.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32- +:IERC20Permit-nonces: pass:normal[xref:token/ERC20.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]] +:xref-IERC20Permit-nonces-address-: xref:token/ERC20.adoc#IERC20Permit-nonces-address- +:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]] +:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR-- +:SafeERC20: pass:normal[xref:token/ERC20.adoc#SafeERC20[`SafeERC20`]] +:xref-SafeERC20: xref:token/ERC20.adoc#SafeERC20 +:SafeERC20-safeTransfer: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeTransfer-contract-IERC20-address-uint256-[`SafeERC20.safeTransfer`]] +:xref-SafeERC20-safeTransfer-contract-IERC20-address-uint256-: xref:token/ERC20.adoc#SafeERC20-safeTransfer-contract-IERC20-address-uint256- +:SafeERC20-safeTransferFrom: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeTransferFrom-contract-IERC20-address-address-uint256-[`SafeERC20.safeTransferFrom`]] +:xref-SafeERC20-safeTransferFrom-contract-IERC20-address-address-uint256-: xref:token/ERC20.adoc#SafeERC20-safeTransferFrom-contract-IERC20-address-address-uint256- +:SafeERC20-safeApprove: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeApprove-contract-IERC20-address-uint256-[`SafeERC20.safeApprove`]] +:xref-SafeERC20-safeApprove-contract-IERC20-address-uint256-: xref:token/ERC20.adoc#SafeERC20-safeApprove-contract-IERC20-address-uint256- +:SafeERC20-safeIncreaseAllowance: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeIncreaseAllowance-contract-IERC20-address-uint256-[`SafeERC20.safeIncreaseAllowance`]] +:xref-SafeERC20-safeIncreaseAllowance-contract-IERC20-address-uint256-: xref:token/ERC20.adoc#SafeERC20-safeIncreaseAllowance-contract-IERC20-address-uint256- +:SafeERC20-safeDecreaseAllowance: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeDecreaseAllowance-contract-IERC20-address-uint256-[`SafeERC20.safeDecreaseAllowance`]] +:xref-SafeERC20-safeDecreaseAllowance-contract-IERC20-address-uint256-: xref:token/ERC20.adoc#SafeERC20-safeDecreaseAllowance-contract-IERC20-address-uint256- +:TokenTimelock: pass:normal[xref:token/ERC20.adoc#TokenTimelock[`TokenTimelock`]] +:xref-TokenTimelock: xref:token/ERC20.adoc#TokenTimelock +:TokenTimelock-constructor: pass:normal[xref:token/ERC20.adoc#TokenTimelock-constructor-contract-IERC20-address-uint256-[`TokenTimelock.constructor`]] +:xref-TokenTimelock-constructor-contract-IERC20-address-uint256-: xref:token/ERC20.adoc#TokenTimelock-constructor-contract-IERC20-address-uint256- +:TokenTimelock-token: pass:normal[xref:token/ERC20.adoc#TokenTimelock-token--[`TokenTimelock.token`]] +:xref-TokenTimelock-token--: xref:token/ERC20.adoc#TokenTimelock-token-- +:TokenTimelock-beneficiary: pass:normal[xref:token/ERC20.adoc#TokenTimelock-beneficiary--[`TokenTimelock.beneficiary`]] +:xref-TokenTimelock-beneficiary--: xref:token/ERC20.adoc#TokenTimelock-beneficiary-- +:TokenTimelock-releaseTime: pass:normal[xref:token/ERC20.adoc#TokenTimelock-releaseTime--[`TokenTimelock.releaseTime`]] +:xref-TokenTimelock-releaseTime--: xref:token/ERC20.adoc#TokenTimelock-releaseTime-- +:TokenTimelock-release: pass:normal[xref:token/ERC20.adoc#TokenTimelock-release--[`TokenTimelock.release`]] +:xref-TokenTimelock-release--: xref:token/ERC20.adoc#TokenTimelock-release-- +:ERC721: pass:normal[xref:token/ERC721.adoc#ERC721[`ERC721`]] +:xref-ERC721: xref:token/ERC721.adoc#ERC721 +:ERC721-constructor: pass:normal[xref:token/ERC721.adoc#ERC721-constructor-string-string-[`ERC721.constructor`]] +:xref-ERC721-constructor-string-string-: xref:token/ERC721.adoc#ERC721-constructor-string-string- +:ERC721-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721-supportsInterface-bytes4-[`ERC721.supportsInterface`]] +:xref-ERC721-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721-supportsInterface-bytes4- +:ERC721-balanceOf: pass:normal[xref:token/ERC721.adoc#ERC721-balanceOf-address-[`ERC721.balanceOf`]] +:xref-ERC721-balanceOf-address-: xref:token/ERC721.adoc#ERC721-balanceOf-address- +:ERC721-ownerOf: pass:normal[xref:token/ERC721.adoc#ERC721-ownerOf-uint256-[`ERC721.ownerOf`]] +:xref-ERC721-ownerOf-uint256-: xref:token/ERC721.adoc#ERC721-ownerOf-uint256- +:ERC721-name: pass:normal[xref:token/ERC721.adoc#ERC721-name--[`ERC721.name`]] +:xref-ERC721-name--: xref:token/ERC721.adoc#ERC721-name-- +:ERC721-symbol: pass:normal[xref:token/ERC721.adoc#ERC721-symbol--[`ERC721.symbol`]] +:xref-ERC721-symbol--: xref:token/ERC721.adoc#ERC721-symbol-- +:ERC721-tokenURI: pass:normal[xref:token/ERC721.adoc#ERC721-tokenURI-uint256-[`ERC721.tokenURI`]] +:xref-ERC721-tokenURI-uint256-: xref:token/ERC721.adoc#ERC721-tokenURI-uint256- +:ERC721-_baseURI: pass:normal[xref:token/ERC721.adoc#ERC721-_baseURI--[`ERC721._baseURI`]] +:xref-ERC721-_baseURI--: xref:token/ERC721.adoc#ERC721-_baseURI-- +:ERC721-approve: pass:normal[xref:token/ERC721.adoc#ERC721-approve-address-uint256-[`ERC721.approve`]] +:xref-ERC721-approve-address-uint256-: xref:token/ERC721.adoc#ERC721-approve-address-uint256- +:ERC721-getApproved: pass:normal[xref:token/ERC721.adoc#ERC721-getApproved-uint256-[`ERC721.getApproved`]] +:xref-ERC721-getApproved-uint256-: xref:token/ERC721.adoc#ERC721-getApproved-uint256- +:ERC721-setApprovalForAll: pass:normal[xref:token/ERC721.adoc#ERC721-setApprovalForAll-address-bool-[`ERC721.setApprovalForAll`]] +:xref-ERC721-setApprovalForAll-address-bool-: xref:token/ERC721.adoc#ERC721-setApprovalForAll-address-bool- +:ERC721-isApprovedForAll: pass:normal[xref:token/ERC721.adoc#ERC721-isApprovedForAll-address-address-[`ERC721.isApprovedForAll`]] +:xref-ERC721-isApprovedForAll-address-address-: xref:token/ERC721.adoc#ERC721-isApprovedForAll-address-address- +:ERC721-transferFrom: pass:normal[xref:token/ERC721.adoc#ERC721-transferFrom-address-address-uint256-[`ERC721.transferFrom`]] +:xref-ERC721-transferFrom-address-address-uint256-: xref:token/ERC721.adoc#ERC721-transferFrom-address-address-uint256- +:ERC721-safeTransferFrom: pass:normal[xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-[`ERC721.safeTransferFrom`]] +:xref-ERC721-safeTransferFrom-address-address-uint256-: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256- +:ERC721-safeTransferFrom: pass:normal[xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-bytes-[`ERC721.safeTransferFrom`]] +:xref-ERC721-safeTransferFrom-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-bytes- +:ERC721-_safeTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-bytes-[`ERC721._safeTransfer`]] +:xref-ERC721-_safeTransfer-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-bytes- +:ERC721-_exists: pass:normal[xref:token/ERC721.adoc#ERC721-_exists-uint256-[`ERC721._exists`]] +:xref-ERC721-_exists-uint256-: xref:token/ERC721.adoc#ERC721-_exists-uint256- +:ERC721-_isApprovedOrOwner: pass:normal[xref:token/ERC721.adoc#ERC721-_isApprovedOrOwner-address-uint256-[`ERC721._isApprovedOrOwner`]] +:xref-ERC721-_isApprovedOrOwner-address-uint256-: xref:token/ERC721.adoc#ERC721-_isApprovedOrOwner-address-uint256- +:ERC721-_safeMint: pass:normal[xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-[`ERC721._safeMint`]] +:xref-ERC721-_safeMint-address-uint256-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256- +:ERC721-_safeMint: pass:normal[xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-bytes-[`ERC721._safeMint`]] +:xref-ERC721-_safeMint-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-bytes- +:ERC721-_mint: pass:normal[xref:token/ERC721.adoc#ERC721-_mint-address-uint256-[`ERC721._mint`]] +:xref-ERC721-_mint-address-uint256-: xref:token/ERC721.adoc#ERC721-_mint-address-uint256- +:ERC721-_burn: pass:normal[xref:token/ERC721.adoc#ERC721-_burn-uint256-[`ERC721._burn`]] +:xref-ERC721-_burn-uint256-: xref:token/ERC721.adoc#ERC721-_burn-uint256- +:ERC721-_transfer: pass:normal[xref:token/ERC721.adoc#ERC721-_transfer-address-address-uint256-[`ERC721._transfer`]] +:xref-ERC721-_transfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_transfer-address-address-uint256- +:ERC721-_approve: pass:normal[xref:token/ERC721.adoc#ERC721-_approve-address-uint256-[`ERC721._approve`]] +:xref-ERC721-_approve-address-uint256-: xref:token/ERC721.adoc#ERC721-_approve-address-uint256- +:ERC721-_setApprovalForAll: pass:normal[xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool-[`ERC721._setApprovalForAll`]] +:xref-ERC721-_setApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool- +:ERC721-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256-[`ERC721._beforeTokenTransfer`]] +:xref-ERC721-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256- +:ERC721-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256-[`ERC721._afterTokenTransfer`]] +:xref-ERC721-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256- +:IERC721: pass:normal[xref:token/ERC721.adoc#IERC721[`IERC721`]] +:xref-IERC721: xref:token/ERC721.adoc#IERC721 +:IERC721-balanceOf: pass:normal[xref:token/ERC721.adoc#IERC721-balanceOf-address-[`IERC721.balanceOf`]] +:xref-IERC721-balanceOf-address-: xref:token/ERC721.adoc#IERC721-balanceOf-address- +:IERC721-ownerOf: pass:normal[xref:token/ERC721.adoc#IERC721-ownerOf-uint256-[`IERC721.ownerOf`]] +:xref-IERC721-ownerOf-uint256-: xref:token/ERC721.adoc#IERC721-ownerOf-uint256- +:IERC721-safeTransferFrom: pass:normal[xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256-[`IERC721.safeTransferFrom`]] +:xref-IERC721-safeTransferFrom-address-address-uint256-: xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256- +:IERC721-transferFrom: pass:normal[xref:token/ERC721.adoc#IERC721-transferFrom-address-address-uint256-[`IERC721.transferFrom`]] +:xref-IERC721-transferFrom-address-address-uint256-: xref:token/ERC721.adoc#IERC721-transferFrom-address-address-uint256- +:IERC721-approve: pass:normal[xref:token/ERC721.adoc#IERC721-approve-address-uint256-[`IERC721.approve`]] +:xref-IERC721-approve-address-uint256-: xref:token/ERC721.adoc#IERC721-approve-address-uint256- +:IERC721-getApproved: pass:normal[xref:token/ERC721.adoc#IERC721-getApproved-uint256-[`IERC721.getApproved`]] +:xref-IERC721-getApproved-uint256-: xref:token/ERC721.adoc#IERC721-getApproved-uint256- +:IERC721-setApprovalForAll: pass:normal[xref:token/ERC721.adoc#IERC721-setApprovalForAll-address-bool-[`IERC721.setApprovalForAll`]] +:xref-IERC721-setApprovalForAll-address-bool-: xref:token/ERC721.adoc#IERC721-setApprovalForAll-address-bool- +:IERC721-isApprovedForAll: pass:normal[xref:token/ERC721.adoc#IERC721-isApprovedForAll-address-address-[`IERC721.isApprovedForAll`]] +:xref-IERC721-isApprovedForAll-address-address-: xref:token/ERC721.adoc#IERC721-isApprovedForAll-address-address- +:IERC721-safeTransferFrom: pass:normal[xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256-bytes-[`IERC721.safeTransferFrom`]] +:xref-IERC721-safeTransferFrom-address-address-uint256-bytes-: xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256-bytes- +:IERC721-Transfer: pass:normal[xref:token/ERC721.adoc#IERC721-Transfer-address-address-uint256-[`IERC721.Transfer`]] +:xref-IERC721-Transfer-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Transfer-address-address-uint256- +:IERC721-Approval: pass:normal[xref:token/ERC721.adoc#IERC721-Approval-address-address-uint256-[`IERC721.Approval`]] +:xref-IERC721-Approval-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Approval-address-address-uint256- +:IERC721-ApprovalForAll: pass:normal[xref:token/ERC721.adoc#IERC721-ApprovalForAll-address-address-bool-[`IERC721.ApprovalForAll`]] +:xref-IERC721-ApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#IERC721-ApprovalForAll-address-address-bool- +:IERC721Receiver: pass:normal[xref:token/ERC721.adoc#IERC721Receiver[`IERC721Receiver`]] +:xref-IERC721Receiver: xref:token/ERC721.adoc#IERC721Receiver +:IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]] +:xref-IERC721Receiver-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes- +:ERC721Burnable: pass:normal[xref:token/ERC721.adoc#ERC721Burnable[`ERC721Burnable`]] +:xref-ERC721Burnable: xref:token/ERC721.adoc#ERC721Burnable +:ERC721Burnable-burn: pass:normal[xref:token/ERC721.adoc#ERC721Burnable-burn-uint256-[`ERC721Burnable.burn`]] +:xref-ERC721Burnable-burn-uint256-: xref:token/ERC721.adoc#ERC721Burnable-burn-uint256- +:ERC721Enumerable: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable[`ERC721Enumerable`]] +:xref-ERC721Enumerable: xref:token/ERC721.adoc#ERC721Enumerable +:ERC721Enumerable-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-supportsInterface-bytes4-[`ERC721Enumerable.supportsInterface`]] +:xref-ERC721Enumerable-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721Enumerable-supportsInterface-bytes4- +:ERC721Enumerable-tokenOfOwnerByIndex: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-tokenOfOwnerByIndex-address-uint256-[`ERC721Enumerable.tokenOfOwnerByIndex`]] +:xref-ERC721Enumerable-tokenOfOwnerByIndex-address-uint256-: xref:token/ERC721.adoc#ERC721Enumerable-tokenOfOwnerByIndex-address-uint256- +:ERC721Enumerable-totalSupply: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-totalSupply--[`ERC721Enumerable.totalSupply`]] +:xref-ERC721Enumerable-totalSupply--: xref:token/ERC721.adoc#ERC721Enumerable-totalSupply-- +:ERC721Enumerable-tokenByIndex: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-tokenByIndex-uint256-[`ERC721Enumerable.tokenByIndex`]] +:xref-ERC721Enumerable-tokenByIndex-uint256-: xref:token/ERC721.adoc#ERC721Enumerable-tokenByIndex-uint256- +:ERC721Enumerable-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-_beforeTokenTransfer-address-address-uint256-[`ERC721Enumerable._beforeTokenTransfer`]] +:xref-ERC721Enumerable-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Enumerable-_beforeTokenTransfer-address-address-uint256- +:ERC721Pausable: pass:normal[xref:token/ERC721.adoc#ERC721Pausable[`ERC721Pausable`]] +:xref-ERC721Pausable: xref:token/ERC721.adoc#ERC721Pausable +:ERC721Pausable-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256-[`ERC721Pausable._beforeTokenTransfer`]] +:xref-ERC721Pausable-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256- +:ERC721Royalty: pass:normal[xref:token/ERC721.adoc#ERC721Royalty[`ERC721Royalty`]] +:xref-ERC721Royalty: xref:token/ERC721.adoc#ERC721Royalty +:ERC721Royalty-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4-[`ERC721Royalty.supportsInterface`]] +:xref-ERC721Royalty-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4- +:ERC721Royalty-_burn: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256-[`ERC721Royalty._burn`]] +:xref-ERC721Royalty-_burn-uint256-: xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256- +:ERC721URIStorage: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage[`ERC721URIStorage`]] +:xref-ERC721URIStorage: xref:token/ERC721.adoc#ERC721URIStorage +:ERC721URIStorage-tokenURI: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage-tokenURI-uint256-[`ERC721URIStorage.tokenURI`]] +:xref-ERC721URIStorage-tokenURI-uint256-: xref:token/ERC721.adoc#ERC721URIStorage-tokenURI-uint256- +:ERC721URIStorage-_setTokenURI: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage-_setTokenURI-uint256-string-[`ERC721URIStorage._setTokenURI`]] +:xref-ERC721URIStorage-_setTokenURI-uint256-string-: xref:token/ERC721.adoc#ERC721URIStorage-_setTokenURI-uint256-string- +:ERC721URIStorage-_burn: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage-_burn-uint256-[`ERC721URIStorage._burn`]] +:xref-ERC721URIStorage-_burn-uint256-: xref:token/ERC721.adoc#ERC721URIStorage-_burn-uint256- +:IERC721Enumerable: pass:normal[xref:token/ERC721.adoc#IERC721Enumerable[`IERC721Enumerable`]] +:xref-IERC721Enumerable: xref:token/ERC721.adoc#IERC721Enumerable +:IERC721Enumerable-totalSupply: pass:normal[xref:token/ERC721.adoc#IERC721Enumerable-totalSupply--[`IERC721Enumerable.totalSupply`]] +:xref-IERC721Enumerable-totalSupply--: xref:token/ERC721.adoc#IERC721Enumerable-totalSupply-- +:IERC721Enumerable-tokenOfOwnerByIndex: pass:normal[xref:token/ERC721.adoc#IERC721Enumerable-tokenOfOwnerByIndex-address-uint256-[`IERC721Enumerable.tokenOfOwnerByIndex`]] +:xref-IERC721Enumerable-tokenOfOwnerByIndex-address-uint256-: xref:token/ERC721.adoc#IERC721Enumerable-tokenOfOwnerByIndex-address-uint256- +:IERC721Enumerable-tokenByIndex: pass:normal[xref:token/ERC721.adoc#IERC721Enumerable-tokenByIndex-uint256-[`IERC721Enumerable.tokenByIndex`]] +:xref-IERC721Enumerable-tokenByIndex-uint256-: xref:token/ERC721.adoc#IERC721Enumerable-tokenByIndex-uint256- +:IERC721Metadata: pass:normal[xref:token/ERC721.adoc#IERC721Metadata[`IERC721Metadata`]] +:xref-IERC721Metadata: xref:token/ERC721.adoc#IERC721Metadata +:IERC721Metadata-name: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-name--[`IERC721Metadata.name`]] +:xref-IERC721Metadata-name--: xref:token/ERC721.adoc#IERC721Metadata-name-- +:IERC721Metadata-symbol: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-symbol--[`IERC721Metadata.symbol`]] +:xref-IERC721Metadata-symbol--: xref:token/ERC721.adoc#IERC721Metadata-symbol-- +:IERC721Metadata-tokenURI: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256-[`IERC721Metadata.tokenURI`]] +:xref-IERC721Metadata-tokenURI-uint256-: xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256- +:ERC721Votes: pass:normal[xref:token/ERC721.adoc#ERC721Votes[`ERC721Votes`]] +:xref-ERC721Votes: xref:token/ERC721.adoc#ERC721Votes +:ERC721Votes-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256-[`ERC721Votes._afterTokenTransfer`]] +:xref-ERC721Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256- +:ERC721Votes-_getVotingUnits: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address-[`ERC721Votes._getVotingUnits`]] +:xref-ERC721Votes-_getVotingUnits-address-: xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address- +:ERC721Holder: pass:normal[xref:token/ERC721.adoc#ERC721Holder[`ERC721Holder`]] +:xref-ERC721Holder: xref:token/ERC721.adoc#ERC721Holder +:ERC721Holder-onERC721Received: pass:normal[xref:token/ERC721.adoc#ERC721Holder-onERC721Received-address-address-uint256-bytes-[`ERC721Holder.onERC721Received`]] +:xref-ERC721Holder-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721Holder-onERC721Received-address-address-uint256-bytes- +:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]] +:xref-ERC777: xref:token/ERC777.adoc#ERC777 +:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]] +:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry +:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]] +:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address--- +:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]] +:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name-- +:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]] +:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol-- +:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]] +:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals-- +:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]] +:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity-- +:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]] +:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply-- +:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]] +:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address- +:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]] +:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes- +:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]] +:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256- +:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]] +:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes- +:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]] +:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address- +:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]] +:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address- +:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]] +:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address- +:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]] +:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators-- +:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]] +:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes- +:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]] +:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes- +:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]] +:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address- +:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]] +:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256- +:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]] +:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256- +:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]] +:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes- +:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-bool-[`ERC777._mint`]] +:xref-ERC777-_mint-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-bool- +:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]] +:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool- +:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]] +:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes- +:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]] +:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256- +:ERC777-_spendAllowance: pass:normal[xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256-[`ERC777._spendAllowance`]] +:xref-ERC777-_spendAllowance-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256- +:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]] +:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256- +:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]] +:xref-IERC777: xref:token/ERC777.adoc#IERC777 +:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]] +:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name-- +:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]] +:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol-- +:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]] +:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity-- +:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]] +:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply-- +:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]] +:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address- +:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]] +:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes- +:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]] +:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes- +:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]] +:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address- +:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]] +:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address- +:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]] +:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address- +:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]] +:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators-- +:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]] +:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes- +:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]] +:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes- +:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]] +:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes- +:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]] +:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes- +:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]] +:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes- +:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]] +:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address- +:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]] +:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address- +:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]] +:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient +:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]] +:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes- +:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]] +:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender +:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]] +:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes- +:ERC777PresetFixedSupply: pass:normal[xref:token/ERC777.adoc#ERC777PresetFixedSupply[`ERC777PresetFixedSupply`]] +:xref-ERC777PresetFixedSupply: xref:token/ERC777.adoc#ERC777PresetFixedSupply +:ERC777PresetFixedSupply-constructor: pass:normal[xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-[`ERC777PresetFixedSupply.constructor`]] +:xref-ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-: xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address- +:ERC2981: pass:normal[xref:token/common.adoc#ERC2981[`ERC2981`]] +:xref-ERC2981: xref:token/common.adoc#ERC2981 +:ERC2981-supportsInterface: pass:normal[xref:token/common.adoc#ERC2981-supportsInterface-bytes4-[`ERC2981.supportsInterface`]] +:xref-ERC2981-supportsInterface-bytes4-: xref:token/common.adoc#ERC2981-supportsInterface-bytes4- +:ERC2981-royaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256-[`ERC2981.royaltyInfo`]] +:xref-ERC2981-royaltyInfo-uint256-uint256-: xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256- +:ERC2981-_feeDenominator: pass:normal[xref:token/common.adoc#ERC2981-_feeDenominator--[`ERC2981._feeDenominator`]] +:xref-ERC2981-_feeDenominator--: xref:token/common.adoc#ERC2981-_feeDenominator-- +:ERC2981-_setDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96-[`ERC2981._setDefaultRoyalty`]] +:xref-ERC2981-_setDefaultRoyalty-address-uint96-: xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96- +:ERC2981-_deleteDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty--[`ERC2981._deleteDefaultRoyalty`]] +:xref-ERC2981-_deleteDefaultRoyalty--: xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty-- +:ERC2981-_setTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96-[`ERC2981._setTokenRoyalty`]] +:xref-ERC2981-_setTokenRoyalty-uint256-address-uint96-: xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96- +:ERC2981-_resetTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256-[`ERC2981._resetTokenRoyalty`]] +:xref-ERC2981-_resetTokenRoyalty-uint256-: xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256- +:ERC2981-RoyaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-RoyaltyInfo[`ERC2981.RoyaltyInfo`]] +:xref-ERC2981-RoyaltyInfo: xref:token/common.adoc#ERC2981-RoyaltyInfo +:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] +:xref-ERC1155PresetMinterPauser: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser +:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] +:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string- +:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] +:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- +:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] +:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- +:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] +:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause-- +:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] +:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause-- +:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] +:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4- +:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] +:xref-ERC20PresetFixedSupply: xref:token/ERC20/presets.md#ERC20PresetFixedSupply +:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] +:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address- +:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] +:xref-ERC20PresetMinterPauser: xref:token/ERC20/presets.md#ERC20PresetMinterPauser +:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] +:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string- +:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] +:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256- +:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] +:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause-- +:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] +:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause-- +:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] +:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId +:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] +:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string- +:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] +:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI-- +:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] +:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address- +:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] +:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause-- +:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] +:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause-- +:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] +:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] +:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- +Contract presets are now deprecated in favor of [Contracts Wizard](https://wizard.openzeppelin.com/) as a more powerful alternative. diff --git a/docs/modules/api/pages/token/ERC20.adoc b/docs/modules/api/pages/token/ERC20.adoc index 3eae0e550..e0a30eb27 100644 --- a/docs/modules/api/pages/token/ERC20.adoc +++ b/docs/modules/api/pages/token/ERC20.adoc @@ -192,6 +192,8 @@ :xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32- :Governor-_castVote: pass:normal[xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-[`Governor._castVote`]] :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string- +:Governor-relay: pass:normal[xref:governance.adoc#Governor-relay-address-uint256-bytes-[`Governor.relay`]] +:xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes- :Governor-_executor: pass:normal[xref:governance.adoc#Governor-_executor--[`Governor._executor`]] :xref-Governor-_executor--: xref:governance.adoc#Governor-_executor-- :Governor-ProposalCore: pass:normal[xref:governance.adoc#Governor-ProposalCore[`Governor.ProposalCore`]] @@ -368,6 +370,24 @@ :xref-GovernorCountingSimple-ProposalVote: xref:governance.adoc#GovernorCountingSimple-ProposalVote :GovernorCountingSimple-VoteType: pass:normal[xref:governance.adoc#GovernorCountingSimple-VoteType[`GovernorCountingSimple.VoteType`]] :xref-GovernorCountingSimple-VoteType: xref:governance.adoc#GovernorCountingSimple-VoteType +:GovernorPreventLateQuorum: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum[`GovernorPreventLateQuorum`]] +:xref-GovernorPreventLateQuorum: xref:governance.adoc#GovernorPreventLateQuorum +:GovernorPreventLateQuorum-constructor: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64-[`GovernorPreventLateQuorum.constructor`]] +:xref-GovernorPreventLateQuorum-constructor-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64- +:GovernorPreventLateQuorum-proposalDeadline: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256-[`GovernorPreventLateQuorum.proposalDeadline`]] +:xref-GovernorPreventLateQuorum-proposalDeadline-uint256-: xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256- +:GovernorPreventLateQuorum-_castVote: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-[`GovernorPreventLateQuorum._castVote`]] +:xref-GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-: xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string- +:GovernorPreventLateQuorum-lateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension--[`GovernorPreventLateQuorum.lateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-lateQuorumVoteExtension--: xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension-- +:GovernorPreventLateQuorum-setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum.setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-_setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum._setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-ProposalExtended: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-[`GovernorPreventLateQuorum.ProposalExtended`]] +:xref-GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64- +:GovernorPreventLateQuorum-LateQuorumVoteExtensionSet: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-[`GovernorPreventLateQuorum.LateQuorumVoteExtensionSet`]] +:xref-GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64- :GovernorProposalThreshold: pass:normal[xref:governance.adoc#GovernorProposalThreshold[`GovernorProposalThreshold`]] :xref-GovernorProposalThreshold: xref:governance.adoc#GovernorProposalThreshold :GovernorProposalThreshold-propose: pass:normal[xref:governance.adoc#GovernorProposalThreshold-propose-address---uint256---bytes---string-[`GovernorProposalThreshold.propose`]] @@ -484,10 +504,10 @@ :xref-GovernorTimelockControl-TimelockChange-address-address-: xref:governance.adoc#GovernorTimelockControl-TimelockChange-address-address- :GovernorVotes: pass:normal[xref:governance.adoc#GovernorVotes[`GovernorVotes`]] :xref-GovernorVotes: xref:governance.adoc#GovernorVotes -:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-ERC20Votes[`GovernorVotes.token`]] -:xref-GovernorVotes-token-contract-ERC20Votes: xref:governance.adoc#GovernorVotes-token-contract-ERC20Votes -:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-ERC20Votes-[`GovernorVotes.constructor`]] -:xref-GovernorVotes-constructor-contract-ERC20Votes-: xref:governance.adoc#GovernorVotes-constructor-contract-ERC20Votes- +:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-IVotes[`GovernorVotes.token`]] +:xref-GovernorVotes-token-contract-IVotes: xref:governance.adoc#GovernorVotes-token-contract-IVotes +:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-IVotes-[`GovernorVotes.constructor`]] +:xref-GovernorVotes-constructor-contract-IVotes-: xref:governance.adoc#GovernorVotes-constructor-contract-IVotes- :GovernorVotes-getVotes: pass:normal[xref:governance.adoc#GovernorVotes-getVotes-address-uint256-[`GovernorVotes.getVotes`]] :xref-GovernorVotes-getVotes-address-uint256-: xref:governance.adoc#GovernorVotes-getVotes-address-uint256- :GovernorVotesComp: pass:normal[xref:governance.adoc#GovernorVotesComp[`GovernorVotesComp`]] @@ -524,6 +544,52 @@ :xref-IGovernorTimelock-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernorTimelock-queue-address---uint256---bytes---bytes32- :IGovernorTimelock-ProposalQueued: pass:normal[xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256-[`IGovernorTimelock.ProposalQueued`]] :xref-IGovernorTimelock-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256- +:IVotes: pass:normal[xref:governance.adoc#IVotes[`IVotes`]] +:xref-IVotes: xref:governance.adoc#IVotes +:IVotes-getVotes: pass:normal[xref:governance.adoc#IVotes-getVotes-address-[`IVotes.getVotes`]] +:xref-IVotes-getVotes-address-: xref:governance.adoc#IVotes-getVotes-address- +:IVotes-getPastVotes: pass:normal[xref:governance.adoc#IVotes-getPastVotes-address-uint256-[`IVotes.getPastVotes`]] +:xref-IVotes-getPastVotes-address-uint256-: xref:governance.adoc#IVotes-getPastVotes-address-uint256- +:IVotes-getPastTotalSupply: pass:normal[xref:governance.adoc#IVotes-getPastTotalSupply-uint256-[`IVotes.getPastTotalSupply`]] +:xref-IVotes-getPastTotalSupply-uint256-: xref:governance.adoc#IVotes-getPastTotalSupply-uint256- +:IVotes-delegates: pass:normal[xref:governance.adoc#IVotes-delegates-address-[`IVotes.delegates`]] +:xref-IVotes-delegates-address-: xref:governance.adoc#IVotes-delegates-address- +:IVotes-delegate: pass:normal[xref:governance.adoc#IVotes-delegate-address-[`IVotes.delegate`]] +:xref-IVotes-delegate-address-: xref:governance.adoc#IVotes-delegate-address- +:IVotes-delegateBySig: pass:normal[xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`IVotes.delegateBySig`]] +:xref-IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:IVotes-DelegateChanged: pass:normal[xref:governance.adoc#IVotes-DelegateChanged-address-address-address-[`IVotes.DelegateChanged`]] +:xref-IVotes-DelegateChanged-address-address-address-: xref:governance.adoc#IVotes-DelegateChanged-address-address-address- +:IVotes-DelegateVotesChanged: pass:normal[xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256-[`IVotes.DelegateVotesChanged`]] +:xref-IVotes-DelegateVotesChanged-address-uint256-uint256-: xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256- +:Votes: pass:normal[xref:governance.adoc#Votes[`Votes`]] +:xref-Votes: xref:governance.adoc#Votes +:Votes-getVotes: pass:normal[xref:governance.adoc#Votes-getVotes-address-[`Votes.getVotes`]] +:xref-Votes-getVotes-address-: xref:governance.adoc#Votes-getVotes-address- +:Votes-getPastVotes: pass:normal[xref:governance.adoc#Votes-getPastVotes-address-uint256-[`Votes.getPastVotes`]] +:xref-Votes-getPastVotes-address-uint256-: xref:governance.adoc#Votes-getPastVotes-address-uint256- +:Votes-getPastTotalSupply: pass:normal[xref:governance.adoc#Votes-getPastTotalSupply-uint256-[`Votes.getPastTotalSupply`]] +:xref-Votes-getPastTotalSupply-uint256-: xref:governance.adoc#Votes-getPastTotalSupply-uint256- +:Votes-_getTotalSupply: pass:normal[xref:governance.adoc#Votes-_getTotalSupply--[`Votes._getTotalSupply`]] +:xref-Votes-_getTotalSupply--: xref:governance.adoc#Votes-_getTotalSupply-- +:Votes-delegates: pass:normal[xref:governance.adoc#Votes-delegates-address-[`Votes.delegates`]] +:xref-Votes-delegates-address-: xref:governance.adoc#Votes-delegates-address- +:Votes-delegate: pass:normal[xref:governance.adoc#Votes-delegate-address-[`Votes.delegate`]] +:xref-Votes-delegate-address-: xref:governance.adoc#Votes-delegate-address- +:Votes-delegateBySig: pass:normal[xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`Votes.delegateBySig`]] +:xref-Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:Votes-_delegate: pass:normal[xref:governance.adoc#Votes-_delegate-address-address-[`Votes._delegate`]] +:xref-Votes-_delegate-address-address-: xref:governance.adoc#Votes-_delegate-address-address- +:Votes-_transferVotingUnits: pass:normal[xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256-[`Votes._transferVotingUnits`]] +:xref-Votes-_transferVotingUnits-address-address-uint256-: xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256- +:Votes-_useNonce: pass:normal[xref:governance.adoc#Votes-_useNonce-address-[`Votes._useNonce`]] +:xref-Votes-_useNonce-address-: xref:governance.adoc#Votes-_useNonce-address- +:Votes-nonces: pass:normal[xref:governance.adoc#Votes-nonces-address-[`Votes.nonces`]] +:xref-Votes-nonces-address-: xref:governance.adoc#Votes-nonces-address- +:Votes-DOMAIN_SEPARATOR: pass:normal[xref:governance.adoc#Votes-DOMAIN_SEPARATOR--[`Votes.DOMAIN_SEPARATOR`]] +:xref-Votes-DOMAIN_SEPARATOR--: xref:governance.adoc#Votes-DOMAIN_SEPARATOR-- +:Votes-_getVotingUnits: pass:normal[xref:governance.adoc#Votes-_getVotingUnits-address-[`Votes._getVotingUnits`]] +:xref-Votes-_getVotingUnits-address-: xref:governance.adoc#Votes-_getVotingUnits-address- :IERC1271: pass:normal[xref:interfaces.adoc#IERC1271[`IERC1271`]] :xref-IERC1271: xref:interfaces.adoc#IERC1271 :IERC1271-isValidSignature: pass:normal[xref:interfaces.adoc#IERC1271-isValidSignature-bytes32-bytes-[`IERC1271.isValidSignature`]] @@ -566,6 +632,10 @@ :xref-IERC3156FlashLender-flashFee-address-uint256-: xref:interfaces.adoc#IERC3156FlashLender-flashFee-address-uint256- :IERC3156FlashLender-flashLoan: pass:normal[xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-[`IERC3156FlashLender.flashLoan`]] :xref-IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-: xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes- +:IERC1822Proxiable: pass:normal[xref:interfaces.adoc#IERC1822Proxiable[`IERC1822Proxiable`]] +:xref-IERC1822Proxiable: xref:interfaces.adoc#IERC1822Proxiable +:IERC1822Proxiable-proxiableUUID: pass:normal[xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID--[`IERC1822Proxiable.proxiableUUID`]] +:xref-IERC1822Proxiable-proxiableUUID--: xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID-- :IERC2612: pass:normal[xref:interfaces.adoc#IERC2612[`IERC2612`]] :xref-IERC2612: xref:interfaces.adoc#IERC2612 :ERC2771Context: pass:normal[xref:metatx.adoc#ERC2771Context[`ERC2771Context`]] @@ -618,8 +688,8 @@ :xref-ERC1967Upgrade-_upgradeTo-address-: xref:proxy.adoc#ERC1967Upgrade-_upgradeTo-address- :ERC1967Upgrade-_upgradeToAndCall: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCall`]] :xref-ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool- -:ERC1967Upgrade-_upgradeToAndCallSecure: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallSecure`]] -:xref-ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool- +:ERC1967Upgrade-_upgradeToAndCallUUPS: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallUUPS`]] +:xref-ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool- :ERC1967Upgrade-_getAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_getAdmin--[`ERC1967Upgrade._getAdmin`]] :xref-ERC1967Upgrade-_getAdmin--: xref:proxy.adoc#ERC1967Upgrade-_getAdmin-- :ERC1967Upgrade-_changeAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_changeAdmin-address-[`ERC1967Upgrade._changeAdmin`]] @@ -714,6 +784,10 @@ :xref-UUPSUpgradeable: xref:proxy.adoc#UUPSUpgradeable :UUPSUpgradeable-onlyProxy: pass:normal[xref:proxy.adoc#UUPSUpgradeable-onlyProxy--[`UUPSUpgradeable.onlyProxy`]] :xref-UUPSUpgradeable-onlyProxy--: xref:proxy.adoc#UUPSUpgradeable-onlyProxy-- +:UUPSUpgradeable-notDelegated: pass:normal[xref:proxy.adoc#UUPSUpgradeable-notDelegated--[`UUPSUpgradeable.notDelegated`]] +:xref-UUPSUpgradeable-notDelegated--: xref:proxy.adoc#UUPSUpgradeable-notDelegated-- +:UUPSUpgradeable-proxiableUUID: pass:normal[xref:proxy.adoc#UUPSUpgradeable-proxiableUUID--[`UUPSUpgradeable.proxiableUUID`]] +:xref-UUPSUpgradeable-proxiableUUID--: xref:proxy.adoc#UUPSUpgradeable-proxiableUUID-- :UUPSUpgradeable-upgradeTo: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address-[`UUPSUpgradeable.upgradeTo`]] :xref-UUPSUpgradeable-upgradeTo-address-: xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address- :UUPSUpgradeable-upgradeToAndCall: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeToAndCall-address-bytes-[`UUPSUpgradeable.upgradeToAndCall`]] @@ -782,6 +856,26 @@ :xref-Arrays: xref:utils.adoc#Arrays :Arrays-findUpperBound: pass:normal[xref:utils.adoc#Arrays-findUpperBound-uint256---uint256-[`Arrays.findUpperBound`]] :xref-Arrays-findUpperBound-uint256---uint256-: xref:utils.adoc#Arrays-findUpperBound-uint256---uint256- +:Base64: pass:normal[xref:utils.adoc#Base64[`Base64`]] +:xref-Base64: xref:utils.adoc#Base64 +:Base64-_TABLE: pass:normal[xref:utils.adoc#Base64-_TABLE-string[`Base64._TABLE`]] +:xref-Base64-_TABLE-string: xref:utils.adoc#Base64-_TABLE-string +:Base64-encode: pass:normal[xref:utils.adoc#Base64-encode-bytes-[`Base64.encode`]] +:xref-Base64-encode-bytes-: xref:utils.adoc#Base64-encode-bytes- +:Checkpoints: pass:normal[xref:utils.adoc#Checkpoints[`Checkpoints`]] +:xref-Checkpoints: xref:utils.adoc#Checkpoints +:Checkpoints-latest: pass:normal[xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History-[`Checkpoints.latest`]] +:xref-Checkpoints-latest-struct-Checkpoints-History-: xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History- +:Checkpoints-getAtBlock: pass:normal[xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-[`Checkpoints.getAtBlock`]] +:xref-Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256- +:Checkpoints-Checkpoint: pass:normal[xref:utils.adoc#Checkpoints-Checkpoint[`Checkpoints.Checkpoint`]] +:xref-Checkpoints-Checkpoint: xref:utils.adoc#Checkpoints-Checkpoint +:Checkpoints-History: pass:normal[xref:utils.adoc#Checkpoints-History[`Checkpoints.History`]] +:xref-Checkpoints-History: xref:utils.adoc#Checkpoints-History :Context: pass:normal[xref:utils.adoc#Context[`Context`]] :xref-Context: xref:utils.adoc#Context :Context-_msgSender: pass:normal[xref:utils.adoc#Context-_msgSender--[`Context._msgSender`]] @@ -1078,6 +1172,16 @@ :xref-SafeMath-div-uint256-uint256-string-: xref:utils.adoc#SafeMath-div-uint256-uint256-string- :SafeMath-mod: pass:normal[xref:utils.adoc#SafeMath-mod-uint256-uint256-string-[`SafeMath.mod`]] :xref-SafeMath-mod-uint256-uint256-string-: xref:utils.adoc#SafeMath-mod-uint256-uint256-string- +:SignedMath: pass:normal[xref:utils.adoc#SignedMath[`SignedMath`]] +:xref-SignedMath: xref:utils.adoc#SignedMath +:SignedMath-max: pass:normal[xref:utils.adoc#SignedMath-max-int256-int256-[`SignedMath.max`]] +:xref-SignedMath-max-int256-int256-: xref:utils.adoc#SignedMath-max-int256-int256- +:SignedMath-min: pass:normal[xref:utils.adoc#SignedMath-min-int256-int256-[`SignedMath.min`]] +:xref-SignedMath-min-int256-int256-: xref:utils.adoc#SignedMath-min-int256-int256- +:SignedMath-average: pass:normal[xref:utils.adoc#SignedMath-average-int256-int256-[`SignedMath.average`]] +:xref-SignedMath-average-int256-int256-: xref:utils.adoc#SignedMath-average-int256-int256- +:SignedMath-abs: pass:normal[xref:utils.adoc#SignedMath-abs-int256-[`SignedMath.abs`]] +:xref-SignedMath-abs-int256-: xref:utils.adoc#SignedMath-abs-int256- :SignedSafeMath: pass:normal[xref:utils.adoc#SignedSafeMath[`SignedSafeMath`]] :xref-SignedSafeMath: xref:utils.adoc#SignedSafeMath :SignedSafeMath-mul: pass:normal[xref:utils.adoc#SignedSafeMath-mul-int256-int256-[`SignedSafeMath.mul`]] @@ -1256,26 +1360,6 @@ :xref-IERC1155MetadataURI: xref:token/ERC1155.adoc#IERC1155MetadataURI :IERC1155MetadataURI-uri: pass:normal[xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256-[`IERC1155MetadataURI.uri`]] :xref-IERC1155MetadataURI-uri-uint256-: xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256- -:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] -:xref-ERC1155PresetMinterPauser: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser -:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] -:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 -:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] -:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 -:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] -:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-constructor-string- -:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] -:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- -:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] -:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- -:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] -:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-pause-- -:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] -:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-unpause-- -:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] -:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-supportsInterface-bytes4- -:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] -:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- :ERC1155Holder: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder[`ERC1155Holder`]] :xref-ERC1155Holder: xref:token/ERC1155.adoc#ERC1155Holder :ERC1155Holder-onERC1155Received: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-[`ERC1155Holder.onERC1155Received`]] @@ -1320,6 +1404,8 @@ :xref-ERC20-_burn-address-uint256-: xref:token/ERC20.adoc#ERC20-_burn-address-uint256- :ERC20-_approve: pass:normal[xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256-[`ERC20._approve`]] :xref-ERC20-_approve-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256- +:ERC20-_spendAllowance: pass:normal[xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256-[`ERC20._spendAllowance`]] +:xref-ERC20-_spendAllowance-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256- :ERC20-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256-[`ERC20._beforeTokenTransfer`]] :xref-ERC20-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256- :ERC20-_afterTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_afterTokenTransfer-address-address-uint256-[`ERC20._afterTokenTransfer`]] @@ -1412,10 +1498,6 @@ :xref-ERC20Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-_afterTokenTransfer-address-address-uint256- :ERC20Votes-_delegate: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address-[`ERC20Votes._delegate`]] :xref-ERC20Votes-_delegate-address-address-: xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address- -:ERC20Votes-DelegateChanged: pass:normal[xref:token/ERC20.adoc#ERC20Votes-DelegateChanged-address-address-address-[`ERC20Votes.DelegateChanged`]] -:xref-ERC20Votes-DelegateChanged-address-address-address-: xref:token/ERC20.adoc#ERC20Votes-DelegateChanged-address-address-address- -:ERC20Votes-DelegateVotesChanged: pass:normal[xref:token/ERC20.adoc#ERC20Votes-DelegateVotesChanged-address-uint256-uint256-[`ERC20Votes.DelegateVotesChanged`]] -:xref-ERC20Votes-DelegateVotesChanged-address-uint256-uint256-: xref:token/ERC20.adoc#ERC20Votes-DelegateVotesChanged-address-uint256-uint256- :ERC20Votes-Checkpoint: pass:normal[xref:token/ERC20.adoc#ERC20Votes-Checkpoint[`ERC20Votes.Checkpoint`]] :xref-ERC20Votes-Checkpoint: xref:token/ERC20.adoc#ERC20Votes-Checkpoint :ERC20VotesComp: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp[`ERC20VotesComp`]] @@ -1466,26 +1548,6 @@ :xref-IERC20Permit-nonces-address-: xref:token/ERC20.adoc#IERC20Permit-nonces-address- :IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]] :xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR-- -:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20.adoc#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] -:xref-ERC20PresetFixedSupply: xref:token/ERC20.adoc#ERC20PresetFixedSupply -:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20.adoc#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] -:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20.adoc#ERC20PresetFixedSupply-constructor-string-string-uint256-address- -:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] -:xref-ERC20PresetMinterPauser: xref:token/ERC20.adoc#ERC20PresetMinterPauser -:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] -:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20.adoc#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 -:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] -:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20.adoc#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 -:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] -:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-constructor-string-string- -:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] -:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-mint-address-uint256- -:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] -:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20.adoc#ERC20PresetMinterPauser-pause-- -:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] -:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20.adoc#ERC20PresetMinterPauser-unpause-- -:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] -:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- :SafeERC20: pass:normal[xref:token/ERC20.adoc#SafeERC20[`SafeERC20`]] :xref-SafeERC20: xref:token/ERC20.adoc#SafeERC20 :SafeERC20-safeTransfer: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeTransfer-contract-IERC20-address-uint256-[`SafeERC20.safeTransfer`]] @@ -1564,6 +1626,8 @@ :xref-ERC721-_setApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool- :ERC721-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256-[`ERC721._beforeTokenTransfer`]] :xref-ERC721-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256- +:ERC721-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256-[`ERC721._afterTokenTransfer`]] +:xref-ERC721-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256- :IERC721: pass:normal[xref:token/ERC721.adoc#IERC721[`IERC721`]] :xref-IERC721: xref:token/ERC721.adoc#IERC721 :IERC721-balanceOf: pass:normal[xref:token/ERC721.adoc#IERC721-balanceOf-address-[`IERC721.balanceOf`]] @@ -1614,6 +1678,12 @@ :xref-ERC721Pausable: xref:token/ERC721.adoc#ERC721Pausable :ERC721Pausable-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256-[`ERC721Pausable._beforeTokenTransfer`]] :xref-ERC721Pausable-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256- +:ERC721Royalty: pass:normal[xref:token/ERC721.adoc#ERC721Royalty[`ERC721Royalty`]] +:xref-ERC721Royalty: xref:token/ERC721.adoc#ERC721Royalty +:ERC721Royalty-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4-[`ERC721Royalty.supportsInterface`]] +:xref-ERC721Royalty-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4- +:ERC721Royalty-_burn: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256-[`ERC721Royalty._burn`]] +:xref-ERC721Royalty-_burn-uint256-: xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256- :ERC721URIStorage: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage[`ERC721URIStorage`]] :xref-ERC721URIStorage: xref:token/ERC721.adoc#ERC721URIStorage :ERC721URIStorage-tokenURI: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage-tokenURI-uint256-[`ERC721URIStorage.tokenURI`]] @@ -1638,26 +1708,12 @@ :xref-IERC721Metadata-symbol--: xref:token/ERC721.adoc#IERC721Metadata-symbol-- :IERC721Metadata-tokenURI: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256-[`IERC721Metadata.tokenURI`]] :xref-IERC721Metadata-tokenURI-uint256-: xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256- -:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] -:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId -:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] -:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 -:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] -:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 -:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] -:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-constructor-string-string-string- -:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] -:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_baseURI-- -:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] -:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-mint-address- -:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] -:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-pause-- -:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] -:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-unpause-- -:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] -:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- -:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] -:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- +:ERC721Votes: pass:normal[xref:token/ERC721.adoc#ERC721Votes[`ERC721Votes`]] +:xref-ERC721Votes: xref:token/ERC721.adoc#ERC721Votes +:ERC721Votes-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256-[`ERC721Votes._afterTokenTransfer`]] +:xref-ERC721Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256- +:ERC721Votes-_getVotingUnits: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address-[`ERC721Votes._getVotingUnits`]] +:xref-ERC721Votes-_getVotingUnits-address-: xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address- :ERC721Holder: pass:normal[xref:token/ERC721.adoc#ERC721Holder[`ERC721Holder`]] :xref-ERC721Holder: xref:token/ERC721.adoc#ERC721Holder :ERC721Holder-onERC721Received: pass:normal[xref:token/ERC721.adoc#ERC721Holder-onERC721Received-address-address-uint256-bytes-[`ERC721Holder.onERC721Received`]] @@ -1714,6 +1770,8 @@ :xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes- :ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]] :xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256- +:ERC777-_spendAllowance: pass:normal[xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256-[`ERC777._spendAllowance`]] +:xref-ERC777-_spendAllowance-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256- :ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]] :xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256- :IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]] @@ -1766,6 +1824,84 @@ :xref-ERC777PresetFixedSupply: xref:token/ERC777.adoc#ERC777PresetFixedSupply :ERC777PresetFixedSupply-constructor: pass:normal[xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-[`ERC777PresetFixedSupply.constructor`]] :xref-ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-: xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address- +:ERC2981: pass:normal[xref:token/common.adoc#ERC2981[`ERC2981`]] +:xref-ERC2981: xref:token/common.adoc#ERC2981 +:ERC2981-supportsInterface: pass:normal[xref:token/common.adoc#ERC2981-supportsInterface-bytes4-[`ERC2981.supportsInterface`]] +:xref-ERC2981-supportsInterface-bytes4-: xref:token/common.adoc#ERC2981-supportsInterface-bytes4- +:ERC2981-royaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256-[`ERC2981.royaltyInfo`]] +:xref-ERC2981-royaltyInfo-uint256-uint256-: xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256- +:ERC2981-_feeDenominator: pass:normal[xref:token/common.adoc#ERC2981-_feeDenominator--[`ERC2981._feeDenominator`]] +:xref-ERC2981-_feeDenominator--: xref:token/common.adoc#ERC2981-_feeDenominator-- +:ERC2981-_setDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96-[`ERC2981._setDefaultRoyalty`]] +:xref-ERC2981-_setDefaultRoyalty-address-uint96-: xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96- +:ERC2981-_deleteDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty--[`ERC2981._deleteDefaultRoyalty`]] +:xref-ERC2981-_deleteDefaultRoyalty--: xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty-- +:ERC2981-_setTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96-[`ERC2981._setTokenRoyalty`]] +:xref-ERC2981-_setTokenRoyalty-uint256-address-uint96-: xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96- +:ERC2981-_resetTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256-[`ERC2981._resetTokenRoyalty`]] +:xref-ERC2981-_resetTokenRoyalty-uint256-: xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256- +:ERC2981-RoyaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-RoyaltyInfo[`ERC2981.RoyaltyInfo`]] +:xref-ERC2981-RoyaltyInfo: xref:token/common.adoc#ERC2981-RoyaltyInfo +:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] +:xref-ERC1155PresetMinterPauser: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser +:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] +:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string- +:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] +:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- +:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] +:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- +:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] +:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause-- +:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] +:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause-- +:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] +:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4- +:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] +:xref-ERC20PresetFixedSupply: xref:token/ERC20/presets.md#ERC20PresetFixedSupply +:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] +:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address- +:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] +:xref-ERC20PresetMinterPauser: xref:token/ERC20/presets.md#ERC20PresetMinterPauser +:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] +:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string- +:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] +:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256- +:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] +:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause-- +:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] +:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause-- +:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] +:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId +:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] +:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string- +:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] +:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI-- +:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] +:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address- +:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] +:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause-- +:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] +:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause-- +:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] +:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] +:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- = ERC 20 [.readme-notice] @@ -1818,7 +1954,7 @@ NOTE: This core set of contracts is designed to be unopinionated, allowing devel [.contract] [[IERC20]] -=== `++IERC20++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC20/IERC20.sol[{github-icon},role=heading-link] +=== `++IERC20++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC20/IERC20.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -1833,10 +1969,10 @@ Interface of the ERC20 standard as defined in the EIP. -- * {xref-IERC20-totalSupply--}[`++totalSupply()++`] * {xref-IERC20-balanceOf-address-}[`++balanceOf(account)++`] -* {xref-IERC20-transfer-address-uint256-}[`++transfer(recipient, amount)++`] +* {xref-IERC20-transfer-address-uint256-}[`++transfer(to, amount)++`] * {xref-IERC20-allowance-address-address-}[`++allowance(owner, spender)++`] * {xref-IERC20-approve-address-uint256-}[`++approve(spender, amount)++`] -* {xref-IERC20-transferFrom-address-address-uint256-}[`++transferFrom(sender, recipient, amount)++`] +* {xref-IERC20-transferFrom-address-address-uint256-}[`++transferFrom(from, to, amount)++`] -- @@ -1863,9 +1999,9 @@ Returns the amount of tokens owned by `account`. [.contract-item] [[IERC20-transfer-address-uint256-]] -==== `[.contract-item-name]#++transfer++#++(address recipient, uint256 amount) → bool++` [.item-kind]#external# +==== `[.contract-item-name]#++transfer++#++(address to, uint256 amount) → bool++` [.item-kind]#external# -Moves `amount` tokens from the caller's account to `recipient`. +Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. @@ -1900,9 +2036,9 @@ Emits an {Approval} event. [.contract-item] [[IERC20-transferFrom-address-address-uint256-]] -==== `[.contract-item-name]#++transferFrom++#++(address sender, address recipient, uint256 amount) → bool++` [.item-kind]#external# +==== `[.contract-item-name]#++transferFrom++#++(address from, address to, uint256 amount) → bool++` [.item-kind]#external# -Moves `amount` tokens from `sender` to `recipient` using the +Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. @@ -1936,7 +2072,7 @@ a call to {approve}. `value` is the new allowance. [.contract] [[IERC20Metadata]] -=== `++IERC20Metadata++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC20/extensions/IERC20Metadata.sol[{github-icon},role=heading-link] +=== `++IERC20Metadata++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC20/extensions/IERC20Metadata.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -1959,10 +2095,10 @@ _Available since v4.1._ .IERC20 * {xref-IERC20-totalSupply--}[`++totalSupply()++`] * {xref-IERC20-balanceOf-address-}[`++balanceOf(account)++`] -* {xref-IERC20-transfer-address-uint256-}[`++transfer(recipient, amount)++`] +* {xref-IERC20-transfer-address-uint256-}[`++transfer(to, amount)++`] * {xref-IERC20-allowance-address-address-}[`++allowance(owner, spender)++`] * {xref-IERC20-approve-address-uint256-}[`++approve(spender, amount)++`] -* {xref-IERC20-transferFrom-address-address-uint256-}[`++transferFrom(sender, recipient, amount)++`] +* {xref-IERC20-transferFrom-address-address-uint256-}[`++transferFrom(from, to, amount)++`] -- @@ -2016,12 +2152,13 @@ Returns the decimals places of the token. :_mint: pass:normal[xref:#ERC20-_mint-address-uint256-[`++_mint++`]] :_burn: pass:normal[xref:#ERC20-_burn-address-uint256-[`++_burn++`]] :_approve: pass:normal[xref:#ERC20-_approve-address-address-uint256-[`++_approve++`]] +:_spendAllowance: pass:normal[xref:#ERC20-_spendAllowance-address-address-uint256-[`++_spendAllowance++`]] :_beforeTokenTransfer: pass:normal[xref:#ERC20-_beforeTokenTransfer-address-address-uint256-[`++_beforeTokenTransfer++`]] :_afterTokenTransfer: pass:normal[xref:#ERC20-_afterTokenTransfer-address-address-uint256-[`++_afterTokenTransfer++`]] [.contract] [[ERC20]] -=== `++ERC20++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC20/ERC20.sol[{github-icon},role=heading-link] +=== `++ERC20++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC20/ERC20.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2062,16 +2199,17 @@ allowances. See {IERC20-approve}. * {xref-ERC20-decimals--}[`++decimals()++`] * {xref-ERC20-totalSupply--}[`++totalSupply()++`] * {xref-ERC20-balanceOf-address-}[`++balanceOf(account)++`] -* {xref-ERC20-transfer-address-uint256-}[`++transfer(recipient, amount)++`] +* {xref-ERC20-transfer-address-uint256-}[`++transfer(to, amount)++`] * {xref-ERC20-allowance-address-address-}[`++allowance(owner, spender)++`] * {xref-ERC20-approve-address-uint256-}[`++approve(spender, amount)++`] -* {xref-ERC20-transferFrom-address-address-uint256-}[`++transferFrom(sender, recipient, amount)++`] +* {xref-ERC20-transferFrom-address-address-uint256-}[`++transferFrom(from, to, amount)++`] * {xref-ERC20-increaseAllowance-address-uint256-}[`++increaseAllowance(spender, addedValue)++`] * {xref-ERC20-decreaseAllowance-address-uint256-}[`++decreaseAllowance(spender, subtractedValue)++`] -* {xref-ERC20-_transfer-address-address-uint256-}[`++_transfer(sender, recipient, amount)++`] +* {xref-ERC20-_transfer-address-address-uint256-}[`++_transfer(from, to, amount)++`] * {xref-ERC20-_mint-address-uint256-}[`++_mint(account, amount)++`] * {xref-ERC20-_burn-address-uint256-}[`++_burn(account, amount)++`] * {xref-ERC20-_approve-address-address-uint256-}[`++_approve(owner, spender, amount)++`] +* {xref-ERC20-_spendAllowance-address-address-uint256-}[`++_spendAllowance(owner, spender, amount)++`] * {xref-ERC20-_beforeTokenTransfer-address-address-uint256-}[`++_beforeTokenTransfer(from, to, amount)++`] * {xref-ERC20-_afterTokenTransfer-address-address-uint256-}[`++_afterTokenTransfer(from, to, amount)++`] @@ -2156,13 +2294,13 @@ See {IERC20-balanceOf}. [.contract-item] [[ERC20-transfer-address-uint256-]] -==== `[.contract-item-name]#++transfer++#++(address recipient, uint256 amount) → bool++` [.item-kind]#public# +==== `[.contract-item-name]#++transfer++#++(address to, uint256 amount) → bool++` [.item-kind]#public# See {IERC20-transfer}. Requirements: -- `recipient` cannot be the zero address. +- `to` cannot be the zero address. - the caller must have a balance of at least `amount`. [.contract-item] @@ -2177,24 +2315,30 @@ See {IERC20-allowance}. See {IERC20-approve}. +NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on +`transferFrom`. This is semantically equivalent to an infinite approval. + Requirements: - `spender` cannot be the zero address. [.contract-item] [[ERC20-transferFrom-address-address-uint256-]] -==== `[.contract-item-name]#++transferFrom++#++(address sender, address recipient, uint256 amount) → bool++` [.item-kind]#public# +==== `[.contract-item-name]#++transferFrom++#++(address from, address to, uint256 amount) → bool++` [.item-kind]#public# See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. +NOTE: Does not update the allowance if the current allowance +is the maximum `uint256`. + Requirements: -- `sender` and `recipient` cannot be the zero address. -- `sender` must have a balance of at least `amount`. -- the caller must have allowance for ``sender``'s tokens of at least +- `from` and `to` cannot be the zero address. +- `from` must have a balance of at least `amount`. +- the caller must have allowance for ``from``'s tokens of at least `amount`. [.contract-item] @@ -2231,7 +2375,7 @@ Requirements: [.contract-item] [[ERC20-_transfer-address-address-uint256-]] -==== `[.contract-item-name]#++_transfer++#++(address sender, address recipient, uint256 amount)++` [.item-kind]#internal# +==== `[.contract-item-name]#++_transfer++#++(address from, address to, uint256 amount)++` [.item-kind]#internal# Moves `amount` of tokens from `sender` to `recipient`. @@ -2242,9 +2386,9 @@ Emits a {Transfer} event. Requirements: -- `sender` cannot be the zero address. -- `recipient` cannot be the zero address. -- `sender` must have a balance of at least `amount`. +- `from` cannot be the zero address. +- `to` cannot be the zero address. +- `from` must have a balance of at least `amount`. [.contract-item] [[ERC20-_mint-address-uint256-]] @@ -2289,6 +2433,17 @@ Requirements: - `owner` cannot be the zero address. - `spender` cannot be the zero address. +[.contract-item] +[[ERC20-_spendAllowance-address-address-uint256-]] +==== `[.contract-item-name]#++_spendAllowance++#++(address owner, address spender, uint256 amount)++` [.item-kind]#internal# + +Spend `amount` form the allowance of `owner` toward `spender`. + +Does not update the allowance amount in case of infinite allowance. +Revert if not enough allowance is available. + +Might emit an {Approval} event. + [.contract-item] [[ERC20-_beforeTokenTransfer-address-address-uint256-]] ==== `[.contract-item-name]#++_beforeTokenTransfer++#++(address from, address to, uint256 amount)++` [.item-kind]#internal# @@ -2334,7 +2489,7 @@ To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hook [.contract] [[ERC20Burnable]] -=== `++ERC20Burnable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC20/extensions/ERC20Burnable.sol[{github-icon},role=heading-link] +=== `++ERC20Burnable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC20/extensions/ERC20Burnable.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2360,16 +2515,17 @@ recognized off-chain (via event analysis). * {xref-ERC20-decimals--}[`++decimals()++`] * {xref-ERC20-totalSupply--}[`++totalSupply()++`] * {xref-ERC20-balanceOf-address-}[`++balanceOf(account)++`] -* {xref-ERC20-transfer-address-uint256-}[`++transfer(recipient, amount)++`] +* {xref-ERC20-transfer-address-uint256-}[`++transfer(to, amount)++`] * {xref-ERC20-allowance-address-address-}[`++allowance(owner, spender)++`] * {xref-ERC20-approve-address-uint256-}[`++approve(spender, amount)++`] -* {xref-ERC20-transferFrom-address-address-uint256-}[`++transferFrom(sender, recipient, amount)++`] +* {xref-ERC20-transferFrom-address-address-uint256-}[`++transferFrom(from, to, amount)++`] * {xref-ERC20-increaseAllowance-address-uint256-}[`++increaseAllowance(spender, addedValue)++`] * {xref-ERC20-decreaseAllowance-address-uint256-}[`++decreaseAllowance(spender, subtractedValue)++`] -* {xref-ERC20-_transfer-address-address-uint256-}[`++_transfer(sender, recipient, amount)++`] +* {xref-ERC20-_transfer-address-address-uint256-}[`++_transfer(from, to, amount)++`] * {xref-ERC20-_mint-address-uint256-}[`++_mint(account, amount)++`] * {xref-ERC20-_burn-address-uint256-}[`++_burn(account, amount)++`] * {xref-ERC20-_approve-address-address-uint256-}[`++_approve(owner, spender, amount)++`] +* {xref-ERC20-_spendAllowance-address-address-uint256-}[`++_spendAllowance(owner, spender, amount)++`] * {xref-ERC20-_beforeTokenTransfer-address-address-uint256-}[`++_beforeTokenTransfer(from, to, amount)++`] * {xref-ERC20-_afterTokenTransfer-address-address-uint256-}[`++_afterTokenTransfer(from, to, amount)++`] @@ -2434,7 +2590,7 @@ Requirements: [.contract] [[ERC20Capped]] -=== `++ERC20Capped++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC20/extensions/ERC20Capped.sol[{github-icon},role=heading-link] +=== `++ERC20Capped++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC20/extensions/ERC20Capped.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2458,15 +2614,16 @@ Extension of {ERC20} that adds a cap to the supply of tokens. * {xref-ERC20-decimals--}[`++decimals()++`] * {xref-ERC20-totalSupply--}[`++totalSupply()++`] * {xref-ERC20-balanceOf-address-}[`++balanceOf(account)++`] -* {xref-ERC20-transfer-address-uint256-}[`++transfer(recipient, amount)++`] +* {xref-ERC20-transfer-address-uint256-}[`++transfer(to, amount)++`] * {xref-ERC20-allowance-address-address-}[`++allowance(owner, spender)++`] * {xref-ERC20-approve-address-uint256-}[`++approve(spender, amount)++`] -* {xref-ERC20-transferFrom-address-address-uint256-}[`++transferFrom(sender, recipient, amount)++`] +* {xref-ERC20-transferFrom-address-address-uint256-}[`++transferFrom(from, to, amount)++`] * {xref-ERC20-increaseAllowance-address-uint256-}[`++increaseAllowance(spender, addedValue)++`] * {xref-ERC20-decreaseAllowance-address-uint256-}[`++decreaseAllowance(spender, subtractedValue)++`] -* {xref-ERC20-_transfer-address-address-uint256-}[`++_transfer(sender, recipient, amount)++`] +* {xref-ERC20-_transfer-address-address-uint256-}[`++_transfer(from, to, amount)++`] * {xref-ERC20-_burn-address-uint256-}[`++_burn(account, amount)++`] * {xref-ERC20-_approve-address-address-uint256-}[`++_approve(owner, spender, amount)++`] +* {xref-ERC20-_spendAllowance-address-address-uint256-}[`++_spendAllowance(owner, spender, amount)++`] * {xref-ERC20-_beforeTokenTransfer-address-address-uint256-}[`++_beforeTokenTransfer(from, to, amount)++`] * {xref-ERC20-_afterTokenTransfer-address-address-uint256-}[`++_afterTokenTransfer(from, to, amount)++`] @@ -2526,7 +2683,7 @@ See {ERC20-_mint}. [.contract] [[ERC20Pausable]] -=== `++ERC20Pausable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC20/extensions/ERC20Pausable.sol[{github-icon},role=heading-link] +=== `++ERC20Pausable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC20/extensions/ERC20Pausable.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2559,16 +2716,17 @@ event of a large bug. * {xref-ERC20-decimals--}[`++decimals()++`] * {xref-ERC20-totalSupply--}[`++totalSupply()++`] * {xref-ERC20-balanceOf-address-}[`++balanceOf(account)++`] -* {xref-ERC20-transfer-address-uint256-}[`++transfer(recipient, amount)++`] +* {xref-ERC20-transfer-address-uint256-}[`++transfer(to, amount)++`] * {xref-ERC20-allowance-address-address-}[`++allowance(owner, spender)++`] * {xref-ERC20-approve-address-uint256-}[`++approve(spender, amount)++`] -* {xref-ERC20-transferFrom-address-address-uint256-}[`++transferFrom(sender, recipient, amount)++`] +* {xref-ERC20-transferFrom-address-address-uint256-}[`++transferFrom(from, to, amount)++`] * {xref-ERC20-increaseAllowance-address-uint256-}[`++increaseAllowance(spender, addedValue)++`] * {xref-ERC20-decreaseAllowance-address-uint256-}[`++decreaseAllowance(spender, subtractedValue)++`] -* {xref-ERC20-_transfer-address-address-uint256-}[`++_transfer(sender, recipient, amount)++`] +* {xref-ERC20-_transfer-address-address-uint256-}[`++_transfer(from, to, amount)++`] * {xref-ERC20-_mint-address-uint256-}[`++_mint(account, amount)++`] * {xref-ERC20-_burn-address-uint256-}[`++_burn(account, amount)++`] * {xref-ERC20-_approve-address-address-uint256-}[`++_approve(owner, spender, amount)++`] +* {xref-ERC20-_spendAllowance-address-address-uint256-}[`++_spendAllowance(owner, spender, amount)++`] * {xref-ERC20-_afterTokenTransfer-address-address-uint256-}[`++_afterTokenTransfer(from, to, amount)++`] [.contract-subindex-inherited] @@ -2629,7 +2787,7 @@ Requirements: [.contract] [[ERC20Snapshot]] -=== `++ERC20Snapshot++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC20/extensions/ERC20Snapshot.sol[{github-icon},role=heading-link] +=== `++ERC20Snapshot++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC20/extensions/ERC20Snapshot.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2684,16 +2842,17 @@ transfers will have normal cost until the next snapshot, and so on. * {xref-ERC20-decimals--}[`++decimals()++`] * {xref-ERC20-totalSupply--}[`++totalSupply()++`] * {xref-ERC20-balanceOf-address-}[`++balanceOf(account)++`] -* {xref-ERC20-transfer-address-uint256-}[`++transfer(recipient, amount)++`] +* {xref-ERC20-transfer-address-uint256-}[`++transfer(to, amount)++`] * {xref-ERC20-allowance-address-address-}[`++allowance(owner, spender)++`] * {xref-ERC20-approve-address-uint256-}[`++approve(spender, amount)++`] -* {xref-ERC20-transferFrom-address-address-uint256-}[`++transferFrom(sender, recipient, amount)++`] +* {xref-ERC20-transferFrom-address-address-uint256-}[`++transferFrom(from, to, amount)++`] * {xref-ERC20-increaseAllowance-address-uint256-}[`++increaseAllowance(spender, addedValue)++`] * {xref-ERC20-decreaseAllowance-address-uint256-}[`++decreaseAllowance(spender, subtractedValue)++`] -* {xref-ERC20-_transfer-address-address-uint256-}[`++_transfer(sender, recipient, amount)++`] +* {xref-ERC20-_transfer-address-address-uint256-}[`++_transfer(from, to, amount)++`] * {xref-ERC20-_mint-address-uint256-}[`++_mint(account, amount)++`] * {xref-ERC20-_burn-address-uint256-}[`++_burn(account, amount)++`] * {xref-ERC20-_approve-address-address-uint256-}[`++_approve(owner, spender, amount)++`] +* {xref-ERC20-_spendAllowance-address-address-uint256-}[`++_spendAllowance(owner, spender, amount)++`] * {xref-ERC20-_afterTokenTransfer-address-address-uint256-}[`++_afterTokenTransfer(from, to, amount)++`] [.contract-subindex-inherited] @@ -2797,13 +2956,11 @@ Emitted by {_snapshot} when a snapshot identified by `id` is created. :_burn: pass:normal[xref:#ERC20Votes-_burn-address-uint256-[`++_burn++`]] :_afterTokenTransfer: pass:normal[xref:#ERC20Votes-_afterTokenTransfer-address-address-uint256-[`++_afterTokenTransfer++`]] :_delegate: pass:normal[xref:#ERC20Votes-_delegate-address-address-[`++_delegate++`]] -:DelegateChanged: pass:normal[xref:#ERC20Votes-DelegateChanged-address-address-address-[`++DelegateChanged++`]] -:DelegateVotesChanged: pass:normal[xref:#ERC20Votes-DelegateVotesChanged-address-uint256-uint256-[`++DelegateVotesChanged++`]] :Checkpoint: pass:normal[xref:#ERC20Votes-Checkpoint[`++Checkpoint++`]] [.contract] [[ERC20Votes]] -=== `++ERC20Votes++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC20/extensions/ERC20Votes.sol[{github-icon},role=heading-link] +=== `++ERC20Votes++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC20/extensions/ERC20Votes.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2865,14 +3022,15 @@ _Available since v4.2._ * {xref-ERC20-decimals--}[`++decimals()++`] * {xref-ERC20-totalSupply--}[`++totalSupply()++`] * {xref-ERC20-balanceOf-address-}[`++balanceOf(account)++`] -* {xref-ERC20-transfer-address-uint256-}[`++transfer(recipient, amount)++`] +* {xref-ERC20-transfer-address-uint256-}[`++transfer(to, amount)++`] * {xref-ERC20-allowance-address-address-}[`++allowance(owner, spender)++`] * {xref-ERC20-approve-address-uint256-}[`++approve(spender, amount)++`] -* {xref-ERC20-transferFrom-address-address-uint256-}[`++transferFrom(sender, recipient, amount)++`] +* {xref-ERC20-transferFrom-address-address-uint256-}[`++transferFrom(from, to, amount)++`] * {xref-ERC20-increaseAllowance-address-uint256-}[`++increaseAllowance(spender, addedValue)++`] * {xref-ERC20-decreaseAllowance-address-uint256-}[`++decreaseAllowance(spender, subtractedValue)++`] -* {xref-ERC20-_transfer-address-address-uint256-}[`++_transfer(sender, recipient, amount)++`] +* {xref-ERC20-_transfer-address-address-uint256-}[`++_transfer(from, to, amount)++`] * {xref-ERC20-_approve-address-address-uint256-}[`++_approve(owner, spender, amount)++`] +* {xref-ERC20-_spendAllowance-address-address-uint256-}[`++_spendAllowance(owner, spender, amount)++`] * {xref-ERC20-_beforeTokenTransfer-address-address-uint256-}[`++_beforeTokenTransfer(from, to, amount)++`] [.contract-subindex-inherited] @@ -2881,13 +3039,14 @@ _Available since v4.2._ [.contract-subindex-inherited] .IERC20 +[.contract-subindex-inherited] +.IVotes + -- [.contract-index] .Events -- -* {xref-ERC20Votes-DelegateChanged-address-address-address-}[`++DelegateChanged(delegator, fromDelegate, toDelegate)++`] -* {xref-ERC20Votes-DelegateVotesChanged-address-uint256-uint256-}[`++DelegateVotesChanged(delegate, previousBalance, newBalance)++`] [.contract-subindex-inherited] .ERC20Permit @@ -2912,6 +3071,11 @@ _Available since v4.2._ [.contract-subindex-inherited] .Context +[.contract-subindex-inherited] +.IVotes +* {xref-IVotes-DelegateChanged-address-address-address-}[`++DelegateChanged(delegator, fromDelegate, toDelegate)++`] +* {xref-IVotes-DelegateVotesChanged-address-uint256-uint256-}[`++DelegateVotesChanged(delegate, previousBalance, newBalance)++`] + -- @@ -3007,18 +3171,6 @@ Change delegation for `delegator` to `delegatee`. Emits events {DelegateChanged} and {DelegateVotesChanged}. -[.contract-item] -[[ERC20Votes-DelegateChanged-address-address-address-]] -==== `[.contract-item-name]#++DelegateChanged++#++(address delegator, address fromDelegate, address toDelegate)++` [.item-kind]#event# - -Emitted when an account changes their delegate. - -[.contract-item] -[[ERC20Votes-DelegateVotesChanged-address-uint256-uint256-]] -==== `[.contract-item-name]#++DelegateVotesChanged++#++(address delegate, uint256 previousBalance, uint256 newBalance)++` [.item-kind]#event# - -Emitted when a token transfer or delegate change results in changes to an account's voting power. - :ERC20VotesComp: pass:normal[xref:#ERC20VotesComp[`++ERC20VotesComp++`]] @@ -3028,7 +3180,7 @@ Emitted when a token transfer or delegate change results in changes to an accoun [.contract] [[ERC20VotesComp]] -=== `++ERC20VotesComp++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC20/extensions/ERC20VotesComp.sol[{github-icon},role=heading-link] +=== `++ERC20VotesComp++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC20/extensions/ERC20VotesComp.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -3097,14 +3249,15 @@ _Available since v4.2._ * {xref-ERC20-decimals--}[`++decimals()++`] * {xref-ERC20-totalSupply--}[`++totalSupply()++`] * {xref-ERC20-balanceOf-address-}[`++balanceOf(account)++`] -* {xref-ERC20-transfer-address-uint256-}[`++transfer(recipient, amount)++`] +* {xref-ERC20-transfer-address-uint256-}[`++transfer(to, amount)++`] * {xref-ERC20-allowance-address-address-}[`++allowance(owner, spender)++`] * {xref-ERC20-approve-address-uint256-}[`++approve(spender, amount)++`] -* {xref-ERC20-transferFrom-address-address-uint256-}[`++transferFrom(sender, recipient, amount)++`] +* {xref-ERC20-transferFrom-address-address-uint256-}[`++transferFrom(from, to, amount)++`] * {xref-ERC20-increaseAllowance-address-uint256-}[`++increaseAllowance(spender, addedValue)++`] * {xref-ERC20-decreaseAllowance-address-uint256-}[`++decreaseAllowance(spender, subtractedValue)++`] -* {xref-ERC20-_transfer-address-address-uint256-}[`++_transfer(sender, recipient, amount)++`] +* {xref-ERC20-_transfer-address-address-uint256-}[`++_transfer(from, to, amount)++`] * {xref-ERC20-_approve-address-address-uint256-}[`++_approve(owner, spender, amount)++`] +* {xref-ERC20-_spendAllowance-address-address-uint256-}[`++_spendAllowance(owner, spender, amount)++`] * {xref-ERC20-_beforeTokenTransfer-address-address-uint256-}[`++_beforeTokenTransfer(from, to, amount)++`] [.contract-subindex-inherited] @@ -3113,6 +3266,9 @@ _Available since v4.2._ [.contract-subindex-inherited] .IERC20 +[.contract-subindex-inherited] +.IVotes + -- [.contract-index] @@ -3121,8 +3277,6 @@ _Available since v4.2._ [.contract-subindex-inherited] .ERC20Votes -* {xref-ERC20Votes-DelegateChanged-address-address-address-}[`++DelegateChanged(delegator, fromDelegate, toDelegate)++`] -* {xref-ERC20Votes-DelegateVotesChanged-address-uint256-uint256-}[`++DelegateVotesChanged(delegate, previousBalance, newBalance)++`] [.contract-subindex-inherited] .ERC20Permit @@ -3147,6 +3301,11 @@ _Available since v4.2._ [.contract-subindex-inherited] .Context +[.contract-subindex-inherited] +.IVotes +* {xref-IVotes-DelegateChanged-address-address-address-}[`++DelegateChanged(delegator, fromDelegate, toDelegate)++`] +* {xref-IVotes-DelegateVotesChanged-address-uint256-uint256-}[`++DelegateVotesChanged(delegate, previousBalance, newBalance)++`] + -- @@ -3180,7 +3339,7 @@ Maximum token supply. Reduced to `type(uint96).max` (2^96^ - 1) to fit COMP inte [.contract] [[ERC20Wrapper]] -=== `++ERC20Wrapper++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC20/extensions/ERC20Wrapper.sol[{github-icon},role=heading-link] +=== `++ERC20Wrapper++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC20/extensions/ERC20Wrapper.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -3211,16 +3370,17 @@ _Available since v4.2._ * {xref-ERC20-decimals--}[`++decimals()++`] * {xref-ERC20-totalSupply--}[`++totalSupply()++`] * {xref-ERC20-balanceOf-address-}[`++balanceOf(account)++`] -* {xref-ERC20-transfer-address-uint256-}[`++transfer(recipient, amount)++`] +* {xref-ERC20-transfer-address-uint256-}[`++transfer(to, amount)++`] * {xref-ERC20-allowance-address-address-}[`++allowance(owner, spender)++`] * {xref-ERC20-approve-address-uint256-}[`++approve(spender, amount)++`] -* {xref-ERC20-transferFrom-address-address-uint256-}[`++transferFrom(sender, recipient, amount)++`] +* {xref-ERC20-transferFrom-address-address-uint256-}[`++transferFrom(from, to, amount)++`] * {xref-ERC20-increaseAllowance-address-uint256-}[`++increaseAllowance(spender, addedValue)++`] * {xref-ERC20-decreaseAllowance-address-uint256-}[`++decreaseAllowance(spender, subtractedValue)++`] -* {xref-ERC20-_transfer-address-address-uint256-}[`++_transfer(sender, recipient, amount)++`] +* {xref-ERC20-_transfer-address-address-uint256-}[`++_transfer(from, to, amount)++`] * {xref-ERC20-_mint-address-uint256-}[`++_mint(account, amount)++`] * {xref-ERC20-_burn-address-uint256-}[`++_burn(account, amount)++`] * {xref-ERC20-_approve-address-address-uint256-}[`++_approve(owner, spender, amount)++`] +* {xref-ERC20-_spendAllowance-address-address-uint256-}[`++_spendAllowance(owner, spender, amount)++`] * {xref-ERC20-_beforeTokenTransfer-address-address-uint256-}[`++_beforeTokenTransfer(from, to, amount)++`] * {xref-ERC20-_afterTokenTransfer-address-address-uint256-}[`++_afterTokenTransfer(from, to, amount)++`] @@ -3288,7 +3448,7 @@ function that can be exposed with access control if desired. [.contract] [[ERC20FlashMint]] -=== `++ERC20FlashMint++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC20/extensions/ERC20FlashMint.sol[{github-icon},role=heading-link] +=== `++ERC20FlashMint++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC20/extensions/ERC20FlashMint.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -3322,16 +3482,17 @@ _Available since v4.1._ * {xref-ERC20-decimals--}[`++decimals()++`] * {xref-ERC20-totalSupply--}[`++totalSupply()++`] * {xref-ERC20-balanceOf-address-}[`++balanceOf(account)++`] -* {xref-ERC20-transfer-address-uint256-}[`++transfer(recipient, amount)++`] +* {xref-ERC20-transfer-address-uint256-}[`++transfer(to, amount)++`] * {xref-ERC20-allowance-address-address-}[`++allowance(owner, spender)++`] * {xref-ERC20-approve-address-uint256-}[`++approve(spender, amount)++`] -* {xref-ERC20-transferFrom-address-address-uint256-}[`++transferFrom(sender, recipient, amount)++`] +* {xref-ERC20-transferFrom-address-address-uint256-}[`++transferFrom(from, to, amount)++`] * {xref-ERC20-increaseAllowance-address-uint256-}[`++increaseAllowance(spender, addedValue)++`] * {xref-ERC20-decreaseAllowance-address-uint256-}[`++decreaseAllowance(spender, subtractedValue)++`] -* {xref-ERC20-_transfer-address-address-uint256-}[`++_transfer(sender, recipient, amount)++`] +* {xref-ERC20-_transfer-address-address-uint256-}[`++_transfer(from, to, amount)++`] * {xref-ERC20-_mint-address-uint256-}[`++_mint(account, amount)++`] * {xref-ERC20-_burn-address-uint256-}[`++_burn(account, amount)++`] * {xref-ERC20-_approve-address-address-uint256-}[`++_approve(owner, spender, amount)++`] +* {xref-ERC20-_spendAllowance-address-address-uint256-}[`++_spendAllowance(owner, spender, amount)++`] * {xref-ERC20-_beforeTokenTransfer-address-address-uint256-}[`++_beforeTokenTransfer(from, to, amount)++`] * {xref-ERC20-_afterTokenTransfer-address-address-uint256-}[`++_afterTokenTransfer(from, to, amount)++`] @@ -3410,7 +3571,7 @@ The following EIPs are still in Draft status. Due to their nature as drafts, the [.contract] [[ERC20Permit]] -=== `++ERC20Permit++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC20/extensions/draft-ERC20Permit.sol[{github-icon},role=heading-link] +=== `++ERC20Permit++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC20/extensions/draft-ERC20Permit.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -3451,16 +3612,17 @@ _Available since v3.4._ * {xref-ERC20-decimals--}[`++decimals()++`] * {xref-ERC20-totalSupply--}[`++totalSupply()++`] * {xref-ERC20-balanceOf-address-}[`++balanceOf(account)++`] -* {xref-ERC20-transfer-address-uint256-}[`++transfer(recipient, amount)++`] +* {xref-ERC20-transfer-address-uint256-}[`++transfer(to, amount)++`] * {xref-ERC20-allowance-address-address-}[`++allowance(owner, spender)++`] * {xref-ERC20-approve-address-uint256-}[`++approve(spender, amount)++`] -* {xref-ERC20-transferFrom-address-address-uint256-}[`++transferFrom(sender, recipient, amount)++`] +* {xref-ERC20-transferFrom-address-address-uint256-}[`++transferFrom(from, to, amount)++`] * {xref-ERC20-increaseAllowance-address-uint256-}[`++increaseAllowance(spender, addedValue)++`] * {xref-ERC20-decreaseAllowance-address-uint256-}[`++decreaseAllowance(spender, subtractedValue)++`] -* {xref-ERC20-_transfer-address-address-uint256-}[`++_transfer(sender, recipient, amount)++`] +* {xref-ERC20-_transfer-address-address-uint256-}[`++_transfer(from, to, amount)++`] * {xref-ERC20-_mint-address-uint256-}[`++_mint(account, amount)++`] * {xref-ERC20-_burn-address-uint256-}[`++_burn(account, amount)++`] * {xref-ERC20-_approve-address-address-uint256-}[`++_approve(owner, spender, amount)++`] +* {xref-ERC20-_spendAllowance-address-address-uint256-}[`++_spendAllowance(owner, spender, amount)++`] * {xref-ERC20-_beforeTokenTransfer-address-address-uint256-}[`++_beforeTokenTransfer(from, to, amount)++`] * {xref-ERC20-_afterTokenTransfer-address-address-uint256-}[`++_afterTokenTransfer(from, to, amount)++`] @@ -3540,319 +3702,6 @@ _Available since v4.1._ These contracts are preconfigured combinations of the above features. They can be used through inheritance or as models to copy and paste their source code. -:ERC20PresetMinterPauser: pass:normal[xref:#ERC20PresetMinterPauser[`++ERC20PresetMinterPauser++`]] -:MINTER_ROLE: pass:normal[xref:#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`++MINTER_ROLE++`]] -:PAUSER_ROLE: pass:normal[xref:#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`++PAUSER_ROLE++`]] -:constructor: pass:normal[xref:#ERC20PresetMinterPauser-constructor-string-string-[`++constructor++`]] -:mint: pass:normal[xref:#ERC20PresetMinterPauser-mint-address-uint256-[`++mint++`]] -:pause: pass:normal[xref:#ERC20PresetMinterPauser-pause--[`++pause++`]] -:unpause: pass:normal[xref:#ERC20PresetMinterPauser-unpause--[`++unpause++`]] -:_beforeTokenTransfer: pass:normal[xref:#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`++_beforeTokenTransfer++`]] - -[.contract] -[[ERC20PresetMinterPauser]] -=== `++ERC20PresetMinterPauser++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol[{github-icon},role=heading-link] - -[.hljs-theme-light.nopadding] -```solidity -import "@openzeppelin/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol"; -``` - -{ERC20} token, including: - - - ability for holders to burn (destroy) their tokens - - a minter role that allows for token minting (creation) - - a pauser role that allows to stop all token transfers - -This contract uses {AccessControl} to lock permissioned functions using the -different roles - head to its documentation for details. - -The account that deploys the contract will be granted the minter and pauser -roles, as well as the default admin role, which will let it grant both minter -and pauser roles to other accounts. - - -[.contract-index] -.Functions --- -* {xref-ERC20PresetMinterPauser-constructor-string-string-}[`++constructor(name, symbol)++`] -* {xref-ERC20PresetMinterPauser-mint-address-uint256-}[`++mint(to, amount)++`] -* {xref-ERC20PresetMinterPauser-pause--}[`++pause()++`] -* {xref-ERC20PresetMinterPauser-unpause--}[`++unpause()++`] -* {xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-}[`++_beforeTokenTransfer(from, to, amount)++`] - -[.contract-subindex-inherited] -.ERC20Pausable - -[.contract-subindex-inherited] -.Pausable -* {xref-Pausable-paused--}[`++paused()++`] -* {xref-Pausable-_pause--}[`++_pause()++`] -* {xref-Pausable-_unpause--}[`++_unpause()++`] - -[.contract-subindex-inherited] -.ERC20Burnable -* {xref-ERC20Burnable-burn-uint256-}[`++burn(amount)++`] -* {xref-ERC20Burnable-burnFrom-address-uint256-}[`++burnFrom(account, amount)++`] - -[.contract-subindex-inherited] -.ERC20 -* {xref-ERC20-name--}[`++name()++`] -* {xref-ERC20-symbol--}[`++symbol()++`] -* {xref-ERC20-decimals--}[`++decimals()++`] -* {xref-ERC20-totalSupply--}[`++totalSupply()++`] -* {xref-ERC20-balanceOf-address-}[`++balanceOf(account)++`] -* {xref-ERC20-transfer-address-uint256-}[`++transfer(recipient, amount)++`] -* {xref-ERC20-allowance-address-address-}[`++allowance(owner, spender)++`] -* {xref-ERC20-approve-address-uint256-}[`++approve(spender, amount)++`] -* {xref-ERC20-transferFrom-address-address-uint256-}[`++transferFrom(sender, recipient, amount)++`] -* {xref-ERC20-increaseAllowance-address-uint256-}[`++increaseAllowance(spender, addedValue)++`] -* {xref-ERC20-decreaseAllowance-address-uint256-}[`++decreaseAllowance(spender, subtractedValue)++`] -* {xref-ERC20-_transfer-address-address-uint256-}[`++_transfer(sender, recipient, amount)++`] -* {xref-ERC20-_mint-address-uint256-}[`++_mint(account, amount)++`] -* {xref-ERC20-_burn-address-uint256-}[`++_burn(account, amount)++`] -* {xref-ERC20-_approve-address-address-uint256-}[`++_approve(owner, spender, amount)++`] -* {xref-ERC20-_afterTokenTransfer-address-address-uint256-}[`++_afterTokenTransfer(from, to, amount)++`] - -[.contract-subindex-inherited] -.IERC20Metadata - -[.contract-subindex-inherited] -.IERC20 - -[.contract-subindex-inherited] -.AccessControlEnumerable -* {xref-AccessControlEnumerable-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`] -* {xref-AccessControlEnumerable-getRoleMember-bytes32-uint256-}[`++getRoleMember(role, index)++`] -* {xref-AccessControlEnumerable-getRoleMemberCount-bytes32-}[`++getRoleMemberCount(role)++`] -* {xref-AccessControlEnumerable-_grantRole-bytes32-address-}[`++_grantRole(role, account)++`] -* {xref-AccessControlEnumerable-_revokeRole-bytes32-address-}[`++_revokeRole(role, account)++`] - -[.contract-subindex-inherited] -.AccessControl -* {xref-AccessControl-hasRole-bytes32-address-}[`++hasRole(role, account)++`] -* {xref-AccessControl-_checkRole-bytes32-address-}[`++_checkRole(role, account)++`] -* {xref-AccessControl-getRoleAdmin-bytes32-}[`++getRoleAdmin(role)++`] -* {xref-AccessControl-grantRole-bytes32-address-}[`++grantRole(role, account)++`] -* {xref-AccessControl-revokeRole-bytes32-address-}[`++revokeRole(role, account)++`] -* {xref-AccessControl-renounceRole-bytes32-address-}[`++renounceRole(role, account)++`] -* {xref-AccessControl-_setupRole-bytes32-address-}[`++_setupRole(role, account)++`] -* {xref-AccessControl-_setRoleAdmin-bytes32-bytes32-}[`++_setRoleAdmin(role, adminRole)++`] - -[.contract-subindex-inherited] -.ERC165 - -[.contract-subindex-inherited] -.IERC165 - -[.contract-subindex-inherited] -.IAccessControlEnumerable - -[.contract-subindex-inherited] -.IAccessControl - --- - -[.contract-index] -.Events --- - -[.contract-subindex-inherited] -.ERC20Pausable - -[.contract-subindex-inherited] -.Pausable -* {xref-Pausable-Paused-address-}[`++Paused(account)++`] -* {xref-Pausable-Unpaused-address-}[`++Unpaused(account)++`] - -[.contract-subindex-inherited] -.ERC20Burnable - -[.contract-subindex-inherited] -.ERC20 - -[.contract-subindex-inherited] -.IERC20Metadata - -[.contract-subindex-inherited] -.IERC20 -* {xref-IERC20-Transfer-address-address-uint256-}[`++Transfer(from, to, value)++`] -* {xref-IERC20-Approval-address-address-uint256-}[`++Approval(owner, spender, value)++`] - -[.contract-subindex-inherited] -.AccessControlEnumerable - -[.contract-subindex-inherited] -.AccessControl - -[.contract-subindex-inherited] -.ERC165 - -[.contract-subindex-inherited] -.IERC165 - -[.contract-subindex-inherited] -.IAccessControlEnumerable - -[.contract-subindex-inherited] -.IAccessControl -* {xref-IAccessControl-RoleAdminChanged-bytes32-bytes32-bytes32-}[`++RoleAdminChanged(role, previousAdminRole, newAdminRole)++`] -* {xref-IAccessControl-RoleGranted-bytes32-address-address-}[`++RoleGranted(role, account, sender)++`] -* {xref-IAccessControl-RoleRevoked-bytes32-address-address-}[`++RoleRevoked(role, account, sender)++`] - -[.contract-subindex-inherited] -.Context - --- - - -[.contract-item] -[[ERC20PresetMinterPauser-constructor-string-string-]] -==== `[.contract-item-name]#++constructor++#++(string name, string symbol)++` [.item-kind]#public# - -Grants `DEFAULT_ADMIN_ROLE`, `MINTER_ROLE` and `PAUSER_ROLE` to the -account that deploys the contract. - -See {ERC20-constructor}. - -[.contract-item] -[[ERC20PresetMinterPauser-mint-address-uint256-]] -==== `[.contract-item-name]#++mint++#++(address to, uint256 amount)++` [.item-kind]#public# - -Creates `amount` new tokens for `to`. - -See {ERC20-_mint}. - -Requirements: - -- the caller must have the `MINTER_ROLE`. - -[.contract-item] -[[ERC20PresetMinterPauser-pause--]] -==== `[.contract-item-name]#++pause++#++()++` [.item-kind]#public# - -Pauses all token transfers. - -See {ERC20Pausable} and {Pausable-_pause}. - -Requirements: - -- the caller must have the `PAUSER_ROLE`. - -[.contract-item] -[[ERC20PresetMinterPauser-unpause--]] -==== `[.contract-item-name]#++unpause++#++()++` [.item-kind]#public# - -Unpauses all token transfers. - -See {ERC20Pausable} and {Pausable-_unpause}. - -Requirements: - -- the caller must have the `PAUSER_ROLE`. - -[.contract-item] -[[ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-]] -==== `[.contract-item-name]#++_beforeTokenTransfer++#++(address from, address to, uint256 amount)++` [.item-kind]#internal# - - - - - - -:ERC20PresetFixedSupply: pass:normal[xref:#ERC20PresetFixedSupply[`++ERC20PresetFixedSupply++`]] -:constructor: pass:normal[xref:#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`++constructor++`]] - -[.contract] -[[ERC20PresetFixedSupply]] -=== `++ERC20PresetFixedSupply++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC20/presets/ERC20PresetFixedSupply.sol[{github-icon},role=heading-link] - -[.hljs-theme-light.nopadding] -```solidity -import "@openzeppelin/contracts/token/ERC20/presets/ERC20PresetFixedSupply.sol"; -``` - -{ERC20} token, including: - - - Preminted initial supply - - Ability for holders to burn (destroy) their tokens - - No access control mechanism (for minting/pausing) and hence no governance - -This contract uses {ERC20Burnable} to include burn capabilities - head to -its documentation for details. - -_Available since v3.4._ - - -[.contract-index] -.Functions --- -* {xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-}[`++constructor(name, symbol, initialSupply, owner)++`] - -[.contract-subindex-inherited] -.ERC20Burnable -* {xref-ERC20Burnable-burn-uint256-}[`++burn(amount)++`] -* {xref-ERC20Burnable-burnFrom-address-uint256-}[`++burnFrom(account, amount)++`] - -[.contract-subindex-inherited] -.ERC20 -* {xref-ERC20-name--}[`++name()++`] -* {xref-ERC20-symbol--}[`++symbol()++`] -* {xref-ERC20-decimals--}[`++decimals()++`] -* {xref-ERC20-totalSupply--}[`++totalSupply()++`] -* {xref-ERC20-balanceOf-address-}[`++balanceOf(account)++`] -* {xref-ERC20-transfer-address-uint256-}[`++transfer(recipient, amount)++`] -* {xref-ERC20-allowance-address-address-}[`++allowance(owner, spender)++`] -* {xref-ERC20-approve-address-uint256-}[`++approve(spender, amount)++`] -* {xref-ERC20-transferFrom-address-address-uint256-}[`++transferFrom(sender, recipient, amount)++`] -* {xref-ERC20-increaseAllowance-address-uint256-}[`++increaseAllowance(spender, addedValue)++`] -* {xref-ERC20-decreaseAllowance-address-uint256-}[`++decreaseAllowance(spender, subtractedValue)++`] -* {xref-ERC20-_transfer-address-address-uint256-}[`++_transfer(sender, recipient, amount)++`] -* {xref-ERC20-_mint-address-uint256-}[`++_mint(account, amount)++`] -* {xref-ERC20-_burn-address-uint256-}[`++_burn(account, amount)++`] -* {xref-ERC20-_approve-address-address-uint256-}[`++_approve(owner, spender, amount)++`] -* {xref-ERC20-_beforeTokenTransfer-address-address-uint256-}[`++_beforeTokenTransfer(from, to, amount)++`] -* {xref-ERC20-_afterTokenTransfer-address-address-uint256-}[`++_afterTokenTransfer(from, to, amount)++`] - -[.contract-subindex-inherited] -.IERC20Metadata - -[.contract-subindex-inherited] -.IERC20 - --- - -[.contract-index] -.Events --- - -[.contract-subindex-inherited] -.ERC20Burnable - -[.contract-subindex-inherited] -.ERC20 - -[.contract-subindex-inherited] -.IERC20Metadata - -[.contract-subindex-inherited] -.IERC20 -* {xref-IERC20-Transfer-address-address-uint256-}[`++Transfer(from, to, value)++`] -* {xref-IERC20-Approval-address-address-uint256-}[`++Approval(owner, spender, value)++`] - -[.contract-subindex-inherited] -.Context - --- - - -[.contract-item] -[[ERC20PresetFixedSupply-constructor-string-string-uint256-address-]] -==== `[.contract-item-name]#++constructor++#++(string name, string symbol, uint256 initialSupply, address owner)++` [.item-kind]#public# - -Mints `initialSupply` amount of token and transfers them to `owner`. - -See {ERC20-constructor}. @@ -3868,7 +3717,7 @@ See {ERC20-constructor}. [.contract] [[SafeERC20]] -=== `++SafeERC20++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC20/utils/SafeERC20.sol[{github-icon},role=heading-link] +=== `++SafeERC20++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC20/utils/SafeERC20.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -3942,7 +3791,7 @@ Whenever possible, use {safeIncreaseAllowance} and [.contract] [[TokenTimelock]] -=== `++TokenTimelock++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC20/utils/TokenTimelock.sol[{github-icon},role=heading-link] +=== `++TokenTimelock++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC20/utils/TokenTimelock.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -3973,31 +3822,34 @@ after 1 year". [[TokenTimelock-constructor-contract-IERC20-address-uint256-]] ==== `[.contract-item-name]#++constructor++#++(contract IERC20 token_, address beneficiary_, uint256 releaseTime_)++` [.item-kind]#public# - +Deploys a timelock instance that is able to hold the token specified, and will only release it to +`beneficiary_` when {release} is invoked after `releaseTime_`. The release time is specified as a Unix timestamp +(in seconds). [.contract-item] [[TokenTimelock-token--]] ==== `[.contract-item-name]#++token++#++() → contract IERC20++` [.item-kind]#public# - +Returns the token being held. [.contract-item] [[TokenTimelock-beneficiary--]] ==== `[.contract-item-name]#++beneficiary++#++() → address++` [.item-kind]#public# - +Returns the beneficiary that will receive the tokens. [.contract-item] [[TokenTimelock-releaseTime--]] ==== `[.contract-item-name]#++releaseTime++#++() → uint256++` [.item-kind]#public# - +Returns the time when the tokens are released in seconds since Unix epoch (i.e. Unix timestamp). [.contract-item] [[TokenTimelock-release--]] ==== `[.contract-item-name]#++release++#++()++` [.item-kind]#public# - +Transfers tokens held by the timelock to the beneficiary. Will only succeed if invoked after the release +time. diff --git a/docs/modules/api/pages/token/ERC20/presets.md b/docs/modules/api/pages/token/ERC20/presets.md new file mode 100644 index 000000000..c321018c3 --- /dev/null +++ b/docs/modules/api/pages/token/ERC20/presets.md @@ -0,0 +1,1905 @@ +:github-icon: pass:[] + +:AccessControl: pass:normal[xref:access.adoc#AccessControl[`AccessControl`]] +:xref-AccessControl: xref:access.adoc#AccessControl +:AccessControl-onlyRole: pass:normal[xref:access.adoc#AccessControl-onlyRole-bytes32-[`AccessControl.onlyRole`]] +:xref-AccessControl-onlyRole-bytes32-: xref:access.adoc#AccessControl-onlyRole-bytes32- +:AccessControl-DEFAULT_ADMIN_ROLE: pass:normal[xref:access.adoc#AccessControl-DEFAULT_ADMIN_ROLE-bytes32[`AccessControl.DEFAULT_ADMIN_ROLE`]] +:xref-AccessControl-DEFAULT_ADMIN_ROLE-bytes32: xref:access.adoc#AccessControl-DEFAULT_ADMIN_ROLE-bytes32 +:AccessControl-supportsInterface: pass:normal[xref:access.adoc#AccessControl-supportsInterface-bytes4-[`AccessControl.supportsInterface`]] +:xref-AccessControl-supportsInterface-bytes4-: xref:access.adoc#AccessControl-supportsInterface-bytes4- +:AccessControl-hasRole: pass:normal[xref:access.adoc#AccessControl-hasRole-bytes32-address-[`AccessControl.hasRole`]] +:xref-AccessControl-hasRole-bytes32-address-: xref:access.adoc#AccessControl-hasRole-bytes32-address- +:AccessControl-_checkRole: pass:normal[xref:access.adoc#AccessControl-_checkRole-bytes32-address-[`AccessControl._checkRole`]] +:xref-AccessControl-_checkRole-bytes32-address-: xref:access.adoc#AccessControl-_checkRole-bytes32-address- +:AccessControl-getRoleAdmin: pass:normal[xref:access.adoc#AccessControl-getRoleAdmin-bytes32-[`AccessControl.getRoleAdmin`]] +:xref-AccessControl-getRoleAdmin-bytes32-: xref:access.adoc#AccessControl-getRoleAdmin-bytes32- +:AccessControl-grantRole: pass:normal[xref:access.adoc#AccessControl-grantRole-bytes32-address-[`AccessControl.grantRole`]] +:xref-AccessControl-grantRole-bytes32-address-: xref:access.adoc#AccessControl-grantRole-bytes32-address- +:AccessControl-revokeRole: pass:normal[xref:access.adoc#AccessControl-revokeRole-bytes32-address-[`AccessControl.revokeRole`]] +:xref-AccessControl-revokeRole-bytes32-address-: xref:access.adoc#AccessControl-revokeRole-bytes32-address- +:AccessControl-renounceRole: pass:normal[xref:access.adoc#AccessControl-renounceRole-bytes32-address-[`AccessControl.renounceRole`]] +:xref-AccessControl-renounceRole-bytes32-address-: xref:access.adoc#AccessControl-renounceRole-bytes32-address- +:AccessControl-_setupRole: pass:normal[xref:access.adoc#AccessControl-_setupRole-bytes32-address-[`AccessControl._setupRole`]] +:xref-AccessControl-_setupRole-bytes32-address-: xref:access.adoc#AccessControl-_setupRole-bytes32-address- +:AccessControl-_setRoleAdmin: pass:normal[xref:access.adoc#AccessControl-_setRoleAdmin-bytes32-bytes32-[`AccessControl._setRoleAdmin`]] +:xref-AccessControl-_setRoleAdmin-bytes32-bytes32-: xref:access.adoc#AccessControl-_setRoleAdmin-bytes32-bytes32- +:AccessControl-_grantRole: pass:normal[xref:access.adoc#AccessControl-_grantRole-bytes32-address-[`AccessControl._grantRole`]] +:xref-AccessControl-_grantRole-bytes32-address-: xref:access.adoc#AccessControl-_grantRole-bytes32-address- +:AccessControl-_revokeRole: pass:normal[xref:access.adoc#AccessControl-_revokeRole-bytes32-address-[`AccessControl._revokeRole`]] +:xref-AccessControl-_revokeRole-bytes32-address-: xref:access.adoc#AccessControl-_revokeRole-bytes32-address- +:AccessControl-RoleData: pass:normal[xref:access.adoc#AccessControl-RoleData[`AccessControl.RoleData`]] +:xref-AccessControl-RoleData: xref:access.adoc#AccessControl-RoleData +:AccessControlEnumerable: pass:normal[xref:access.adoc#AccessControlEnumerable[`AccessControlEnumerable`]] +:xref-AccessControlEnumerable: xref:access.adoc#AccessControlEnumerable +:AccessControlEnumerable-supportsInterface: pass:normal[xref:access.adoc#AccessControlEnumerable-supportsInterface-bytes4-[`AccessControlEnumerable.supportsInterface`]] +:xref-AccessControlEnumerable-supportsInterface-bytes4-: xref:access.adoc#AccessControlEnumerable-supportsInterface-bytes4- +:AccessControlEnumerable-getRoleMember: pass:normal[xref:access.adoc#AccessControlEnumerable-getRoleMember-bytes32-uint256-[`AccessControlEnumerable.getRoleMember`]] +:xref-AccessControlEnumerable-getRoleMember-bytes32-uint256-: xref:access.adoc#AccessControlEnumerable-getRoleMember-bytes32-uint256- +:AccessControlEnumerable-getRoleMemberCount: pass:normal[xref:access.adoc#AccessControlEnumerable-getRoleMemberCount-bytes32-[`AccessControlEnumerable.getRoleMemberCount`]] +:xref-AccessControlEnumerable-getRoleMemberCount-bytes32-: xref:access.adoc#AccessControlEnumerable-getRoleMemberCount-bytes32- +:AccessControlEnumerable-_grantRole: pass:normal[xref:access.adoc#AccessControlEnumerable-_grantRole-bytes32-address-[`AccessControlEnumerable._grantRole`]] +:xref-AccessControlEnumerable-_grantRole-bytes32-address-: xref:access.adoc#AccessControlEnumerable-_grantRole-bytes32-address- +:AccessControlEnumerable-_revokeRole: pass:normal[xref:access.adoc#AccessControlEnumerable-_revokeRole-bytes32-address-[`AccessControlEnumerable._revokeRole`]] +:xref-AccessControlEnumerable-_revokeRole-bytes32-address-: xref:access.adoc#AccessControlEnumerable-_revokeRole-bytes32-address- +:IAccessControl: pass:normal[xref:access.adoc#IAccessControl[`IAccessControl`]] +:xref-IAccessControl: xref:access.adoc#IAccessControl +:IAccessControl-hasRole: pass:normal[xref:access.adoc#IAccessControl-hasRole-bytes32-address-[`IAccessControl.hasRole`]] +:xref-IAccessControl-hasRole-bytes32-address-: xref:access.adoc#IAccessControl-hasRole-bytes32-address- +:IAccessControl-getRoleAdmin: pass:normal[xref:access.adoc#IAccessControl-getRoleAdmin-bytes32-[`IAccessControl.getRoleAdmin`]] +:xref-IAccessControl-getRoleAdmin-bytes32-: xref:access.adoc#IAccessControl-getRoleAdmin-bytes32- +:IAccessControl-grantRole: pass:normal[xref:access.adoc#IAccessControl-grantRole-bytes32-address-[`IAccessControl.grantRole`]] +:xref-IAccessControl-grantRole-bytes32-address-: xref:access.adoc#IAccessControl-grantRole-bytes32-address- +:IAccessControl-revokeRole: pass:normal[xref:access.adoc#IAccessControl-revokeRole-bytes32-address-[`IAccessControl.revokeRole`]] +:xref-IAccessControl-revokeRole-bytes32-address-: xref:access.adoc#IAccessControl-revokeRole-bytes32-address- +:IAccessControl-renounceRole: pass:normal[xref:access.adoc#IAccessControl-renounceRole-bytes32-address-[`IAccessControl.renounceRole`]] +:xref-IAccessControl-renounceRole-bytes32-address-: xref:access.adoc#IAccessControl-renounceRole-bytes32-address- +:IAccessControl-RoleAdminChanged: pass:normal[xref:access.adoc#IAccessControl-RoleAdminChanged-bytes32-bytes32-bytes32-[`IAccessControl.RoleAdminChanged`]] +:xref-IAccessControl-RoleAdminChanged-bytes32-bytes32-bytes32-: xref:access.adoc#IAccessControl-RoleAdminChanged-bytes32-bytes32-bytes32- +:IAccessControl-RoleGranted: pass:normal[xref:access.adoc#IAccessControl-RoleGranted-bytes32-address-address-[`IAccessControl.RoleGranted`]] +:xref-IAccessControl-RoleGranted-bytes32-address-address-: xref:access.adoc#IAccessControl-RoleGranted-bytes32-address-address- +:IAccessControl-RoleRevoked: pass:normal[xref:access.adoc#IAccessControl-RoleRevoked-bytes32-address-address-[`IAccessControl.RoleRevoked`]] +:xref-IAccessControl-RoleRevoked-bytes32-address-address-: xref:access.adoc#IAccessControl-RoleRevoked-bytes32-address-address- +:IAccessControlEnumerable: pass:normal[xref:access.adoc#IAccessControlEnumerable[`IAccessControlEnumerable`]] +:xref-IAccessControlEnumerable: xref:access.adoc#IAccessControlEnumerable +:IAccessControlEnumerable-getRoleMember: pass:normal[xref:access.adoc#IAccessControlEnumerable-getRoleMember-bytes32-uint256-[`IAccessControlEnumerable.getRoleMember`]] +:xref-IAccessControlEnumerable-getRoleMember-bytes32-uint256-: xref:access.adoc#IAccessControlEnumerable-getRoleMember-bytes32-uint256- +:IAccessControlEnumerable-getRoleMemberCount: pass:normal[xref:access.adoc#IAccessControlEnumerable-getRoleMemberCount-bytes32-[`IAccessControlEnumerable.getRoleMemberCount`]] +:xref-IAccessControlEnumerable-getRoleMemberCount-bytes32-: xref:access.adoc#IAccessControlEnumerable-getRoleMemberCount-bytes32- +:Ownable: pass:normal[xref:access.adoc#Ownable[`Ownable`]] +:xref-Ownable: xref:access.adoc#Ownable +:Ownable-onlyOwner: pass:normal[xref:access.adoc#Ownable-onlyOwner--[`Ownable.onlyOwner`]] +:xref-Ownable-onlyOwner--: xref:access.adoc#Ownable-onlyOwner-- +:Ownable-constructor: pass:normal[xref:access.adoc#Ownable-constructor--[`Ownable.constructor`]] +:xref-Ownable-constructor--: xref:access.adoc#Ownable-constructor-- +:Ownable-owner: pass:normal[xref:access.adoc#Ownable-owner--[`Ownable.owner`]] +:xref-Ownable-owner--: xref:access.adoc#Ownable-owner-- +:Ownable-renounceOwnership: pass:normal[xref:access.adoc#Ownable-renounceOwnership--[`Ownable.renounceOwnership`]] +:xref-Ownable-renounceOwnership--: xref:access.adoc#Ownable-renounceOwnership-- +:Ownable-transferOwnership: pass:normal[xref:access.adoc#Ownable-transferOwnership-address-[`Ownable.transferOwnership`]] +:xref-Ownable-transferOwnership-address-: xref:access.adoc#Ownable-transferOwnership-address- +:Ownable-_transferOwnership: pass:normal[xref:access.adoc#Ownable-_transferOwnership-address-[`Ownable._transferOwnership`]] +:xref-Ownable-_transferOwnership-address-: xref:access.adoc#Ownable-_transferOwnership-address- +:Ownable-OwnershipTransferred: pass:normal[xref:access.adoc#Ownable-OwnershipTransferred-address-address-[`Ownable.OwnershipTransferred`]] +:xref-Ownable-OwnershipTransferred-address-address-: xref:access.adoc#Ownable-OwnershipTransferred-address-address- +:PaymentSplitter: pass:normal[xref:finance.adoc#PaymentSplitter[`PaymentSplitter`]] +:xref-PaymentSplitter: xref:finance.adoc#PaymentSplitter +:PaymentSplitter-constructor: pass:normal[xref:finance.adoc#PaymentSplitter-constructor-address---uint256---[`PaymentSplitter.constructor`]] +:xref-PaymentSplitter-constructor-address---uint256---: xref:finance.adoc#PaymentSplitter-constructor-address---uint256--- +:PaymentSplitter-receive: pass:normal[xref:finance.adoc#PaymentSplitter-receive--[`PaymentSplitter.receive`]] +:xref-PaymentSplitter-receive--: xref:finance.adoc#PaymentSplitter-receive-- +:PaymentSplitter-totalShares: pass:normal[xref:finance.adoc#PaymentSplitter-totalShares--[`PaymentSplitter.totalShares`]] +:xref-PaymentSplitter-totalShares--: xref:finance.adoc#PaymentSplitter-totalShares-- +:PaymentSplitter-totalReleased: pass:normal[xref:finance.adoc#PaymentSplitter-totalReleased--[`PaymentSplitter.totalReleased`]] +:xref-PaymentSplitter-totalReleased--: xref:finance.adoc#PaymentSplitter-totalReleased-- +:PaymentSplitter-totalReleased: pass:normal[xref:finance.adoc#PaymentSplitter-totalReleased-contract-IERC20-[`PaymentSplitter.totalReleased`]] +:xref-PaymentSplitter-totalReleased-contract-IERC20-: xref:finance.adoc#PaymentSplitter-totalReleased-contract-IERC20- +:PaymentSplitter-shares: pass:normal[xref:finance.adoc#PaymentSplitter-shares-address-[`PaymentSplitter.shares`]] +:xref-PaymentSplitter-shares-address-: xref:finance.adoc#PaymentSplitter-shares-address- +:PaymentSplitter-released: pass:normal[xref:finance.adoc#PaymentSplitter-released-address-[`PaymentSplitter.released`]] +:xref-PaymentSplitter-released-address-: xref:finance.adoc#PaymentSplitter-released-address- +:PaymentSplitter-released: pass:normal[xref:finance.adoc#PaymentSplitter-released-contract-IERC20-address-[`PaymentSplitter.released`]] +:xref-PaymentSplitter-released-contract-IERC20-address-: xref:finance.adoc#PaymentSplitter-released-contract-IERC20-address- +:PaymentSplitter-payee: pass:normal[xref:finance.adoc#PaymentSplitter-payee-uint256-[`PaymentSplitter.payee`]] +:xref-PaymentSplitter-payee-uint256-: xref:finance.adoc#PaymentSplitter-payee-uint256- +:PaymentSplitter-release: pass:normal[xref:finance.adoc#PaymentSplitter-release-address-payable-[`PaymentSplitter.release`]] +:xref-PaymentSplitter-release-address-payable-: xref:finance.adoc#PaymentSplitter-release-address-payable- +:PaymentSplitter-release: pass:normal[xref:finance.adoc#PaymentSplitter-release-contract-IERC20-address-[`PaymentSplitter.release`]] +:xref-PaymentSplitter-release-contract-IERC20-address-: xref:finance.adoc#PaymentSplitter-release-contract-IERC20-address- +:PaymentSplitter-PayeeAdded: pass:normal[xref:finance.adoc#PaymentSplitter-PayeeAdded-address-uint256-[`PaymentSplitter.PayeeAdded`]] +:xref-PaymentSplitter-PayeeAdded-address-uint256-: xref:finance.adoc#PaymentSplitter-PayeeAdded-address-uint256- +:PaymentSplitter-PaymentReleased: pass:normal[xref:finance.adoc#PaymentSplitter-PaymentReleased-address-uint256-[`PaymentSplitter.PaymentReleased`]] +:xref-PaymentSplitter-PaymentReleased-address-uint256-: xref:finance.adoc#PaymentSplitter-PaymentReleased-address-uint256- +:PaymentSplitter-ERC20PaymentReleased: pass:normal[xref:finance.adoc#PaymentSplitter-ERC20PaymentReleased-contract-IERC20-address-uint256-[`PaymentSplitter.ERC20PaymentReleased`]] +:xref-PaymentSplitter-ERC20PaymentReleased-contract-IERC20-address-uint256-: xref:finance.adoc#PaymentSplitter-ERC20PaymentReleased-contract-IERC20-address-uint256- +:PaymentSplitter-PaymentReceived: pass:normal[xref:finance.adoc#PaymentSplitter-PaymentReceived-address-uint256-[`PaymentSplitter.PaymentReceived`]] +:xref-PaymentSplitter-PaymentReceived-address-uint256-: xref:finance.adoc#PaymentSplitter-PaymentReceived-address-uint256- +:VestingWallet: pass:normal[xref:finance.adoc#VestingWallet[`VestingWallet`]] +:xref-VestingWallet: xref:finance.adoc#VestingWallet +:VestingWallet-constructor: pass:normal[xref:finance.adoc#VestingWallet-constructor-address-uint64-uint64-[`VestingWallet.constructor`]] +:xref-VestingWallet-constructor-address-uint64-uint64-: xref:finance.adoc#VestingWallet-constructor-address-uint64-uint64- +:VestingWallet-receive: pass:normal[xref:finance.adoc#VestingWallet-receive--[`VestingWallet.receive`]] +:xref-VestingWallet-receive--: xref:finance.adoc#VestingWallet-receive-- +:VestingWallet-beneficiary: pass:normal[xref:finance.adoc#VestingWallet-beneficiary--[`VestingWallet.beneficiary`]] +:xref-VestingWallet-beneficiary--: xref:finance.adoc#VestingWallet-beneficiary-- +:VestingWallet-start: pass:normal[xref:finance.adoc#VestingWallet-start--[`VestingWallet.start`]] +:xref-VestingWallet-start--: xref:finance.adoc#VestingWallet-start-- +:VestingWallet-duration: pass:normal[xref:finance.adoc#VestingWallet-duration--[`VestingWallet.duration`]] +:xref-VestingWallet-duration--: xref:finance.adoc#VestingWallet-duration-- +:VestingWallet-released: pass:normal[xref:finance.adoc#VestingWallet-released--[`VestingWallet.released`]] +:xref-VestingWallet-released--: xref:finance.adoc#VestingWallet-released-- +:VestingWallet-released: pass:normal[xref:finance.adoc#VestingWallet-released-address-[`VestingWallet.released`]] +:xref-VestingWallet-released-address-: xref:finance.adoc#VestingWallet-released-address- +:VestingWallet-release: pass:normal[xref:finance.adoc#VestingWallet-release--[`VestingWallet.release`]] +:xref-VestingWallet-release--: xref:finance.adoc#VestingWallet-release-- +:VestingWallet-release: pass:normal[xref:finance.adoc#VestingWallet-release-address-[`VestingWallet.release`]] +:xref-VestingWallet-release-address-: xref:finance.adoc#VestingWallet-release-address- +:VestingWallet-vestedAmount: pass:normal[xref:finance.adoc#VestingWallet-vestedAmount-uint64-[`VestingWallet.vestedAmount`]] +:xref-VestingWallet-vestedAmount-uint64-: xref:finance.adoc#VestingWallet-vestedAmount-uint64- +:VestingWallet-vestedAmount: pass:normal[xref:finance.adoc#VestingWallet-vestedAmount-address-uint64-[`VestingWallet.vestedAmount`]] +:xref-VestingWallet-vestedAmount-address-uint64-: xref:finance.adoc#VestingWallet-vestedAmount-address-uint64- +:VestingWallet-_vestingSchedule: pass:normal[xref:finance.adoc#VestingWallet-_vestingSchedule-uint256-uint64-[`VestingWallet._vestingSchedule`]] +:xref-VestingWallet-_vestingSchedule-uint256-uint64-: xref:finance.adoc#VestingWallet-_vestingSchedule-uint256-uint64- +:VestingWallet-EtherReleased: pass:normal[xref:finance.adoc#VestingWallet-EtherReleased-uint256-[`VestingWallet.EtherReleased`]] +:xref-VestingWallet-EtherReleased-uint256-: xref:finance.adoc#VestingWallet-EtherReleased-uint256- +:VestingWallet-ERC20Released: pass:normal[xref:finance.adoc#VestingWallet-ERC20Released-address-uint256-[`VestingWallet.ERC20Released`]] +:xref-VestingWallet-ERC20Released-address-uint256-: xref:finance.adoc#VestingWallet-ERC20Released-address-uint256- +:Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]] +:xref-Governor: xref:governance.adoc#Governor +:Governor-onlyGovernance: pass:normal[xref:governance.adoc#Governor-onlyGovernance--[`Governor.onlyGovernance`]] +:xref-Governor-onlyGovernance--: xref:governance.adoc#Governor-onlyGovernance-- +:Governor-BALLOT_TYPEHASH: pass:normal[xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32[`Governor.BALLOT_TYPEHASH`]] +:xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32 +:Governor-constructor: pass:normal[xref:governance.adoc#Governor-constructor-string-[`Governor.constructor`]] +:xref-Governor-constructor-string-: xref:governance.adoc#Governor-constructor-string- +:Governor-receive: pass:normal[xref:governance.adoc#Governor-receive--[`Governor.receive`]] +:xref-Governor-receive--: xref:governance.adoc#Governor-receive-- +:Governor-supportsInterface: pass:normal[xref:governance.adoc#Governor-supportsInterface-bytes4-[`Governor.supportsInterface`]] +:xref-Governor-supportsInterface-bytes4-: xref:governance.adoc#Governor-supportsInterface-bytes4- +:Governor-name: pass:normal[xref:governance.adoc#Governor-name--[`Governor.name`]] +:xref-Governor-name--: xref:governance.adoc#Governor-name-- +:Governor-version: pass:normal[xref:governance.adoc#Governor-version--[`Governor.version`]] +:xref-Governor-version--: xref:governance.adoc#Governor-version-- +:Governor-hashProposal: pass:normal[xref:governance.adoc#Governor-hashProposal-address---uint256---bytes---bytes32-[`Governor.hashProposal`]] +:xref-Governor-hashProposal-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-hashProposal-address---uint256---bytes---bytes32- +:Governor-state: pass:normal[xref:governance.adoc#Governor-state-uint256-[`Governor.state`]] +:xref-Governor-state-uint256-: xref:governance.adoc#Governor-state-uint256- +:Governor-proposalSnapshot: pass:normal[xref:governance.adoc#Governor-proposalSnapshot-uint256-[`Governor.proposalSnapshot`]] +:xref-Governor-proposalSnapshot-uint256-: xref:governance.adoc#Governor-proposalSnapshot-uint256- +:Governor-proposalDeadline: pass:normal[xref:governance.adoc#Governor-proposalDeadline-uint256-[`Governor.proposalDeadline`]] +:xref-Governor-proposalDeadline-uint256-: xref:governance.adoc#Governor-proposalDeadline-uint256- +:Governor-proposalThreshold: pass:normal[xref:governance.adoc#Governor-proposalThreshold--[`Governor.proposalThreshold`]] +:xref-Governor-proposalThreshold--: xref:governance.adoc#Governor-proposalThreshold-- +:Governor-_quorumReached: pass:normal[xref:governance.adoc#Governor-_quorumReached-uint256-[`Governor._quorumReached`]] +:xref-Governor-_quorumReached-uint256-: xref:governance.adoc#Governor-_quorumReached-uint256- +:Governor-_voteSucceeded: pass:normal[xref:governance.adoc#Governor-_voteSucceeded-uint256-[`Governor._voteSucceeded`]] +:xref-Governor-_voteSucceeded-uint256-: xref:governance.adoc#Governor-_voteSucceeded-uint256- +:Governor-_countVote: pass:normal[xref:governance.adoc#Governor-_countVote-uint256-address-uint8-uint256-[`Governor._countVote`]] +:xref-Governor-_countVote-uint256-address-uint8-uint256-: xref:governance.adoc#Governor-_countVote-uint256-address-uint8-uint256- +:Governor-propose: pass:normal[xref:governance.adoc#Governor-propose-address---uint256---bytes---string-[`Governor.propose`]] +:xref-Governor-propose-address---uint256---bytes---string-: xref:governance.adoc#Governor-propose-address---uint256---bytes---string- +:Governor-execute: pass:normal[xref:governance.adoc#Governor-execute-address---uint256---bytes---bytes32-[`Governor.execute`]] +:xref-Governor-execute-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-execute-address---uint256---bytes---bytes32- +:Governor-_execute: pass:normal[xref:governance.adoc#Governor-_execute-uint256-address---uint256---bytes---bytes32-[`Governor._execute`]] +:xref-Governor-_execute-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_execute-uint256-address---uint256---bytes---bytes32- +:Governor-_cancel: pass:normal[xref:governance.adoc#Governor-_cancel-address---uint256---bytes---bytes32-[`Governor._cancel`]] +:xref-Governor-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_cancel-address---uint256---bytes---bytes32- +:Governor-castVote: pass:normal[xref:governance.adoc#Governor-castVote-uint256-uint8-[`Governor.castVote`]] +:xref-Governor-castVote-uint256-uint8-: xref:governance.adoc#Governor-castVote-uint256-uint8- +:Governor-castVoteWithReason: pass:normal[xref:governance.adoc#Governor-castVoteWithReason-uint256-uint8-string-[`Governor.castVoteWithReason`]] +:xref-Governor-castVoteWithReason-uint256-uint8-string-: xref:governance.adoc#Governor-castVoteWithReason-uint256-uint8-string- +:Governor-castVoteBySig: pass:normal[xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-[`Governor.castVoteBySig`]] +:xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32- +:Governor-_castVote: pass:normal[xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-[`Governor._castVote`]] +:xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string- +:Governor-relay: pass:normal[xref:governance.adoc#Governor-relay-address-uint256-bytes-[`Governor.relay`]] +:xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes- +:Governor-_executor: pass:normal[xref:governance.adoc#Governor-_executor--[`Governor._executor`]] +:xref-Governor-_executor--: xref:governance.adoc#Governor-_executor-- +:Governor-ProposalCore: pass:normal[xref:governance.adoc#Governor-ProposalCore[`Governor.ProposalCore`]] +:xref-Governor-ProposalCore: xref:governance.adoc#Governor-ProposalCore +:IGovernor: pass:normal[xref:governance.adoc#IGovernor[`IGovernor`]] +:xref-IGovernor: xref:governance.adoc#IGovernor +:IGovernor-name: pass:normal[xref:governance.adoc#IGovernor-name--[`IGovernor.name`]] +:xref-IGovernor-name--: xref:governance.adoc#IGovernor-name-- +:IGovernor-version: pass:normal[xref:governance.adoc#IGovernor-version--[`IGovernor.version`]] +:xref-IGovernor-version--: xref:governance.adoc#IGovernor-version-- +:IGovernor-COUNTING_MODE: pass:normal[xref:governance.adoc#IGovernor-COUNTING_MODE--[`IGovernor.COUNTING_MODE`]] +:xref-IGovernor-COUNTING_MODE--: xref:governance.adoc#IGovernor-COUNTING_MODE-- +:IGovernor-hashProposal: pass:normal[xref:governance.adoc#IGovernor-hashProposal-address---uint256---bytes---bytes32-[`IGovernor.hashProposal`]] +:xref-IGovernor-hashProposal-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernor-hashProposal-address---uint256---bytes---bytes32- +:IGovernor-state: pass:normal[xref:governance.adoc#IGovernor-state-uint256-[`IGovernor.state`]] +:xref-IGovernor-state-uint256-: xref:governance.adoc#IGovernor-state-uint256- +:IGovernor-proposalSnapshot: pass:normal[xref:governance.adoc#IGovernor-proposalSnapshot-uint256-[`IGovernor.proposalSnapshot`]] +:xref-IGovernor-proposalSnapshot-uint256-: xref:governance.adoc#IGovernor-proposalSnapshot-uint256- +:IGovernor-proposalDeadline: pass:normal[xref:governance.adoc#IGovernor-proposalDeadline-uint256-[`IGovernor.proposalDeadline`]] +:xref-IGovernor-proposalDeadline-uint256-: xref:governance.adoc#IGovernor-proposalDeadline-uint256- +:IGovernor-votingDelay: pass:normal[xref:governance.adoc#IGovernor-votingDelay--[`IGovernor.votingDelay`]] +:xref-IGovernor-votingDelay--: xref:governance.adoc#IGovernor-votingDelay-- +:IGovernor-votingPeriod: pass:normal[xref:governance.adoc#IGovernor-votingPeriod--[`IGovernor.votingPeriod`]] +:xref-IGovernor-votingPeriod--: xref:governance.adoc#IGovernor-votingPeriod-- +:IGovernor-quorum: pass:normal[xref:governance.adoc#IGovernor-quorum-uint256-[`IGovernor.quorum`]] +:xref-IGovernor-quorum-uint256-: xref:governance.adoc#IGovernor-quorum-uint256- +:IGovernor-getVotes: pass:normal[xref:governance.adoc#IGovernor-getVotes-address-uint256-[`IGovernor.getVotes`]] +:xref-IGovernor-getVotes-address-uint256-: xref:governance.adoc#IGovernor-getVotes-address-uint256- +:IGovernor-hasVoted: pass:normal[xref:governance.adoc#IGovernor-hasVoted-uint256-address-[`IGovernor.hasVoted`]] +:xref-IGovernor-hasVoted-uint256-address-: xref:governance.adoc#IGovernor-hasVoted-uint256-address- +:IGovernor-propose: pass:normal[xref:governance.adoc#IGovernor-propose-address---uint256---bytes---string-[`IGovernor.propose`]] +:xref-IGovernor-propose-address---uint256---bytes---string-: xref:governance.adoc#IGovernor-propose-address---uint256---bytes---string- +:IGovernor-execute: pass:normal[xref:governance.adoc#IGovernor-execute-address---uint256---bytes---bytes32-[`IGovernor.execute`]] +:xref-IGovernor-execute-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernor-execute-address---uint256---bytes---bytes32- +:IGovernor-castVote: pass:normal[xref:governance.adoc#IGovernor-castVote-uint256-uint8-[`IGovernor.castVote`]] +:xref-IGovernor-castVote-uint256-uint8-: xref:governance.adoc#IGovernor-castVote-uint256-uint8- +:IGovernor-castVoteWithReason: pass:normal[xref:governance.adoc#IGovernor-castVoteWithReason-uint256-uint8-string-[`IGovernor.castVoteWithReason`]] +:xref-IGovernor-castVoteWithReason-uint256-uint8-string-: xref:governance.adoc#IGovernor-castVoteWithReason-uint256-uint8-string- +:IGovernor-castVoteBySig: pass:normal[xref:governance.adoc#IGovernor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-[`IGovernor.castVoteBySig`]] +:xref-IGovernor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-: xref:governance.adoc#IGovernor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32- +:IGovernor-ProposalCreated: pass:normal[xref:governance.adoc#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-[`IGovernor.ProposalCreated`]] +:xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-: xref:governance.adoc#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string- +:IGovernor-ProposalCanceled: pass:normal[xref:governance.adoc#IGovernor-ProposalCanceled-uint256-[`IGovernor.ProposalCanceled`]] +:xref-IGovernor-ProposalCanceled-uint256-: xref:governance.adoc#IGovernor-ProposalCanceled-uint256- +:IGovernor-ProposalExecuted: pass:normal[xref:governance.adoc#IGovernor-ProposalExecuted-uint256-[`IGovernor.ProposalExecuted`]] +:xref-IGovernor-ProposalExecuted-uint256-: xref:governance.adoc#IGovernor-ProposalExecuted-uint256- +:IGovernor-VoteCast: pass:normal[xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string-[`IGovernor.VoteCast`]] +:xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-: xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string- +:IGovernor-ProposalState: pass:normal[xref:governance.adoc#IGovernor-ProposalState[`IGovernor.ProposalState`]] +:xref-IGovernor-ProposalState: xref:governance.adoc#IGovernor-ProposalState +:TimelockController: pass:normal[xref:governance.adoc#TimelockController[`TimelockController`]] +:xref-TimelockController: xref:governance.adoc#TimelockController +:TimelockController-onlyRoleOrOpenRole: pass:normal[xref:governance.adoc#TimelockController-onlyRoleOrOpenRole-bytes32-[`TimelockController.onlyRoleOrOpenRole`]] +:xref-TimelockController-onlyRoleOrOpenRole-bytes32-: xref:governance.adoc#TimelockController-onlyRoleOrOpenRole-bytes32- +:TimelockController-TIMELOCK_ADMIN_ROLE: pass:normal[xref:governance.adoc#TimelockController-TIMELOCK_ADMIN_ROLE-bytes32[`TimelockController.TIMELOCK_ADMIN_ROLE`]] +:xref-TimelockController-TIMELOCK_ADMIN_ROLE-bytes32: xref:governance.adoc#TimelockController-TIMELOCK_ADMIN_ROLE-bytes32 +:TimelockController-PROPOSER_ROLE: pass:normal[xref:governance.adoc#TimelockController-PROPOSER_ROLE-bytes32[`TimelockController.PROPOSER_ROLE`]] +:xref-TimelockController-PROPOSER_ROLE-bytes32: xref:governance.adoc#TimelockController-PROPOSER_ROLE-bytes32 +:TimelockController-EXECUTOR_ROLE: pass:normal[xref:governance.adoc#TimelockController-EXECUTOR_ROLE-bytes32[`TimelockController.EXECUTOR_ROLE`]] +:xref-TimelockController-EXECUTOR_ROLE-bytes32: xref:governance.adoc#TimelockController-EXECUTOR_ROLE-bytes32 +:TimelockController-_DONE_TIMESTAMP: pass:normal[xref:governance.adoc#TimelockController-_DONE_TIMESTAMP-uint256[`TimelockController._DONE_TIMESTAMP`]] +:xref-TimelockController-_DONE_TIMESTAMP-uint256: xref:governance.adoc#TimelockController-_DONE_TIMESTAMP-uint256 +:TimelockController-constructor: pass:normal[xref:governance.adoc#TimelockController-constructor-uint256-address---address---[`TimelockController.constructor`]] +:xref-TimelockController-constructor-uint256-address---address---: xref:governance.adoc#TimelockController-constructor-uint256-address---address--- +:TimelockController-receive: pass:normal[xref:governance.adoc#TimelockController-receive--[`TimelockController.receive`]] +:xref-TimelockController-receive--: xref:governance.adoc#TimelockController-receive-- +:TimelockController-isOperation: pass:normal[xref:governance.adoc#TimelockController-isOperation-bytes32-[`TimelockController.isOperation`]] +:xref-TimelockController-isOperation-bytes32-: xref:governance.adoc#TimelockController-isOperation-bytes32- +:TimelockController-isOperationPending: pass:normal[xref:governance.adoc#TimelockController-isOperationPending-bytes32-[`TimelockController.isOperationPending`]] +:xref-TimelockController-isOperationPending-bytes32-: xref:governance.adoc#TimelockController-isOperationPending-bytes32- +:TimelockController-isOperationReady: pass:normal[xref:governance.adoc#TimelockController-isOperationReady-bytes32-[`TimelockController.isOperationReady`]] +:xref-TimelockController-isOperationReady-bytes32-: xref:governance.adoc#TimelockController-isOperationReady-bytes32- +:TimelockController-isOperationDone: pass:normal[xref:governance.adoc#TimelockController-isOperationDone-bytes32-[`TimelockController.isOperationDone`]] +:xref-TimelockController-isOperationDone-bytes32-: xref:governance.adoc#TimelockController-isOperationDone-bytes32- +:TimelockController-getTimestamp: pass:normal[xref:governance.adoc#TimelockController-getTimestamp-bytes32-[`TimelockController.getTimestamp`]] +:xref-TimelockController-getTimestamp-bytes32-: xref:governance.adoc#TimelockController-getTimestamp-bytes32- +:TimelockController-getMinDelay: pass:normal[xref:governance.adoc#TimelockController-getMinDelay--[`TimelockController.getMinDelay`]] +:xref-TimelockController-getMinDelay--: xref:governance.adoc#TimelockController-getMinDelay-- +:TimelockController-hashOperation: pass:normal[xref:governance.adoc#TimelockController-hashOperation-address-uint256-bytes-bytes32-bytes32-[`TimelockController.hashOperation`]] +:xref-TimelockController-hashOperation-address-uint256-bytes-bytes32-bytes32-: xref:governance.adoc#TimelockController-hashOperation-address-uint256-bytes-bytes32-bytes32- +:TimelockController-hashOperationBatch: pass:normal[xref:governance.adoc#TimelockController-hashOperationBatch-address---uint256---bytes---bytes32-bytes32-[`TimelockController.hashOperationBatch`]] +:xref-TimelockController-hashOperationBatch-address---uint256---bytes---bytes32-bytes32-: xref:governance.adoc#TimelockController-hashOperationBatch-address---uint256---bytes---bytes32-bytes32- +:TimelockController-schedule: pass:normal[xref:governance.adoc#TimelockController-schedule-address-uint256-bytes-bytes32-bytes32-uint256-[`TimelockController.schedule`]] +:xref-TimelockController-schedule-address-uint256-bytes-bytes32-bytes32-uint256-: xref:governance.adoc#TimelockController-schedule-address-uint256-bytes-bytes32-bytes32-uint256- +:TimelockController-scheduleBatch: pass:normal[xref:governance.adoc#TimelockController-scheduleBatch-address---uint256---bytes---bytes32-bytes32-uint256-[`TimelockController.scheduleBatch`]] +:xref-TimelockController-scheduleBatch-address---uint256---bytes---bytes32-bytes32-uint256-: xref:governance.adoc#TimelockController-scheduleBatch-address---uint256---bytes---bytes32-bytes32-uint256- +:TimelockController-cancel: pass:normal[xref:governance.adoc#TimelockController-cancel-bytes32-[`TimelockController.cancel`]] +:xref-TimelockController-cancel-bytes32-: xref:governance.adoc#TimelockController-cancel-bytes32- +:TimelockController-execute: pass:normal[xref:governance.adoc#TimelockController-execute-address-uint256-bytes-bytes32-bytes32-[`TimelockController.execute`]] +:xref-TimelockController-execute-address-uint256-bytes-bytes32-bytes32-: xref:governance.adoc#TimelockController-execute-address-uint256-bytes-bytes32-bytes32- +:TimelockController-executeBatch: pass:normal[xref:governance.adoc#TimelockController-executeBatch-address---uint256---bytes---bytes32-bytes32-[`TimelockController.executeBatch`]] +:xref-TimelockController-executeBatch-address---uint256---bytes---bytes32-bytes32-: xref:governance.adoc#TimelockController-executeBatch-address---uint256---bytes---bytes32-bytes32- +:TimelockController-updateDelay: pass:normal[xref:governance.adoc#TimelockController-updateDelay-uint256-[`TimelockController.updateDelay`]] +:xref-TimelockController-updateDelay-uint256-: xref:governance.adoc#TimelockController-updateDelay-uint256- +:TimelockController-CallScheduled: pass:normal[xref:governance.adoc#TimelockController-CallScheduled-bytes32-uint256-address-uint256-bytes-bytes32-uint256-[`TimelockController.CallScheduled`]] +:xref-TimelockController-CallScheduled-bytes32-uint256-address-uint256-bytes-bytes32-uint256-: xref:governance.adoc#TimelockController-CallScheduled-bytes32-uint256-address-uint256-bytes-bytes32-uint256- +:TimelockController-CallExecuted: pass:normal[xref:governance.adoc#TimelockController-CallExecuted-bytes32-uint256-address-uint256-bytes-[`TimelockController.CallExecuted`]] +:xref-TimelockController-CallExecuted-bytes32-uint256-address-uint256-bytes-: xref:governance.adoc#TimelockController-CallExecuted-bytes32-uint256-address-uint256-bytes- +:TimelockController-Cancelled: pass:normal[xref:governance.adoc#TimelockController-Cancelled-bytes32-[`TimelockController.Cancelled`]] +:xref-TimelockController-Cancelled-bytes32-: xref:governance.adoc#TimelockController-Cancelled-bytes32- +:TimelockController-MinDelayChange: pass:normal[xref:governance.adoc#TimelockController-MinDelayChange-uint256-uint256-[`TimelockController.MinDelayChange`]] +:xref-TimelockController-MinDelayChange-uint256-uint256-: xref:governance.adoc#TimelockController-MinDelayChange-uint256-uint256- +:GovernorCompatibilityBravo: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo[`GovernorCompatibilityBravo`]] +:xref-GovernorCompatibilityBravo: xref:governance.adoc#GovernorCompatibilityBravo +:GovernorCompatibilityBravo-COUNTING_MODE: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-COUNTING_MODE--[`GovernorCompatibilityBravo.COUNTING_MODE`]] +:xref-GovernorCompatibilityBravo-COUNTING_MODE--: xref:governance.adoc#GovernorCompatibilityBravo-COUNTING_MODE-- +:GovernorCompatibilityBravo-propose: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-propose-address---uint256---bytes---string-[`GovernorCompatibilityBravo.propose`]] +:xref-GovernorCompatibilityBravo-propose-address---uint256---bytes---string-: xref:governance.adoc#GovernorCompatibilityBravo-propose-address---uint256---bytes---string- +:GovernorCompatibilityBravo-propose: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-propose-address---uint256---string---bytes---string-[`GovernorCompatibilityBravo.propose`]] +:xref-GovernorCompatibilityBravo-propose-address---uint256---string---bytes---string-: xref:governance.adoc#GovernorCompatibilityBravo-propose-address---uint256---string---bytes---string- +:GovernorCompatibilityBravo-queue: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-queue-uint256-[`GovernorCompatibilityBravo.queue`]] +:xref-GovernorCompatibilityBravo-queue-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-queue-uint256- +:GovernorCompatibilityBravo-execute: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-execute-uint256-[`GovernorCompatibilityBravo.execute`]] +:xref-GovernorCompatibilityBravo-execute-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-execute-uint256- +:GovernorCompatibilityBravo-cancel: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-cancel-uint256-[`GovernorCompatibilityBravo.cancel`]] +:xref-GovernorCompatibilityBravo-cancel-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-cancel-uint256- +:GovernorCompatibilityBravo-proposals: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-proposals-uint256-[`GovernorCompatibilityBravo.proposals`]] +:xref-GovernorCompatibilityBravo-proposals-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-proposals-uint256- +:GovernorCompatibilityBravo-getActions: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-getActions-uint256-[`GovernorCompatibilityBravo.getActions`]] +:xref-GovernorCompatibilityBravo-getActions-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-getActions-uint256- +:GovernorCompatibilityBravo-getReceipt: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-getReceipt-uint256-address-[`GovernorCompatibilityBravo.getReceipt`]] +:xref-GovernorCompatibilityBravo-getReceipt-uint256-address-: xref:governance.adoc#GovernorCompatibilityBravo-getReceipt-uint256-address- +:GovernorCompatibilityBravo-quorumVotes: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-quorumVotes--[`GovernorCompatibilityBravo.quorumVotes`]] +:xref-GovernorCompatibilityBravo-quorumVotes--: xref:governance.adoc#GovernorCompatibilityBravo-quorumVotes-- +:GovernorCompatibilityBravo-hasVoted: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-hasVoted-uint256-address-[`GovernorCompatibilityBravo.hasVoted`]] +:xref-GovernorCompatibilityBravo-hasVoted-uint256-address-: xref:governance.adoc#GovernorCompatibilityBravo-hasVoted-uint256-address- +:GovernorCompatibilityBravo-_quorumReached: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-_quorumReached-uint256-[`GovernorCompatibilityBravo._quorumReached`]] +:xref-GovernorCompatibilityBravo-_quorumReached-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-_quorumReached-uint256- +:GovernorCompatibilityBravo-_voteSucceeded: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-_voteSucceeded-uint256-[`GovernorCompatibilityBravo._voteSucceeded`]] +:xref-GovernorCompatibilityBravo-_voteSucceeded-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-_voteSucceeded-uint256- +:GovernorCompatibilityBravo-_countVote: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-_countVote-uint256-address-uint8-uint256-[`GovernorCompatibilityBravo._countVote`]] +:xref-GovernorCompatibilityBravo-_countVote-uint256-address-uint8-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-_countVote-uint256-address-uint8-uint256- +:GovernorCompatibilityBravo-ProposalDetails: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-ProposalDetails[`GovernorCompatibilityBravo.ProposalDetails`]] +:xref-GovernorCompatibilityBravo-ProposalDetails: xref:governance.adoc#GovernorCompatibilityBravo-ProposalDetails +:GovernorCompatibilityBravo-VoteType: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-VoteType[`GovernorCompatibilityBravo.VoteType`]] +:xref-GovernorCompatibilityBravo-VoteType: xref:governance.adoc#GovernorCompatibilityBravo-VoteType +:IGovernorCompatibilityBravo: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo[`IGovernorCompatibilityBravo`]] +:xref-IGovernorCompatibilityBravo: xref:governance.adoc#IGovernorCompatibilityBravo +:IGovernorCompatibilityBravo-quorumVotes: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-quorumVotes--[`IGovernorCompatibilityBravo.quorumVotes`]] +:xref-IGovernorCompatibilityBravo-quorumVotes--: xref:governance.adoc#IGovernorCompatibilityBravo-quorumVotes-- +:IGovernorCompatibilityBravo-proposals: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-proposals-uint256-[`IGovernorCompatibilityBravo.proposals`]] +:xref-IGovernorCompatibilityBravo-proposals-uint256-: xref:governance.adoc#IGovernorCompatibilityBravo-proposals-uint256- +:IGovernorCompatibilityBravo-propose: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-propose-address---uint256---string---bytes---string-[`IGovernorCompatibilityBravo.propose`]] +:xref-IGovernorCompatibilityBravo-propose-address---uint256---string---bytes---string-: xref:governance.adoc#IGovernorCompatibilityBravo-propose-address---uint256---string---bytes---string- +:IGovernorCompatibilityBravo-queue: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-queue-uint256-[`IGovernorCompatibilityBravo.queue`]] +:xref-IGovernorCompatibilityBravo-queue-uint256-: xref:governance.adoc#IGovernorCompatibilityBravo-queue-uint256- +:IGovernorCompatibilityBravo-execute: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-execute-uint256-[`IGovernorCompatibilityBravo.execute`]] +:xref-IGovernorCompatibilityBravo-execute-uint256-: xref:governance.adoc#IGovernorCompatibilityBravo-execute-uint256- +:IGovernorCompatibilityBravo-cancel: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-cancel-uint256-[`IGovernorCompatibilityBravo.cancel`]] +:xref-IGovernorCompatibilityBravo-cancel-uint256-: xref:governance.adoc#IGovernorCompatibilityBravo-cancel-uint256- +:IGovernorCompatibilityBravo-getActions: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-getActions-uint256-[`IGovernorCompatibilityBravo.getActions`]] +:xref-IGovernorCompatibilityBravo-getActions-uint256-: xref:governance.adoc#IGovernorCompatibilityBravo-getActions-uint256- +:IGovernorCompatibilityBravo-getReceipt: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-getReceipt-uint256-address-[`IGovernorCompatibilityBravo.getReceipt`]] +:xref-IGovernorCompatibilityBravo-getReceipt-uint256-address-: xref:governance.adoc#IGovernorCompatibilityBravo-getReceipt-uint256-address- +:IGovernorCompatibilityBravo-Proposal: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-Proposal[`IGovernorCompatibilityBravo.Proposal`]] +:xref-IGovernorCompatibilityBravo-Proposal: xref:governance.adoc#IGovernorCompatibilityBravo-Proposal +:IGovernorCompatibilityBravo-Receipt: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-Receipt[`IGovernorCompatibilityBravo.Receipt`]] +:xref-IGovernorCompatibilityBravo-Receipt: xref:governance.adoc#IGovernorCompatibilityBravo-Receipt +:GovernorCountingSimple: pass:normal[xref:governance.adoc#GovernorCountingSimple[`GovernorCountingSimple`]] +:xref-GovernorCountingSimple: xref:governance.adoc#GovernorCountingSimple +:GovernorCountingSimple-COUNTING_MODE: pass:normal[xref:governance.adoc#GovernorCountingSimple-COUNTING_MODE--[`GovernorCountingSimple.COUNTING_MODE`]] +:xref-GovernorCountingSimple-COUNTING_MODE--: xref:governance.adoc#GovernorCountingSimple-COUNTING_MODE-- +:GovernorCountingSimple-hasVoted: pass:normal[xref:governance.adoc#GovernorCountingSimple-hasVoted-uint256-address-[`GovernorCountingSimple.hasVoted`]] +:xref-GovernorCountingSimple-hasVoted-uint256-address-: xref:governance.adoc#GovernorCountingSimple-hasVoted-uint256-address- +:GovernorCountingSimple-proposalVotes: pass:normal[xref:governance.adoc#GovernorCountingSimple-proposalVotes-uint256-[`GovernorCountingSimple.proposalVotes`]] +:xref-GovernorCountingSimple-proposalVotes-uint256-: xref:governance.adoc#GovernorCountingSimple-proposalVotes-uint256- +:GovernorCountingSimple-_quorumReached: pass:normal[xref:governance.adoc#GovernorCountingSimple-_quorumReached-uint256-[`GovernorCountingSimple._quorumReached`]] +:xref-GovernorCountingSimple-_quorumReached-uint256-: xref:governance.adoc#GovernorCountingSimple-_quorumReached-uint256- +:GovernorCountingSimple-_voteSucceeded: pass:normal[xref:governance.adoc#GovernorCountingSimple-_voteSucceeded-uint256-[`GovernorCountingSimple._voteSucceeded`]] +:xref-GovernorCountingSimple-_voteSucceeded-uint256-: xref:governance.adoc#GovernorCountingSimple-_voteSucceeded-uint256- +:GovernorCountingSimple-_countVote: pass:normal[xref:governance.adoc#GovernorCountingSimple-_countVote-uint256-address-uint8-uint256-[`GovernorCountingSimple._countVote`]] +:xref-GovernorCountingSimple-_countVote-uint256-address-uint8-uint256-: xref:governance.adoc#GovernorCountingSimple-_countVote-uint256-address-uint8-uint256- +:GovernorCountingSimple-ProposalVote: pass:normal[xref:governance.adoc#GovernorCountingSimple-ProposalVote[`GovernorCountingSimple.ProposalVote`]] +:xref-GovernorCountingSimple-ProposalVote: xref:governance.adoc#GovernorCountingSimple-ProposalVote +:GovernorCountingSimple-VoteType: pass:normal[xref:governance.adoc#GovernorCountingSimple-VoteType[`GovernorCountingSimple.VoteType`]] +:xref-GovernorCountingSimple-VoteType: xref:governance.adoc#GovernorCountingSimple-VoteType +:GovernorPreventLateQuorum: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum[`GovernorPreventLateQuorum`]] +:xref-GovernorPreventLateQuorum: xref:governance.adoc#GovernorPreventLateQuorum +:GovernorPreventLateQuorum-constructor: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64-[`GovernorPreventLateQuorum.constructor`]] +:xref-GovernorPreventLateQuorum-constructor-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64- +:GovernorPreventLateQuorum-proposalDeadline: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256-[`GovernorPreventLateQuorum.proposalDeadline`]] +:xref-GovernorPreventLateQuorum-proposalDeadline-uint256-: xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256- +:GovernorPreventLateQuorum-_castVote: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-[`GovernorPreventLateQuorum._castVote`]] +:xref-GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-: xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string- +:GovernorPreventLateQuorum-lateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension--[`GovernorPreventLateQuorum.lateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-lateQuorumVoteExtension--: xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension-- +:GovernorPreventLateQuorum-setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum.setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-_setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum._setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-ProposalExtended: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-[`GovernorPreventLateQuorum.ProposalExtended`]] +:xref-GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64- +:GovernorPreventLateQuorum-LateQuorumVoteExtensionSet: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-[`GovernorPreventLateQuorum.LateQuorumVoteExtensionSet`]] +:xref-GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64- +:GovernorProposalThreshold: pass:normal[xref:governance.adoc#GovernorProposalThreshold[`GovernorProposalThreshold`]] +:xref-GovernorProposalThreshold: xref:governance.adoc#GovernorProposalThreshold +:GovernorProposalThreshold-propose: pass:normal[xref:governance.adoc#GovernorProposalThreshold-propose-address---uint256---bytes---string-[`GovernorProposalThreshold.propose`]] +:xref-GovernorProposalThreshold-propose-address---uint256---bytes---string-: xref:governance.adoc#GovernorProposalThreshold-propose-address---uint256---bytes---string- +:GovernorSettings: pass:normal[xref:governance.adoc#GovernorSettings[`GovernorSettings`]] +:xref-GovernorSettings: xref:governance.adoc#GovernorSettings +:GovernorSettings-constructor: pass:normal[xref:governance.adoc#GovernorSettings-constructor-uint256-uint256-uint256-[`GovernorSettings.constructor`]] +:xref-GovernorSettings-constructor-uint256-uint256-uint256-: xref:governance.adoc#GovernorSettings-constructor-uint256-uint256-uint256- +:GovernorSettings-votingDelay: pass:normal[xref:governance.adoc#GovernorSettings-votingDelay--[`GovernorSettings.votingDelay`]] +:xref-GovernorSettings-votingDelay--: xref:governance.adoc#GovernorSettings-votingDelay-- +:GovernorSettings-votingPeriod: pass:normal[xref:governance.adoc#GovernorSettings-votingPeriod--[`GovernorSettings.votingPeriod`]] +:xref-GovernorSettings-votingPeriod--: xref:governance.adoc#GovernorSettings-votingPeriod-- +:GovernorSettings-proposalThreshold: pass:normal[xref:governance.adoc#GovernorSettings-proposalThreshold--[`GovernorSettings.proposalThreshold`]] +:xref-GovernorSettings-proposalThreshold--: xref:governance.adoc#GovernorSettings-proposalThreshold-- +:GovernorSettings-setVotingDelay: pass:normal[xref:governance.adoc#GovernorSettings-setVotingDelay-uint256-[`GovernorSettings.setVotingDelay`]] +:xref-GovernorSettings-setVotingDelay-uint256-: xref:governance.adoc#GovernorSettings-setVotingDelay-uint256- +:GovernorSettings-setVotingPeriod: pass:normal[xref:governance.adoc#GovernorSettings-setVotingPeriod-uint256-[`GovernorSettings.setVotingPeriod`]] +:xref-GovernorSettings-setVotingPeriod-uint256-: xref:governance.adoc#GovernorSettings-setVotingPeriod-uint256- +:GovernorSettings-setProposalThreshold: pass:normal[xref:governance.adoc#GovernorSettings-setProposalThreshold-uint256-[`GovernorSettings.setProposalThreshold`]] +:xref-GovernorSettings-setProposalThreshold-uint256-: xref:governance.adoc#GovernorSettings-setProposalThreshold-uint256- +:GovernorSettings-_setVotingDelay: pass:normal[xref:governance.adoc#GovernorSettings-_setVotingDelay-uint256-[`GovernorSettings._setVotingDelay`]] +:xref-GovernorSettings-_setVotingDelay-uint256-: xref:governance.adoc#GovernorSettings-_setVotingDelay-uint256- +:GovernorSettings-_setVotingPeriod: pass:normal[xref:governance.adoc#GovernorSettings-_setVotingPeriod-uint256-[`GovernorSettings._setVotingPeriod`]] +:xref-GovernorSettings-_setVotingPeriod-uint256-: xref:governance.adoc#GovernorSettings-_setVotingPeriod-uint256- +:GovernorSettings-_setProposalThreshold: pass:normal[xref:governance.adoc#GovernorSettings-_setProposalThreshold-uint256-[`GovernorSettings._setProposalThreshold`]] +:xref-GovernorSettings-_setProposalThreshold-uint256-: xref:governance.adoc#GovernorSettings-_setProposalThreshold-uint256- +:GovernorSettings-VotingDelaySet: pass:normal[xref:governance.adoc#GovernorSettings-VotingDelaySet-uint256-uint256-[`GovernorSettings.VotingDelaySet`]] +:xref-GovernorSettings-VotingDelaySet-uint256-uint256-: xref:governance.adoc#GovernorSettings-VotingDelaySet-uint256-uint256- +:GovernorSettings-VotingPeriodSet: pass:normal[xref:governance.adoc#GovernorSettings-VotingPeriodSet-uint256-uint256-[`GovernorSettings.VotingPeriodSet`]] +:xref-GovernorSettings-VotingPeriodSet-uint256-uint256-: xref:governance.adoc#GovernorSettings-VotingPeriodSet-uint256-uint256- +:GovernorSettings-ProposalThresholdSet: pass:normal[xref:governance.adoc#GovernorSettings-ProposalThresholdSet-uint256-uint256-[`GovernorSettings.ProposalThresholdSet`]] +:xref-GovernorSettings-ProposalThresholdSet-uint256-uint256-: xref:governance.adoc#GovernorSettings-ProposalThresholdSet-uint256-uint256- +:ICompoundTimelock: pass:normal[xref:governance.adoc#ICompoundTimelock[`ICompoundTimelock`]] +:xref-ICompoundTimelock: xref:governance.adoc#ICompoundTimelock +:ICompoundTimelock-receive: pass:normal[xref:governance.adoc#ICompoundTimelock-receive--[`ICompoundTimelock.receive`]] +:xref-ICompoundTimelock-receive--: xref:governance.adoc#ICompoundTimelock-receive-- +:ICompoundTimelock-GRACE_PERIOD: pass:normal[xref:governance.adoc#ICompoundTimelock-GRACE_PERIOD--[`ICompoundTimelock.GRACE_PERIOD`]] +:xref-ICompoundTimelock-GRACE_PERIOD--: xref:governance.adoc#ICompoundTimelock-GRACE_PERIOD-- +:ICompoundTimelock-MINIMUM_DELAY: pass:normal[xref:governance.adoc#ICompoundTimelock-MINIMUM_DELAY--[`ICompoundTimelock.MINIMUM_DELAY`]] +:xref-ICompoundTimelock-MINIMUM_DELAY--: xref:governance.adoc#ICompoundTimelock-MINIMUM_DELAY-- +:ICompoundTimelock-MAXIMUM_DELAY: pass:normal[xref:governance.adoc#ICompoundTimelock-MAXIMUM_DELAY--[`ICompoundTimelock.MAXIMUM_DELAY`]] +:xref-ICompoundTimelock-MAXIMUM_DELAY--: xref:governance.adoc#ICompoundTimelock-MAXIMUM_DELAY-- +:ICompoundTimelock-admin: pass:normal[xref:governance.adoc#ICompoundTimelock-admin--[`ICompoundTimelock.admin`]] +:xref-ICompoundTimelock-admin--: xref:governance.adoc#ICompoundTimelock-admin-- +:ICompoundTimelock-pendingAdmin: pass:normal[xref:governance.adoc#ICompoundTimelock-pendingAdmin--[`ICompoundTimelock.pendingAdmin`]] +:xref-ICompoundTimelock-pendingAdmin--: xref:governance.adoc#ICompoundTimelock-pendingAdmin-- +:ICompoundTimelock-delay: pass:normal[xref:governance.adoc#ICompoundTimelock-delay--[`ICompoundTimelock.delay`]] +:xref-ICompoundTimelock-delay--: xref:governance.adoc#ICompoundTimelock-delay-- +:ICompoundTimelock-queuedTransactions: pass:normal[xref:governance.adoc#ICompoundTimelock-queuedTransactions-bytes32-[`ICompoundTimelock.queuedTransactions`]] +:xref-ICompoundTimelock-queuedTransactions-bytes32-: xref:governance.adoc#ICompoundTimelock-queuedTransactions-bytes32- +:ICompoundTimelock-setDelay: pass:normal[xref:governance.adoc#ICompoundTimelock-setDelay-uint256-[`ICompoundTimelock.setDelay`]] +:xref-ICompoundTimelock-setDelay-uint256-: xref:governance.adoc#ICompoundTimelock-setDelay-uint256- +:ICompoundTimelock-acceptAdmin: pass:normal[xref:governance.adoc#ICompoundTimelock-acceptAdmin--[`ICompoundTimelock.acceptAdmin`]] +:xref-ICompoundTimelock-acceptAdmin--: xref:governance.adoc#ICompoundTimelock-acceptAdmin-- +:ICompoundTimelock-setPendingAdmin: pass:normal[xref:governance.adoc#ICompoundTimelock-setPendingAdmin-address-[`ICompoundTimelock.setPendingAdmin`]] +:xref-ICompoundTimelock-setPendingAdmin-address-: xref:governance.adoc#ICompoundTimelock-setPendingAdmin-address- +:ICompoundTimelock-queueTransaction: pass:normal[xref:governance.adoc#ICompoundTimelock-queueTransaction-address-uint256-string-bytes-uint256-[`ICompoundTimelock.queueTransaction`]] +:xref-ICompoundTimelock-queueTransaction-address-uint256-string-bytes-uint256-: xref:governance.adoc#ICompoundTimelock-queueTransaction-address-uint256-string-bytes-uint256- +:ICompoundTimelock-cancelTransaction: pass:normal[xref:governance.adoc#ICompoundTimelock-cancelTransaction-address-uint256-string-bytes-uint256-[`ICompoundTimelock.cancelTransaction`]] +:xref-ICompoundTimelock-cancelTransaction-address-uint256-string-bytes-uint256-: xref:governance.adoc#ICompoundTimelock-cancelTransaction-address-uint256-string-bytes-uint256- +:ICompoundTimelock-executeTransaction: pass:normal[xref:governance.adoc#ICompoundTimelock-executeTransaction-address-uint256-string-bytes-uint256-[`ICompoundTimelock.executeTransaction`]] +:xref-ICompoundTimelock-executeTransaction-address-uint256-string-bytes-uint256-: xref:governance.adoc#ICompoundTimelock-executeTransaction-address-uint256-string-bytes-uint256- +:GovernorTimelockCompound: pass:normal[xref:governance.adoc#GovernorTimelockCompound[`GovernorTimelockCompound`]] +:xref-GovernorTimelockCompound: xref:governance.adoc#GovernorTimelockCompound +:GovernorTimelockCompound-constructor: pass:normal[xref:governance.adoc#GovernorTimelockCompound-constructor-contract-ICompoundTimelock-[`GovernorTimelockCompound.constructor`]] +:xref-GovernorTimelockCompound-constructor-contract-ICompoundTimelock-: xref:governance.adoc#GovernorTimelockCompound-constructor-contract-ICompoundTimelock- +:GovernorTimelockCompound-supportsInterface: pass:normal[xref:governance.adoc#GovernorTimelockCompound-supportsInterface-bytes4-[`GovernorTimelockCompound.supportsInterface`]] +:xref-GovernorTimelockCompound-supportsInterface-bytes4-: xref:governance.adoc#GovernorTimelockCompound-supportsInterface-bytes4- +:GovernorTimelockCompound-state: pass:normal[xref:governance.adoc#GovernorTimelockCompound-state-uint256-[`GovernorTimelockCompound.state`]] +:xref-GovernorTimelockCompound-state-uint256-: xref:governance.adoc#GovernorTimelockCompound-state-uint256- +:GovernorTimelockCompound-timelock: pass:normal[xref:governance.adoc#GovernorTimelockCompound-timelock--[`GovernorTimelockCompound.timelock`]] +:xref-GovernorTimelockCompound-timelock--: xref:governance.adoc#GovernorTimelockCompound-timelock-- +:GovernorTimelockCompound-proposalEta: pass:normal[xref:governance.adoc#GovernorTimelockCompound-proposalEta-uint256-[`GovernorTimelockCompound.proposalEta`]] +:xref-GovernorTimelockCompound-proposalEta-uint256-: xref:governance.adoc#GovernorTimelockCompound-proposalEta-uint256- +:GovernorTimelockCompound-queue: pass:normal[xref:governance.adoc#GovernorTimelockCompound-queue-address---uint256---bytes---bytes32-[`GovernorTimelockCompound.queue`]] +:xref-GovernorTimelockCompound-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockCompound-queue-address---uint256---bytes---bytes32- +:GovernorTimelockCompound-_execute: pass:normal[xref:governance.adoc#GovernorTimelockCompound-_execute-uint256-address---uint256---bytes---bytes32-[`GovernorTimelockCompound._execute`]] +:xref-GovernorTimelockCompound-_execute-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockCompound-_execute-uint256-address---uint256---bytes---bytes32- +:GovernorTimelockCompound-_cancel: pass:normal[xref:governance.adoc#GovernorTimelockCompound-_cancel-address---uint256---bytes---bytes32-[`GovernorTimelockCompound._cancel`]] +:xref-GovernorTimelockCompound-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockCompound-_cancel-address---uint256---bytes---bytes32- +:GovernorTimelockCompound-_executor: pass:normal[xref:governance.adoc#GovernorTimelockCompound-_executor--[`GovernorTimelockCompound._executor`]] +:xref-GovernorTimelockCompound-_executor--: xref:governance.adoc#GovernorTimelockCompound-_executor-- +:GovernorTimelockCompound-__acceptAdmin: pass:normal[xref:governance.adoc#GovernorTimelockCompound-__acceptAdmin--[`GovernorTimelockCompound.__acceptAdmin`]] +:xref-GovernorTimelockCompound-__acceptAdmin--: xref:governance.adoc#GovernorTimelockCompound-__acceptAdmin-- +:GovernorTimelockCompound-updateTimelock: pass:normal[xref:governance.adoc#GovernorTimelockCompound-updateTimelock-contract-ICompoundTimelock-[`GovernorTimelockCompound.updateTimelock`]] +:xref-GovernorTimelockCompound-updateTimelock-contract-ICompoundTimelock-: xref:governance.adoc#GovernorTimelockCompound-updateTimelock-contract-ICompoundTimelock- +:GovernorTimelockCompound-TimelockChange: pass:normal[xref:governance.adoc#GovernorTimelockCompound-TimelockChange-address-address-[`GovernorTimelockCompound.TimelockChange`]] +:xref-GovernorTimelockCompound-TimelockChange-address-address-: xref:governance.adoc#GovernorTimelockCompound-TimelockChange-address-address- +:GovernorTimelockCompound-ProposalTimelock: pass:normal[xref:governance.adoc#GovernorTimelockCompound-ProposalTimelock[`GovernorTimelockCompound.ProposalTimelock`]] +:xref-GovernorTimelockCompound-ProposalTimelock: xref:governance.adoc#GovernorTimelockCompound-ProposalTimelock +:GovernorTimelockControl: pass:normal[xref:governance.adoc#GovernorTimelockControl[`GovernorTimelockControl`]] +:xref-GovernorTimelockControl: xref:governance.adoc#GovernorTimelockControl +:GovernorTimelockControl-constructor: pass:normal[xref:governance.adoc#GovernorTimelockControl-constructor-contract-TimelockController-[`GovernorTimelockControl.constructor`]] +:xref-GovernorTimelockControl-constructor-contract-TimelockController-: xref:governance.adoc#GovernorTimelockControl-constructor-contract-TimelockController- +:GovernorTimelockControl-supportsInterface: pass:normal[xref:governance.adoc#GovernorTimelockControl-supportsInterface-bytes4-[`GovernorTimelockControl.supportsInterface`]] +:xref-GovernorTimelockControl-supportsInterface-bytes4-: xref:governance.adoc#GovernorTimelockControl-supportsInterface-bytes4- +:GovernorTimelockControl-state: pass:normal[xref:governance.adoc#GovernorTimelockControl-state-uint256-[`GovernorTimelockControl.state`]] +:xref-GovernorTimelockControl-state-uint256-: xref:governance.adoc#GovernorTimelockControl-state-uint256- +:GovernorTimelockControl-timelock: pass:normal[xref:governance.adoc#GovernorTimelockControl-timelock--[`GovernorTimelockControl.timelock`]] +:xref-GovernorTimelockControl-timelock--: xref:governance.adoc#GovernorTimelockControl-timelock-- +:GovernorTimelockControl-proposalEta: pass:normal[xref:governance.adoc#GovernorTimelockControl-proposalEta-uint256-[`GovernorTimelockControl.proposalEta`]] +:xref-GovernorTimelockControl-proposalEta-uint256-: xref:governance.adoc#GovernorTimelockControl-proposalEta-uint256- +:GovernorTimelockControl-queue: pass:normal[xref:governance.adoc#GovernorTimelockControl-queue-address---uint256---bytes---bytes32-[`GovernorTimelockControl.queue`]] +:xref-GovernorTimelockControl-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockControl-queue-address---uint256---bytes---bytes32- +:GovernorTimelockControl-_execute: pass:normal[xref:governance.adoc#GovernorTimelockControl-_execute-uint256-address---uint256---bytes---bytes32-[`GovernorTimelockControl._execute`]] +:xref-GovernorTimelockControl-_execute-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockControl-_execute-uint256-address---uint256---bytes---bytes32- +:GovernorTimelockControl-_cancel: pass:normal[xref:governance.adoc#GovernorTimelockControl-_cancel-address---uint256---bytes---bytes32-[`GovernorTimelockControl._cancel`]] +:xref-GovernorTimelockControl-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockControl-_cancel-address---uint256---bytes---bytes32- +:GovernorTimelockControl-_executor: pass:normal[xref:governance.adoc#GovernorTimelockControl-_executor--[`GovernorTimelockControl._executor`]] +:xref-GovernorTimelockControl-_executor--: xref:governance.adoc#GovernorTimelockControl-_executor-- +:GovernorTimelockControl-updateTimelock: pass:normal[xref:governance.adoc#GovernorTimelockControl-updateTimelock-contract-TimelockController-[`GovernorTimelockControl.updateTimelock`]] +:xref-GovernorTimelockControl-updateTimelock-contract-TimelockController-: xref:governance.adoc#GovernorTimelockControl-updateTimelock-contract-TimelockController- +:GovernorTimelockControl-TimelockChange: pass:normal[xref:governance.adoc#GovernorTimelockControl-TimelockChange-address-address-[`GovernorTimelockControl.TimelockChange`]] +:xref-GovernorTimelockControl-TimelockChange-address-address-: xref:governance.adoc#GovernorTimelockControl-TimelockChange-address-address- +:GovernorVotes: pass:normal[xref:governance.adoc#GovernorVotes[`GovernorVotes`]] +:xref-GovernorVotes: xref:governance.adoc#GovernorVotes +:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-IVotes[`GovernorVotes.token`]] +:xref-GovernorVotes-token-contract-IVotes: xref:governance.adoc#GovernorVotes-token-contract-IVotes +:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-IVotes-[`GovernorVotes.constructor`]] +:xref-GovernorVotes-constructor-contract-IVotes-: xref:governance.adoc#GovernorVotes-constructor-contract-IVotes- +:GovernorVotes-getVotes: pass:normal[xref:governance.adoc#GovernorVotes-getVotes-address-uint256-[`GovernorVotes.getVotes`]] +:xref-GovernorVotes-getVotes-address-uint256-: xref:governance.adoc#GovernorVotes-getVotes-address-uint256- +:GovernorVotesComp: pass:normal[xref:governance.adoc#GovernorVotesComp[`GovernorVotesComp`]] +:xref-GovernorVotesComp: xref:governance.adoc#GovernorVotesComp +:GovernorVotesComp-token: pass:normal[xref:governance.adoc#GovernorVotesComp-token-contract-ERC20VotesComp[`GovernorVotesComp.token`]] +:xref-GovernorVotesComp-token-contract-ERC20VotesComp: xref:governance.adoc#GovernorVotesComp-token-contract-ERC20VotesComp +:GovernorVotesComp-constructor: pass:normal[xref:governance.adoc#GovernorVotesComp-constructor-contract-ERC20VotesComp-[`GovernorVotesComp.constructor`]] +:xref-GovernorVotesComp-constructor-contract-ERC20VotesComp-: xref:governance.adoc#GovernorVotesComp-constructor-contract-ERC20VotesComp- +:GovernorVotesComp-getVotes: pass:normal[xref:governance.adoc#GovernorVotesComp-getVotes-address-uint256-[`GovernorVotesComp.getVotes`]] +:xref-GovernorVotesComp-getVotes-address-uint256-: xref:governance.adoc#GovernorVotesComp-getVotes-address-uint256- +:GovernorVotesQuorumFraction: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction[`GovernorVotesQuorumFraction`]] +:xref-GovernorVotesQuorumFraction: xref:governance.adoc#GovernorVotesQuorumFraction +:GovernorVotesQuorumFraction-constructor: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-constructor-uint256-[`GovernorVotesQuorumFraction.constructor`]] +:xref-GovernorVotesQuorumFraction-constructor-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-constructor-uint256- +:GovernorVotesQuorumFraction-quorumNumerator: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-quorumNumerator--[`GovernorVotesQuorumFraction.quorumNumerator`]] +:xref-GovernorVotesQuorumFraction-quorumNumerator--: xref:governance.adoc#GovernorVotesQuorumFraction-quorumNumerator-- +:GovernorVotesQuorumFraction-quorumDenominator: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-quorumDenominator--[`GovernorVotesQuorumFraction.quorumDenominator`]] +:xref-GovernorVotesQuorumFraction-quorumDenominator--: xref:governance.adoc#GovernorVotesQuorumFraction-quorumDenominator-- +:GovernorVotesQuorumFraction-quorum: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-quorum-uint256-[`GovernorVotesQuorumFraction.quorum`]] +:xref-GovernorVotesQuorumFraction-quorum-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-quorum-uint256- +:GovernorVotesQuorumFraction-updateQuorumNumerator: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-updateQuorumNumerator-uint256-[`GovernorVotesQuorumFraction.updateQuorumNumerator`]] +:xref-GovernorVotesQuorumFraction-updateQuorumNumerator-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-updateQuorumNumerator-uint256- +:GovernorVotesQuorumFraction-_updateQuorumNumerator: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-_updateQuorumNumerator-uint256-[`GovernorVotesQuorumFraction._updateQuorumNumerator`]] +:xref-GovernorVotesQuorumFraction-_updateQuorumNumerator-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-_updateQuorumNumerator-uint256- +:GovernorVotesQuorumFraction-QuorumNumeratorUpdated: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-QuorumNumeratorUpdated-uint256-uint256-[`GovernorVotesQuorumFraction.QuorumNumeratorUpdated`]] +:xref-GovernorVotesQuorumFraction-QuorumNumeratorUpdated-uint256-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-QuorumNumeratorUpdated-uint256-uint256- +:IGovernorTimelock: pass:normal[xref:governance.adoc#IGovernorTimelock[`IGovernorTimelock`]] +:xref-IGovernorTimelock: xref:governance.adoc#IGovernorTimelock +:IGovernorTimelock-timelock: pass:normal[xref:governance.adoc#IGovernorTimelock-timelock--[`IGovernorTimelock.timelock`]] +:xref-IGovernorTimelock-timelock--: xref:governance.adoc#IGovernorTimelock-timelock-- +:IGovernorTimelock-proposalEta: pass:normal[xref:governance.adoc#IGovernorTimelock-proposalEta-uint256-[`IGovernorTimelock.proposalEta`]] +:xref-IGovernorTimelock-proposalEta-uint256-: xref:governance.adoc#IGovernorTimelock-proposalEta-uint256- +:IGovernorTimelock-queue: pass:normal[xref:governance.adoc#IGovernorTimelock-queue-address---uint256---bytes---bytes32-[`IGovernorTimelock.queue`]] +:xref-IGovernorTimelock-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernorTimelock-queue-address---uint256---bytes---bytes32- +:IGovernorTimelock-ProposalQueued: pass:normal[xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256-[`IGovernorTimelock.ProposalQueued`]] +:xref-IGovernorTimelock-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256- +:IVotes: pass:normal[xref:governance.adoc#IVotes[`IVotes`]] +:xref-IVotes: xref:governance.adoc#IVotes +:IVotes-getVotes: pass:normal[xref:governance.adoc#IVotes-getVotes-address-[`IVotes.getVotes`]] +:xref-IVotes-getVotes-address-: xref:governance.adoc#IVotes-getVotes-address- +:IVotes-getPastVotes: pass:normal[xref:governance.adoc#IVotes-getPastVotes-address-uint256-[`IVotes.getPastVotes`]] +:xref-IVotes-getPastVotes-address-uint256-: xref:governance.adoc#IVotes-getPastVotes-address-uint256- +:IVotes-getPastTotalSupply: pass:normal[xref:governance.adoc#IVotes-getPastTotalSupply-uint256-[`IVotes.getPastTotalSupply`]] +:xref-IVotes-getPastTotalSupply-uint256-: xref:governance.adoc#IVotes-getPastTotalSupply-uint256- +:IVotes-delegates: pass:normal[xref:governance.adoc#IVotes-delegates-address-[`IVotes.delegates`]] +:xref-IVotes-delegates-address-: xref:governance.adoc#IVotes-delegates-address- +:IVotes-delegate: pass:normal[xref:governance.adoc#IVotes-delegate-address-[`IVotes.delegate`]] +:xref-IVotes-delegate-address-: xref:governance.adoc#IVotes-delegate-address- +:IVotes-delegateBySig: pass:normal[xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`IVotes.delegateBySig`]] +:xref-IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:IVotes-DelegateChanged: pass:normal[xref:governance.adoc#IVotes-DelegateChanged-address-address-address-[`IVotes.DelegateChanged`]] +:xref-IVotes-DelegateChanged-address-address-address-: xref:governance.adoc#IVotes-DelegateChanged-address-address-address- +:IVotes-DelegateVotesChanged: pass:normal[xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256-[`IVotes.DelegateVotesChanged`]] +:xref-IVotes-DelegateVotesChanged-address-uint256-uint256-: xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256- +:Votes: pass:normal[xref:governance.adoc#Votes[`Votes`]] +:xref-Votes: xref:governance.adoc#Votes +:Votes-getVotes: pass:normal[xref:governance.adoc#Votes-getVotes-address-[`Votes.getVotes`]] +:xref-Votes-getVotes-address-: xref:governance.adoc#Votes-getVotes-address- +:Votes-getPastVotes: pass:normal[xref:governance.adoc#Votes-getPastVotes-address-uint256-[`Votes.getPastVotes`]] +:xref-Votes-getPastVotes-address-uint256-: xref:governance.adoc#Votes-getPastVotes-address-uint256- +:Votes-getPastTotalSupply: pass:normal[xref:governance.adoc#Votes-getPastTotalSupply-uint256-[`Votes.getPastTotalSupply`]] +:xref-Votes-getPastTotalSupply-uint256-: xref:governance.adoc#Votes-getPastTotalSupply-uint256- +:Votes-_getTotalSupply: pass:normal[xref:governance.adoc#Votes-_getTotalSupply--[`Votes._getTotalSupply`]] +:xref-Votes-_getTotalSupply--: xref:governance.adoc#Votes-_getTotalSupply-- +:Votes-delegates: pass:normal[xref:governance.adoc#Votes-delegates-address-[`Votes.delegates`]] +:xref-Votes-delegates-address-: xref:governance.adoc#Votes-delegates-address- +:Votes-delegate: pass:normal[xref:governance.adoc#Votes-delegate-address-[`Votes.delegate`]] +:xref-Votes-delegate-address-: xref:governance.adoc#Votes-delegate-address- +:Votes-delegateBySig: pass:normal[xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`Votes.delegateBySig`]] +:xref-Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:Votes-_delegate: pass:normal[xref:governance.adoc#Votes-_delegate-address-address-[`Votes._delegate`]] +:xref-Votes-_delegate-address-address-: xref:governance.adoc#Votes-_delegate-address-address- +:Votes-_transferVotingUnits: pass:normal[xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256-[`Votes._transferVotingUnits`]] +:xref-Votes-_transferVotingUnits-address-address-uint256-: xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256- +:Votes-_useNonce: pass:normal[xref:governance.adoc#Votes-_useNonce-address-[`Votes._useNonce`]] +:xref-Votes-_useNonce-address-: xref:governance.adoc#Votes-_useNonce-address- +:Votes-nonces: pass:normal[xref:governance.adoc#Votes-nonces-address-[`Votes.nonces`]] +:xref-Votes-nonces-address-: xref:governance.adoc#Votes-nonces-address- +:Votes-DOMAIN_SEPARATOR: pass:normal[xref:governance.adoc#Votes-DOMAIN_SEPARATOR--[`Votes.DOMAIN_SEPARATOR`]] +:xref-Votes-DOMAIN_SEPARATOR--: xref:governance.adoc#Votes-DOMAIN_SEPARATOR-- +:Votes-_getVotingUnits: pass:normal[xref:governance.adoc#Votes-_getVotingUnits-address-[`Votes._getVotingUnits`]] +:xref-Votes-_getVotingUnits-address-: xref:governance.adoc#Votes-_getVotingUnits-address- +:IERC1271: pass:normal[xref:interfaces.adoc#IERC1271[`IERC1271`]] +:xref-IERC1271: xref:interfaces.adoc#IERC1271 +:IERC1271-isValidSignature: pass:normal[xref:interfaces.adoc#IERC1271-isValidSignature-bytes32-bytes-[`IERC1271.isValidSignature`]] +:xref-IERC1271-isValidSignature-bytes32-bytes-: xref:interfaces.adoc#IERC1271-isValidSignature-bytes32-bytes- +:IERC1363: pass:normal[xref:interfaces.adoc#IERC1363[`IERC1363`]] +:xref-IERC1363: xref:interfaces.adoc#IERC1363 +:IERC1363-transferAndCall: pass:normal[xref:interfaces.adoc#IERC1363-transferAndCall-address-uint256-[`IERC1363.transferAndCall`]] +:xref-IERC1363-transferAndCall-address-uint256-: xref:interfaces.adoc#IERC1363-transferAndCall-address-uint256- +:IERC1363-transferAndCall: pass:normal[xref:interfaces.adoc#IERC1363-transferAndCall-address-uint256-bytes-[`IERC1363.transferAndCall`]] +:xref-IERC1363-transferAndCall-address-uint256-bytes-: xref:interfaces.adoc#IERC1363-transferAndCall-address-uint256-bytes- +:IERC1363-transferFromAndCall: pass:normal[xref:interfaces.adoc#IERC1363-transferFromAndCall-address-address-uint256-[`IERC1363.transferFromAndCall`]] +:xref-IERC1363-transferFromAndCall-address-address-uint256-: xref:interfaces.adoc#IERC1363-transferFromAndCall-address-address-uint256- +:IERC1363-transferFromAndCall: pass:normal[xref:interfaces.adoc#IERC1363-transferFromAndCall-address-address-uint256-bytes-[`IERC1363.transferFromAndCall`]] +:xref-IERC1363-transferFromAndCall-address-address-uint256-bytes-: xref:interfaces.adoc#IERC1363-transferFromAndCall-address-address-uint256-bytes- +:IERC1363-approveAndCall: pass:normal[xref:interfaces.adoc#IERC1363-approveAndCall-address-uint256-[`IERC1363.approveAndCall`]] +:xref-IERC1363-approveAndCall-address-uint256-: xref:interfaces.adoc#IERC1363-approveAndCall-address-uint256- +:IERC1363-approveAndCall: pass:normal[xref:interfaces.adoc#IERC1363-approveAndCall-address-uint256-bytes-[`IERC1363.approveAndCall`]] +:xref-IERC1363-approveAndCall-address-uint256-bytes-: xref:interfaces.adoc#IERC1363-approveAndCall-address-uint256-bytes- +:IERC1363Receiver: pass:normal[xref:interfaces.adoc#IERC1363Receiver[`IERC1363Receiver`]] +:xref-IERC1363Receiver: xref:interfaces.adoc#IERC1363Receiver +:IERC1363Receiver-onTransferReceived: pass:normal[xref:interfaces.adoc#IERC1363Receiver-onTransferReceived-address-address-uint256-bytes-[`IERC1363Receiver.onTransferReceived`]] +:xref-IERC1363Receiver-onTransferReceived-address-address-uint256-bytes-: xref:interfaces.adoc#IERC1363Receiver-onTransferReceived-address-address-uint256-bytes- +:IERC1363Spender: pass:normal[xref:interfaces.adoc#IERC1363Spender[`IERC1363Spender`]] +:xref-IERC1363Spender: xref:interfaces.adoc#IERC1363Spender +:IERC1363Spender-onApprovalReceived: pass:normal[xref:interfaces.adoc#IERC1363Spender-onApprovalReceived-address-uint256-bytes-[`IERC1363Spender.onApprovalReceived`]] +:xref-IERC1363Spender-onApprovalReceived-address-uint256-bytes-: xref:interfaces.adoc#IERC1363Spender-onApprovalReceived-address-uint256-bytes- +:IERC2981: pass:normal[xref:interfaces.adoc#IERC2981[`IERC2981`]] +:xref-IERC2981: xref:interfaces.adoc#IERC2981 +:IERC2981-royaltyInfo: pass:normal[xref:interfaces.adoc#IERC2981-royaltyInfo-uint256-uint256-[`IERC2981.royaltyInfo`]] +:xref-IERC2981-royaltyInfo-uint256-uint256-: xref:interfaces.adoc#IERC2981-royaltyInfo-uint256-uint256- +:IERC3156FlashBorrower: pass:normal[xref:interfaces.adoc#IERC3156FlashBorrower[`IERC3156FlashBorrower`]] +:xref-IERC3156FlashBorrower: xref:interfaces.adoc#IERC3156FlashBorrower +:IERC3156FlashBorrower-onFlashLoan: pass:normal[xref:interfaces.adoc#IERC3156FlashBorrower-onFlashLoan-address-address-uint256-uint256-bytes-[`IERC3156FlashBorrower.onFlashLoan`]] +:xref-IERC3156FlashBorrower-onFlashLoan-address-address-uint256-uint256-bytes-: xref:interfaces.adoc#IERC3156FlashBorrower-onFlashLoan-address-address-uint256-uint256-bytes- +:IERC3156FlashLender: pass:normal[xref:interfaces.adoc#IERC3156FlashLender[`IERC3156FlashLender`]] +:xref-IERC3156FlashLender: xref:interfaces.adoc#IERC3156FlashLender +:IERC3156FlashLender-maxFlashLoan: pass:normal[xref:interfaces.adoc#IERC3156FlashLender-maxFlashLoan-address-[`IERC3156FlashLender.maxFlashLoan`]] +:xref-IERC3156FlashLender-maxFlashLoan-address-: xref:interfaces.adoc#IERC3156FlashLender-maxFlashLoan-address- +:IERC3156FlashLender-flashFee: pass:normal[xref:interfaces.adoc#IERC3156FlashLender-flashFee-address-uint256-[`IERC3156FlashLender.flashFee`]] +:xref-IERC3156FlashLender-flashFee-address-uint256-: xref:interfaces.adoc#IERC3156FlashLender-flashFee-address-uint256- +:IERC3156FlashLender-flashLoan: pass:normal[xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-[`IERC3156FlashLender.flashLoan`]] +:xref-IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-: xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes- +:IERC1822Proxiable: pass:normal[xref:interfaces.adoc#IERC1822Proxiable[`IERC1822Proxiable`]] +:xref-IERC1822Proxiable: xref:interfaces.adoc#IERC1822Proxiable +:IERC1822Proxiable-proxiableUUID: pass:normal[xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID--[`IERC1822Proxiable.proxiableUUID`]] +:xref-IERC1822Proxiable-proxiableUUID--: xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID-- +:IERC2612: pass:normal[xref:interfaces.adoc#IERC2612[`IERC2612`]] +:xref-IERC2612: xref:interfaces.adoc#IERC2612 +:ERC2771Context: pass:normal[xref:metatx.adoc#ERC2771Context[`ERC2771Context`]] +:xref-ERC2771Context: xref:metatx.adoc#ERC2771Context +:ERC2771Context-constructor: pass:normal[xref:metatx.adoc#ERC2771Context-constructor-address-[`ERC2771Context.constructor`]] +:xref-ERC2771Context-constructor-address-: xref:metatx.adoc#ERC2771Context-constructor-address- +:ERC2771Context-isTrustedForwarder: pass:normal[xref:metatx.adoc#ERC2771Context-isTrustedForwarder-address-[`ERC2771Context.isTrustedForwarder`]] +:xref-ERC2771Context-isTrustedForwarder-address-: xref:metatx.adoc#ERC2771Context-isTrustedForwarder-address- +:ERC2771Context-_msgSender: pass:normal[xref:metatx.adoc#ERC2771Context-_msgSender--[`ERC2771Context._msgSender`]] +:xref-ERC2771Context-_msgSender--: xref:metatx.adoc#ERC2771Context-_msgSender-- +:ERC2771Context-_msgData: pass:normal[xref:metatx.adoc#ERC2771Context-_msgData--[`ERC2771Context._msgData`]] +:xref-ERC2771Context-_msgData--: xref:metatx.adoc#ERC2771Context-_msgData-- +:MinimalForwarder: pass:normal[xref:metatx.adoc#MinimalForwarder[`MinimalForwarder`]] +:xref-MinimalForwarder: xref:metatx.adoc#MinimalForwarder +:MinimalForwarder-getNonce: pass:normal[xref:metatx.adoc#MinimalForwarder-getNonce-address-[`MinimalForwarder.getNonce`]] +:xref-MinimalForwarder-getNonce-address-: xref:metatx.adoc#MinimalForwarder-getNonce-address- +:MinimalForwarder-verify: pass:normal[xref:metatx.adoc#MinimalForwarder-verify-struct-MinimalForwarder-ForwardRequest-bytes-[`MinimalForwarder.verify`]] +:xref-MinimalForwarder-verify-struct-MinimalForwarder-ForwardRequest-bytes-: xref:metatx.adoc#MinimalForwarder-verify-struct-MinimalForwarder-ForwardRequest-bytes- +:MinimalForwarder-execute: pass:normal[xref:metatx.adoc#MinimalForwarder-execute-struct-MinimalForwarder-ForwardRequest-bytes-[`MinimalForwarder.execute`]] +:xref-MinimalForwarder-execute-struct-MinimalForwarder-ForwardRequest-bytes-: xref:metatx.adoc#MinimalForwarder-execute-struct-MinimalForwarder-ForwardRequest-bytes- +:MinimalForwarder-ForwardRequest: pass:normal[xref:metatx.adoc#MinimalForwarder-ForwardRequest[`MinimalForwarder.ForwardRequest`]] +:xref-MinimalForwarder-ForwardRequest: xref:metatx.adoc#MinimalForwarder-ForwardRequest +:Clones: pass:normal[xref:proxy.adoc#Clones[`Clones`]] +:xref-Clones: xref:proxy.adoc#Clones +:Clones-clone: pass:normal[xref:proxy.adoc#Clones-clone-address-[`Clones.clone`]] +:xref-Clones-clone-address-: xref:proxy.adoc#Clones-clone-address- +:Clones-cloneDeterministic: pass:normal[xref:proxy.adoc#Clones-cloneDeterministic-address-bytes32-[`Clones.cloneDeterministic`]] +:xref-Clones-cloneDeterministic-address-bytes32-: xref:proxy.adoc#Clones-cloneDeterministic-address-bytes32- +:Clones-predictDeterministicAddress: pass:normal[xref:proxy.adoc#Clones-predictDeterministicAddress-address-bytes32-address-[`Clones.predictDeterministicAddress`]] +:xref-Clones-predictDeterministicAddress-address-bytes32-address-: xref:proxy.adoc#Clones-predictDeterministicAddress-address-bytes32-address- +:Clones-predictDeterministicAddress: pass:normal[xref:proxy.adoc#Clones-predictDeterministicAddress-address-bytes32-[`Clones.predictDeterministicAddress`]] +:xref-Clones-predictDeterministicAddress-address-bytes32-: xref:proxy.adoc#Clones-predictDeterministicAddress-address-bytes32- +:ERC1967Proxy: pass:normal[xref:proxy.adoc#ERC1967Proxy[`ERC1967Proxy`]] +:xref-ERC1967Proxy: xref:proxy.adoc#ERC1967Proxy +:ERC1967Proxy-constructor: pass:normal[xref:proxy.adoc#ERC1967Proxy-constructor-address-bytes-[`ERC1967Proxy.constructor`]] +:xref-ERC1967Proxy-constructor-address-bytes-: xref:proxy.adoc#ERC1967Proxy-constructor-address-bytes- +:ERC1967Proxy-_implementation: pass:normal[xref:proxy.adoc#ERC1967Proxy-_implementation--[`ERC1967Proxy._implementation`]] +:xref-ERC1967Proxy-_implementation--: xref:proxy.adoc#ERC1967Proxy-_implementation-- +:ERC1967Upgrade: pass:normal[xref:proxy.adoc#ERC1967Upgrade[`ERC1967Upgrade`]] +:xref-ERC1967Upgrade: xref:proxy.adoc#ERC1967Upgrade +:ERC1967Upgrade-_IMPLEMENTATION_SLOT: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_IMPLEMENTATION_SLOT-bytes32[`ERC1967Upgrade._IMPLEMENTATION_SLOT`]] +:xref-ERC1967Upgrade-_IMPLEMENTATION_SLOT-bytes32: xref:proxy.adoc#ERC1967Upgrade-_IMPLEMENTATION_SLOT-bytes32 +:ERC1967Upgrade-_ADMIN_SLOT: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_ADMIN_SLOT-bytes32[`ERC1967Upgrade._ADMIN_SLOT`]] +:xref-ERC1967Upgrade-_ADMIN_SLOT-bytes32: xref:proxy.adoc#ERC1967Upgrade-_ADMIN_SLOT-bytes32 +:ERC1967Upgrade-_BEACON_SLOT: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_BEACON_SLOT-bytes32[`ERC1967Upgrade._BEACON_SLOT`]] +:xref-ERC1967Upgrade-_BEACON_SLOT-bytes32: xref:proxy.adoc#ERC1967Upgrade-_BEACON_SLOT-bytes32 +:ERC1967Upgrade-_getImplementation: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_getImplementation--[`ERC1967Upgrade._getImplementation`]] +:xref-ERC1967Upgrade-_getImplementation--: xref:proxy.adoc#ERC1967Upgrade-_getImplementation-- +:ERC1967Upgrade-_upgradeTo: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeTo-address-[`ERC1967Upgrade._upgradeTo`]] +:xref-ERC1967Upgrade-_upgradeTo-address-: xref:proxy.adoc#ERC1967Upgrade-_upgradeTo-address- +:ERC1967Upgrade-_upgradeToAndCall: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCall`]] +:xref-ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool- +:ERC1967Upgrade-_upgradeToAndCallUUPS: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallUUPS`]] +:xref-ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool- +:ERC1967Upgrade-_getAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_getAdmin--[`ERC1967Upgrade._getAdmin`]] +:xref-ERC1967Upgrade-_getAdmin--: xref:proxy.adoc#ERC1967Upgrade-_getAdmin-- +:ERC1967Upgrade-_changeAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_changeAdmin-address-[`ERC1967Upgrade._changeAdmin`]] +:xref-ERC1967Upgrade-_changeAdmin-address-: xref:proxy.adoc#ERC1967Upgrade-_changeAdmin-address- +:ERC1967Upgrade-_getBeacon: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_getBeacon--[`ERC1967Upgrade._getBeacon`]] +:xref-ERC1967Upgrade-_getBeacon--: xref:proxy.adoc#ERC1967Upgrade-_getBeacon-- +:ERC1967Upgrade-_upgradeBeaconToAndCall: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeBeaconToAndCall-address-bytes-bool-[`ERC1967Upgrade._upgradeBeaconToAndCall`]] +:xref-ERC1967Upgrade-_upgradeBeaconToAndCall-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeBeaconToAndCall-address-bytes-bool- +:ERC1967Upgrade-Upgraded: pass:normal[xref:proxy.adoc#ERC1967Upgrade-Upgraded-address-[`ERC1967Upgrade.Upgraded`]] +:xref-ERC1967Upgrade-Upgraded-address-: xref:proxy.adoc#ERC1967Upgrade-Upgraded-address- +:ERC1967Upgrade-AdminChanged: pass:normal[xref:proxy.adoc#ERC1967Upgrade-AdminChanged-address-address-[`ERC1967Upgrade.AdminChanged`]] +:xref-ERC1967Upgrade-AdminChanged-address-address-: xref:proxy.adoc#ERC1967Upgrade-AdminChanged-address-address- +:ERC1967Upgrade-BeaconUpgraded: pass:normal[xref:proxy.adoc#ERC1967Upgrade-BeaconUpgraded-address-[`ERC1967Upgrade.BeaconUpgraded`]] +:xref-ERC1967Upgrade-BeaconUpgraded-address-: xref:proxy.adoc#ERC1967Upgrade-BeaconUpgraded-address- +:Proxy: pass:normal[xref:proxy.adoc#Proxy[`Proxy`]] +:xref-Proxy: xref:proxy.adoc#Proxy +:Proxy-_delegate: pass:normal[xref:proxy.adoc#Proxy-_delegate-address-[`Proxy._delegate`]] +:xref-Proxy-_delegate-address-: xref:proxy.adoc#Proxy-_delegate-address- +:Proxy-_implementation: pass:normal[xref:proxy.adoc#Proxy-_implementation--[`Proxy._implementation`]] +:xref-Proxy-_implementation--: xref:proxy.adoc#Proxy-_implementation-- +:Proxy-_fallback: pass:normal[xref:proxy.adoc#Proxy-_fallback--[`Proxy._fallback`]] +:xref-Proxy-_fallback--: xref:proxy.adoc#Proxy-_fallback-- +:Proxy-fallback: pass:normal[xref:proxy.adoc#Proxy-fallback--[`Proxy.fallback`]] +:xref-Proxy-fallback--: xref:proxy.adoc#Proxy-fallback-- +:Proxy-receive: pass:normal[xref:proxy.adoc#Proxy-receive--[`Proxy.receive`]] +:xref-Proxy-receive--: xref:proxy.adoc#Proxy-receive-- +:Proxy-_beforeFallback: pass:normal[xref:proxy.adoc#Proxy-_beforeFallback--[`Proxy._beforeFallback`]] +:xref-Proxy-_beforeFallback--: xref:proxy.adoc#Proxy-_beforeFallback-- +:BeaconProxy: pass:normal[xref:proxy.adoc#BeaconProxy[`BeaconProxy`]] +:xref-BeaconProxy: xref:proxy.adoc#BeaconProxy +:BeaconProxy-constructor: pass:normal[xref:proxy.adoc#BeaconProxy-constructor-address-bytes-[`BeaconProxy.constructor`]] +:xref-BeaconProxy-constructor-address-bytes-: xref:proxy.adoc#BeaconProxy-constructor-address-bytes- +:BeaconProxy-_beacon: pass:normal[xref:proxy.adoc#BeaconProxy-_beacon--[`BeaconProxy._beacon`]] +:xref-BeaconProxy-_beacon--: xref:proxy.adoc#BeaconProxy-_beacon-- +:BeaconProxy-_implementation: pass:normal[xref:proxy.adoc#BeaconProxy-_implementation--[`BeaconProxy._implementation`]] +:xref-BeaconProxy-_implementation--: xref:proxy.adoc#BeaconProxy-_implementation-- +:BeaconProxy-_setBeacon: pass:normal[xref:proxy.adoc#BeaconProxy-_setBeacon-address-bytes-[`BeaconProxy._setBeacon`]] +:xref-BeaconProxy-_setBeacon-address-bytes-: xref:proxy.adoc#BeaconProxy-_setBeacon-address-bytes- +:IBeacon: pass:normal[xref:proxy.adoc#IBeacon[`IBeacon`]] +:xref-IBeacon: xref:proxy.adoc#IBeacon +:IBeacon-implementation: pass:normal[xref:proxy.adoc#IBeacon-implementation--[`IBeacon.implementation`]] +:xref-IBeacon-implementation--: xref:proxy.adoc#IBeacon-implementation-- +:UpgradeableBeacon: pass:normal[xref:proxy.adoc#UpgradeableBeacon[`UpgradeableBeacon`]] +:xref-UpgradeableBeacon: xref:proxy.adoc#UpgradeableBeacon +:UpgradeableBeacon-constructor: pass:normal[xref:proxy.adoc#UpgradeableBeacon-constructor-address-[`UpgradeableBeacon.constructor`]] +:xref-UpgradeableBeacon-constructor-address-: xref:proxy.adoc#UpgradeableBeacon-constructor-address- +:UpgradeableBeacon-implementation: pass:normal[xref:proxy.adoc#UpgradeableBeacon-implementation--[`UpgradeableBeacon.implementation`]] +:xref-UpgradeableBeacon-implementation--: xref:proxy.adoc#UpgradeableBeacon-implementation-- +:UpgradeableBeacon-upgradeTo: pass:normal[xref:proxy.adoc#UpgradeableBeacon-upgradeTo-address-[`UpgradeableBeacon.upgradeTo`]] +:xref-UpgradeableBeacon-upgradeTo-address-: xref:proxy.adoc#UpgradeableBeacon-upgradeTo-address- +:UpgradeableBeacon-Upgraded: pass:normal[xref:proxy.adoc#UpgradeableBeacon-Upgraded-address-[`UpgradeableBeacon.Upgraded`]] +:xref-UpgradeableBeacon-Upgraded-address-: xref:proxy.adoc#UpgradeableBeacon-Upgraded-address- +:ProxyAdmin: pass:normal[xref:proxy.adoc#ProxyAdmin[`ProxyAdmin`]] +:xref-ProxyAdmin: xref:proxy.adoc#ProxyAdmin +:ProxyAdmin-getProxyImplementation: pass:normal[xref:proxy.adoc#ProxyAdmin-getProxyImplementation-contract-TransparentUpgradeableProxy-[`ProxyAdmin.getProxyImplementation`]] +:xref-ProxyAdmin-getProxyImplementation-contract-TransparentUpgradeableProxy-: xref:proxy.adoc#ProxyAdmin-getProxyImplementation-contract-TransparentUpgradeableProxy- +:ProxyAdmin-getProxyAdmin: pass:normal[xref:proxy.adoc#ProxyAdmin-getProxyAdmin-contract-TransparentUpgradeableProxy-[`ProxyAdmin.getProxyAdmin`]] +:xref-ProxyAdmin-getProxyAdmin-contract-TransparentUpgradeableProxy-: xref:proxy.adoc#ProxyAdmin-getProxyAdmin-contract-TransparentUpgradeableProxy- +:ProxyAdmin-changeProxyAdmin: pass:normal[xref:proxy.adoc#ProxyAdmin-changeProxyAdmin-contract-TransparentUpgradeableProxy-address-[`ProxyAdmin.changeProxyAdmin`]] +:xref-ProxyAdmin-changeProxyAdmin-contract-TransparentUpgradeableProxy-address-: xref:proxy.adoc#ProxyAdmin-changeProxyAdmin-contract-TransparentUpgradeableProxy-address- +:ProxyAdmin-upgrade: pass:normal[xref:proxy.adoc#ProxyAdmin-upgrade-contract-TransparentUpgradeableProxy-address-[`ProxyAdmin.upgrade`]] +:xref-ProxyAdmin-upgrade-contract-TransparentUpgradeableProxy-address-: xref:proxy.adoc#ProxyAdmin-upgrade-contract-TransparentUpgradeableProxy-address- +:ProxyAdmin-upgradeAndCall: pass:normal[xref:proxy.adoc#ProxyAdmin-upgradeAndCall-contract-TransparentUpgradeableProxy-address-bytes-[`ProxyAdmin.upgradeAndCall`]] +:xref-ProxyAdmin-upgradeAndCall-contract-TransparentUpgradeableProxy-address-bytes-: xref:proxy.adoc#ProxyAdmin-upgradeAndCall-contract-TransparentUpgradeableProxy-address-bytes- +:TransparentUpgradeableProxy: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy[`TransparentUpgradeableProxy`]] +:xref-TransparentUpgradeableProxy: xref:proxy.adoc#TransparentUpgradeableProxy +:TransparentUpgradeableProxy-ifAdmin: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-ifAdmin--[`TransparentUpgradeableProxy.ifAdmin`]] +:xref-TransparentUpgradeableProxy-ifAdmin--: xref:proxy.adoc#TransparentUpgradeableProxy-ifAdmin-- +:TransparentUpgradeableProxy-constructor: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-constructor-address-address-bytes-[`TransparentUpgradeableProxy.constructor`]] +:xref-TransparentUpgradeableProxy-constructor-address-address-bytes-: xref:proxy.adoc#TransparentUpgradeableProxy-constructor-address-address-bytes- +:TransparentUpgradeableProxy-admin: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-admin--[`TransparentUpgradeableProxy.admin`]] +:xref-TransparentUpgradeableProxy-admin--: xref:proxy.adoc#TransparentUpgradeableProxy-admin-- +:TransparentUpgradeableProxy-implementation: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-implementation--[`TransparentUpgradeableProxy.implementation`]] +:xref-TransparentUpgradeableProxy-implementation--: xref:proxy.adoc#TransparentUpgradeableProxy-implementation-- +:TransparentUpgradeableProxy-changeAdmin: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-changeAdmin-address-[`TransparentUpgradeableProxy.changeAdmin`]] +:xref-TransparentUpgradeableProxy-changeAdmin-address-: xref:proxy.adoc#TransparentUpgradeableProxy-changeAdmin-address- +:TransparentUpgradeableProxy-upgradeTo: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-upgradeTo-address-[`TransparentUpgradeableProxy.upgradeTo`]] +:xref-TransparentUpgradeableProxy-upgradeTo-address-: xref:proxy.adoc#TransparentUpgradeableProxy-upgradeTo-address- +:TransparentUpgradeableProxy-upgradeToAndCall: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-upgradeToAndCall-address-bytes-[`TransparentUpgradeableProxy.upgradeToAndCall`]] +:xref-TransparentUpgradeableProxy-upgradeToAndCall-address-bytes-: xref:proxy.adoc#TransparentUpgradeableProxy-upgradeToAndCall-address-bytes- +:TransparentUpgradeableProxy-_admin: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-_admin--[`TransparentUpgradeableProxy._admin`]] +:xref-TransparentUpgradeableProxy-_admin--: xref:proxy.adoc#TransparentUpgradeableProxy-_admin-- +:TransparentUpgradeableProxy-_beforeFallback: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-_beforeFallback--[`TransparentUpgradeableProxy._beforeFallback`]] +:xref-TransparentUpgradeableProxy-_beforeFallback--: xref:proxy.adoc#TransparentUpgradeableProxy-_beforeFallback-- +:Initializable: pass:normal[xref:proxy.adoc#Initializable[`Initializable`]] +:xref-Initializable: xref:proxy.adoc#Initializable +:Initializable-initializer: pass:normal[xref:proxy.adoc#Initializable-initializer--[`Initializable.initializer`]] +:xref-Initializable-initializer--: xref:proxy.adoc#Initializable-initializer-- +:Initializable-onlyInitializing: pass:normal[xref:proxy.adoc#Initializable-onlyInitializing--[`Initializable.onlyInitializing`]] +:xref-Initializable-onlyInitializing--: xref:proxy.adoc#Initializable-onlyInitializing-- +:UUPSUpgradeable: pass:normal[xref:proxy.adoc#UUPSUpgradeable[`UUPSUpgradeable`]] +:xref-UUPSUpgradeable: xref:proxy.adoc#UUPSUpgradeable +:UUPSUpgradeable-onlyProxy: pass:normal[xref:proxy.adoc#UUPSUpgradeable-onlyProxy--[`UUPSUpgradeable.onlyProxy`]] +:xref-UUPSUpgradeable-onlyProxy--: xref:proxy.adoc#UUPSUpgradeable-onlyProxy-- +:UUPSUpgradeable-notDelegated: pass:normal[xref:proxy.adoc#UUPSUpgradeable-notDelegated--[`UUPSUpgradeable.notDelegated`]] +:xref-UUPSUpgradeable-notDelegated--: xref:proxy.adoc#UUPSUpgradeable-notDelegated-- +:UUPSUpgradeable-proxiableUUID: pass:normal[xref:proxy.adoc#UUPSUpgradeable-proxiableUUID--[`UUPSUpgradeable.proxiableUUID`]] +:xref-UUPSUpgradeable-proxiableUUID--: xref:proxy.adoc#UUPSUpgradeable-proxiableUUID-- +:UUPSUpgradeable-upgradeTo: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address-[`UUPSUpgradeable.upgradeTo`]] +:xref-UUPSUpgradeable-upgradeTo-address-: xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address- +:UUPSUpgradeable-upgradeToAndCall: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeToAndCall-address-bytes-[`UUPSUpgradeable.upgradeToAndCall`]] +:xref-UUPSUpgradeable-upgradeToAndCall-address-bytes-: xref:proxy.adoc#UUPSUpgradeable-upgradeToAndCall-address-bytes- +:UUPSUpgradeable-_authorizeUpgrade: pass:normal[xref:proxy.adoc#UUPSUpgradeable-_authorizeUpgrade-address-[`UUPSUpgradeable._authorizeUpgrade`]] +:xref-UUPSUpgradeable-_authorizeUpgrade-address-: xref:proxy.adoc#UUPSUpgradeable-_authorizeUpgrade-address- +:Pausable: pass:normal[xref:security.adoc#Pausable[`Pausable`]] +:xref-Pausable: xref:security.adoc#Pausable +:Pausable-whenNotPaused: pass:normal[xref:security.adoc#Pausable-whenNotPaused--[`Pausable.whenNotPaused`]] +:xref-Pausable-whenNotPaused--: xref:security.adoc#Pausable-whenNotPaused-- +:Pausable-whenPaused: pass:normal[xref:security.adoc#Pausable-whenPaused--[`Pausable.whenPaused`]] +:xref-Pausable-whenPaused--: xref:security.adoc#Pausable-whenPaused-- +:Pausable-constructor: pass:normal[xref:security.adoc#Pausable-constructor--[`Pausable.constructor`]] +:xref-Pausable-constructor--: xref:security.adoc#Pausable-constructor-- +:Pausable-paused: pass:normal[xref:security.adoc#Pausable-paused--[`Pausable.paused`]] +:xref-Pausable-paused--: xref:security.adoc#Pausable-paused-- +:Pausable-_pause: pass:normal[xref:security.adoc#Pausable-_pause--[`Pausable._pause`]] +:xref-Pausable-_pause--: xref:security.adoc#Pausable-_pause-- +:Pausable-_unpause: pass:normal[xref:security.adoc#Pausable-_unpause--[`Pausable._unpause`]] +:xref-Pausable-_unpause--: xref:security.adoc#Pausable-_unpause-- +:Pausable-Paused: pass:normal[xref:security.adoc#Pausable-Paused-address-[`Pausable.Paused`]] +:xref-Pausable-Paused-address-: xref:security.adoc#Pausable-Paused-address- +:Pausable-Unpaused: pass:normal[xref:security.adoc#Pausable-Unpaused-address-[`Pausable.Unpaused`]] +:xref-Pausable-Unpaused-address-: xref:security.adoc#Pausable-Unpaused-address- +:PullPayment: pass:normal[xref:security.adoc#PullPayment[`PullPayment`]] +:xref-PullPayment: xref:security.adoc#PullPayment +:PullPayment-constructor: pass:normal[xref:security.adoc#PullPayment-constructor--[`PullPayment.constructor`]] +:xref-PullPayment-constructor--: xref:security.adoc#PullPayment-constructor-- +:PullPayment-withdrawPayments: pass:normal[xref:security.adoc#PullPayment-withdrawPayments-address-payable-[`PullPayment.withdrawPayments`]] +:xref-PullPayment-withdrawPayments-address-payable-: xref:security.adoc#PullPayment-withdrawPayments-address-payable- +:PullPayment-payments: pass:normal[xref:security.adoc#PullPayment-payments-address-[`PullPayment.payments`]] +:xref-PullPayment-payments-address-: xref:security.adoc#PullPayment-payments-address- +:PullPayment-_asyncTransfer: pass:normal[xref:security.adoc#PullPayment-_asyncTransfer-address-uint256-[`PullPayment._asyncTransfer`]] +:xref-PullPayment-_asyncTransfer-address-uint256-: xref:security.adoc#PullPayment-_asyncTransfer-address-uint256- +:ReentrancyGuard: pass:normal[xref:security.adoc#ReentrancyGuard[`ReentrancyGuard`]] +:xref-ReentrancyGuard: xref:security.adoc#ReentrancyGuard +:ReentrancyGuard-nonReentrant: pass:normal[xref:security.adoc#ReentrancyGuard-nonReentrant--[`ReentrancyGuard.nonReentrant`]] +:xref-ReentrancyGuard-nonReentrant--: xref:security.adoc#ReentrancyGuard-nonReentrant-- +:ReentrancyGuard-constructor: pass:normal[xref:security.adoc#ReentrancyGuard-constructor--[`ReentrancyGuard.constructor`]] +:xref-ReentrancyGuard-constructor--: xref:security.adoc#ReentrancyGuard-constructor-- +:Address: pass:normal[xref:utils.adoc#Address[`Address`]] +:xref-Address: xref:utils.adoc#Address +:Address-isContract: pass:normal[xref:utils.adoc#Address-isContract-address-[`Address.isContract`]] +:xref-Address-isContract-address-: xref:utils.adoc#Address-isContract-address- +:Address-sendValue: pass:normal[xref:utils.adoc#Address-sendValue-address-payable-uint256-[`Address.sendValue`]] +:xref-Address-sendValue-address-payable-uint256-: xref:utils.adoc#Address-sendValue-address-payable-uint256- +:Address-functionCall: pass:normal[xref:utils.adoc#Address-functionCall-address-bytes-[`Address.functionCall`]] +:xref-Address-functionCall-address-bytes-: xref:utils.adoc#Address-functionCall-address-bytes- +:Address-functionCall: pass:normal[xref:utils.adoc#Address-functionCall-address-bytes-string-[`Address.functionCall`]] +:xref-Address-functionCall-address-bytes-string-: xref:utils.adoc#Address-functionCall-address-bytes-string- +:Address-functionCallWithValue: pass:normal[xref:utils.adoc#Address-functionCallWithValue-address-bytes-uint256-[`Address.functionCallWithValue`]] +:xref-Address-functionCallWithValue-address-bytes-uint256-: xref:utils.adoc#Address-functionCallWithValue-address-bytes-uint256- +:Address-functionCallWithValue: pass:normal[xref:utils.adoc#Address-functionCallWithValue-address-bytes-uint256-string-[`Address.functionCallWithValue`]] +:xref-Address-functionCallWithValue-address-bytes-uint256-string-: xref:utils.adoc#Address-functionCallWithValue-address-bytes-uint256-string- +:Address-functionStaticCall: pass:normal[xref:utils.adoc#Address-functionStaticCall-address-bytes-[`Address.functionStaticCall`]] +:xref-Address-functionStaticCall-address-bytes-: xref:utils.adoc#Address-functionStaticCall-address-bytes- +:Address-functionStaticCall: pass:normal[xref:utils.adoc#Address-functionStaticCall-address-bytes-string-[`Address.functionStaticCall`]] +:xref-Address-functionStaticCall-address-bytes-string-: xref:utils.adoc#Address-functionStaticCall-address-bytes-string- +:Address-functionDelegateCall: pass:normal[xref:utils.adoc#Address-functionDelegateCall-address-bytes-[`Address.functionDelegateCall`]] +:xref-Address-functionDelegateCall-address-bytes-: xref:utils.adoc#Address-functionDelegateCall-address-bytes- +:Address-functionDelegateCall: pass:normal[xref:utils.adoc#Address-functionDelegateCall-address-bytes-string-[`Address.functionDelegateCall`]] +:xref-Address-functionDelegateCall-address-bytes-string-: xref:utils.adoc#Address-functionDelegateCall-address-bytes-string- +:Address-verifyCallResult: pass:normal[xref:utils.adoc#Address-verifyCallResult-bool-bytes-string-[`Address.verifyCallResult`]] +:xref-Address-verifyCallResult-bool-bytes-string-: xref:utils.adoc#Address-verifyCallResult-bool-bytes-string- +:Arrays: pass:normal[xref:utils.adoc#Arrays[`Arrays`]] +:xref-Arrays: xref:utils.adoc#Arrays +:Arrays-findUpperBound: pass:normal[xref:utils.adoc#Arrays-findUpperBound-uint256---uint256-[`Arrays.findUpperBound`]] +:xref-Arrays-findUpperBound-uint256---uint256-: xref:utils.adoc#Arrays-findUpperBound-uint256---uint256- +:Base64: pass:normal[xref:utils.adoc#Base64[`Base64`]] +:xref-Base64: xref:utils.adoc#Base64 +:Base64-_TABLE: pass:normal[xref:utils.adoc#Base64-_TABLE-string[`Base64._TABLE`]] +:xref-Base64-_TABLE-string: xref:utils.adoc#Base64-_TABLE-string +:Base64-encode: pass:normal[xref:utils.adoc#Base64-encode-bytes-[`Base64.encode`]] +:xref-Base64-encode-bytes-: xref:utils.adoc#Base64-encode-bytes- +:Checkpoints: pass:normal[xref:utils.adoc#Checkpoints[`Checkpoints`]] +:xref-Checkpoints: xref:utils.adoc#Checkpoints +:Checkpoints-latest: pass:normal[xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History-[`Checkpoints.latest`]] +:xref-Checkpoints-latest-struct-Checkpoints-History-: xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History- +:Checkpoints-getAtBlock: pass:normal[xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-[`Checkpoints.getAtBlock`]] +:xref-Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256- +:Checkpoints-Checkpoint: pass:normal[xref:utils.adoc#Checkpoints-Checkpoint[`Checkpoints.Checkpoint`]] +:xref-Checkpoints-Checkpoint: xref:utils.adoc#Checkpoints-Checkpoint +:Checkpoints-History: pass:normal[xref:utils.adoc#Checkpoints-History[`Checkpoints.History`]] +:xref-Checkpoints-History: xref:utils.adoc#Checkpoints-History +:Context: pass:normal[xref:utils.adoc#Context[`Context`]] +:xref-Context: xref:utils.adoc#Context +:Context-_msgSender: pass:normal[xref:utils.adoc#Context-_msgSender--[`Context._msgSender`]] +:xref-Context-_msgSender--: xref:utils.adoc#Context-_msgSender-- +:Context-_msgData: pass:normal[xref:utils.adoc#Context-_msgData--[`Context._msgData`]] +:xref-Context-_msgData--: xref:utils.adoc#Context-_msgData-- +:Counters: pass:normal[xref:utils.adoc#Counters[`Counters`]] +:xref-Counters: xref:utils.adoc#Counters +:Counters-current: pass:normal[xref:utils.adoc#Counters-current-struct-Counters-Counter-[`Counters.current`]] +:xref-Counters-current-struct-Counters-Counter-: xref:utils.adoc#Counters-current-struct-Counters-Counter- +:Counters-increment: pass:normal[xref:utils.adoc#Counters-increment-struct-Counters-Counter-[`Counters.increment`]] +:xref-Counters-increment-struct-Counters-Counter-: xref:utils.adoc#Counters-increment-struct-Counters-Counter- +:Counters-decrement: pass:normal[xref:utils.adoc#Counters-decrement-struct-Counters-Counter-[`Counters.decrement`]] +:xref-Counters-decrement-struct-Counters-Counter-: xref:utils.adoc#Counters-decrement-struct-Counters-Counter- +:Counters-reset: pass:normal[xref:utils.adoc#Counters-reset-struct-Counters-Counter-[`Counters.reset`]] +:xref-Counters-reset-struct-Counters-Counter-: xref:utils.adoc#Counters-reset-struct-Counters-Counter- +:Counters-Counter: pass:normal[xref:utils.adoc#Counters-Counter[`Counters.Counter`]] +:xref-Counters-Counter: xref:utils.adoc#Counters-Counter +:Create2: pass:normal[xref:utils.adoc#Create2[`Create2`]] +:xref-Create2: xref:utils.adoc#Create2 +:Create2-deploy: pass:normal[xref:utils.adoc#Create2-deploy-uint256-bytes32-bytes-[`Create2.deploy`]] +:xref-Create2-deploy-uint256-bytes32-bytes-: xref:utils.adoc#Create2-deploy-uint256-bytes32-bytes- +:Create2-computeAddress: pass:normal[xref:utils.adoc#Create2-computeAddress-bytes32-bytes32-[`Create2.computeAddress`]] +:xref-Create2-computeAddress-bytes32-bytes32-: xref:utils.adoc#Create2-computeAddress-bytes32-bytes32- +:Create2-computeAddress: pass:normal[xref:utils.adoc#Create2-computeAddress-bytes32-bytes32-address-[`Create2.computeAddress`]] +:xref-Create2-computeAddress-bytes32-bytes32-address-: xref:utils.adoc#Create2-computeAddress-bytes32-bytes32-address- +:Multicall: pass:normal[xref:utils.adoc#Multicall[`Multicall`]] +:xref-Multicall: xref:utils.adoc#Multicall +:Multicall-multicall: pass:normal[xref:utils.adoc#Multicall-multicall-bytes---[`Multicall.multicall`]] +:xref-Multicall-multicall-bytes---: xref:utils.adoc#Multicall-multicall-bytes--- +:StorageSlot: pass:normal[xref:utils.adoc#StorageSlot[`StorageSlot`]] +:xref-StorageSlot: xref:utils.adoc#StorageSlot +:StorageSlot-getAddressSlot: pass:normal[xref:utils.adoc#StorageSlot-getAddressSlot-bytes32-[`StorageSlot.getAddressSlot`]] +:xref-StorageSlot-getAddressSlot-bytes32-: xref:utils.adoc#StorageSlot-getAddressSlot-bytes32- +:StorageSlot-getBooleanSlot: pass:normal[xref:utils.adoc#StorageSlot-getBooleanSlot-bytes32-[`StorageSlot.getBooleanSlot`]] +:xref-StorageSlot-getBooleanSlot-bytes32-: xref:utils.adoc#StorageSlot-getBooleanSlot-bytes32- +:StorageSlot-getBytes32Slot: pass:normal[xref:utils.adoc#StorageSlot-getBytes32Slot-bytes32-[`StorageSlot.getBytes32Slot`]] +:xref-StorageSlot-getBytes32Slot-bytes32-: xref:utils.adoc#StorageSlot-getBytes32Slot-bytes32- +:StorageSlot-getUint256Slot: pass:normal[xref:utils.adoc#StorageSlot-getUint256Slot-bytes32-[`StorageSlot.getUint256Slot`]] +:xref-StorageSlot-getUint256Slot-bytes32-: xref:utils.adoc#StorageSlot-getUint256Slot-bytes32- +:StorageSlot-AddressSlot: pass:normal[xref:utils.adoc#StorageSlot-AddressSlot[`StorageSlot.AddressSlot`]] +:xref-StorageSlot-AddressSlot: xref:utils.adoc#StorageSlot-AddressSlot +:StorageSlot-BooleanSlot: pass:normal[xref:utils.adoc#StorageSlot-BooleanSlot[`StorageSlot.BooleanSlot`]] +:xref-StorageSlot-BooleanSlot: xref:utils.adoc#StorageSlot-BooleanSlot +:StorageSlot-Bytes32Slot: pass:normal[xref:utils.adoc#StorageSlot-Bytes32Slot[`StorageSlot.Bytes32Slot`]] +:xref-StorageSlot-Bytes32Slot: xref:utils.adoc#StorageSlot-Bytes32Slot +:StorageSlot-Uint256Slot: pass:normal[xref:utils.adoc#StorageSlot-Uint256Slot[`StorageSlot.Uint256Slot`]] +:xref-StorageSlot-Uint256Slot: xref:utils.adoc#StorageSlot-Uint256Slot +:Strings: pass:normal[xref:utils.adoc#Strings[`Strings`]] +:xref-Strings: xref:utils.adoc#Strings +:Strings-toString: pass:normal[xref:utils.adoc#Strings-toString-uint256-[`Strings.toString`]] +:xref-Strings-toString-uint256-: xref:utils.adoc#Strings-toString-uint256- +:Strings-toHexString: pass:normal[xref:utils.adoc#Strings-toHexString-uint256-[`Strings.toHexString`]] +:xref-Strings-toHexString-uint256-: xref:utils.adoc#Strings-toHexString-uint256- +:Strings-toHexString: pass:normal[xref:utils.adoc#Strings-toHexString-uint256-uint256-[`Strings.toHexString`]] +:xref-Strings-toHexString-uint256-uint256-: xref:utils.adoc#Strings-toHexString-uint256-uint256- +:Timers: pass:normal[xref:utils.adoc#Timers[`Timers`]] +:xref-Timers: xref:utils.adoc#Timers +:Timers-getDeadline: pass:normal[xref:utils.adoc#Timers-getDeadline-struct-Timers-Timestamp-[`Timers.getDeadline`]] +:xref-Timers-getDeadline-struct-Timers-Timestamp-: xref:utils.adoc#Timers-getDeadline-struct-Timers-Timestamp- +:Timers-setDeadline: pass:normal[xref:utils.adoc#Timers-setDeadline-struct-Timers-Timestamp-uint64-[`Timers.setDeadline`]] +:xref-Timers-setDeadline-struct-Timers-Timestamp-uint64-: xref:utils.adoc#Timers-setDeadline-struct-Timers-Timestamp-uint64- +:Timers-reset: pass:normal[xref:utils.adoc#Timers-reset-struct-Timers-Timestamp-[`Timers.reset`]] +:xref-Timers-reset-struct-Timers-Timestamp-: xref:utils.adoc#Timers-reset-struct-Timers-Timestamp- +:Timers-isUnset: pass:normal[xref:utils.adoc#Timers-isUnset-struct-Timers-Timestamp-[`Timers.isUnset`]] +:xref-Timers-isUnset-struct-Timers-Timestamp-: xref:utils.adoc#Timers-isUnset-struct-Timers-Timestamp- +:Timers-isStarted: pass:normal[xref:utils.adoc#Timers-isStarted-struct-Timers-Timestamp-[`Timers.isStarted`]] +:xref-Timers-isStarted-struct-Timers-Timestamp-: xref:utils.adoc#Timers-isStarted-struct-Timers-Timestamp- +:Timers-isPending: pass:normal[xref:utils.adoc#Timers-isPending-struct-Timers-Timestamp-[`Timers.isPending`]] +:xref-Timers-isPending-struct-Timers-Timestamp-: xref:utils.adoc#Timers-isPending-struct-Timers-Timestamp- +:Timers-isExpired: pass:normal[xref:utils.adoc#Timers-isExpired-struct-Timers-Timestamp-[`Timers.isExpired`]] +:xref-Timers-isExpired-struct-Timers-Timestamp-: xref:utils.adoc#Timers-isExpired-struct-Timers-Timestamp- +:Timers-getDeadline: pass:normal[xref:utils.adoc#Timers-getDeadline-struct-Timers-BlockNumber-[`Timers.getDeadline`]] +:xref-Timers-getDeadline-struct-Timers-BlockNumber-: xref:utils.adoc#Timers-getDeadline-struct-Timers-BlockNumber- +:Timers-setDeadline: pass:normal[xref:utils.adoc#Timers-setDeadline-struct-Timers-BlockNumber-uint64-[`Timers.setDeadline`]] +:xref-Timers-setDeadline-struct-Timers-BlockNumber-uint64-: xref:utils.adoc#Timers-setDeadline-struct-Timers-BlockNumber-uint64- +:Timers-reset: pass:normal[xref:utils.adoc#Timers-reset-struct-Timers-BlockNumber-[`Timers.reset`]] +:xref-Timers-reset-struct-Timers-BlockNumber-: xref:utils.adoc#Timers-reset-struct-Timers-BlockNumber- +:Timers-isUnset: pass:normal[xref:utils.adoc#Timers-isUnset-struct-Timers-BlockNumber-[`Timers.isUnset`]] +:xref-Timers-isUnset-struct-Timers-BlockNumber-: xref:utils.adoc#Timers-isUnset-struct-Timers-BlockNumber- +:Timers-isStarted: pass:normal[xref:utils.adoc#Timers-isStarted-struct-Timers-BlockNumber-[`Timers.isStarted`]] +:xref-Timers-isStarted-struct-Timers-BlockNumber-: xref:utils.adoc#Timers-isStarted-struct-Timers-BlockNumber- +:Timers-isPending: pass:normal[xref:utils.adoc#Timers-isPending-struct-Timers-BlockNumber-[`Timers.isPending`]] +:xref-Timers-isPending-struct-Timers-BlockNumber-: xref:utils.adoc#Timers-isPending-struct-Timers-BlockNumber- +:Timers-isExpired: pass:normal[xref:utils.adoc#Timers-isExpired-struct-Timers-BlockNumber-[`Timers.isExpired`]] +:xref-Timers-isExpired-struct-Timers-BlockNumber-: xref:utils.adoc#Timers-isExpired-struct-Timers-BlockNumber- +:Timers-Timestamp: pass:normal[xref:utils.adoc#Timers-Timestamp[`Timers.Timestamp`]] +:xref-Timers-Timestamp: xref:utils.adoc#Timers-Timestamp +:Timers-BlockNumber: pass:normal[xref:utils.adoc#Timers-BlockNumber[`Timers.BlockNumber`]] +:xref-Timers-BlockNumber: xref:utils.adoc#Timers-BlockNumber +:ECDSA: pass:normal[xref:utils.adoc#ECDSA[`ECDSA`]] +:xref-ECDSA: xref:utils.adoc#ECDSA +:ECDSA-tryRecover: pass:normal[xref:utils.adoc#ECDSA-tryRecover-bytes32-bytes-[`ECDSA.tryRecover`]] +:xref-ECDSA-tryRecover-bytes32-bytes-: xref:utils.adoc#ECDSA-tryRecover-bytes32-bytes- +:ECDSA-recover: pass:normal[xref:utils.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]] +:xref-ECDSA-recover-bytes32-bytes-: xref:utils.adoc#ECDSA-recover-bytes32-bytes- +:ECDSA-tryRecover: pass:normal[xref:utils.adoc#ECDSA-tryRecover-bytes32-bytes32-bytes32-[`ECDSA.tryRecover`]] +:xref-ECDSA-tryRecover-bytes32-bytes32-bytes32-: xref:utils.adoc#ECDSA-tryRecover-bytes32-bytes32-bytes32- +:ECDSA-recover: pass:normal[xref:utils.adoc#ECDSA-recover-bytes32-bytes32-bytes32-[`ECDSA.recover`]] +:xref-ECDSA-recover-bytes32-bytes32-bytes32-: xref:utils.adoc#ECDSA-recover-bytes32-bytes32-bytes32- +:ECDSA-tryRecover: pass:normal[xref:utils.adoc#ECDSA-tryRecover-bytes32-uint8-bytes32-bytes32-[`ECDSA.tryRecover`]] +:xref-ECDSA-tryRecover-bytes32-uint8-bytes32-bytes32-: xref:utils.adoc#ECDSA-tryRecover-bytes32-uint8-bytes32-bytes32- +:ECDSA-recover: pass:normal[xref:utils.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]] +:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:utils.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32- +:ECDSA-toEthSignedMessageHash: pass:normal[xref:utils.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]] +:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:utils.adoc#ECDSA-toEthSignedMessageHash-bytes32- +:ECDSA-toEthSignedMessageHash: pass:normal[xref:utils.adoc#ECDSA-toEthSignedMessageHash-bytes-[`ECDSA.toEthSignedMessageHash`]] +:xref-ECDSA-toEthSignedMessageHash-bytes-: xref:utils.adoc#ECDSA-toEthSignedMessageHash-bytes- +:ECDSA-toTypedDataHash: pass:normal[xref:utils.adoc#ECDSA-toTypedDataHash-bytes32-bytes32-[`ECDSA.toTypedDataHash`]] +:xref-ECDSA-toTypedDataHash-bytes32-bytes32-: xref:utils.adoc#ECDSA-toTypedDataHash-bytes32-bytes32- +:ECDSA-RecoverError: pass:normal[xref:utils.adoc#ECDSA-RecoverError[`ECDSA.RecoverError`]] +:xref-ECDSA-RecoverError: xref:utils.adoc#ECDSA-RecoverError +:MerkleProof: pass:normal[xref:utils.adoc#MerkleProof[`MerkleProof`]] +:xref-MerkleProof: xref:utils.adoc#MerkleProof +:MerkleProof-verify: pass:normal[xref:utils.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]] +:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:utils.adoc#MerkleProof-verify-bytes32---bytes32-bytes32- +:MerkleProof-processProof: pass:normal[xref:utils.adoc#MerkleProof-processProof-bytes32---bytes32-[`MerkleProof.processProof`]] +:xref-MerkleProof-processProof-bytes32---bytes32-: xref:utils.adoc#MerkleProof-processProof-bytes32---bytes32- +:SignatureChecker: pass:normal[xref:utils.adoc#SignatureChecker[`SignatureChecker`]] +:xref-SignatureChecker: xref:utils.adoc#SignatureChecker +:SignatureChecker-isValidSignatureNow: pass:normal[xref:utils.adoc#SignatureChecker-isValidSignatureNow-address-bytes32-bytes-[`SignatureChecker.isValidSignatureNow`]] +:xref-SignatureChecker-isValidSignatureNow-address-bytes32-bytes-: xref:utils.adoc#SignatureChecker-isValidSignatureNow-address-bytes32-bytes- +:EIP712: pass:normal[xref:utils.adoc#EIP712[`EIP712`]] +:xref-EIP712: xref:utils.adoc#EIP712 +:EIP712-constructor: pass:normal[xref:utils.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]] +:xref-EIP712-constructor-string-string-: xref:utils.adoc#EIP712-constructor-string-string- +:EIP712-_domainSeparatorV4: pass:normal[xref:utils.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]] +:xref-EIP712-_domainSeparatorV4--: xref:utils.adoc#EIP712-_domainSeparatorV4-- +:EIP712-_hashTypedDataV4: pass:normal[xref:utils.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]] +:xref-EIP712-_hashTypedDataV4-bytes32-: xref:utils.adoc#EIP712-_hashTypedDataV4-bytes32- +:ConditionalEscrow: pass:normal[xref:utils.adoc#ConditionalEscrow[`ConditionalEscrow`]] +:xref-ConditionalEscrow: xref:utils.adoc#ConditionalEscrow +:ConditionalEscrow-withdrawalAllowed: pass:normal[xref:utils.adoc#ConditionalEscrow-withdrawalAllowed-address-[`ConditionalEscrow.withdrawalAllowed`]] +:xref-ConditionalEscrow-withdrawalAllowed-address-: xref:utils.adoc#ConditionalEscrow-withdrawalAllowed-address- +:ConditionalEscrow-withdraw: pass:normal[xref:utils.adoc#ConditionalEscrow-withdraw-address-payable-[`ConditionalEscrow.withdraw`]] +:xref-ConditionalEscrow-withdraw-address-payable-: xref:utils.adoc#ConditionalEscrow-withdraw-address-payable- +:Escrow: pass:normal[xref:utils.adoc#Escrow[`Escrow`]] +:xref-Escrow: xref:utils.adoc#Escrow +:Escrow-depositsOf: pass:normal[xref:utils.adoc#Escrow-depositsOf-address-[`Escrow.depositsOf`]] +:xref-Escrow-depositsOf-address-: xref:utils.adoc#Escrow-depositsOf-address- +:Escrow-deposit: pass:normal[xref:utils.adoc#Escrow-deposit-address-[`Escrow.deposit`]] +:xref-Escrow-deposit-address-: xref:utils.adoc#Escrow-deposit-address- +:Escrow-withdraw: pass:normal[xref:utils.adoc#Escrow-withdraw-address-payable-[`Escrow.withdraw`]] +:xref-Escrow-withdraw-address-payable-: xref:utils.adoc#Escrow-withdraw-address-payable- +:Escrow-Deposited: pass:normal[xref:utils.adoc#Escrow-Deposited-address-uint256-[`Escrow.Deposited`]] +:xref-Escrow-Deposited-address-uint256-: xref:utils.adoc#Escrow-Deposited-address-uint256- +:Escrow-Withdrawn: pass:normal[xref:utils.adoc#Escrow-Withdrawn-address-uint256-[`Escrow.Withdrawn`]] +:xref-Escrow-Withdrawn-address-uint256-: xref:utils.adoc#Escrow-Withdrawn-address-uint256- +:RefundEscrow: pass:normal[xref:utils.adoc#RefundEscrow[`RefundEscrow`]] +:xref-RefundEscrow: xref:utils.adoc#RefundEscrow +:RefundEscrow-constructor: pass:normal[xref:utils.adoc#RefundEscrow-constructor-address-payable-[`RefundEscrow.constructor`]] +:xref-RefundEscrow-constructor-address-payable-: xref:utils.adoc#RefundEscrow-constructor-address-payable- +:RefundEscrow-state: pass:normal[xref:utils.adoc#RefundEscrow-state--[`RefundEscrow.state`]] +:xref-RefundEscrow-state--: xref:utils.adoc#RefundEscrow-state-- +:RefundEscrow-beneficiary: pass:normal[xref:utils.adoc#RefundEscrow-beneficiary--[`RefundEscrow.beneficiary`]] +:xref-RefundEscrow-beneficiary--: xref:utils.adoc#RefundEscrow-beneficiary-- +:RefundEscrow-deposit: pass:normal[xref:utils.adoc#RefundEscrow-deposit-address-[`RefundEscrow.deposit`]] +:xref-RefundEscrow-deposit-address-: xref:utils.adoc#RefundEscrow-deposit-address- +:RefundEscrow-close: pass:normal[xref:utils.adoc#RefundEscrow-close--[`RefundEscrow.close`]] +:xref-RefundEscrow-close--: xref:utils.adoc#RefundEscrow-close-- +:RefundEscrow-enableRefunds: pass:normal[xref:utils.adoc#RefundEscrow-enableRefunds--[`RefundEscrow.enableRefunds`]] +:xref-RefundEscrow-enableRefunds--: xref:utils.adoc#RefundEscrow-enableRefunds-- +:RefundEscrow-beneficiaryWithdraw: pass:normal[xref:utils.adoc#RefundEscrow-beneficiaryWithdraw--[`RefundEscrow.beneficiaryWithdraw`]] +:xref-RefundEscrow-beneficiaryWithdraw--: xref:utils.adoc#RefundEscrow-beneficiaryWithdraw-- +:RefundEscrow-withdrawalAllowed: pass:normal[xref:utils.adoc#RefundEscrow-withdrawalAllowed-address-[`RefundEscrow.withdrawalAllowed`]] +:xref-RefundEscrow-withdrawalAllowed-address-: xref:utils.adoc#RefundEscrow-withdrawalAllowed-address- +:RefundEscrow-RefundsClosed: pass:normal[xref:utils.adoc#RefundEscrow-RefundsClosed--[`RefundEscrow.RefundsClosed`]] +:xref-RefundEscrow-RefundsClosed--: xref:utils.adoc#RefundEscrow-RefundsClosed-- +:RefundEscrow-RefundsEnabled: pass:normal[xref:utils.adoc#RefundEscrow-RefundsEnabled--[`RefundEscrow.RefundsEnabled`]] +:xref-RefundEscrow-RefundsEnabled--: xref:utils.adoc#RefundEscrow-RefundsEnabled-- +:RefundEscrow-State: pass:normal[xref:utils.adoc#RefundEscrow-State[`RefundEscrow.State`]] +:xref-RefundEscrow-State: xref:utils.adoc#RefundEscrow-State +:ERC165: pass:normal[xref:utils.adoc#ERC165[`ERC165`]] +:xref-ERC165: xref:utils.adoc#ERC165 +:ERC165-supportsInterface: pass:normal[xref:utils.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]] +:xref-ERC165-supportsInterface-bytes4-: xref:utils.adoc#ERC165-supportsInterface-bytes4- +:ERC165Checker: pass:normal[xref:utils.adoc#ERC165Checker[`ERC165Checker`]] +:xref-ERC165Checker: xref:utils.adoc#ERC165Checker +:ERC165Checker-supportsERC165: pass:normal[xref:utils.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]] +:xref-ERC165Checker-supportsERC165-address-: xref:utils.adoc#ERC165Checker-supportsERC165-address- +:ERC165Checker-supportsInterface: pass:normal[xref:utils.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]] +:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:utils.adoc#ERC165Checker-supportsInterface-address-bytes4- +:ERC165Checker-getSupportedInterfaces: pass:normal[xref:utils.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]] +:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:utils.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4--- +:ERC165Checker-supportsAllInterfaces: pass:normal[xref:utils.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]] +:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:utils.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4--- +:ERC165Storage: pass:normal[xref:utils.adoc#ERC165Storage[`ERC165Storage`]] +:xref-ERC165Storage: xref:utils.adoc#ERC165Storage +:ERC165Storage-supportsInterface: pass:normal[xref:utils.adoc#ERC165Storage-supportsInterface-bytes4-[`ERC165Storage.supportsInterface`]] +:xref-ERC165Storage-supportsInterface-bytes4-: xref:utils.adoc#ERC165Storage-supportsInterface-bytes4- +:ERC165Storage-_registerInterface: pass:normal[xref:utils.adoc#ERC165Storage-_registerInterface-bytes4-[`ERC165Storage._registerInterface`]] +:xref-ERC165Storage-_registerInterface-bytes4-: xref:utils.adoc#ERC165Storage-_registerInterface-bytes4- +:ERC1820Implementer: pass:normal[xref:utils.adoc#ERC1820Implementer[`ERC1820Implementer`]] +:xref-ERC1820Implementer: xref:utils.adoc#ERC1820Implementer +:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:utils.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]] +:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:utils.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address- +:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:utils.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]] +:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:utils.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address- +:IERC165: pass:normal[xref:utils.adoc#IERC165[`IERC165`]] +:xref-IERC165: xref:utils.adoc#IERC165 +:IERC165-supportsInterface: pass:normal[xref:utils.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]] +:xref-IERC165-supportsInterface-bytes4-: xref:utils.adoc#IERC165-supportsInterface-bytes4- +:IERC1820Implementer: pass:normal[xref:utils.adoc#IERC1820Implementer[`IERC1820Implementer`]] +:xref-IERC1820Implementer: xref:utils.adoc#IERC1820Implementer +:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:utils.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]] +:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:utils.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address- +:IERC1820Registry: pass:normal[xref:utils.adoc#IERC1820Registry[`IERC1820Registry`]] +:xref-IERC1820Registry: xref:utils.adoc#IERC1820Registry +:IERC1820Registry-setManager: pass:normal[xref:utils.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]] +:xref-IERC1820Registry-setManager-address-address-: xref:utils.adoc#IERC1820Registry-setManager-address-address- +:IERC1820Registry-getManager: pass:normal[xref:utils.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]] +:xref-IERC1820Registry-getManager-address-: xref:utils.adoc#IERC1820Registry-getManager-address- +:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:utils.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]] +:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:utils.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address- +:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:utils.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]] +:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:utils.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32- +:IERC1820Registry-interfaceHash: pass:normal[xref:utils.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]] +:xref-IERC1820Registry-interfaceHash-string-: xref:utils.adoc#IERC1820Registry-interfaceHash-string- +:IERC1820Registry-updateERC165Cache: pass:normal[xref:utils.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]] +:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:utils.adoc#IERC1820Registry-updateERC165Cache-address-bytes4- +:IERC1820Registry-implementsERC165Interface: pass:normal[xref:utils.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]] +:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:utils.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4- +:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:utils.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]] +:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:utils.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4- +:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:utils.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]] +:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:utils.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address- +:IERC1820Registry-ManagerChanged: pass:normal[xref:utils.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]] +:xref-IERC1820Registry-ManagerChanged-address-address-: xref:utils.adoc#IERC1820Registry-ManagerChanged-address-address- +:Math: pass:normal[xref:utils.adoc#Math[`Math`]] +:xref-Math: xref:utils.adoc#Math +:Math-max: pass:normal[xref:utils.adoc#Math-max-uint256-uint256-[`Math.max`]] +:xref-Math-max-uint256-uint256-: xref:utils.adoc#Math-max-uint256-uint256- +:Math-min: pass:normal[xref:utils.adoc#Math-min-uint256-uint256-[`Math.min`]] +:xref-Math-min-uint256-uint256-: xref:utils.adoc#Math-min-uint256-uint256- +:Math-average: pass:normal[xref:utils.adoc#Math-average-uint256-uint256-[`Math.average`]] +:xref-Math-average-uint256-uint256-: xref:utils.adoc#Math-average-uint256-uint256- +:Math-ceilDiv: pass:normal[xref:utils.adoc#Math-ceilDiv-uint256-uint256-[`Math.ceilDiv`]] +:xref-Math-ceilDiv-uint256-uint256-: xref:utils.adoc#Math-ceilDiv-uint256-uint256- +:SafeCast: pass:normal[xref:utils.adoc#SafeCast[`SafeCast`]] +:xref-SafeCast: xref:utils.adoc#SafeCast +:SafeCast-toUint224: pass:normal[xref:utils.adoc#SafeCast-toUint224-uint256-[`SafeCast.toUint224`]] +:xref-SafeCast-toUint224-uint256-: xref:utils.adoc#SafeCast-toUint224-uint256- +:SafeCast-toUint128: pass:normal[xref:utils.adoc#SafeCast-toUint128-uint256-[`SafeCast.toUint128`]] +:xref-SafeCast-toUint128-uint256-: xref:utils.adoc#SafeCast-toUint128-uint256- +:SafeCast-toUint96: pass:normal[xref:utils.adoc#SafeCast-toUint96-uint256-[`SafeCast.toUint96`]] +:xref-SafeCast-toUint96-uint256-: xref:utils.adoc#SafeCast-toUint96-uint256- +:SafeCast-toUint64: pass:normal[xref:utils.adoc#SafeCast-toUint64-uint256-[`SafeCast.toUint64`]] +:xref-SafeCast-toUint64-uint256-: xref:utils.adoc#SafeCast-toUint64-uint256- +:SafeCast-toUint32: pass:normal[xref:utils.adoc#SafeCast-toUint32-uint256-[`SafeCast.toUint32`]] +:xref-SafeCast-toUint32-uint256-: xref:utils.adoc#SafeCast-toUint32-uint256- +:SafeCast-toUint16: pass:normal[xref:utils.adoc#SafeCast-toUint16-uint256-[`SafeCast.toUint16`]] +:xref-SafeCast-toUint16-uint256-: xref:utils.adoc#SafeCast-toUint16-uint256- +:SafeCast-toUint8: pass:normal[xref:utils.adoc#SafeCast-toUint8-uint256-[`SafeCast.toUint8`]] +:xref-SafeCast-toUint8-uint256-: xref:utils.adoc#SafeCast-toUint8-uint256- +:SafeCast-toUint256: pass:normal[xref:utils.adoc#SafeCast-toUint256-int256-[`SafeCast.toUint256`]] +:xref-SafeCast-toUint256-int256-: xref:utils.adoc#SafeCast-toUint256-int256- +:SafeCast-toInt128: pass:normal[xref:utils.adoc#SafeCast-toInt128-int256-[`SafeCast.toInt128`]] +:xref-SafeCast-toInt128-int256-: xref:utils.adoc#SafeCast-toInt128-int256- +:SafeCast-toInt64: pass:normal[xref:utils.adoc#SafeCast-toInt64-int256-[`SafeCast.toInt64`]] +:xref-SafeCast-toInt64-int256-: xref:utils.adoc#SafeCast-toInt64-int256- +:SafeCast-toInt32: pass:normal[xref:utils.adoc#SafeCast-toInt32-int256-[`SafeCast.toInt32`]] +:xref-SafeCast-toInt32-int256-: xref:utils.adoc#SafeCast-toInt32-int256- +:SafeCast-toInt16: pass:normal[xref:utils.adoc#SafeCast-toInt16-int256-[`SafeCast.toInt16`]] +:xref-SafeCast-toInt16-int256-: xref:utils.adoc#SafeCast-toInt16-int256- +:SafeCast-toInt8: pass:normal[xref:utils.adoc#SafeCast-toInt8-int256-[`SafeCast.toInt8`]] +:xref-SafeCast-toInt8-int256-: xref:utils.adoc#SafeCast-toInt8-int256- +:SafeCast-toInt256: pass:normal[xref:utils.adoc#SafeCast-toInt256-uint256-[`SafeCast.toInt256`]] +:xref-SafeCast-toInt256-uint256-: xref:utils.adoc#SafeCast-toInt256-uint256- +:SafeMath: pass:normal[xref:utils.adoc#SafeMath[`SafeMath`]] +:xref-SafeMath: xref:utils.adoc#SafeMath +:SafeMath-tryAdd: pass:normal[xref:utils.adoc#SafeMath-tryAdd-uint256-uint256-[`SafeMath.tryAdd`]] +:xref-SafeMath-tryAdd-uint256-uint256-: xref:utils.adoc#SafeMath-tryAdd-uint256-uint256- +:SafeMath-trySub: pass:normal[xref:utils.adoc#SafeMath-trySub-uint256-uint256-[`SafeMath.trySub`]] +:xref-SafeMath-trySub-uint256-uint256-: xref:utils.adoc#SafeMath-trySub-uint256-uint256- +:SafeMath-tryMul: pass:normal[xref:utils.adoc#SafeMath-tryMul-uint256-uint256-[`SafeMath.tryMul`]] +:xref-SafeMath-tryMul-uint256-uint256-: xref:utils.adoc#SafeMath-tryMul-uint256-uint256- +:SafeMath-tryDiv: pass:normal[xref:utils.adoc#SafeMath-tryDiv-uint256-uint256-[`SafeMath.tryDiv`]] +:xref-SafeMath-tryDiv-uint256-uint256-: xref:utils.adoc#SafeMath-tryDiv-uint256-uint256- +:SafeMath-tryMod: pass:normal[xref:utils.adoc#SafeMath-tryMod-uint256-uint256-[`SafeMath.tryMod`]] +:xref-SafeMath-tryMod-uint256-uint256-: xref:utils.adoc#SafeMath-tryMod-uint256-uint256- +:SafeMath-add: pass:normal[xref:utils.adoc#SafeMath-add-uint256-uint256-[`SafeMath.add`]] +:xref-SafeMath-add-uint256-uint256-: xref:utils.adoc#SafeMath-add-uint256-uint256- +:SafeMath-sub: pass:normal[xref:utils.adoc#SafeMath-sub-uint256-uint256-[`SafeMath.sub`]] +:xref-SafeMath-sub-uint256-uint256-: xref:utils.adoc#SafeMath-sub-uint256-uint256- +:SafeMath-mul: pass:normal[xref:utils.adoc#SafeMath-mul-uint256-uint256-[`SafeMath.mul`]] +:xref-SafeMath-mul-uint256-uint256-: xref:utils.adoc#SafeMath-mul-uint256-uint256- +:SafeMath-div: pass:normal[xref:utils.adoc#SafeMath-div-uint256-uint256-[`SafeMath.div`]] +:xref-SafeMath-div-uint256-uint256-: xref:utils.adoc#SafeMath-div-uint256-uint256- +:SafeMath-mod: pass:normal[xref:utils.adoc#SafeMath-mod-uint256-uint256-[`SafeMath.mod`]] +:xref-SafeMath-mod-uint256-uint256-: xref:utils.adoc#SafeMath-mod-uint256-uint256- +:SafeMath-sub: pass:normal[xref:utils.adoc#SafeMath-sub-uint256-uint256-string-[`SafeMath.sub`]] +:xref-SafeMath-sub-uint256-uint256-string-: xref:utils.adoc#SafeMath-sub-uint256-uint256-string- +:SafeMath-div: pass:normal[xref:utils.adoc#SafeMath-div-uint256-uint256-string-[`SafeMath.div`]] +:xref-SafeMath-div-uint256-uint256-string-: xref:utils.adoc#SafeMath-div-uint256-uint256-string- +:SafeMath-mod: pass:normal[xref:utils.adoc#SafeMath-mod-uint256-uint256-string-[`SafeMath.mod`]] +:xref-SafeMath-mod-uint256-uint256-string-: xref:utils.adoc#SafeMath-mod-uint256-uint256-string- +:SignedMath: pass:normal[xref:utils.adoc#SignedMath[`SignedMath`]] +:xref-SignedMath: xref:utils.adoc#SignedMath +:SignedMath-max: pass:normal[xref:utils.adoc#SignedMath-max-int256-int256-[`SignedMath.max`]] +:xref-SignedMath-max-int256-int256-: xref:utils.adoc#SignedMath-max-int256-int256- +:SignedMath-min: pass:normal[xref:utils.adoc#SignedMath-min-int256-int256-[`SignedMath.min`]] +:xref-SignedMath-min-int256-int256-: xref:utils.adoc#SignedMath-min-int256-int256- +:SignedMath-average: pass:normal[xref:utils.adoc#SignedMath-average-int256-int256-[`SignedMath.average`]] +:xref-SignedMath-average-int256-int256-: xref:utils.adoc#SignedMath-average-int256-int256- +:SignedMath-abs: pass:normal[xref:utils.adoc#SignedMath-abs-int256-[`SignedMath.abs`]] +:xref-SignedMath-abs-int256-: xref:utils.adoc#SignedMath-abs-int256- +:SignedSafeMath: pass:normal[xref:utils.adoc#SignedSafeMath[`SignedSafeMath`]] +:xref-SignedSafeMath: xref:utils.adoc#SignedSafeMath +:SignedSafeMath-mul: pass:normal[xref:utils.adoc#SignedSafeMath-mul-int256-int256-[`SignedSafeMath.mul`]] +:xref-SignedSafeMath-mul-int256-int256-: xref:utils.adoc#SignedSafeMath-mul-int256-int256- +:SignedSafeMath-div: pass:normal[xref:utils.adoc#SignedSafeMath-div-int256-int256-[`SignedSafeMath.div`]] +:xref-SignedSafeMath-div-int256-int256-: xref:utils.adoc#SignedSafeMath-div-int256-int256- +:SignedSafeMath-sub: pass:normal[xref:utils.adoc#SignedSafeMath-sub-int256-int256-[`SignedSafeMath.sub`]] +:xref-SignedSafeMath-sub-int256-int256-: xref:utils.adoc#SignedSafeMath-sub-int256-int256- +:SignedSafeMath-add: pass:normal[xref:utils.adoc#SignedSafeMath-add-int256-int256-[`SignedSafeMath.add`]] +:xref-SignedSafeMath-add-int256-int256-: xref:utils.adoc#SignedSafeMath-add-int256-int256- +:BitMaps: pass:normal[xref:utils.adoc#BitMaps[`BitMaps`]] +:xref-BitMaps: xref:utils.adoc#BitMaps +:BitMaps-get: pass:normal[xref:utils.adoc#BitMaps-get-struct-BitMaps-BitMap-uint256-[`BitMaps.get`]] +:xref-BitMaps-get-struct-BitMaps-BitMap-uint256-: xref:utils.adoc#BitMaps-get-struct-BitMaps-BitMap-uint256- +:BitMaps-setTo: pass:normal[xref:utils.adoc#BitMaps-setTo-struct-BitMaps-BitMap-uint256-bool-[`BitMaps.setTo`]] +:xref-BitMaps-setTo-struct-BitMaps-BitMap-uint256-bool-: xref:utils.adoc#BitMaps-setTo-struct-BitMaps-BitMap-uint256-bool- +:BitMaps-set: pass:normal[xref:utils.adoc#BitMaps-set-struct-BitMaps-BitMap-uint256-[`BitMaps.set`]] +:xref-BitMaps-set-struct-BitMaps-BitMap-uint256-: xref:utils.adoc#BitMaps-set-struct-BitMaps-BitMap-uint256- +:BitMaps-unset: pass:normal[xref:utils.adoc#BitMaps-unset-struct-BitMaps-BitMap-uint256-[`BitMaps.unset`]] +:xref-BitMaps-unset-struct-BitMaps-BitMap-uint256-: xref:utils.adoc#BitMaps-unset-struct-BitMaps-BitMap-uint256- +:BitMaps-BitMap: pass:normal[xref:utils.adoc#BitMaps-BitMap[`BitMaps.BitMap`]] +:xref-BitMaps-BitMap: xref:utils.adoc#BitMaps-BitMap +:EnumerableMap: pass:normal[xref:utils.adoc#EnumerableMap[`EnumerableMap`]] +:xref-EnumerableMap: xref:utils.adoc#EnumerableMap +:EnumerableMap-set: pass:normal[xref:utils.adoc#EnumerableMap-set-struct-EnumerableMap-UintToAddressMap-uint256-address-[`EnumerableMap.set`]] +:xref-EnumerableMap-set-struct-EnumerableMap-UintToAddressMap-uint256-address-: xref:utils.adoc#EnumerableMap-set-struct-EnumerableMap-UintToAddressMap-uint256-address- +:EnumerableMap-remove: pass:normal[xref:utils.adoc#EnumerableMap-remove-struct-EnumerableMap-UintToAddressMap-uint256-[`EnumerableMap.remove`]] +:xref-EnumerableMap-remove-struct-EnumerableMap-UintToAddressMap-uint256-: xref:utils.adoc#EnumerableMap-remove-struct-EnumerableMap-UintToAddressMap-uint256- +:EnumerableMap-contains: pass:normal[xref:utils.adoc#EnumerableMap-contains-struct-EnumerableMap-UintToAddressMap-uint256-[`EnumerableMap.contains`]] +:xref-EnumerableMap-contains-struct-EnumerableMap-UintToAddressMap-uint256-: xref:utils.adoc#EnumerableMap-contains-struct-EnumerableMap-UintToAddressMap-uint256- +:EnumerableMap-length: pass:normal[xref:utils.adoc#EnumerableMap-length-struct-EnumerableMap-UintToAddressMap-[`EnumerableMap.length`]] +:xref-EnumerableMap-length-struct-EnumerableMap-UintToAddressMap-: xref:utils.adoc#EnumerableMap-length-struct-EnumerableMap-UintToAddressMap- +:EnumerableMap-at: pass:normal[xref:utils.adoc#EnumerableMap-at-struct-EnumerableMap-UintToAddressMap-uint256-[`EnumerableMap.at`]] +:xref-EnumerableMap-at-struct-EnumerableMap-UintToAddressMap-uint256-: xref:utils.adoc#EnumerableMap-at-struct-EnumerableMap-UintToAddressMap-uint256- +:EnumerableMap-tryGet: pass:normal[xref:utils.adoc#EnumerableMap-tryGet-struct-EnumerableMap-UintToAddressMap-uint256-[`EnumerableMap.tryGet`]] +:xref-EnumerableMap-tryGet-struct-EnumerableMap-UintToAddressMap-uint256-: xref:utils.adoc#EnumerableMap-tryGet-struct-EnumerableMap-UintToAddressMap-uint256- +:EnumerableMap-get: pass:normal[xref:utils.adoc#EnumerableMap-get-struct-EnumerableMap-UintToAddressMap-uint256-[`EnumerableMap.get`]] +:xref-EnumerableMap-get-struct-EnumerableMap-UintToAddressMap-uint256-: xref:utils.adoc#EnumerableMap-get-struct-EnumerableMap-UintToAddressMap-uint256- +:EnumerableMap-get: pass:normal[xref:utils.adoc#EnumerableMap-get-struct-EnumerableMap-UintToAddressMap-uint256-string-[`EnumerableMap.get`]] +:xref-EnumerableMap-get-struct-EnumerableMap-UintToAddressMap-uint256-string-: xref:utils.adoc#EnumerableMap-get-struct-EnumerableMap-UintToAddressMap-uint256-string- +:EnumerableMap-Map: pass:normal[xref:utils.adoc#EnumerableMap-Map[`EnumerableMap.Map`]] +:xref-EnumerableMap-Map: xref:utils.adoc#EnumerableMap-Map +:EnumerableMap-UintToAddressMap: pass:normal[xref:utils.adoc#EnumerableMap-UintToAddressMap[`EnumerableMap.UintToAddressMap`]] +:xref-EnumerableMap-UintToAddressMap: xref:utils.adoc#EnumerableMap-UintToAddressMap +:EnumerableSet: pass:normal[xref:utils.adoc#EnumerableSet[`EnumerableSet`]] +:xref-EnumerableSet: xref:utils.adoc#EnumerableSet +:EnumerableSet-add: pass:normal[xref:utils.adoc#EnumerableSet-add-struct-EnumerableSet-Bytes32Set-bytes32-[`EnumerableSet.add`]] +:xref-EnumerableSet-add-struct-EnumerableSet-Bytes32Set-bytes32-: xref:utils.adoc#EnumerableSet-add-struct-EnumerableSet-Bytes32Set-bytes32- +:EnumerableSet-remove: pass:normal[xref:utils.adoc#EnumerableSet-remove-struct-EnumerableSet-Bytes32Set-bytes32-[`EnumerableSet.remove`]] +:xref-EnumerableSet-remove-struct-EnumerableSet-Bytes32Set-bytes32-: xref:utils.adoc#EnumerableSet-remove-struct-EnumerableSet-Bytes32Set-bytes32- +:EnumerableSet-contains: pass:normal[xref:utils.adoc#EnumerableSet-contains-struct-EnumerableSet-Bytes32Set-bytes32-[`EnumerableSet.contains`]] +:xref-EnumerableSet-contains-struct-EnumerableSet-Bytes32Set-bytes32-: xref:utils.adoc#EnumerableSet-contains-struct-EnumerableSet-Bytes32Set-bytes32- +:EnumerableSet-length: pass:normal[xref:utils.adoc#EnumerableSet-length-struct-EnumerableSet-Bytes32Set-[`EnumerableSet.length`]] +:xref-EnumerableSet-length-struct-EnumerableSet-Bytes32Set-: xref:utils.adoc#EnumerableSet-length-struct-EnumerableSet-Bytes32Set- +:EnumerableSet-at: pass:normal[xref:utils.adoc#EnumerableSet-at-struct-EnumerableSet-Bytes32Set-uint256-[`EnumerableSet.at`]] +:xref-EnumerableSet-at-struct-EnumerableSet-Bytes32Set-uint256-: xref:utils.adoc#EnumerableSet-at-struct-EnumerableSet-Bytes32Set-uint256- +:EnumerableSet-values: pass:normal[xref:utils.adoc#EnumerableSet-values-struct-EnumerableSet-Bytes32Set-[`EnumerableSet.values`]] +:xref-EnumerableSet-values-struct-EnumerableSet-Bytes32Set-: xref:utils.adoc#EnumerableSet-values-struct-EnumerableSet-Bytes32Set- +:EnumerableSet-add: pass:normal[xref:utils.adoc#EnumerableSet-add-struct-EnumerableSet-AddressSet-address-[`EnumerableSet.add`]] +:xref-EnumerableSet-add-struct-EnumerableSet-AddressSet-address-: xref:utils.adoc#EnumerableSet-add-struct-EnumerableSet-AddressSet-address- +:EnumerableSet-remove: pass:normal[xref:utils.adoc#EnumerableSet-remove-struct-EnumerableSet-AddressSet-address-[`EnumerableSet.remove`]] +:xref-EnumerableSet-remove-struct-EnumerableSet-AddressSet-address-: xref:utils.adoc#EnumerableSet-remove-struct-EnumerableSet-AddressSet-address- +:EnumerableSet-contains: pass:normal[xref:utils.adoc#EnumerableSet-contains-struct-EnumerableSet-AddressSet-address-[`EnumerableSet.contains`]] +:xref-EnumerableSet-contains-struct-EnumerableSet-AddressSet-address-: xref:utils.adoc#EnumerableSet-contains-struct-EnumerableSet-AddressSet-address- +:EnumerableSet-length: pass:normal[xref:utils.adoc#EnumerableSet-length-struct-EnumerableSet-AddressSet-[`EnumerableSet.length`]] +:xref-EnumerableSet-length-struct-EnumerableSet-AddressSet-: xref:utils.adoc#EnumerableSet-length-struct-EnumerableSet-AddressSet- +:EnumerableSet-at: pass:normal[xref:utils.adoc#EnumerableSet-at-struct-EnumerableSet-AddressSet-uint256-[`EnumerableSet.at`]] +:xref-EnumerableSet-at-struct-EnumerableSet-AddressSet-uint256-: xref:utils.adoc#EnumerableSet-at-struct-EnumerableSet-AddressSet-uint256- +:EnumerableSet-values: pass:normal[xref:utils.adoc#EnumerableSet-values-struct-EnumerableSet-AddressSet-[`EnumerableSet.values`]] +:xref-EnumerableSet-values-struct-EnumerableSet-AddressSet-: xref:utils.adoc#EnumerableSet-values-struct-EnumerableSet-AddressSet- +:EnumerableSet-add: pass:normal[xref:utils.adoc#EnumerableSet-add-struct-EnumerableSet-UintSet-uint256-[`EnumerableSet.add`]] +:xref-EnumerableSet-add-struct-EnumerableSet-UintSet-uint256-: xref:utils.adoc#EnumerableSet-add-struct-EnumerableSet-UintSet-uint256- +:EnumerableSet-remove: pass:normal[xref:utils.adoc#EnumerableSet-remove-struct-EnumerableSet-UintSet-uint256-[`EnumerableSet.remove`]] +:xref-EnumerableSet-remove-struct-EnumerableSet-UintSet-uint256-: xref:utils.adoc#EnumerableSet-remove-struct-EnumerableSet-UintSet-uint256- +:EnumerableSet-contains: pass:normal[xref:utils.adoc#EnumerableSet-contains-struct-EnumerableSet-UintSet-uint256-[`EnumerableSet.contains`]] +:xref-EnumerableSet-contains-struct-EnumerableSet-UintSet-uint256-: xref:utils.adoc#EnumerableSet-contains-struct-EnumerableSet-UintSet-uint256- +:EnumerableSet-length: pass:normal[xref:utils.adoc#EnumerableSet-length-struct-EnumerableSet-UintSet-[`EnumerableSet.length`]] +:xref-EnumerableSet-length-struct-EnumerableSet-UintSet-: xref:utils.adoc#EnumerableSet-length-struct-EnumerableSet-UintSet- +:EnumerableSet-at: pass:normal[xref:utils.adoc#EnumerableSet-at-struct-EnumerableSet-UintSet-uint256-[`EnumerableSet.at`]] +:xref-EnumerableSet-at-struct-EnumerableSet-UintSet-uint256-: xref:utils.adoc#EnumerableSet-at-struct-EnumerableSet-UintSet-uint256- +:EnumerableSet-values: pass:normal[xref:utils.adoc#EnumerableSet-values-struct-EnumerableSet-UintSet-[`EnumerableSet.values`]] +:xref-EnumerableSet-values-struct-EnumerableSet-UintSet-: xref:utils.adoc#EnumerableSet-values-struct-EnumerableSet-UintSet- +:EnumerableSet-Set: pass:normal[xref:utils.adoc#EnumerableSet-Set[`EnumerableSet.Set`]] +:xref-EnumerableSet-Set: xref:utils.adoc#EnumerableSet-Set +:EnumerableSet-Bytes32Set: pass:normal[xref:utils.adoc#EnumerableSet-Bytes32Set[`EnumerableSet.Bytes32Set`]] +:xref-EnumerableSet-Bytes32Set: xref:utils.adoc#EnumerableSet-Bytes32Set +:EnumerableSet-AddressSet: pass:normal[xref:utils.adoc#EnumerableSet-AddressSet[`EnumerableSet.AddressSet`]] +:xref-EnumerableSet-AddressSet: xref:utils.adoc#EnumerableSet-AddressSet +:EnumerableSet-UintSet: pass:normal[xref:utils.adoc#EnumerableSet-UintSet[`EnumerableSet.UintSet`]] +:xref-EnumerableSet-UintSet: xref:utils.adoc#EnumerableSet-UintSet +:ERC1155: pass:normal[xref:token/ERC1155.adoc#ERC1155[`ERC1155`]] +:xref-ERC1155: xref:token/ERC1155.adoc#ERC1155 +:ERC1155-constructor: pass:normal[xref:token/ERC1155.adoc#ERC1155-constructor-string-[`ERC1155.constructor`]] +:xref-ERC1155-constructor-string-: xref:token/ERC1155.adoc#ERC1155-constructor-string- +:ERC1155-supportsInterface: pass:normal[xref:token/ERC1155.adoc#ERC1155-supportsInterface-bytes4-[`ERC1155.supportsInterface`]] +:xref-ERC1155-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155-supportsInterface-bytes4- +:ERC1155-uri: pass:normal[xref:token/ERC1155.adoc#ERC1155-uri-uint256-[`ERC1155.uri`]] +:xref-ERC1155-uri-uint256-: xref:token/ERC1155.adoc#ERC1155-uri-uint256- +:ERC1155-balanceOf: pass:normal[xref:token/ERC1155.adoc#ERC1155-balanceOf-address-uint256-[`ERC1155.balanceOf`]] +:xref-ERC1155-balanceOf-address-uint256-: xref:token/ERC1155.adoc#ERC1155-balanceOf-address-uint256- +:ERC1155-balanceOfBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155-balanceOfBatch-address---uint256---[`ERC1155.balanceOfBatch`]] +:xref-ERC1155-balanceOfBatch-address---uint256---: xref:token/ERC1155.adoc#ERC1155-balanceOfBatch-address---uint256--- +:ERC1155-setApprovalForAll: pass:normal[xref:token/ERC1155.adoc#ERC1155-setApprovalForAll-address-bool-[`ERC1155.setApprovalForAll`]] +:xref-ERC1155-setApprovalForAll-address-bool-: xref:token/ERC1155.adoc#ERC1155-setApprovalForAll-address-bool- +:ERC1155-isApprovedForAll: pass:normal[xref:token/ERC1155.adoc#ERC1155-isApprovedForAll-address-address-[`ERC1155.isApprovedForAll`]] +:xref-ERC1155-isApprovedForAll-address-address-: xref:token/ERC1155.adoc#ERC1155-isApprovedForAll-address-address- +:ERC1155-safeTransferFrom: pass:normal[xref:token/ERC1155.adoc#ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-[`ERC1155.safeTransferFrom`]] +:xref-ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes- +:ERC1155-safeBatchTransferFrom: pass:normal[xref:token/ERC1155.adoc#ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-[`ERC1155.safeBatchTransferFrom`]] +:xref-ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes- +:ERC1155-_safeTransferFrom: pass:normal[xref:token/ERC1155.adoc#ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-[`ERC1155._safeTransferFrom`]] +:xref-ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes- +:ERC1155-_safeBatchTransferFrom: pass:normal[xref:token/ERC1155.adoc#ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-[`ERC1155._safeBatchTransferFrom`]] +:xref-ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes- +:ERC1155-_setURI: pass:normal[xref:token/ERC1155.adoc#ERC1155-_setURI-string-[`ERC1155._setURI`]] +:xref-ERC1155-_setURI-string-: xref:token/ERC1155.adoc#ERC1155-_setURI-string- +:ERC1155-_mint: pass:normal[xref:token/ERC1155.adoc#ERC1155-_mint-address-uint256-uint256-bytes-[`ERC1155._mint`]] +:xref-ERC1155-_mint-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-_mint-address-uint256-uint256-bytes- +:ERC1155-_mintBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155-_mintBatch-address-uint256---uint256---bytes-[`ERC1155._mintBatch`]] +:xref-ERC1155-_mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_mintBatch-address-uint256---uint256---bytes- +:ERC1155-_burn: pass:normal[xref:token/ERC1155.adoc#ERC1155-_burn-address-uint256-uint256-[`ERC1155._burn`]] +:xref-ERC1155-_burn-address-uint256-uint256-: xref:token/ERC1155.adoc#ERC1155-_burn-address-uint256-uint256- +:ERC1155-_burnBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155-_burnBatch-address-uint256---uint256---[`ERC1155._burnBatch`]] +:xref-ERC1155-_burnBatch-address-uint256---uint256---: xref:token/ERC1155.adoc#ERC1155-_burnBatch-address-uint256---uint256--- +:ERC1155-_setApprovalForAll: pass:normal[xref:token/ERC1155.adoc#ERC1155-_setApprovalForAll-address-address-bool-[`ERC1155._setApprovalForAll`]] +:xref-ERC1155-_setApprovalForAll-address-address-bool-: xref:token/ERC1155.adoc#ERC1155-_setApprovalForAll-address-address-bool- +:ERC1155-_beforeTokenTransfer: pass:normal[xref:token/ERC1155.adoc#ERC1155-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155._beforeTokenTransfer`]] +:xref-ERC1155-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:IERC1155: pass:normal[xref:token/ERC1155.adoc#IERC1155[`IERC1155`]] +:xref-IERC1155: xref:token/ERC1155.adoc#IERC1155 +:IERC1155-balanceOf: pass:normal[xref:token/ERC1155.adoc#IERC1155-balanceOf-address-uint256-[`IERC1155.balanceOf`]] +:xref-IERC1155-balanceOf-address-uint256-: xref:token/ERC1155.adoc#IERC1155-balanceOf-address-uint256- +:IERC1155-balanceOfBatch: pass:normal[xref:token/ERC1155.adoc#IERC1155-balanceOfBatch-address---uint256---[`IERC1155.balanceOfBatch`]] +:xref-IERC1155-balanceOfBatch-address---uint256---: xref:token/ERC1155.adoc#IERC1155-balanceOfBatch-address---uint256--- +:IERC1155-setApprovalForAll: pass:normal[xref:token/ERC1155.adoc#IERC1155-setApprovalForAll-address-bool-[`IERC1155.setApprovalForAll`]] +:xref-IERC1155-setApprovalForAll-address-bool-: xref:token/ERC1155.adoc#IERC1155-setApprovalForAll-address-bool- +:IERC1155-isApprovedForAll: pass:normal[xref:token/ERC1155.adoc#IERC1155-isApprovedForAll-address-address-[`IERC1155.isApprovedForAll`]] +:xref-IERC1155-isApprovedForAll-address-address-: xref:token/ERC1155.adoc#IERC1155-isApprovedForAll-address-address- +:IERC1155-safeTransferFrom: pass:normal[xref:token/ERC1155.adoc#IERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-[`IERC1155.safeTransferFrom`]] +:xref-IERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#IERC1155-safeTransferFrom-address-address-uint256-uint256-bytes- +:IERC1155-safeBatchTransferFrom: pass:normal[xref:token/ERC1155.adoc#IERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-[`IERC1155.safeBatchTransferFrom`]] +:xref-IERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#IERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes- +:IERC1155-TransferSingle: pass:normal[xref:token/ERC1155.adoc#IERC1155-TransferSingle-address-address-address-uint256-uint256-[`IERC1155.TransferSingle`]] +:xref-IERC1155-TransferSingle-address-address-address-uint256-uint256-: xref:token/ERC1155.adoc#IERC1155-TransferSingle-address-address-address-uint256-uint256- +:IERC1155-TransferBatch: pass:normal[xref:token/ERC1155.adoc#IERC1155-TransferBatch-address-address-address-uint256---uint256---[`IERC1155.TransferBatch`]] +:xref-IERC1155-TransferBatch-address-address-address-uint256---uint256---: xref:token/ERC1155.adoc#IERC1155-TransferBatch-address-address-address-uint256---uint256--- +:IERC1155-ApprovalForAll: pass:normal[xref:token/ERC1155.adoc#IERC1155-ApprovalForAll-address-address-bool-[`IERC1155.ApprovalForAll`]] +:xref-IERC1155-ApprovalForAll-address-address-bool-: xref:token/ERC1155.adoc#IERC1155-ApprovalForAll-address-address-bool- +:IERC1155-URI: pass:normal[xref:token/ERC1155.adoc#IERC1155-URI-string-uint256-[`IERC1155.URI`]] +:xref-IERC1155-URI-string-uint256-: xref:token/ERC1155.adoc#IERC1155-URI-string-uint256- +:IERC1155Receiver: pass:normal[xref:token/ERC1155.adoc#IERC1155Receiver[`IERC1155Receiver`]] +:xref-IERC1155Receiver: xref:token/ERC1155.adoc#IERC1155Receiver +:IERC1155Receiver-onERC1155Received: pass:normal[xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155Received-address-address-uint256-uint256-bytes-[`IERC1155Receiver.onERC1155Received`]] +:xref-IERC1155Receiver-onERC1155Received-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155Received-address-address-uint256-uint256-bytes- +:IERC1155Receiver-onERC1155BatchReceived: pass:normal[xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155BatchReceived-address-address-uint256---uint256---bytes-[`IERC1155Receiver.onERC1155BatchReceived`]] +:xref-IERC1155Receiver-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155BatchReceived-address-address-uint256---uint256---bytes- +:ERC1155Burnable: pass:normal[xref:token/ERC1155.adoc#ERC1155Burnable[`ERC1155Burnable`]] +:xref-ERC1155Burnable: xref:token/ERC1155.adoc#ERC1155Burnable +:ERC1155Burnable-burn: pass:normal[xref:token/ERC1155.adoc#ERC1155Burnable-burn-address-uint256-uint256-[`ERC1155Burnable.burn`]] +:xref-ERC1155Burnable-burn-address-uint256-uint256-: xref:token/ERC1155.adoc#ERC1155Burnable-burn-address-uint256-uint256- +:ERC1155Burnable-burnBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155Burnable-burnBatch-address-uint256---uint256---[`ERC1155Burnable.burnBatch`]] +:xref-ERC1155Burnable-burnBatch-address-uint256---uint256---: xref:token/ERC1155.adoc#ERC1155Burnable-burnBatch-address-uint256---uint256--- +:ERC1155Pausable: pass:normal[xref:token/ERC1155.adoc#ERC1155Pausable[`ERC1155Pausable`]] +:xref-ERC1155Pausable: xref:token/ERC1155.adoc#ERC1155Pausable +:ERC1155Pausable-_beforeTokenTransfer: pass:normal[xref:token/ERC1155.adoc#ERC1155Pausable-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155Pausable._beforeTokenTransfer`]] +:xref-ERC1155Pausable-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155Pausable-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:ERC1155Supply: pass:normal[xref:token/ERC1155.adoc#ERC1155Supply[`ERC1155Supply`]] +:xref-ERC1155Supply: xref:token/ERC1155.adoc#ERC1155Supply +:ERC1155Supply-totalSupply: pass:normal[xref:token/ERC1155.adoc#ERC1155Supply-totalSupply-uint256-[`ERC1155Supply.totalSupply`]] +:xref-ERC1155Supply-totalSupply-uint256-: xref:token/ERC1155.adoc#ERC1155Supply-totalSupply-uint256- +:ERC1155Supply-exists: pass:normal[xref:token/ERC1155.adoc#ERC1155Supply-exists-uint256-[`ERC1155Supply.exists`]] +:xref-ERC1155Supply-exists-uint256-: xref:token/ERC1155.adoc#ERC1155Supply-exists-uint256- +:ERC1155Supply-_beforeTokenTransfer: pass:normal[xref:token/ERC1155.adoc#ERC1155Supply-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155Supply._beforeTokenTransfer`]] +:xref-ERC1155Supply-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155Supply-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:IERC1155MetadataURI: pass:normal[xref:token/ERC1155.adoc#IERC1155MetadataURI[`IERC1155MetadataURI`]] +:xref-IERC1155MetadataURI: xref:token/ERC1155.adoc#IERC1155MetadataURI +:IERC1155MetadataURI-uri: pass:normal[xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256-[`IERC1155MetadataURI.uri`]] +:xref-IERC1155MetadataURI-uri-uint256-: xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256- +:ERC1155Holder: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder[`ERC1155Holder`]] +:xref-ERC1155Holder: xref:token/ERC1155.adoc#ERC1155Holder +:ERC1155Holder-onERC1155Received: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-[`ERC1155Holder.onERC1155Received`]] +:xref-ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes- +:ERC1155Holder-onERC1155BatchReceived: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder-onERC1155BatchReceived-address-address-uint256---uint256---bytes-[`ERC1155Holder.onERC1155BatchReceived`]] +:xref-ERC1155Holder-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155Holder-onERC1155BatchReceived-address-address-uint256---uint256---bytes- +:ERC1155Receiver: pass:normal[xref:token/ERC1155.adoc#ERC1155Receiver[`ERC1155Receiver`]] +:xref-ERC1155Receiver: xref:token/ERC1155.adoc#ERC1155Receiver +:ERC1155Receiver-supportsInterface: pass:normal[xref:token/ERC1155.adoc#ERC1155Receiver-supportsInterface-bytes4-[`ERC1155Receiver.supportsInterface`]] +:xref-ERC1155Receiver-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155Receiver-supportsInterface-bytes4- +:ERC20: pass:normal[xref:token/ERC20.adoc#ERC20[`ERC20`]] +:xref-ERC20: xref:token/ERC20.adoc#ERC20 +:ERC20-constructor: pass:normal[xref:token/ERC20.adoc#ERC20-constructor-string-string-[`ERC20.constructor`]] +:xref-ERC20-constructor-string-string-: xref:token/ERC20.adoc#ERC20-constructor-string-string- +:ERC20-name: pass:normal[xref:token/ERC20.adoc#ERC20-name--[`ERC20.name`]] +:xref-ERC20-name--: xref:token/ERC20.adoc#ERC20-name-- +:ERC20-symbol: pass:normal[xref:token/ERC20.adoc#ERC20-symbol--[`ERC20.symbol`]] +:xref-ERC20-symbol--: xref:token/ERC20.adoc#ERC20-symbol-- +:ERC20-decimals: pass:normal[xref:token/ERC20.adoc#ERC20-decimals--[`ERC20.decimals`]] +:xref-ERC20-decimals--: xref:token/ERC20.adoc#ERC20-decimals-- +:ERC20-totalSupply: pass:normal[xref:token/ERC20.adoc#ERC20-totalSupply--[`ERC20.totalSupply`]] +:xref-ERC20-totalSupply--: xref:token/ERC20.adoc#ERC20-totalSupply-- +:ERC20-balanceOf: pass:normal[xref:token/ERC20.adoc#ERC20-balanceOf-address-[`ERC20.balanceOf`]] +:xref-ERC20-balanceOf-address-: xref:token/ERC20.adoc#ERC20-balanceOf-address- +:ERC20-transfer: pass:normal[xref:token/ERC20.adoc#ERC20-transfer-address-uint256-[`ERC20.transfer`]] +:xref-ERC20-transfer-address-uint256-: xref:token/ERC20.adoc#ERC20-transfer-address-uint256- +:ERC20-allowance: pass:normal[xref:token/ERC20.adoc#ERC20-allowance-address-address-[`ERC20.allowance`]] +:xref-ERC20-allowance-address-address-: xref:token/ERC20.adoc#ERC20-allowance-address-address- +:ERC20-approve: pass:normal[xref:token/ERC20.adoc#ERC20-approve-address-uint256-[`ERC20.approve`]] +:xref-ERC20-approve-address-uint256-: xref:token/ERC20.adoc#ERC20-approve-address-uint256- +:ERC20-transferFrom: pass:normal[xref:token/ERC20.adoc#ERC20-transferFrom-address-address-uint256-[`ERC20.transferFrom`]] +:xref-ERC20-transferFrom-address-address-uint256-: xref:token/ERC20.adoc#ERC20-transferFrom-address-address-uint256- +:ERC20-increaseAllowance: pass:normal[xref:token/ERC20.adoc#ERC20-increaseAllowance-address-uint256-[`ERC20.increaseAllowance`]] +:xref-ERC20-increaseAllowance-address-uint256-: xref:token/ERC20.adoc#ERC20-increaseAllowance-address-uint256- +:ERC20-decreaseAllowance: pass:normal[xref:token/ERC20.adoc#ERC20-decreaseAllowance-address-uint256-[`ERC20.decreaseAllowance`]] +:xref-ERC20-decreaseAllowance-address-uint256-: xref:token/ERC20.adoc#ERC20-decreaseAllowance-address-uint256- +:ERC20-_transfer: pass:normal[xref:token/ERC20.adoc#ERC20-_transfer-address-address-uint256-[`ERC20._transfer`]] +:xref-ERC20-_transfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_transfer-address-address-uint256- +:ERC20-_mint: pass:normal[xref:token/ERC20.adoc#ERC20-_mint-address-uint256-[`ERC20._mint`]] +:xref-ERC20-_mint-address-uint256-: xref:token/ERC20.adoc#ERC20-_mint-address-uint256- +:ERC20-_burn: pass:normal[xref:token/ERC20.adoc#ERC20-_burn-address-uint256-[`ERC20._burn`]] +:xref-ERC20-_burn-address-uint256-: xref:token/ERC20.adoc#ERC20-_burn-address-uint256- +:ERC20-_approve: pass:normal[xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256-[`ERC20._approve`]] +:xref-ERC20-_approve-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256- +:ERC20-_spendAllowance: pass:normal[xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256-[`ERC20._spendAllowance`]] +:xref-ERC20-_spendAllowance-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256- +:ERC20-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256-[`ERC20._beforeTokenTransfer`]] +:xref-ERC20-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256- +:ERC20-_afterTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_afterTokenTransfer-address-address-uint256-[`ERC20._afterTokenTransfer`]] +:xref-ERC20-_afterTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_afterTokenTransfer-address-address-uint256- +:IERC20: pass:normal[xref:token/ERC20.adoc#IERC20[`IERC20`]] +:xref-IERC20: xref:token/ERC20.adoc#IERC20 +:IERC20-totalSupply: pass:normal[xref:token/ERC20.adoc#IERC20-totalSupply--[`IERC20.totalSupply`]] +:xref-IERC20-totalSupply--: xref:token/ERC20.adoc#IERC20-totalSupply-- +:IERC20-balanceOf: pass:normal[xref:token/ERC20.adoc#IERC20-balanceOf-address-[`IERC20.balanceOf`]] +:xref-IERC20-balanceOf-address-: xref:token/ERC20.adoc#IERC20-balanceOf-address- +:IERC20-transfer: pass:normal[xref:token/ERC20.adoc#IERC20-transfer-address-uint256-[`IERC20.transfer`]] +:xref-IERC20-transfer-address-uint256-: xref:token/ERC20.adoc#IERC20-transfer-address-uint256- +:IERC20-allowance: pass:normal[xref:token/ERC20.adoc#IERC20-allowance-address-address-[`IERC20.allowance`]] +:xref-IERC20-allowance-address-address-: xref:token/ERC20.adoc#IERC20-allowance-address-address- +:IERC20-approve: pass:normal[xref:token/ERC20.adoc#IERC20-approve-address-uint256-[`IERC20.approve`]] +:xref-IERC20-approve-address-uint256-: xref:token/ERC20.adoc#IERC20-approve-address-uint256- +:IERC20-transferFrom: pass:normal[xref:token/ERC20.adoc#IERC20-transferFrom-address-address-uint256-[`IERC20.transferFrom`]] +:xref-IERC20-transferFrom-address-address-uint256-: xref:token/ERC20.adoc#IERC20-transferFrom-address-address-uint256- +:IERC20-Transfer: pass:normal[xref:token/ERC20.adoc#IERC20-Transfer-address-address-uint256-[`IERC20.Transfer`]] +:xref-IERC20-Transfer-address-address-uint256-: xref:token/ERC20.adoc#IERC20-Transfer-address-address-uint256- +:IERC20-Approval: pass:normal[xref:token/ERC20.adoc#IERC20-Approval-address-address-uint256-[`IERC20.Approval`]] +:xref-IERC20-Approval-address-address-uint256-: xref:token/ERC20.adoc#IERC20-Approval-address-address-uint256- +:ERC20Burnable: pass:normal[xref:token/ERC20.adoc#ERC20Burnable[`ERC20Burnable`]] +:xref-ERC20Burnable: xref:token/ERC20.adoc#ERC20Burnable +:ERC20Burnable-burn: pass:normal[xref:token/ERC20.adoc#ERC20Burnable-burn-uint256-[`ERC20Burnable.burn`]] +:xref-ERC20Burnable-burn-uint256-: xref:token/ERC20.adoc#ERC20Burnable-burn-uint256- +:ERC20Burnable-burnFrom: pass:normal[xref:token/ERC20.adoc#ERC20Burnable-burnFrom-address-uint256-[`ERC20Burnable.burnFrom`]] +:xref-ERC20Burnable-burnFrom-address-uint256-: xref:token/ERC20.adoc#ERC20Burnable-burnFrom-address-uint256- +:ERC20Capped: pass:normal[xref:token/ERC20.adoc#ERC20Capped[`ERC20Capped`]] +:xref-ERC20Capped: xref:token/ERC20.adoc#ERC20Capped +:ERC20Capped-constructor: pass:normal[xref:token/ERC20.adoc#ERC20Capped-constructor-uint256-[`ERC20Capped.constructor`]] +:xref-ERC20Capped-constructor-uint256-: xref:token/ERC20.adoc#ERC20Capped-constructor-uint256- +:ERC20Capped-cap: pass:normal[xref:token/ERC20.adoc#ERC20Capped-cap--[`ERC20Capped.cap`]] +:xref-ERC20Capped-cap--: xref:token/ERC20.adoc#ERC20Capped-cap-- +:ERC20Capped-_mint: pass:normal[xref:token/ERC20.adoc#ERC20Capped-_mint-address-uint256-[`ERC20Capped._mint`]] +:xref-ERC20Capped-_mint-address-uint256-: xref:token/ERC20.adoc#ERC20Capped-_mint-address-uint256- +:ERC20FlashMint: pass:normal[xref:token/ERC20.adoc#ERC20FlashMint[`ERC20FlashMint`]] +:xref-ERC20FlashMint: xref:token/ERC20.adoc#ERC20FlashMint +:ERC20FlashMint-maxFlashLoan: pass:normal[xref:token/ERC20.adoc#ERC20FlashMint-maxFlashLoan-address-[`ERC20FlashMint.maxFlashLoan`]] +:xref-ERC20FlashMint-maxFlashLoan-address-: xref:token/ERC20.adoc#ERC20FlashMint-maxFlashLoan-address- +:ERC20FlashMint-flashFee: pass:normal[xref:token/ERC20.adoc#ERC20FlashMint-flashFee-address-uint256-[`ERC20FlashMint.flashFee`]] +:xref-ERC20FlashMint-flashFee-address-uint256-: xref:token/ERC20.adoc#ERC20FlashMint-flashFee-address-uint256- +:ERC20FlashMint-flashLoan: pass:normal[xref:token/ERC20.adoc#ERC20FlashMint-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-[`ERC20FlashMint.flashLoan`]] +:xref-ERC20FlashMint-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-: xref:token/ERC20.adoc#ERC20FlashMint-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes- +:ERC20Pausable: pass:normal[xref:token/ERC20.adoc#ERC20Pausable[`ERC20Pausable`]] +:xref-ERC20Pausable: xref:token/ERC20.adoc#ERC20Pausable +:ERC20Pausable-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20Pausable-_beforeTokenTransfer-address-address-uint256-[`ERC20Pausable._beforeTokenTransfer`]] +:xref-ERC20Pausable-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20Pausable-_beforeTokenTransfer-address-address-uint256- +:ERC20Snapshot: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot[`ERC20Snapshot`]] +:xref-ERC20Snapshot: xref:token/ERC20.adoc#ERC20Snapshot +:ERC20Snapshot-_snapshot: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-_snapshot--[`ERC20Snapshot._snapshot`]] +:xref-ERC20Snapshot-_snapshot--: xref:token/ERC20.adoc#ERC20Snapshot-_snapshot-- +:ERC20Snapshot-_getCurrentSnapshotId: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-_getCurrentSnapshotId--[`ERC20Snapshot._getCurrentSnapshotId`]] +:xref-ERC20Snapshot-_getCurrentSnapshotId--: xref:token/ERC20.adoc#ERC20Snapshot-_getCurrentSnapshotId-- +:ERC20Snapshot-balanceOfAt: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-balanceOfAt-address-uint256-[`ERC20Snapshot.balanceOfAt`]] +:xref-ERC20Snapshot-balanceOfAt-address-uint256-: xref:token/ERC20.adoc#ERC20Snapshot-balanceOfAt-address-uint256- +:ERC20Snapshot-totalSupplyAt: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-totalSupplyAt-uint256-[`ERC20Snapshot.totalSupplyAt`]] +:xref-ERC20Snapshot-totalSupplyAt-uint256-: xref:token/ERC20.adoc#ERC20Snapshot-totalSupplyAt-uint256- +:ERC20Snapshot-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-_beforeTokenTransfer-address-address-uint256-[`ERC20Snapshot._beforeTokenTransfer`]] +:xref-ERC20Snapshot-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20Snapshot-_beforeTokenTransfer-address-address-uint256- +:ERC20Snapshot-Snapshot: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-Snapshot-uint256-[`ERC20Snapshot.Snapshot`]] +:xref-ERC20Snapshot-Snapshot-uint256-: xref:token/ERC20.adoc#ERC20Snapshot-Snapshot-uint256- +:ERC20Snapshot-Snapshots: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-Snapshots[`ERC20Snapshot.Snapshots`]] +:xref-ERC20Snapshot-Snapshots: xref:token/ERC20.adoc#ERC20Snapshot-Snapshots +:ERC20Votes: pass:normal[xref:token/ERC20.adoc#ERC20Votes[`ERC20Votes`]] +:xref-ERC20Votes: xref:token/ERC20.adoc#ERC20Votes +:ERC20Votes-checkpoints: pass:normal[xref:token/ERC20.adoc#ERC20Votes-checkpoints-address-uint32-[`ERC20Votes.checkpoints`]] +:xref-ERC20Votes-checkpoints-address-uint32-: xref:token/ERC20.adoc#ERC20Votes-checkpoints-address-uint32- +:ERC20Votes-numCheckpoints: pass:normal[xref:token/ERC20.adoc#ERC20Votes-numCheckpoints-address-[`ERC20Votes.numCheckpoints`]] +:xref-ERC20Votes-numCheckpoints-address-: xref:token/ERC20.adoc#ERC20Votes-numCheckpoints-address- +:ERC20Votes-delegates: pass:normal[xref:token/ERC20.adoc#ERC20Votes-delegates-address-[`ERC20Votes.delegates`]] +:xref-ERC20Votes-delegates-address-: xref:token/ERC20.adoc#ERC20Votes-delegates-address- +:ERC20Votes-getVotes: pass:normal[xref:token/ERC20.adoc#ERC20Votes-getVotes-address-[`ERC20Votes.getVotes`]] +:xref-ERC20Votes-getVotes-address-: xref:token/ERC20.adoc#ERC20Votes-getVotes-address- +:ERC20Votes-getPastVotes: pass:normal[xref:token/ERC20.adoc#ERC20Votes-getPastVotes-address-uint256-[`ERC20Votes.getPastVotes`]] +:xref-ERC20Votes-getPastVotes-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-getPastVotes-address-uint256- +:ERC20Votes-getPastTotalSupply: pass:normal[xref:token/ERC20.adoc#ERC20Votes-getPastTotalSupply-uint256-[`ERC20Votes.getPastTotalSupply`]] +:xref-ERC20Votes-getPastTotalSupply-uint256-: xref:token/ERC20.adoc#ERC20Votes-getPastTotalSupply-uint256- +:ERC20Votes-delegate: pass:normal[xref:token/ERC20.adoc#ERC20Votes-delegate-address-[`ERC20Votes.delegate`]] +:xref-ERC20Votes-delegate-address-: xref:token/ERC20.adoc#ERC20Votes-delegate-address- +:ERC20Votes-delegateBySig: pass:normal[xref:token/ERC20.adoc#ERC20Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Votes.delegateBySig`]] +:xref-ERC20Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:token/ERC20.adoc#ERC20Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:ERC20Votes-_maxSupply: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_maxSupply--[`ERC20Votes._maxSupply`]] +:xref-ERC20Votes-_maxSupply--: xref:token/ERC20.adoc#ERC20Votes-_maxSupply-- +:ERC20Votes-_mint: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_mint-address-uint256-[`ERC20Votes._mint`]] +:xref-ERC20Votes-_mint-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-_mint-address-uint256- +:ERC20Votes-_burn: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_burn-address-uint256-[`ERC20Votes._burn`]] +:xref-ERC20Votes-_burn-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-_burn-address-uint256- +:ERC20Votes-_afterTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_afterTokenTransfer-address-address-uint256-[`ERC20Votes._afterTokenTransfer`]] +:xref-ERC20Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-_afterTokenTransfer-address-address-uint256- +:ERC20Votes-_delegate: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address-[`ERC20Votes._delegate`]] +:xref-ERC20Votes-_delegate-address-address-: xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address- +:ERC20Votes-Checkpoint: pass:normal[xref:token/ERC20.adoc#ERC20Votes-Checkpoint[`ERC20Votes.Checkpoint`]] +:xref-ERC20Votes-Checkpoint: xref:token/ERC20.adoc#ERC20Votes-Checkpoint +:ERC20VotesComp: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp[`ERC20VotesComp`]] +:xref-ERC20VotesComp: xref:token/ERC20.adoc#ERC20VotesComp +:ERC20VotesComp-getCurrentVotes: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp-getCurrentVotes-address-[`ERC20VotesComp.getCurrentVotes`]] +:xref-ERC20VotesComp-getCurrentVotes-address-: xref:token/ERC20.adoc#ERC20VotesComp-getCurrentVotes-address- +:ERC20VotesComp-getPriorVotes: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp-getPriorVotes-address-uint256-[`ERC20VotesComp.getPriorVotes`]] +:xref-ERC20VotesComp-getPriorVotes-address-uint256-: xref:token/ERC20.adoc#ERC20VotesComp-getPriorVotes-address-uint256- +:ERC20VotesComp-_maxSupply: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp-_maxSupply--[`ERC20VotesComp._maxSupply`]] +:xref-ERC20VotesComp-_maxSupply--: xref:token/ERC20.adoc#ERC20VotesComp-_maxSupply-- +:ERC20Wrapper: pass:normal[xref:token/ERC20.adoc#ERC20Wrapper[`ERC20Wrapper`]] +:xref-ERC20Wrapper: xref:token/ERC20.adoc#ERC20Wrapper +:ERC20Wrapper-underlying: pass:normal[xref:token/ERC20.adoc#ERC20Wrapper-underlying-contract-IERC20[`ERC20Wrapper.underlying`]] +:xref-ERC20Wrapper-underlying-contract-IERC20: xref:token/ERC20.adoc#ERC20Wrapper-underlying-contract-IERC20 +:ERC20Wrapper-constructor: pass:normal[xref:token/ERC20.adoc#ERC20Wrapper-constructor-contract-IERC20-[`ERC20Wrapper.constructor`]] +:xref-ERC20Wrapper-constructor-contract-IERC20-: xref:token/ERC20.adoc#ERC20Wrapper-constructor-contract-IERC20- +:ERC20Wrapper-depositFor: pass:normal[xref:token/ERC20.adoc#ERC20Wrapper-depositFor-address-uint256-[`ERC20Wrapper.depositFor`]] +:xref-ERC20Wrapper-depositFor-address-uint256-: xref:token/ERC20.adoc#ERC20Wrapper-depositFor-address-uint256- +:ERC20Wrapper-withdrawTo: pass:normal[xref:token/ERC20.adoc#ERC20Wrapper-withdrawTo-address-uint256-[`ERC20Wrapper.withdrawTo`]] +:xref-ERC20Wrapper-withdrawTo-address-uint256-: xref:token/ERC20.adoc#ERC20Wrapper-withdrawTo-address-uint256- +:ERC20Wrapper-_recover: pass:normal[xref:token/ERC20.adoc#ERC20Wrapper-_recover-address-[`ERC20Wrapper._recover`]] +:xref-ERC20Wrapper-_recover-address-: xref:token/ERC20.adoc#ERC20Wrapper-_recover-address- +:IERC20Metadata: pass:normal[xref:token/ERC20.adoc#IERC20Metadata[`IERC20Metadata`]] +:xref-IERC20Metadata: xref:token/ERC20.adoc#IERC20Metadata +:IERC20Metadata-name: pass:normal[xref:token/ERC20.adoc#IERC20Metadata-name--[`IERC20Metadata.name`]] +:xref-IERC20Metadata-name--: xref:token/ERC20.adoc#IERC20Metadata-name-- +:IERC20Metadata-symbol: pass:normal[xref:token/ERC20.adoc#IERC20Metadata-symbol--[`IERC20Metadata.symbol`]] +:xref-IERC20Metadata-symbol--: xref:token/ERC20.adoc#IERC20Metadata-symbol-- +:IERC20Metadata-decimals: pass:normal[xref:token/ERC20.adoc#IERC20Metadata-decimals--[`IERC20Metadata.decimals`]] +:xref-IERC20Metadata-decimals--: xref:token/ERC20.adoc#IERC20Metadata-decimals-- +:ERC20Permit: pass:normal[xref:token/ERC20.adoc#ERC20Permit[`ERC20Permit`]] +:xref-ERC20Permit: xref:token/ERC20.adoc#ERC20Permit +:ERC20Permit-constructor: pass:normal[xref:token/ERC20.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]] +:xref-ERC20Permit-constructor-string-: xref:token/ERC20.adoc#ERC20Permit-constructor-string- +:ERC20Permit-permit: pass:normal[xref:token/ERC20.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]] +:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:token/ERC20.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32- +:ERC20Permit-nonces: pass:normal[xref:token/ERC20.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]] +:xref-ERC20Permit-nonces-address-: xref:token/ERC20.adoc#ERC20Permit-nonces-address- +:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:token/ERC20.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]] +:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:token/ERC20.adoc#ERC20Permit-DOMAIN_SEPARATOR-- +:ERC20Permit-_useNonce: pass:normal[xref:token/ERC20.adoc#ERC20Permit-_useNonce-address-[`ERC20Permit._useNonce`]] +:xref-ERC20Permit-_useNonce-address-: xref:token/ERC20.adoc#ERC20Permit-_useNonce-address- +:IERC20Permit: pass:normal[xref:token/ERC20.adoc#IERC20Permit[`IERC20Permit`]] +:xref-IERC20Permit: xref:token/ERC20.adoc#IERC20Permit +:IERC20Permit-permit: pass:normal[xref:token/ERC20.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]] +:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:token/ERC20.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32- +:IERC20Permit-nonces: pass:normal[xref:token/ERC20.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]] +:xref-IERC20Permit-nonces-address-: xref:token/ERC20.adoc#IERC20Permit-nonces-address- +:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]] +:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR-- +:SafeERC20: pass:normal[xref:token/ERC20.adoc#SafeERC20[`SafeERC20`]] +:xref-SafeERC20: xref:token/ERC20.adoc#SafeERC20 +:SafeERC20-safeTransfer: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeTransfer-contract-IERC20-address-uint256-[`SafeERC20.safeTransfer`]] +:xref-SafeERC20-safeTransfer-contract-IERC20-address-uint256-: xref:token/ERC20.adoc#SafeERC20-safeTransfer-contract-IERC20-address-uint256- +:SafeERC20-safeTransferFrom: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeTransferFrom-contract-IERC20-address-address-uint256-[`SafeERC20.safeTransferFrom`]] +:xref-SafeERC20-safeTransferFrom-contract-IERC20-address-address-uint256-: xref:token/ERC20.adoc#SafeERC20-safeTransferFrom-contract-IERC20-address-address-uint256- +:SafeERC20-safeApprove: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeApprove-contract-IERC20-address-uint256-[`SafeERC20.safeApprove`]] +:xref-SafeERC20-safeApprove-contract-IERC20-address-uint256-: xref:token/ERC20.adoc#SafeERC20-safeApprove-contract-IERC20-address-uint256- +:SafeERC20-safeIncreaseAllowance: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeIncreaseAllowance-contract-IERC20-address-uint256-[`SafeERC20.safeIncreaseAllowance`]] +:xref-SafeERC20-safeIncreaseAllowance-contract-IERC20-address-uint256-: xref:token/ERC20.adoc#SafeERC20-safeIncreaseAllowance-contract-IERC20-address-uint256- +:SafeERC20-safeDecreaseAllowance: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeDecreaseAllowance-contract-IERC20-address-uint256-[`SafeERC20.safeDecreaseAllowance`]] +:xref-SafeERC20-safeDecreaseAllowance-contract-IERC20-address-uint256-: xref:token/ERC20.adoc#SafeERC20-safeDecreaseAllowance-contract-IERC20-address-uint256- +:TokenTimelock: pass:normal[xref:token/ERC20.adoc#TokenTimelock[`TokenTimelock`]] +:xref-TokenTimelock: xref:token/ERC20.adoc#TokenTimelock +:TokenTimelock-constructor: pass:normal[xref:token/ERC20.adoc#TokenTimelock-constructor-contract-IERC20-address-uint256-[`TokenTimelock.constructor`]] +:xref-TokenTimelock-constructor-contract-IERC20-address-uint256-: xref:token/ERC20.adoc#TokenTimelock-constructor-contract-IERC20-address-uint256- +:TokenTimelock-token: pass:normal[xref:token/ERC20.adoc#TokenTimelock-token--[`TokenTimelock.token`]] +:xref-TokenTimelock-token--: xref:token/ERC20.adoc#TokenTimelock-token-- +:TokenTimelock-beneficiary: pass:normal[xref:token/ERC20.adoc#TokenTimelock-beneficiary--[`TokenTimelock.beneficiary`]] +:xref-TokenTimelock-beneficiary--: xref:token/ERC20.adoc#TokenTimelock-beneficiary-- +:TokenTimelock-releaseTime: pass:normal[xref:token/ERC20.adoc#TokenTimelock-releaseTime--[`TokenTimelock.releaseTime`]] +:xref-TokenTimelock-releaseTime--: xref:token/ERC20.adoc#TokenTimelock-releaseTime-- +:TokenTimelock-release: pass:normal[xref:token/ERC20.adoc#TokenTimelock-release--[`TokenTimelock.release`]] +:xref-TokenTimelock-release--: xref:token/ERC20.adoc#TokenTimelock-release-- +:ERC721: pass:normal[xref:token/ERC721.adoc#ERC721[`ERC721`]] +:xref-ERC721: xref:token/ERC721.adoc#ERC721 +:ERC721-constructor: pass:normal[xref:token/ERC721.adoc#ERC721-constructor-string-string-[`ERC721.constructor`]] +:xref-ERC721-constructor-string-string-: xref:token/ERC721.adoc#ERC721-constructor-string-string- +:ERC721-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721-supportsInterface-bytes4-[`ERC721.supportsInterface`]] +:xref-ERC721-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721-supportsInterface-bytes4- +:ERC721-balanceOf: pass:normal[xref:token/ERC721.adoc#ERC721-balanceOf-address-[`ERC721.balanceOf`]] +:xref-ERC721-balanceOf-address-: xref:token/ERC721.adoc#ERC721-balanceOf-address- +:ERC721-ownerOf: pass:normal[xref:token/ERC721.adoc#ERC721-ownerOf-uint256-[`ERC721.ownerOf`]] +:xref-ERC721-ownerOf-uint256-: xref:token/ERC721.adoc#ERC721-ownerOf-uint256- +:ERC721-name: pass:normal[xref:token/ERC721.adoc#ERC721-name--[`ERC721.name`]] +:xref-ERC721-name--: xref:token/ERC721.adoc#ERC721-name-- +:ERC721-symbol: pass:normal[xref:token/ERC721.adoc#ERC721-symbol--[`ERC721.symbol`]] +:xref-ERC721-symbol--: xref:token/ERC721.adoc#ERC721-symbol-- +:ERC721-tokenURI: pass:normal[xref:token/ERC721.adoc#ERC721-tokenURI-uint256-[`ERC721.tokenURI`]] +:xref-ERC721-tokenURI-uint256-: xref:token/ERC721.adoc#ERC721-tokenURI-uint256- +:ERC721-_baseURI: pass:normal[xref:token/ERC721.adoc#ERC721-_baseURI--[`ERC721._baseURI`]] +:xref-ERC721-_baseURI--: xref:token/ERC721.adoc#ERC721-_baseURI-- +:ERC721-approve: pass:normal[xref:token/ERC721.adoc#ERC721-approve-address-uint256-[`ERC721.approve`]] +:xref-ERC721-approve-address-uint256-: xref:token/ERC721.adoc#ERC721-approve-address-uint256- +:ERC721-getApproved: pass:normal[xref:token/ERC721.adoc#ERC721-getApproved-uint256-[`ERC721.getApproved`]] +:xref-ERC721-getApproved-uint256-: xref:token/ERC721.adoc#ERC721-getApproved-uint256- +:ERC721-setApprovalForAll: pass:normal[xref:token/ERC721.adoc#ERC721-setApprovalForAll-address-bool-[`ERC721.setApprovalForAll`]] +:xref-ERC721-setApprovalForAll-address-bool-: xref:token/ERC721.adoc#ERC721-setApprovalForAll-address-bool- +:ERC721-isApprovedForAll: pass:normal[xref:token/ERC721.adoc#ERC721-isApprovedForAll-address-address-[`ERC721.isApprovedForAll`]] +:xref-ERC721-isApprovedForAll-address-address-: xref:token/ERC721.adoc#ERC721-isApprovedForAll-address-address- +:ERC721-transferFrom: pass:normal[xref:token/ERC721.adoc#ERC721-transferFrom-address-address-uint256-[`ERC721.transferFrom`]] +:xref-ERC721-transferFrom-address-address-uint256-: xref:token/ERC721.adoc#ERC721-transferFrom-address-address-uint256- +:ERC721-safeTransferFrom: pass:normal[xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-[`ERC721.safeTransferFrom`]] +:xref-ERC721-safeTransferFrom-address-address-uint256-: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256- +:ERC721-safeTransferFrom: pass:normal[xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-bytes-[`ERC721.safeTransferFrom`]] +:xref-ERC721-safeTransferFrom-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-bytes- +:ERC721-_safeTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-bytes-[`ERC721._safeTransfer`]] +:xref-ERC721-_safeTransfer-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-bytes- +:ERC721-_exists: pass:normal[xref:token/ERC721.adoc#ERC721-_exists-uint256-[`ERC721._exists`]] +:xref-ERC721-_exists-uint256-: xref:token/ERC721.adoc#ERC721-_exists-uint256- +:ERC721-_isApprovedOrOwner: pass:normal[xref:token/ERC721.adoc#ERC721-_isApprovedOrOwner-address-uint256-[`ERC721._isApprovedOrOwner`]] +:xref-ERC721-_isApprovedOrOwner-address-uint256-: xref:token/ERC721.adoc#ERC721-_isApprovedOrOwner-address-uint256- +:ERC721-_safeMint: pass:normal[xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-[`ERC721._safeMint`]] +:xref-ERC721-_safeMint-address-uint256-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256- +:ERC721-_safeMint: pass:normal[xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-bytes-[`ERC721._safeMint`]] +:xref-ERC721-_safeMint-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-bytes- +:ERC721-_mint: pass:normal[xref:token/ERC721.adoc#ERC721-_mint-address-uint256-[`ERC721._mint`]] +:xref-ERC721-_mint-address-uint256-: xref:token/ERC721.adoc#ERC721-_mint-address-uint256- +:ERC721-_burn: pass:normal[xref:token/ERC721.adoc#ERC721-_burn-uint256-[`ERC721._burn`]] +:xref-ERC721-_burn-uint256-: xref:token/ERC721.adoc#ERC721-_burn-uint256- +:ERC721-_transfer: pass:normal[xref:token/ERC721.adoc#ERC721-_transfer-address-address-uint256-[`ERC721._transfer`]] +:xref-ERC721-_transfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_transfer-address-address-uint256- +:ERC721-_approve: pass:normal[xref:token/ERC721.adoc#ERC721-_approve-address-uint256-[`ERC721._approve`]] +:xref-ERC721-_approve-address-uint256-: xref:token/ERC721.adoc#ERC721-_approve-address-uint256- +:ERC721-_setApprovalForAll: pass:normal[xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool-[`ERC721._setApprovalForAll`]] +:xref-ERC721-_setApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool- +:ERC721-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256-[`ERC721._beforeTokenTransfer`]] +:xref-ERC721-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256- +:ERC721-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256-[`ERC721._afterTokenTransfer`]] +:xref-ERC721-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256- +:IERC721: pass:normal[xref:token/ERC721.adoc#IERC721[`IERC721`]] +:xref-IERC721: xref:token/ERC721.adoc#IERC721 +:IERC721-balanceOf: pass:normal[xref:token/ERC721.adoc#IERC721-balanceOf-address-[`IERC721.balanceOf`]] +:xref-IERC721-balanceOf-address-: xref:token/ERC721.adoc#IERC721-balanceOf-address- +:IERC721-ownerOf: pass:normal[xref:token/ERC721.adoc#IERC721-ownerOf-uint256-[`IERC721.ownerOf`]] +:xref-IERC721-ownerOf-uint256-: xref:token/ERC721.adoc#IERC721-ownerOf-uint256- +:IERC721-safeTransferFrom: pass:normal[xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256-[`IERC721.safeTransferFrom`]] +:xref-IERC721-safeTransferFrom-address-address-uint256-: xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256- +:IERC721-transferFrom: pass:normal[xref:token/ERC721.adoc#IERC721-transferFrom-address-address-uint256-[`IERC721.transferFrom`]] +:xref-IERC721-transferFrom-address-address-uint256-: xref:token/ERC721.adoc#IERC721-transferFrom-address-address-uint256- +:IERC721-approve: pass:normal[xref:token/ERC721.adoc#IERC721-approve-address-uint256-[`IERC721.approve`]] +:xref-IERC721-approve-address-uint256-: xref:token/ERC721.adoc#IERC721-approve-address-uint256- +:IERC721-getApproved: pass:normal[xref:token/ERC721.adoc#IERC721-getApproved-uint256-[`IERC721.getApproved`]] +:xref-IERC721-getApproved-uint256-: xref:token/ERC721.adoc#IERC721-getApproved-uint256- +:IERC721-setApprovalForAll: pass:normal[xref:token/ERC721.adoc#IERC721-setApprovalForAll-address-bool-[`IERC721.setApprovalForAll`]] +:xref-IERC721-setApprovalForAll-address-bool-: xref:token/ERC721.adoc#IERC721-setApprovalForAll-address-bool- +:IERC721-isApprovedForAll: pass:normal[xref:token/ERC721.adoc#IERC721-isApprovedForAll-address-address-[`IERC721.isApprovedForAll`]] +:xref-IERC721-isApprovedForAll-address-address-: xref:token/ERC721.adoc#IERC721-isApprovedForAll-address-address- +:IERC721-safeTransferFrom: pass:normal[xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256-bytes-[`IERC721.safeTransferFrom`]] +:xref-IERC721-safeTransferFrom-address-address-uint256-bytes-: xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256-bytes- +:IERC721-Transfer: pass:normal[xref:token/ERC721.adoc#IERC721-Transfer-address-address-uint256-[`IERC721.Transfer`]] +:xref-IERC721-Transfer-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Transfer-address-address-uint256- +:IERC721-Approval: pass:normal[xref:token/ERC721.adoc#IERC721-Approval-address-address-uint256-[`IERC721.Approval`]] +:xref-IERC721-Approval-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Approval-address-address-uint256- +:IERC721-ApprovalForAll: pass:normal[xref:token/ERC721.adoc#IERC721-ApprovalForAll-address-address-bool-[`IERC721.ApprovalForAll`]] +:xref-IERC721-ApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#IERC721-ApprovalForAll-address-address-bool- +:IERC721Receiver: pass:normal[xref:token/ERC721.adoc#IERC721Receiver[`IERC721Receiver`]] +:xref-IERC721Receiver: xref:token/ERC721.adoc#IERC721Receiver +:IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]] +:xref-IERC721Receiver-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes- +:ERC721Burnable: pass:normal[xref:token/ERC721.adoc#ERC721Burnable[`ERC721Burnable`]] +:xref-ERC721Burnable: xref:token/ERC721.adoc#ERC721Burnable +:ERC721Burnable-burn: pass:normal[xref:token/ERC721.adoc#ERC721Burnable-burn-uint256-[`ERC721Burnable.burn`]] +:xref-ERC721Burnable-burn-uint256-: xref:token/ERC721.adoc#ERC721Burnable-burn-uint256- +:ERC721Enumerable: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable[`ERC721Enumerable`]] +:xref-ERC721Enumerable: xref:token/ERC721.adoc#ERC721Enumerable +:ERC721Enumerable-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-supportsInterface-bytes4-[`ERC721Enumerable.supportsInterface`]] +:xref-ERC721Enumerable-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721Enumerable-supportsInterface-bytes4- +:ERC721Enumerable-tokenOfOwnerByIndex: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-tokenOfOwnerByIndex-address-uint256-[`ERC721Enumerable.tokenOfOwnerByIndex`]] +:xref-ERC721Enumerable-tokenOfOwnerByIndex-address-uint256-: xref:token/ERC721.adoc#ERC721Enumerable-tokenOfOwnerByIndex-address-uint256- +:ERC721Enumerable-totalSupply: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-totalSupply--[`ERC721Enumerable.totalSupply`]] +:xref-ERC721Enumerable-totalSupply--: xref:token/ERC721.adoc#ERC721Enumerable-totalSupply-- +:ERC721Enumerable-tokenByIndex: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-tokenByIndex-uint256-[`ERC721Enumerable.tokenByIndex`]] +:xref-ERC721Enumerable-tokenByIndex-uint256-: xref:token/ERC721.adoc#ERC721Enumerable-tokenByIndex-uint256- +:ERC721Enumerable-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-_beforeTokenTransfer-address-address-uint256-[`ERC721Enumerable._beforeTokenTransfer`]] +:xref-ERC721Enumerable-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Enumerable-_beforeTokenTransfer-address-address-uint256- +:ERC721Pausable: pass:normal[xref:token/ERC721.adoc#ERC721Pausable[`ERC721Pausable`]] +:xref-ERC721Pausable: xref:token/ERC721.adoc#ERC721Pausable +:ERC721Pausable-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256-[`ERC721Pausable._beforeTokenTransfer`]] +:xref-ERC721Pausable-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256- +:ERC721Royalty: pass:normal[xref:token/ERC721.adoc#ERC721Royalty[`ERC721Royalty`]] +:xref-ERC721Royalty: xref:token/ERC721.adoc#ERC721Royalty +:ERC721Royalty-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4-[`ERC721Royalty.supportsInterface`]] +:xref-ERC721Royalty-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4- +:ERC721Royalty-_burn: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256-[`ERC721Royalty._burn`]] +:xref-ERC721Royalty-_burn-uint256-: xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256- +:ERC721URIStorage: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage[`ERC721URIStorage`]] +:xref-ERC721URIStorage: xref:token/ERC721.adoc#ERC721URIStorage +:ERC721URIStorage-tokenURI: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage-tokenURI-uint256-[`ERC721URIStorage.tokenURI`]] +:xref-ERC721URIStorage-tokenURI-uint256-: xref:token/ERC721.adoc#ERC721URIStorage-tokenURI-uint256- +:ERC721URIStorage-_setTokenURI: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage-_setTokenURI-uint256-string-[`ERC721URIStorage._setTokenURI`]] +:xref-ERC721URIStorage-_setTokenURI-uint256-string-: xref:token/ERC721.adoc#ERC721URIStorage-_setTokenURI-uint256-string- +:ERC721URIStorage-_burn: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage-_burn-uint256-[`ERC721URIStorage._burn`]] +:xref-ERC721URIStorage-_burn-uint256-: xref:token/ERC721.adoc#ERC721URIStorage-_burn-uint256- +:IERC721Enumerable: pass:normal[xref:token/ERC721.adoc#IERC721Enumerable[`IERC721Enumerable`]] +:xref-IERC721Enumerable: xref:token/ERC721.adoc#IERC721Enumerable +:IERC721Enumerable-totalSupply: pass:normal[xref:token/ERC721.adoc#IERC721Enumerable-totalSupply--[`IERC721Enumerable.totalSupply`]] +:xref-IERC721Enumerable-totalSupply--: xref:token/ERC721.adoc#IERC721Enumerable-totalSupply-- +:IERC721Enumerable-tokenOfOwnerByIndex: pass:normal[xref:token/ERC721.adoc#IERC721Enumerable-tokenOfOwnerByIndex-address-uint256-[`IERC721Enumerable.tokenOfOwnerByIndex`]] +:xref-IERC721Enumerable-tokenOfOwnerByIndex-address-uint256-: xref:token/ERC721.adoc#IERC721Enumerable-tokenOfOwnerByIndex-address-uint256- +:IERC721Enumerable-tokenByIndex: pass:normal[xref:token/ERC721.adoc#IERC721Enumerable-tokenByIndex-uint256-[`IERC721Enumerable.tokenByIndex`]] +:xref-IERC721Enumerable-tokenByIndex-uint256-: xref:token/ERC721.adoc#IERC721Enumerable-tokenByIndex-uint256- +:IERC721Metadata: pass:normal[xref:token/ERC721.adoc#IERC721Metadata[`IERC721Metadata`]] +:xref-IERC721Metadata: xref:token/ERC721.adoc#IERC721Metadata +:IERC721Metadata-name: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-name--[`IERC721Metadata.name`]] +:xref-IERC721Metadata-name--: xref:token/ERC721.adoc#IERC721Metadata-name-- +:IERC721Metadata-symbol: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-symbol--[`IERC721Metadata.symbol`]] +:xref-IERC721Metadata-symbol--: xref:token/ERC721.adoc#IERC721Metadata-symbol-- +:IERC721Metadata-tokenURI: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256-[`IERC721Metadata.tokenURI`]] +:xref-IERC721Metadata-tokenURI-uint256-: xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256- +:ERC721Votes: pass:normal[xref:token/ERC721.adoc#ERC721Votes[`ERC721Votes`]] +:xref-ERC721Votes: xref:token/ERC721.adoc#ERC721Votes +:ERC721Votes-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256-[`ERC721Votes._afterTokenTransfer`]] +:xref-ERC721Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256- +:ERC721Votes-_getVotingUnits: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address-[`ERC721Votes._getVotingUnits`]] +:xref-ERC721Votes-_getVotingUnits-address-: xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address- +:ERC721Holder: pass:normal[xref:token/ERC721.adoc#ERC721Holder[`ERC721Holder`]] +:xref-ERC721Holder: xref:token/ERC721.adoc#ERC721Holder +:ERC721Holder-onERC721Received: pass:normal[xref:token/ERC721.adoc#ERC721Holder-onERC721Received-address-address-uint256-bytes-[`ERC721Holder.onERC721Received`]] +:xref-ERC721Holder-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721Holder-onERC721Received-address-address-uint256-bytes- +:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]] +:xref-ERC777: xref:token/ERC777.adoc#ERC777 +:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]] +:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry +:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]] +:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address--- +:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]] +:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name-- +:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]] +:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol-- +:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]] +:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals-- +:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]] +:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity-- +:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]] +:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply-- +:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]] +:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address- +:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]] +:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes- +:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]] +:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256- +:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]] +:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes- +:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]] +:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address- +:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]] +:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address- +:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]] +:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address- +:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]] +:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators-- +:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]] +:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes- +:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]] +:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes- +:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]] +:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address- +:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]] +:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256- +:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]] +:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256- +:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]] +:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes- +:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-bool-[`ERC777._mint`]] +:xref-ERC777-_mint-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-bool- +:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]] +:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool- +:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]] +:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes- +:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]] +:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256- +:ERC777-_spendAllowance: pass:normal[xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256-[`ERC777._spendAllowance`]] +:xref-ERC777-_spendAllowance-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256- +:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]] +:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256- +:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]] +:xref-IERC777: xref:token/ERC777.adoc#IERC777 +:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]] +:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name-- +:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]] +:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol-- +:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]] +:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity-- +:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]] +:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply-- +:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]] +:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address- +:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]] +:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes- +:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]] +:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes- +:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]] +:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address- +:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]] +:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address- +:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]] +:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address- +:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]] +:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators-- +:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]] +:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes- +:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]] +:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes- +:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]] +:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes- +:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]] +:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes- +:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]] +:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes- +:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]] +:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address- +:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]] +:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address- +:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]] +:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient +:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]] +:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes- +:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]] +:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender +:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]] +:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes- +:ERC777PresetFixedSupply: pass:normal[xref:token/ERC777.adoc#ERC777PresetFixedSupply[`ERC777PresetFixedSupply`]] +:xref-ERC777PresetFixedSupply: xref:token/ERC777.adoc#ERC777PresetFixedSupply +:ERC777PresetFixedSupply-constructor: pass:normal[xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-[`ERC777PresetFixedSupply.constructor`]] +:xref-ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-: xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address- +:ERC2981: pass:normal[xref:token/common.adoc#ERC2981[`ERC2981`]] +:xref-ERC2981: xref:token/common.adoc#ERC2981 +:ERC2981-supportsInterface: pass:normal[xref:token/common.adoc#ERC2981-supportsInterface-bytes4-[`ERC2981.supportsInterface`]] +:xref-ERC2981-supportsInterface-bytes4-: xref:token/common.adoc#ERC2981-supportsInterface-bytes4- +:ERC2981-royaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256-[`ERC2981.royaltyInfo`]] +:xref-ERC2981-royaltyInfo-uint256-uint256-: xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256- +:ERC2981-_feeDenominator: pass:normal[xref:token/common.adoc#ERC2981-_feeDenominator--[`ERC2981._feeDenominator`]] +:xref-ERC2981-_feeDenominator--: xref:token/common.adoc#ERC2981-_feeDenominator-- +:ERC2981-_setDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96-[`ERC2981._setDefaultRoyalty`]] +:xref-ERC2981-_setDefaultRoyalty-address-uint96-: xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96- +:ERC2981-_deleteDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty--[`ERC2981._deleteDefaultRoyalty`]] +:xref-ERC2981-_deleteDefaultRoyalty--: xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty-- +:ERC2981-_setTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96-[`ERC2981._setTokenRoyalty`]] +:xref-ERC2981-_setTokenRoyalty-uint256-address-uint96-: xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96- +:ERC2981-_resetTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256-[`ERC2981._resetTokenRoyalty`]] +:xref-ERC2981-_resetTokenRoyalty-uint256-: xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256- +:ERC2981-RoyaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-RoyaltyInfo[`ERC2981.RoyaltyInfo`]] +:xref-ERC2981-RoyaltyInfo: xref:token/common.adoc#ERC2981-RoyaltyInfo +:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] +:xref-ERC1155PresetMinterPauser: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser +:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] +:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string- +:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] +:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- +:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] +:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- +:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] +:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause-- +:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] +:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause-- +:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] +:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4- +:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] +:xref-ERC20PresetFixedSupply: xref:token/ERC20/presets.md#ERC20PresetFixedSupply +:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] +:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address- +:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] +:xref-ERC20PresetMinterPauser: xref:token/ERC20/presets.md#ERC20PresetMinterPauser +:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] +:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string- +:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] +:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256- +:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] +:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause-- +:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] +:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause-- +:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] +:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId +:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] +:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string- +:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] +:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI-- +:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] +:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address- +:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] +:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause-- +:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] +:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause-- +:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] +:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] +:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- +Contract presets are now deprecated in favor of [Contracts Wizard](https://wizard.openzeppelin.com/) as a more powerful alternative. diff --git a/docs/modules/api/pages/token/ERC721.adoc b/docs/modules/api/pages/token/ERC721.adoc index f519bd527..c80a611f8 100644 --- a/docs/modules/api/pages/token/ERC721.adoc +++ b/docs/modules/api/pages/token/ERC721.adoc @@ -192,6 +192,8 @@ :xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32- :Governor-_castVote: pass:normal[xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-[`Governor._castVote`]] :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string- +:Governor-relay: pass:normal[xref:governance.adoc#Governor-relay-address-uint256-bytes-[`Governor.relay`]] +:xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes- :Governor-_executor: pass:normal[xref:governance.adoc#Governor-_executor--[`Governor._executor`]] :xref-Governor-_executor--: xref:governance.adoc#Governor-_executor-- :Governor-ProposalCore: pass:normal[xref:governance.adoc#Governor-ProposalCore[`Governor.ProposalCore`]] @@ -368,6 +370,24 @@ :xref-GovernorCountingSimple-ProposalVote: xref:governance.adoc#GovernorCountingSimple-ProposalVote :GovernorCountingSimple-VoteType: pass:normal[xref:governance.adoc#GovernorCountingSimple-VoteType[`GovernorCountingSimple.VoteType`]] :xref-GovernorCountingSimple-VoteType: xref:governance.adoc#GovernorCountingSimple-VoteType +:GovernorPreventLateQuorum: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum[`GovernorPreventLateQuorum`]] +:xref-GovernorPreventLateQuorum: xref:governance.adoc#GovernorPreventLateQuorum +:GovernorPreventLateQuorum-constructor: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64-[`GovernorPreventLateQuorum.constructor`]] +:xref-GovernorPreventLateQuorum-constructor-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64- +:GovernorPreventLateQuorum-proposalDeadline: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256-[`GovernorPreventLateQuorum.proposalDeadline`]] +:xref-GovernorPreventLateQuorum-proposalDeadline-uint256-: xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256- +:GovernorPreventLateQuorum-_castVote: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-[`GovernorPreventLateQuorum._castVote`]] +:xref-GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-: xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string- +:GovernorPreventLateQuorum-lateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension--[`GovernorPreventLateQuorum.lateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-lateQuorumVoteExtension--: xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension-- +:GovernorPreventLateQuorum-setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum.setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-_setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum._setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-ProposalExtended: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-[`GovernorPreventLateQuorum.ProposalExtended`]] +:xref-GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64- +:GovernorPreventLateQuorum-LateQuorumVoteExtensionSet: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-[`GovernorPreventLateQuorum.LateQuorumVoteExtensionSet`]] +:xref-GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64- :GovernorProposalThreshold: pass:normal[xref:governance.adoc#GovernorProposalThreshold[`GovernorProposalThreshold`]] :xref-GovernorProposalThreshold: xref:governance.adoc#GovernorProposalThreshold :GovernorProposalThreshold-propose: pass:normal[xref:governance.adoc#GovernorProposalThreshold-propose-address---uint256---bytes---string-[`GovernorProposalThreshold.propose`]] @@ -484,10 +504,10 @@ :xref-GovernorTimelockControl-TimelockChange-address-address-: xref:governance.adoc#GovernorTimelockControl-TimelockChange-address-address- :GovernorVotes: pass:normal[xref:governance.adoc#GovernorVotes[`GovernorVotes`]] :xref-GovernorVotes: xref:governance.adoc#GovernorVotes -:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-ERC20Votes[`GovernorVotes.token`]] -:xref-GovernorVotes-token-contract-ERC20Votes: xref:governance.adoc#GovernorVotes-token-contract-ERC20Votes -:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-ERC20Votes-[`GovernorVotes.constructor`]] -:xref-GovernorVotes-constructor-contract-ERC20Votes-: xref:governance.adoc#GovernorVotes-constructor-contract-ERC20Votes- +:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-IVotes[`GovernorVotes.token`]] +:xref-GovernorVotes-token-contract-IVotes: xref:governance.adoc#GovernorVotes-token-contract-IVotes +:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-IVotes-[`GovernorVotes.constructor`]] +:xref-GovernorVotes-constructor-contract-IVotes-: xref:governance.adoc#GovernorVotes-constructor-contract-IVotes- :GovernorVotes-getVotes: pass:normal[xref:governance.adoc#GovernorVotes-getVotes-address-uint256-[`GovernorVotes.getVotes`]] :xref-GovernorVotes-getVotes-address-uint256-: xref:governance.adoc#GovernorVotes-getVotes-address-uint256- :GovernorVotesComp: pass:normal[xref:governance.adoc#GovernorVotesComp[`GovernorVotesComp`]] @@ -524,6 +544,52 @@ :xref-IGovernorTimelock-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernorTimelock-queue-address---uint256---bytes---bytes32- :IGovernorTimelock-ProposalQueued: pass:normal[xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256-[`IGovernorTimelock.ProposalQueued`]] :xref-IGovernorTimelock-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256- +:IVotes: pass:normal[xref:governance.adoc#IVotes[`IVotes`]] +:xref-IVotes: xref:governance.adoc#IVotes +:IVotes-getVotes: pass:normal[xref:governance.adoc#IVotes-getVotes-address-[`IVotes.getVotes`]] +:xref-IVotes-getVotes-address-: xref:governance.adoc#IVotes-getVotes-address- +:IVotes-getPastVotes: pass:normal[xref:governance.adoc#IVotes-getPastVotes-address-uint256-[`IVotes.getPastVotes`]] +:xref-IVotes-getPastVotes-address-uint256-: xref:governance.adoc#IVotes-getPastVotes-address-uint256- +:IVotes-getPastTotalSupply: pass:normal[xref:governance.adoc#IVotes-getPastTotalSupply-uint256-[`IVotes.getPastTotalSupply`]] +:xref-IVotes-getPastTotalSupply-uint256-: xref:governance.adoc#IVotes-getPastTotalSupply-uint256- +:IVotes-delegates: pass:normal[xref:governance.adoc#IVotes-delegates-address-[`IVotes.delegates`]] +:xref-IVotes-delegates-address-: xref:governance.adoc#IVotes-delegates-address- +:IVotes-delegate: pass:normal[xref:governance.adoc#IVotes-delegate-address-[`IVotes.delegate`]] +:xref-IVotes-delegate-address-: xref:governance.adoc#IVotes-delegate-address- +:IVotes-delegateBySig: pass:normal[xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`IVotes.delegateBySig`]] +:xref-IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:IVotes-DelegateChanged: pass:normal[xref:governance.adoc#IVotes-DelegateChanged-address-address-address-[`IVotes.DelegateChanged`]] +:xref-IVotes-DelegateChanged-address-address-address-: xref:governance.adoc#IVotes-DelegateChanged-address-address-address- +:IVotes-DelegateVotesChanged: pass:normal[xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256-[`IVotes.DelegateVotesChanged`]] +:xref-IVotes-DelegateVotesChanged-address-uint256-uint256-: xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256- +:Votes: pass:normal[xref:governance.adoc#Votes[`Votes`]] +:xref-Votes: xref:governance.adoc#Votes +:Votes-getVotes: pass:normal[xref:governance.adoc#Votes-getVotes-address-[`Votes.getVotes`]] +:xref-Votes-getVotes-address-: xref:governance.adoc#Votes-getVotes-address- +:Votes-getPastVotes: pass:normal[xref:governance.adoc#Votes-getPastVotes-address-uint256-[`Votes.getPastVotes`]] +:xref-Votes-getPastVotes-address-uint256-: xref:governance.adoc#Votes-getPastVotes-address-uint256- +:Votes-getPastTotalSupply: pass:normal[xref:governance.adoc#Votes-getPastTotalSupply-uint256-[`Votes.getPastTotalSupply`]] +:xref-Votes-getPastTotalSupply-uint256-: xref:governance.adoc#Votes-getPastTotalSupply-uint256- +:Votes-_getTotalSupply: pass:normal[xref:governance.adoc#Votes-_getTotalSupply--[`Votes._getTotalSupply`]] +:xref-Votes-_getTotalSupply--: xref:governance.adoc#Votes-_getTotalSupply-- +:Votes-delegates: pass:normal[xref:governance.adoc#Votes-delegates-address-[`Votes.delegates`]] +:xref-Votes-delegates-address-: xref:governance.adoc#Votes-delegates-address- +:Votes-delegate: pass:normal[xref:governance.adoc#Votes-delegate-address-[`Votes.delegate`]] +:xref-Votes-delegate-address-: xref:governance.adoc#Votes-delegate-address- +:Votes-delegateBySig: pass:normal[xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`Votes.delegateBySig`]] +:xref-Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:Votes-_delegate: pass:normal[xref:governance.adoc#Votes-_delegate-address-address-[`Votes._delegate`]] +:xref-Votes-_delegate-address-address-: xref:governance.adoc#Votes-_delegate-address-address- +:Votes-_transferVotingUnits: pass:normal[xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256-[`Votes._transferVotingUnits`]] +:xref-Votes-_transferVotingUnits-address-address-uint256-: xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256- +:Votes-_useNonce: pass:normal[xref:governance.adoc#Votes-_useNonce-address-[`Votes._useNonce`]] +:xref-Votes-_useNonce-address-: xref:governance.adoc#Votes-_useNonce-address- +:Votes-nonces: pass:normal[xref:governance.adoc#Votes-nonces-address-[`Votes.nonces`]] +:xref-Votes-nonces-address-: xref:governance.adoc#Votes-nonces-address- +:Votes-DOMAIN_SEPARATOR: pass:normal[xref:governance.adoc#Votes-DOMAIN_SEPARATOR--[`Votes.DOMAIN_SEPARATOR`]] +:xref-Votes-DOMAIN_SEPARATOR--: xref:governance.adoc#Votes-DOMAIN_SEPARATOR-- +:Votes-_getVotingUnits: pass:normal[xref:governance.adoc#Votes-_getVotingUnits-address-[`Votes._getVotingUnits`]] +:xref-Votes-_getVotingUnits-address-: xref:governance.adoc#Votes-_getVotingUnits-address- :IERC1271: pass:normal[xref:interfaces.adoc#IERC1271[`IERC1271`]] :xref-IERC1271: xref:interfaces.adoc#IERC1271 :IERC1271-isValidSignature: pass:normal[xref:interfaces.adoc#IERC1271-isValidSignature-bytes32-bytes-[`IERC1271.isValidSignature`]] @@ -566,6 +632,10 @@ :xref-IERC3156FlashLender-flashFee-address-uint256-: xref:interfaces.adoc#IERC3156FlashLender-flashFee-address-uint256- :IERC3156FlashLender-flashLoan: pass:normal[xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-[`IERC3156FlashLender.flashLoan`]] :xref-IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-: xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes- +:IERC1822Proxiable: pass:normal[xref:interfaces.adoc#IERC1822Proxiable[`IERC1822Proxiable`]] +:xref-IERC1822Proxiable: xref:interfaces.adoc#IERC1822Proxiable +:IERC1822Proxiable-proxiableUUID: pass:normal[xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID--[`IERC1822Proxiable.proxiableUUID`]] +:xref-IERC1822Proxiable-proxiableUUID--: xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID-- :IERC2612: pass:normal[xref:interfaces.adoc#IERC2612[`IERC2612`]] :xref-IERC2612: xref:interfaces.adoc#IERC2612 :ERC2771Context: pass:normal[xref:metatx.adoc#ERC2771Context[`ERC2771Context`]] @@ -618,8 +688,8 @@ :xref-ERC1967Upgrade-_upgradeTo-address-: xref:proxy.adoc#ERC1967Upgrade-_upgradeTo-address- :ERC1967Upgrade-_upgradeToAndCall: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCall`]] :xref-ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool- -:ERC1967Upgrade-_upgradeToAndCallSecure: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallSecure`]] -:xref-ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool- +:ERC1967Upgrade-_upgradeToAndCallUUPS: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallUUPS`]] +:xref-ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool- :ERC1967Upgrade-_getAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_getAdmin--[`ERC1967Upgrade._getAdmin`]] :xref-ERC1967Upgrade-_getAdmin--: xref:proxy.adoc#ERC1967Upgrade-_getAdmin-- :ERC1967Upgrade-_changeAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_changeAdmin-address-[`ERC1967Upgrade._changeAdmin`]] @@ -714,6 +784,10 @@ :xref-UUPSUpgradeable: xref:proxy.adoc#UUPSUpgradeable :UUPSUpgradeable-onlyProxy: pass:normal[xref:proxy.adoc#UUPSUpgradeable-onlyProxy--[`UUPSUpgradeable.onlyProxy`]] :xref-UUPSUpgradeable-onlyProxy--: xref:proxy.adoc#UUPSUpgradeable-onlyProxy-- +:UUPSUpgradeable-notDelegated: pass:normal[xref:proxy.adoc#UUPSUpgradeable-notDelegated--[`UUPSUpgradeable.notDelegated`]] +:xref-UUPSUpgradeable-notDelegated--: xref:proxy.adoc#UUPSUpgradeable-notDelegated-- +:UUPSUpgradeable-proxiableUUID: pass:normal[xref:proxy.adoc#UUPSUpgradeable-proxiableUUID--[`UUPSUpgradeable.proxiableUUID`]] +:xref-UUPSUpgradeable-proxiableUUID--: xref:proxy.adoc#UUPSUpgradeable-proxiableUUID-- :UUPSUpgradeable-upgradeTo: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address-[`UUPSUpgradeable.upgradeTo`]] :xref-UUPSUpgradeable-upgradeTo-address-: xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address- :UUPSUpgradeable-upgradeToAndCall: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeToAndCall-address-bytes-[`UUPSUpgradeable.upgradeToAndCall`]] @@ -782,6 +856,26 @@ :xref-Arrays: xref:utils.adoc#Arrays :Arrays-findUpperBound: pass:normal[xref:utils.adoc#Arrays-findUpperBound-uint256---uint256-[`Arrays.findUpperBound`]] :xref-Arrays-findUpperBound-uint256---uint256-: xref:utils.adoc#Arrays-findUpperBound-uint256---uint256- +:Base64: pass:normal[xref:utils.adoc#Base64[`Base64`]] +:xref-Base64: xref:utils.adoc#Base64 +:Base64-_TABLE: pass:normal[xref:utils.adoc#Base64-_TABLE-string[`Base64._TABLE`]] +:xref-Base64-_TABLE-string: xref:utils.adoc#Base64-_TABLE-string +:Base64-encode: pass:normal[xref:utils.adoc#Base64-encode-bytes-[`Base64.encode`]] +:xref-Base64-encode-bytes-: xref:utils.adoc#Base64-encode-bytes- +:Checkpoints: pass:normal[xref:utils.adoc#Checkpoints[`Checkpoints`]] +:xref-Checkpoints: xref:utils.adoc#Checkpoints +:Checkpoints-latest: pass:normal[xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History-[`Checkpoints.latest`]] +:xref-Checkpoints-latest-struct-Checkpoints-History-: xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History- +:Checkpoints-getAtBlock: pass:normal[xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-[`Checkpoints.getAtBlock`]] +:xref-Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256- +:Checkpoints-Checkpoint: pass:normal[xref:utils.adoc#Checkpoints-Checkpoint[`Checkpoints.Checkpoint`]] +:xref-Checkpoints-Checkpoint: xref:utils.adoc#Checkpoints-Checkpoint +:Checkpoints-History: pass:normal[xref:utils.adoc#Checkpoints-History[`Checkpoints.History`]] +:xref-Checkpoints-History: xref:utils.adoc#Checkpoints-History :Context: pass:normal[xref:utils.adoc#Context[`Context`]] :xref-Context: xref:utils.adoc#Context :Context-_msgSender: pass:normal[xref:utils.adoc#Context-_msgSender--[`Context._msgSender`]] @@ -1078,6 +1172,16 @@ :xref-SafeMath-div-uint256-uint256-string-: xref:utils.adoc#SafeMath-div-uint256-uint256-string- :SafeMath-mod: pass:normal[xref:utils.adoc#SafeMath-mod-uint256-uint256-string-[`SafeMath.mod`]] :xref-SafeMath-mod-uint256-uint256-string-: xref:utils.adoc#SafeMath-mod-uint256-uint256-string- +:SignedMath: pass:normal[xref:utils.adoc#SignedMath[`SignedMath`]] +:xref-SignedMath: xref:utils.adoc#SignedMath +:SignedMath-max: pass:normal[xref:utils.adoc#SignedMath-max-int256-int256-[`SignedMath.max`]] +:xref-SignedMath-max-int256-int256-: xref:utils.adoc#SignedMath-max-int256-int256- +:SignedMath-min: pass:normal[xref:utils.adoc#SignedMath-min-int256-int256-[`SignedMath.min`]] +:xref-SignedMath-min-int256-int256-: xref:utils.adoc#SignedMath-min-int256-int256- +:SignedMath-average: pass:normal[xref:utils.adoc#SignedMath-average-int256-int256-[`SignedMath.average`]] +:xref-SignedMath-average-int256-int256-: xref:utils.adoc#SignedMath-average-int256-int256- +:SignedMath-abs: pass:normal[xref:utils.adoc#SignedMath-abs-int256-[`SignedMath.abs`]] +:xref-SignedMath-abs-int256-: xref:utils.adoc#SignedMath-abs-int256- :SignedSafeMath: pass:normal[xref:utils.adoc#SignedSafeMath[`SignedSafeMath`]] :xref-SignedSafeMath: xref:utils.adoc#SignedSafeMath :SignedSafeMath-mul: pass:normal[xref:utils.adoc#SignedSafeMath-mul-int256-int256-[`SignedSafeMath.mul`]] @@ -1256,26 +1360,6 @@ :xref-IERC1155MetadataURI: xref:token/ERC1155.adoc#IERC1155MetadataURI :IERC1155MetadataURI-uri: pass:normal[xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256-[`IERC1155MetadataURI.uri`]] :xref-IERC1155MetadataURI-uri-uint256-: xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256- -:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] -:xref-ERC1155PresetMinterPauser: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser -:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] -:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 -:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] -:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 -:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] -:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-constructor-string- -:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] -:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- -:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] -:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- -:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] -:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-pause-- -:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] -:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-unpause-- -:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] -:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-supportsInterface-bytes4- -:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] -:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- :ERC1155Holder: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder[`ERC1155Holder`]] :xref-ERC1155Holder: xref:token/ERC1155.adoc#ERC1155Holder :ERC1155Holder-onERC1155Received: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-[`ERC1155Holder.onERC1155Received`]] @@ -1320,6 +1404,8 @@ :xref-ERC20-_burn-address-uint256-: xref:token/ERC20.adoc#ERC20-_burn-address-uint256- :ERC20-_approve: pass:normal[xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256-[`ERC20._approve`]] :xref-ERC20-_approve-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256- +:ERC20-_spendAllowance: pass:normal[xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256-[`ERC20._spendAllowance`]] +:xref-ERC20-_spendAllowance-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256- :ERC20-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256-[`ERC20._beforeTokenTransfer`]] :xref-ERC20-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256- :ERC20-_afterTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_afterTokenTransfer-address-address-uint256-[`ERC20._afterTokenTransfer`]] @@ -1412,10 +1498,6 @@ :xref-ERC20Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-_afterTokenTransfer-address-address-uint256- :ERC20Votes-_delegate: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address-[`ERC20Votes._delegate`]] :xref-ERC20Votes-_delegate-address-address-: xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address- -:ERC20Votes-DelegateChanged: pass:normal[xref:token/ERC20.adoc#ERC20Votes-DelegateChanged-address-address-address-[`ERC20Votes.DelegateChanged`]] -:xref-ERC20Votes-DelegateChanged-address-address-address-: xref:token/ERC20.adoc#ERC20Votes-DelegateChanged-address-address-address- -:ERC20Votes-DelegateVotesChanged: pass:normal[xref:token/ERC20.adoc#ERC20Votes-DelegateVotesChanged-address-uint256-uint256-[`ERC20Votes.DelegateVotesChanged`]] -:xref-ERC20Votes-DelegateVotesChanged-address-uint256-uint256-: xref:token/ERC20.adoc#ERC20Votes-DelegateVotesChanged-address-uint256-uint256- :ERC20Votes-Checkpoint: pass:normal[xref:token/ERC20.adoc#ERC20Votes-Checkpoint[`ERC20Votes.Checkpoint`]] :xref-ERC20Votes-Checkpoint: xref:token/ERC20.adoc#ERC20Votes-Checkpoint :ERC20VotesComp: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp[`ERC20VotesComp`]] @@ -1466,26 +1548,6 @@ :xref-IERC20Permit-nonces-address-: xref:token/ERC20.adoc#IERC20Permit-nonces-address- :IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]] :xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR-- -:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20.adoc#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] -:xref-ERC20PresetFixedSupply: xref:token/ERC20.adoc#ERC20PresetFixedSupply -:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20.adoc#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] -:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20.adoc#ERC20PresetFixedSupply-constructor-string-string-uint256-address- -:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] -:xref-ERC20PresetMinterPauser: xref:token/ERC20.adoc#ERC20PresetMinterPauser -:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] -:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20.adoc#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 -:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] -:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20.adoc#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 -:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] -:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-constructor-string-string- -:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] -:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-mint-address-uint256- -:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] -:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20.adoc#ERC20PresetMinterPauser-pause-- -:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] -:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20.adoc#ERC20PresetMinterPauser-unpause-- -:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] -:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- :SafeERC20: pass:normal[xref:token/ERC20.adoc#SafeERC20[`SafeERC20`]] :xref-SafeERC20: xref:token/ERC20.adoc#SafeERC20 :SafeERC20-safeTransfer: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeTransfer-contract-IERC20-address-uint256-[`SafeERC20.safeTransfer`]] @@ -1564,6 +1626,8 @@ :xref-ERC721-_setApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool- :ERC721-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256-[`ERC721._beforeTokenTransfer`]] :xref-ERC721-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256- +:ERC721-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256-[`ERC721._afterTokenTransfer`]] +:xref-ERC721-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256- :IERC721: pass:normal[xref:token/ERC721.adoc#IERC721[`IERC721`]] :xref-IERC721: xref:token/ERC721.adoc#IERC721 :IERC721-balanceOf: pass:normal[xref:token/ERC721.adoc#IERC721-balanceOf-address-[`IERC721.balanceOf`]] @@ -1614,6 +1678,12 @@ :xref-ERC721Pausable: xref:token/ERC721.adoc#ERC721Pausable :ERC721Pausable-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256-[`ERC721Pausable._beforeTokenTransfer`]] :xref-ERC721Pausable-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256- +:ERC721Royalty: pass:normal[xref:token/ERC721.adoc#ERC721Royalty[`ERC721Royalty`]] +:xref-ERC721Royalty: xref:token/ERC721.adoc#ERC721Royalty +:ERC721Royalty-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4-[`ERC721Royalty.supportsInterface`]] +:xref-ERC721Royalty-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4- +:ERC721Royalty-_burn: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256-[`ERC721Royalty._burn`]] +:xref-ERC721Royalty-_burn-uint256-: xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256- :ERC721URIStorage: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage[`ERC721URIStorage`]] :xref-ERC721URIStorage: xref:token/ERC721.adoc#ERC721URIStorage :ERC721URIStorage-tokenURI: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage-tokenURI-uint256-[`ERC721URIStorage.tokenURI`]] @@ -1638,26 +1708,12 @@ :xref-IERC721Metadata-symbol--: xref:token/ERC721.adoc#IERC721Metadata-symbol-- :IERC721Metadata-tokenURI: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256-[`IERC721Metadata.tokenURI`]] :xref-IERC721Metadata-tokenURI-uint256-: xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256- -:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] -:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId -:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] -:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 -:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] -:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 -:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] -:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-constructor-string-string-string- -:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] -:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_baseURI-- -:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] -:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-mint-address- -:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] -:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-pause-- -:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] -:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-unpause-- -:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] -:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- -:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] -:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- +:ERC721Votes: pass:normal[xref:token/ERC721.adoc#ERC721Votes[`ERC721Votes`]] +:xref-ERC721Votes: xref:token/ERC721.adoc#ERC721Votes +:ERC721Votes-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256-[`ERC721Votes._afterTokenTransfer`]] +:xref-ERC721Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256- +:ERC721Votes-_getVotingUnits: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address-[`ERC721Votes._getVotingUnits`]] +:xref-ERC721Votes-_getVotingUnits-address-: xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address- :ERC721Holder: pass:normal[xref:token/ERC721.adoc#ERC721Holder[`ERC721Holder`]] :xref-ERC721Holder: xref:token/ERC721.adoc#ERC721Holder :ERC721Holder-onERC721Received: pass:normal[xref:token/ERC721.adoc#ERC721Holder-onERC721Received-address-address-uint256-bytes-[`ERC721Holder.onERC721Received`]] @@ -1714,6 +1770,8 @@ :xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes- :ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]] :xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256- +:ERC777-_spendAllowance: pass:normal[xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256-[`ERC777._spendAllowance`]] +:xref-ERC777-_spendAllowance-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256- :ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]] :xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256- :IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]] @@ -1766,6 +1824,84 @@ :xref-ERC777PresetFixedSupply: xref:token/ERC777.adoc#ERC777PresetFixedSupply :ERC777PresetFixedSupply-constructor: pass:normal[xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-[`ERC777PresetFixedSupply.constructor`]] :xref-ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-: xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address- +:ERC2981: pass:normal[xref:token/common.adoc#ERC2981[`ERC2981`]] +:xref-ERC2981: xref:token/common.adoc#ERC2981 +:ERC2981-supportsInterface: pass:normal[xref:token/common.adoc#ERC2981-supportsInterface-bytes4-[`ERC2981.supportsInterface`]] +:xref-ERC2981-supportsInterface-bytes4-: xref:token/common.adoc#ERC2981-supportsInterface-bytes4- +:ERC2981-royaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256-[`ERC2981.royaltyInfo`]] +:xref-ERC2981-royaltyInfo-uint256-uint256-: xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256- +:ERC2981-_feeDenominator: pass:normal[xref:token/common.adoc#ERC2981-_feeDenominator--[`ERC2981._feeDenominator`]] +:xref-ERC2981-_feeDenominator--: xref:token/common.adoc#ERC2981-_feeDenominator-- +:ERC2981-_setDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96-[`ERC2981._setDefaultRoyalty`]] +:xref-ERC2981-_setDefaultRoyalty-address-uint96-: xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96- +:ERC2981-_deleteDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty--[`ERC2981._deleteDefaultRoyalty`]] +:xref-ERC2981-_deleteDefaultRoyalty--: xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty-- +:ERC2981-_setTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96-[`ERC2981._setTokenRoyalty`]] +:xref-ERC2981-_setTokenRoyalty-uint256-address-uint96-: xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96- +:ERC2981-_resetTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256-[`ERC2981._resetTokenRoyalty`]] +:xref-ERC2981-_resetTokenRoyalty-uint256-: xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256- +:ERC2981-RoyaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-RoyaltyInfo[`ERC2981.RoyaltyInfo`]] +:xref-ERC2981-RoyaltyInfo: xref:token/common.adoc#ERC2981-RoyaltyInfo +:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] +:xref-ERC1155PresetMinterPauser: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser +:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] +:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string- +:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] +:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- +:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] +:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- +:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] +:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause-- +:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] +:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause-- +:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] +:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4- +:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] +:xref-ERC20PresetFixedSupply: xref:token/ERC20/presets.md#ERC20PresetFixedSupply +:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] +:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address- +:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] +:xref-ERC20PresetMinterPauser: xref:token/ERC20/presets.md#ERC20PresetMinterPauser +:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] +:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string- +:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] +:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256- +:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] +:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause-- +:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] +:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause-- +:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] +:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId +:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] +:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string- +:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] +:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI-- +:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] +:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address- +:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] +:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause-- +:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] +:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause-- +:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] +:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] +:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- = ERC 721 [.readme-notice] @@ -1775,18 +1911,29 @@ This set of interfaces, contracts, and utilities are all related to the https:// TIP: For a walk through on how to create an ERC721 token read our xref:ROOT:erc721.adoc[ERC721 guide]. -The EIP consists of three interfaces, found here as {IERC721}, {IERC721Metadata}, and {IERC721Enumerable}. Only the first one is required in a contract to be ERC721 compliant. The core interface and the metadata extension are both implemented in {ERC721}. The enumerable extension is provided separately in {ERC721Enumerable}. +The EIP specifies four interfaces: -Additionally, {IERC721Receiver} can be used to prevent tokens from becoming forever locked in contracts. Imagine sending an in-game item to an exchange address that can't send it back!. When using <>, the token contract checks to see that the receiver is an {IERC721Receiver}, which implies that it knows how to handle {ERC721} tokens. If you're writing a contract that needs to receive {ERC721} tokens, you'll want to include this interface. +* {IERC721}: Core functionality required in all compliant implementation. +* {IERC721Metadata}: Optional extension that adds name, symbol, and token URI, almost always included. +* {IERC721Enumerable}: Optional extension that allows enumerating the tokens on chain, often not included since it requires large gas overhead. +* {IERC721Receiver}: An interface that must be implemented by contracts if they want to accept tokens through `safeTransferFrom`. -Additionally there are multiple custom extensions, including: +OpenZeppelin Contracts provides implementations of all four interfaces: -* designation of addresses that can pause token transfers for all users ({ERC721Pausable}). -* destruction of own tokens ({ERC721Burnable}). +* {ERC721}: The core and metadata extensions, with a base URI mechanism. +* {ERC721Enumerable}: The enumerable extension. +* {ERC721Holder}: A bare bones implementation of the receiver interface. + +Additionally there are a few of other extensions: + +* {ERC721URIStorage}: A more flexible but more expensive way of storing metadata. +* {ERC721Votes}: Support for voting and vote delegation. +* {ERC721Royalty}: A way to signal royalty information following ERC2981. +* {ERC721Pausable}: A primitive to pause contract operation. +* {ERC721Burnable}: A way for token holders to burn their own tokens. NOTE: This core set of contracts is designed to be unopinionated, allowing developers to access the internal functions in ERC721 (such as <>) and expose them as external functions in the way they prefer. On the other hand, xref:ROOT:erc721.adoc#Presets[ERC721 Presets] (such as {ERC721PresetMinterPauserAutoId}) are designed using opinionated patterns to provide developers with ready to use, deployable contracts. - == Core :IERC721: pass:normal[xref:#IERC721[`++IERC721++`]] @@ -1805,7 +1952,7 @@ NOTE: This core set of contracts is designed to be unopinionated, allowing devel [.contract] [[IERC721]] -=== `++IERC721++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC721/IERC721.sol[{github-icon},role=heading-link] +=== `++IERC721++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC721/IERC721.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -1988,7 +2135,7 @@ Emitted when `owner` enables or disables (`approved`) `operator` to manage all o [.contract] [[IERC721Metadata]] -=== `++IERC721Metadata++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC721/extensions/IERC721Metadata.sol[{github-icon},role=heading-link] +=== `++IERC721Metadata++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC721/extensions/IERC721Metadata.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2067,7 +2214,7 @@ Returns the Uniform Resource Identifier (URI) for `tokenId` token. [.contract] [[IERC721Enumerable]] -=== `++IERC721Enumerable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC721/extensions/IERC721Enumerable.sol[{github-icon},role=heading-link] +=== `++IERC721Enumerable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC721/extensions/IERC721Enumerable.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2126,7 +2273,7 @@ Returns the total amount of tokens stored by the contract. [.contract-item] [[IERC721Enumerable-tokenOfOwnerByIndex-address-uint256-]] -==== `[.contract-item-name]#++tokenOfOwnerByIndex++#++(address owner, uint256 index) → uint256 tokenId++` [.item-kind]#external# +==== `[.contract-item-name]#++tokenOfOwnerByIndex++#++(address owner, uint256 index) → uint256++` [.item-kind]#external# Returns a token ID owned by `owner` at a given `index` of its token list. Use along with {balanceOf} to enumerate all of ``owner``'s tokens. @@ -2168,10 +2315,11 @@ Use along with {totalSupply} to enumerate all tokens. :_approve: pass:normal[xref:#ERC721-_approve-address-uint256-[`++_approve++`]] :_setApprovalForAll: pass:normal[xref:#ERC721-_setApprovalForAll-address-address-bool-[`++_setApprovalForAll++`]] :_beforeTokenTransfer: pass:normal[xref:#ERC721-_beforeTokenTransfer-address-address-uint256-[`++_beforeTokenTransfer++`]] +:_afterTokenTransfer: pass:normal[xref:#ERC721-_afterTokenTransfer-address-address-uint256-[`++_afterTokenTransfer++`]] [.contract] [[ERC721]] -=== `++ERC721++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC721/ERC721.sol[{github-icon},role=heading-link] +=== `++ERC721++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC721/ERC721.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2212,6 +2360,7 @@ the Metadata extension, but not including the Enumerable extension, which is ava * {xref-ERC721-_approve-address-uint256-}[`++_approve(to, tokenId)++`] * {xref-ERC721-_setApprovalForAll-address-address-bool-}[`++_setApprovalForAll(owner, operator, approved)++`] * {xref-ERC721-_beforeTokenTransfer-address-address-uint256-}[`++_beforeTokenTransfer(from, to, tokenId)++`] +* {xref-ERC721-_afterTokenTransfer-address-address-uint256-}[`++_afterTokenTransfer(from, to, tokenId)++`] [.contract-subindex-inherited] .IERC721Metadata @@ -2481,6 +2630,20 @@ transferred to `to`. To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. +[.contract-item] +[[ERC721-_afterTokenTransfer-address-address-uint256-]] +==== `[.contract-item-name]#++_afterTokenTransfer++#++(address from, address to, uint256 tokenId)++` [.item-kind]#internal# + +Hook that is called after any transfer of tokens. This includes +minting and burning. + +Calling conditions: + +- when `from` and `to` are both non-zero. +- `from` and `to` are never both zero. + +To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. + @@ -2493,7 +2656,7 @@ To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hook [.contract] [[ERC721Enumerable]] -=== `++ERC721Enumerable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC721/extensions/ERC721Enumerable.sol[{github-icon},role=heading-link] +=== `++ERC721Enumerable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC721/extensions/ERC721Enumerable.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2543,6 +2706,7 @@ account. * {xref-ERC721-_transfer-address-address-uint256-}[`++_transfer(from, to, tokenId)++`] * {xref-ERC721-_approve-address-uint256-}[`++_approve(to, tokenId)++`] * {xref-ERC721-_setApprovalForAll-address-address-bool-}[`++_setApprovalForAll(owner, operator, approved)++`] +* {xref-ERC721-_afterTokenTransfer-address-address-uint256-}[`++_afterTokenTransfer(from, to, tokenId)++`] [.contract-subindex-inherited] .IERC721Metadata @@ -2639,7 +2803,7 @@ To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hook [.contract] [[IERC721Receiver]] -=== `++IERC721Receiver++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC721/IERC721Receiver.sol[{github-icon},role=heading-link] +=== `++IERC721Receiver++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC721/IERC721Receiver.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2681,7 +2845,7 @@ The selector can be obtained in Solidity with `IERC721.onERC721Received.selector [.contract] [[ERC721Pausable]] -=== `++ERC721Pausable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC721/extensions/ERC721Pausable.sol[{github-icon},role=heading-link] +=== `++ERC721Pausable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC721/extensions/ERC721Pausable.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2733,6 +2897,7 @@ event of a large bug. * {xref-ERC721-_transfer-address-address-uint256-}[`++_transfer(from, to, tokenId)++`] * {xref-ERC721-_approve-address-uint256-}[`++_approve(to, tokenId)++`] * {xref-ERC721-_setApprovalForAll-address-address-bool-}[`++_setApprovalForAll(owner, operator, approved)++`] +* {xref-ERC721-_afterTokenTransfer-address-address-uint256-}[`++_afterTokenTransfer(from, to, tokenId)++`] [.contract-subindex-inherited] .IERC721Metadata @@ -2799,7 +2964,7 @@ Requirements: [.contract] [[ERC721Burnable]] -=== `++ERC721Burnable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC721/extensions/ERC721Burnable.sol[{github-icon},role=heading-link] +=== `++ERC721Burnable++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC721/extensions/ERC721Burnable.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2842,6 +3007,7 @@ ERC721 Token that can be irreversibly burned (destroyed). * {xref-ERC721-_approve-address-uint256-}[`++_approve(to, tokenId)++`] * {xref-ERC721-_setApprovalForAll-address-address-bool-}[`++_setApprovalForAll(owner, operator, approved)++`] * {xref-ERC721-_beforeTokenTransfer-address-address-uint256-}[`++_beforeTokenTransfer(from, to, tokenId)++`] +* {xref-ERC721-_afterTokenTransfer-address-address-uint256-}[`++_afterTokenTransfer(from, to, tokenId)++`] [.contract-subindex-inherited] .IERC721Metadata @@ -2905,7 +3071,7 @@ Requirements: [.contract] [[ERC721URIStorage]] -=== `++ERC721URIStorage++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC721/extensions/ERC721URIStorage.sol[{github-icon},role=heading-link] +=== `++ERC721URIStorage++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC721/extensions/ERC721URIStorage.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2948,6 +3114,7 @@ ERC721 token with storage based token URI management. * {xref-ERC721-_approve-address-uint256-}[`++_approve(to, tokenId)++`] * {xref-ERC721-_setApprovalForAll-address-address-bool-}[`++_setApprovalForAll(owner, operator, approved)++`] * {xref-ERC721-_beforeTokenTransfer-address-address-uint256-}[`++_beforeTokenTransfer(from, to, tokenId)++`] +* {xref-ERC721-_afterTokenTransfer-address-address-uint256-}[`++_afterTokenTransfer(from, to, tokenId)++`] [.contract-subindex-inherited] .IERC721Metadata @@ -3023,85 +3190,65 @@ Emits a {Transfer} event. -== Presets - -These contracts are preconfigured combinations of the above features. They can be used through inheritance or as models to copy and paste their source code. - -:ERC721PresetMinterPauserAutoId: pass:normal[xref:#ERC721PresetMinterPauserAutoId[`++ERC721PresetMinterPauserAutoId++`]] -:MINTER_ROLE: pass:normal[xref:#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`++MINTER_ROLE++`]] -:PAUSER_ROLE: pass:normal[xref:#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`++PAUSER_ROLE++`]] -:constructor: pass:normal[xref:#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`++constructor++`]] -:_baseURI: pass:normal[xref:#ERC721PresetMinterPauserAutoId-_baseURI--[`++_baseURI++`]] -:mint: pass:normal[xref:#ERC721PresetMinterPauserAutoId-mint-address-[`++mint++`]] -:pause: pass:normal[xref:#ERC721PresetMinterPauserAutoId-pause--[`++pause++`]] -:unpause: pass:normal[xref:#ERC721PresetMinterPauserAutoId-unpause--[`++unpause++`]] -:_beforeTokenTransfer: pass:normal[xref:#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`++_beforeTokenTransfer++`]] -:supportsInterface: pass:normal[xref:#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`++supportsInterface++`]] +:ERC721Votes: pass:normal[xref:#ERC721Votes[`++ERC721Votes++`]] +:_afterTokenTransfer: pass:normal[xref:#ERC721Votes-_afterTokenTransfer-address-address-uint256-[`++_afterTokenTransfer++`]] +:_getVotingUnits: pass:normal[xref:#ERC721Votes-_getVotingUnits-address-[`++_getVotingUnits++`]] [.contract] -[[ERC721PresetMinterPauserAutoId]] -=== `++ERC721PresetMinterPauserAutoId++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC721/presets/ERC721PresetMinterPauserAutoId.sol[{github-icon},role=heading-link] +[[ERC721Votes]] +=== `++ERC721Votes++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC721/extensions/draft-ERC721Votes.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity -import "@openzeppelin/contracts/token/ERC721/presets/ERC721PresetMinterPauserAutoId.sol"; +import "@openzeppelin/contracts/token/ERC721/extensions/draft-ERC721Votes.sol"; ``` -{ERC721} token, including: +Extension of ERC721 to support voting and delegation as implemented by {Votes}, where each individual NFT counts +as 1 vote unit. - - ability for holders to burn (destroy) their tokens - - a minter role that allows for token minting (creation) - - a pauser role that allows to stop all token transfers - - token ID and URI autogeneration +Tokens do not count as votes until they are delegated, because votes must be tracked which incurs an additional cost +on every transfer. Token holders can either delegate to a trusted representative who will decide how to make use of +the votes in governance decisions, or they can delegate to themselves to be their own representative. -This contract uses {AccessControl} to lock permissioned functions using the -different roles - head to its documentation for details. - -The account that deploys the contract will be granted the minter and pauser -roles, as well as the default admin role, which will let it grant both minter -and pauser roles to other accounts. +_Available since v4.5._ [.contract-index] .Functions -- -* {xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-}[`++constructor(name, symbol, baseTokenURI)++`] -* {xref-ERC721PresetMinterPauserAutoId-_baseURI--}[`++_baseURI()++`] -* {xref-ERC721PresetMinterPauserAutoId-mint-address-}[`++mint(to)++`] -* {xref-ERC721PresetMinterPauserAutoId-pause--}[`++pause()++`] -* {xref-ERC721PresetMinterPauserAutoId-unpause--}[`++unpause()++`] -* {xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-}[`++_beforeTokenTransfer(from, to, tokenId)++`] -* {xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`] +* {xref-ERC721Votes-_afterTokenTransfer-address-address-uint256-}[`++_afterTokenTransfer(from, to, tokenId)++`] +* {xref-ERC721Votes-_getVotingUnits-address-}[`++_getVotingUnits(account)++`] [.contract-subindex-inherited] -.ERC721Pausable +.Votes +* {xref-Votes-getVotes-address-}[`++getVotes(account)++`] +* {xref-Votes-getPastVotes-address-uint256-}[`++getPastVotes(account, blockNumber)++`] +* {xref-Votes-getPastTotalSupply-uint256-}[`++getPastTotalSupply(blockNumber)++`] +* {xref-Votes-_getTotalSupply--}[`++_getTotalSupply()++`] +* {xref-Votes-delegates-address-}[`++delegates(account)++`] +* {xref-Votes-delegate-address-}[`++delegate(delegatee)++`] +* {xref-Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-}[`++delegateBySig(delegatee, nonce, expiry, v, r, s)++`] +* {xref-Votes-_delegate-address-address-}[`++_delegate(account, delegatee)++`] +* {xref-Votes-_transferVotingUnits-address-address-uint256-}[`++_transferVotingUnits(from, to, amount)++`] +* {xref-Votes-_useNonce-address-}[`++_useNonce(owner)++`] +* {xref-Votes-nonces-address-}[`++nonces(owner)++`] +* {xref-Votes-DOMAIN_SEPARATOR--}[`++DOMAIN_SEPARATOR()++`] [.contract-subindex-inherited] -.Pausable -* {xref-Pausable-paused--}[`++paused()++`] -* {xref-Pausable-_pause--}[`++_pause()++`] -* {xref-Pausable-_unpause--}[`++_unpause()++`] - -[.contract-subindex-inherited] -.ERC721Burnable -* {xref-ERC721Burnable-burn-uint256-}[`++burn(tokenId)++`] - -[.contract-subindex-inherited] -.ERC721Enumerable -* {xref-ERC721Enumerable-tokenOfOwnerByIndex-address-uint256-}[`++tokenOfOwnerByIndex(owner, index)++`] -* {xref-ERC721Enumerable-totalSupply--}[`++totalSupply()++`] -* {xref-ERC721Enumerable-tokenByIndex-uint256-}[`++tokenByIndex(index)++`] - -[.contract-subindex-inherited] -.IERC721Enumerable +.EIP712 +* {xref-EIP712-constructor-string-string-}[`++constructor(name, version)++`] +* {xref-EIP712-_domainSeparatorV4--}[`++_domainSeparatorV4()++`] +* {xref-EIP712-_hashTypedDataV4-bytes32-}[`++_hashTypedDataV4(structHash)++`] [.contract-subindex-inherited] .ERC721 +* {xref-ERC721-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`] * {xref-ERC721-balanceOf-address-}[`++balanceOf(owner)++`] * {xref-ERC721-ownerOf-uint256-}[`++ownerOf(tokenId)++`] * {xref-ERC721-name--}[`++name()++`] * {xref-ERC721-symbol--}[`++symbol()++`] * {xref-ERC721-tokenURI-uint256-}[`++tokenURI(tokenId)++`] +* {xref-ERC721-_baseURI--}[`++_baseURI()++`] * {xref-ERC721-approve-address-uint256-}[`++approve(to, tokenId)++`] * {xref-ERC721-getApproved-uint256-}[`++getApproved(tokenId)++`] * {xref-ERC721-setApprovalForAll-address-bool-}[`++setApprovalForAll(operator, approved)++`] @@ -3119,6 +3266,7 @@ and pauser roles to other accounts. * {xref-ERC721-_transfer-address-address-uint256-}[`++_transfer(from, to, tokenId)++`] * {xref-ERC721-_approve-address-uint256-}[`++_approve(to, tokenId)++`] * {xref-ERC721-_setApprovalForAll-address-address-bool-}[`++_setApprovalForAll(owner, operator, approved)++`] +* {xref-ERC721-_beforeTokenTransfer-address-address-uint256-}[`++_beforeTokenTransfer(from, to, tokenId)++`] [.contract-subindex-inherited] .IERC721Metadata @@ -3126,24 +3274,6 @@ and pauser roles to other accounts. [.contract-subindex-inherited] .IERC721 -[.contract-subindex-inherited] -.AccessControlEnumerable -* {xref-AccessControlEnumerable-getRoleMember-bytes32-uint256-}[`++getRoleMember(role, index)++`] -* {xref-AccessControlEnumerable-getRoleMemberCount-bytes32-}[`++getRoleMemberCount(role)++`] -* {xref-AccessControlEnumerable-_grantRole-bytes32-address-}[`++_grantRole(role, account)++`] -* {xref-AccessControlEnumerable-_revokeRole-bytes32-address-}[`++_revokeRole(role, account)++`] - -[.contract-subindex-inherited] -.AccessControl -* {xref-AccessControl-hasRole-bytes32-address-}[`++hasRole(role, account)++`] -* {xref-AccessControl-_checkRole-bytes32-address-}[`++_checkRole(role, account)++`] -* {xref-AccessControl-getRoleAdmin-bytes32-}[`++getRoleAdmin(role)++`] -* {xref-AccessControl-grantRole-bytes32-address-}[`++grantRole(role, account)++`] -* {xref-AccessControl-revokeRole-bytes32-address-}[`++revokeRole(role, account)++`] -* {xref-AccessControl-renounceRole-bytes32-address-}[`++renounceRole(role, account)++`] -* {xref-AccessControl-_setupRole-bytes32-address-}[`++_setupRole(role, account)++`] -* {xref-AccessControl-_setRoleAdmin-bytes32-bytes32-}[`++_setRoleAdmin(role, adminRole)++`] - [.contract-subindex-inherited] .ERC165 @@ -3151,10 +3281,7 @@ and pauser roles to other accounts. .IERC165 [.contract-subindex-inherited] -.IAccessControlEnumerable - -[.contract-subindex-inherited] -.IAccessControl +.IVotes -- @@ -3163,21 +3290,10 @@ and pauser roles to other accounts. -- [.contract-subindex-inherited] -.ERC721Pausable +.Votes [.contract-subindex-inherited] -.Pausable -* {xref-Pausable-Paused-address-}[`++Paused(account)++`] -* {xref-Pausable-Unpaused-address-}[`++Unpaused(account)++`] - -[.contract-subindex-inherited] -.ERC721Burnable - -[.contract-subindex-inherited] -.ERC721Enumerable - -[.contract-subindex-inherited] -.IERC721Enumerable +.EIP712 [.contract-subindex-inherited] .ERC721 @@ -3191,12 +3307,6 @@ and pauser roles to other accounts. * {xref-IERC721-Approval-address-address-uint256-}[`++Approval(owner, approved, tokenId)++`] * {xref-IERC721-ApprovalForAll-address-address-bool-}[`++ApprovalForAll(owner, operator, approved)++`] -[.contract-subindex-inherited] -.AccessControlEnumerable - -[.contract-subindex-inherited] -.AccessControl - [.contract-subindex-inherited] .ERC165 @@ -3204,13 +3314,146 @@ and pauser roles to other accounts. .IERC165 [.contract-subindex-inherited] -.IAccessControlEnumerable +.Context [.contract-subindex-inherited] -.IAccessControl -* {xref-IAccessControl-RoleAdminChanged-bytes32-bytes32-bytes32-}[`++RoleAdminChanged(role, previousAdminRole, newAdminRole)++`] -* {xref-IAccessControl-RoleGranted-bytes32-address-address-}[`++RoleGranted(role, account, sender)++`] -* {xref-IAccessControl-RoleRevoked-bytes32-address-address-}[`++RoleRevoked(role, account, sender)++`] +.IVotes +* {xref-IVotes-DelegateChanged-address-address-address-}[`++DelegateChanged(delegator, fromDelegate, toDelegate)++`] +* {xref-IVotes-DelegateVotesChanged-address-uint256-uint256-}[`++DelegateVotesChanged(delegate, previousBalance, newBalance)++`] + +-- + + +[.contract-item] +[[ERC721Votes-_afterTokenTransfer-address-address-uint256-]] +==== `[.contract-item-name]#++_afterTokenTransfer++#++(address from, address to, uint256 tokenId)++` [.item-kind]#internal# + +Adjusts votes when tokens are transferred. + +Emits a {Votes-DelegateVotesChanged} event. + +[.contract-item] +[[ERC721Votes-_getVotingUnits-address-]] +==== `[.contract-item-name]#++_getVotingUnits++#++(address account) → uint256++` [.item-kind]#internal# + +Returns the balance of `account`. + + + + +:ERC721Royalty: pass:normal[xref:#ERC721Royalty[`++ERC721Royalty++`]] +:supportsInterface: pass:normal[xref:#ERC721Royalty-supportsInterface-bytes4-[`++supportsInterface++`]] +:_burn: pass:normal[xref:#ERC721Royalty-_burn-uint256-[`++_burn++`]] + +[.contract] +[[ERC721Royalty]] +=== `++ERC721Royalty++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC721/extensions/ERC721Royalty.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Royalty.sol"; +``` + +Extension of ERC721 with the ERC2981 NFT Royalty Standard, a standardized way to retrieve royalty payment +information. + +Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for +specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first. + +IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See +https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the EIP. Marketplaces are expected to +voluntarily pay royalties together with sales, but note that this standard is not yet widely supported. + +_Available since v4.5._ + + +[.contract-index] +.Functions +-- +* {xref-ERC721Royalty-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`] +* {xref-ERC721Royalty-_burn-uint256-}[`++_burn(tokenId)++`] + +[.contract-subindex-inherited] +.ERC721 +* {xref-ERC721-constructor-string-string-}[`++constructor(name_, symbol_)++`] +* {xref-ERC721-balanceOf-address-}[`++balanceOf(owner)++`] +* {xref-ERC721-ownerOf-uint256-}[`++ownerOf(tokenId)++`] +* {xref-ERC721-name--}[`++name()++`] +* {xref-ERC721-symbol--}[`++symbol()++`] +* {xref-ERC721-tokenURI-uint256-}[`++tokenURI(tokenId)++`] +* {xref-ERC721-_baseURI--}[`++_baseURI()++`] +* {xref-ERC721-approve-address-uint256-}[`++approve(to, tokenId)++`] +* {xref-ERC721-getApproved-uint256-}[`++getApproved(tokenId)++`] +* {xref-ERC721-setApprovalForAll-address-bool-}[`++setApprovalForAll(operator, approved)++`] +* {xref-ERC721-isApprovedForAll-address-address-}[`++isApprovedForAll(owner, operator)++`] +* {xref-ERC721-transferFrom-address-address-uint256-}[`++transferFrom(from, to, tokenId)++`] +* {xref-ERC721-safeTransferFrom-address-address-uint256-}[`++safeTransferFrom(from, to, tokenId)++`] +* {xref-ERC721-safeTransferFrom-address-address-uint256-bytes-}[`++safeTransferFrom(from, to, tokenId, _data)++`] +* {xref-ERC721-_safeTransfer-address-address-uint256-bytes-}[`++_safeTransfer(from, to, tokenId, _data)++`] +* {xref-ERC721-_exists-uint256-}[`++_exists(tokenId)++`] +* {xref-ERC721-_isApprovedOrOwner-address-uint256-}[`++_isApprovedOrOwner(spender, tokenId)++`] +* {xref-ERC721-_safeMint-address-uint256-}[`++_safeMint(to, tokenId)++`] +* {xref-ERC721-_safeMint-address-uint256-bytes-}[`++_safeMint(to, tokenId, _data)++`] +* {xref-ERC721-_mint-address-uint256-}[`++_mint(to, tokenId)++`] +* {xref-ERC721-_transfer-address-address-uint256-}[`++_transfer(from, to, tokenId)++`] +* {xref-ERC721-_approve-address-uint256-}[`++_approve(to, tokenId)++`] +* {xref-ERC721-_setApprovalForAll-address-address-bool-}[`++_setApprovalForAll(owner, operator, approved)++`] +* {xref-ERC721-_beforeTokenTransfer-address-address-uint256-}[`++_beforeTokenTransfer(from, to, tokenId)++`] +* {xref-ERC721-_afterTokenTransfer-address-address-uint256-}[`++_afterTokenTransfer(from, to, tokenId)++`] + +[.contract-subindex-inherited] +.IERC721Metadata + +[.contract-subindex-inherited] +.IERC721 + +[.contract-subindex-inherited] +.ERC2981 +* {xref-ERC2981-royaltyInfo-uint256-uint256-}[`++royaltyInfo(_tokenId, _salePrice)++`] +* {xref-ERC2981-_feeDenominator--}[`++_feeDenominator()++`] +* {xref-ERC2981-_setDefaultRoyalty-address-uint96-}[`++_setDefaultRoyalty(receiver, feeNumerator)++`] +* {xref-ERC2981-_deleteDefaultRoyalty--}[`++_deleteDefaultRoyalty()++`] +* {xref-ERC2981-_setTokenRoyalty-uint256-address-uint96-}[`++_setTokenRoyalty(tokenId, receiver, feeNumerator)++`] +* {xref-ERC2981-_resetTokenRoyalty-uint256-}[`++_resetTokenRoyalty(tokenId)++`] + +[.contract-subindex-inherited] +.ERC165 + +[.contract-subindex-inherited] +.IERC2981 + +[.contract-subindex-inherited] +.IERC165 + +-- + +[.contract-index] +.Events +-- + +[.contract-subindex-inherited] +.ERC721 + +[.contract-subindex-inherited] +.IERC721Metadata + +[.contract-subindex-inherited] +.IERC721 +* {xref-IERC721-Transfer-address-address-uint256-}[`++Transfer(from, to, tokenId)++`] +* {xref-IERC721-Approval-address-address-uint256-}[`++Approval(owner, approved, tokenId)++`] +* {xref-IERC721-ApprovalForAll-address-address-bool-}[`++ApprovalForAll(owner, operator, approved)++`] + +[.contract-subindex-inherited] +.ERC2981 + +[.contract-subindex-inherited] +.ERC165 + +[.contract-subindex-inherited] +.IERC2981 + +[.contract-subindex-inherited] +.IERC165 [.contract-subindex-inherited] .Context @@ -3219,71 +3462,23 @@ and pauser roles to other accounts. [.contract-item] -[[ERC721PresetMinterPauserAutoId-constructor-string-string-string-]] -==== `[.contract-item-name]#++constructor++#++(string name, string symbol, string baseTokenURI)++` [.item-kind]#public# - -Grants `DEFAULT_ADMIN_ROLE`, `MINTER_ROLE` and `PAUSER_ROLE` to the -account that deploys the contract. - -Token URIs will be autogenerated based on `baseURI` and their token IDs. -See {ERC721-tokenURI}. - -[.contract-item] -[[ERC721PresetMinterPauserAutoId-_baseURI--]] -==== `[.contract-item-name]#++_baseURI++#++() → string++` [.item-kind]#internal# - - - -[.contract-item] -[[ERC721PresetMinterPauserAutoId-mint-address-]] -==== `[.contract-item-name]#++mint++#++(address to)++` [.item-kind]#public# - -Creates a new token for `to`. Its token ID will be automatically -assigned (and available on the emitted {IERC721-Transfer} event), and the token -URI autogenerated based on the base URI passed at construction. - -See {ERC721-_mint}. - -Requirements: - -- the caller must have the `MINTER_ROLE`. - -[.contract-item] -[[ERC721PresetMinterPauserAutoId-pause--]] -==== `[.contract-item-name]#++pause++#++()++` [.item-kind]#public# - -Pauses all token transfers. - -See {ERC721Pausable} and {Pausable-_pause}. - -Requirements: - -- the caller must have the `PAUSER_ROLE`. - -[.contract-item] -[[ERC721PresetMinterPauserAutoId-unpause--]] -==== `[.contract-item-name]#++unpause++#++()++` [.item-kind]#public# - -Unpauses all token transfers. - -See {ERC721Pausable} and {Pausable-_unpause}. - -Requirements: - -- the caller must have the `PAUSER_ROLE`. - -[.contract-item] -[[ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-]] -==== `[.contract-item-name]#++_beforeTokenTransfer++#++(address from, address to, uint256 tokenId)++` [.item-kind]#internal# - - - -[.contract-item] -[[ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-]] +[[ERC721Royalty-supportsInterface-bytes4-]] ==== `[.contract-item-name]#++supportsInterface++#++(bytes4 interfaceId) → bool++` [.item-kind]#public# See {IERC165-supportsInterface}. +[.contract-item] +[[ERC721Royalty-_burn-uint256-]] +==== `[.contract-item-name]#++_burn++#++(uint256 tokenId)++` [.item-kind]#internal# + +See {ERC721-_burn}. This override additionally clears the royalty information for the token. + + + + +== Presets + +These contracts are preconfigured combinations of the above features. They can be used through inheritance or as models to copy and paste their source code. @@ -3294,7 +3489,7 @@ See {IERC165-supportsInterface}. [.contract] [[ERC721Holder]] -=== `++ERC721Holder++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC721/utils/ERC721Holder.sol[{github-icon},role=heading-link] +=== `++ERC721Holder++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC721/utils/ERC721Holder.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity diff --git a/docs/modules/api/pages/token/ERC721/presets.md b/docs/modules/api/pages/token/ERC721/presets.md new file mode 100644 index 000000000..c321018c3 --- /dev/null +++ b/docs/modules/api/pages/token/ERC721/presets.md @@ -0,0 +1,1905 @@ +:github-icon: pass:[] + +:AccessControl: pass:normal[xref:access.adoc#AccessControl[`AccessControl`]] +:xref-AccessControl: xref:access.adoc#AccessControl +:AccessControl-onlyRole: pass:normal[xref:access.adoc#AccessControl-onlyRole-bytes32-[`AccessControl.onlyRole`]] +:xref-AccessControl-onlyRole-bytes32-: xref:access.adoc#AccessControl-onlyRole-bytes32- +:AccessControl-DEFAULT_ADMIN_ROLE: pass:normal[xref:access.adoc#AccessControl-DEFAULT_ADMIN_ROLE-bytes32[`AccessControl.DEFAULT_ADMIN_ROLE`]] +:xref-AccessControl-DEFAULT_ADMIN_ROLE-bytes32: xref:access.adoc#AccessControl-DEFAULT_ADMIN_ROLE-bytes32 +:AccessControl-supportsInterface: pass:normal[xref:access.adoc#AccessControl-supportsInterface-bytes4-[`AccessControl.supportsInterface`]] +:xref-AccessControl-supportsInterface-bytes4-: xref:access.adoc#AccessControl-supportsInterface-bytes4- +:AccessControl-hasRole: pass:normal[xref:access.adoc#AccessControl-hasRole-bytes32-address-[`AccessControl.hasRole`]] +:xref-AccessControl-hasRole-bytes32-address-: xref:access.adoc#AccessControl-hasRole-bytes32-address- +:AccessControl-_checkRole: pass:normal[xref:access.adoc#AccessControl-_checkRole-bytes32-address-[`AccessControl._checkRole`]] +:xref-AccessControl-_checkRole-bytes32-address-: xref:access.adoc#AccessControl-_checkRole-bytes32-address- +:AccessControl-getRoleAdmin: pass:normal[xref:access.adoc#AccessControl-getRoleAdmin-bytes32-[`AccessControl.getRoleAdmin`]] +:xref-AccessControl-getRoleAdmin-bytes32-: xref:access.adoc#AccessControl-getRoleAdmin-bytes32- +:AccessControl-grantRole: pass:normal[xref:access.adoc#AccessControl-grantRole-bytes32-address-[`AccessControl.grantRole`]] +:xref-AccessControl-grantRole-bytes32-address-: xref:access.adoc#AccessControl-grantRole-bytes32-address- +:AccessControl-revokeRole: pass:normal[xref:access.adoc#AccessControl-revokeRole-bytes32-address-[`AccessControl.revokeRole`]] +:xref-AccessControl-revokeRole-bytes32-address-: xref:access.adoc#AccessControl-revokeRole-bytes32-address- +:AccessControl-renounceRole: pass:normal[xref:access.adoc#AccessControl-renounceRole-bytes32-address-[`AccessControl.renounceRole`]] +:xref-AccessControl-renounceRole-bytes32-address-: xref:access.adoc#AccessControl-renounceRole-bytes32-address- +:AccessControl-_setupRole: pass:normal[xref:access.adoc#AccessControl-_setupRole-bytes32-address-[`AccessControl._setupRole`]] +:xref-AccessControl-_setupRole-bytes32-address-: xref:access.adoc#AccessControl-_setupRole-bytes32-address- +:AccessControl-_setRoleAdmin: pass:normal[xref:access.adoc#AccessControl-_setRoleAdmin-bytes32-bytes32-[`AccessControl._setRoleAdmin`]] +:xref-AccessControl-_setRoleAdmin-bytes32-bytes32-: xref:access.adoc#AccessControl-_setRoleAdmin-bytes32-bytes32- +:AccessControl-_grantRole: pass:normal[xref:access.adoc#AccessControl-_grantRole-bytes32-address-[`AccessControl._grantRole`]] +:xref-AccessControl-_grantRole-bytes32-address-: xref:access.adoc#AccessControl-_grantRole-bytes32-address- +:AccessControl-_revokeRole: pass:normal[xref:access.adoc#AccessControl-_revokeRole-bytes32-address-[`AccessControl._revokeRole`]] +:xref-AccessControl-_revokeRole-bytes32-address-: xref:access.adoc#AccessControl-_revokeRole-bytes32-address- +:AccessControl-RoleData: pass:normal[xref:access.adoc#AccessControl-RoleData[`AccessControl.RoleData`]] +:xref-AccessControl-RoleData: xref:access.adoc#AccessControl-RoleData +:AccessControlEnumerable: pass:normal[xref:access.adoc#AccessControlEnumerable[`AccessControlEnumerable`]] +:xref-AccessControlEnumerable: xref:access.adoc#AccessControlEnumerable +:AccessControlEnumerable-supportsInterface: pass:normal[xref:access.adoc#AccessControlEnumerable-supportsInterface-bytes4-[`AccessControlEnumerable.supportsInterface`]] +:xref-AccessControlEnumerable-supportsInterface-bytes4-: xref:access.adoc#AccessControlEnumerable-supportsInterface-bytes4- +:AccessControlEnumerable-getRoleMember: pass:normal[xref:access.adoc#AccessControlEnumerable-getRoleMember-bytes32-uint256-[`AccessControlEnumerable.getRoleMember`]] +:xref-AccessControlEnumerable-getRoleMember-bytes32-uint256-: xref:access.adoc#AccessControlEnumerable-getRoleMember-bytes32-uint256- +:AccessControlEnumerable-getRoleMemberCount: pass:normal[xref:access.adoc#AccessControlEnumerable-getRoleMemberCount-bytes32-[`AccessControlEnumerable.getRoleMemberCount`]] +:xref-AccessControlEnumerable-getRoleMemberCount-bytes32-: xref:access.adoc#AccessControlEnumerable-getRoleMemberCount-bytes32- +:AccessControlEnumerable-_grantRole: pass:normal[xref:access.adoc#AccessControlEnumerable-_grantRole-bytes32-address-[`AccessControlEnumerable._grantRole`]] +:xref-AccessControlEnumerable-_grantRole-bytes32-address-: xref:access.adoc#AccessControlEnumerable-_grantRole-bytes32-address- +:AccessControlEnumerable-_revokeRole: pass:normal[xref:access.adoc#AccessControlEnumerable-_revokeRole-bytes32-address-[`AccessControlEnumerable._revokeRole`]] +:xref-AccessControlEnumerable-_revokeRole-bytes32-address-: xref:access.adoc#AccessControlEnumerable-_revokeRole-bytes32-address- +:IAccessControl: pass:normal[xref:access.adoc#IAccessControl[`IAccessControl`]] +:xref-IAccessControl: xref:access.adoc#IAccessControl +:IAccessControl-hasRole: pass:normal[xref:access.adoc#IAccessControl-hasRole-bytes32-address-[`IAccessControl.hasRole`]] +:xref-IAccessControl-hasRole-bytes32-address-: xref:access.adoc#IAccessControl-hasRole-bytes32-address- +:IAccessControl-getRoleAdmin: pass:normal[xref:access.adoc#IAccessControl-getRoleAdmin-bytes32-[`IAccessControl.getRoleAdmin`]] +:xref-IAccessControl-getRoleAdmin-bytes32-: xref:access.adoc#IAccessControl-getRoleAdmin-bytes32- +:IAccessControl-grantRole: pass:normal[xref:access.adoc#IAccessControl-grantRole-bytes32-address-[`IAccessControl.grantRole`]] +:xref-IAccessControl-grantRole-bytes32-address-: xref:access.adoc#IAccessControl-grantRole-bytes32-address- +:IAccessControl-revokeRole: pass:normal[xref:access.adoc#IAccessControl-revokeRole-bytes32-address-[`IAccessControl.revokeRole`]] +:xref-IAccessControl-revokeRole-bytes32-address-: xref:access.adoc#IAccessControl-revokeRole-bytes32-address- +:IAccessControl-renounceRole: pass:normal[xref:access.adoc#IAccessControl-renounceRole-bytes32-address-[`IAccessControl.renounceRole`]] +:xref-IAccessControl-renounceRole-bytes32-address-: xref:access.adoc#IAccessControl-renounceRole-bytes32-address- +:IAccessControl-RoleAdminChanged: pass:normal[xref:access.adoc#IAccessControl-RoleAdminChanged-bytes32-bytes32-bytes32-[`IAccessControl.RoleAdminChanged`]] +:xref-IAccessControl-RoleAdminChanged-bytes32-bytes32-bytes32-: xref:access.adoc#IAccessControl-RoleAdminChanged-bytes32-bytes32-bytes32- +:IAccessControl-RoleGranted: pass:normal[xref:access.adoc#IAccessControl-RoleGranted-bytes32-address-address-[`IAccessControl.RoleGranted`]] +:xref-IAccessControl-RoleGranted-bytes32-address-address-: xref:access.adoc#IAccessControl-RoleGranted-bytes32-address-address- +:IAccessControl-RoleRevoked: pass:normal[xref:access.adoc#IAccessControl-RoleRevoked-bytes32-address-address-[`IAccessControl.RoleRevoked`]] +:xref-IAccessControl-RoleRevoked-bytes32-address-address-: xref:access.adoc#IAccessControl-RoleRevoked-bytes32-address-address- +:IAccessControlEnumerable: pass:normal[xref:access.adoc#IAccessControlEnumerable[`IAccessControlEnumerable`]] +:xref-IAccessControlEnumerable: xref:access.adoc#IAccessControlEnumerable +:IAccessControlEnumerable-getRoleMember: pass:normal[xref:access.adoc#IAccessControlEnumerable-getRoleMember-bytes32-uint256-[`IAccessControlEnumerable.getRoleMember`]] +:xref-IAccessControlEnumerable-getRoleMember-bytes32-uint256-: xref:access.adoc#IAccessControlEnumerable-getRoleMember-bytes32-uint256- +:IAccessControlEnumerable-getRoleMemberCount: pass:normal[xref:access.adoc#IAccessControlEnumerable-getRoleMemberCount-bytes32-[`IAccessControlEnumerable.getRoleMemberCount`]] +:xref-IAccessControlEnumerable-getRoleMemberCount-bytes32-: xref:access.adoc#IAccessControlEnumerable-getRoleMemberCount-bytes32- +:Ownable: pass:normal[xref:access.adoc#Ownable[`Ownable`]] +:xref-Ownable: xref:access.adoc#Ownable +:Ownable-onlyOwner: pass:normal[xref:access.adoc#Ownable-onlyOwner--[`Ownable.onlyOwner`]] +:xref-Ownable-onlyOwner--: xref:access.adoc#Ownable-onlyOwner-- +:Ownable-constructor: pass:normal[xref:access.adoc#Ownable-constructor--[`Ownable.constructor`]] +:xref-Ownable-constructor--: xref:access.adoc#Ownable-constructor-- +:Ownable-owner: pass:normal[xref:access.adoc#Ownable-owner--[`Ownable.owner`]] +:xref-Ownable-owner--: xref:access.adoc#Ownable-owner-- +:Ownable-renounceOwnership: pass:normal[xref:access.adoc#Ownable-renounceOwnership--[`Ownable.renounceOwnership`]] +:xref-Ownable-renounceOwnership--: xref:access.adoc#Ownable-renounceOwnership-- +:Ownable-transferOwnership: pass:normal[xref:access.adoc#Ownable-transferOwnership-address-[`Ownable.transferOwnership`]] +:xref-Ownable-transferOwnership-address-: xref:access.adoc#Ownable-transferOwnership-address- +:Ownable-_transferOwnership: pass:normal[xref:access.adoc#Ownable-_transferOwnership-address-[`Ownable._transferOwnership`]] +:xref-Ownable-_transferOwnership-address-: xref:access.adoc#Ownable-_transferOwnership-address- +:Ownable-OwnershipTransferred: pass:normal[xref:access.adoc#Ownable-OwnershipTransferred-address-address-[`Ownable.OwnershipTransferred`]] +:xref-Ownable-OwnershipTransferred-address-address-: xref:access.adoc#Ownable-OwnershipTransferred-address-address- +:PaymentSplitter: pass:normal[xref:finance.adoc#PaymentSplitter[`PaymentSplitter`]] +:xref-PaymentSplitter: xref:finance.adoc#PaymentSplitter +:PaymentSplitter-constructor: pass:normal[xref:finance.adoc#PaymentSplitter-constructor-address---uint256---[`PaymentSplitter.constructor`]] +:xref-PaymentSplitter-constructor-address---uint256---: xref:finance.adoc#PaymentSplitter-constructor-address---uint256--- +:PaymentSplitter-receive: pass:normal[xref:finance.adoc#PaymentSplitter-receive--[`PaymentSplitter.receive`]] +:xref-PaymentSplitter-receive--: xref:finance.adoc#PaymentSplitter-receive-- +:PaymentSplitter-totalShares: pass:normal[xref:finance.adoc#PaymentSplitter-totalShares--[`PaymentSplitter.totalShares`]] +:xref-PaymentSplitter-totalShares--: xref:finance.adoc#PaymentSplitter-totalShares-- +:PaymentSplitter-totalReleased: pass:normal[xref:finance.adoc#PaymentSplitter-totalReleased--[`PaymentSplitter.totalReleased`]] +:xref-PaymentSplitter-totalReleased--: xref:finance.adoc#PaymentSplitter-totalReleased-- +:PaymentSplitter-totalReleased: pass:normal[xref:finance.adoc#PaymentSplitter-totalReleased-contract-IERC20-[`PaymentSplitter.totalReleased`]] +:xref-PaymentSplitter-totalReleased-contract-IERC20-: xref:finance.adoc#PaymentSplitter-totalReleased-contract-IERC20- +:PaymentSplitter-shares: pass:normal[xref:finance.adoc#PaymentSplitter-shares-address-[`PaymentSplitter.shares`]] +:xref-PaymentSplitter-shares-address-: xref:finance.adoc#PaymentSplitter-shares-address- +:PaymentSplitter-released: pass:normal[xref:finance.adoc#PaymentSplitter-released-address-[`PaymentSplitter.released`]] +:xref-PaymentSplitter-released-address-: xref:finance.adoc#PaymentSplitter-released-address- +:PaymentSplitter-released: pass:normal[xref:finance.adoc#PaymentSplitter-released-contract-IERC20-address-[`PaymentSplitter.released`]] +:xref-PaymentSplitter-released-contract-IERC20-address-: xref:finance.adoc#PaymentSplitter-released-contract-IERC20-address- +:PaymentSplitter-payee: pass:normal[xref:finance.adoc#PaymentSplitter-payee-uint256-[`PaymentSplitter.payee`]] +:xref-PaymentSplitter-payee-uint256-: xref:finance.adoc#PaymentSplitter-payee-uint256- +:PaymentSplitter-release: pass:normal[xref:finance.adoc#PaymentSplitter-release-address-payable-[`PaymentSplitter.release`]] +:xref-PaymentSplitter-release-address-payable-: xref:finance.adoc#PaymentSplitter-release-address-payable- +:PaymentSplitter-release: pass:normal[xref:finance.adoc#PaymentSplitter-release-contract-IERC20-address-[`PaymentSplitter.release`]] +:xref-PaymentSplitter-release-contract-IERC20-address-: xref:finance.adoc#PaymentSplitter-release-contract-IERC20-address- +:PaymentSplitter-PayeeAdded: pass:normal[xref:finance.adoc#PaymentSplitter-PayeeAdded-address-uint256-[`PaymentSplitter.PayeeAdded`]] +:xref-PaymentSplitter-PayeeAdded-address-uint256-: xref:finance.adoc#PaymentSplitter-PayeeAdded-address-uint256- +:PaymentSplitter-PaymentReleased: pass:normal[xref:finance.adoc#PaymentSplitter-PaymentReleased-address-uint256-[`PaymentSplitter.PaymentReleased`]] +:xref-PaymentSplitter-PaymentReleased-address-uint256-: xref:finance.adoc#PaymentSplitter-PaymentReleased-address-uint256- +:PaymentSplitter-ERC20PaymentReleased: pass:normal[xref:finance.adoc#PaymentSplitter-ERC20PaymentReleased-contract-IERC20-address-uint256-[`PaymentSplitter.ERC20PaymentReleased`]] +:xref-PaymentSplitter-ERC20PaymentReleased-contract-IERC20-address-uint256-: xref:finance.adoc#PaymentSplitter-ERC20PaymentReleased-contract-IERC20-address-uint256- +:PaymentSplitter-PaymentReceived: pass:normal[xref:finance.adoc#PaymentSplitter-PaymentReceived-address-uint256-[`PaymentSplitter.PaymentReceived`]] +:xref-PaymentSplitter-PaymentReceived-address-uint256-: xref:finance.adoc#PaymentSplitter-PaymentReceived-address-uint256- +:VestingWallet: pass:normal[xref:finance.adoc#VestingWallet[`VestingWallet`]] +:xref-VestingWallet: xref:finance.adoc#VestingWallet +:VestingWallet-constructor: pass:normal[xref:finance.adoc#VestingWallet-constructor-address-uint64-uint64-[`VestingWallet.constructor`]] +:xref-VestingWallet-constructor-address-uint64-uint64-: xref:finance.adoc#VestingWallet-constructor-address-uint64-uint64- +:VestingWallet-receive: pass:normal[xref:finance.adoc#VestingWallet-receive--[`VestingWallet.receive`]] +:xref-VestingWallet-receive--: xref:finance.adoc#VestingWallet-receive-- +:VestingWallet-beneficiary: pass:normal[xref:finance.adoc#VestingWallet-beneficiary--[`VestingWallet.beneficiary`]] +:xref-VestingWallet-beneficiary--: xref:finance.adoc#VestingWallet-beneficiary-- +:VestingWallet-start: pass:normal[xref:finance.adoc#VestingWallet-start--[`VestingWallet.start`]] +:xref-VestingWallet-start--: xref:finance.adoc#VestingWallet-start-- +:VestingWallet-duration: pass:normal[xref:finance.adoc#VestingWallet-duration--[`VestingWallet.duration`]] +:xref-VestingWallet-duration--: xref:finance.adoc#VestingWallet-duration-- +:VestingWallet-released: pass:normal[xref:finance.adoc#VestingWallet-released--[`VestingWallet.released`]] +:xref-VestingWallet-released--: xref:finance.adoc#VestingWallet-released-- +:VestingWallet-released: pass:normal[xref:finance.adoc#VestingWallet-released-address-[`VestingWallet.released`]] +:xref-VestingWallet-released-address-: xref:finance.adoc#VestingWallet-released-address- +:VestingWallet-release: pass:normal[xref:finance.adoc#VestingWallet-release--[`VestingWallet.release`]] +:xref-VestingWallet-release--: xref:finance.adoc#VestingWallet-release-- +:VestingWallet-release: pass:normal[xref:finance.adoc#VestingWallet-release-address-[`VestingWallet.release`]] +:xref-VestingWallet-release-address-: xref:finance.adoc#VestingWallet-release-address- +:VestingWallet-vestedAmount: pass:normal[xref:finance.adoc#VestingWallet-vestedAmount-uint64-[`VestingWallet.vestedAmount`]] +:xref-VestingWallet-vestedAmount-uint64-: xref:finance.adoc#VestingWallet-vestedAmount-uint64- +:VestingWallet-vestedAmount: pass:normal[xref:finance.adoc#VestingWallet-vestedAmount-address-uint64-[`VestingWallet.vestedAmount`]] +:xref-VestingWallet-vestedAmount-address-uint64-: xref:finance.adoc#VestingWallet-vestedAmount-address-uint64- +:VestingWallet-_vestingSchedule: pass:normal[xref:finance.adoc#VestingWallet-_vestingSchedule-uint256-uint64-[`VestingWallet._vestingSchedule`]] +:xref-VestingWallet-_vestingSchedule-uint256-uint64-: xref:finance.adoc#VestingWallet-_vestingSchedule-uint256-uint64- +:VestingWallet-EtherReleased: pass:normal[xref:finance.adoc#VestingWallet-EtherReleased-uint256-[`VestingWallet.EtherReleased`]] +:xref-VestingWallet-EtherReleased-uint256-: xref:finance.adoc#VestingWallet-EtherReleased-uint256- +:VestingWallet-ERC20Released: pass:normal[xref:finance.adoc#VestingWallet-ERC20Released-address-uint256-[`VestingWallet.ERC20Released`]] +:xref-VestingWallet-ERC20Released-address-uint256-: xref:finance.adoc#VestingWallet-ERC20Released-address-uint256- +:Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]] +:xref-Governor: xref:governance.adoc#Governor +:Governor-onlyGovernance: pass:normal[xref:governance.adoc#Governor-onlyGovernance--[`Governor.onlyGovernance`]] +:xref-Governor-onlyGovernance--: xref:governance.adoc#Governor-onlyGovernance-- +:Governor-BALLOT_TYPEHASH: pass:normal[xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32[`Governor.BALLOT_TYPEHASH`]] +:xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32 +:Governor-constructor: pass:normal[xref:governance.adoc#Governor-constructor-string-[`Governor.constructor`]] +:xref-Governor-constructor-string-: xref:governance.adoc#Governor-constructor-string- +:Governor-receive: pass:normal[xref:governance.adoc#Governor-receive--[`Governor.receive`]] +:xref-Governor-receive--: xref:governance.adoc#Governor-receive-- +:Governor-supportsInterface: pass:normal[xref:governance.adoc#Governor-supportsInterface-bytes4-[`Governor.supportsInterface`]] +:xref-Governor-supportsInterface-bytes4-: xref:governance.adoc#Governor-supportsInterface-bytes4- +:Governor-name: pass:normal[xref:governance.adoc#Governor-name--[`Governor.name`]] +:xref-Governor-name--: xref:governance.adoc#Governor-name-- +:Governor-version: pass:normal[xref:governance.adoc#Governor-version--[`Governor.version`]] +:xref-Governor-version--: xref:governance.adoc#Governor-version-- +:Governor-hashProposal: pass:normal[xref:governance.adoc#Governor-hashProposal-address---uint256---bytes---bytes32-[`Governor.hashProposal`]] +:xref-Governor-hashProposal-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-hashProposal-address---uint256---bytes---bytes32- +:Governor-state: pass:normal[xref:governance.adoc#Governor-state-uint256-[`Governor.state`]] +:xref-Governor-state-uint256-: xref:governance.adoc#Governor-state-uint256- +:Governor-proposalSnapshot: pass:normal[xref:governance.adoc#Governor-proposalSnapshot-uint256-[`Governor.proposalSnapshot`]] +:xref-Governor-proposalSnapshot-uint256-: xref:governance.adoc#Governor-proposalSnapshot-uint256- +:Governor-proposalDeadline: pass:normal[xref:governance.adoc#Governor-proposalDeadline-uint256-[`Governor.proposalDeadline`]] +:xref-Governor-proposalDeadline-uint256-: xref:governance.adoc#Governor-proposalDeadline-uint256- +:Governor-proposalThreshold: pass:normal[xref:governance.adoc#Governor-proposalThreshold--[`Governor.proposalThreshold`]] +:xref-Governor-proposalThreshold--: xref:governance.adoc#Governor-proposalThreshold-- +:Governor-_quorumReached: pass:normal[xref:governance.adoc#Governor-_quorumReached-uint256-[`Governor._quorumReached`]] +:xref-Governor-_quorumReached-uint256-: xref:governance.adoc#Governor-_quorumReached-uint256- +:Governor-_voteSucceeded: pass:normal[xref:governance.adoc#Governor-_voteSucceeded-uint256-[`Governor._voteSucceeded`]] +:xref-Governor-_voteSucceeded-uint256-: xref:governance.adoc#Governor-_voteSucceeded-uint256- +:Governor-_countVote: pass:normal[xref:governance.adoc#Governor-_countVote-uint256-address-uint8-uint256-[`Governor._countVote`]] +:xref-Governor-_countVote-uint256-address-uint8-uint256-: xref:governance.adoc#Governor-_countVote-uint256-address-uint8-uint256- +:Governor-propose: pass:normal[xref:governance.adoc#Governor-propose-address---uint256---bytes---string-[`Governor.propose`]] +:xref-Governor-propose-address---uint256---bytes---string-: xref:governance.adoc#Governor-propose-address---uint256---bytes---string- +:Governor-execute: pass:normal[xref:governance.adoc#Governor-execute-address---uint256---bytes---bytes32-[`Governor.execute`]] +:xref-Governor-execute-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-execute-address---uint256---bytes---bytes32- +:Governor-_execute: pass:normal[xref:governance.adoc#Governor-_execute-uint256-address---uint256---bytes---bytes32-[`Governor._execute`]] +:xref-Governor-_execute-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_execute-uint256-address---uint256---bytes---bytes32- +:Governor-_cancel: pass:normal[xref:governance.adoc#Governor-_cancel-address---uint256---bytes---bytes32-[`Governor._cancel`]] +:xref-Governor-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_cancel-address---uint256---bytes---bytes32- +:Governor-castVote: pass:normal[xref:governance.adoc#Governor-castVote-uint256-uint8-[`Governor.castVote`]] +:xref-Governor-castVote-uint256-uint8-: xref:governance.adoc#Governor-castVote-uint256-uint8- +:Governor-castVoteWithReason: pass:normal[xref:governance.adoc#Governor-castVoteWithReason-uint256-uint8-string-[`Governor.castVoteWithReason`]] +:xref-Governor-castVoteWithReason-uint256-uint8-string-: xref:governance.adoc#Governor-castVoteWithReason-uint256-uint8-string- +:Governor-castVoteBySig: pass:normal[xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-[`Governor.castVoteBySig`]] +:xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32- +:Governor-_castVote: pass:normal[xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-[`Governor._castVote`]] +:xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string- +:Governor-relay: pass:normal[xref:governance.adoc#Governor-relay-address-uint256-bytes-[`Governor.relay`]] +:xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes- +:Governor-_executor: pass:normal[xref:governance.adoc#Governor-_executor--[`Governor._executor`]] +:xref-Governor-_executor--: xref:governance.adoc#Governor-_executor-- +:Governor-ProposalCore: pass:normal[xref:governance.adoc#Governor-ProposalCore[`Governor.ProposalCore`]] +:xref-Governor-ProposalCore: xref:governance.adoc#Governor-ProposalCore +:IGovernor: pass:normal[xref:governance.adoc#IGovernor[`IGovernor`]] +:xref-IGovernor: xref:governance.adoc#IGovernor +:IGovernor-name: pass:normal[xref:governance.adoc#IGovernor-name--[`IGovernor.name`]] +:xref-IGovernor-name--: xref:governance.adoc#IGovernor-name-- +:IGovernor-version: pass:normal[xref:governance.adoc#IGovernor-version--[`IGovernor.version`]] +:xref-IGovernor-version--: xref:governance.adoc#IGovernor-version-- +:IGovernor-COUNTING_MODE: pass:normal[xref:governance.adoc#IGovernor-COUNTING_MODE--[`IGovernor.COUNTING_MODE`]] +:xref-IGovernor-COUNTING_MODE--: xref:governance.adoc#IGovernor-COUNTING_MODE-- +:IGovernor-hashProposal: pass:normal[xref:governance.adoc#IGovernor-hashProposal-address---uint256---bytes---bytes32-[`IGovernor.hashProposal`]] +:xref-IGovernor-hashProposal-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernor-hashProposal-address---uint256---bytes---bytes32- +:IGovernor-state: pass:normal[xref:governance.adoc#IGovernor-state-uint256-[`IGovernor.state`]] +:xref-IGovernor-state-uint256-: xref:governance.adoc#IGovernor-state-uint256- +:IGovernor-proposalSnapshot: pass:normal[xref:governance.adoc#IGovernor-proposalSnapshot-uint256-[`IGovernor.proposalSnapshot`]] +:xref-IGovernor-proposalSnapshot-uint256-: xref:governance.adoc#IGovernor-proposalSnapshot-uint256- +:IGovernor-proposalDeadline: pass:normal[xref:governance.adoc#IGovernor-proposalDeadline-uint256-[`IGovernor.proposalDeadline`]] +:xref-IGovernor-proposalDeadline-uint256-: xref:governance.adoc#IGovernor-proposalDeadline-uint256- +:IGovernor-votingDelay: pass:normal[xref:governance.adoc#IGovernor-votingDelay--[`IGovernor.votingDelay`]] +:xref-IGovernor-votingDelay--: xref:governance.adoc#IGovernor-votingDelay-- +:IGovernor-votingPeriod: pass:normal[xref:governance.adoc#IGovernor-votingPeriod--[`IGovernor.votingPeriod`]] +:xref-IGovernor-votingPeriod--: xref:governance.adoc#IGovernor-votingPeriod-- +:IGovernor-quorum: pass:normal[xref:governance.adoc#IGovernor-quorum-uint256-[`IGovernor.quorum`]] +:xref-IGovernor-quorum-uint256-: xref:governance.adoc#IGovernor-quorum-uint256- +:IGovernor-getVotes: pass:normal[xref:governance.adoc#IGovernor-getVotes-address-uint256-[`IGovernor.getVotes`]] +:xref-IGovernor-getVotes-address-uint256-: xref:governance.adoc#IGovernor-getVotes-address-uint256- +:IGovernor-hasVoted: pass:normal[xref:governance.adoc#IGovernor-hasVoted-uint256-address-[`IGovernor.hasVoted`]] +:xref-IGovernor-hasVoted-uint256-address-: xref:governance.adoc#IGovernor-hasVoted-uint256-address- +:IGovernor-propose: pass:normal[xref:governance.adoc#IGovernor-propose-address---uint256---bytes---string-[`IGovernor.propose`]] +:xref-IGovernor-propose-address---uint256---bytes---string-: xref:governance.adoc#IGovernor-propose-address---uint256---bytes---string- +:IGovernor-execute: pass:normal[xref:governance.adoc#IGovernor-execute-address---uint256---bytes---bytes32-[`IGovernor.execute`]] +:xref-IGovernor-execute-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernor-execute-address---uint256---bytes---bytes32- +:IGovernor-castVote: pass:normal[xref:governance.adoc#IGovernor-castVote-uint256-uint8-[`IGovernor.castVote`]] +:xref-IGovernor-castVote-uint256-uint8-: xref:governance.adoc#IGovernor-castVote-uint256-uint8- +:IGovernor-castVoteWithReason: pass:normal[xref:governance.adoc#IGovernor-castVoteWithReason-uint256-uint8-string-[`IGovernor.castVoteWithReason`]] +:xref-IGovernor-castVoteWithReason-uint256-uint8-string-: xref:governance.adoc#IGovernor-castVoteWithReason-uint256-uint8-string- +:IGovernor-castVoteBySig: pass:normal[xref:governance.adoc#IGovernor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-[`IGovernor.castVoteBySig`]] +:xref-IGovernor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-: xref:governance.adoc#IGovernor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32- +:IGovernor-ProposalCreated: pass:normal[xref:governance.adoc#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-[`IGovernor.ProposalCreated`]] +:xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-: xref:governance.adoc#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string- +:IGovernor-ProposalCanceled: pass:normal[xref:governance.adoc#IGovernor-ProposalCanceled-uint256-[`IGovernor.ProposalCanceled`]] +:xref-IGovernor-ProposalCanceled-uint256-: xref:governance.adoc#IGovernor-ProposalCanceled-uint256- +:IGovernor-ProposalExecuted: pass:normal[xref:governance.adoc#IGovernor-ProposalExecuted-uint256-[`IGovernor.ProposalExecuted`]] +:xref-IGovernor-ProposalExecuted-uint256-: xref:governance.adoc#IGovernor-ProposalExecuted-uint256- +:IGovernor-VoteCast: pass:normal[xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string-[`IGovernor.VoteCast`]] +:xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-: xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string- +:IGovernor-ProposalState: pass:normal[xref:governance.adoc#IGovernor-ProposalState[`IGovernor.ProposalState`]] +:xref-IGovernor-ProposalState: xref:governance.adoc#IGovernor-ProposalState +:TimelockController: pass:normal[xref:governance.adoc#TimelockController[`TimelockController`]] +:xref-TimelockController: xref:governance.adoc#TimelockController +:TimelockController-onlyRoleOrOpenRole: pass:normal[xref:governance.adoc#TimelockController-onlyRoleOrOpenRole-bytes32-[`TimelockController.onlyRoleOrOpenRole`]] +:xref-TimelockController-onlyRoleOrOpenRole-bytes32-: xref:governance.adoc#TimelockController-onlyRoleOrOpenRole-bytes32- +:TimelockController-TIMELOCK_ADMIN_ROLE: pass:normal[xref:governance.adoc#TimelockController-TIMELOCK_ADMIN_ROLE-bytes32[`TimelockController.TIMELOCK_ADMIN_ROLE`]] +:xref-TimelockController-TIMELOCK_ADMIN_ROLE-bytes32: xref:governance.adoc#TimelockController-TIMELOCK_ADMIN_ROLE-bytes32 +:TimelockController-PROPOSER_ROLE: pass:normal[xref:governance.adoc#TimelockController-PROPOSER_ROLE-bytes32[`TimelockController.PROPOSER_ROLE`]] +:xref-TimelockController-PROPOSER_ROLE-bytes32: xref:governance.adoc#TimelockController-PROPOSER_ROLE-bytes32 +:TimelockController-EXECUTOR_ROLE: pass:normal[xref:governance.adoc#TimelockController-EXECUTOR_ROLE-bytes32[`TimelockController.EXECUTOR_ROLE`]] +:xref-TimelockController-EXECUTOR_ROLE-bytes32: xref:governance.adoc#TimelockController-EXECUTOR_ROLE-bytes32 +:TimelockController-_DONE_TIMESTAMP: pass:normal[xref:governance.adoc#TimelockController-_DONE_TIMESTAMP-uint256[`TimelockController._DONE_TIMESTAMP`]] +:xref-TimelockController-_DONE_TIMESTAMP-uint256: xref:governance.adoc#TimelockController-_DONE_TIMESTAMP-uint256 +:TimelockController-constructor: pass:normal[xref:governance.adoc#TimelockController-constructor-uint256-address---address---[`TimelockController.constructor`]] +:xref-TimelockController-constructor-uint256-address---address---: xref:governance.adoc#TimelockController-constructor-uint256-address---address--- +:TimelockController-receive: pass:normal[xref:governance.adoc#TimelockController-receive--[`TimelockController.receive`]] +:xref-TimelockController-receive--: xref:governance.adoc#TimelockController-receive-- +:TimelockController-isOperation: pass:normal[xref:governance.adoc#TimelockController-isOperation-bytes32-[`TimelockController.isOperation`]] +:xref-TimelockController-isOperation-bytes32-: xref:governance.adoc#TimelockController-isOperation-bytes32- +:TimelockController-isOperationPending: pass:normal[xref:governance.adoc#TimelockController-isOperationPending-bytes32-[`TimelockController.isOperationPending`]] +:xref-TimelockController-isOperationPending-bytes32-: xref:governance.adoc#TimelockController-isOperationPending-bytes32- +:TimelockController-isOperationReady: pass:normal[xref:governance.adoc#TimelockController-isOperationReady-bytes32-[`TimelockController.isOperationReady`]] +:xref-TimelockController-isOperationReady-bytes32-: xref:governance.adoc#TimelockController-isOperationReady-bytes32- +:TimelockController-isOperationDone: pass:normal[xref:governance.adoc#TimelockController-isOperationDone-bytes32-[`TimelockController.isOperationDone`]] +:xref-TimelockController-isOperationDone-bytes32-: xref:governance.adoc#TimelockController-isOperationDone-bytes32- +:TimelockController-getTimestamp: pass:normal[xref:governance.adoc#TimelockController-getTimestamp-bytes32-[`TimelockController.getTimestamp`]] +:xref-TimelockController-getTimestamp-bytes32-: xref:governance.adoc#TimelockController-getTimestamp-bytes32- +:TimelockController-getMinDelay: pass:normal[xref:governance.adoc#TimelockController-getMinDelay--[`TimelockController.getMinDelay`]] +:xref-TimelockController-getMinDelay--: xref:governance.adoc#TimelockController-getMinDelay-- +:TimelockController-hashOperation: pass:normal[xref:governance.adoc#TimelockController-hashOperation-address-uint256-bytes-bytes32-bytes32-[`TimelockController.hashOperation`]] +:xref-TimelockController-hashOperation-address-uint256-bytes-bytes32-bytes32-: xref:governance.adoc#TimelockController-hashOperation-address-uint256-bytes-bytes32-bytes32- +:TimelockController-hashOperationBatch: pass:normal[xref:governance.adoc#TimelockController-hashOperationBatch-address---uint256---bytes---bytes32-bytes32-[`TimelockController.hashOperationBatch`]] +:xref-TimelockController-hashOperationBatch-address---uint256---bytes---bytes32-bytes32-: xref:governance.adoc#TimelockController-hashOperationBatch-address---uint256---bytes---bytes32-bytes32- +:TimelockController-schedule: pass:normal[xref:governance.adoc#TimelockController-schedule-address-uint256-bytes-bytes32-bytes32-uint256-[`TimelockController.schedule`]] +:xref-TimelockController-schedule-address-uint256-bytes-bytes32-bytes32-uint256-: xref:governance.adoc#TimelockController-schedule-address-uint256-bytes-bytes32-bytes32-uint256- +:TimelockController-scheduleBatch: pass:normal[xref:governance.adoc#TimelockController-scheduleBatch-address---uint256---bytes---bytes32-bytes32-uint256-[`TimelockController.scheduleBatch`]] +:xref-TimelockController-scheduleBatch-address---uint256---bytes---bytes32-bytes32-uint256-: xref:governance.adoc#TimelockController-scheduleBatch-address---uint256---bytes---bytes32-bytes32-uint256- +:TimelockController-cancel: pass:normal[xref:governance.adoc#TimelockController-cancel-bytes32-[`TimelockController.cancel`]] +:xref-TimelockController-cancel-bytes32-: xref:governance.adoc#TimelockController-cancel-bytes32- +:TimelockController-execute: pass:normal[xref:governance.adoc#TimelockController-execute-address-uint256-bytes-bytes32-bytes32-[`TimelockController.execute`]] +:xref-TimelockController-execute-address-uint256-bytes-bytes32-bytes32-: xref:governance.adoc#TimelockController-execute-address-uint256-bytes-bytes32-bytes32- +:TimelockController-executeBatch: pass:normal[xref:governance.adoc#TimelockController-executeBatch-address---uint256---bytes---bytes32-bytes32-[`TimelockController.executeBatch`]] +:xref-TimelockController-executeBatch-address---uint256---bytes---bytes32-bytes32-: xref:governance.adoc#TimelockController-executeBatch-address---uint256---bytes---bytes32-bytes32- +:TimelockController-updateDelay: pass:normal[xref:governance.adoc#TimelockController-updateDelay-uint256-[`TimelockController.updateDelay`]] +:xref-TimelockController-updateDelay-uint256-: xref:governance.adoc#TimelockController-updateDelay-uint256- +:TimelockController-CallScheduled: pass:normal[xref:governance.adoc#TimelockController-CallScheduled-bytes32-uint256-address-uint256-bytes-bytes32-uint256-[`TimelockController.CallScheduled`]] +:xref-TimelockController-CallScheduled-bytes32-uint256-address-uint256-bytes-bytes32-uint256-: xref:governance.adoc#TimelockController-CallScheduled-bytes32-uint256-address-uint256-bytes-bytes32-uint256- +:TimelockController-CallExecuted: pass:normal[xref:governance.adoc#TimelockController-CallExecuted-bytes32-uint256-address-uint256-bytes-[`TimelockController.CallExecuted`]] +:xref-TimelockController-CallExecuted-bytes32-uint256-address-uint256-bytes-: xref:governance.adoc#TimelockController-CallExecuted-bytes32-uint256-address-uint256-bytes- +:TimelockController-Cancelled: pass:normal[xref:governance.adoc#TimelockController-Cancelled-bytes32-[`TimelockController.Cancelled`]] +:xref-TimelockController-Cancelled-bytes32-: xref:governance.adoc#TimelockController-Cancelled-bytes32- +:TimelockController-MinDelayChange: pass:normal[xref:governance.adoc#TimelockController-MinDelayChange-uint256-uint256-[`TimelockController.MinDelayChange`]] +:xref-TimelockController-MinDelayChange-uint256-uint256-: xref:governance.adoc#TimelockController-MinDelayChange-uint256-uint256- +:GovernorCompatibilityBravo: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo[`GovernorCompatibilityBravo`]] +:xref-GovernorCompatibilityBravo: xref:governance.adoc#GovernorCompatibilityBravo +:GovernorCompatibilityBravo-COUNTING_MODE: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-COUNTING_MODE--[`GovernorCompatibilityBravo.COUNTING_MODE`]] +:xref-GovernorCompatibilityBravo-COUNTING_MODE--: xref:governance.adoc#GovernorCompatibilityBravo-COUNTING_MODE-- +:GovernorCompatibilityBravo-propose: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-propose-address---uint256---bytes---string-[`GovernorCompatibilityBravo.propose`]] +:xref-GovernorCompatibilityBravo-propose-address---uint256---bytes---string-: xref:governance.adoc#GovernorCompatibilityBravo-propose-address---uint256---bytes---string- +:GovernorCompatibilityBravo-propose: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-propose-address---uint256---string---bytes---string-[`GovernorCompatibilityBravo.propose`]] +:xref-GovernorCompatibilityBravo-propose-address---uint256---string---bytes---string-: xref:governance.adoc#GovernorCompatibilityBravo-propose-address---uint256---string---bytes---string- +:GovernorCompatibilityBravo-queue: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-queue-uint256-[`GovernorCompatibilityBravo.queue`]] +:xref-GovernorCompatibilityBravo-queue-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-queue-uint256- +:GovernorCompatibilityBravo-execute: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-execute-uint256-[`GovernorCompatibilityBravo.execute`]] +:xref-GovernorCompatibilityBravo-execute-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-execute-uint256- +:GovernorCompatibilityBravo-cancel: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-cancel-uint256-[`GovernorCompatibilityBravo.cancel`]] +:xref-GovernorCompatibilityBravo-cancel-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-cancel-uint256- +:GovernorCompatibilityBravo-proposals: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-proposals-uint256-[`GovernorCompatibilityBravo.proposals`]] +:xref-GovernorCompatibilityBravo-proposals-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-proposals-uint256- +:GovernorCompatibilityBravo-getActions: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-getActions-uint256-[`GovernorCompatibilityBravo.getActions`]] +:xref-GovernorCompatibilityBravo-getActions-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-getActions-uint256- +:GovernorCompatibilityBravo-getReceipt: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-getReceipt-uint256-address-[`GovernorCompatibilityBravo.getReceipt`]] +:xref-GovernorCompatibilityBravo-getReceipt-uint256-address-: xref:governance.adoc#GovernorCompatibilityBravo-getReceipt-uint256-address- +:GovernorCompatibilityBravo-quorumVotes: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-quorumVotes--[`GovernorCompatibilityBravo.quorumVotes`]] +:xref-GovernorCompatibilityBravo-quorumVotes--: xref:governance.adoc#GovernorCompatibilityBravo-quorumVotes-- +:GovernorCompatibilityBravo-hasVoted: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-hasVoted-uint256-address-[`GovernorCompatibilityBravo.hasVoted`]] +:xref-GovernorCompatibilityBravo-hasVoted-uint256-address-: xref:governance.adoc#GovernorCompatibilityBravo-hasVoted-uint256-address- +:GovernorCompatibilityBravo-_quorumReached: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-_quorumReached-uint256-[`GovernorCompatibilityBravo._quorumReached`]] +:xref-GovernorCompatibilityBravo-_quorumReached-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-_quorumReached-uint256- +:GovernorCompatibilityBravo-_voteSucceeded: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-_voteSucceeded-uint256-[`GovernorCompatibilityBravo._voteSucceeded`]] +:xref-GovernorCompatibilityBravo-_voteSucceeded-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-_voteSucceeded-uint256- +:GovernorCompatibilityBravo-_countVote: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-_countVote-uint256-address-uint8-uint256-[`GovernorCompatibilityBravo._countVote`]] +:xref-GovernorCompatibilityBravo-_countVote-uint256-address-uint8-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-_countVote-uint256-address-uint8-uint256- +:GovernorCompatibilityBravo-ProposalDetails: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-ProposalDetails[`GovernorCompatibilityBravo.ProposalDetails`]] +:xref-GovernorCompatibilityBravo-ProposalDetails: xref:governance.adoc#GovernorCompatibilityBravo-ProposalDetails +:GovernorCompatibilityBravo-VoteType: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-VoteType[`GovernorCompatibilityBravo.VoteType`]] +:xref-GovernorCompatibilityBravo-VoteType: xref:governance.adoc#GovernorCompatibilityBravo-VoteType +:IGovernorCompatibilityBravo: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo[`IGovernorCompatibilityBravo`]] +:xref-IGovernorCompatibilityBravo: xref:governance.adoc#IGovernorCompatibilityBravo +:IGovernorCompatibilityBravo-quorumVotes: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-quorumVotes--[`IGovernorCompatibilityBravo.quorumVotes`]] +:xref-IGovernorCompatibilityBravo-quorumVotes--: xref:governance.adoc#IGovernorCompatibilityBravo-quorumVotes-- +:IGovernorCompatibilityBravo-proposals: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-proposals-uint256-[`IGovernorCompatibilityBravo.proposals`]] +:xref-IGovernorCompatibilityBravo-proposals-uint256-: xref:governance.adoc#IGovernorCompatibilityBravo-proposals-uint256- +:IGovernorCompatibilityBravo-propose: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-propose-address---uint256---string---bytes---string-[`IGovernorCompatibilityBravo.propose`]] +:xref-IGovernorCompatibilityBravo-propose-address---uint256---string---bytes---string-: xref:governance.adoc#IGovernorCompatibilityBravo-propose-address---uint256---string---bytes---string- +:IGovernorCompatibilityBravo-queue: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-queue-uint256-[`IGovernorCompatibilityBravo.queue`]] +:xref-IGovernorCompatibilityBravo-queue-uint256-: xref:governance.adoc#IGovernorCompatibilityBravo-queue-uint256- +:IGovernorCompatibilityBravo-execute: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-execute-uint256-[`IGovernorCompatibilityBravo.execute`]] +:xref-IGovernorCompatibilityBravo-execute-uint256-: xref:governance.adoc#IGovernorCompatibilityBravo-execute-uint256- +:IGovernorCompatibilityBravo-cancel: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-cancel-uint256-[`IGovernorCompatibilityBravo.cancel`]] +:xref-IGovernorCompatibilityBravo-cancel-uint256-: xref:governance.adoc#IGovernorCompatibilityBravo-cancel-uint256- +:IGovernorCompatibilityBravo-getActions: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-getActions-uint256-[`IGovernorCompatibilityBravo.getActions`]] +:xref-IGovernorCompatibilityBravo-getActions-uint256-: xref:governance.adoc#IGovernorCompatibilityBravo-getActions-uint256- +:IGovernorCompatibilityBravo-getReceipt: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-getReceipt-uint256-address-[`IGovernorCompatibilityBravo.getReceipt`]] +:xref-IGovernorCompatibilityBravo-getReceipt-uint256-address-: xref:governance.adoc#IGovernorCompatibilityBravo-getReceipt-uint256-address- +:IGovernorCompatibilityBravo-Proposal: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-Proposal[`IGovernorCompatibilityBravo.Proposal`]] +:xref-IGovernorCompatibilityBravo-Proposal: xref:governance.adoc#IGovernorCompatibilityBravo-Proposal +:IGovernorCompatibilityBravo-Receipt: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-Receipt[`IGovernorCompatibilityBravo.Receipt`]] +:xref-IGovernorCompatibilityBravo-Receipt: xref:governance.adoc#IGovernorCompatibilityBravo-Receipt +:GovernorCountingSimple: pass:normal[xref:governance.adoc#GovernorCountingSimple[`GovernorCountingSimple`]] +:xref-GovernorCountingSimple: xref:governance.adoc#GovernorCountingSimple +:GovernorCountingSimple-COUNTING_MODE: pass:normal[xref:governance.adoc#GovernorCountingSimple-COUNTING_MODE--[`GovernorCountingSimple.COUNTING_MODE`]] +:xref-GovernorCountingSimple-COUNTING_MODE--: xref:governance.adoc#GovernorCountingSimple-COUNTING_MODE-- +:GovernorCountingSimple-hasVoted: pass:normal[xref:governance.adoc#GovernorCountingSimple-hasVoted-uint256-address-[`GovernorCountingSimple.hasVoted`]] +:xref-GovernorCountingSimple-hasVoted-uint256-address-: xref:governance.adoc#GovernorCountingSimple-hasVoted-uint256-address- +:GovernorCountingSimple-proposalVotes: pass:normal[xref:governance.adoc#GovernorCountingSimple-proposalVotes-uint256-[`GovernorCountingSimple.proposalVotes`]] +:xref-GovernorCountingSimple-proposalVotes-uint256-: xref:governance.adoc#GovernorCountingSimple-proposalVotes-uint256- +:GovernorCountingSimple-_quorumReached: pass:normal[xref:governance.adoc#GovernorCountingSimple-_quorumReached-uint256-[`GovernorCountingSimple._quorumReached`]] +:xref-GovernorCountingSimple-_quorumReached-uint256-: xref:governance.adoc#GovernorCountingSimple-_quorumReached-uint256- +:GovernorCountingSimple-_voteSucceeded: pass:normal[xref:governance.adoc#GovernorCountingSimple-_voteSucceeded-uint256-[`GovernorCountingSimple._voteSucceeded`]] +:xref-GovernorCountingSimple-_voteSucceeded-uint256-: xref:governance.adoc#GovernorCountingSimple-_voteSucceeded-uint256- +:GovernorCountingSimple-_countVote: pass:normal[xref:governance.adoc#GovernorCountingSimple-_countVote-uint256-address-uint8-uint256-[`GovernorCountingSimple._countVote`]] +:xref-GovernorCountingSimple-_countVote-uint256-address-uint8-uint256-: xref:governance.adoc#GovernorCountingSimple-_countVote-uint256-address-uint8-uint256- +:GovernorCountingSimple-ProposalVote: pass:normal[xref:governance.adoc#GovernorCountingSimple-ProposalVote[`GovernorCountingSimple.ProposalVote`]] +:xref-GovernorCountingSimple-ProposalVote: xref:governance.adoc#GovernorCountingSimple-ProposalVote +:GovernorCountingSimple-VoteType: pass:normal[xref:governance.adoc#GovernorCountingSimple-VoteType[`GovernorCountingSimple.VoteType`]] +:xref-GovernorCountingSimple-VoteType: xref:governance.adoc#GovernorCountingSimple-VoteType +:GovernorPreventLateQuorum: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum[`GovernorPreventLateQuorum`]] +:xref-GovernorPreventLateQuorum: xref:governance.adoc#GovernorPreventLateQuorum +:GovernorPreventLateQuorum-constructor: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64-[`GovernorPreventLateQuorum.constructor`]] +:xref-GovernorPreventLateQuorum-constructor-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64- +:GovernorPreventLateQuorum-proposalDeadline: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256-[`GovernorPreventLateQuorum.proposalDeadline`]] +:xref-GovernorPreventLateQuorum-proposalDeadline-uint256-: xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256- +:GovernorPreventLateQuorum-_castVote: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-[`GovernorPreventLateQuorum._castVote`]] +:xref-GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-: xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string- +:GovernorPreventLateQuorum-lateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension--[`GovernorPreventLateQuorum.lateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-lateQuorumVoteExtension--: xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension-- +:GovernorPreventLateQuorum-setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum.setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-_setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum._setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-ProposalExtended: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-[`GovernorPreventLateQuorum.ProposalExtended`]] +:xref-GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64- +:GovernorPreventLateQuorum-LateQuorumVoteExtensionSet: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-[`GovernorPreventLateQuorum.LateQuorumVoteExtensionSet`]] +:xref-GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64- +:GovernorProposalThreshold: pass:normal[xref:governance.adoc#GovernorProposalThreshold[`GovernorProposalThreshold`]] +:xref-GovernorProposalThreshold: xref:governance.adoc#GovernorProposalThreshold +:GovernorProposalThreshold-propose: pass:normal[xref:governance.adoc#GovernorProposalThreshold-propose-address---uint256---bytes---string-[`GovernorProposalThreshold.propose`]] +:xref-GovernorProposalThreshold-propose-address---uint256---bytes---string-: xref:governance.adoc#GovernorProposalThreshold-propose-address---uint256---bytes---string- +:GovernorSettings: pass:normal[xref:governance.adoc#GovernorSettings[`GovernorSettings`]] +:xref-GovernorSettings: xref:governance.adoc#GovernorSettings +:GovernorSettings-constructor: pass:normal[xref:governance.adoc#GovernorSettings-constructor-uint256-uint256-uint256-[`GovernorSettings.constructor`]] +:xref-GovernorSettings-constructor-uint256-uint256-uint256-: xref:governance.adoc#GovernorSettings-constructor-uint256-uint256-uint256- +:GovernorSettings-votingDelay: pass:normal[xref:governance.adoc#GovernorSettings-votingDelay--[`GovernorSettings.votingDelay`]] +:xref-GovernorSettings-votingDelay--: xref:governance.adoc#GovernorSettings-votingDelay-- +:GovernorSettings-votingPeriod: pass:normal[xref:governance.adoc#GovernorSettings-votingPeriod--[`GovernorSettings.votingPeriod`]] +:xref-GovernorSettings-votingPeriod--: xref:governance.adoc#GovernorSettings-votingPeriod-- +:GovernorSettings-proposalThreshold: pass:normal[xref:governance.adoc#GovernorSettings-proposalThreshold--[`GovernorSettings.proposalThreshold`]] +:xref-GovernorSettings-proposalThreshold--: xref:governance.adoc#GovernorSettings-proposalThreshold-- +:GovernorSettings-setVotingDelay: pass:normal[xref:governance.adoc#GovernorSettings-setVotingDelay-uint256-[`GovernorSettings.setVotingDelay`]] +:xref-GovernorSettings-setVotingDelay-uint256-: xref:governance.adoc#GovernorSettings-setVotingDelay-uint256- +:GovernorSettings-setVotingPeriod: pass:normal[xref:governance.adoc#GovernorSettings-setVotingPeriod-uint256-[`GovernorSettings.setVotingPeriod`]] +:xref-GovernorSettings-setVotingPeriod-uint256-: xref:governance.adoc#GovernorSettings-setVotingPeriod-uint256- +:GovernorSettings-setProposalThreshold: pass:normal[xref:governance.adoc#GovernorSettings-setProposalThreshold-uint256-[`GovernorSettings.setProposalThreshold`]] +:xref-GovernorSettings-setProposalThreshold-uint256-: xref:governance.adoc#GovernorSettings-setProposalThreshold-uint256- +:GovernorSettings-_setVotingDelay: pass:normal[xref:governance.adoc#GovernorSettings-_setVotingDelay-uint256-[`GovernorSettings._setVotingDelay`]] +:xref-GovernorSettings-_setVotingDelay-uint256-: xref:governance.adoc#GovernorSettings-_setVotingDelay-uint256- +:GovernorSettings-_setVotingPeriod: pass:normal[xref:governance.adoc#GovernorSettings-_setVotingPeriod-uint256-[`GovernorSettings._setVotingPeriod`]] +:xref-GovernorSettings-_setVotingPeriod-uint256-: xref:governance.adoc#GovernorSettings-_setVotingPeriod-uint256- +:GovernorSettings-_setProposalThreshold: pass:normal[xref:governance.adoc#GovernorSettings-_setProposalThreshold-uint256-[`GovernorSettings._setProposalThreshold`]] +:xref-GovernorSettings-_setProposalThreshold-uint256-: xref:governance.adoc#GovernorSettings-_setProposalThreshold-uint256- +:GovernorSettings-VotingDelaySet: pass:normal[xref:governance.adoc#GovernorSettings-VotingDelaySet-uint256-uint256-[`GovernorSettings.VotingDelaySet`]] +:xref-GovernorSettings-VotingDelaySet-uint256-uint256-: xref:governance.adoc#GovernorSettings-VotingDelaySet-uint256-uint256- +:GovernorSettings-VotingPeriodSet: pass:normal[xref:governance.adoc#GovernorSettings-VotingPeriodSet-uint256-uint256-[`GovernorSettings.VotingPeriodSet`]] +:xref-GovernorSettings-VotingPeriodSet-uint256-uint256-: xref:governance.adoc#GovernorSettings-VotingPeriodSet-uint256-uint256- +:GovernorSettings-ProposalThresholdSet: pass:normal[xref:governance.adoc#GovernorSettings-ProposalThresholdSet-uint256-uint256-[`GovernorSettings.ProposalThresholdSet`]] +:xref-GovernorSettings-ProposalThresholdSet-uint256-uint256-: xref:governance.adoc#GovernorSettings-ProposalThresholdSet-uint256-uint256- +:ICompoundTimelock: pass:normal[xref:governance.adoc#ICompoundTimelock[`ICompoundTimelock`]] +:xref-ICompoundTimelock: xref:governance.adoc#ICompoundTimelock +:ICompoundTimelock-receive: pass:normal[xref:governance.adoc#ICompoundTimelock-receive--[`ICompoundTimelock.receive`]] +:xref-ICompoundTimelock-receive--: xref:governance.adoc#ICompoundTimelock-receive-- +:ICompoundTimelock-GRACE_PERIOD: pass:normal[xref:governance.adoc#ICompoundTimelock-GRACE_PERIOD--[`ICompoundTimelock.GRACE_PERIOD`]] +:xref-ICompoundTimelock-GRACE_PERIOD--: xref:governance.adoc#ICompoundTimelock-GRACE_PERIOD-- +:ICompoundTimelock-MINIMUM_DELAY: pass:normal[xref:governance.adoc#ICompoundTimelock-MINIMUM_DELAY--[`ICompoundTimelock.MINIMUM_DELAY`]] +:xref-ICompoundTimelock-MINIMUM_DELAY--: xref:governance.adoc#ICompoundTimelock-MINIMUM_DELAY-- +:ICompoundTimelock-MAXIMUM_DELAY: pass:normal[xref:governance.adoc#ICompoundTimelock-MAXIMUM_DELAY--[`ICompoundTimelock.MAXIMUM_DELAY`]] +:xref-ICompoundTimelock-MAXIMUM_DELAY--: xref:governance.adoc#ICompoundTimelock-MAXIMUM_DELAY-- +:ICompoundTimelock-admin: pass:normal[xref:governance.adoc#ICompoundTimelock-admin--[`ICompoundTimelock.admin`]] +:xref-ICompoundTimelock-admin--: xref:governance.adoc#ICompoundTimelock-admin-- +:ICompoundTimelock-pendingAdmin: pass:normal[xref:governance.adoc#ICompoundTimelock-pendingAdmin--[`ICompoundTimelock.pendingAdmin`]] +:xref-ICompoundTimelock-pendingAdmin--: xref:governance.adoc#ICompoundTimelock-pendingAdmin-- +:ICompoundTimelock-delay: pass:normal[xref:governance.adoc#ICompoundTimelock-delay--[`ICompoundTimelock.delay`]] +:xref-ICompoundTimelock-delay--: xref:governance.adoc#ICompoundTimelock-delay-- +:ICompoundTimelock-queuedTransactions: pass:normal[xref:governance.adoc#ICompoundTimelock-queuedTransactions-bytes32-[`ICompoundTimelock.queuedTransactions`]] +:xref-ICompoundTimelock-queuedTransactions-bytes32-: xref:governance.adoc#ICompoundTimelock-queuedTransactions-bytes32- +:ICompoundTimelock-setDelay: pass:normal[xref:governance.adoc#ICompoundTimelock-setDelay-uint256-[`ICompoundTimelock.setDelay`]] +:xref-ICompoundTimelock-setDelay-uint256-: xref:governance.adoc#ICompoundTimelock-setDelay-uint256- +:ICompoundTimelock-acceptAdmin: pass:normal[xref:governance.adoc#ICompoundTimelock-acceptAdmin--[`ICompoundTimelock.acceptAdmin`]] +:xref-ICompoundTimelock-acceptAdmin--: xref:governance.adoc#ICompoundTimelock-acceptAdmin-- +:ICompoundTimelock-setPendingAdmin: pass:normal[xref:governance.adoc#ICompoundTimelock-setPendingAdmin-address-[`ICompoundTimelock.setPendingAdmin`]] +:xref-ICompoundTimelock-setPendingAdmin-address-: xref:governance.adoc#ICompoundTimelock-setPendingAdmin-address- +:ICompoundTimelock-queueTransaction: pass:normal[xref:governance.adoc#ICompoundTimelock-queueTransaction-address-uint256-string-bytes-uint256-[`ICompoundTimelock.queueTransaction`]] +:xref-ICompoundTimelock-queueTransaction-address-uint256-string-bytes-uint256-: xref:governance.adoc#ICompoundTimelock-queueTransaction-address-uint256-string-bytes-uint256- +:ICompoundTimelock-cancelTransaction: pass:normal[xref:governance.adoc#ICompoundTimelock-cancelTransaction-address-uint256-string-bytes-uint256-[`ICompoundTimelock.cancelTransaction`]] +:xref-ICompoundTimelock-cancelTransaction-address-uint256-string-bytes-uint256-: xref:governance.adoc#ICompoundTimelock-cancelTransaction-address-uint256-string-bytes-uint256- +:ICompoundTimelock-executeTransaction: pass:normal[xref:governance.adoc#ICompoundTimelock-executeTransaction-address-uint256-string-bytes-uint256-[`ICompoundTimelock.executeTransaction`]] +:xref-ICompoundTimelock-executeTransaction-address-uint256-string-bytes-uint256-: xref:governance.adoc#ICompoundTimelock-executeTransaction-address-uint256-string-bytes-uint256- +:GovernorTimelockCompound: pass:normal[xref:governance.adoc#GovernorTimelockCompound[`GovernorTimelockCompound`]] +:xref-GovernorTimelockCompound: xref:governance.adoc#GovernorTimelockCompound +:GovernorTimelockCompound-constructor: pass:normal[xref:governance.adoc#GovernorTimelockCompound-constructor-contract-ICompoundTimelock-[`GovernorTimelockCompound.constructor`]] +:xref-GovernorTimelockCompound-constructor-contract-ICompoundTimelock-: xref:governance.adoc#GovernorTimelockCompound-constructor-contract-ICompoundTimelock- +:GovernorTimelockCompound-supportsInterface: pass:normal[xref:governance.adoc#GovernorTimelockCompound-supportsInterface-bytes4-[`GovernorTimelockCompound.supportsInterface`]] +:xref-GovernorTimelockCompound-supportsInterface-bytes4-: xref:governance.adoc#GovernorTimelockCompound-supportsInterface-bytes4- +:GovernorTimelockCompound-state: pass:normal[xref:governance.adoc#GovernorTimelockCompound-state-uint256-[`GovernorTimelockCompound.state`]] +:xref-GovernorTimelockCompound-state-uint256-: xref:governance.adoc#GovernorTimelockCompound-state-uint256- +:GovernorTimelockCompound-timelock: pass:normal[xref:governance.adoc#GovernorTimelockCompound-timelock--[`GovernorTimelockCompound.timelock`]] +:xref-GovernorTimelockCompound-timelock--: xref:governance.adoc#GovernorTimelockCompound-timelock-- +:GovernorTimelockCompound-proposalEta: pass:normal[xref:governance.adoc#GovernorTimelockCompound-proposalEta-uint256-[`GovernorTimelockCompound.proposalEta`]] +:xref-GovernorTimelockCompound-proposalEta-uint256-: xref:governance.adoc#GovernorTimelockCompound-proposalEta-uint256- +:GovernorTimelockCompound-queue: pass:normal[xref:governance.adoc#GovernorTimelockCompound-queue-address---uint256---bytes---bytes32-[`GovernorTimelockCompound.queue`]] +:xref-GovernorTimelockCompound-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockCompound-queue-address---uint256---bytes---bytes32- +:GovernorTimelockCompound-_execute: pass:normal[xref:governance.adoc#GovernorTimelockCompound-_execute-uint256-address---uint256---bytes---bytes32-[`GovernorTimelockCompound._execute`]] +:xref-GovernorTimelockCompound-_execute-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockCompound-_execute-uint256-address---uint256---bytes---bytes32- +:GovernorTimelockCompound-_cancel: pass:normal[xref:governance.adoc#GovernorTimelockCompound-_cancel-address---uint256---bytes---bytes32-[`GovernorTimelockCompound._cancel`]] +:xref-GovernorTimelockCompound-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockCompound-_cancel-address---uint256---bytes---bytes32- +:GovernorTimelockCompound-_executor: pass:normal[xref:governance.adoc#GovernorTimelockCompound-_executor--[`GovernorTimelockCompound._executor`]] +:xref-GovernorTimelockCompound-_executor--: xref:governance.adoc#GovernorTimelockCompound-_executor-- +:GovernorTimelockCompound-__acceptAdmin: pass:normal[xref:governance.adoc#GovernorTimelockCompound-__acceptAdmin--[`GovernorTimelockCompound.__acceptAdmin`]] +:xref-GovernorTimelockCompound-__acceptAdmin--: xref:governance.adoc#GovernorTimelockCompound-__acceptAdmin-- +:GovernorTimelockCompound-updateTimelock: pass:normal[xref:governance.adoc#GovernorTimelockCompound-updateTimelock-contract-ICompoundTimelock-[`GovernorTimelockCompound.updateTimelock`]] +:xref-GovernorTimelockCompound-updateTimelock-contract-ICompoundTimelock-: xref:governance.adoc#GovernorTimelockCompound-updateTimelock-contract-ICompoundTimelock- +:GovernorTimelockCompound-TimelockChange: pass:normal[xref:governance.adoc#GovernorTimelockCompound-TimelockChange-address-address-[`GovernorTimelockCompound.TimelockChange`]] +:xref-GovernorTimelockCompound-TimelockChange-address-address-: xref:governance.adoc#GovernorTimelockCompound-TimelockChange-address-address- +:GovernorTimelockCompound-ProposalTimelock: pass:normal[xref:governance.adoc#GovernorTimelockCompound-ProposalTimelock[`GovernorTimelockCompound.ProposalTimelock`]] +:xref-GovernorTimelockCompound-ProposalTimelock: xref:governance.adoc#GovernorTimelockCompound-ProposalTimelock +:GovernorTimelockControl: pass:normal[xref:governance.adoc#GovernorTimelockControl[`GovernorTimelockControl`]] +:xref-GovernorTimelockControl: xref:governance.adoc#GovernorTimelockControl +:GovernorTimelockControl-constructor: pass:normal[xref:governance.adoc#GovernorTimelockControl-constructor-contract-TimelockController-[`GovernorTimelockControl.constructor`]] +:xref-GovernorTimelockControl-constructor-contract-TimelockController-: xref:governance.adoc#GovernorTimelockControl-constructor-contract-TimelockController- +:GovernorTimelockControl-supportsInterface: pass:normal[xref:governance.adoc#GovernorTimelockControl-supportsInterface-bytes4-[`GovernorTimelockControl.supportsInterface`]] +:xref-GovernorTimelockControl-supportsInterface-bytes4-: xref:governance.adoc#GovernorTimelockControl-supportsInterface-bytes4- +:GovernorTimelockControl-state: pass:normal[xref:governance.adoc#GovernorTimelockControl-state-uint256-[`GovernorTimelockControl.state`]] +:xref-GovernorTimelockControl-state-uint256-: xref:governance.adoc#GovernorTimelockControl-state-uint256- +:GovernorTimelockControl-timelock: pass:normal[xref:governance.adoc#GovernorTimelockControl-timelock--[`GovernorTimelockControl.timelock`]] +:xref-GovernorTimelockControl-timelock--: xref:governance.adoc#GovernorTimelockControl-timelock-- +:GovernorTimelockControl-proposalEta: pass:normal[xref:governance.adoc#GovernorTimelockControl-proposalEta-uint256-[`GovernorTimelockControl.proposalEta`]] +:xref-GovernorTimelockControl-proposalEta-uint256-: xref:governance.adoc#GovernorTimelockControl-proposalEta-uint256- +:GovernorTimelockControl-queue: pass:normal[xref:governance.adoc#GovernorTimelockControl-queue-address---uint256---bytes---bytes32-[`GovernorTimelockControl.queue`]] +:xref-GovernorTimelockControl-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockControl-queue-address---uint256---bytes---bytes32- +:GovernorTimelockControl-_execute: pass:normal[xref:governance.adoc#GovernorTimelockControl-_execute-uint256-address---uint256---bytes---bytes32-[`GovernorTimelockControl._execute`]] +:xref-GovernorTimelockControl-_execute-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockControl-_execute-uint256-address---uint256---bytes---bytes32- +:GovernorTimelockControl-_cancel: pass:normal[xref:governance.adoc#GovernorTimelockControl-_cancel-address---uint256---bytes---bytes32-[`GovernorTimelockControl._cancel`]] +:xref-GovernorTimelockControl-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockControl-_cancel-address---uint256---bytes---bytes32- +:GovernorTimelockControl-_executor: pass:normal[xref:governance.adoc#GovernorTimelockControl-_executor--[`GovernorTimelockControl._executor`]] +:xref-GovernorTimelockControl-_executor--: xref:governance.adoc#GovernorTimelockControl-_executor-- +:GovernorTimelockControl-updateTimelock: pass:normal[xref:governance.adoc#GovernorTimelockControl-updateTimelock-contract-TimelockController-[`GovernorTimelockControl.updateTimelock`]] +:xref-GovernorTimelockControl-updateTimelock-contract-TimelockController-: xref:governance.adoc#GovernorTimelockControl-updateTimelock-contract-TimelockController- +:GovernorTimelockControl-TimelockChange: pass:normal[xref:governance.adoc#GovernorTimelockControl-TimelockChange-address-address-[`GovernorTimelockControl.TimelockChange`]] +:xref-GovernorTimelockControl-TimelockChange-address-address-: xref:governance.adoc#GovernorTimelockControl-TimelockChange-address-address- +:GovernorVotes: pass:normal[xref:governance.adoc#GovernorVotes[`GovernorVotes`]] +:xref-GovernorVotes: xref:governance.adoc#GovernorVotes +:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-IVotes[`GovernorVotes.token`]] +:xref-GovernorVotes-token-contract-IVotes: xref:governance.adoc#GovernorVotes-token-contract-IVotes +:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-IVotes-[`GovernorVotes.constructor`]] +:xref-GovernorVotes-constructor-contract-IVotes-: xref:governance.adoc#GovernorVotes-constructor-contract-IVotes- +:GovernorVotes-getVotes: pass:normal[xref:governance.adoc#GovernorVotes-getVotes-address-uint256-[`GovernorVotes.getVotes`]] +:xref-GovernorVotes-getVotes-address-uint256-: xref:governance.adoc#GovernorVotes-getVotes-address-uint256- +:GovernorVotesComp: pass:normal[xref:governance.adoc#GovernorVotesComp[`GovernorVotesComp`]] +:xref-GovernorVotesComp: xref:governance.adoc#GovernorVotesComp +:GovernorVotesComp-token: pass:normal[xref:governance.adoc#GovernorVotesComp-token-contract-ERC20VotesComp[`GovernorVotesComp.token`]] +:xref-GovernorVotesComp-token-contract-ERC20VotesComp: xref:governance.adoc#GovernorVotesComp-token-contract-ERC20VotesComp +:GovernorVotesComp-constructor: pass:normal[xref:governance.adoc#GovernorVotesComp-constructor-contract-ERC20VotesComp-[`GovernorVotesComp.constructor`]] +:xref-GovernorVotesComp-constructor-contract-ERC20VotesComp-: xref:governance.adoc#GovernorVotesComp-constructor-contract-ERC20VotesComp- +:GovernorVotesComp-getVotes: pass:normal[xref:governance.adoc#GovernorVotesComp-getVotes-address-uint256-[`GovernorVotesComp.getVotes`]] +:xref-GovernorVotesComp-getVotes-address-uint256-: xref:governance.adoc#GovernorVotesComp-getVotes-address-uint256- +:GovernorVotesQuorumFraction: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction[`GovernorVotesQuorumFraction`]] +:xref-GovernorVotesQuorumFraction: xref:governance.adoc#GovernorVotesQuorumFraction +:GovernorVotesQuorumFraction-constructor: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-constructor-uint256-[`GovernorVotesQuorumFraction.constructor`]] +:xref-GovernorVotesQuorumFraction-constructor-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-constructor-uint256- +:GovernorVotesQuorumFraction-quorumNumerator: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-quorumNumerator--[`GovernorVotesQuorumFraction.quorumNumerator`]] +:xref-GovernorVotesQuorumFraction-quorumNumerator--: xref:governance.adoc#GovernorVotesQuorumFraction-quorumNumerator-- +:GovernorVotesQuorumFraction-quorumDenominator: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-quorumDenominator--[`GovernorVotesQuorumFraction.quorumDenominator`]] +:xref-GovernorVotesQuorumFraction-quorumDenominator--: xref:governance.adoc#GovernorVotesQuorumFraction-quorumDenominator-- +:GovernorVotesQuorumFraction-quorum: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-quorum-uint256-[`GovernorVotesQuorumFraction.quorum`]] +:xref-GovernorVotesQuorumFraction-quorum-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-quorum-uint256- +:GovernorVotesQuorumFraction-updateQuorumNumerator: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-updateQuorumNumerator-uint256-[`GovernorVotesQuorumFraction.updateQuorumNumerator`]] +:xref-GovernorVotesQuorumFraction-updateQuorumNumerator-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-updateQuorumNumerator-uint256- +:GovernorVotesQuorumFraction-_updateQuorumNumerator: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-_updateQuorumNumerator-uint256-[`GovernorVotesQuorumFraction._updateQuorumNumerator`]] +:xref-GovernorVotesQuorumFraction-_updateQuorumNumerator-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-_updateQuorumNumerator-uint256- +:GovernorVotesQuorumFraction-QuorumNumeratorUpdated: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-QuorumNumeratorUpdated-uint256-uint256-[`GovernorVotesQuorumFraction.QuorumNumeratorUpdated`]] +:xref-GovernorVotesQuorumFraction-QuorumNumeratorUpdated-uint256-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-QuorumNumeratorUpdated-uint256-uint256- +:IGovernorTimelock: pass:normal[xref:governance.adoc#IGovernorTimelock[`IGovernorTimelock`]] +:xref-IGovernorTimelock: xref:governance.adoc#IGovernorTimelock +:IGovernorTimelock-timelock: pass:normal[xref:governance.adoc#IGovernorTimelock-timelock--[`IGovernorTimelock.timelock`]] +:xref-IGovernorTimelock-timelock--: xref:governance.adoc#IGovernorTimelock-timelock-- +:IGovernorTimelock-proposalEta: pass:normal[xref:governance.adoc#IGovernorTimelock-proposalEta-uint256-[`IGovernorTimelock.proposalEta`]] +:xref-IGovernorTimelock-proposalEta-uint256-: xref:governance.adoc#IGovernorTimelock-proposalEta-uint256- +:IGovernorTimelock-queue: pass:normal[xref:governance.adoc#IGovernorTimelock-queue-address---uint256---bytes---bytes32-[`IGovernorTimelock.queue`]] +:xref-IGovernorTimelock-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernorTimelock-queue-address---uint256---bytes---bytes32- +:IGovernorTimelock-ProposalQueued: pass:normal[xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256-[`IGovernorTimelock.ProposalQueued`]] +:xref-IGovernorTimelock-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256- +:IVotes: pass:normal[xref:governance.adoc#IVotes[`IVotes`]] +:xref-IVotes: xref:governance.adoc#IVotes +:IVotes-getVotes: pass:normal[xref:governance.adoc#IVotes-getVotes-address-[`IVotes.getVotes`]] +:xref-IVotes-getVotes-address-: xref:governance.adoc#IVotes-getVotes-address- +:IVotes-getPastVotes: pass:normal[xref:governance.adoc#IVotes-getPastVotes-address-uint256-[`IVotes.getPastVotes`]] +:xref-IVotes-getPastVotes-address-uint256-: xref:governance.adoc#IVotes-getPastVotes-address-uint256- +:IVotes-getPastTotalSupply: pass:normal[xref:governance.adoc#IVotes-getPastTotalSupply-uint256-[`IVotes.getPastTotalSupply`]] +:xref-IVotes-getPastTotalSupply-uint256-: xref:governance.adoc#IVotes-getPastTotalSupply-uint256- +:IVotes-delegates: pass:normal[xref:governance.adoc#IVotes-delegates-address-[`IVotes.delegates`]] +:xref-IVotes-delegates-address-: xref:governance.adoc#IVotes-delegates-address- +:IVotes-delegate: pass:normal[xref:governance.adoc#IVotes-delegate-address-[`IVotes.delegate`]] +:xref-IVotes-delegate-address-: xref:governance.adoc#IVotes-delegate-address- +:IVotes-delegateBySig: pass:normal[xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`IVotes.delegateBySig`]] +:xref-IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:IVotes-DelegateChanged: pass:normal[xref:governance.adoc#IVotes-DelegateChanged-address-address-address-[`IVotes.DelegateChanged`]] +:xref-IVotes-DelegateChanged-address-address-address-: xref:governance.adoc#IVotes-DelegateChanged-address-address-address- +:IVotes-DelegateVotesChanged: pass:normal[xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256-[`IVotes.DelegateVotesChanged`]] +:xref-IVotes-DelegateVotesChanged-address-uint256-uint256-: xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256- +:Votes: pass:normal[xref:governance.adoc#Votes[`Votes`]] +:xref-Votes: xref:governance.adoc#Votes +:Votes-getVotes: pass:normal[xref:governance.adoc#Votes-getVotes-address-[`Votes.getVotes`]] +:xref-Votes-getVotes-address-: xref:governance.adoc#Votes-getVotes-address- +:Votes-getPastVotes: pass:normal[xref:governance.adoc#Votes-getPastVotes-address-uint256-[`Votes.getPastVotes`]] +:xref-Votes-getPastVotes-address-uint256-: xref:governance.adoc#Votes-getPastVotes-address-uint256- +:Votes-getPastTotalSupply: pass:normal[xref:governance.adoc#Votes-getPastTotalSupply-uint256-[`Votes.getPastTotalSupply`]] +:xref-Votes-getPastTotalSupply-uint256-: xref:governance.adoc#Votes-getPastTotalSupply-uint256- +:Votes-_getTotalSupply: pass:normal[xref:governance.adoc#Votes-_getTotalSupply--[`Votes._getTotalSupply`]] +:xref-Votes-_getTotalSupply--: xref:governance.adoc#Votes-_getTotalSupply-- +:Votes-delegates: pass:normal[xref:governance.adoc#Votes-delegates-address-[`Votes.delegates`]] +:xref-Votes-delegates-address-: xref:governance.adoc#Votes-delegates-address- +:Votes-delegate: pass:normal[xref:governance.adoc#Votes-delegate-address-[`Votes.delegate`]] +:xref-Votes-delegate-address-: xref:governance.adoc#Votes-delegate-address- +:Votes-delegateBySig: pass:normal[xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`Votes.delegateBySig`]] +:xref-Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:Votes-_delegate: pass:normal[xref:governance.adoc#Votes-_delegate-address-address-[`Votes._delegate`]] +:xref-Votes-_delegate-address-address-: xref:governance.adoc#Votes-_delegate-address-address- +:Votes-_transferVotingUnits: pass:normal[xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256-[`Votes._transferVotingUnits`]] +:xref-Votes-_transferVotingUnits-address-address-uint256-: xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256- +:Votes-_useNonce: pass:normal[xref:governance.adoc#Votes-_useNonce-address-[`Votes._useNonce`]] +:xref-Votes-_useNonce-address-: xref:governance.adoc#Votes-_useNonce-address- +:Votes-nonces: pass:normal[xref:governance.adoc#Votes-nonces-address-[`Votes.nonces`]] +:xref-Votes-nonces-address-: xref:governance.adoc#Votes-nonces-address- +:Votes-DOMAIN_SEPARATOR: pass:normal[xref:governance.adoc#Votes-DOMAIN_SEPARATOR--[`Votes.DOMAIN_SEPARATOR`]] +:xref-Votes-DOMAIN_SEPARATOR--: xref:governance.adoc#Votes-DOMAIN_SEPARATOR-- +:Votes-_getVotingUnits: pass:normal[xref:governance.adoc#Votes-_getVotingUnits-address-[`Votes._getVotingUnits`]] +:xref-Votes-_getVotingUnits-address-: xref:governance.adoc#Votes-_getVotingUnits-address- +:IERC1271: pass:normal[xref:interfaces.adoc#IERC1271[`IERC1271`]] +:xref-IERC1271: xref:interfaces.adoc#IERC1271 +:IERC1271-isValidSignature: pass:normal[xref:interfaces.adoc#IERC1271-isValidSignature-bytes32-bytes-[`IERC1271.isValidSignature`]] +:xref-IERC1271-isValidSignature-bytes32-bytes-: xref:interfaces.adoc#IERC1271-isValidSignature-bytes32-bytes- +:IERC1363: pass:normal[xref:interfaces.adoc#IERC1363[`IERC1363`]] +:xref-IERC1363: xref:interfaces.adoc#IERC1363 +:IERC1363-transferAndCall: pass:normal[xref:interfaces.adoc#IERC1363-transferAndCall-address-uint256-[`IERC1363.transferAndCall`]] +:xref-IERC1363-transferAndCall-address-uint256-: xref:interfaces.adoc#IERC1363-transferAndCall-address-uint256- +:IERC1363-transferAndCall: pass:normal[xref:interfaces.adoc#IERC1363-transferAndCall-address-uint256-bytes-[`IERC1363.transferAndCall`]] +:xref-IERC1363-transferAndCall-address-uint256-bytes-: xref:interfaces.adoc#IERC1363-transferAndCall-address-uint256-bytes- +:IERC1363-transferFromAndCall: pass:normal[xref:interfaces.adoc#IERC1363-transferFromAndCall-address-address-uint256-[`IERC1363.transferFromAndCall`]] +:xref-IERC1363-transferFromAndCall-address-address-uint256-: xref:interfaces.adoc#IERC1363-transferFromAndCall-address-address-uint256- +:IERC1363-transferFromAndCall: pass:normal[xref:interfaces.adoc#IERC1363-transferFromAndCall-address-address-uint256-bytes-[`IERC1363.transferFromAndCall`]] +:xref-IERC1363-transferFromAndCall-address-address-uint256-bytes-: xref:interfaces.adoc#IERC1363-transferFromAndCall-address-address-uint256-bytes- +:IERC1363-approveAndCall: pass:normal[xref:interfaces.adoc#IERC1363-approveAndCall-address-uint256-[`IERC1363.approveAndCall`]] +:xref-IERC1363-approveAndCall-address-uint256-: xref:interfaces.adoc#IERC1363-approveAndCall-address-uint256- +:IERC1363-approveAndCall: pass:normal[xref:interfaces.adoc#IERC1363-approveAndCall-address-uint256-bytes-[`IERC1363.approveAndCall`]] +:xref-IERC1363-approveAndCall-address-uint256-bytes-: xref:interfaces.adoc#IERC1363-approveAndCall-address-uint256-bytes- +:IERC1363Receiver: pass:normal[xref:interfaces.adoc#IERC1363Receiver[`IERC1363Receiver`]] +:xref-IERC1363Receiver: xref:interfaces.adoc#IERC1363Receiver +:IERC1363Receiver-onTransferReceived: pass:normal[xref:interfaces.adoc#IERC1363Receiver-onTransferReceived-address-address-uint256-bytes-[`IERC1363Receiver.onTransferReceived`]] +:xref-IERC1363Receiver-onTransferReceived-address-address-uint256-bytes-: xref:interfaces.adoc#IERC1363Receiver-onTransferReceived-address-address-uint256-bytes- +:IERC1363Spender: pass:normal[xref:interfaces.adoc#IERC1363Spender[`IERC1363Spender`]] +:xref-IERC1363Spender: xref:interfaces.adoc#IERC1363Spender +:IERC1363Spender-onApprovalReceived: pass:normal[xref:interfaces.adoc#IERC1363Spender-onApprovalReceived-address-uint256-bytes-[`IERC1363Spender.onApprovalReceived`]] +:xref-IERC1363Spender-onApprovalReceived-address-uint256-bytes-: xref:interfaces.adoc#IERC1363Spender-onApprovalReceived-address-uint256-bytes- +:IERC2981: pass:normal[xref:interfaces.adoc#IERC2981[`IERC2981`]] +:xref-IERC2981: xref:interfaces.adoc#IERC2981 +:IERC2981-royaltyInfo: pass:normal[xref:interfaces.adoc#IERC2981-royaltyInfo-uint256-uint256-[`IERC2981.royaltyInfo`]] +:xref-IERC2981-royaltyInfo-uint256-uint256-: xref:interfaces.adoc#IERC2981-royaltyInfo-uint256-uint256- +:IERC3156FlashBorrower: pass:normal[xref:interfaces.adoc#IERC3156FlashBorrower[`IERC3156FlashBorrower`]] +:xref-IERC3156FlashBorrower: xref:interfaces.adoc#IERC3156FlashBorrower +:IERC3156FlashBorrower-onFlashLoan: pass:normal[xref:interfaces.adoc#IERC3156FlashBorrower-onFlashLoan-address-address-uint256-uint256-bytes-[`IERC3156FlashBorrower.onFlashLoan`]] +:xref-IERC3156FlashBorrower-onFlashLoan-address-address-uint256-uint256-bytes-: xref:interfaces.adoc#IERC3156FlashBorrower-onFlashLoan-address-address-uint256-uint256-bytes- +:IERC3156FlashLender: pass:normal[xref:interfaces.adoc#IERC3156FlashLender[`IERC3156FlashLender`]] +:xref-IERC3156FlashLender: xref:interfaces.adoc#IERC3156FlashLender +:IERC3156FlashLender-maxFlashLoan: pass:normal[xref:interfaces.adoc#IERC3156FlashLender-maxFlashLoan-address-[`IERC3156FlashLender.maxFlashLoan`]] +:xref-IERC3156FlashLender-maxFlashLoan-address-: xref:interfaces.adoc#IERC3156FlashLender-maxFlashLoan-address- +:IERC3156FlashLender-flashFee: pass:normal[xref:interfaces.adoc#IERC3156FlashLender-flashFee-address-uint256-[`IERC3156FlashLender.flashFee`]] +:xref-IERC3156FlashLender-flashFee-address-uint256-: xref:interfaces.adoc#IERC3156FlashLender-flashFee-address-uint256- +:IERC3156FlashLender-flashLoan: pass:normal[xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-[`IERC3156FlashLender.flashLoan`]] +:xref-IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-: xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes- +:IERC1822Proxiable: pass:normal[xref:interfaces.adoc#IERC1822Proxiable[`IERC1822Proxiable`]] +:xref-IERC1822Proxiable: xref:interfaces.adoc#IERC1822Proxiable +:IERC1822Proxiable-proxiableUUID: pass:normal[xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID--[`IERC1822Proxiable.proxiableUUID`]] +:xref-IERC1822Proxiable-proxiableUUID--: xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID-- +:IERC2612: pass:normal[xref:interfaces.adoc#IERC2612[`IERC2612`]] +:xref-IERC2612: xref:interfaces.adoc#IERC2612 +:ERC2771Context: pass:normal[xref:metatx.adoc#ERC2771Context[`ERC2771Context`]] +:xref-ERC2771Context: xref:metatx.adoc#ERC2771Context +:ERC2771Context-constructor: pass:normal[xref:metatx.adoc#ERC2771Context-constructor-address-[`ERC2771Context.constructor`]] +:xref-ERC2771Context-constructor-address-: xref:metatx.adoc#ERC2771Context-constructor-address- +:ERC2771Context-isTrustedForwarder: pass:normal[xref:metatx.adoc#ERC2771Context-isTrustedForwarder-address-[`ERC2771Context.isTrustedForwarder`]] +:xref-ERC2771Context-isTrustedForwarder-address-: xref:metatx.adoc#ERC2771Context-isTrustedForwarder-address- +:ERC2771Context-_msgSender: pass:normal[xref:metatx.adoc#ERC2771Context-_msgSender--[`ERC2771Context._msgSender`]] +:xref-ERC2771Context-_msgSender--: xref:metatx.adoc#ERC2771Context-_msgSender-- +:ERC2771Context-_msgData: pass:normal[xref:metatx.adoc#ERC2771Context-_msgData--[`ERC2771Context._msgData`]] +:xref-ERC2771Context-_msgData--: xref:metatx.adoc#ERC2771Context-_msgData-- +:MinimalForwarder: pass:normal[xref:metatx.adoc#MinimalForwarder[`MinimalForwarder`]] +:xref-MinimalForwarder: xref:metatx.adoc#MinimalForwarder +:MinimalForwarder-getNonce: pass:normal[xref:metatx.adoc#MinimalForwarder-getNonce-address-[`MinimalForwarder.getNonce`]] +:xref-MinimalForwarder-getNonce-address-: xref:metatx.adoc#MinimalForwarder-getNonce-address- +:MinimalForwarder-verify: pass:normal[xref:metatx.adoc#MinimalForwarder-verify-struct-MinimalForwarder-ForwardRequest-bytes-[`MinimalForwarder.verify`]] +:xref-MinimalForwarder-verify-struct-MinimalForwarder-ForwardRequest-bytes-: xref:metatx.adoc#MinimalForwarder-verify-struct-MinimalForwarder-ForwardRequest-bytes- +:MinimalForwarder-execute: pass:normal[xref:metatx.adoc#MinimalForwarder-execute-struct-MinimalForwarder-ForwardRequest-bytes-[`MinimalForwarder.execute`]] +:xref-MinimalForwarder-execute-struct-MinimalForwarder-ForwardRequest-bytes-: xref:metatx.adoc#MinimalForwarder-execute-struct-MinimalForwarder-ForwardRequest-bytes- +:MinimalForwarder-ForwardRequest: pass:normal[xref:metatx.adoc#MinimalForwarder-ForwardRequest[`MinimalForwarder.ForwardRequest`]] +:xref-MinimalForwarder-ForwardRequest: xref:metatx.adoc#MinimalForwarder-ForwardRequest +:Clones: pass:normal[xref:proxy.adoc#Clones[`Clones`]] +:xref-Clones: xref:proxy.adoc#Clones +:Clones-clone: pass:normal[xref:proxy.adoc#Clones-clone-address-[`Clones.clone`]] +:xref-Clones-clone-address-: xref:proxy.adoc#Clones-clone-address- +:Clones-cloneDeterministic: pass:normal[xref:proxy.adoc#Clones-cloneDeterministic-address-bytes32-[`Clones.cloneDeterministic`]] +:xref-Clones-cloneDeterministic-address-bytes32-: xref:proxy.adoc#Clones-cloneDeterministic-address-bytes32- +:Clones-predictDeterministicAddress: pass:normal[xref:proxy.adoc#Clones-predictDeterministicAddress-address-bytes32-address-[`Clones.predictDeterministicAddress`]] +:xref-Clones-predictDeterministicAddress-address-bytes32-address-: xref:proxy.adoc#Clones-predictDeterministicAddress-address-bytes32-address- +:Clones-predictDeterministicAddress: pass:normal[xref:proxy.adoc#Clones-predictDeterministicAddress-address-bytes32-[`Clones.predictDeterministicAddress`]] +:xref-Clones-predictDeterministicAddress-address-bytes32-: xref:proxy.adoc#Clones-predictDeterministicAddress-address-bytes32- +:ERC1967Proxy: pass:normal[xref:proxy.adoc#ERC1967Proxy[`ERC1967Proxy`]] +:xref-ERC1967Proxy: xref:proxy.adoc#ERC1967Proxy +:ERC1967Proxy-constructor: pass:normal[xref:proxy.adoc#ERC1967Proxy-constructor-address-bytes-[`ERC1967Proxy.constructor`]] +:xref-ERC1967Proxy-constructor-address-bytes-: xref:proxy.adoc#ERC1967Proxy-constructor-address-bytes- +:ERC1967Proxy-_implementation: pass:normal[xref:proxy.adoc#ERC1967Proxy-_implementation--[`ERC1967Proxy._implementation`]] +:xref-ERC1967Proxy-_implementation--: xref:proxy.adoc#ERC1967Proxy-_implementation-- +:ERC1967Upgrade: pass:normal[xref:proxy.adoc#ERC1967Upgrade[`ERC1967Upgrade`]] +:xref-ERC1967Upgrade: xref:proxy.adoc#ERC1967Upgrade +:ERC1967Upgrade-_IMPLEMENTATION_SLOT: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_IMPLEMENTATION_SLOT-bytes32[`ERC1967Upgrade._IMPLEMENTATION_SLOT`]] +:xref-ERC1967Upgrade-_IMPLEMENTATION_SLOT-bytes32: xref:proxy.adoc#ERC1967Upgrade-_IMPLEMENTATION_SLOT-bytes32 +:ERC1967Upgrade-_ADMIN_SLOT: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_ADMIN_SLOT-bytes32[`ERC1967Upgrade._ADMIN_SLOT`]] +:xref-ERC1967Upgrade-_ADMIN_SLOT-bytes32: xref:proxy.adoc#ERC1967Upgrade-_ADMIN_SLOT-bytes32 +:ERC1967Upgrade-_BEACON_SLOT: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_BEACON_SLOT-bytes32[`ERC1967Upgrade._BEACON_SLOT`]] +:xref-ERC1967Upgrade-_BEACON_SLOT-bytes32: xref:proxy.adoc#ERC1967Upgrade-_BEACON_SLOT-bytes32 +:ERC1967Upgrade-_getImplementation: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_getImplementation--[`ERC1967Upgrade._getImplementation`]] +:xref-ERC1967Upgrade-_getImplementation--: xref:proxy.adoc#ERC1967Upgrade-_getImplementation-- +:ERC1967Upgrade-_upgradeTo: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeTo-address-[`ERC1967Upgrade._upgradeTo`]] +:xref-ERC1967Upgrade-_upgradeTo-address-: xref:proxy.adoc#ERC1967Upgrade-_upgradeTo-address- +:ERC1967Upgrade-_upgradeToAndCall: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCall`]] +:xref-ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool- +:ERC1967Upgrade-_upgradeToAndCallUUPS: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallUUPS`]] +:xref-ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool- +:ERC1967Upgrade-_getAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_getAdmin--[`ERC1967Upgrade._getAdmin`]] +:xref-ERC1967Upgrade-_getAdmin--: xref:proxy.adoc#ERC1967Upgrade-_getAdmin-- +:ERC1967Upgrade-_changeAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_changeAdmin-address-[`ERC1967Upgrade._changeAdmin`]] +:xref-ERC1967Upgrade-_changeAdmin-address-: xref:proxy.adoc#ERC1967Upgrade-_changeAdmin-address- +:ERC1967Upgrade-_getBeacon: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_getBeacon--[`ERC1967Upgrade._getBeacon`]] +:xref-ERC1967Upgrade-_getBeacon--: xref:proxy.adoc#ERC1967Upgrade-_getBeacon-- +:ERC1967Upgrade-_upgradeBeaconToAndCall: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeBeaconToAndCall-address-bytes-bool-[`ERC1967Upgrade._upgradeBeaconToAndCall`]] +:xref-ERC1967Upgrade-_upgradeBeaconToAndCall-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeBeaconToAndCall-address-bytes-bool- +:ERC1967Upgrade-Upgraded: pass:normal[xref:proxy.adoc#ERC1967Upgrade-Upgraded-address-[`ERC1967Upgrade.Upgraded`]] +:xref-ERC1967Upgrade-Upgraded-address-: xref:proxy.adoc#ERC1967Upgrade-Upgraded-address- +:ERC1967Upgrade-AdminChanged: pass:normal[xref:proxy.adoc#ERC1967Upgrade-AdminChanged-address-address-[`ERC1967Upgrade.AdminChanged`]] +:xref-ERC1967Upgrade-AdminChanged-address-address-: xref:proxy.adoc#ERC1967Upgrade-AdminChanged-address-address- +:ERC1967Upgrade-BeaconUpgraded: pass:normal[xref:proxy.adoc#ERC1967Upgrade-BeaconUpgraded-address-[`ERC1967Upgrade.BeaconUpgraded`]] +:xref-ERC1967Upgrade-BeaconUpgraded-address-: xref:proxy.adoc#ERC1967Upgrade-BeaconUpgraded-address- +:Proxy: pass:normal[xref:proxy.adoc#Proxy[`Proxy`]] +:xref-Proxy: xref:proxy.adoc#Proxy +:Proxy-_delegate: pass:normal[xref:proxy.adoc#Proxy-_delegate-address-[`Proxy._delegate`]] +:xref-Proxy-_delegate-address-: xref:proxy.adoc#Proxy-_delegate-address- +:Proxy-_implementation: pass:normal[xref:proxy.adoc#Proxy-_implementation--[`Proxy._implementation`]] +:xref-Proxy-_implementation--: xref:proxy.adoc#Proxy-_implementation-- +:Proxy-_fallback: pass:normal[xref:proxy.adoc#Proxy-_fallback--[`Proxy._fallback`]] +:xref-Proxy-_fallback--: xref:proxy.adoc#Proxy-_fallback-- +:Proxy-fallback: pass:normal[xref:proxy.adoc#Proxy-fallback--[`Proxy.fallback`]] +:xref-Proxy-fallback--: xref:proxy.adoc#Proxy-fallback-- +:Proxy-receive: pass:normal[xref:proxy.adoc#Proxy-receive--[`Proxy.receive`]] +:xref-Proxy-receive--: xref:proxy.adoc#Proxy-receive-- +:Proxy-_beforeFallback: pass:normal[xref:proxy.adoc#Proxy-_beforeFallback--[`Proxy._beforeFallback`]] +:xref-Proxy-_beforeFallback--: xref:proxy.adoc#Proxy-_beforeFallback-- +:BeaconProxy: pass:normal[xref:proxy.adoc#BeaconProxy[`BeaconProxy`]] +:xref-BeaconProxy: xref:proxy.adoc#BeaconProxy +:BeaconProxy-constructor: pass:normal[xref:proxy.adoc#BeaconProxy-constructor-address-bytes-[`BeaconProxy.constructor`]] +:xref-BeaconProxy-constructor-address-bytes-: xref:proxy.adoc#BeaconProxy-constructor-address-bytes- +:BeaconProxy-_beacon: pass:normal[xref:proxy.adoc#BeaconProxy-_beacon--[`BeaconProxy._beacon`]] +:xref-BeaconProxy-_beacon--: xref:proxy.adoc#BeaconProxy-_beacon-- +:BeaconProxy-_implementation: pass:normal[xref:proxy.adoc#BeaconProxy-_implementation--[`BeaconProxy._implementation`]] +:xref-BeaconProxy-_implementation--: xref:proxy.adoc#BeaconProxy-_implementation-- +:BeaconProxy-_setBeacon: pass:normal[xref:proxy.adoc#BeaconProxy-_setBeacon-address-bytes-[`BeaconProxy._setBeacon`]] +:xref-BeaconProxy-_setBeacon-address-bytes-: xref:proxy.adoc#BeaconProxy-_setBeacon-address-bytes- +:IBeacon: pass:normal[xref:proxy.adoc#IBeacon[`IBeacon`]] +:xref-IBeacon: xref:proxy.adoc#IBeacon +:IBeacon-implementation: pass:normal[xref:proxy.adoc#IBeacon-implementation--[`IBeacon.implementation`]] +:xref-IBeacon-implementation--: xref:proxy.adoc#IBeacon-implementation-- +:UpgradeableBeacon: pass:normal[xref:proxy.adoc#UpgradeableBeacon[`UpgradeableBeacon`]] +:xref-UpgradeableBeacon: xref:proxy.adoc#UpgradeableBeacon +:UpgradeableBeacon-constructor: pass:normal[xref:proxy.adoc#UpgradeableBeacon-constructor-address-[`UpgradeableBeacon.constructor`]] +:xref-UpgradeableBeacon-constructor-address-: xref:proxy.adoc#UpgradeableBeacon-constructor-address- +:UpgradeableBeacon-implementation: pass:normal[xref:proxy.adoc#UpgradeableBeacon-implementation--[`UpgradeableBeacon.implementation`]] +:xref-UpgradeableBeacon-implementation--: xref:proxy.adoc#UpgradeableBeacon-implementation-- +:UpgradeableBeacon-upgradeTo: pass:normal[xref:proxy.adoc#UpgradeableBeacon-upgradeTo-address-[`UpgradeableBeacon.upgradeTo`]] +:xref-UpgradeableBeacon-upgradeTo-address-: xref:proxy.adoc#UpgradeableBeacon-upgradeTo-address- +:UpgradeableBeacon-Upgraded: pass:normal[xref:proxy.adoc#UpgradeableBeacon-Upgraded-address-[`UpgradeableBeacon.Upgraded`]] +:xref-UpgradeableBeacon-Upgraded-address-: xref:proxy.adoc#UpgradeableBeacon-Upgraded-address- +:ProxyAdmin: pass:normal[xref:proxy.adoc#ProxyAdmin[`ProxyAdmin`]] +:xref-ProxyAdmin: xref:proxy.adoc#ProxyAdmin +:ProxyAdmin-getProxyImplementation: pass:normal[xref:proxy.adoc#ProxyAdmin-getProxyImplementation-contract-TransparentUpgradeableProxy-[`ProxyAdmin.getProxyImplementation`]] +:xref-ProxyAdmin-getProxyImplementation-contract-TransparentUpgradeableProxy-: xref:proxy.adoc#ProxyAdmin-getProxyImplementation-contract-TransparentUpgradeableProxy- +:ProxyAdmin-getProxyAdmin: pass:normal[xref:proxy.adoc#ProxyAdmin-getProxyAdmin-contract-TransparentUpgradeableProxy-[`ProxyAdmin.getProxyAdmin`]] +:xref-ProxyAdmin-getProxyAdmin-contract-TransparentUpgradeableProxy-: xref:proxy.adoc#ProxyAdmin-getProxyAdmin-contract-TransparentUpgradeableProxy- +:ProxyAdmin-changeProxyAdmin: pass:normal[xref:proxy.adoc#ProxyAdmin-changeProxyAdmin-contract-TransparentUpgradeableProxy-address-[`ProxyAdmin.changeProxyAdmin`]] +:xref-ProxyAdmin-changeProxyAdmin-contract-TransparentUpgradeableProxy-address-: xref:proxy.adoc#ProxyAdmin-changeProxyAdmin-contract-TransparentUpgradeableProxy-address- +:ProxyAdmin-upgrade: pass:normal[xref:proxy.adoc#ProxyAdmin-upgrade-contract-TransparentUpgradeableProxy-address-[`ProxyAdmin.upgrade`]] +:xref-ProxyAdmin-upgrade-contract-TransparentUpgradeableProxy-address-: xref:proxy.adoc#ProxyAdmin-upgrade-contract-TransparentUpgradeableProxy-address- +:ProxyAdmin-upgradeAndCall: pass:normal[xref:proxy.adoc#ProxyAdmin-upgradeAndCall-contract-TransparentUpgradeableProxy-address-bytes-[`ProxyAdmin.upgradeAndCall`]] +:xref-ProxyAdmin-upgradeAndCall-contract-TransparentUpgradeableProxy-address-bytes-: xref:proxy.adoc#ProxyAdmin-upgradeAndCall-contract-TransparentUpgradeableProxy-address-bytes- +:TransparentUpgradeableProxy: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy[`TransparentUpgradeableProxy`]] +:xref-TransparentUpgradeableProxy: xref:proxy.adoc#TransparentUpgradeableProxy +:TransparentUpgradeableProxy-ifAdmin: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-ifAdmin--[`TransparentUpgradeableProxy.ifAdmin`]] +:xref-TransparentUpgradeableProxy-ifAdmin--: xref:proxy.adoc#TransparentUpgradeableProxy-ifAdmin-- +:TransparentUpgradeableProxy-constructor: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-constructor-address-address-bytes-[`TransparentUpgradeableProxy.constructor`]] +:xref-TransparentUpgradeableProxy-constructor-address-address-bytes-: xref:proxy.adoc#TransparentUpgradeableProxy-constructor-address-address-bytes- +:TransparentUpgradeableProxy-admin: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-admin--[`TransparentUpgradeableProxy.admin`]] +:xref-TransparentUpgradeableProxy-admin--: xref:proxy.adoc#TransparentUpgradeableProxy-admin-- +:TransparentUpgradeableProxy-implementation: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-implementation--[`TransparentUpgradeableProxy.implementation`]] +:xref-TransparentUpgradeableProxy-implementation--: xref:proxy.adoc#TransparentUpgradeableProxy-implementation-- +:TransparentUpgradeableProxy-changeAdmin: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-changeAdmin-address-[`TransparentUpgradeableProxy.changeAdmin`]] +:xref-TransparentUpgradeableProxy-changeAdmin-address-: xref:proxy.adoc#TransparentUpgradeableProxy-changeAdmin-address- +:TransparentUpgradeableProxy-upgradeTo: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-upgradeTo-address-[`TransparentUpgradeableProxy.upgradeTo`]] +:xref-TransparentUpgradeableProxy-upgradeTo-address-: xref:proxy.adoc#TransparentUpgradeableProxy-upgradeTo-address- +:TransparentUpgradeableProxy-upgradeToAndCall: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-upgradeToAndCall-address-bytes-[`TransparentUpgradeableProxy.upgradeToAndCall`]] +:xref-TransparentUpgradeableProxy-upgradeToAndCall-address-bytes-: xref:proxy.adoc#TransparentUpgradeableProxy-upgradeToAndCall-address-bytes- +:TransparentUpgradeableProxy-_admin: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-_admin--[`TransparentUpgradeableProxy._admin`]] +:xref-TransparentUpgradeableProxy-_admin--: xref:proxy.adoc#TransparentUpgradeableProxy-_admin-- +:TransparentUpgradeableProxy-_beforeFallback: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-_beforeFallback--[`TransparentUpgradeableProxy._beforeFallback`]] +:xref-TransparentUpgradeableProxy-_beforeFallback--: xref:proxy.adoc#TransparentUpgradeableProxy-_beforeFallback-- +:Initializable: pass:normal[xref:proxy.adoc#Initializable[`Initializable`]] +:xref-Initializable: xref:proxy.adoc#Initializable +:Initializable-initializer: pass:normal[xref:proxy.adoc#Initializable-initializer--[`Initializable.initializer`]] +:xref-Initializable-initializer--: xref:proxy.adoc#Initializable-initializer-- +:Initializable-onlyInitializing: pass:normal[xref:proxy.adoc#Initializable-onlyInitializing--[`Initializable.onlyInitializing`]] +:xref-Initializable-onlyInitializing--: xref:proxy.adoc#Initializable-onlyInitializing-- +:UUPSUpgradeable: pass:normal[xref:proxy.adoc#UUPSUpgradeable[`UUPSUpgradeable`]] +:xref-UUPSUpgradeable: xref:proxy.adoc#UUPSUpgradeable +:UUPSUpgradeable-onlyProxy: pass:normal[xref:proxy.adoc#UUPSUpgradeable-onlyProxy--[`UUPSUpgradeable.onlyProxy`]] +:xref-UUPSUpgradeable-onlyProxy--: xref:proxy.adoc#UUPSUpgradeable-onlyProxy-- +:UUPSUpgradeable-notDelegated: pass:normal[xref:proxy.adoc#UUPSUpgradeable-notDelegated--[`UUPSUpgradeable.notDelegated`]] +:xref-UUPSUpgradeable-notDelegated--: xref:proxy.adoc#UUPSUpgradeable-notDelegated-- +:UUPSUpgradeable-proxiableUUID: pass:normal[xref:proxy.adoc#UUPSUpgradeable-proxiableUUID--[`UUPSUpgradeable.proxiableUUID`]] +:xref-UUPSUpgradeable-proxiableUUID--: xref:proxy.adoc#UUPSUpgradeable-proxiableUUID-- +:UUPSUpgradeable-upgradeTo: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address-[`UUPSUpgradeable.upgradeTo`]] +:xref-UUPSUpgradeable-upgradeTo-address-: xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address- +:UUPSUpgradeable-upgradeToAndCall: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeToAndCall-address-bytes-[`UUPSUpgradeable.upgradeToAndCall`]] +:xref-UUPSUpgradeable-upgradeToAndCall-address-bytes-: xref:proxy.adoc#UUPSUpgradeable-upgradeToAndCall-address-bytes- +:UUPSUpgradeable-_authorizeUpgrade: pass:normal[xref:proxy.adoc#UUPSUpgradeable-_authorizeUpgrade-address-[`UUPSUpgradeable._authorizeUpgrade`]] +:xref-UUPSUpgradeable-_authorizeUpgrade-address-: xref:proxy.adoc#UUPSUpgradeable-_authorizeUpgrade-address- +:Pausable: pass:normal[xref:security.adoc#Pausable[`Pausable`]] +:xref-Pausable: xref:security.adoc#Pausable +:Pausable-whenNotPaused: pass:normal[xref:security.adoc#Pausable-whenNotPaused--[`Pausable.whenNotPaused`]] +:xref-Pausable-whenNotPaused--: xref:security.adoc#Pausable-whenNotPaused-- +:Pausable-whenPaused: pass:normal[xref:security.adoc#Pausable-whenPaused--[`Pausable.whenPaused`]] +:xref-Pausable-whenPaused--: xref:security.adoc#Pausable-whenPaused-- +:Pausable-constructor: pass:normal[xref:security.adoc#Pausable-constructor--[`Pausable.constructor`]] +:xref-Pausable-constructor--: xref:security.adoc#Pausable-constructor-- +:Pausable-paused: pass:normal[xref:security.adoc#Pausable-paused--[`Pausable.paused`]] +:xref-Pausable-paused--: xref:security.adoc#Pausable-paused-- +:Pausable-_pause: pass:normal[xref:security.adoc#Pausable-_pause--[`Pausable._pause`]] +:xref-Pausable-_pause--: xref:security.adoc#Pausable-_pause-- +:Pausable-_unpause: pass:normal[xref:security.adoc#Pausable-_unpause--[`Pausable._unpause`]] +:xref-Pausable-_unpause--: xref:security.adoc#Pausable-_unpause-- +:Pausable-Paused: pass:normal[xref:security.adoc#Pausable-Paused-address-[`Pausable.Paused`]] +:xref-Pausable-Paused-address-: xref:security.adoc#Pausable-Paused-address- +:Pausable-Unpaused: pass:normal[xref:security.adoc#Pausable-Unpaused-address-[`Pausable.Unpaused`]] +:xref-Pausable-Unpaused-address-: xref:security.adoc#Pausable-Unpaused-address- +:PullPayment: pass:normal[xref:security.adoc#PullPayment[`PullPayment`]] +:xref-PullPayment: xref:security.adoc#PullPayment +:PullPayment-constructor: pass:normal[xref:security.adoc#PullPayment-constructor--[`PullPayment.constructor`]] +:xref-PullPayment-constructor--: xref:security.adoc#PullPayment-constructor-- +:PullPayment-withdrawPayments: pass:normal[xref:security.adoc#PullPayment-withdrawPayments-address-payable-[`PullPayment.withdrawPayments`]] +:xref-PullPayment-withdrawPayments-address-payable-: xref:security.adoc#PullPayment-withdrawPayments-address-payable- +:PullPayment-payments: pass:normal[xref:security.adoc#PullPayment-payments-address-[`PullPayment.payments`]] +:xref-PullPayment-payments-address-: xref:security.adoc#PullPayment-payments-address- +:PullPayment-_asyncTransfer: pass:normal[xref:security.adoc#PullPayment-_asyncTransfer-address-uint256-[`PullPayment._asyncTransfer`]] +:xref-PullPayment-_asyncTransfer-address-uint256-: xref:security.adoc#PullPayment-_asyncTransfer-address-uint256- +:ReentrancyGuard: pass:normal[xref:security.adoc#ReentrancyGuard[`ReentrancyGuard`]] +:xref-ReentrancyGuard: xref:security.adoc#ReentrancyGuard +:ReentrancyGuard-nonReentrant: pass:normal[xref:security.adoc#ReentrancyGuard-nonReentrant--[`ReentrancyGuard.nonReentrant`]] +:xref-ReentrancyGuard-nonReentrant--: xref:security.adoc#ReentrancyGuard-nonReentrant-- +:ReentrancyGuard-constructor: pass:normal[xref:security.adoc#ReentrancyGuard-constructor--[`ReentrancyGuard.constructor`]] +:xref-ReentrancyGuard-constructor--: xref:security.adoc#ReentrancyGuard-constructor-- +:Address: pass:normal[xref:utils.adoc#Address[`Address`]] +:xref-Address: xref:utils.adoc#Address +:Address-isContract: pass:normal[xref:utils.adoc#Address-isContract-address-[`Address.isContract`]] +:xref-Address-isContract-address-: xref:utils.adoc#Address-isContract-address- +:Address-sendValue: pass:normal[xref:utils.adoc#Address-sendValue-address-payable-uint256-[`Address.sendValue`]] +:xref-Address-sendValue-address-payable-uint256-: xref:utils.adoc#Address-sendValue-address-payable-uint256- +:Address-functionCall: pass:normal[xref:utils.adoc#Address-functionCall-address-bytes-[`Address.functionCall`]] +:xref-Address-functionCall-address-bytes-: xref:utils.adoc#Address-functionCall-address-bytes- +:Address-functionCall: pass:normal[xref:utils.adoc#Address-functionCall-address-bytes-string-[`Address.functionCall`]] +:xref-Address-functionCall-address-bytes-string-: xref:utils.adoc#Address-functionCall-address-bytes-string- +:Address-functionCallWithValue: pass:normal[xref:utils.adoc#Address-functionCallWithValue-address-bytes-uint256-[`Address.functionCallWithValue`]] +:xref-Address-functionCallWithValue-address-bytes-uint256-: xref:utils.adoc#Address-functionCallWithValue-address-bytes-uint256- +:Address-functionCallWithValue: pass:normal[xref:utils.adoc#Address-functionCallWithValue-address-bytes-uint256-string-[`Address.functionCallWithValue`]] +:xref-Address-functionCallWithValue-address-bytes-uint256-string-: xref:utils.adoc#Address-functionCallWithValue-address-bytes-uint256-string- +:Address-functionStaticCall: pass:normal[xref:utils.adoc#Address-functionStaticCall-address-bytes-[`Address.functionStaticCall`]] +:xref-Address-functionStaticCall-address-bytes-: xref:utils.adoc#Address-functionStaticCall-address-bytes- +:Address-functionStaticCall: pass:normal[xref:utils.adoc#Address-functionStaticCall-address-bytes-string-[`Address.functionStaticCall`]] +:xref-Address-functionStaticCall-address-bytes-string-: xref:utils.adoc#Address-functionStaticCall-address-bytes-string- +:Address-functionDelegateCall: pass:normal[xref:utils.adoc#Address-functionDelegateCall-address-bytes-[`Address.functionDelegateCall`]] +:xref-Address-functionDelegateCall-address-bytes-: xref:utils.adoc#Address-functionDelegateCall-address-bytes- +:Address-functionDelegateCall: pass:normal[xref:utils.adoc#Address-functionDelegateCall-address-bytes-string-[`Address.functionDelegateCall`]] +:xref-Address-functionDelegateCall-address-bytes-string-: xref:utils.adoc#Address-functionDelegateCall-address-bytes-string- +:Address-verifyCallResult: pass:normal[xref:utils.adoc#Address-verifyCallResult-bool-bytes-string-[`Address.verifyCallResult`]] +:xref-Address-verifyCallResult-bool-bytes-string-: xref:utils.adoc#Address-verifyCallResult-bool-bytes-string- +:Arrays: pass:normal[xref:utils.adoc#Arrays[`Arrays`]] +:xref-Arrays: xref:utils.adoc#Arrays +:Arrays-findUpperBound: pass:normal[xref:utils.adoc#Arrays-findUpperBound-uint256---uint256-[`Arrays.findUpperBound`]] +:xref-Arrays-findUpperBound-uint256---uint256-: xref:utils.adoc#Arrays-findUpperBound-uint256---uint256- +:Base64: pass:normal[xref:utils.adoc#Base64[`Base64`]] +:xref-Base64: xref:utils.adoc#Base64 +:Base64-_TABLE: pass:normal[xref:utils.adoc#Base64-_TABLE-string[`Base64._TABLE`]] +:xref-Base64-_TABLE-string: xref:utils.adoc#Base64-_TABLE-string +:Base64-encode: pass:normal[xref:utils.adoc#Base64-encode-bytes-[`Base64.encode`]] +:xref-Base64-encode-bytes-: xref:utils.adoc#Base64-encode-bytes- +:Checkpoints: pass:normal[xref:utils.adoc#Checkpoints[`Checkpoints`]] +:xref-Checkpoints: xref:utils.adoc#Checkpoints +:Checkpoints-latest: pass:normal[xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History-[`Checkpoints.latest`]] +:xref-Checkpoints-latest-struct-Checkpoints-History-: xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History- +:Checkpoints-getAtBlock: pass:normal[xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-[`Checkpoints.getAtBlock`]] +:xref-Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256- +:Checkpoints-Checkpoint: pass:normal[xref:utils.adoc#Checkpoints-Checkpoint[`Checkpoints.Checkpoint`]] +:xref-Checkpoints-Checkpoint: xref:utils.adoc#Checkpoints-Checkpoint +:Checkpoints-History: pass:normal[xref:utils.adoc#Checkpoints-History[`Checkpoints.History`]] +:xref-Checkpoints-History: xref:utils.adoc#Checkpoints-History +:Context: pass:normal[xref:utils.adoc#Context[`Context`]] +:xref-Context: xref:utils.adoc#Context +:Context-_msgSender: pass:normal[xref:utils.adoc#Context-_msgSender--[`Context._msgSender`]] +:xref-Context-_msgSender--: xref:utils.adoc#Context-_msgSender-- +:Context-_msgData: pass:normal[xref:utils.adoc#Context-_msgData--[`Context._msgData`]] +:xref-Context-_msgData--: xref:utils.adoc#Context-_msgData-- +:Counters: pass:normal[xref:utils.adoc#Counters[`Counters`]] +:xref-Counters: xref:utils.adoc#Counters +:Counters-current: pass:normal[xref:utils.adoc#Counters-current-struct-Counters-Counter-[`Counters.current`]] +:xref-Counters-current-struct-Counters-Counter-: xref:utils.adoc#Counters-current-struct-Counters-Counter- +:Counters-increment: pass:normal[xref:utils.adoc#Counters-increment-struct-Counters-Counter-[`Counters.increment`]] +:xref-Counters-increment-struct-Counters-Counter-: xref:utils.adoc#Counters-increment-struct-Counters-Counter- +:Counters-decrement: pass:normal[xref:utils.adoc#Counters-decrement-struct-Counters-Counter-[`Counters.decrement`]] +:xref-Counters-decrement-struct-Counters-Counter-: xref:utils.adoc#Counters-decrement-struct-Counters-Counter- +:Counters-reset: pass:normal[xref:utils.adoc#Counters-reset-struct-Counters-Counter-[`Counters.reset`]] +:xref-Counters-reset-struct-Counters-Counter-: xref:utils.adoc#Counters-reset-struct-Counters-Counter- +:Counters-Counter: pass:normal[xref:utils.adoc#Counters-Counter[`Counters.Counter`]] +:xref-Counters-Counter: xref:utils.adoc#Counters-Counter +:Create2: pass:normal[xref:utils.adoc#Create2[`Create2`]] +:xref-Create2: xref:utils.adoc#Create2 +:Create2-deploy: pass:normal[xref:utils.adoc#Create2-deploy-uint256-bytes32-bytes-[`Create2.deploy`]] +:xref-Create2-deploy-uint256-bytes32-bytes-: xref:utils.adoc#Create2-deploy-uint256-bytes32-bytes- +:Create2-computeAddress: pass:normal[xref:utils.adoc#Create2-computeAddress-bytes32-bytes32-[`Create2.computeAddress`]] +:xref-Create2-computeAddress-bytes32-bytes32-: xref:utils.adoc#Create2-computeAddress-bytes32-bytes32- +:Create2-computeAddress: pass:normal[xref:utils.adoc#Create2-computeAddress-bytes32-bytes32-address-[`Create2.computeAddress`]] +:xref-Create2-computeAddress-bytes32-bytes32-address-: xref:utils.adoc#Create2-computeAddress-bytes32-bytes32-address- +:Multicall: pass:normal[xref:utils.adoc#Multicall[`Multicall`]] +:xref-Multicall: xref:utils.adoc#Multicall +:Multicall-multicall: pass:normal[xref:utils.adoc#Multicall-multicall-bytes---[`Multicall.multicall`]] +:xref-Multicall-multicall-bytes---: xref:utils.adoc#Multicall-multicall-bytes--- +:StorageSlot: pass:normal[xref:utils.adoc#StorageSlot[`StorageSlot`]] +:xref-StorageSlot: xref:utils.adoc#StorageSlot +:StorageSlot-getAddressSlot: pass:normal[xref:utils.adoc#StorageSlot-getAddressSlot-bytes32-[`StorageSlot.getAddressSlot`]] +:xref-StorageSlot-getAddressSlot-bytes32-: xref:utils.adoc#StorageSlot-getAddressSlot-bytes32- +:StorageSlot-getBooleanSlot: pass:normal[xref:utils.adoc#StorageSlot-getBooleanSlot-bytes32-[`StorageSlot.getBooleanSlot`]] +:xref-StorageSlot-getBooleanSlot-bytes32-: xref:utils.adoc#StorageSlot-getBooleanSlot-bytes32- +:StorageSlot-getBytes32Slot: pass:normal[xref:utils.adoc#StorageSlot-getBytes32Slot-bytes32-[`StorageSlot.getBytes32Slot`]] +:xref-StorageSlot-getBytes32Slot-bytes32-: xref:utils.adoc#StorageSlot-getBytes32Slot-bytes32- +:StorageSlot-getUint256Slot: pass:normal[xref:utils.adoc#StorageSlot-getUint256Slot-bytes32-[`StorageSlot.getUint256Slot`]] +:xref-StorageSlot-getUint256Slot-bytes32-: xref:utils.adoc#StorageSlot-getUint256Slot-bytes32- +:StorageSlot-AddressSlot: pass:normal[xref:utils.adoc#StorageSlot-AddressSlot[`StorageSlot.AddressSlot`]] +:xref-StorageSlot-AddressSlot: xref:utils.adoc#StorageSlot-AddressSlot +:StorageSlot-BooleanSlot: pass:normal[xref:utils.adoc#StorageSlot-BooleanSlot[`StorageSlot.BooleanSlot`]] +:xref-StorageSlot-BooleanSlot: xref:utils.adoc#StorageSlot-BooleanSlot +:StorageSlot-Bytes32Slot: pass:normal[xref:utils.adoc#StorageSlot-Bytes32Slot[`StorageSlot.Bytes32Slot`]] +:xref-StorageSlot-Bytes32Slot: xref:utils.adoc#StorageSlot-Bytes32Slot +:StorageSlot-Uint256Slot: pass:normal[xref:utils.adoc#StorageSlot-Uint256Slot[`StorageSlot.Uint256Slot`]] +:xref-StorageSlot-Uint256Slot: xref:utils.adoc#StorageSlot-Uint256Slot +:Strings: pass:normal[xref:utils.adoc#Strings[`Strings`]] +:xref-Strings: xref:utils.adoc#Strings +:Strings-toString: pass:normal[xref:utils.adoc#Strings-toString-uint256-[`Strings.toString`]] +:xref-Strings-toString-uint256-: xref:utils.adoc#Strings-toString-uint256- +:Strings-toHexString: pass:normal[xref:utils.adoc#Strings-toHexString-uint256-[`Strings.toHexString`]] +:xref-Strings-toHexString-uint256-: xref:utils.adoc#Strings-toHexString-uint256- +:Strings-toHexString: pass:normal[xref:utils.adoc#Strings-toHexString-uint256-uint256-[`Strings.toHexString`]] +:xref-Strings-toHexString-uint256-uint256-: xref:utils.adoc#Strings-toHexString-uint256-uint256- +:Timers: pass:normal[xref:utils.adoc#Timers[`Timers`]] +:xref-Timers: xref:utils.adoc#Timers +:Timers-getDeadline: pass:normal[xref:utils.adoc#Timers-getDeadline-struct-Timers-Timestamp-[`Timers.getDeadline`]] +:xref-Timers-getDeadline-struct-Timers-Timestamp-: xref:utils.adoc#Timers-getDeadline-struct-Timers-Timestamp- +:Timers-setDeadline: pass:normal[xref:utils.adoc#Timers-setDeadline-struct-Timers-Timestamp-uint64-[`Timers.setDeadline`]] +:xref-Timers-setDeadline-struct-Timers-Timestamp-uint64-: xref:utils.adoc#Timers-setDeadline-struct-Timers-Timestamp-uint64- +:Timers-reset: pass:normal[xref:utils.adoc#Timers-reset-struct-Timers-Timestamp-[`Timers.reset`]] +:xref-Timers-reset-struct-Timers-Timestamp-: xref:utils.adoc#Timers-reset-struct-Timers-Timestamp- +:Timers-isUnset: pass:normal[xref:utils.adoc#Timers-isUnset-struct-Timers-Timestamp-[`Timers.isUnset`]] +:xref-Timers-isUnset-struct-Timers-Timestamp-: xref:utils.adoc#Timers-isUnset-struct-Timers-Timestamp- +:Timers-isStarted: pass:normal[xref:utils.adoc#Timers-isStarted-struct-Timers-Timestamp-[`Timers.isStarted`]] +:xref-Timers-isStarted-struct-Timers-Timestamp-: xref:utils.adoc#Timers-isStarted-struct-Timers-Timestamp- +:Timers-isPending: pass:normal[xref:utils.adoc#Timers-isPending-struct-Timers-Timestamp-[`Timers.isPending`]] +:xref-Timers-isPending-struct-Timers-Timestamp-: xref:utils.adoc#Timers-isPending-struct-Timers-Timestamp- +:Timers-isExpired: pass:normal[xref:utils.adoc#Timers-isExpired-struct-Timers-Timestamp-[`Timers.isExpired`]] +:xref-Timers-isExpired-struct-Timers-Timestamp-: xref:utils.adoc#Timers-isExpired-struct-Timers-Timestamp- +:Timers-getDeadline: pass:normal[xref:utils.adoc#Timers-getDeadline-struct-Timers-BlockNumber-[`Timers.getDeadline`]] +:xref-Timers-getDeadline-struct-Timers-BlockNumber-: xref:utils.adoc#Timers-getDeadline-struct-Timers-BlockNumber- +:Timers-setDeadline: pass:normal[xref:utils.adoc#Timers-setDeadline-struct-Timers-BlockNumber-uint64-[`Timers.setDeadline`]] +:xref-Timers-setDeadline-struct-Timers-BlockNumber-uint64-: xref:utils.adoc#Timers-setDeadline-struct-Timers-BlockNumber-uint64- +:Timers-reset: pass:normal[xref:utils.adoc#Timers-reset-struct-Timers-BlockNumber-[`Timers.reset`]] +:xref-Timers-reset-struct-Timers-BlockNumber-: xref:utils.adoc#Timers-reset-struct-Timers-BlockNumber- +:Timers-isUnset: pass:normal[xref:utils.adoc#Timers-isUnset-struct-Timers-BlockNumber-[`Timers.isUnset`]] +:xref-Timers-isUnset-struct-Timers-BlockNumber-: xref:utils.adoc#Timers-isUnset-struct-Timers-BlockNumber- +:Timers-isStarted: pass:normal[xref:utils.adoc#Timers-isStarted-struct-Timers-BlockNumber-[`Timers.isStarted`]] +:xref-Timers-isStarted-struct-Timers-BlockNumber-: xref:utils.adoc#Timers-isStarted-struct-Timers-BlockNumber- +:Timers-isPending: pass:normal[xref:utils.adoc#Timers-isPending-struct-Timers-BlockNumber-[`Timers.isPending`]] +:xref-Timers-isPending-struct-Timers-BlockNumber-: xref:utils.adoc#Timers-isPending-struct-Timers-BlockNumber- +:Timers-isExpired: pass:normal[xref:utils.adoc#Timers-isExpired-struct-Timers-BlockNumber-[`Timers.isExpired`]] +:xref-Timers-isExpired-struct-Timers-BlockNumber-: xref:utils.adoc#Timers-isExpired-struct-Timers-BlockNumber- +:Timers-Timestamp: pass:normal[xref:utils.adoc#Timers-Timestamp[`Timers.Timestamp`]] +:xref-Timers-Timestamp: xref:utils.adoc#Timers-Timestamp +:Timers-BlockNumber: pass:normal[xref:utils.adoc#Timers-BlockNumber[`Timers.BlockNumber`]] +:xref-Timers-BlockNumber: xref:utils.adoc#Timers-BlockNumber +:ECDSA: pass:normal[xref:utils.adoc#ECDSA[`ECDSA`]] +:xref-ECDSA: xref:utils.adoc#ECDSA +:ECDSA-tryRecover: pass:normal[xref:utils.adoc#ECDSA-tryRecover-bytes32-bytes-[`ECDSA.tryRecover`]] +:xref-ECDSA-tryRecover-bytes32-bytes-: xref:utils.adoc#ECDSA-tryRecover-bytes32-bytes- +:ECDSA-recover: pass:normal[xref:utils.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]] +:xref-ECDSA-recover-bytes32-bytes-: xref:utils.adoc#ECDSA-recover-bytes32-bytes- +:ECDSA-tryRecover: pass:normal[xref:utils.adoc#ECDSA-tryRecover-bytes32-bytes32-bytes32-[`ECDSA.tryRecover`]] +:xref-ECDSA-tryRecover-bytes32-bytes32-bytes32-: xref:utils.adoc#ECDSA-tryRecover-bytes32-bytes32-bytes32- +:ECDSA-recover: pass:normal[xref:utils.adoc#ECDSA-recover-bytes32-bytes32-bytes32-[`ECDSA.recover`]] +:xref-ECDSA-recover-bytes32-bytes32-bytes32-: xref:utils.adoc#ECDSA-recover-bytes32-bytes32-bytes32- +:ECDSA-tryRecover: pass:normal[xref:utils.adoc#ECDSA-tryRecover-bytes32-uint8-bytes32-bytes32-[`ECDSA.tryRecover`]] +:xref-ECDSA-tryRecover-bytes32-uint8-bytes32-bytes32-: xref:utils.adoc#ECDSA-tryRecover-bytes32-uint8-bytes32-bytes32- +:ECDSA-recover: pass:normal[xref:utils.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]] +:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:utils.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32- +:ECDSA-toEthSignedMessageHash: pass:normal[xref:utils.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]] +:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:utils.adoc#ECDSA-toEthSignedMessageHash-bytes32- +:ECDSA-toEthSignedMessageHash: pass:normal[xref:utils.adoc#ECDSA-toEthSignedMessageHash-bytes-[`ECDSA.toEthSignedMessageHash`]] +:xref-ECDSA-toEthSignedMessageHash-bytes-: xref:utils.adoc#ECDSA-toEthSignedMessageHash-bytes- +:ECDSA-toTypedDataHash: pass:normal[xref:utils.adoc#ECDSA-toTypedDataHash-bytes32-bytes32-[`ECDSA.toTypedDataHash`]] +:xref-ECDSA-toTypedDataHash-bytes32-bytes32-: xref:utils.adoc#ECDSA-toTypedDataHash-bytes32-bytes32- +:ECDSA-RecoverError: pass:normal[xref:utils.adoc#ECDSA-RecoverError[`ECDSA.RecoverError`]] +:xref-ECDSA-RecoverError: xref:utils.adoc#ECDSA-RecoverError +:MerkleProof: pass:normal[xref:utils.adoc#MerkleProof[`MerkleProof`]] +:xref-MerkleProof: xref:utils.adoc#MerkleProof +:MerkleProof-verify: pass:normal[xref:utils.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]] +:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:utils.adoc#MerkleProof-verify-bytes32---bytes32-bytes32- +:MerkleProof-processProof: pass:normal[xref:utils.adoc#MerkleProof-processProof-bytes32---bytes32-[`MerkleProof.processProof`]] +:xref-MerkleProof-processProof-bytes32---bytes32-: xref:utils.adoc#MerkleProof-processProof-bytes32---bytes32- +:SignatureChecker: pass:normal[xref:utils.adoc#SignatureChecker[`SignatureChecker`]] +:xref-SignatureChecker: xref:utils.adoc#SignatureChecker +:SignatureChecker-isValidSignatureNow: pass:normal[xref:utils.adoc#SignatureChecker-isValidSignatureNow-address-bytes32-bytes-[`SignatureChecker.isValidSignatureNow`]] +:xref-SignatureChecker-isValidSignatureNow-address-bytes32-bytes-: xref:utils.adoc#SignatureChecker-isValidSignatureNow-address-bytes32-bytes- +:EIP712: pass:normal[xref:utils.adoc#EIP712[`EIP712`]] +:xref-EIP712: xref:utils.adoc#EIP712 +:EIP712-constructor: pass:normal[xref:utils.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]] +:xref-EIP712-constructor-string-string-: xref:utils.adoc#EIP712-constructor-string-string- +:EIP712-_domainSeparatorV4: pass:normal[xref:utils.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]] +:xref-EIP712-_domainSeparatorV4--: xref:utils.adoc#EIP712-_domainSeparatorV4-- +:EIP712-_hashTypedDataV4: pass:normal[xref:utils.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]] +:xref-EIP712-_hashTypedDataV4-bytes32-: xref:utils.adoc#EIP712-_hashTypedDataV4-bytes32- +:ConditionalEscrow: pass:normal[xref:utils.adoc#ConditionalEscrow[`ConditionalEscrow`]] +:xref-ConditionalEscrow: xref:utils.adoc#ConditionalEscrow +:ConditionalEscrow-withdrawalAllowed: pass:normal[xref:utils.adoc#ConditionalEscrow-withdrawalAllowed-address-[`ConditionalEscrow.withdrawalAllowed`]] +:xref-ConditionalEscrow-withdrawalAllowed-address-: xref:utils.adoc#ConditionalEscrow-withdrawalAllowed-address- +:ConditionalEscrow-withdraw: pass:normal[xref:utils.adoc#ConditionalEscrow-withdraw-address-payable-[`ConditionalEscrow.withdraw`]] +:xref-ConditionalEscrow-withdraw-address-payable-: xref:utils.adoc#ConditionalEscrow-withdraw-address-payable- +:Escrow: pass:normal[xref:utils.adoc#Escrow[`Escrow`]] +:xref-Escrow: xref:utils.adoc#Escrow +:Escrow-depositsOf: pass:normal[xref:utils.adoc#Escrow-depositsOf-address-[`Escrow.depositsOf`]] +:xref-Escrow-depositsOf-address-: xref:utils.adoc#Escrow-depositsOf-address- +:Escrow-deposit: pass:normal[xref:utils.adoc#Escrow-deposit-address-[`Escrow.deposit`]] +:xref-Escrow-deposit-address-: xref:utils.adoc#Escrow-deposit-address- +:Escrow-withdraw: pass:normal[xref:utils.adoc#Escrow-withdraw-address-payable-[`Escrow.withdraw`]] +:xref-Escrow-withdraw-address-payable-: xref:utils.adoc#Escrow-withdraw-address-payable- +:Escrow-Deposited: pass:normal[xref:utils.adoc#Escrow-Deposited-address-uint256-[`Escrow.Deposited`]] +:xref-Escrow-Deposited-address-uint256-: xref:utils.adoc#Escrow-Deposited-address-uint256- +:Escrow-Withdrawn: pass:normal[xref:utils.adoc#Escrow-Withdrawn-address-uint256-[`Escrow.Withdrawn`]] +:xref-Escrow-Withdrawn-address-uint256-: xref:utils.adoc#Escrow-Withdrawn-address-uint256- +:RefundEscrow: pass:normal[xref:utils.adoc#RefundEscrow[`RefundEscrow`]] +:xref-RefundEscrow: xref:utils.adoc#RefundEscrow +:RefundEscrow-constructor: pass:normal[xref:utils.adoc#RefundEscrow-constructor-address-payable-[`RefundEscrow.constructor`]] +:xref-RefundEscrow-constructor-address-payable-: xref:utils.adoc#RefundEscrow-constructor-address-payable- +:RefundEscrow-state: pass:normal[xref:utils.adoc#RefundEscrow-state--[`RefundEscrow.state`]] +:xref-RefundEscrow-state--: xref:utils.adoc#RefundEscrow-state-- +:RefundEscrow-beneficiary: pass:normal[xref:utils.adoc#RefundEscrow-beneficiary--[`RefundEscrow.beneficiary`]] +:xref-RefundEscrow-beneficiary--: xref:utils.adoc#RefundEscrow-beneficiary-- +:RefundEscrow-deposit: pass:normal[xref:utils.adoc#RefundEscrow-deposit-address-[`RefundEscrow.deposit`]] +:xref-RefundEscrow-deposit-address-: xref:utils.adoc#RefundEscrow-deposit-address- +:RefundEscrow-close: pass:normal[xref:utils.adoc#RefundEscrow-close--[`RefundEscrow.close`]] +:xref-RefundEscrow-close--: xref:utils.adoc#RefundEscrow-close-- +:RefundEscrow-enableRefunds: pass:normal[xref:utils.adoc#RefundEscrow-enableRefunds--[`RefundEscrow.enableRefunds`]] +:xref-RefundEscrow-enableRefunds--: xref:utils.adoc#RefundEscrow-enableRefunds-- +:RefundEscrow-beneficiaryWithdraw: pass:normal[xref:utils.adoc#RefundEscrow-beneficiaryWithdraw--[`RefundEscrow.beneficiaryWithdraw`]] +:xref-RefundEscrow-beneficiaryWithdraw--: xref:utils.adoc#RefundEscrow-beneficiaryWithdraw-- +:RefundEscrow-withdrawalAllowed: pass:normal[xref:utils.adoc#RefundEscrow-withdrawalAllowed-address-[`RefundEscrow.withdrawalAllowed`]] +:xref-RefundEscrow-withdrawalAllowed-address-: xref:utils.adoc#RefundEscrow-withdrawalAllowed-address- +:RefundEscrow-RefundsClosed: pass:normal[xref:utils.adoc#RefundEscrow-RefundsClosed--[`RefundEscrow.RefundsClosed`]] +:xref-RefundEscrow-RefundsClosed--: xref:utils.adoc#RefundEscrow-RefundsClosed-- +:RefundEscrow-RefundsEnabled: pass:normal[xref:utils.adoc#RefundEscrow-RefundsEnabled--[`RefundEscrow.RefundsEnabled`]] +:xref-RefundEscrow-RefundsEnabled--: xref:utils.adoc#RefundEscrow-RefundsEnabled-- +:RefundEscrow-State: pass:normal[xref:utils.adoc#RefundEscrow-State[`RefundEscrow.State`]] +:xref-RefundEscrow-State: xref:utils.adoc#RefundEscrow-State +:ERC165: pass:normal[xref:utils.adoc#ERC165[`ERC165`]] +:xref-ERC165: xref:utils.adoc#ERC165 +:ERC165-supportsInterface: pass:normal[xref:utils.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]] +:xref-ERC165-supportsInterface-bytes4-: xref:utils.adoc#ERC165-supportsInterface-bytes4- +:ERC165Checker: pass:normal[xref:utils.adoc#ERC165Checker[`ERC165Checker`]] +:xref-ERC165Checker: xref:utils.adoc#ERC165Checker +:ERC165Checker-supportsERC165: pass:normal[xref:utils.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]] +:xref-ERC165Checker-supportsERC165-address-: xref:utils.adoc#ERC165Checker-supportsERC165-address- +:ERC165Checker-supportsInterface: pass:normal[xref:utils.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]] +:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:utils.adoc#ERC165Checker-supportsInterface-address-bytes4- +:ERC165Checker-getSupportedInterfaces: pass:normal[xref:utils.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]] +:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:utils.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4--- +:ERC165Checker-supportsAllInterfaces: pass:normal[xref:utils.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]] +:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:utils.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4--- +:ERC165Storage: pass:normal[xref:utils.adoc#ERC165Storage[`ERC165Storage`]] +:xref-ERC165Storage: xref:utils.adoc#ERC165Storage +:ERC165Storage-supportsInterface: pass:normal[xref:utils.adoc#ERC165Storage-supportsInterface-bytes4-[`ERC165Storage.supportsInterface`]] +:xref-ERC165Storage-supportsInterface-bytes4-: xref:utils.adoc#ERC165Storage-supportsInterface-bytes4- +:ERC165Storage-_registerInterface: pass:normal[xref:utils.adoc#ERC165Storage-_registerInterface-bytes4-[`ERC165Storage._registerInterface`]] +:xref-ERC165Storage-_registerInterface-bytes4-: xref:utils.adoc#ERC165Storage-_registerInterface-bytes4- +:ERC1820Implementer: pass:normal[xref:utils.adoc#ERC1820Implementer[`ERC1820Implementer`]] +:xref-ERC1820Implementer: xref:utils.adoc#ERC1820Implementer +:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:utils.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]] +:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:utils.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address- +:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:utils.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]] +:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:utils.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address- +:IERC165: pass:normal[xref:utils.adoc#IERC165[`IERC165`]] +:xref-IERC165: xref:utils.adoc#IERC165 +:IERC165-supportsInterface: pass:normal[xref:utils.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]] +:xref-IERC165-supportsInterface-bytes4-: xref:utils.adoc#IERC165-supportsInterface-bytes4- +:IERC1820Implementer: pass:normal[xref:utils.adoc#IERC1820Implementer[`IERC1820Implementer`]] +:xref-IERC1820Implementer: xref:utils.adoc#IERC1820Implementer +:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:utils.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]] +:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:utils.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address- +:IERC1820Registry: pass:normal[xref:utils.adoc#IERC1820Registry[`IERC1820Registry`]] +:xref-IERC1820Registry: xref:utils.adoc#IERC1820Registry +:IERC1820Registry-setManager: pass:normal[xref:utils.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]] +:xref-IERC1820Registry-setManager-address-address-: xref:utils.adoc#IERC1820Registry-setManager-address-address- +:IERC1820Registry-getManager: pass:normal[xref:utils.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]] +:xref-IERC1820Registry-getManager-address-: xref:utils.adoc#IERC1820Registry-getManager-address- +:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:utils.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]] +:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:utils.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address- +:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:utils.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]] +:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:utils.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32- +:IERC1820Registry-interfaceHash: pass:normal[xref:utils.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]] +:xref-IERC1820Registry-interfaceHash-string-: xref:utils.adoc#IERC1820Registry-interfaceHash-string- +:IERC1820Registry-updateERC165Cache: pass:normal[xref:utils.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]] +:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:utils.adoc#IERC1820Registry-updateERC165Cache-address-bytes4- +:IERC1820Registry-implementsERC165Interface: pass:normal[xref:utils.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]] +:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:utils.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4- +:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:utils.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]] +:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:utils.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4- +:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:utils.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]] +:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:utils.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address- +:IERC1820Registry-ManagerChanged: pass:normal[xref:utils.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]] +:xref-IERC1820Registry-ManagerChanged-address-address-: xref:utils.adoc#IERC1820Registry-ManagerChanged-address-address- +:Math: pass:normal[xref:utils.adoc#Math[`Math`]] +:xref-Math: xref:utils.adoc#Math +:Math-max: pass:normal[xref:utils.adoc#Math-max-uint256-uint256-[`Math.max`]] +:xref-Math-max-uint256-uint256-: xref:utils.adoc#Math-max-uint256-uint256- +:Math-min: pass:normal[xref:utils.adoc#Math-min-uint256-uint256-[`Math.min`]] +:xref-Math-min-uint256-uint256-: xref:utils.adoc#Math-min-uint256-uint256- +:Math-average: pass:normal[xref:utils.adoc#Math-average-uint256-uint256-[`Math.average`]] +:xref-Math-average-uint256-uint256-: xref:utils.adoc#Math-average-uint256-uint256- +:Math-ceilDiv: pass:normal[xref:utils.adoc#Math-ceilDiv-uint256-uint256-[`Math.ceilDiv`]] +:xref-Math-ceilDiv-uint256-uint256-: xref:utils.adoc#Math-ceilDiv-uint256-uint256- +:SafeCast: pass:normal[xref:utils.adoc#SafeCast[`SafeCast`]] +:xref-SafeCast: xref:utils.adoc#SafeCast +:SafeCast-toUint224: pass:normal[xref:utils.adoc#SafeCast-toUint224-uint256-[`SafeCast.toUint224`]] +:xref-SafeCast-toUint224-uint256-: xref:utils.adoc#SafeCast-toUint224-uint256- +:SafeCast-toUint128: pass:normal[xref:utils.adoc#SafeCast-toUint128-uint256-[`SafeCast.toUint128`]] +:xref-SafeCast-toUint128-uint256-: xref:utils.adoc#SafeCast-toUint128-uint256- +:SafeCast-toUint96: pass:normal[xref:utils.adoc#SafeCast-toUint96-uint256-[`SafeCast.toUint96`]] +:xref-SafeCast-toUint96-uint256-: xref:utils.adoc#SafeCast-toUint96-uint256- +:SafeCast-toUint64: pass:normal[xref:utils.adoc#SafeCast-toUint64-uint256-[`SafeCast.toUint64`]] +:xref-SafeCast-toUint64-uint256-: xref:utils.adoc#SafeCast-toUint64-uint256- +:SafeCast-toUint32: pass:normal[xref:utils.adoc#SafeCast-toUint32-uint256-[`SafeCast.toUint32`]] +:xref-SafeCast-toUint32-uint256-: xref:utils.adoc#SafeCast-toUint32-uint256- +:SafeCast-toUint16: pass:normal[xref:utils.adoc#SafeCast-toUint16-uint256-[`SafeCast.toUint16`]] +:xref-SafeCast-toUint16-uint256-: xref:utils.adoc#SafeCast-toUint16-uint256- +:SafeCast-toUint8: pass:normal[xref:utils.adoc#SafeCast-toUint8-uint256-[`SafeCast.toUint8`]] +:xref-SafeCast-toUint8-uint256-: xref:utils.adoc#SafeCast-toUint8-uint256- +:SafeCast-toUint256: pass:normal[xref:utils.adoc#SafeCast-toUint256-int256-[`SafeCast.toUint256`]] +:xref-SafeCast-toUint256-int256-: xref:utils.adoc#SafeCast-toUint256-int256- +:SafeCast-toInt128: pass:normal[xref:utils.adoc#SafeCast-toInt128-int256-[`SafeCast.toInt128`]] +:xref-SafeCast-toInt128-int256-: xref:utils.adoc#SafeCast-toInt128-int256- +:SafeCast-toInt64: pass:normal[xref:utils.adoc#SafeCast-toInt64-int256-[`SafeCast.toInt64`]] +:xref-SafeCast-toInt64-int256-: xref:utils.adoc#SafeCast-toInt64-int256- +:SafeCast-toInt32: pass:normal[xref:utils.adoc#SafeCast-toInt32-int256-[`SafeCast.toInt32`]] +:xref-SafeCast-toInt32-int256-: xref:utils.adoc#SafeCast-toInt32-int256- +:SafeCast-toInt16: pass:normal[xref:utils.adoc#SafeCast-toInt16-int256-[`SafeCast.toInt16`]] +:xref-SafeCast-toInt16-int256-: xref:utils.adoc#SafeCast-toInt16-int256- +:SafeCast-toInt8: pass:normal[xref:utils.adoc#SafeCast-toInt8-int256-[`SafeCast.toInt8`]] +:xref-SafeCast-toInt8-int256-: xref:utils.adoc#SafeCast-toInt8-int256- +:SafeCast-toInt256: pass:normal[xref:utils.adoc#SafeCast-toInt256-uint256-[`SafeCast.toInt256`]] +:xref-SafeCast-toInt256-uint256-: xref:utils.adoc#SafeCast-toInt256-uint256- +:SafeMath: pass:normal[xref:utils.adoc#SafeMath[`SafeMath`]] +:xref-SafeMath: xref:utils.adoc#SafeMath +:SafeMath-tryAdd: pass:normal[xref:utils.adoc#SafeMath-tryAdd-uint256-uint256-[`SafeMath.tryAdd`]] +:xref-SafeMath-tryAdd-uint256-uint256-: xref:utils.adoc#SafeMath-tryAdd-uint256-uint256- +:SafeMath-trySub: pass:normal[xref:utils.adoc#SafeMath-trySub-uint256-uint256-[`SafeMath.trySub`]] +:xref-SafeMath-trySub-uint256-uint256-: xref:utils.adoc#SafeMath-trySub-uint256-uint256- +:SafeMath-tryMul: pass:normal[xref:utils.adoc#SafeMath-tryMul-uint256-uint256-[`SafeMath.tryMul`]] +:xref-SafeMath-tryMul-uint256-uint256-: xref:utils.adoc#SafeMath-tryMul-uint256-uint256- +:SafeMath-tryDiv: pass:normal[xref:utils.adoc#SafeMath-tryDiv-uint256-uint256-[`SafeMath.tryDiv`]] +:xref-SafeMath-tryDiv-uint256-uint256-: xref:utils.adoc#SafeMath-tryDiv-uint256-uint256- +:SafeMath-tryMod: pass:normal[xref:utils.adoc#SafeMath-tryMod-uint256-uint256-[`SafeMath.tryMod`]] +:xref-SafeMath-tryMod-uint256-uint256-: xref:utils.adoc#SafeMath-tryMod-uint256-uint256- +:SafeMath-add: pass:normal[xref:utils.adoc#SafeMath-add-uint256-uint256-[`SafeMath.add`]] +:xref-SafeMath-add-uint256-uint256-: xref:utils.adoc#SafeMath-add-uint256-uint256- +:SafeMath-sub: pass:normal[xref:utils.adoc#SafeMath-sub-uint256-uint256-[`SafeMath.sub`]] +:xref-SafeMath-sub-uint256-uint256-: xref:utils.adoc#SafeMath-sub-uint256-uint256- +:SafeMath-mul: pass:normal[xref:utils.adoc#SafeMath-mul-uint256-uint256-[`SafeMath.mul`]] +:xref-SafeMath-mul-uint256-uint256-: xref:utils.adoc#SafeMath-mul-uint256-uint256- +:SafeMath-div: pass:normal[xref:utils.adoc#SafeMath-div-uint256-uint256-[`SafeMath.div`]] +:xref-SafeMath-div-uint256-uint256-: xref:utils.adoc#SafeMath-div-uint256-uint256- +:SafeMath-mod: pass:normal[xref:utils.adoc#SafeMath-mod-uint256-uint256-[`SafeMath.mod`]] +:xref-SafeMath-mod-uint256-uint256-: xref:utils.adoc#SafeMath-mod-uint256-uint256- +:SafeMath-sub: pass:normal[xref:utils.adoc#SafeMath-sub-uint256-uint256-string-[`SafeMath.sub`]] +:xref-SafeMath-sub-uint256-uint256-string-: xref:utils.adoc#SafeMath-sub-uint256-uint256-string- +:SafeMath-div: pass:normal[xref:utils.adoc#SafeMath-div-uint256-uint256-string-[`SafeMath.div`]] +:xref-SafeMath-div-uint256-uint256-string-: xref:utils.adoc#SafeMath-div-uint256-uint256-string- +:SafeMath-mod: pass:normal[xref:utils.adoc#SafeMath-mod-uint256-uint256-string-[`SafeMath.mod`]] +:xref-SafeMath-mod-uint256-uint256-string-: xref:utils.adoc#SafeMath-mod-uint256-uint256-string- +:SignedMath: pass:normal[xref:utils.adoc#SignedMath[`SignedMath`]] +:xref-SignedMath: xref:utils.adoc#SignedMath +:SignedMath-max: pass:normal[xref:utils.adoc#SignedMath-max-int256-int256-[`SignedMath.max`]] +:xref-SignedMath-max-int256-int256-: xref:utils.adoc#SignedMath-max-int256-int256- +:SignedMath-min: pass:normal[xref:utils.adoc#SignedMath-min-int256-int256-[`SignedMath.min`]] +:xref-SignedMath-min-int256-int256-: xref:utils.adoc#SignedMath-min-int256-int256- +:SignedMath-average: pass:normal[xref:utils.adoc#SignedMath-average-int256-int256-[`SignedMath.average`]] +:xref-SignedMath-average-int256-int256-: xref:utils.adoc#SignedMath-average-int256-int256- +:SignedMath-abs: pass:normal[xref:utils.adoc#SignedMath-abs-int256-[`SignedMath.abs`]] +:xref-SignedMath-abs-int256-: xref:utils.adoc#SignedMath-abs-int256- +:SignedSafeMath: pass:normal[xref:utils.adoc#SignedSafeMath[`SignedSafeMath`]] +:xref-SignedSafeMath: xref:utils.adoc#SignedSafeMath +:SignedSafeMath-mul: pass:normal[xref:utils.adoc#SignedSafeMath-mul-int256-int256-[`SignedSafeMath.mul`]] +:xref-SignedSafeMath-mul-int256-int256-: xref:utils.adoc#SignedSafeMath-mul-int256-int256- +:SignedSafeMath-div: pass:normal[xref:utils.adoc#SignedSafeMath-div-int256-int256-[`SignedSafeMath.div`]] +:xref-SignedSafeMath-div-int256-int256-: xref:utils.adoc#SignedSafeMath-div-int256-int256- +:SignedSafeMath-sub: pass:normal[xref:utils.adoc#SignedSafeMath-sub-int256-int256-[`SignedSafeMath.sub`]] +:xref-SignedSafeMath-sub-int256-int256-: xref:utils.adoc#SignedSafeMath-sub-int256-int256- +:SignedSafeMath-add: pass:normal[xref:utils.adoc#SignedSafeMath-add-int256-int256-[`SignedSafeMath.add`]] +:xref-SignedSafeMath-add-int256-int256-: xref:utils.adoc#SignedSafeMath-add-int256-int256- +:BitMaps: pass:normal[xref:utils.adoc#BitMaps[`BitMaps`]] +:xref-BitMaps: xref:utils.adoc#BitMaps +:BitMaps-get: pass:normal[xref:utils.adoc#BitMaps-get-struct-BitMaps-BitMap-uint256-[`BitMaps.get`]] +:xref-BitMaps-get-struct-BitMaps-BitMap-uint256-: xref:utils.adoc#BitMaps-get-struct-BitMaps-BitMap-uint256- +:BitMaps-setTo: pass:normal[xref:utils.adoc#BitMaps-setTo-struct-BitMaps-BitMap-uint256-bool-[`BitMaps.setTo`]] +:xref-BitMaps-setTo-struct-BitMaps-BitMap-uint256-bool-: xref:utils.adoc#BitMaps-setTo-struct-BitMaps-BitMap-uint256-bool- +:BitMaps-set: pass:normal[xref:utils.adoc#BitMaps-set-struct-BitMaps-BitMap-uint256-[`BitMaps.set`]] +:xref-BitMaps-set-struct-BitMaps-BitMap-uint256-: xref:utils.adoc#BitMaps-set-struct-BitMaps-BitMap-uint256- +:BitMaps-unset: pass:normal[xref:utils.adoc#BitMaps-unset-struct-BitMaps-BitMap-uint256-[`BitMaps.unset`]] +:xref-BitMaps-unset-struct-BitMaps-BitMap-uint256-: xref:utils.adoc#BitMaps-unset-struct-BitMaps-BitMap-uint256- +:BitMaps-BitMap: pass:normal[xref:utils.adoc#BitMaps-BitMap[`BitMaps.BitMap`]] +:xref-BitMaps-BitMap: xref:utils.adoc#BitMaps-BitMap +:EnumerableMap: pass:normal[xref:utils.adoc#EnumerableMap[`EnumerableMap`]] +:xref-EnumerableMap: xref:utils.adoc#EnumerableMap +:EnumerableMap-set: pass:normal[xref:utils.adoc#EnumerableMap-set-struct-EnumerableMap-UintToAddressMap-uint256-address-[`EnumerableMap.set`]] +:xref-EnumerableMap-set-struct-EnumerableMap-UintToAddressMap-uint256-address-: xref:utils.adoc#EnumerableMap-set-struct-EnumerableMap-UintToAddressMap-uint256-address- +:EnumerableMap-remove: pass:normal[xref:utils.adoc#EnumerableMap-remove-struct-EnumerableMap-UintToAddressMap-uint256-[`EnumerableMap.remove`]] +:xref-EnumerableMap-remove-struct-EnumerableMap-UintToAddressMap-uint256-: xref:utils.adoc#EnumerableMap-remove-struct-EnumerableMap-UintToAddressMap-uint256- +:EnumerableMap-contains: pass:normal[xref:utils.adoc#EnumerableMap-contains-struct-EnumerableMap-UintToAddressMap-uint256-[`EnumerableMap.contains`]] +:xref-EnumerableMap-contains-struct-EnumerableMap-UintToAddressMap-uint256-: xref:utils.adoc#EnumerableMap-contains-struct-EnumerableMap-UintToAddressMap-uint256- +:EnumerableMap-length: pass:normal[xref:utils.adoc#EnumerableMap-length-struct-EnumerableMap-UintToAddressMap-[`EnumerableMap.length`]] +:xref-EnumerableMap-length-struct-EnumerableMap-UintToAddressMap-: xref:utils.adoc#EnumerableMap-length-struct-EnumerableMap-UintToAddressMap- +:EnumerableMap-at: pass:normal[xref:utils.adoc#EnumerableMap-at-struct-EnumerableMap-UintToAddressMap-uint256-[`EnumerableMap.at`]] +:xref-EnumerableMap-at-struct-EnumerableMap-UintToAddressMap-uint256-: xref:utils.adoc#EnumerableMap-at-struct-EnumerableMap-UintToAddressMap-uint256- +:EnumerableMap-tryGet: pass:normal[xref:utils.adoc#EnumerableMap-tryGet-struct-EnumerableMap-UintToAddressMap-uint256-[`EnumerableMap.tryGet`]] +:xref-EnumerableMap-tryGet-struct-EnumerableMap-UintToAddressMap-uint256-: xref:utils.adoc#EnumerableMap-tryGet-struct-EnumerableMap-UintToAddressMap-uint256- +:EnumerableMap-get: pass:normal[xref:utils.adoc#EnumerableMap-get-struct-EnumerableMap-UintToAddressMap-uint256-[`EnumerableMap.get`]] +:xref-EnumerableMap-get-struct-EnumerableMap-UintToAddressMap-uint256-: xref:utils.adoc#EnumerableMap-get-struct-EnumerableMap-UintToAddressMap-uint256- +:EnumerableMap-get: pass:normal[xref:utils.adoc#EnumerableMap-get-struct-EnumerableMap-UintToAddressMap-uint256-string-[`EnumerableMap.get`]] +:xref-EnumerableMap-get-struct-EnumerableMap-UintToAddressMap-uint256-string-: xref:utils.adoc#EnumerableMap-get-struct-EnumerableMap-UintToAddressMap-uint256-string- +:EnumerableMap-Map: pass:normal[xref:utils.adoc#EnumerableMap-Map[`EnumerableMap.Map`]] +:xref-EnumerableMap-Map: xref:utils.adoc#EnumerableMap-Map +:EnumerableMap-UintToAddressMap: pass:normal[xref:utils.adoc#EnumerableMap-UintToAddressMap[`EnumerableMap.UintToAddressMap`]] +:xref-EnumerableMap-UintToAddressMap: xref:utils.adoc#EnumerableMap-UintToAddressMap +:EnumerableSet: pass:normal[xref:utils.adoc#EnumerableSet[`EnumerableSet`]] +:xref-EnumerableSet: xref:utils.adoc#EnumerableSet +:EnumerableSet-add: pass:normal[xref:utils.adoc#EnumerableSet-add-struct-EnumerableSet-Bytes32Set-bytes32-[`EnumerableSet.add`]] +:xref-EnumerableSet-add-struct-EnumerableSet-Bytes32Set-bytes32-: xref:utils.adoc#EnumerableSet-add-struct-EnumerableSet-Bytes32Set-bytes32- +:EnumerableSet-remove: pass:normal[xref:utils.adoc#EnumerableSet-remove-struct-EnumerableSet-Bytes32Set-bytes32-[`EnumerableSet.remove`]] +:xref-EnumerableSet-remove-struct-EnumerableSet-Bytes32Set-bytes32-: xref:utils.adoc#EnumerableSet-remove-struct-EnumerableSet-Bytes32Set-bytes32- +:EnumerableSet-contains: pass:normal[xref:utils.adoc#EnumerableSet-contains-struct-EnumerableSet-Bytes32Set-bytes32-[`EnumerableSet.contains`]] +:xref-EnumerableSet-contains-struct-EnumerableSet-Bytes32Set-bytes32-: xref:utils.adoc#EnumerableSet-contains-struct-EnumerableSet-Bytes32Set-bytes32- +:EnumerableSet-length: pass:normal[xref:utils.adoc#EnumerableSet-length-struct-EnumerableSet-Bytes32Set-[`EnumerableSet.length`]] +:xref-EnumerableSet-length-struct-EnumerableSet-Bytes32Set-: xref:utils.adoc#EnumerableSet-length-struct-EnumerableSet-Bytes32Set- +:EnumerableSet-at: pass:normal[xref:utils.adoc#EnumerableSet-at-struct-EnumerableSet-Bytes32Set-uint256-[`EnumerableSet.at`]] +:xref-EnumerableSet-at-struct-EnumerableSet-Bytes32Set-uint256-: xref:utils.adoc#EnumerableSet-at-struct-EnumerableSet-Bytes32Set-uint256- +:EnumerableSet-values: pass:normal[xref:utils.adoc#EnumerableSet-values-struct-EnumerableSet-Bytes32Set-[`EnumerableSet.values`]] +:xref-EnumerableSet-values-struct-EnumerableSet-Bytes32Set-: xref:utils.adoc#EnumerableSet-values-struct-EnumerableSet-Bytes32Set- +:EnumerableSet-add: pass:normal[xref:utils.adoc#EnumerableSet-add-struct-EnumerableSet-AddressSet-address-[`EnumerableSet.add`]] +:xref-EnumerableSet-add-struct-EnumerableSet-AddressSet-address-: xref:utils.adoc#EnumerableSet-add-struct-EnumerableSet-AddressSet-address- +:EnumerableSet-remove: pass:normal[xref:utils.adoc#EnumerableSet-remove-struct-EnumerableSet-AddressSet-address-[`EnumerableSet.remove`]] +:xref-EnumerableSet-remove-struct-EnumerableSet-AddressSet-address-: xref:utils.adoc#EnumerableSet-remove-struct-EnumerableSet-AddressSet-address- +:EnumerableSet-contains: pass:normal[xref:utils.adoc#EnumerableSet-contains-struct-EnumerableSet-AddressSet-address-[`EnumerableSet.contains`]] +:xref-EnumerableSet-contains-struct-EnumerableSet-AddressSet-address-: xref:utils.adoc#EnumerableSet-contains-struct-EnumerableSet-AddressSet-address- +:EnumerableSet-length: pass:normal[xref:utils.adoc#EnumerableSet-length-struct-EnumerableSet-AddressSet-[`EnumerableSet.length`]] +:xref-EnumerableSet-length-struct-EnumerableSet-AddressSet-: xref:utils.adoc#EnumerableSet-length-struct-EnumerableSet-AddressSet- +:EnumerableSet-at: pass:normal[xref:utils.adoc#EnumerableSet-at-struct-EnumerableSet-AddressSet-uint256-[`EnumerableSet.at`]] +:xref-EnumerableSet-at-struct-EnumerableSet-AddressSet-uint256-: xref:utils.adoc#EnumerableSet-at-struct-EnumerableSet-AddressSet-uint256- +:EnumerableSet-values: pass:normal[xref:utils.adoc#EnumerableSet-values-struct-EnumerableSet-AddressSet-[`EnumerableSet.values`]] +:xref-EnumerableSet-values-struct-EnumerableSet-AddressSet-: xref:utils.adoc#EnumerableSet-values-struct-EnumerableSet-AddressSet- +:EnumerableSet-add: pass:normal[xref:utils.adoc#EnumerableSet-add-struct-EnumerableSet-UintSet-uint256-[`EnumerableSet.add`]] +:xref-EnumerableSet-add-struct-EnumerableSet-UintSet-uint256-: xref:utils.adoc#EnumerableSet-add-struct-EnumerableSet-UintSet-uint256- +:EnumerableSet-remove: pass:normal[xref:utils.adoc#EnumerableSet-remove-struct-EnumerableSet-UintSet-uint256-[`EnumerableSet.remove`]] +:xref-EnumerableSet-remove-struct-EnumerableSet-UintSet-uint256-: xref:utils.adoc#EnumerableSet-remove-struct-EnumerableSet-UintSet-uint256- +:EnumerableSet-contains: pass:normal[xref:utils.adoc#EnumerableSet-contains-struct-EnumerableSet-UintSet-uint256-[`EnumerableSet.contains`]] +:xref-EnumerableSet-contains-struct-EnumerableSet-UintSet-uint256-: xref:utils.adoc#EnumerableSet-contains-struct-EnumerableSet-UintSet-uint256- +:EnumerableSet-length: pass:normal[xref:utils.adoc#EnumerableSet-length-struct-EnumerableSet-UintSet-[`EnumerableSet.length`]] +:xref-EnumerableSet-length-struct-EnumerableSet-UintSet-: xref:utils.adoc#EnumerableSet-length-struct-EnumerableSet-UintSet- +:EnumerableSet-at: pass:normal[xref:utils.adoc#EnumerableSet-at-struct-EnumerableSet-UintSet-uint256-[`EnumerableSet.at`]] +:xref-EnumerableSet-at-struct-EnumerableSet-UintSet-uint256-: xref:utils.adoc#EnumerableSet-at-struct-EnumerableSet-UintSet-uint256- +:EnumerableSet-values: pass:normal[xref:utils.adoc#EnumerableSet-values-struct-EnumerableSet-UintSet-[`EnumerableSet.values`]] +:xref-EnumerableSet-values-struct-EnumerableSet-UintSet-: xref:utils.adoc#EnumerableSet-values-struct-EnumerableSet-UintSet- +:EnumerableSet-Set: pass:normal[xref:utils.adoc#EnumerableSet-Set[`EnumerableSet.Set`]] +:xref-EnumerableSet-Set: xref:utils.adoc#EnumerableSet-Set +:EnumerableSet-Bytes32Set: pass:normal[xref:utils.adoc#EnumerableSet-Bytes32Set[`EnumerableSet.Bytes32Set`]] +:xref-EnumerableSet-Bytes32Set: xref:utils.adoc#EnumerableSet-Bytes32Set +:EnumerableSet-AddressSet: pass:normal[xref:utils.adoc#EnumerableSet-AddressSet[`EnumerableSet.AddressSet`]] +:xref-EnumerableSet-AddressSet: xref:utils.adoc#EnumerableSet-AddressSet +:EnumerableSet-UintSet: pass:normal[xref:utils.adoc#EnumerableSet-UintSet[`EnumerableSet.UintSet`]] +:xref-EnumerableSet-UintSet: xref:utils.adoc#EnumerableSet-UintSet +:ERC1155: pass:normal[xref:token/ERC1155.adoc#ERC1155[`ERC1155`]] +:xref-ERC1155: xref:token/ERC1155.adoc#ERC1155 +:ERC1155-constructor: pass:normal[xref:token/ERC1155.adoc#ERC1155-constructor-string-[`ERC1155.constructor`]] +:xref-ERC1155-constructor-string-: xref:token/ERC1155.adoc#ERC1155-constructor-string- +:ERC1155-supportsInterface: pass:normal[xref:token/ERC1155.adoc#ERC1155-supportsInterface-bytes4-[`ERC1155.supportsInterface`]] +:xref-ERC1155-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155-supportsInterface-bytes4- +:ERC1155-uri: pass:normal[xref:token/ERC1155.adoc#ERC1155-uri-uint256-[`ERC1155.uri`]] +:xref-ERC1155-uri-uint256-: xref:token/ERC1155.adoc#ERC1155-uri-uint256- +:ERC1155-balanceOf: pass:normal[xref:token/ERC1155.adoc#ERC1155-balanceOf-address-uint256-[`ERC1155.balanceOf`]] +:xref-ERC1155-balanceOf-address-uint256-: xref:token/ERC1155.adoc#ERC1155-balanceOf-address-uint256- +:ERC1155-balanceOfBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155-balanceOfBatch-address---uint256---[`ERC1155.balanceOfBatch`]] +:xref-ERC1155-balanceOfBatch-address---uint256---: xref:token/ERC1155.adoc#ERC1155-balanceOfBatch-address---uint256--- +:ERC1155-setApprovalForAll: pass:normal[xref:token/ERC1155.adoc#ERC1155-setApprovalForAll-address-bool-[`ERC1155.setApprovalForAll`]] +:xref-ERC1155-setApprovalForAll-address-bool-: xref:token/ERC1155.adoc#ERC1155-setApprovalForAll-address-bool- +:ERC1155-isApprovedForAll: pass:normal[xref:token/ERC1155.adoc#ERC1155-isApprovedForAll-address-address-[`ERC1155.isApprovedForAll`]] +:xref-ERC1155-isApprovedForAll-address-address-: xref:token/ERC1155.adoc#ERC1155-isApprovedForAll-address-address- +:ERC1155-safeTransferFrom: pass:normal[xref:token/ERC1155.adoc#ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-[`ERC1155.safeTransferFrom`]] +:xref-ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes- +:ERC1155-safeBatchTransferFrom: pass:normal[xref:token/ERC1155.adoc#ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-[`ERC1155.safeBatchTransferFrom`]] +:xref-ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes- +:ERC1155-_safeTransferFrom: pass:normal[xref:token/ERC1155.adoc#ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-[`ERC1155._safeTransferFrom`]] +:xref-ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes- +:ERC1155-_safeBatchTransferFrom: pass:normal[xref:token/ERC1155.adoc#ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-[`ERC1155._safeBatchTransferFrom`]] +:xref-ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes- +:ERC1155-_setURI: pass:normal[xref:token/ERC1155.adoc#ERC1155-_setURI-string-[`ERC1155._setURI`]] +:xref-ERC1155-_setURI-string-: xref:token/ERC1155.adoc#ERC1155-_setURI-string- +:ERC1155-_mint: pass:normal[xref:token/ERC1155.adoc#ERC1155-_mint-address-uint256-uint256-bytes-[`ERC1155._mint`]] +:xref-ERC1155-_mint-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-_mint-address-uint256-uint256-bytes- +:ERC1155-_mintBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155-_mintBatch-address-uint256---uint256---bytes-[`ERC1155._mintBatch`]] +:xref-ERC1155-_mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_mintBatch-address-uint256---uint256---bytes- +:ERC1155-_burn: pass:normal[xref:token/ERC1155.adoc#ERC1155-_burn-address-uint256-uint256-[`ERC1155._burn`]] +:xref-ERC1155-_burn-address-uint256-uint256-: xref:token/ERC1155.adoc#ERC1155-_burn-address-uint256-uint256- +:ERC1155-_burnBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155-_burnBatch-address-uint256---uint256---[`ERC1155._burnBatch`]] +:xref-ERC1155-_burnBatch-address-uint256---uint256---: xref:token/ERC1155.adoc#ERC1155-_burnBatch-address-uint256---uint256--- +:ERC1155-_setApprovalForAll: pass:normal[xref:token/ERC1155.adoc#ERC1155-_setApprovalForAll-address-address-bool-[`ERC1155._setApprovalForAll`]] +:xref-ERC1155-_setApprovalForAll-address-address-bool-: xref:token/ERC1155.adoc#ERC1155-_setApprovalForAll-address-address-bool- +:ERC1155-_beforeTokenTransfer: pass:normal[xref:token/ERC1155.adoc#ERC1155-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155._beforeTokenTransfer`]] +:xref-ERC1155-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:IERC1155: pass:normal[xref:token/ERC1155.adoc#IERC1155[`IERC1155`]] +:xref-IERC1155: xref:token/ERC1155.adoc#IERC1155 +:IERC1155-balanceOf: pass:normal[xref:token/ERC1155.adoc#IERC1155-balanceOf-address-uint256-[`IERC1155.balanceOf`]] +:xref-IERC1155-balanceOf-address-uint256-: xref:token/ERC1155.adoc#IERC1155-balanceOf-address-uint256- +:IERC1155-balanceOfBatch: pass:normal[xref:token/ERC1155.adoc#IERC1155-balanceOfBatch-address---uint256---[`IERC1155.balanceOfBatch`]] +:xref-IERC1155-balanceOfBatch-address---uint256---: xref:token/ERC1155.adoc#IERC1155-balanceOfBatch-address---uint256--- +:IERC1155-setApprovalForAll: pass:normal[xref:token/ERC1155.adoc#IERC1155-setApprovalForAll-address-bool-[`IERC1155.setApprovalForAll`]] +:xref-IERC1155-setApprovalForAll-address-bool-: xref:token/ERC1155.adoc#IERC1155-setApprovalForAll-address-bool- +:IERC1155-isApprovedForAll: pass:normal[xref:token/ERC1155.adoc#IERC1155-isApprovedForAll-address-address-[`IERC1155.isApprovedForAll`]] +:xref-IERC1155-isApprovedForAll-address-address-: xref:token/ERC1155.adoc#IERC1155-isApprovedForAll-address-address- +:IERC1155-safeTransferFrom: pass:normal[xref:token/ERC1155.adoc#IERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-[`IERC1155.safeTransferFrom`]] +:xref-IERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#IERC1155-safeTransferFrom-address-address-uint256-uint256-bytes- +:IERC1155-safeBatchTransferFrom: pass:normal[xref:token/ERC1155.adoc#IERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-[`IERC1155.safeBatchTransferFrom`]] +:xref-IERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#IERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes- +:IERC1155-TransferSingle: pass:normal[xref:token/ERC1155.adoc#IERC1155-TransferSingle-address-address-address-uint256-uint256-[`IERC1155.TransferSingle`]] +:xref-IERC1155-TransferSingle-address-address-address-uint256-uint256-: xref:token/ERC1155.adoc#IERC1155-TransferSingle-address-address-address-uint256-uint256- +:IERC1155-TransferBatch: pass:normal[xref:token/ERC1155.adoc#IERC1155-TransferBatch-address-address-address-uint256---uint256---[`IERC1155.TransferBatch`]] +:xref-IERC1155-TransferBatch-address-address-address-uint256---uint256---: xref:token/ERC1155.adoc#IERC1155-TransferBatch-address-address-address-uint256---uint256--- +:IERC1155-ApprovalForAll: pass:normal[xref:token/ERC1155.adoc#IERC1155-ApprovalForAll-address-address-bool-[`IERC1155.ApprovalForAll`]] +:xref-IERC1155-ApprovalForAll-address-address-bool-: xref:token/ERC1155.adoc#IERC1155-ApprovalForAll-address-address-bool- +:IERC1155-URI: pass:normal[xref:token/ERC1155.adoc#IERC1155-URI-string-uint256-[`IERC1155.URI`]] +:xref-IERC1155-URI-string-uint256-: xref:token/ERC1155.adoc#IERC1155-URI-string-uint256- +:IERC1155Receiver: pass:normal[xref:token/ERC1155.adoc#IERC1155Receiver[`IERC1155Receiver`]] +:xref-IERC1155Receiver: xref:token/ERC1155.adoc#IERC1155Receiver +:IERC1155Receiver-onERC1155Received: pass:normal[xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155Received-address-address-uint256-uint256-bytes-[`IERC1155Receiver.onERC1155Received`]] +:xref-IERC1155Receiver-onERC1155Received-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155Received-address-address-uint256-uint256-bytes- +:IERC1155Receiver-onERC1155BatchReceived: pass:normal[xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155BatchReceived-address-address-uint256---uint256---bytes-[`IERC1155Receiver.onERC1155BatchReceived`]] +:xref-IERC1155Receiver-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155BatchReceived-address-address-uint256---uint256---bytes- +:ERC1155Burnable: pass:normal[xref:token/ERC1155.adoc#ERC1155Burnable[`ERC1155Burnable`]] +:xref-ERC1155Burnable: xref:token/ERC1155.adoc#ERC1155Burnable +:ERC1155Burnable-burn: pass:normal[xref:token/ERC1155.adoc#ERC1155Burnable-burn-address-uint256-uint256-[`ERC1155Burnable.burn`]] +:xref-ERC1155Burnable-burn-address-uint256-uint256-: xref:token/ERC1155.adoc#ERC1155Burnable-burn-address-uint256-uint256- +:ERC1155Burnable-burnBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155Burnable-burnBatch-address-uint256---uint256---[`ERC1155Burnable.burnBatch`]] +:xref-ERC1155Burnable-burnBatch-address-uint256---uint256---: xref:token/ERC1155.adoc#ERC1155Burnable-burnBatch-address-uint256---uint256--- +:ERC1155Pausable: pass:normal[xref:token/ERC1155.adoc#ERC1155Pausable[`ERC1155Pausable`]] +:xref-ERC1155Pausable: xref:token/ERC1155.adoc#ERC1155Pausable +:ERC1155Pausable-_beforeTokenTransfer: pass:normal[xref:token/ERC1155.adoc#ERC1155Pausable-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155Pausable._beforeTokenTransfer`]] +:xref-ERC1155Pausable-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155Pausable-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:ERC1155Supply: pass:normal[xref:token/ERC1155.adoc#ERC1155Supply[`ERC1155Supply`]] +:xref-ERC1155Supply: xref:token/ERC1155.adoc#ERC1155Supply +:ERC1155Supply-totalSupply: pass:normal[xref:token/ERC1155.adoc#ERC1155Supply-totalSupply-uint256-[`ERC1155Supply.totalSupply`]] +:xref-ERC1155Supply-totalSupply-uint256-: xref:token/ERC1155.adoc#ERC1155Supply-totalSupply-uint256- +:ERC1155Supply-exists: pass:normal[xref:token/ERC1155.adoc#ERC1155Supply-exists-uint256-[`ERC1155Supply.exists`]] +:xref-ERC1155Supply-exists-uint256-: xref:token/ERC1155.adoc#ERC1155Supply-exists-uint256- +:ERC1155Supply-_beforeTokenTransfer: pass:normal[xref:token/ERC1155.adoc#ERC1155Supply-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155Supply._beforeTokenTransfer`]] +:xref-ERC1155Supply-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155Supply-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:IERC1155MetadataURI: pass:normal[xref:token/ERC1155.adoc#IERC1155MetadataURI[`IERC1155MetadataURI`]] +:xref-IERC1155MetadataURI: xref:token/ERC1155.adoc#IERC1155MetadataURI +:IERC1155MetadataURI-uri: pass:normal[xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256-[`IERC1155MetadataURI.uri`]] +:xref-IERC1155MetadataURI-uri-uint256-: xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256- +:ERC1155Holder: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder[`ERC1155Holder`]] +:xref-ERC1155Holder: xref:token/ERC1155.adoc#ERC1155Holder +:ERC1155Holder-onERC1155Received: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-[`ERC1155Holder.onERC1155Received`]] +:xref-ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes- +:ERC1155Holder-onERC1155BatchReceived: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder-onERC1155BatchReceived-address-address-uint256---uint256---bytes-[`ERC1155Holder.onERC1155BatchReceived`]] +:xref-ERC1155Holder-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155Holder-onERC1155BatchReceived-address-address-uint256---uint256---bytes- +:ERC1155Receiver: pass:normal[xref:token/ERC1155.adoc#ERC1155Receiver[`ERC1155Receiver`]] +:xref-ERC1155Receiver: xref:token/ERC1155.adoc#ERC1155Receiver +:ERC1155Receiver-supportsInterface: pass:normal[xref:token/ERC1155.adoc#ERC1155Receiver-supportsInterface-bytes4-[`ERC1155Receiver.supportsInterface`]] +:xref-ERC1155Receiver-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155Receiver-supportsInterface-bytes4- +:ERC20: pass:normal[xref:token/ERC20.adoc#ERC20[`ERC20`]] +:xref-ERC20: xref:token/ERC20.adoc#ERC20 +:ERC20-constructor: pass:normal[xref:token/ERC20.adoc#ERC20-constructor-string-string-[`ERC20.constructor`]] +:xref-ERC20-constructor-string-string-: xref:token/ERC20.adoc#ERC20-constructor-string-string- +:ERC20-name: pass:normal[xref:token/ERC20.adoc#ERC20-name--[`ERC20.name`]] +:xref-ERC20-name--: xref:token/ERC20.adoc#ERC20-name-- +:ERC20-symbol: pass:normal[xref:token/ERC20.adoc#ERC20-symbol--[`ERC20.symbol`]] +:xref-ERC20-symbol--: xref:token/ERC20.adoc#ERC20-symbol-- +:ERC20-decimals: pass:normal[xref:token/ERC20.adoc#ERC20-decimals--[`ERC20.decimals`]] +:xref-ERC20-decimals--: xref:token/ERC20.adoc#ERC20-decimals-- +:ERC20-totalSupply: pass:normal[xref:token/ERC20.adoc#ERC20-totalSupply--[`ERC20.totalSupply`]] +:xref-ERC20-totalSupply--: xref:token/ERC20.adoc#ERC20-totalSupply-- +:ERC20-balanceOf: pass:normal[xref:token/ERC20.adoc#ERC20-balanceOf-address-[`ERC20.balanceOf`]] +:xref-ERC20-balanceOf-address-: xref:token/ERC20.adoc#ERC20-balanceOf-address- +:ERC20-transfer: pass:normal[xref:token/ERC20.adoc#ERC20-transfer-address-uint256-[`ERC20.transfer`]] +:xref-ERC20-transfer-address-uint256-: xref:token/ERC20.adoc#ERC20-transfer-address-uint256- +:ERC20-allowance: pass:normal[xref:token/ERC20.adoc#ERC20-allowance-address-address-[`ERC20.allowance`]] +:xref-ERC20-allowance-address-address-: xref:token/ERC20.adoc#ERC20-allowance-address-address- +:ERC20-approve: pass:normal[xref:token/ERC20.adoc#ERC20-approve-address-uint256-[`ERC20.approve`]] +:xref-ERC20-approve-address-uint256-: xref:token/ERC20.adoc#ERC20-approve-address-uint256- +:ERC20-transferFrom: pass:normal[xref:token/ERC20.adoc#ERC20-transferFrom-address-address-uint256-[`ERC20.transferFrom`]] +:xref-ERC20-transferFrom-address-address-uint256-: xref:token/ERC20.adoc#ERC20-transferFrom-address-address-uint256- +:ERC20-increaseAllowance: pass:normal[xref:token/ERC20.adoc#ERC20-increaseAllowance-address-uint256-[`ERC20.increaseAllowance`]] +:xref-ERC20-increaseAllowance-address-uint256-: xref:token/ERC20.adoc#ERC20-increaseAllowance-address-uint256- +:ERC20-decreaseAllowance: pass:normal[xref:token/ERC20.adoc#ERC20-decreaseAllowance-address-uint256-[`ERC20.decreaseAllowance`]] +:xref-ERC20-decreaseAllowance-address-uint256-: xref:token/ERC20.adoc#ERC20-decreaseAllowance-address-uint256- +:ERC20-_transfer: pass:normal[xref:token/ERC20.adoc#ERC20-_transfer-address-address-uint256-[`ERC20._transfer`]] +:xref-ERC20-_transfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_transfer-address-address-uint256- +:ERC20-_mint: pass:normal[xref:token/ERC20.adoc#ERC20-_mint-address-uint256-[`ERC20._mint`]] +:xref-ERC20-_mint-address-uint256-: xref:token/ERC20.adoc#ERC20-_mint-address-uint256- +:ERC20-_burn: pass:normal[xref:token/ERC20.adoc#ERC20-_burn-address-uint256-[`ERC20._burn`]] +:xref-ERC20-_burn-address-uint256-: xref:token/ERC20.adoc#ERC20-_burn-address-uint256- +:ERC20-_approve: pass:normal[xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256-[`ERC20._approve`]] +:xref-ERC20-_approve-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256- +:ERC20-_spendAllowance: pass:normal[xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256-[`ERC20._spendAllowance`]] +:xref-ERC20-_spendAllowance-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256- +:ERC20-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256-[`ERC20._beforeTokenTransfer`]] +:xref-ERC20-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256- +:ERC20-_afterTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_afterTokenTransfer-address-address-uint256-[`ERC20._afterTokenTransfer`]] +:xref-ERC20-_afterTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_afterTokenTransfer-address-address-uint256- +:IERC20: pass:normal[xref:token/ERC20.adoc#IERC20[`IERC20`]] +:xref-IERC20: xref:token/ERC20.adoc#IERC20 +:IERC20-totalSupply: pass:normal[xref:token/ERC20.adoc#IERC20-totalSupply--[`IERC20.totalSupply`]] +:xref-IERC20-totalSupply--: xref:token/ERC20.adoc#IERC20-totalSupply-- +:IERC20-balanceOf: pass:normal[xref:token/ERC20.adoc#IERC20-balanceOf-address-[`IERC20.balanceOf`]] +:xref-IERC20-balanceOf-address-: xref:token/ERC20.adoc#IERC20-balanceOf-address- +:IERC20-transfer: pass:normal[xref:token/ERC20.adoc#IERC20-transfer-address-uint256-[`IERC20.transfer`]] +:xref-IERC20-transfer-address-uint256-: xref:token/ERC20.adoc#IERC20-transfer-address-uint256- +:IERC20-allowance: pass:normal[xref:token/ERC20.adoc#IERC20-allowance-address-address-[`IERC20.allowance`]] +:xref-IERC20-allowance-address-address-: xref:token/ERC20.adoc#IERC20-allowance-address-address- +:IERC20-approve: pass:normal[xref:token/ERC20.adoc#IERC20-approve-address-uint256-[`IERC20.approve`]] +:xref-IERC20-approve-address-uint256-: xref:token/ERC20.adoc#IERC20-approve-address-uint256- +:IERC20-transferFrom: pass:normal[xref:token/ERC20.adoc#IERC20-transferFrom-address-address-uint256-[`IERC20.transferFrom`]] +:xref-IERC20-transferFrom-address-address-uint256-: xref:token/ERC20.adoc#IERC20-transferFrom-address-address-uint256- +:IERC20-Transfer: pass:normal[xref:token/ERC20.adoc#IERC20-Transfer-address-address-uint256-[`IERC20.Transfer`]] +:xref-IERC20-Transfer-address-address-uint256-: xref:token/ERC20.adoc#IERC20-Transfer-address-address-uint256- +:IERC20-Approval: pass:normal[xref:token/ERC20.adoc#IERC20-Approval-address-address-uint256-[`IERC20.Approval`]] +:xref-IERC20-Approval-address-address-uint256-: xref:token/ERC20.adoc#IERC20-Approval-address-address-uint256- +:ERC20Burnable: pass:normal[xref:token/ERC20.adoc#ERC20Burnable[`ERC20Burnable`]] +:xref-ERC20Burnable: xref:token/ERC20.adoc#ERC20Burnable +:ERC20Burnable-burn: pass:normal[xref:token/ERC20.adoc#ERC20Burnable-burn-uint256-[`ERC20Burnable.burn`]] +:xref-ERC20Burnable-burn-uint256-: xref:token/ERC20.adoc#ERC20Burnable-burn-uint256- +:ERC20Burnable-burnFrom: pass:normal[xref:token/ERC20.adoc#ERC20Burnable-burnFrom-address-uint256-[`ERC20Burnable.burnFrom`]] +:xref-ERC20Burnable-burnFrom-address-uint256-: xref:token/ERC20.adoc#ERC20Burnable-burnFrom-address-uint256- +:ERC20Capped: pass:normal[xref:token/ERC20.adoc#ERC20Capped[`ERC20Capped`]] +:xref-ERC20Capped: xref:token/ERC20.adoc#ERC20Capped +:ERC20Capped-constructor: pass:normal[xref:token/ERC20.adoc#ERC20Capped-constructor-uint256-[`ERC20Capped.constructor`]] +:xref-ERC20Capped-constructor-uint256-: xref:token/ERC20.adoc#ERC20Capped-constructor-uint256- +:ERC20Capped-cap: pass:normal[xref:token/ERC20.adoc#ERC20Capped-cap--[`ERC20Capped.cap`]] +:xref-ERC20Capped-cap--: xref:token/ERC20.adoc#ERC20Capped-cap-- +:ERC20Capped-_mint: pass:normal[xref:token/ERC20.adoc#ERC20Capped-_mint-address-uint256-[`ERC20Capped._mint`]] +:xref-ERC20Capped-_mint-address-uint256-: xref:token/ERC20.adoc#ERC20Capped-_mint-address-uint256- +:ERC20FlashMint: pass:normal[xref:token/ERC20.adoc#ERC20FlashMint[`ERC20FlashMint`]] +:xref-ERC20FlashMint: xref:token/ERC20.adoc#ERC20FlashMint +:ERC20FlashMint-maxFlashLoan: pass:normal[xref:token/ERC20.adoc#ERC20FlashMint-maxFlashLoan-address-[`ERC20FlashMint.maxFlashLoan`]] +:xref-ERC20FlashMint-maxFlashLoan-address-: xref:token/ERC20.adoc#ERC20FlashMint-maxFlashLoan-address- +:ERC20FlashMint-flashFee: pass:normal[xref:token/ERC20.adoc#ERC20FlashMint-flashFee-address-uint256-[`ERC20FlashMint.flashFee`]] +:xref-ERC20FlashMint-flashFee-address-uint256-: xref:token/ERC20.adoc#ERC20FlashMint-flashFee-address-uint256- +:ERC20FlashMint-flashLoan: pass:normal[xref:token/ERC20.adoc#ERC20FlashMint-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-[`ERC20FlashMint.flashLoan`]] +:xref-ERC20FlashMint-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-: xref:token/ERC20.adoc#ERC20FlashMint-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes- +:ERC20Pausable: pass:normal[xref:token/ERC20.adoc#ERC20Pausable[`ERC20Pausable`]] +:xref-ERC20Pausable: xref:token/ERC20.adoc#ERC20Pausable +:ERC20Pausable-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20Pausable-_beforeTokenTransfer-address-address-uint256-[`ERC20Pausable._beforeTokenTransfer`]] +:xref-ERC20Pausable-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20Pausable-_beforeTokenTransfer-address-address-uint256- +:ERC20Snapshot: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot[`ERC20Snapshot`]] +:xref-ERC20Snapshot: xref:token/ERC20.adoc#ERC20Snapshot +:ERC20Snapshot-_snapshot: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-_snapshot--[`ERC20Snapshot._snapshot`]] +:xref-ERC20Snapshot-_snapshot--: xref:token/ERC20.adoc#ERC20Snapshot-_snapshot-- +:ERC20Snapshot-_getCurrentSnapshotId: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-_getCurrentSnapshotId--[`ERC20Snapshot._getCurrentSnapshotId`]] +:xref-ERC20Snapshot-_getCurrentSnapshotId--: xref:token/ERC20.adoc#ERC20Snapshot-_getCurrentSnapshotId-- +:ERC20Snapshot-balanceOfAt: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-balanceOfAt-address-uint256-[`ERC20Snapshot.balanceOfAt`]] +:xref-ERC20Snapshot-balanceOfAt-address-uint256-: xref:token/ERC20.adoc#ERC20Snapshot-balanceOfAt-address-uint256- +:ERC20Snapshot-totalSupplyAt: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-totalSupplyAt-uint256-[`ERC20Snapshot.totalSupplyAt`]] +:xref-ERC20Snapshot-totalSupplyAt-uint256-: xref:token/ERC20.adoc#ERC20Snapshot-totalSupplyAt-uint256- +:ERC20Snapshot-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-_beforeTokenTransfer-address-address-uint256-[`ERC20Snapshot._beforeTokenTransfer`]] +:xref-ERC20Snapshot-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20Snapshot-_beforeTokenTransfer-address-address-uint256- +:ERC20Snapshot-Snapshot: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-Snapshot-uint256-[`ERC20Snapshot.Snapshot`]] +:xref-ERC20Snapshot-Snapshot-uint256-: xref:token/ERC20.adoc#ERC20Snapshot-Snapshot-uint256- +:ERC20Snapshot-Snapshots: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-Snapshots[`ERC20Snapshot.Snapshots`]] +:xref-ERC20Snapshot-Snapshots: xref:token/ERC20.adoc#ERC20Snapshot-Snapshots +:ERC20Votes: pass:normal[xref:token/ERC20.adoc#ERC20Votes[`ERC20Votes`]] +:xref-ERC20Votes: xref:token/ERC20.adoc#ERC20Votes +:ERC20Votes-checkpoints: pass:normal[xref:token/ERC20.adoc#ERC20Votes-checkpoints-address-uint32-[`ERC20Votes.checkpoints`]] +:xref-ERC20Votes-checkpoints-address-uint32-: xref:token/ERC20.adoc#ERC20Votes-checkpoints-address-uint32- +:ERC20Votes-numCheckpoints: pass:normal[xref:token/ERC20.adoc#ERC20Votes-numCheckpoints-address-[`ERC20Votes.numCheckpoints`]] +:xref-ERC20Votes-numCheckpoints-address-: xref:token/ERC20.adoc#ERC20Votes-numCheckpoints-address- +:ERC20Votes-delegates: pass:normal[xref:token/ERC20.adoc#ERC20Votes-delegates-address-[`ERC20Votes.delegates`]] +:xref-ERC20Votes-delegates-address-: xref:token/ERC20.adoc#ERC20Votes-delegates-address- +:ERC20Votes-getVotes: pass:normal[xref:token/ERC20.adoc#ERC20Votes-getVotes-address-[`ERC20Votes.getVotes`]] +:xref-ERC20Votes-getVotes-address-: xref:token/ERC20.adoc#ERC20Votes-getVotes-address- +:ERC20Votes-getPastVotes: pass:normal[xref:token/ERC20.adoc#ERC20Votes-getPastVotes-address-uint256-[`ERC20Votes.getPastVotes`]] +:xref-ERC20Votes-getPastVotes-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-getPastVotes-address-uint256- +:ERC20Votes-getPastTotalSupply: pass:normal[xref:token/ERC20.adoc#ERC20Votes-getPastTotalSupply-uint256-[`ERC20Votes.getPastTotalSupply`]] +:xref-ERC20Votes-getPastTotalSupply-uint256-: xref:token/ERC20.adoc#ERC20Votes-getPastTotalSupply-uint256- +:ERC20Votes-delegate: pass:normal[xref:token/ERC20.adoc#ERC20Votes-delegate-address-[`ERC20Votes.delegate`]] +:xref-ERC20Votes-delegate-address-: xref:token/ERC20.adoc#ERC20Votes-delegate-address- +:ERC20Votes-delegateBySig: pass:normal[xref:token/ERC20.adoc#ERC20Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Votes.delegateBySig`]] +:xref-ERC20Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:token/ERC20.adoc#ERC20Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:ERC20Votes-_maxSupply: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_maxSupply--[`ERC20Votes._maxSupply`]] +:xref-ERC20Votes-_maxSupply--: xref:token/ERC20.adoc#ERC20Votes-_maxSupply-- +:ERC20Votes-_mint: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_mint-address-uint256-[`ERC20Votes._mint`]] +:xref-ERC20Votes-_mint-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-_mint-address-uint256- +:ERC20Votes-_burn: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_burn-address-uint256-[`ERC20Votes._burn`]] +:xref-ERC20Votes-_burn-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-_burn-address-uint256- +:ERC20Votes-_afterTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_afterTokenTransfer-address-address-uint256-[`ERC20Votes._afterTokenTransfer`]] +:xref-ERC20Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-_afterTokenTransfer-address-address-uint256- +:ERC20Votes-_delegate: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address-[`ERC20Votes._delegate`]] +:xref-ERC20Votes-_delegate-address-address-: xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address- +:ERC20Votes-Checkpoint: pass:normal[xref:token/ERC20.adoc#ERC20Votes-Checkpoint[`ERC20Votes.Checkpoint`]] +:xref-ERC20Votes-Checkpoint: xref:token/ERC20.adoc#ERC20Votes-Checkpoint +:ERC20VotesComp: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp[`ERC20VotesComp`]] +:xref-ERC20VotesComp: xref:token/ERC20.adoc#ERC20VotesComp +:ERC20VotesComp-getCurrentVotes: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp-getCurrentVotes-address-[`ERC20VotesComp.getCurrentVotes`]] +:xref-ERC20VotesComp-getCurrentVotes-address-: xref:token/ERC20.adoc#ERC20VotesComp-getCurrentVotes-address- +:ERC20VotesComp-getPriorVotes: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp-getPriorVotes-address-uint256-[`ERC20VotesComp.getPriorVotes`]] +:xref-ERC20VotesComp-getPriorVotes-address-uint256-: xref:token/ERC20.adoc#ERC20VotesComp-getPriorVotes-address-uint256- +:ERC20VotesComp-_maxSupply: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp-_maxSupply--[`ERC20VotesComp._maxSupply`]] +:xref-ERC20VotesComp-_maxSupply--: xref:token/ERC20.adoc#ERC20VotesComp-_maxSupply-- +:ERC20Wrapper: pass:normal[xref:token/ERC20.adoc#ERC20Wrapper[`ERC20Wrapper`]] +:xref-ERC20Wrapper: xref:token/ERC20.adoc#ERC20Wrapper +:ERC20Wrapper-underlying: pass:normal[xref:token/ERC20.adoc#ERC20Wrapper-underlying-contract-IERC20[`ERC20Wrapper.underlying`]] +:xref-ERC20Wrapper-underlying-contract-IERC20: xref:token/ERC20.adoc#ERC20Wrapper-underlying-contract-IERC20 +:ERC20Wrapper-constructor: pass:normal[xref:token/ERC20.adoc#ERC20Wrapper-constructor-contract-IERC20-[`ERC20Wrapper.constructor`]] +:xref-ERC20Wrapper-constructor-contract-IERC20-: xref:token/ERC20.adoc#ERC20Wrapper-constructor-contract-IERC20- +:ERC20Wrapper-depositFor: pass:normal[xref:token/ERC20.adoc#ERC20Wrapper-depositFor-address-uint256-[`ERC20Wrapper.depositFor`]] +:xref-ERC20Wrapper-depositFor-address-uint256-: xref:token/ERC20.adoc#ERC20Wrapper-depositFor-address-uint256- +:ERC20Wrapper-withdrawTo: pass:normal[xref:token/ERC20.adoc#ERC20Wrapper-withdrawTo-address-uint256-[`ERC20Wrapper.withdrawTo`]] +:xref-ERC20Wrapper-withdrawTo-address-uint256-: xref:token/ERC20.adoc#ERC20Wrapper-withdrawTo-address-uint256- +:ERC20Wrapper-_recover: pass:normal[xref:token/ERC20.adoc#ERC20Wrapper-_recover-address-[`ERC20Wrapper._recover`]] +:xref-ERC20Wrapper-_recover-address-: xref:token/ERC20.adoc#ERC20Wrapper-_recover-address- +:IERC20Metadata: pass:normal[xref:token/ERC20.adoc#IERC20Metadata[`IERC20Metadata`]] +:xref-IERC20Metadata: xref:token/ERC20.adoc#IERC20Metadata +:IERC20Metadata-name: pass:normal[xref:token/ERC20.adoc#IERC20Metadata-name--[`IERC20Metadata.name`]] +:xref-IERC20Metadata-name--: xref:token/ERC20.adoc#IERC20Metadata-name-- +:IERC20Metadata-symbol: pass:normal[xref:token/ERC20.adoc#IERC20Metadata-symbol--[`IERC20Metadata.symbol`]] +:xref-IERC20Metadata-symbol--: xref:token/ERC20.adoc#IERC20Metadata-symbol-- +:IERC20Metadata-decimals: pass:normal[xref:token/ERC20.adoc#IERC20Metadata-decimals--[`IERC20Metadata.decimals`]] +:xref-IERC20Metadata-decimals--: xref:token/ERC20.adoc#IERC20Metadata-decimals-- +:ERC20Permit: pass:normal[xref:token/ERC20.adoc#ERC20Permit[`ERC20Permit`]] +:xref-ERC20Permit: xref:token/ERC20.adoc#ERC20Permit +:ERC20Permit-constructor: pass:normal[xref:token/ERC20.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]] +:xref-ERC20Permit-constructor-string-: xref:token/ERC20.adoc#ERC20Permit-constructor-string- +:ERC20Permit-permit: pass:normal[xref:token/ERC20.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]] +:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:token/ERC20.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32- +:ERC20Permit-nonces: pass:normal[xref:token/ERC20.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]] +:xref-ERC20Permit-nonces-address-: xref:token/ERC20.adoc#ERC20Permit-nonces-address- +:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:token/ERC20.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]] +:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:token/ERC20.adoc#ERC20Permit-DOMAIN_SEPARATOR-- +:ERC20Permit-_useNonce: pass:normal[xref:token/ERC20.adoc#ERC20Permit-_useNonce-address-[`ERC20Permit._useNonce`]] +:xref-ERC20Permit-_useNonce-address-: xref:token/ERC20.adoc#ERC20Permit-_useNonce-address- +:IERC20Permit: pass:normal[xref:token/ERC20.adoc#IERC20Permit[`IERC20Permit`]] +:xref-IERC20Permit: xref:token/ERC20.adoc#IERC20Permit +:IERC20Permit-permit: pass:normal[xref:token/ERC20.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]] +:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:token/ERC20.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32- +:IERC20Permit-nonces: pass:normal[xref:token/ERC20.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]] +:xref-IERC20Permit-nonces-address-: xref:token/ERC20.adoc#IERC20Permit-nonces-address- +:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]] +:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR-- +:SafeERC20: pass:normal[xref:token/ERC20.adoc#SafeERC20[`SafeERC20`]] +:xref-SafeERC20: xref:token/ERC20.adoc#SafeERC20 +:SafeERC20-safeTransfer: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeTransfer-contract-IERC20-address-uint256-[`SafeERC20.safeTransfer`]] +:xref-SafeERC20-safeTransfer-contract-IERC20-address-uint256-: xref:token/ERC20.adoc#SafeERC20-safeTransfer-contract-IERC20-address-uint256- +:SafeERC20-safeTransferFrom: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeTransferFrom-contract-IERC20-address-address-uint256-[`SafeERC20.safeTransferFrom`]] +:xref-SafeERC20-safeTransferFrom-contract-IERC20-address-address-uint256-: xref:token/ERC20.adoc#SafeERC20-safeTransferFrom-contract-IERC20-address-address-uint256- +:SafeERC20-safeApprove: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeApprove-contract-IERC20-address-uint256-[`SafeERC20.safeApprove`]] +:xref-SafeERC20-safeApprove-contract-IERC20-address-uint256-: xref:token/ERC20.adoc#SafeERC20-safeApprove-contract-IERC20-address-uint256- +:SafeERC20-safeIncreaseAllowance: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeIncreaseAllowance-contract-IERC20-address-uint256-[`SafeERC20.safeIncreaseAllowance`]] +:xref-SafeERC20-safeIncreaseAllowance-contract-IERC20-address-uint256-: xref:token/ERC20.adoc#SafeERC20-safeIncreaseAllowance-contract-IERC20-address-uint256- +:SafeERC20-safeDecreaseAllowance: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeDecreaseAllowance-contract-IERC20-address-uint256-[`SafeERC20.safeDecreaseAllowance`]] +:xref-SafeERC20-safeDecreaseAllowance-contract-IERC20-address-uint256-: xref:token/ERC20.adoc#SafeERC20-safeDecreaseAllowance-contract-IERC20-address-uint256- +:TokenTimelock: pass:normal[xref:token/ERC20.adoc#TokenTimelock[`TokenTimelock`]] +:xref-TokenTimelock: xref:token/ERC20.adoc#TokenTimelock +:TokenTimelock-constructor: pass:normal[xref:token/ERC20.adoc#TokenTimelock-constructor-contract-IERC20-address-uint256-[`TokenTimelock.constructor`]] +:xref-TokenTimelock-constructor-contract-IERC20-address-uint256-: xref:token/ERC20.adoc#TokenTimelock-constructor-contract-IERC20-address-uint256- +:TokenTimelock-token: pass:normal[xref:token/ERC20.adoc#TokenTimelock-token--[`TokenTimelock.token`]] +:xref-TokenTimelock-token--: xref:token/ERC20.adoc#TokenTimelock-token-- +:TokenTimelock-beneficiary: pass:normal[xref:token/ERC20.adoc#TokenTimelock-beneficiary--[`TokenTimelock.beneficiary`]] +:xref-TokenTimelock-beneficiary--: xref:token/ERC20.adoc#TokenTimelock-beneficiary-- +:TokenTimelock-releaseTime: pass:normal[xref:token/ERC20.adoc#TokenTimelock-releaseTime--[`TokenTimelock.releaseTime`]] +:xref-TokenTimelock-releaseTime--: xref:token/ERC20.adoc#TokenTimelock-releaseTime-- +:TokenTimelock-release: pass:normal[xref:token/ERC20.adoc#TokenTimelock-release--[`TokenTimelock.release`]] +:xref-TokenTimelock-release--: xref:token/ERC20.adoc#TokenTimelock-release-- +:ERC721: pass:normal[xref:token/ERC721.adoc#ERC721[`ERC721`]] +:xref-ERC721: xref:token/ERC721.adoc#ERC721 +:ERC721-constructor: pass:normal[xref:token/ERC721.adoc#ERC721-constructor-string-string-[`ERC721.constructor`]] +:xref-ERC721-constructor-string-string-: xref:token/ERC721.adoc#ERC721-constructor-string-string- +:ERC721-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721-supportsInterface-bytes4-[`ERC721.supportsInterface`]] +:xref-ERC721-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721-supportsInterface-bytes4- +:ERC721-balanceOf: pass:normal[xref:token/ERC721.adoc#ERC721-balanceOf-address-[`ERC721.balanceOf`]] +:xref-ERC721-balanceOf-address-: xref:token/ERC721.adoc#ERC721-balanceOf-address- +:ERC721-ownerOf: pass:normal[xref:token/ERC721.adoc#ERC721-ownerOf-uint256-[`ERC721.ownerOf`]] +:xref-ERC721-ownerOf-uint256-: xref:token/ERC721.adoc#ERC721-ownerOf-uint256- +:ERC721-name: pass:normal[xref:token/ERC721.adoc#ERC721-name--[`ERC721.name`]] +:xref-ERC721-name--: xref:token/ERC721.adoc#ERC721-name-- +:ERC721-symbol: pass:normal[xref:token/ERC721.adoc#ERC721-symbol--[`ERC721.symbol`]] +:xref-ERC721-symbol--: xref:token/ERC721.adoc#ERC721-symbol-- +:ERC721-tokenURI: pass:normal[xref:token/ERC721.adoc#ERC721-tokenURI-uint256-[`ERC721.tokenURI`]] +:xref-ERC721-tokenURI-uint256-: xref:token/ERC721.adoc#ERC721-tokenURI-uint256- +:ERC721-_baseURI: pass:normal[xref:token/ERC721.adoc#ERC721-_baseURI--[`ERC721._baseURI`]] +:xref-ERC721-_baseURI--: xref:token/ERC721.adoc#ERC721-_baseURI-- +:ERC721-approve: pass:normal[xref:token/ERC721.adoc#ERC721-approve-address-uint256-[`ERC721.approve`]] +:xref-ERC721-approve-address-uint256-: xref:token/ERC721.adoc#ERC721-approve-address-uint256- +:ERC721-getApproved: pass:normal[xref:token/ERC721.adoc#ERC721-getApproved-uint256-[`ERC721.getApproved`]] +:xref-ERC721-getApproved-uint256-: xref:token/ERC721.adoc#ERC721-getApproved-uint256- +:ERC721-setApprovalForAll: pass:normal[xref:token/ERC721.adoc#ERC721-setApprovalForAll-address-bool-[`ERC721.setApprovalForAll`]] +:xref-ERC721-setApprovalForAll-address-bool-: xref:token/ERC721.adoc#ERC721-setApprovalForAll-address-bool- +:ERC721-isApprovedForAll: pass:normal[xref:token/ERC721.adoc#ERC721-isApprovedForAll-address-address-[`ERC721.isApprovedForAll`]] +:xref-ERC721-isApprovedForAll-address-address-: xref:token/ERC721.adoc#ERC721-isApprovedForAll-address-address- +:ERC721-transferFrom: pass:normal[xref:token/ERC721.adoc#ERC721-transferFrom-address-address-uint256-[`ERC721.transferFrom`]] +:xref-ERC721-transferFrom-address-address-uint256-: xref:token/ERC721.adoc#ERC721-transferFrom-address-address-uint256- +:ERC721-safeTransferFrom: pass:normal[xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-[`ERC721.safeTransferFrom`]] +:xref-ERC721-safeTransferFrom-address-address-uint256-: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256- +:ERC721-safeTransferFrom: pass:normal[xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-bytes-[`ERC721.safeTransferFrom`]] +:xref-ERC721-safeTransferFrom-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-bytes- +:ERC721-_safeTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-bytes-[`ERC721._safeTransfer`]] +:xref-ERC721-_safeTransfer-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-bytes- +:ERC721-_exists: pass:normal[xref:token/ERC721.adoc#ERC721-_exists-uint256-[`ERC721._exists`]] +:xref-ERC721-_exists-uint256-: xref:token/ERC721.adoc#ERC721-_exists-uint256- +:ERC721-_isApprovedOrOwner: pass:normal[xref:token/ERC721.adoc#ERC721-_isApprovedOrOwner-address-uint256-[`ERC721._isApprovedOrOwner`]] +:xref-ERC721-_isApprovedOrOwner-address-uint256-: xref:token/ERC721.adoc#ERC721-_isApprovedOrOwner-address-uint256- +:ERC721-_safeMint: pass:normal[xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-[`ERC721._safeMint`]] +:xref-ERC721-_safeMint-address-uint256-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256- +:ERC721-_safeMint: pass:normal[xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-bytes-[`ERC721._safeMint`]] +:xref-ERC721-_safeMint-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-bytes- +:ERC721-_mint: pass:normal[xref:token/ERC721.adoc#ERC721-_mint-address-uint256-[`ERC721._mint`]] +:xref-ERC721-_mint-address-uint256-: xref:token/ERC721.adoc#ERC721-_mint-address-uint256- +:ERC721-_burn: pass:normal[xref:token/ERC721.adoc#ERC721-_burn-uint256-[`ERC721._burn`]] +:xref-ERC721-_burn-uint256-: xref:token/ERC721.adoc#ERC721-_burn-uint256- +:ERC721-_transfer: pass:normal[xref:token/ERC721.adoc#ERC721-_transfer-address-address-uint256-[`ERC721._transfer`]] +:xref-ERC721-_transfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_transfer-address-address-uint256- +:ERC721-_approve: pass:normal[xref:token/ERC721.adoc#ERC721-_approve-address-uint256-[`ERC721._approve`]] +:xref-ERC721-_approve-address-uint256-: xref:token/ERC721.adoc#ERC721-_approve-address-uint256- +:ERC721-_setApprovalForAll: pass:normal[xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool-[`ERC721._setApprovalForAll`]] +:xref-ERC721-_setApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool- +:ERC721-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256-[`ERC721._beforeTokenTransfer`]] +:xref-ERC721-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256- +:ERC721-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256-[`ERC721._afterTokenTransfer`]] +:xref-ERC721-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256- +:IERC721: pass:normal[xref:token/ERC721.adoc#IERC721[`IERC721`]] +:xref-IERC721: xref:token/ERC721.adoc#IERC721 +:IERC721-balanceOf: pass:normal[xref:token/ERC721.adoc#IERC721-balanceOf-address-[`IERC721.balanceOf`]] +:xref-IERC721-balanceOf-address-: xref:token/ERC721.adoc#IERC721-balanceOf-address- +:IERC721-ownerOf: pass:normal[xref:token/ERC721.adoc#IERC721-ownerOf-uint256-[`IERC721.ownerOf`]] +:xref-IERC721-ownerOf-uint256-: xref:token/ERC721.adoc#IERC721-ownerOf-uint256- +:IERC721-safeTransferFrom: pass:normal[xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256-[`IERC721.safeTransferFrom`]] +:xref-IERC721-safeTransferFrom-address-address-uint256-: xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256- +:IERC721-transferFrom: pass:normal[xref:token/ERC721.adoc#IERC721-transferFrom-address-address-uint256-[`IERC721.transferFrom`]] +:xref-IERC721-transferFrom-address-address-uint256-: xref:token/ERC721.adoc#IERC721-transferFrom-address-address-uint256- +:IERC721-approve: pass:normal[xref:token/ERC721.adoc#IERC721-approve-address-uint256-[`IERC721.approve`]] +:xref-IERC721-approve-address-uint256-: xref:token/ERC721.adoc#IERC721-approve-address-uint256- +:IERC721-getApproved: pass:normal[xref:token/ERC721.adoc#IERC721-getApproved-uint256-[`IERC721.getApproved`]] +:xref-IERC721-getApproved-uint256-: xref:token/ERC721.adoc#IERC721-getApproved-uint256- +:IERC721-setApprovalForAll: pass:normal[xref:token/ERC721.adoc#IERC721-setApprovalForAll-address-bool-[`IERC721.setApprovalForAll`]] +:xref-IERC721-setApprovalForAll-address-bool-: xref:token/ERC721.adoc#IERC721-setApprovalForAll-address-bool- +:IERC721-isApprovedForAll: pass:normal[xref:token/ERC721.adoc#IERC721-isApprovedForAll-address-address-[`IERC721.isApprovedForAll`]] +:xref-IERC721-isApprovedForAll-address-address-: xref:token/ERC721.adoc#IERC721-isApprovedForAll-address-address- +:IERC721-safeTransferFrom: pass:normal[xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256-bytes-[`IERC721.safeTransferFrom`]] +:xref-IERC721-safeTransferFrom-address-address-uint256-bytes-: xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256-bytes- +:IERC721-Transfer: pass:normal[xref:token/ERC721.adoc#IERC721-Transfer-address-address-uint256-[`IERC721.Transfer`]] +:xref-IERC721-Transfer-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Transfer-address-address-uint256- +:IERC721-Approval: pass:normal[xref:token/ERC721.adoc#IERC721-Approval-address-address-uint256-[`IERC721.Approval`]] +:xref-IERC721-Approval-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Approval-address-address-uint256- +:IERC721-ApprovalForAll: pass:normal[xref:token/ERC721.adoc#IERC721-ApprovalForAll-address-address-bool-[`IERC721.ApprovalForAll`]] +:xref-IERC721-ApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#IERC721-ApprovalForAll-address-address-bool- +:IERC721Receiver: pass:normal[xref:token/ERC721.adoc#IERC721Receiver[`IERC721Receiver`]] +:xref-IERC721Receiver: xref:token/ERC721.adoc#IERC721Receiver +:IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]] +:xref-IERC721Receiver-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes- +:ERC721Burnable: pass:normal[xref:token/ERC721.adoc#ERC721Burnable[`ERC721Burnable`]] +:xref-ERC721Burnable: xref:token/ERC721.adoc#ERC721Burnable +:ERC721Burnable-burn: pass:normal[xref:token/ERC721.adoc#ERC721Burnable-burn-uint256-[`ERC721Burnable.burn`]] +:xref-ERC721Burnable-burn-uint256-: xref:token/ERC721.adoc#ERC721Burnable-burn-uint256- +:ERC721Enumerable: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable[`ERC721Enumerable`]] +:xref-ERC721Enumerable: xref:token/ERC721.adoc#ERC721Enumerable +:ERC721Enumerable-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-supportsInterface-bytes4-[`ERC721Enumerable.supportsInterface`]] +:xref-ERC721Enumerable-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721Enumerable-supportsInterface-bytes4- +:ERC721Enumerable-tokenOfOwnerByIndex: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-tokenOfOwnerByIndex-address-uint256-[`ERC721Enumerable.tokenOfOwnerByIndex`]] +:xref-ERC721Enumerable-tokenOfOwnerByIndex-address-uint256-: xref:token/ERC721.adoc#ERC721Enumerable-tokenOfOwnerByIndex-address-uint256- +:ERC721Enumerable-totalSupply: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-totalSupply--[`ERC721Enumerable.totalSupply`]] +:xref-ERC721Enumerable-totalSupply--: xref:token/ERC721.adoc#ERC721Enumerable-totalSupply-- +:ERC721Enumerable-tokenByIndex: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-tokenByIndex-uint256-[`ERC721Enumerable.tokenByIndex`]] +:xref-ERC721Enumerable-tokenByIndex-uint256-: xref:token/ERC721.adoc#ERC721Enumerable-tokenByIndex-uint256- +:ERC721Enumerable-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-_beforeTokenTransfer-address-address-uint256-[`ERC721Enumerable._beforeTokenTransfer`]] +:xref-ERC721Enumerable-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Enumerable-_beforeTokenTransfer-address-address-uint256- +:ERC721Pausable: pass:normal[xref:token/ERC721.adoc#ERC721Pausable[`ERC721Pausable`]] +:xref-ERC721Pausable: xref:token/ERC721.adoc#ERC721Pausable +:ERC721Pausable-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256-[`ERC721Pausable._beforeTokenTransfer`]] +:xref-ERC721Pausable-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256- +:ERC721Royalty: pass:normal[xref:token/ERC721.adoc#ERC721Royalty[`ERC721Royalty`]] +:xref-ERC721Royalty: xref:token/ERC721.adoc#ERC721Royalty +:ERC721Royalty-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4-[`ERC721Royalty.supportsInterface`]] +:xref-ERC721Royalty-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4- +:ERC721Royalty-_burn: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256-[`ERC721Royalty._burn`]] +:xref-ERC721Royalty-_burn-uint256-: xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256- +:ERC721URIStorage: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage[`ERC721URIStorage`]] +:xref-ERC721URIStorage: xref:token/ERC721.adoc#ERC721URIStorage +:ERC721URIStorage-tokenURI: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage-tokenURI-uint256-[`ERC721URIStorage.tokenURI`]] +:xref-ERC721URIStorage-tokenURI-uint256-: xref:token/ERC721.adoc#ERC721URIStorage-tokenURI-uint256- +:ERC721URIStorage-_setTokenURI: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage-_setTokenURI-uint256-string-[`ERC721URIStorage._setTokenURI`]] +:xref-ERC721URIStorage-_setTokenURI-uint256-string-: xref:token/ERC721.adoc#ERC721URIStorage-_setTokenURI-uint256-string- +:ERC721URIStorage-_burn: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage-_burn-uint256-[`ERC721URIStorage._burn`]] +:xref-ERC721URIStorage-_burn-uint256-: xref:token/ERC721.adoc#ERC721URIStorage-_burn-uint256- +:IERC721Enumerable: pass:normal[xref:token/ERC721.adoc#IERC721Enumerable[`IERC721Enumerable`]] +:xref-IERC721Enumerable: xref:token/ERC721.adoc#IERC721Enumerable +:IERC721Enumerable-totalSupply: pass:normal[xref:token/ERC721.adoc#IERC721Enumerable-totalSupply--[`IERC721Enumerable.totalSupply`]] +:xref-IERC721Enumerable-totalSupply--: xref:token/ERC721.adoc#IERC721Enumerable-totalSupply-- +:IERC721Enumerable-tokenOfOwnerByIndex: pass:normal[xref:token/ERC721.adoc#IERC721Enumerable-tokenOfOwnerByIndex-address-uint256-[`IERC721Enumerable.tokenOfOwnerByIndex`]] +:xref-IERC721Enumerable-tokenOfOwnerByIndex-address-uint256-: xref:token/ERC721.adoc#IERC721Enumerable-tokenOfOwnerByIndex-address-uint256- +:IERC721Enumerable-tokenByIndex: pass:normal[xref:token/ERC721.adoc#IERC721Enumerable-tokenByIndex-uint256-[`IERC721Enumerable.tokenByIndex`]] +:xref-IERC721Enumerable-tokenByIndex-uint256-: xref:token/ERC721.adoc#IERC721Enumerable-tokenByIndex-uint256- +:IERC721Metadata: pass:normal[xref:token/ERC721.adoc#IERC721Metadata[`IERC721Metadata`]] +:xref-IERC721Metadata: xref:token/ERC721.adoc#IERC721Metadata +:IERC721Metadata-name: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-name--[`IERC721Metadata.name`]] +:xref-IERC721Metadata-name--: xref:token/ERC721.adoc#IERC721Metadata-name-- +:IERC721Metadata-symbol: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-symbol--[`IERC721Metadata.symbol`]] +:xref-IERC721Metadata-symbol--: xref:token/ERC721.adoc#IERC721Metadata-symbol-- +:IERC721Metadata-tokenURI: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256-[`IERC721Metadata.tokenURI`]] +:xref-IERC721Metadata-tokenURI-uint256-: xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256- +:ERC721Votes: pass:normal[xref:token/ERC721.adoc#ERC721Votes[`ERC721Votes`]] +:xref-ERC721Votes: xref:token/ERC721.adoc#ERC721Votes +:ERC721Votes-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256-[`ERC721Votes._afterTokenTransfer`]] +:xref-ERC721Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256- +:ERC721Votes-_getVotingUnits: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address-[`ERC721Votes._getVotingUnits`]] +:xref-ERC721Votes-_getVotingUnits-address-: xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address- +:ERC721Holder: pass:normal[xref:token/ERC721.adoc#ERC721Holder[`ERC721Holder`]] +:xref-ERC721Holder: xref:token/ERC721.adoc#ERC721Holder +:ERC721Holder-onERC721Received: pass:normal[xref:token/ERC721.adoc#ERC721Holder-onERC721Received-address-address-uint256-bytes-[`ERC721Holder.onERC721Received`]] +:xref-ERC721Holder-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721Holder-onERC721Received-address-address-uint256-bytes- +:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]] +:xref-ERC777: xref:token/ERC777.adoc#ERC777 +:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]] +:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry +:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]] +:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address--- +:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]] +:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name-- +:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]] +:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol-- +:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]] +:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals-- +:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]] +:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity-- +:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]] +:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply-- +:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]] +:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address- +:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]] +:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes- +:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]] +:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256- +:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]] +:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes- +:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]] +:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address- +:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]] +:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address- +:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]] +:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address- +:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]] +:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators-- +:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]] +:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes- +:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]] +:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes- +:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]] +:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address- +:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]] +:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256- +:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]] +:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256- +:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]] +:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes- +:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-bool-[`ERC777._mint`]] +:xref-ERC777-_mint-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-bool- +:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]] +:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool- +:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]] +:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes- +:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]] +:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256- +:ERC777-_spendAllowance: pass:normal[xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256-[`ERC777._spendAllowance`]] +:xref-ERC777-_spendAllowance-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256- +:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]] +:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256- +:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]] +:xref-IERC777: xref:token/ERC777.adoc#IERC777 +:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]] +:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name-- +:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]] +:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol-- +:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]] +:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity-- +:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]] +:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply-- +:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]] +:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address- +:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]] +:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes- +:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]] +:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes- +:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]] +:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address- +:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]] +:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address- +:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]] +:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address- +:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]] +:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators-- +:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]] +:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes- +:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]] +:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes- +:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]] +:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes- +:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]] +:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes- +:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]] +:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes- +:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]] +:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address- +:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]] +:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address- +:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]] +:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient +:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]] +:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes- +:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]] +:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender +:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]] +:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes- +:ERC777PresetFixedSupply: pass:normal[xref:token/ERC777.adoc#ERC777PresetFixedSupply[`ERC777PresetFixedSupply`]] +:xref-ERC777PresetFixedSupply: xref:token/ERC777.adoc#ERC777PresetFixedSupply +:ERC777PresetFixedSupply-constructor: pass:normal[xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-[`ERC777PresetFixedSupply.constructor`]] +:xref-ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-: xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address- +:ERC2981: pass:normal[xref:token/common.adoc#ERC2981[`ERC2981`]] +:xref-ERC2981: xref:token/common.adoc#ERC2981 +:ERC2981-supportsInterface: pass:normal[xref:token/common.adoc#ERC2981-supportsInterface-bytes4-[`ERC2981.supportsInterface`]] +:xref-ERC2981-supportsInterface-bytes4-: xref:token/common.adoc#ERC2981-supportsInterface-bytes4- +:ERC2981-royaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256-[`ERC2981.royaltyInfo`]] +:xref-ERC2981-royaltyInfo-uint256-uint256-: xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256- +:ERC2981-_feeDenominator: pass:normal[xref:token/common.adoc#ERC2981-_feeDenominator--[`ERC2981._feeDenominator`]] +:xref-ERC2981-_feeDenominator--: xref:token/common.adoc#ERC2981-_feeDenominator-- +:ERC2981-_setDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96-[`ERC2981._setDefaultRoyalty`]] +:xref-ERC2981-_setDefaultRoyalty-address-uint96-: xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96- +:ERC2981-_deleteDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty--[`ERC2981._deleteDefaultRoyalty`]] +:xref-ERC2981-_deleteDefaultRoyalty--: xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty-- +:ERC2981-_setTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96-[`ERC2981._setTokenRoyalty`]] +:xref-ERC2981-_setTokenRoyalty-uint256-address-uint96-: xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96- +:ERC2981-_resetTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256-[`ERC2981._resetTokenRoyalty`]] +:xref-ERC2981-_resetTokenRoyalty-uint256-: xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256- +:ERC2981-RoyaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-RoyaltyInfo[`ERC2981.RoyaltyInfo`]] +:xref-ERC2981-RoyaltyInfo: xref:token/common.adoc#ERC2981-RoyaltyInfo +:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] +:xref-ERC1155PresetMinterPauser: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser +:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] +:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string- +:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] +:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- +:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] +:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- +:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] +:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause-- +:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] +:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause-- +:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] +:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4- +:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] +:xref-ERC20PresetFixedSupply: xref:token/ERC20/presets.md#ERC20PresetFixedSupply +:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] +:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address- +:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] +:xref-ERC20PresetMinterPauser: xref:token/ERC20/presets.md#ERC20PresetMinterPauser +:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] +:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string- +:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] +:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256- +:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] +:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause-- +:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] +:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause-- +:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] +:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId +:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] +:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string- +:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] +:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI-- +:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] +:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address- +:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] +:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause-- +:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] +:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause-- +:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] +:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] +:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- +Contract presets are now deprecated in favor of [Contracts Wizard](https://wizard.openzeppelin.com/) as a more powerful alternative. diff --git a/docs/modules/api/pages/token/ERC777.adoc b/docs/modules/api/pages/token/ERC777.adoc index e7d383a0e..80686877a 100644 --- a/docs/modules/api/pages/token/ERC777.adoc +++ b/docs/modules/api/pages/token/ERC777.adoc @@ -192,6 +192,8 @@ :xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32- :Governor-_castVote: pass:normal[xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-[`Governor._castVote`]] :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string- +:Governor-relay: pass:normal[xref:governance.adoc#Governor-relay-address-uint256-bytes-[`Governor.relay`]] +:xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes- :Governor-_executor: pass:normal[xref:governance.adoc#Governor-_executor--[`Governor._executor`]] :xref-Governor-_executor--: xref:governance.adoc#Governor-_executor-- :Governor-ProposalCore: pass:normal[xref:governance.adoc#Governor-ProposalCore[`Governor.ProposalCore`]] @@ -368,6 +370,24 @@ :xref-GovernorCountingSimple-ProposalVote: xref:governance.adoc#GovernorCountingSimple-ProposalVote :GovernorCountingSimple-VoteType: pass:normal[xref:governance.adoc#GovernorCountingSimple-VoteType[`GovernorCountingSimple.VoteType`]] :xref-GovernorCountingSimple-VoteType: xref:governance.adoc#GovernorCountingSimple-VoteType +:GovernorPreventLateQuorum: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum[`GovernorPreventLateQuorum`]] +:xref-GovernorPreventLateQuorum: xref:governance.adoc#GovernorPreventLateQuorum +:GovernorPreventLateQuorum-constructor: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64-[`GovernorPreventLateQuorum.constructor`]] +:xref-GovernorPreventLateQuorum-constructor-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64- +:GovernorPreventLateQuorum-proposalDeadline: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256-[`GovernorPreventLateQuorum.proposalDeadline`]] +:xref-GovernorPreventLateQuorum-proposalDeadline-uint256-: xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256- +:GovernorPreventLateQuorum-_castVote: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-[`GovernorPreventLateQuorum._castVote`]] +:xref-GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-: xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string- +:GovernorPreventLateQuorum-lateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension--[`GovernorPreventLateQuorum.lateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-lateQuorumVoteExtension--: xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension-- +:GovernorPreventLateQuorum-setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum.setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-_setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum._setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-ProposalExtended: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-[`GovernorPreventLateQuorum.ProposalExtended`]] +:xref-GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64- +:GovernorPreventLateQuorum-LateQuorumVoteExtensionSet: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-[`GovernorPreventLateQuorum.LateQuorumVoteExtensionSet`]] +:xref-GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64- :GovernorProposalThreshold: pass:normal[xref:governance.adoc#GovernorProposalThreshold[`GovernorProposalThreshold`]] :xref-GovernorProposalThreshold: xref:governance.adoc#GovernorProposalThreshold :GovernorProposalThreshold-propose: pass:normal[xref:governance.adoc#GovernorProposalThreshold-propose-address---uint256---bytes---string-[`GovernorProposalThreshold.propose`]] @@ -484,10 +504,10 @@ :xref-GovernorTimelockControl-TimelockChange-address-address-: xref:governance.adoc#GovernorTimelockControl-TimelockChange-address-address- :GovernorVotes: pass:normal[xref:governance.adoc#GovernorVotes[`GovernorVotes`]] :xref-GovernorVotes: xref:governance.adoc#GovernorVotes -:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-ERC20Votes[`GovernorVotes.token`]] -:xref-GovernorVotes-token-contract-ERC20Votes: xref:governance.adoc#GovernorVotes-token-contract-ERC20Votes -:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-ERC20Votes-[`GovernorVotes.constructor`]] -:xref-GovernorVotes-constructor-contract-ERC20Votes-: xref:governance.adoc#GovernorVotes-constructor-contract-ERC20Votes- +:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-IVotes[`GovernorVotes.token`]] +:xref-GovernorVotes-token-contract-IVotes: xref:governance.adoc#GovernorVotes-token-contract-IVotes +:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-IVotes-[`GovernorVotes.constructor`]] +:xref-GovernorVotes-constructor-contract-IVotes-: xref:governance.adoc#GovernorVotes-constructor-contract-IVotes- :GovernorVotes-getVotes: pass:normal[xref:governance.adoc#GovernorVotes-getVotes-address-uint256-[`GovernorVotes.getVotes`]] :xref-GovernorVotes-getVotes-address-uint256-: xref:governance.adoc#GovernorVotes-getVotes-address-uint256- :GovernorVotesComp: pass:normal[xref:governance.adoc#GovernorVotesComp[`GovernorVotesComp`]] @@ -524,6 +544,52 @@ :xref-IGovernorTimelock-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernorTimelock-queue-address---uint256---bytes---bytes32- :IGovernorTimelock-ProposalQueued: pass:normal[xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256-[`IGovernorTimelock.ProposalQueued`]] :xref-IGovernorTimelock-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256- +:IVotes: pass:normal[xref:governance.adoc#IVotes[`IVotes`]] +:xref-IVotes: xref:governance.adoc#IVotes +:IVotes-getVotes: pass:normal[xref:governance.adoc#IVotes-getVotes-address-[`IVotes.getVotes`]] +:xref-IVotes-getVotes-address-: xref:governance.adoc#IVotes-getVotes-address- +:IVotes-getPastVotes: pass:normal[xref:governance.adoc#IVotes-getPastVotes-address-uint256-[`IVotes.getPastVotes`]] +:xref-IVotes-getPastVotes-address-uint256-: xref:governance.adoc#IVotes-getPastVotes-address-uint256- +:IVotes-getPastTotalSupply: pass:normal[xref:governance.adoc#IVotes-getPastTotalSupply-uint256-[`IVotes.getPastTotalSupply`]] +:xref-IVotes-getPastTotalSupply-uint256-: xref:governance.adoc#IVotes-getPastTotalSupply-uint256- +:IVotes-delegates: pass:normal[xref:governance.adoc#IVotes-delegates-address-[`IVotes.delegates`]] +:xref-IVotes-delegates-address-: xref:governance.adoc#IVotes-delegates-address- +:IVotes-delegate: pass:normal[xref:governance.adoc#IVotes-delegate-address-[`IVotes.delegate`]] +:xref-IVotes-delegate-address-: xref:governance.adoc#IVotes-delegate-address- +:IVotes-delegateBySig: pass:normal[xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`IVotes.delegateBySig`]] +:xref-IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:IVotes-DelegateChanged: pass:normal[xref:governance.adoc#IVotes-DelegateChanged-address-address-address-[`IVotes.DelegateChanged`]] +:xref-IVotes-DelegateChanged-address-address-address-: xref:governance.adoc#IVotes-DelegateChanged-address-address-address- +:IVotes-DelegateVotesChanged: pass:normal[xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256-[`IVotes.DelegateVotesChanged`]] +:xref-IVotes-DelegateVotesChanged-address-uint256-uint256-: xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256- +:Votes: pass:normal[xref:governance.adoc#Votes[`Votes`]] +:xref-Votes: xref:governance.adoc#Votes +:Votes-getVotes: pass:normal[xref:governance.adoc#Votes-getVotes-address-[`Votes.getVotes`]] +:xref-Votes-getVotes-address-: xref:governance.adoc#Votes-getVotes-address- +:Votes-getPastVotes: pass:normal[xref:governance.adoc#Votes-getPastVotes-address-uint256-[`Votes.getPastVotes`]] +:xref-Votes-getPastVotes-address-uint256-: xref:governance.adoc#Votes-getPastVotes-address-uint256- +:Votes-getPastTotalSupply: pass:normal[xref:governance.adoc#Votes-getPastTotalSupply-uint256-[`Votes.getPastTotalSupply`]] +:xref-Votes-getPastTotalSupply-uint256-: xref:governance.adoc#Votes-getPastTotalSupply-uint256- +:Votes-_getTotalSupply: pass:normal[xref:governance.adoc#Votes-_getTotalSupply--[`Votes._getTotalSupply`]] +:xref-Votes-_getTotalSupply--: xref:governance.adoc#Votes-_getTotalSupply-- +:Votes-delegates: pass:normal[xref:governance.adoc#Votes-delegates-address-[`Votes.delegates`]] +:xref-Votes-delegates-address-: xref:governance.adoc#Votes-delegates-address- +:Votes-delegate: pass:normal[xref:governance.adoc#Votes-delegate-address-[`Votes.delegate`]] +:xref-Votes-delegate-address-: xref:governance.adoc#Votes-delegate-address- +:Votes-delegateBySig: pass:normal[xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`Votes.delegateBySig`]] +:xref-Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:Votes-_delegate: pass:normal[xref:governance.adoc#Votes-_delegate-address-address-[`Votes._delegate`]] +:xref-Votes-_delegate-address-address-: xref:governance.adoc#Votes-_delegate-address-address- +:Votes-_transferVotingUnits: pass:normal[xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256-[`Votes._transferVotingUnits`]] +:xref-Votes-_transferVotingUnits-address-address-uint256-: xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256- +:Votes-_useNonce: pass:normal[xref:governance.adoc#Votes-_useNonce-address-[`Votes._useNonce`]] +:xref-Votes-_useNonce-address-: xref:governance.adoc#Votes-_useNonce-address- +:Votes-nonces: pass:normal[xref:governance.adoc#Votes-nonces-address-[`Votes.nonces`]] +:xref-Votes-nonces-address-: xref:governance.adoc#Votes-nonces-address- +:Votes-DOMAIN_SEPARATOR: pass:normal[xref:governance.adoc#Votes-DOMAIN_SEPARATOR--[`Votes.DOMAIN_SEPARATOR`]] +:xref-Votes-DOMAIN_SEPARATOR--: xref:governance.adoc#Votes-DOMAIN_SEPARATOR-- +:Votes-_getVotingUnits: pass:normal[xref:governance.adoc#Votes-_getVotingUnits-address-[`Votes._getVotingUnits`]] +:xref-Votes-_getVotingUnits-address-: xref:governance.adoc#Votes-_getVotingUnits-address- :IERC1271: pass:normal[xref:interfaces.adoc#IERC1271[`IERC1271`]] :xref-IERC1271: xref:interfaces.adoc#IERC1271 :IERC1271-isValidSignature: pass:normal[xref:interfaces.adoc#IERC1271-isValidSignature-bytes32-bytes-[`IERC1271.isValidSignature`]] @@ -566,6 +632,10 @@ :xref-IERC3156FlashLender-flashFee-address-uint256-: xref:interfaces.adoc#IERC3156FlashLender-flashFee-address-uint256- :IERC3156FlashLender-flashLoan: pass:normal[xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-[`IERC3156FlashLender.flashLoan`]] :xref-IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-: xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes- +:IERC1822Proxiable: pass:normal[xref:interfaces.adoc#IERC1822Proxiable[`IERC1822Proxiable`]] +:xref-IERC1822Proxiable: xref:interfaces.adoc#IERC1822Proxiable +:IERC1822Proxiable-proxiableUUID: pass:normal[xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID--[`IERC1822Proxiable.proxiableUUID`]] +:xref-IERC1822Proxiable-proxiableUUID--: xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID-- :IERC2612: pass:normal[xref:interfaces.adoc#IERC2612[`IERC2612`]] :xref-IERC2612: xref:interfaces.adoc#IERC2612 :ERC2771Context: pass:normal[xref:metatx.adoc#ERC2771Context[`ERC2771Context`]] @@ -618,8 +688,8 @@ :xref-ERC1967Upgrade-_upgradeTo-address-: xref:proxy.adoc#ERC1967Upgrade-_upgradeTo-address- :ERC1967Upgrade-_upgradeToAndCall: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCall`]] :xref-ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool- -:ERC1967Upgrade-_upgradeToAndCallSecure: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallSecure`]] -:xref-ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool- +:ERC1967Upgrade-_upgradeToAndCallUUPS: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallUUPS`]] +:xref-ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool- :ERC1967Upgrade-_getAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_getAdmin--[`ERC1967Upgrade._getAdmin`]] :xref-ERC1967Upgrade-_getAdmin--: xref:proxy.adoc#ERC1967Upgrade-_getAdmin-- :ERC1967Upgrade-_changeAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_changeAdmin-address-[`ERC1967Upgrade._changeAdmin`]] @@ -714,6 +784,10 @@ :xref-UUPSUpgradeable: xref:proxy.adoc#UUPSUpgradeable :UUPSUpgradeable-onlyProxy: pass:normal[xref:proxy.adoc#UUPSUpgradeable-onlyProxy--[`UUPSUpgradeable.onlyProxy`]] :xref-UUPSUpgradeable-onlyProxy--: xref:proxy.adoc#UUPSUpgradeable-onlyProxy-- +:UUPSUpgradeable-notDelegated: pass:normal[xref:proxy.adoc#UUPSUpgradeable-notDelegated--[`UUPSUpgradeable.notDelegated`]] +:xref-UUPSUpgradeable-notDelegated--: xref:proxy.adoc#UUPSUpgradeable-notDelegated-- +:UUPSUpgradeable-proxiableUUID: pass:normal[xref:proxy.adoc#UUPSUpgradeable-proxiableUUID--[`UUPSUpgradeable.proxiableUUID`]] +:xref-UUPSUpgradeable-proxiableUUID--: xref:proxy.adoc#UUPSUpgradeable-proxiableUUID-- :UUPSUpgradeable-upgradeTo: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address-[`UUPSUpgradeable.upgradeTo`]] :xref-UUPSUpgradeable-upgradeTo-address-: xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address- :UUPSUpgradeable-upgradeToAndCall: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeToAndCall-address-bytes-[`UUPSUpgradeable.upgradeToAndCall`]] @@ -782,6 +856,26 @@ :xref-Arrays: xref:utils.adoc#Arrays :Arrays-findUpperBound: pass:normal[xref:utils.adoc#Arrays-findUpperBound-uint256---uint256-[`Arrays.findUpperBound`]] :xref-Arrays-findUpperBound-uint256---uint256-: xref:utils.adoc#Arrays-findUpperBound-uint256---uint256- +:Base64: pass:normal[xref:utils.adoc#Base64[`Base64`]] +:xref-Base64: xref:utils.adoc#Base64 +:Base64-_TABLE: pass:normal[xref:utils.adoc#Base64-_TABLE-string[`Base64._TABLE`]] +:xref-Base64-_TABLE-string: xref:utils.adoc#Base64-_TABLE-string +:Base64-encode: pass:normal[xref:utils.adoc#Base64-encode-bytes-[`Base64.encode`]] +:xref-Base64-encode-bytes-: xref:utils.adoc#Base64-encode-bytes- +:Checkpoints: pass:normal[xref:utils.adoc#Checkpoints[`Checkpoints`]] +:xref-Checkpoints: xref:utils.adoc#Checkpoints +:Checkpoints-latest: pass:normal[xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History-[`Checkpoints.latest`]] +:xref-Checkpoints-latest-struct-Checkpoints-History-: xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History- +:Checkpoints-getAtBlock: pass:normal[xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-[`Checkpoints.getAtBlock`]] +:xref-Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256- +:Checkpoints-Checkpoint: pass:normal[xref:utils.adoc#Checkpoints-Checkpoint[`Checkpoints.Checkpoint`]] +:xref-Checkpoints-Checkpoint: xref:utils.adoc#Checkpoints-Checkpoint +:Checkpoints-History: pass:normal[xref:utils.adoc#Checkpoints-History[`Checkpoints.History`]] +:xref-Checkpoints-History: xref:utils.adoc#Checkpoints-History :Context: pass:normal[xref:utils.adoc#Context[`Context`]] :xref-Context: xref:utils.adoc#Context :Context-_msgSender: pass:normal[xref:utils.adoc#Context-_msgSender--[`Context._msgSender`]] @@ -1078,6 +1172,16 @@ :xref-SafeMath-div-uint256-uint256-string-: xref:utils.adoc#SafeMath-div-uint256-uint256-string- :SafeMath-mod: pass:normal[xref:utils.adoc#SafeMath-mod-uint256-uint256-string-[`SafeMath.mod`]] :xref-SafeMath-mod-uint256-uint256-string-: xref:utils.adoc#SafeMath-mod-uint256-uint256-string- +:SignedMath: pass:normal[xref:utils.adoc#SignedMath[`SignedMath`]] +:xref-SignedMath: xref:utils.adoc#SignedMath +:SignedMath-max: pass:normal[xref:utils.adoc#SignedMath-max-int256-int256-[`SignedMath.max`]] +:xref-SignedMath-max-int256-int256-: xref:utils.adoc#SignedMath-max-int256-int256- +:SignedMath-min: pass:normal[xref:utils.adoc#SignedMath-min-int256-int256-[`SignedMath.min`]] +:xref-SignedMath-min-int256-int256-: xref:utils.adoc#SignedMath-min-int256-int256- +:SignedMath-average: pass:normal[xref:utils.adoc#SignedMath-average-int256-int256-[`SignedMath.average`]] +:xref-SignedMath-average-int256-int256-: xref:utils.adoc#SignedMath-average-int256-int256- +:SignedMath-abs: pass:normal[xref:utils.adoc#SignedMath-abs-int256-[`SignedMath.abs`]] +:xref-SignedMath-abs-int256-: xref:utils.adoc#SignedMath-abs-int256- :SignedSafeMath: pass:normal[xref:utils.adoc#SignedSafeMath[`SignedSafeMath`]] :xref-SignedSafeMath: xref:utils.adoc#SignedSafeMath :SignedSafeMath-mul: pass:normal[xref:utils.adoc#SignedSafeMath-mul-int256-int256-[`SignedSafeMath.mul`]] @@ -1256,26 +1360,6 @@ :xref-IERC1155MetadataURI: xref:token/ERC1155.adoc#IERC1155MetadataURI :IERC1155MetadataURI-uri: pass:normal[xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256-[`IERC1155MetadataURI.uri`]] :xref-IERC1155MetadataURI-uri-uint256-: xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256- -:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] -:xref-ERC1155PresetMinterPauser: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser -:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] -:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 -:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] -:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 -:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] -:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-constructor-string- -:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] -:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- -:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] -:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- -:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] -:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-pause-- -:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] -:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-unpause-- -:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] -:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-supportsInterface-bytes4- -:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] -:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- :ERC1155Holder: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder[`ERC1155Holder`]] :xref-ERC1155Holder: xref:token/ERC1155.adoc#ERC1155Holder :ERC1155Holder-onERC1155Received: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-[`ERC1155Holder.onERC1155Received`]] @@ -1320,6 +1404,8 @@ :xref-ERC20-_burn-address-uint256-: xref:token/ERC20.adoc#ERC20-_burn-address-uint256- :ERC20-_approve: pass:normal[xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256-[`ERC20._approve`]] :xref-ERC20-_approve-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256- +:ERC20-_spendAllowance: pass:normal[xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256-[`ERC20._spendAllowance`]] +:xref-ERC20-_spendAllowance-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256- :ERC20-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256-[`ERC20._beforeTokenTransfer`]] :xref-ERC20-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256- :ERC20-_afterTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_afterTokenTransfer-address-address-uint256-[`ERC20._afterTokenTransfer`]] @@ -1412,10 +1498,6 @@ :xref-ERC20Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-_afterTokenTransfer-address-address-uint256- :ERC20Votes-_delegate: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address-[`ERC20Votes._delegate`]] :xref-ERC20Votes-_delegate-address-address-: xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address- -:ERC20Votes-DelegateChanged: pass:normal[xref:token/ERC20.adoc#ERC20Votes-DelegateChanged-address-address-address-[`ERC20Votes.DelegateChanged`]] -:xref-ERC20Votes-DelegateChanged-address-address-address-: xref:token/ERC20.adoc#ERC20Votes-DelegateChanged-address-address-address- -:ERC20Votes-DelegateVotesChanged: pass:normal[xref:token/ERC20.adoc#ERC20Votes-DelegateVotesChanged-address-uint256-uint256-[`ERC20Votes.DelegateVotesChanged`]] -:xref-ERC20Votes-DelegateVotesChanged-address-uint256-uint256-: xref:token/ERC20.adoc#ERC20Votes-DelegateVotesChanged-address-uint256-uint256- :ERC20Votes-Checkpoint: pass:normal[xref:token/ERC20.adoc#ERC20Votes-Checkpoint[`ERC20Votes.Checkpoint`]] :xref-ERC20Votes-Checkpoint: xref:token/ERC20.adoc#ERC20Votes-Checkpoint :ERC20VotesComp: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp[`ERC20VotesComp`]] @@ -1466,26 +1548,6 @@ :xref-IERC20Permit-nonces-address-: xref:token/ERC20.adoc#IERC20Permit-nonces-address- :IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]] :xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR-- -:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20.adoc#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] -:xref-ERC20PresetFixedSupply: xref:token/ERC20.adoc#ERC20PresetFixedSupply -:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20.adoc#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] -:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20.adoc#ERC20PresetFixedSupply-constructor-string-string-uint256-address- -:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] -:xref-ERC20PresetMinterPauser: xref:token/ERC20.adoc#ERC20PresetMinterPauser -:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] -:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20.adoc#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 -:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] -:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20.adoc#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 -:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] -:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-constructor-string-string- -:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] -:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-mint-address-uint256- -:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] -:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20.adoc#ERC20PresetMinterPauser-pause-- -:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] -:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20.adoc#ERC20PresetMinterPauser-unpause-- -:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] -:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- :SafeERC20: pass:normal[xref:token/ERC20.adoc#SafeERC20[`SafeERC20`]] :xref-SafeERC20: xref:token/ERC20.adoc#SafeERC20 :SafeERC20-safeTransfer: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeTransfer-contract-IERC20-address-uint256-[`SafeERC20.safeTransfer`]] @@ -1564,6 +1626,8 @@ :xref-ERC721-_setApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool- :ERC721-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256-[`ERC721._beforeTokenTransfer`]] :xref-ERC721-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256- +:ERC721-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256-[`ERC721._afterTokenTransfer`]] +:xref-ERC721-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256- :IERC721: pass:normal[xref:token/ERC721.adoc#IERC721[`IERC721`]] :xref-IERC721: xref:token/ERC721.adoc#IERC721 :IERC721-balanceOf: pass:normal[xref:token/ERC721.adoc#IERC721-balanceOf-address-[`IERC721.balanceOf`]] @@ -1614,6 +1678,12 @@ :xref-ERC721Pausable: xref:token/ERC721.adoc#ERC721Pausable :ERC721Pausable-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256-[`ERC721Pausable._beforeTokenTransfer`]] :xref-ERC721Pausable-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256- +:ERC721Royalty: pass:normal[xref:token/ERC721.adoc#ERC721Royalty[`ERC721Royalty`]] +:xref-ERC721Royalty: xref:token/ERC721.adoc#ERC721Royalty +:ERC721Royalty-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4-[`ERC721Royalty.supportsInterface`]] +:xref-ERC721Royalty-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4- +:ERC721Royalty-_burn: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256-[`ERC721Royalty._burn`]] +:xref-ERC721Royalty-_burn-uint256-: xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256- :ERC721URIStorage: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage[`ERC721URIStorage`]] :xref-ERC721URIStorage: xref:token/ERC721.adoc#ERC721URIStorage :ERC721URIStorage-tokenURI: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage-tokenURI-uint256-[`ERC721URIStorage.tokenURI`]] @@ -1638,26 +1708,12 @@ :xref-IERC721Metadata-symbol--: xref:token/ERC721.adoc#IERC721Metadata-symbol-- :IERC721Metadata-tokenURI: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256-[`IERC721Metadata.tokenURI`]] :xref-IERC721Metadata-tokenURI-uint256-: xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256- -:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] -:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId -:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] -:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 -:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] -:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 -:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] -:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-constructor-string-string-string- -:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] -:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_baseURI-- -:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] -:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-mint-address- -:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] -:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-pause-- -:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] -:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-unpause-- -:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] -:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- -:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] -:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- +:ERC721Votes: pass:normal[xref:token/ERC721.adoc#ERC721Votes[`ERC721Votes`]] +:xref-ERC721Votes: xref:token/ERC721.adoc#ERC721Votes +:ERC721Votes-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256-[`ERC721Votes._afterTokenTransfer`]] +:xref-ERC721Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256- +:ERC721Votes-_getVotingUnits: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address-[`ERC721Votes._getVotingUnits`]] +:xref-ERC721Votes-_getVotingUnits-address-: xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address- :ERC721Holder: pass:normal[xref:token/ERC721.adoc#ERC721Holder[`ERC721Holder`]] :xref-ERC721Holder: xref:token/ERC721.adoc#ERC721Holder :ERC721Holder-onERC721Received: pass:normal[xref:token/ERC721.adoc#ERC721Holder-onERC721Received-address-address-uint256-bytes-[`ERC721Holder.onERC721Received`]] @@ -1714,6 +1770,8 @@ :xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes- :ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]] :xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256- +:ERC777-_spendAllowance: pass:normal[xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256-[`ERC777._spendAllowance`]] +:xref-ERC777-_spendAllowance-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256- :ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]] :xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256- :IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]] @@ -1766,6 +1824,84 @@ :xref-ERC777PresetFixedSupply: xref:token/ERC777.adoc#ERC777PresetFixedSupply :ERC777PresetFixedSupply-constructor: pass:normal[xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-[`ERC777PresetFixedSupply.constructor`]] :xref-ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-: xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address- +:ERC2981: pass:normal[xref:token/common.adoc#ERC2981[`ERC2981`]] +:xref-ERC2981: xref:token/common.adoc#ERC2981 +:ERC2981-supportsInterface: pass:normal[xref:token/common.adoc#ERC2981-supportsInterface-bytes4-[`ERC2981.supportsInterface`]] +:xref-ERC2981-supportsInterface-bytes4-: xref:token/common.adoc#ERC2981-supportsInterface-bytes4- +:ERC2981-royaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256-[`ERC2981.royaltyInfo`]] +:xref-ERC2981-royaltyInfo-uint256-uint256-: xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256- +:ERC2981-_feeDenominator: pass:normal[xref:token/common.adoc#ERC2981-_feeDenominator--[`ERC2981._feeDenominator`]] +:xref-ERC2981-_feeDenominator--: xref:token/common.adoc#ERC2981-_feeDenominator-- +:ERC2981-_setDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96-[`ERC2981._setDefaultRoyalty`]] +:xref-ERC2981-_setDefaultRoyalty-address-uint96-: xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96- +:ERC2981-_deleteDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty--[`ERC2981._deleteDefaultRoyalty`]] +:xref-ERC2981-_deleteDefaultRoyalty--: xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty-- +:ERC2981-_setTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96-[`ERC2981._setTokenRoyalty`]] +:xref-ERC2981-_setTokenRoyalty-uint256-address-uint96-: xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96- +:ERC2981-_resetTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256-[`ERC2981._resetTokenRoyalty`]] +:xref-ERC2981-_resetTokenRoyalty-uint256-: xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256- +:ERC2981-RoyaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-RoyaltyInfo[`ERC2981.RoyaltyInfo`]] +:xref-ERC2981-RoyaltyInfo: xref:token/common.adoc#ERC2981-RoyaltyInfo +:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] +:xref-ERC1155PresetMinterPauser: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser +:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] +:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string- +:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] +:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- +:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] +:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- +:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] +:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause-- +:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] +:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause-- +:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] +:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4- +:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] +:xref-ERC20PresetFixedSupply: xref:token/ERC20/presets.md#ERC20PresetFixedSupply +:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] +:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address- +:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] +:xref-ERC20PresetMinterPauser: xref:token/ERC20/presets.md#ERC20PresetMinterPauser +:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] +:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string- +:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] +:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256- +:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] +:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause-- +:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] +:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause-- +:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] +:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId +:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] +:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string- +:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] +:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI-- +:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] +:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address- +:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] +:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause-- +:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] +:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause-- +:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] +:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] +:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- = ERC 777 [.readme-notice] @@ -1803,7 +1939,7 @@ Additionally there are interfaces used to develop contracts that react to token [.contract] [[IERC777]] -=== `++IERC777++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC777/IERC777.sol[{github-icon},role=heading-link] +=== `++IERC777++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC777/IERC777.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2068,11 +2204,12 @@ Requirements :_send: pass:normal[xref:#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`++_send++`]] :_burn: pass:normal[xref:#ERC777-_burn-address-uint256-bytes-bytes-[`++_burn++`]] :_approve: pass:normal[xref:#ERC777-_approve-address-address-uint256-[`++_approve++`]] +:_spendAllowance: pass:normal[xref:#ERC777-_spendAllowance-address-address-uint256-[`++_spendAllowance++`]] :_beforeTokenTransfer: pass:normal[xref:#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`++_beforeTokenTransfer++`]] [.contract] [[ERC777]] -=== `++ERC777++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC777/ERC777.sol[{github-icon},role=heading-link] +=== `++ERC777++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC777/ERC777.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2121,6 +2258,7 @@ destroyed. This makes integration with ERC20 applications seamless. * {xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-}[`++_send(from, to, amount, userData, operatorData, requireReceptionAck)++`] * {xref-ERC777-_burn-address-uint256-bytes-bytes-}[`++_burn(from, amount, data, operatorData)++`] * {xref-ERC777-_approve-address-address-uint256-}[`++_approve(holder, spender, value)++`] +* {xref-ERC777-_spendAllowance-address-address-uint256-}[`++_spendAllowance(owner, spender, amount)++`] * {xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-}[`++_beforeTokenTransfer(operator, from, to, amount)++`] [.contract-subindex-inherited] @@ -2284,6 +2422,9 @@ themselves. See {IERC20-approve}. +NOTE: If `value` is the maximum `uint256`, the allowance is not updated on +`transferFrom`. This is semantically equivalent to an infinite approval. + Note that accounts cannot have allowance issued by their operators. [.contract-item] @@ -2292,6 +2433,9 @@ Note that accounts cannot have allowance issued by their operators. See {IERC20-transferFrom}. +NOTE: Does not update the allowance if the current allowance +is the maximum `uint256`. + Note that operator and allowance concepts are orthogonal: operators cannot call `transferFrom` (unless they have allowance), and accounts with allowance cannot call `operatorSend` (unless they are operators). @@ -2361,6 +2505,17 @@ See {ERC20-_approve}. Note that accounts cannot have allowance issued by their operators. +[.contract-item] +[[ERC777-_spendAllowance-address-address-uint256-]] +==== `[.contract-item-name]#++_spendAllowance++#++(address owner, address spender, uint256 amount)++` [.item-kind]#internal# + +Spend `amount` form the allowance of `owner` toward `spender`. + +Does not update the allowance amount in case of infinite allowance. +Revert if not enough allowance is available. + +Might emit an {Approval} event. + [.contract-item] [[ERC777-_beforeTokenTransfer-address-address-address-uint256-]] ==== `[.contract-item-name]#++_beforeTokenTransfer++#++(address operator, address from, address to, uint256 amount)++` [.item-kind]#internal# @@ -2388,7 +2543,7 @@ To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hook [.contract] [[IERC777Sender]] -=== `++IERC777Sender++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC777/IERC777Sender.sol[{github-icon},role=heading-link] +=== `++IERC777Sender++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC777/IERC777Sender.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2435,7 +2590,7 @@ This function may revert to prevent the operation from being executed. [.contract] [[IERC777Recipient]] -=== `++IERC777Recipient++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC777/IERC777Recipient.sol[{github-icon},role=heading-link] +=== `++IERC777Recipient++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC777/IERC777Recipient.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2486,7 +2641,7 @@ These contracts are preconfigured combinations of features. They can be used thr [.contract] [[ERC777PresetFixedSupply]] -=== `++ERC777PresetFixedSupply++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/token/ERC777/presets/ERC777PresetFixedSupply.sol[{github-icon},role=heading-link] +=== `++ERC777PresetFixedSupply++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/ERC777/presets/ERC777PresetFixedSupply.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2531,6 +2686,7 @@ _Available since v3.4._ * {xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-}[`++_send(from, to, amount, userData, operatorData, requireReceptionAck)++`] * {xref-ERC777-_burn-address-uint256-bytes-bytes-}[`++_burn(from, amount, data, operatorData)++`] * {xref-ERC777-_approve-address-address-uint256-}[`++_approve(holder, spender, value)++`] +* {xref-ERC777-_spendAllowance-address-address-uint256-}[`++_spendAllowance(owner, spender, amount)++`] * {xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-}[`++_beforeTokenTransfer(operator, from, to, amount)++`] [.contract-subindex-inherited] diff --git a/docs/modules/api/pages/token/common.adoc b/docs/modules/api/pages/token/common.adoc new file mode 100644 index 000000000..77f11d004 --- /dev/null +++ b/docs/modules/api/pages/token/common.adoc @@ -0,0 +1,2029 @@ +:github-icon: pass:[] + +:AccessControl: pass:normal[xref:access.adoc#AccessControl[`AccessControl`]] +:xref-AccessControl: xref:access.adoc#AccessControl +:AccessControl-onlyRole: pass:normal[xref:access.adoc#AccessControl-onlyRole-bytes32-[`AccessControl.onlyRole`]] +:xref-AccessControl-onlyRole-bytes32-: xref:access.adoc#AccessControl-onlyRole-bytes32- +:AccessControl-DEFAULT_ADMIN_ROLE: pass:normal[xref:access.adoc#AccessControl-DEFAULT_ADMIN_ROLE-bytes32[`AccessControl.DEFAULT_ADMIN_ROLE`]] +:xref-AccessControl-DEFAULT_ADMIN_ROLE-bytes32: xref:access.adoc#AccessControl-DEFAULT_ADMIN_ROLE-bytes32 +:AccessControl-supportsInterface: pass:normal[xref:access.adoc#AccessControl-supportsInterface-bytes4-[`AccessControl.supportsInterface`]] +:xref-AccessControl-supportsInterface-bytes4-: xref:access.adoc#AccessControl-supportsInterface-bytes4- +:AccessControl-hasRole: pass:normal[xref:access.adoc#AccessControl-hasRole-bytes32-address-[`AccessControl.hasRole`]] +:xref-AccessControl-hasRole-bytes32-address-: xref:access.adoc#AccessControl-hasRole-bytes32-address- +:AccessControl-_checkRole: pass:normal[xref:access.adoc#AccessControl-_checkRole-bytes32-address-[`AccessControl._checkRole`]] +:xref-AccessControl-_checkRole-bytes32-address-: xref:access.adoc#AccessControl-_checkRole-bytes32-address- +:AccessControl-getRoleAdmin: pass:normal[xref:access.adoc#AccessControl-getRoleAdmin-bytes32-[`AccessControl.getRoleAdmin`]] +:xref-AccessControl-getRoleAdmin-bytes32-: xref:access.adoc#AccessControl-getRoleAdmin-bytes32- +:AccessControl-grantRole: pass:normal[xref:access.adoc#AccessControl-grantRole-bytes32-address-[`AccessControl.grantRole`]] +:xref-AccessControl-grantRole-bytes32-address-: xref:access.adoc#AccessControl-grantRole-bytes32-address- +:AccessControl-revokeRole: pass:normal[xref:access.adoc#AccessControl-revokeRole-bytes32-address-[`AccessControl.revokeRole`]] +:xref-AccessControl-revokeRole-bytes32-address-: xref:access.adoc#AccessControl-revokeRole-bytes32-address- +:AccessControl-renounceRole: pass:normal[xref:access.adoc#AccessControl-renounceRole-bytes32-address-[`AccessControl.renounceRole`]] +:xref-AccessControl-renounceRole-bytes32-address-: xref:access.adoc#AccessControl-renounceRole-bytes32-address- +:AccessControl-_setupRole: pass:normal[xref:access.adoc#AccessControl-_setupRole-bytes32-address-[`AccessControl._setupRole`]] +:xref-AccessControl-_setupRole-bytes32-address-: xref:access.adoc#AccessControl-_setupRole-bytes32-address- +:AccessControl-_setRoleAdmin: pass:normal[xref:access.adoc#AccessControl-_setRoleAdmin-bytes32-bytes32-[`AccessControl._setRoleAdmin`]] +:xref-AccessControl-_setRoleAdmin-bytes32-bytes32-: xref:access.adoc#AccessControl-_setRoleAdmin-bytes32-bytes32- +:AccessControl-_grantRole: pass:normal[xref:access.adoc#AccessControl-_grantRole-bytes32-address-[`AccessControl._grantRole`]] +:xref-AccessControl-_grantRole-bytes32-address-: xref:access.adoc#AccessControl-_grantRole-bytes32-address- +:AccessControl-_revokeRole: pass:normal[xref:access.adoc#AccessControl-_revokeRole-bytes32-address-[`AccessControl._revokeRole`]] +:xref-AccessControl-_revokeRole-bytes32-address-: xref:access.adoc#AccessControl-_revokeRole-bytes32-address- +:AccessControl-RoleData: pass:normal[xref:access.adoc#AccessControl-RoleData[`AccessControl.RoleData`]] +:xref-AccessControl-RoleData: xref:access.adoc#AccessControl-RoleData +:AccessControlEnumerable: pass:normal[xref:access.adoc#AccessControlEnumerable[`AccessControlEnumerable`]] +:xref-AccessControlEnumerable: xref:access.adoc#AccessControlEnumerable +:AccessControlEnumerable-supportsInterface: pass:normal[xref:access.adoc#AccessControlEnumerable-supportsInterface-bytes4-[`AccessControlEnumerable.supportsInterface`]] +:xref-AccessControlEnumerable-supportsInterface-bytes4-: xref:access.adoc#AccessControlEnumerable-supportsInterface-bytes4- +:AccessControlEnumerable-getRoleMember: pass:normal[xref:access.adoc#AccessControlEnumerable-getRoleMember-bytes32-uint256-[`AccessControlEnumerable.getRoleMember`]] +:xref-AccessControlEnumerable-getRoleMember-bytes32-uint256-: xref:access.adoc#AccessControlEnumerable-getRoleMember-bytes32-uint256- +:AccessControlEnumerable-getRoleMemberCount: pass:normal[xref:access.adoc#AccessControlEnumerable-getRoleMemberCount-bytes32-[`AccessControlEnumerable.getRoleMemberCount`]] +:xref-AccessControlEnumerable-getRoleMemberCount-bytes32-: xref:access.adoc#AccessControlEnumerable-getRoleMemberCount-bytes32- +:AccessControlEnumerable-_grantRole: pass:normal[xref:access.adoc#AccessControlEnumerable-_grantRole-bytes32-address-[`AccessControlEnumerable._grantRole`]] +:xref-AccessControlEnumerable-_grantRole-bytes32-address-: xref:access.adoc#AccessControlEnumerable-_grantRole-bytes32-address- +:AccessControlEnumerable-_revokeRole: pass:normal[xref:access.adoc#AccessControlEnumerable-_revokeRole-bytes32-address-[`AccessControlEnumerable._revokeRole`]] +:xref-AccessControlEnumerable-_revokeRole-bytes32-address-: xref:access.adoc#AccessControlEnumerable-_revokeRole-bytes32-address- +:IAccessControl: pass:normal[xref:access.adoc#IAccessControl[`IAccessControl`]] +:xref-IAccessControl: xref:access.adoc#IAccessControl +:IAccessControl-hasRole: pass:normal[xref:access.adoc#IAccessControl-hasRole-bytes32-address-[`IAccessControl.hasRole`]] +:xref-IAccessControl-hasRole-bytes32-address-: xref:access.adoc#IAccessControl-hasRole-bytes32-address- +:IAccessControl-getRoleAdmin: pass:normal[xref:access.adoc#IAccessControl-getRoleAdmin-bytes32-[`IAccessControl.getRoleAdmin`]] +:xref-IAccessControl-getRoleAdmin-bytes32-: xref:access.adoc#IAccessControl-getRoleAdmin-bytes32- +:IAccessControl-grantRole: pass:normal[xref:access.adoc#IAccessControl-grantRole-bytes32-address-[`IAccessControl.grantRole`]] +:xref-IAccessControl-grantRole-bytes32-address-: xref:access.adoc#IAccessControl-grantRole-bytes32-address- +:IAccessControl-revokeRole: pass:normal[xref:access.adoc#IAccessControl-revokeRole-bytes32-address-[`IAccessControl.revokeRole`]] +:xref-IAccessControl-revokeRole-bytes32-address-: xref:access.adoc#IAccessControl-revokeRole-bytes32-address- +:IAccessControl-renounceRole: pass:normal[xref:access.adoc#IAccessControl-renounceRole-bytes32-address-[`IAccessControl.renounceRole`]] +:xref-IAccessControl-renounceRole-bytes32-address-: xref:access.adoc#IAccessControl-renounceRole-bytes32-address- +:IAccessControl-RoleAdminChanged: pass:normal[xref:access.adoc#IAccessControl-RoleAdminChanged-bytes32-bytes32-bytes32-[`IAccessControl.RoleAdminChanged`]] +:xref-IAccessControl-RoleAdminChanged-bytes32-bytes32-bytes32-: xref:access.adoc#IAccessControl-RoleAdminChanged-bytes32-bytes32-bytes32- +:IAccessControl-RoleGranted: pass:normal[xref:access.adoc#IAccessControl-RoleGranted-bytes32-address-address-[`IAccessControl.RoleGranted`]] +:xref-IAccessControl-RoleGranted-bytes32-address-address-: xref:access.adoc#IAccessControl-RoleGranted-bytes32-address-address- +:IAccessControl-RoleRevoked: pass:normal[xref:access.adoc#IAccessControl-RoleRevoked-bytes32-address-address-[`IAccessControl.RoleRevoked`]] +:xref-IAccessControl-RoleRevoked-bytes32-address-address-: xref:access.adoc#IAccessControl-RoleRevoked-bytes32-address-address- +:IAccessControlEnumerable: pass:normal[xref:access.adoc#IAccessControlEnumerable[`IAccessControlEnumerable`]] +:xref-IAccessControlEnumerable: xref:access.adoc#IAccessControlEnumerable +:IAccessControlEnumerable-getRoleMember: pass:normal[xref:access.adoc#IAccessControlEnumerable-getRoleMember-bytes32-uint256-[`IAccessControlEnumerable.getRoleMember`]] +:xref-IAccessControlEnumerable-getRoleMember-bytes32-uint256-: xref:access.adoc#IAccessControlEnumerable-getRoleMember-bytes32-uint256- +:IAccessControlEnumerable-getRoleMemberCount: pass:normal[xref:access.adoc#IAccessControlEnumerable-getRoleMemberCount-bytes32-[`IAccessControlEnumerable.getRoleMemberCount`]] +:xref-IAccessControlEnumerable-getRoleMemberCount-bytes32-: xref:access.adoc#IAccessControlEnumerable-getRoleMemberCount-bytes32- +:Ownable: pass:normal[xref:access.adoc#Ownable[`Ownable`]] +:xref-Ownable: xref:access.adoc#Ownable +:Ownable-onlyOwner: pass:normal[xref:access.adoc#Ownable-onlyOwner--[`Ownable.onlyOwner`]] +:xref-Ownable-onlyOwner--: xref:access.adoc#Ownable-onlyOwner-- +:Ownable-constructor: pass:normal[xref:access.adoc#Ownable-constructor--[`Ownable.constructor`]] +:xref-Ownable-constructor--: xref:access.adoc#Ownable-constructor-- +:Ownable-owner: pass:normal[xref:access.adoc#Ownable-owner--[`Ownable.owner`]] +:xref-Ownable-owner--: xref:access.adoc#Ownable-owner-- +:Ownable-renounceOwnership: pass:normal[xref:access.adoc#Ownable-renounceOwnership--[`Ownable.renounceOwnership`]] +:xref-Ownable-renounceOwnership--: xref:access.adoc#Ownable-renounceOwnership-- +:Ownable-transferOwnership: pass:normal[xref:access.adoc#Ownable-transferOwnership-address-[`Ownable.transferOwnership`]] +:xref-Ownable-transferOwnership-address-: xref:access.adoc#Ownable-transferOwnership-address- +:Ownable-_transferOwnership: pass:normal[xref:access.adoc#Ownable-_transferOwnership-address-[`Ownable._transferOwnership`]] +:xref-Ownable-_transferOwnership-address-: xref:access.adoc#Ownable-_transferOwnership-address- +:Ownable-OwnershipTransferred: pass:normal[xref:access.adoc#Ownable-OwnershipTransferred-address-address-[`Ownable.OwnershipTransferred`]] +:xref-Ownable-OwnershipTransferred-address-address-: xref:access.adoc#Ownable-OwnershipTransferred-address-address- +:PaymentSplitter: pass:normal[xref:finance.adoc#PaymentSplitter[`PaymentSplitter`]] +:xref-PaymentSplitter: xref:finance.adoc#PaymentSplitter +:PaymentSplitter-constructor: pass:normal[xref:finance.adoc#PaymentSplitter-constructor-address---uint256---[`PaymentSplitter.constructor`]] +:xref-PaymentSplitter-constructor-address---uint256---: xref:finance.adoc#PaymentSplitter-constructor-address---uint256--- +:PaymentSplitter-receive: pass:normal[xref:finance.adoc#PaymentSplitter-receive--[`PaymentSplitter.receive`]] +:xref-PaymentSplitter-receive--: xref:finance.adoc#PaymentSplitter-receive-- +:PaymentSplitter-totalShares: pass:normal[xref:finance.adoc#PaymentSplitter-totalShares--[`PaymentSplitter.totalShares`]] +:xref-PaymentSplitter-totalShares--: xref:finance.adoc#PaymentSplitter-totalShares-- +:PaymentSplitter-totalReleased: pass:normal[xref:finance.adoc#PaymentSplitter-totalReleased--[`PaymentSplitter.totalReleased`]] +:xref-PaymentSplitter-totalReleased--: xref:finance.adoc#PaymentSplitter-totalReleased-- +:PaymentSplitter-totalReleased: pass:normal[xref:finance.adoc#PaymentSplitter-totalReleased-contract-IERC20-[`PaymentSplitter.totalReleased`]] +:xref-PaymentSplitter-totalReleased-contract-IERC20-: xref:finance.adoc#PaymentSplitter-totalReleased-contract-IERC20- +:PaymentSplitter-shares: pass:normal[xref:finance.adoc#PaymentSplitter-shares-address-[`PaymentSplitter.shares`]] +:xref-PaymentSplitter-shares-address-: xref:finance.adoc#PaymentSplitter-shares-address- +:PaymentSplitter-released: pass:normal[xref:finance.adoc#PaymentSplitter-released-address-[`PaymentSplitter.released`]] +:xref-PaymentSplitter-released-address-: xref:finance.adoc#PaymentSplitter-released-address- +:PaymentSplitter-released: pass:normal[xref:finance.adoc#PaymentSplitter-released-contract-IERC20-address-[`PaymentSplitter.released`]] +:xref-PaymentSplitter-released-contract-IERC20-address-: xref:finance.adoc#PaymentSplitter-released-contract-IERC20-address- +:PaymentSplitter-payee: pass:normal[xref:finance.adoc#PaymentSplitter-payee-uint256-[`PaymentSplitter.payee`]] +:xref-PaymentSplitter-payee-uint256-: xref:finance.adoc#PaymentSplitter-payee-uint256- +:PaymentSplitter-release: pass:normal[xref:finance.adoc#PaymentSplitter-release-address-payable-[`PaymentSplitter.release`]] +:xref-PaymentSplitter-release-address-payable-: xref:finance.adoc#PaymentSplitter-release-address-payable- +:PaymentSplitter-release: pass:normal[xref:finance.adoc#PaymentSplitter-release-contract-IERC20-address-[`PaymentSplitter.release`]] +:xref-PaymentSplitter-release-contract-IERC20-address-: xref:finance.adoc#PaymentSplitter-release-contract-IERC20-address- +:PaymentSplitter-PayeeAdded: pass:normal[xref:finance.adoc#PaymentSplitter-PayeeAdded-address-uint256-[`PaymentSplitter.PayeeAdded`]] +:xref-PaymentSplitter-PayeeAdded-address-uint256-: xref:finance.adoc#PaymentSplitter-PayeeAdded-address-uint256- +:PaymentSplitter-PaymentReleased: pass:normal[xref:finance.adoc#PaymentSplitter-PaymentReleased-address-uint256-[`PaymentSplitter.PaymentReleased`]] +:xref-PaymentSplitter-PaymentReleased-address-uint256-: xref:finance.adoc#PaymentSplitter-PaymentReleased-address-uint256- +:PaymentSplitter-ERC20PaymentReleased: pass:normal[xref:finance.adoc#PaymentSplitter-ERC20PaymentReleased-contract-IERC20-address-uint256-[`PaymentSplitter.ERC20PaymentReleased`]] +:xref-PaymentSplitter-ERC20PaymentReleased-contract-IERC20-address-uint256-: xref:finance.adoc#PaymentSplitter-ERC20PaymentReleased-contract-IERC20-address-uint256- +:PaymentSplitter-PaymentReceived: pass:normal[xref:finance.adoc#PaymentSplitter-PaymentReceived-address-uint256-[`PaymentSplitter.PaymentReceived`]] +:xref-PaymentSplitter-PaymentReceived-address-uint256-: xref:finance.adoc#PaymentSplitter-PaymentReceived-address-uint256- +:VestingWallet: pass:normal[xref:finance.adoc#VestingWallet[`VestingWallet`]] +:xref-VestingWallet: xref:finance.adoc#VestingWallet +:VestingWallet-constructor: pass:normal[xref:finance.adoc#VestingWallet-constructor-address-uint64-uint64-[`VestingWallet.constructor`]] +:xref-VestingWallet-constructor-address-uint64-uint64-: xref:finance.adoc#VestingWallet-constructor-address-uint64-uint64- +:VestingWallet-receive: pass:normal[xref:finance.adoc#VestingWallet-receive--[`VestingWallet.receive`]] +:xref-VestingWallet-receive--: xref:finance.adoc#VestingWallet-receive-- +:VestingWallet-beneficiary: pass:normal[xref:finance.adoc#VestingWallet-beneficiary--[`VestingWallet.beneficiary`]] +:xref-VestingWallet-beneficiary--: xref:finance.adoc#VestingWallet-beneficiary-- +:VestingWallet-start: pass:normal[xref:finance.adoc#VestingWallet-start--[`VestingWallet.start`]] +:xref-VestingWallet-start--: xref:finance.adoc#VestingWallet-start-- +:VestingWallet-duration: pass:normal[xref:finance.adoc#VestingWallet-duration--[`VestingWallet.duration`]] +:xref-VestingWallet-duration--: xref:finance.adoc#VestingWallet-duration-- +:VestingWallet-released: pass:normal[xref:finance.adoc#VestingWallet-released--[`VestingWallet.released`]] +:xref-VestingWallet-released--: xref:finance.adoc#VestingWallet-released-- +:VestingWallet-released: pass:normal[xref:finance.adoc#VestingWallet-released-address-[`VestingWallet.released`]] +:xref-VestingWallet-released-address-: xref:finance.adoc#VestingWallet-released-address- +:VestingWallet-release: pass:normal[xref:finance.adoc#VestingWallet-release--[`VestingWallet.release`]] +:xref-VestingWallet-release--: xref:finance.adoc#VestingWallet-release-- +:VestingWallet-release: pass:normal[xref:finance.adoc#VestingWallet-release-address-[`VestingWallet.release`]] +:xref-VestingWallet-release-address-: xref:finance.adoc#VestingWallet-release-address- +:VestingWallet-vestedAmount: pass:normal[xref:finance.adoc#VestingWallet-vestedAmount-uint64-[`VestingWallet.vestedAmount`]] +:xref-VestingWallet-vestedAmount-uint64-: xref:finance.adoc#VestingWallet-vestedAmount-uint64- +:VestingWallet-vestedAmount: pass:normal[xref:finance.adoc#VestingWallet-vestedAmount-address-uint64-[`VestingWallet.vestedAmount`]] +:xref-VestingWallet-vestedAmount-address-uint64-: xref:finance.adoc#VestingWallet-vestedAmount-address-uint64- +:VestingWallet-_vestingSchedule: pass:normal[xref:finance.adoc#VestingWallet-_vestingSchedule-uint256-uint64-[`VestingWallet._vestingSchedule`]] +:xref-VestingWallet-_vestingSchedule-uint256-uint64-: xref:finance.adoc#VestingWallet-_vestingSchedule-uint256-uint64- +:VestingWallet-EtherReleased: pass:normal[xref:finance.adoc#VestingWallet-EtherReleased-uint256-[`VestingWallet.EtherReleased`]] +:xref-VestingWallet-EtherReleased-uint256-: xref:finance.adoc#VestingWallet-EtherReleased-uint256- +:VestingWallet-ERC20Released: pass:normal[xref:finance.adoc#VestingWallet-ERC20Released-address-uint256-[`VestingWallet.ERC20Released`]] +:xref-VestingWallet-ERC20Released-address-uint256-: xref:finance.adoc#VestingWallet-ERC20Released-address-uint256- +:Governor: pass:normal[xref:governance.adoc#Governor[`Governor`]] +:xref-Governor: xref:governance.adoc#Governor +:Governor-onlyGovernance: pass:normal[xref:governance.adoc#Governor-onlyGovernance--[`Governor.onlyGovernance`]] +:xref-Governor-onlyGovernance--: xref:governance.adoc#Governor-onlyGovernance-- +:Governor-BALLOT_TYPEHASH: pass:normal[xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32[`Governor.BALLOT_TYPEHASH`]] +:xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32 +:Governor-constructor: pass:normal[xref:governance.adoc#Governor-constructor-string-[`Governor.constructor`]] +:xref-Governor-constructor-string-: xref:governance.adoc#Governor-constructor-string- +:Governor-receive: pass:normal[xref:governance.adoc#Governor-receive--[`Governor.receive`]] +:xref-Governor-receive--: xref:governance.adoc#Governor-receive-- +:Governor-supportsInterface: pass:normal[xref:governance.adoc#Governor-supportsInterface-bytes4-[`Governor.supportsInterface`]] +:xref-Governor-supportsInterface-bytes4-: xref:governance.adoc#Governor-supportsInterface-bytes4- +:Governor-name: pass:normal[xref:governance.adoc#Governor-name--[`Governor.name`]] +:xref-Governor-name--: xref:governance.adoc#Governor-name-- +:Governor-version: pass:normal[xref:governance.adoc#Governor-version--[`Governor.version`]] +:xref-Governor-version--: xref:governance.adoc#Governor-version-- +:Governor-hashProposal: pass:normal[xref:governance.adoc#Governor-hashProposal-address---uint256---bytes---bytes32-[`Governor.hashProposal`]] +:xref-Governor-hashProposal-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-hashProposal-address---uint256---bytes---bytes32- +:Governor-state: pass:normal[xref:governance.adoc#Governor-state-uint256-[`Governor.state`]] +:xref-Governor-state-uint256-: xref:governance.adoc#Governor-state-uint256- +:Governor-proposalSnapshot: pass:normal[xref:governance.adoc#Governor-proposalSnapshot-uint256-[`Governor.proposalSnapshot`]] +:xref-Governor-proposalSnapshot-uint256-: xref:governance.adoc#Governor-proposalSnapshot-uint256- +:Governor-proposalDeadline: pass:normal[xref:governance.adoc#Governor-proposalDeadline-uint256-[`Governor.proposalDeadline`]] +:xref-Governor-proposalDeadline-uint256-: xref:governance.adoc#Governor-proposalDeadline-uint256- +:Governor-proposalThreshold: pass:normal[xref:governance.adoc#Governor-proposalThreshold--[`Governor.proposalThreshold`]] +:xref-Governor-proposalThreshold--: xref:governance.adoc#Governor-proposalThreshold-- +:Governor-_quorumReached: pass:normal[xref:governance.adoc#Governor-_quorumReached-uint256-[`Governor._quorumReached`]] +:xref-Governor-_quorumReached-uint256-: xref:governance.adoc#Governor-_quorumReached-uint256- +:Governor-_voteSucceeded: pass:normal[xref:governance.adoc#Governor-_voteSucceeded-uint256-[`Governor._voteSucceeded`]] +:xref-Governor-_voteSucceeded-uint256-: xref:governance.adoc#Governor-_voteSucceeded-uint256- +:Governor-_countVote: pass:normal[xref:governance.adoc#Governor-_countVote-uint256-address-uint8-uint256-[`Governor._countVote`]] +:xref-Governor-_countVote-uint256-address-uint8-uint256-: xref:governance.adoc#Governor-_countVote-uint256-address-uint8-uint256- +:Governor-propose: pass:normal[xref:governance.adoc#Governor-propose-address---uint256---bytes---string-[`Governor.propose`]] +:xref-Governor-propose-address---uint256---bytes---string-: xref:governance.adoc#Governor-propose-address---uint256---bytes---string- +:Governor-execute: pass:normal[xref:governance.adoc#Governor-execute-address---uint256---bytes---bytes32-[`Governor.execute`]] +:xref-Governor-execute-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-execute-address---uint256---bytes---bytes32- +:Governor-_execute: pass:normal[xref:governance.adoc#Governor-_execute-uint256-address---uint256---bytes---bytes32-[`Governor._execute`]] +:xref-Governor-_execute-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_execute-uint256-address---uint256---bytes---bytes32- +:Governor-_cancel: pass:normal[xref:governance.adoc#Governor-_cancel-address---uint256---bytes---bytes32-[`Governor._cancel`]] +:xref-Governor-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#Governor-_cancel-address---uint256---bytes---bytes32- +:Governor-castVote: pass:normal[xref:governance.adoc#Governor-castVote-uint256-uint8-[`Governor.castVote`]] +:xref-Governor-castVote-uint256-uint8-: xref:governance.adoc#Governor-castVote-uint256-uint8- +:Governor-castVoteWithReason: pass:normal[xref:governance.adoc#Governor-castVoteWithReason-uint256-uint8-string-[`Governor.castVoteWithReason`]] +:xref-Governor-castVoteWithReason-uint256-uint8-string-: xref:governance.adoc#Governor-castVoteWithReason-uint256-uint8-string- +:Governor-castVoteBySig: pass:normal[xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-[`Governor.castVoteBySig`]] +:xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32- +:Governor-_castVote: pass:normal[xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-[`Governor._castVote`]] +:xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string- +:Governor-relay: pass:normal[xref:governance.adoc#Governor-relay-address-uint256-bytes-[`Governor.relay`]] +:xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes- +:Governor-_executor: pass:normal[xref:governance.adoc#Governor-_executor--[`Governor._executor`]] +:xref-Governor-_executor--: xref:governance.adoc#Governor-_executor-- +:Governor-ProposalCore: pass:normal[xref:governance.adoc#Governor-ProposalCore[`Governor.ProposalCore`]] +:xref-Governor-ProposalCore: xref:governance.adoc#Governor-ProposalCore +:IGovernor: pass:normal[xref:governance.adoc#IGovernor[`IGovernor`]] +:xref-IGovernor: xref:governance.adoc#IGovernor +:IGovernor-name: pass:normal[xref:governance.adoc#IGovernor-name--[`IGovernor.name`]] +:xref-IGovernor-name--: xref:governance.adoc#IGovernor-name-- +:IGovernor-version: pass:normal[xref:governance.adoc#IGovernor-version--[`IGovernor.version`]] +:xref-IGovernor-version--: xref:governance.adoc#IGovernor-version-- +:IGovernor-COUNTING_MODE: pass:normal[xref:governance.adoc#IGovernor-COUNTING_MODE--[`IGovernor.COUNTING_MODE`]] +:xref-IGovernor-COUNTING_MODE--: xref:governance.adoc#IGovernor-COUNTING_MODE-- +:IGovernor-hashProposal: pass:normal[xref:governance.adoc#IGovernor-hashProposal-address---uint256---bytes---bytes32-[`IGovernor.hashProposal`]] +:xref-IGovernor-hashProposal-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernor-hashProposal-address---uint256---bytes---bytes32- +:IGovernor-state: pass:normal[xref:governance.adoc#IGovernor-state-uint256-[`IGovernor.state`]] +:xref-IGovernor-state-uint256-: xref:governance.adoc#IGovernor-state-uint256- +:IGovernor-proposalSnapshot: pass:normal[xref:governance.adoc#IGovernor-proposalSnapshot-uint256-[`IGovernor.proposalSnapshot`]] +:xref-IGovernor-proposalSnapshot-uint256-: xref:governance.adoc#IGovernor-proposalSnapshot-uint256- +:IGovernor-proposalDeadline: pass:normal[xref:governance.adoc#IGovernor-proposalDeadline-uint256-[`IGovernor.proposalDeadline`]] +:xref-IGovernor-proposalDeadline-uint256-: xref:governance.adoc#IGovernor-proposalDeadline-uint256- +:IGovernor-votingDelay: pass:normal[xref:governance.adoc#IGovernor-votingDelay--[`IGovernor.votingDelay`]] +:xref-IGovernor-votingDelay--: xref:governance.adoc#IGovernor-votingDelay-- +:IGovernor-votingPeriod: pass:normal[xref:governance.adoc#IGovernor-votingPeriod--[`IGovernor.votingPeriod`]] +:xref-IGovernor-votingPeriod--: xref:governance.adoc#IGovernor-votingPeriod-- +:IGovernor-quorum: pass:normal[xref:governance.adoc#IGovernor-quorum-uint256-[`IGovernor.quorum`]] +:xref-IGovernor-quorum-uint256-: xref:governance.adoc#IGovernor-quorum-uint256- +:IGovernor-getVotes: pass:normal[xref:governance.adoc#IGovernor-getVotes-address-uint256-[`IGovernor.getVotes`]] +:xref-IGovernor-getVotes-address-uint256-: xref:governance.adoc#IGovernor-getVotes-address-uint256- +:IGovernor-hasVoted: pass:normal[xref:governance.adoc#IGovernor-hasVoted-uint256-address-[`IGovernor.hasVoted`]] +:xref-IGovernor-hasVoted-uint256-address-: xref:governance.adoc#IGovernor-hasVoted-uint256-address- +:IGovernor-propose: pass:normal[xref:governance.adoc#IGovernor-propose-address---uint256---bytes---string-[`IGovernor.propose`]] +:xref-IGovernor-propose-address---uint256---bytes---string-: xref:governance.adoc#IGovernor-propose-address---uint256---bytes---string- +:IGovernor-execute: pass:normal[xref:governance.adoc#IGovernor-execute-address---uint256---bytes---bytes32-[`IGovernor.execute`]] +:xref-IGovernor-execute-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernor-execute-address---uint256---bytes---bytes32- +:IGovernor-castVote: pass:normal[xref:governance.adoc#IGovernor-castVote-uint256-uint8-[`IGovernor.castVote`]] +:xref-IGovernor-castVote-uint256-uint8-: xref:governance.adoc#IGovernor-castVote-uint256-uint8- +:IGovernor-castVoteWithReason: pass:normal[xref:governance.adoc#IGovernor-castVoteWithReason-uint256-uint8-string-[`IGovernor.castVoteWithReason`]] +:xref-IGovernor-castVoteWithReason-uint256-uint8-string-: xref:governance.adoc#IGovernor-castVoteWithReason-uint256-uint8-string- +:IGovernor-castVoteBySig: pass:normal[xref:governance.adoc#IGovernor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-[`IGovernor.castVoteBySig`]] +:xref-IGovernor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-: xref:governance.adoc#IGovernor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32- +:IGovernor-ProposalCreated: pass:normal[xref:governance.adoc#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-[`IGovernor.ProposalCreated`]] +:xref-IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string-: xref:governance.adoc#IGovernor-ProposalCreated-uint256-address-address---uint256---string---bytes---uint256-uint256-string- +:IGovernor-ProposalCanceled: pass:normal[xref:governance.adoc#IGovernor-ProposalCanceled-uint256-[`IGovernor.ProposalCanceled`]] +:xref-IGovernor-ProposalCanceled-uint256-: xref:governance.adoc#IGovernor-ProposalCanceled-uint256- +:IGovernor-ProposalExecuted: pass:normal[xref:governance.adoc#IGovernor-ProposalExecuted-uint256-[`IGovernor.ProposalExecuted`]] +:xref-IGovernor-ProposalExecuted-uint256-: xref:governance.adoc#IGovernor-ProposalExecuted-uint256- +:IGovernor-VoteCast: pass:normal[xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string-[`IGovernor.VoteCast`]] +:xref-IGovernor-VoteCast-address-uint256-uint8-uint256-string-: xref:governance.adoc#IGovernor-VoteCast-address-uint256-uint8-uint256-string- +:IGovernor-ProposalState: pass:normal[xref:governance.adoc#IGovernor-ProposalState[`IGovernor.ProposalState`]] +:xref-IGovernor-ProposalState: xref:governance.adoc#IGovernor-ProposalState +:TimelockController: pass:normal[xref:governance.adoc#TimelockController[`TimelockController`]] +:xref-TimelockController: xref:governance.adoc#TimelockController +:TimelockController-onlyRoleOrOpenRole: pass:normal[xref:governance.adoc#TimelockController-onlyRoleOrOpenRole-bytes32-[`TimelockController.onlyRoleOrOpenRole`]] +:xref-TimelockController-onlyRoleOrOpenRole-bytes32-: xref:governance.adoc#TimelockController-onlyRoleOrOpenRole-bytes32- +:TimelockController-TIMELOCK_ADMIN_ROLE: pass:normal[xref:governance.adoc#TimelockController-TIMELOCK_ADMIN_ROLE-bytes32[`TimelockController.TIMELOCK_ADMIN_ROLE`]] +:xref-TimelockController-TIMELOCK_ADMIN_ROLE-bytes32: xref:governance.adoc#TimelockController-TIMELOCK_ADMIN_ROLE-bytes32 +:TimelockController-PROPOSER_ROLE: pass:normal[xref:governance.adoc#TimelockController-PROPOSER_ROLE-bytes32[`TimelockController.PROPOSER_ROLE`]] +:xref-TimelockController-PROPOSER_ROLE-bytes32: xref:governance.adoc#TimelockController-PROPOSER_ROLE-bytes32 +:TimelockController-EXECUTOR_ROLE: pass:normal[xref:governance.adoc#TimelockController-EXECUTOR_ROLE-bytes32[`TimelockController.EXECUTOR_ROLE`]] +:xref-TimelockController-EXECUTOR_ROLE-bytes32: xref:governance.adoc#TimelockController-EXECUTOR_ROLE-bytes32 +:TimelockController-_DONE_TIMESTAMP: pass:normal[xref:governance.adoc#TimelockController-_DONE_TIMESTAMP-uint256[`TimelockController._DONE_TIMESTAMP`]] +:xref-TimelockController-_DONE_TIMESTAMP-uint256: xref:governance.adoc#TimelockController-_DONE_TIMESTAMP-uint256 +:TimelockController-constructor: pass:normal[xref:governance.adoc#TimelockController-constructor-uint256-address---address---[`TimelockController.constructor`]] +:xref-TimelockController-constructor-uint256-address---address---: xref:governance.adoc#TimelockController-constructor-uint256-address---address--- +:TimelockController-receive: pass:normal[xref:governance.adoc#TimelockController-receive--[`TimelockController.receive`]] +:xref-TimelockController-receive--: xref:governance.adoc#TimelockController-receive-- +:TimelockController-isOperation: pass:normal[xref:governance.adoc#TimelockController-isOperation-bytes32-[`TimelockController.isOperation`]] +:xref-TimelockController-isOperation-bytes32-: xref:governance.adoc#TimelockController-isOperation-bytes32- +:TimelockController-isOperationPending: pass:normal[xref:governance.adoc#TimelockController-isOperationPending-bytes32-[`TimelockController.isOperationPending`]] +:xref-TimelockController-isOperationPending-bytes32-: xref:governance.adoc#TimelockController-isOperationPending-bytes32- +:TimelockController-isOperationReady: pass:normal[xref:governance.adoc#TimelockController-isOperationReady-bytes32-[`TimelockController.isOperationReady`]] +:xref-TimelockController-isOperationReady-bytes32-: xref:governance.adoc#TimelockController-isOperationReady-bytes32- +:TimelockController-isOperationDone: pass:normal[xref:governance.adoc#TimelockController-isOperationDone-bytes32-[`TimelockController.isOperationDone`]] +:xref-TimelockController-isOperationDone-bytes32-: xref:governance.adoc#TimelockController-isOperationDone-bytes32- +:TimelockController-getTimestamp: pass:normal[xref:governance.adoc#TimelockController-getTimestamp-bytes32-[`TimelockController.getTimestamp`]] +:xref-TimelockController-getTimestamp-bytes32-: xref:governance.adoc#TimelockController-getTimestamp-bytes32- +:TimelockController-getMinDelay: pass:normal[xref:governance.adoc#TimelockController-getMinDelay--[`TimelockController.getMinDelay`]] +:xref-TimelockController-getMinDelay--: xref:governance.adoc#TimelockController-getMinDelay-- +:TimelockController-hashOperation: pass:normal[xref:governance.adoc#TimelockController-hashOperation-address-uint256-bytes-bytes32-bytes32-[`TimelockController.hashOperation`]] +:xref-TimelockController-hashOperation-address-uint256-bytes-bytes32-bytes32-: xref:governance.adoc#TimelockController-hashOperation-address-uint256-bytes-bytes32-bytes32- +:TimelockController-hashOperationBatch: pass:normal[xref:governance.adoc#TimelockController-hashOperationBatch-address---uint256---bytes---bytes32-bytes32-[`TimelockController.hashOperationBatch`]] +:xref-TimelockController-hashOperationBatch-address---uint256---bytes---bytes32-bytes32-: xref:governance.adoc#TimelockController-hashOperationBatch-address---uint256---bytes---bytes32-bytes32- +:TimelockController-schedule: pass:normal[xref:governance.adoc#TimelockController-schedule-address-uint256-bytes-bytes32-bytes32-uint256-[`TimelockController.schedule`]] +:xref-TimelockController-schedule-address-uint256-bytes-bytes32-bytes32-uint256-: xref:governance.adoc#TimelockController-schedule-address-uint256-bytes-bytes32-bytes32-uint256- +:TimelockController-scheduleBatch: pass:normal[xref:governance.adoc#TimelockController-scheduleBatch-address---uint256---bytes---bytes32-bytes32-uint256-[`TimelockController.scheduleBatch`]] +:xref-TimelockController-scheduleBatch-address---uint256---bytes---bytes32-bytes32-uint256-: xref:governance.adoc#TimelockController-scheduleBatch-address---uint256---bytes---bytes32-bytes32-uint256- +:TimelockController-cancel: pass:normal[xref:governance.adoc#TimelockController-cancel-bytes32-[`TimelockController.cancel`]] +:xref-TimelockController-cancel-bytes32-: xref:governance.adoc#TimelockController-cancel-bytes32- +:TimelockController-execute: pass:normal[xref:governance.adoc#TimelockController-execute-address-uint256-bytes-bytes32-bytes32-[`TimelockController.execute`]] +:xref-TimelockController-execute-address-uint256-bytes-bytes32-bytes32-: xref:governance.adoc#TimelockController-execute-address-uint256-bytes-bytes32-bytes32- +:TimelockController-executeBatch: pass:normal[xref:governance.adoc#TimelockController-executeBatch-address---uint256---bytes---bytes32-bytes32-[`TimelockController.executeBatch`]] +:xref-TimelockController-executeBatch-address---uint256---bytes---bytes32-bytes32-: xref:governance.adoc#TimelockController-executeBatch-address---uint256---bytes---bytes32-bytes32- +:TimelockController-updateDelay: pass:normal[xref:governance.adoc#TimelockController-updateDelay-uint256-[`TimelockController.updateDelay`]] +:xref-TimelockController-updateDelay-uint256-: xref:governance.adoc#TimelockController-updateDelay-uint256- +:TimelockController-CallScheduled: pass:normal[xref:governance.adoc#TimelockController-CallScheduled-bytes32-uint256-address-uint256-bytes-bytes32-uint256-[`TimelockController.CallScheduled`]] +:xref-TimelockController-CallScheduled-bytes32-uint256-address-uint256-bytes-bytes32-uint256-: xref:governance.adoc#TimelockController-CallScheduled-bytes32-uint256-address-uint256-bytes-bytes32-uint256- +:TimelockController-CallExecuted: pass:normal[xref:governance.adoc#TimelockController-CallExecuted-bytes32-uint256-address-uint256-bytes-[`TimelockController.CallExecuted`]] +:xref-TimelockController-CallExecuted-bytes32-uint256-address-uint256-bytes-: xref:governance.adoc#TimelockController-CallExecuted-bytes32-uint256-address-uint256-bytes- +:TimelockController-Cancelled: pass:normal[xref:governance.adoc#TimelockController-Cancelled-bytes32-[`TimelockController.Cancelled`]] +:xref-TimelockController-Cancelled-bytes32-: xref:governance.adoc#TimelockController-Cancelled-bytes32- +:TimelockController-MinDelayChange: pass:normal[xref:governance.adoc#TimelockController-MinDelayChange-uint256-uint256-[`TimelockController.MinDelayChange`]] +:xref-TimelockController-MinDelayChange-uint256-uint256-: xref:governance.adoc#TimelockController-MinDelayChange-uint256-uint256- +:GovernorCompatibilityBravo: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo[`GovernorCompatibilityBravo`]] +:xref-GovernorCompatibilityBravo: xref:governance.adoc#GovernorCompatibilityBravo +:GovernorCompatibilityBravo-COUNTING_MODE: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-COUNTING_MODE--[`GovernorCompatibilityBravo.COUNTING_MODE`]] +:xref-GovernorCompatibilityBravo-COUNTING_MODE--: xref:governance.adoc#GovernorCompatibilityBravo-COUNTING_MODE-- +:GovernorCompatibilityBravo-propose: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-propose-address---uint256---bytes---string-[`GovernorCompatibilityBravo.propose`]] +:xref-GovernorCompatibilityBravo-propose-address---uint256---bytes---string-: xref:governance.adoc#GovernorCompatibilityBravo-propose-address---uint256---bytes---string- +:GovernorCompatibilityBravo-propose: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-propose-address---uint256---string---bytes---string-[`GovernorCompatibilityBravo.propose`]] +:xref-GovernorCompatibilityBravo-propose-address---uint256---string---bytes---string-: xref:governance.adoc#GovernorCompatibilityBravo-propose-address---uint256---string---bytes---string- +:GovernorCompatibilityBravo-queue: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-queue-uint256-[`GovernorCompatibilityBravo.queue`]] +:xref-GovernorCompatibilityBravo-queue-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-queue-uint256- +:GovernorCompatibilityBravo-execute: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-execute-uint256-[`GovernorCompatibilityBravo.execute`]] +:xref-GovernorCompatibilityBravo-execute-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-execute-uint256- +:GovernorCompatibilityBravo-cancel: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-cancel-uint256-[`GovernorCompatibilityBravo.cancel`]] +:xref-GovernorCompatibilityBravo-cancel-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-cancel-uint256- +:GovernorCompatibilityBravo-proposals: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-proposals-uint256-[`GovernorCompatibilityBravo.proposals`]] +:xref-GovernorCompatibilityBravo-proposals-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-proposals-uint256- +:GovernorCompatibilityBravo-getActions: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-getActions-uint256-[`GovernorCompatibilityBravo.getActions`]] +:xref-GovernorCompatibilityBravo-getActions-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-getActions-uint256- +:GovernorCompatibilityBravo-getReceipt: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-getReceipt-uint256-address-[`GovernorCompatibilityBravo.getReceipt`]] +:xref-GovernorCompatibilityBravo-getReceipt-uint256-address-: xref:governance.adoc#GovernorCompatibilityBravo-getReceipt-uint256-address- +:GovernorCompatibilityBravo-quorumVotes: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-quorumVotes--[`GovernorCompatibilityBravo.quorumVotes`]] +:xref-GovernorCompatibilityBravo-quorumVotes--: xref:governance.adoc#GovernorCompatibilityBravo-quorumVotes-- +:GovernorCompatibilityBravo-hasVoted: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-hasVoted-uint256-address-[`GovernorCompatibilityBravo.hasVoted`]] +:xref-GovernorCompatibilityBravo-hasVoted-uint256-address-: xref:governance.adoc#GovernorCompatibilityBravo-hasVoted-uint256-address- +:GovernorCompatibilityBravo-_quorumReached: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-_quorumReached-uint256-[`GovernorCompatibilityBravo._quorumReached`]] +:xref-GovernorCompatibilityBravo-_quorumReached-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-_quorumReached-uint256- +:GovernorCompatibilityBravo-_voteSucceeded: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-_voteSucceeded-uint256-[`GovernorCompatibilityBravo._voteSucceeded`]] +:xref-GovernorCompatibilityBravo-_voteSucceeded-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-_voteSucceeded-uint256- +:GovernorCompatibilityBravo-_countVote: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-_countVote-uint256-address-uint8-uint256-[`GovernorCompatibilityBravo._countVote`]] +:xref-GovernorCompatibilityBravo-_countVote-uint256-address-uint8-uint256-: xref:governance.adoc#GovernorCompatibilityBravo-_countVote-uint256-address-uint8-uint256- +:GovernorCompatibilityBravo-ProposalDetails: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-ProposalDetails[`GovernorCompatibilityBravo.ProposalDetails`]] +:xref-GovernorCompatibilityBravo-ProposalDetails: xref:governance.adoc#GovernorCompatibilityBravo-ProposalDetails +:GovernorCompatibilityBravo-VoteType: pass:normal[xref:governance.adoc#GovernorCompatibilityBravo-VoteType[`GovernorCompatibilityBravo.VoteType`]] +:xref-GovernorCompatibilityBravo-VoteType: xref:governance.adoc#GovernorCompatibilityBravo-VoteType +:IGovernorCompatibilityBravo: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo[`IGovernorCompatibilityBravo`]] +:xref-IGovernorCompatibilityBravo: xref:governance.adoc#IGovernorCompatibilityBravo +:IGovernorCompatibilityBravo-quorumVotes: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-quorumVotes--[`IGovernorCompatibilityBravo.quorumVotes`]] +:xref-IGovernorCompatibilityBravo-quorumVotes--: xref:governance.adoc#IGovernorCompatibilityBravo-quorumVotes-- +:IGovernorCompatibilityBravo-proposals: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-proposals-uint256-[`IGovernorCompatibilityBravo.proposals`]] +:xref-IGovernorCompatibilityBravo-proposals-uint256-: xref:governance.adoc#IGovernorCompatibilityBravo-proposals-uint256- +:IGovernorCompatibilityBravo-propose: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-propose-address---uint256---string---bytes---string-[`IGovernorCompatibilityBravo.propose`]] +:xref-IGovernorCompatibilityBravo-propose-address---uint256---string---bytes---string-: xref:governance.adoc#IGovernorCompatibilityBravo-propose-address---uint256---string---bytes---string- +:IGovernorCompatibilityBravo-queue: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-queue-uint256-[`IGovernorCompatibilityBravo.queue`]] +:xref-IGovernorCompatibilityBravo-queue-uint256-: xref:governance.adoc#IGovernorCompatibilityBravo-queue-uint256- +:IGovernorCompatibilityBravo-execute: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-execute-uint256-[`IGovernorCompatibilityBravo.execute`]] +:xref-IGovernorCompatibilityBravo-execute-uint256-: xref:governance.adoc#IGovernorCompatibilityBravo-execute-uint256- +:IGovernorCompatibilityBravo-cancel: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-cancel-uint256-[`IGovernorCompatibilityBravo.cancel`]] +:xref-IGovernorCompatibilityBravo-cancel-uint256-: xref:governance.adoc#IGovernorCompatibilityBravo-cancel-uint256- +:IGovernorCompatibilityBravo-getActions: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-getActions-uint256-[`IGovernorCompatibilityBravo.getActions`]] +:xref-IGovernorCompatibilityBravo-getActions-uint256-: xref:governance.adoc#IGovernorCompatibilityBravo-getActions-uint256- +:IGovernorCompatibilityBravo-getReceipt: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-getReceipt-uint256-address-[`IGovernorCompatibilityBravo.getReceipt`]] +:xref-IGovernorCompatibilityBravo-getReceipt-uint256-address-: xref:governance.adoc#IGovernorCompatibilityBravo-getReceipt-uint256-address- +:IGovernorCompatibilityBravo-Proposal: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-Proposal[`IGovernorCompatibilityBravo.Proposal`]] +:xref-IGovernorCompatibilityBravo-Proposal: xref:governance.adoc#IGovernorCompatibilityBravo-Proposal +:IGovernorCompatibilityBravo-Receipt: pass:normal[xref:governance.adoc#IGovernorCompatibilityBravo-Receipt[`IGovernorCompatibilityBravo.Receipt`]] +:xref-IGovernorCompatibilityBravo-Receipt: xref:governance.adoc#IGovernorCompatibilityBravo-Receipt +:GovernorCountingSimple: pass:normal[xref:governance.adoc#GovernorCountingSimple[`GovernorCountingSimple`]] +:xref-GovernorCountingSimple: xref:governance.adoc#GovernorCountingSimple +:GovernorCountingSimple-COUNTING_MODE: pass:normal[xref:governance.adoc#GovernorCountingSimple-COUNTING_MODE--[`GovernorCountingSimple.COUNTING_MODE`]] +:xref-GovernorCountingSimple-COUNTING_MODE--: xref:governance.adoc#GovernorCountingSimple-COUNTING_MODE-- +:GovernorCountingSimple-hasVoted: pass:normal[xref:governance.adoc#GovernorCountingSimple-hasVoted-uint256-address-[`GovernorCountingSimple.hasVoted`]] +:xref-GovernorCountingSimple-hasVoted-uint256-address-: xref:governance.adoc#GovernorCountingSimple-hasVoted-uint256-address- +:GovernorCountingSimple-proposalVotes: pass:normal[xref:governance.adoc#GovernorCountingSimple-proposalVotes-uint256-[`GovernorCountingSimple.proposalVotes`]] +:xref-GovernorCountingSimple-proposalVotes-uint256-: xref:governance.adoc#GovernorCountingSimple-proposalVotes-uint256- +:GovernorCountingSimple-_quorumReached: pass:normal[xref:governance.adoc#GovernorCountingSimple-_quorumReached-uint256-[`GovernorCountingSimple._quorumReached`]] +:xref-GovernorCountingSimple-_quorumReached-uint256-: xref:governance.adoc#GovernorCountingSimple-_quorumReached-uint256- +:GovernorCountingSimple-_voteSucceeded: pass:normal[xref:governance.adoc#GovernorCountingSimple-_voteSucceeded-uint256-[`GovernorCountingSimple._voteSucceeded`]] +:xref-GovernorCountingSimple-_voteSucceeded-uint256-: xref:governance.adoc#GovernorCountingSimple-_voteSucceeded-uint256- +:GovernorCountingSimple-_countVote: pass:normal[xref:governance.adoc#GovernorCountingSimple-_countVote-uint256-address-uint8-uint256-[`GovernorCountingSimple._countVote`]] +:xref-GovernorCountingSimple-_countVote-uint256-address-uint8-uint256-: xref:governance.adoc#GovernorCountingSimple-_countVote-uint256-address-uint8-uint256- +:GovernorCountingSimple-ProposalVote: pass:normal[xref:governance.adoc#GovernorCountingSimple-ProposalVote[`GovernorCountingSimple.ProposalVote`]] +:xref-GovernorCountingSimple-ProposalVote: xref:governance.adoc#GovernorCountingSimple-ProposalVote +:GovernorCountingSimple-VoteType: pass:normal[xref:governance.adoc#GovernorCountingSimple-VoteType[`GovernorCountingSimple.VoteType`]] +:xref-GovernorCountingSimple-VoteType: xref:governance.adoc#GovernorCountingSimple-VoteType +:GovernorPreventLateQuorum: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum[`GovernorPreventLateQuorum`]] +:xref-GovernorPreventLateQuorum: xref:governance.adoc#GovernorPreventLateQuorum +:GovernorPreventLateQuorum-constructor: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64-[`GovernorPreventLateQuorum.constructor`]] +:xref-GovernorPreventLateQuorum-constructor-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64- +:GovernorPreventLateQuorum-proposalDeadline: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256-[`GovernorPreventLateQuorum.proposalDeadline`]] +:xref-GovernorPreventLateQuorum-proposalDeadline-uint256-: xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256- +:GovernorPreventLateQuorum-_castVote: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-[`GovernorPreventLateQuorum._castVote`]] +:xref-GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-: xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string- +:GovernorPreventLateQuorum-lateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension--[`GovernorPreventLateQuorum.lateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-lateQuorumVoteExtension--: xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension-- +:GovernorPreventLateQuorum-setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum.setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-_setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum._setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-ProposalExtended: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-[`GovernorPreventLateQuorum.ProposalExtended`]] +:xref-GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64- +:GovernorPreventLateQuorum-LateQuorumVoteExtensionSet: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-[`GovernorPreventLateQuorum.LateQuorumVoteExtensionSet`]] +:xref-GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64- +:GovernorProposalThreshold: pass:normal[xref:governance.adoc#GovernorProposalThreshold[`GovernorProposalThreshold`]] +:xref-GovernorProposalThreshold: xref:governance.adoc#GovernorProposalThreshold +:GovernorProposalThreshold-propose: pass:normal[xref:governance.adoc#GovernorProposalThreshold-propose-address---uint256---bytes---string-[`GovernorProposalThreshold.propose`]] +:xref-GovernorProposalThreshold-propose-address---uint256---bytes---string-: xref:governance.adoc#GovernorProposalThreshold-propose-address---uint256---bytes---string- +:GovernorSettings: pass:normal[xref:governance.adoc#GovernorSettings[`GovernorSettings`]] +:xref-GovernorSettings: xref:governance.adoc#GovernorSettings +:GovernorSettings-constructor: pass:normal[xref:governance.adoc#GovernorSettings-constructor-uint256-uint256-uint256-[`GovernorSettings.constructor`]] +:xref-GovernorSettings-constructor-uint256-uint256-uint256-: xref:governance.adoc#GovernorSettings-constructor-uint256-uint256-uint256- +:GovernorSettings-votingDelay: pass:normal[xref:governance.adoc#GovernorSettings-votingDelay--[`GovernorSettings.votingDelay`]] +:xref-GovernorSettings-votingDelay--: xref:governance.adoc#GovernorSettings-votingDelay-- +:GovernorSettings-votingPeriod: pass:normal[xref:governance.adoc#GovernorSettings-votingPeriod--[`GovernorSettings.votingPeriod`]] +:xref-GovernorSettings-votingPeriod--: xref:governance.adoc#GovernorSettings-votingPeriod-- +:GovernorSettings-proposalThreshold: pass:normal[xref:governance.adoc#GovernorSettings-proposalThreshold--[`GovernorSettings.proposalThreshold`]] +:xref-GovernorSettings-proposalThreshold--: xref:governance.adoc#GovernorSettings-proposalThreshold-- +:GovernorSettings-setVotingDelay: pass:normal[xref:governance.adoc#GovernorSettings-setVotingDelay-uint256-[`GovernorSettings.setVotingDelay`]] +:xref-GovernorSettings-setVotingDelay-uint256-: xref:governance.adoc#GovernorSettings-setVotingDelay-uint256- +:GovernorSettings-setVotingPeriod: pass:normal[xref:governance.adoc#GovernorSettings-setVotingPeriod-uint256-[`GovernorSettings.setVotingPeriod`]] +:xref-GovernorSettings-setVotingPeriod-uint256-: xref:governance.adoc#GovernorSettings-setVotingPeriod-uint256- +:GovernorSettings-setProposalThreshold: pass:normal[xref:governance.adoc#GovernorSettings-setProposalThreshold-uint256-[`GovernorSettings.setProposalThreshold`]] +:xref-GovernorSettings-setProposalThreshold-uint256-: xref:governance.adoc#GovernorSettings-setProposalThreshold-uint256- +:GovernorSettings-_setVotingDelay: pass:normal[xref:governance.adoc#GovernorSettings-_setVotingDelay-uint256-[`GovernorSettings._setVotingDelay`]] +:xref-GovernorSettings-_setVotingDelay-uint256-: xref:governance.adoc#GovernorSettings-_setVotingDelay-uint256- +:GovernorSettings-_setVotingPeriod: pass:normal[xref:governance.adoc#GovernorSettings-_setVotingPeriod-uint256-[`GovernorSettings._setVotingPeriod`]] +:xref-GovernorSettings-_setVotingPeriod-uint256-: xref:governance.adoc#GovernorSettings-_setVotingPeriod-uint256- +:GovernorSettings-_setProposalThreshold: pass:normal[xref:governance.adoc#GovernorSettings-_setProposalThreshold-uint256-[`GovernorSettings._setProposalThreshold`]] +:xref-GovernorSettings-_setProposalThreshold-uint256-: xref:governance.adoc#GovernorSettings-_setProposalThreshold-uint256- +:GovernorSettings-VotingDelaySet: pass:normal[xref:governance.adoc#GovernorSettings-VotingDelaySet-uint256-uint256-[`GovernorSettings.VotingDelaySet`]] +:xref-GovernorSettings-VotingDelaySet-uint256-uint256-: xref:governance.adoc#GovernorSettings-VotingDelaySet-uint256-uint256- +:GovernorSettings-VotingPeriodSet: pass:normal[xref:governance.adoc#GovernorSettings-VotingPeriodSet-uint256-uint256-[`GovernorSettings.VotingPeriodSet`]] +:xref-GovernorSettings-VotingPeriodSet-uint256-uint256-: xref:governance.adoc#GovernorSettings-VotingPeriodSet-uint256-uint256- +:GovernorSettings-ProposalThresholdSet: pass:normal[xref:governance.adoc#GovernorSettings-ProposalThresholdSet-uint256-uint256-[`GovernorSettings.ProposalThresholdSet`]] +:xref-GovernorSettings-ProposalThresholdSet-uint256-uint256-: xref:governance.adoc#GovernorSettings-ProposalThresholdSet-uint256-uint256- +:ICompoundTimelock: pass:normal[xref:governance.adoc#ICompoundTimelock[`ICompoundTimelock`]] +:xref-ICompoundTimelock: xref:governance.adoc#ICompoundTimelock +:ICompoundTimelock-receive: pass:normal[xref:governance.adoc#ICompoundTimelock-receive--[`ICompoundTimelock.receive`]] +:xref-ICompoundTimelock-receive--: xref:governance.adoc#ICompoundTimelock-receive-- +:ICompoundTimelock-GRACE_PERIOD: pass:normal[xref:governance.adoc#ICompoundTimelock-GRACE_PERIOD--[`ICompoundTimelock.GRACE_PERIOD`]] +:xref-ICompoundTimelock-GRACE_PERIOD--: xref:governance.adoc#ICompoundTimelock-GRACE_PERIOD-- +:ICompoundTimelock-MINIMUM_DELAY: pass:normal[xref:governance.adoc#ICompoundTimelock-MINIMUM_DELAY--[`ICompoundTimelock.MINIMUM_DELAY`]] +:xref-ICompoundTimelock-MINIMUM_DELAY--: xref:governance.adoc#ICompoundTimelock-MINIMUM_DELAY-- +:ICompoundTimelock-MAXIMUM_DELAY: pass:normal[xref:governance.adoc#ICompoundTimelock-MAXIMUM_DELAY--[`ICompoundTimelock.MAXIMUM_DELAY`]] +:xref-ICompoundTimelock-MAXIMUM_DELAY--: xref:governance.adoc#ICompoundTimelock-MAXIMUM_DELAY-- +:ICompoundTimelock-admin: pass:normal[xref:governance.adoc#ICompoundTimelock-admin--[`ICompoundTimelock.admin`]] +:xref-ICompoundTimelock-admin--: xref:governance.adoc#ICompoundTimelock-admin-- +:ICompoundTimelock-pendingAdmin: pass:normal[xref:governance.adoc#ICompoundTimelock-pendingAdmin--[`ICompoundTimelock.pendingAdmin`]] +:xref-ICompoundTimelock-pendingAdmin--: xref:governance.adoc#ICompoundTimelock-pendingAdmin-- +:ICompoundTimelock-delay: pass:normal[xref:governance.adoc#ICompoundTimelock-delay--[`ICompoundTimelock.delay`]] +:xref-ICompoundTimelock-delay--: xref:governance.adoc#ICompoundTimelock-delay-- +:ICompoundTimelock-queuedTransactions: pass:normal[xref:governance.adoc#ICompoundTimelock-queuedTransactions-bytes32-[`ICompoundTimelock.queuedTransactions`]] +:xref-ICompoundTimelock-queuedTransactions-bytes32-: xref:governance.adoc#ICompoundTimelock-queuedTransactions-bytes32- +:ICompoundTimelock-setDelay: pass:normal[xref:governance.adoc#ICompoundTimelock-setDelay-uint256-[`ICompoundTimelock.setDelay`]] +:xref-ICompoundTimelock-setDelay-uint256-: xref:governance.adoc#ICompoundTimelock-setDelay-uint256- +:ICompoundTimelock-acceptAdmin: pass:normal[xref:governance.adoc#ICompoundTimelock-acceptAdmin--[`ICompoundTimelock.acceptAdmin`]] +:xref-ICompoundTimelock-acceptAdmin--: xref:governance.adoc#ICompoundTimelock-acceptAdmin-- +:ICompoundTimelock-setPendingAdmin: pass:normal[xref:governance.adoc#ICompoundTimelock-setPendingAdmin-address-[`ICompoundTimelock.setPendingAdmin`]] +:xref-ICompoundTimelock-setPendingAdmin-address-: xref:governance.adoc#ICompoundTimelock-setPendingAdmin-address- +:ICompoundTimelock-queueTransaction: pass:normal[xref:governance.adoc#ICompoundTimelock-queueTransaction-address-uint256-string-bytes-uint256-[`ICompoundTimelock.queueTransaction`]] +:xref-ICompoundTimelock-queueTransaction-address-uint256-string-bytes-uint256-: xref:governance.adoc#ICompoundTimelock-queueTransaction-address-uint256-string-bytes-uint256- +:ICompoundTimelock-cancelTransaction: pass:normal[xref:governance.adoc#ICompoundTimelock-cancelTransaction-address-uint256-string-bytes-uint256-[`ICompoundTimelock.cancelTransaction`]] +:xref-ICompoundTimelock-cancelTransaction-address-uint256-string-bytes-uint256-: xref:governance.adoc#ICompoundTimelock-cancelTransaction-address-uint256-string-bytes-uint256- +:ICompoundTimelock-executeTransaction: pass:normal[xref:governance.adoc#ICompoundTimelock-executeTransaction-address-uint256-string-bytes-uint256-[`ICompoundTimelock.executeTransaction`]] +:xref-ICompoundTimelock-executeTransaction-address-uint256-string-bytes-uint256-: xref:governance.adoc#ICompoundTimelock-executeTransaction-address-uint256-string-bytes-uint256- +:GovernorTimelockCompound: pass:normal[xref:governance.adoc#GovernorTimelockCompound[`GovernorTimelockCompound`]] +:xref-GovernorTimelockCompound: xref:governance.adoc#GovernorTimelockCompound +:GovernorTimelockCompound-constructor: pass:normal[xref:governance.adoc#GovernorTimelockCompound-constructor-contract-ICompoundTimelock-[`GovernorTimelockCompound.constructor`]] +:xref-GovernorTimelockCompound-constructor-contract-ICompoundTimelock-: xref:governance.adoc#GovernorTimelockCompound-constructor-contract-ICompoundTimelock- +:GovernorTimelockCompound-supportsInterface: pass:normal[xref:governance.adoc#GovernorTimelockCompound-supportsInterface-bytes4-[`GovernorTimelockCompound.supportsInterface`]] +:xref-GovernorTimelockCompound-supportsInterface-bytes4-: xref:governance.adoc#GovernorTimelockCompound-supportsInterface-bytes4- +:GovernorTimelockCompound-state: pass:normal[xref:governance.adoc#GovernorTimelockCompound-state-uint256-[`GovernorTimelockCompound.state`]] +:xref-GovernorTimelockCompound-state-uint256-: xref:governance.adoc#GovernorTimelockCompound-state-uint256- +:GovernorTimelockCompound-timelock: pass:normal[xref:governance.adoc#GovernorTimelockCompound-timelock--[`GovernorTimelockCompound.timelock`]] +:xref-GovernorTimelockCompound-timelock--: xref:governance.adoc#GovernorTimelockCompound-timelock-- +:GovernorTimelockCompound-proposalEta: pass:normal[xref:governance.adoc#GovernorTimelockCompound-proposalEta-uint256-[`GovernorTimelockCompound.proposalEta`]] +:xref-GovernorTimelockCompound-proposalEta-uint256-: xref:governance.adoc#GovernorTimelockCompound-proposalEta-uint256- +:GovernorTimelockCompound-queue: pass:normal[xref:governance.adoc#GovernorTimelockCompound-queue-address---uint256---bytes---bytes32-[`GovernorTimelockCompound.queue`]] +:xref-GovernorTimelockCompound-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockCompound-queue-address---uint256---bytes---bytes32- +:GovernorTimelockCompound-_execute: pass:normal[xref:governance.adoc#GovernorTimelockCompound-_execute-uint256-address---uint256---bytes---bytes32-[`GovernorTimelockCompound._execute`]] +:xref-GovernorTimelockCompound-_execute-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockCompound-_execute-uint256-address---uint256---bytes---bytes32- +:GovernorTimelockCompound-_cancel: pass:normal[xref:governance.adoc#GovernorTimelockCompound-_cancel-address---uint256---bytes---bytes32-[`GovernorTimelockCompound._cancel`]] +:xref-GovernorTimelockCompound-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockCompound-_cancel-address---uint256---bytes---bytes32- +:GovernorTimelockCompound-_executor: pass:normal[xref:governance.adoc#GovernorTimelockCompound-_executor--[`GovernorTimelockCompound._executor`]] +:xref-GovernorTimelockCompound-_executor--: xref:governance.adoc#GovernorTimelockCompound-_executor-- +:GovernorTimelockCompound-__acceptAdmin: pass:normal[xref:governance.adoc#GovernorTimelockCompound-__acceptAdmin--[`GovernorTimelockCompound.__acceptAdmin`]] +:xref-GovernorTimelockCompound-__acceptAdmin--: xref:governance.adoc#GovernorTimelockCompound-__acceptAdmin-- +:GovernorTimelockCompound-updateTimelock: pass:normal[xref:governance.adoc#GovernorTimelockCompound-updateTimelock-contract-ICompoundTimelock-[`GovernorTimelockCompound.updateTimelock`]] +:xref-GovernorTimelockCompound-updateTimelock-contract-ICompoundTimelock-: xref:governance.adoc#GovernorTimelockCompound-updateTimelock-contract-ICompoundTimelock- +:GovernorTimelockCompound-TimelockChange: pass:normal[xref:governance.adoc#GovernorTimelockCompound-TimelockChange-address-address-[`GovernorTimelockCompound.TimelockChange`]] +:xref-GovernorTimelockCompound-TimelockChange-address-address-: xref:governance.adoc#GovernorTimelockCompound-TimelockChange-address-address- +:GovernorTimelockCompound-ProposalTimelock: pass:normal[xref:governance.adoc#GovernorTimelockCompound-ProposalTimelock[`GovernorTimelockCompound.ProposalTimelock`]] +:xref-GovernorTimelockCompound-ProposalTimelock: xref:governance.adoc#GovernorTimelockCompound-ProposalTimelock +:GovernorTimelockControl: pass:normal[xref:governance.adoc#GovernorTimelockControl[`GovernorTimelockControl`]] +:xref-GovernorTimelockControl: xref:governance.adoc#GovernorTimelockControl +:GovernorTimelockControl-constructor: pass:normal[xref:governance.adoc#GovernorTimelockControl-constructor-contract-TimelockController-[`GovernorTimelockControl.constructor`]] +:xref-GovernorTimelockControl-constructor-contract-TimelockController-: xref:governance.adoc#GovernorTimelockControl-constructor-contract-TimelockController- +:GovernorTimelockControl-supportsInterface: pass:normal[xref:governance.adoc#GovernorTimelockControl-supportsInterface-bytes4-[`GovernorTimelockControl.supportsInterface`]] +:xref-GovernorTimelockControl-supportsInterface-bytes4-: xref:governance.adoc#GovernorTimelockControl-supportsInterface-bytes4- +:GovernorTimelockControl-state: pass:normal[xref:governance.adoc#GovernorTimelockControl-state-uint256-[`GovernorTimelockControl.state`]] +:xref-GovernorTimelockControl-state-uint256-: xref:governance.adoc#GovernorTimelockControl-state-uint256- +:GovernorTimelockControl-timelock: pass:normal[xref:governance.adoc#GovernorTimelockControl-timelock--[`GovernorTimelockControl.timelock`]] +:xref-GovernorTimelockControl-timelock--: xref:governance.adoc#GovernorTimelockControl-timelock-- +:GovernorTimelockControl-proposalEta: pass:normal[xref:governance.adoc#GovernorTimelockControl-proposalEta-uint256-[`GovernorTimelockControl.proposalEta`]] +:xref-GovernorTimelockControl-proposalEta-uint256-: xref:governance.adoc#GovernorTimelockControl-proposalEta-uint256- +:GovernorTimelockControl-queue: pass:normal[xref:governance.adoc#GovernorTimelockControl-queue-address---uint256---bytes---bytes32-[`GovernorTimelockControl.queue`]] +:xref-GovernorTimelockControl-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockControl-queue-address---uint256---bytes---bytes32- +:GovernorTimelockControl-_execute: pass:normal[xref:governance.adoc#GovernorTimelockControl-_execute-uint256-address---uint256---bytes---bytes32-[`GovernorTimelockControl._execute`]] +:xref-GovernorTimelockControl-_execute-uint256-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockControl-_execute-uint256-address---uint256---bytes---bytes32- +:GovernorTimelockControl-_cancel: pass:normal[xref:governance.adoc#GovernorTimelockControl-_cancel-address---uint256---bytes---bytes32-[`GovernorTimelockControl._cancel`]] +:xref-GovernorTimelockControl-_cancel-address---uint256---bytes---bytes32-: xref:governance.adoc#GovernorTimelockControl-_cancel-address---uint256---bytes---bytes32- +:GovernorTimelockControl-_executor: pass:normal[xref:governance.adoc#GovernorTimelockControl-_executor--[`GovernorTimelockControl._executor`]] +:xref-GovernorTimelockControl-_executor--: xref:governance.adoc#GovernorTimelockControl-_executor-- +:GovernorTimelockControl-updateTimelock: pass:normal[xref:governance.adoc#GovernorTimelockControl-updateTimelock-contract-TimelockController-[`GovernorTimelockControl.updateTimelock`]] +:xref-GovernorTimelockControl-updateTimelock-contract-TimelockController-: xref:governance.adoc#GovernorTimelockControl-updateTimelock-contract-TimelockController- +:GovernorTimelockControl-TimelockChange: pass:normal[xref:governance.adoc#GovernorTimelockControl-TimelockChange-address-address-[`GovernorTimelockControl.TimelockChange`]] +:xref-GovernorTimelockControl-TimelockChange-address-address-: xref:governance.adoc#GovernorTimelockControl-TimelockChange-address-address- +:GovernorVotes: pass:normal[xref:governance.adoc#GovernorVotes[`GovernorVotes`]] +:xref-GovernorVotes: xref:governance.adoc#GovernorVotes +:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-IVotes[`GovernorVotes.token`]] +:xref-GovernorVotes-token-contract-IVotes: xref:governance.adoc#GovernorVotes-token-contract-IVotes +:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-IVotes-[`GovernorVotes.constructor`]] +:xref-GovernorVotes-constructor-contract-IVotes-: xref:governance.adoc#GovernorVotes-constructor-contract-IVotes- +:GovernorVotes-getVotes: pass:normal[xref:governance.adoc#GovernorVotes-getVotes-address-uint256-[`GovernorVotes.getVotes`]] +:xref-GovernorVotes-getVotes-address-uint256-: xref:governance.adoc#GovernorVotes-getVotes-address-uint256- +:GovernorVotesComp: pass:normal[xref:governance.adoc#GovernorVotesComp[`GovernorVotesComp`]] +:xref-GovernorVotesComp: xref:governance.adoc#GovernorVotesComp +:GovernorVotesComp-token: pass:normal[xref:governance.adoc#GovernorVotesComp-token-contract-ERC20VotesComp[`GovernorVotesComp.token`]] +:xref-GovernorVotesComp-token-contract-ERC20VotesComp: xref:governance.adoc#GovernorVotesComp-token-contract-ERC20VotesComp +:GovernorVotesComp-constructor: pass:normal[xref:governance.adoc#GovernorVotesComp-constructor-contract-ERC20VotesComp-[`GovernorVotesComp.constructor`]] +:xref-GovernorVotesComp-constructor-contract-ERC20VotesComp-: xref:governance.adoc#GovernorVotesComp-constructor-contract-ERC20VotesComp- +:GovernorVotesComp-getVotes: pass:normal[xref:governance.adoc#GovernorVotesComp-getVotes-address-uint256-[`GovernorVotesComp.getVotes`]] +:xref-GovernorVotesComp-getVotes-address-uint256-: xref:governance.adoc#GovernorVotesComp-getVotes-address-uint256- +:GovernorVotesQuorumFraction: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction[`GovernorVotesQuorumFraction`]] +:xref-GovernorVotesQuorumFraction: xref:governance.adoc#GovernorVotesQuorumFraction +:GovernorVotesQuorumFraction-constructor: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-constructor-uint256-[`GovernorVotesQuorumFraction.constructor`]] +:xref-GovernorVotesQuorumFraction-constructor-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-constructor-uint256- +:GovernorVotesQuorumFraction-quorumNumerator: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-quorumNumerator--[`GovernorVotesQuorumFraction.quorumNumerator`]] +:xref-GovernorVotesQuorumFraction-quorumNumerator--: xref:governance.adoc#GovernorVotesQuorumFraction-quorumNumerator-- +:GovernorVotesQuorumFraction-quorumDenominator: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-quorumDenominator--[`GovernorVotesQuorumFraction.quorumDenominator`]] +:xref-GovernorVotesQuorumFraction-quorumDenominator--: xref:governance.adoc#GovernorVotesQuorumFraction-quorumDenominator-- +:GovernorVotesQuorumFraction-quorum: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-quorum-uint256-[`GovernorVotesQuorumFraction.quorum`]] +:xref-GovernorVotesQuorumFraction-quorum-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-quorum-uint256- +:GovernorVotesQuorumFraction-updateQuorumNumerator: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-updateQuorumNumerator-uint256-[`GovernorVotesQuorumFraction.updateQuorumNumerator`]] +:xref-GovernorVotesQuorumFraction-updateQuorumNumerator-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-updateQuorumNumerator-uint256- +:GovernorVotesQuorumFraction-_updateQuorumNumerator: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-_updateQuorumNumerator-uint256-[`GovernorVotesQuorumFraction._updateQuorumNumerator`]] +:xref-GovernorVotesQuorumFraction-_updateQuorumNumerator-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-_updateQuorumNumerator-uint256- +:GovernorVotesQuorumFraction-QuorumNumeratorUpdated: pass:normal[xref:governance.adoc#GovernorVotesQuorumFraction-QuorumNumeratorUpdated-uint256-uint256-[`GovernorVotesQuorumFraction.QuorumNumeratorUpdated`]] +:xref-GovernorVotesQuorumFraction-QuorumNumeratorUpdated-uint256-uint256-: xref:governance.adoc#GovernorVotesQuorumFraction-QuorumNumeratorUpdated-uint256-uint256- +:IGovernorTimelock: pass:normal[xref:governance.adoc#IGovernorTimelock[`IGovernorTimelock`]] +:xref-IGovernorTimelock: xref:governance.adoc#IGovernorTimelock +:IGovernorTimelock-timelock: pass:normal[xref:governance.adoc#IGovernorTimelock-timelock--[`IGovernorTimelock.timelock`]] +:xref-IGovernorTimelock-timelock--: xref:governance.adoc#IGovernorTimelock-timelock-- +:IGovernorTimelock-proposalEta: pass:normal[xref:governance.adoc#IGovernorTimelock-proposalEta-uint256-[`IGovernorTimelock.proposalEta`]] +:xref-IGovernorTimelock-proposalEta-uint256-: xref:governance.adoc#IGovernorTimelock-proposalEta-uint256- +:IGovernorTimelock-queue: pass:normal[xref:governance.adoc#IGovernorTimelock-queue-address---uint256---bytes---bytes32-[`IGovernorTimelock.queue`]] +:xref-IGovernorTimelock-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernorTimelock-queue-address---uint256---bytes---bytes32- +:IGovernorTimelock-ProposalQueued: pass:normal[xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256-[`IGovernorTimelock.ProposalQueued`]] +:xref-IGovernorTimelock-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256- +:IVotes: pass:normal[xref:governance.adoc#IVotes[`IVotes`]] +:xref-IVotes: xref:governance.adoc#IVotes +:IVotes-getVotes: pass:normal[xref:governance.adoc#IVotes-getVotes-address-[`IVotes.getVotes`]] +:xref-IVotes-getVotes-address-: xref:governance.adoc#IVotes-getVotes-address- +:IVotes-getPastVotes: pass:normal[xref:governance.adoc#IVotes-getPastVotes-address-uint256-[`IVotes.getPastVotes`]] +:xref-IVotes-getPastVotes-address-uint256-: xref:governance.adoc#IVotes-getPastVotes-address-uint256- +:IVotes-getPastTotalSupply: pass:normal[xref:governance.adoc#IVotes-getPastTotalSupply-uint256-[`IVotes.getPastTotalSupply`]] +:xref-IVotes-getPastTotalSupply-uint256-: xref:governance.adoc#IVotes-getPastTotalSupply-uint256- +:IVotes-delegates: pass:normal[xref:governance.adoc#IVotes-delegates-address-[`IVotes.delegates`]] +:xref-IVotes-delegates-address-: xref:governance.adoc#IVotes-delegates-address- +:IVotes-delegate: pass:normal[xref:governance.adoc#IVotes-delegate-address-[`IVotes.delegate`]] +:xref-IVotes-delegate-address-: xref:governance.adoc#IVotes-delegate-address- +:IVotes-delegateBySig: pass:normal[xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`IVotes.delegateBySig`]] +:xref-IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:IVotes-DelegateChanged: pass:normal[xref:governance.adoc#IVotes-DelegateChanged-address-address-address-[`IVotes.DelegateChanged`]] +:xref-IVotes-DelegateChanged-address-address-address-: xref:governance.adoc#IVotes-DelegateChanged-address-address-address- +:IVotes-DelegateVotesChanged: pass:normal[xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256-[`IVotes.DelegateVotesChanged`]] +:xref-IVotes-DelegateVotesChanged-address-uint256-uint256-: xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256- +:Votes: pass:normal[xref:governance.adoc#Votes[`Votes`]] +:xref-Votes: xref:governance.adoc#Votes +:Votes-getVotes: pass:normal[xref:governance.adoc#Votes-getVotes-address-[`Votes.getVotes`]] +:xref-Votes-getVotes-address-: xref:governance.adoc#Votes-getVotes-address- +:Votes-getPastVotes: pass:normal[xref:governance.adoc#Votes-getPastVotes-address-uint256-[`Votes.getPastVotes`]] +:xref-Votes-getPastVotes-address-uint256-: xref:governance.adoc#Votes-getPastVotes-address-uint256- +:Votes-getPastTotalSupply: pass:normal[xref:governance.adoc#Votes-getPastTotalSupply-uint256-[`Votes.getPastTotalSupply`]] +:xref-Votes-getPastTotalSupply-uint256-: xref:governance.adoc#Votes-getPastTotalSupply-uint256- +:Votes-_getTotalSupply: pass:normal[xref:governance.adoc#Votes-_getTotalSupply--[`Votes._getTotalSupply`]] +:xref-Votes-_getTotalSupply--: xref:governance.adoc#Votes-_getTotalSupply-- +:Votes-delegates: pass:normal[xref:governance.adoc#Votes-delegates-address-[`Votes.delegates`]] +:xref-Votes-delegates-address-: xref:governance.adoc#Votes-delegates-address- +:Votes-delegate: pass:normal[xref:governance.adoc#Votes-delegate-address-[`Votes.delegate`]] +:xref-Votes-delegate-address-: xref:governance.adoc#Votes-delegate-address- +:Votes-delegateBySig: pass:normal[xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`Votes.delegateBySig`]] +:xref-Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:Votes-_delegate: pass:normal[xref:governance.adoc#Votes-_delegate-address-address-[`Votes._delegate`]] +:xref-Votes-_delegate-address-address-: xref:governance.adoc#Votes-_delegate-address-address- +:Votes-_transferVotingUnits: pass:normal[xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256-[`Votes._transferVotingUnits`]] +:xref-Votes-_transferVotingUnits-address-address-uint256-: xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256- +:Votes-_useNonce: pass:normal[xref:governance.adoc#Votes-_useNonce-address-[`Votes._useNonce`]] +:xref-Votes-_useNonce-address-: xref:governance.adoc#Votes-_useNonce-address- +:Votes-nonces: pass:normal[xref:governance.adoc#Votes-nonces-address-[`Votes.nonces`]] +:xref-Votes-nonces-address-: xref:governance.adoc#Votes-nonces-address- +:Votes-DOMAIN_SEPARATOR: pass:normal[xref:governance.adoc#Votes-DOMAIN_SEPARATOR--[`Votes.DOMAIN_SEPARATOR`]] +:xref-Votes-DOMAIN_SEPARATOR--: xref:governance.adoc#Votes-DOMAIN_SEPARATOR-- +:Votes-_getVotingUnits: pass:normal[xref:governance.adoc#Votes-_getVotingUnits-address-[`Votes._getVotingUnits`]] +:xref-Votes-_getVotingUnits-address-: xref:governance.adoc#Votes-_getVotingUnits-address- +:IERC1271: pass:normal[xref:interfaces.adoc#IERC1271[`IERC1271`]] +:xref-IERC1271: xref:interfaces.adoc#IERC1271 +:IERC1271-isValidSignature: pass:normal[xref:interfaces.adoc#IERC1271-isValidSignature-bytes32-bytes-[`IERC1271.isValidSignature`]] +:xref-IERC1271-isValidSignature-bytes32-bytes-: xref:interfaces.adoc#IERC1271-isValidSignature-bytes32-bytes- +:IERC1363: pass:normal[xref:interfaces.adoc#IERC1363[`IERC1363`]] +:xref-IERC1363: xref:interfaces.adoc#IERC1363 +:IERC1363-transferAndCall: pass:normal[xref:interfaces.adoc#IERC1363-transferAndCall-address-uint256-[`IERC1363.transferAndCall`]] +:xref-IERC1363-transferAndCall-address-uint256-: xref:interfaces.adoc#IERC1363-transferAndCall-address-uint256- +:IERC1363-transferAndCall: pass:normal[xref:interfaces.adoc#IERC1363-transferAndCall-address-uint256-bytes-[`IERC1363.transferAndCall`]] +:xref-IERC1363-transferAndCall-address-uint256-bytes-: xref:interfaces.adoc#IERC1363-transferAndCall-address-uint256-bytes- +:IERC1363-transferFromAndCall: pass:normal[xref:interfaces.adoc#IERC1363-transferFromAndCall-address-address-uint256-[`IERC1363.transferFromAndCall`]] +:xref-IERC1363-transferFromAndCall-address-address-uint256-: xref:interfaces.adoc#IERC1363-transferFromAndCall-address-address-uint256- +:IERC1363-transferFromAndCall: pass:normal[xref:interfaces.adoc#IERC1363-transferFromAndCall-address-address-uint256-bytes-[`IERC1363.transferFromAndCall`]] +:xref-IERC1363-transferFromAndCall-address-address-uint256-bytes-: xref:interfaces.adoc#IERC1363-transferFromAndCall-address-address-uint256-bytes- +:IERC1363-approveAndCall: pass:normal[xref:interfaces.adoc#IERC1363-approveAndCall-address-uint256-[`IERC1363.approveAndCall`]] +:xref-IERC1363-approveAndCall-address-uint256-: xref:interfaces.adoc#IERC1363-approveAndCall-address-uint256- +:IERC1363-approveAndCall: pass:normal[xref:interfaces.adoc#IERC1363-approveAndCall-address-uint256-bytes-[`IERC1363.approveAndCall`]] +:xref-IERC1363-approveAndCall-address-uint256-bytes-: xref:interfaces.adoc#IERC1363-approveAndCall-address-uint256-bytes- +:IERC1363Receiver: pass:normal[xref:interfaces.adoc#IERC1363Receiver[`IERC1363Receiver`]] +:xref-IERC1363Receiver: xref:interfaces.adoc#IERC1363Receiver +:IERC1363Receiver-onTransferReceived: pass:normal[xref:interfaces.adoc#IERC1363Receiver-onTransferReceived-address-address-uint256-bytes-[`IERC1363Receiver.onTransferReceived`]] +:xref-IERC1363Receiver-onTransferReceived-address-address-uint256-bytes-: xref:interfaces.adoc#IERC1363Receiver-onTransferReceived-address-address-uint256-bytes- +:IERC1363Spender: pass:normal[xref:interfaces.adoc#IERC1363Spender[`IERC1363Spender`]] +:xref-IERC1363Spender: xref:interfaces.adoc#IERC1363Spender +:IERC1363Spender-onApprovalReceived: pass:normal[xref:interfaces.adoc#IERC1363Spender-onApprovalReceived-address-uint256-bytes-[`IERC1363Spender.onApprovalReceived`]] +:xref-IERC1363Spender-onApprovalReceived-address-uint256-bytes-: xref:interfaces.adoc#IERC1363Spender-onApprovalReceived-address-uint256-bytes- +:IERC2981: pass:normal[xref:interfaces.adoc#IERC2981[`IERC2981`]] +:xref-IERC2981: xref:interfaces.adoc#IERC2981 +:IERC2981-royaltyInfo: pass:normal[xref:interfaces.adoc#IERC2981-royaltyInfo-uint256-uint256-[`IERC2981.royaltyInfo`]] +:xref-IERC2981-royaltyInfo-uint256-uint256-: xref:interfaces.adoc#IERC2981-royaltyInfo-uint256-uint256- +:IERC3156FlashBorrower: pass:normal[xref:interfaces.adoc#IERC3156FlashBorrower[`IERC3156FlashBorrower`]] +:xref-IERC3156FlashBorrower: xref:interfaces.adoc#IERC3156FlashBorrower +:IERC3156FlashBorrower-onFlashLoan: pass:normal[xref:interfaces.adoc#IERC3156FlashBorrower-onFlashLoan-address-address-uint256-uint256-bytes-[`IERC3156FlashBorrower.onFlashLoan`]] +:xref-IERC3156FlashBorrower-onFlashLoan-address-address-uint256-uint256-bytes-: xref:interfaces.adoc#IERC3156FlashBorrower-onFlashLoan-address-address-uint256-uint256-bytes- +:IERC3156FlashLender: pass:normal[xref:interfaces.adoc#IERC3156FlashLender[`IERC3156FlashLender`]] +:xref-IERC3156FlashLender: xref:interfaces.adoc#IERC3156FlashLender +:IERC3156FlashLender-maxFlashLoan: pass:normal[xref:interfaces.adoc#IERC3156FlashLender-maxFlashLoan-address-[`IERC3156FlashLender.maxFlashLoan`]] +:xref-IERC3156FlashLender-maxFlashLoan-address-: xref:interfaces.adoc#IERC3156FlashLender-maxFlashLoan-address- +:IERC3156FlashLender-flashFee: pass:normal[xref:interfaces.adoc#IERC3156FlashLender-flashFee-address-uint256-[`IERC3156FlashLender.flashFee`]] +:xref-IERC3156FlashLender-flashFee-address-uint256-: xref:interfaces.adoc#IERC3156FlashLender-flashFee-address-uint256- +:IERC3156FlashLender-flashLoan: pass:normal[xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-[`IERC3156FlashLender.flashLoan`]] +:xref-IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-: xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes- +:IERC1822Proxiable: pass:normal[xref:interfaces.adoc#IERC1822Proxiable[`IERC1822Proxiable`]] +:xref-IERC1822Proxiable: xref:interfaces.adoc#IERC1822Proxiable +:IERC1822Proxiable-proxiableUUID: pass:normal[xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID--[`IERC1822Proxiable.proxiableUUID`]] +:xref-IERC1822Proxiable-proxiableUUID--: xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID-- +:IERC2612: pass:normal[xref:interfaces.adoc#IERC2612[`IERC2612`]] +:xref-IERC2612: xref:interfaces.adoc#IERC2612 +:ERC2771Context: pass:normal[xref:metatx.adoc#ERC2771Context[`ERC2771Context`]] +:xref-ERC2771Context: xref:metatx.adoc#ERC2771Context +:ERC2771Context-constructor: pass:normal[xref:metatx.adoc#ERC2771Context-constructor-address-[`ERC2771Context.constructor`]] +:xref-ERC2771Context-constructor-address-: xref:metatx.adoc#ERC2771Context-constructor-address- +:ERC2771Context-isTrustedForwarder: pass:normal[xref:metatx.adoc#ERC2771Context-isTrustedForwarder-address-[`ERC2771Context.isTrustedForwarder`]] +:xref-ERC2771Context-isTrustedForwarder-address-: xref:metatx.adoc#ERC2771Context-isTrustedForwarder-address- +:ERC2771Context-_msgSender: pass:normal[xref:metatx.adoc#ERC2771Context-_msgSender--[`ERC2771Context._msgSender`]] +:xref-ERC2771Context-_msgSender--: xref:metatx.adoc#ERC2771Context-_msgSender-- +:ERC2771Context-_msgData: pass:normal[xref:metatx.adoc#ERC2771Context-_msgData--[`ERC2771Context._msgData`]] +:xref-ERC2771Context-_msgData--: xref:metatx.adoc#ERC2771Context-_msgData-- +:MinimalForwarder: pass:normal[xref:metatx.adoc#MinimalForwarder[`MinimalForwarder`]] +:xref-MinimalForwarder: xref:metatx.adoc#MinimalForwarder +:MinimalForwarder-getNonce: pass:normal[xref:metatx.adoc#MinimalForwarder-getNonce-address-[`MinimalForwarder.getNonce`]] +:xref-MinimalForwarder-getNonce-address-: xref:metatx.adoc#MinimalForwarder-getNonce-address- +:MinimalForwarder-verify: pass:normal[xref:metatx.adoc#MinimalForwarder-verify-struct-MinimalForwarder-ForwardRequest-bytes-[`MinimalForwarder.verify`]] +:xref-MinimalForwarder-verify-struct-MinimalForwarder-ForwardRequest-bytes-: xref:metatx.adoc#MinimalForwarder-verify-struct-MinimalForwarder-ForwardRequest-bytes- +:MinimalForwarder-execute: pass:normal[xref:metatx.adoc#MinimalForwarder-execute-struct-MinimalForwarder-ForwardRequest-bytes-[`MinimalForwarder.execute`]] +:xref-MinimalForwarder-execute-struct-MinimalForwarder-ForwardRequest-bytes-: xref:metatx.adoc#MinimalForwarder-execute-struct-MinimalForwarder-ForwardRequest-bytes- +:MinimalForwarder-ForwardRequest: pass:normal[xref:metatx.adoc#MinimalForwarder-ForwardRequest[`MinimalForwarder.ForwardRequest`]] +:xref-MinimalForwarder-ForwardRequest: xref:metatx.adoc#MinimalForwarder-ForwardRequest +:Clones: pass:normal[xref:proxy.adoc#Clones[`Clones`]] +:xref-Clones: xref:proxy.adoc#Clones +:Clones-clone: pass:normal[xref:proxy.adoc#Clones-clone-address-[`Clones.clone`]] +:xref-Clones-clone-address-: xref:proxy.adoc#Clones-clone-address- +:Clones-cloneDeterministic: pass:normal[xref:proxy.adoc#Clones-cloneDeterministic-address-bytes32-[`Clones.cloneDeterministic`]] +:xref-Clones-cloneDeterministic-address-bytes32-: xref:proxy.adoc#Clones-cloneDeterministic-address-bytes32- +:Clones-predictDeterministicAddress: pass:normal[xref:proxy.adoc#Clones-predictDeterministicAddress-address-bytes32-address-[`Clones.predictDeterministicAddress`]] +:xref-Clones-predictDeterministicAddress-address-bytes32-address-: xref:proxy.adoc#Clones-predictDeterministicAddress-address-bytes32-address- +:Clones-predictDeterministicAddress: pass:normal[xref:proxy.adoc#Clones-predictDeterministicAddress-address-bytes32-[`Clones.predictDeterministicAddress`]] +:xref-Clones-predictDeterministicAddress-address-bytes32-: xref:proxy.adoc#Clones-predictDeterministicAddress-address-bytes32- +:ERC1967Proxy: pass:normal[xref:proxy.adoc#ERC1967Proxy[`ERC1967Proxy`]] +:xref-ERC1967Proxy: xref:proxy.adoc#ERC1967Proxy +:ERC1967Proxy-constructor: pass:normal[xref:proxy.adoc#ERC1967Proxy-constructor-address-bytes-[`ERC1967Proxy.constructor`]] +:xref-ERC1967Proxy-constructor-address-bytes-: xref:proxy.adoc#ERC1967Proxy-constructor-address-bytes- +:ERC1967Proxy-_implementation: pass:normal[xref:proxy.adoc#ERC1967Proxy-_implementation--[`ERC1967Proxy._implementation`]] +:xref-ERC1967Proxy-_implementation--: xref:proxy.adoc#ERC1967Proxy-_implementation-- +:ERC1967Upgrade: pass:normal[xref:proxy.adoc#ERC1967Upgrade[`ERC1967Upgrade`]] +:xref-ERC1967Upgrade: xref:proxy.adoc#ERC1967Upgrade +:ERC1967Upgrade-_IMPLEMENTATION_SLOT: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_IMPLEMENTATION_SLOT-bytes32[`ERC1967Upgrade._IMPLEMENTATION_SLOT`]] +:xref-ERC1967Upgrade-_IMPLEMENTATION_SLOT-bytes32: xref:proxy.adoc#ERC1967Upgrade-_IMPLEMENTATION_SLOT-bytes32 +:ERC1967Upgrade-_ADMIN_SLOT: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_ADMIN_SLOT-bytes32[`ERC1967Upgrade._ADMIN_SLOT`]] +:xref-ERC1967Upgrade-_ADMIN_SLOT-bytes32: xref:proxy.adoc#ERC1967Upgrade-_ADMIN_SLOT-bytes32 +:ERC1967Upgrade-_BEACON_SLOT: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_BEACON_SLOT-bytes32[`ERC1967Upgrade._BEACON_SLOT`]] +:xref-ERC1967Upgrade-_BEACON_SLOT-bytes32: xref:proxy.adoc#ERC1967Upgrade-_BEACON_SLOT-bytes32 +:ERC1967Upgrade-_getImplementation: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_getImplementation--[`ERC1967Upgrade._getImplementation`]] +:xref-ERC1967Upgrade-_getImplementation--: xref:proxy.adoc#ERC1967Upgrade-_getImplementation-- +:ERC1967Upgrade-_upgradeTo: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeTo-address-[`ERC1967Upgrade._upgradeTo`]] +:xref-ERC1967Upgrade-_upgradeTo-address-: xref:proxy.adoc#ERC1967Upgrade-_upgradeTo-address- +:ERC1967Upgrade-_upgradeToAndCall: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCall`]] +:xref-ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool- +:ERC1967Upgrade-_upgradeToAndCallUUPS: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallUUPS`]] +:xref-ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool- +:ERC1967Upgrade-_getAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_getAdmin--[`ERC1967Upgrade._getAdmin`]] +:xref-ERC1967Upgrade-_getAdmin--: xref:proxy.adoc#ERC1967Upgrade-_getAdmin-- +:ERC1967Upgrade-_changeAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_changeAdmin-address-[`ERC1967Upgrade._changeAdmin`]] +:xref-ERC1967Upgrade-_changeAdmin-address-: xref:proxy.adoc#ERC1967Upgrade-_changeAdmin-address- +:ERC1967Upgrade-_getBeacon: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_getBeacon--[`ERC1967Upgrade._getBeacon`]] +:xref-ERC1967Upgrade-_getBeacon--: xref:proxy.adoc#ERC1967Upgrade-_getBeacon-- +:ERC1967Upgrade-_upgradeBeaconToAndCall: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeBeaconToAndCall-address-bytes-bool-[`ERC1967Upgrade._upgradeBeaconToAndCall`]] +:xref-ERC1967Upgrade-_upgradeBeaconToAndCall-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeBeaconToAndCall-address-bytes-bool- +:ERC1967Upgrade-Upgraded: pass:normal[xref:proxy.adoc#ERC1967Upgrade-Upgraded-address-[`ERC1967Upgrade.Upgraded`]] +:xref-ERC1967Upgrade-Upgraded-address-: xref:proxy.adoc#ERC1967Upgrade-Upgraded-address- +:ERC1967Upgrade-AdminChanged: pass:normal[xref:proxy.adoc#ERC1967Upgrade-AdminChanged-address-address-[`ERC1967Upgrade.AdminChanged`]] +:xref-ERC1967Upgrade-AdminChanged-address-address-: xref:proxy.adoc#ERC1967Upgrade-AdminChanged-address-address- +:ERC1967Upgrade-BeaconUpgraded: pass:normal[xref:proxy.adoc#ERC1967Upgrade-BeaconUpgraded-address-[`ERC1967Upgrade.BeaconUpgraded`]] +:xref-ERC1967Upgrade-BeaconUpgraded-address-: xref:proxy.adoc#ERC1967Upgrade-BeaconUpgraded-address- +:Proxy: pass:normal[xref:proxy.adoc#Proxy[`Proxy`]] +:xref-Proxy: xref:proxy.adoc#Proxy +:Proxy-_delegate: pass:normal[xref:proxy.adoc#Proxy-_delegate-address-[`Proxy._delegate`]] +:xref-Proxy-_delegate-address-: xref:proxy.adoc#Proxy-_delegate-address- +:Proxy-_implementation: pass:normal[xref:proxy.adoc#Proxy-_implementation--[`Proxy._implementation`]] +:xref-Proxy-_implementation--: xref:proxy.adoc#Proxy-_implementation-- +:Proxy-_fallback: pass:normal[xref:proxy.adoc#Proxy-_fallback--[`Proxy._fallback`]] +:xref-Proxy-_fallback--: xref:proxy.adoc#Proxy-_fallback-- +:Proxy-fallback: pass:normal[xref:proxy.adoc#Proxy-fallback--[`Proxy.fallback`]] +:xref-Proxy-fallback--: xref:proxy.adoc#Proxy-fallback-- +:Proxy-receive: pass:normal[xref:proxy.adoc#Proxy-receive--[`Proxy.receive`]] +:xref-Proxy-receive--: xref:proxy.adoc#Proxy-receive-- +:Proxy-_beforeFallback: pass:normal[xref:proxy.adoc#Proxy-_beforeFallback--[`Proxy._beforeFallback`]] +:xref-Proxy-_beforeFallback--: xref:proxy.adoc#Proxy-_beforeFallback-- +:BeaconProxy: pass:normal[xref:proxy.adoc#BeaconProxy[`BeaconProxy`]] +:xref-BeaconProxy: xref:proxy.adoc#BeaconProxy +:BeaconProxy-constructor: pass:normal[xref:proxy.adoc#BeaconProxy-constructor-address-bytes-[`BeaconProxy.constructor`]] +:xref-BeaconProxy-constructor-address-bytes-: xref:proxy.adoc#BeaconProxy-constructor-address-bytes- +:BeaconProxy-_beacon: pass:normal[xref:proxy.adoc#BeaconProxy-_beacon--[`BeaconProxy._beacon`]] +:xref-BeaconProxy-_beacon--: xref:proxy.adoc#BeaconProxy-_beacon-- +:BeaconProxy-_implementation: pass:normal[xref:proxy.adoc#BeaconProxy-_implementation--[`BeaconProxy._implementation`]] +:xref-BeaconProxy-_implementation--: xref:proxy.adoc#BeaconProxy-_implementation-- +:BeaconProxy-_setBeacon: pass:normal[xref:proxy.adoc#BeaconProxy-_setBeacon-address-bytes-[`BeaconProxy._setBeacon`]] +:xref-BeaconProxy-_setBeacon-address-bytes-: xref:proxy.adoc#BeaconProxy-_setBeacon-address-bytes- +:IBeacon: pass:normal[xref:proxy.adoc#IBeacon[`IBeacon`]] +:xref-IBeacon: xref:proxy.adoc#IBeacon +:IBeacon-implementation: pass:normal[xref:proxy.adoc#IBeacon-implementation--[`IBeacon.implementation`]] +:xref-IBeacon-implementation--: xref:proxy.adoc#IBeacon-implementation-- +:UpgradeableBeacon: pass:normal[xref:proxy.adoc#UpgradeableBeacon[`UpgradeableBeacon`]] +:xref-UpgradeableBeacon: xref:proxy.adoc#UpgradeableBeacon +:UpgradeableBeacon-constructor: pass:normal[xref:proxy.adoc#UpgradeableBeacon-constructor-address-[`UpgradeableBeacon.constructor`]] +:xref-UpgradeableBeacon-constructor-address-: xref:proxy.adoc#UpgradeableBeacon-constructor-address- +:UpgradeableBeacon-implementation: pass:normal[xref:proxy.adoc#UpgradeableBeacon-implementation--[`UpgradeableBeacon.implementation`]] +:xref-UpgradeableBeacon-implementation--: xref:proxy.adoc#UpgradeableBeacon-implementation-- +:UpgradeableBeacon-upgradeTo: pass:normal[xref:proxy.adoc#UpgradeableBeacon-upgradeTo-address-[`UpgradeableBeacon.upgradeTo`]] +:xref-UpgradeableBeacon-upgradeTo-address-: xref:proxy.adoc#UpgradeableBeacon-upgradeTo-address- +:UpgradeableBeacon-Upgraded: pass:normal[xref:proxy.adoc#UpgradeableBeacon-Upgraded-address-[`UpgradeableBeacon.Upgraded`]] +:xref-UpgradeableBeacon-Upgraded-address-: xref:proxy.adoc#UpgradeableBeacon-Upgraded-address- +:ProxyAdmin: pass:normal[xref:proxy.adoc#ProxyAdmin[`ProxyAdmin`]] +:xref-ProxyAdmin: xref:proxy.adoc#ProxyAdmin +:ProxyAdmin-getProxyImplementation: pass:normal[xref:proxy.adoc#ProxyAdmin-getProxyImplementation-contract-TransparentUpgradeableProxy-[`ProxyAdmin.getProxyImplementation`]] +:xref-ProxyAdmin-getProxyImplementation-contract-TransparentUpgradeableProxy-: xref:proxy.adoc#ProxyAdmin-getProxyImplementation-contract-TransparentUpgradeableProxy- +:ProxyAdmin-getProxyAdmin: pass:normal[xref:proxy.adoc#ProxyAdmin-getProxyAdmin-contract-TransparentUpgradeableProxy-[`ProxyAdmin.getProxyAdmin`]] +:xref-ProxyAdmin-getProxyAdmin-contract-TransparentUpgradeableProxy-: xref:proxy.adoc#ProxyAdmin-getProxyAdmin-contract-TransparentUpgradeableProxy- +:ProxyAdmin-changeProxyAdmin: pass:normal[xref:proxy.adoc#ProxyAdmin-changeProxyAdmin-contract-TransparentUpgradeableProxy-address-[`ProxyAdmin.changeProxyAdmin`]] +:xref-ProxyAdmin-changeProxyAdmin-contract-TransparentUpgradeableProxy-address-: xref:proxy.adoc#ProxyAdmin-changeProxyAdmin-contract-TransparentUpgradeableProxy-address- +:ProxyAdmin-upgrade: pass:normal[xref:proxy.adoc#ProxyAdmin-upgrade-contract-TransparentUpgradeableProxy-address-[`ProxyAdmin.upgrade`]] +:xref-ProxyAdmin-upgrade-contract-TransparentUpgradeableProxy-address-: xref:proxy.adoc#ProxyAdmin-upgrade-contract-TransparentUpgradeableProxy-address- +:ProxyAdmin-upgradeAndCall: pass:normal[xref:proxy.adoc#ProxyAdmin-upgradeAndCall-contract-TransparentUpgradeableProxy-address-bytes-[`ProxyAdmin.upgradeAndCall`]] +:xref-ProxyAdmin-upgradeAndCall-contract-TransparentUpgradeableProxy-address-bytes-: xref:proxy.adoc#ProxyAdmin-upgradeAndCall-contract-TransparentUpgradeableProxy-address-bytes- +:TransparentUpgradeableProxy: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy[`TransparentUpgradeableProxy`]] +:xref-TransparentUpgradeableProxy: xref:proxy.adoc#TransparentUpgradeableProxy +:TransparentUpgradeableProxy-ifAdmin: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-ifAdmin--[`TransparentUpgradeableProxy.ifAdmin`]] +:xref-TransparentUpgradeableProxy-ifAdmin--: xref:proxy.adoc#TransparentUpgradeableProxy-ifAdmin-- +:TransparentUpgradeableProxy-constructor: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-constructor-address-address-bytes-[`TransparentUpgradeableProxy.constructor`]] +:xref-TransparentUpgradeableProxy-constructor-address-address-bytes-: xref:proxy.adoc#TransparentUpgradeableProxy-constructor-address-address-bytes- +:TransparentUpgradeableProxy-admin: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-admin--[`TransparentUpgradeableProxy.admin`]] +:xref-TransparentUpgradeableProxy-admin--: xref:proxy.adoc#TransparentUpgradeableProxy-admin-- +:TransparentUpgradeableProxy-implementation: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-implementation--[`TransparentUpgradeableProxy.implementation`]] +:xref-TransparentUpgradeableProxy-implementation--: xref:proxy.adoc#TransparentUpgradeableProxy-implementation-- +:TransparentUpgradeableProxy-changeAdmin: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-changeAdmin-address-[`TransparentUpgradeableProxy.changeAdmin`]] +:xref-TransparentUpgradeableProxy-changeAdmin-address-: xref:proxy.adoc#TransparentUpgradeableProxy-changeAdmin-address- +:TransparentUpgradeableProxy-upgradeTo: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-upgradeTo-address-[`TransparentUpgradeableProxy.upgradeTo`]] +:xref-TransparentUpgradeableProxy-upgradeTo-address-: xref:proxy.adoc#TransparentUpgradeableProxy-upgradeTo-address- +:TransparentUpgradeableProxy-upgradeToAndCall: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-upgradeToAndCall-address-bytes-[`TransparentUpgradeableProxy.upgradeToAndCall`]] +:xref-TransparentUpgradeableProxy-upgradeToAndCall-address-bytes-: xref:proxy.adoc#TransparentUpgradeableProxy-upgradeToAndCall-address-bytes- +:TransparentUpgradeableProxy-_admin: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-_admin--[`TransparentUpgradeableProxy._admin`]] +:xref-TransparentUpgradeableProxy-_admin--: xref:proxy.adoc#TransparentUpgradeableProxy-_admin-- +:TransparentUpgradeableProxy-_beforeFallback: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy-_beforeFallback--[`TransparentUpgradeableProxy._beforeFallback`]] +:xref-TransparentUpgradeableProxy-_beforeFallback--: xref:proxy.adoc#TransparentUpgradeableProxy-_beforeFallback-- +:Initializable: pass:normal[xref:proxy.adoc#Initializable[`Initializable`]] +:xref-Initializable: xref:proxy.adoc#Initializable +:Initializable-initializer: pass:normal[xref:proxy.adoc#Initializable-initializer--[`Initializable.initializer`]] +:xref-Initializable-initializer--: xref:proxy.adoc#Initializable-initializer-- +:Initializable-onlyInitializing: pass:normal[xref:proxy.adoc#Initializable-onlyInitializing--[`Initializable.onlyInitializing`]] +:xref-Initializable-onlyInitializing--: xref:proxy.adoc#Initializable-onlyInitializing-- +:UUPSUpgradeable: pass:normal[xref:proxy.adoc#UUPSUpgradeable[`UUPSUpgradeable`]] +:xref-UUPSUpgradeable: xref:proxy.adoc#UUPSUpgradeable +:UUPSUpgradeable-onlyProxy: pass:normal[xref:proxy.adoc#UUPSUpgradeable-onlyProxy--[`UUPSUpgradeable.onlyProxy`]] +:xref-UUPSUpgradeable-onlyProxy--: xref:proxy.adoc#UUPSUpgradeable-onlyProxy-- +:UUPSUpgradeable-notDelegated: pass:normal[xref:proxy.adoc#UUPSUpgradeable-notDelegated--[`UUPSUpgradeable.notDelegated`]] +:xref-UUPSUpgradeable-notDelegated--: xref:proxy.adoc#UUPSUpgradeable-notDelegated-- +:UUPSUpgradeable-proxiableUUID: pass:normal[xref:proxy.adoc#UUPSUpgradeable-proxiableUUID--[`UUPSUpgradeable.proxiableUUID`]] +:xref-UUPSUpgradeable-proxiableUUID--: xref:proxy.adoc#UUPSUpgradeable-proxiableUUID-- +:UUPSUpgradeable-upgradeTo: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address-[`UUPSUpgradeable.upgradeTo`]] +:xref-UUPSUpgradeable-upgradeTo-address-: xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address- +:UUPSUpgradeable-upgradeToAndCall: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeToAndCall-address-bytes-[`UUPSUpgradeable.upgradeToAndCall`]] +:xref-UUPSUpgradeable-upgradeToAndCall-address-bytes-: xref:proxy.adoc#UUPSUpgradeable-upgradeToAndCall-address-bytes- +:UUPSUpgradeable-_authorizeUpgrade: pass:normal[xref:proxy.adoc#UUPSUpgradeable-_authorizeUpgrade-address-[`UUPSUpgradeable._authorizeUpgrade`]] +:xref-UUPSUpgradeable-_authorizeUpgrade-address-: xref:proxy.adoc#UUPSUpgradeable-_authorizeUpgrade-address- +:Pausable: pass:normal[xref:security.adoc#Pausable[`Pausable`]] +:xref-Pausable: xref:security.adoc#Pausable +:Pausable-whenNotPaused: pass:normal[xref:security.adoc#Pausable-whenNotPaused--[`Pausable.whenNotPaused`]] +:xref-Pausable-whenNotPaused--: xref:security.adoc#Pausable-whenNotPaused-- +:Pausable-whenPaused: pass:normal[xref:security.adoc#Pausable-whenPaused--[`Pausable.whenPaused`]] +:xref-Pausable-whenPaused--: xref:security.adoc#Pausable-whenPaused-- +:Pausable-constructor: pass:normal[xref:security.adoc#Pausable-constructor--[`Pausable.constructor`]] +:xref-Pausable-constructor--: xref:security.adoc#Pausable-constructor-- +:Pausable-paused: pass:normal[xref:security.adoc#Pausable-paused--[`Pausable.paused`]] +:xref-Pausable-paused--: xref:security.adoc#Pausable-paused-- +:Pausable-_pause: pass:normal[xref:security.adoc#Pausable-_pause--[`Pausable._pause`]] +:xref-Pausable-_pause--: xref:security.adoc#Pausable-_pause-- +:Pausable-_unpause: pass:normal[xref:security.adoc#Pausable-_unpause--[`Pausable._unpause`]] +:xref-Pausable-_unpause--: xref:security.adoc#Pausable-_unpause-- +:Pausable-Paused: pass:normal[xref:security.adoc#Pausable-Paused-address-[`Pausable.Paused`]] +:xref-Pausable-Paused-address-: xref:security.adoc#Pausable-Paused-address- +:Pausable-Unpaused: pass:normal[xref:security.adoc#Pausable-Unpaused-address-[`Pausable.Unpaused`]] +:xref-Pausable-Unpaused-address-: xref:security.adoc#Pausable-Unpaused-address- +:PullPayment: pass:normal[xref:security.adoc#PullPayment[`PullPayment`]] +:xref-PullPayment: xref:security.adoc#PullPayment +:PullPayment-constructor: pass:normal[xref:security.adoc#PullPayment-constructor--[`PullPayment.constructor`]] +:xref-PullPayment-constructor--: xref:security.adoc#PullPayment-constructor-- +:PullPayment-withdrawPayments: pass:normal[xref:security.adoc#PullPayment-withdrawPayments-address-payable-[`PullPayment.withdrawPayments`]] +:xref-PullPayment-withdrawPayments-address-payable-: xref:security.adoc#PullPayment-withdrawPayments-address-payable- +:PullPayment-payments: pass:normal[xref:security.adoc#PullPayment-payments-address-[`PullPayment.payments`]] +:xref-PullPayment-payments-address-: xref:security.adoc#PullPayment-payments-address- +:PullPayment-_asyncTransfer: pass:normal[xref:security.adoc#PullPayment-_asyncTransfer-address-uint256-[`PullPayment._asyncTransfer`]] +:xref-PullPayment-_asyncTransfer-address-uint256-: xref:security.adoc#PullPayment-_asyncTransfer-address-uint256- +:ReentrancyGuard: pass:normal[xref:security.adoc#ReentrancyGuard[`ReentrancyGuard`]] +:xref-ReentrancyGuard: xref:security.adoc#ReentrancyGuard +:ReentrancyGuard-nonReentrant: pass:normal[xref:security.adoc#ReentrancyGuard-nonReentrant--[`ReentrancyGuard.nonReentrant`]] +:xref-ReentrancyGuard-nonReentrant--: xref:security.adoc#ReentrancyGuard-nonReentrant-- +:ReentrancyGuard-constructor: pass:normal[xref:security.adoc#ReentrancyGuard-constructor--[`ReentrancyGuard.constructor`]] +:xref-ReentrancyGuard-constructor--: xref:security.adoc#ReentrancyGuard-constructor-- +:Address: pass:normal[xref:utils.adoc#Address[`Address`]] +:xref-Address: xref:utils.adoc#Address +:Address-isContract: pass:normal[xref:utils.adoc#Address-isContract-address-[`Address.isContract`]] +:xref-Address-isContract-address-: xref:utils.adoc#Address-isContract-address- +:Address-sendValue: pass:normal[xref:utils.adoc#Address-sendValue-address-payable-uint256-[`Address.sendValue`]] +:xref-Address-sendValue-address-payable-uint256-: xref:utils.adoc#Address-sendValue-address-payable-uint256- +:Address-functionCall: pass:normal[xref:utils.adoc#Address-functionCall-address-bytes-[`Address.functionCall`]] +:xref-Address-functionCall-address-bytes-: xref:utils.adoc#Address-functionCall-address-bytes- +:Address-functionCall: pass:normal[xref:utils.adoc#Address-functionCall-address-bytes-string-[`Address.functionCall`]] +:xref-Address-functionCall-address-bytes-string-: xref:utils.adoc#Address-functionCall-address-bytes-string- +:Address-functionCallWithValue: pass:normal[xref:utils.adoc#Address-functionCallWithValue-address-bytes-uint256-[`Address.functionCallWithValue`]] +:xref-Address-functionCallWithValue-address-bytes-uint256-: xref:utils.adoc#Address-functionCallWithValue-address-bytes-uint256- +:Address-functionCallWithValue: pass:normal[xref:utils.adoc#Address-functionCallWithValue-address-bytes-uint256-string-[`Address.functionCallWithValue`]] +:xref-Address-functionCallWithValue-address-bytes-uint256-string-: xref:utils.adoc#Address-functionCallWithValue-address-bytes-uint256-string- +:Address-functionStaticCall: pass:normal[xref:utils.adoc#Address-functionStaticCall-address-bytes-[`Address.functionStaticCall`]] +:xref-Address-functionStaticCall-address-bytes-: xref:utils.adoc#Address-functionStaticCall-address-bytes- +:Address-functionStaticCall: pass:normal[xref:utils.adoc#Address-functionStaticCall-address-bytes-string-[`Address.functionStaticCall`]] +:xref-Address-functionStaticCall-address-bytes-string-: xref:utils.adoc#Address-functionStaticCall-address-bytes-string- +:Address-functionDelegateCall: pass:normal[xref:utils.adoc#Address-functionDelegateCall-address-bytes-[`Address.functionDelegateCall`]] +:xref-Address-functionDelegateCall-address-bytes-: xref:utils.adoc#Address-functionDelegateCall-address-bytes- +:Address-functionDelegateCall: pass:normal[xref:utils.adoc#Address-functionDelegateCall-address-bytes-string-[`Address.functionDelegateCall`]] +:xref-Address-functionDelegateCall-address-bytes-string-: xref:utils.adoc#Address-functionDelegateCall-address-bytes-string- +:Address-verifyCallResult: pass:normal[xref:utils.adoc#Address-verifyCallResult-bool-bytes-string-[`Address.verifyCallResult`]] +:xref-Address-verifyCallResult-bool-bytes-string-: xref:utils.adoc#Address-verifyCallResult-bool-bytes-string- +:Arrays: pass:normal[xref:utils.adoc#Arrays[`Arrays`]] +:xref-Arrays: xref:utils.adoc#Arrays +:Arrays-findUpperBound: pass:normal[xref:utils.adoc#Arrays-findUpperBound-uint256---uint256-[`Arrays.findUpperBound`]] +:xref-Arrays-findUpperBound-uint256---uint256-: xref:utils.adoc#Arrays-findUpperBound-uint256---uint256- +:Base64: pass:normal[xref:utils.adoc#Base64[`Base64`]] +:xref-Base64: xref:utils.adoc#Base64 +:Base64-_TABLE: pass:normal[xref:utils.adoc#Base64-_TABLE-string[`Base64._TABLE`]] +:xref-Base64-_TABLE-string: xref:utils.adoc#Base64-_TABLE-string +:Base64-encode: pass:normal[xref:utils.adoc#Base64-encode-bytes-[`Base64.encode`]] +:xref-Base64-encode-bytes-: xref:utils.adoc#Base64-encode-bytes- +:Checkpoints: pass:normal[xref:utils.adoc#Checkpoints[`Checkpoints`]] +:xref-Checkpoints: xref:utils.adoc#Checkpoints +:Checkpoints-latest: pass:normal[xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History-[`Checkpoints.latest`]] +:xref-Checkpoints-latest-struct-Checkpoints-History-: xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History- +:Checkpoints-getAtBlock: pass:normal[xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-[`Checkpoints.getAtBlock`]] +:xref-Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256- +:Checkpoints-Checkpoint: pass:normal[xref:utils.adoc#Checkpoints-Checkpoint[`Checkpoints.Checkpoint`]] +:xref-Checkpoints-Checkpoint: xref:utils.adoc#Checkpoints-Checkpoint +:Checkpoints-History: pass:normal[xref:utils.adoc#Checkpoints-History[`Checkpoints.History`]] +:xref-Checkpoints-History: xref:utils.adoc#Checkpoints-History +:Context: pass:normal[xref:utils.adoc#Context[`Context`]] +:xref-Context: xref:utils.adoc#Context +:Context-_msgSender: pass:normal[xref:utils.adoc#Context-_msgSender--[`Context._msgSender`]] +:xref-Context-_msgSender--: xref:utils.adoc#Context-_msgSender-- +:Context-_msgData: pass:normal[xref:utils.adoc#Context-_msgData--[`Context._msgData`]] +:xref-Context-_msgData--: xref:utils.adoc#Context-_msgData-- +:Counters: pass:normal[xref:utils.adoc#Counters[`Counters`]] +:xref-Counters: xref:utils.adoc#Counters +:Counters-current: pass:normal[xref:utils.adoc#Counters-current-struct-Counters-Counter-[`Counters.current`]] +:xref-Counters-current-struct-Counters-Counter-: xref:utils.adoc#Counters-current-struct-Counters-Counter- +:Counters-increment: pass:normal[xref:utils.adoc#Counters-increment-struct-Counters-Counter-[`Counters.increment`]] +:xref-Counters-increment-struct-Counters-Counter-: xref:utils.adoc#Counters-increment-struct-Counters-Counter- +:Counters-decrement: pass:normal[xref:utils.adoc#Counters-decrement-struct-Counters-Counter-[`Counters.decrement`]] +:xref-Counters-decrement-struct-Counters-Counter-: xref:utils.adoc#Counters-decrement-struct-Counters-Counter- +:Counters-reset: pass:normal[xref:utils.adoc#Counters-reset-struct-Counters-Counter-[`Counters.reset`]] +:xref-Counters-reset-struct-Counters-Counter-: xref:utils.adoc#Counters-reset-struct-Counters-Counter- +:Counters-Counter: pass:normal[xref:utils.adoc#Counters-Counter[`Counters.Counter`]] +:xref-Counters-Counter: xref:utils.adoc#Counters-Counter +:Create2: pass:normal[xref:utils.adoc#Create2[`Create2`]] +:xref-Create2: xref:utils.adoc#Create2 +:Create2-deploy: pass:normal[xref:utils.adoc#Create2-deploy-uint256-bytes32-bytes-[`Create2.deploy`]] +:xref-Create2-deploy-uint256-bytes32-bytes-: xref:utils.adoc#Create2-deploy-uint256-bytes32-bytes- +:Create2-computeAddress: pass:normal[xref:utils.adoc#Create2-computeAddress-bytes32-bytes32-[`Create2.computeAddress`]] +:xref-Create2-computeAddress-bytes32-bytes32-: xref:utils.adoc#Create2-computeAddress-bytes32-bytes32- +:Create2-computeAddress: pass:normal[xref:utils.adoc#Create2-computeAddress-bytes32-bytes32-address-[`Create2.computeAddress`]] +:xref-Create2-computeAddress-bytes32-bytes32-address-: xref:utils.adoc#Create2-computeAddress-bytes32-bytes32-address- +:Multicall: pass:normal[xref:utils.adoc#Multicall[`Multicall`]] +:xref-Multicall: xref:utils.adoc#Multicall +:Multicall-multicall: pass:normal[xref:utils.adoc#Multicall-multicall-bytes---[`Multicall.multicall`]] +:xref-Multicall-multicall-bytes---: xref:utils.adoc#Multicall-multicall-bytes--- +:StorageSlot: pass:normal[xref:utils.adoc#StorageSlot[`StorageSlot`]] +:xref-StorageSlot: xref:utils.adoc#StorageSlot +:StorageSlot-getAddressSlot: pass:normal[xref:utils.adoc#StorageSlot-getAddressSlot-bytes32-[`StorageSlot.getAddressSlot`]] +:xref-StorageSlot-getAddressSlot-bytes32-: xref:utils.adoc#StorageSlot-getAddressSlot-bytes32- +:StorageSlot-getBooleanSlot: pass:normal[xref:utils.adoc#StorageSlot-getBooleanSlot-bytes32-[`StorageSlot.getBooleanSlot`]] +:xref-StorageSlot-getBooleanSlot-bytes32-: xref:utils.adoc#StorageSlot-getBooleanSlot-bytes32- +:StorageSlot-getBytes32Slot: pass:normal[xref:utils.adoc#StorageSlot-getBytes32Slot-bytes32-[`StorageSlot.getBytes32Slot`]] +:xref-StorageSlot-getBytes32Slot-bytes32-: xref:utils.adoc#StorageSlot-getBytes32Slot-bytes32- +:StorageSlot-getUint256Slot: pass:normal[xref:utils.adoc#StorageSlot-getUint256Slot-bytes32-[`StorageSlot.getUint256Slot`]] +:xref-StorageSlot-getUint256Slot-bytes32-: xref:utils.adoc#StorageSlot-getUint256Slot-bytes32- +:StorageSlot-AddressSlot: pass:normal[xref:utils.adoc#StorageSlot-AddressSlot[`StorageSlot.AddressSlot`]] +:xref-StorageSlot-AddressSlot: xref:utils.adoc#StorageSlot-AddressSlot +:StorageSlot-BooleanSlot: pass:normal[xref:utils.adoc#StorageSlot-BooleanSlot[`StorageSlot.BooleanSlot`]] +:xref-StorageSlot-BooleanSlot: xref:utils.adoc#StorageSlot-BooleanSlot +:StorageSlot-Bytes32Slot: pass:normal[xref:utils.adoc#StorageSlot-Bytes32Slot[`StorageSlot.Bytes32Slot`]] +:xref-StorageSlot-Bytes32Slot: xref:utils.adoc#StorageSlot-Bytes32Slot +:StorageSlot-Uint256Slot: pass:normal[xref:utils.adoc#StorageSlot-Uint256Slot[`StorageSlot.Uint256Slot`]] +:xref-StorageSlot-Uint256Slot: xref:utils.adoc#StorageSlot-Uint256Slot +:Strings: pass:normal[xref:utils.adoc#Strings[`Strings`]] +:xref-Strings: xref:utils.adoc#Strings +:Strings-toString: pass:normal[xref:utils.adoc#Strings-toString-uint256-[`Strings.toString`]] +:xref-Strings-toString-uint256-: xref:utils.adoc#Strings-toString-uint256- +:Strings-toHexString: pass:normal[xref:utils.adoc#Strings-toHexString-uint256-[`Strings.toHexString`]] +:xref-Strings-toHexString-uint256-: xref:utils.adoc#Strings-toHexString-uint256- +:Strings-toHexString: pass:normal[xref:utils.adoc#Strings-toHexString-uint256-uint256-[`Strings.toHexString`]] +:xref-Strings-toHexString-uint256-uint256-: xref:utils.adoc#Strings-toHexString-uint256-uint256- +:Timers: pass:normal[xref:utils.adoc#Timers[`Timers`]] +:xref-Timers: xref:utils.adoc#Timers +:Timers-getDeadline: pass:normal[xref:utils.adoc#Timers-getDeadline-struct-Timers-Timestamp-[`Timers.getDeadline`]] +:xref-Timers-getDeadline-struct-Timers-Timestamp-: xref:utils.adoc#Timers-getDeadline-struct-Timers-Timestamp- +:Timers-setDeadline: pass:normal[xref:utils.adoc#Timers-setDeadline-struct-Timers-Timestamp-uint64-[`Timers.setDeadline`]] +:xref-Timers-setDeadline-struct-Timers-Timestamp-uint64-: xref:utils.adoc#Timers-setDeadline-struct-Timers-Timestamp-uint64- +:Timers-reset: pass:normal[xref:utils.adoc#Timers-reset-struct-Timers-Timestamp-[`Timers.reset`]] +:xref-Timers-reset-struct-Timers-Timestamp-: xref:utils.adoc#Timers-reset-struct-Timers-Timestamp- +:Timers-isUnset: pass:normal[xref:utils.adoc#Timers-isUnset-struct-Timers-Timestamp-[`Timers.isUnset`]] +:xref-Timers-isUnset-struct-Timers-Timestamp-: xref:utils.adoc#Timers-isUnset-struct-Timers-Timestamp- +:Timers-isStarted: pass:normal[xref:utils.adoc#Timers-isStarted-struct-Timers-Timestamp-[`Timers.isStarted`]] +:xref-Timers-isStarted-struct-Timers-Timestamp-: xref:utils.adoc#Timers-isStarted-struct-Timers-Timestamp- +:Timers-isPending: pass:normal[xref:utils.adoc#Timers-isPending-struct-Timers-Timestamp-[`Timers.isPending`]] +:xref-Timers-isPending-struct-Timers-Timestamp-: xref:utils.adoc#Timers-isPending-struct-Timers-Timestamp- +:Timers-isExpired: pass:normal[xref:utils.adoc#Timers-isExpired-struct-Timers-Timestamp-[`Timers.isExpired`]] +:xref-Timers-isExpired-struct-Timers-Timestamp-: xref:utils.adoc#Timers-isExpired-struct-Timers-Timestamp- +:Timers-getDeadline: pass:normal[xref:utils.adoc#Timers-getDeadline-struct-Timers-BlockNumber-[`Timers.getDeadline`]] +:xref-Timers-getDeadline-struct-Timers-BlockNumber-: xref:utils.adoc#Timers-getDeadline-struct-Timers-BlockNumber- +:Timers-setDeadline: pass:normal[xref:utils.adoc#Timers-setDeadline-struct-Timers-BlockNumber-uint64-[`Timers.setDeadline`]] +:xref-Timers-setDeadline-struct-Timers-BlockNumber-uint64-: xref:utils.adoc#Timers-setDeadline-struct-Timers-BlockNumber-uint64- +:Timers-reset: pass:normal[xref:utils.adoc#Timers-reset-struct-Timers-BlockNumber-[`Timers.reset`]] +:xref-Timers-reset-struct-Timers-BlockNumber-: xref:utils.adoc#Timers-reset-struct-Timers-BlockNumber- +:Timers-isUnset: pass:normal[xref:utils.adoc#Timers-isUnset-struct-Timers-BlockNumber-[`Timers.isUnset`]] +:xref-Timers-isUnset-struct-Timers-BlockNumber-: xref:utils.adoc#Timers-isUnset-struct-Timers-BlockNumber- +:Timers-isStarted: pass:normal[xref:utils.adoc#Timers-isStarted-struct-Timers-BlockNumber-[`Timers.isStarted`]] +:xref-Timers-isStarted-struct-Timers-BlockNumber-: xref:utils.adoc#Timers-isStarted-struct-Timers-BlockNumber- +:Timers-isPending: pass:normal[xref:utils.adoc#Timers-isPending-struct-Timers-BlockNumber-[`Timers.isPending`]] +:xref-Timers-isPending-struct-Timers-BlockNumber-: xref:utils.adoc#Timers-isPending-struct-Timers-BlockNumber- +:Timers-isExpired: pass:normal[xref:utils.adoc#Timers-isExpired-struct-Timers-BlockNumber-[`Timers.isExpired`]] +:xref-Timers-isExpired-struct-Timers-BlockNumber-: xref:utils.adoc#Timers-isExpired-struct-Timers-BlockNumber- +:Timers-Timestamp: pass:normal[xref:utils.adoc#Timers-Timestamp[`Timers.Timestamp`]] +:xref-Timers-Timestamp: xref:utils.adoc#Timers-Timestamp +:Timers-BlockNumber: pass:normal[xref:utils.adoc#Timers-BlockNumber[`Timers.BlockNumber`]] +:xref-Timers-BlockNumber: xref:utils.adoc#Timers-BlockNumber +:ECDSA: pass:normal[xref:utils.adoc#ECDSA[`ECDSA`]] +:xref-ECDSA: xref:utils.adoc#ECDSA +:ECDSA-tryRecover: pass:normal[xref:utils.adoc#ECDSA-tryRecover-bytes32-bytes-[`ECDSA.tryRecover`]] +:xref-ECDSA-tryRecover-bytes32-bytes-: xref:utils.adoc#ECDSA-tryRecover-bytes32-bytes- +:ECDSA-recover: pass:normal[xref:utils.adoc#ECDSA-recover-bytes32-bytes-[`ECDSA.recover`]] +:xref-ECDSA-recover-bytes32-bytes-: xref:utils.adoc#ECDSA-recover-bytes32-bytes- +:ECDSA-tryRecover: pass:normal[xref:utils.adoc#ECDSA-tryRecover-bytes32-bytes32-bytes32-[`ECDSA.tryRecover`]] +:xref-ECDSA-tryRecover-bytes32-bytes32-bytes32-: xref:utils.adoc#ECDSA-tryRecover-bytes32-bytes32-bytes32- +:ECDSA-recover: pass:normal[xref:utils.adoc#ECDSA-recover-bytes32-bytes32-bytes32-[`ECDSA.recover`]] +:xref-ECDSA-recover-bytes32-bytes32-bytes32-: xref:utils.adoc#ECDSA-recover-bytes32-bytes32-bytes32- +:ECDSA-tryRecover: pass:normal[xref:utils.adoc#ECDSA-tryRecover-bytes32-uint8-bytes32-bytes32-[`ECDSA.tryRecover`]] +:xref-ECDSA-tryRecover-bytes32-uint8-bytes32-bytes32-: xref:utils.adoc#ECDSA-tryRecover-bytes32-uint8-bytes32-bytes32- +:ECDSA-recover: pass:normal[xref:utils.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32-[`ECDSA.recover`]] +:xref-ECDSA-recover-bytes32-uint8-bytes32-bytes32-: xref:utils.adoc#ECDSA-recover-bytes32-uint8-bytes32-bytes32- +:ECDSA-toEthSignedMessageHash: pass:normal[xref:utils.adoc#ECDSA-toEthSignedMessageHash-bytes32-[`ECDSA.toEthSignedMessageHash`]] +:xref-ECDSA-toEthSignedMessageHash-bytes32-: xref:utils.adoc#ECDSA-toEthSignedMessageHash-bytes32- +:ECDSA-toEthSignedMessageHash: pass:normal[xref:utils.adoc#ECDSA-toEthSignedMessageHash-bytes-[`ECDSA.toEthSignedMessageHash`]] +:xref-ECDSA-toEthSignedMessageHash-bytes-: xref:utils.adoc#ECDSA-toEthSignedMessageHash-bytes- +:ECDSA-toTypedDataHash: pass:normal[xref:utils.adoc#ECDSA-toTypedDataHash-bytes32-bytes32-[`ECDSA.toTypedDataHash`]] +:xref-ECDSA-toTypedDataHash-bytes32-bytes32-: xref:utils.adoc#ECDSA-toTypedDataHash-bytes32-bytes32- +:ECDSA-RecoverError: pass:normal[xref:utils.adoc#ECDSA-RecoverError[`ECDSA.RecoverError`]] +:xref-ECDSA-RecoverError: xref:utils.adoc#ECDSA-RecoverError +:MerkleProof: pass:normal[xref:utils.adoc#MerkleProof[`MerkleProof`]] +:xref-MerkleProof: xref:utils.adoc#MerkleProof +:MerkleProof-verify: pass:normal[xref:utils.adoc#MerkleProof-verify-bytes32---bytes32-bytes32-[`MerkleProof.verify`]] +:xref-MerkleProof-verify-bytes32---bytes32-bytes32-: xref:utils.adoc#MerkleProof-verify-bytes32---bytes32-bytes32- +:MerkleProof-processProof: pass:normal[xref:utils.adoc#MerkleProof-processProof-bytes32---bytes32-[`MerkleProof.processProof`]] +:xref-MerkleProof-processProof-bytes32---bytes32-: xref:utils.adoc#MerkleProof-processProof-bytes32---bytes32- +:SignatureChecker: pass:normal[xref:utils.adoc#SignatureChecker[`SignatureChecker`]] +:xref-SignatureChecker: xref:utils.adoc#SignatureChecker +:SignatureChecker-isValidSignatureNow: pass:normal[xref:utils.adoc#SignatureChecker-isValidSignatureNow-address-bytes32-bytes-[`SignatureChecker.isValidSignatureNow`]] +:xref-SignatureChecker-isValidSignatureNow-address-bytes32-bytes-: xref:utils.adoc#SignatureChecker-isValidSignatureNow-address-bytes32-bytes- +:EIP712: pass:normal[xref:utils.adoc#EIP712[`EIP712`]] +:xref-EIP712: xref:utils.adoc#EIP712 +:EIP712-constructor: pass:normal[xref:utils.adoc#EIP712-constructor-string-string-[`EIP712.constructor`]] +:xref-EIP712-constructor-string-string-: xref:utils.adoc#EIP712-constructor-string-string- +:EIP712-_domainSeparatorV4: pass:normal[xref:utils.adoc#EIP712-_domainSeparatorV4--[`EIP712._domainSeparatorV4`]] +:xref-EIP712-_domainSeparatorV4--: xref:utils.adoc#EIP712-_domainSeparatorV4-- +:EIP712-_hashTypedDataV4: pass:normal[xref:utils.adoc#EIP712-_hashTypedDataV4-bytes32-[`EIP712._hashTypedDataV4`]] +:xref-EIP712-_hashTypedDataV4-bytes32-: xref:utils.adoc#EIP712-_hashTypedDataV4-bytes32- +:ConditionalEscrow: pass:normal[xref:utils.adoc#ConditionalEscrow[`ConditionalEscrow`]] +:xref-ConditionalEscrow: xref:utils.adoc#ConditionalEscrow +:ConditionalEscrow-withdrawalAllowed: pass:normal[xref:utils.adoc#ConditionalEscrow-withdrawalAllowed-address-[`ConditionalEscrow.withdrawalAllowed`]] +:xref-ConditionalEscrow-withdrawalAllowed-address-: xref:utils.adoc#ConditionalEscrow-withdrawalAllowed-address- +:ConditionalEscrow-withdraw: pass:normal[xref:utils.adoc#ConditionalEscrow-withdraw-address-payable-[`ConditionalEscrow.withdraw`]] +:xref-ConditionalEscrow-withdraw-address-payable-: xref:utils.adoc#ConditionalEscrow-withdraw-address-payable- +:Escrow: pass:normal[xref:utils.adoc#Escrow[`Escrow`]] +:xref-Escrow: xref:utils.adoc#Escrow +:Escrow-depositsOf: pass:normal[xref:utils.adoc#Escrow-depositsOf-address-[`Escrow.depositsOf`]] +:xref-Escrow-depositsOf-address-: xref:utils.adoc#Escrow-depositsOf-address- +:Escrow-deposit: pass:normal[xref:utils.adoc#Escrow-deposit-address-[`Escrow.deposit`]] +:xref-Escrow-deposit-address-: xref:utils.adoc#Escrow-deposit-address- +:Escrow-withdraw: pass:normal[xref:utils.adoc#Escrow-withdraw-address-payable-[`Escrow.withdraw`]] +:xref-Escrow-withdraw-address-payable-: xref:utils.adoc#Escrow-withdraw-address-payable- +:Escrow-Deposited: pass:normal[xref:utils.adoc#Escrow-Deposited-address-uint256-[`Escrow.Deposited`]] +:xref-Escrow-Deposited-address-uint256-: xref:utils.adoc#Escrow-Deposited-address-uint256- +:Escrow-Withdrawn: pass:normal[xref:utils.adoc#Escrow-Withdrawn-address-uint256-[`Escrow.Withdrawn`]] +:xref-Escrow-Withdrawn-address-uint256-: xref:utils.adoc#Escrow-Withdrawn-address-uint256- +:RefundEscrow: pass:normal[xref:utils.adoc#RefundEscrow[`RefundEscrow`]] +:xref-RefundEscrow: xref:utils.adoc#RefundEscrow +:RefundEscrow-constructor: pass:normal[xref:utils.adoc#RefundEscrow-constructor-address-payable-[`RefundEscrow.constructor`]] +:xref-RefundEscrow-constructor-address-payable-: xref:utils.adoc#RefundEscrow-constructor-address-payable- +:RefundEscrow-state: pass:normal[xref:utils.adoc#RefundEscrow-state--[`RefundEscrow.state`]] +:xref-RefundEscrow-state--: xref:utils.adoc#RefundEscrow-state-- +:RefundEscrow-beneficiary: pass:normal[xref:utils.adoc#RefundEscrow-beneficiary--[`RefundEscrow.beneficiary`]] +:xref-RefundEscrow-beneficiary--: xref:utils.adoc#RefundEscrow-beneficiary-- +:RefundEscrow-deposit: pass:normal[xref:utils.adoc#RefundEscrow-deposit-address-[`RefundEscrow.deposit`]] +:xref-RefundEscrow-deposit-address-: xref:utils.adoc#RefundEscrow-deposit-address- +:RefundEscrow-close: pass:normal[xref:utils.adoc#RefundEscrow-close--[`RefundEscrow.close`]] +:xref-RefundEscrow-close--: xref:utils.adoc#RefundEscrow-close-- +:RefundEscrow-enableRefunds: pass:normal[xref:utils.adoc#RefundEscrow-enableRefunds--[`RefundEscrow.enableRefunds`]] +:xref-RefundEscrow-enableRefunds--: xref:utils.adoc#RefundEscrow-enableRefunds-- +:RefundEscrow-beneficiaryWithdraw: pass:normal[xref:utils.adoc#RefundEscrow-beneficiaryWithdraw--[`RefundEscrow.beneficiaryWithdraw`]] +:xref-RefundEscrow-beneficiaryWithdraw--: xref:utils.adoc#RefundEscrow-beneficiaryWithdraw-- +:RefundEscrow-withdrawalAllowed: pass:normal[xref:utils.adoc#RefundEscrow-withdrawalAllowed-address-[`RefundEscrow.withdrawalAllowed`]] +:xref-RefundEscrow-withdrawalAllowed-address-: xref:utils.adoc#RefundEscrow-withdrawalAllowed-address- +:RefundEscrow-RefundsClosed: pass:normal[xref:utils.adoc#RefundEscrow-RefundsClosed--[`RefundEscrow.RefundsClosed`]] +:xref-RefundEscrow-RefundsClosed--: xref:utils.adoc#RefundEscrow-RefundsClosed-- +:RefundEscrow-RefundsEnabled: pass:normal[xref:utils.adoc#RefundEscrow-RefundsEnabled--[`RefundEscrow.RefundsEnabled`]] +:xref-RefundEscrow-RefundsEnabled--: xref:utils.adoc#RefundEscrow-RefundsEnabled-- +:RefundEscrow-State: pass:normal[xref:utils.adoc#RefundEscrow-State[`RefundEscrow.State`]] +:xref-RefundEscrow-State: xref:utils.adoc#RefundEscrow-State +:ERC165: pass:normal[xref:utils.adoc#ERC165[`ERC165`]] +:xref-ERC165: xref:utils.adoc#ERC165 +:ERC165-supportsInterface: pass:normal[xref:utils.adoc#ERC165-supportsInterface-bytes4-[`ERC165.supportsInterface`]] +:xref-ERC165-supportsInterface-bytes4-: xref:utils.adoc#ERC165-supportsInterface-bytes4- +:ERC165Checker: pass:normal[xref:utils.adoc#ERC165Checker[`ERC165Checker`]] +:xref-ERC165Checker: xref:utils.adoc#ERC165Checker +:ERC165Checker-supportsERC165: pass:normal[xref:utils.adoc#ERC165Checker-supportsERC165-address-[`ERC165Checker.supportsERC165`]] +:xref-ERC165Checker-supportsERC165-address-: xref:utils.adoc#ERC165Checker-supportsERC165-address- +:ERC165Checker-supportsInterface: pass:normal[xref:utils.adoc#ERC165Checker-supportsInterface-address-bytes4-[`ERC165Checker.supportsInterface`]] +:xref-ERC165Checker-supportsInterface-address-bytes4-: xref:utils.adoc#ERC165Checker-supportsInterface-address-bytes4- +:ERC165Checker-getSupportedInterfaces: pass:normal[xref:utils.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4---[`ERC165Checker.getSupportedInterfaces`]] +:xref-ERC165Checker-getSupportedInterfaces-address-bytes4---: xref:utils.adoc#ERC165Checker-getSupportedInterfaces-address-bytes4--- +:ERC165Checker-supportsAllInterfaces: pass:normal[xref:utils.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4---[`ERC165Checker.supportsAllInterfaces`]] +:xref-ERC165Checker-supportsAllInterfaces-address-bytes4---: xref:utils.adoc#ERC165Checker-supportsAllInterfaces-address-bytes4--- +:ERC165Storage: pass:normal[xref:utils.adoc#ERC165Storage[`ERC165Storage`]] +:xref-ERC165Storage: xref:utils.adoc#ERC165Storage +:ERC165Storage-supportsInterface: pass:normal[xref:utils.adoc#ERC165Storage-supportsInterface-bytes4-[`ERC165Storage.supportsInterface`]] +:xref-ERC165Storage-supportsInterface-bytes4-: xref:utils.adoc#ERC165Storage-supportsInterface-bytes4- +:ERC165Storage-_registerInterface: pass:normal[xref:utils.adoc#ERC165Storage-_registerInterface-bytes4-[`ERC165Storage._registerInterface`]] +:xref-ERC165Storage-_registerInterface-bytes4-: xref:utils.adoc#ERC165Storage-_registerInterface-bytes4- +:ERC1820Implementer: pass:normal[xref:utils.adoc#ERC1820Implementer[`ERC1820Implementer`]] +:xref-ERC1820Implementer: xref:utils.adoc#ERC1820Implementer +:ERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:utils.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`ERC1820Implementer.canImplementInterfaceForAddress`]] +:xref-ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:utils.adoc#ERC1820Implementer-canImplementInterfaceForAddress-bytes32-address- +:ERC1820Implementer-_registerInterfaceForAddress: pass:normal[xref:utils.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-[`ERC1820Implementer._registerInterfaceForAddress`]] +:xref-ERC1820Implementer-_registerInterfaceForAddress-bytes32-address-: xref:utils.adoc#ERC1820Implementer-_registerInterfaceForAddress-bytes32-address- +:IERC165: pass:normal[xref:utils.adoc#IERC165[`IERC165`]] +:xref-IERC165: xref:utils.adoc#IERC165 +:IERC165-supportsInterface: pass:normal[xref:utils.adoc#IERC165-supportsInterface-bytes4-[`IERC165.supportsInterface`]] +:xref-IERC165-supportsInterface-bytes4-: xref:utils.adoc#IERC165-supportsInterface-bytes4- +:IERC1820Implementer: pass:normal[xref:utils.adoc#IERC1820Implementer[`IERC1820Implementer`]] +:xref-IERC1820Implementer: xref:utils.adoc#IERC1820Implementer +:IERC1820Implementer-canImplementInterfaceForAddress: pass:normal[xref:utils.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-[`IERC1820Implementer.canImplementInterfaceForAddress`]] +:xref-IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address-: xref:utils.adoc#IERC1820Implementer-canImplementInterfaceForAddress-bytes32-address- +:IERC1820Registry: pass:normal[xref:utils.adoc#IERC1820Registry[`IERC1820Registry`]] +:xref-IERC1820Registry: xref:utils.adoc#IERC1820Registry +:IERC1820Registry-setManager: pass:normal[xref:utils.adoc#IERC1820Registry-setManager-address-address-[`IERC1820Registry.setManager`]] +:xref-IERC1820Registry-setManager-address-address-: xref:utils.adoc#IERC1820Registry-setManager-address-address- +:IERC1820Registry-getManager: pass:normal[xref:utils.adoc#IERC1820Registry-getManager-address-[`IERC1820Registry.getManager`]] +:xref-IERC1820Registry-getManager-address-: xref:utils.adoc#IERC1820Registry-getManager-address- +:IERC1820Registry-setInterfaceImplementer: pass:normal[xref:utils.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address-[`IERC1820Registry.setInterfaceImplementer`]] +:xref-IERC1820Registry-setInterfaceImplementer-address-bytes32-address-: xref:utils.adoc#IERC1820Registry-setInterfaceImplementer-address-bytes32-address- +:IERC1820Registry-getInterfaceImplementer: pass:normal[xref:utils.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32-[`IERC1820Registry.getInterfaceImplementer`]] +:xref-IERC1820Registry-getInterfaceImplementer-address-bytes32-: xref:utils.adoc#IERC1820Registry-getInterfaceImplementer-address-bytes32- +:IERC1820Registry-interfaceHash: pass:normal[xref:utils.adoc#IERC1820Registry-interfaceHash-string-[`IERC1820Registry.interfaceHash`]] +:xref-IERC1820Registry-interfaceHash-string-: xref:utils.adoc#IERC1820Registry-interfaceHash-string- +:IERC1820Registry-updateERC165Cache: pass:normal[xref:utils.adoc#IERC1820Registry-updateERC165Cache-address-bytes4-[`IERC1820Registry.updateERC165Cache`]] +:xref-IERC1820Registry-updateERC165Cache-address-bytes4-: xref:utils.adoc#IERC1820Registry-updateERC165Cache-address-bytes4- +:IERC1820Registry-implementsERC165Interface: pass:normal[xref:utils.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4-[`IERC1820Registry.implementsERC165Interface`]] +:xref-IERC1820Registry-implementsERC165Interface-address-bytes4-: xref:utils.adoc#IERC1820Registry-implementsERC165Interface-address-bytes4- +:IERC1820Registry-implementsERC165InterfaceNoCache: pass:normal[xref:utils.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-[`IERC1820Registry.implementsERC165InterfaceNoCache`]] +:xref-IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4-: xref:utils.adoc#IERC1820Registry-implementsERC165InterfaceNoCache-address-bytes4- +:IERC1820Registry-InterfaceImplementerSet: pass:normal[xref:utils.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-[`IERC1820Registry.InterfaceImplementerSet`]] +:xref-IERC1820Registry-InterfaceImplementerSet-address-bytes32-address-: xref:utils.adoc#IERC1820Registry-InterfaceImplementerSet-address-bytes32-address- +:IERC1820Registry-ManagerChanged: pass:normal[xref:utils.adoc#IERC1820Registry-ManagerChanged-address-address-[`IERC1820Registry.ManagerChanged`]] +:xref-IERC1820Registry-ManagerChanged-address-address-: xref:utils.adoc#IERC1820Registry-ManagerChanged-address-address- +:Math: pass:normal[xref:utils.adoc#Math[`Math`]] +:xref-Math: xref:utils.adoc#Math +:Math-max: pass:normal[xref:utils.adoc#Math-max-uint256-uint256-[`Math.max`]] +:xref-Math-max-uint256-uint256-: xref:utils.adoc#Math-max-uint256-uint256- +:Math-min: pass:normal[xref:utils.adoc#Math-min-uint256-uint256-[`Math.min`]] +:xref-Math-min-uint256-uint256-: xref:utils.adoc#Math-min-uint256-uint256- +:Math-average: pass:normal[xref:utils.adoc#Math-average-uint256-uint256-[`Math.average`]] +:xref-Math-average-uint256-uint256-: xref:utils.adoc#Math-average-uint256-uint256- +:Math-ceilDiv: pass:normal[xref:utils.adoc#Math-ceilDiv-uint256-uint256-[`Math.ceilDiv`]] +:xref-Math-ceilDiv-uint256-uint256-: xref:utils.adoc#Math-ceilDiv-uint256-uint256- +:SafeCast: pass:normal[xref:utils.adoc#SafeCast[`SafeCast`]] +:xref-SafeCast: xref:utils.adoc#SafeCast +:SafeCast-toUint224: pass:normal[xref:utils.adoc#SafeCast-toUint224-uint256-[`SafeCast.toUint224`]] +:xref-SafeCast-toUint224-uint256-: xref:utils.adoc#SafeCast-toUint224-uint256- +:SafeCast-toUint128: pass:normal[xref:utils.adoc#SafeCast-toUint128-uint256-[`SafeCast.toUint128`]] +:xref-SafeCast-toUint128-uint256-: xref:utils.adoc#SafeCast-toUint128-uint256- +:SafeCast-toUint96: pass:normal[xref:utils.adoc#SafeCast-toUint96-uint256-[`SafeCast.toUint96`]] +:xref-SafeCast-toUint96-uint256-: xref:utils.adoc#SafeCast-toUint96-uint256- +:SafeCast-toUint64: pass:normal[xref:utils.adoc#SafeCast-toUint64-uint256-[`SafeCast.toUint64`]] +:xref-SafeCast-toUint64-uint256-: xref:utils.adoc#SafeCast-toUint64-uint256- +:SafeCast-toUint32: pass:normal[xref:utils.adoc#SafeCast-toUint32-uint256-[`SafeCast.toUint32`]] +:xref-SafeCast-toUint32-uint256-: xref:utils.adoc#SafeCast-toUint32-uint256- +:SafeCast-toUint16: pass:normal[xref:utils.adoc#SafeCast-toUint16-uint256-[`SafeCast.toUint16`]] +:xref-SafeCast-toUint16-uint256-: xref:utils.adoc#SafeCast-toUint16-uint256- +:SafeCast-toUint8: pass:normal[xref:utils.adoc#SafeCast-toUint8-uint256-[`SafeCast.toUint8`]] +:xref-SafeCast-toUint8-uint256-: xref:utils.adoc#SafeCast-toUint8-uint256- +:SafeCast-toUint256: pass:normal[xref:utils.adoc#SafeCast-toUint256-int256-[`SafeCast.toUint256`]] +:xref-SafeCast-toUint256-int256-: xref:utils.adoc#SafeCast-toUint256-int256- +:SafeCast-toInt128: pass:normal[xref:utils.adoc#SafeCast-toInt128-int256-[`SafeCast.toInt128`]] +:xref-SafeCast-toInt128-int256-: xref:utils.adoc#SafeCast-toInt128-int256- +:SafeCast-toInt64: pass:normal[xref:utils.adoc#SafeCast-toInt64-int256-[`SafeCast.toInt64`]] +:xref-SafeCast-toInt64-int256-: xref:utils.adoc#SafeCast-toInt64-int256- +:SafeCast-toInt32: pass:normal[xref:utils.adoc#SafeCast-toInt32-int256-[`SafeCast.toInt32`]] +:xref-SafeCast-toInt32-int256-: xref:utils.adoc#SafeCast-toInt32-int256- +:SafeCast-toInt16: pass:normal[xref:utils.adoc#SafeCast-toInt16-int256-[`SafeCast.toInt16`]] +:xref-SafeCast-toInt16-int256-: xref:utils.adoc#SafeCast-toInt16-int256- +:SafeCast-toInt8: pass:normal[xref:utils.adoc#SafeCast-toInt8-int256-[`SafeCast.toInt8`]] +:xref-SafeCast-toInt8-int256-: xref:utils.adoc#SafeCast-toInt8-int256- +:SafeCast-toInt256: pass:normal[xref:utils.adoc#SafeCast-toInt256-uint256-[`SafeCast.toInt256`]] +:xref-SafeCast-toInt256-uint256-: xref:utils.adoc#SafeCast-toInt256-uint256- +:SafeMath: pass:normal[xref:utils.adoc#SafeMath[`SafeMath`]] +:xref-SafeMath: xref:utils.adoc#SafeMath +:SafeMath-tryAdd: pass:normal[xref:utils.adoc#SafeMath-tryAdd-uint256-uint256-[`SafeMath.tryAdd`]] +:xref-SafeMath-tryAdd-uint256-uint256-: xref:utils.adoc#SafeMath-tryAdd-uint256-uint256- +:SafeMath-trySub: pass:normal[xref:utils.adoc#SafeMath-trySub-uint256-uint256-[`SafeMath.trySub`]] +:xref-SafeMath-trySub-uint256-uint256-: xref:utils.adoc#SafeMath-trySub-uint256-uint256- +:SafeMath-tryMul: pass:normal[xref:utils.adoc#SafeMath-tryMul-uint256-uint256-[`SafeMath.tryMul`]] +:xref-SafeMath-tryMul-uint256-uint256-: xref:utils.adoc#SafeMath-tryMul-uint256-uint256- +:SafeMath-tryDiv: pass:normal[xref:utils.adoc#SafeMath-tryDiv-uint256-uint256-[`SafeMath.tryDiv`]] +:xref-SafeMath-tryDiv-uint256-uint256-: xref:utils.adoc#SafeMath-tryDiv-uint256-uint256- +:SafeMath-tryMod: pass:normal[xref:utils.adoc#SafeMath-tryMod-uint256-uint256-[`SafeMath.tryMod`]] +:xref-SafeMath-tryMod-uint256-uint256-: xref:utils.adoc#SafeMath-tryMod-uint256-uint256- +:SafeMath-add: pass:normal[xref:utils.adoc#SafeMath-add-uint256-uint256-[`SafeMath.add`]] +:xref-SafeMath-add-uint256-uint256-: xref:utils.adoc#SafeMath-add-uint256-uint256- +:SafeMath-sub: pass:normal[xref:utils.adoc#SafeMath-sub-uint256-uint256-[`SafeMath.sub`]] +:xref-SafeMath-sub-uint256-uint256-: xref:utils.adoc#SafeMath-sub-uint256-uint256- +:SafeMath-mul: pass:normal[xref:utils.adoc#SafeMath-mul-uint256-uint256-[`SafeMath.mul`]] +:xref-SafeMath-mul-uint256-uint256-: xref:utils.adoc#SafeMath-mul-uint256-uint256- +:SafeMath-div: pass:normal[xref:utils.adoc#SafeMath-div-uint256-uint256-[`SafeMath.div`]] +:xref-SafeMath-div-uint256-uint256-: xref:utils.adoc#SafeMath-div-uint256-uint256- +:SafeMath-mod: pass:normal[xref:utils.adoc#SafeMath-mod-uint256-uint256-[`SafeMath.mod`]] +:xref-SafeMath-mod-uint256-uint256-: xref:utils.adoc#SafeMath-mod-uint256-uint256- +:SafeMath-sub: pass:normal[xref:utils.adoc#SafeMath-sub-uint256-uint256-string-[`SafeMath.sub`]] +:xref-SafeMath-sub-uint256-uint256-string-: xref:utils.adoc#SafeMath-sub-uint256-uint256-string- +:SafeMath-div: pass:normal[xref:utils.adoc#SafeMath-div-uint256-uint256-string-[`SafeMath.div`]] +:xref-SafeMath-div-uint256-uint256-string-: xref:utils.adoc#SafeMath-div-uint256-uint256-string- +:SafeMath-mod: pass:normal[xref:utils.adoc#SafeMath-mod-uint256-uint256-string-[`SafeMath.mod`]] +:xref-SafeMath-mod-uint256-uint256-string-: xref:utils.adoc#SafeMath-mod-uint256-uint256-string- +:SignedMath: pass:normal[xref:utils.adoc#SignedMath[`SignedMath`]] +:xref-SignedMath: xref:utils.adoc#SignedMath +:SignedMath-max: pass:normal[xref:utils.adoc#SignedMath-max-int256-int256-[`SignedMath.max`]] +:xref-SignedMath-max-int256-int256-: xref:utils.adoc#SignedMath-max-int256-int256- +:SignedMath-min: pass:normal[xref:utils.adoc#SignedMath-min-int256-int256-[`SignedMath.min`]] +:xref-SignedMath-min-int256-int256-: xref:utils.adoc#SignedMath-min-int256-int256- +:SignedMath-average: pass:normal[xref:utils.adoc#SignedMath-average-int256-int256-[`SignedMath.average`]] +:xref-SignedMath-average-int256-int256-: xref:utils.adoc#SignedMath-average-int256-int256- +:SignedMath-abs: pass:normal[xref:utils.adoc#SignedMath-abs-int256-[`SignedMath.abs`]] +:xref-SignedMath-abs-int256-: xref:utils.adoc#SignedMath-abs-int256- +:SignedSafeMath: pass:normal[xref:utils.adoc#SignedSafeMath[`SignedSafeMath`]] +:xref-SignedSafeMath: xref:utils.adoc#SignedSafeMath +:SignedSafeMath-mul: pass:normal[xref:utils.adoc#SignedSafeMath-mul-int256-int256-[`SignedSafeMath.mul`]] +:xref-SignedSafeMath-mul-int256-int256-: xref:utils.adoc#SignedSafeMath-mul-int256-int256- +:SignedSafeMath-div: pass:normal[xref:utils.adoc#SignedSafeMath-div-int256-int256-[`SignedSafeMath.div`]] +:xref-SignedSafeMath-div-int256-int256-: xref:utils.adoc#SignedSafeMath-div-int256-int256- +:SignedSafeMath-sub: pass:normal[xref:utils.adoc#SignedSafeMath-sub-int256-int256-[`SignedSafeMath.sub`]] +:xref-SignedSafeMath-sub-int256-int256-: xref:utils.adoc#SignedSafeMath-sub-int256-int256- +:SignedSafeMath-add: pass:normal[xref:utils.adoc#SignedSafeMath-add-int256-int256-[`SignedSafeMath.add`]] +:xref-SignedSafeMath-add-int256-int256-: xref:utils.adoc#SignedSafeMath-add-int256-int256- +:BitMaps: pass:normal[xref:utils.adoc#BitMaps[`BitMaps`]] +:xref-BitMaps: xref:utils.adoc#BitMaps +:BitMaps-get: pass:normal[xref:utils.adoc#BitMaps-get-struct-BitMaps-BitMap-uint256-[`BitMaps.get`]] +:xref-BitMaps-get-struct-BitMaps-BitMap-uint256-: xref:utils.adoc#BitMaps-get-struct-BitMaps-BitMap-uint256- +:BitMaps-setTo: pass:normal[xref:utils.adoc#BitMaps-setTo-struct-BitMaps-BitMap-uint256-bool-[`BitMaps.setTo`]] +:xref-BitMaps-setTo-struct-BitMaps-BitMap-uint256-bool-: xref:utils.adoc#BitMaps-setTo-struct-BitMaps-BitMap-uint256-bool- +:BitMaps-set: pass:normal[xref:utils.adoc#BitMaps-set-struct-BitMaps-BitMap-uint256-[`BitMaps.set`]] +:xref-BitMaps-set-struct-BitMaps-BitMap-uint256-: xref:utils.adoc#BitMaps-set-struct-BitMaps-BitMap-uint256- +:BitMaps-unset: pass:normal[xref:utils.adoc#BitMaps-unset-struct-BitMaps-BitMap-uint256-[`BitMaps.unset`]] +:xref-BitMaps-unset-struct-BitMaps-BitMap-uint256-: xref:utils.adoc#BitMaps-unset-struct-BitMaps-BitMap-uint256- +:BitMaps-BitMap: pass:normal[xref:utils.adoc#BitMaps-BitMap[`BitMaps.BitMap`]] +:xref-BitMaps-BitMap: xref:utils.adoc#BitMaps-BitMap +:EnumerableMap: pass:normal[xref:utils.adoc#EnumerableMap[`EnumerableMap`]] +:xref-EnumerableMap: xref:utils.adoc#EnumerableMap +:EnumerableMap-set: pass:normal[xref:utils.adoc#EnumerableMap-set-struct-EnumerableMap-UintToAddressMap-uint256-address-[`EnumerableMap.set`]] +:xref-EnumerableMap-set-struct-EnumerableMap-UintToAddressMap-uint256-address-: xref:utils.adoc#EnumerableMap-set-struct-EnumerableMap-UintToAddressMap-uint256-address- +:EnumerableMap-remove: pass:normal[xref:utils.adoc#EnumerableMap-remove-struct-EnumerableMap-UintToAddressMap-uint256-[`EnumerableMap.remove`]] +:xref-EnumerableMap-remove-struct-EnumerableMap-UintToAddressMap-uint256-: xref:utils.adoc#EnumerableMap-remove-struct-EnumerableMap-UintToAddressMap-uint256- +:EnumerableMap-contains: pass:normal[xref:utils.adoc#EnumerableMap-contains-struct-EnumerableMap-UintToAddressMap-uint256-[`EnumerableMap.contains`]] +:xref-EnumerableMap-contains-struct-EnumerableMap-UintToAddressMap-uint256-: xref:utils.adoc#EnumerableMap-contains-struct-EnumerableMap-UintToAddressMap-uint256- +:EnumerableMap-length: pass:normal[xref:utils.adoc#EnumerableMap-length-struct-EnumerableMap-UintToAddressMap-[`EnumerableMap.length`]] +:xref-EnumerableMap-length-struct-EnumerableMap-UintToAddressMap-: xref:utils.adoc#EnumerableMap-length-struct-EnumerableMap-UintToAddressMap- +:EnumerableMap-at: pass:normal[xref:utils.adoc#EnumerableMap-at-struct-EnumerableMap-UintToAddressMap-uint256-[`EnumerableMap.at`]] +:xref-EnumerableMap-at-struct-EnumerableMap-UintToAddressMap-uint256-: xref:utils.adoc#EnumerableMap-at-struct-EnumerableMap-UintToAddressMap-uint256- +:EnumerableMap-tryGet: pass:normal[xref:utils.adoc#EnumerableMap-tryGet-struct-EnumerableMap-UintToAddressMap-uint256-[`EnumerableMap.tryGet`]] +:xref-EnumerableMap-tryGet-struct-EnumerableMap-UintToAddressMap-uint256-: xref:utils.adoc#EnumerableMap-tryGet-struct-EnumerableMap-UintToAddressMap-uint256- +:EnumerableMap-get: pass:normal[xref:utils.adoc#EnumerableMap-get-struct-EnumerableMap-UintToAddressMap-uint256-[`EnumerableMap.get`]] +:xref-EnumerableMap-get-struct-EnumerableMap-UintToAddressMap-uint256-: xref:utils.adoc#EnumerableMap-get-struct-EnumerableMap-UintToAddressMap-uint256- +:EnumerableMap-get: pass:normal[xref:utils.adoc#EnumerableMap-get-struct-EnumerableMap-UintToAddressMap-uint256-string-[`EnumerableMap.get`]] +:xref-EnumerableMap-get-struct-EnumerableMap-UintToAddressMap-uint256-string-: xref:utils.adoc#EnumerableMap-get-struct-EnumerableMap-UintToAddressMap-uint256-string- +:EnumerableMap-Map: pass:normal[xref:utils.adoc#EnumerableMap-Map[`EnumerableMap.Map`]] +:xref-EnumerableMap-Map: xref:utils.adoc#EnumerableMap-Map +:EnumerableMap-UintToAddressMap: pass:normal[xref:utils.adoc#EnumerableMap-UintToAddressMap[`EnumerableMap.UintToAddressMap`]] +:xref-EnumerableMap-UintToAddressMap: xref:utils.adoc#EnumerableMap-UintToAddressMap +:EnumerableSet: pass:normal[xref:utils.adoc#EnumerableSet[`EnumerableSet`]] +:xref-EnumerableSet: xref:utils.adoc#EnumerableSet +:EnumerableSet-add: pass:normal[xref:utils.adoc#EnumerableSet-add-struct-EnumerableSet-Bytes32Set-bytes32-[`EnumerableSet.add`]] +:xref-EnumerableSet-add-struct-EnumerableSet-Bytes32Set-bytes32-: xref:utils.adoc#EnumerableSet-add-struct-EnumerableSet-Bytes32Set-bytes32- +:EnumerableSet-remove: pass:normal[xref:utils.adoc#EnumerableSet-remove-struct-EnumerableSet-Bytes32Set-bytes32-[`EnumerableSet.remove`]] +:xref-EnumerableSet-remove-struct-EnumerableSet-Bytes32Set-bytes32-: xref:utils.adoc#EnumerableSet-remove-struct-EnumerableSet-Bytes32Set-bytes32- +:EnumerableSet-contains: pass:normal[xref:utils.adoc#EnumerableSet-contains-struct-EnumerableSet-Bytes32Set-bytes32-[`EnumerableSet.contains`]] +:xref-EnumerableSet-contains-struct-EnumerableSet-Bytes32Set-bytes32-: xref:utils.adoc#EnumerableSet-contains-struct-EnumerableSet-Bytes32Set-bytes32- +:EnumerableSet-length: pass:normal[xref:utils.adoc#EnumerableSet-length-struct-EnumerableSet-Bytes32Set-[`EnumerableSet.length`]] +:xref-EnumerableSet-length-struct-EnumerableSet-Bytes32Set-: xref:utils.adoc#EnumerableSet-length-struct-EnumerableSet-Bytes32Set- +:EnumerableSet-at: pass:normal[xref:utils.adoc#EnumerableSet-at-struct-EnumerableSet-Bytes32Set-uint256-[`EnumerableSet.at`]] +:xref-EnumerableSet-at-struct-EnumerableSet-Bytes32Set-uint256-: xref:utils.adoc#EnumerableSet-at-struct-EnumerableSet-Bytes32Set-uint256- +:EnumerableSet-values: pass:normal[xref:utils.adoc#EnumerableSet-values-struct-EnumerableSet-Bytes32Set-[`EnumerableSet.values`]] +:xref-EnumerableSet-values-struct-EnumerableSet-Bytes32Set-: xref:utils.adoc#EnumerableSet-values-struct-EnumerableSet-Bytes32Set- +:EnumerableSet-add: pass:normal[xref:utils.adoc#EnumerableSet-add-struct-EnumerableSet-AddressSet-address-[`EnumerableSet.add`]] +:xref-EnumerableSet-add-struct-EnumerableSet-AddressSet-address-: xref:utils.adoc#EnumerableSet-add-struct-EnumerableSet-AddressSet-address- +:EnumerableSet-remove: pass:normal[xref:utils.adoc#EnumerableSet-remove-struct-EnumerableSet-AddressSet-address-[`EnumerableSet.remove`]] +:xref-EnumerableSet-remove-struct-EnumerableSet-AddressSet-address-: xref:utils.adoc#EnumerableSet-remove-struct-EnumerableSet-AddressSet-address- +:EnumerableSet-contains: pass:normal[xref:utils.adoc#EnumerableSet-contains-struct-EnumerableSet-AddressSet-address-[`EnumerableSet.contains`]] +:xref-EnumerableSet-contains-struct-EnumerableSet-AddressSet-address-: xref:utils.adoc#EnumerableSet-contains-struct-EnumerableSet-AddressSet-address- +:EnumerableSet-length: pass:normal[xref:utils.adoc#EnumerableSet-length-struct-EnumerableSet-AddressSet-[`EnumerableSet.length`]] +:xref-EnumerableSet-length-struct-EnumerableSet-AddressSet-: xref:utils.adoc#EnumerableSet-length-struct-EnumerableSet-AddressSet- +:EnumerableSet-at: pass:normal[xref:utils.adoc#EnumerableSet-at-struct-EnumerableSet-AddressSet-uint256-[`EnumerableSet.at`]] +:xref-EnumerableSet-at-struct-EnumerableSet-AddressSet-uint256-: xref:utils.adoc#EnumerableSet-at-struct-EnumerableSet-AddressSet-uint256- +:EnumerableSet-values: pass:normal[xref:utils.adoc#EnumerableSet-values-struct-EnumerableSet-AddressSet-[`EnumerableSet.values`]] +:xref-EnumerableSet-values-struct-EnumerableSet-AddressSet-: xref:utils.adoc#EnumerableSet-values-struct-EnumerableSet-AddressSet- +:EnumerableSet-add: pass:normal[xref:utils.adoc#EnumerableSet-add-struct-EnumerableSet-UintSet-uint256-[`EnumerableSet.add`]] +:xref-EnumerableSet-add-struct-EnumerableSet-UintSet-uint256-: xref:utils.adoc#EnumerableSet-add-struct-EnumerableSet-UintSet-uint256- +:EnumerableSet-remove: pass:normal[xref:utils.adoc#EnumerableSet-remove-struct-EnumerableSet-UintSet-uint256-[`EnumerableSet.remove`]] +:xref-EnumerableSet-remove-struct-EnumerableSet-UintSet-uint256-: xref:utils.adoc#EnumerableSet-remove-struct-EnumerableSet-UintSet-uint256- +:EnumerableSet-contains: pass:normal[xref:utils.adoc#EnumerableSet-contains-struct-EnumerableSet-UintSet-uint256-[`EnumerableSet.contains`]] +:xref-EnumerableSet-contains-struct-EnumerableSet-UintSet-uint256-: xref:utils.adoc#EnumerableSet-contains-struct-EnumerableSet-UintSet-uint256- +:EnumerableSet-length: pass:normal[xref:utils.adoc#EnumerableSet-length-struct-EnumerableSet-UintSet-[`EnumerableSet.length`]] +:xref-EnumerableSet-length-struct-EnumerableSet-UintSet-: xref:utils.adoc#EnumerableSet-length-struct-EnumerableSet-UintSet- +:EnumerableSet-at: pass:normal[xref:utils.adoc#EnumerableSet-at-struct-EnumerableSet-UintSet-uint256-[`EnumerableSet.at`]] +:xref-EnumerableSet-at-struct-EnumerableSet-UintSet-uint256-: xref:utils.adoc#EnumerableSet-at-struct-EnumerableSet-UintSet-uint256- +:EnumerableSet-values: pass:normal[xref:utils.adoc#EnumerableSet-values-struct-EnumerableSet-UintSet-[`EnumerableSet.values`]] +:xref-EnumerableSet-values-struct-EnumerableSet-UintSet-: xref:utils.adoc#EnumerableSet-values-struct-EnumerableSet-UintSet- +:EnumerableSet-Set: pass:normal[xref:utils.adoc#EnumerableSet-Set[`EnumerableSet.Set`]] +:xref-EnumerableSet-Set: xref:utils.adoc#EnumerableSet-Set +:EnumerableSet-Bytes32Set: pass:normal[xref:utils.adoc#EnumerableSet-Bytes32Set[`EnumerableSet.Bytes32Set`]] +:xref-EnumerableSet-Bytes32Set: xref:utils.adoc#EnumerableSet-Bytes32Set +:EnumerableSet-AddressSet: pass:normal[xref:utils.adoc#EnumerableSet-AddressSet[`EnumerableSet.AddressSet`]] +:xref-EnumerableSet-AddressSet: xref:utils.adoc#EnumerableSet-AddressSet +:EnumerableSet-UintSet: pass:normal[xref:utils.adoc#EnumerableSet-UintSet[`EnumerableSet.UintSet`]] +:xref-EnumerableSet-UintSet: xref:utils.adoc#EnumerableSet-UintSet +:ERC1155: pass:normal[xref:token/ERC1155.adoc#ERC1155[`ERC1155`]] +:xref-ERC1155: xref:token/ERC1155.adoc#ERC1155 +:ERC1155-constructor: pass:normal[xref:token/ERC1155.adoc#ERC1155-constructor-string-[`ERC1155.constructor`]] +:xref-ERC1155-constructor-string-: xref:token/ERC1155.adoc#ERC1155-constructor-string- +:ERC1155-supportsInterface: pass:normal[xref:token/ERC1155.adoc#ERC1155-supportsInterface-bytes4-[`ERC1155.supportsInterface`]] +:xref-ERC1155-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155-supportsInterface-bytes4- +:ERC1155-uri: pass:normal[xref:token/ERC1155.adoc#ERC1155-uri-uint256-[`ERC1155.uri`]] +:xref-ERC1155-uri-uint256-: xref:token/ERC1155.adoc#ERC1155-uri-uint256- +:ERC1155-balanceOf: pass:normal[xref:token/ERC1155.adoc#ERC1155-balanceOf-address-uint256-[`ERC1155.balanceOf`]] +:xref-ERC1155-balanceOf-address-uint256-: xref:token/ERC1155.adoc#ERC1155-balanceOf-address-uint256- +:ERC1155-balanceOfBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155-balanceOfBatch-address---uint256---[`ERC1155.balanceOfBatch`]] +:xref-ERC1155-balanceOfBatch-address---uint256---: xref:token/ERC1155.adoc#ERC1155-balanceOfBatch-address---uint256--- +:ERC1155-setApprovalForAll: pass:normal[xref:token/ERC1155.adoc#ERC1155-setApprovalForAll-address-bool-[`ERC1155.setApprovalForAll`]] +:xref-ERC1155-setApprovalForAll-address-bool-: xref:token/ERC1155.adoc#ERC1155-setApprovalForAll-address-bool- +:ERC1155-isApprovedForAll: pass:normal[xref:token/ERC1155.adoc#ERC1155-isApprovedForAll-address-address-[`ERC1155.isApprovedForAll`]] +:xref-ERC1155-isApprovedForAll-address-address-: xref:token/ERC1155.adoc#ERC1155-isApprovedForAll-address-address- +:ERC1155-safeTransferFrom: pass:normal[xref:token/ERC1155.adoc#ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-[`ERC1155.safeTransferFrom`]] +:xref-ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-safeTransferFrom-address-address-uint256-uint256-bytes- +:ERC1155-safeBatchTransferFrom: pass:normal[xref:token/ERC1155.adoc#ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-[`ERC1155.safeBatchTransferFrom`]] +:xref-ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes- +:ERC1155-_safeTransferFrom: pass:normal[xref:token/ERC1155.adoc#ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-[`ERC1155._safeTransferFrom`]] +:xref-ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-_safeTransferFrom-address-address-uint256-uint256-bytes- +:ERC1155-_safeBatchTransferFrom: pass:normal[xref:token/ERC1155.adoc#ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-[`ERC1155._safeBatchTransferFrom`]] +:xref-ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_safeBatchTransferFrom-address-address-uint256---uint256---bytes- +:ERC1155-_setURI: pass:normal[xref:token/ERC1155.adoc#ERC1155-_setURI-string-[`ERC1155._setURI`]] +:xref-ERC1155-_setURI-string-: xref:token/ERC1155.adoc#ERC1155-_setURI-string- +:ERC1155-_mint: pass:normal[xref:token/ERC1155.adoc#ERC1155-_mint-address-uint256-uint256-bytes-[`ERC1155._mint`]] +:xref-ERC1155-_mint-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155-_mint-address-uint256-uint256-bytes- +:ERC1155-_mintBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155-_mintBatch-address-uint256---uint256---bytes-[`ERC1155._mintBatch`]] +:xref-ERC1155-_mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_mintBatch-address-uint256---uint256---bytes- +:ERC1155-_burn: pass:normal[xref:token/ERC1155.adoc#ERC1155-_burn-address-uint256-uint256-[`ERC1155._burn`]] +:xref-ERC1155-_burn-address-uint256-uint256-: xref:token/ERC1155.adoc#ERC1155-_burn-address-uint256-uint256- +:ERC1155-_burnBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155-_burnBatch-address-uint256---uint256---[`ERC1155._burnBatch`]] +:xref-ERC1155-_burnBatch-address-uint256---uint256---: xref:token/ERC1155.adoc#ERC1155-_burnBatch-address-uint256---uint256--- +:ERC1155-_setApprovalForAll: pass:normal[xref:token/ERC1155.adoc#ERC1155-_setApprovalForAll-address-address-bool-[`ERC1155._setApprovalForAll`]] +:xref-ERC1155-_setApprovalForAll-address-address-bool-: xref:token/ERC1155.adoc#ERC1155-_setApprovalForAll-address-address-bool- +:ERC1155-_beforeTokenTransfer: pass:normal[xref:token/ERC1155.adoc#ERC1155-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155._beforeTokenTransfer`]] +:xref-ERC1155-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:IERC1155: pass:normal[xref:token/ERC1155.adoc#IERC1155[`IERC1155`]] +:xref-IERC1155: xref:token/ERC1155.adoc#IERC1155 +:IERC1155-balanceOf: pass:normal[xref:token/ERC1155.adoc#IERC1155-balanceOf-address-uint256-[`IERC1155.balanceOf`]] +:xref-IERC1155-balanceOf-address-uint256-: xref:token/ERC1155.adoc#IERC1155-balanceOf-address-uint256- +:IERC1155-balanceOfBatch: pass:normal[xref:token/ERC1155.adoc#IERC1155-balanceOfBatch-address---uint256---[`IERC1155.balanceOfBatch`]] +:xref-IERC1155-balanceOfBatch-address---uint256---: xref:token/ERC1155.adoc#IERC1155-balanceOfBatch-address---uint256--- +:IERC1155-setApprovalForAll: pass:normal[xref:token/ERC1155.adoc#IERC1155-setApprovalForAll-address-bool-[`IERC1155.setApprovalForAll`]] +:xref-IERC1155-setApprovalForAll-address-bool-: xref:token/ERC1155.adoc#IERC1155-setApprovalForAll-address-bool- +:IERC1155-isApprovedForAll: pass:normal[xref:token/ERC1155.adoc#IERC1155-isApprovedForAll-address-address-[`IERC1155.isApprovedForAll`]] +:xref-IERC1155-isApprovedForAll-address-address-: xref:token/ERC1155.adoc#IERC1155-isApprovedForAll-address-address- +:IERC1155-safeTransferFrom: pass:normal[xref:token/ERC1155.adoc#IERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-[`IERC1155.safeTransferFrom`]] +:xref-IERC1155-safeTransferFrom-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#IERC1155-safeTransferFrom-address-address-uint256-uint256-bytes- +:IERC1155-safeBatchTransferFrom: pass:normal[xref:token/ERC1155.adoc#IERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-[`IERC1155.safeBatchTransferFrom`]] +:xref-IERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#IERC1155-safeBatchTransferFrom-address-address-uint256---uint256---bytes- +:IERC1155-TransferSingle: pass:normal[xref:token/ERC1155.adoc#IERC1155-TransferSingle-address-address-address-uint256-uint256-[`IERC1155.TransferSingle`]] +:xref-IERC1155-TransferSingle-address-address-address-uint256-uint256-: xref:token/ERC1155.adoc#IERC1155-TransferSingle-address-address-address-uint256-uint256- +:IERC1155-TransferBatch: pass:normal[xref:token/ERC1155.adoc#IERC1155-TransferBatch-address-address-address-uint256---uint256---[`IERC1155.TransferBatch`]] +:xref-IERC1155-TransferBatch-address-address-address-uint256---uint256---: xref:token/ERC1155.adoc#IERC1155-TransferBatch-address-address-address-uint256---uint256--- +:IERC1155-ApprovalForAll: pass:normal[xref:token/ERC1155.adoc#IERC1155-ApprovalForAll-address-address-bool-[`IERC1155.ApprovalForAll`]] +:xref-IERC1155-ApprovalForAll-address-address-bool-: xref:token/ERC1155.adoc#IERC1155-ApprovalForAll-address-address-bool- +:IERC1155-URI: pass:normal[xref:token/ERC1155.adoc#IERC1155-URI-string-uint256-[`IERC1155.URI`]] +:xref-IERC1155-URI-string-uint256-: xref:token/ERC1155.adoc#IERC1155-URI-string-uint256- +:IERC1155Receiver: pass:normal[xref:token/ERC1155.adoc#IERC1155Receiver[`IERC1155Receiver`]] +:xref-IERC1155Receiver: xref:token/ERC1155.adoc#IERC1155Receiver +:IERC1155Receiver-onERC1155Received: pass:normal[xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155Received-address-address-uint256-uint256-bytes-[`IERC1155Receiver.onERC1155Received`]] +:xref-IERC1155Receiver-onERC1155Received-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155Received-address-address-uint256-uint256-bytes- +:IERC1155Receiver-onERC1155BatchReceived: pass:normal[xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155BatchReceived-address-address-uint256---uint256---bytes-[`IERC1155Receiver.onERC1155BatchReceived`]] +:xref-IERC1155Receiver-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#IERC1155Receiver-onERC1155BatchReceived-address-address-uint256---uint256---bytes- +:ERC1155Burnable: pass:normal[xref:token/ERC1155.adoc#ERC1155Burnable[`ERC1155Burnable`]] +:xref-ERC1155Burnable: xref:token/ERC1155.adoc#ERC1155Burnable +:ERC1155Burnable-burn: pass:normal[xref:token/ERC1155.adoc#ERC1155Burnable-burn-address-uint256-uint256-[`ERC1155Burnable.burn`]] +:xref-ERC1155Burnable-burn-address-uint256-uint256-: xref:token/ERC1155.adoc#ERC1155Burnable-burn-address-uint256-uint256- +:ERC1155Burnable-burnBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155Burnable-burnBatch-address-uint256---uint256---[`ERC1155Burnable.burnBatch`]] +:xref-ERC1155Burnable-burnBatch-address-uint256---uint256---: xref:token/ERC1155.adoc#ERC1155Burnable-burnBatch-address-uint256---uint256--- +:ERC1155Pausable: pass:normal[xref:token/ERC1155.adoc#ERC1155Pausable[`ERC1155Pausable`]] +:xref-ERC1155Pausable: xref:token/ERC1155.adoc#ERC1155Pausable +:ERC1155Pausable-_beforeTokenTransfer: pass:normal[xref:token/ERC1155.adoc#ERC1155Pausable-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155Pausable._beforeTokenTransfer`]] +:xref-ERC1155Pausable-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155Pausable-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:ERC1155Supply: pass:normal[xref:token/ERC1155.adoc#ERC1155Supply[`ERC1155Supply`]] +:xref-ERC1155Supply: xref:token/ERC1155.adoc#ERC1155Supply +:ERC1155Supply-totalSupply: pass:normal[xref:token/ERC1155.adoc#ERC1155Supply-totalSupply-uint256-[`ERC1155Supply.totalSupply`]] +:xref-ERC1155Supply-totalSupply-uint256-: xref:token/ERC1155.adoc#ERC1155Supply-totalSupply-uint256- +:ERC1155Supply-exists: pass:normal[xref:token/ERC1155.adoc#ERC1155Supply-exists-uint256-[`ERC1155Supply.exists`]] +:xref-ERC1155Supply-exists-uint256-: xref:token/ERC1155.adoc#ERC1155Supply-exists-uint256- +:ERC1155Supply-_beforeTokenTransfer: pass:normal[xref:token/ERC1155.adoc#ERC1155Supply-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155Supply._beforeTokenTransfer`]] +:xref-ERC1155Supply-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155Supply-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:IERC1155MetadataURI: pass:normal[xref:token/ERC1155.adoc#IERC1155MetadataURI[`IERC1155MetadataURI`]] +:xref-IERC1155MetadataURI: xref:token/ERC1155.adoc#IERC1155MetadataURI +:IERC1155MetadataURI-uri: pass:normal[xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256-[`IERC1155MetadataURI.uri`]] +:xref-IERC1155MetadataURI-uri-uint256-: xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256- +:ERC1155Holder: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder[`ERC1155Holder`]] +:xref-ERC1155Holder: xref:token/ERC1155.adoc#ERC1155Holder +:ERC1155Holder-onERC1155Received: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-[`ERC1155Holder.onERC1155Received`]] +:xref-ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes- +:ERC1155Holder-onERC1155BatchReceived: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder-onERC1155BatchReceived-address-address-uint256---uint256---bytes-[`ERC1155Holder.onERC1155BatchReceived`]] +:xref-ERC1155Holder-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155Holder-onERC1155BatchReceived-address-address-uint256---uint256---bytes- +:ERC1155Receiver: pass:normal[xref:token/ERC1155.adoc#ERC1155Receiver[`ERC1155Receiver`]] +:xref-ERC1155Receiver: xref:token/ERC1155.adoc#ERC1155Receiver +:ERC1155Receiver-supportsInterface: pass:normal[xref:token/ERC1155.adoc#ERC1155Receiver-supportsInterface-bytes4-[`ERC1155Receiver.supportsInterface`]] +:xref-ERC1155Receiver-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155Receiver-supportsInterface-bytes4- +:ERC20: pass:normal[xref:token/ERC20.adoc#ERC20[`ERC20`]] +:xref-ERC20: xref:token/ERC20.adoc#ERC20 +:ERC20-constructor: pass:normal[xref:token/ERC20.adoc#ERC20-constructor-string-string-[`ERC20.constructor`]] +:xref-ERC20-constructor-string-string-: xref:token/ERC20.adoc#ERC20-constructor-string-string- +:ERC20-name: pass:normal[xref:token/ERC20.adoc#ERC20-name--[`ERC20.name`]] +:xref-ERC20-name--: xref:token/ERC20.adoc#ERC20-name-- +:ERC20-symbol: pass:normal[xref:token/ERC20.adoc#ERC20-symbol--[`ERC20.symbol`]] +:xref-ERC20-symbol--: xref:token/ERC20.adoc#ERC20-symbol-- +:ERC20-decimals: pass:normal[xref:token/ERC20.adoc#ERC20-decimals--[`ERC20.decimals`]] +:xref-ERC20-decimals--: xref:token/ERC20.adoc#ERC20-decimals-- +:ERC20-totalSupply: pass:normal[xref:token/ERC20.adoc#ERC20-totalSupply--[`ERC20.totalSupply`]] +:xref-ERC20-totalSupply--: xref:token/ERC20.adoc#ERC20-totalSupply-- +:ERC20-balanceOf: pass:normal[xref:token/ERC20.adoc#ERC20-balanceOf-address-[`ERC20.balanceOf`]] +:xref-ERC20-balanceOf-address-: xref:token/ERC20.adoc#ERC20-balanceOf-address- +:ERC20-transfer: pass:normal[xref:token/ERC20.adoc#ERC20-transfer-address-uint256-[`ERC20.transfer`]] +:xref-ERC20-transfer-address-uint256-: xref:token/ERC20.adoc#ERC20-transfer-address-uint256- +:ERC20-allowance: pass:normal[xref:token/ERC20.adoc#ERC20-allowance-address-address-[`ERC20.allowance`]] +:xref-ERC20-allowance-address-address-: xref:token/ERC20.adoc#ERC20-allowance-address-address- +:ERC20-approve: pass:normal[xref:token/ERC20.adoc#ERC20-approve-address-uint256-[`ERC20.approve`]] +:xref-ERC20-approve-address-uint256-: xref:token/ERC20.adoc#ERC20-approve-address-uint256- +:ERC20-transferFrom: pass:normal[xref:token/ERC20.adoc#ERC20-transferFrom-address-address-uint256-[`ERC20.transferFrom`]] +:xref-ERC20-transferFrom-address-address-uint256-: xref:token/ERC20.adoc#ERC20-transferFrom-address-address-uint256- +:ERC20-increaseAllowance: pass:normal[xref:token/ERC20.adoc#ERC20-increaseAllowance-address-uint256-[`ERC20.increaseAllowance`]] +:xref-ERC20-increaseAllowance-address-uint256-: xref:token/ERC20.adoc#ERC20-increaseAllowance-address-uint256- +:ERC20-decreaseAllowance: pass:normal[xref:token/ERC20.adoc#ERC20-decreaseAllowance-address-uint256-[`ERC20.decreaseAllowance`]] +:xref-ERC20-decreaseAllowance-address-uint256-: xref:token/ERC20.adoc#ERC20-decreaseAllowance-address-uint256- +:ERC20-_transfer: pass:normal[xref:token/ERC20.adoc#ERC20-_transfer-address-address-uint256-[`ERC20._transfer`]] +:xref-ERC20-_transfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_transfer-address-address-uint256- +:ERC20-_mint: pass:normal[xref:token/ERC20.adoc#ERC20-_mint-address-uint256-[`ERC20._mint`]] +:xref-ERC20-_mint-address-uint256-: xref:token/ERC20.adoc#ERC20-_mint-address-uint256- +:ERC20-_burn: pass:normal[xref:token/ERC20.adoc#ERC20-_burn-address-uint256-[`ERC20._burn`]] +:xref-ERC20-_burn-address-uint256-: xref:token/ERC20.adoc#ERC20-_burn-address-uint256- +:ERC20-_approve: pass:normal[xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256-[`ERC20._approve`]] +:xref-ERC20-_approve-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256- +:ERC20-_spendAllowance: pass:normal[xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256-[`ERC20._spendAllowance`]] +:xref-ERC20-_spendAllowance-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256- +:ERC20-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256-[`ERC20._beforeTokenTransfer`]] +:xref-ERC20-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256- +:ERC20-_afterTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_afterTokenTransfer-address-address-uint256-[`ERC20._afterTokenTransfer`]] +:xref-ERC20-_afterTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_afterTokenTransfer-address-address-uint256- +:IERC20: pass:normal[xref:token/ERC20.adoc#IERC20[`IERC20`]] +:xref-IERC20: xref:token/ERC20.adoc#IERC20 +:IERC20-totalSupply: pass:normal[xref:token/ERC20.adoc#IERC20-totalSupply--[`IERC20.totalSupply`]] +:xref-IERC20-totalSupply--: xref:token/ERC20.adoc#IERC20-totalSupply-- +:IERC20-balanceOf: pass:normal[xref:token/ERC20.adoc#IERC20-balanceOf-address-[`IERC20.balanceOf`]] +:xref-IERC20-balanceOf-address-: xref:token/ERC20.adoc#IERC20-balanceOf-address- +:IERC20-transfer: pass:normal[xref:token/ERC20.adoc#IERC20-transfer-address-uint256-[`IERC20.transfer`]] +:xref-IERC20-transfer-address-uint256-: xref:token/ERC20.adoc#IERC20-transfer-address-uint256- +:IERC20-allowance: pass:normal[xref:token/ERC20.adoc#IERC20-allowance-address-address-[`IERC20.allowance`]] +:xref-IERC20-allowance-address-address-: xref:token/ERC20.adoc#IERC20-allowance-address-address- +:IERC20-approve: pass:normal[xref:token/ERC20.adoc#IERC20-approve-address-uint256-[`IERC20.approve`]] +:xref-IERC20-approve-address-uint256-: xref:token/ERC20.adoc#IERC20-approve-address-uint256- +:IERC20-transferFrom: pass:normal[xref:token/ERC20.adoc#IERC20-transferFrom-address-address-uint256-[`IERC20.transferFrom`]] +:xref-IERC20-transferFrom-address-address-uint256-: xref:token/ERC20.adoc#IERC20-transferFrom-address-address-uint256- +:IERC20-Transfer: pass:normal[xref:token/ERC20.adoc#IERC20-Transfer-address-address-uint256-[`IERC20.Transfer`]] +:xref-IERC20-Transfer-address-address-uint256-: xref:token/ERC20.adoc#IERC20-Transfer-address-address-uint256- +:IERC20-Approval: pass:normal[xref:token/ERC20.adoc#IERC20-Approval-address-address-uint256-[`IERC20.Approval`]] +:xref-IERC20-Approval-address-address-uint256-: xref:token/ERC20.adoc#IERC20-Approval-address-address-uint256- +:ERC20Burnable: pass:normal[xref:token/ERC20.adoc#ERC20Burnable[`ERC20Burnable`]] +:xref-ERC20Burnable: xref:token/ERC20.adoc#ERC20Burnable +:ERC20Burnable-burn: pass:normal[xref:token/ERC20.adoc#ERC20Burnable-burn-uint256-[`ERC20Burnable.burn`]] +:xref-ERC20Burnable-burn-uint256-: xref:token/ERC20.adoc#ERC20Burnable-burn-uint256- +:ERC20Burnable-burnFrom: pass:normal[xref:token/ERC20.adoc#ERC20Burnable-burnFrom-address-uint256-[`ERC20Burnable.burnFrom`]] +:xref-ERC20Burnable-burnFrom-address-uint256-: xref:token/ERC20.adoc#ERC20Burnable-burnFrom-address-uint256- +:ERC20Capped: pass:normal[xref:token/ERC20.adoc#ERC20Capped[`ERC20Capped`]] +:xref-ERC20Capped: xref:token/ERC20.adoc#ERC20Capped +:ERC20Capped-constructor: pass:normal[xref:token/ERC20.adoc#ERC20Capped-constructor-uint256-[`ERC20Capped.constructor`]] +:xref-ERC20Capped-constructor-uint256-: xref:token/ERC20.adoc#ERC20Capped-constructor-uint256- +:ERC20Capped-cap: pass:normal[xref:token/ERC20.adoc#ERC20Capped-cap--[`ERC20Capped.cap`]] +:xref-ERC20Capped-cap--: xref:token/ERC20.adoc#ERC20Capped-cap-- +:ERC20Capped-_mint: pass:normal[xref:token/ERC20.adoc#ERC20Capped-_mint-address-uint256-[`ERC20Capped._mint`]] +:xref-ERC20Capped-_mint-address-uint256-: xref:token/ERC20.adoc#ERC20Capped-_mint-address-uint256- +:ERC20FlashMint: pass:normal[xref:token/ERC20.adoc#ERC20FlashMint[`ERC20FlashMint`]] +:xref-ERC20FlashMint: xref:token/ERC20.adoc#ERC20FlashMint +:ERC20FlashMint-maxFlashLoan: pass:normal[xref:token/ERC20.adoc#ERC20FlashMint-maxFlashLoan-address-[`ERC20FlashMint.maxFlashLoan`]] +:xref-ERC20FlashMint-maxFlashLoan-address-: xref:token/ERC20.adoc#ERC20FlashMint-maxFlashLoan-address- +:ERC20FlashMint-flashFee: pass:normal[xref:token/ERC20.adoc#ERC20FlashMint-flashFee-address-uint256-[`ERC20FlashMint.flashFee`]] +:xref-ERC20FlashMint-flashFee-address-uint256-: xref:token/ERC20.adoc#ERC20FlashMint-flashFee-address-uint256- +:ERC20FlashMint-flashLoan: pass:normal[xref:token/ERC20.adoc#ERC20FlashMint-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-[`ERC20FlashMint.flashLoan`]] +:xref-ERC20FlashMint-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-: xref:token/ERC20.adoc#ERC20FlashMint-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes- +:ERC20Pausable: pass:normal[xref:token/ERC20.adoc#ERC20Pausable[`ERC20Pausable`]] +:xref-ERC20Pausable: xref:token/ERC20.adoc#ERC20Pausable +:ERC20Pausable-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20Pausable-_beforeTokenTransfer-address-address-uint256-[`ERC20Pausable._beforeTokenTransfer`]] +:xref-ERC20Pausable-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20Pausable-_beforeTokenTransfer-address-address-uint256- +:ERC20Snapshot: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot[`ERC20Snapshot`]] +:xref-ERC20Snapshot: xref:token/ERC20.adoc#ERC20Snapshot +:ERC20Snapshot-_snapshot: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-_snapshot--[`ERC20Snapshot._snapshot`]] +:xref-ERC20Snapshot-_snapshot--: xref:token/ERC20.adoc#ERC20Snapshot-_snapshot-- +:ERC20Snapshot-_getCurrentSnapshotId: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-_getCurrentSnapshotId--[`ERC20Snapshot._getCurrentSnapshotId`]] +:xref-ERC20Snapshot-_getCurrentSnapshotId--: xref:token/ERC20.adoc#ERC20Snapshot-_getCurrentSnapshotId-- +:ERC20Snapshot-balanceOfAt: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-balanceOfAt-address-uint256-[`ERC20Snapshot.balanceOfAt`]] +:xref-ERC20Snapshot-balanceOfAt-address-uint256-: xref:token/ERC20.adoc#ERC20Snapshot-balanceOfAt-address-uint256- +:ERC20Snapshot-totalSupplyAt: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-totalSupplyAt-uint256-[`ERC20Snapshot.totalSupplyAt`]] +:xref-ERC20Snapshot-totalSupplyAt-uint256-: xref:token/ERC20.adoc#ERC20Snapshot-totalSupplyAt-uint256- +:ERC20Snapshot-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-_beforeTokenTransfer-address-address-uint256-[`ERC20Snapshot._beforeTokenTransfer`]] +:xref-ERC20Snapshot-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20Snapshot-_beforeTokenTransfer-address-address-uint256- +:ERC20Snapshot-Snapshot: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-Snapshot-uint256-[`ERC20Snapshot.Snapshot`]] +:xref-ERC20Snapshot-Snapshot-uint256-: xref:token/ERC20.adoc#ERC20Snapshot-Snapshot-uint256- +:ERC20Snapshot-Snapshots: pass:normal[xref:token/ERC20.adoc#ERC20Snapshot-Snapshots[`ERC20Snapshot.Snapshots`]] +:xref-ERC20Snapshot-Snapshots: xref:token/ERC20.adoc#ERC20Snapshot-Snapshots +:ERC20Votes: pass:normal[xref:token/ERC20.adoc#ERC20Votes[`ERC20Votes`]] +:xref-ERC20Votes: xref:token/ERC20.adoc#ERC20Votes +:ERC20Votes-checkpoints: pass:normal[xref:token/ERC20.adoc#ERC20Votes-checkpoints-address-uint32-[`ERC20Votes.checkpoints`]] +:xref-ERC20Votes-checkpoints-address-uint32-: xref:token/ERC20.adoc#ERC20Votes-checkpoints-address-uint32- +:ERC20Votes-numCheckpoints: pass:normal[xref:token/ERC20.adoc#ERC20Votes-numCheckpoints-address-[`ERC20Votes.numCheckpoints`]] +:xref-ERC20Votes-numCheckpoints-address-: xref:token/ERC20.adoc#ERC20Votes-numCheckpoints-address- +:ERC20Votes-delegates: pass:normal[xref:token/ERC20.adoc#ERC20Votes-delegates-address-[`ERC20Votes.delegates`]] +:xref-ERC20Votes-delegates-address-: xref:token/ERC20.adoc#ERC20Votes-delegates-address- +:ERC20Votes-getVotes: pass:normal[xref:token/ERC20.adoc#ERC20Votes-getVotes-address-[`ERC20Votes.getVotes`]] +:xref-ERC20Votes-getVotes-address-: xref:token/ERC20.adoc#ERC20Votes-getVotes-address- +:ERC20Votes-getPastVotes: pass:normal[xref:token/ERC20.adoc#ERC20Votes-getPastVotes-address-uint256-[`ERC20Votes.getPastVotes`]] +:xref-ERC20Votes-getPastVotes-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-getPastVotes-address-uint256- +:ERC20Votes-getPastTotalSupply: pass:normal[xref:token/ERC20.adoc#ERC20Votes-getPastTotalSupply-uint256-[`ERC20Votes.getPastTotalSupply`]] +:xref-ERC20Votes-getPastTotalSupply-uint256-: xref:token/ERC20.adoc#ERC20Votes-getPastTotalSupply-uint256- +:ERC20Votes-delegate: pass:normal[xref:token/ERC20.adoc#ERC20Votes-delegate-address-[`ERC20Votes.delegate`]] +:xref-ERC20Votes-delegate-address-: xref:token/ERC20.adoc#ERC20Votes-delegate-address- +:ERC20Votes-delegateBySig: pass:normal[xref:token/ERC20.adoc#ERC20Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Votes.delegateBySig`]] +:xref-ERC20Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:token/ERC20.adoc#ERC20Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:ERC20Votes-_maxSupply: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_maxSupply--[`ERC20Votes._maxSupply`]] +:xref-ERC20Votes-_maxSupply--: xref:token/ERC20.adoc#ERC20Votes-_maxSupply-- +:ERC20Votes-_mint: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_mint-address-uint256-[`ERC20Votes._mint`]] +:xref-ERC20Votes-_mint-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-_mint-address-uint256- +:ERC20Votes-_burn: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_burn-address-uint256-[`ERC20Votes._burn`]] +:xref-ERC20Votes-_burn-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-_burn-address-uint256- +:ERC20Votes-_afterTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_afterTokenTransfer-address-address-uint256-[`ERC20Votes._afterTokenTransfer`]] +:xref-ERC20Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-_afterTokenTransfer-address-address-uint256- +:ERC20Votes-_delegate: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address-[`ERC20Votes._delegate`]] +:xref-ERC20Votes-_delegate-address-address-: xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address- +:ERC20Votes-Checkpoint: pass:normal[xref:token/ERC20.adoc#ERC20Votes-Checkpoint[`ERC20Votes.Checkpoint`]] +:xref-ERC20Votes-Checkpoint: xref:token/ERC20.adoc#ERC20Votes-Checkpoint +:ERC20VotesComp: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp[`ERC20VotesComp`]] +:xref-ERC20VotesComp: xref:token/ERC20.adoc#ERC20VotesComp +:ERC20VotesComp-getCurrentVotes: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp-getCurrentVotes-address-[`ERC20VotesComp.getCurrentVotes`]] +:xref-ERC20VotesComp-getCurrentVotes-address-: xref:token/ERC20.adoc#ERC20VotesComp-getCurrentVotes-address- +:ERC20VotesComp-getPriorVotes: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp-getPriorVotes-address-uint256-[`ERC20VotesComp.getPriorVotes`]] +:xref-ERC20VotesComp-getPriorVotes-address-uint256-: xref:token/ERC20.adoc#ERC20VotesComp-getPriorVotes-address-uint256- +:ERC20VotesComp-_maxSupply: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp-_maxSupply--[`ERC20VotesComp._maxSupply`]] +:xref-ERC20VotesComp-_maxSupply--: xref:token/ERC20.adoc#ERC20VotesComp-_maxSupply-- +:ERC20Wrapper: pass:normal[xref:token/ERC20.adoc#ERC20Wrapper[`ERC20Wrapper`]] +:xref-ERC20Wrapper: xref:token/ERC20.adoc#ERC20Wrapper +:ERC20Wrapper-underlying: pass:normal[xref:token/ERC20.adoc#ERC20Wrapper-underlying-contract-IERC20[`ERC20Wrapper.underlying`]] +:xref-ERC20Wrapper-underlying-contract-IERC20: xref:token/ERC20.adoc#ERC20Wrapper-underlying-contract-IERC20 +:ERC20Wrapper-constructor: pass:normal[xref:token/ERC20.adoc#ERC20Wrapper-constructor-contract-IERC20-[`ERC20Wrapper.constructor`]] +:xref-ERC20Wrapper-constructor-contract-IERC20-: xref:token/ERC20.adoc#ERC20Wrapper-constructor-contract-IERC20- +:ERC20Wrapper-depositFor: pass:normal[xref:token/ERC20.adoc#ERC20Wrapper-depositFor-address-uint256-[`ERC20Wrapper.depositFor`]] +:xref-ERC20Wrapper-depositFor-address-uint256-: xref:token/ERC20.adoc#ERC20Wrapper-depositFor-address-uint256- +:ERC20Wrapper-withdrawTo: pass:normal[xref:token/ERC20.adoc#ERC20Wrapper-withdrawTo-address-uint256-[`ERC20Wrapper.withdrawTo`]] +:xref-ERC20Wrapper-withdrawTo-address-uint256-: xref:token/ERC20.adoc#ERC20Wrapper-withdrawTo-address-uint256- +:ERC20Wrapper-_recover: pass:normal[xref:token/ERC20.adoc#ERC20Wrapper-_recover-address-[`ERC20Wrapper._recover`]] +:xref-ERC20Wrapper-_recover-address-: xref:token/ERC20.adoc#ERC20Wrapper-_recover-address- +:IERC20Metadata: pass:normal[xref:token/ERC20.adoc#IERC20Metadata[`IERC20Metadata`]] +:xref-IERC20Metadata: xref:token/ERC20.adoc#IERC20Metadata +:IERC20Metadata-name: pass:normal[xref:token/ERC20.adoc#IERC20Metadata-name--[`IERC20Metadata.name`]] +:xref-IERC20Metadata-name--: xref:token/ERC20.adoc#IERC20Metadata-name-- +:IERC20Metadata-symbol: pass:normal[xref:token/ERC20.adoc#IERC20Metadata-symbol--[`IERC20Metadata.symbol`]] +:xref-IERC20Metadata-symbol--: xref:token/ERC20.adoc#IERC20Metadata-symbol-- +:IERC20Metadata-decimals: pass:normal[xref:token/ERC20.adoc#IERC20Metadata-decimals--[`IERC20Metadata.decimals`]] +:xref-IERC20Metadata-decimals--: xref:token/ERC20.adoc#IERC20Metadata-decimals-- +:ERC20Permit: pass:normal[xref:token/ERC20.adoc#ERC20Permit[`ERC20Permit`]] +:xref-ERC20Permit: xref:token/ERC20.adoc#ERC20Permit +:ERC20Permit-constructor: pass:normal[xref:token/ERC20.adoc#ERC20Permit-constructor-string-[`ERC20Permit.constructor`]] +:xref-ERC20Permit-constructor-string-: xref:token/ERC20.adoc#ERC20Permit-constructor-string- +:ERC20Permit-permit: pass:normal[xref:token/ERC20.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`ERC20Permit.permit`]] +:xref-ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:token/ERC20.adoc#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32- +:ERC20Permit-nonces: pass:normal[xref:token/ERC20.adoc#ERC20Permit-nonces-address-[`ERC20Permit.nonces`]] +:xref-ERC20Permit-nonces-address-: xref:token/ERC20.adoc#ERC20Permit-nonces-address- +:ERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:token/ERC20.adoc#ERC20Permit-DOMAIN_SEPARATOR--[`ERC20Permit.DOMAIN_SEPARATOR`]] +:xref-ERC20Permit-DOMAIN_SEPARATOR--: xref:token/ERC20.adoc#ERC20Permit-DOMAIN_SEPARATOR-- +:ERC20Permit-_useNonce: pass:normal[xref:token/ERC20.adoc#ERC20Permit-_useNonce-address-[`ERC20Permit._useNonce`]] +:xref-ERC20Permit-_useNonce-address-: xref:token/ERC20.adoc#ERC20Permit-_useNonce-address- +:IERC20Permit: pass:normal[xref:token/ERC20.adoc#IERC20Permit[`IERC20Permit`]] +:xref-IERC20Permit: xref:token/ERC20.adoc#IERC20Permit +:IERC20Permit-permit: pass:normal[xref:token/ERC20.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-[`IERC20Permit.permit`]] +:xref-IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-: xref:token/ERC20.adoc#IERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32- +:IERC20Permit-nonces: pass:normal[xref:token/ERC20.adoc#IERC20Permit-nonces-address-[`IERC20Permit.nonces`]] +:xref-IERC20Permit-nonces-address-: xref:token/ERC20.adoc#IERC20Permit-nonces-address- +:IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]] +:xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR-- +:SafeERC20: pass:normal[xref:token/ERC20.adoc#SafeERC20[`SafeERC20`]] +:xref-SafeERC20: xref:token/ERC20.adoc#SafeERC20 +:SafeERC20-safeTransfer: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeTransfer-contract-IERC20-address-uint256-[`SafeERC20.safeTransfer`]] +:xref-SafeERC20-safeTransfer-contract-IERC20-address-uint256-: xref:token/ERC20.adoc#SafeERC20-safeTransfer-contract-IERC20-address-uint256- +:SafeERC20-safeTransferFrom: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeTransferFrom-contract-IERC20-address-address-uint256-[`SafeERC20.safeTransferFrom`]] +:xref-SafeERC20-safeTransferFrom-contract-IERC20-address-address-uint256-: xref:token/ERC20.adoc#SafeERC20-safeTransferFrom-contract-IERC20-address-address-uint256- +:SafeERC20-safeApprove: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeApprove-contract-IERC20-address-uint256-[`SafeERC20.safeApprove`]] +:xref-SafeERC20-safeApprove-contract-IERC20-address-uint256-: xref:token/ERC20.adoc#SafeERC20-safeApprove-contract-IERC20-address-uint256- +:SafeERC20-safeIncreaseAllowance: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeIncreaseAllowance-contract-IERC20-address-uint256-[`SafeERC20.safeIncreaseAllowance`]] +:xref-SafeERC20-safeIncreaseAllowance-contract-IERC20-address-uint256-: xref:token/ERC20.adoc#SafeERC20-safeIncreaseAllowance-contract-IERC20-address-uint256- +:SafeERC20-safeDecreaseAllowance: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeDecreaseAllowance-contract-IERC20-address-uint256-[`SafeERC20.safeDecreaseAllowance`]] +:xref-SafeERC20-safeDecreaseAllowance-contract-IERC20-address-uint256-: xref:token/ERC20.adoc#SafeERC20-safeDecreaseAllowance-contract-IERC20-address-uint256- +:TokenTimelock: pass:normal[xref:token/ERC20.adoc#TokenTimelock[`TokenTimelock`]] +:xref-TokenTimelock: xref:token/ERC20.adoc#TokenTimelock +:TokenTimelock-constructor: pass:normal[xref:token/ERC20.adoc#TokenTimelock-constructor-contract-IERC20-address-uint256-[`TokenTimelock.constructor`]] +:xref-TokenTimelock-constructor-contract-IERC20-address-uint256-: xref:token/ERC20.adoc#TokenTimelock-constructor-contract-IERC20-address-uint256- +:TokenTimelock-token: pass:normal[xref:token/ERC20.adoc#TokenTimelock-token--[`TokenTimelock.token`]] +:xref-TokenTimelock-token--: xref:token/ERC20.adoc#TokenTimelock-token-- +:TokenTimelock-beneficiary: pass:normal[xref:token/ERC20.adoc#TokenTimelock-beneficiary--[`TokenTimelock.beneficiary`]] +:xref-TokenTimelock-beneficiary--: xref:token/ERC20.adoc#TokenTimelock-beneficiary-- +:TokenTimelock-releaseTime: pass:normal[xref:token/ERC20.adoc#TokenTimelock-releaseTime--[`TokenTimelock.releaseTime`]] +:xref-TokenTimelock-releaseTime--: xref:token/ERC20.adoc#TokenTimelock-releaseTime-- +:TokenTimelock-release: pass:normal[xref:token/ERC20.adoc#TokenTimelock-release--[`TokenTimelock.release`]] +:xref-TokenTimelock-release--: xref:token/ERC20.adoc#TokenTimelock-release-- +:ERC721: pass:normal[xref:token/ERC721.adoc#ERC721[`ERC721`]] +:xref-ERC721: xref:token/ERC721.adoc#ERC721 +:ERC721-constructor: pass:normal[xref:token/ERC721.adoc#ERC721-constructor-string-string-[`ERC721.constructor`]] +:xref-ERC721-constructor-string-string-: xref:token/ERC721.adoc#ERC721-constructor-string-string- +:ERC721-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721-supportsInterface-bytes4-[`ERC721.supportsInterface`]] +:xref-ERC721-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721-supportsInterface-bytes4- +:ERC721-balanceOf: pass:normal[xref:token/ERC721.adoc#ERC721-balanceOf-address-[`ERC721.balanceOf`]] +:xref-ERC721-balanceOf-address-: xref:token/ERC721.adoc#ERC721-balanceOf-address- +:ERC721-ownerOf: pass:normal[xref:token/ERC721.adoc#ERC721-ownerOf-uint256-[`ERC721.ownerOf`]] +:xref-ERC721-ownerOf-uint256-: xref:token/ERC721.adoc#ERC721-ownerOf-uint256- +:ERC721-name: pass:normal[xref:token/ERC721.adoc#ERC721-name--[`ERC721.name`]] +:xref-ERC721-name--: xref:token/ERC721.adoc#ERC721-name-- +:ERC721-symbol: pass:normal[xref:token/ERC721.adoc#ERC721-symbol--[`ERC721.symbol`]] +:xref-ERC721-symbol--: xref:token/ERC721.adoc#ERC721-symbol-- +:ERC721-tokenURI: pass:normal[xref:token/ERC721.adoc#ERC721-tokenURI-uint256-[`ERC721.tokenURI`]] +:xref-ERC721-tokenURI-uint256-: xref:token/ERC721.adoc#ERC721-tokenURI-uint256- +:ERC721-_baseURI: pass:normal[xref:token/ERC721.adoc#ERC721-_baseURI--[`ERC721._baseURI`]] +:xref-ERC721-_baseURI--: xref:token/ERC721.adoc#ERC721-_baseURI-- +:ERC721-approve: pass:normal[xref:token/ERC721.adoc#ERC721-approve-address-uint256-[`ERC721.approve`]] +:xref-ERC721-approve-address-uint256-: xref:token/ERC721.adoc#ERC721-approve-address-uint256- +:ERC721-getApproved: pass:normal[xref:token/ERC721.adoc#ERC721-getApproved-uint256-[`ERC721.getApproved`]] +:xref-ERC721-getApproved-uint256-: xref:token/ERC721.adoc#ERC721-getApproved-uint256- +:ERC721-setApprovalForAll: pass:normal[xref:token/ERC721.adoc#ERC721-setApprovalForAll-address-bool-[`ERC721.setApprovalForAll`]] +:xref-ERC721-setApprovalForAll-address-bool-: xref:token/ERC721.adoc#ERC721-setApprovalForAll-address-bool- +:ERC721-isApprovedForAll: pass:normal[xref:token/ERC721.adoc#ERC721-isApprovedForAll-address-address-[`ERC721.isApprovedForAll`]] +:xref-ERC721-isApprovedForAll-address-address-: xref:token/ERC721.adoc#ERC721-isApprovedForAll-address-address- +:ERC721-transferFrom: pass:normal[xref:token/ERC721.adoc#ERC721-transferFrom-address-address-uint256-[`ERC721.transferFrom`]] +:xref-ERC721-transferFrom-address-address-uint256-: xref:token/ERC721.adoc#ERC721-transferFrom-address-address-uint256- +:ERC721-safeTransferFrom: pass:normal[xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-[`ERC721.safeTransferFrom`]] +:xref-ERC721-safeTransferFrom-address-address-uint256-: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256- +:ERC721-safeTransferFrom: pass:normal[xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-bytes-[`ERC721.safeTransferFrom`]] +:xref-ERC721-safeTransferFrom-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-safeTransferFrom-address-address-uint256-bytes- +:ERC721-_safeTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-bytes-[`ERC721._safeTransfer`]] +:xref-ERC721-_safeTransfer-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-_safeTransfer-address-address-uint256-bytes- +:ERC721-_exists: pass:normal[xref:token/ERC721.adoc#ERC721-_exists-uint256-[`ERC721._exists`]] +:xref-ERC721-_exists-uint256-: xref:token/ERC721.adoc#ERC721-_exists-uint256- +:ERC721-_isApprovedOrOwner: pass:normal[xref:token/ERC721.adoc#ERC721-_isApprovedOrOwner-address-uint256-[`ERC721._isApprovedOrOwner`]] +:xref-ERC721-_isApprovedOrOwner-address-uint256-: xref:token/ERC721.adoc#ERC721-_isApprovedOrOwner-address-uint256- +:ERC721-_safeMint: pass:normal[xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-[`ERC721._safeMint`]] +:xref-ERC721-_safeMint-address-uint256-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256- +:ERC721-_safeMint: pass:normal[xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-bytes-[`ERC721._safeMint`]] +:xref-ERC721-_safeMint-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721-_safeMint-address-uint256-bytes- +:ERC721-_mint: pass:normal[xref:token/ERC721.adoc#ERC721-_mint-address-uint256-[`ERC721._mint`]] +:xref-ERC721-_mint-address-uint256-: xref:token/ERC721.adoc#ERC721-_mint-address-uint256- +:ERC721-_burn: pass:normal[xref:token/ERC721.adoc#ERC721-_burn-uint256-[`ERC721._burn`]] +:xref-ERC721-_burn-uint256-: xref:token/ERC721.adoc#ERC721-_burn-uint256- +:ERC721-_transfer: pass:normal[xref:token/ERC721.adoc#ERC721-_transfer-address-address-uint256-[`ERC721._transfer`]] +:xref-ERC721-_transfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_transfer-address-address-uint256- +:ERC721-_approve: pass:normal[xref:token/ERC721.adoc#ERC721-_approve-address-uint256-[`ERC721._approve`]] +:xref-ERC721-_approve-address-uint256-: xref:token/ERC721.adoc#ERC721-_approve-address-uint256- +:ERC721-_setApprovalForAll: pass:normal[xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool-[`ERC721._setApprovalForAll`]] +:xref-ERC721-_setApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool- +:ERC721-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256-[`ERC721._beforeTokenTransfer`]] +:xref-ERC721-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256- +:ERC721-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256-[`ERC721._afterTokenTransfer`]] +:xref-ERC721-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256- +:IERC721: pass:normal[xref:token/ERC721.adoc#IERC721[`IERC721`]] +:xref-IERC721: xref:token/ERC721.adoc#IERC721 +:IERC721-balanceOf: pass:normal[xref:token/ERC721.adoc#IERC721-balanceOf-address-[`IERC721.balanceOf`]] +:xref-IERC721-balanceOf-address-: xref:token/ERC721.adoc#IERC721-balanceOf-address- +:IERC721-ownerOf: pass:normal[xref:token/ERC721.adoc#IERC721-ownerOf-uint256-[`IERC721.ownerOf`]] +:xref-IERC721-ownerOf-uint256-: xref:token/ERC721.adoc#IERC721-ownerOf-uint256- +:IERC721-safeTransferFrom: pass:normal[xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256-[`IERC721.safeTransferFrom`]] +:xref-IERC721-safeTransferFrom-address-address-uint256-: xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256- +:IERC721-transferFrom: pass:normal[xref:token/ERC721.adoc#IERC721-transferFrom-address-address-uint256-[`IERC721.transferFrom`]] +:xref-IERC721-transferFrom-address-address-uint256-: xref:token/ERC721.adoc#IERC721-transferFrom-address-address-uint256- +:IERC721-approve: pass:normal[xref:token/ERC721.adoc#IERC721-approve-address-uint256-[`IERC721.approve`]] +:xref-IERC721-approve-address-uint256-: xref:token/ERC721.adoc#IERC721-approve-address-uint256- +:IERC721-getApproved: pass:normal[xref:token/ERC721.adoc#IERC721-getApproved-uint256-[`IERC721.getApproved`]] +:xref-IERC721-getApproved-uint256-: xref:token/ERC721.adoc#IERC721-getApproved-uint256- +:IERC721-setApprovalForAll: pass:normal[xref:token/ERC721.adoc#IERC721-setApprovalForAll-address-bool-[`IERC721.setApprovalForAll`]] +:xref-IERC721-setApprovalForAll-address-bool-: xref:token/ERC721.adoc#IERC721-setApprovalForAll-address-bool- +:IERC721-isApprovedForAll: pass:normal[xref:token/ERC721.adoc#IERC721-isApprovedForAll-address-address-[`IERC721.isApprovedForAll`]] +:xref-IERC721-isApprovedForAll-address-address-: xref:token/ERC721.adoc#IERC721-isApprovedForAll-address-address- +:IERC721-safeTransferFrom: pass:normal[xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256-bytes-[`IERC721.safeTransferFrom`]] +:xref-IERC721-safeTransferFrom-address-address-uint256-bytes-: xref:token/ERC721.adoc#IERC721-safeTransferFrom-address-address-uint256-bytes- +:IERC721-Transfer: pass:normal[xref:token/ERC721.adoc#IERC721-Transfer-address-address-uint256-[`IERC721.Transfer`]] +:xref-IERC721-Transfer-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Transfer-address-address-uint256- +:IERC721-Approval: pass:normal[xref:token/ERC721.adoc#IERC721-Approval-address-address-uint256-[`IERC721.Approval`]] +:xref-IERC721-Approval-address-address-uint256-: xref:token/ERC721.adoc#IERC721-Approval-address-address-uint256- +:IERC721-ApprovalForAll: pass:normal[xref:token/ERC721.adoc#IERC721-ApprovalForAll-address-address-bool-[`IERC721.ApprovalForAll`]] +:xref-IERC721-ApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#IERC721-ApprovalForAll-address-address-bool- +:IERC721Receiver: pass:normal[xref:token/ERC721.adoc#IERC721Receiver[`IERC721Receiver`]] +:xref-IERC721Receiver: xref:token/ERC721.adoc#IERC721Receiver +:IERC721Receiver-onERC721Received: pass:normal[xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes-[`IERC721Receiver.onERC721Received`]] +:xref-IERC721Receiver-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#IERC721Receiver-onERC721Received-address-address-uint256-bytes- +:ERC721Burnable: pass:normal[xref:token/ERC721.adoc#ERC721Burnable[`ERC721Burnable`]] +:xref-ERC721Burnable: xref:token/ERC721.adoc#ERC721Burnable +:ERC721Burnable-burn: pass:normal[xref:token/ERC721.adoc#ERC721Burnable-burn-uint256-[`ERC721Burnable.burn`]] +:xref-ERC721Burnable-burn-uint256-: xref:token/ERC721.adoc#ERC721Burnable-burn-uint256- +:ERC721Enumerable: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable[`ERC721Enumerable`]] +:xref-ERC721Enumerable: xref:token/ERC721.adoc#ERC721Enumerable +:ERC721Enumerable-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-supportsInterface-bytes4-[`ERC721Enumerable.supportsInterface`]] +:xref-ERC721Enumerable-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721Enumerable-supportsInterface-bytes4- +:ERC721Enumerable-tokenOfOwnerByIndex: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-tokenOfOwnerByIndex-address-uint256-[`ERC721Enumerable.tokenOfOwnerByIndex`]] +:xref-ERC721Enumerable-tokenOfOwnerByIndex-address-uint256-: xref:token/ERC721.adoc#ERC721Enumerable-tokenOfOwnerByIndex-address-uint256- +:ERC721Enumerable-totalSupply: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-totalSupply--[`ERC721Enumerable.totalSupply`]] +:xref-ERC721Enumerable-totalSupply--: xref:token/ERC721.adoc#ERC721Enumerable-totalSupply-- +:ERC721Enumerable-tokenByIndex: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-tokenByIndex-uint256-[`ERC721Enumerable.tokenByIndex`]] +:xref-ERC721Enumerable-tokenByIndex-uint256-: xref:token/ERC721.adoc#ERC721Enumerable-tokenByIndex-uint256- +:ERC721Enumerable-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Enumerable-_beforeTokenTransfer-address-address-uint256-[`ERC721Enumerable._beforeTokenTransfer`]] +:xref-ERC721Enumerable-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Enumerable-_beforeTokenTransfer-address-address-uint256- +:ERC721Pausable: pass:normal[xref:token/ERC721.adoc#ERC721Pausable[`ERC721Pausable`]] +:xref-ERC721Pausable: xref:token/ERC721.adoc#ERC721Pausable +:ERC721Pausable-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256-[`ERC721Pausable._beforeTokenTransfer`]] +:xref-ERC721Pausable-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256- +:ERC721Royalty: pass:normal[xref:token/ERC721.adoc#ERC721Royalty[`ERC721Royalty`]] +:xref-ERC721Royalty: xref:token/ERC721.adoc#ERC721Royalty +:ERC721Royalty-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4-[`ERC721Royalty.supportsInterface`]] +:xref-ERC721Royalty-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4- +:ERC721Royalty-_burn: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256-[`ERC721Royalty._burn`]] +:xref-ERC721Royalty-_burn-uint256-: xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256- +:ERC721URIStorage: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage[`ERC721URIStorage`]] +:xref-ERC721URIStorage: xref:token/ERC721.adoc#ERC721URIStorage +:ERC721URIStorage-tokenURI: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage-tokenURI-uint256-[`ERC721URIStorage.tokenURI`]] +:xref-ERC721URIStorage-tokenURI-uint256-: xref:token/ERC721.adoc#ERC721URIStorage-tokenURI-uint256- +:ERC721URIStorage-_setTokenURI: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage-_setTokenURI-uint256-string-[`ERC721URIStorage._setTokenURI`]] +:xref-ERC721URIStorage-_setTokenURI-uint256-string-: xref:token/ERC721.adoc#ERC721URIStorage-_setTokenURI-uint256-string- +:ERC721URIStorage-_burn: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage-_burn-uint256-[`ERC721URIStorage._burn`]] +:xref-ERC721URIStorage-_burn-uint256-: xref:token/ERC721.adoc#ERC721URIStorage-_burn-uint256- +:IERC721Enumerable: pass:normal[xref:token/ERC721.adoc#IERC721Enumerable[`IERC721Enumerable`]] +:xref-IERC721Enumerable: xref:token/ERC721.adoc#IERC721Enumerable +:IERC721Enumerable-totalSupply: pass:normal[xref:token/ERC721.adoc#IERC721Enumerable-totalSupply--[`IERC721Enumerable.totalSupply`]] +:xref-IERC721Enumerable-totalSupply--: xref:token/ERC721.adoc#IERC721Enumerable-totalSupply-- +:IERC721Enumerable-tokenOfOwnerByIndex: pass:normal[xref:token/ERC721.adoc#IERC721Enumerable-tokenOfOwnerByIndex-address-uint256-[`IERC721Enumerable.tokenOfOwnerByIndex`]] +:xref-IERC721Enumerable-tokenOfOwnerByIndex-address-uint256-: xref:token/ERC721.adoc#IERC721Enumerable-tokenOfOwnerByIndex-address-uint256- +:IERC721Enumerable-tokenByIndex: pass:normal[xref:token/ERC721.adoc#IERC721Enumerable-tokenByIndex-uint256-[`IERC721Enumerable.tokenByIndex`]] +:xref-IERC721Enumerable-tokenByIndex-uint256-: xref:token/ERC721.adoc#IERC721Enumerable-tokenByIndex-uint256- +:IERC721Metadata: pass:normal[xref:token/ERC721.adoc#IERC721Metadata[`IERC721Metadata`]] +:xref-IERC721Metadata: xref:token/ERC721.adoc#IERC721Metadata +:IERC721Metadata-name: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-name--[`IERC721Metadata.name`]] +:xref-IERC721Metadata-name--: xref:token/ERC721.adoc#IERC721Metadata-name-- +:IERC721Metadata-symbol: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-symbol--[`IERC721Metadata.symbol`]] +:xref-IERC721Metadata-symbol--: xref:token/ERC721.adoc#IERC721Metadata-symbol-- +:IERC721Metadata-tokenURI: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256-[`IERC721Metadata.tokenURI`]] +:xref-IERC721Metadata-tokenURI-uint256-: xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256- +:ERC721Votes: pass:normal[xref:token/ERC721.adoc#ERC721Votes[`ERC721Votes`]] +:xref-ERC721Votes: xref:token/ERC721.adoc#ERC721Votes +:ERC721Votes-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256-[`ERC721Votes._afterTokenTransfer`]] +:xref-ERC721Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256- +:ERC721Votes-_getVotingUnits: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address-[`ERC721Votes._getVotingUnits`]] +:xref-ERC721Votes-_getVotingUnits-address-: xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address- +:ERC721Holder: pass:normal[xref:token/ERC721.adoc#ERC721Holder[`ERC721Holder`]] +:xref-ERC721Holder: xref:token/ERC721.adoc#ERC721Holder +:ERC721Holder-onERC721Received: pass:normal[xref:token/ERC721.adoc#ERC721Holder-onERC721Received-address-address-uint256-bytes-[`ERC721Holder.onERC721Received`]] +:xref-ERC721Holder-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721Holder-onERC721Received-address-address-uint256-bytes- +:ERC777: pass:normal[xref:token/ERC777.adoc#ERC777[`ERC777`]] +:xref-ERC777: xref:token/ERC777.adoc#ERC777 +:ERC777-_ERC1820_REGISTRY: pass:normal[xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry[`ERC777._ERC1820_REGISTRY`]] +:xref-ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry: xref:token/ERC777.adoc#ERC777-_ERC1820_REGISTRY-contract-IERC1820Registry +:ERC777-constructor: pass:normal[xref:token/ERC777.adoc#ERC777-constructor-string-string-address---[`ERC777.constructor`]] +:xref-ERC777-constructor-string-string-address---: xref:token/ERC777.adoc#ERC777-constructor-string-string-address--- +:ERC777-name: pass:normal[xref:token/ERC777.adoc#ERC777-name--[`ERC777.name`]] +:xref-ERC777-name--: xref:token/ERC777.adoc#ERC777-name-- +:ERC777-symbol: pass:normal[xref:token/ERC777.adoc#ERC777-symbol--[`ERC777.symbol`]] +:xref-ERC777-symbol--: xref:token/ERC777.adoc#ERC777-symbol-- +:ERC777-decimals: pass:normal[xref:token/ERC777.adoc#ERC777-decimals--[`ERC777.decimals`]] +:xref-ERC777-decimals--: xref:token/ERC777.adoc#ERC777-decimals-- +:ERC777-granularity: pass:normal[xref:token/ERC777.adoc#ERC777-granularity--[`ERC777.granularity`]] +:xref-ERC777-granularity--: xref:token/ERC777.adoc#ERC777-granularity-- +:ERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#ERC777-totalSupply--[`ERC777.totalSupply`]] +:xref-ERC777-totalSupply--: xref:token/ERC777.adoc#ERC777-totalSupply-- +:ERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#ERC777-balanceOf-address-[`ERC777.balanceOf`]] +:xref-ERC777-balanceOf-address-: xref:token/ERC777.adoc#ERC777-balanceOf-address- +:ERC777-send: pass:normal[xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes-[`ERC777.send`]] +:xref-ERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#ERC777-send-address-uint256-bytes- +:ERC777-transfer: pass:normal[xref:token/ERC777.adoc#ERC777-transfer-address-uint256-[`ERC777.transfer`]] +:xref-ERC777-transfer-address-uint256-: xref:token/ERC777.adoc#ERC777-transfer-address-uint256- +:ERC777-burn: pass:normal[xref:token/ERC777.adoc#ERC777-burn-uint256-bytes-[`ERC777.burn`]] +:xref-ERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#ERC777-burn-uint256-bytes- +:ERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address-[`ERC777.isOperatorFor`]] +:xref-ERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#ERC777-isOperatorFor-address-address- +:ERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-authorizeOperator-address-[`ERC777.authorizeOperator`]] +:xref-ERC777-authorizeOperator-address-: xref:token/ERC777.adoc#ERC777-authorizeOperator-address- +:ERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#ERC777-revokeOperator-address-[`ERC777.revokeOperator`]] +:xref-ERC777-revokeOperator-address-: xref:token/ERC777.adoc#ERC777-revokeOperator-address- +:ERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#ERC777-defaultOperators--[`ERC777.defaultOperators`]] +:xref-ERC777-defaultOperators--: xref:token/ERC777.adoc#ERC777-defaultOperators-- +:ERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes-[`ERC777.operatorSend`]] +:xref-ERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorSend-address-address-uint256-bytes-bytes- +:ERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes-[`ERC777.operatorBurn`]] +:xref-ERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-operatorBurn-address-uint256-bytes-bytes- +:ERC777-allowance: pass:normal[xref:token/ERC777.adoc#ERC777-allowance-address-address-[`ERC777.allowance`]] +:xref-ERC777-allowance-address-address-: xref:token/ERC777.adoc#ERC777-allowance-address-address- +:ERC777-approve: pass:normal[xref:token/ERC777.adoc#ERC777-approve-address-uint256-[`ERC777.approve`]] +:xref-ERC777-approve-address-uint256-: xref:token/ERC777.adoc#ERC777-approve-address-uint256- +:ERC777-transferFrom: pass:normal[xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256-[`ERC777.transferFrom`]] +:xref-ERC777-transferFrom-address-address-uint256-: xref:token/ERC777.adoc#ERC777-transferFrom-address-address-uint256- +:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-[`ERC777._mint`]] +:xref-ERC777-_mint-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes- +:ERC777-_mint: pass:normal[xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-bool-[`ERC777._mint`]] +:xref-ERC777-_mint-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_mint-address-uint256-bytes-bytes-bool- +:ERC777-_send: pass:normal[xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool-[`ERC777._send`]] +:xref-ERC777-_send-address-address-uint256-bytes-bytes-bool-: xref:token/ERC777.adoc#ERC777-_send-address-address-uint256-bytes-bytes-bool- +:ERC777-_burn: pass:normal[xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes-[`ERC777._burn`]] +:xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes- +:ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]] +:xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256- +:ERC777-_spendAllowance: pass:normal[xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256-[`ERC777._spendAllowance`]] +:xref-ERC777-_spendAllowance-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256- +:ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]] +:xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256- +:IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]] +:xref-IERC777: xref:token/ERC777.adoc#IERC777 +:IERC777-name: pass:normal[xref:token/ERC777.adoc#IERC777-name--[`IERC777.name`]] +:xref-IERC777-name--: xref:token/ERC777.adoc#IERC777-name-- +:IERC777-symbol: pass:normal[xref:token/ERC777.adoc#IERC777-symbol--[`IERC777.symbol`]] +:xref-IERC777-symbol--: xref:token/ERC777.adoc#IERC777-symbol-- +:IERC777-granularity: pass:normal[xref:token/ERC777.adoc#IERC777-granularity--[`IERC777.granularity`]] +:xref-IERC777-granularity--: xref:token/ERC777.adoc#IERC777-granularity-- +:IERC777-totalSupply: pass:normal[xref:token/ERC777.adoc#IERC777-totalSupply--[`IERC777.totalSupply`]] +:xref-IERC777-totalSupply--: xref:token/ERC777.adoc#IERC777-totalSupply-- +:IERC777-balanceOf: pass:normal[xref:token/ERC777.adoc#IERC777-balanceOf-address-[`IERC777.balanceOf`]] +:xref-IERC777-balanceOf-address-: xref:token/ERC777.adoc#IERC777-balanceOf-address- +:IERC777-send: pass:normal[xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes-[`IERC777.send`]] +:xref-IERC777-send-address-uint256-bytes-: xref:token/ERC777.adoc#IERC777-send-address-uint256-bytes- +:IERC777-burn: pass:normal[xref:token/ERC777.adoc#IERC777-burn-uint256-bytes-[`IERC777.burn`]] +:xref-IERC777-burn-uint256-bytes-: xref:token/ERC777.adoc#IERC777-burn-uint256-bytes- +:IERC777-isOperatorFor: pass:normal[xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address-[`IERC777.isOperatorFor`]] +:xref-IERC777-isOperatorFor-address-address-: xref:token/ERC777.adoc#IERC777-isOperatorFor-address-address- +:IERC777-authorizeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-authorizeOperator-address-[`IERC777.authorizeOperator`]] +:xref-IERC777-authorizeOperator-address-: xref:token/ERC777.adoc#IERC777-authorizeOperator-address- +:IERC777-revokeOperator: pass:normal[xref:token/ERC777.adoc#IERC777-revokeOperator-address-[`IERC777.revokeOperator`]] +:xref-IERC777-revokeOperator-address-: xref:token/ERC777.adoc#IERC777-revokeOperator-address- +:IERC777-defaultOperators: pass:normal[xref:token/ERC777.adoc#IERC777-defaultOperators--[`IERC777.defaultOperators`]] +:xref-IERC777-defaultOperators--: xref:token/ERC777.adoc#IERC777-defaultOperators-- +:IERC777-operatorSend: pass:normal[xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes-[`IERC777.operatorSend`]] +:xref-IERC777-operatorSend-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorSend-address-address-uint256-bytes-bytes- +:IERC777-operatorBurn: pass:normal[xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes-[`IERC777.operatorBurn`]] +:xref-IERC777-operatorBurn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-operatorBurn-address-uint256-bytes-bytes- +:IERC777-Sent: pass:normal[xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes-[`IERC777.Sent`]] +:xref-IERC777-Sent-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Sent-address-address-address-uint256-bytes-bytes- +:IERC777-Minted: pass:normal[xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes-[`IERC777.Minted`]] +:xref-IERC777-Minted-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Minted-address-address-uint256-bytes-bytes- +:IERC777-Burned: pass:normal[xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes-[`IERC777.Burned`]] +:xref-IERC777-Burned-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777-Burned-address-address-uint256-bytes-bytes- +:IERC777-AuthorizedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address-[`IERC777.AuthorizedOperator`]] +:xref-IERC777-AuthorizedOperator-address-address-: xref:token/ERC777.adoc#IERC777-AuthorizedOperator-address-address- +:IERC777-RevokedOperator: pass:normal[xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address-[`IERC777.RevokedOperator`]] +:xref-IERC777-RevokedOperator-address-address-: xref:token/ERC777.adoc#IERC777-RevokedOperator-address-address- +:IERC777Recipient: pass:normal[xref:token/ERC777.adoc#IERC777Recipient[`IERC777Recipient`]] +:xref-IERC777Recipient: xref:token/ERC777.adoc#IERC777Recipient +:IERC777Recipient-tokensReceived: pass:normal[xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-[`IERC777Recipient.tokensReceived`]] +:xref-IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Recipient-tokensReceived-address-address-address-uint256-bytes-bytes- +:IERC777Sender: pass:normal[xref:token/ERC777.adoc#IERC777Sender[`IERC777Sender`]] +:xref-IERC777Sender: xref:token/ERC777.adoc#IERC777Sender +:IERC777Sender-tokensToSend: pass:normal[xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-[`IERC777Sender.tokensToSend`]] +:xref-IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#IERC777Sender-tokensToSend-address-address-address-uint256-bytes-bytes- +:ERC777PresetFixedSupply: pass:normal[xref:token/ERC777.adoc#ERC777PresetFixedSupply[`ERC777PresetFixedSupply`]] +:xref-ERC777PresetFixedSupply: xref:token/ERC777.adoc#ERC777PresetFixedSupply +:ERC777PresetFixedSupply-constructor: pass:normal[xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-[`ERC777PresetFixedSupply.constructor`]] +:xref-ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-: xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address- +:ERC2981: pass:normal[xref:token/common.adoc#ERC2981[`ERC2981`]] +:xref-ERC2981: xref:token/common.adoc#ERC2981 +:ERC2981-supportsInterface: pass:normal[xref:token/common.adoc#ERC2981-supportsInterface-bytes4-[`ERC2981.supportsInterface`]] +:xref-ERC2981-supportsInterface-bytes4-: xref:token/common.adoc#ERC2981-supportsInterface-bytes4- +:ERC2981-royaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256-[`ERC2981.royaltyInfo`]] +:xref-ERC2981-royaltyInfo-uint256-uint256-: xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256- +:ERC2981-_feeDenominator: pass:normal[xref:token/common.adoc#ERC2981-_feeDenominator--[`ERC2981._feeDenominator`]] +:xref-ERC2981-_feeDenominator--: xref:token/common.adoc#ERC2981-_feeDenominator-- +:ERC2981-_setDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96-[`ERC2981._setDefaultRoyalty`]] +:xref-ERC2981-_setDefaultRoyalty-address-uint96-: xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96- +:ERC2981-_deleteDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty--[`ERC2981._deleteDefaultRoyalty`]] +:xref-ERC2981-_deleteDefaultRoyalty--: xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty-- +:ERC2981-_setTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96-[`ERC2981._setTokenRoyalty`]] +:xref-ERC2981-_setTokenRoyalty-uint256-address-uint96-: xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96- +:ERC2981-_resetTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256-[`ERC2981._resetTokenRoyalty`]] +:xref-ERC2981-_resetTokenRoyalty-uint256-: xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256- +:ERC2981-RoyaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-RoyaltyInfo[`ERC2981.RoyaltyInfo`]] +:xref-ERC2981-RoyaltyInfo: xref:token/common.adoc#ERC2981-RoyaltyInfo +:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] +:xref-ERC1155PresetMinterPauser: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser +:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] +:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string- +:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] +:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- +:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] +:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- +:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] +:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause-- +:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] +:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause-- +:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] +:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4- +:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] +:xref-ERC20PresetFixedSupply: xref:token/ERC20/presets.md#ERC20PresetFixedSupply +:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] +:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address- +:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] +:xref-ERC20PresetMinterPauser: xref:token/ERC20/presets.md#ERC20PresetMinterPauser +:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] +:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string- +:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] +:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256- +:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] +:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause-- +:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] +:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause-- +:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] +:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId +:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] +:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string- +:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] +:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI-- +:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] +:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address- +:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] +:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause-- +:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] +:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause-- +:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] +:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] +:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- += Common (Tokens) + +Functionality that is common to multiple token standards. + +* {ERC2981}: NFT Royalties compatible with both ERC721 and ERC1155. +** For ERC721 consider {ERC721Royalty} which clears the royalty information from storage on burn. + +== Contracts + +:ERC2981: pass:normal[xref:#ERC2981[`++ERC2981++`]] +:supportsInterface: pass:normal[xref:#ERC2981-supportsInterface-bytes4-[`++supportsInterface++`]] +:royaltyInfo: pass:normal[xref:#ERC2981-royaltyInfo-uint256-uint256-[`++royaltyInfo++`]] +:_feeDenominator: pass:normal[xref:#ERC2981-_feeDenominator--[`++_feeDenominator++`]] +:_setDefaultRoyalty: pass:normal[xref:#ERC2981-_setDefaultRoyalty-address-uint96-[`++_setDefaultRoyalty++`]] +:_deleteDefaultRoyalty: pass:normal[xref:#ERC2981-_deleteDefaultRoyalty--[`++_deleteDefaultRoyalty++`]] +:_setTokenRoyalty: pass:normal[xref:#ERC2981-_setTokenRoyalty-uint256-address-uint96-[`++_setTokenRoyalty++`]] +:_resetTokenRoyalty: pass:normal[xref:#ERC2981-_resetTokenRoyalty-uint256-[`++_resetTokenRoyalty++`]] +:RoyaltyInfo: pass:normal[xref:#ERC2981-RoyaltyInfo[`++RoyaltyInfo++`]] + +[.contract] +[[ERC2981]] +=== `++ERC2981++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/token/common/ERC2981.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@openzeppelin/contracts/token/common/ERC2981.sol"; +``` + +Implementation of the NFT Royalty Standard, a standardized way to retrieve royalty payment information. + +Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for +specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first. + +Royalty is specified as a fraction of sale price. {_feeDenominator} is overridable but defaults to 10000, meaning the +fee is specified in basis points by default. + +IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See +https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the EIP. Marketplaces are expected to +voluntarily pay royalties together with sales, but note that this standard is not yet widely supported. + +_Available since v4.5._ + + +[.contract-index] +.Functions +-- +* {xref-ERC2981-supportsInterface-bytes4-}[`++supportsInterface(interfaceId)++`] +* {xref-ERC2981-royaltyInfo-uint256-uint256-}[`++royaltyInfo(_tokenId, _salePrice)++`] +* {xref-ERC2981-_feeDenominator--}[`++_feeDenominator()++`] +* {xref-ERC2981-_setDefaultRoyalty-address-uint96-}[`++_setDefaultRoyalty(receiver, feeNumerator)++`] +* {xref-ERC2981-_deleteDefaultRoyalty--}[`++_deleteDefaultRoyalty()++`] +* {xref-ERC2981-_setTokenRoyalty-uint256-address-uint96-}[`++_setTokenRoyalty(tokenId, receiver, feeNumerator)++`] +* {xref-ERC2981-_resetTokenRoyalty-uint256-}[`++_resetTokenRoyalty(tokenId)++`] + +[.contract-subindex-inherited] +.ERC165 + +[.contract-subindex-inherited] +.IERC2981 + +[.contract-subindex-inherited] +.IERC165 + +-- + + + +[.contract-item] +[[ERC2981-supportsInterface-bytes4-]] +==== `[.contract-item-name]#++supportsInterface++#++(bytes4 interfaceId) → bool++` [.item-kind]#public# + +See {IERC165-supportsInterface}. + +[.contract-item] +[[ERC2981-royaltyInfo-uint256-uint256-]] +==== `[.contract-item-name]#++royaltyInfo++#++(uint256 _tokenId, uint256 _salePrice) → address, uint256++` [.item-kind]#external# + +Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of +exchange. The royalty amount is denominated and should be payed in that same unit of exchange. + +[.contract-item] +[[ERC2981-_feeDenominator--]] +==== `[.contract-item-name]#++_feeDenominator++#++() → uint96++` [.item-kind]#internal# + +The denominator with which to interpret the fee set in {_setTokenRoyalty} and {_setDefaultRoyalty} as a +fraction of the sale price. Defaults to 10000 so fees are expressed in basis points, but may be customized by an +override. + +[.contract-item] +[[ERC2981-_setDefaultRoyalty-address-uint96-]] +==== `[.contract-item-name]#++_setDefaultRoyalty++#++(address receiver, uint96 feeNumerator)++` [.item-kind]#internal# + +Sets the royalty information that all ids in this contract will default to. + +Requirements: + +- `receiver` cannot be the zero address. +- `feeNumerator` cannot be greater than the fee denominator. + +[.contract-item] +[[ERC2981-_deleteDefaultRoyalty--]] +==== `[.contract-item-name]#++_deleteDefaultRoyalty++#++()++` [.item-kind]#internal# + +Removes default royalty information. + +[.contract-item] +[[ERC2981-_setTokenRoyalty-uint256-address-uint96-]] +==== `[.contract-item-name]#++_setTokenRoyalty++#++(uint256 tokenId, address receiver, uint96 feeNumerator)++` [.item-kind]#internal# + +Sets the royalty information for a specific token id, overriding the global default. + +Requirements: + +- `tokenId` must be already minted. +- `receiver` cannot be the zero address. +- `feeNumerator` cannot be greater than the fee denominator. + +[.contract-item] +[[ERC2981-_resetTokenRoyalty-uint256-]] +==== `[.contract-item-name]#++_resetTokenRoyalty++#++(uint256 tokenId)++` [.item-kind]#internal# + +Resets royalty information for the token id back to the global default. + + + diff --git a/docs/modules/api/pages/utils.adoc b/docs/modules/api/pages/utils.adoc index 22bd59b33..40cdea351 100644 --- a/docs/modules/api/pages/utils.adoc +++ b/docs/modules/api/pages/utils.adoc @@ -192,6 +192,8 @@ :xref-Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32-: xref:governance.adoc#Governor-castVoteBySig-uint256-uint8-uint8-bytes32-bytes32- :Governor-_castVote: pass:normal[xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string-[`Governor._castVote`]] :xref-Governor-_castVote-uint256-address-uint8-string-: xref:governance.adoc#Governor-_castVote-uint256-address-uint8-string- +:Governor-relay: pass:normal[xref:governance.adoc#Governor-relay-address-uint256-bytes-[`Governor.relay`]] +:xref-Governor-relay-address-uint256-bytes-: xref:governance.adoc#Governor-relay-address-uint256-bytes- :Governor-_executor: pass:normal[xref:governance.adoc#Governor-_executor--[`Governor._executor`]] :xref-Governor-_executor--: xref:governance.adoc#Governor-_executor-- :Governor-ProposalCore: pass:normal[xref:governance.adoc#Governor-ProposalCore[`Governor.ProposalCore`]] @@ -368,6 +370,24 @@ :xref-GovernorCountingSimple-ProposalVote: xref:governance.adoc#GovernorCountingSimple-ProposalVote :GovernorCountingSimple-VoteType: pass:normal[xref:governance.adoc#GovernorCountingSimple-VoteType[`GovernorCountingSimple.VoteType`]] :xref-GovernorCountingSimple-VoteType: xref:governance.adoc#GovernorCountingSimple-VoteType +:GovernorPreventLateQuorum: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum[`GovernorPreventLateQuorum`]] +:xref-GovernorPreventLateQuorum: xref:governance.adoc#GovernorPreventLateQuorum +:GovernorPreventLateQuorum-constructor: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64-[`GovernorPreventLateQuorum.constructor`]] +:xref-GovernorPreventLateQuorum-constructor-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-constructor-uint64- +:GovernorPreventLateQuorum-proposalDeadline: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256-[`GovernorPreventLateQuorum.proposalDeadline`]] +:xref-GovernorPreventLateQuorum-proposalDeadline-uint256-: xref:governance.adoc#GovernorPreventLateQuorum-proposalDeadline-uint256- +:GovernorPreventLateQuorum-_castVote: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-[`GovernorPreventLateQuorum._castVote`]] +:xref-GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string-: xref:governance.adoc#GovernorPreventLateQuorum-_castVote-uint256-address-uint8-string- +:GovernorPreventLateQuorum-lateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension--[`GovernorPreventLateQuorum.lateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-lateQuorumVoteExtension--: xref:governance.adoc#GovernorPreventLateQuorum-lateQuorumVoteExtension-- +:GovernorPreventLateQuorum-setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum.setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-_setLateQuorumVoteExtension: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-[`GovernorPreventLateQuorum._setLateQuorumVoteExtension`]] +:xref-GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-_setLateQuorumVoteExtension-uint64- +:GovernorPreventLateQuorum-ProposalExtended: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-[`GovernorPreventLateQuorum.ProposalExtended`]] +:xref-GovernorPreventLateQuorum-ProposalExtended-uint256-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-ProposalExtended-uint256-uint64- +:GovernorPreventLateQuorum-LateQuorumVoteExtensionSet: pass:normal[xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-[`GovernorPreventLateQuorum.LateQuorumVoteExtensionSet`]] +:xref-GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64-: xref:governance.adoc#GovernorPreventLateQuorum-LateQuorumVoteExtensionSet-uint64-uint64- :GovernorProposalThreshold: pass:normal[xref:governance.adoc#GovernorProposalThreshold[`GovernorProposalThreshold`]] :xref-GovernorProposalThreshold: xref:governance.adoc#GovernorProposalThreshold :GovernorProposalThreshold-propose: pass:normal[xref:governance.adoc#GovernorProposalThreshold-propose-address---uint256---bytes---string-[`GovernorProposalThreshold.propose`]] @@ -484,10 +504,10 @@ :xref-GovernorTimelockControl-TimelockChange-address-address-: xref:governance.adoc#GovernorTimelockControl-TimelockChange-address-address- :GovernorVotes: pass:normal[xref:governance.adoc#GovernorVotes[`GovernorVotes`]] :xref-GovernorVotes: xref:governance.adoc#GovernorVotes -:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-ERC20Votes[`GovernorVotes.token`]] -:xref-GovernorVotes-token-contract-ERC20Votes: xref:governance.adoc#GovernorVotes-token-contract-ERC20Votes -:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-ERC20Votes-[`GovernorVotes.constructor`]] -:xref-GovernorVotes-constructor-contract-ERC20Votes-: xref:governance.adoc#GovernorVotes-constructor-contract-ERC20Votes- +:GovernorVotes-token: pass:normal[xref:governance.adoc#GovernorVotes-token-contract-IVotes[`GovernorVotes.token`]] +:xref-GovernorVotes-token-contract-IVotes: xref:governance.adoc#GovernorVotes-token-contract-IVotes +:GovernorVotes-constructor: pass:normal[xref:governance.adoc#GovernorVotes-constructor-contract-IVotes-[`GovernorVotes.constructor`]] +:xref-GovernorVotes-constructor-contract-IVotes-: xref:governance.adoc#GovernorVotes-constructor-contract-IVotes- :GovernorVotes-getVotes: pass:normal[xref:governance.adoc#GovernorVotes-getVotes-address-uint256-[`GovernorVotes.getVotes`]] :xref-GovernorVotes-getVotes-address-uint256-: xref:governance.adoc#GovernorVotes-getVotes-address-uint256- :GovernorVotesComp: pass:normal[xref:governance.adoc#GovernorVotesComp[`GovernorVotesComp`]] @@ -524,6 +544,52 @@ :xref-IGovernorTimelock-queue-address---uint256---bytes---bytes32-: xref:governance.adoc#IGovernorTimelock-queue-address---uint256---bytes---bytes32- :IGovernorTimelock-ProposalQueued: pass:normal[xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256-[`IGovernorTimelock.ProposalQueued`]] :xref-IGovernorTimelock-ProposalQueued-uint256-uint256-: xref:governance.adoc#IGovernorTimelock-ProposalQueued-uint256-uint256- +:IVotes: pass:normal[xref:governance.adoc#IVotes[`IVotes`]] +:xref-IVotes: xref:governance.adoc#IVotes +:IVotes-getVotes: pass:normal[xref:governance.adoc#IVotes-getVotes-address-[`IVotes.getVotes`]] +:xref-IVotes-getVotes-address-: xref:governance.adoc#IVotes-getVotes-address- +:IVotes-getPastVotes: pass:normal[xref:governance.adoc#IVotes-getPastVotes-address-uint256-[`IVotes.getPastVotes`]] +:xref-IVotes-getPastVotes-address-uint256-: xref:governance.adoc#IVotes-getPastVotes-address-uint256- +:IVotes-getPastTotalSupply: pass:normal[xref:governance.adoc#IVotes-getPastTotalSupply-uint256-[`IVotes.getPastTotalSupply`]] +:xref-IVotes-getPastTotalSupply-uint256-: xref:governance.adoc#IVotes-getPastTotalSupply-uint256- +:IVotes-delegates: pass:normal[xref:governance.adoc#IVotes-delegates-address-[`IVotes.delegates`]] +:xref-IVotes-delegates-address-: xref:governance.adoc#IVotes-delegates-address- +:IVotes-delegate: pass:normal[xref:governance.adoc#IVotes-delegate-address-[`IVotes.delegate`]] +:xref-IVotes-delegate-address-: xref:governance.adoc#IVotes-delegate-address- +:IVotes-delegateBySig: pass:normal[xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`IVotes.delegateBySig`]] +:xref-IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#IVotes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:IVotes-DelegateChanged: pass:normal[xref:governance.adoc#IVotes-DelegateChanged-address-address-address-[`IVotes.DelegateChanged`]] +:xref-IVotes-DelegateChanged-address-address-address-: xref:governance.adoc#IVotes-DelegateChanged-address-address-address- +:IVotes-DelegateVotesChanged: pass:normal[xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256-[`IVotes.DelegateVotesChanged`]] +:xref-IVotes-DelegateVotesChanged-address-uint256-uint256-: xref:governance.adoc#IVotes-DelegateVotesChanged-address-uint256-uint256- +:Votes: pass:normal[xref:governance.adoc#Votes[`Votes`]] +:xref-Votes: xref:governance.adoc#Votes +:Votes-getVotes: pass:normal[xref:governance.adoc#Votes-getVotes-address-[`Votes.getVotes`]] +:xref-Votes-getVotes-address-: xref:governance.adoc#Votes-getVotes-address- +:Votes-getPastVotes: pass:normal[xref:governance.adoc#Votes-getPastVotes-address-uint256-[`Votes.getPastVotes`]] +:xref-Votes-getPastVotes-address-uint256-: xref:governance.adoc#Votes-getPastVotes-address-uint256- +:Votes-getPastTotalSupply: pass:normal[xref:governance.adoc#Votes-getPastTotalSupply-uint256-[`Votes.getPastTotalSupply`]] +:xref-Votes-getPastTotalSupply-uint256-: xref:governance.adoc#Votes-getPastTotalSupply-uint256- +:Votes-_getTotalSupply: pass:normal[xref:governance.adoc#Votes-_getTotalSupply--[`Votes._getTotalSupply`]] +:xref-Votes-_getTotalSupply--: xref:governance.adoc#Votes-_getTotalSupply-- +:Votes-delegates: pass:normal[xref:governance.adoc#Votes-delegates-address-[`Votes.delegates`]] +:xref-Votes-delegates-address-: xref:governance.adoc#Votes-delegates-address- +:Votes-delegate: pass:normal[xref:governance.adoc#Votes-delegate-address-[`Votes.delegate`]] +:xref-Votes-delegate-address-: xref:governance.adoc#Votes-delegate-address- +:Votes-delegateBySig: pass:normal[xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-[`Votes.delegateBySig`]] +:xref-Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32-: xref:governance.adoc#Votes-delegateBySig-address-uint256-uint256-uint8-bytes32-bytes32- +:Votes-_delegate: pass:normal[xref:governance.adoc#Votes-_delegate-address-address-[`Votes._delegate`]] +:xref-Votes-_delegate-address-address-: xref:governance.adoc#Votes-_delegate-address-address- +:Votes-_transferVotingUnits: pass:normal[xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256-[`Votes._transferVotingUnits`]] +:xref-Votes-_transferVotingUnits-address-address-uint256-: xref:governance.adoc#Votes-_transferVotingUnits-address-address-uint256- +:Votes-_useNonce: pass:normal[xref:governance.adoc#Votes-_useNonce-address-[`Votes._useNonce`]] +:xref-Votes-_useNonce-address-: xref:governance.adoc#Votes-_useNonce-address- +:Votes-nonces: pass:normal[xref:governance.adoc#Votes-nonces-address-[`Votes.nonces`]] +:xref-Votes-nonces-address-: xref:governance.adoc#Votes-nonces-address- +:Votes-DOMAIN_SEPARATOR: pass:normal[xref:governance.adoc#Votes-DOMAIN_SEPARATOR--[`Votes.DOMAIN_SEPARATOR`]] +:xref-Votes-DOMAIN_SEPARATOR--: xref:governance.adoc#Votes-DOMAIN_SEPARATOR-- +:Votes-_getVotingUnits: pass:normal[xref:governance.adoc#Votes-_getVotingUnits-address-[`Votes._getVotingUnits`]] +:xref-Votes-_getVotingUnits-address-: xref:governance.adoc#Votes-_getVotingUnits-address- :IERC1271: pass:normal[xref:interfaces.adoc#IERC1271[`IERC1271`]] :xref-IERC1271: xref:interfaces.adoc#IERC1271 :IERC1271-isValidSignature: pass:normal[xref:interfaces.adoc#IERC1271-isValidSignature-bytes32-bytes-[`IERC1271.isValidSignature`]] @@ -566,6 +632,10 @@ :xref-IERC3156FlashLender-flashFee-address-uint256-: xref:interfaces.adoc#IERC3156FlashLender-flashFee-address-uint256- :IERC3156FlashLender-flashLoan: pass:normal[xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-[`IERC3156FlashLender.flashLoan`]] :xref-IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes-: xref:interfaces.adoc#IERC3156FlashLender-flashLoan-contract-IERC3156FlashBorrower-address-uint256-bytes- +:IERC1822Proxiable: pass:normal[xref:interfaces.adoc#IERC1822Proxiable[`IERC1822Proxiable`]] +:xref-IERC1822Proxiable: xref:interfaces.adoc#IERC1822Proxiable +:IERC1822Proxiable-proxiableUUID: pass:normal[xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID--[`IERC1822Proxiable.proxiableUUID`]] +:xref-IERC1822Proxiable-proxiableUUID--: xref:interfaces.adoc#IERC1822Proxiable-proxiableUUID-- :IERC2612: pass:normal[xref:interfaces.adoc#IERC2612[`IERC2612`]] :xref-IERC2612: xref:interfaces.adoc#IERC2612 :ERC2771Context: pass:normal[xref:metatx.adoc#ERC2771Context[`ERC2771Context`]] @@ -618,8 +688,8 @@ :xref-ERC1967Upgrade-_upgradeTo-address-: xref:proxy.adoc#ERC1967Upgrade-_upgradeTo-address- :ERC1967Upgrade-_upgradeToAndCall: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCall`]] :xref-ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool- -:ERC1967Upgrade-_upgradeToAndCallSecure: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallSecure`]] -:xref-ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallSecure-address-bytes-bool- +:ERC1967Upgrade-_upgradeToAndCallUUPS: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-[`ERC1967Upgrade._upgradeToAndCallUUPS`]] +:xref-ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-: xref:proxy.adoc#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool- :ERC1967Upgrade-_getAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_getAdmin--[`ERC1967Upgrade._getAdmin`]] :xref-ERC1967Upgrade-_getAdmin--: xref:proxy.adoc#ERC1967Upgrade-_getAdmin-- :ERC1967Upgrade-_changeAdmin: pass:normal[xref:proxy.adoc#ERC1967Upgrade-_changeAdmin-address-[`ERC1967Upgrade._changeAdmin`]] @@ -714,6 +784,10 @@ :xref-UUPSUpgradeable: xref:proxy.adoc#UUPSUpgradeable :UUPSUpgradeable-onlyProxy: pass:normal[xref:proxy.adoc#UUPSUpgradeable-onlyProxy--[`UUPSUpgradeable.onlyProxy`]] :xref-UUPSUpgradeable-onlyProxy--: xref:proxy.adoc#UUPSUpgradeable-onlyProxy-- +:UUPSUpgradeable-notDelegated: pass:normal[xref:proxy.adoc#UUPSUpgradeable-notDelegated--[`UUPSUpgradeable.notDelegated`]] +:xref-UUPSUpgradeable-notDelegated--: xref:proxy.adoc#UUPSUpgradeable-notDelegated-- +:UUPSUpgradeable-proxiableUUID: pass:normal[xref:proxy.adoc#UUPSUpgradeable-proxiableUUID--[`UUPSUpgradeable.proxiableUUID`]] +:xref-UUPSUpgradeable-proxiableUUID--: xref:proxy.adoc#UUPSUpgradeable-proxiableUUID-- :UUPSUpgradeable-upgradeTo: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address-[`UUPSUpgradeable.upgradeTo`]] :xref-UUPSUpgradeable-upgradeTo-address-: xref:proxy.adoc#UUPSUpgradeable-upgradeTo-address- :UUPSUpgradeable-upgradeToAndCall: pass:normal[xref:proxy.adoc#UUPSUpgradeable-upgradeToAndCall-address-bytes-[`UUPSUpgradeable.upgradeToAndCall`]] @@ -782,6 +856,26 @@ :xref-Arrays: xref:utils.adoc#Arrays :Arrays-findUpperBound: pass:normal[xref:utils.adoc#Arrays-findUpperBound-uint256---uint256-[`Arrays.findUpperBound`]] :xref-Arrays-findUpperBound-uint256---uint256-: xref:utils.adoc#Arrays-findUpperBound-uint256---uint256- +:Base64: pass:normal[xref:utils.adoc#Base64[`Base64`]] +:xref-Base64: xref:utils.adoc#Base64 +:Base64-_TABLE: pass:normal[xref:utils.adoc#Base64-_TABLE-string[`Base64._TABLE`]] +:xref-Base64-_TABLE-string: xref:utils.adoc#Base64-_TABLE-string +:Base64-encode: pass:normal[xref:utils.adoc#Base64-encode-bytes-[`Base64.encode`]] +:xref-Base64-encode-bytes-: xref:utils.adoc#Base64-encode-bytes- +:Checkpoints: pass:normal[xref:utils.adoc#Checkpoints[`Checkpoints`]] +:xref-Checkpoints: xref:utils.adoc#Checkpoints +:Checkpoints-latest: pass:normal[xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History-[`Checkpoints.latest`]] +:xref-Checkpoints-latest-struct-Checkpoints-History-: xref:utils.adoc#Checkpoints-latest-struct-Checkpoints-History- +:Checkpoints-getAtBlock: pass:normal[xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-[`Checkpoints.getAtBlock`]] +:xref-Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-uint256- +:Checkpoints-push: pass:normal[xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-[`Checkpoints.push`]] +:xref-Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-: xref:utils.adoc#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256- +:Checkpoints-Checkpoint: pass:normal[xref:utils.adoc#Checkpoints-Checkpoint[`Checkpoints.Checkpoint`]] +:xref-Checkpoints-Checkpoint: xref:utils.adoc#Checkpoints-Checkpoint +:Checkpoints-History: pass:normal[xref:utils.adoc#Checkpoints-History[`Checkpoints.History`]] +:xref-Checkpoints-History: xref:utils.adoc#Checkpoints-History :Context: pass:normal[xref:utils.adoc#Context[`Context`]] :xref-Context: xref:utils.adoc#Context :Context-_msgSender: pass:normal[xref:utils.adoc#Context-_msgSender--[`Context._msgSender`]] @@ -1078,6 +1172,16 @@ :xref-SafeMath-div-uint256-uint256-string-: xref:utils.adoc#SafeMath-div-uint256-uint256-string- :SafeMath-mod: pass:normal[xref:utils.adoc#SafeMath-mod-uint256-uint256-string-[`SafeMath.mod`]] :xref-SafeMath-mod-uint256-uint256-string-: xref:utils.adoc#SafeMath-mod-uint256-uint256-string- +:SignedMath: pass:normal[xref:utils.adoc#SignedMath[`SignedMath`]] +:xref-SignedMath: xref:utils.adoc#SignedMath +:SignedMath-max: pass:normal[xref:utils.adoc#SignedMath-max-int256-int256-[`SignedMath.max`]] +:xref-SignedMath-max-int256-int256-: xref:utils.adoc#SignedMath-max-int256-int256- +:SignedMath-min: pass:normal[xref:utils.adoc#SignedMath-min-int256-int256-[`SignedMath.min`]] +:xref-SignedMath-min-int256-int256-: xref:utils.adoc#SignedMath-min-int256-int256- +:SignedMath-average: pass:normal[xref:utils.adoc#SignedMath-average-int256-int256-[`SignedMath.average`]] +:xref-SignedMath-average-int256-int256-: xref:utils.adoc#SignedMath-average-int256-int256- +:SignedMath-abs: pass:normal[xref:utils.adoc#SignedMath-abs-int256-[`SignedMath.abs`]] +:xref-SignedMath-abs-int256-: xref:utils.adoc#SignedMath-abs-int256- :SignedSafeMath: pass:normal[xref:utils.adoc#SignedSafeMath[`SignedSafeMath`]] :xref-SignedSafeMath: xref:utils.adoc#SignedSafeMath :SignedSafeMath-mul: pass:normal[xref:utils.adoc#SignedSafeMath-mul-int256-int256-[`SignedSafeMath.mul`]] @@ -1256,26 +1360,6 @@ :xref-IERC1155MetadataURI: xref:token/ERC1155.adoc#IERC1155MetadataURI :IERC1155MetadataURI-uri: pass:normal[xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256-[`IERC1155MetadataURI.uri`]] :xref-IERC1155MetadataURI-uri-uint256-: xref:token/ERC1155.adoc#IERC1155MetadataURI-uri-uint256- -:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] -:xref-ERC1155PresetMinterPauser: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser -:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] -:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 -:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] -:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 -:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] -:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-constructor-string- -:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] -:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- -:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] -:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- -:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] -:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-pause-- -:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] -:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-unpause-- -:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] -:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-supportsInterface-bytes4- -:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] -:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- :ERC1155Holder: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder[`ERC1155Holder`]] :xref-ERC1155Holder: xref:token/ERC1155.adoc#ERC1155Holder :ERC1155Holder-onERC1155Received: pass:normal[xref:token/ERC1155.adoc#ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-[`ERC1155Holder.onERC1155Received`]] @@ -1320,6 +1404,8 @@ :xref-ERC20-_burn-address-uint256-: xref:token/ERC20.adoc#ERC20-_burn-address-uint256- :ERC20-_approve: pass:normal[xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256-[`ERC20._approve`]] :xref-ERC20-_approve-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_approve-address-address-uint256- +:ERC20-_spendAllowance: pass:normal[xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256-[`ERC20._spendAllowance`]] +:xref-ERC20-_spendAllowance-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_spendAllowance-address-address-uint256- :ERC20-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256-[`ERC20._beforeTokenTransfer`]] :xref-ERC20-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20-_beforeTokenTransfer-address-address-uint256- :ERC20-_afterTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20-_afterTokenTransfer-address-address-uint256-[`ERC20._afterTokenTransfer`]] @@ -1412,10 +1498,6 @@ :xref-ERC20Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20Votes-_afterTokenTransfer-address-address-uint256- :ERC20Votes-_delegate: pass:normal[xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address-[`ERC20Votes._delegate`]] :xref-ERC20Votes-_delegate-address-address-: xref:token/ERC20.adoc#ERC20Votes-_delegate-address-address- -:ERC20Votes-DelegateChanged: pass:normal[xref:token/ERC20.adoc#ERC20Votes-DelegateChanged-address-address-address-[`ERC20Votes.DelegateChanged`]] -:xref-ERC20Votes-DelegateChanged-address-address-address-: xref:token/ERC20.adoc#ERC20Votes-DelegateChanged-address-address-address- -:ERC20Votes-DelegateVotesChanged: pass:normal[xref:token/ERC20.adoc#ERC20Votes-DelegateVotesChanged-address-uint256-uint256-[`ERC20Votes.DelegateVotesChanged`]] -:xref-ERC20Votes-DelegateVotesChanged-address-uint256-uint256-: xref:token/ERC20.adoc#ERC20Votes-DelegateVotesChanged-address-uint256-uint256- :ERC20Votes-Checkpoint: pass:normal[xref:token/ERC20.adoc#ERC20Votes-Checkpoint[`ERC20Votes.Checkpoint`]] :xref-ERC20Votes-Checkpoint: xref:token/ERC20.adoc#ERC20Votes-Checkpoint :ERC20VotesComp: pass:normal[xref:token/ERC20.adoc#ERC20VotesComp[`ERC20VotesComp`]] @@ -1466,26 +1548,6 @@ :xref-IERC20Permit-nonces-address-: xref:token/ERC20.adoc#IERC20Permit-nonces-address- :IERC20Permit-DOMAIN_SEPARATOR: pass:normal[xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR--[`IERC20Permit.DOMAIN_SEPARATOR`]] :xref-IERC20Permit-DOMAIN_SEPARATOR--: xref:token/ERC20.adoc#IERC20Permit-DOMAIN_SEPARATOR-- -:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20.adoc#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] -:xref-ERC20PresetFixedSupply: xref:token/ERC20.adoc#ERC20PresetFixedSupply -:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20.adoc#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] -:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20.adoc#ERC20PresetFixedSupply-constructor-string-string-uint256-address- -:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] -:xref-ERC20PresetMinterPauser: xref:token/ERC20.adoc#ERC20PresetMinterPauser -:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] -:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20.adoc#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 -:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] -:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20.adoc#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 -:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] -:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-constructor-string-string- -:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] -:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-mint-address-uint256- -:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] -:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20.adoc#ERC20PresetMinterPauser-pause-- -:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] -:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20.adoc#ERC20PresetMinterPauser-unpause-- -:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20.adoc#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] -:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20.adoc#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- :SafeERC20: pass:normal[xref:token/ERC20.adoc#SafeERC20[`SafeERC20`]] :xref-SafeERC20: xref:token/ERC20.adoc#SafeERC20 :SafeERC20-safeTransfer: pass:normal[xref:token/ERC20.adoc#SafeERC20-safeTransfer-contract-IERC20-address-uint256-[`SafeERC20.safeTransfer`]] @@ -1564,6 +1626,8 @@ :xref-ERC721-_setApprovalForAll-address-address-bool-: xref:token/ERC721.adoc#ERC721-_setApprovalForAll-address-address-bool- :ERC721-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256-[`ERC721._beforeTokenTransfer`]] :xref-ERC721-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_beforeTokenTransfer-address-address-uint256- +:ERC721-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256-[`ERC721._afterTokenTransfer`]] +:xref-ERC721-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721-_afterTokenTransfer-address-address-uint256- :IERC721: pass:normal[xref:token/ERC721.adoc#IERC721[`IERC721`]] :xref-IERC721: xref:token/ERC721.adoc#IERC721 :IERC721-balanceOf: pass:normal[xref:token/ERC721.adoc#IERC721-balanceOf-address-[`IERC721.balanceOf`]] @@ -1614,6 +1678,12 @@ :xref-ERC721Pausable: xref:token/ERC721.adoc#ERC721Pausable :ERC721Pausable-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256-[`ERC721Pausable._beforeTokenTransfer`]] :xref-ERC721Pausable-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Pausable-_beforeTokenTransfer-address-address-uint256- +:ERC721Royalty: pass:normal[xref:token/ERC721.adoc#ERC721Royalty[`ERC721Royalty`]] +:xref-ERC721Royalty: xref:token/ERC721.adoc#ERC721Royalty +:ERC721Royalty-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4-[`ERC721Royalty.supportsInterface`]] +:xref-ERC721Royalty-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721Royalty-supportsInterface-bytes4- +:ERC721Royalty-_burn: pass:normal[xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256-[`ERC721Royalty._burn`]] +:xref-ERC721Royalty-_burn-uint256-: xref:token/ERC721.adoc#ERC721Royalty-_burn-uint256- :ERC721URIStorage: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage[`ERC721URIStorage`]] :xref-ERC721URIStorage: xref:token/ERC721.adoc#ERC721URIStorage :ERC721URIStorage-tokenURI: pass:normal[xref:token/ERC721.adoc#ERC721URIStorage-tokenURI-uint256-[`ERC721URIStorage.tokenURI`]] @@ -1638,26 +1708,12 @@ :xref-IERC721Metadata-symbol--: xref:token/ERC721.adoc#IERC721Metadata-symbol-- :IERC721Metadata-tokenURI: pass:normal[xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256-[`IERC721Metadata.tokenURI`]] :xref-IERC721Metadata-tokenURI-uint256-: xref:token/ERC721.adoc#IERC721Metadata-tokenURI-uint256- -:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] -:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId -:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] -:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 -:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] -:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 -:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] -:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-constructor-string-string-string- -:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] -:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_baseURI-- -:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] -:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-mint-address- -:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] -:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-pause-- -:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] -:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-unpause-- -:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] -:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- -:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] -:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721.adoc#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- +:ERC721Votes: pass:normal[xref:token/ERC721.adoc#ERC721Votes[`ERC721Votes`]] +:xref-ERC721Votes: xref:token/ERC721.adoc#ERC721Votes +:ERC721Votes-_afterTokenTransfer: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256-[`ERC721Votes._afterTokenTransfer`]] +:xref-ERC721Votes-_afterTokenTransfer-address-address-uint256-: xref:token/ERC721.adoc#ERC721Votes-_afterTokenTransfer-address-address-uint256- +:ERC721Votes-_getVotingUnits: pass:normal[xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address-[`ERC721Votes._getVotingUnits`]] +:xref-ERC721Votes-_getVotingUnits-address-: xref:token/ERC721.adoc#ERC721Votes-_getVotingUnits-address- :ERC721Holder: pass:normal[xref:token/ERC721.adoc#ERC721Holder[`ERC721Holder`]] :xref-ERC721Holder: xref:token/ERC721.adoc#ERC721Holder :ERC721Holder-onERC721Received: pass:normal[xref:token/ERC721.adoc#ERC721Holder-onERC721Received-address-address-uint256-bytes-[`ERC721Holder.onERC721Received`]] @@ -1714,6 +1770,8 @@ :xref-ERC777-_burn-address-uint256-bytes-bytes-: xref:token/ERC777.adoc#ERC777-_burn-address-uint256-bytes-bytes- :ERC777-_approve: pass:normal[xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256-[`ERC777._approve`]] :xref-ERC777-_approve-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_approve-address-address-uint256- +:ERC777-_spendAllowance: pass:normal[xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256-[`ERC777._spendAllowance`]] +:xref-ERC777-_spendAllowance-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_spendAllowance-address-address-uint256- :ERC777-_beforeTokenTransfer: pass:normal[xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256-[`ERC777._beforeTokenTransfer`]] :xref-ERC777-_beforeTokenTransfer-address-address-address-uint256-: xref:token/ERC777.adoc#ERC777-_beforeTokenTransfer-address-address-address-uint256- :IERC777: pass:normal[xref:token/ERC777.adoc#IERC777[`IERC777`]] @@ -1766,6 +1824,84 @@ :xref-ERC777PresetFixedSupply: xref:token/ERC777.adoc#ERC777PresetFixedSupply :ERC777PresetFixedSupply-constructor: pass:normal[xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-[`ERC777PresetFixedSupply.constructor`]] :xref-ERC777PresetFixedSupply-constructor-string-string-address---uint256-address-: xref:token/ERC777.adoc#ERC777PresetFixedSupply-constructor-string-string-address---uint256-address- +:ERC2981: pass:normal[xref:token/common.adoc#ERC2981[`ERC2981`]] +:xref-ERC2981: xref:token/common.adoc#ERC2981 +:ERC2981-supportsInterface: pass:normal[xref:token/common.adoc#ERC2981-supportsInterface-bytes4-[`ERC2981.supportsInterface`]] +:xref-ERC2981-supportsInterface-bytes4-: xref:token/common.adoc#ERC2981-supportsInterface-bytes4- +:ERC2981-royaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256-[`ERC2981.royaltyInfo`]] +:xref-ERC2981-royaltyInfo-uint256-uint256-: xref:token/common.adoc#ERC2981-royaltyInfo-uint256-uint256- +:ERC2981-_feeDenominator: pass:normal[xref:token/common.adoc#ERC2981-_feeDenominator--[`ERC2981._feeDenominator`]] +:xref-ERC2981-_feeDenominator--: xref:token/common.adoc#ERC2981-_feeDenominator-- +:ERC2981-_setDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96-[`ERC2981._setDefaultRoyalty`]] +:xref-ERC2981-_setDefaultRoyalty-address-uint96-: xref:token/common.adoc#ERC2981-_setDefaultRoyalty-address-uint96- +:ERC2981-_deleteDefaultRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty--[`ERC2981._deleteDefaultRoyalty`]] +:xref-ERC2981-_deleteDefaultRoyalty--: xref:token/common.adoc#ERC2981-_deleteDefaultRoyalty-- +:ERC2981-_setTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96-[`ERC2981._setTokenRoyalty`]] +:xref-ERC2981-_setTokenRoyalty-uint256-address-uint96-: xref:token/common.adoc#ERC2981-_setTokenRoyalty-uint256-address-uint96- +:ERC2981-_resetTokenRoyalty: pass:normal[xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256-[`ERC2981._resetTokenRoyalty`]] +:xref-ERC2981-_resetTokenRoyalty-uint256-: xref:token/common.adoc#ERC2981-_resetTokenRoyalty-uint256- +:ERC2981-RoyaltyInfo: pass:normal[xref:token/common.adoc#ERC2981-RoyaltyInfo[`ERC2981.RoyaltyInfo`]] +:xref-ERC2981-RoyaltyInfo: xref:token/common.adoc#ERC2981-RoyaltyInfo +:ERC1155PresetMinterPauser: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser[`ERC1155PresetMinterPauser`]] +:xref-ERC1155PresetMinterPauser: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser +:ERC1155PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32[`ERC1155PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC1155PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC1155PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC1155PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC1155PresetMinterPauser-constructor: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string-[`ERC1155PresetMinterPauser.constructor`]] +:xref-ERC1155PresetMinterPauser-constructor-string-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-constructor-string- +:ERC1155PresetMinterPauser-mint: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-[`ERC1155PresetMinterPauser.mint`]] +:xref-ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mint-address-uint256-uint256-bytes- +:ERC1155PresetMinterPauser-mintBatch: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser.mintBatch`]] +:xref-ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-mintBatch-address-uint256---uint256---bytes- +:ERC1155PresetMinterPauser-pause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause--[`ERC1155PresetMinterPauser.pause`]] +:xref-ERC1155PresetMinterPauser-pause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-pause-- +:ERC1155PresetMinterPauser-unpause: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause--[`ERC1155PresetMinterPauser.unpause`]] +:xref-ERC1155PresetMinterPauser-unpause--: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-unpause-- +:ERC1155PresetMinterPauser-supportsInterface: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4-[`ERC1155PresetMinterPauser.supportsInterface`]] +:xref-ERC1155PresetMinterPauser-supportsInterface-bytes4-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-supportsInterface-bytes4- +:ERC1155PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-[`ERC1155PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes-: xref:token/ERC1155/presets.md#ERC1155PresetMinterPauser-_beforeTokenTransfer-address-address-address-uint256---uint256---bytes- +:ERC20PresetFixedSupply: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply[`ERC20PresetFixedSupply`]] +:xref-ERC20PresetFixedSupply: xref:token/ERC20/presets.md#ERC20PresetFixedSupply +:ERC20PresetFixedSupply-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address-[`ERC20PresetFixedSupply.constructor`]] +:xref-ERC20PresetFixedSupply-constructor-string-string-uint256-address-: xref:token/ERC20/presets.md#ERC20PresetFixedSupply-constructor-string-string-uint256-address- +:ERC20PresetMinterPauser: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser[`ERC20PresetMinterPauser`]] +:xref-ERC20PresetMinterPauser: xref:token/ERC20/presets.md#ERC20PresetMinterPauser +:ERC20PresetMinterPauser-MINTER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32[`ERC20PresetMinterPauser.MINTER_ROLE`]] +:xref-ERC20PresetMinterPauser-MINTER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-MINTER_ROLE-bytes32 +:ERC20PresetMinterPauser-PAUSER_ROLE: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32[`ERC20PresetMinterPauser.PAUSER_ROLE`]] +:xref-ERC20PresetMinterPauser-PAUSER_ROLE-bytes32: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-PAUSER_ROLE-bytes32 +:ERC20PresetMinterPauser-constructor: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string-[`ERC20PresetMinterPauser.constructor`]] +:xref-ERC20PresetMinterPauser-constructor-string-string-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-constructor-string-string- +:ERC20PresetMinterPauser-mint: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256-[`ERC20PresetMinterPauser.mint`]] +:xref-ERC20PresetMinterPauser-mint-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-mint-address-uint256- +:ERC20PresetMinterPauser-pause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause--[`ERC20PresetMinterPauser.pause`]] +:xref-ERC20PresetMinterPauser-pause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-pause-- +:ERC20PresetMinterPauser-unpause: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause--[`ERC20PresetMinterPauser.unpause`]] +:xref-ERC20PresetMinterPauser-unpause--: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-unpause-- +:ERC20PresetMinterPauser-_beforeTokenTransfer: pass:normal[xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-[`ERC20PresetMinterPauser._beforeTokenTransfer`]] +:xref-ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC20/presets.md#ERC20PresetMinterPauser-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId[`ERC721PresetMinterPauserAutoId`]] +:xref-ERC721PresetMinterPauserAutoId: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId +:ERC721PresetMinterPauserAutoId-MINTER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.MINTER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-MINTER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-PAUSER_ROLE: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32[`ERC721PresetMinterPauserAutoId.PAUSER_ROLE`]] +:xref-ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-PAUSER_ROLE-bytes32 +:ERC721PresetMinterPauserAutoId-constructor: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string-[`ERC721PresetMinterPauserAutoId.constructor`]] +:xref-ERC721PresetMinterPauserAutoId-constructor-string-string-string-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-constructor-string-string-string- +:ERC721PresetMinterPauserAutoId-_baseURI: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI--[`ERC721PresetMinterPauserAutoId._baseURI`]] +:xref-ERC721PresetMinterPauserAutoId-_baseURI--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_baseURI-- +:ERC721PresetMinterPauserAutoId-mint: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address-[`ERC721PresetMinterPauserAutoId.mint`]] +:xref-ERC721PresetMinterPauserAutoId-mint-address-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-mint-address- +:ERC721PresetMinterPauserAutoId-pause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause--[`ERC721PresetMinterPauserAutoId.pause`]] +:xref-ERC721PresetMinterPauserAutoId-pause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-pause-- +:ERC721PresetMinterPauserAutoId-unpause: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause--[`ERC721PresetMinterPauserAutoId.unpause`]] +:xref-ERC721PresetMinterPauserAutoId-unpause--: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-unpause-- +:ERC721PresetMinterPauserAutoId-_beforeTokenTransfer: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-[`ERC721PresetMinterPauserAutoId._beforeTokenTransfer`]] +:xref-ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-_beforeTokenTransfer-address-address-uint256- +:ERC721PresetMinterPauserAutoId-supportsInterface: pass:normal[xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-[`ERC721PresetMinterPauserAutoId.supportsInterface`]] +:xref-ERC721PresetMinterPauserAutoId-supportsInterface-bytes4-: xref:token/ERC721/presets.md#ERC721PresetMinterPauserAutoId-supportsInterface-bytes4- = Utilities [.readme-notice] @@ -1773,7 +1909,7 @@ NOTE: This document is better viewed at https://docs.openzeppelin.com/contracts/ Miscellaneous contracts and libraries containing utility functions you can use to improve security, work with new data types, or safely use low-level primitives. -The {Address}, {Arrays} and {Strings} libraries provide more operations related to these native data types, while {SafeCast} adds ways to safely convert between the different signed and unsigned numeric types. +The {Address}, {Arrays}, {Base64} and {Strings} libraries provide more operations related to these native data types, while {SafeCast} adds ways to safely convert between the different signed and unsigned numeric types. {Multicall} provides a function to batch together multiple calls in a single external call. For new data types: @@ -1801,7 +1937,7 @@ Finally, {Create2} contains all necessary utilities to safely use the https://bl [.contract] [[Math]] -=== `++Math++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/math/Math.sol[{github-icon},role=heading-link] +=== `++Math++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/math/Math.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -1854,6 +1990,64 @@ of rounding down. +:SignedMath: pass:normal[xref:#SignedMath[`++SignedMath++`]] +:max: pass:normal[xref:#SignedMath-max-int256-int256-[`++max++`]] +:min: pass:normal[xref:#SignedMath-min-int256-int256-[`++min++`]] +:average: pass:normal[xref:#SignedMath-average-int256-int256-[`++average++`]] +:abs: pass:normal[xref:#SignedMath-abs-int256-[`++abs++`]] + +[.contract] +[[SignedMath]] +=== `++SignedMath++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/math/SignedMath.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@openzeppelin/contracts/utils/math/SignedMath.sol"; +``` + +Standard signed math utilities missing in the Solidity language. + + +[.contract-index] +.Functions +-- +* {xref-SignedMath-max-int256-int256-}[`++max(a, b)++`] +* {xref-SignedMath-min-int256-int256-}[`++min(a, b)++`] +* {xref-SignedMath-average-int256-int256-}[`++average(a, b)++`] +* {xref-SignedMath-abs-int256-}[`++abs(n)++`] + +-- + + + +[.contract-item] +[[SignedMath-max-int256-int256-]] +==== `[.contract-item-name]#++max++#++(int256 a, int256 b) → int256++` [.item-kind]#internal# + +Returns the largest of two signed numbers. + +[.contract-item] +[[SignedMath-min-int256-int256-]] +==== `[.contract-item-name]#++min++#++(int256 a, int256 b) → int256++` [.item-kind]#internal# + +Returns the smallest of two signed numbers. + +[.contract-item] +[[SignedMath-average-int256-int256-]] +==== `[.contract-item-name]#++average++#++(int256 a, int256 b) → int256++` [.item-kind]#internal# + +Returns the average of two signed numbers without overflow. +The result is rounded towards zero. + +[.contract-item] +[[SignedMath-abs-int256-]] +==== `[.contract-item-name]#++abs++#++(int256 n) → uint256++` [.item-kind]#internal# + +Returns the absolute unsigned value of a signed value. + + + + :SafeCast: pass:normal[xref:#SafeCast[`++SafeCast++`]] :toUint224: pass:normal[xref:#SafeCast-toUint224-uint256-[`++toUint224++`]] :toUint128: pass:normal[xref:#SafeCast-toUint128-uint256-[`++toUint128++`]] @@ -1872,7 +2066,7 @@ of rounding down. [.contract] [[SafeCast]] -=== `++SafeCast++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/math/SafeCast.sol[{github-icon},role=heading-link] +=== `++SafeCast++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/math/SafeCast.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2127,7 +2321,7 @@ Requirements: [.contract] [[SafeMath]] -=== `++SafeMath++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/math/SafeMath.sol[{github-icon},role=heading-link] +=== `++SafeMath++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/math/SafeMath.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2328,7 +2522,7 @@ Requirements: [.contract] [[SignedSafeMath]] -=== `++SignedSafeMath++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/math/SignedSafeMath.sol[{github-icon},role=heading-link] +=== `++SignedSafeMath++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/math/SignedSafeMath.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2424,7 +2618,7 @@ Requirements: [.contract] [[ECDSA]] -=== `++ECDSA++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/cryptography/ECDSA.sol[{github-icon},role=heading-link] +=== `++ECDSA++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/cryptography/ECDSA.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2574,7 +2768,7 @@ See {recover}. [.contract] [[SignatureChecker]] -=== `++SignatureChecker++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/cryptography/SignatureChecker.sol[{github-icon},role=heading-link] +=== `++SignatureChecker++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/cryptography/SignatureChecker.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2616,7 +2810,7 @@ change through time. It could return true at block N and false at block N+1 (or [.contract] [[MerkleProof]] -=== `++MerkleProof++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/cryptography/MerkleProof.sol[{github-icon},role=heading-link] +=== `++MerkleProof++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/cryptography/MerkleProof.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2672,7 +2866,7 @@ _Available since v4.4._ [.contract] [[EIP712]] -=== `++EIP712++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/cryptography/draft-EIP712.sol[{github-icon},role=heading-link] +=== `++EIP712++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/cryptography/draft-EIP712.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2759,7 +2953,7 @@ address signer = ECDSA.recover(digest, signature); [.contract] [[ConditionalEscrow]] -=== `++ConditionalEscrow++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/escrow/ConditionalEscrow.sol[{github-icon},role=heading-link] +=== `++ConditionalEscrow++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/escrow/ConditionalEscrow.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2836,7 +3030,7 @@ implemented by derived contracts. [.contract] [[Escrow]] -=== `++Escrow++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/escrow/Escrow.sol[{github-icon},role=heading-link] +=== `++Escrow++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/escrow/Escrow.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -2944,7 +3138,7 @@ checks-effects-interactions pattern or using {ReentrancyGuard}. [.contract] [[RefundEscrow]] -=== `++RefundEscrow++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/escrow/RefundEscrow.sol[{github-icon},role=heading-link] +=== `++RefundEscrow++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/escrow/RefundEscrow.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -3098,7 +3292,7 @@ Note that, in all cases, accounts simply _declare_ their interfaces, but they ar [.contract] [[IERC165]] -=== `++IERC165++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/introspection/IERC165.sol[{github-icon},role=heading-link] +=== `++IERC165++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/introspection/IERC165.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -3142,7 +3336,7 @@ This function call must use less than 30 000 gas. [.contract] [[ERC165]] -=== `++ERC165++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/introspection/ERC165.sol[{github-icon},role=heading-link] +=== `++ERC165++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/introspection/ERC165.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -3190,7 +3384,7 @@ See {IERC165-supportsInterface}. [.contract] [[ERC165Storage]] -=== `++ERC165Storage++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/introspection/ERC165Storage.sol[{github-icon},role=heading-link] +=== `++ERC165Storage++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/introspection/ERC165Storage.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -3250,7 +3444,7 @@ Requirements: [.contract] [[ERC165Checker]] -=== `++ERC165Checker++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/introspection/ERC165Checker.sol[{github-icon},role=heading-link] +=== `++ERC165Checker++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/introspection/ERC165Checker.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -3333,7 +3527,7 @@ See {IERC165-supportsInterface}. [.contract] [[IERC1820Registry]] -=== `++IERC1820Registry++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/introspection/IERC1820Registry.sol[{github-icon},role=heading-link] +=== `++IERC1820Registry++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/introspection/IERC1820Registry.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -3482,7 +3676,7 @@ https://eips.ethereum.org/EIPS/eip-1820#interface-name[section of the EIP]. [.contract] [[IERC1820Implementer]] -=== `++IERC1820Implementer++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/introspection/IERC1820Implementer.sol[{github-icon},role=heading-link] +=== `++IERC1820Implementer++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/introspection/IERC1820Implementer.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -3522,7 +3716,7 @@ See {IERC1820Registry-setInterfaceImplementer}. [.contract] [[ERC1820Implementer]] -=== `++ERC1820Implementer++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/introspection/ERC1820Implementer.sol[{github-icon},role=heading-link] +=== `++ERC1820Implementer++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/introspection/ERC1820Implementer.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -3580,7 +3774,7 @@ See {IERC1820Registry-setInterfaceImplementer} and [.contract] [[BitMaps]] -=== `++BitMaps++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/structs/BitMaps.sol[{github-icon},role=heading-link] +=== `++BitMaps++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/structs/BitMaps.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -3644,7 +3838,7 @@ Unsets the bit at `index`. [.contract] [[EnumerableMap]] -=== `++EnumerableMap++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/structs/EnumerableMap.sol[{github-icon},role=heading-link] +=== `++EnumerableMap++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/structs/EnumerableMap.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -3790,7 +3984,7 @@ message unnecessarily. For custom revert reasons use {tryGet}. [.contract] [[EnumerableSet]] -=== `++EnumerableSet++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/structs/EnumerableSet.sol[{github-icon},role=heading-link] +=== `++EnumerableSet++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/structs/EnumerableSet.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -4012,6 +4206,77 @@ uncallable if the set grows to a point where copying to memory consumes too much +:Checkpoints: pass:normal[xref:#Checkpoints[`++Checkpoints++`]] +:latest: pass:normal[xref:#Checkpoints-latest-struct-Checkpoints-History-[`++latest++`]] +:getAtBlock: pass:normal[xref:#Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-[`++getAtBlock++`]] +:push: pass:normal[xref:#Checkpoints-push-struct-Checkpoints-History-uint256-[`++push++`]] +:push: pass:normal[xref:#Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-[`++push++`]] +:Checkpoint: pass:normal[xref:#Checkpoints-Checkpoint[`++Checkpoint++`]] +:History: pass:normal[xref:#Checkpoints-History[`++History++`]] + +[.contract] +[[Checkpoints]] +=== `++Checkpoints++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/Checkpoints.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@openzeppelin/contracts/utils/Checkpoints.sol"; +``` + +This library defines the `History` struct, for checkpointing values as they change at different points in +time, and later looking up past values by block number. See {Votes} as an example. + +To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new +checkpoint for the current transaction block using the {push} function. + +_Available since v4.5._ + + +[.contract-index] +.Functions +-- +* {xref-Checkpoints-latest-struct-Checkpoints-History-}[`++latest(self)++`] +* {xref-Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-}[`++getAtBlock(self, blockNumber)++`] +* {xref-Checkpoints-push-struct-Checkpoints-History-uint256-}[`++push(self, value)++`] +* {xref-Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-}[`++push(self, op, delta)++`] + +-- + + + +[.contract-item] +[[Checkpoints-latest-struct-Checkpoints-History-]] +==== `[.contract-item-name]#++latest++#++(struct Checkpoints.History self) → uint256++` [.item-kind]#internal# + +Returns the value in the latest checkpoint, or zero if there are no checkpoints. + +[.contract-item] +[[Checkpoints-getAtBlock-struct-Checkpoints-History-uint256-]] +==== `[.contract-item-name]#++getAtBlock++#++(struct Checkpoints.History self, uint256 blockNumber) → uint256++` [.item-kind]#internal# + +Returns the value at a given block number. If a checkpoint is not available at that block, the closest one +before it is returned, or zero otherwise. + +[.contract-item] +[[Checkpoints-push-struct-Checkpoints-History-uint256-]] +==== `[.contract-item-name]#++push++#++(struct Checkpoints.History self, uint256 value) → uint256, uint256++` [.item-kind]#internal# + +Pushes a value onto a History so that it is stored as the checkpoint for the current block. + +Returns previous value and new value. + +[.contract-item] +[[Checkpoints-push-struct-Checkpoints-History-function--uint256-uint256--view-returns--uint256--uint256-]] +==== `[.contract-item-name]#++push++#++(struct Checkpoints.History self, function (uint256,uint256) view returns (uint256) op, uint256 delta) → uint256, uint256++` [.item-kind]#internal# + +Pushes a value onto a History, by updating the latest value using binary operation `op`. The new value will +be set to `op(latest, delta)`. + +Returns previous value and new value. + + + + == Libraries :Create2: pass:normal[xref:#Create2[`++Create2++`]] @@ -4021,7 +4286,7 @@ uncallable if the set grows to a point where copying to memory consumes too much [.contract] [[Create2]] -=== `++Create2++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/Create2.sol[{github-icon},role=heading-link] +=== `++Create2++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/Create2.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -4097,7 +4362,7 @@ Returns the address where a contract will be stored if deployed via {deploy} fro [.contract] [[Address]] -=== `++Address++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/Address.sol[{github-icon},role=heading-link] +=== `++Address++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/Address.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -4146,6 +4411,15 @@ types of addresses: - an address where a contract lived, but was destroyed ==== +[IMPORTANT] +==== +You shouldn't rely on `isContract` to protect against flash loan attacks! + +Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets +like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract +constructor. +==== + [.contract-item] [[Address-sendValue-address-payable-uint256-]] ==== `[.contract-item-name]#++sendValue++#++(address payable recipient, uint256 amount)++` [.item-kind]#internal# @@ -4271,7 +4545,7 @@ _Available since v4.3._ [.contract] [[Arrays]] -=== `++Arrays++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/Arrays.sol[{github-icon},role=heading-link] +=== `++Arrays++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/Arrays.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -4305,6 +4579,42 @@ repeated elements. +:Base64: pass:normal[xref:#Base64[`++Base64++`]] +:_TABLE: pass:normal[xref:#Base64-_TABLE-string[`++_TABLE++`]] +:encode: pass:normal[xref:#Base64-encode-bytes-[`++encode++`]] + +[.contract] +[[Base64]] +=== `++Base64++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/Base64.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@openzeppelin/contracts/utils/Base64.sol"; +``` + +Provides a set of functions to operate with Base64 strings. + +_Available since v4.5._ + + +[.contract-index] +.Functions +-- +* {xref-Base64-encode-bytes-}[`++encode(data)++`] + +-- + + + +[.contract-item] +[[Base64-encode-bytes-]] +==== `[.contract-item-name]#++encode++#++(bytes data) → string++` [.item-kind]#internal# + +Converts a `bytes` to its Bytes64 `string` representation. + + + + :Counters: pass:normal[xref:#Counters[`++Counters++`]] :current: pass:normal[xref:#Counters-current-struct-Counters-Counter-[`++current++`]] :increment: pass:normal[xref:#Counters-increment-struct-Counters-Counter-[`++increment++`]] @@ -4314,7 +4624,7 @@ repeated elements. [.contract] [[Counters]] -=== `++Counters++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/Counters.sol[{github-icon},role=heading-link] +=== `++Counters++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/Counters.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -4373,7 +4683,7 @@ Include with `using Counters for Counters.Counter;` [.contract] [[Strings]] -=== `++Strings++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/Strings.sol[{github-icon},role=heading-link] +=== `++Strings++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/Strings.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -4427,7 +4737,7 @@ Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed [.contract] [[StorageSlot]] -=== `++StorageSlot++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/StorageSlot.sol[{github-icon},role=heading-link] +=== `++StorageSlot++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/StorageSlot.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity @@ -4504,7 +4814,7 @@ Returns an `Uint256Slot` with member `value` located at `slot`. [.contract] [[Multicall]] -=== `++Multicall++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.2/contracts/utils/Multicall.sol[{github-icon},role=heading-link] +=== `++Multicall++` link:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.5.0/contracts/utils/Multicall.sol[{github-icon},role=heading-link] [.hljs-theme-light.nopadding] ```solidity diff --git a/hardhat.config.js b/hardhat.config.js index aaa1ca036..1fbf856b2 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -3,7 +3,7 @@ // - COVERAGE: enable coverage report // - ENABLE_GAS_REPORT: enable gas report // - COMPILE_MODE: production modes enables optimizations (default: development) -// - COMPILE_VERSION: compiler version (default: 0.8.3) +// - COMPILE_VERSION: compiler version (default: 0.8.9) // - COINMARKETCAP: coinmarkercat api key for USD value in gas report const fs = require('fs'); @@ -33,7 +33,7 @@ const argv = require('yargs/yargs')() compiler: { alias: 'compileVersion', type: 'string', - default: '0.8.3', + default: '0.8.9', }, coinmarketcap: { alias: 'coinmarketcapApiKey', diff --git a/package-lock.json b/package-lock.json index c037cfe60..f31b2671d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "openzeppelin-solidity", - "version": "4.4.2", + "version": "4.5.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "openzeppelin-solidity", - "version": "4.4.2", + "version": "4.5.0", "license": "MIT", "bin": { "openzeppelin-contracts-migrate-imports": "scripts/migrate-imports.js" @@ -50,12 +50,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.14.5" + "@babel/highlight": "^7.16.0" }, "engines": { "node": ">=6.9.0" @@ -71,12 +71,12 @@ } }, "node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -147,9 +147,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz", - "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", + "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", "dev": true, "dependencies": { "regenerator-runtime": "^0.13.4" @@ -158,109 +158,6 @@ "node": ">=6.9.0" } }, - "node_modules/@codechecks/client": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/@codechecks/client/-/client-0.1.11.tgz", - "integrity": "sha512-dSIzHnGNcXxDZtnVQEXWQHXH2v9KrpnK4mDGDxdwSu3l00rOIVwJcttj0wzx0bC0Q6gs65VsQdZH4gkanLdXOA==", - "dev": true, - "peer": true, - "dependencies": { - "bluebird": "^3.5.3", - "chalk": "^2.4.2", - "commander": "^2.19.0", - "debug": "^4.1.1", - "execa": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "js-yaml": "^3.13.1", - "json5": "^2.1.0", - "lodash": "^4.17.11", - "marked": "^0.7.0", - "marked-terminal": "^3.3.0", - "mkdirp": "^0.5.1", - "ms": "^2.1.1", - "promise": "^8.0.2", - "request": "^2.88.0", - "request-promise": "^4.2.2", - "ts-essentials": "^1.0.2", - "ts-node": "^8.0.2", - "url-join": "^4.0.0" - }, - "bin": { - "codechecks": "dist/runner.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@codechecks/client/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@codechecks/client/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@codechecks/client/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@codechecks/client/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true, - "peer": true - }, - "node_modules/@codechecks/client/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@codechecks/client/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@ensdomains/address-encoder": { "version": "0.1.9", "resolved": "https://registry.npmjs.org/@ensdomains/address-encoder/-/address-encoder-0.1.9.tgz", @@ -309,9 +206,9 @@ } }, "node_modules/@ensdomains/ensjs/node_modules/ethers": { - "version": "5.4.7", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.4.7.tgz", - "integrity": "sha512-iZc5p2nqfWK1sj8RabwsPM28cr37Bpq7ehTQ5rWExBr2Y09Sn1lDKZOED26n+TsZMye7Y6mIgQ/1cwpSD8XZew==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.5.1.tgz", + "integrity": "sha512-RodEvUFZI+EmFcE6bwkuJqpCYHazdzeR1nMzg+YWQSmQEsNtfl1KHGfp/FWZYl48bI/g7cgBeP2IlPthjiVngw==", "dev": true, "funding": [ { @@ -324,36 +221,36 @@ } ], "dependencies": { - "@ethersproject/abi": "5.4.1", - "@ethersproject/abstract-provider": "5.4.1", - "@ethersproject/abstract-signer": "5.4.1", - "@ethersproject/address": "5.4.0", - "@ethersproject/base64": "5.4.0", - "@ethersproject/basex": "5.4.0", - "@ethersproject/bignumber": "5.4.2", - "@ethersproject/bytes": "5.4.0", - "@ethersproject/constants": "5.4.0", - "@ethersproject/contracts": "5.4.1", - "@ethersproject/hash": "5.4.0", - "@ethersproject/hdnode": "5.4.0", - "@ethersproject/json-wallets": "5.4.0", - "@ethersproject/keccak256": "5.4.0", - "@ethersproject/logger": "5.4.1", - "@ethersproject/networks": "5.4.2", - "@ethersproject/pbkdf2": "5.4.0", - "@ethersproject/properties": "5.4.1", - "@ethersproject/providers": "5.4.5", - "@ethersproject/random": "5.4.0", - "@ethersproject/rlp": "5.4.0", - "@ethersproject/sha2": "5.4.0", - "@ethersproject/signing-key": "5.4.0", - "@ethersproject/solidity": "5.4.0", - "@ethersproject/strings": "5.4.0", - "@ethersproject/transactions": "5.4.0", - "@ethersproject/units": "5.4.0", - "@ethersproject/wallet": "5.4.0", - "@ethersproject/web": "5.4.0", - "@ethersproject/wordlists": "5.4.0" + "@ethersproject/abi": "5.5.0", + "@ethersproject/abstract-provider": "5.5.1", + "@ethersproject/abstract-signer": "5.5.0", + "@ethersproject/address": "5.5.0", + "@ethersproject/base64": "5.5.0", + "@ethersproject/basex": "5.5.0", + "@ethersproject/bignumber": "5.5.0", + "@ethersproject/bytes": "5.5.0", + "@ethersproject/constants": "5.5.0", + "@ethersproject/contracts": "5.5.0", + "@ethersproject/hash": "5.5.0", + "@ethersproject/hdnode": "5.5.0", + "@ethersproject/json-wallets": "5.5.0", + "@ethersproject/keccak256": "5.5.0", + "@ethersproject/logger": "5.5.0", + "@ethersproject/networks": "5.5.0", + "@ethersproject/pbkdf2": "5.5.0", + "@ethersproject/properties": "5.5.0", + "@ethersproject/providers": "5.5.0", + "@ethersproject/random": "5.5.0", + "@ethersproject/rlp": "5.5.0", + "@ethersproject/sha2": "5.5.0", + "@ethersproject/signing-key": "5.5.0", + "@ethersproject/solidity": "5.5.0", + "@ethersproject/strings": "5.5.0", + "@ethersproject/transactions": "5.5.0", + "@ethersproject/units": "5.5.0", + "@ethersproject/wallet": "5.5.0", + "@ethersproject/web": "5.5.0", + "@ethersproject/wordlists": "5.5.0" } }, "node_modules/@ensdomains/resolver": { @@ -364,31 +261,30 @@ "dev": true }, "node_modules/@ethereumjs/block": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@ethereumjs/block/-/block-3.5.1.tgz", - "integrity": "sha512-MoY9bHKABOBK6BW0v1N1Oc0Cve4x/giX67M3TtrVBUsKQTj2eznLGKpydoitxWSZ+WgKKSVhfRMzbCGRwk7T5w==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/block/-/block-3.6.0.tgz", + "integrity": "sha512-dqLo1LtsLG+Oelu5S5tWUDG0pah3QUwV5TJZy2cm19BXDr4ka/S9XBSgao0i09gTcuPlovlHgcs6d7EZ37urjQ==", "dev": true, "dependencies": { - "@ethereumjs/common": "^2.5.0", - "@ethereumjs/tx": "^3.3.1", - "ethereumjs-util": "^7.1.1", - "merkle-patricia-tree": "^4.2.1" + "@ethereumjs/common": "^2.6.0", + "@ethereumjs/tx": "^3.4.0", + "ethereumjs-util": "^7.1.3", + "merkle-patricia-tree": "^4.2.2" } }, "node_modules/@ethereumjs/blockchain": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/@ethereumjs/blockchain/-/blockchain-5.4.2.tgz", - "integrity": "sha512-AOAAwz/lw2lciG9gf5wHi7M/qknraXXnLR66lYgbQ04qfyFC3ZE5x/5rLVm1Vu+kfJLlKrYZTmA0IbOkc7kvgw==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/blockchain/-/blockchain-5.5.1.tgz", + "integrity": "sha512-JS2jeKxl3tlaa5oXrZ8mGoVBCz6YqsGG350XVNtHAtNZXKk7pU3rH4xzF2ru42fksMMqzFLzKh9l4EQzmNWDqA==", "dev": true, "dependencies": { - "@ethereumjs/block": "^3.5.1", - "@ethereumjs/common": "^2.5.0", + "@ethereumjs/block": "^3.6.0", + "@ethereumjs/common": "^2.6.0", "@ethereumjs/ethash": "^1.1.0", "debug": "^2.2.0", - "ethereumjs-util": "^7.1.1", + "ethereumjs-util": "^7.1.3", "level-mem": "^5.0.1", "lru-cache": "^5.1.1", - "rlp": "^2.2.4", "semaphore-async-await": "^1.5.1" } }, @@ -408,13 +304,13 @@ "dev": true }, "node_modules/@ethereumjs/common": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", - "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.0.tgz", + "integrity": "sha512-Cq2qS0FTu6O2VU1sgg+WyU9Ps0M6j/BEMHN+hRaECXCV/r0aI78u4N6p52QW/BDVhwWZpCdrvG8X7NJdzlpNUA==", "dev": true, "dependencies": { "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.1" + "ethereumjs-util": "^7.1.3" } }, "node_modules/@ethereumjs/ethash": { @@ -440,34 +336,33 @@ } }, "node_modules/@ethereumjs/tx": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", - "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.4.0.tgz", + "integrity": "sha512-WWUwg1PdjHKZZxPPo274ZuPsJCWV3SqATrEKQP1n2DrVYVP1aZIYpo/mFaA0BDoE0tIQmBeimRCEA0Lgil+yYw==", "dev": true, "dependencies": { - "@ethereumjs/common": "^2.5.0", - "ethereumjs-util": "^7.1.2" + "@ethereumjs/common": "^2.6.0", + "ethereumjs-util": "^7.1.3" } }, "node_modules/@ethereumjs/vm": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/@ethereumjs/vm/-/vm-5.5.3.tgz", - "integrity": "sha512-0k5OreWnlgXYs54wohgO11jtGI05GDasj2EYxzuaStxTi15CS3vow5wGYELC1pG9xngE1F/mFmKi/f14XRuDow==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/vm/-/vm-5.6.0.tgz", + "integrity": "sha512-J2m/OgjjiGdWF2P9bj/4LnZQ1zRoZhY8mRNVw/N3tXliGI8ai1sI1mlDPkLpeUUM4vq54gH6n0ZlSpz8U/qlYQ==", "dev": true, "dependencies": { - "@ethereumjs/block": "^3.5.0", - "@ethereumjs/blockchain": "^5.4.1", - "@ethereumjs/common": "^2.5.0", - "@ethereumjs/tx": "^3.3.1", + "@ethereumjs/block": "^3.6.0", + "@ethereumjs/blockchain": "^5.5.0", + "@ethereumjs/common": "^2.6.0", + "@ethereumjs/tx": "^3.4.0", "async-eventemitter": "^0.2.4", "core-js-pure": "^3.0.1", "debug": "^2.2.0", - "ethereumjs-util": "^7.1.1", + "ethereumjs-util": "^7.1.3", "functional-red-black-tree": "^1.0.1", "mcl-wasm": "^0.7.1", - "merkle-patricia-tree": "^4.2.1", - "rustbn.js": "~0.2.0", - "util.promisify": "^1.0.1" + "merkle-patricia-tree": "^4.2.2", + "rustbn.js": "~0.2.0" } }, "node_modules/@ethereumjs/vm/node_modules/debug": { @@ -486,9 +381,9 @@ "dev": true }, "node_modules/@ethersproject/abi": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.4.1.tgz", - "integrity": "sha512-9mhbjUk76BiSluiiW4BaYyI58KSbDMMQpCLdsAR+RsT2GyATiNYxVv+pGWRrekmsIdY3I+hOqsYQSTkc8L/mcg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.5.0.tgz", + "integrity": "sha512-loW7I4AohP5KycATvc0MgujU6JyCHPqHdeoo9z3Nr9xEiNioxa65ccdm1+fsoJhkuhdRtfcL8cfyGamz2AxZ5w==", "dev": true, "funding": [ { @@ -501,21 +396,21 @@ } ], "dependencies": { - "@ethersproject/address": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/hash": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/strings": "^5.4.0" + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" } }, "node_modules/@ethersproject/abstract-provider": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.4.1.tgz", - "integrity": "sha512-3EedfKI3LVpjSKgAxoUaI+gB27frKsxzm+r21w9G60Ugk+3wVLQwhi1LsEJAKNV7WoZc8CIpNrATlL1QFABjtQ==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.5.1.tgz", + "integrity": "sha512-m+MA/ful6eKbxpr99xUYeRvLkfnlqzrF8SZ46d/xFB1A7ZVknYc/sXJG0RcufF52Qn2jeFj1hhcoQ7IXjNKUqg==", "dev": true, "funding": [ { @@ -528,19 +423,19 @@ } ], "dependencies": { - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/networks": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/transactions": "^5.4.0", - "@ethersproject/web": "^5.4.0" + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/networks": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/web": "^5.5.0" } }, "node_modules/@ethersproject/abstract-signer": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.4.1.tgz", - "integrity": "sha512-SkkFL5HVq1k4/25dM+NWP9MILgohJCgGv5xT5AcRruGz4ILpfHeBtO/y6j+Z3UN/PAjDeb4P7E51Yh8wcGNLGA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.5.0.tgz", + "integrity": "sha512-lj//7r250MXVLKI7sVarXAbZXbv9P50lgmJQGr2/is82EwEb8r7HrxsmMqAjTsztMYy7ohrIhGMIml+Gx4D3mA==", "dev": true, "funding": [ { @@ -553,17 +448,17 @@ } ], "dependencies": { - "@ethersproject/abstract-provider": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0" + "@ethersproject/abstract-provider": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0" } }, "node_modules/@ethersproject/address": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.4.0.tgz", - "integrity": "sha512-SD0VgOEkcACEG/C6xavlU1Hy3m5DGSXW3CUHkaaEHbAPPsgi0coP5oNPsxau8eTlZOk/bpa/hKeCNoK5IzVI2Q==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.5.0.tgz", + "integrity": "sha512-l4Nj0eWlTUh6ro5IbPTgbpT4wRbdH5l8CQf7icF7sb/SI3Nhd9Y9HzhonTSTi6CefI0necIw7LJqQPopPLZyWw==", "dev": true, "funding": [ { @@ -576,17 +471,17 @@ } ], "dependencies": { - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/rlp": "^5.4.0" + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/rlp": "^5.5.0" } }, "node_modules/@ethersproject/base64": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.4.0.tgz", - "integrity": "sha512-CjQw6E17QDSSC5jiM9YpF7N1aSCHmYGMt9bWD8PWv6YPMxjsys2/Q8xLrROKI3IWJ7sFfZ8B3flKDTM5wlWuZQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.5.0.tgz", + "integrity": "sha512-tdayUKhU1ljrlHzEWbStXazDpsx4eg1dBXUSI6+mHlYklOXoXF6lZvw8tnD6oVaWfnMxAgRSKROg3cVKtCcppA==", "dev": true, "funding": [ { @@ -599,13 +494,13 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.4.0" + "@ethersproject/bytes": "^5.5.0" } }, "node_modules/@ethersproject/basex": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.4.0.tgz", - "integrity": "sha512-J07+QCVJ7np2bcpxydFVf/CuYo9mZ7T73Pe7KQY4c1lRlrixMeblauMxHXD0MPwFmUHZIILDNViVkykFBZylbg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.5.0.tgz", + "integrity": "sha512-ZIodwhHpVJ0Y3hUCfUucmxKsWQA5TMnavp5j/UOuDdzZWzJlRmuOjcTMIGgHCYuZmHt36BfiSyQPSRskPxbfaQ==", "dev": true, "funding": [ { @@ -618,14 +513,14 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/properties": "^5.4.0" + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/properties": "^5.5.0" } }, "node_modules/@ethersproject/bignumber": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.4.2.tgz", - "integrity": "sha512-oIBDhsKy5bs7j36JlaTzFgNPaZjiNDOXsdSgSpXRucUl+UA6L/1YLlFeI3cPAoodcenzF4nxNPV13pcy7XbWjA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.5.0.tgz", + "integrity": "sha512-6Xytlwvy6Rn3U3gKEc1vP7nR92frHkv6wtVr95LFR3jREXiCPzdWxKQ1cx4JGQBXxcguAwjA8murlYN2TSiEbg==", "dev": true, "funding": [ { @@ -638,15 +533,15 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", "bn.js": "^4.11.9" } }, "node_modules/@ethersproject/bytes": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.4.0.tgz", - "integrity": "sha512-H60ceqgTHbhzOj4uRc/83SCN9d+BSUnOkrr2intevqdtEMO1JFVZ1XL84OEZV+QjV36OaZYxtnt4lGmxcGsPfA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.5.0.tgz", + "integrity": "sha512-ABvc7BHWhZU9PNM/tANm/Qx4ostPGadAuQzWTr3doklZOhDlmcBqclrQe/ZXUIj3K8wC28oYeuRa+A37tX9kog==", "dev": true, "funding": [ { @@ -659,13 +554,13 @@ } ], "dependencies": { - "@ethersproject/logger": "^5.4.0" + "@ethersproject/logger": "^5.5.0" } }, "node_modules/@ethersproject/constants": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.4.0.tgz", - "integrity": "sha512-tzjn6S7sj9+DIIeKTJLjK9WGN2Tj0P++Z8ONEIlZjyoTkBuODN+0VfhAyYksKi43l1Sx9tX2VlFfzjfmr5Wl3Q==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.5.0.tgz", + "integrity": "sha512-2MsRRVChkvMWR+GyMGY4N1sAX9Mt3J9KykCsgUFd/1mwS0UH1qw+Bv9k1UJb3X3YJYFco9H20pjSlOIfCG5HYQ==", "dev": true, "funding": [ { @@ -678,13 +573,13 @@ } ], "dependencies": { - "@ethersproject/bignumber": "^5.4.0" + "@ethersproject/bignumber": "^5.5.0" } }, "node_modules/@ethersproject/contracts": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.4.1.tgz", - "integrity": "sha512-m+z2ZgPy4pyR15Je//dUaymRUZq5MtDajF6GwFbGAVmKz/RF+DNIPwF0k5qEcL3wPGVqUjFg2/krlCRVTU4T5w==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.5.0.tgz", + "integrity": "sha512-2viY7NzyvJkh+Ug17v7g3/IJC8HqZBDcOjYARZLdzRxrfGlRgmYgl6xPRKVbEzy1dWKw/iv7chDcS83pg6cLxg==", "dev": true, "funding": [ { @@ -697,22 +592,22 @@ } ], "dependencies": { - "@ethersproject/abi": "^5.4.0", - "@ethersproject/abstract-provider": "^5.4.0", - "@ethersproject/abstract-signer": "^5.4.0", - "@ethersproject/address": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/transactions": "^5.4.0" + "@ethersproject/abi": "^5.5.0", + "@ethersproject/abstract-provider": "^5.5.0", + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/transactions": "^5.5.0" } }, "node_modules/@ethersproject/hash": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.4.0.tgz", - "integrity": "sha512-xymAM9tmikKgbktOCjW60Z5sdouiIIurkZUr9oW5NOex5uwxrbsYG09kb5bMcNjlVeJD3yPivTNzViIs1GCbqA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.5.0.tgz", + "integrity": "sha512-dnGVpK1WtBjmnp3mUT0PlU2MpapnwWI0PibldQEq1408tQBAbZpPidkWoVVuNMOl/lISO3+4hXZWCL3YV7qzfg==", "dev": true, "funding": [ { @@ -725,20 +620,20 @@ } ], "dependencies": { - "@ethersproject/abstract-signer": "^5.4.0", - "@ethersproject/address": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/strings": "^5.4.0" + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" } }, "node_modules/@ethersproject/hdnode": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.4.0.tgz", - "integrity": "sha512-pKxdS0KAaeVGfZPp1KOiDLB0jba11tG6OP1u11QnYfb7pXn6IZx0xceqWRr6ygke8+Kw74IpOoSi7/DwANhy8Q==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.5.0.tgz", + "integrity": "sha512-mcSOo9zeUg1L0CoJH7zmxwUG5ggQHU1UrRf8jyTYy6HxdZV+r0PBoL1bxr+JHIPXRzS6u/UW4mEn43y0tmyF8Q==", "dev": true, "funding": [ { @@ -751,24 +646,24 @@ } ], "dependencies": { - "@ethersproject/abstract-signer": "^5.4.0", - "@ethersproject/basex": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/pbkdf2": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/sha2": "^5.4.0", - "@ethersproject/signing-key": "^5.4.0", - "@ethersproject/strings": "^5.4.0", - "@ethersproject/transactions": "^5.4.0", - "@ethersproject/wordlists": "^5.4.0" + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/basex": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/pbkdf2": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/sha2": "^5.5.0", + "@ethersproject/signing-key": "^5.5.0", + "@ethersproject/strings": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/wordlists": "^5.5.0" } }, "node_modules/@ethersproject/json-wallets": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.4.0.tgz", - "integrity": "sha512-igWcu3fx4aiczrzEHwG1xJZo9l1cFfQOWzTqwRw/xcvxTk58q4f9M7cjh51EKphMHvrJtcezJ1gf1q1AUOfEQQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.5.0.tgz", + "integrity": "sha512-9lA21XQnCdcS72xlBn1jfQdj2A1VUxZzOzi9UkNdnokNKke/9Ya2xA9aIK1SC3PQyBDLt4C+dfps7ULpkvKikQ==", "dev": true, "funding": [ { @@ -781,17 +676,17 @@ } ], "dependencies": { - "@ethersproject/abstract-signer": "^5.4.0", - "@ethersproject/address": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/hdnode": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/pbkdf2": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/random": "^5.4.0", - "@ethersproject/strings": "^5.4.0", - "@ethersproject/transactions": "^5.4.0", + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/hdnode": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/pbkdf2": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/random": "^5.5.0", + "@ethersproject/strings": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", "aes-js": "3.0.0", "scrypt-js": "3.0.1" } @@ -803,9 +698,9 @@ "dev": true }, "node_modules/@ethersproject/keccak256": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.4.0.tgz", - "integrity": "sha512-FBI1plWet+dPUvAzPAeHzRKiPpETQzqSUWR1wXJGHVWi4i8bOSrpC3NwpkPjgeXG7MnugVc1B42VbfnQikyC/A==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.5.0.tgz", + "integrity": "sha512-5VoFCTjo2rYbBe1l2f4mccaRFN/4VQEYFwwn04aJV2h7qf4ZvI2wFxUE1XOX+snbwCLRzIeikOqtAoPwMza9kg==", "dev": true, "funding": [ { @@ -818,20 +713,14 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "js-sha3": "0.5.7" + "@ethersproject/bytes": "^5.5.0", + "js-sha3": "0.8.0" } }, - "node_modules/@ethersproject/keccak256/node_modules/js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=", - "dev": true - }, "node_modules/@ethersproject/logger": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.4.1.tgz", - "integrity": "sha512-DZ+bRinnYLPw1yAC64oRl0QyVZj43QeHIhVKfD/+YwSz4wsv1pfwb5SOFjz+r710YEWzU6LrhuSjpSO+6PeE4A==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.5.0.tgz", + "integrity": "sha512-rIY/6WPm7T8n3qS2vuHTUBPdXHl+rGxWxW5okDfo9J4Z0+gRRZT0msvUdIJkE4/HS29GUMziwGaaKO2bWONBrg==", "dev": true, "funding": [ { @@ -845,9 +734,9 @@ ] }, "node_modules/@ethersproject/networks": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.4.2.tgz", - "integrity": "sha512-eekOhvJyBnuibfJnhtK46b8HimBc5+4gqpvd1/H9LEl7Q7/qhsIhM81dI9Fcnjpk3jB1aTy6bj0hz3cifhNeYw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.5.0.tgz", + "integrity": "sha512-KWfP3xOnJeF89Uf/FCJdV1a2aDJe5XTN2N52p4fcQ34QhDqQFkgQKZ39VGtiqUgHcLI8DfT0l9azC3KFTunqtA==", "dev": true, "funding": [ { @@ -860,13 +749,13 @@ } ], "dependencies": { - "@ethersproject/logger": "^5.4.0" + "@ethersproject/logger": "^5.5.0" } }, "node_modules/@ethersproject/pbkdf2": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.4.0.tgz", - "integrity": "sha512-x94aIv6tiA04g6BnazZSLoRXqyusawRyZWlUhKip2jvoLpzJuLb//KtMM6PEovE47pMbW+Qe1uw+68ameJjB7g==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.5.0.tgz", + "integrity": "sha512-SaDvQFvXPnz1QGpzr6/HToLifftSXGoXrbpZ6BvoZhmx4bNLHrxDe8MZisuecyOziP1aVEwzC2Hasj+86TgWVg==", "dev": true, "funding": [ { @@ -879,14 +768,14 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/sha2": "^5.4.0" + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/sha2": "^5.5.0" } }, "node_modules/@ethersproject/properties": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.4.1.tgz", - "integrity": "sha512-cyCGlF8wWlIZyizsj2PpbJ9I7rIlUAfnHYwy/T90pdkSn/NFTa5YWZx2wTJBe9V7dD65dcrrEMisCRUJiq6n3w==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.5.0.tgz", + "integrity": "sha512-l3zRQg3JkD8EL3CPjNK5g7kMx4qSwiR60/uk5IVjd3oq1MZR5qUg40CNOoEJoX5wc3DyY5bt9EbMk86C7x0DNA==", "dev": true, "funding": [ { @@ -899,13 +788,13 @@ } ], "dependencies": { - "@ethersproject/logger": "^5.4.0" + "@ethersproject/logger": "^5.5.0" } }, "node_modules/@ethersproject/providers": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.4.5.tgz", - "integrity": "sha512-1GkrvkiAw3Fj28cwi1Sqm8ED1RtERtpdXmRfwIBGmqBSN5MoeRUHuwHPppMtbPayPgpFcvD7/Gdc9doO5fGYgw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.5.0.tgz", + "integrity": "sha512-xqMbDnS/FPy+J/9mBLKddzyLLAQFjrVff5g00efqxPzcAwXiR+SiCGVy6eJ5iAIirBOATjx7QLhDNPGV+AEQsw==", "dev": true, "funding": [ { @@ -918,23 +807,23 @@ } ], "dependencies": { - "@ethersproject/abstract-provider": "^5.4.0", - "@ethersproject/abstract-signer": "^5.4.0", - "@ethersproject/address": "^5.4.0", - "@ethersproject/basex": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/hash": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/networks": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/random": "^5.4.0", - "@ethersproject/rlp": "^5.4.0", - "@ethersproject/sha2": "^5.4.0", - "@ethersproject/strings": "^5.4.0", - "@ethersproject/transactions": "^5.4.0", - "@ethersproject/web": "^5.4.0", + "@ethersproject/abstract-provider": "^5.5.0", + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/basex": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/networks": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/random": "^5.5.0", + "@ethersproject/rlp": "^5.5.0", + "@ethersproject/sha2": "^5.5.0", + "@ethersproject/strings": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/web": "^5.5.0", "bech32": "1.1.4", "ws": "7.4.6" } @@ -961,9 +850,9 @@ } }, "node_modules/@ethersproject/random": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.4.0.tgz", - "integrity": "sha512-pnpWNQlf0VAZDEOVp1rsYQosmv2o0ITS/PecNw+mS2/btF8eYdspkN0vIXrCMtkX09EAh9bdk8GoXmFXM1eAKw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.5.0.tgz", + "integrity": "sha512-egGYZwZ/YIFKMHcoBUo8t3a8Hb/TKYX8BCBoLjudVCZh892welR3jOxgOmb48xznc9bTcMm7Tpwc1gHC1PFNFQ==", "dev": true, "funding": [ { @@ -976,14 +865,14 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0" + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0" } }, "node_modules/@ethersproject/rlp": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.4.0.tgz", - "integrity": "sha512-0I7MZKfi+T5+G8atId9QaQKHRvvasM/kqLyAH4XxBCBchAooH2EX5rL9kYZWwcm3awYV+XC7VF6nLhfeQFKVPg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.5.0.tgz", + "integrity": "sha512-hLv8XaQ8PTI9g2RHoQGf/WSxBfTB/NudRacbzdxmst5VHAqd1sMibWG7SENzT5Dj3yZ3kJYx+WiRYEcQTAkcYA==", "dev": true, "funding": [ { @@ -996,14 +885,14 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0" + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0" } }, "node_modules/@ethersproject/sha2": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.4.0.tgz", - "integrity": "sha512-siheo36r1WD7Cy+bDdE1BJ8y0bDtqXCOxRMzPa4bV1TGt/eTUUt03BHoJNB6reWJD8A30E/pdJ8WFkq+/uz4Gg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.5.0.tgz", + "integrity": "sha512-B5UBoglbCiHamRVPLA110J+2uqsifpZaTmid2/7W5rbtYVz6gus6/hSDieIU/6gaKIDcOj12WnOdiymEUHIAOA==", "dev": true, "funding": [ { @@ -1016,15 +905,15 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", "hash.js": "1.1.7" } }, "node_modules/@ethersproject/signing-key": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.4.0.tgz", - "integrity": "sha512-q8POUeywx6AKg2/jX9qBYZIAmKSB4ubGXdQ88l40hmATj29JnG5pp331nAWwwxPn2Qao4JpWHNZsQN+bPiSW9A==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.5.0.tgz", + "integrity": "sha512-5VmseH7qjtNmDdZBswavhotYbWB0bOwKIlOTSlX14rKn5c11QmJwGt4GHeo7NrL/Ycl7uo9AHvEqs5xZgFBTng==", "dev": true, "funding": [ { @@ -1037,18 +926,18 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", "bn.js": "^4.11.9", "elliptic": "6.5.4", "hash.js": "1.1.7" } }, "node_modules/@ethersproject/solidity": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.4.0.tgz", - "integrity": "sha512-XFQTZ7wFSHOhHcV1DpcWj7VXECEiSrBuv7JErJvB9Uo+KfCdc3QtUZV+Vjh/AAaYgezUEKbCtE6Khjm44seevQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.5.0.tgz", + "integrity": "sha512-9NgZs9LhGMj6aCtHXhtmFQ4AN4sth5HuFXVvAQtzmm0jpSCNOTGtrHZJAeYTh7MBjRR8brylWZxBZR9zDStXbw==", "dev": true, "funding": [ { @@ -1061,17 +950,18 @@ } ], "dependencies": { - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/sha2": "^5.4.0", - "@ethersproject/strings": "^5.4.0" + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/sha2": "^5.5.0", + "@ethersproject/strings": "^5.5.0" } }, "node_modules/@ethersproject/strings": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.4.0.tgz", - "integrity": "sha512-k/9DkH5UGDhv7aReXLluFG5ExurwtIpUfnDNhQA29w896Dw3i4uDTz01Quaptbks1Uj9kI8wo9tmW73wcIEaWA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.5.0.tgz", + "integrity": "sha512-9fy3TtF5LrX/wTrBaT8FGE6TDJyVjOvXynXJz5MT5azq+E6D92zuKNx7i29sWW2FjVOaWjAsiZ1ZWznuduTIIQ==", "dev": true, "funding": [ { @@ -1084,15 +974,15 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/logger": "^5.4.0" + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/logger": "^5.5.0" } }, "node_modules/@ethersproject/transactions": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.4.0.tgz", - "integrity": "sha512-s3EjZZt7xa4BkLknJZ98QGoIza94rVjaEed0rzZ/jB9WrIuu/1+tjvYCWzVrystXtDswy7TPBeIepyXwSYa4WQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.5.0.tgz", + "integrity": "sha512-9RZYSKX26KfzEd/1eqvv8pLauCKzDTub0Ko4LfIgaERvRuwyaNV78mJs7cpIgZaDl6RJui4o49lHwwCM0526zA==", "dev": true, "funding": [ { @@ -1105,21 +995,21 @@ } ], "dependencies": { - "@ethersproject/address": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/rlp": "^5.4.0", - "@ethersproject/signing-key": "^5.4.0" + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/rlp": "^5.5.0", + "@ethersproject/signing-key": "^5.5.0" } }, "node_modules/@ethersproject/units": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.4.0.tgz", - "integrity": "sha512-Z88krX40KCp+JqPCP5oPv5p750g+uU6gopDYRTBGcDvOASh6qhiEYCRatuM/suC4S2XW9Zz90QI35MfSrTIaFg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.5.0.tgz", + "integrity": "sha512-7+DpjiZk4v6wrikj+TCyWWa9dXLNU73tSTa7n0TSJDxkYbV3Yf1eRh9ToMLlZtuctNYu9RDNNy2USq3AdqSbag==", "dev": true, "funding": [ { @@ -1132,15 +1022,15 @@ } ], "dependencies": { - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/logger": "^5.4.0" + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/logger": "^5.5.0" } }, "node_modules/@ethersproject/wallet": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.4.0.tgz", - "integrity": "sha512-wU29majLjM6AjCjpat21mPPviG+EpK7wY1+jzKD0fg3ui5fgedf2zEu1RDgpfIMsfn8fJHJuzM4zXZ2+hSHaSQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.5.0.tgz", + "integrity": "sha512-Mlu13hIctSYaZmUOo7r2PhNSd8eaMPVXe1wxrz4w4FCE4tDYBywDH+bAR1Xz2ADyXGwqYMwstzTrtUVIsKDO0Q==", "dev": true, "funding": [ { @@ -1153,27 +1043,27 @@ } ], "dependencies": { - "@ethersproject/abstract-provider": "^5.4.0", - "@ethersproject/abstract-signer": "^5.4.0", - "@ethersproject/address": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/hash": "^5.4.0", - "@ethersproject/hdnode": "^5.4.0", - "@ethersproject/json-wallets": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/random": "^5.4.0", - "@ethersproject/signing-key": "^5.4.0", - "@ethersproject/transactions": "^5.4.0", - "@ethersproject/wordlists": "^5.4.0" + "@ethersproject/abstract-provider": "^5.5.0", + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/hdnode": "^5.5.0", + "@ethersproject/json-wallets": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/random": "^5.5.0", + "@ethersproject/signing-key": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/wordlists": "^5.5.0" } }, "node_modules/@ethersproject/web": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.4.0.tgz", - "integrity": "sha512-1bUusGmcoRLYgMn6c1BLk1tOKUIFuTg8j+6N8lYlbMpDesnle+i3pGSagGNvwjaiLo4Y5gBibwctpPRmjrh4Og==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.5.0.tgz", + "integrity": "sha512-BEgY0eL5oH4mAo37TNYVrFeHsIXLRxggCRG/ksRIxI2X5uj5IsjGmcNiRN/VirQOlBxcUhCgHhaDLG4m6XAVoA==", "dev": true, "funding": [ { @@ -1186,17 +1076,17 @@ } ], "dependencies": { - "@ethersproject/base64": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/strings": "^5.4.0" + "@ethersproject/base64": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" } }, "node_modules/@ethersproject/wordlists": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.4.0.tgz", - "integrity": "sha512-FemEkf6a+EBKEPxlzeVgUaVSodU7G0Na89jqKjmWMlDB0tomoU8RlEMgUvXyqtrg8N4cwpLh8nyRnm1Nay1isA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.5.0.tgz", + "integrity": "sha512-bL0UTReWDiaQJJYOC9sh/XcRu/9i2jMrzf8VLRmPKx58ckSlOJiohODkECCO50dtLZHcGU6MLXQ4OOrgBwP77Q==", "dev": true, "funding": [ { @@ -1209,11 +1099,11 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/hash": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/strings": "^5.4.0" + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" } }, "node_modules/@nodelib/fs.scandir": { @@ -1307,29 +1197,29 @@ } }, "node_modules/@oclif/command": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@oclif/command/-/command-1.8.0.tgz", - "integrity": "sha512-5vwpq6kbvwkQwKqAoOU3L72GZ3Ta8RRrewKj9OJRolx28KLJJ8Dg9Rf7obRwt5jQA9bkYd8gqzMTrI7H3xLfaw==", + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@oclif/command/-/command-1.8.6.tgz", + "integrity": "sha512-tIcGPpf7ndGe0Sp22RbPhZbwKjfrebHzCfe1SHRlqlJNy2xS3FT50i9p+dZmF+7Zpn4CEcBHag1TCdfFCTc1vQ==", "dev": true, "dependencies": { - "@oclif/config": "^1.15.1", - "@oclif/errors": "^1.3.3", - "@oclif/parser": "^3.8.3", - "@oclif/plugin-help": "^3", + "@oclif/config": "^1.17.1", + "@oclif/errors": "^1.3.5", + "@oclif/parser": "^3.8.6", + "@oclif/plugin-help": "^3.2.8", "debug": "^4.1.1", "semver": "^7.3.2" }, "engines": { - "node": ">=8.0.0" + "node": ">=12.0.0" }, "peerDependencies": { "@oclif/config": "^1" } }, "node_modules/@oclif/config": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@oclif/config/-/config-1.17.0.tgz", - "integrity": "sha512-Lmfuf6ubjQ4ifC/9bz1fSCHc6F6E653oyaRXxg+lgT4+bYf9bk+nqrUpAbrXyABkCqgIBiFr3J4zR/kiFdE1PA==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/@oclif/config/-/config-1.18.1.tgz", + "integrity": "sha512-twRJO5RRl3CCDaAASb6LiynfFQl/SbkWWOQy1l0kJZSMPysEhz+fk3BKfmlCCm451Btkp4UezHUwI1JtH+/zYg==", "dev": true, "dependencies": { "@oclif/errors": "^1.3.3", @@ -1364,9 +1254,9 @@ } }, "node_modules/@oclif/config/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", "dev": true, "engines": { "node": ">= 4" @@ -1442,100 +1332,48 @@ "dev": true }, "node_modules/@oclif/parser": { - "version": "3.8.5", - "resolved": "https://registry.npmjs.org/@oclif/parser/-/parser-3.8.5.tgz", - "integrity": "sha512-yojzeEfmSxjjkAvMRj0KzspXlMjCfBzNRPkWw8ZwOSoNWoJn+OCS/m/S+yfV6BvAM4u2lTzX9Y5rCbrFIgkJLg==", + "version": "3.8.6", + "resolved": "https://registry.npmjs.org/@oclif/parser/-/parser-3.8.6.tgz", + "integrity": "sha512-tXb0NKgSgNxmf6baN6naK+CCwOueaFk93FG9u202U7mTBHUKsioOUlw1SG/iPi9aJM3WE4pHLXmty59pci0OEw==", "dev": true, "dependencies": { "@oclif/errors": "^1.2.2", "@oclif/linewrap": "^1.0.0", - "chalk": "^2.4.2", - "tslib": "^1.9.3" + "chalk": "^4.1.0", + "tslib": "^2.0.0" }, "engines": { "node": ">=8.0.0" } }, - "node_modules/@oclif/parser/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@oclif/parser/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/@oclif/parser/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@oclif/parser/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/@oclif/parser/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@oclif/parser/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" + "node": ">=10" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@oclif/parser/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, "node_modules/@oclif/plugin-help": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-3.2.3.tgz", - "integrity": "sha512-l2Pd0lbOMq4u/7xsl9hqISFqyR9gWEz/8+05xmrXFr67jXyS6EUCQB+mFBa0wepltrmJu0sAFg9AvA2mLaMMqQ==", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-3.2.9.tgz", + "integrity": "sha512-uY3qGjwSWfe9ovxafv8AQes5LFCKryVR256hU/vVtH7vtS7a3Sgx2lWozsfEssA9PAaY/eDNw8TRQaqHDSjPKw==", "dev": true, "dependencies": { - "@oclif/command": "^1.5.20", - "@oclif/config": "^1.15.1", - "@oclif/errors": "^1.2.2", - "chalk": "^4.1.0", + "@oclif/command": "^1.8.5", + "@oclif/config": "^1.17.1", + "@oclif/errors": "^1.3.5", + "chalk": "^4.1.2", "indent-string": "^4.0.0", - "lodash.template": "^4.4.0", + "lodash": "^4.17.21", "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "widest-line": "^3.1.0", @@ -1914,10 +1752,13 @@ } }, "node_modules/@solidity-parser/parser": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.11.1.tgz", - "integrity": "sha512-H8BSBoKE8EubJa0ONqecA2TviT3TnHeC4NpgnAHSUiuhZoQBfPB4L2P9bs8R6AoTW10Endvh3vc+fomVMIDIYQ==", - "dev": true + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.0.tgz", + "integrity": "sha512-cX0JJRcmPtNUJpzD2K7FdA7qQsTOk1UZnFx2k7qAg9ZRvuaH5NBe5IEdBMXGlmf2+FmjhqbygJ26H8l2SV7aKQ==", + "dev": true, + "dependencies": { + "antlr4ts": "^0.5.0-alpha.4" + } }, "node_modules/@szmarczak/http-timer": { "version": "1.1.2", @@ -2039,18 +1880,19 @@ "dev": true }, "node_modules/@truffle/contract": { - "version": "4.3.37", - "resolved": "https://registry.npmjs.org/@truffle/contract/-/contract-4.3.37.tgz", - "integrity": "sha512-lMPpyez1FFXEKbfqYZ4yDqvEEl4m/SiRYm+x1/yu2coCi5uaWaIZDE0pJ++tVDueQN8tJVZ6oTN9i5oAvjShzA==", + "version": "4.3.42", + "resolved": "https://registry.npmjs.org/@truffle/contract/-/contract-4.3.42.tgz", + "integrity": "sha512-CWbKz3L6ldAoh0JX14nNzOyXxWsLiGX5PYpswrwOy0Uk4JYpbVtpSzoQxJbnDTfLUciowfCdG/4QMZ+zo2WVqA==", "dev": true, "dependencies": { "@ensdomains/ensjs": "^2.0.1", "@truffle/blockchain-utils": "^0.0.31", "@truffle/contract-schema": "^3.4.3", - "@truffle/debug-utils": "^5.1.17", + "@truffle/debug-utils": "^6.0.0", "@truffle/error": "^0.0.14", "@truffle/interface-adapter": "^0.5.8", "bignumber.js": "^7.2.1", + "debug": "^4.3.1", "ethers": "^4.0.32", "web3": "1.5.3", "web3-core-helpers": "1.5.3", @@ -2093,9 +1935,9 @@ "dev": true }, "node_modules/@truffle/contract/node_modules/@truffle/codec": { - "version": "0.11.16", - "resolved": "https://registry.npmjs.org/@truffle/codec/-/codec-0.11.16.tgz", - "integrity": "sha512-IcqNpteZUTeyROIZTPSicryU3k9P36yZXlYCI0Q8V+DlplhSlrdnSqaIEE159uMAdSqGarqCGoTYWUGhBKOrkQ==", + "version": "0.11.19", + "resolved": "https://registry.npmjs.org/@truffle/codec/-/codec-0.11.19.tgz", + "integrity": "sha512-ZxsfRWBE4wcQ01NCpMWH6VRJ/q3mGTl3ku8ln+WJ2P6McIMsS37imO3d8N9NWiQ49klc9kJfT3mKnOVMLTJhIg==", "dev": true, "dependencies": { "@truffle/abi-utils": "^0.2.4", @@ -2120,17 +1962,17 @@ "dev": true }, "node_modules/@truffle/contract/node_modules/@truffle/debug-utils": { - "version": "5.1.17", - "resolved": "https://registry.npmjs.org/@truffle/debug-utils/-/debug-utils-5.1.17.tgz", - "integrity": "sha512-aAcs4qA1hwajtFG/gUXXFAvjRxdz6uAl8bmqOEwYxrXTHBzeWz9CiLgyxlIOZgZCeiUmqMNxvT7FORi6FSdfJg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@truffle/debug-utils/-/debug-utils-6.0.0.tgz", + "integrity": "sha512-MoN8aQQX2DLLEMMlfF+8ZFtjh0FJsPYwuI4NDcn7upoORe/QoRHeypIhQgaepOXBKwIXW0mplBkAk/nm+cQp8A==", "dev": true, "dependencies": { - "@truffle/codec": "^0.11.16", + "@truffle/codec": "^0.11.19", "@trufflesuite/chromafi": "^2.2.2", "bn.js": "^5.1.3", "chalk": "^2.4.2", "debug": "^4.3.1", - "highlightjs-solidity": "^2.0.1" + "highlightjs-solidity": "^2.0.2" } }, "node_modules/@truffle/contract/node_modules/@truffle/debug-utils/node_modules/bn.js": { @@ -2172,9 +2014,9 @@ } }, "node_modules/@truffle/contract/node_modules/@types/node": { - "version": "12.20.28", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.28.tgz", - "integrity": "sha512-cBw8gzxUPYX+/5lugXIPksioBSbE42k0fZ39p+4yRzfYjN6++eq9kAPdlY9qm+MXyfbk9EmvCYAYRn380sF46w==", + "version": "12.20.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.37.tgz", + "integrity": "sha512-i1KGxqcvJaLQali+WuypQnXwcplhtNtjs66eNsZpp2P2FL/trJJxx/VWsM0YCL2iMoIJrbXje48lvIQAQ4p2ZA==", "dev": true }, "node_modules/@truffle/contract/node_modules/ansi-styles": { @@ -2239,9 +2081,9 @@ } }, "node_modules/@truffle/contract/node_modules/highlightjs-solidity": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/highlightjs-solidity/-/highlightjs-solidity-2.0.1.tgz", - "integrity": "sha512-9YY+HQpXMTrF8HgRByjeQhd21GXAz2ktMPTcs6oWSj5HJR52fgsNoelMOmgigwcpt9j4tu4IVSaWaJB2n2TbvQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/highlightjs-solidity/-/highlightjs-solidity-2.0.2.tgz", + "integrity": "sha512-q0aYUKiZ9MPQg41qx/KpXKaCpqql50qTvmwGYyLFfcjt9AE/+C9CwjVIdJZc7EYj6NGgJuFJ4im1gfgrzUU1fQ==", "dev": true }, "node_modules/@truffle/contract/node_modules/supports-color": { @@ -2732,9 +2574,9 @@ } }, "node_modules/@truffle/interface-adapter/node_modules/@types/node": { - "version": "12.20.28", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.28.tgz", - "integrity": "sha512-cBw8gzxUPYX+/5lugXIPksioBSbE42k0fZ39p+4yRzfYjN6++eq9kAPdlY9qm+MXyfbk9EmvCYAYRn380sF46w==", + "version": "12.20.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.37.tgz", + "integrity": "sha512-i1KGxqcvJaLQali+WuypQnXwcplhtNtjs66eNsZpp2P2FL/trJJxx/VWsM0YCL2iMoIJrbXje48lvIQAQ4p2ZA==", "dev": true }, "node_modules/@truffle/interface-adapter/node_modules/bignumber.js": { @@ -3200,9 +3042,9 @@ } }, "node_modules/@truffle/provider/node_modules/@types/node": { - "version": "12.20.28", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.28.tgz", - "integrity": "sha512-cBw8gzxUPYX+/5lugXIPksioBSbE42k0fZ39p+4yRzfYjN6++eq9kAPdlY9qm+MXyfbk9EmvCYAYRn380sF46w==", + "version": "12.20.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.37.tgz", + "integrity": "sha512-i1KGxqcvJaLQali+WuypQnXwcplhtNtjs66eNsZpp2P2FL/trJJxx/VWsM0YCL2iMoIJrbXje48lvIQAQ4p2ZA==", "dev": true }, "node_modules/@truffle/provider/node_modules/bignumber.js": { @@ -3739,9 +3581,9 @@ } }, "node_modules/@types/glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", "dev": true, "dependencies": { "@types/minimatch": "*", @@ -3784,9 +3626,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "16.10.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.3.tgz", - "integrity": "sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ==", + "version": "16.11.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.11.tgz", + "integrity": "sha512-KB0sixD67CeecHC33MYn+eYARkqTheIRNuu97y2XMjR7Wu3XibO1vaY6VBV6O/a89SPI81cEUIYT87UqUWlZNw==", "dev": true }, "node_modules/@types/pbkdf2": { @@ -4140,13 +3982,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/ansicolors": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", - "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", - "dev": true, - "peer": true - }, "node_modules/antlr4": { "version": "4.7.1", "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.7.1.tgz", @@ -4193,13 +4028,6 @@ "node": ">=8" } }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "peer": true - }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -4312,9 +4140,9 @@ "dev": true }, "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dev": true, "dependencies": { "safer-buffer": "~2.1.0" @@ -4499,9 +4327,9 @@ } }, "node_modules/base-x": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", - "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", "dev": true, "dependencies": { "safe-buffer": "^5.0.1" @@ -4721,6 +4549,15 @@ "node": ">= 0.8" } }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/body-parser/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -4791,6 +4628,21 @@ "node": ">= 0.8" } }, + "node_modules/body-parser/node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "node_modules/body-parser/node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -5012,13 +4864,13 @@ "dev": true }, "node_modules/bufferutil": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.4.tgz", - "integrity": "sha512-VNxjXUCrF3LvbLgwfkTb5LsFvk6pGIn7OBb9x+3o+iJ6mKw0JTUp4chBFc88hi1aspeZGeZG9jAIbpFYPQSLZw==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.5.tgz", + "integrity": "sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A==", "dev": true, "hasInstallScript": true, "dependencies": { - "node-gyp-build": "^4.2.0" + "node-gyp-build": "^4.3.0" }, "engines": { "node": ">=6.14.2" @@ -5031,9 +4883,9 @@ "dev": true }, "node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", + "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", "dev": true, "engines": { "node": ">= 0.8" @@ -5175,20 +5027,6 @@ "node": ">=4" } }, - "node_modules/cardinal": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", - "integrity": "sha1-fMEFXYItISlU0HsIXeolHMe8VQU=", - "dev": true, - "peer": true, - "dependencies": { - "ansicolors": "~0.3.2", - "redeyed": "~2.1.0" - }, - "bin": { - "cdl": "bin/cdl.js" - } - }, "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -5489,29 +5327,6 @@ "node": ">=8" } }, - "node_modules/cli-table": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.6.tgz", - "integrity": "sha512-ZkNZbnZjKERTY5NwC2SeMeLeifSPq/pubeRoTpdr3WchLlnZg6hEgvHkK5zL7KNFdd9PmHN8lxrENUwI3cE8vQ==", - "dev": true, - "peer": true, - "dependencies": { - "colors": "1.0.3" - }, - "engines": { - "node": ">= 0.2.0" - } - }, - "node_modules/cli-table/node_modules/colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.1.90" - } - }, "node_modules/cli-table3": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", @@ -5858,9 +5673,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.18.2", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.18.2.tgz", - "integrity": "sha512-4hMMLUlZhKJKOWbbGD1/VDUxGPEhEoN/T01k7bx271WiBKCvCfkgPzy0IeRS4PB50p6/N1q/SZL4B/TRsTE5bA==", + "version": "3.19.2", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.19.2.tgz", + "integrity": "sha512-5LkcgQEy8pFeVnd/zomkUBSwnmIxuF1C8E9KrMAbOc8f34IBT9RGvTYeNDdp1PnvMJrrVhvk1hg/yVV5h/znlg==", "dev": true, "hasInstallScript": true, "funding": { @@ -6071,9 +5886,9 @@ } }, "node_modules/css-what": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", - "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", "dev": true, "engines": { "node": ">= 6" @@ -6111,9 +5926,9 @@ "dev": true }, "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -6347,15 +6162,6 @@ "node": ">=8" } }, - "node_modules/dir-glob/node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -6411,9 +6217,9 @@ ] }, "node_modules/domhandler": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", - "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", + "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", "dev": true, "dependencies": { "domelementtype": "^2.2.0" @@ -6506,9 +6312,9 @@ } }, "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.0.0.tgz", + "integrity": "sha512-KmJa8l6uHi1HrBI34udwlzZY1jOEuID/ft4d8BSSEdRyap7PwBEt910453PJa5MuGvxkLqlt4Uvhu7tttFHViw==", "dev": true }, "node_modules/emojis-list": { @@ -6930,12 +6736,13 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz", - "integrity": "sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz", + "integrity": "sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ==", "dev": true, "dependencies": { "debug": "^3.2.7", + "find-up": "^2.1.0", "pkg-dir": "^2.0.0" }, "engines": { @@ -6951,25 +6758,118 @@ "ms": "^2.1.1" } }, - "node_modules/eslint-plugin-import": { - "version": "2.24.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz", - "integrity": "sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q==", + "node_modules/eslint-module-utils/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "dependencies": { - "array-includes": "^3.1.3", - "array.prototype.flat": "^1.2.4", + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-es": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-2.0.0.tgz", + "integrity": "sha512-f6fceVtg27BR02EYnBhgWLFQfK6bN4Ll0nQFrBHOlCsAyxeZkn0NHns5O0YZOPrV1B3ramd6cgFwaoFLcSkwEQ==", + "dev": true, + "dependencies": { + "eslint-utils": "^1.4.2", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-es/node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.25.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz", + "integrity": "sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", "debug": "^2.6.9", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.6.2", - "find-up": "^2.0.0", + "eslint-module-utils": "^2.7.1", "has": "^1.0.3", - "is-core-module": "^2.6.0", + "is-core-module": "^2.8.0", + "is-glob": "^4.0.3", "minimatch": "^3.0.4", - "object.values": "^1.1.4", - "pkg-up": "^2.0.0", - "read-pkg-up": "^3.0.0", + "object.values": "^1.1.5", "resolve": "^1.20.0", "tsconfig-paths": "^3.11.0" }, @@ -6977,7 +6877,7 @@ "node": ">=4" }, "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0" + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" } }, "node_modules/eslint-plugin-import/node_modules/debug": { @@ -7001,79 +6901,12 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/eslint-plugin-import/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "node_modules/eslint-plugin-import/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/eslint-plugin-mocha-no-only": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/eslint-plugin-mocha-no-only/-/eslint-plugin-mocha-no-only-1.1.1.tgz", @@ -7106,43 +6939,15 @@ "eslint": ">=5.16.0" } }, - "node_modules/eslint-plugin-node/node_modules/eslint-plugin-es": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-2.0.0.tgz", - "integrity": "sha512-f6fceVtg27BR02EYnBhgWLFQfK6bN4Ll0nQFrBHOlCsAyxeZkn0NHns5O0YZOPrV1B3ramd6cgFwaoFLcSkwEQ==", - "dev": true, - "dependencies": { - "eslint-utils": "^1.4.2", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "peerDependencies": { - "eslint": ">=4.19.1" - } - }, "node_modules/eslint-plugin-node/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", "dev": true, "engines": { "node": ">= 4" } }, - "node_modules/eslint-plugin-node/node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "node_modules/eslint-plugin-node/node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -7350,9 +7155,9 @@ } }, "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { "node": ">=4.0" @@ -7371,9 +7176,9 @@ } }, "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { "node": ">=4.0" @@ -7423,13 +7228,13 @@ "dev": true }, "node_modules/eth-gas-reporter": { - "version": "0.2.22", - "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.22.tgz", - "integrity": "sha512-L1FlC792aTf3j/j+gGzSNlGrXKSxNPXQNk6TnV5NNZ2w3jnQCRyJjDl0zUo25Cq2t90IS5vGdbkwqFQK7Ce+kw==", + "version": "0.2.23", + "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.23.tgz", + "integrity": "sha512-T8KsVakDEupvQxW3MfFfHDfJ7y8zl2+XhyEQk4hZ3qQsAh/FE27BfFHM9UhqNQvrJLz8zVWnPZWNcARwLT/lsA==", "dev": true, "dependencies": { "@ethersproject/abi": "^5.0.0-beta.146", - "@solidity-parser/parser": "^0.12.0", + "@solidity-parser/parser": "^0.14.0", "cli-table3": "^0.5.0", "colors": "^1.1.2", "ethereumjs-util": "6.2.0", @@ -7446,14 +7251,13 @@ }, "peerDependencies": { "@codechecks/client": "^0.1.0" + }, + "peerDependenciesMeta": { + "@codechecks/client": { + "optional": true + } } }, - "node_modules/eth-gas-reporter/node_modules/@solidity-parser/parser": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.12.2.tgz", - "integrity": "sha512-d7VS7PxgMosm5NyaiyDJRNID5pK4AWj1l64Dbz0147hJgy5k2C0/ZiKK/9u5c5K+HRUVHmp+RMvGEjGh84oA5Q==", - "dev": true - }, "node_modules/eth-gas-reporter/node_modules/@types/bn.js": { "version": "4.11.6", "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", @@ -7549,6 +7353,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-3.0.1.tgz", "integrity": "sha512-0Us50HiGGvZgjtWTyAI/+qTzYPMLy5Q451D0Xy68bxq1QMWdoOddDwGvsqcFT27uohKgalM9z/yxplyt+mY2iQ==", + "deprecated": "Deprecated in favor of '@metamask/eth-sig-util'", "dev": true, "dependencies": { "ethereumjs-abi": "^0.6.8", @@ -7714,16 +7519,15 @@ } }, "node_modules/ethereumjs-util": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.2.tgz", - "integrity": "sha512-xCV3PTAhW8Q2k88XZn9VcO4OrjpeXAlDm5LQTaOLp81SjNSSY6+MwuGXrx6vafOMheWSmZGxIXUbue5e9UvUBw==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.3.tgz", + "integrity": "sha512-y+82tEbyASO0K0X1/SRhbJJoAlfcvq8JbrG4a5cjrOks7HS/36efU/0j2flxCPOUM++HFahk33kr/ZxyC4vNuw==", "dev": true, "dependencies": { "@types/bn.js": "^5.1.0", "bn.js": "^5.1.2", "create-hash": "^1.1.2", "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", "rlp": "^2.2.4" }, "engines": { @@ -7737,19 +7541,19 @@ "dev": true }, "node_modules/ethereumjs-wallet": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-1.0.1.tgz", - "integrity": "sha512-3Z5g1hG1das0JWU6cQ9HWWTY2nt9nXCcwj7eXVNAHKbo00XAZO8+NHlwdgXDWrL0SXVQMvTWN8Q/82DRH/JhPw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-1.0.2.tgz", + "integrity": "sha512-CCWV4RESJgRdHIvFciVQFnCHfqyhXWchTPlkfp28Qc53ufs+doi5I/cV2+xeK9+qEo25XCWfP9MiL+WEPAZfdA==", "dev": true, "dependencies": { - "aes-js": "^3.1.1", + "aes-js": "^3.1.2", "bs58check": "^2.1.2", "ethereum-cryptography": "^0.1.3", - "ethereumjs-util": "^7.0.2", - "randombytes": "^2.0.6", + "ethereumjs-util": "^7.1.2", + "randombytes": "^2.1.0", "scrypt-js": "^3.0.1", "utf8": "^3.0.0", - "uuid": "^3.3.2" + "uuid": "^8.3.2" } }, "node_modules/ethers": { @@ -7931,14 +7735,13 @@ } }, "node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, - "peer": true, "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", "is-stream": "^1.1.0", "npm-run-path": "^2.0.0", "p-finally": "^1.0.0", @@ -7946,9 +7749,45 @@ "strip-eof": "^1.0.0" }, "engines": { - "node": ">=6" + "node": ">=4" } }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/execa/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/execa/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, "node_modules/exit-on-epipe": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", @@ -8080,6 +7919,12 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, + "node_modules/express/node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, "node_modules/ext": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", @@ -8212,9 +8057,9 @@ "dev": true }, "node_modules/fast-check": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-2.17.0.tgz", - "integrity": "sha512-fNNKkxNEJP+27QMcEzF6nbpOYoSZIS0p+TyB+xh/jXqRBxRhLkiZSREly4ruyV8uJi7nwH1YWAhi7OOK5TubRw==", + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-2.20.0.tgz", + "integrity": "sha512-tFNjLyPnOUg6iimVxOtoWMJOIyybCo7B8gUGm1yv43jDCQ0hlPUn0fmna/XO/n1yPxn/dxQw3+IygPSbMDiiog==", "dev": true, "dependencies": { "pure-rand": "^5.0.0" @@ -8424,9 +8269,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.14.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", - "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==", + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", + "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==", "dev": true, "funding": [ { @@ -8443,15 +8288,6 @@ } } }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, "node_modules/for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -9907,9 +9743,9 @@ } }, "node_modules/globby/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", "dev": true, "engines": { "node": ">= 4" @@ -10015,9 +9851,9 @@ } }, "node_modules/hardhat": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.6.5.tgz", - "integrity": "sha512-sBhREWZjQTtR/KMMp2F3ySuDqL0norjNq68geR3nlXRHXYKuNKeL7xqVsmldekt3sVB5Wh1WX7xDX79kvUr+fA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.7.0.tgz", + "integrity": "sha512-DqweY3KH5gwExoZ8EtsAfioj0Hk0NBXWXT3fMXWkiQNfyYBoZLrqdPNkbJ/E2LD4mZ+BKF7v/1chYR9ZCn2Z+g==", "dev": true, "dependencies": { "@ethereumjs/block": "^3.4.0", @@ -10027,7 +9863,7 @@ "@ethereumjs/vm": "^5.5.2", "@ethersproject/abi": "^5.1.2", "@sentry/node": "^5.18.1", - "@solidity-parser/parser": "^0.11.0", + "@solidity-parser/parser": "^0.14.0", "@types/bn.js": "^5.1.0", "@types/lru-cache": "^5.1.0", "abort-controller": "^3.0.0", @@ -10065,7 +9901,7 @@ "stacktrace-parser": "^0.1.10", "true-case-path": "^2.2.1", "tsort": "0.0.1", - "uuid": "^3.3.2", + "uuid": "^8.3.2", "ws": "^7.4.6" }, "bin": { @@ -10076,12 +9912,13 @@ } }, "node_modules/hardhat-gas-reporter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.4.tgz", - "integrity": "sha512-G376zKh81G3K9WtDA+SoTLWsoygikH++tD1E7llx+X7J+GbIqfwhDKKgvJjcnEesMrtR9UqQHK02lJuXY1RTxw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.6.tgz", + "integrity": "sha512-LlCEmSx1dZpnxKmODb2hmP5eJ1IAM5It3NnBNTUpBTxn9g9qPPI3JQTxj8AbGEiNc3r6V+w/mXYCmiC8pWvnoQ==", "dev": true, "dependencies": { - "eth-gas-reporter": "^0.2.20", + "array-uniq": "1.0.3", + "eth-gas-reporter": "^0.2.23", "sha1": "^1.1.1" }, "peerDependencies": { @@ -10139,6 +9976,7 @@ "version": "2.5.4", "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-2.5.4.tgz", "integrity": "sha512-aCMBwp8q/4wrW4QLsF/HYBOSA7TpLKmkVwP3pYQNkEEseW2Rr8Z5Uxc9/h6HX+OG3tuHo+2bINVSihIeBfym6A==", + "deprecated": "Deprecated in favor of '@metamask/eth-sig-util'", "dev": true, "dependencies": { "ethereumjs-abi": "0.6.8", @@ -10604,6 +10442,16 @@ "node": ">=4.6.1" } }, + "node_modules/http-auth/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, "node_modules/http-basic": { "version": "8.1.3", "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", @@ -10626,16 +10474,16 @@ "dev": true }, "node_modules/http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "dev": true, "dependencies": { "depd": "~1.1.2", "inherits": "2.0.4", - "setprototypeof": "1.1.1", + "setprototypeof": "1.2.0", "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "toidentifier": "1.0.1" }, "engines": { "node": ">= 0.6" @@ -10657,9 +10505,9 @@ "dev": true }, "node_modules/http-parser-js": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", - "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz", + "integrity": "sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==", "dev": true }, "node_modules/http-response-object": { @@ -10771,9 +10619,9 @@ "dev": true }, "node_modules/immutable": { - "version": "4.0.0-rc.15", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0-rc.15.tgz", - "integrity": "sha512-v8+A3sNyaieoP9dHegl3tEYnIZa7vqNiSv0U6D7YddiZi34VjKy4GsIxrRHj2d8+CS3MeiVja5QyNe4JO/aEXA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", + "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", "dev": true }, "node_modules/import-fresh": { @@ -11100,9 +10948,9 @@ } }, "node_modules/is-core-module": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz", - "integrity": "sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -11599,9 +11447,9 @@ "dev": true }, "node_modules/json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "dev": true }, "node_modules/json-schema-traverse": { @@ -11665,18 +11513,18 @@ } }, "node_modules/jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, - "engines": [ - "node >=0.6.0" - ], "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.2.3", + "json-schema": "0.4.0", "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" } }, "node_modules/keccak": { @@ -12238,18 +12086,52 @@ } }, "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "dependencies": { "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/load-json-file/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "dependencies": { + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/loader-runner": { @@ -12305,12 +12187,6 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "node_modules/lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true - }, "node_modules/lodash.assign": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", @@ -12359,25 +12235,6 @@ "integrity": "sha1-rZDjl5ZdgD1PH/eqWy0Bl/O0Y3s=", "dev": true }, - "node_modules/lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "dev": true, - "dependencies": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "node_modules/lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "dev": true, - "dependencies": { - "lodash._reinterpolate": "^3.0.0" - } - }, "node_modules/lodash.zip": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", @@ -12512,13 +12369,6 @@ "integrity": "sha1-81ypHEk/e3PaDgdJUwTxezH4fuU=", "dev": true }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "peer": true - }, "node_modules/map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -12552,115 +12402,6 @@ "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", "dev": true }, - "node_modules/marked": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz", - "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==", - "dev": true, - "peer": true, - "bin": { - "marked": "bin/marked" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/marked-terminal": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-3.3.0.tgz", - "integrity": "sha512-+IUQJ5VlZoAFsM5MHNT7g3RHSkA3eETqhRCdXv4niUMAKHQ7lb1yvAcuGPmm4soxhmtX13u4Li6ZToXtvSEH+A==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-escapes": "^3.1.0", - "cardinal": "^2.1.1", - "chalk": "^2.4.1", - "cli-table": "^0.3.1", - "node-emoji": "^1.4.1", - "supports-hyperlinks": "^1.0.1" - }, - "peerDependencies": { - "marked": "^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0" - } - }, - "node_modules/marked-terminal/node_modules/ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/marked-terminal/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/marked-terminal/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/marked-terminal/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/marked-terminal/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true, - "peer": true - }, - "node_modules/marked-terminal/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/marked-terminal/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/mcl-wasm": { "version": "0.7.9", "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", @@ -12815,13 +12556,13 @@ } }, "node_modules/merkle-patricia-tree": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-4.2.1.tgz", - "integrity": "sha512-25reMgrT8PhJy0Ba0U7fMZD2oobS1FPWB9vQa0uBpJYIQYYuFXEHoqEkTqA/UzX+s9br3pmUVVY/TOsFt/x0oQ==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-4.2.2.tgz", + "integrity": "sha512-eqZYNTshcYx9aESkSPr71EqwsR/QmpnObDEV4iLxkt/x/IoLYZYjJvKY72voP/27Vy61iMOrfOG6jrn7ttXD+Q==", "dev": true, "dependencies": { "@types/levelup": "^4.3.0", - "ethereumjs-util": "^7.1.0", + "ethereumjs-util": "^7.1.2", "level-mem": "^5.0.1", "level-ws": "^2.0.0", "readable-stream": "^3.6.0", @@ -12902,21 +12643,21 @@ } }, "node_modules/mime-db": { - "version": "1.50.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", - "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", "dev": true, "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.33", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", - "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", "dev": true, "dependencies": { - "mime-db": "1.50.0" + "mime-db": "1.51.0" }, "engines": { "node": ">= 0.6" @@ -13058,12 +12799,12 @@ } }, "node_modules/mnemonist": { - "version": "0.38.4", - "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.4.tgz", - "integrity": "sha512-mflgW0gEWmVLbDDE2gJbOh3+RltTN7CgV9jV25qyCnyLN9FtoltWr7ZtAEDeD9u8W4oFAoolR6fBWieXdn3u8Q==", + "version": "0.38.5", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", + "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", "dev": true, "dependencies": { - "obliterator": "^1.6.1" + "obliterator": "^2.0.0" } }, "node_modules/mocha": { @@ -13705,9 +13446,9 @@ } }, "node_modules/node-fetch": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", - "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", + "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", "dev": true, "dependencies": { "whatwg-url": "^5.0.0" @@ -14078,9 +13819,9 @@ } }, "node_modules/obliterator": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-1.6.1.tgz", - "integrity": "sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.1.tgz", + "integrity": "sha512-XnkiCrrBcIZQitJPAI36mrrpEUvatbte8hLcTcQwKA1v9NkCKasSi+UAguLsLDs/out7MoRzAlmz7VXvY6ph6w==", "dev": true }, "node_modules/oboe": { @@ -14435,15 +14176,12 @@ "dev": true }, "node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/pathval": { @@ -14499,12 +14237,12 @@ } }, "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/pinkie": { @@ -14607,85 +14345,6 @@ "node": ">=4" } }, - "node_modules/pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", - "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", - "dev": true, - "dependencies": { - "find-up": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-up/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-up/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-up/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-up/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -14714,9 +14373,9 @@ } }, "node_modules/prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.0.tgz", + "integrity": "sha512-FM/zAKgWTxj40rH03VxzIPdXmj39SwSjwG0heUcNFwI+EMZJnY93yAiKXM3dObIKAM5TA88werc8T/EwhB45eg==", "dev": true, "bin": { "prettier": "bin-prettier.js" @@ -14726,17 +14385,17 @@ } }, "node_modules/prettier-plugin-solidity": { - "version": "1.0.0-beta.18", - "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0-beta.18.tgz", - "integrity": "sha512-ezWdsG/jIeClmYBzg8V9Voy8jujt+VxWF8OS3Vld+C3c+3cPVib8D9l8ahTod7O5Df1anK9zo+WiiS5wb1mLmg==", + "version": "1.0.0-beta.19", + "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0-beta.19.tgz", + "integrity": "sha512-xxRQ5ZiiZyUoMFLE9h7HnUDXI/daf1tnmL1msEdcKmyh7ZGQ4YklkYLC71bfBpYU2WruTb5/SFLUaEb3RApg5g==", "dev": true, "dependencies": { - "@solidity-parser/parser": "^0.13.2", - "emoji-regex": "^9.2.2", + "@solidity-parser/parser": "^0.14.0", + "emoji-regex": "^10.0.0", "escape-string-regexp": "^4.0.0", "semver": "^7.3.5", "solidity-comments-extractor": "^0.0.7", - "string-width": "^4.2.2" + "string-width": "^4.2.3" }, "engines": { "node": ">=12" @@ -14745,15 +14404,6 @@ "prettier": "^2.3.0" } }, - "node_modules/prettier-plugin-solidity/node_modules/@solidity-parser/parser": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.13.2.tgz", - "integrity": "sha512-RwHnpRnfrnD2MSPveYoPh8nhofEvX7fgjHk1Oq+NNvCcLx4r1js91CO9o+F/F3fBzOCyvm8kKRTriFICX/odWw==", - "dev": true, - "dependencies": { - "antlr4ts": "^0.5.0-alpha.4" - } - }, "node_modules/prettier-plugin-solidity/node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -15041,13 +14691,13 @@ } }, "node_modules/raw-body": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", - "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", + "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", "dev": true, "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.3", + "bytes": "3.1.1", + "http-errors": "1.8.1", "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, @@ -15056,97 +14706,78 @@ } }, "node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "dependencies": { - "load-json-file": "^4.0.0", + "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "path-type": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, "node_modules/read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, "node_modules/read-pkg-up/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "dependencies": { - "locate-path": "^2.0.0" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true, - "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, "node_modules/readable-stream": { @@ -15199,16 +14830,6 @@ "node": ">=0.10.0" } }, - "node_modules/redeyed": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", - "integrity": "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=", - "dev": true, - "peer": true, - "dependencies": { - "esprima": "~4.0.0" - } - }, "node_modules/regenerator-runtime": { "version": "0.13.9", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", @@ -15351,26 +14972,6 @@ "node": ">= 6" } }, - "node_modules/request-promise": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.6.tgz", - "integrity": "sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==", - "deprecated": "request-promise has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", - "dev": true, - "peer": true, - "dependencies": { - "bluebird": "^3.5.0", - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - }, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, "node_modules/request-promise-core": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", @@ -15413,6 +15014,16 @@ "node": ">=0.6" } }, + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -15563,17 +15174,23 @@ } }, "node_modules/rlp": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.6.tgz", - "integrity": "sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg==", + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", "dev": true, "dependencies": { - "bn.js": "^4.11.1" + "bn.js": "^5.2.0" }, "bin": { "rlp": "bin/rlp" } }, + "node_modules/rlp/node_modules/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", + "dev": true + }, "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -15863,12 +15480,43 @@ "node": ">= 0.6" } }, + "node_modules/send/node_modules/http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/send/node_modules/ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true }, + "node_modules/send/node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "node_modules/send/node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, "node_modules/sentence-case": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-2.1.1.tgz", @@ -16007,9 +15655,9 @@ "dev": true }, "node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, "node_modules/sha.js": { @@ -16124,9 +15772,9 @@ } }, "node_modules/signal-exit": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", - "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", "dev": true }, "node_modules/simple-concat": { @@ -16401,19 +16049,6 @@ "wrap-ansi": "^2.0.0" } }, - "node_modules/solc/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/solc/node_modules/fs-extra": { "version": "0.30.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", @@ -16454,96 +16089,6 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/solc/node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/solc/node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/solc/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/solc/node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/solc/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/solc/node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/solc/node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/solc/node_modules/require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", @@ -16597,18 +16142,6 @@ "node": ">=0.10.0" } }, - "node_modules/solc/node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/solc/node_modules/which-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", @@ -17034,9 +16567,9 @@ } }, "node_modules/solidity-ast": { - "version": "0.4.27", - "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.27.tgz", - "integrity": "sha512-kCP7njjZlZzl2Ijur7gFwcmuAGBgz+v17xMDFmF9B9GOIljMS+6uJ6aUrbuMEcCuff/aDsW7HyMYMccJDxGbiw==", + "version": "0.4.28", + "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.28.tgz", + "integrity": "sha512-RtZCP5tSvZMadVtg9/IfLmAMKDOnQEvG2HA6VnPuoTMxqxsbbn4lQy8jgH3RVbqW0eO1hd7cSCKecb72/OeOIw==", "dev": true }, "node_modules/solidity-comments-extractor": { @@ -17148,42 +16681,6 @@ "node": ">=4" } }, - "node_modules/solidity-coverage/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/solidity-coverage/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/solidity-coverage/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/solidity-coverage/node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -17259,9 +16756,9 @@ } }, "node_modules/solidity-docgen/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", "dev": true, "engines": { "node": ">= 4" @@ -17361,9 +16858,9 @@ } }, "node_modules/source-map-support": { - "version": "0.5.20", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", - "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "dependencies": { "buffer-from": "^1.0.0", @@ -17412,9 +16909,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", - "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==", + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", "dev": true }, "node_modules/split": { @@ -17786,53 +17283,6 @@ "node": ">=8" } }, - "node_modules/supports-hyperlinks": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz", - "integrity": "sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^2.0.0", - "supports-color": "^5.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-hyperlinks/node_modules/has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-hyperlinks/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-hyperlinks/node_modules/supports-color/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, "node_modules/swap-case": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz", @@ -18282,9 +17732,9 @@ } }, "node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, "engines": { "node": ">=0.6" @@ -18333,53 +17783,10 @@ "integrity": "sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==", "dev": true }, - "node_modules/ts-essentials": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-1.0.4.tgz", - "integrity": "sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ==", - "dev": true, - "peer": true - }, - "node_modules/ts-node": { - "version": "8.10.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz", - "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==", - "dev": true, - "peer": true, - "dependencies": { - "arg": "^4.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.17", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "engines": { - "node": ">=6.0.0" - }, - "peerDependencies": { - "typescript": ">=2.7" - } - }, - "node_modules/ts-node/node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/tsconfig-paths": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz", - "integrity": "sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", + "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", "dev": true, "dependencies": { "@types/json5": "^0.0.29", @@ -18506,24 +17913,10 @@ "is-typedarray": "^1.0.0" } }, - "node_modules/typescript": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", - "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", - "dev": true, - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "node_modules/uglify-js": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.2.tgz", - "integrity": "sha512-rtPMlmcO4agTUfz10CbgJ1k6UAoXM2gWb3GoMPPZB/+/Ackf8lNWk11K4rYi2D0apgoFRLtQOZhb+/iGNJq26A==", + "version": "3.14.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.4.tgz", + "integrity": "sha512-AbiSR44J0GoCeV81+oxcy/jDOElO2Bx3d0MfQCUShq7JRXaM4KtQopZsq2vFv8bCq2yMaGrw1FgygUd03RyRDA==", "dev": true, "optional": true, "bin": { @@ -18801,13 +18194,6 @@ "querystring": "0.2.0" } }, - "node_modules/url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", - "dev": true, - "peer": true - }, "node_modules/url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", @@ -18851,13 +18237,13 @@ } }, "node_modules/utf-8-validate": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.6.tgz", - "integrity": "sha512-hoY0gOf9EkCw+nimK21FVKHUIG1BMqSiRwxB/q3A9yKZOrOI99PP77BxmarDqWz6rG3vVYiBWfhG8z2Tl+7fZA==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.7.tgz", + "integrity": "sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q==", "dev": true, "hasInstallScript": true, "dependencies": { - "node-gyp-build": "^4.2.0" + "node-gyp-build": "^4.3.0" }, "engines": { "node": ">=6.14.2" @@ -18889,22 +18275,6 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "node_modules/util.promisify": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz", - "integrity": "sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "for-each": "^0.3.3", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -18915,13 +18285,12 @@ } }, "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, "bin": { - "uuid": "bin/uuid" + "uuid": "dist/bin/uuid" } }, "node_modules/v8-compile-cache": { @@ -19354,28 +18723,28 @@ } }, "node_modules/web3": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.6.0.tgz", - "integrity": "sha512-rWpXnO88MiVX5yTRqMBCVKASxc7QDkXZZUl1D48sKlbX4dt3BAV+nVMVUKCBKiluZ5Bp8pDrVCUdPx/jIYai5Q==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.6.1.tgz", + "integrity": "sha512-c299lLiyb2/WOcxh7TinwvbATaMmrgNIeAzbLbmOKHI0LcwyfsB1eu2ReOIrfrCYDYRW2KAjYr7J7gHawqDNPQ==", "dev": true, "hasInstallScript": true, "dependencies": { - "web3-bzz": "1.6.0", - "web3-core": "1.6.0", - "web3-eth": "1.6.0", - "web3-eth-personal": "1.6.0", - "web3-net": "1.6.0", - "web3-shh": "1.6.0", - "web3-utils": "1.6.0" + "web3-bzz": "1.6.1", + "web3-core": "1.6.1", + "web3-eth": "1.6.1", + "web3-eth-personal": "1.6.1", + "web3-net": "1.6.1", + "web3-shh": "1.6.1", + "web3-utils": "1.6.1" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-bzz": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.6.0.tgz", - "integrity": "sha512-ugYV6BsinwhIi0CsLWINBz4mqN9wR9vNG0WmyEbdECjxcPyr6vkaWt4qi0zqlUxEnYAwGj4EJXNrbjPILntQTQ==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.6.1.tgz", + "integrity": "sha512-JbnFNbRlwwHJZPtVuCxo7rC4U4OTg+mPsyhjgPQJJhS0a6Y54OgVWYk9UA/95HqbmTJwTtX329gJoSsseEfrng==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -19388,63 +18757,62 @@ } }, "node_modules/web3-bzz/node_modules/@types/node": { - "version": "12.20.28", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.28.tgz", - "integrity": "sha512-cBw8gzxUPYX+/5lugXIPksioBSbE42k0fZ39p+4yRzfYjN6++eq9kAPdlY9qm+MXyfbk9EmvCYAYRn380sF46w==", + "version": "12.20.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.37.tgz", + "integrity": "sha512-i1KGxqcvJaLQali+WuypQnXwcplhtNtjs66eNsZpp2P2FL/trJJxx/VWsM0YCL2iMoIJrbXje48lvIQAQ4p2ZA==", "dev": true }, "node_modules/web3-core": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.6.0.tgz", - "integrity": "sha512-o0WsLrJ2yD+HAAc29lGMWJef/MutTyuzpJC0UzLJtIAQJqtpDalzWINEu4j8XYXGk34N/V6vudtzRPo23QEE6g==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.6.1.tgz", + "integrity": "sha512-m+b7UfYvU5cQUAh6NRfxRzH/5B3to1AdEQi1HIQt570cDWlObOOmoO9tY6iJnI5w4acxIO19LqjDMqEJGBYyRQ==", "dev": true, "dependencies": { "@types/bn.js": "^4.11.5", "@types/node": "^12.12.6", "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.6.0", - "web3-core-method": "1.6.0", - "web3-core-requestmanager": "1.6.0", - "web3-utils": "1.6.0" + "web3-core-helpers": "1.6.1", + "web3-core-method": "1.6.1", + "web3-core-requestmanager": "1.6.1", + "web3-utils": "1.6.1" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-core-helpers": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.6.0.tgz", - "integrity": "sha512-H/IAH/0mrgvad/oxVKiAMC7qDzMrPPe/nRKmJOoIsupRg9/frvL62kZZiHhqVD1HMyyswbQFC69QRl7JqWzvxg==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.6.1.tgz", + "integrity": "sha512-om2PZvK1uoWcgMq6JfcSx3241LEIVF6qi2JuHz2SLKiKEW5UsBUaVx0mNCmcZaiuYQCyOsLS3r33q5AdM+v8ng==", "dev": true, "dependencies": { - "web3-eth-iban": "1.6.0", - "web3-utils": "1.6.0" + "web3-eth-iban": "1.6.1", + "web3-utils": "1.6.1" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-core-method": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.6.0.tgz", - "integrity": "sha512-cHekyEil4mtcCOk6Q1Zh4y+2o5pTwsLIxP6Bpt4BRtZgdsyPiadYJpkLAVT/quch5xN7Qs5ZwG5AvRCS3VwD2g==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.6.1.tgz", + "integrity": "sha512-szH5KyIWIaULQDBdDvevQUCHV9lsExJ/oV0ePqK+w015D2SdMPMuhii0WB+HCePaksWO+rr/GAypvV9g2T3N+w==", "dev": true, "dependencies": { - "@ethereumjs/common": "^2.4.0", "@ethersproject/transactions": "^5.0.0-beta.135", - "web3-core-helpers": "1.6.0", - "web3-core-promievent": "1.6.0", - "web3-core-subscriptions": "1.6.0", - "web3-utils": "1.6.0" + "web3-core-helpers": "1.6.1", + "web3-core-promievent": "1.6.1", + "web3-core-subscriptions": "1.6.1", + "web3-utils": "1.6.1" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-core-promievent": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.6.0.tgz", - "integrity": "sha512-ZzsevjMXWkhqW9dnVfTfb1OUcK7jKcKPvPIbQ4boJccNgvNZPZKlo8xB4pkAX38n4c59O5mC7Lt/z2QL/M5CeQ==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.6.1.tgz", + "integrity": "sha512-byJ5s2MQxrWdXd27pWFmujfzsTZK4ik8rDgIV1RFDFc+rHZ2nZhq+VWk7t/Nkrj7EaVXncEgTdPEHc18nx+ocQ==", "dev": true, "dependencies": { "eventemitter3": "4.0.4" @@ -19454,29 +18822,29 @@ } }, "node_modules/web3-core-requestmanager": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.6.0.tgz", - "integrity": "sha512-CY5paPdiDXKTXPWaEUZekDfUXSuoE2vPxolwqzsvKwFWH5+H1NaXgrc+D5HpufgSvTXawTw0fy7IAicg8+PWqA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.6.1.tgz", + "integrity": "sha512-4y7etYEUtkfflyYVBfN1oJtCbVFNhNX1omlEYzezhTnPj3/dT7n+dhUXcqvIhx9iKA13unGfpFge80XNFfcB8A==", "dev": true, "dependencies": { "util": "^0.12.0", - "web3-core-helpers": "1.6.0", - "web3-providers-http": "1.6.0", - "web3-providers-ipc": "1.6.0", - "web3-providers-ws": "1.6.0" + "web3-core-helpers": "1.6.1", + "web3-providers-http": "1.6.1", + "web3-providers-ipc": "1.6.1", + "web3-providers-ws": "1.6.1" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-core-subscriptions": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.6.0.tgz", - "integrity": "sha512-kY9WZUY/m1URSOv3uTLshoZD9ZDiFKReIzHuPUkxFpD5oYNmr1/aPQNPCrrMxKODR7UVX/D90FxWwCYqHhLaxQ==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.6.1.tgz", + "integrity": "sha512-WZwxsYttIojyGQ5RqxuQcKg0IJdDCFpUe4EncS3QKZwxPqWzGmgyLwE0rm7tP+Ux1waJn5CUaaoSCBxWGSun1g==", "dev": true, "dependencies": { "eventemitter3": "4.0.4", - "web3-core-helpers": "1.6.0" + "web3-core-helpers": "1.6.1" }, "engines": { "node": ">=8.0.0" @@ -19492,9 +18860,9 @@ } }, "node_modules/web3-core/node_modules/@types/node": { - "version": "12.20.28", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.28.tgz", - "integrity": "sha512-cBw8gzxUPYX+/5lugXIPksioBSbE42k0fZ39p+4yRzfYjN6++eq9kAPdlY9qm+MXyfbk9EmvCYAYRn380sF46w==", + "version": "12.20.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.37.tgz", + "integrity": "sha512-i1KGxqcvJaLQali+WuypQnXwcplhtNtjs66eNsZpp2P2FL/trJJxx/VWsM0YCL2iMoIJrbXje48lvIQAQ4p2ZA==", "dev": true }, "node_modules/web3-core/node_modules/bignumber.js": { @@ -19507,36 +18875,36 @@ } }, "node_modules/web3-eth": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.6.0.tgz", - "integrity": "sha512-qJMvai//r0be6I9ghU24/152f0zgJfYC23TMszN3Y6jse1JtjCBP2TlTibFcvkUN1RRdIUY5giqO7ZqAYAmp7w==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.6.1.tgz", + "integrity": "sha512-kOV1ZgCKypSo5BQyltRArS7ZC3bRpIKAxSgzl7pUFinUb/MxfbM9KGeNxUXoCfTSErcCQJaDjcS6bSre5EMKuQ==", "dev": true, "dependencies": { - "web3-core": "1.6.0", - "web3-core-helpers": "1.6.0", - "web3-core-method": "1.6.0", - "web3-core-subscriptions": "1.6.0", - "web3-eth-abi": "1.6.0", - "web3-eth-accounts": "1.6.0", - "web3-eth-contract": "1.6.0", - "web3-eth-ens": "1.6.0", - "web3-eth-iban": "1.6.0", - "web3-eth-personal": "1.6.0", - "web3-net": "1.6.0", - "web3-utils": "1.6.0" + "web3-core": "1.6.1", + "web3-core-helpers": "1.6.1", + "web3-core-method": "1.6.1", + "web3-core-subscriptions": "1.6.1", + "web3-eth-abi": "1.6.1", + "web3-eth-accounts": "1.6.1", + "web3-eth-contract": "1.6.1", + "web3-eth-ens": "1.6.1", + "web3-eth-iban": "1.6.1", + "web3-eth-personal": "1.6.1", + "web3-net": "1.6.1", + "web3-utils": "1.6.1" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-eth-abi": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.6.0.tgz", - "integrity": "sha512-fImomGE9McuTMJLwK8Tp0lTUzXqCkWeMm00qPVIwpJ/h7lCw9UFYV9+4m29wSqW6FF+FIZKwc6UBEf9dlx3orA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.6.1.tgz", + "integrity": "sha512-svhYrAlXP9XQtV7poWKydwDJq2CaNLMtmKydNXoOBLcQec6yGMP+v20pgrxF2H6wyTK+Qy0E3/5ciPOqC/VuoQ==", "dev": true, "dependencies": { "@ethersproject/abi": "5.0.7", - "web3-utils": "1.6.0" + "web3-utils": "1.6.1" }, "engines": { "node": ">=8.0.0" @@ -19560,22 +18928,22 @@ } }, "node_modules/web3-eth-accounts": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.6.0.tgz", - "integrity": "sha512-2f6HS4KIH4laAsNCOfbNX3dRiQosqSY2TRK86C8jtAA/QKGdx+5qlPfYzbI2RjG81iayb2+mVbHIaEaBGZ8sGw==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.6.1.tgz", + "integrity": "sha512-rGn3jwnuOKwaQRu4SiShz0YAQ87aVDBKs4HO43+XTCI1q1Y1jn3NOsG3BW9ZHaOckev4+zEyxze/Bsh2oEk24w==", "dev": true, "dependencies": { - "@ethereumjs/common": "^2.3.0", - "@ethereumjs/tx": "^3.2.1", + "@ethereumjs/common": "^2.5.0", + "@ethereumjs/tx": "^3.3.2", "crypto-browserify": "3.12.0", "eth-lib": "0.2.8", "ethereumjs-util": "^7.0.10", "scrypt-js": "^3.0.1", "uuid": "3.3.2", - "web3-core": "1.6.0", - "web3-core-helpers": "1.6.0", - "web3-core-method": "1.6.0", - "web3-utils": "1.6.0" + "web3-core": "1.6.1", + "web3-core-helpers": "1.6.1", + "web3-core-method": "1.6.1", + "web3-utils": "1.6.1" }, "engines": { "node": ">=8.0.0" @@ -19603,19 +18971,19 @@ } }, "node_modules/web3-eth-contract": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.6.0.tgz", - "integrity": "sha512-ZUtO77zFnxuFtrc+D+iJ3AzNgFXAVcKnhEYN7f1PNz/mFjbtE6dJ+ujO0mvMbxIZF02t9IZv0CIXRpK0rDvZAw==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.6.1.tgz", + "integrity": "sha512-GXqTe3mF6kpbOAakiNc7wtJ120/gpuKMTZjuGFKeeY8aobRLfbfgKzM9IpyqVZV2v5RLuGXDuurVN2KPgtu3hQ==", "dev": true, "dependencies": { "@types/bn.js": "^4.11.5", - "web3-core": "1.6.0", - "web3-core-helpers": "1.6.0", - "web3-core-method": "1.6.0", - "web3-core-promievent": "1.6.0", - "web3-core-subscriptions": "1.6.0", - "web3-eth-abi": "1.6.0", - "web3-utils": "1.6.0" + "web3-core": "1.6.1", + "web3-core-helpers": "1.6.1", + "web3-core-method": "1.6.1", + "web3-core-promievent": "1.6.1", + "web3-core-subscriptions": "1.6.1", + "web3-eth-abi": "1.6.1", + "web3-utils": "1.6.1" }, "engines": { "node": ">=8.0.0" @@ -19631,81 +18999,81 @@ } }, "node_modules/web3-eth-ens": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.6.0.tgz", - "integrity": "sha512-AG24PNv9qbYHSpjHcU2pViOII0jvIR7TeojJ2bxXSDqfcgHuRp3NZGKv6xFvT4uNI4LEQHUhSC7bzHoNF5t8CA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.6.1.tgz", + "integrity": "sha512-ngprtbnoRgxg8s1wXt9nXpD3h1P+p7XnKXrp/8GdFI9uDmrbSQPRfzBw86jdZgOmy78hAnWmrHI6pBInmgi2qQ==", "dev": true, "dependencies": { "content-hash": "^2.5.2", "eth-ens-namehash": "2.0.8", - "web3-core": "1.6.0", - "web3-core-helpers": "1.6.0", - "web3-core-promievent": "1.6.0", - "web3-eth-abi": "1.6.0", - "web3-eth-contract": "1.6.0", - "web3-utils": "1.6.0" + "web3-core": "1.6.1", + "web3-core-helpers": "1.6.1", + "web3-core-promievent": "1.6.1", + "web3-eth-abi": "1.6.1", + "web3-eth-contract": "1.6.1", + "web3-utils": "1.6.1" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-eth-iban": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.6.0.tgz", - "integrity": "sha512-HM/bKBS/e8qg0+Eh7B8C/JVG+GkR4AJty17DKRuwMtrh78YsonPj7GKt99zS4n5sDLFww1Imu/ZIk3+K5uJCjw==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.6.1.tgz", + "integrity": "sha512-91H0jXZnWlOoXmc13O9NuQzcjThnWyAHyDn5Yf7u6mmKOhpJSGF/OHlkbpXt1Y4v2eJdEPaVFa+6i8aRyagE7Q==", "dev": true, "dependencies": { "bn.js": "^4.11.9", - "web3-utils": "1.6.0" + "web3-utils": "1.6.1" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-eth-personal": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.6.0.tgz", - "integrity": "sha512-8ohf4qAwbShf4RwES2tLHVqa+pHZnS5Q6tV80sU//bivmlZeyO1W4UWyNn59vu9KPpEYvLseOOC6Muxuvr8mFQ==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.6.1.tgz", + "integrity": "sha512-ItsC89Ln02+irzJjK6ALcLrMZfbVUCqVbmb/ieDKJ+eLW3pNkBNwoUzaydh92d5NzxNZgNxuQWVdlFyYX2hkEw==", "dev": true, "dependencies": { "@types/node": "^12.12.6", - "web3-core": "1.6.0", - "web3-core-helpers": "1.6.0", - "web3-core-method": "1.6.0", - "web3-net": "1.6.0", - "web3-utils": "1.6.0" + "web3-core": "1.6.1", + "web3-core-helpers": "1.6.1", + "web3-core-method": "1.6.1", + "web3-net": "1.6.1", + "web3-utils": "1.6.1" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-eth-personal/node_modules/@types/node": { - "version": "12.20.28", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.28.tgz", - "integrity": "sha512-cBw8gzxUPYX+/5lugXIPksioBSbE42k0fZ39p+4yRzfYjN6++eq9kAPdlY9qm+MXyfbk9EmvCYAYRn380sF46w==", + "version": "12.20.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.37.tgz", + "integrity": "sha512-i1KGxqcvJaLQali+WuypQnXwcplhtNtjs66eNsZpp2P2FL/trJJxx/VWsM0YCL2iMoIJrbXje48lvIQAQ4p2ZA==", "dev": true }, "node_modules/web3-net": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.6.0.tgz", - "integrity": "sha512-LFfG95ovTT2sNHkO1TEfsaKpYcxOSUtbuwHQ0K3G0e5nevKDJkPEFIqIcob40yiwcWoqEjENJP9Bjk8CRrZ99Q==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.6.1.tgz", + "integrity": "sha512-gpnqKEIwfUHh5ik7wsQFlCje1DfcmGv+Sk7LCh1hCqn++HEDQxJ/mZCrMo11ZZpZHCH7c87imdxTg96GJnRxDw==", "dev": true, "dependencies": { - "web3-core": "1.6.0", - "web3-core-method": "1.6.0", - "web3-utils": "1.6.0" + "web3-core": "1.6.1", + "web3-core-method": "1.6.1", + "web3-utils": "1.6.1" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-providers-http": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.6.0.tgz", - "integrity": "sha512-sNxHFNv3lnxpmULt34AS6M36IYB/Hzm2Et4yPNzdP1XE644D8sQBZQZaJQdTaza5HfrlwoqU6AOK935armqGuA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.6.1.tgz", + "integrity": "sha512-xBoKOJxu10+kO3ikamXmBfrWZ/xpQOGy0ocdp7Y81B17En5TXELwlmMXt1UlIgWiyYDhjq4OwlH/VODYqHXy3A==", "dev": true, "dependencies": { - "web3-core-helpers": "1.6.0", + "web3-core-helpers": "1.6.1", "xhr2-cookies": "1.1.0" }, "engines": { @@ -19713,26 +19081,26 @@ } }, "node_modules/web3-providers-ipc": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.6.0.tgz", - "integrity": "sha512-ETYdfhpGiGoWpmmSJnONvnPfd3TPivHEGjXyuX+L5FUsbMOVZj9MFLNIS19Cx/YGL8UWJ/8alLJoTcWSIdz/aA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.6.1.tgz", + "integrity": "sha512-anyoIZlpMzwEQI4lwylTzDrHsVp20v0QUtSTp2B5jInBinmQtyCE7vnbX20jEQ4j5uPwfJabKNtoJsk6a3O4WQ==", "dev": true, "dependencies": { "oboe": "2.1.5", - "web3-core-helpers": "1.6.0" + "web3-core-helpers": "1.6.1" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-providers-ws": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.6.0.tgz", - "integrity": "sha512-eNRmlhOPCpuVYwBrKBBQRLGPFb4U1Uo44r9EWV69Cpo4gP6XeBTl6nkawhLz6DS0fq79apyPfItJVuSfAy77pA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.6.1.tgz", + "integrity": "sha512-FWMEFYb4rYFYRgSFBf/O1Ex4p/YKSlN+JydCtdlJwRimd89qm95CTfs4xGjCskwvXMjV2sarH+f1NPwJXicYpg==", "dev": true, "dependencies": { "eventemitter3": "4.0.4", - "web3-core-helpers": "1.6.0", + "web3-core-helpers": "1.6.1", "websocket": "^1.0.32" }, "engines": { @@ -19740,25 +19108,25 @@ } }, "node_modules/web3-shh": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.6.0.tgz", - "integrity": "sha512-ymN0OFL81WtEeSyb+PFpuUv39fR3frGwsZnIg5EVPZvrOIdaDSFcGSLDmafUt0vKSubvLMVYIBOCskRD6YdtEQ==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.6.1.tgz", + "integrity": "sha512-oP00HbAtybLCGlLOZUYXOdeB9xq88k2l0TtStvKBtmFqRt+zVk5TxEeuOnVPRxNhcA2Un8RUw6FtvgZlWStu9A==", "dev": true, "hasInstallScript": true, "dependencies": { - "web3-core": "1.6.0", - "web3-core-method": "1.6.0", - "web3-core-subscriptions": "1.6.0", - "web3-net": "1.6.0" + "web3-core": "1.6.1", + "web3-core-method": "1.6.1", + "web3-core-subscriptions": "1.6.1", + "web3-net": "1.6.1" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.0.tgz", - "integrity": "sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.1.tgz", + "integrity": "sha512-RidGKv5kOkcerI6jQqDFDoTllQQqV+rPhTzZHhmbqtFObbYpU93uc+yG1LHivRTQhA6llIx67iudc/vzisgO+w==", "dev": true, "dependencies": { "bn.js": "^4.11.9", @@ -19880,35 +19248,6 @@ "node": ">=0.10.0" } }, - "node_modules/webpack/node_modules/cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "node_modules/webpack/node_modules/execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "dependencies": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/webpack/node_modules/find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", @@ -19927,15 +19266,6 @@ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", "dev": true }, - "node_modules/webpack/node_modules/get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/webpack/node_modules/has-flag": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", @@ -19994,16 +19324,6 @@ "node": ">=4" } }, - "node_modules/webpack/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, "node_modules/webpack/node_modules/os-locale": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", @@ -20192,12 +19512,6 @@ "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", "dev": true }, - "node_modules/webpack/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, "node_modules/webpack/node_modules/yargs": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", @@ -20531,9 +19845,9 @@ } }, "node_modules/ws": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", - "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", + "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", "dev": true, "engines": { "node": ">=8.3.0" @@ -20910,26 +20224,16 @@ "engines": { "node": ">=10" } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } } }, "dependencies": { "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "requires": { - "@babel/highlight": "^7.14.5" + "@babel/highlight": "^7.16.0" } }, "@babel/helper-validator-identifier": { @@ -20939,12 +20243,12 @@ "dev": true }, "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -21002,101 +20306,14 @@ } }, "@babel/runtime": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz", - "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", + "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, - "@codechecks/client": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/@codechecks/client/-/client-0.1.11.tgz", - "integrity": "sha512-dSIzHnGNcXxDZtnVQEXWQHXH2v9KrpnK4mDGDxdwSu3l00rOIVwJcttj0wzx0bC0Q6gs65VsQdZH4gkanLdXOA==", - "dev": true, - "peer": true, - "requires": { - "bluebird": "^3.5.3", - "chalk": "^2.4.2", - "commander": "^2.19.0", - "debug": "^4.1.1", - "execa": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "js-yaml": "^3.13.1", - "json5": "^2.1.0", - "lodash": "^4.17.11", - "marked": "^0.7.0", - "marked-terminal": "^3.3.0", - "mkdirp": "^0.5.1", - "ms": "^2.1.1", - "promise": "^8.0.2", - "request": "^2.88.0", - "request-promise": "^4.2.2", - "ts-essentials": "^1.0.2", - "ts-node": "^8.0.2", - "url-join": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "peer": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "peer": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "peer": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true, - "peer": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "peer": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "@ensdomains/address-encoder": { "version": "0.1.9", "resolved": "https://registry.npmjs.org/@ensdomains/address-encoder/-/address-encoder-0.1.9.tgz", @@ -21144,41 +20361,41 @@ }, "dependencies": { "ethers": { - "version": "5.4.7", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.4.7.tgz", - "integrity": "sha512-iZc5p2nqfWK1sj8RabwsPM28cr37Bpq7ehTQ5rWExBr2Y09Sn1lDKZOED26n+TsZMye7Y6mIgQ/1cwpSD8XZew==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.5.1.tgz", + "integrity": "sha512-RodEvUFZI+EmFcE6bwkuJqpCYHazdzeR1nMzg+YWQSmQEsNtfl1KHGfp/FWZYl48bI/g7cgBeP2IlPthjiVngw==", "dev": true, "requires": { - "@ethersproject/abi": "5.4.1", - "@ethersproject/abstract-provider": "5.4.1", - "@ethersproject/abstract-signer": "5.4.1", - "@ethersproject/address": "5.4.0", - "@ethersproject/base64": "5.4.0", - "@ethersproject/basex": "5.4.0", - "@ethersproject/bignumber": "5.4.2", - "@ethersproject/bytes": "5.4.0", - "@ethersproject/constants": "5.4.0", - "@ethersproject/contracts": "5.4.1", - "@ethersproject/hash": "5.4.0", - "@ethersproject/hdnode": "5.4.0", - "@ethersproject/json-wallets": "5.4.0", - "@ethersproject/keccak256": "5.4.0", - "@ethersproject/logger": "5.4.1", - "@ethersproject/networks": "5.4.2", - "@ethersproject/pbkdf2": "5.4.0", - "@ethersproject/properties": "5.4.1", - "@ethersproject/providers": "5.4.5", - "@ethersproject/random": "5.4.0", - "@ethersproject/rlp": "5.4.0", - "@ethersproject/sha2": "5.4.0", - "@ethersproject/signing-key": "5.4.0", - "@ethersproject/solidity": "5.4.0", - "@ethersproject/strings": "5.4.0", - "@ethersproject/transactions": "5.4.0", - "@ethersproject/units": "5.4.0", - "@ethersproject/wallet": "5.4.0", - "@ethersproject/web": "5.4.0", - "@ethersproject/wordlists": "5.4.0" + "@ethersproject/abi": "5.5.0", + "@ethersproject/abstract-provider": "5.5.1", + "@ethersproject/abstract-signer": "5.5.0", + "@ethersproject/address": "5.5.0", + "@ethersproject/base64": "5.5.0", + "@ethersproject/basex": "5.5.0", + "@ethersproject/bignumber": "5.5.0", + "@ethersproject/bytes": "5.5.0", + "@ethersproject/constants": "5.5.0", + "@ethersproject/contracts": "5.5.0", + "@ethersproject/hash": "5.5.0", + "@ethersproject/hdnode": "5.5.0", + "@ethersproject/json-wallets": "5.5.0", + "@ethersproject/keccak256": "5.5.0", + "@ethersproject/logger": "5.5.0", + "@ethersproject/networks": "5.5.0", + "@ethersproject/pbkdf2": "5.5.0", + "@ethersproject/properties": "5.5.0", + "@ethersproject/providers": "5.5.0", + "@ethersproject/random": "5.5.0", + "@ethersproject/rlp": "5.5.0", + "@ethersproject/sha2": "5.5.0", + "@ethersproject/signing-key": "5.5.0", + "@ethersproject/solidity": "5.5.0", + "@ethersproject/strings": "5.5.0", + "@ethersproject/transactions": "5.5.0", + "@ethersproject/units": "5.5.0", + "@ethersproject/wallet": "5.5.0", + "@ethersproject/web": "5.5.0", + "@ethersproject/wordlists": "5.5.0" } } } @@ -21190,31 +20407,30 @@ "dev": true }, "@ethereumjs/block": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@ethereumjs/block/-/block-3.5.1.tgz", - "integrity": "sha512-MoY9bHKABOBK6BW0v1N1Oc0Cve4x/giX67M3TtrVBUsKQTj2eznLGKpydoitxWSZ+WgKKSVhfRMzbCGRwk7T5w==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/block/-/block-3.6.0.tgz", + "integrity": "sha512-dqLo1LtsLG+Oelu5S5tWUDG0pah3QUwV5TJZy2cm19BXDr4ka/S9XBSgao0i09gTcuPlovlHgcs6d7EZ37urjQ==", "dev": true, "requires": { - "@ethereumjs/common": "^2.5.0", - "@ethereumjs/tx": "^3.3.1", - "ethereumjs-util": "^7.1.1", - "merkle-patricia-tree": "^4.2.1" + "@ethereumjs/common": "^2.6.0", + "@ethereumjs/tx": "^3.4.0", + "ethereumjs-util": "^7.1.3", + "merkle-patricia-tree": "^4.2.2" } }, "@ethereumjs/blockchain": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/@ethereumjs/blockchain/-/blockchain-5.4.2.tgz", - "integrity": "sha512-AOAAwz/lw2lciG9gf5wHi7M/qknraXXnLR66lYgbQ04qfyFC3ZE5x/5rLVm1Vu+kfJLlKrYZTmA0IbOkc7kvgw==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/blockchain/-/blockchain-5.5.1.tgz", + "integrity": "sha512-JS2jeKxl3tlaa5oXrZ8mGoVBCz6YqsGG350XVNtHAtNZXKk7pU3rH4xzF2ru42fksMMqzFLzKh9l4EQzmNWDqA==", "dev": true, "requires": { - "@ethereumjs/block": "^3.5.1", - "@ethereumjs/common": "^2.5.0", + "@ethereumjs/block": "^3.6.0", + "@ethereumjs/common": "^2.6.0", "@ethereumjs/ethash": "^1.1.0", "debug": "^2.2.0", - "ethereumjs-util": "^7.1.1", + "ethereumjs-util": "^7.1.3", "level-mem": "^5.0.1", "lru-cache": "^5.1.1", - "rlp": "^2.2.4", "semaphore-async-await": "^1.5.1" }, "dependencies": { @@ -21236,13 +20452,13 @@ } }, "@ethereumjs/common": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", - "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.0.tgz", + "integrity": "sha512-Cq2qS0FTu6O2VU1sgg+WyU9Ps0M6j/BEMHN+hRaECXCV/r0aI78u4N6p52QW/BDVhwWZpCdrvG8X7NJdzlpNUA==", "dev": true, "requires": { "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.1" + "ethereumjs-util": "^7.1.3" } }, "@ethereumjs/ethash": { @@ -21270,34 +20486,33 @@ } }, "@ethereumjs/tx": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", - "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.4.0.tgz", + "integrity": "sha512-WWUwg1PdjHKZZxPPo274ZuPsJCWV3SqATrEKQP1n2DrVYVP1aZIYpo/mFaA0BDoE0tIQmBeimRCEA0Lgil+yYw==", "dev": true, "requires": { - "@ethereumjs/common": "^2.5.0", - "ethereumjs-util": "^7.1.2" + "@ethereumjs/common": "^2.6.0", + "ethereumjs-util": "^7.1.3" } }, "@ethereumjs/vm": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/@ethereumjs/vm/-/vm-5.5.3.tgz", - "integrity": "sha512-0k5OreWnlgXYs54wohgO11jtGI05GDasj2EYxzuaStxTi15CS3vow5wGYELC1pG9xngE1F/mFmKi/f14XRuDow==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/vm/-/vm-5.6.0.tgz", + "integrity": "sha512-J2m/OgjjiGdWF2P9bj/4LnZQ1zRoZhY8mRNVw/N3tXliGI8ai1sI1mlDPkLpeUUM4vq54gH6n0ZlSpz8U/qlYQ==", "dev": true, "requires": { - "@ethereumjs/block": "^3.5.0", - "@ethereumjs/blockchain": "^5.4.1", - "@ethereumjs/common": "^2.5.0", - "@ethereumjs/tx": "^3.3.1", + "@ethereumjs/block": "^3.6.0", + "@ethereumjs/blockchain": "^5.5.0", + "@ethereumjs/common": "^2.6.0", + "@ethereumjs/tx": "^3.4.0", "async-eventemitter": "^0.2.4", "core-js-pure": "^3.0.1", "debug": "^2.2.0", - "ethereumjs-util": "^7.1.1", + "ethereumjs-util": "^7.1.3", "functional-red-black-tree": "^1.0.1", "mcl-wasm": "^0.7.1", - "merkle-patricia-tree": "^4.2.1", - "rustbn.js": "~0.2.0", - "util.promisify": "^1.0.1" + "merkle-patricia-tree": "^4.2.2", + "rustbn.js": "~0.2.0" }, "dependencies": { "debug": { @@ -21318,182 +20533,182 @@ } }, "@ethersproject/abi": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.4.1.tgz", - "integrity": "sha512-9mhbjUk76BiSluiiW4BaYyI58KSbDMMQpCLdsAR+RsT2GyATiNYxVv+pGWRrekmsIdY3I+hOqsYQSTkc8L/mcg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.5.0.tgz", + "integrity": "sha512-loW7I4AohP5KycATvc0MgujU6JyCHPqHdeoo9z3Nr9xEiNioxa65ccdm1+fsoJhkuhdRtfcL8cfyGamz2AxZ5w==", "dev": true, "requires": { - "@ethersproject/address": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/hash": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/strings": "^5.4.0" + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" } }, "@ethersproject/abstract-provider": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.4.1.tgz", - "integrity": "sha512-3EedfKI3LVpjSKgAxoUaI+gB27frKsxzm+r21w9G60Ugk+3wVLQwhi1LsEJAKNV7WoZc8CIpNrATlL1QFABjtQ==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.5.1.tgz", + "integrity": "sha512-m+MA/ful6eKbxpr99xUYeRvLkfnlqzrF8SZ46d/xFB1A7ZVknYc/sXJG0RcufF52Qn2jeFj1hhcoQ7IXjNKUqg==", "dev": true, "requires": { - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/networks": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/transactions": "^5.4.0", - "@ethersproject/web": "^5.4.0" + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/networks": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/web": "^5.5.0" } }, "@ethersproject/abstract-signer": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.4.1.tgz", - "integrity": "sha512-SkkFL5HVq1k4/25dM+NWP9MILgohJCgGv5xT5AcRruGz4ILpfHeBtO/y6j+Z3UN/PAjDeb4P7E51Yh8wcGNLGA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.5.0.tgz", + "integrity": "sha512-lj//7r250MXVLKI7sVarXAbZXbv9P50lgmJQGr2/is82EwEb8r7HrxsmMqAjTsztMYy7ohrIhGMIml+Gx4D3mA==", "dev": true, "requires": { - "@ethersproject/abstract-provider": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0" + "@ethersproject/abstract-provider": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0" } }, "@ethersproject/address": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.4.0.tgz", - "integrity": "sha512-SD0VgOEkcACEG/C6xavlU1Hy3m5DGSXW3CUHkaaEHbAPPsgi0coP5oNPsxau8eTlZOk/bpa/hKeCNoK5IzVI2Q==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.5.0.tgz", + "integrity": "sha512-l4Nj0eWlTUh6ro5IbPTgbpT4wRbdH5l8CQf7icF7sb/SI3Nhd9Y9HzhonTSTi6CefI0necIw7LJqQPopPLZyWw==", "dev": true, "requires": { - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/rlp": "^5.4.0" + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/rlp": "^5.5.0" } }, "@ethersproject/base64": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.4.0.tgz", - "integrity": "sha512-CjQw6E17QDSSC5jiM9YpF7N1aSCHmYGMt9bWD8PWv6YPMxjsys2/Q8xLrROKI3IWJ7sFfZ8B3flKDTM5wlWuZQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.5.0.tgz", + "integrity": "sha512-tdayUKhU1ljrlHzEWbStXazDpsx4eg1dBXUSI6+mHlYklOXoXF6lZvw8tnD6oVaWfnMxAgRSKROg3cVKtCcppA==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.4.0" + "@ethersproject/bytes": "^5.5.0" } }, "@ethersproject/basex": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.4.0.tgz", - "integrity": "sha512-J07+QCVJ7np2bcpxydFVf/CuYo9mZ7T73Pe7KQY4c1lRlrixMeblauMxHXD0MPwFmUHZIILDNViVkykFBZylbg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.5.0.tgz", + "integrity": "sha512-ZIodwhHpVJ0Y3hUCfUucmxKsWQA5TMnavp5j/UOuDdzZWzJlRmuOjcTMIGgHCYuZmHt36BfiSyQPSRskPxbfaQ==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/properties": "^5.4.0" + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/properties": "^5.5.0" } }, "@ethersproject/bignumber": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.4.2.tgz", - "integrity": "sha512-oIBDhsKy5bs7j36JlaTzFgNPaZjiNDOXsdSgSpXRucUl+UA6L/1YLlFeI3cPAoodcenzF4nxNPV13pcy7XbWjA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.5.0.tgz", + "integrity": "sha512-6Xytlwvy6Rn3U3gKEc1vP7nR92frHkv6wtVr95LFR3jREXiCPzdWxKQ1cx4JGQBXxcguAwjA8murlYN2TSiEbg==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", "bn.js": "^4.11.9" } }, "@ethersproject/bytes": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.4.0.tgz", - "integrity": "sha512-H60ceqgTHbhzOj4uRc/83SCN9d+BSUnOkrr2intevqdtEMO1JFVZ1XL84OEZV+QjV36OaZYxtnt4lGmxcGsPfA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.5.0.tgz", + "integrity": "sha512-ABvc7BHWhZU9PNM/tANm/Qx4ostPGadAuQzWTr3doklZOhDlmcBqclrQe/ZXUIj3K8wC28oYeuRa+A37tX9kog==", "dev": true, "requires": { - "@ethersproject/logger": "^5.4.0" + "@ethersproject/logger": "^5.5.0" } }, "@ethersproject/constants": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.4.0.tgz", - "integrity": "sha512-tzjn6S7sj9+DIIeKTJLjK9WGN2Tj0P++Z8ONEIlZjyoTkBuODN+0VfhAyYksKi43l1Sx9tX2VlFfzjfmr5Wl3Q==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.5.0.tgz", + "integrity": "sha512-2MsRRVChkvMWR+GyMGY4N1sAX9Mt3J9KykCsgUFd/1mwS0UH1qw+Bv9k1UJb3X3YJYFco9H20pjSlOIfCG5HYQ==", "dev": true, "requires": { - "@ethersproject/bignumber": "^5.4.0" + "@ethersproject/bignumber": "^5.5.0" } }, "@ethersproject/contracts": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.4.1.tgz", - "integrity": "sha512-m+z2ZgPy4pyR15Je//dUaymRUZq5MtDajF6GwFbGAVmKz/RF+DNIPwF0k5qEcL3wPGVqUjFg2/krlCRVTU4T5w==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.5.0.tgz", + "integrity": "sha512-2viY7NzyvJkh+Ug17v7g3/IJC8HqZBDcOjYARZLdzRxrfGlRgmYgl6xPRKVbEzy1dWKw/iv7chDcS83pg6cLxg==", "dev": true, "requires": { - "@ethersproject/abi": "^5.4.0", - "@ethersproject/abstract-provider": "^5.4.0", - "@ethersproject/abstract-signer": "^5.4.0", - "@ethersproject/address": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/transactions": "^5.4.0" + "@ethersproject/abi": "^5.5.0", + "@ethersproject/abstract-provider": "^5.5.0", + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/transactions": "^5.5.0" } }, "@ethersproject/hash": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.4.0.tgz", - "integrity": "sha512-xymAM9tmikKgbktOCjW60Z5sdouiIIurkZUr9oW5NOex5uwxrbsYG09kb5bMcNjlVeJD3yPivTNzViIs1GCbqA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.5.0.tgz", + "integrity": "sha512-dnGVpK1WtBjmnp3mUT0PlU2MpapnwWI0PibldQEq1408tQBAbZpPidkWoVVuNMOl/lISO3+4hXZWCL3YV7qzfg==", "dev": true, "requires": { - "@ethersproject/abstract-signer": "^5.4.0", - "@ethersproject/address": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/strings": "^5.4.0" + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" } }, "@ethersproject/hdnode": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.4.0.tgz", - "integrity": "sha512-pKxdS0KAaeVGfZPp1KOiDLB0jba11tG6OP1u11QnYfb7pXn6IZx0xceqWRr6ygke8+Kw74IpOoSi7/DwANhy8Q==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.5.0.tgz", + "integrity": "sha512-mcSOo9zeUg1L0CoJH7zmxwUG5ggQHU1UrRf8jyTYy6HxdZV+r0PBoL1bxr+JHIPXRzS6u/UW4mEn43y0tmyF8Q==", "dev": true, "requires": { - "@ethersproject/abstract-signer": "^5.4.0", - "@ethersproject/basex": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/pbkdf2": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/sha2": "^5.4.0", - "@ethersproject/signing-key": "^5.4.0", - "@ethersproject/strings": "^5.4.0", - "@ethersproject/transactions": "^5.4.0", - "@ethersproject/wordlists": "^5.4.0" + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/basex": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/pbkdf2": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/sha2": "^5.5.0", + "@ethersproject/signing-key": "^5.5.0", + "@ethersproject/strings": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/wordlists": "^5.5.0" } }, "@ethersproject/json-wallets": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.4.0.tgz", - "integrity": "sha512-igWcu3fx4aiczrzEHwG1xJZo9l1cFfQOWzTqwRw/xcvxTk58q4f9M7cjh51EKphMHvrJtcezJ1gf1q1AUOfEQQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.5.0.tgz", + "integrity": "sha512-9lA21XQnCdcS72xlBn1jfQdj2A1VUxZzOzi9UkNdnokNKke/9Ya2xA9aIK1SC3PQyBDLt4C+dfps7ULpkvKikQ==", "dev": true, "requires": { - "@ethersproject/abstract-signer": "^5.4.0", - "@ethersproject/address": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/hdnode": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/pbkdf2": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/random": "^5.4.0", - "@ethersproject/strings": "^5.4.0", - "@ethersproject/transactions": "^5.4.0", + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/hdnode": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/pbkdf2": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/random": "^5.5.0", + "@ethersproject/strings": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", "aes-js": "3.0.0", "scrypt-js": "3.0.1" }, @@ -21507,80 +20722,72 @@ } }, "@ethersproject/keccak256": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.4.0.tgz", - "integrity": "sha512-FBI1plWet+dPUvAzPAeHzRKiPpETQzqSUWR1wXJGHVWi4i8bOSrpC3NwpkPjgeXG7MnugVc1B42VbfnQikyC/A==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.5.0.tgz", + "integrity": "sha512-5VoFCTjo2rYbBe1l2f4mccaRFN/4VQEYFwwn04aJV2h7qf4ZvI2wFxUE1XOX+snbwCLRzIeikOqtAoPwMza9kg==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.4.0", - "js-sha3": "0.5.7" - }, - "dependencies": { - "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=", - "dev": true - } + "@ethersproject/bytes": "^5.5.0", + "js-sha3": "0.8.0" } }, "@ethersproject/logger": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.4.1.tgz", - "integrity": "sha512-DZ+bRinnYLPw1yAC64oRl0QyVZj43QeHIhVKfD/+YwSz4wsv1pfwb5SOFjz+r710YEWzU6LrhuSjpSO+6PeE4A==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.5.0.tgz", + "integrity": "sha512-rIY/6WPm7T8n3qS2vuHTUBPdXHl+rGxWxW5okDfo9J4Z0+gRRZT0msvUdIJkE4/HS29GUMziwGaaKO2bWONBrg==", "dev": true }, "@ethersproject/networks": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.4.2.tgz", - "integrity": "sha512-eekOhvJyBnuibfJnhtK46b8HimBc5+4gqpvd1/H9LEl7Q7/qhsIhM81dI9Fcnjpk3jB1aTy6bj0hz3cifhNeYw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.5.0.tgz", + "integrity": "sha512-KWfP3xOnJeF89Uf/FCJdV1a2aDJe5XTN2N52p4fcQ34QhDqQFkgQKZ39VGtiqUgHcLI8DfT0l9azC3KFTunqtA==", "dev": true, "requires": { - "@ethersproject/logger": "^5.4.0" + "@ethersproject/logger": "^5.5.0" } }, "@ethersproject/pbkdf2": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.4.0.tgz", - "integrity": "sha512-x94aIv6tiA04g6BnazZSLoRXqyusawRyZWlUhKip2jvoLpzJuLb//KtMM6PEovE47pMbW+Qe1uw+68ameJjB7g==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.5.0.tgz", + "integrity": "sha512-SaDvQFvXPnz1QGpzr6/HToLifftSXGoXrbpZ6BvoZhmx4bNLHrxDe8MZisuecyOziP1aVEwzC2Hasj+86TgWVg==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/sha2": "^5.4.0" + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/sha2": "^5.5.0" } }, "@ethersproject/properties": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.4.1.tgz", - "integrity": "sha512-cyCGlF8wWlIZyizsj2PpbJ9I7rIlUAfnHYwy/T90pdkSn/NFTa5YWZx2wTJBe9V7dD65dcrrEMisCRUJiq6n3w==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.5.0.tgz", + "integrity": "sha512-l3zRQg3JkD8EL3CPjNK5g7kMx4qSwiR60/uk5IVjd3oq1MZR5qUg40CNOoEJoX5wc3DyY5bt9EbMk86C7x0DNA==", "dev": true, "requires": { - "@ethersproject/logger": "^5.4.0" + "@ethersproject/logger": "^5.5.0" } }, "@ethersproject/providers": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.4.5.tgz", - "integrity": "sha512-1GkrvkiAw3Fj28cwi1Sqm8ED1RtERtpdXmRfwIBGmqBSN5MoeRUHuwHPppMtbPayPgpFcvD7/Gdc9doO5fGYgw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.5.0.tgz", + "integrity": "sha512-xqMbDnS/FPy+J/9mBLKddzyLLAQFjrVff5g00efqxPzcAwXiR+SiCGVy6eJ5iAIirBOATjx7QLhDNPGV+AEQsw==", "dev": true, "requires": { - "@ethersproject/abstract-provider": "^5.4.0", - "@ethersproject/abstract-signer": "^5.4.0", - "@ethersproject/address": "^5.4.0", - "@ethersproject/basex": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/hash": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/networks": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/random": "^5.4.0", - "@ethersproject/rlp": "^5.4.0", - "@ethersproject/sha2": "^5.4.0", - "@ethersproject/strings": "^5.4.0", - "@ethersproject/transactions": "^5.4.0", - "@ethersproject/web": "^5.4.0", + "@ethersproject/abstract-provider": "^5.5.0", + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/basex": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/networks": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/random": "^5.5.0", + "@ethersproject/rlp": "^5.5.0", + "@ethersproject/sha2": "^5.5.0", + "@ethersproject/strings": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/web": "^5.5.0", "bech32": "1.1.4", "ws": "7.4.6" }, @@ -21595,149 +20802,150 @@ } }, "@ethersproject/random": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.4.0.tgz", - "integrity": "sha512-pnpWNQlf0VAZDEOVp1rsYQosmv2o0ITS/PecNw+mS2/btF8eYdspkN0vIXrCMtkX09EAh9bdk8GoXmFXM1eAKw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.5.0.tgz", + "integrity": "sha512-egGYZwZ/YIFKMHcoBUo8t3a8Hb/TKYX8BCBoLjudVCZh892welR3jOxgOmb48xznc9bTcMm7Tpwc1gHC1PFNFQ==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0" + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0" } }, "@ethersproject/rlp": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.4.0.tgz", - "integrity": "sha512-0I7MZKfi+T5+G8atId9QaQKHRvvasM/kqLyAH4XxBCBchAooH2EX5rL9kYZWwcm3awYV+XC7VF6nLhfeQFKVPg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.5.0.tgz", + "integrity": "sha512-hLv8XaQ8PTI9g2RHoQGf/WSxBfTB/NudRacbzdxmst5VHAqd1sMibWG7SENzT5Dj3yZ3kJYx+WiRYEcQTAkcYA==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0" + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0" } }, "@ethersproject/sha2": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.4.0.tgz", - "integrity": "sha512-siheo36r1WD7Cy+bDdE1BJ8y0bDtqXCOxRMzPa4bV1TGt/eTUUt03BHoJNB6reWJD8A30E/pdJ8WFkq+/uz4Gg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.5.0.tgz", + "integrity": "sha512-B5UBoglbCiHamRVPLA110J+2uqsifpZaTmid2/7W5rbtYVz6gus6/hSDieIU/6gaKIDcOj12WnOdiymEUHIAOA==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", "hash.js": "1.1.7" } }, "@ethersproject/signing-key": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.4.0.tgz", - "integrity": "sha512-q8POUeywx6AKg2/jX9qBYZIAmKSB4ubGXdQ88l40hmATj29JnG5pp331nAWwwxPn2Qao4JpWHNZsQN+bPiSW9A==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.5.0.tgz", + "integrity": "sha512-5VmseH7qjtNmDdZBswavhotYbWB0bOwKIlOTSlX14rKn5c11QmJwGt4GHeo7NrL/Ycl7uo9AHvEqs5xZgFBTng==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", "bn.js": "^4.11.9", "elliptic": "6.5.4", "hash.js": "1.1.7" } }, "@ethersproject/solidity": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.4.0.tgz", - "integrity": "sha512-XFQTZ7wFSHOhHcV1DpcWj7VXECEiSrBuv7JErJvB9Uo+KfCdc3QtUZV+Vjh/AAaYgezUEKbCtE6Khjm44seevQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.5.0.tgz", + "integrity": "sha512-9NgZs9LhGMj6aCtHXhtmFQ4AN4sth5HuFXVvAQtzmm0jpSCNOTGtrHZJAeYTh7MBjRR8brylWZxBZR9zDStXbw==", "dev": true, "requires": { - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/sha2": "^5.4.0", - "@ethersproject/strings": "^5.4.0" + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/sha2": "^5.5.0", + "@ethersproject/strings": "^5.5.0" } }, "@ethersproject/strings": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.4.0.tgz", - "integrity": "sha512-k/9DkH5UGDhv7aReXLluFG5ExurwtIpUfnDNhQA29w896Dw3i4uDTz01Quaptbks1Uj9kI8wo9tmW73wcIEaWA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.5.0.tgz", + "integrity": "sha512-9fy3TtF5LrX/wTrBaT8FGE6TDJyVjOvXynXJz5MT5azq+E6D92zuKNx7i29sWW2FjVOaWjAsiZ1ZWznuduTIIQ==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/logger": "^5.4.0" + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/logger": "^5.5.0" } }, "@ethersproject/transactions": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.4.0.tgz", - "integrity": "sha512-s3EjZZt7xa4BkLknJZ98QGoIza94rVjaEed0rzZ/jB9WrIuu/1+tjvYCWzVrystXtDswy7TPBeIepyXwSYa4WQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.5.0.tgz", + "integrity": "sha512-9RZYSKX26KfzEd/1eqvv8pLauCKzDTub0Ko4LfIgaERvRuwyaNV78mJs7cpIgZaDl6RJui4o49lHwwCM0526zA==", "dev": true, "requires": { - "@ethersproject/address": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/rlp": "^5.4.0", - "@ethersproject/signing-key": "^5.4.0" + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/rlp": "^5.5.0", + "@ethersproject/signing-key": "^5.5.0" } }, "@ethersproject/units": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.4.0.tgz", - "integrity": "sha512-Z88krX40KCp+JqPCP5oPv5p750g+uU6gopDYRTBGcDvOASh6qhiEYCRatuM/suC4S2XW9Zz90QI35MfSrTIaFg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.5.0.tgz", + "integrity": "sha512-7+DpjiZk4v6wrikj+TCyWWa9dXLNU73tSTa7n0TSJDxkYbV3Yf1eRh9ToMLlZtuctNYu9RDNNy2USq3AdqSbag==", "dev": true, "requires": { - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/logger": "^5.4.0" + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/logger": "^5.5.0" } }, "@ethersproject/wallet": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.4.0.tgz", - "integrity": "sha512-wU29majLjM6AjCjpat21mPPviG+EpK7wY1+jzKD0fg3ui5fgedf2zEu1RDgpfIMsfn8fJHJuzM4zXZ2+hSHaSQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.5.0.tgz", + "integrity": "sha512-Mlu13hIctSYaZmUOo7r2PhNSd8eaMPVXe1wxrz4w4FCE4tDYBywDH+bAR1Xz2ADyXGwqYMwstzTrtUVIsKDO0Q==", "dev": true, "requires": { - "@ethersproject/abstract-provider": "^5.4.0", - "@ethersproject/abstract-signer": "^5.4.0", - "@ethersproject/address": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/hash": "^5.4.0", - "@ethersproject/hdnode": "^5.4.0", - "@ethersproject/json-wallets": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/random": "^5.4.0", - "@ethersproject/signing-key": "^5.4.0", - "@ethersproject/transactions": "^5.4.0", - "@ethersproject/wordlists": "^5.4.0" + "@ethersproject/abstract-provider": "^5.5.0", + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/hdnode": "^5.5.0", + "@ethersproject/json-wallets": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/random": "^5.5.0", + "@ethersproject/signing-key": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/wordlists": "^5.5.0" } }, "@ethersproject/web": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.4.0.tgz", - "integrity": "sha512-1bUusGmcoRLYgMn6c1BLk1tOKUIFuTg8j+6N8lYlbMpDesnle+i3pGSagGNvwjaiLo4Y5gBibwctpPRmjrh4Og==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.5.0.tgz", + "integrity": "sha512-BEgY0eL5oH4mAo37TNYVrFeHsIXLRxggCRG/ksRIxI2X5uj5IsjGmcNiRN/VirQOlBxcUhCgHhaDLG4m6XAVoA==", "dev": true, "requires": { - "@ethersproject/base64": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/strings": "^5.4.0" + "@ethersproject/base64": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" } }, "@ethersproject/wordlists": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.4.0.tgz", - "integrity": "sha512-FemEkf6a+EBKEPxlzeVgUaVSodU7G0Na89jqKjmWMlDB0tomoU8RlEMgUvXyqtrg8N4cwpLh8nyRnm1Nay1isA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.5.0.tgz", + "integrity": "sha512-bL0UTReWDiaQJJYOC9sh/XcRu/9i2jMrzf8VLRmPKx58ckSlOJiohODkECCO50dtLZHcGU6MLXQ4OOrgBwP77Q==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/hash": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/strings": "^5.4.0" + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" } }, "@nodelib/fs.scandir": { @@ -21806,23 +21014,23 @@ } }, "@oclif/command": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@oclif/command/-/command-1.8.0.tgz", - "integrity": "sha512-5vwpq6kbvwkQwKqAoOU3L72GZ3Ta8RRrewKj9OJRolx28KLJJ8Dg9Rf7obRwt5jQA9bkYd8gqzMTrI7H3xLfaw==", + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@oclif/command/-/command-1.8.6.tgz", + "integrity": "sha512-tIcGPpf7ndGe0Sp22RbPhZbwKjfrebHzCfe1SHRlqlJNy2xS3FT50i9p+dZmF+7Zpn4CEcBHag1TCdfFCTc1vQ==", "dev": true, "requires": { - "@oclif/config": "^1.15.1", - "@oclif/errors": "^1.3.3", - "@oclif/parser": "^3.8.3", - "@oclif/plugin-help": "^3", + "@oclif/config": "^1.17.1", + "@oclif/errors": "^1.3.5", + "@oclif/parser": "^3.8.6", + "@oclif/plugin-help": "^3.2.8", "debug": "^4.1.1", "semver": "^7.3.2" } }, "@oclif/config": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@oclif/config/-/config-1.17.0.tgz", - "integrity": "sha512-Lmfuf6ubjQ4ifC/9bz1fSCHc6F6E653oyaRXxg+lgT4+bYf9bk+nqrUpAbrXyABkCqgIBiFr3J4zR/kiFdE1PA==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/@oclif/config/-/config-1.18.1.tgz", + "integrity": "sha512-twRJO5RRl3CCDaAASb6LiynfFQl/SbkWWOQy1l0kJZSMPysEhz+fk3BKfmlCCm451Btkp4UezHUwI1JtH+/zYg==", "dev": true, "requires": { "@oclif/errors": "^1.3.3", @@ -21848,9 +21056,9 @@ } }, "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", "dev": true }, "is-wsl": { @@ -21912,87 +21120,41 @@ "dev": true }, "@oclif/parser": { - "version": "3.8.5", - "resolved": "https://registry.npmjs.org/@oclif/parser/-/parser-3.8.5.tgz", - "integrity": "sha512-yojzeEfmSxjjkAvMRj0KzspXlMjCfBzNRPkWw8ZwOSoNWoJn+OCS/m/S+yfV6BvAM4u2lTzX9Y5rCbrFIgkJLg==", + "version": "3.8.6", + "resolved": "https://registry.npmjs.org/@oclif/parser/-/parser-3.8.6.tgz", + "integrity": "sha512-tXb0NKgSgNxmf6baN6naK+CCwOueaFk93FG9u202U7mTBHUKsioOUlw1SG/iPi9aJM3WE4pHLXmty59pci0OEw==", "dev": true, "requires": { "@oclif/errors": "^1.2.2", "@oclif/linewrap": "^1.0.0", - "chalk": "^2.4.2", - "tslib": "^1.9.3" + "chalk": "^4.1.0", + "tslib": "^2.0.0" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true } } }, "@oclif/plugin-help": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-3.2.3.tgz", - "integrity": "sha512-l2Pd0lbOMq4u/7xsl9hqISFqyR9gWEz/8+05xmrXFr67jXyS6EUCQB+mFBa0wepltrmJu0sAFg9AvA2mLaMMqQ==", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-3.2.9.tgz", + "integrity": "sha512-uY3qGjwSWfe9ovxafv8AQes5LFCKryVR256hU/vVtH7vtS7a3Sgx2lWozsfEssA9PAaY/eDNw8TRQaqHDSjPKw==", "dev": true, "requires": { - "@oclif/command": "^1.5.20", - "@oclif/config": "^1.15.1", - "@oclif/errors": "^1.2.2", - "chalk": "^4.1.0", + "@oclif/command": "^1.8.5", + "@oclif/config": "^1.17.1", + "@oclif/errors": "^1.3.5", + "chalk": "^4.1.2", "indent-string": "^4.0.0", - "lodash.template": "^4.4.0", + "lodash": "^4.17.21", "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "widest-line": "^3.1.0", @@ -22319,10 +21481,13 @@ "dev": true }, "@solidity-parser/parser": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.11.1.tgz", - "integrity": "sha512-H8BSBoKE8EubJa0ONqecA2TviT3TnHeC4NpgnAHSUiuhZoQBfPB4L2P9bs8R6AoTW10Endvh3vc+fomVMIDIYQ==", - "dev": true + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.0.tgz", + "integrity": "sha512-cX0JJRcmPtNUJpzD2K7FdA7qQsTOk1UZnFx2k7qAg9ZRvuaH5NBe5IEdBMXGlmf2+FmjhqbygJ26H8l2SV7aKQ==", + "dev": true, + "requires": { + "antlr4ts": "^0.5.0-alpha.4" + } }, "@szmarczak/http-timer": { "version": "1.1.2", @@ -22439,18 +21604,19 @@ } }, "@truffle/contract": { - "version": "4.3.37", - "resolved": "https://registry.npmjs.org/@truffle/contract/-/contract-4.3.37.tgz", - "integrity": "sha512-lMPpyez1FFXEKbfqYZ4yDqvEEl4m/SiRYm+x1/yu2coCi5uaWaIZDE0pJ++tVDueQN8tJVZ6oTN9i5oAvjShzA==", + "version": "4.3.42", + "resolved": "https://registry.npmjs.org/@truffle/contract/-/contract-4.3.42.tgz", + "integrity": "sha512-CWbKz3L6ldAoh0JX14nNzOyXxWsLiGX5PYpswrwOy0Uk4JYpbVtpSzoQxJbnDTfLUciowfCdG/4QMZ+zo2WVqA==", "dev": true, "requires": { "@ensdomains/ensjs": "^2.0.1", "@truffle/blockchain-utils": "^0.0.31", "@truffle/contract-schema": "^3.4.3", - "@truffle/debug-utils": "^5.1.17", + "@truffle/debug-utils": "^6.0.0", "@truffle/error": "^0.0.14", "@truffle/interface-adapter": "^0.5.8", "bignumber.js": "^7.2.1", + "debug": "^4.3.1", "ethers": "^4.0.32", "web3": "1.5.3", "web3-core-helpers": "1.5.3", @@ -22483,9 +21649,9 @@ "dev": true }, "@truffle/codec": { - "version": "0.11.16", - "resolved": "https://registry.npmjs.org/@truffle/codec/-/codec-0.11.16.tgz", - "integrity": "sha512-IcqNpteZUTeyROIZTPSicryU3k9P36yZXlYCI0Q8V+DlplhSlrdnSqaIEE159uMAdSqGarqCGoTYWUGhBKOrkQ==", + "version": "0.11.19", + "resolved": "https://registry.npmjs.org/@truffle/codec/-/codec-0.11.19.tgz", + "integrity": "sha512-ZxsfRWBE4wcQ01NCpMWH6VRJ/q3mGTl3ku8ln+WJ2P6McIMsS37imO3d8N9NWiQ49klc9kJfT3mKnOVMLTJhIg==", "dev": true, "requires": { "@truffle/abi-utils": "^0.2.4", @@ -22512,17 +21678,17 @@ } }, "@truffle/debug-utils": { - "version": "5.1.17", - "resolved": "https://registry.npmjs.org/@truffle/debug-utils/-/debug-utils-5.1.17.tgz", - "integrity": "sha512-aAcs4qA1hwajtFG/gUXXFAvjRxdz6uAl8bmqOEwYxrXTHBzeWz9CiLgyxlIOZgZCeiUmqMNxvT7FORi6FSdfJg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@truffle/debug-utils/-/debug-utils-6.0.0.tgz", + "integrity": "sha512-MoN8aQQX2DLLEMMlfF+8ZFtjh0FJsPYwuI4NDcn7upoORe/QoRHeypIhQgaepOXBKwIXW0mplBkAk/nm+cQp8A==", "dev": true, "requires": { - "@truffle/codec": "^0.11.16", + "@truffle/codec": "^0.11.19", "@trufflesuite/chromafi": "^2.2.2", "bn.js": "^5.1.3", "chalk": "^2.4.2", "debug": "^4.3.1", - "highlightjs-solidity": "^2.0.1" + "highlightjs-solidity": "^2.0.2" }, "dependencies": { "bn.js": { @@ -22568,9 +21734,9 @@ } }, "@types/node": { - "version": "12.20.28", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.28.tgz", - "integrity": "sha512-cBw8gzxUPYX+/5lugXIPksioBSbE42k0fZ39p+4yRzfYjN6++eq9kAPdlY9qm+MXyfbk9EmvCYAYRn380sF46w==", + "version": "12.20.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.37.tgz", + "integrity": "sha512-i1KGxqcvJaLQali+WuypQnXwcplhtNtjs66eNsZpp2P2FL/trJJxx/VWsM0YCL2iMoIJrbXje48lvIQAQ4p2ZA==", "dev": true }, "ansi-styles": { @@ -22626,9 +21792,9 @@ "dev": true }, "highlightjs-solidity": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/highlightjs-solidity/-/highlightjs-solidity-2.0.1.tgz", - "integrity": "sha512-9YY+HQpXMTrF8HgRByjeQhd21GXAz2ktMPTcs6oWSj5HJR52fgsNoelMOmgigwcpt9j4tu4IVSaWaJB2n2TbvQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/highlightjs-solidity/-/highlightjs-solidity-2.0.2.tgz", + "integrity": "sha512-q0aYUKiZ9MPQg41qx/KpXKaCpqql50qTvmwGYyLFfcjt9AE/+C9CwjVIdJZc7EYj6NGgJuFJ4im1gfgrzUU1fQ==", "dev": true }, "supports-color": { @@ -23047,9 +22213,9 @@ } }, "@types/node": { - "version": "12.20.28", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.28.tgz", - "integrity": "sha512-cBw8gzxUPYX+/5lugXIPksioBSbE42k0fZ39p+4yRzfYjN6++eq9kAPdlY9qm+MXyfbk9EmvCYAYRn380sF46w==", + "version": "12.20.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.37.tgz", + "integrity": "sha512-i1KGxqcvJaLQali+WuypQnXwcplhtNtjs66eNsZpp2P2FL/trJJxx/VWsM0YCL2iMoIJrbXje48lvIQAQ4p2ZA==", "dev": true }, "bignumber.js": { @@ -23450,9 +22616,9 @@ } }, "@types/node": { - "version": "12.20.28", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.28.tgz", - "integrity": "sha512-cBw8gzxUPYX+/5lugXIPksioBSbE42k0fZ39p+4yRzfYjN6++eq9kAPdlY9qm+MXyfbk9EmvCYAYRn380sF46w==", + "version": "12.20.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.37.tgz", + "integrity": "sha512-i1KGxqcvJaLQali+WuypQnXwcplhtNtjs66eNsZpp2P2FL/trJJxx/VWsM0YCL2iMoIJrbXje48lvIQAQ4p2ZA==", "dev": true }, "bignumber.js": { @@ -23910,9 +23076,9 @@ } }, "@types/glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", "dev": true, "requires": { "@types/minimatch": "*", @@ -23955,9 +23121,9 @@ "dev": true }, "@types/node": { - "version": "16.10.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.3.tgz", - "integrity": "sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ==", + "version": "16.11.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.11.tgz", + "integrity": "sha512-KB0sixD67CeecHC33MYn+eYARkqTheIRNuu97y2XMjR7Wu3XibO1vaY6VBV6O/a89SPI81cEUIYT87UqUWlZNw==", "dev": true }, "@types/pbkdf2": { @@ -24236,13 +23402,6 @@ "color-convert": "^2.0.1" } }, - "ansicolors": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", - "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", - "dev": true, - "peer": true - }, "antlr4": { "version": "4.7.1", "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.7.1.tgz", @@ -24280,13 +23439,6 @@ "integrity": "sha512-JtHjzZmJxtzfTSjsCyHgPR155HBe5WGyUyHTaEkfy46qhwCFKx1Epm6nAxgUG3WfUZP1dWhGqj9Z2NOBeZ+uBw==", "dev": true }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "peer": true - }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -24369,9 +23521,9 @@ "dev": true }, "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dev": true, "requires": { "safer-buffer": "~2.1.0" @@ -24568,9 +23720,9 @@ } }, "base-x": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", - "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", "dev": true, "requires": { "safe-buffer": "^5.0.1" @@ -24712,6 +23864,12 @@ "type-is": "~1.6.17" }, "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -24769,6 +23927,18 @@ "iconv-lite": "0.4.24", "unpipe": "1.0.0" } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true } } }, @@ -24976,12 +24146,12 @@ "dev": true }, "bufferutil": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.4.tgz", - "integrity": "sha512-VNxjXUCrF3LvbLgwfkTb5LsFvk6pGIn7OBb9x+3o+iJ6mKw0JTUp4chBFc88hi1aspeZGeZG9jAIbpFYPQSLZw==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.5.tgz", + "integrity": "sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A==", "dev": true, "requires": { - "node-gyp-build": "^4.2.0" + "node-gyp-build": "^4.3.0" } }, "builtin-status-codes": { @@ -24991,9 +24161,9 @@ "dev": true }, "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", + "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", "dev": true }, "cache-base": { @@ -25103,17 +24273,6 @@ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, - "cardinal": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", - "integrity": "sha1-fMEFXYItISlU0HsIXeolHMe8VQU=", - "dev": true, - "peer": true, - "requires": { - "ansicolors": "~0.3.2", - "redeyed": "~2.1.0" - } - }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -25358,25 +24517,6 @@ "restore-cursor": "^3.1.0" } }, - "cli-table": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.6.tgz", - "integrity": "sha512-ZkNZbnZjKERTY5NwC2SeMeLeifSPq/pubeRoTpdr3WchLlnZg6hEgvHkK5zL7KNFdd9PmHN8lxrENUwI3cE8vQ==", - "dev": true, - "peer": true, - "requires": { - "colors": "1.0.3" - }, - "dependencies": { - "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", - "dev": true, - "peer": true - } - } - }, "cli-table3": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", @@ -25678,9 +24818,9 @@ "dev": true }, "core-js-pure": { - "version": "3.18.2", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.18.2.tgz", - "integrity": "sha512-4hMMLUlZhKJKOWbbGD1/VDUxGPEhEoN/T01k7bx271WiBKCvCfkgPzy0IeRS4PB50p6/N1q/SZL4B/TRsTE5bA==", + "version": "3.19.2", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.19.2.tgz", + "integrity": "sha512-5LkcgQEy8pFeVnd/zomkUBSwnmIxuF1C8E9KrMAbOc8f34IBT9RGvTYeNDdp1PnvMJrrVhvk1hg/yVV5h/znlg==", "dev": true }, "core-util-is": { @@ -25857,9 +24997,9 @@ } }, "css-what": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", - "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", "dev": true }, "d": { @@ -25888,9 +25028,9 @@ "dev": true }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { "ms": "2.1.2" @@ -26072,14 +25212,6 @@ "dev": true, "requires": { "path-type": "^4.0.0" - }, - "dependencies": { - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - } } }, "doctrine": { @@ -26121,9 +25253,9 @@ "dev": true }, "domhandler": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", - "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", + "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", "dev": true, "requires": { "domelementtype": "^2.2.0" @@ -26204,9 +25336,9 @@ } }, "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.0.0.tgz", + "integrity": "sha512-KmJa8l6uHi1HrBI34udwlzZY1jOEuID/ft4d8BSSEdRyap7PwBEt910453PJa5MuGvxkLqlt4Uvhu7tttFHViw==", "dev": true }, "emojis-list": { @@ -26627,12 +25759,13 @@ } }, "eslint-module-utils": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz", - "integrity": "sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz", + "integrity": "sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ==", "dev": true, "requires": { "debug": "^3.2.7", + "find-up": "^2.1.0", "pkg-dir": "^2.0.0" }, "dependencies": { @@ -26644,49 +25777,6 @@ "requires": { "ms": "^2.1.1" } - } - } - }, - "eslint-plugin-import": { - "version": "2.24.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz", - "integrity": "sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q==", - "dev": true, - "requires": { - "array-includes": "^3.1.3", - "array.prototype.flat": "^1.2.4", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.6.2", - "find-up": "^2.0.0", - "has": "^1.0.3", - "is-core-module": "^2.6.0", - "minimatch": "^3.0.4", - "object.values": "^1.1.4", - "pkg-up": "^2.0.0", - "read-pkg-up": "^3.0.0", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.11.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } }, "find-up": { "version": "2.1.0", @@ -26707,12 +25797,6 @@ "path-exists": "^3.0.0" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -26745,6 +25829,71 @@ } } }, + "eslint-plugin-es": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-2.0.0.tgz", + "integrity": "sha512-f6fceVtg27BR02EYnBhgWLFQfK6bN4Ll0nQFrBHOlCsAyxeZkn0NHns5O0YZOPrV1B3ramd6cgFwaoFLcSkwEQ==", + "dev": true, + "requires": { + "eslint-utils": "^1.4.2", + "regexpp": "^3.0.0" + }, + "dependencies": { + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + } + } + }, + "eslint-plugin-import": { + "version": "2.25.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz", + "integrity": "sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg==", + "dev": true, + "requires": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.1", + "has": "^1.0.3", + "is-core-module": "^2.8.0", + "is-glob": "^4.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.5", + "resolve": "^1.20.0", + "tsconfig-paths": "^3.11.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, "eslint-plugin-mocha-no-only": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/eslint-plugin-mocha-no-only/-/eslint-plugin-mocha-no-only-1.1.1.tgz", @@ -26768,26 +25917,10 @@ "semver": "^6.1.0" }, "dependencies": { - "eslint-plugin-es": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-2.0.0.tgz", - "integrity": "sha512-f6fceVtg27BR02EYnBhgWLFQfK6bN4Ll0nQFrBHOlCsAyxeZkn0NHns5O0YZOPrV1B3ramd6cgFwaoFLcSkwEQ==", - "dev": true, - "requires": { - "eslint-utils": "^1.4.2", - "regexpp": "^3.0.0" - } - }, "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", "dev": true }, "semver": { @@ -26863,9 +25996,9 @@ }, "dependencies": { "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } @@ -26880,9 +26013,9 @@ }, "dependencies": { "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } @@ -26924,13 +26057,13 @@ } }, "eth-gas-reporter": { - "version": "0.2.22", - "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.22.tgz", - "integrity": "sha512-L1FlC792aTf3j/j+gGzSNlGrXKSxNPXQNk6TnV5NNZ2w3jnQCRyJjDl0zUo25Cq2t90IS5vGdbkwqFQK7Ce+kw==", + "version": "0.2.23", + "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.23.tgz", + "integrity": "sha512-T8KsVakDEupvQxW3MfFfHDfJ7y8zl2+XhyEQk4hZ3qQsAh/FE27BfFHM9UhqNQvrJLz8zVWnPZWNcARwLT/lsA==", "dev": true, "requires": { "@ethersproject/abi": "^5.0.0-beta.146", - "@solidity-parser/parser": "^0.12.0", + "@solidity-parser/parser": "^0.14.0", "cli-table3": "^0.5.0", "colors": "^1.1.2", "ethereumjs-util": "6.2.0", @@ -26946,12 +26079,6 @@ "sync-request": "^6.0.0" }, "dependencies": { - "@solidity-parser/parser": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.12.2.tgz", - "integrity": "sha512-d7VS7PxgMosm5NyaiyDJRNID5pK4AWj1l64Dbz0147hJgy5k2C0/ZiKK/9u5c5K+HRUVHmp+RMvGEjGh84oA5Q==", - "dev": true - }, "@types/bn.js": { "version": "4.11.6", "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", @@ -27210,16 +26337,15 @@ } }, "ethereumjs-util": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.2.tgz", - "integrity": "sha512-xCV3PTAhW8Q2k88XZn9VcO4OrjpeXAlDm5LQTaOLp81SjNSSY6+MwuGXrx6vafOMheWSmZGxIXUbue5e9UvUBw==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.3.tgz", + "integrity": "sha512-y+82tEbyASO0K0X1/SRhbJJoAlfcvq8JbrG4a5cjrOks7HS/36efU/0j2flxCPOUM++HFahk33kr/ZxyC4vNuw==", "dev": true, "requires": { "@types/bn.js": "^5.1.0", "bn.js": "^5.1.2", "create-hash": "^1.1.2", "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", "rlp": "^2.2.4" }, "dependencies": { @@ -27232,19 +26358,19 @@ } }, "ethereumjs-wallet": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-1.0.1.tgz", - "integrity": "sha512-3Z5g1hG1das0JWU6cQ9HWWTY2nt9nXCcwj7eXVNAHKbo00XAZO8+NHlwdgXDWrL0SXVQMvTWN8Q/82DRH/JhPw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-1.0.2.tgz", + "integrity": "sha512-CCWV4RESJgRdHIvFciVQFnCHfqyhXWchTPlkfp28Qc53ufs+doi5I/cV2+xeK9+qEo25XCWfP9MiL+WEPAZfdA==", "dev": true, "requires": { - "aes-js": "^3.1.1", + "aes-js": "^3.1.2", "bs58check": "^2.1.2", "ethereum-cryptography": "^0.1.3", - "ethereumjs-util": "^7.0.2", - "randombytes": "^2.0.6", + "ethereumjs-util": "^7.1.2", + "randombytes": "^2.1.0", "scrypt-js": "^3.0.1", "utf8": "^3.0.0", - "uuid": "^3.3.2" + "uuid": "^8.3.2" } }, "ethers": { @@ -27413,19 +26539,53 @@ } }, "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, - "peer": true, "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", "is-stream": "^1.1.0", "npm-run-path": "^2.0.0", "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } } }, "exit-on-epipe": { @@ -27542,6 +26702,12 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true } } }, @@ -27657,9 +26823,9 @@ "dev": true }, "fast-check": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-2.17.0.tgz", - "integrity": "sha512-fNNKkxNEJP+27QMcEzF6nbpOYoSZIS0p+TyB+xh/jXqRBxRhLkiZSREly4ruyV8uJi7nwH1YWAhi7OOK5TubRw==", + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-2.20.0.tgz", + "integrity": "sha512-tFNjLyPnOUg6iimVxOtoWMJOIyybCo7B8gUGm1yv43jDCQ0hlPUn0fmna/XO/n1yPxn/dxQw3+IygPSbMDiiog==", "dev": true, "requires": { "pure-rand": "^5.0.0" @@ -27833,20 +26999,11 @@ "dev": true }, "follow-redirects": { - "version": "1.14.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", - "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==", + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", + "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==", "dev": true }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "requires": { - "is-callable": "^1.1.3" - } - }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -28939,9 +28096,9 @@ }, "dependencies": { "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", "dev": true } } @@ -29024,9 +28181,9 @@ } }, "hardhat": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.6.5.tgz", - "integrity": "sha512-sBhREWZjQTtR/KMMp2F3ySuDqL0norjNq68geR3nlXRHXYKuNKeL7xqVsmldekt3sVB5Wh1WX7xDX79kvUr+fA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.7.0.tgz", + "integrity": "sha512-DqweY3KH5gwExoZ8EtsAfioj0Hk0NBXWXT3fMXWkiQNfyYBoZLrqdPNkbJ/E2LD4mZ+BKF7v/1chYR9ZCn2Z+g==", "dev": true, "requires": { "@ethereumjs/block": "^3.4.0", @@ -29036,7 +28193,7 @@ "@ethereumjs/vm": "^5.5.2", "@ethersproject/abi": "^5.1.2", "@sentry/node": "^5.18.1", - "@solidity-parser/parser": "^0.11.0", + "@solidity-parser/parser": "^0.14.0", "@types/bn.js": "^5.1.0", "@types/lru-cache": "^5.1.0", "abort-controller": "^3.0.0", @@ -29074,7 +28231,7 @@ "stacktrace-parser": "^0.1.10", "true-case-path": "^2.2.1", "tsort": "0.0.1", - "uuid": "^3.3.2", + "uuid": "^8.3.2", "ws": "^7.4.6" }, "dependencies": { @@ -29292,12 +28449,13 @@ } }, "hardhat-gas-reporter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.4.tgz", - "integrity": "sha512-G376zKh81G3K9WtDA+SoTLWsoygikH++tD1E7llx+X7J+GbIqfwhDKKgvJjcnEesMrtR9UqQHK02lJuXY1RTxw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.6.tgz", + "integrity": "sha512-LlCEmSx1dZpnxKmODb2hmP5eJ1IAM5It3NnBNTUpBTxn9g9qPPI3JQTxj8AbGEiNc3r6V+w/mXYCmiC8pWvnoQ==", "dev": true, "requires": { - "eth-gas-reporter": "^0.2.20", + "array-uniq": "1.0.3", + "eth-gas-reporter": "^0.2.23", "sha1": "^1.1.1" } }, @@ -29498,6 +28656,14 @@ "apache-md5": "^1.0.6", "bcryptjs": "^2.3.0", "uuid": "^3.0.0" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } } }, "http-basic": { @@ -29519,16 +28685,16 @@ "dev": true }, "http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "dev": true, "requires": { "depd": "~1.1.2", "inherits": "2.0.4", - "setprototypeof": "1.1.1", + "setprototypeof": "1.2.0", "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "toidentifier": "1.0.1" }, "dependencies": { "depd": { @@ -29546,9 +28712,9 @@ "dev": true }, "http-parser-js": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", - "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz", + "integrity": "sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==", "dev": true }, "http-response-object": { @@ -29632,9 +28798,9 @@ "dev": true }, "immutable": { - "version": "4.0.0-rc.15", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0-rc.15.tgz", - "integrity": "sha512-v8+A3sNyaieoP9dHegl3tEYnIZa7vqNiSv0U6D7YddiZi34VjKy4GsIxrRHj2d8+CS3MeiVja5QyNe4JO/aEXA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", + "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", "dev": true }, "import-fresh": { @@ -29873,9 +29039,9 @@ "dev": true }, "is-core-module": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz", - "integrity": "sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", "dev": true, "requires": { "has": "^1.0.3" @@ -30240,9 +29406,9 @@ "dev": true }, "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "dev": true }, "json-schema-traverse": { @@ -30297,14 +29463,14 @@ "dev": true }, "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.2.3", + "json-schema": "0.4.0", "verror": "1.10.0" } }, @@ -30766,15 +29932,42 @@ } }, "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } } }, "loader-runner": { @@ -30820,12 +30013,6 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true - }, "lodash.assign": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", @@ -30874,25 +30061,6 @@ "integrity": "sha1-rZDjl5ZdgD1PH/eqWy0Bl/O0Y3s=", "dev": true }, - "lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0" - } - }, "lodash.zip": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", @@ -31008,13 +30176,6 @@ "integrity": "sha1-81ypHEk/e3PaDgdJUwTxezH4fuU=", "dev": true }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "peer": true - }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -31042,93 +30203,6 @@ "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", "dev": true }, - "marked": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz", - "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==", - "dev": true, - "peer": true - }, - "marked-terminal": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-3.3.0.tgz", - "integrity": "sha512-+IUQJ5VlZoAFsM5MHNT7g3RHSkA3eETqhRCdXv4niUMAKHQ7lb1yvAcuGPmm4soxhmtX13u4Li6ZToXtvSEH+A==", - "dev": true, - "peer": true, - "requires": { - "ansi-escapes": "^3.1.0", - "cardinal": "^2.1.1", - "chalk": "^2.4.1", - "cli-table": "^0.3.1", - "node-emoji": "^1.4.1", - "supports-hyperlinks": "^1.0.1" - }, - "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true, - "peer": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "peer": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "peer": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "peer": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true, - "peer": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "peer": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "mcl-wasm": { "version": "0.7.9", "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", @@ -31265,13 +30339,13 @@ "dev": true }, "merkle-patricia-tree": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-4.2.1.tgz", - "integrity": "sha512-25reMgrT8PhJy0Ba0U7fMZD2oobS1FPWB9vQa0uBpJYIQYYuFXEHoqEkTqA/UzX+s9br3pmUVVY/TOsFt/x0oQ==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-4.2.2.tgz", + "integrity": "sha512-eqZYNTshcYx9aESkSPr71EqwsR/QmpnObDEV4iLxkt/x/IoLYZYjJvKY72voP/27Vy61iMOrfOG6jrn7ttXD+Q==", "dev": true, "requires": { "@types/levelup": "^4.3.0", - "ethereumjs-util": "^7.1.0", + "ethereumjs-util": "^7.1.2", "level-mem": "^5.0.1", "level-ws": "^2.0.0", "readable-stream": "^3.6.0", @@ -31333,18 +30407,18 @@ "dev": true }, "mime-db": { - "version": "1.50.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", - "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", "dev": true }, "mime-types": { - "version": "2.1.33", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", - "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", "dev": true, "requires": { - "mime-db": "1.50.0" + "mime-db": "1.51.0" } }, "mimic-fn": { @@ -31460,12 +30534,12 @@ } }, "mnemonist": { - "version": "0.38.4", - "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.4.tgz", - "integrity": "sha512-mflgW0gEWmVLbDDE2gJbOh3+RltTN7CgV9jV25qyCnyLN9FtoltWr7ZtAEDeD9u8W4oFAoolR6fBWieXdn3u8Q==", + "version": "0.38.5", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", + "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", "dev": true, "requires": { - "obliterator": "^1.6.1" + "obliterator": "^2.0.0" } }, "mocha": { @@ -32008,9 +31082,9 @@ } }, "node-fetch": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", - "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", + "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", "dev": true, "requires": { "whatwg-url": "^5.0.0" @@ -32311,9 +31385,9 @@ } }, "obliterator": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-1.6.1.tgz", - "integrity": "sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.1.tgz", + "integrity": "sha512-XnkiCrrBcIZQitJPAI36mrrpEUvatbte8hLcTcQwKA1v9NkCKasSi+UAguLsLDs/out7MoRzAlmz7VXvY6ph6w==", "dev": true }, "oboe": { @@ -32601,13 +31675,10 @@ "dev": true }, "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true }, "pathval": { "version": "1.1.1", @@ -32650,9 +31721,9 @@ "dev": true }, "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, "pinkie": { @@ -32730,66 +31801,6 @@ } } }, - "pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", - "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } - } - }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -32809,34 +31820,25 @@ "dev": true }, "prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.0.tgz", + "integrity": "sha512-FM/zAKgWTxj40rH03VxzIPdXmj39SwSjwG0heUcNFwI+EMZJnY93yAiKXM3dObIKAM5TA88werc8T/EwhB45eg==", "dev": true }, "prettier-plugin-solidity": { - "version": "1.0.0-beta.18", - "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0-beta.18.tgz", - "integrity": "sha512-ezWdsG/jIeClmYBzg8V9Voy8jujt+VxWF8OS3Vld+C3c+3cPVib8D9l8ahTod7O5Df1anK9zo+WiiS5wb1mLmg==", + "version": "1.0.0-beta.19", + "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0-beta.19.tgz", + "integrity": "sha512-xxRQ5ZiiZyUoMFLE9h7HnUDXI/daf1tnmL1msEdcKmyh7ZGQ4YklkYLC71bfBpYU2WruTb5/SFLUaEb3RApg5g==", "dev": true, "requires": { - "@solidity-parser/parser": "^0.13.2", - "emoji-regex": "^9.2.2", + "@solidity-parser/parser": "^0.14.0", + "emoji-regex": "^10.0.0", "escape-string-regexp": "^4.0.0", "semver": "^7.3.5", "solidity-comments-extractor": "^0.0.7", - "string-width": "^4.2.2" + "string-width": "^4.2.3" }, "dependencies": { - "@solidity-parser/parser": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.13.2.tgz", - "integrity": "sha512-RwHnpRnfrnD2MSPveYoPh8nhofEvX7fgjHk1Oq+NNvCcLx4r1js91CO9o+F/F3fBzOCyvm8kKRTriFICX/odWw==", - "dev": true, - "requires": { - "antlr4ts": "^0.5.0-alpha.4" - } - }, "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -33052,86 +32054,75 @@ "dev": true }, "raw-body": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", - "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", + "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", "dev": true, "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.3", + "bytes": "3.1.1", + "http-errors": "1.8.1", "iconv-lite": "0.4.24", "unpipe": "1.0.0" } }, "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { - "load-json-file": "^4.0.0", + "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "path-type": "^1.0.0" + }, + "dependencies": { + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } } }, "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" }, "dependencies": { "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { - "locate-path": "^2.0.0" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } } } }, @@ -33173,16 +32164,6 @@ "minimatch": "3.0.4" } }, - "redeyed": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", - "integrity": "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=", - "dev": true, - "peer": true, - "requires": { - "esprima": "~4.0.0" - } - }, "regenerator-runtime": { "version": "0.13.9", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", @@ -33303,22 +32284,15 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true } } }, - "request-promise": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.6.tgz", - "integrity": "sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==", - "dev": true, - "peer": true, - "requires": { - "bluebird": "^3.5.0", - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, "request-promise-core": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", @@ -33451,12 +32425,20 @@ "dev": true }, "rlp": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.6.tgz", - "integrity": "sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg==", + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", "dev": true, "requires": { - "bn.js": "^4.11.1" + "bn.js": "^5.2.0" + }, + "dependencies": { + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", + "dev": true + } } }, "run-async": { @@ -33681,11 +32663,36 @@ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", "dev": true }, + "http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true } } }, @@ -33811,9 +32818,9 @@ "dev": true }, "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, "sha.js": { @@ -33895,9 +32902,9 @@ } }, "signal-exit": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", - "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", "dev": true }, "simple-concat": { @@ -34121,16 +33128,6 @@ "wrap-ansi": "^2.0.0" } }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, "fs-extra": { "version": "0.30.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", @@ -34168,75 +33165,6 @@ "graceful-fs": "^4.1.6" } }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", @@ -34278,15 +33206,6 @@ "ansi-regex": "^2.0.0" } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, "which-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", @@ -34637,9 +33556,9 @@ } }, "solidity-ast": { - "version": "0.4.27", - "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.27.tgz", - "integrity": "sha512-kCP7njjZlZzl2Ijur7gFwcmuAGBgz+v17xMDFmF9B9GOIljMS+6uJ6aUrbuMEcCuff/aDsW7HyMYMccJDxGbiw==", + "version": "0.4.28", + "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.28.tgz", + "integrity": "sha512-RtZCP5tSvZMadVtg9/IfLmAMKDOnQEvG2HA6VnPuoTMxqxsbbn4lQy8jgH3RVbqW0eO1hd7cSCKecb72/OeOIw==", "dev": true }, "solidity-comments-extractor": { @@ -34736,30 +33655,6 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -34825,9 +33720,9 @@ } }, "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", "dev": true }, "jsonfile": { @@ -34910,9 +33805,9 @@ } }, "source-map-support": { - "version": "0.5.20", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", - "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -34960,9 +33855,9 @@ } }, "spdx-license-ids": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", - "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==", + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", "dev": true }, "split": { @@ -35272,45 +34167,6 @@ "has-flag": "^4.0.0" } }, - "supports-hyperlinks": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz", - "integrity": "sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^2.0.0", - "supports-color": "^5.0.0" - }, - "dependencies": { - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true, - "peer": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^3.0.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "peer": true - } - } - } - } - }, "swap-case": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz", @@ -35688,9 +34544,9 @@ } }, "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true }, "tough-cookie": { @@ -35729,40 +34585,10 @@ "integrity": "sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==", "dev": true }, - "ts-essentials": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-1.0.4.tgz", - "integrity": "sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ==", - "dev": true, - "peer": true - }, - "ts-node": { - "version": "8.10.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz", - "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==", - "dev": true, - "peer": true, - "requires": { - "arg": "^4.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.17", - "yn": "3.1.1" - }, - "dependencies": { - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "peer": true - } - } - }, "tsconfig-paths": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz", - "integrity": "sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", + "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", "dev": true, "requires": { "@types/json5": "^0.0.29", @@ -35873,17 +34699,10 @@ "is-typedarray": "^1.0.0" } }, - "typescript": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", - "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", - "dev": true, - "peer": true - }, "uglify-js": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.2.tgz", - "integrity": "sha512-rtPMlmcO4agTUfz10CbgJ1k6UAoXM2gWb3GoMPPZB/+/Ackf8lNWk11K4rYi2D0apgoFRLtQOZhb+/iGNJq26A==", + "version": "3.14.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.4.tgz", + "integrity": "sha512-AbiSR44J0GoCeV81+oxcy/jDOElO2Bx3d0MfQCUShq7JRXaM4KtQopZsq2vFv8bCq2yMaGrw1FgygUd03RyRDA==", "dev": true, "optional": true }, @@ -36113,13 +34932,6 @@ } } }, - "url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", - "dev": true, - "peer": true - }, "url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", @@ -36148,12 +34960,12 @@ "dev": true }, "utf-8-validate": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.6.tgz", - "integrity": "sha512-hoY0gOf9EkCw+nimK21FVKHUIG1BMqSiRwxB/q3A9yKZOrOI99PP77BxmarDqWz6rG3vVYiBWfhG8z2Tl+7fZA==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.7.tgz", + "integrity": "sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q==", "dev": true, "requires": { - "node-gyp-build": "^4.2.0" + "node-gyp-build": "^4.3.0" } }, "utf8": { @@ -36182,19 +34994,6 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "util.promisify": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz", - "integrity": "sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "for-each": "^0.3.3", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.1" - } - }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -36202,9 +35001,9 @@ "dev": true }, "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true }, "v8-compile-cache": { @@ -36577,24 +35376,24 @@ } }, "web3": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.6.0.tgz", - "integrity": "sha512-rWpXnO88MiVX5yTRqMBCVKASxc7QDkXZZUl1D48sKlbX4dt3BAV+nVMVUKCBKiluZ5Bp8pDrVCUdPx/jIYai5Q==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.6.1.tgz", + "integrity": "sha512-c299lLiyb2/WOcxh7TinwvbATaMmrgNIeAzbLbmOKHI0LcwyfsB1eu2ReOIrfrCYDYRW2KAjYr7J7gHawqDNPQ==", "dev": true, "requires": { - "web3-bzz": "1.6.0", - "web3-core": "1.6.0", - "web3-eth": "1.6.0", - "web3-eth-personal": "1.6.0", - "web3-net": "1.6.0", - "web3-shh": "1.6.0", - "web3-utils": "1.6.0" + "web3-bzz": "1.6.1", + "web3-core": "1.6.1", + "web3-eth": "1.6.1", + "web3-eth-personal": "1.6.1", + "web3-net": "1.6.1", + "web3-shh": "1.6.1", + "web3-utils": "1.6.1" } }, "web3-bzz": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.6.0.tgz", - "integrity": "sha512-ugYV6BsinwhIi0CsLWINBz4mqN9wR9vNG0WmyEbdECjxcPyr6vkaWt4qi0zqlUxEnYAwGj4EJXNrbjPILntQTQ==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.6.1.tgz", + "integrity": "sha512-JbnFNbRlwwHJZPtVuCxo7rC4U4OTg+mPsyhjgPQJJhS0a6Y54OgVWYk9UA/95HqbmTJwTtX329gJoSsseEfrng==", "dev": true, "requires": { "@types/node": "^12.12.6", @@ -36603,26 +35402,26 @@ }, "dependencies": { "@types/node": { - "version": "12.20.28", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.28.tgz", - "integrity": "sha512-cBw8gzxUPYX+/5lugXIPksioBSbE42k0fZ39p+4yRzfYjN6++eq9kAPdlY9qm+MXyfbk9EmvCYAYRn380sF46w==", + "version": "12.20.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.37.tgz", + "integrity": "sha512-i1KGxqcvJaLQali+WuypQnXwcplhtNtjs66eNsZpp2P2FL/trJJxx/VWsM0YCL2iMoIJrbXje48lvIQAQ4p2ZA==", "dev": true } } }, "web3-core": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.6.0.tgz", - "integrity": "sha512-o0WsLrJ2yD+HAAc29lGMWJef/MutTyuzpJC0UzLJtIAQJqtpDalzWINEu4j8XYXGk34N/V6vudtzRPo23QEE6g==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.6.1.tgz", + "integrity": "sha512-m+b7UfYvU5cQUAh6NRfxRzH/5B3to1AdEQi1HIQt570cDWlObOOmoO9tY6iJnI5w4acxIO19LqjDMqEJGBYyRQ==", "dev": true, "requires": { "@types/bn.js": "^4.11.5", "@types/node": "^12.12.6", "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.6.0", - "web3-core-method": "1.6.0", - "web3-core-requestmanager": "1.6.0", - "web3-utils": "1.6.0" + "web3-core-helpers": "1.6.1", + "web3-core-method": "1.6.1", + "web3-core-requestmanager": "1.6.1", + "web3-utils": "1.6.1" }, "dependencies": { "@types/bn.js": { @@ -36635,9 +35434,9 @@ } }, "@types/node": { - "version": "12.20.28", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.28.tgz", - "integrity": "sha512-cBw8gzxUPYX+/5lugXIPksioBSbE42k0fZ39p+4yRzfYjN6++eq9kAPdlY9qm+MXyfbk9EmvCYAYRn380sF46w==", + "version": "12.20.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.37.tgz", + "integrity": "sha512-i1KGxqcvJaLQali+WuypQnXwcplhtNtjs66eNsZpp2P2FL/trJJxx/VWsM0YCL2iMoIJrbXje48lvIQAQ4p2ZA==", "dev": true }, "bignumber.js": { @@ -36649,89 +35448,88 @@ } }, "web3-core-helpers": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.6.0.tgz", - "integrity": "sha512-H/IAH/0mrgvad/oxVKiAMC7qDzMrPPe/nRKmJOoIsupRg9/frvL62kZZiHhqVD1HMyyswbQFC69QRl7JqWzvxg==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.6.1.tgz", + "integrity": "sha512-om2PZvK1uoWcgMq6JfcSx3241LEIVF6qi2JuHz2SLKiKEW5UsBUaVx0mNCmcZaiuYQCyOsLS3r33q5AdM+v8ng==", "dev": true, "requires": { - "web3-eth-iban": "1.6.0", - "web3-utils": "1.6.0" + "web3-eth-iban": "1.6.1", + "web3-utils": "1.6.1" } }, "web3-core-method": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.6.0.tgz", - "integrity": "sha512-cHekyEil4mtcCOk6Q1Zh4y+2o5pTwsLIxP6Bpt4BRtZgdsyPiadYJpkLAVT/quch5xN7Qs5ZwG5AvRCS3VwD2g==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.6.1.tgz", + "integrity": "sha512-szH5KyIWIaULQDBdDvevQUCHV9lsExJ/oV0ePqK+w015D2SdMPMuhii0WB+HCePaksWO+rr/GAypvV9g2T3N+w==", "dev": true, "requires": { - "@ethereumjs/common": "^2.4.0", "@ethersproject/transactions": "^5.0.0-beta.135", - "web3-core-helpers": "1.6.0", - "web3-core-promievent": "1.6.0", - "web3-core-subscriptions": "1.6.0", - "web3-utils": "1.6.0" + "web3-core-helpers": "1.6.1", + "web3-core-promievent": "1.6.1", + "web3-core-subscriptions": "1.6.1", + "web3-utils": "1.6.1" } }, "web3-core-promievent": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.6.0.tgz", - "integrity": "sha512-ZzsevjMXWkhqW9dnVfTfb1OUcK7jKcKPvPIbQ4boJccNgvNZPZKlo8xB4pkAX38n4c59O5mC7Lt/z2QL/M5CeQ==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.6.1.tgz", + "integrity": "sha512-byJ5s2MQxrWdXd27pWFmujfzsTZK4ik8rDgIV1RFDFc+rHZ2nZhq+VWk7t/Nkrj7EaVXncEgTdPEHc18nx+ocQ==", "dev": true, "requires": { "eventemitter3": "4.0.4" } }, "web3-core-requestmanager": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.6.0.tgz", - "integrity": "sha512-CY5paPdiDXKTXPWaEUZekDfUXSuoE2vPxolwqzsvKwFWH5+H1NaXgrc+D5HpufgSvTXawTw0fy7IAicg8+PWqA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.6.1.tgz", + "integrity": "sha512-4y7etYEUtkfflyYVBfN1oJtCbVFNhNX1omlEYzezhTnPj3/dT7n+dhUXcqvIhx9iKA13unGfpFge80XNFfcB8A==", "dev": true, "requires": { "util": "^0.12.0", - "web3-core-helpers": "1.6.0", - "web3-providers-http": "1.6.0", - "web3-providers-ipc": "1.6.0", - "web3-providers-ws": "1.6.0" + "web3-core-helpers": "1.6.1", + "web3-providers-http": "1.6.1", + "web3-providers-ipc": "1.6.1", + "web3-providers-ws": "1.6.1" } }, "web3-core-subscriptions": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.6.0.tgz", - "integrity": "sha512-kY9WZUY/m1URSOv3uTLshoZD9ZDiFKReIzHuPUkxFpD5oYNmr1/aPQNPCrrMxKODR7UVX/D90FxWwCYqHhLaxQ==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.6.1.tgz", + "integrity": "sha512-WZwxsYttIojyGQ5RqxuQcKg0IJdDCFpUe4EncS3QKZwxPqWzGmgyLwE0rm7tP+Ux1waJn5CUaaoSCBxWGSun1g==", "dev": true, "requires": { "eventemitter3": "4.0.4", - "web3-core-helpers": "1.6.0" + "web3-core-helpers": "1.6.1" } }, "web3-eth": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.6.0.tgz", - "integrity": "sha512-qJMvai//r0be6I9ghU24/152f0zgJfYC23TMszN3Y6jse1JtjCBP2TlTibFcvkUN1RRdIUY5giqO7ZqAYAmp7w==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.6.1.tgz", + "integrity": "sha512-kOV1ZgCKypSo5BQyltRArS7ZC3bRpIKAxSgzl7pUFinUb/MxfbM9KGeNxUXoCfTSErcCQJaDjcS6bSre5EMKuQ==", "dev": true, "requires": { - "web3-core": "1.6.0", - "web3-core-helpers": "1.6.0", - "web3-core-method": "1.6.0", - "web3-core-subscriptions": "1.6.0", - "web3-eth-abi": "1.6.0", - "web3-eth-accounts": "1.6.0", - "web3-eth-contract": "1.6.0", - "web3-eth-ens": "1.6.0", - "web3-eth-iban": "1.6.0", - "web3-eth-personal": "1.6.0", - "web3-net": "1.6.0", - "web3-utils": "1.6.0" + "web3-core": "1.6.1", + "web3-core-helpers": "1.6.1", + "web3-core-method": "1.6.1", + "web3-core-subscriptions": "1.6.1", + "web3-eth-abi": "1.6.1", + "web3-eth-accounts": "1.6.1", + "web3-eth-contract": "1.6.1", + "web3-eth-ens": "1.6.1", + "web3-eth-iban": "1.6.1", + "web3-eth-personal": "1.6.1", + "web3-net": "1.6.1", + "web3-utils": "1.6.1" } }, "web3-eth-abi": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.6.0.tgz", - "integrity": "sha512-fImomGE9McuTMJLwK8Tp0lTUzXqCkWeMm00qPVIwpJ/h7lCw9UFYV9+4m29wSqW6FF+FIZKwc6UBEf9dlx3orA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.6.1.tgz", + "integrity": "sha512-svhYrAlXP9XQtV7poWKydwDJq2CaNLMtmKydNXoOBLcQec6yGMP+v20pgrxF2H6wyTK+Qy0E3/5ciPOqC/VuoQ==", "dev": true, "requires": { "@ethersproject/abi": "5.0.7", - "web3-utils": "1.6.0" + "web3-utils": "1.6.1" }, "dependencies": { "@ethersproject/abi": { @@ -36754,22 +35552,22 @@ } }, "web3-eth-accounts": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.6.0.tgz", - "integrity": "sha512-2f6HS4KIH4laAsNCOfbNX3dRiQosqSY2TRK86C8jtAA/QKGdx+5qlPfYzbI2RjG81iayb2+mVbHIaEaBGZ8sGw==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.6.1.tgz", + "integrity": "sha512-rGn3jwnuOKwaQRu4SiShz0YAQ87aVDBKs4HO43+XTCI1q1Y1jn3NOsG3BW9ZHaOckev4+zEyxze/Bsh2oEk24w==", "dev": true, "requires": { - "@ethereumjs/common": "^2.3.0", - "@ethereumjs/tx": "^3.2.1", + "@ethereumjs/common": "^2.5.0", + "@ethereumjs/tx": "^3.3.2", "crypto-browserify": "3.12.0", "eth-lib": "0.2.8", "ethereumjs-util": "^7.0.10", "scrypt-js": "^3.0.1", "uuid": "3.3.2", - "web3-core": "1.6.0", - "web3-core-helpers": "1.6.0", - "web3-core-method": "1.6.0", - "web3-utils": "1.6.0" + "web3-core": "1.6.1", + "web3-core-helpers": "1.6.1", + "web3-core-method": "1.6.1", + "web3-utils": "1.6.1" }, "dependencies": { "eth-lib": { @@ -36792,19 +35590,19 @@ } }, "web3-eth-contract": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.6.0.tgz", - "integrity": "sha512-ZUtO77zFnxuFtrc+D+iJ3AzNgFXAVcKnhEYN7f1PNz/mFjbtE6dJ+ujO0mvMbxIZF02t9IZv0CIXRpK0rDvZAw==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.6.1.tgz", + "integrity": "sha512-GXqTe3mF6kpbOAakiNc7wtJ120/gpuKMTZjuGFKeeY8aobRLfbfgKzM9IpyqVZV2v5RLuGXDuurVN2KPgtu3hQ==", "dev": true, "requires": { "@types/bn.js": "^4.11.5", - "web3-core": "1.6.0", - "web3-core-helpers": "1.6.0", - "web3-core-method": "1.6.0", - "web3-core-promievent": "1.6.0", - "web3-core-subscriptions": "1.6.0", - "web3-eth-abi": "1.6.0", - "web3-utils": "1.6.0" + "web3-core": "1.6.1", + "web3-core-helpers": "1.6.1", + "web3-core-method": "1.6.1", + "web3-core-promievent": "1.6.1", + "web3-core-subscriptions": "1.6.1", + "web3-eth-abi": "1.6.1", + "web3-utils": "1.6.1" }, "dependencies": { "@types/bn.js": { @@ -36819,111 +35617,111 @@ } }, "web3-eth-ens": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.6.0.tgz", - "integrity": "sha512-AG24PNv9qbYHSpjHcU2pViOII0jvIR7TeojJ2bxXSDqfcgHuRp3NZGKv6xFvT4uNI4LEQHUhSC7bzHoNF5t8CA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.6.1.tgz", + "integrity": "sha512-ngprtbnoRgxg8s1wXt9nXpD3h1P+p7XnKXrp/8GdFI9uDmrbSQPRfzBw86jdZgOmy78hAnWmrHI6pBInmgi2qQ==", "dev": true, "requires": { "content-hash": "^2.5.2", "eth-ens-namehash": "2.0.8", - "web3-core": "1.6.0", - "web3-core-helpers": "1.6.0", - "web3-core-promievent": "1.6.0", - "web3-eth-abi": "1.6.0", - "web3-eth-contract": "1.6.0", - "web3-utils": "1.6.0" + "web3-core": "1.6.1", + "web3-core-helpers": "1.6.1", + "web3-core-promievent": "1.6.1", + "web3-eth-abi": "1.6.1", + "web3-eth-contract": "1.6.1", + "web3-utils": "1.6.1" } }, "web3-eth-iban": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.6.0.tgz", - "integrity": "sha512-HM/bKBS/e8qg0+Eh7B8C/JVG+GkR4AJty17DKRuwMtrh78YsonPj7GKt99zS4n5sDLFww1Imu/ZIk3+K5uJCjw==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.6.1.tgz", + "integrity": "sha512-91H0jXZnWlOoXmc13O9NuQzcjThnWyAHyDn5Yf7u6mmKOhpJSGF/OHlkbpXt1Y4v2eJdEPaVFa+6i8aRyagE7Q==", "dev": true, "requires": { "bn.js": "^4.11.9", - "web3-utils": "1.6.0" + "web3-utils": "1.6.1" } }, "web3-eth-personal": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.6.0.tgz", - "integrity": "sha512-8ohf4qAwbShf4RwES2tLHVqa+pHZnS5Q6tV80sU//bivmlZeyO1W4UWyNn59vu9KPpEYvLseOOC6Muxuvr8mFQ==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.6.1.tgz", + "integrity": "sha512-ItsC89Ln02+irzJjK6ALcLrMZfbVUCqVbmb/ieDKJ+eLW3pNkBNwoUzaydh92d5NzxNZgNxuQWVdlFyYX2hkEw==", "dev": true, "requires": { "@types/node": "^12.12.6", - "web3-core": "1.6.0", - "web3-core-helpers": "1.6.0", - "web3-core-method": "1.6.0", - "web3-net": "1.6.0", - "web3-utils": "1.6.0" + "web3-core": "1.6.1", + "web3-core-helpers": "1.6.1", + "web3-core-method": "1.6.1", + "web3-net": "1.6.1", + "web3-utils": "1.6.1" }, "dependencies": { "@types/node": { - "version": "12.20.28", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.28.tgz", - "integrity": "sha512-cBw8gzxUPYX+/5lugXIPksioBSbE42k0fZ39p+4yRzfYjN6++eq9kAPdlY9qm+MXyfbk9EmvCYAYRn380sF46w==", + "version": "12.20.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.37.tgz", + "integrity": "sha512-i1KGxqcvJaLQali+WuypQnXwcplhtNtjs66eNsZpp2P2FL/trJJxx/VWsM0YCL2iMoIJrbXje48lvIQAQ4p2ZA==", "dev": true } } }, "web3-net": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.6.0.tgz", - "integrity": "sha512-LFfG95ovTT2sNHkO1TEfsaKpYcxOSUtbuwHQ0K3G0e5nevKDJkPEFIqIcob40yiwcWoqEjENJP9Bjk8CRrZ99Q==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.6.1.tgz", + "integrity": "sha512-gpnqKEIwfUHh5ik7wsQFlCje1DfcmGv+Sk7LCh1hCqn++HEDQxJ/mZCrMo11ZZpZHCH7c87imdxTg96GJnRxDw==", "dev": true, "requires": { - "web3-core": "1.6.0", - "web3-core-method": "1.6.0", - "web3-utils": "1.6.0" + "web3-core": "1.6.1", + "web3-core-method": "1.6.1", + "web3-utils": "1.6.1" } }, "web3-providers-http": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.6.0.tgz", - "integrity": "sha512-sNxHFNv3lnxpmULt34AS6M36IYB/Hzm2Et4yPNzdP1XE644D8sQBZQZaJQdTaza5HfrlwoqU6AOK935armqGuA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.6.1.tgz", + "integrity": "sha512-xBoKOJxu10+kO3ikamXmBfrWZ/xpQOGy0ocdp7Y81B17En5TXELwlmMXt1UlIgWiyYDhjq4OwlH/VODYqHXy3A==", "dev": true, "requires": { - "web3-core-helpers": "1.6.0", + "web3-core-helpers": "1.6.1", "xhr2-cookies": "1.1.0" } }, "web3-providers-ipc": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.6.0.tgz", - "integrity": "sha512-ETYdfhpGiGoWpmmSJnONvnPfd3TPivHEGjXyuX+L5FUsbMOVZj9MFLNIS19Cx/YGL8UWJ/8alLJoTcWSIdz/aA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.6.1.tgz", + "integrity": "sha512-anyoIZlpMzwEQI4lwylTzDrHsVp20v0QUtSTp2B5jInBinmQtyCE7vnbX20jEQ4j5uPwfJabKNtoJsk6a3O4WQ==", "dev": true, "requires": { "oboe": "2.1.5", - "web3-core-helpers": "1.6.0" + "web3-core-helpers": "1.6.1" } }, "web3-providers-ws": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.6.0.tgz", - "integrity": "sha512-eNRmlhOPCpuVYwBrKBBQRLGPFb4U1Uo44r9EWV69Cpo4gP6XeBTl6nkawhLz6DS0fq79apyPfItJVuSfAy77pA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.6.1.tgz", + "integrity": "sha512-FWMEFYb4rYFYRgSFBf/O1Ex4p/YKSlN+JydCtdlJwRimd89qm95CTfs4xGjCskwvXMjV2sarH+f1NPwJXicYpg==", "dev": true, "requires": { "eventemitter3": "4.0.4", - "web3-core-helpers": "1.6.0", + "web3-core-helpers": "1.6.1", "websocket": "^1.0.32" } }, "web3-shh": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.6.0.tgz", - "integrity": "sha512-ymN0OFL81WtEeSyb+PFpuUv39fR3frGwsZnIg5EVPZvrOIdaDSFcGSLDmafUt0vKSubvLMVYIBOCskRD6YdtEQ==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.6.1.tgz", + "integrity": "sha512-oP00HbAtybLCGlLOZUYXOdeB9xq88k2l0TtStvKBtmFqRt+zVk5TxEeuOnVPRxNhcA2Un8RUw6FtvgZlWStu9A==", "dev": true, "requires": { - "web3-core": "1.6.0", - "web3-core-method": "1.6.0", - "web3-core-subscriptions": "1.6.0", - "web3-net": "1.6.0" + "web3-core": "1.6.1", + "web3-core-method": "1.6.1", + "web3-core-subscriptions": "1.6.1", + "web3-net": "1.6.1" } }, "web3-utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.0.tgz", - "integrity": "sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.1.tgz", + "integrity": "sha512-RidGKv5kOkcerI6jQqDFDoTllQQqV+rPhTzZHhmbqtFObbYpU93uc+yG1LHivRTQhA6llIx67iudc/vzisgO+w==", "dev": true, "requires": { "bn.js": "^4.11.9", @@ -37007,32 +35805,6 @@ } } }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", @@ -37048,12 +35820,6 @@ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", "dev": true }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, "has-flag": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", @@ -37097,16 +35863,6 @@ "path-exists": "^3.0.0" } }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, "os-locale": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", @@ -37252,12 +36008,6 @@ "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", "dev": true }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, "yargs": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", @@ -37551,9 +36301,9 @@ } }, "ws": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", - "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", + "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", "dev": true, "requires": {} }, @@ -37859,13 +36609,6 @@ } } } - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "peer": true } } } diff --git a/package.json b/package.json index 55d0bcfde..a8182ad57 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "openzeppelin-solidity", "description": "Secure Smart Contract library for Solidity", - "version": "4.4.2", + "version": "4.5.0", "files": [ "/contracts/**/*.sol", "/build/contracts/*.json", diff --git a/scripts/gen-nav.js b/scripts/gen-nav.js index e5a76a816..a03fbd696 100644 --- a/scripts/gen-nav.js +++ b/scripts/gen-nav.js @@ -13,9 +13,12 @@ const files = proc.execFileSync( console.log('.API'); function getPageTitle (directory) { - if (directory === 'metatx') { + switch (directory) { + case 'metatx': return 'Meta Transactions'; - } else { + case 'common': + return 'Common (Tokens)'; + default: return startCase(directory); } } diff --git a/test/governance/GovernorWorkflow.behavior.js b/test/governance/GovernorWorkflow.behavior.js index 3a61b1b34..8cfa9dcaf 100644 --- a/test/governance/GovernorWorkflow.behavior.js +++ b/test/governance/GovernorWorkflow.behavior.js @@ -67,6 +67,11 @@ function runGovernorWorkflow () { for (const voter of this.settings.voters) { if (voter.weight) { await this.token.transfer(voter.voter, voter.weight, { from: this.settings.tokenHolder }); + } else if (voter.nfts) { + for (const nft of voter.nfts) { + await this.token.transferFrom(this.settings.tokenHolder, voter.voter, nft, + { from: this.settings.tokenHolder }); + } } } } @@ -105,7 +110,7 @@ function runGovernorWorkflow () { // vote if (tryGet(this.settings, 'voters')) { this.receipts.castVote = []; - for (const voter of this.settings.voters) { + for (const voter of this.settings.voters.filter(({ support }) => !!support)) { if (!voter.signature) { this.receipts.castVote.push( await getReceiptOrRevert( diff --git a/test/governance/extensions/GovernorERC721.test.js b/test/governance/extensions/GovernorERC721.test.js new file mode 100644 index 000000000..3f89c02b4 --- /dev/null +++ b/test/governance/extensions/GovernorERC721.test.js @@ -0,0 +1,118 @@ +const { expectEvent } = require('@openzeppelin/test-helpers'); +const { BN } = require('bn.js'); +const Enums = require('../../helpers/enums'); + +const { + runGovernorWorkflow, +} = require('./../GovernorWorkflow.behavior'); + +const Token = artifacts.require('ERC721VotesMock'); +const Governor = artifacts.require('GovernorVoteMocks'); +const CallReceiver = artifacts.require('CallReceiverMock'); + +contract('GovernorERC721Mock', function (accounts) { + const [ owner, voter1, voter2, voter3, voter4 ] = accounts; + + const name = 'OZ-Governor'; + const tokenName = 'MockNFToken'; + const tokenSymbol = 'MTKN'; + const NFT0 = web3.utils.toWei('100'); + const NFT1 = web3.utils.toWei('10'); + const NFT2 = web3.utils.toWei('20'); + const NFT3 = web3.utils.toWei('30'); + const NFT4 = web3.utils.toWei('40'); + + // Must be the same as in contract + const ProposalState = { + Pending: new BN('0'), + Active: new BN('1'), + Canceled: new BN('2'), + Defeated: new BN('3'), + Succeeded: new BN('4'), + Queued: new BN('5'), + Expired: new BN('6'), + Executed: new BN('7'), + }; + + beforeEach(async function () { + this.owner = owner; + this.token = await Token.new(tokenName, tokenSymbol); + this.mock = await Governor.new(name, this.token.address); + this.receiver = await CallReceiver.new(); + await this.token.mint(owner, NFT0); + await this.token.mint(owner, NFT1); + await this.token.mint(owner, NFT2); + await this.token.mint(owner, NFT3); + await this.token.mint(owner, NFT4); + + await this.token.delegate(voter1, { from: voter1 }); + await this.token.delegate(voter2, { from: voter2 }); + await this.token.delegate(voter3, { from: voter3 }); + await this.token.delegate(voter4, { from: voter4 }); + }); + + it('deployment check', async function () { + expect(await this.mock.name()).to.be.equal(name); + expect(await this.mock.token()).to.be.equal(this.token.address); + expect(await this.mock.votingDelay()).to.be.bignumber.equal('4'); + expect(await this.mock.votingPeriod()).to.be.bignumber.equal('16'); + expect(await this.mock.quorum(0)).to.be.bignumber.equal('0'); + }); + + describe('voting with ERC721 token', function () { + beforeEach(async function () { + this.settings = { + proposal: [ + [ this.receiver.address ], + [ web3.utils.toWei('0') ], + [ this.receiver.contract.methods.mockFunction().encodeABI() ], + '', + ], + tokenHolder: owner, + voters: [ + { voter: voter1, nfts: [NFT0], support: Enums.VoteType.For }, + { voter: voter2, nfts: [NFT1, NFT2], support: Enums.VoteType.For }, + { voter: voter3, nfts: [NFT3], support: Enums.VoteType.Against }, + { voter: voter4, nfts: [NFT4], support: Enums.VoteType.Abstain }, + ], + }; + }); + + afterEach(async function () { + expect(await this.mock.hasVoted(this.id, owner)).to.be.equal(false); + + for (const vote of this.receipts.castVote.filter(Boolean)) { + const { voter } = vote.logs.find(Boolean).args; + + expect(await this.mock.hasVoted(this.id, voter)).to.be.equal(true); + + expectEvent( + vote, + 'VoteCast', + this.settings.voters.find(({ address }) => address === voter), + ); + + if (voter === voter2) { + expect(await this.token.getVotes(voter, vote.blockNumber)).to.be.bignumber.equal('2'); + } else { + expect(await this.token.getVotes(voter, vote.blockNumber)).to.be.bignumber.equal('1'); + } + } + + await this.mock.proposalVotes(this.id).then(result => { + for (const [key, value] of Object.entries(Enums.VoteType)) { + expect(result[`${key.toLowerCase()}Votes`]).to.be.bignumber.equal( + Object.values(this.settings.voters).filter(({ support }) => support === value).reduce( + (acc, { nfts }) => acc.add(new BN(nfts.length)), + new BN('0'), + ), + ); + } + }); + + expect(await this.mock.state(this.id)).to.be.bignumber.equal(ProposalState.Executed); + }); + + runGovernorWorkflow(); + }); +}); diff --git a/test/governance/extensions/GovernorPreventLateQuorum.test.js b/test/governance/extensions/GovernorPreventLateQuorum.test.js new file mode 100644 index 000000000..e4ae5c17c --- /dev/null +++ b/test/governance/extensions/GovernorPreventLateQuorum.test.js @@ -0,0 +1,247 @@ +const { BN, expectEvent, expectRevert, time } = require('@openzeppelin/test-helpers'); +const Enums = require('../../helpers/enums'); + +const { + runGovernorWorkflow, +} = require('../GovernorWorkflow.behavior'); + +const Token = artifacts.require('ERC20VotesCompMock'); +const Governor = artifacts.require('GovernorPreventLateQuorumMock'); +const CallReceiver = artifacts.require('CallReceiverMock'); + +contract('GovernorPreventLateQuorum', function (accounts) { + const [ owner, proposer, voter1, voter2, voter3, voter4 ] = accounts; + + const name = 'OZ-Governor'; + // const version = '1'; + const tokenName = 'MockToken'; + const tokenSymbol = 'MTKN'; + const tokenSupply = web3.utils.toWei('100'); + const votingDelay = new BN(4); + const votingPeriod = new BN(16); + const lateQuorumVoteExtension = new BN(8); + const quorum = web3.utils.toWei('1'); + + beforeEach(async function () { + this.owner = owner; + this.token = await Token.new(tokenName, tokenSymbol); + this.mock = await Governor.new( + name, + this.token.address, + votingDelay, + votingPeriod, + quorum, + lateQuorumVoteExtension, + ); + this.receiver = await CallReceiver.new(); + await this.token.mint(owner, tokenSupply); + await this.token.delegate(voter1, { from: voter1 }); + await this.token.delegate(voter2, { from: voter2 }); + await this.token.delegate(voter3, { from: voter3 }); + await this.token.delegate(voter4, { from: voter4 }); + }); + + it('deployment check', async function () { + expect(await this.mock.name()).to.be.equal(name); + expect(await this.mock.token()).to.be.equal(this.token.address); + expect(await this.mock.votingDelay()).to.be.bignumber.equal(votingDelay); + expect(await this.mock.votingPeriod()).to.be.bignumber.equal(votingPeriod); + expect(await this.mock.quorum(0)).to.be.bignumber.equal(quorum); + expect(await this.mock.lateQuorumVoteExtension()).to.be.bignumber.equal(lateQuorumVoteExtension); + }); + + describe('nominal is unaffected', function () { + beforeEach(async function () { + this.settings = { + proposal: [ + [ this.receiver.address ], + [ 0 ], + [ this.receiver.contract.methods.mockFunction().encodeABI() ], + '', + ], + proposer, + tokenHolder: owner, + voters: [ + { voter: voter1, weight: web3.utils.toWei('1'), support: Enums.VoteType.For, reason: 'This is nice' }, + { voter: voter2, weight: web3.utils.toWei('7'), support: Enums.VoteType.For }, + { voter: voter3, weight: web3.utils.toWei('5'), support: Enums.VoteType.Against }, + { voter: voter4, weight: web3.utils.toWei('2'), support: Enums.VoteType.Abstain }, + ], + }; + }); + + afterEach(async function () { + expect(await this.mock.hasVoted(this.id, owner)).to.be.equal(false); + expect(await this.mock.hasVoted(this.id, voter1)).to.be.equal(true); + expect(await this.mock.hasVoted(this.id, voter2)).to.be.equal(true); + + await this.mock.proposalVotes(this.id).then(result => { + for (const [key, value] of Object.entries(Enums.VoteType)) { + expect(result[`${key.toLowerCase()}Votes`]).to.be.bignumber.equal( + Object.values(this.settings.voters).filter(({ support }) => support === value).reduce( + (acc, { weight }) => acc.add(new BN(weight)), + new BN('0'), + ), + ); + } + }); + + const startBlock = new BN(this.receipts.propose.blockNumber).add(votingDelay); + const endBlock = new BN(this.receipts.propose.blockNumber).add(votingDelay).add(votingPeriod); + expect(await this.mock.proposalSnapshot(this.id)).to.be.bignumber.equal(startBlock); + expect(await this.mock.proposalDeadline(this.id)).to.be.bignumber.equal(endBlock); + + expectEvent( + this.receipts.propose, + 'ProposalCreated', + { + proposalId: this.id, + proposer, + targets: this.settings.proposal[0], + // values: this.settings.proposal[1].map(value => new BN(value)), + signatures: this.settings.proposal[2].map(() => ''), + calldatas: this.settings.proposal[2], + startBlock, + endBlock, + description: this.settings.proposal[3], + }, + ); + + this.receipts.castVote.filter(Boolean).forEach(vote => { + const { voter } = vote.logs.find(Boolean).args; + expectEvent( + vote, + 'VoteCast', + this.settings.voters.find(({ address }) => address === voter), + ); + expectEvent.notEmitted( + vote, + 'ProposalExtended', + ); + }); + expectEvent( + this.receipts.execute, + 'ProposalExecuted', + { proposalId: this.id }, + ); + await expectEvent.inTransaction( + this.receipts.execute.transactionHash, + this.receiver, + 'MockFunctionCalled', + ); + }); + runGovernorWorkflow(); + }); + + describe('Delay is extended to prevent last minute take-over', function () { + beforeEach(async function () { + this.settings = { + proposal: [ + [ this.receiver.address ], + [ 0 ], + [ this.receiver.contract.methods.mockFunction().encodeABI() ], + '', + ], + proposer, + tokenHolder: owner, + voters: [ + { voter: voter1, weight: web3.utils.toWei('0.2'), support: Enums.VoteType.Against }, + { voter: voter2, weight: web3.utils.toWei('1.0') }, // do not actually vote, only getting tokens + { voter: voter3, weight: web3.utils.toWei('0.9') }, // do not actually vote, only getting tokens + ], + steps: { + wait: { enable: false }, + execute: { enable: false }, + }, + }; + }); + + afterEach(async function () { + expect(await this.mock.state(this.id)).to.be.bignumber.equal(Enums.ProposalState.Active); + + const startBlock = new BN(this.receipts.propose.blockNumber).add(votingDelay); + const endBlock = new BN(this.receipts.propose.blockNumber).add(votingDelay).add(votingPeriod); + expect(await this.mock.proposalSnapshot(this.id)).to.be.bignumber.equal(startBlock); + expect(await this.mock.proposalDeadline(this.id)).to.be.bignumber.equal(endBlock); + + // wait until the vote is almost over + await time.advanceBlockTo(endBlock.subn(1)); + expect(await this.mock.state(this.id)).to.be.bignumber.equal(Enums.ProposalState.Active); + + // try to overtake the vote at the last minute + const tx = await this.mock.castVote(this.id, Enums.VoteType.For, { from: voter2 }); + + // vote duration is extended + const extendedBlock = new BN(tx.receipt.blockNumber).add(lateQuorumVoteExtension); + expect(await this.mock.proposalDeadline(this.id)).to.be.bignumber.equal(extendedBlock); + + expectEvent( + tx, + 'ProposalExtended', + { proposalId: this.id, extendedDeadline: extendedBlock }, + ); + + // vote is still active after expected end + await time.advanceBlockTo(endBlock.addn(1)); + expect(await this.mock.state(this.id)).to.be.bignumber.equal(Enums.ProposalState.Active); + + // Still possible to vote + await this.mock.castVote(this.id, Enums.VoteType.Against, { from: voter3 }); + + // proposal fails + await time.advanceBlockTo(extendedBlock.addn(1)); + expect(await this.mock.state(this.id)).to.be.bignumber.equal(Enums.ProposalState.Defeated); + }); + runGovernorWorkflow(); + }); + + describe('setLateQuorumVoteExtension', function () { + beforeEach(async function () { + this.newVoteExtension = new BN(0); // disable voting delay extension + }); + + it('protected', async function () { + await expectRevert( + this.mock.setLateQuorumVoteExtension(this.newVoteExtension), + 'Governor: onlyGovernance', + ); + }); + + describe('using workflow', function () { + beforeEach(async function () { + this.settings = { + proposal: [ + [ this.mock.address ], + [ web3.utils.toWei('0') ], + [ this.mock.contract.methods.setLateQuorumVoteExtension(this.newVoteExtension).encodeABI() ], + '', + ], + proposer, + tokenHolder: owner, + voters: [ + { voter: voter1, weight: web3.utils.toWei('1.0'), support: Enums.VoteType.For }, + ], + }; + }); + afterEach(async function () { + expectEvent( + this.receipts.propose, + 'ProposalCreated', + { proposalId: this.id }, + ); + expectEvent( + this.receipts.execute, + 'ProposalExecuted', + { proposalId: this.id }, + ); + expectEvent( + this.receipts.execute, + 'LateQuorumVoteExtensionSet', + { oldVoteExtension: lateQuorumVoteExtension, newVoteExtension: this.newVoteExtension }, + ); + expect(await this.mock.lateQuorumVoteExtension()).to.be.bignumber.equal(this.newVoteExtension); + }); + runGovernorWorkflow(); + }); + }); +}); diff --git a/test/governance/extensions/GovernorTimelockCompound.test.js b/test/governance/extensions/GovernorTimelockCompound.test.js index 303cc97e9..bc4f15c99 100644 --- a/test/governance/extensions/GovernorTimelockCompound.test.js +++ b/test/governance/extensions/GovernorTimelockCompound.test.js @@ -21,7 +21,7 @@ function makeContractAddress (creator, nonce) { } contract('GovernorTimelockCompound', function (accounts) { - const [ admin, voter ] = accounts; + const [ admin, voter, other ] = accounts; const name = 'OZ-Governor'; // const version = '1'; @@ -328,6 +328,57 @@ contract('GovernorTimelockCompound', function (accounts) { runGovernorWorkflow(); }); + describe('relay', function () { + beforeEach(async function () { + await this.token.mint(this.mock.address, 1); + this.call = [ + this.token.address, + 0, + this.token.contract.methods.transfer(other, 1).encodeABI(), + ]; + }); + + it('protected', async function () { + await expectRevert( + this.mock.relay(...this.call), + 'Governor: onlyGovernance', + ); + }); + + describe('using workflow', function () { + beforeEach(async function () { + this.settings = { + proposal: [ + [ + this.mock.address, + ], + [ + web3.utils.toWei('0'), + ], + [ + this.mock.contract.methods.relay(...this.call).encodeABI(), + ], + '', + ], + voters: [ + { voter: voter, support: Enums.VoteType.For }, + ], + steps: { + queue: { delay: 7 * 86400 }, + }, + }; + + expect(await this.token.balanceOf(this.mock.address), 1); + expect(await this.token.balanceOf(other), 0); + }); + afterEach(async function () { + expect(await this.token.balanceOf(this.mock.address), 0); + expect(await this.token.balanceOf(other), 1); + }); + runGovernorWorkflow(); + }); + }); + describe('updateTimelock', function () { beforeEach(async function () { this.newTimelock = await Timelock.new(this.mock.address, 7 * 86400); diff --git a/test/governance/extensions/GovernorTimelockControl.test.js b/test/governance/extensions/GovernorTimelockControl.test.js index fca7bd535..35242740b 100644 --- a/test/governance/extensions/GovernorTimelockControl.test.js +++ b/test/governance/extensions/GovernorTimelockControl.test.js @@ -16,7 +16,7 @@ const Governor = artifacts.require('GovernorTimelockControlMock'); const CallReceiver = artifacts.require('CallReceiverMock'); contract('GovernorTimelockControl', function (accounts) { - const [ voter ] = accounts; + const [ admin, voter, other ] = accounts; const name = 'OZ-Governor'; // const version = '1'; @@ -33,6 +33,7 @@ contract('GovernorTimelockControl', function (accounts) { this.receiver = await CallReceiver.new(); // normal setup: governor is proposer, everyone is executor, timelock is its own admin await this.timelock.grantRole(await this.timelock.PROPOSER_ROLE(), this.mock.address); + await this.timelock.grantRole(await this.timelock.PROPOSER_ROLE(), admin); await this.timelock.grantRole(await this.timelock.EXECUTOR_ROLE(), constants.ZERO_ADDRESS); await this.timelock.revokeRole(await this.timelock.TIMELOCK_ADMIN_ROLE(), deployer); await this.token.mint(voter, tokenSupply); @@ -320,6 +321,96 @@ contract('GovernorTimelockControl', function (accounts) { runGovernorWorkflow(); }); + describe('relay', function () { + beforeEach(async function () { + await this.token.mint(this.mock.address, 1); + this.call = [ + this.token.address, + 0, + this.token.contract.methods.transfer(other, 1).encodeABI(), + ]; + }); + + it('protected', async function () { + await expectRevert( + this.mock.relay(...this.call), + 'Governor: onlyGovernance', + ); + }); + + describe('using workflow', function () { + beforeEach(async function () { + this.settings = { + proposal: [ + [ + this.mock.address, + ], + [ + web3.utils.toWei('0'), + ], + [ + this.mock.contract.methods.relay(...this.call).encodeABI(), + ], + '', + ], + voters: [ + { voter: voter, support: Enums.VoteType.For }, + ], + steps: { + queue: { delay: 7 * 86400 }, + }, + }; + + expect(await this.token.balanceOf(this.mock.address), 1); + expect(await this.token.balanceOf(other), 0); + }); + afterEach(async function () { + expect(await this.token.balanceOf(this.mock.address), 0); + expect(await this.token.balanceOf(other), 1); + }); + runGovernorWorkflow(); + }); + }); + + describe('cancel on timelock is forwarded in state', function () { + beforeEach(async function () { + this.settings = { + proposal: [ + [ this.receiver.address ], + [ web3.utils.toWei('0') ], + [ this.receiver.contract.methods.mockFunction().encodeABI() ], + '', + ], + voters: [ + { voter: voter, support: Enums.VoteType.For }, + ], + steps: { + queue: { delay: 3600 }, + execute: { enable: false }, + }, + }; + }); + afterEach(async function () { + const timelockid = await this.timelock.hashOperationBatch( + ...this.settings.proposal.slice(0, 3), + '0x0', + this.descriptionHash, + ); + + expect(await this.mock.state(this.id)).to.be.bignumber.equal(Enums.ProposalState.Queued); + + const receipt = await this.timelock.cancel(timelockid, { from: admin }); + expectEvent( + receipt, + 'Cancelled', + { id: timelockid }, + ); + + expect(await this.mock.state(this.id)).to.be.bignumber.equal(Enums.ProposalState.Canceled); + }); + runGovernorWorkflow(); + }); + describe('updateTimelock', function () { beforeEach(async function () { this.newTimelock = await Timelock.new(3600, [], []); diff --git a/test/governance/utils/Votes.behavior.js b/test/governance/utils/Votes.behavior.js new file mode 100644 index 000000000..17b49eaa9 --- /dev/null +++ b/test/governance/utils/Votes.behavior.js @@ -0,0 +1,344 @@ +const { constants, expectEvent, expectRevert, time } = require('@openzeppelin/test-helpers'); + +const { MAX_UINT256, ZERO_ADDRESS } = constants; + +const { fromRpcSig } = require('ethereumjs-util'); +const ethSigUtil = require('eth-sig-util'); +const Wallet = require('ethereumjs-wallet').default; + +const { EIP712Domain, domainSeparator } = require('../../helpers/eip712'); + +const Delegation = [ + { name: 'delegatee', type: 'address' }, + { name: 'nonce', type: 'uint256' }, + { name: 'expiry', type: 'uint256' }, +]; + +const version = '1'; + +function shouldBehaveLikeVotes () { + describe('run votes workflow', function () { + it('initial nonce is 0', async function () { + expect(await this.votes.nonces(this.account1)).to.be.bignumber.equal('0'); + }); + + it('domain separator', async function () { + expect( + await this.votes.DOMAIN_SEPARATOR(), + ).to.equal( + await domainSeparator(this.name, version, this.chainId, this.votes.address), + ); + }); + + describe('delegation with signature', function () { + const delegator = Wallet.generate(); + const delegatorAddress = web3.utils.toChecksumAddress(delegator.getAddressString()); + const nonce = 0; + + const buildData = (chainId, verifyingContract, name, message) => ({ + data: { + primaryType: 'Delegation', + types: { EIP712Domain, Delegation }, + domain: { name, version, chainId, verifyingContract }, + message, + }, + }); + + beforeEach(async function () { + await this.votes.mint(delegatorAddress, this.NFT0); + }); + + it('accept signed delegation', async function () { + const { v, r, s } = fromRpcSig(ethSigUtil.signTypedMessage( + delegator.getPrivateKey(), + buildData(this.chainId, this.votes.address, this.name, { + delegatee: delegatorAddress, + nonce, + expiry: MAX_UINT256, + }), + )); + + expect(await this.votes.delegates(delegatorAddress)).to.be.equal(ZERO_ADDRESS); + + const { receipt } = await this.votes.delegateBySig(delegatorAddress, nonce, MAX_UINT256, v, r, s); + expectEvent(receipt, 'DelegateChanged', { + delegator: delegatorAddress, + fromDelegate: ZERO_ADDRESS, + toDelegate: delegatorAddress, + }); + expectEvent(receipt, 'DelegateVotesChanged', { + delegate: delegatorAddress, + previousBalance: '0', + newBalance: '1', + }); + + expect(await this.votes.delegates(delegatorAddress)).to.be.equal(delegatorAddress); + + expect(await this.votes.getVotes(delegatorAddress)).to.be.bignumber.equal('1'); + expect(await this.votes.getPastVotes(delegatorAddress, receipt.blockNumber - 1)).to.be.bignumber.equal('0'); + await time.advanceBlock(); + expect(await this.votes.getPastVotes(delegatorAddress, receipt.blockNumber)).to.be.bignumber.equal('1'); + }); + + it('rejects reused signature', async function () { + const { v, r, s } = fromRpcSig(ethSigUtil.signTypedMessage( + delegator.getPrivateKey(), + buildData(this.chainId, this.votes.address, this.name, { + delegatee: delegatorAddress, + nonce, + expiry: MAX_UINT256, + }), + )); + + await this.votes.delegateBySig(delegatorAddress, nonce, MAX_UINT256, v, r, s); + + await expectRevert( + this.votes.delegateBySig(delegatorAddress, nonce, MAX_UINT256, v, r, s), + 'Votes: invalid nonce', + ); + }); + + it('rejects bad delegatee', async function () { + const { v, r, s } = fromRpcSig(ethSigUtil.signTypedMessage( + delegator.getPrivateKey(), + buildData(this.chainId, this.votes.address, this.name, { + delegatee: delegatorAddress, + nonce, + expiry: MAX_UINT256, + }), + )); + + const { logs } = await this.votes.delegateBySig(this.account1Delegatee, nonce, MAX_UINT256, v, r, s); + const { args } = logs.find(({ event }) => event === 'DelegateChanged'); + expect(args.delegator).to.not.be.equal(delegatorAddress); + expect(args.fromDelegate).to.be.equal(ZERO_ADDRESS); + expect(args.toDelegate).to.be.equal(this.account1Delegatee); + }); + + it('rejects bad nonce', async function () { + const { v, r, s } = fromRpcSig(ethSigUtil.signTypedMessage( + delegator.getPrivateKey(), + buildData(this.chainId, this.votes.address, this.name, { + delegatee: delegatorAddress, + nonce, + expiry: MAX_UINT256, + }), + )); + await expectRevert( + this.votes.delegateBySig(delegatorAddress, nonce + 1, MAX_UINT256, v, r, s), + 'Votes: invalid nonce', + ); + }); + + it('rejects expired permit', async function () { + const expiry = (await time.latest()) - time.duration.weeks(1); + const { v, r, s } = fromRpcSig(ethSigUtil.signTypedMessage( + delegator.getPrivateKey(), + buildData(this.chainId, this.votes.address, this.name, { + delegatee: delegatorAddress, + nonce, + expiry, + }), + )); + + await expectRevert( + this.votes.delegateBySig(delegatorAddress, nonce, expiry, v, r, s), + 'Votes: signature expired', + ); + }); + }); + + describe('set delegation', function () { + describe('call', function () { + it('delegation with tokens', async function () { + await this.votes.mint(this.account1, this.NFT0); + expect(await this.votes.delegates(this.account1)).to.be.equal(ZERO_ADDRESS); + + const { receipt } = await this.votes.delegate(this.account1, { from: this.account1 }); + expectEvent(receipt, 'DelegateChanged', { + delegator: this.account1, + fromDelegate: ZERO_ADDRESS, + toDelegate: this.account1, + }); + expectEvent(receipt, 'DelegateVotesChanged', { + delegate: this.account1, + previousBalance: '0', + newBalance: '1', + }); + + expect(await this.votes.delegates(this.account1)).to.be.equal(this.account1); + + expect(await this.votes.getVotes(this.account1)).to.be.bignumber.equal('1'); + expect(await this.votes.getPastVotes(this.account1, receipt.blockNumber - 1)).to.be.bignumber.equal('0'); + await time.advanceBlock(); + expect(await this.votes.getPastVotes(this.account1, receipt.blockNumber)).to.be.bignumber.equal('1'); + }); + + it('delegation without tokens', async function () { + expect(await this.votes.delegates(this.account1)).to.be.equal(ZERO_ADDRESS); + + const { receipt } = await this.votes.delegate(this.account1, { from: this.account1 }); + expectEvent(receipt, 'DelegateChanged', { + delegator: this.account1, + fromDelegate: ZERO_ADDRESS, + toDelegate: this.account1, + }); + expectEvent.notEmitted(receipt, 'DelegateVotesChanged'); + + expect(await this.votes.delegates(this.account1)).to.be.equal(this.account1); + }); + }); + }); + + describe('change delegation', function () { + beforeEach(async function () { + await this.votes.mint(this.account1, this.NFT0); + await this.votes.delegate(this.account1, { from: this.account1 }); + }); + + it('call', async function () { + expect(await this.votes.delegates(this.account1)).to.be.equal(this.account1); + + const { receipt } = await this.votes.delegate(this.account1Delegatee, { from: this.account1 }); + expectEvent(receipt, 'DelegateChanged', { + delegator: this.account1, + fromDelegate: this.account1, + toDelegate: this.account1Delegatee, + }); + expectEvent(receipt, 'DelegateVotesChanged', { + delegate: this.account1, + previousBalance: '1', + newBalance: '0', + }); + expectEvent(receipt, 'DelegateVotesChanged', { + delegate: this.account1Delegatee, + previousBalance: '0', + newBalance: '1', + }); + const prevBlock = receipt.blockNumber - 1; + expect(await this.votes.delegates(this.account1)).to.be.equal(this.account1Delegatee); + + expect(await this.votes.getVotes(this.account1)).to.be.bignumber.equal('0'); + expect(await this.votes.getVotes(this.account1Delegatee)).to.be.bignumber.equal('1'); + expect(await this.votes.getPastVotes(this.account1, receipt.blockNumber - 1)).to.be.bignumber.equal('1'); + expect(await this.votes.getPastVotes(this.account1Delegatee, prevBlock)).to.be.bignumber.equal('0'); + await time.advanceBlock(); + expect(await this.votes.getPastVotes(this.account1, receipt.blockNumber)).to.be.bignumber.equal('0'); + expect(await this.votes.getPastVotes(this.account1Delegatee, receipt.blockNumber)).to.be.bignumber.equal('1'); + }); + }); + + describe('getPastTotalSupply', function () { + beforeEach(async function () { + await this.votes.delegate(this.account1, { from: this.account1 }); + }); + + it('reverts if block number >= current block', async function () { + await expectRevert( + this.votes.getPastTotalSupply(5e10), + 'block not yet mined', + ); + }); + + it('returns 0 if there are no checkpoints', async function () { + expect(await this.votes.getPastTotalSupply(0)).to.be.bignumber.equal('0'); + }); + + it('returns the latest block if >= last checkpoint block', async function () { + const t1 = await this.votes.mint(this.account1, this.NFT0); + await time.advanceBlock(); + await time.advanceBlock(); + + expect(await this.votes.getPastTotalSupply(t1.receipt.blockNumber - 1)).to.be.bignumber.equal('0'); + expect(await this.votes.getPastTotalSupply(t1.receipt.blockNumber + 1)).to.be.bignumber.equal('1'); + }); + + it('returns zero if < first checkpoint block', async function () { + await time.advanceBlock(); + const t2 = await this.votes.mint(this.account1, this.NFT1); + await time.advanceBlock(); + await time.advanceBlock(); + + expect(await this.votes.getPastTotalSupply(t2.receipt.blockNumber - 1)).to.be.bignumber.equal('0'); + expect(await this.votes.getPastTotalSupply(t2.receipt.blockNumber + 1)).to.be.bignumber.equal('1'); + }); + + it('generally returns the voting balance at the appropriate checkpoint', async function () { + const t1 = await this.votes.mint(this.account1, this.NFT1); + await time.advanceBlock(); + await time.advanceBlock(); + const t2 = await this.votes.burn(this.NFT1); + await time.advanceBlock(); + await time.advanceBlock(); + const t3 = await this.votes.mint(this.account1, this.NFT2); + await time.advanceBlock(); + await time.advanceBlock(); + const t4 = await this.votes.burn(this.NFT2); + await time.advanceBlock(); + await time.advanceBlock(); + const t5 = await this.votes.mint(this.account1, this.NFT3); + await time.advanceBlock(); + await time.advanceBlock(); + + expect(await this.votes.getPastTotalSupply(t1.receipt.blockNumber - 1)).to.be.bignumber.equal('0'); + expect(await this.votes.getPastTotalSupply(t1.receipt.blockNumber)).to.be.bignumber.equal('1'); + expect(await this.votes.getPastTotalSupply(t1.receipt.blockNumber + 1)).to.be.bignumber.equal('1'); + expect(await this.votes.getPastTotalSupply(t2.receipt.blockNumber)).to.be.bignumber.equal('0'); + expect(await this.votes.getPastTotalSupply(t2.receipt.blockNumber + 1)).to.be.bignumber.equal('0'); + expect(await this.votes.getPastTotalSupply(t3.receipt.blockNumber)).to.be.bignumber.equal('1'); + expect(await this.votes.getPastTotalSupply(t3.receipt.blockNumber + 1)).to.be.bignumber.equal('1'); + expect(await this.votes.getPastTotalSupply(t4.receipt.blockNumber)).to.be.bignumber.equal('0'); + expect(await this.votes.getPastTotalSupply(t4.receipt.blockNumber + 1)).to.be.bignumber.equal('0'); + expect(await this.votes.getPastTotalSupply(t5.receipt.blockNumber)).to.be.bignumber.equal('1'); + expect(await this.votes.getPastTotalSupply(t5.receipt.blockNumber + 1)).to.be.bignumber.equal('1'); + }); + }); + + // The following tests are a adaptation of + // https://github.com/compound-finance/compound-protocol/blob/master/tests/Governance/CompTest.js. + describe('Compound test suite', function () { + beforeEach(async function () { + await this.votes.mint(this.account1, this.NFT0); + await this.votes.mint(this.account1, this.NFT1); + await this.votes.mint(this.account1, this.NFT2); + await this.votes.mint(this.account1, this.NFT3); + }); + + describe('getPastVotes', function () { + it('reverts if block number >= current block', async function () { + await expectRevert( + this.votes.getPastVotes(this.account2, 5e10), + 'block not yet mined', + ); + }); + + it('returns 0 if there are no checkpoints', async function () { + expect(await this.votes.getPastVotes(this.account2, 0)).to.be.bignumber.equal('0'); + }); + + it('returns the latest block if >= last checkpoint block', async function () { + const t1 = await this.votes.delegate(this.account2, { from: this.account1 }); + await time.advanceBlock(); + await time.advanceBlock(); + const latest = await this.votes.getVotes(this.account2); + const nextBlock = t1.receipt.blockNumber + 1; + expect(await this.votes.getPastVotes(this.account2, t1.receipt.blockNumber)).to.be.bignumber.equal(latest); + expect(await this.votes.getPastVotes(this.account2, nextBlock)).to.be.bignumber.equal(latest); + }); + + it('returns zero if < first checkpoint block', async function () { + await time.advanceBlock(); + const t1 = await this.votes.delegate(this.account2, { from: this.account1 }); + await time.advanceBlock(); + await time.advanceBlock(); + + expect(await this.votes.getPastVotes(this.account2, t1.receipt.blockNumber - 1)).to.be.bignumber.equal('0'); + }); + }); + }); + }); +} + +module.exports = { + shouldBehaveLikeVotes, +}; diff --git a/test/governance/utils/Votes.test.js b/test/governance/utils/Votes.test.js new file mode 100644 index 000000000..32b7d1dca --- /dev/null +++ b/test/governance/utils/Votes.test.js @@ -0,0 +1,61 @@ +const { expectRevert, BN } = require('@openzeppelin/test-helpers'); + +const { expect } = require('chai'); + +const { + shouldBehaveLikeVotes, +} = require('./Votes.behavior'); + +const Votes = artifacts.require('VotesMock'); + +contract('Votes', function (accounts) { + const [ account1, account2, account3 ] = accounts; + beforeEach(async function () { + this.name = 'My Vote'; + this.votes = await Votes.new(this.name); + }); + + it('starts with zero votes', async function () { + expect(await this.votes.getTotalSupply()).to.be.bignumber.equal('0'); + }); + + describe('performs voting operations', function () { + beforeEach(async function () { + this.tx1 = await this.votes.mint(account1, 1); + this.tx2 = await this.votes.mint(account2, 1); + this.tx3 = await this.votes.mint(account3, 1); + }); + + it('reverts if block number >= current block', async function () { + await expectRevert( + this.votes.getPastTotalSupply(this.tx3.receipt.blockNumber + 1), + 'Votes: block not yet mined', + ); + }); + + it('delegates', async function () { + await this.votes.delegate(account3, account2); + + expect(await this.votes.delegates(account3)).to.be.equal(account2); + }); + + it('returns total amount of votes', async function () { + expect(await this.votes.getTotalSupply()).to.be.bignumber.equal('3'); + }); + }); + + describe('performs voting workflow', function () { + beforeEach(async function () { + this.chainId = await this.votes.getChainId(); + this.account1 = account1; + this.account2 = account2; + this.account1Delegatee = account2; + this.NFT0 = new BN('10000000000000000000000000'); + this.NFT1 = new BN('10'); + this.NFT2 = new BN('20'); + this.NFT3 = new BN('30'); + }); + + shouldBehaveLikeVotes(); + }); +}); diff --git a/test/helpers/erc1967.js b/test/helpers/erc1967.js new file mode 100644 index 000000000..aab0e2288 --- /dev/null +++ b/test/helpers/erc1967.js @@ -0,0 +1,24 @@ +const ImplementationLabel = 'eip1967.proxy.implementation'; +const AdminLabel = 'eip1967.proxy.admin'; +const BeaconLabel = 'eip1967.proxy.beacon'; + +function labelToSlot (label) { + return '0x' + web3.utils.toBN(web3.utils.keccak256(label)).subn(1).toString(16); +} + +function getSlot (address, slot) { + return web3.eth.getStorageAt( + web3.utils.isAddress(address) ? address : address.address, + web3.utils.isHex(slot) ? slot : labelToSlot(slot), + ); +} + +module.exports = { + ImplementationLabel, + AdminLabel, + BeaconLabel, + ImplementationSlot: labelToSlot(ImplementationLabel), + AdminSlot: labelToSlot(AdminLabel), + BeaconSlot: labelToSlot(BeaconLabel), + getSlot, +}; diff --git a/test/metatx/MinimalForwarder.test.js b/test/metatx/MinimalForwarder.test.js index 6151f97ec..b8984e431 100644 --- a/test/metatx/MinimalForwarder.test.js +++ b/test/metatx/MinimalForwarder.test.js @@ -6,6 +6,7 @@ const { expectRevert, constants } = require('@openzeppelin/test-helpers'); const { expect } = require('chai'); const MinimalForwarder = artifacts.require('MinimalForwarder'); +const CallReceiverMock = artifacts.require('CallReceiverMock'); const name = 'MinimalForwarder'; const version = '0.0.1'; @@ -44,7 +45,7 @@ contract('MinimalForwarder', function (accounts) { nonce: Number(await this.forwarder.getNonce(this.sender)), data: '0x', }; - this.sign = ethSigUtil.signTypedMessage( + this.sign = () => ethSigUtil.signTypedMessage( this.wallet.getPrivateKey(), { data: { @@ -65,7 +66,7 @@ contract('MinimalForwarder', function (accounts) { }); it('success', async function () { - expect(await this.forwarder.verify(this.req, this.sign)).to.be.equal(true); + expect(await this.forwarder.verify(this.req, this.sign())).to.be.equal(true); }); afterEach(async function () { @@ -76,27 +77,27 @@ contract('MinimalForwarder', function (accounts) { context('invalid signature', function () { it('tampered from', async function () { - expect(await this.forwarder.verify({ ...this.req, from: accounts[0] }, this.sign)) + expect(await this.forwarder.verify({ ...this.req, from: accounts[0] }, this.sign())) .to.be.equal(false); }); it('tampered to', async function () { - expect(await this.forwarder.verify({ ...this.req, to: accounts[0] }, this.sign)) + expect(await this.forwarder.verify({ ...this.req, to: accounts[0] }, this.sign())) .to.be.equal(false); }); it('tampered value', async function () { - expect(await this.forwarder.verify({ ...this.req, value: web3.utils.toWei('1') }, this.sign)) + expect(await this.forwarder.verify({ ...this.req, value: web3.utils.toWei('1') }, this.sign())) .to.be.equal(false); }); it('tampered nonce', async function () { - expect(await this.forwarder.verify({ ...this.req, nonce: this.req.nonce + 1 }, this.sign)) + expect(await this.forwarder.verify({ ...this.req, nonce: this.req.nonce + 1 }, this.sign())) .to.be.equal(false); }); it('tampered data', async function () { - expect(await this.forwarder.verify({ ...this.req, data: '0x1742' }, this.sign)) + expect(await this.forwarder.verify({ ...this.req, data: '0x1742' }, this.sign())) .to.be.equal(false); }); it('tampered signature', async function () { - const tamperedsign = web3.utils.hexToBytes(this.sign); + const tamperedsign = web3.utils.hexToBytes(this.sign()); tamperedsign[42] ^= 0xff; expect(await this.forwarder.verify(this.req, web3.utils.bytesToHex(tamperedsign))) .to.be.equal(false); @@ -112,7 +113,7 @@ contract('MinimalForwarder', function (accounts) { }); it('success', async function () { - await this.forwarder.execute(this.req, this.sign); // expect to not revert + await this.forwarder.execute(this.req, this.sign()); // expect to not revert }); afterEach(async function () { @@ -124,36 +125,36 @@ contract('MinimalForwarder', function (accounts) { context('invalid signature', function () { it('tampered from', async function () { await expectRevert( - this.forwarder.execute({ ...this.req, from: accounts[0] }, this.sign), + this.forwarder.execute({ ...this.req, from: accounts[0] }, this.sign()), 'MinimalForwarder: signature does not match request', ); }); it('tampered to', async function () { await expectRevert( - this.forwarder.execute({ ...this.req, to: accounts[0] }, this.sign), + this.forwarder.execute({ ...this.req, to: accounts[0] }, this.sign()), 'MinimalForwarder: signature does not match request', ); }); it('tampered value', async function () { await expectRevert( - this.forwarder.execute({ ...this.req, value: web3.utils.toWei('1') }, this.sign), + this.forwarder.execute({ ...this.req, value: web3.utils.toWei('1') }, this.sign()), 'MinimalForwarder: signature does not match request', ); }); it('tampered nonce', async function () { await expectRevert( - this.forwarder.execute({ ...this.req, nonce: this.req.nonce + 1 }, this.sign), + this.forwarder.execute({ ...this.req, nonce: this.req.nonce + 1 }, this.sign()), 'MinimalForwarder: signature does not match request', ); }); it('tampered data', async function () { await expectRevert( - this.forwarder.execute({ ...this.req, data: '0x1742' }, this.sign), + this.forwarder.execute({ ...this.req, data: '0x1742' }, this.sign()), 'MinimalForwarder: signature does not match request', ); }); it('tampered signature', async function () { - const tamperedsign = web3.utils.hexToBytes(this.sign); + const tamperedsign = web3.utils.hexToBytes(this.sign()); tamperedsign[42] ^= 0xff; await expectRevert( this.forwarder.execute(this.req, web3.utils.bytesToHex(tamperedsign)), @@ -161,6 +162,23 @@ contract('MinimalForwarder', function (accounts) { ); }); }); + + it('bubble out of gas', async function () { + const receiver = await CallReceiverMock.new(); + const gasAvailable = 100000; + this.req.to = receiver.address; + this.req.data = receiver.contract.methods.mockFunctionOutOfGas().encodeABI(); + this.req.gas = 1000000; + + await expectRevert.assertion( + this.forwarder.execute(this.req, this.sign(), { gas: gasAvailable }), + ); + + const { transactions } = await web3.eth.getBlock('latest'); + const { gasUsed } = await web3.eth.getTransactionReceipt(transactions[0]); + + expect(gasUsed).to.be.equal(gasAvailable); + }); }); }); }); diff --git a/test/proxy/Proxy.behaviour.js b/test/proxy/Proxy.behaviour.js index 8cb457b06..435792f23 100644 --- a/test/proxy/Proxy.behaviour.js +++ b/test/proxy/Proxy.behaviour.js @@ -1,16 +1,10 @@ -const { BN, expectRevert } = require('@openzeppelin/test-helpers'); -const ethereumjsUtil = require('ethereumjs-util'); +const { expectRevert } = require('@openzeppelin/test-helpers'); +const { getSlot, ImplementationSlot } = require('../helpers/erc1967'); const { expect } = require('chai'); const DummyImplementation = artifacts.require('DummyImplementation'); -const IMPLEMENTATION_LABEL = 'eip1967.proxy.implementation'; - -function toChecksumAddress (address) { - return ethereumjsUtil.toChecksumAddress('0x' + address.replace(/^0x/, '').padStart(40, '0')); -} - module.exports = function shouldBehaveLikeProxy (createProxy, proxyAdminAddress, proxyCreator) { it('cannot be initialized with a non-contract address', async function () { const nonContractAddress = proxyCreator; @@ -28,9 +22,9 @@ module.exports = function shouldBehaveLikeProxy (createProxy, proxyAdminAddress, const assertProxyInitialization = function ({ value, balance }) { it('sets the implementation address', async function () { - const slot = '0x' + new BN(ethereumjsUtil.keccak256(Buffer.from(IMPLEMENTATION_LABEL))).subn(1).toString(16); - const implementation = toChecksumAddress((await web3.eth.getStorageAt(this.proxy, slot)).substr(-40)); - expect(implementation).to.be.equal(this.implementation); + const implementationSlot = await getSlot(this.proxy, ImplementationSlot); + const implementationAddress = web3.utils.toChecksumAddress(implementationSlot.substr(-40)); + expect(implementationAddress).to.be.equal(this.implementation); }); it('initializes the proxy', async function () { diff --git a/test/proxy/beacon/BeaconProxy.test.js b/test/proxy/beacon/BeaconProxy.test.js index e02bb3b29..0a4a8d0cf 100644 --- a/test/proxy/beacon/BeaconProxy.test.js +++ b/test/proxy/beacon/BeaconProxy.test.js @@ -1,6 +1,5 @@ -const { BN, expectRevert } = require('@openzeppelin/test-helpers'); -const ethereumjsUtil = require('ethereumjs-util'); -const { keccak256 } = ethereumjsUtil; +const { expectRevert } = require('@openzeppelin/test-helpers'); +const { getSlot, BeaconSlot } = require('../../helpers/erc1967'); const { expect } = require('chai'); @@ -11,13 +10,6 @@ const DummyImplementationV2 = artifacts.require('DummyImplementationV2'); const BadBeaconNoImpl = artifacts.require('BadBeaconNoImpl'); const BadBeaconNotContract = artifacts.require('BadBeaconNotContract'); -function toChecksumAddress (address) { - return ethereumjsUtil.toChecksumAddress('0x' + address.replace(/^0x/, '').padStart(40, '0').substr(-40)); -} - -const BEACON_LABEL = 'eip1967.proxy.beacon'; -const BEACON_SLOT = '0x' + new BN(keccak256(Buffer.from(BEACON_LABEL))).subn(1).toString(16); - contract('BeaconProxy', function (accounts) { const [anotherAccount] = accounts; @@ -53,7 +45,8 @@ contract('BeaconProxy', function (accounts) { describe('initialization', function () { before(function () { this.assertInitialized = async ({ value, balance }) => { - const beaconAddress = toChecksumAddress(await web3.eth.getStorageAt(this.proxy.address, BEACON_SLOT)); + const beaconSlot = await getSlot(this.proxy, BeaconSlot); + const beaconAddress = web3.utils.toChecksumAddress(beaconSlot.substr(-40)); expect(beaconAddress).to.equal(this.beacon.address); const dummy = new DummyImplementation(this.proxy.address); diff --git a/test/proxy/transparent/TransparentUpgradeableProxy.behaviour.js b/test/proxy/transparent/TransparentUpgradeableProxy.behaviour.js index 54b78e064..33fef6f41 100644 --- a/test/proxy/transparent/TransparentUpgradeableProxy.behaviour.js +++ b/test/proxy/transparent/TransparentUpgradeableProxy.behaviour.js @@ -1,6 +1,6 @@ const { BN, expectRevert, expectEvent, constants } = require('@openzeppelin/test-helpers'); const { ZERO_ADDRESS } = constants; -const ethereumjsUtil = require('ethereumjs-util'); +const { getSlot, ImplementationSlot, AdminSlot } = require('../../helpers/erc1967'); const { expect } = require('chai'); @@ -16,13 +16,6 @@ const InitializableMock = artifacts.require('InitializableMock'); const DummyImplementation = artifacts.require('DummyImplementation'); const ClashingImplementation = artifacts.require('ClashingImplementation'); -const IMPLEMENTATION_LABEL = 'eip1967.proxy.implementation'; -const ADMIN_LABEL = 'eip1967.proxy.admin'; - -function toChecksumAddress (address) { - return ethereumjsUtil.toChecksumAddress('0x' + address.replace(/^0x/, '').padStart(40, '0').substr(-40)); -} - module.exports = function shouldBehaveLikeTransparentUpgradeableProxy (createProxy, accounts) { const [proxyAdminAddress, proxyAdminOwner, anotherAccount] = accounts; @@ -312,15 +305,15 @@ module.exports = function shouldBehaveLikeTransparentUpgradeableProxy (createPro describe('storage', function () { it('should store the implementation address in specified location', async function () { - const slot = '0x' + new BN(ethereumjsUtil.keccak256(Buffer.from(IMPLEMENTATION_LABEL))).subn(1).toString(16); - const implementation = toChecksumAddress(await web3.eth.getStorageAt(this.proxyAddress, slot)); - expect(implementation).to.be.equal(this.implementationV0); + const implementationSlot = await getSlot(this.proxy, ImplementationSlot); + const implementationAddress = web3.utils.toChecksumAddress(implementationSlot.substr(-40)); + expect(implementationAddress).to.be.equal(this.implementationV0); }); it('should store the admin proxy in specified location', async function () { - const slot = '0x' + new BN(ethereumjsUtil.keccak256(Buffer.from(ADMIN_LABEL))).subn(1).toString(16); - const proxyAdmin = toChecksumAddress(await web3.eth.getStorageAt(this.proxyAddress, slot)); - expect(proxyAdmin).to.be.equal(proxyAdminAddress); + const proxyAdminSlot = await getSlot(this.proxy, AdminSlot); + const proxyAdminAddress = web3.utils.toChecksumAddress(proxyAdminSlot.substr(-40)); + expect(proxyAdminAddress).to.be.equal(proxyAdminAddress); }); }); diff --git a/test/proxy/utils/UUPSUpgradeable.test.js b/test/proxy/utils/UUPSUpgradeable.test.js index 3351ddcb8..466081d20 100644 --- a/test/proxy/utils/UUPSUpgradeable.test.js +++ b/test/proxy/utils/UUPSUpgradeable.test.js @@ -1,9 +1,11 @@ const { expectEvent, expectRevert } = require('@openzeppelin/test-helpers'); +const { web3 } = require('@openzeppelin/test-helpers/src/setup'); +const { getSlot, ImplementationSlot } = require('../../helpers/erc1967'); const ERC1967Proxy = artifacts.require('ERC1967Proxy'); const UUPSUpgradeableMock = artifacts.require('UUPSUpgradeableMock'); const UUPSUpgradeableUnsafeMock = artifacts.require('UUPSUpgradeableUnsafeMock'); -const UUPSUpgradeableBrokenMock = artifacts.require('UUPSUpgradeableBrokenMock'); +const UUPSUpgradeableLegacyMock = artifacts.require('UUPSUpgradeableLegacyMock'); const CountersImpl = artifacts.require('CountersImpl'); contract('UUPSUpgradeable', function (accounts) { @@ -11,7 +13,6 @@ contract('UUPSUpgradeable', function (accounts) { this.implInitial = await UUPSUpgradeableMock.new(); this.implUpgradeOk = await UUPSUpgradeableMock.new(); this.implUpgradeUnsafe = await UUPSUpgradeableUnsafeMock.new(); - this.implUpgradeBroken = await UUPSUpgradeableBrokenMock.new(); this.implUpgradeNonUUPS = await CountersImpl.new(); }); @@ -44,18 +45,11 @@ contract('UUPSUpgradeable', function (accounts) { expectEvent(receipt, 'Upgraded', { implementation: this.implUpgradeUnsafe.address }); }); - it('reject upgrade to broken upgradeable implementation', async function () { - await expectRevert( - this.instance.upgradeTo(this.implUpgradeBroken.address), - 'ERC1967Upgrade: upgrade breaks further upgrades', - ); - }); - // delegate to a non existing upgradeTo function causes a low level revert it('reject upgrade to non uups implementation', async function () { await expectRevert( this.instance.upgradeTo(this.implUpgradeNonUUPS.address), - 'Address: low-level delegate call failed', + 'ERC1967Upgrade: new implementation is not UUPS', ); }); @@ -63,10 +57,29 @@ contract('UUPSUpgradeable', function (accounts) { const { address } = await ERC1967Proxy.new(this.implInitial.address, '0x'); const otherInstance = await UUPSUpgradeableMock.at(address); - // infinite loop reverts when a nested call is out-of-gas await expectRevert( this.instance.upgradeTo(otherInstance.address), - 'Address: low-level delegate call failed', + 'ERC1967Upgrade: new implementation is not UUPS', ); }); + + it('can upgrade from legacy implementations', async function () { + const legacyImpl = await UUPSUpgradeableLegacyMock.new(); + const legacyInstance = await ERC1967Proxy.new(legacyImpl.address, '0x') + .then(({ address }) => UUPSUpgradeableLegacyMock.at(address)); + + const receipt = await legacyInstance.upgradeTo(this.implInitial.address); + + const UpgradedEvents = receipt.logs.filter(({ address, event }) => + address === legacyInstance.address && + event === 'Upgraded', + ); + expect(UpgradedEvents.length).to.be.equal(1); + + expectEvent(receipt, 'Upgraded', { implementation: this.implInitial.address }); + + const implementationSlot = await getSlot(legacyInstance, ImplementationSlot); + const implementationAddress = web3.utils.toChecksumAddress(implementationSlot.substr(-40)); + expect(implementationAddress).to.be.equal(this.implInitial.address); + }); }); diff --git a/test/token/ERC20/ERC20.behavior.js b/test/token/ERC20/ERC20.behavior.js index 5d23fa9ee..8bc54762a 100644 --- a/test/token/ERC20/ERC20.behavior.js +++ b/test/token/ERC20/ERC20.behavior.js @@ -1,6 +1,6 @@ const { BN, constants, expectEvent, expectRevert } = require('@openzeppelin/test-helpers'); const { expect } = require('chai'); -const { ZERO_ADDRESS } = constants; +const { ZERO_ADDRESS, MAX_UINT256 } = constants; function shouldBehaveLikeERC20 (errorPrefix, initialSupply, initialHolder, recipient, anotherAccount) { describe('total supply', function () { @@ -40,7 +40,7 @@ function shouldBehaveLikeERC20 (errorPrefix, initialSupply, initialHolder, recip describe('when the recipient is not the zero address', function () { const to = anotherAccount; - describe('when the spender has enough approved balance', function () { + describe('when the spender has enough allowance', function () { beforeEach(async function () { await this.token.approve(spender, initialSupply, { from: initialHolder }); }); @@ -63,62 +63,90 @@ function shouldBehaveLikeERC20 (errorPrefix, initialSupply, initialHolder, recip }); it('emits a transfer event', async function () { - const { logs } = await this.token.transferFrom(tokenOwner, to, amount, { from: spender }); - - expectEvent.inLogs(logs, 'Transfer', { - from: tokenOwner, - to: to, - value: amount, - }); + expectEvent( + await this.token.transferFrom(tokenOwner, to, amount, { from: spender }), + 'Transfer', + { from: tokenOwner, to: to, value: amount }, + ); }); it('emits an approval event', async function () { - const { logs } = await this.token.transferFrom(tokenOwner, to, amount, { from: spender }); - - expectEvent.inLogs(logs, 'Approval', { - owner: tokenOwner, - spender: spender, - value: await this.token.allowance(tokenOwner, spender), - }); + expectEvent( + await this.token.transferFrom(tokenOwner, to, amount, { from: spender }), + 'Approval', + { owner: tokenOwner, spender: spender, value: await this.token.allowance(tokenOwner, spender) }, + ); }); }); describe('when the token owner does not have enough balance', function () { - const amount = initialSupply.addn(1); + const amount = initialSupply; + + beforeEach('reducing balance', async function () { + await this.token.transfer(to, 1, { from: tokenOwner }); + }); it('reverts', async function () { - await expectRevert(this.token.transferFrom( - tokenOwner, to, amount, { from: spender }), `${errorPrefix}: transfer amount exceeds balance`, + await expectRevert( + this.token.transferFrom(tokenOwner, to, amount, { from: spender }), + `${errorPrefix}: transfer amount exceeds balance`, ); }); }); }); - describe('when the spender does not have enough approved balance', function () { + describe('when the spender does not have enough allowance', function () { + const allowance = initialSupply.subn(1); + beforeEach(async function () { - await this.token.approve(spender, initialSupply.subn(1), { from: tokenOwner }); + await this.token.approve(spender, allowance, { from: tokenOwner }); }); describe('when the token owner has enough balance', function () { const amount = initialSupply; it('reverts', async function () { - await expectRevert(this.token.transferFrom( - tokenOwner, to, amount, { from: spender }), `${errorPrefix}: transfer amount exceeds allowance`, + await expectRevert( + this.token.transferFrom(tokenOwner, to, amount, { from: spender }), + `${errorPrefix}: insufficient allowance`, ); }); }); describe('when the token owner does not have enough balance', function () { - const amount = initialSupply.addn(1); + const amount = allowance; + + beforeEach('reducing balance', async function () { + await this.token.transfer(to, 2, { from: tokenOwner }); + }); it('reverts', async function () { - await expectRevert(this.token.transferFrom( - tokenOwner, to, amount, { from: spender }), `${errorPrefix}: transfer amount exceeds balance`, + await expectRevert( + this.token.transferFrom(tokenOwner, to, amount, { from: spender }), + `${errorPrefix}: transfer amount exceeds balance`, ); }); }); }); + + describe('when the spender has unlimited allowance', function () { + beforeEach(async function () { + await this.token.approve(spender, MAX_UINT256, { from: initialHolder }); + }); + + it('does not decrease the spender allowance', async function () { + await this.token.transferFrom(tokenOwner, to, 1, { from: spender }); + + expect(await this.token.allowance(tokenOwner, spender)).to.be.bignumber.equal(MAX_UINT256); + }); + + it('does not emit an approval event', async function () { + expectEvent.notEmitted( + await this.token.transferFrom(tokenOwner, to, 1, { from: spender }), + 'Approval', + ); + }); + }); }); describe('when the recipient is the zero address', function () { @@ -143,8 +171,9 @@ function shouldBehaveLikeERC20 (errorPrefix, initialSupply, initialHolder, recip const to = recipient; it('reverts', async function () { - await expectRevert(this.token.transferFrom( - tokenOwner, to, amount, { from: spender }), `${errorPrefix}: transfer from the zero address`, + await expectRevert( + this.token.transferFrom(tokenOwner, to, amount, { from: spender }), + 'from the zero address', ); }); }); @@ -183,13 +212,11 @@ function shouldBehaveLikeERC20Transfer (errorPrefix, from, to, balance, transfer }); it('emits a transfer event', async function () { - const { logs } = await transfer.call(this, from, to, amount); - - expectEvent.inLogs(logs, 'Transfer', { - from, - to, - value: amount, - }); + expectEvent( + await transfer.call(this, from, to, amount), + 'Transfer', + { from, to, value: amount }, + ); }); }); @@ -205,13 +232,11 @@ function shouldBehaveLikeERC20Transfer (errorPrefix, from, to, balance, transfer }); it('emits a transfer event', async function () { - const { logs } = await transfer.call(this, from, to, amount); - - expectEvent.inLogs(logs, 'Transfer', { - from, - to, - value: amount, - }); + expectEvent( + await transfer.call(this, from, to, amount), + 'Transfer', + { from, to, value: amount }, + ); }); }); }); @@ -231,13 +256,11 @@ function shouldBehaveLikeERC20Approve (errorPrefix, owner, spender, supply, appr const amount = supply; it('emits an approval event', async function () { - const { logs } = await approve.call(this, owner, spender, amount); - - expectEvent.inLogs(logs, 'Approval', { - owner: owner, - spender: spender, - value: amount, - }); + expectEvent( + await approve.call(this, owner, spender, amount), + 'Approval', + { owner: owner, spender: spender, value: amount }, + ); }); describe('when there was no approved amount before', function () { @@ -265,13 +288,11 @@ function shouldBehaveLikeERC20Approve (errorPrefix, owner, spender, supply, appr const amount = supply.addn(1); it('emits an approval event', async function () { - const { logs } = await approve.call(this, owner, spender, amount); - - expectEvent.inLogs(logs, 'Approval', { - owner: owner, - spender: spender, - value: amount, - }); + expectEvent( + await approve.call(this, owner, spender, amount), + 'Approval', + { owner: owner, spender: spender, value: amount }, + ); }); describe('when there was no approved amount before', function () { diff --git a/test/token/ERC20/ERC20.test.js b/test/token/ERC20/ERC20.test.js index c10041504..992edf93b 100644 --- a/test/token/ERC20/ERC20.test.js +++ b/test/token/ERC20/ERC20.test.js @@ -63,17 +63,15 @@ contract('ERC20', function (accounts) { const approvedAmount = amount; beforeEach(async function () { - ({ logs: this.logs } = await this.token.approve(spender, approvedAmount, { from: initialHolder })); + await this.token.approve(spender, approvedAmount, { from: initialHolder }); }); it('emits an approval event', async function () { - const { logs } = await this.token.decreaseAllowance(spender, approvedAmount, { from: initialHolder }); - - expectEvent.inLogs(logs, 'Approval', { - owner: initialHolder, - spender: spender, - value: new BN(0), - }); + expectEvent( + await this.token.decreaseAllowance(spender, approvedAmount, { from: initialHolder }), + 'Approval', + { owner: initialHolder, spender: spender, value: new BN(0) }, + ); }); it('decreases the spender allowance subtracting the requested amount', async function () { @@ -129,13 +127,11 @@ contract('ERC20', function (accounts) { describe('when the sender has enough balance', function () { it('emits an approval event', async function () { - const { logs } = await this.token.increaseAllowance(spender, amount, { from: initialHolder }); - - expectEvent.inLogs(logs, 'Approval', { - owner: initialHolder, - spender: spender, - value: amount, - }); + expectEvent( + await this.token.increaseAllowance(spender, amount, { from: initialHolder }), + 'Approval', + { owner: initialHolder, spender: spender, value: amount }, + ); }); describe('when there was no approved amount before', function () { @@ -163,13 +159,11 @@ contract('ERC20', function (accounts) { const amount = initialSupply.addn(1); it('emits an approval event', async function () { - const { logs } = await this.token.increaseAllowance(spender, amount, { from: initialHolder }); - - expectEvent.inLogs(logs, 'Approval', { - owner: initialHolder, - spender: spender, - value: amount, - }); + expectEvent( + await this.token.increaseAllowance(spender, amount, { from: initialHolder }), + 'Approval', + { owner: initialHolder, spender: spender, value: amount }, + ); }); describe('when there was no approved amount before', function () { @@ -215,8 +209,7 @@ contract('ERC20', function (accounts) { describe('for a non zero account', function () { beforeEach('minting', async function () { - const { logs } = await this.token.mint(recipient, amount); - this.logs = logs; + this.receipt = await this.token.mint(recipient, amount); }); it('increments totalSupply', async function () { @@ -229,10 +222,11 @@ contract('ERC20', function (accounts) { }); it('emits Transfer event', async function () { - const event = expectEvent.inLogs(this.logs, 'Transfer', { - from: ZERO_ADDRESS, - to: recipient, - }); + const event = expectEvent( + this.receipt, + 'Transfer', + { from: ZERO_ADDRESS, to: recipient }, + ); expect(event.args.value).to.be.bignumber.equal(amount); }); @@ -255,8 +249,7 @@ contract('ERC20', function (accounts) { const describeBurn = function (description, amount) { describe(description, function () { beforeEach('burning', async function () { - const { logs } = await this.token.burn(initialHolder, amount); - this.logs = logs; + this.receipt = await this.token.burn(initialHolder, amount); }); it('decrements totalSupply', async function () { @@ -270,10 +263,11 @@ contract('ERC20', function (accounts) { }); it('emits Transfer event', async function () { - const event = expectEvent.inLogs(this.logs, 'Transfer', { - from: initialHolder, - to: ZERO_ADDRESS, - }); + const event = expectEvent( + this.receipt, + 'Transfer', + { from: initialHolder, to: ZERO_ADDRESS }, + ); expect(event.args.value).to.be.bignumber.equal(amount); }); diff --git a/test/token/ERC20/extensions/ERC20Burnable.behavior.js b/test/token/ERC20/extensions/ERC20Burnable.behavior.js index 0fa2f11cd..3ba2fc9d9 100644 --- a/test/token/ERC20/extensions/ERC20Burnable.behavior.js +++ b/test/token/ERC20/extensions/ERC20Burnable.behavior.js @@ -98,7 +98,7 @@ function shouldBehaveLikeERC20Burnable (owner, initialBalance, [burner]) { it('reverts', async function () { await this.token.approve(burner, allowance, { from: owner }); await expectRevert(this.token.burnFrom(owner, allowance.addn(1), { from: burner }), - 'ERC20: burn amount exceeds allowance', + 'ERC20: insufficient allowance', ); }); }); diff --git a/test/token/ERC20/extensions/ERC20Wrapper.test.js b/test/token/ERC20/extensions/ERC20Wrapper.test.js index 05652342a..ec074e1b8 100644 --- a/test/token/ERC20/extensions/ERC20Wrapper.test.js +++ b/test/token/ERC20/extensions/ERC20Wrapper.test.js @@ -59,7 +59,7 @@ contract('ERC20', function (accounts) { it('missing approval', async function () { await expectRevert( this.token.depositFor(initialHolder, initialSupply, { from: initialHolder }), - 'ERC20: transfer amount exceeds allowance', + 'ERC20: insufficient allowance', ); }); diff --git a/test/token/ERC721/ERC721.behavior.js b/test/token/ERC721/ERC721.behavior.js index f71ebce08..67fa98a47 100644 --- a/test/token/ERC721/ERC721.behavior.js +++ b/test/token/ERC721/ERC721.behavior.js @@ -183,7 +183,7 @@ function shouldBehaveLikeERC721 (errorPrefix, owner, newOwner, approved, another it('reverts', async function () { await expectRevert( transferFunction.call(this, other, other, tokenId, { from: owner }), - 'ERC721: transfer of token that is not own', + 'ERC721: transfer from incorrect owner', ); }); }); diff --git a/test/token/ERC721/extensions/ERC721Royalty.test.js b/test/token/ERC721/extensions/ERC721Royalty.test.js new file mode 100644 index 000000000..29b28dd00 --- /dev/null +++ b/test/token/ERC721/extensions/ERC721Royalty.test.js @@ -0,0 +1,40 @@ +const { BN, constants } = require('@openzeppelin/test-helpers'); +const ERC721RoyaltyMock = artifacts.require('ERC721RoyaltyMock'); +const { ZERO_ADDRESS } = constants; + +const { shouldBehaveLikeERC2981 } = require('../../common/ERC2981.behavior'); + +contract('ERC721Royalty', function (accounts) { + const [ account1, account2 ] = accounts; + const tokenId1 = new BN('1'); + const tokenId2 = new BN('2'); + const royalty = new BN('200'); + const salePrice = new BN('1000'); + + beforeEach(async function () { + this.token = await ERC721RoyaltyMock.new('My Token', 'TKN'); + + await this.token.mint(account1, tokenId1); + await this.token.mint(account1, tokenId2); + this.account1 = account1; + this.account2 = account2; + this.tokenId1 = tokenId1; + this.tokenId2 = tokenId2; + this.salePrice = salePrice; + }); + + describe('token specific functions', function () { + beforeEach(async function () { + await this.token.setTokenRoyalty(tokenId1, account1, royalty); + }); + + it('removes royalty information after burn', async function () { + await this.token.burn(tokenId1); + const tokenInfo = await this.token.royaltyInfo(tokenId1, salePrice); + + expect(tokenInfo[0]).to.be.equal(ZERO_ADDRESS); + expect(tokenInfo[1]).to.be.bignumber.equal(new BN('0')); + }); + }); + shouldBehaveLikeERC2981(); +}); diff --git a/test/token/ERC721/extensions/ERC721Votes.test.js b/test/token/ERC721/extensions/ERC721Votes.test.js new file mode 100644 index 000000000..6f001f20b --- /dev/null +++ b/test/token/ERC721/extensions/ERC721Votes.test.js @@ -0,0 +1,174 @@ +/* eslint-disable */ + +const { BN, expectEvent, time } = require('@openzeppelin/test-helpers'); +const { expect } = require('chai'); + +const { promisify } = require('util'); +const queue = promisify(setImmediate); + +const ERC721VotesMock = artifacts.require('ERC721VotesMock'); + +const { shouldBehaveLikeVotes } = require('../../../governance/utils/Votes.behavior'); + +contract('ERC721Votes', function (accounts) { + const [ account1, account2, account1Delegatee, other1, other2 ] = accounts; + this.name = 'My Vote'; + const symbol = 'MTKN'; + + beforeEach(async function () { + this.votes = await ERC721VotesMock.new(name, symbol); + + // We get the chain id from the contract because Ganache (used for coverage) does not return the same chain id + // from within the EVM as from the JSON RPC interface. + // See https://github.com/trufflesuite/ganache-core/issues/515 + this.chainId = await this.votes.getChainId(); + + this.NFT0 = new BN('10000000000000000000000000'); + this.NFT1 = new BN('10'); + this.NFT2 = new BN('20'); + this.NFT3 = new BN('30'); + }); + + describe('balanceOf', function () { + beforeEach(async function () { + await this.votes.mint(account1, this.NFT0); + await this.votes.mint(account1, this.NFT1); + await this.votes.mint(account1, this.NFT2); + await this.votes.mint(account1, this.NFT3); + }); + + it('grants to initial account', async function () { + expect(await this.votes.balanceOf(account1)).to.be.bignumber.equal('4'); + }); + }); + + describe('transfers', function () { + beforeEach(async function () { + await this.votes.mint(account1, this.NFT0); + }); + + it('no delegation', async function () { + const { receipt } = await this.votes.transferFrom(account1, account2, this.NFT0, { from: account1 }); + expectEvent(receipt, 'Transfer', { from: account1, to: account2, tokenId: this.NFT0 }); + expectEvent.notEmitted(receipt, 'DelegateVotesChanged'); + + this.account1Votes = '0'; + this.account2Votes = '0'; + }); + + it('sender delegation', async function () { + await this.votes.delegate(account1, { from: account1 }); + + const { receipt } = await this.votes.transferFrom(account1, account2, this.NFT0, { from: account1 }); + expectEvent(receipt, 'Transfer', { from: account1, to: account2, tokenId: this.NFT0 }); + expectEvent(receipt, 'DelegateVotesChanged', { delegate: account1, previousBalance: '1', newBalance: '0' }); + + const { logIndex: transferLogIndex } = receipt.logs.find(({ event }) => event == 'Transfer'); + expect(receipt.logs.filter(({ event }) => event == 'DelegateVotesChanged').every(({ logIndex }) => transferLogIndex < logIndex)).to.be.equal(true); + + this.account1Votes = '0'; + this.account2Votes = '0'; + }); + + it('receiver delegation', async function () { + await this.votes.delegate(account2, { from: account2 }); + + const { receipt } = await this.votes.transferFrom(account1, account2, this.NFT0, { from: account1 }); + expectEvent(receipt, 'Transfer', { from: account1, to: account2, tokenId: this.NFT0 }); + expectEvent(receipt, 'DelegateVotesChanged', { delegate: account2, previousBalance: '0', newBalance: '1' }); + + const { logIndex: transferLogIndex } = receipt.logs.find(({ event }) => event == 'Transfer'); + expect(receipt.logs.filter(({ event }) => event == 'DelegateVotesChanged').every(({ logIndex }) => transferLogIndex < logIndex)).to.be.equal(true); + + this.account1Votes = '0'; + this.account2Votes = '1'; + }); + + it('full delegation', async function () { + await this.votes.delegate(account1, { from: account1 }); + await this.votes.delegate(account2, { from: account2 }); + + const { receipt } = await this.votes.transferFrom(account1, account2, this.NFT0, { from: account1 }); + expectEvent(receipt, 'Transfer', { from: account1, to: account2, tokenId: this.NFT0 }); + expectEvent(receipt, 'DelegateVotesChanged', { delegate: account1, previousBalance: '1', newBalance: '0'}); + expectEvent(receipt, 'DelegateVotesChanged', { delegate: account2, previousBalance: '0', newBalance: '1' }); + + const { logIndex: transferLogIndex } = receipt.logs.find(({ event }) => event == 'Transfer'); + expect(receipt.logs.filter(({ event }) => event == 'DelegateVotesChanged').every(({ logIndex }) => transferLogIndex < logIndex)).to.be.equal(true); + + this.account1Votes = '0'; + this.account2Votes = '1'; + }); + + it('returns the same total supply on transfers', async function () { + await this.votes.delegate(account1, { from: account1 }); + + const { receipt } = await this.votes.transferFrom(account1, account2, this.NFT0, { from: account1 }); + + await time.advanceBlock(); + await time.advanceBlock(); + + expect(await this.votes.getPastTotalSupply(receipt.blockNumber - 1)).to.be.bignumber.equal('1'); + expect(await this.votes.getPastTotalSupply(receipt.blockNumber + 1)).to.be.bignumber.equal('1'); + + this.account1Votes = '0'; + this.account2Votes = '0'; + }); + + it('generally returns the voting balance at the appropriate checkpoint', async function () { + await this.votes.mint(account1, this.NFT1); + await this.votes.mint(account1, this.NFT2); + await this.votes.mint(account1, this.NFT3); + + const total = await this.votes.balanceOf(account1); + + const t1 = await this.votes.delegate(other1, { from: account1 }); + await time.advanceBlock(); + await time.advanceBlock(); + const t2 = await this.votes.transferFrom(account1, other2, this.NFT0, { from: account1 }); + await time.advanceBlock(); + await time.advanceBlock(); + const t3 = await this.votes.transferFrom(account1, other2, this.NFT2, { from: account1 }); + await time.advanceBlock(); + await time.advanceBlock(); + const t4 = await this.votes.transferFrom(other2, account1, this.NFT2, { from: other2 }); + await time.advanceBlock(); + await time.advanceBlock(); + + expect(await this.votes.getPastVotes(other1, t1.receipt.blockNumber - 1)).to.be.bignumber.equal('0'); + expect(await this.votes.getPastVotes(other1, t1.receipt.blockNumber)).to.be.bignumber.equal(total); + expect(await this.votes.getPastVotes(other1, t1.receipt.blockNumber + 1)).to.be.bignumber.equal(total); + expect(await this.votes.getPastVotes(other1, t2.receipt.blockNumber)).to.be.bignumber.equal('3'); + expect(await this.votes.getPastVotes(other1, t2.receipt.blockNumber + 1)).to.be.bignumber.equal('3'); + expect(await this.votes.getPastVotes(other1, t3.receipt.blockNumber)).to.be.bignumber.equal('2'); + expect(await this.votes.getPastVotes(other1, t3.receipt.blockNumber + 1)).to.be.bignumber.equal('2'); + expect(await this.votes.getPastVotes(other1, t4.receipt.blockNumber)).to.be.bignumber.equal('3'); + expect(await this.votes.getPastVotes(other1, t4.receipt.blockNumber + 1)).to.be.bignumber.equal('3'); + + this.account1Votes = '0'; + this.account2Votes = '0'; + }); + + afterEach(async function () { + expect(await this.votes.getVotes(account1)).to.be.bignumber.equal(this.account1Votes); + expect(await this.votes.getVotes(account2)).to.be.bignumber.equal(this.account2Votes); + + // need to advance 2 blocks to see the effect of a transfer on "getPastVotes" + const blockNumber = await time.latestBlock(); + await time.advanceBlock(); + expect(await this.votes.getPastVotes(account1, blockNumber)).to.be.bignumber.equal(this.account1Votes); + expect(await this.votes.getPastVotes(account2, blockNumber)).to.be.bignumber.equal(this.account2Votes); + }); + }); + + describe('Voting workflow', function () { + beforeEach(async function () { + this.account1 = account1; + this.account1Delegatee = account1Delegatee; + this.account2 = account2; + this.name = 'My Vote'; + }); + + shouldBehaveLikeVotes(); + }); +}); diff --git a/test/token/common/ERC2981.behavior.js b/test/token/common/ERC2981.behavior.js new file mode 100644 index 000000000..0d906a919 --- /dev/null +++ b/test/token/common/ERC2981.behavior.js @@ -0,0 +1,160 @@ +const { BN, constants, expectRevert } = require('@openzeppelin/test-helpers'); +const { expect } = require('chai'); +const { ZERO_ADDRESS } = constants; + +const { shouldSupportInterfaces } = require('../../utils/introspection/SupportsInterface.behavior'); + +function shouldBehaveLikeERC2981 () { + const royaltyFraction = new BN('10'); + + shouldSupportInterfaces(['ERC2981']); + + describe('default royalty', function () { + beforeEach(async function () { + await this.token.setDefaultRoyalty(this.account1, royaltyFraction); + }); + + it('checks royalty is set', async function () { + const royalty = new BN((this.salePrice * royaltyFraction) / 10000); + + const initInfo = await this.token.royaltyInfo(this.tokenId1, this.salePrice); + + expect(initInfo[0]).to.be.equal(this.account1); + expect(initInfo[1]).to.be.bignumber.equal(royalty); + }); + + it('updates royalty amount', async function () { + const newPercentage = new BN('25'); + + // Updated royalty check + await this.token.setDefaultRoyalty(this.account1, newPercentage); + const royalty = new BN((this.salePrice * newPercentage) / 10000); + const newInfo = await this.token.royaltyInfo(this.tokenId1, this.salePrice); + + expect(newInfo[0]).to.be.equal(this.account1); + expect(newInfo[1]).to.be.bignumber.equal(royalty); + }); + + it('holds same royalty value for different tokens', async function () { + const newPercentage = new BN('20'); + await this.token.setDefaultRoyalty(this.account1, newPercentage); + + const token1Info = await this.token.royaltyInfo(this.tokenId1, this.salePrice); + const token2Info = await this.token.royaltyInfo(this.tokenId2, this.salePrice); + + expect(token1Info[1]).to.be.bignumber.equal(token2Info[1]); + }); + + it('Remove royalty information', async function () { + const newValue = new BN('0'); + await this.token.deleteDefaultRoyalty(); + + const token1Info = await this.token.royaltyInfo(this.tokenId1, this.salePrice); + const token2Info = await this.token.royaltyInfo(this.tokenId2, this.salePrice); + // Test royalty info is still persistent across all tokens + expect(token1Info[0]).to.be.bignumber.equal(token2Info[0]); + expect(token1Info[1]).to.be.bignumber.equal(token2Info[1]); + // Test information was deleted + expect(token1Info[0]).to.be.equal(ZERO_ADDRESS); + expect(token1Info[1]).to.be.bignumber.equal(newValue); + }); + + it('reverts if invalid parameters', async function () { + await expectRevert( + this.token.setDefaultRoyalty(ZERO_ADDRESS, royaltyFraction), + 'ERC2981: invalid receiver', + ); + + await expectRevert( + this.token.setTokenRoyalty(this.tokenId1, this.account1, new BN('11000')), + 'ERC2981: royalty fee will exceed salePrice', + ); + }); + }); + + describe('token based royalty', function () { + beforeEach(async function () { + await this.token.setTokenRoyalty(this.tokenId1, this.account1, royaltyFraction); + }); + + it('updates royalty amount', async function () { + const newPercentage = new BN('25'); + let royalty = new BN((this.salePrice * royaltyFraction) / 10000); + // Initial royalty check + const initInfo = await this.token.royaltyInfo(this.tokenId1, this.salePrice); + + expect(initInfo[0]).to.be.equal(this.account1); + expect(initInfo[1]).to.be.bignumber.equal(royalty); + + // Updated royalty check + await this.token.setTokenRoyalty(this.tokenId1, this.account1, newPercentage); + royalty = new BN((this.salePrice * newPercentage) / 10000); + const newInfo = await this.token.royaltyInfo(this.tokenId1, this.salePrice); + + expect(newInfo[0]).to.be.equal(this.account1); + expect(newInfo[1]).to.be.bignumber.equal(royalty); + }); + + it('holds different values for different tokens', async function () { + const newPercentage = new BN('20'); + await this.token.setTokenRoyalty(this.tokenId2, this.account1, newPercentage); + + const token1Info = await this.token.royaltyInfo(this.tokenId1, this.salePrice); + const token2Info = await this.token.royaltyInfo(this.tokenId2, this.salePrice); + + // must be different even at the same this.salePrice + expect(token1Info[1]).to.not.be.equal(token2Info.royaltyFraction); + }); + + it('reverts if invalid parameters', async function () { + await expectRevert( + this.token.setTokenRoyalty(this.tokenId1, ZERO_ADDRESS, royaltyFraction), + 'ERC2981: Invalid parameters', + ); + + await expectRevert( + this.token.setTokenRoyalty(this.tokenId1, this.account1, new BN('11000')), + 'ERC2981: royalty fee will exceed salePrice', + ); + }); + + it('can reset token after setting royalty', async function () { + const newPercentage = new BN('30'); + const royalty = new BN((this.salePrice * newPercentage) / 10000); + await this.token.setTokenRoyalty(this.tokenId1, this.account2, newPercentage); + + const tokenInfo = await this.token.royaltyInfo(this.tokenId1, this.salePrice); + + // Tokens must have own information + expect(tokenInfo[1]).to.be.bignumber.equal(royalty); + expect(tokenInfo[0]).to.be.equal(this.account2); + + await this.token.setTokenRoyalty(this.tokenId2, this.account1, new BN('0')); + const result = await this.token.royaltyInfo(this.tokenId2, this.salePrice); + // Token must not share default information + expect(result[0]).to.be.equal(this.account1); + expect(result[1]).to.be.bignumber.equal(new BN('0')); + }); + + it('can hold default and token royalty information', async function () { + const newPercentage = new BN('30'); + const royalty = new BN((this.salePrice * newPercentage) / 10000); + + await this.token.setTokenRoyalty(this.tokenId2, this.account2, newPercentage); + + const token1Info = await this.token.royaltyInfo(this.tokenId1, this.salePrice); + const token2Info = await this.token.royaltyInfo(this.tokenId2, this.salePrice); + // Tokens must not have same values + expect(token1Info[1]).to.not.be.bignumber.equal(token2Info[1]); + expect(token1Info[0]).to.not.be.equal(token2Info[0]); + + // Updated token must have new values + expect(token2Info[0]).to.be.equal(this.account2); + expect(token2Info[1]).to.be.bignumber.equal(royalty); + }); + }); +} + +module.exports = { + shouldBehaveLikeERC2981, +}; diff --git a/test/utils/Base64.test.js b/test/utils/Base64.test.js new file mode 100644 index 000000000..5eb4f74b2 --- /dev/null +++ b/test/utils/Base64.test.js @@ -0,0 +1,29 @@ +const { expect } = require('chai'); + +const Base64Mock = artifacts.require('Base64Mock'); + +contract('Strings', function () { + beforeEach(async function () { + this.base64 = await Base64Mock.new(); + }); + + describe('from bytes - base64', function () { + it('converts to base64 encoded string with double padding', async function () { + const TEST_MESSAGE = 'test'; + const input = web3.utils.asciiToHex(TEST_MESSAGE); + expect(await this.base64.encode(input)).to.equal('dGVzdA=='); + }); + + it('converts to base64 encoded string with single padding', async function () { + const TEST_MESSAGE = 'test1'; + const input = web3.utils.asciiToHex(TEST_MESSAGE); + expect(await this.base64.encode(input)).to.equal('dGVzdDE='); + }); + + it('converts to base64 encoded string without padding', async function () { + const TEST_MESSAGE = 'test12'; + const input = web3.utils.asciiToHex(TEST_MESSAGE); + expect(await this.base64.encode(input)).to.equal('dGVzdDEy'); + }); + }); +}); diff --git a/test/utils/Checkpoints.test.js b/test/utils/Checkpoints.test.js new file mode 100644 index 000000000..37f9013ec --- /dev/null +++ b/test/utils/Checkpoints.test.js @@ -0,0 +1,59 @@ +const { expectRevert, time } = require('@openzeppelin/test-helpers'); + +const { expect } = require('chai'); + +const CheckpointsImpl = artifacts.require('CheckpointsImpl'); + +contract('Checkpoints', function (accounts) { + beforeEach(async function () { + this.checkpoint = await CheckpointsImpl.new(); + }); + + describe('without checkpoints', function () { + it('returns zero as latest value', async function () { + expect(await this.checkpoint.latest()).to.be.bignumber.equal('0'); + }); + + it('returns zero as past value', async function () { + await time.advanceBlock(); + expect(await this.checkpoint.getAtBlock(await web3.eth.getBlockNumber() - 1)).to.be.bignumber.equal('0'); + }); + }); + + describe('with checkpoints', function () { + beforeEach('pushing checkpoints', async function () { + this.tx1 = await this.checkpoint.push(1); + this.tx2 = await this.checkpoint.push(2); + await time.advanceBlock(); + this.tx3 = await this.checkpoint.push(3); + await time.advanceBlock(); + await time.advanceBlock(); + }); + + it('returns latest value', async function () { + expect(await this.checkpoint.latest()).to.be.bignumber.equal('3'); + }); + + it('returns past values', async function () { + expect(await this.checkpoint.getAtBlock(this.tx1.receipt.blockNumber - 1)).to.be.bignumber.equal('0'); + expect(await this.checkpoint.getAtBlock(this.tx1.receipt.blockNumber)).to.be.bignumber.equal('1'); + expect(await this.checkpoint.getAtBlock(this.tx2.receipt.blockNumber)).to.be.bignumber.equal('2'); + // Block with no new checkpoints + expect(await this.checkpoint.getAtBlock(this.tx2.receipt.blockNumber + 1)).to.be.bignumber.equal('2'); + expect(await this.checkpoint.getAtBlock(this.tx3.receipt.blockNumber)).to.be.bignumber.equal('3'); + expect(await this.checkpoint.getAtBlock(this.tx3.receipt.blockNumber + 1)).to.be.bignumber.equal('3'); + }); + + it('reverts if block number >= current block', async function () { + await expectRevert( + this.checkpoint.getAtBlock(await web3.eth.getBlockNumber()), + 'Checkpoints: block not yet mined', + ); + + await expectRevert( + this.checkpoint.getAtBlock(await web3.eth.getBlockNumber() + 1), + 'Checkpoints: block not yet mined', + ); + }); + }); +}); diff --git a/test/utils/introspection/SupportsInterface.behavior.js b/test/utils/introspection/SupportsInterface.behavior.js index 2027b4057..3f6f5228b 100644 --- a/test/utils/introspection/SupportsInterface.behavior.js +++ b/test/utils/introspection/SupportsInterface.behavior.js @@ -74,6 +74,9 @@ const INTERFACES = { 'proposalEta(uint256)', 'queue(address[],uint256[],bytes[],bytes32)', ], + ERC2981: [ + 'royaltyInfo(uint256,uint256)', + ], }; const INTERFACE_IDS = {}; diff --git a/test/utils/math/SignedMath.test.js b/test/utils/math/SignedMath.test.js new file mode 100644 index 000000000..8e9826f02 --- /dev/null +++ b/test/utils/math/SignedMath.test.js @@ -0,0 +1,93 @@ +const { BN, constants } = require('@openzeppelin/test-helpers'); +const { expect } = require('chai'); +const { MIN_INT256, MAX_INT256 } = constants; + +const SignedMathMock = artifacts.require('SignedMathMock'); + +contract('SignedMath', function (accounts) { + const min = new BN('-1234'); + const max = new BN('5678'); + + beforeEach(async function () { + this.math = await SignedMathMock.new(); + }); + + describe('max', function () { + it('is correctly detected in first argument position', async function () { + expect(await this.math.max(max, min)).to.be.bignumber.equal(max); + }); + + it('is correctly detected in second argument position', async function () { + expect(await this.math.max(min, max)).to.be.bignumber.equal(max); + }); + }); + + describe('min', function () { + it('is correctly detected in first argument position', async function () { + expect(await this.math.min(min, max)).to.be.bignumber.equal(min); + }); + + it('is correctly detected in second argument position', async function () { + expect(await this.math.min(max, min)).to.be.bignumber.equal(min); + }); + }); + + describe('average', function () { + function bnAverage (a, b) { + return a.add(b).divn(2); + } + + it('is correctly calculated with various input', async function () { + const valuesX = [ + new BN('0'), + new BN('3'), + new BN('-3'), + new BN('4'), + new BN('-4'), + new BN('57417'), + new BN('-57417'), + new BN('42304'), + new BN('-42304'), + MIN_INT256, + MAX_INT256, + ]; + + const valuesY = [ + new BN('0'), + new BN('5'), + new BN('-5'), + new BN('2'), + new BN('-2'), + new BN('57417'), + new BN('-57417'), + new BN('42304'), + new BN('-42304'), + MIN_INT256, + MAX_INT256, + ]; + + for (const x of valuesX) { + for (const y of valuesY) { + expect(await this.math.average(x, y)) + .to.be.bignumber.equal(bnAverage(x, y), `Bad result for average(${x}, ${y})`); + } + } + }); + }); + + describe('abs', function () { + for (const n of [ + MIN_INT256, + MIN_INT256.addn(1), + new BN('-1'), + new BN('0'), + new BN('1'), + MAX_INT256.subn(1), + MAX_INT256, + ]) { + it(`correctly computes the absolute value of ${n}`, async function () { + expect(await this.math.abs(n)).to.be.bignumber.equal(n.abs()); + }); + } + }); +});