web3gbit-cli 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/--broadcast +0 -0
- package/--private-key +0 -0
- package/--rpc-url +0 -0
- package/.github/workflows/test.yml +38 -0
- package/.gitmodules +3 -0
- package/GbitToken_flat.sol +2 -0
- package/GbitToken_flat.solnpx +0 -0
- package/README.md +72 -0
- package/admin-cli.js +413 -0
- package/cache/solidity-files-cache.json +1 -0
- package/foundry.lock +8 -0
- package/foundry.toml +6 -0
- package/lib/forge-std/.gitattributes +1 -0
- package/lib/forge-std/.github/CODEOWNERS +1 -0
- package/lib/forge-std/.github/dependabot.yml +6 -0
- package/lib/forge-std/.github/workflows/ci.yml +125 -0
- package/lib/forge-std/.github/workflows/sync.yml +36 -0
- package/lib/forge-std/CONTRIBUTING.md +193 -0
- package/lib/forge-std/LICENSE-APACHE +203 -0
- package/lib/forge-std/LICENSE-MIT +25 -0
- package/lib/forge-std/README.md +268 -0
- package/lib/forge-std/RELEASE_CHECKLIST.md +12 -0
- package/lib/forge-std/foundry.toml +18 -0
- package/lib/forge-std/package.json +16 -0
- package/lib/forge-std/scripts/vm.py +636 -0
- package/lib/forge-std/src/Base.sol +48 -0
- package/lib/forge-std/src/Config.sol +60 -0
- package/lib/forge-std/src/LibVariable.sol +477 -0
- package/lib/forge-std/src/Script.sol +28 -0
- package/lib/forge-std/src/StdAssertions.sol +779 -0
- package/lib/forge-std/src/StdChains.sol +295 -0
- package/lib/forge-std/src/StdCheats.sol +825 -0
- package/lib/forge-std/src/StdConfig.sol +632 -0
- package/lib/forge-std/src/StdConstants.sol +30 -0
- package/lib/forge-std/src/StdError.sol +15 -0
- package/lib/forge-std/src/StdInvariant.sol +120 -0
- package/lib/forge-std/src/StdJson.sol +275 -0
- package/lib/forge-std/src/StdMath.sol +47 -0
- package/lib/forge-std/src/StdStorage.sol +475 -0
- package/lib/forge-std/src/StdStyle.sol +333 -0
- package/lib/forge-std/src/StdToml.sol +275 -0
- package/lib/forge-std/src/StdUtils.sol +200 -0
- package/lib/forge-std/src/Test.sol +32 -0
- package/lib/forge-std/src/Vm.sol +2500 -0
- package/lib/forge-std/src/console.sol +1551 -0
- package/lib/forge-std/src/console2.sol +4 -0
- package/lib/forge-std/src/interfaces/IERC1155.sol +105 -0
- package/lib/forge-std/src/interfaces/IERC165.sol +12 -0
- package/lib/forge-std/src/interfaces/IERC20.sol +43 -0
- package/lib/forge-std/src/interfaces/IERC4626.sol +190 -0
- package/lib/forge-std/src/interfaces/IERC6909.sol +72 -0
- package/lib/forge-std/src/interfaces/IERC721.sol +164 -0
- package/lib/forge-std/src/interfaces/IERC7540.sol +144 -0
- package/lib/forge-std/src/interfaces/IERC7575.sol +241 -0
- package/lib/forge-std/src/interfaces/IMulticall3.sol +68 -0
- package/lib/forge-std/src/safeconsole.sol +13248 -0
- package/lib/forge-std/test/CommonBase.t.sol +44 -0
- package/lib/forge-std/test/Config.t.sol +381 -0
- package/lib/forge-std/test/LibVariable.t.sol +452 -0
- package/lib/forge-std/test/StdAssertions.t.sol +141 -0
- package/lib/forge-std/test/StdChains.t.sol +227 -0
- package/lib/forge-std/test/StdCheats.t.sol +638 -0
- package/lib/forge-std/test/StdConstants.t.sol +38 -0
- package/lib/forge-std/test/StdError.t.sol +119 -0
- package/lib/forge-std/test/StdJson.t.sol +49 -0
- package/lib/forge-std/test/StdMath.t.sol +202 -0
- package/lib/forge-std/test/StdStorage.t.sol +485 -0
- package/lib/forge-std/test/StdStyle.t.sol +110 -0
- package/lib/forge-std/test/StdToml.t.sol +49 -0
- package/lib/forge-std/test/StdUtils.t.sol +342 -0
- package/lib/forge-std/test/Vm.t.sol +18 -0
- package/lib/forge-std/test/compilation/CompilationScript.sol +8 -0
- package/lib/forge-std/test/compilation/CompilationScriptBase.sol +8 -0
- package/lib/forge-std/test/compilation/CompilationTest.sol +8 -0
- package/lib/forge-std/test/compilation/CompilationTestBase.sol +8 -0
- package/lib/forge-std/test/fixtures/broadcast.log.json +187 -0
- package/lib/forge-std/test/fixtures/config.toml +81 -0
- package/lib/forge-std/test/fixtures/test.json +8 -0
- package/lib/forge-std/test/fixtures/test.toml +6 -0
- package/lib/openzeppelin-contracts/.changeset/blue-mirrors-agree.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/bright-webs-create.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/clean-worlds-end.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/config.json +12 -0
- package/lib/openzeppelin-contracts/.changeset/curly-pandas-flow.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/flat-ideas-count.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/fluffy-facts-brake.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/forty-ads-design.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/full-emus-hear.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/fuzzy-lizards-do.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/grumpy-cats-brake.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/khaki-crews-join.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/new-socks-deny.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/shaky-phones-mix.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/social-tools-sniff.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/spotty-plums-brush.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/stale-lizards-cheat.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/swift-planets-juggle.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/tame-monkeys-make.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/tender-pans-yawn.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/thick-banks-relate.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/vast-worlds-pull.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/whole-turkeys-swim.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/yellow-clowns-mate.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/young-corners-help.md +5 -0
- package/lib/openzeppelin-contracts/.codecov.yml +16 -0
- package/lib/openzeppelin-contracts/.editorconfig +21 -0
- package/lib/openzeppelin-contracts/.gitattributes +3 -0
- package/lib/openzeppelin-contracts/.github/CODEOWNERS +10 -0
- package/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/bug_report.md +21 -0
- package/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/config.yml +4 -0
- package/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/feature_request.md +14 -0
- package/lib/openzeppelin-contracts/.github/PULL_REQUEST_TEMPLATE.md +20 -0
- package/lib/openzeppelin-contracts/.github/actions/gas-compare/action.yml +51 -0
- package/lib/openzeppelin-contracts/.github/actions/setup/action.yml +108 -0
- package/lib/openzeppelin-contracts/.github/actions/storage-layout/action.yml +57 -0
- package/lib/openzeppelin-contracts/.github/workflows/actionlint.yml +18 -0
- package/lib/openzeppelin-contracts/.github/workflows/changeset.yml +28 -0
- package/lib/openzeppelin-contracts/.github/workflows/checks.yml +132 -0
- package/lib/openzeppelin-contracts/.github/workflows/docs.yml +19 -0
- package/lib/openzeppelin-contracts/.github/workflows/formal-verification.yml +63 -0
- package/lib/openzeppelin-contracts/.github/workflows/release-cycle.yml +212 -0
- package/lib/openzeppelin-contracts/.github/workflows/release-upgradeable.yml +95 -0
- package/lib/openzeppelin-contracts/.github/workflows/upgradeable.yml +35 -0
- package/lib/openzeppelin-contracts/.gitmodules +10 -0
- package/lib/openzeppelin-contracts/.husky/pre-commit +2 -0
- package/lib/openzeppelin-contracts/.mocharc.js +4 -0
- package/lib/openzeppelin-contracts/.prettierrc +15 -0
- package/lib/openzeppelin-contracts/.solcover.js +21 -0
- package/lib/openzeppelin-contracts/CHANGELOG.md +1364 -0
- package/lib/openzeppelin-contracts/CODE_OF_CONDUCT.md +73 -0
- package/lib/openzeppelin-contracts/CONTRIBUTING.md +36 -0
- package/lib/openzeppelin-contracts/FUNDING.json +10 -0
- package/lib/openzeppelin-contracts/GUIDELINES.md +170 -0
- package/lib/openzeppelin-contracts/LICENSE +22 -0
- package/lib/openzeppelin-contracts/README.md +122 -0
- package/lib/openzeppelin-contracts/RELEASING.md +45 -0
- package/lib/openzeppelin-contracts/SECURITY.md +43 -0
- package/lib/openzeppelin-contracts/audits/2017-03.md +292 -0
- package/lib/openzeppelin-contracts/audits/2018-10.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2022-10-Checkpoints.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2022-10-ERC4626.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2023-05-v4.9.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2023-10-v5.0.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2024-10-v5.1.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2024-12-v5.2.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2025-04-v5.3.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2025-07-v5.4.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2025-10-v5.5.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/README.md +22 -0
- package/lib/openzeppelin-contracts/contracts/access/AccessControl.sol +207 -0
- package/lib/openzeppelin-contracts/contracts/access/IAccessControl.sol +98 -0
- package/lib/openzeppelin-contracts/contracts/access/Ownable.sol +100 -0
- package/lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol +67 -0
- package/lib/openzeppelin-contracts/contracts/access/README.adoc +45 -0
- package/lib/openzeppelin-contracts/contracts/access/extensions/AccessControlDefaultAdminRules.sol +372 -0
- package/lib/openzeppelin-contracts/contracts/access/extensions/AccessControlEnumerable.sol +81 -0
- package/lib/openzeppelin-contracts/contracts/access/extensions/IAccessControlDefaultAdminRules.sol +192 -0
- package/lib/openzeppelin-contracts/contracts/access/extensions/IAccessControlEnumerable.sol +31 -0
- package/lib/openzeppelin-contracts/contracts/access/manager/AccessManaged.sol +112 -0
- package/lib/openzeppelin-contracts/contracts/access/manager/AccessManager.sol +741 -0
- package/lib/openzeppelin-contracts/contracts/access/manager/AuthorityUtils.sol +36 -0
- package/lib/openzeppelin-contracts/contracts/access/manager/IAccessManaged.sol +32 -0
- package/lib/openzeppelin-contracts/contracts/access/manager/IAccessManager.sol +403 -0
- package/lib/openzeppelin-contracts/contracts/access/manager/IAuthority.sol +14 -0
- package/lib/openzeppelin-contracts/contracts/account/Account.sol +151 -0
- package/lib/openzeppelin-contracts/contracts/account/README.adoc +30 -0
- package/lib/openzeppelin-contracts/contracts/account/extensions/draft-AccountERC7579.sol +420 -0
- package/lib/openzeppelin-contracts/contracts/account/extensions/draft-AccountERC7579Hooked.sol +107 -0
- package/lib/openzeppelin-contracts/contracts/account/extensions/draft-ERC7821.sol +70 -0
- package/lib/openzeppelin-contracts/contracts/account/utils/EIP7702Utils.sol +21 -0
- package/lib/openzeppelin-contracts/contracts/account/utils/draft-ERC4337Utils.sol +279 -0
- package/lib/openzeppelin-contracts/contracts/account/utils/draft-ERC7579Utils.sol +280 -0
- package/lib/openzeppelin-contracts/contracts/crosschain/CrosschainLinked.sol +108 -0
- package/lib/openzeppelin-contracts/contracts/crosschain/ERC7786Recipient.sol +70 -0
- package/lib/openzeppelin-contracts/contracts/crosschain/README.adoc +29 -0
- package/lib/openzeppelin-contracts/contracts/crosschain/bridges/BridgeERC20.sol +36 -0
- package/lib/openzeppelin-contracts/contracts/crosschain/bridges/BridgeERC20Core.sol +79 -0
- package/lib/openzeppelin-contracts/contracts/crosschain/bridges/BridgeERC7802.sol +33 -0
- package/lib/openzeppelin-contracts/contracts/finance/README.adoc +14 -0
- package/lib/openzeppelin-contracts/contracts/finance/VestingWallet.sol +160 -0
- package/lib/openzeppelin-contracts/contracts/finance/VestingWalletCliff.sol +54 -0
- package/lib/openzeppelin-contracts/contracts/governance/Governor.sol +819 -0
- package/lib/openzeppelin-contracts/contracts/governance/IGovernor.sol +454 -0
- package/lib/openzeppelin-contracts/contracts/governance/README.adoc +197 -0
- package/lib/openzeppelin-contracts/contracts/governance/TimelockController.sol +470 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorCountingFractional.sol +190 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorCountingOverridable.sol +222 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorCountingSimple.sol +96 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorNoncesKeyed.sol +91 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorPreventLateQuorum.sol +92 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorProposalGuardian.sol +59 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorSequentialProposalId.sol +75 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorSettings.sol +106 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorStorage.sol +134 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorSuperQuorum.sol +59 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorTimelockAccess.sol +346 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorTimelockCompound.sol +165 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorTimelockControl.sol +167 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorVotes.sol +63 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorVotesQuorumFraction.sol +113 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorVotesSuperQuorumFraction.sol +135 -0
- package/lib/openzeppelin-contracts/contracts/governance/utils/IVotes.sol +60 -0
- package/lib/openzeppelin-contracts/contracts/governance/utils/Votes.sol +253 -0
- package/lib/openzeppelin-contracts/contracts/governance/utils/VotesExtended.sol +85 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1155.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1155MetadataURI.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1155Receiver.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol +86 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1363Receiver.sol +32 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1363Spender.sol +26 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1820Implementer.sol +20 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1820Registry.sol +112 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol +24 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC20Metadata.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC2309.sol +19 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC2612.sol +8 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC2981.sol +26 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC3156.sol +7 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol +27 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol +41 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol +230 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC4906.sol +20 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol +28 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC5313.sol +16 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC5805.sol +9 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC6372.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC6909.sol +125 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC721.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC721Enumerable.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC721Metadata.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC721Receiver.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC7751.sol +12 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC777.sol +200 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC777Recipient.sol +35 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC777Sender.sol +35 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC7913.sol +18 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/README.adoc +138 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol +20 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC4337.sol +255 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol +162 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC7579.sol +227 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC7674.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC7786.sol +64 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC7802.sol +32 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC7821.sol +44 -0
- package/lib/openzeppelin-contracts/contracts/metatx/ERC2771Context.sol +90 -0
- package/lib/openzeppelin-contracts/contracts/metatx/ERC2771Forwarder.sol +372 -0
- package/lib/openzeppelin-contracts/contracts/metatx/README.adoc +17 -0
- package/lib/openzeppelin-contracts/contracts/mocks/AccessManagedTarget.sol +34 -0
- package/lib/openzeppelin-contracts/contracts/mocks/AccessManagerMock.sol +20 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ArraysMock.sol +171 -0
- package/lib/openzeppelin-contracts/contracts/mocks/AuthorityMock.sol +69 -0
- package/lib/openzeppelin-contracts/contracts/mocks/Base64Dirty.sol +19 -0
- package/lib/openzeppelin-contracts/contracts/mocks/BatchCaller.sol +20 -0
- package/lib/openzeppelin-contracts/contracts/mocks/CallReceiverMock.sol +106 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ConstructorMock.sol +34 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ContextMock.sol +35 -0
- package/lib/openzeppelin-contracts/contracts/mocks/DummyImplementation.sol +61 -0
- package/lib/openzeppelin-contracts/contracts/mocks/EIP712Verifier.sol +16 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ERC1271WalletMock.sol +24 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ERC165Mock.sol +100 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ERC2771ContextMock.sol +28 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ERC3156FlashBorrowerMock.sol +53 -0
- package/lib/openzeppelin-contracts/contracts/mocks/EtherReceiverMock.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/mocks/InitializableMock.sol +130 -0
- package/lib/openzeppelin-contracts/contracts/mocks/MerkleProofCustomHashMock.sol +62 -0
- package/lib/openzeppelin-contracts/contracts/mocks/MerkleTreeMock.sol +52 -0
- package/lib/openzeppelin-contracts/contracts/mocks/MulticallHelper.sol +23 -0
- package/lib/openzeppelin-contracts/contracts/mocks/MultipleInheritanceInitializableMocks.sol +131 -0
- package/lib/openzeppelin-contracts/contracts/mocks/PausableMock.sol +31 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ReentrancyAttack.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ReentrancyMock.sol +59 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ReentrancyTransientMock.sol +59 -0
- package/lib/openzeppelin-contracts/contracts/mocks/RegressionImplementation.sol +61 -0
- package/lib/openzeppelin-contracts/contracts/mocks/SingleInheritanceInitializableMocks.sol +49 -0
- package/lib/openzeppelin-contracts/contracts/mocks/Stateless.sol +62 -0
- package/lib/openzeppelin-contracts/contracts/mocks/StorageSlotMock.sol +87 -0
- package/lib/openzeppelin-contracts/contracts/mocks/TimelockReentrant.sol +26 -0
- package/lib/openzeppelin-contracts/contracts/mocks/TransientSlotMock.sol +61 -0
- package/lib/openzeppelin-contracts/contracts/mocks/UpgradeableBeaconMock.sol +27 -0
- package/lib/openzeppelin-contracts/contracts/mocks/VotesExtendedMock.sol +42 -0
- package/lib/openzeppelin-contracts/contracts/mocks/VotesMock.sol +42 -0
- package/lib/openzeppelin-contracts/contracts/mocks/account/AccountMock.sol +181 -0
- package/lib/openzeppelin-contracts/contracts/mocks/account/modules/ERC7579Mock.sol +128 -0
- package/lib/openzeppelin-contracts/contracts/mocks/account/utils/ERC7579UtilsMock.sol +23 -0
- package/lib/openzeppelin-contracts/contracts/mocks/compound/CompTimelock.sol +174 -0
- package/lib/openzeppelin-contracts/contracts/mocks/crosschain/ERC7786GatewayMock.sol +56 -0
- package/lib/openzeppelin-contracts/contracts/mocks/crosschain/ERC7786RecipientMock.sol +31 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/AccessManagerEnumerable.sol +161 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/ERC20WithAutoMinerReward.sol +22 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/ERC4626Fees.sol +109 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/MyNFT.sol +9 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/access-control/AccessControlERC20MintBase.sol +25 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/access-control/AccessControlERC20MintMissing.sol +24 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/access-control/AccessControlERC20MintOnlyRole.sol +23 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/access-control/AccessControlModified.sol +14 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/access-control/AccessManagedERC20MintBase.sol +16 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/access-control/MyContractOwnable.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/account/MyAccountEIP7702.sol +20 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/account/MyFactoryAccount.sol +37 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyGovernor.sol +80 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyToken.sol +21 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyTokenTimestampBased.sol +32 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyTokenWrapped.sol +28 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/token/ERC1155/GameItems.sol +21 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/token/ERC1155/MyERC115HolderContract.sol +7 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/token/ERC20/GLDToken.sol +11 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/token/ERC6909/ERC6909GameItems.sol +26 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/token/ERC721/GameItem.sol +19 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/utilities/Base64NFT.sol +27 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/utilities/Multicall.sol +15 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorCountingOverridableMock.sol +18 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorFractionalMock.sol +14 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorMock.sol +14 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorNoncesKeyedMock.sol +44 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorPreventLateQuorumMock.sol +40 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorProposalGuardianMock.sol +27 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorSequentialProposalIdMock.sol +39 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorStorageMock.sol +79 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorSuperQuorumMock.sol +95 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorTimelockAccessMock.sol +70 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorTimelockCompoundMock.sol +69 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorTimelockControlMock.sol +69 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorVoteMock.sol +20 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorVotesSuperQuorumFractionMock.sol +37 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorWithParamsMock.sol +51 -0
- package/lib/openzeppelin-contracts/contracts/mocks/proxy/BadBeacon.sol +11 -0
- package/lib/openzeppelin-contracts/contracts/mocks/proxy/ClashingImplementation.sol +19 -0
- package/lib/openzeppelin-contracts/contracts/mocks/proxy/ERC1967ProxyUnsafe.sol +13 -0
- package/lib/openzeppelin-contracts/contracts/mocks/proxy/UUPSUpgradeableMock.sol +35 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC1155ReceiverMock.sol +74 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC1363ForceApproveMock.sol +13 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC1363NoReturnMock.sol +33 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC1363ReceiverMock.sol +52 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC1363ReturnFalseMock.sol +34 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC1363SpenderMock.sol +47 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ApprovalMock.sol +10 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20BridgeableMock.sol +30 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20DecimalsMock.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ExcessDecimalsMock.sol +9 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20FlashMintMock.sol +26 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ForceApproveMock.sol +13 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20GetterHelper.sol +38 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20Mock.sol +16 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20MulticallMock.sol +8 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20NoReturnMock.sol +30 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20Reentrant.sol +39 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ReturnFalseMock.sol +19 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20VotesAdditionalCheckpointsMock.sol +31 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20VotesLegacyMock.sol +253 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20VotesTimestampMock.sol +29 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC4626LimitsMock.sol +23 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC4626Mock.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC4626OffsetMock.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC4646FeesMock.sol +40 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC721ConsecutiveEnumerableMock.sol +42 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC721ConsecutiveMock.sol +61 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC721ReceiverMock.sol +47 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC721URIStorageMock.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/mocks/utils/cryptography/ERC7739Mock.sol +12 -0
- package/lib/openzeppelin-contracts/contracts/package.json +32 -0
- package/lib/openzeppelin-contracts/contracts/proxy/Clones.sol +294 -0
- package/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol +62 -0
- package/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol +177 -0
- package/lib/openzeppelin-contracts/contracts/proxy/Proxy.sol +69 -0
- package/lib/openzeppelin-contracts/contracts/proxy/README.adoc +87 -0
- package/lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol +57 -0
- package/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol +16 -0
- package/lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol +70 -0
- package/lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol +45 -0
- package/lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol +118 -0
- package/lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol +238 -0
- package/lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol +148 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/ERC1155.sol +416 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol +123 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol +59 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/README.adoc +43 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155Burnable.sol +28 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155Pausable.sol +38 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155Supply.sol +88 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155URIStorage.sol +58 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol +20 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Holder.sol +42 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Utils.sol +88 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol +305 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol +79 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/README.adoc +81 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC1363.sol +135 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol +39 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Capped.sol +54 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Crosschain.sol +38 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20FlashMint.sol +130 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Pausable.sol +33 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Permit.sol +77 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Votes.sol +83 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Wrapper.sol +89 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC4626.sol +315 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol +26 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol +90 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-ERC20Bridgeable.sol +51 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-ERC20TemporaryApproval.sol +119 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/utils/ERC1363Utils.sol +95 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol +280 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC6909/ERC6909.sol +224 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC6909/README.adoc +27 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC6909/extensions/ERC6909ContentURI.sol +59 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC6909/extensions/ERC6909Metadata.sol +83 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC6909/extensions/ERC6909TokenSupply.sol +41 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol +433 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol +135 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol +28 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/README.adoc +69 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Burnable.sol +26 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Consecutive.sol +176 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Enumerable.sol +165 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Pausable.sol +37 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Royalty.sol +26 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721URIStorage.sol +62 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Votes.sol +47 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Wrapper.sol +102 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol +29 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol +27 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol +26 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Utils.sol +50 -0
- package/lib/openzeppelin-contracts/contracts/token/common/ERC2981.sol +139 -0
- package/lib/openzeppelin-contracts/contracts/token/common/README.adoc +10 -0
- package/lib/openzeppelin-contracts/contracts/utils/Address.sol +167 -0
- package/lib/openzeppelin-contracts/contracts/utils/Arrays.sol +888 -0
- package/lib/openzeppelin-contracts/contracts/utils/Base58.sol +240 -0
- package/lib/openzeppelin-contracts/contracts/utils/Base64.sol +234 -0
- package/lib/openzeppelin-contracts/contracts/utils/Blockhash.sol +54 -0
- package/lib/openzeppelin-contracts/contracts/utils/Bytes.sol +332 -0
- package/lib/openzeppelin-contracts/contracts/utils/CAIP10.sol +54 -0
- package/lib/openzeppelin-contracts/contracts/utils/CAIP2.sol +51 -0
- package/lib/openzeppelin-contracts/contracts/utils/Calldata.sol +25 -0
- package/lib/openzeppelin-contracts/contracts/utils/Comparators.sol +19 -0
- package/lib/openzeppelin-contracts/contracts/utils/Context.sol +28 -0
- package/lib/openzeppelin-contracts/contracts/utils/Create2.sol +91 -0
- package/lib/openzeppelin-contracts/contracts/utils/Errors.sol +34 -0
- package/lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol +127 -0
- package/lib/openzeppelin-contracts/contracts/utils/Memory.sol +146 -0
- package/lib/openzeppelin-contracts/contracts/utils/Multicall.sol +37 -0
- package/lib/openzeppelin-contracts/contracts/utils/Nonces.sol +46 -0
- package/lib/openzeppelin-contracts/contracts/utils/NoncesKeyed.sol +74 -0
- package/lib/openzeppelin-contracts/contracts/utils/Packing.sol +1656 -0
- package/lib/openzeppelin-contracts/contracts/utils/Panic.sol +57 -0
- package/lib/openzeppelin-contracts/contracts/utils/Pausable.sol +112 -0
- package/lib/openzeppelin-contracts/contracts/utils/README.adoc +160 -0
- package/lib/openzeppelin-contracts/contracts/utils/RLP.sol +476 -0
- package/lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol +119 -0
- package/lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol +84 -0
- package/lib/openzeppelin-contracts/contracts/utils/RelayedCall.sol +133 -0
- package/lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol +122 -0
- package/lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol +155 -0
- package/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol +143 -0
- package/lib/openzeppelin-contracts/contracts/utils/Strings.sol +508 -0
- package/lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol +183 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol +284 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol +160 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/Hashes.sol +31 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/MerkleProof.sol +510 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol +228 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/P256.sol +408 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/README.adoc +76 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/RSA.sol +154 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol +191 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/TrieProof.sol +230 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/WebAuthn.sol +261 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/draft-ERC7739Utils.sol +207 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/AbstractSigner.sol +23 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/MultiSignerERC7913.sol +259 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/MultiSignerERC7913Weighted.sol +208 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/SignerECDSA.sol +56 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/SignerEIP7702.sol +25 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/SignerERC7913.sol +63 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/SignerP256.sol +64 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/SignerRSA.sol +65 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/SignerWebAuthn.sol +51 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/draft-ERC7739.sol +98 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/verifiers/ERC7913P256Verifier.sol +29 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/verifiers/ERC7913RSAVerifier.sol +23 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/verifiers/ERC7913WebAuthnVerifier.sol +35 -0
- package/lib/openzeppelin-contracts/contracts/utils/draft-InteroperableAddress.sol +235 -0
- package/lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol +25 -0
- package/lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol +142 -0
- package/lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol +25 -0
- package/lib/openzeppelin-contracts/contracts/utils/math/Math.sol +763 -0
- package/lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol +1162 -0
- package/lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol +68 -0
- package/lib/openzeppelin-contracts/contracts/utils/structs/Accumulators.sol +130 -0
- package/lib/openzeppelin-contracts/contracts/utils/structs/BitMaps.sol +60 -0
- package/lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol +833 -0
- package/lib/openzeppelin-contracts/contracts/utils/structs/CircularBuffer.sol +152 -0
- package/lib/openzeppelin-contracts/contracts/utils/structs/DoubleEndedQueue.sol +237 -0
- package/lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol +1443 -0
- package/lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol +895 -0
- package/lib/openzeppelin-contracts/contracts/utils/structs/Heap.sol +259 -0
- package/lib/openzeppelin-contracts/contracts/utils/structs/MerkleTree.sol +267 -0
- package/lib/openzeppelin-contracts/contracts/utils/types/Time.sol +133 -0
- package/lib/openzeppelin-contracts/contracts/vendor/compound/ICompoundTimelock.sol +86 -0
- package/lib/openzeppelin-contracts/contracts/vendor/compound/LICENSE +11 -0
- package/lib/openzeppelin-contracts/docs/README.md +16 -0
- package/lib/openzeppelin-contracts/docs/antora.yml +7 -0
- package/lib/openzeppelin-contracts/docs/config.js +21 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/access-control-multiple.svg +97 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/access-manager-functions.svg +47 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/access-manager.svg +99 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3a.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3b.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-6.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-deposit.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-mint.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-linear.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglog.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglogext.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-exec.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-vote.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/nav.adoc +29 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/access-control.adoc +339 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/account-abstraction.adoc +100 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/accounts.adoc +354 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/backwards-compatibility.adoc +50 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/eoa-delegation.adoc +143 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc1155.adoc +118 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc20-supply.adoc +71 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc20.adoc +67 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc4626.adoc +214 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc6909.adoc +47 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc721.adoc +58 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/extending-contracts.adoc +51 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/faq.adoc +13 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/governance.adoc +242 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/index.adoc +100 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/multisig.adoc +308 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/tokens.adoc +31 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/upgradeable.adoc +77 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/utilities.adoc +634 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/wizard.adoc +15 -0
- package/lib/openzeppelin-contracts/docs/templates/contract.hbs +141 -0
- package/lib/openzeppelin-contracts/docs/templates/helpers.js +46 -0
- package/lib/openzeppelin-contracts/docs/templates/page.hbs +4 -0
- package/lib/openzeppelin-contracts/docs/templates/properties.js +88 -0
- package/lib/openzeppelin-contracts/eslint.config.mjs +29 -0
- package/lib/openzeppelin-contracts/foundry.toml +20 -0
- package/lib/openzeppelin-contracts/fv/Makefile +54 -0
- package/lib/openzeppelin-contracts/fv/README.md +60 -0
- package/lib/openzeppelin-contracts/fv/diff/access_manager_AccessManager.sol.patch +97 -0
- package/lib/openzeppelin-contracts/fv/diff/account_extensions_draft-AccountERC7579.sol.patch +25 -0
- package/lib/openzeppelin-contracts/fv/diff/token_ERC721_ERC721.sol.patch +11 -0
- package/lib/openzeppelin-contracts/fv/harnesses/AccessControlDefaultAdminRulesHarness.sol +46 -0
- package/lib/openzeppelin-contracts/fv/harnesses/AccessControlHarness.sol +6 -0
- package/lib/openzeppelin-contracts/fv/harnesses/AccessManagedHarness.sol +36 -0
- package/lib/openzeppelin-contracts/fv/harnesses/AccessManagerHarness.sol +116 -0
- package/lib/openzeppelin-contracts/fv/harnesses/AccountHarness.sol +60 -0
- package/lib/openzeppelin-contracts/fv/harnesses/DoubleEndedQueueHarness.sol +58 -0
- package/lib/openzeppelin-contracts/fv/harnesses/ERC20FlashMintHarness.sol +36 -0
- package/lib/openzeppelin-contracts/fv/harnesses/ERC20PermitHarness.sol +16 -0
- package/lib/openzeppelin-contracts/fv/harnesses/ERC20WrapperHarness.sol +22 -0
- package/lib/openzeppelin-contracts/fv/harnesses/ERC3156FlashBorrowerHarness.sol +13 -0
- package/lib/openzeppelin-contracts/fv/harnesses/ERC721Harness.sol +37 -0
- package/lib/openzeppelin-contracts/fv/harnesses/ERC721ReceiverHarness.sol +11 -0
- package/lib/openzeppelin-contracts/fv/harnesses/EnumerableMapHarness.sol +55 -0
- package/lib/openzeppelin-contracts/fv/harnesses/EnumerableSetHarness.sol +35 -0
- package/lib/openzeppelin-contracts/fv/harnesses/InitializableHarness.sol +23 -0
- package/lib/openzeppelin-contracts/fv/harnesses/NoncesHarness.sol +14 -0
- package/lib/openzeppelin-contracts/fv/harnesses/Ownable2StepHarness.sol +10 -0
- package/lib/openzeppelin-contracts/fv/harnesses/OwnableHarness.sol +10 -0
- package/lib/openzeppelin-contracts/fv/harnesses/PausableHarness.sol +18 -0
- package/lib/openzeppelin-contracts/fv/harnesses/TimelockControllerHarness.sol +13 -0
- package/lib/openzeppelin-contracts/fv/reports/2021-10.pdf +0 -0
- package/lib/openzeppelin-contracts/fv/reports/2022-03.pdf +0 -0
- package/lib/openzeppelin-contracts/fv/reports/2022-05.pdf +0 -0
- package/lib/openzeppelin-contracts/fv/run.js +68 -0
- package/lib/openzeppelin-contracts/fv/specs/AccessControl.conf +8 -0
- package/lib/openzeppelin-contracts/fv/specs/AccessControl.spec +119 -0
- package/lib/openzeppelin-contracts/fv/specs/AccessControlDefaultAdminRules.conf +8 -0
- package/lib/openzeppelin-contracts/fv/specs/AccessControlDefaultAdminRules.spec +467 -0
- package/lib/openzeppelin-contracts/fv/specs/AccessManaged.conf +14 -0
- package/lib/openzeppelin-contracts/fv/specs/AccessManaged.spec +49 -0
- package/lib/openzeppelin-contracts/fv/specs/AccessManager.conf +10 -0
- package/lib/openzeppelin-contracts/fv/specs/AccessManager.spec +837 -0
- package/lib/openzeppelin-contracts/fv/specs/Account.conf +9 -0
- package/lib/openzeppelin-contracts/fv/specs/Account.spec +490 -0
- package/lib/openzeppelin-contracts/fv/specs/DoubleEndedQueue.conf +8 -0
- package/lib/openzeppelin-contracts/fv/specs/DoubleEndedQueue.spec +300 -0
- package/lib/openzeppelin-contracts/fv/specs/ERC20.conf +9 -0
- package/lib/openzeppelin-contracts/fv/specs/ERC20.spec +352 -0
- package/lib/openzeppelin-contracts/fv/specs/ERC20FlashMint.conf +10 -0
- package/lib/openzeppelin-contracts/fv/specs/ERC20FlashMint.spec +55 -0
- package/lib/openzeppelin-contracts/fv/specs/ERC20Wrapper.conf +13 -0
- package/lib/openzeppelin-contracts/fv/specs/ERC20Wrapper.spec +226 -0
- package/lib/openzeppelin-contracts/fv/specs/ERC721.conf +10 -0
- package/lib/openzeppelin-contracts/fv/specs/ERC721.spec +695 -0
- package/lib/openzeppelin-contracts/fv/specs/EnumerableMap.conf +8 -0
- package/lib/openzeppelin-contracts/fv/specs/EnumerableMap.spec +364 -0
- package/lib/openzeppelin-contracts/fv/specs/EnumerableSet.conf +8 -0
- package/lib/openzeppelin-contracts/fv/specs/EnumerableSet.spec +272 -0
- package/lib/openzeppelin-contracts/fv/specs/Initializable.conf +8 -0
- package/lib/openzeppelin-contracts/fv/specs/Initializable.spec +176 -0
- package/lib/openzeppelin-contracts/fv/specs/Nonces.conf +8 -0
- package/lib/openzeppelin-contracts/fv/specs/Nonces.spec +92 -0
- package/lib/openzeppelin-contracts/fv/specs/Ownable.conf +8 -0
- package/lib/openzeppelin-contracts/fv/specs/Ownable.spec +77 -0
- package/lib/openzeppelin-contracts/fv/specs/Ownable2Step.conf +8 -0
- package/lib/openzeppelin-contracts/fv/specs/Ownable2Step.spec +108 -0
- package/lib/openzeppelin-contracts/fv/specs/Pausable.conf +8 -0
- package/lib/openzeppelin-contracts/fv/specs/Pausable.spec +96 -0
- package/lib/openzeppelin-contracts/fv/specs/TimelockController.conf +10 -0
- package/lib/openzeppelin-contracts/fv/specs/TimelockController.spec +299 -0
- package/lib/openzeppelin-contracts/fv/specs/helpers/helpers.spec +13 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IAccessControl.spec +8 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IAccessControlDefaultAdminRules.spec +36 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IAccessManaged.spec +5 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IAccessManager.spec +33 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IAccount.spec +34 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IERC20.spec +11 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IERC2612.spec +5 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IERC3156FlashBorrower.spec +3 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IERC3156FlashLender.spec +5 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IERC5313.spec +3 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IERC721.spec +17 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IERC721Receiver.spec +3 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IOwnable.spec +5 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IOwnable2Step.spec +7 -0
- package/lib/openzeppelin-contracts/fv-requirements.txt +4 -0
- package/lib/openzeppelin-contracts/hardhat/async-test-sanity.js +10 -0
- package/lib/openzeppelin-contracts/hardhat/env-artifacts.js +29 -0
- package/lib/openzeppelin-contracts/hardhat/ignore-unreachable-warnings.js +45 -0
- package/lib/openzeppelin-contracts/hardhat/remappings.js +18 -0
- package/lib/openzeppelin-contracts/hardhat/skip-foundry-tests.js +6 -0
- package/lib/openzeppelin-contracts/hardhat/task-test-get-files.js +25 -0
- package/lib/openzeppelin-contracts/hardhat.config.js +124 -0
- package/lib/openzeppelin-contracts/logo.svg +15 -0
- package/lib/openzeppelin-contracts/netlify.toml +3 -0
- package/lib/openzeppelin-contracts/package-lock.json +11140 -0
- package/lib/openzeppelin-contracts/package.json +108 -0
- package/lib/openzeppelin-contracts/remappings.txt +1 -0
- package/lib/openzeppelin-contracts/renovate.json +4 -0
- package/lib/openzeppelin-contracts/scripts/checks/compare-layout.js +28 -0
- package/lib/openzeppelin-contracts/scripts/checks/compareGasReports.js +249 -0
- package/lib/openzeppelin-contracts/scripts/checks/coverage.sh +24 -0
- package/lib/openzeppelin-contracts/scripts/checks/extract-layout.js +39 -0
- package/lib/openzeppelin-contracts/scripts/checks/generation.sh +6 -0
- package/lib/openzeppelin-contracts/scripts/checks/inheritance-ordering.js +55 -0
- package/lib/openzeppelin-contracts/scripts/checks/pragma-validity.js +45 -0
- package/lib/openzeppelin-contracts/scripts/fetch-common-contracts.js +50 -0
- package/lib/openzeppelin-contracts/scripts/gen-nav.js +81 -0
- package/lib/openzeppelin-contracts/scripts/generate/format-lines.js +16 -0
- package/lib/openzeppelin-contracts/scripts/generate/helpers/sanitize.js +5 -0
- package/lib/openzeppelin-contracts/scripts/generate/run.js +61 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Arrays.js +505 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Arrays.opts.js +9 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.js +242 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.opts.js +18 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.t.js +141 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Enumerable.opts.js +56 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/EnumerableMap.js +464 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/EnumerableSet.js +470 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/MerkleProof.js +186 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/MerkleProof.opts.js +11 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Packing.js +92 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Packing.opts.js +3 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Packing.t.js +48 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/SafeCast.js +136 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Slot.opts.js +15 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/SlotDerivation.js +119 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/SlotDerivation.t.js +127 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/StorageSlot.js +77 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/StorageSlotMock.js +57 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/TransientSlot.js +80 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/TransientSlotMock.js +35 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/conversion.js +34 -0
- package/lib/openzeppelin-contracts/scripts/get-contracts-metadata.js +55 -0
- package/lib/openzeppelin-contracts/scripts/git-user-config.sh +6 -0
- package/lib/openzeppelin-contracts/scripts/helpers.js +7 -0
- package/lib/openzeppelin-contracts/scripts/minimize-pragma.js +140 -0
- package/lib/openzeppelin-contracts/scripts/prepack.sh +23 -0
- package/lib/openzeppelin-contracts/scripts/prepare-docs.sh +26 -0
- package/lib/openzeppelin-contracts/scripts/release/format-changelog.js +33 -0
- package/lib/openzeppelin-contracts/scripts/release/synchronize-versions.js +15 -0
- package/lib/openzeppelin-contracts/scripts/release/update-comment.js +34 -0
- package/lib/openzeppelin-contracts/scripts/release/version.sh +11 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/check-upgradeable.sh +27 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/exit-prerelease.sh +8 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/github-release.js +48 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/integrity-check.sh +20 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/pack.sh +26 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/publish.sh +26 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/rerun.js +7 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/set-changesets-pr-title.js +17 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/start.sh +35 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/state.js +112 -0
- package/lib/openzeppelin-contracts/scripts/remove-ignored-artifacts.js +45 -0
- package/lib/openzeppelin-contracts/scripts/set-max-old-space-size.sh +10 -0
- package/lib/openzeppelin-contracts/scripts/solc-versions.js +15 -0
- package/lib/openzeppelin-contracts/scripts/solhint-custom/index.js +118 -0
- package/lib/openzeppelin-contracts/scripts/solhint-custom/package.json +8 -0
- package/lib/openzeppelin-contracts/scripts/update-docs-branch.js +65 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/README.md +21 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/alias/Initializable.sol +5 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/alias/UUPSUpgradeable.sol +5 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/patch-apply.sh +19 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/patch-save.sh +18 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/transpile-onto.sh +54 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/transpile.sh +50 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/upgradeable.patch +390 -0
- package/lib/openzeppelin-contracts/slither.config.json +4 -0
- package/lib/openzeppelin-contracts/solhint.config.js +29 -0
- package/lib/openzeppelin-contracts/test/TESTING.md +3 -0
- package/lib/openzeppelin-contracts/test/access/AccessControl.behavior.js +874 -0
- package/lib/openzeppelin-contracts/test/access/AccessControl.test.js +19 -0
- package/lib/openzeppelin-contracts/test/access/Ownable.test.js +79 -0
- package/lib/openzeppelin-contracts/test/access/Ownable2Step.test.js +102 -0
- package/lib/openzeppelin-contracts/test/access/extensions/AccessControlDefaultAdminRules.test.js +32 -0
- package/lib/openzeppelin-contracts/test/access/extensions/AccessControlEnumerable.test.js +24 -0
- package/lib/openzeppelin-contracts/test/access/manager/AccessManaged.test.js +146 -0
- package/lib/openzeppelin-contracts/test/access/manager/AccessManager.behavior.js +257 -0
- package/lib/openzeppelin-contracts/test/access/manager/AccessManager.predicate.js +456 -0
- package/lib/openzeppelin-contracts/test/access/manager/AccessManager.test.js +2489 -0
- package/lib/openzeppelin-contracts/test/access/manager/AuthorityUtils.test.js +112 -0
- package/lib/openzeppelin-contracts/test/account/Account.behavior.js +144 -0
- package/lib/openzeppelin-contracts/test/account/Account.test.js +48 -0
- package/lib/openzeppelin-contracts/test/account/AccountECDSA.test.js +52 -0
- package/lib/openzeppelin-contracts/test/account/AccountEIP7702.t.sol +116 -0
- package/lib/openzeppelin-contracts/test/account/AccountEIP7702.test.js +52 -0
- package/lib/openzeppelin-contracts/test/account/AccountERC7913.test.js +138 -0
- package/lib/openzeppelin-contracts/test/account/AccountMultiSigner.test.js +326 -0
- package/lib/openzeppelin-contracts/test/account/AccountMultiSignerWeighted.test.js +312 -0
- package/lib/openzeppelin-contracts/test/account/AccountP256.test.js +58 -0
- package/lib/openzeppelin-contracts/test/account/AccountRSA.test.js +58 -0
- package/lib/openzeppelin-contracts/test/account/AccountWebAuthn.test.js +88 -0
- package/lib/openzeppelin-contracts/test/account/examples/AccountEIP7702WithModulesMock.test.js +99 -0
- package/lib/openzeppelin-contracts/test/account/extensions/AccountERC7579.behavior.js +621 -0
- package/lib/openzeppelin-contracts/test/account/extensions/AccountERC7579.test.js +60 -0
- package/lib/openzeppelin-contracts/test/account/extensions/AccountERC7579Hooked.test.js +60 -0
- package/lib/openzeppelin-contracts/test/account/extensions/ERC7821.behavior.js +145 -0
- package/lib/openzeppelin-contracts/test/account/utils/EIP7702Utils.test.js +53 -0
- package/lib/openzeppelin-contracts/test/account/utils/draft-ERC4337Utils.test.js +594 -0
- package/lib/openzeppelin-contracts/test/account/utils/draft-ERC7579Utils.t.sol +434 -0
- package/lib/openzeppelin-contracts/test/account/utils/draft-ERC7579Utils.test.js +399 -0
- package/lib/openzeppelin-contracts/test/crosschain/BridgeERC20.behavior.js +163 -0
- package/lib/openzeppelin-contracts/test/crosschain/BridgeERC20.test.js +46 -0
- package/lib/openzeppelin-contracts/test/crosschain/ERC7786Recipient.test.js +73 -0
- package/lib/openzeppelin-contracts/test/finance/VestingWallet.behavior.js +87 -0
- package/lib/openzeppelin-contracts/test/finance/VestingWallet.test.js +65 -0
- package/lib/openzeppelin-contracts/test/finance/VestingWalletCliff.test.js +70 -0
- package/lib/openzeppelin-contracts/test/governance/Governor.t.sol +59 -0
- package/lib/openzeppelin-contracts/test/governance/Governor.test.js +980 -0
- package/lib/openzeppelin-contracts/test/governance/TimelockController.test.js +1279 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorCountingFractional.test.js +248 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorCountingOverridable.test.js +346 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorERC721.test.js +131 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorNoncesKeyed.test.js +243 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorPreventLateQuorum.test.js +185 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorProposalGuardian.test.js +132 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorSequentialProposalId.test.js +202 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorStorage.test.js +175 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorSuperQuorum.test.js +168 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorSuperQuorumGreaterThanQuorum.t.sol +83 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorTimelockAccess.test.js +864 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorTimelockCompound.test.js +448 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorTimelockControl.test.js +504 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorVotesQuorumFraction.test.js +165 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorVotesSuperQuorumFraction.test.js +160 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorWithParams.test.js +245 -0
- package/lib/openzeppelin-contracts/test/governance/utils/ERC6372.behavior.js +28 -0
- package/lib/openzeppelin-contracts/test/governance/utils/Votes.behavior.js +325 -0
- package/lib/openzeppelin-contracts/test/governance/utils/Votes.test.js +102 -0
- package/lib/openzeppelin-contracts/test/governance/utils/VotesExtended.test.js +152 -0
- package/lib/openzeppelin-contracts/test/helpers/access-manager.js +85 -0
- package/lib/openzeppelin-contracts/test/helpers/account.js +16 -0
- package/lib/openzeppelin-contracts/test/helpers/chains.js +56 -0
- package/lib/openzeppelin-contracts/test/helpers/constants.js +7 -0
- package/lib/openzeppelin-contracts/test/helpers/deploy.js +14 -0
- package/lib/openzeppelin-contracts/test/helpers/eip712-types.js +61 -0
- package/lib/openzeppelin-contracts/test/helpers/eip712.js +45 -0
- package/lib/openzeppelin-contracts/test/helpers/enums.js +15 -0
- package/lib/openzeppelin-contracts/test/helpers/erc4337.js +244 -0
- package/lib/openzeppelin-contracts/test/helpers/erc7579.js +58 -0
- package/lib/openzeppelin-contracts/test/helpers/erc7739.js +118 -0
- package/lib/openzeppelin-contracts/test/helpers/governance.js +218 -0
- package/lib/openzeppelin-contracts/test/helpers/iterate.js +41 -0
- package/lib/openzeppelin-contracts/test/helpers/math.js +33 -0
- package/lib/openzeppelin-contracts/test/helpers/methods.js +14 -0
- package/lib/openzeppelin-contracts/test/helpers/precompiles.js +12 -0
- package/lib/openzeppelin-contracts/test/helpers/random.js +26 -0
- package/lib/openzeppelin-contracts/test/helpers/signers.js +222 -0
- package/lib/openzeppelin-contracts/test/helpers/storage.js +48 -0
- package/lib/openzeppelin-contracts/test/helpers/strings.js +5 -0
- package/lib/openzeppelin-contracts/test/helpers/time.js +33 -0
- package/lib/openzeppelin-contracts/test/helpers/trie.js +79 -0
- package/lib/openzeppelin-contracts/test/helpers/txpool.js +28 -0
- package/lib/openzeppelin-contracts/test/metatx/ERC2771Context.test.js +109 -0
- package/lib/openzeppelin-contracts/test/metatx/ERC2771Forwarder.t.sol +279 -0
- package/lib/openzeppelin-contracts/test/metatx/ERC2771Forwarder.test.js +384 -0
- package/lib/openzeppelin-contracts/test/proxy/Clones.behaviour.js +160 -0
- package/lib/openzeppelin-contracts/test/proxy/Clones.t.sol +91 -0
- package/lib/openzeppelin-contracts/test/proxy/Clones.test.js +177 -0
- package/lib/openzeppelin-contracts/test/proxy/ERC1967/ERC1967Proxy.test.js +36 -0
- package/lib/openzeppelin-contracts/test/proxy/ERC1967/ERC1967Utils.test.js +162 -0
- package/lib/openzeppelin-contracts/test/proxy/Proxy.behaviour.js +198 -0
- package/lib/openzeppelin-contracts/test/proxy/beacon/BeaconProxy.test.js +141 -0
- package/lib/openzeppelin-contracts/test/proxy/beacon/UpgradeableBeacon.test.js +55 -0
- package/lib/openzeppelin-contracts/test/proxy/transparent/ProxyAdmin.test.js +82 -0
- package/lib/openzeppelin-contracts/test/proxy/transparent/TransparentUpgradeableProxy.behaviour.js +367 -0
- package/lib/openzeppelin-contracts/test/proxy/transparent/TransparentUpgradeableProxy.test.js +28 -0
- package/lib/openzeppelin-contracts/test/proxy/utils/Initializable.test.js +216 -0
- package/lib/openzeppelin-contracts/test/proxy/utils/UUPSUpgradeable.test.js +120 -0
- package/lib/openzeppelin-contracts/test/sanity.test.js +27 -0
- package/lib/openzeppelin-contracts/test/token/ERC1155/ERC1155.behavior.js +865 -0
- package/lib/openzeppelin-contracts/test/token/ERC1155/ERC1155.test.js +258 -0
- package/lib/openzeppelin-contracts/test/token/ERC1155/extensions/ERC1155Burnable.test.js +66 -0
- package/lib/openzeppelin-contracts/test/token/ERC1155/extensions/ERC1155Pausable.test.js +105 -0
- package/lib/openzeppelin-contracts/test/token/ERC1155/extensions/ERC1155Supply.test.js +119 -0
- package/lib/openzeppelin-contracts/test/token/ERC1155/extensions/ERC1155URIStorage.test.js +70 -0
- package/lib/openzeppelin-contracts/test/token/ERC1155/utils/ERC1155Holder.test.js +56 -0
- package/lib/openzeppelin-contracts/test/token/ERC1155/utils/ERC1155Utils.test.js +299 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/ERC20.behavior.js +269 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/ERC20.test.js +199 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC1363.test.js +370 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Burnable.test.js +105 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Capped.test.js +55 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Crosschain.test.js +83 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20FlashMint.test.js +164 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Pausable.test.js +129 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Permit.test.js +109 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Votes.test.js +546 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Wrapper.test.js +203 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC4626.t.sol +41 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC4626.test.js +888 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/draft-ERC20Bridgeable.test.js +89 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/draft-ERC20TemporaryApproval.test.js +142 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/utils/SafeERC20.test.js +463 -0
- package/lib/openzeppelin-contracts/test/token/ERC6909/ERC6909.behavior.js +216 -0
- package/lib/openzeppelin-contracts/test/token/ERC6909/ERC6909.test.js +104 -0
- package/lib/openzeppelin-contracts/test/token/ERC6909/extensions/ERC6909ContentURI.test.js +52 -0
- package/lib/openzeppelin-contracts/test/token/ERC6909/extensions/ERC6909Metadata.test.js +62 -0
- package/lib/openzeppelin-contracts/test/token/ERC6909/extensions/ERC6909TokenSupply.test.js +56 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/ERC721.behavior.js +954 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/ERC721.test.js +23 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/ERC721Enumerable.test.js +28 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Burnable.test.js +77 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Consecutive.t.sol +187 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Consecutive.test.js +228 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Pausable.test.js +81 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Royalty.test.js +57 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721URIStorage.test.js +134 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Votes.test.js +194 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Wrapper.test.js +201 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/utils/ERC721Holder.test.js +20 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/utils/ERC721Utils.test.js +94 -0
- package/lib/openzeppelin-contracts/test/token/common/ERC2981.behavior.js +152 -0
- package/lib/openzeppelin-contracts/test/utils/Address.test.js +332 -0
- package/lib/openzeppelin-contracts/test/utils/Arrays.t.sol +416 -0
- package/lib/openzeppelin-contracts/test/utils/Arrays.test.js +284 -0
- package/lib/openzeppelin-contracts/test/utils/Base58.t.sol +24 -0
- package/lib/openzeppelin-contracts/test/utils/Base58.test.js +65 -0
- package/lib/openzeppelin-contracts/test/utils/Base64.t.sol +36 -0
- package/lib/openzeppelin-contracts/test/utils/Base64.test.js +79 -0
- package/lib/openzeppelin-contracts/test/utils/Blockhash.t.sol +101 -0
- package/lib/openzeppelin-contracts/test/utils/Blockhash.test.js +59 -0
- package/lib/openzeppelin-contracts/test/utils/Bytes.t.sol +322 -0
- package/lib/openzeppelin-contracts/test/utils/Bytes.test.js +371 -0
- package/lib/openzeppelin-contracts/test/utils/CAIP.test.js +56 -0
- package/lib/openzeppelin-contracts/test/utils/Calldata.test.js +22 -0
- package/lib/openzeppelin-contracts/test/utils/Context.behavior.js +48 -0
- package/lib/openzeppelin-contracts/test/utils/Context.test.js +18 -0
- package/lib/openzeppelin-contracts/test/utils/Create2.t.sol +17 -0
- package/lib/openzeppelin-contracts/test/utils/Create2.test.js +190 -0
- package/lib/openzeppelin-contracts/test/utils/LowLevelCall.test.js +257 -0
- package/lib/openzeppelin-contracts/test/utils/Memory.t.sol +63 -0
- package/lib/openzeppelin-contracts/test/utils/Memory.test.js +106 -0
- package/lib/openzeppelin-contracts/test/utils/Multicall.test.js +72 -0
- package/lib/openzeppelin-contracts/test/utils/Nonces.behavior.js +189 -0
- package/lib/openzeppelin-contracts/test/utils/Nonces.test.js +16 -0
- package/lib/openzeppelin-contracts/test/utils/NoncesKeyed.t.sol +51 -0
- package/lib/openzeppelin-contracts/test/utils/NoncesKeyed.test.js +17 -0
- package/lib/openzeppelin-contracts/test/utils/Packing.t.sol +993 -0
- package/lib/openzeppelin-contracts/test/utils/Packing.test.js +70 -0
- package/lib/openzeppelin-contracts/test/utils/Panic.test.js +37 -0
- package/lib/openzeppelin-contracts/test/utils/Pausable.test.js +90 -0
- package/lib/openzeppelin-contracts/test/utils/RLP.t.sol +144 -0
- package/lib/openzeppelin-contracts/test/utils/RLP.test.js +224 -0
- package/lib/openzeppelin-contracts/test/utils/ReentrancyGuard.test.js +58 -0
- package/lib/openzeppelin-contracts/test/utils/RelayedCall.test.js +217 -0
- package/lib/openzeppelin-contracts/test/utils/ShortStrings.t.sol +109 -0
- package/lib/openzeppelin-contracts/test/utils/ShortStrings.test.js +64 -0
- package/lib/openzeppelin-contracts/test/utils/SlotDerivation.t.sol +248 -0
- package/lib/openzeppelin-contracts/test/utils/SlotDerivation.test.js +58 -0
- package/lib/openzeppelin-contracts/test/utils/StorageSlot.test.js +73 -0
- package/lib/openzeppelin-contracts/test/utils/Strings.t.sol +50 -0
- package/lib/openzeppelin-contracts/test/utils/Strings.test.js +360 -0
- package/lib/openzeppelin-contracts/test/utils/TransientSlot.test.js +59 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/ECDSA.test.js +322 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/EIP712.test.js +105 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/ERC1271.behavior.js +111 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/ERC7739.test.js +42 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/ERC7739Utils.test.js +203 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/MerkleProof.test.js +216 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/MessageHashUtils.t.sol +33 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/MessageHashUtils.test.js +149 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/P256.t.sol +45 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/P256.test.js +182 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/RSA.helper.js +17 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/RSA.test.js +102 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/SigVer15_186-3.rsp +3850 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/SignatureChecker.test.js +427 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/TrieProof.test.js +659 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/WebAuthn.t.sol +298 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/ecdsa_secp256r1_sha256_p1363_test.json +3719 -0
- package/lib/openzeppelin-contracts/test/utils/draft-InteroperableAddress.t.sol +99 -0
- package/lib/openzeppelin-contracts/test/utils/draft-InteroperableAddress.test.js +170 -0
- package/lib/openzeppelin-contracts/test/utils/introspection/ERC165.test.js +18 -0
- package/lib/openzeppelin-contracts/test/utils/introspection/ERC165Checker.test.js +272 -0
- package/lib/openzeppelin-contracts/test/utils/introspection/SupportsInterface.behavior.js +169 -0
- package/lib/openzeppelin-contracts/test/utils/math/Math.t.sol +370 -0
- package/lib/openzeppelin-contracts/test/utils/math/Math.test.js +746 -0
- package/lib/openzeppelin-contracts/test/utils/math/SafeCast.test.js +159 -0
- package/lib/openzeppelin-contracts/test/utils/math/SignedMath.t.sol +81 -0
- package/lib/openzeppelin-contracts/test/utils/math/SignedMath.test.js +53 -0
- package/lib/openzeppelin-contracts/test/utils/structs/Accumulators.t.sol +35 -0
- package/lib/openzeppelin-contracts/test/utils/structs/BitMap.test.js +149 -0
- package/lib/openzeppelin-contracts/test/utils/structs/Checkpoints.t.sol +440 -0
- package/lib/openzeppelin-contracts/test/utils/structs/Checkpoints.test.js +147 -0
- package/lib/openzeppelin-contracts/test/utils/structs/CircularBuffer.test.js +83 -0
- package/lib/openzeppelin-contracts/test/utils/structs/DoubleEndedQueue.test.js +144 -0
- package/lib/openzeppelin-contracts/test/utils/structs/EnumerableMap.behavior.js +214 -0
- package/lib/openzeppelin-contracts/test/utils/structs/EnumerableMap.test.js +83 -0
- package/lib/openzeppelin-contracts/test/utils/structs/EnumerableSet.behavior.js +175 -0
- package/lib/openzeppelin-contracts/test/utils/structs/EnumerableSet.test.js +66 -0
- package/lib/openzeppelin-contracts/test/utils/structs/Heap.t.sol +74 -0
- package/lib/openzeppelin-contracts/test/utils/structs/Heap.test.js +113 -0
- package/lib/openzeppelin-contracts/test/utils/structs/MerkleTree.test.js +180 -0
- package/lib/openzeppelin-contracts/test/utils/types/Time.test.js +135 -0
- package/lucro.txt +1 -0
- package/out/Base.sol/CommonBase.json +1 -0
- package/out/Base.sol/ScriptBase.json +1 -0
- package/out/Base.sol/TestBase.json +1 -0
- package/out/Context.sol/Context.json +1 -0
- package/out/Counter.s.sol/CounterScript.json +1 -0
- package/out/Counter.sol/Counter.json +1 -0
- package/out/Counter.t.sol/CounterTest.json +1 -0
- package/out/ERC20.sol/ERC20.json +1 -0
- package/out/GbitToken.sol/GbitToken.json +1 -0
- package/out/Guestbook.sol/Guestbook.json +1 -0
- package/out/IERC20.sol/IERC20.json +1 -0
- package/out/IERC20Metadata.sol/IERC20Metadata.json +1 -0
- package/out/IMulticall3.sol/IMulticall3.json +1 -0
- package/out/Script.sol/Script.json +1 -0
- package/out/StdAssertions.sol/StdAssertions.json +1 -0
- package/out/StdChains.sol/StdChains.json +1 -0
- package/out/StdCheats.sol/StdCheats.json +1 -0
- package/out/StdCheats.sol/StdCheatsSafe.json +1 -0
- package/out/StdConstants.sol/StdConstants.json +1 -0
- package/out/StdError.sol/stdError.json +1 -0
- package/out/StdInvariant.sol/StdInvariant.json +1 -0
- package/out/StdJson.sol/stdJson.json +1 -0
- package/out/StdMath.sol/stdMath.json +1 -0
- package/out/StdStorage.sol/stdStorage.json +1 -0
- package/out/StdStorage.sol/stdStorageSafe.json +1 -0
- package/out/StdStyle.sol/StdStyle.json +1 -0
- package/out/StdToml.sol/stdToml.json +1 -0
- package/out/StdUtils.sol/StdUtils.json +1 -0
- package/out/Test.sol/Test.json +1 -0
- package/out/Vm.sol/Vm.json +1 -0
- package/out/Vm.sol/VmSafe.json +1 -0
- package/out/Web3HubCore.sol/Web3HubCore.json +1 -0
- package/out/build-info/8a1d781106536b7b.json +1 -0
- package/out/build-info/aac4797350a36a99.json +1 -0
- package/out/build-info/c34d5a7881e6beba.json +1 -0
- package/out/build-info/ce38d811b8078146.json +1 -0
- package/out/build-info/db34a3531e47e196.json +1 -0
- package/out/console.sol/console.json +1 -0
- package/out/draft-IERC6093.sol/IERC1155Errors.json +1 -0
- package/out/draft-IERC6093.sol/IERC20Errors.json +1 -0
- package/out/draft-IERC6093.sol/IERC721Errors.json +1 -0
- package/out/safeconsole.sol/safeconsole.json +1 -0
- package/package.json +25 -0
- package/remappings.txt +1 -0
- package/script/Counter.s.sol +19 -0
- package/src/Counter.sol +14 -0
- package/src/GbitToken.sol +72 -0
- package/src/Guestbook.sol +28 -0
- package/src/Web3HubCore.sol +42 -0
- package/test/Counter.t.sol +24 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
+
pragma solidity >=0.8.13 <0.9.0;
|
|
3
|
+
|
|
4
|
+
import {IERC165} from "./IERC165.sol";
|
|
5
|
+
|
|
6
|
+
/// @title ERC-1155 Multi Token Standard
|
|
7
|
+
/// @dev See https://eips.ethereum.org/EIPS/eip-1155
|
|
8
|
+
/// Note: The ERC-165 identifier for this interface is 0xd9b67a26.
|
|
9
|
+
interface IERC1155 is IERC165 {
|
|
10
|
+
/// @dev
|
|
11
|
+
/// - Either `TransferSingle` or `TransferBatch` MUST emit when tokens are transferred, including zero value transfers as well as minting or burning (see "Safe Transfer Rules" section of the standard).
|
|
12
|
+
/// - The `_operator` argument MUST be the address of an account/contract that is approved to make the transfer (SHOULD be msg.sender).
|
|
13
|
+
/// - The `_from` argument MUST be the address of the holder whose balance is decreased.
|
|
14
|
+
/// - The `_to` argument MUST be the address of the recipient whose balance is increased.
|
|
15
|
+
/// - The `_id` argument MUST be the token type being transferred.
|
|
16
|
+
/// - The `_value` argument MUST be the number of tokens the holder balance is decreased by and match what the recipient balance is increased by.
|
|
17
|
+
/// - When minting/creating tokens, the `_from` argument MUST be set to `0x0` (i.e. zero address).
|
|
18
|
+
/// - When burning/destroying tokens, the `_to` argument MUST be set to `0x0` (i.e. zero address).
|
|
19
|
+
event TransferSingle(
|
|
20
|
+
address indexed _operator, address indexed _from, address indexed _to, uint256 _id, uint256 _value
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
/// @dev
|
|
24
|
+
/// - Either `TransferSingle` or `TransferBatch` MUST emit when tokens are transferred, including zero value transfers as well as minting or burning (see "Safe Transfer Rules" section of the standard).
|
|
25
|
+
/// - The `_operator` argument MUST be the address of an account/contract that is approved to make the transfer (SHOULD be msg.sender).
|
|
26
|
+
/// - The `_from` argument MUST be the address of the holder whose balance is decreased.
|
|
27
|
+
/// - The `_to` argument MUST be the address of the recipient whose balance is increased.
|
|
28
|
+
/// - The `_ids` argument MUST be the list of tokens being transferred.
|
|
29
|
+
/// - The `_values` argument MUST be the list of number of tokens (matching the list and order of tokens specified in _ids) the holder balance is decreased by and match what the recipient balance is increased by.
|
|
30
|
+
/// - When minting/creating tokens, the `_from` argument MUST be set to `0x0` (i.e. zero address).
|
|
31
|
+
/// - When burning/destroying tokens, the `_to` argument MUST be set to `0x0` (i.e. zero address).
|
|
32
|
+
event TransferBatch(
|
|
33
|
+
address indexed _operator, address indexed _from, address indexed _to, uint256[] _ids, uint256[] _values
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
/// @dev MUST emit when approval for a second party/operator address to manage all tokens for an owner address is enabled or disabled (absence of an event assumes disabled).
|
|
37
|
+
event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);
|
|
38
|
+
|
|
39
|
+
/// @dev MUST emit when the URI is updated for a token ID. URIs are defined in RFC 3986.
|
|
40
|
+
/// The URI MUST point to a JSON file that conforms to the "ERC-1155 Metadata URI JSON Schema".
|
|
41
|
+
event URI(string _value, uint256 indexed _id);
|
|
42
|
+
|
|
43
|
+
/// @notice Transfers `_value` amount of an `_id` from the `_from` address to the `_to` address specified (with safety call).
|
|
44
|
+
/// @dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard).
|
|
45
|
+
/// - MUST revert if `_to` is the zero address.
|
|
46
|
+
/// - MUST revert if balance of holder for token `_id` is lower than the `_value` sent.
|
|
47
|
+
/// - MUST revert on any other error.
|
|
48
|
+
/// - MUST emit the `TransferSingle` event to reflect the balance change (see "Safe Transfer Rules" section of the standard).
|
|
49
|
+
/// - After the above conditions are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call `onERC1155Received` on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard).
|
|
50
|
+
/// @param _from Source address
|
|
51
|
+
/// @param _to Target address
|
|
52
|
+
/// @param _id ID of the token type
|
|
53
|
+
/// @param _value Transfer amount
|
|
54
|
+
/// @param _data Additional data with no specified format, MUST be sent unaltered in call to `onERC1155Received` on `_to`
|
|
55
|
+
function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data) external;
|
|
56
|
+
|
|
57
|
+
/// @notice Transfers `_values` amount(s) of `_ids` from the `_from` address to the `_to` address specified (with safety call).
|
|
58
|
+
/// @dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard).
|
|
59
|
+
/// - MUST revert if `_to` is the zero address.
|
|
60
|
+
/// - MUST revert if length of `_ids` is not the same as length of `_values`.
|
|
61
|
+
/// - MUST revert if any of the balance(s) of the holder(s) for token(s) in `_ids` is lower than the respective amount(s) in `_values` sent to the recipient.
|
|
62
|
+
/// - MUST revert on any other error.
|
|
63
|
+
/// - MUST emit `TransferSingle` or `TransferBatch` event(s) such that all the balance changes are reflected (see "Safe Transfer Rules" section of the standard).
|
|
64
|
+
/// - Balance changes and events MUST follow the ordering of the arrays (_ids[0]/_values[0] before _ids[1]/_values[1], etc).
|
|
65
|
+
/// - After the above conditions for the transfer(s) in the batch are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call the relevant `ERC1155TokenReceiver` hook(s) on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard).
|
|
66
|
+
/// @param _from Source address
|
|
67
|
+
/// @param _to Target address
|
|
68
|
+
/// @param _ids IDs of each token type (order and length must match _values array)
|
|
69
|
+
/// @param _values Transfer amounts per token type (order and length must match _ids array)
|
|
70
|
+
/// @param _data Additional data with no specified format, MUST be sent unaltered in call to the `ERC1155TokenReceiver` hook(s) on `_to`
|
|
71
|
+
function safeBatchTransferFrom(
|
|
72
|
+
address _from,
|
|
73
|
+
address _to,
|
|
74
|
+
uint256[] calldata _ids,
|
|
75
|
+
uint256[] calldata _values,
|
|
76
|
+
bytes calldata _data
|
|
77
|
+
) external;
|
|
78
|
+
|
|
79
|
+
/// @notice Get the balance of an account's tokens.
|
|
80
|
+
/// @param _owner The address of the token holder
|
|
81
|
+
/// @param _id ID of the token
|
|
82
|
+
/// @return The _owner's balance of the token type requested
|
|
83
|
+
function balanceOf(address _owner, uint256 _id) external view returns (uint256);
|
|
84
|
+
|
|
85
|
+
/// @notice Get the balance of multiple account/token pairs
|
|
86
|
+
/// @param _owners The addresses of the token holders
|
|
87
|
+
/// @param _ids ID of the tokens
|
|
88
|
+
/// @return The _owner's balance of the token types requested (i.e. balance for each (owner, id) pair)
|
|
89
|
+
function balanceOfBatch(address[] calldata _owners, uint256[] calldata _ids)
|
|
90
|
+
external
|
|
91
|
+
view
|
|
92
|
+
returns (uint256[] memory);
|
|
93
|
+
|
|
94
|
+
/// @notice Enable or disable approval for a third party ("operator") to manage all of the caller's tokens.
|
|
95
|
+
/// @dev MUST emit the ApprovalForAll event on success.
|
|
96
|
+
/// @param _operator Address to add to the set of authorized operators
|
|
97
|
+
/// @param _approved True if the operator is approved, false to revoke approval
|
|
98
|
+
function setApprovalForAll(address _operator, bool _approved) external;
|
|
99
|
+
|
|
100
|
+
/// @notice Queries the approval status of an operator for a given owner.
|
|
101
|
+
/// @param _owner The owner of the tokens
|
|
102
|
+
/// @param _operator Address of authorized operator
|
|
103
|
+
/// @return True if the operator is approved, false if not
|
|
104
|
+
function isApprovedForAll(address _owner, address _operator) external view returns (bool);
|
|
105
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
+
pragma solidity >=0.8.13 <0.9.0;
|
|
3
|
+
|
|
4
|
+
interface IERC165 {
|
|
5
|
+
/// @notice Query if a contract implements an interface
|
|
6
|
+
/// @param interfaceID The interface identifier, as specified in ERC-165
|
|
7
|
+
/// @dev Interface identification is specified in ERC-165. This function
|
|
8
|
+
/// uses less than 30,000 gas.
|
|
9
|
+
/// @return `true` if the contract implements `interfaceID` and
|
|
10
|
+
/// `interfaceID` is not 0xffffffff, `false` otherwise
|
|
11
|
+
function supportsInterface(bytes4 interfaceID) external view returns (bool);
|
|
12
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
+
pragma solidity >=0.8.13 <0.9.0;
|
|
3
|
+
|
|
4
|
+
/// @dev Interface of the ERC20 standard as defined in the EIP.
|
|
5
|
+
/// @dev This includes the optional name, symbol, and decimals metadata.
|
|
6
|
+
interface IERC20 {
|
|
7
|
+
/// @dev Emitted when `value` tokens are moved from one account (`from`) to another (`to`).
|
|
8
|
+
event Transfer(address indexed from, address indexed to, uint256 value);
|
|
9
|
+
|
|
10
|
+
/// @dev Emitted when the allowance of a `spender` for an `owner` is set, where `value`
|
|
11
|
+
/// is the new allowance.
|
|
12
|
+
event Approval(address indexed owner, address indexed spender, uint256 value);
|
|
13
|
+
|
|
14
|
+
/// @notice Returns the amount of tokens in existence.
|
|
15
|
+
function totalSupply() external view returns (uint256);
|
|
16
|
+
|
|
17
|
+
/// @notice Returns the amount of tokens owned by `account`.
|
|
18
|
+
function balanceOf(address account) external view returns (uint256);
|
|
19
|
+
|
|
20
|
+
/// @notice Moves `amount` tokens from the caller's account to `to`.
|
|
21
|
+
function transfer(address to, uint256 amount) external returns (bool);
|
|
22
|
+
|
|
23
|
+
/// @notice Returns the remaining number of tokens that `spender` is allowed
|
|
24
|
+
/// to spend on behalf of `owner`
|
|
25
|
+
function allowance(address owner, address spender) external view returns (uint256);
|
|
26
|
+
|
|
27
|
+
/// @notice Sets `amount` as the allowance of `spender` over the caller's tokens.
|
|
28
|
+
/// @dev Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
|
|
29
|
+
function approve(address spender, uint256 amount) external returns (bool);
|
|
30
|
+
|
|
31
|
+
/// @notice Moves `amount` tokens from `from` to `to` using the allowance mechanism.
|
|
32
|
+
/// `amount` is then deducted from the caller's allowance.
|
|
33
|
+
function transferFrom(address from, address to, uint256 amount) external returns (bool);
|
|
34
|
+
|
|
35
|
+
/// @notice Returns the name of the token.
|
|
36
|
+
function name() external view returns (string memory);
|
|
37
|
+
|
|
38
|
+
/// @notice Returns the symbol of the token.
|
|
39
|
+
function symbol() external view returns (string memory);
|
|
40
|
+
|
|
41
|
+
/// @notice Returns the decimals places of the token.
|
|
42
|
+
function decimals() external view returns (uint8);
|
|
43
|
+
}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
+
pragma solidity >=0.8.13 <0.9.0;
|
|
3
|
+
|
|
4
|
+
import {IERC20} from "./IERC20.sol";
|
|
5
|
+
|
|
6
|
+
/// @dev Interface of the ERC4626 "Tokenized Vault Standard", as defined in
|
|
7
|
+
/// https://eips.ethereum.org/EIPS/eip-4626
|
|
8
|
+
interface IERC4626 is IERC20 {
|
|
9
|
+
event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares);
|
|
10
|
+
|
|
11
|
+
event Withdraw(
|
|
12
|
+
address indexed sender, address indexed receiver, address indexed owner, uint256 assets, uint256 shares
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
/// @notice Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing.
|
|
16
|
+
/// @dev
|
|
17
|
+
/// - MUST be an ERC-20 token contract.
|
|
18
|
+
/// - MUST NOT revert.
|
|
19
|
+
function asset() external view returns (address assetTokenAddress);
|
|
20
|
+
|
|
21
|
+
/// @notice Returns the total amount of the underlying asset that is “managed” by Vault.
|
|
22
|
+
/// @dev
|
|
23
|
+
/// - SHOULD include any compounding that occurs from yield.
|
|
24
|
+
/// - MUST be inclusive of any fees that are charged against assets in the Vault.
|
|
25
|
+
/// - MUST NOT revert.
|
|
26
|
+
function totalAssets() external view returns (uint256 totalManagedAssets);
|
|
27
|
+
|
|
28
|
+
/// @notice Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal
|
|
29
|
+
/// scenario where all the conditions are met.
|
|
30
|
+
/// @dev
|
|
31
|
+
/// - MUST NOT be inclusive of any fees that are charged against assets in the Vault.
|
|
32
|
+
/// - MUST NOT show any variations depending on the caller.
|
|
33
|
+
/// - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange.
|
|
34
|
+
/// - MUST NOT revert.
|
|
35
|
+
///
|
|
36
|
+
/// NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the
|
|
37
|
+
/// “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and
|
|
38
|
+
/// from.
|
|
39
|
+
function convertToShares(uint256 assets) external view returns (uint256 shares);
|
|
40
|
+
|
|
41
|
+
/// @notice Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal
|
|
42
|
+
/// scenario where all the conditions are met.
|
|
43
|
+
/// @dev
|
|
44
|
+
/// - MUST NOT be inclusive of any fees that are charged against assets in the Vault.
|
|
45
|
+
/// - MUST NOT show any variations depending on the caller.
|
|
46
|
+
/// - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange.
|
|
47
|
+
/// - MUST NOT revert.
|
|
48
|
+
///
|
|
49
|
+
/// NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the
|
|
50
|
+
/// “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and
|
|
51
|
+
/// from.
|
|
52
|
+
function convertToAssets(uint256 shares) external view returns (uint256 assets);
|
|
53
|
+
|
|
54
|
+
/// @notice Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver,
|
|
55
|
+
/// through a deposit call.
|
|
56
|
+
/// @dev
|
|
57
|
+
/// - MUST return a limited value if receiver is subject to some deposit limit.
|
|
58
|
+
/// - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited.
|
|
59
|
+
/// - MUST NOT revert.
|
|
60
|
+
function maxDeposit(address receiver) external view returns (uint256 maxAssets);
|
|
61
|
+
|
|
62
|
+
/// @notice Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given
|
|
63
|
+
/// current on-chain conditions.
|
|
64
|
+
/// @dev
|
|
65
|
+
/// - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit
|
|
66
|
+
/// call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called
|
|
67
|
+
/// in the same transaction.
|
|
68
|
+
/// - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the
|
|
69
|
+
/// deposit would be accepted, regardless if the user has enough tokens approved, etc.
|
|
70
|
+
/// - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees.
|
|
71
|
+
/// - MUST NOT revert.
|
|
72
|
+
///
|
|
73
|
+
/// NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in
|
|
74
|
+
/// share price or some other type of condition, meaning the depositor will lose assets by depositing.
|
|
75
|
+
function previewDeposit(uint256 assets) external view returns (uint256 shares);
|
|
76
|
+
|
|
77
|
+
/// @notice Mints shares Vault shares to receiver by depositing exactly amount of underlying tokens.
|
|
78
|
+
/// @dev
|
|
79
|
+
/// - MUST emit the Deposit event.
|
|
80
|
+
/// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the
|
|
81
|
+
/// deposit execution, and are accounted for during deposit.
|
|
82
|
+
/// - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not
|
|
83
|
+
/// approving enough underlying tokens to the Vault contract, etc).
|
|
84
|
+
///
|
|
85
|
+
/// NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token.
|
|
86
|
+
function deposit(uint256 assets, address receiver) external returns (uint256 shares);
|
|
87
|
+
|
|
88
|
+
/// @notice Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call.
|
|
89
|
+
/// @dev
|
|
90
|
+
/// - MUST return a limited value if receiver is subject to some mint limit.
|
|
91
|
+
/// - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted.
|
|
92
|
+
/// - MUST NOT revert.
|
|
93
|
+
function maxMint(address receiver) external view returns (uint256 maxShares);
|
|
94
|
+
|
|
95
|
+
/// @notice Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given
|
|
96
|
+
/// current on-chain conditions.
|
|
97
|
+
/// @dev
|
|
98
|
+
/// - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call
|
|
99
|
+
/// in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the
|
|
100
|
+
/// same transaction.
|
|
101
|
+
/// - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint
|
|
102
|
+
/// would be accepted, regardless if the user has enough tokens approved, etc.
|
|
103
|
+
/// - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees.
|
|
104
|
+
/// - MUST NOT revert.
|
|
105
|
+
///
|
|
106
|
+
/// NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in
|
|
107
|
+
/// share price or some other type of condition, meaning the depositor will lose assets by minting.
|
|
108
|
+
function previewMint(uint256 shares) external view returns (uint256 assets);
|
|
109
|
+
|
|
110
|
+
/// @notice Mints exactly shares Vault shares to receiver by depositing amount of underlying tokens.
|
|
111
|
+
/// @dev
|
|
112
|
+
/// - MUST emit the Deposit event.
|
|
113
|
+
/// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint
|
|
114
|
+
/// execution, and are accounted for during mint.
|
|
115
|
+
/// - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not
|
|
116
|
+
/// approving enough underlying tokens to the Vault contract, etc).
|
|
117
|
+
///
|
|
118
|
+
/// NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token.
|
|
119
|
+
function mint(uint256 shares, address receiver) external returns (uint256 assets);
|
|
120
|
+
|
|
121
|
+
/// @notice Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the
|
|
122
|
+
/// Vault, through a withdrawal call.
|
|
123
|
+
/// @dev
|
|
124
|
+
/// - MUST return a limited value if owner is subject to some withdrawal limit or timelock.
|
|
125
|
+
/// - MUST NOT revert.
|
|
126
|
+
function maxWithdraw(address owner) external view returns (uint256 maxAssets);
|
|
127
|
+
|
|
128
|
+
/// @notice Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block,
|
|
129
|
+
/// given current on-chain conditions.
|
|
130
|
+
/// @dev
|
|
131
|
+
/// - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw
|
|
132
|
+
/// call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if
|
|
133
|
+
/// called
|
|
134
|
+
/// in the same transaction.
|
|
135
|
+
/// - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though
|
|
136
|
+
/// the withdrawal would be accepted, regardless if the user has enough shares, etc.
|
|
137
|
+
/// - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees.
|
|
138
|
+
/// - MUST NOT revert.
|
|
139
|
+
///
|
|
140
|
+
/// NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in
|
|
141
|
+
/// share price or some other type of condition, meaning the depositor will lose assets by depositing.
|
|
142
|
+
function previewWithdraw(uint256 assets) external view returns (uint256 shares);
|
|
143
|
+
|
|
144
|
+
/// @notice Burns shares from owner and sends exactly assets of underlying tokens to receiver.
|
|
145
|
+
/// @dev
|
|
146
|
+
/// - MUST emit the Withdraw event.
|
|
147
|
+
/// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the
|
|
148
|
+
/// withdraw execution, and are accounted for during withdrawal.
|
|
149
|
+
/// - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner
|
|
150
|
+
/// not having enough shares, etc).
|
|
151
|
+
///
|
|
152
|
+
/// Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed.
|
|
153
|
+
/// Those methods should be performed separately.
|
|
154
|
+
function withdraw(uint256 assets, address receiver, address owner) external returns (uint256 shares);
|
|
155
|
+
|
|
156
|
+
/// @notice Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault,
|
|
157
|
+
/// through a redeem call.
|
|
158
|
+
/// @dev
|
|
159
|
+
/// - MUST return a limited value if owner is subject to some withdrawal limit or timelock.
|
|
160
|
+
/// - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock.
|
|
161
|
+
/// - MUST NOT revert.
|
|
162
|
+
function maxRedeem(address owner) external view returns (uint256 maxShares);
|
|
163
|
+
|
|
164
|
+
/// @notice Allows an on-chain or off-chain user to simulate the effects of their redeemption at the current block,
|
|
165
|
+
/// given current on-chain conditions.
|
|
166
|
+
/// @dev
|
|
167
|
+
/// - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call
|
|
168
|
+
/// in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the
|
|
169
|
+
/// same transaction.
|
|
170
|
+
/// - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the
|
|
171
|
+
/// redemption would be accepted, regardless if the user has enough shares, etc.
|
|
172
|
+
/// - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees.
|
|
173
|
+
/// - MUST NOT revert.
|
|
174
|
+
///
|
|
175
|
+
/// NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in
|
|
176
|
+
/// share price or some other type of condition, meaning the depositor will lose assets by redeeming.
|
|
177
|
+
function previewRedeem(uint256 shares) external view returns (uint256 assets);
|
|
178
|
+
|
|
179
|
+
/// @notice Burns exactly shares from owner and sends assets of underlying tokens to receiver.
|
|
180
|
+
/// @dev
|
|
181
|
+
/// - MUST emit the Withdraw event.
|
|
182
|
+
/// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the
|
|
183
|
+
/// redeem execution, and are accounted for during redeem.
|
|
184
|
+
/// - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner
|
|
185
|
+
/// not having enough shares, etc).
|
|
186
|
+
///
|
|
187
|
+
/// NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed.
|
|
188
|
+
/// Those methods should be performed separately.
|
|
189
|
+
function redeem(uint256 shares, address receiver, address owner) external returns (uint256 assets);
|
|
190
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
+
pragma solidity >=0.8.13 <0.9.0;
|
|
3
|
+
|
|
4
|
+
import {IERC165} from "./IERC165.sol";
|
|
5
|
+
|
|
6
|
+
/// @dev Required interface of an ERC-6909 compliant contract, as defined in
|
|
7
|
+
/// https://eips.ethereum.org/EIPS/eip-6909
|
|
8
|
+
interface IERC6909 is IERC165 {
|
|
9
|
+
/// @dev Emitted when the allowance of a `spender` for an `owner` is set for a token of type `id`.
|
|
10
|
+
event Approval(address indexed owner, address indexed spender, uint256 indexed id, uint256 amount);
|
|
11
|
+
|
|
12
|
+
/// @dev Emitted when `owner` grants or revokes operator status for a `spender`.
|
|
13
|
+
event OperatorSet(address indexed owner, address indexed spender, bool approved);
|
|
14
|
+
|
|
15
|
+
/// @dev Emitted when `amount` tokens of type `id` are moved from `sender` to `receiver` initiated by `caller`.
|
|
16
|
+
event Transfer(
|
|
17
|
+
address caller, address indexed sender, address indexed receiver, uint256 indexed id, uint256 amount
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
///@dev Returns the amount of tokens of type `id` owned by `owner`.
|
|
21
|
+
function balanceOf(address owner, uint256 id) external view returns (uint256);
|
|
22
|
+
|
|
23
|
+
/// @dev Returns the amount of tokens of type `id` that `spender` is allowed to spend on behalf of `owner`.
|
|
24
|
+
/// NOTE: Does not include operator allowances.
|
|
25
|
+
function allowance(address owner, address spender, uint256 id) external view returns (uint256);
|
|
26
|
+
|
|
27
|
+
/// @dev Returns true if `spender` is set as an operator for `owner`.
|
|
28
|
+
function isOperator(address owner, address spender) external view returns (bool);
|
|
29
|
+
|
|
30
|
+
/// @dev Sets an approval to `spender` for `amount` tokens of type `id` from the caller's tokens.
|
|
31
|
+
/// Must return true.
|
|
32
|
+
function approve(address spender, uint256 id, uint256 amount) external returns (bool);
|
|
33
|
+
|
|
34
|
+
/// @dev Grants or revokes unlimited transfer permission of any token id to `spender` for the caller's tokens.
|
|
35
|
+
/// Must return true.
|
|
36
|
+
function setOperator(address spender, bool approved) external returns (bool);
|
|
37
|
+
|
|
38
|
+
/// @dev Transfers `amount` of token type `id` from the caller's account to `receiver`.
|
|
39
|
+
/// Must return true.
|
|
40
|
+
function transfer(address receiver, uint256 id, uint256 amount) external returns (bool);
|
|
41
|
+
|
|
42
|
+
/// @dev Transfers `amount` of token type `id` from `sender` to `receiver`.
|
|
43
|
+
/// Must return true.
|
|
44
|
+
function transferFrom(address sender, address receiver, uint256 id, uint256 amount) external returns (bool);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/// @dev Optional extension of {IERC6909} that adds metadata functions.
|
|
48
|
+
interface IERC6909Metadata is IERC6909 {
|
|
49
|
+
/// @dev Returns the name of the token of type `id`.
|
|
50
|
+
function name(uint256 id) external view returns (string memory);
|
|
51
|
+
|
|
52
|
+
/// @dev Returns the ticker symbol of the token of type `id`.
|
|
53
|
+
function symbol(uint256 id) external view returns (string memory);
|
|
54
|
+
|
|
55
|
+
/// @dev Returns the number of decimals for the token of type `id`.
|
|
56
|
+
function decimals(uint256 id) external view returns (uint8);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/// @dev Optional extension of {IERC6909} that adds content URI functions.
|
|
60
|
+
interface IERC6909ContentURI is IERC6909 {
|
|
61
|
+
/// @dev Returns URI for the contract.
|
|
62
|
+
function contractURI() external view returns (string memory);
|
|
63
|
+
|
|
64
|
+
/// @dev Returns the URI for the token of type `id`.
|
|
65
|
+
function tokenURI(uint256 id) external view returns (string memory);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/// @dev Optional extension of {IERC6909} that adds a token supply function.
|
|
69
|
+
interface IERC6909TokenSupply is IERC6909 {
|
|
70
|
+
/// @dev Returns the total supply of the token of type `id`.
|
|
71
|
+
function totalSupply(uint256 id) external view returns (uint256);
|
|
72
|
+
}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
+
pragma solidity >=0.8.13 <0.9.0;
|
|
3
|
+
|
|
4
|
+
import {IERC165} from "./IERC165.sol";
|
|
5
|
+
|
|
6
|
+
/// @title ERC-721 Non-Fungible Token Standard
|
|
7
|
+
/// @dev See https://eips.ethereum.org/EIPS/eip-721
|
|
8
|
+
/// Note: the ERC-165 identifier for this interface is 0x80ac58cd.
|
|
9
|
+
interface IERC721 is IERC165 {
|
|
10
|
+
/// @dev This emits when ownership of any NFT changes by any mechanism.
|
|
11
|
+
/// This event emits when NFTs are created (`from` == 0) and destroyed
|
|
12
|
+
/// (`to` == 0). Exception: during contract creation, any number of NFTs
|
|
13
|
+
/// may be created and assigned without emitting Transfer. At the time of
|
|
14
|
+
/// any transfer, the approved address for that NFT (if any) is reset to none.
|
|
15
|
+
event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);
|
|
16
|
+
|
|
17
|
+
/// @dev This emits when the approved address for an NFT is changed or
|
|
18
|
+
/// reaffirmed. The zero address indicates there is no approved address.
|
|
19
|
+
/// When a Transfer event emits, this also indicates that the approved
|
|
20
|
+
/// address for that NFT (if any) is reset to none.
|
|
21
|
+
event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);
|
|
22
|
+
|
|
23
|
+
/// @dev This emits when an operator is enabled or disabled for an owner.
|
|
24
|
+
/// The operator can manage all NFTs of the owner.
|
|
25
|
+
event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);
|
|
26
|
+
|
|
27
|
+
/// @notice Count all NFTs assigned to an owner
|
|
28
|
+
/// @dev NFTs assigned to the zero address are considered invalid, and this
|
|
29
|
+
/// function throws for queries about the zero address.
|
|
30
|
+
/// @param _owner An address for whom to query the balance
|
|
31
|
+
/// @return The number of NFTs owned by `_owner`, possibly zero
|
|
32
|
+
function balanceOf(address _owner) external view returns (uint256);
|
|
33
|
+
|
|
34
|
+
/// @notice Find the owner of an NFT
|
|
35
|
+
/// @dev NFTs assigned to zero address are considered invalid, and queries
|
|
36
|
+
/// about them do throw.
|
|
37
|
+
/// @param _tokenId The identifier for an NFT
|
|
38
|
+
/// @return The address of the owner of the NFT
|
|
39
|
+
function ownerOf(uint256 _tokenId) external view returns (address);
|
|
40
|
+
|
|
41
|
+
/// @notice Transfers the ownership of an NFT from one address to another address
|
|
42
|
+
/// @dev Throws unless `msg.sender` is the current owner, an authorized
|
|
43
|
+
/// operator, or the approved address for this NFT. Throws if `_from` is
|
|
44
|
+
/// not the current owner. Throws if `_to` is the zero address. Throws if
|
|
45
|
+
/// `_tokenId` is not a valid NFT. When transfer is complete, this function
|
|
46
|
+
/// checks if `_to` is a smart contract (code size > 0). If so, it calls
|
|
47
|
+
/// `onERC721Received` on `_to` and throws if the return value is not
|
|
48
|
+
/// `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`.
|
|
49
|
+
/// @param _from The current owner of the NFT
|
|
50
|
+
/// @param _to The new owner
|
|
51
|
+
/// @param _tokenId The NFT to transfer
|
|
52
|
+
/// @param data Additional data with no specified format, sent in call to `_to`
|
|
53
|
+
function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes calldata data) external payable;
|
|
54
|
+
|
|
55
|
+
/// @notice Transfers the ownership of an NFT from one address to another address
|
|
56
|
+
/// @dev This works identically to the other function with an extra data parameter,
|
|
57
|
+
/// except this function just sets data to "".
|
|
58
|
+
/// @param _from The current owner of the NFT
|
|
59
|
+
/// @param _to The new owner
|
|
60
|
+
/// @param _tokenId The NFT to transfer
|
|
61
|
+
function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;
|
|
62
|
+
|
|
63
|
+
/// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE
|
|
64
|
+
/// TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE
|
|
65
|
+
/// THEY MAY BE PERMANENTLY LOST
|
|
66
|
+
/// @dev Throws unless `msg.sender` is the current owner, an authorized
|
|
67
|
+
/// operator, or the approved address for this NFT. Throws if `_from` is
|
|
68
|
+
/// not the current owner. Throws if `_to` is the zero address. Throws if
|
|
69
|
+
/// `_tokenId` is not a valid NFT.
|
|
70
|
+
/// @param _from The current owner of the NFT
|
|
71
|
+
/// @param _to The new owner
|
|
72
|
+
/// @param _tokenId The NFT to transfer
|
|
73
|
+
function transferFrom(address _from, address _to, uint256 _tokenId) external payable;
|
|
74
|
+
|
|
75
|
+
/// @notice Change or reaffirm the approved address for an NFT
|
|
76
|
+
/// @dev The zero address indicates there is no approved address.
|
|
77
|
+
/// Throws unless `msg.sender` is the current NFT owner, or an authorized
|
|
78
|
+
/// operator of the current owner.
|
|
79
|
+
/// @param _approved The new approved NFT controller
|
|
80
|
+
/// @param _tokenId The NFT to approve
|
|
81
|
+
function approve(address _approved, uint256 _tokenId) external payable;
|
|
82
|
+
|
|
83
|
+
/// @notice Enable or disable approval for a third party ("operator") to manage
|
|
84
|
+
/// all of `msg.sender`'s assets
|
|
85
|
+
/// @dev Emits the ApprovalForAll event. The contract MUST allow
|
|
86
|
+
/// multiple operators per owner.
|
|
87
|
+
/// @param _operator Address to add to the set of authorized operators
|
|
88
|
+
/// @param _approved True if the operator is approved, false to revoke approval
|
|
89
|
+
function setApprovalForAll(address _operator, bool _approved) external;
|
|
90
|
+
|
|
91
|
+
/// @notice Get the approved address for a single NFT
|
|
92
|
+
/// @dev Throws if `_tokenId` is not a valid NFT.
|
|
93
|
+
/// @param _tokenId The NFT to find the approved address for
|
|
94
|
+
/// @return The approved address for this NFT, or the zero address if there is none
|
|
95
|
+
function getApproved(uint256 _tokenId) external view returns (address);
|
|
96
|
+
|
|
97
|
+
/// @notice Query if an address is an authorized operator for another address
|
|
98
|
+
/// @param _owner The address that owns the NFTs
|
|
99
|
+
/// @param _operator The address that acts on behalf of the owner
|
|
100
|
+
/// @return True if `_operator` is an approved operator for `_owner`, false otherwise
|
|
101
|
+
function isApprovedForAll(address _owner, address _operator) external view returns (bool);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/// @dev Note: the ERC-165 identifier for this interface is 0x150b7a02.
|
|
105
|
+
interface IERC721TokenReceiver {
|
|
106
|
+
/// @notice Handle the receipt of an NFT
|
|
107
|
+
/// @dev The ERC721 smart contract calls this function on the recipient
|
|
108
|
+
/// after a `transfer`. This function MAY throw to revert and reject the
|
|
109
|
+
/// transfer. Return of other than the magic value MUST result in the
|
|
110
|
+
/// transaction being reverted.
|
|
111
|
+
/// Note: the contract address is always the message sender.
|
|
112
|
+
/// @param _operator The address which called `safeTransferFrom` function
|
|
113
|
+
/// @param _from The address which previously owned the token
|
|
114
|
+
/// @param _tokenId The NFT identifier which is being transferred
|
|
115
|
+
/// @param _data Additional data with no specified format
|
|
116
|
+
/// @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`
|
|
117
|
+
/// unless throwing
|
|
118
|
+
function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes calldata _data)
|
|
119
|
+
external
|
|
120
|
+
returns (bytes4);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/// @title ERC-721 Non-Fungible Token Standard, optional metadata extension
|
|
124
|
+
/// @dev See https://eips.ethereum.org/EIPS/eip-721
|
|
125
|
+
/// Note: the ERC-165 identifier for this interface is 0x5b5e139f.
|
|
126
|
+
interface IERC721Metadata is IERC721 {
|
|
127
|
+
/// @notice A descriptive name for a collection of NFTs in this contract
|
|
128
|
+
function name() external view returns (string memory _name);
|
|
129
|
+
|
|
130
|
+
/// @notice An abbreviated name for NFTs in this contract
|
|
131
|
+
function symbol() external view returns (string memory _symbol);
|
|
132
|
+
|
|
133
|
+
/// @notice A distinct Uniform Resource Identifier (URI) for a given asset.
|
|
134
|
+
/// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC
|
|
135
|
+
/// 3986. The URI may point to a JSON file that conforms to the "ERC721
|
|
136
|
+
/// Metadata JSON Schema".
|
|
137
|
+
function tokenURI(uint256 _tokenId) external view returns (string memory);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
|
|
141
|
+
/// @dev See https://eips.ethereum.org/EIPS/eip-721
|
|
142
|
+
/// Note: the ERC-165 identifier for this interface is 0x780e9d63.
|
|
143
|
+
interface IERC721Enumerable is IERC721 {
|
|
144
|
+
/// @notice Count NFTs tracked by this contract
|
|
145
|
+
/// @return A count of valid NFTs tracked by this contract, where each one of
|
|
146
|
+
/// them has an assigned and queryable owner not equal to the zero address
|
|
147
|
+
function totalSupply() external view returns (uint256);
|
|
148
|
+
|
|
149
|
+
/// @notice Enumerate valid NFTs
|
|
150
|
+
/// @dev Throws if `_index` >= `totalSupply()`.
|
|
151
|
+
/// @param _index A counter less than `totalSupply()`
|
|
152
|
+
/// @return The token identifier for the `_index`th NFT,
|
|
153
|
+
/// (sort order not specified)
|
|
154
|
+
function tokenByIndex(uint256 _index) external view returns (uint256);
|
|
155
|
+
|
|
156
|
+
/// @notice Enumerate NFTs assigned to an owner
|
|
157
|
+
/// @dev Throws if `_index` >= `balanceOf(_owner)` or if
|
|
158
|
+
/// `_owner` is the zero address, representing invalid NFTs.
|
|
159
|
+
/// @param _owner An address where we are interested in NFTs owned by them
|
|
160
|
+
/// @param _index A counter less than `balanceOf(_owner)`
|
|
161
|
+
/// @return The token identifier for the `_index`th NFT assigned to `_owner`,
|
|
162
|
+
/// (sort order not specified)
|
|
163
|
+
function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256);
|
|
164
|
+
}
|