@moltium/world-core 0.1.3 → 0.1.4

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.
Files changed (947) hide show
  1. package/lib/forge-std/.gitattributes +1 -0
  2. package/lib/forge-std/.github/CODEOWNERS +1 -0
  3. package/lib/forge-std/.github/dependabot.yml +6 -0
  4. package/lib/forge-std/.github/workflows/ci.yml +125 -0
  5. package/lib/forge-std/.github/workflows/sync.yml +36 -0
  6. package/lib/forge-std/CONTRIBUTING.md +193 -0
  7. package/lib/forge-std/LICENSE-APACHE +203 -0
  8. package/lib/forge-std/LICENSE-MIT +25 -0
  9. package/lib/forge-std/README.md +268 -0
  10. package/lib/forge-std/RELEASE_CHECKLIST.md +12 -0
  11. package/lib/forge-std/foundry.toml +18 -0
  12. package/lib/forge-std/package.json +16 -0
  13. package/lib/forge-std/scripts/vm.py +636 -0
  14. package/lib/forge-std/src/Base.sol +48 -0
  15. package/lib/forge-std/src/Config.sol +60 -0
  16. package/lib/forge-std/src/LibVariable.sol +477 -0
  17. package/lib/forge-std/src/Script.sol +28 -0
  18. package/lib/forge-std/src/StdAssertions.sol +779 -0
  19. package/lib/forge-std/src/StdChains.sol +295 -0
  20. package/lib/forge-std/src/StdCheats.sol +825 -0
  21. package/lib/forge-std/src/StdConfig.sol +632 -0
  22. package/lib/forge-std/src/StdConstants.sol +30 -0
  23. package/lib/forge-std/src/StdError.sol +15 -0
  24. package/lib/forge-std/src/StdInvariant.sol +120 -0
  25. package/lib/forge-std/src/StdJson.sol +275 -0
  26. package/lib/forge-std/src/StdMath.sol +47 -0
  27. package/lib/forge-std/src/StdStorage.sol +475 -0
  28. package/lib/forge-std/src/StdStyle.sol +333 -0
  29. package/lib/forge-std/src/StdToml.sol +275 -0
  30. package/lib/forge-std/src/StdUtils.sol +200 -0
  31. package/lib/forge-std/src/Test.sol +32 -0
  32. package/lib/forge-std/src/Vm.sol +2500 -0
  33. package/lib/forge-std/src/console.sol +1551 -0
  34. package/lib/forge-std/src/console2.sol +4 -0
  35. package/lib/forge-std/src/interfaces/IERC1155.sol +105 -0
  36. package/lib/forge-std/src/interfaces/IERC165.sol +12 -0
  37. package/lib/forge-std/src/interfaces/IERC20.sol +43 -0
  38. package/lib/forge-std/src/interfaces/IERC4626.sol +190 -0
  39. package/lib/forge-std/src/interfaces/IERC6909.sol +72 -0
  40. package/lib/forge-std/src/interfaces/IERC721.sol +164 -0
  41. package/lib/forge-std/src/interfaces/IERC7540.sol +144 -0
  42. package/lib/forge-std/src/interfaces/IERC7575.sol +241 -0
  43. package/lib/forge-std/src/interfaces/IMulticall3.sol +68 -0
  44. package/lib/forge-std/src/safeconsole.sol +13248 -0
  45. package/lib/forge-std/test/CommonBase.t.sol +44 -0
  46. package/lib/forge-std/test/Config.t.sol +381 -0
  47. package/lib/forge-std/test/LibVariable.t.sol +452 -0
  48. package/lib/forge-std/test/StdAssertions.t.sol +141 -0
  49. package/lib/forge-std/test/StdChains.t.sol +227 -0
  50. package/lib/forge-std/test/StdCheats.t.sol +638 -0
  51. package/lib/forge-std/test/StdConstants.t.sol +38 -0
  52. package/lib/forge-std/test/StdError.t.sol +119 -0
  53. package/lib/forge-std/test/StdJson.t.sol +49 -0
  54. package/lib/forge-std/test/StdMath.t.sol +202 -0
  55. package/lib/forge-std/test/StdStorage.t.sol +485 -0
  56. package/lib/forge-std/test/StdStyle.t.sol +110 -0
  57. package/lib/forge-std/test/StdToml.t.sol +49 -0
  58. package/lib/forge-std/test/StdUtils.t.sol +342 -0
  59. package/lib/forge-std/test/Vm.t.sol +18 -0
  60. package/lib/forge-std/test/compilation/CompilationScript.sol +8 -0
  61. package/lib/forge-std/test/compilation/CompilationScriptBase.sol +8 -0
  62. package/lib/forge-std/test/compilation/CompilationTest.sol +8 -0
  63. package/lib/forge-std/test/compilation/CompilationTestBase.sol +8 -0
  64. package/lib/forge-std/test/fixtures/broadcast.log.json +187 -0
  65. package/lib/forge-std/test/fixtures/config.toml +81 -0
  66. package/lib/forge-std/test/fixtures/test.json +8 -0
  67. package/lib/forge-std/test/fixtures/test.toml +6 -0
  68. package/lib/openzeppelin-contracts/.changeset/config.json +12 -0
  69. package/lib/openzeppelin-contracts/.codecov.yml +16 -0
  70. package/lib/openzeppelin-contracts/.editorconfig +21 -0
  71. package/lib/openzeppelin-contracts/.gitattributes +3 -0
  72. package/lib/openzeppelin-contracts/.github/CODEOWNERS +10 -0
  73. package/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/bug_report.md +21 -0
  74. package/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/config.yml +4 -0
  75. package/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/feature_request.md +14 -0
  76. package/lib/openzeppelin-contracts/.github/PULL_REQUEST_TEMPLATE.md +20 -0
  77. package/lib/openzeppelin-contracts/.github/actions/gas-compare/action.yml +51 -0
  78. package/lib/openzeppelin-contracts/.github/actions/setup/action.yml +22 -0
  79. package/lib/openzeppelin-contracts/.github/actions/storage-layout/action.yml +57 -0
  80. package/lib/openzeppelin-contracts/.github/workflows/actionlint.yml +18 -0
  81. package/lib/openzeppelin-contracts/.github/workflows/changeset.yml +28 -0
  82. package/lib/openzeppelin-contracts/.github/workflows/checks.yml +132 -0
  83. package/lib/openzeppelin-contracts/.github/workflows/docs.yml +19 -0
  84. package/lib/openzeppelin-contracts/.github/workflows/formal-verification.yml +88 -0
  85. package/lib/openzeppelin-contracts/.github/workflows/release-cycle.yml +214 -0
  86. package/lib/openzeppelin-contracts/.github/workflows/upgradeable.yml +34 -0
  87. package/lib/openzeppelin-contracts/.gitmodules +10 -0
  88. package/lib/openzeppelin-contracts/.husky/pre-commit +2 -0
  89. package/lib/openzeppelin-contracts/.mocharc.js +4 -0
  90. package/lib/openzeppelin-contracts/.prettierrc +15 -0
  91. package/lib/openzeppelin-contracts/.solcover.js +21 -0
  92. package/lib/openzeppelin-contracts/CHANGELOG.md +1355 -0
  93. package/lib/openzeppelin-contracts/CODE_OF_CONDUCT.md +73 -0
  94. package/lib/openzeppelin-contracts/CONTRIBUTING.md +36 -0
  95. package/lib/openzeppelin-contracts/FUNDING.json +10 -0
  96. package/lib/openzeppelin-contracts/GUIDELINES.md +170 -0
  97. package/lib/openzeppelin-contracts/LICENSE +22 -0
  98. package/lib/openzeppelin-contracts/README.md +106 -0
  99. package/lib/openzeppelin-contracts/RELEASING.md +45 -0
  100. package/lib/openzeppelin-contracts/SECURITY.md +43 -0
  101. package/lib/openzeppelin-contracts/audits/2017-03.md +292 -0
  102. package/lib/openzeppelin-contracts/audits/2018-10.pdf +0 -0
  103. package/lib/openzeppelin-contracts/audits/2022-10-Checkpoints.pdf +0 -0
  104. package/lib/openzeppelin-contracts/audits/2022-10-ERC4626.pdf +0 -0
  105. package/lib/openzeppelin-contracts/audits/2023-05-v4.9.pdf +0 -0
  106. package/lib/openzeppelin-contracts/audits/2023-10-v5.0.pdf +0 -0
  107. package/lib/openzeppelin-contracts/audits/2024-10-v5.1.pdf +0 -0
  108. package/lib/openzeppelin-contracts/audits/2024-12-v5.2.pdf +0 -0
  109. package/lib/openzeppelin-contracts/audits/2025-04-v5.3.pdf +0 -0
  110. package/lib/openzeppelin-contracts/audits/2025-07-v5.4.pdf +0 -0
  111. package/lib/openzeppelin-contracts/audits/README.md +21 -0
  112. package/lib/openzeppelin-contracts/certora/Makefile +54 -0
  113. package/lib/openzeppelin-contracts/certora/README.md +60 -0
  114. package/lib/openzeppelin-contracts/certora/diff/access_manager_AccessManager.sol.patch +97 -0
  115. package/lib/openzeppelin-contracts/certora/diff/account_extensions_draft-AccountERC7579.sol.patch +25 -0
  116. package/lib/openzeppelin-contracts/certora/diff/token_ERC721_ERC721.sol.patch +11 -0
  117. package/lib/openzeppelin-contracts/certora/harnesses/AccessControlDefaultAdminRulesHarness.sol +46 -0
  118. package/lib/openzeppelin-contracts/certora/harnesses/AccessControlHarness.sol +6 -0
  119. package/lib/openzeppelin-contracts/certora/harnesses/AccessManagedHarness.sol +36 -0
  120. package/lib/openzeppelin-contracts/certora/harnesses/AccessManagerHarness.sol +116 -0
  121. package/lib/openzeppelin-contracts/certora/harnesses/AccountHarness.sol +60 -0
  122. package/lib/openzeppelin-contracts/certora/harnesses/DoubleEndedQueueHarness.sol +58 -0
  123. package/lib/openzeppelin-contracts/certora/harnesses/ERC20FlashMintHarness.sol +36 -0
  124. package/lib/openzeppelin-contracts/certora/harnesses/ERC20PermitHarness.sol +16 -0
  125. package/lib/openzeppelin-contracts/certora/harnesses/ERC20WrapperHarness.sol +22 -0
  126. package/lib/openzeppelin-contracts/certora/harnesses/ERC3156FlashBorrowerHarness.sol +13 -0
  127. package/lib/openzeppelin-contracts/certora/harnesses/ERC721Harness.sol +37 -0
  128. package/lib/openzeppelin-contracts/certora/harnesses/ERC721ReceiverHarness.sol +11 -0
  129. package/lib/openzeppelin-contracts/certora/harnesses/EnumerableMapHarness.sol +55 -0
  130. package/lib/openzeppelin-contracts/certora/harnesses/EnumerableSetHarness.sol +35 -0
  131. package/lib/openzeppelin-contracts/certora/harnesses/InitializableHarness.sol +23 -0
  132. package/lib/openzeppelin-contracts/certora/harnesses/NoncesHarness.sol +14 -0
  133. package/lib/openzeppelin-contracts/certora/harnesses/Ownable2StepHarness.sol +10 -0
  134. package/lib/openzeppelin-contracts/certora/harnesses/OwnableHarness.sol +10 -0
  135. package/lib/openzeppelin-contracts/certora/harnesses/PausableHarness.sol +18 -0
  136. package/lib/openzeppelin-contracts/certora/harnesses/TimelockControllerHarness.sol +13 -0
  137. package/lib/openzeppelin-contracts/certora/reports/2021-10.pdf +0 -0
  138. package/lib/openzeppelin-contracts/certora/reports/2022-03.pdf +0 -0
  139. package/lib/openzeppelin-contracts/certora/reports/2022-05.pdf +0 -0
  140. package/lib/openzeppelin-contracts/certora/run.js +68 -0
  141. package/lib/openzeppelin-contracts/certora/specs/AccessControl.conf +8 -0
  142. package/lib/openzeppelin-contracts/certora/specs/AccessControl.spec +119 -0
  143. package/lib/openzeppelin-contracts/certora/specs/AccessControlDefaultAdminRules.conf +8 -0
  144. package/lib/openzeppelin-contracts/certora/specs/AccessControlDefaultAdminRules.spec +467 -0
  145. package/lib/openzeppelin-contracts/certora/specs/AccessManaged.conf +14 -0
  146. package/lib/openzeppelin-contracts/certora/specs/AccessManaged.spec +49 -0
  147. package/lib/openzeppelin-contracts/certora/specs/AccessManager.conf +10 -0
  148. package/lib/openzeppelin-contracts/certora/specs/AccessManager.spec +837 -0
  149. package/lib/openzeppelin-contracts/certora/specs/Account.conf +9 -0
  150. package/lib/openzeppelin-contracts/certora/specs/Account.spec +490 -0
  151. package/lib/openzeppelin-contracts/certora/specs/DoubleEndedQueue.conf +8 -0
  152. package/lib/openzeppelin-contracts/certora/specs/DoubleEndedQueue.spec +300 -0
  153. package/lib/openzeppelin-contracts/certora/specs/ERC20.conf +9 -0
  154. package/lib/openzeppelin-contracts/certora/specs/ERC20.spec +352 -0
  155. package/lib/openzeppelin-contracts/certora/specs/ERC20FlashMint.conf +10 -0
  156. package/lib/openzeppelin-contracts/certora/specs/ERC20FlashMint.spec +55 -0
  157. package/lib/openzeppelin-contracts/certora/specs/ERC20Wrapper.conf +13 -0
  158. package/lib/openzeppelin-contracts/certora/specs/ERC20Wrapper.spec +226 -0
  159. package/lib/openzeppelin-contracts/certora/specs/ERC721.conf +10 -0
  160. package/lib/openzeppelin-contracts/certora/specs/ERC721.spec +695 -0
  161. package/lib/openzeppelin-contracts/certora/specs/EnumerableMap.conf +8 -0
  162. package/lib/openzeppelin-contracts/certora/specs/EnumerableMap.spec +364 -0
  163. package/lib/openzeppelin-contracts/certora/specs/EnumerableSet.conf +8 -0
  164. package/lib/openzeppelin-contracts/certora/specs/EnumerableSet.spec +272 -0
  165. package/lib/openzeppelin-contracts/certora/specs/Initializable.conf +8 -0
  166. package/lib/openzeppelin-contracts/certora/specs/Initializable.spec +176 -0
  167. package/lib/openzeppelin-contracts/certora/specs/Nonces.conf +8 -0
  168. package/lib/openzeppelin-contracts/certora/specs/Nonces.spec +92 -0
  169. package/lib/openzeppelin-contracts/certora/specs/Ownable.conf +8 -0
  170. package/lib/openzeppelin-contracts/certora/specs/Ownable.spec +77 -0
  171. package/lib/openzeppelin-contracts/certora/specs/Ownable2Step.conf +8 -0
  172. package/lib/openzeppelin-contracts/certora/specs/Ownable2Step.spec +108 -0
  173. package/lib/openzeppelin-contracts/certora/specs/Pausable.conf +8 -0
  174. package/lib/openzeppelin-contracts/certora/specs/Pausable.spec +96 -0
  175. package/lib/openzeppelin-contracts/certora/specs/TimelockController.conf +10 -0
  176. package/lib/openzeppelin-contracts/certora/specs/TimelockController.spec +299 -0
  177. package/lib/openzeppelin-contracts/certora/specs/helpers/helpers.spec +13 -0
  178. package/lib/openzeppelin-contracts/certora/specs/methods/IAccessControl.spec +8 -0
  179. package/lib/openzeppelin-contracts/certora/specs/methods/IAccessControlDefaultAdminRules.spec +36 -0
  180. package/lib/openzeppelin-contracts/certora/specs/methods/IAccessManaged.spec +5 -0
  181. package/lib/openzeppelin-contracts/certora/specs/methods/IAccessManager.spec +33 -0
  182. package/lib/openzeppelin-contracts/certora/specs/methods/IAccount.spec +34 -0
  183. package/lib/openzeppelin-contracts/certora/specs/methods/IERC20.spec +11 -0
  184. package/lib/openzeppelin-contracts/certora/specs/methods/IERC2612.spec +5 -0
  185. package/lib/openzeppelin-contracts/certora/specs/methods/IERC3156FlashBorrower.spec +3 -0
  186. package/lib/openzeppelin-contracts/certora/specs/methods/IERC3156FlashLender.spec +5 -0
  187. package/lib/openzeppelin-contracts/certora/specs/methods/IERC5313.spec +3 -0
  188. package/lib/openzeppelin-contracts/certora/specs/methods/IERC721.spec +17 -0
  189. package/lib/openzeppelin-contracts/certora/specs/methods/IERC721Receiver.spec +3 -0
  190. package/lib/openzeppelin-contracts/certora/specs/methods/IOwnable.spec +5 -0
  191. package/lib/openzeppelin-contracts/certora/specs/methods/IOwnable2Step.spec +7 -0
  192. package/lib/openzeppelin-contracts/contracts/access/AccessControl.sol +207 -0
  193. package/lib/openzeppelin-contracts/contracts/access/IAccessControl.sol +98 -0
  194. package/lib/openzeppelin-contracts/contracts/access/Ownable.sol +100 -0
  195. package/lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol +67 -0
  196. package/lib/openzeppelin-contracts/contracts/access/README.adoc +45 -0
  197. package/lib/openzeppelin-contracts/contracts/access/extensions/AccessControlDefaultAdminRules.sol +372 -0
  198. package/lib/openzeppelin-contracts/contracts/access/extensions/AccessControlEnumerable.sol +81 -0
  199. package/lib/openzeppelin-contracts/contracts/access/extensions/IAccessControlDefaultAdminRules.sol +192 -0
  200. package/lib/openzeppelin-contracts/contracts/access/extensions/IAccessControlEnumerable.sol +31 -0
  201. package/lib/openzeppelin-contracts/contracts/access/manager/AccessManaged.sol +112 -0
  202. package/lib/openzeppelin-contracts/contracts/access/manager/AccessManager.sol +741 -0
  203. package/lib/openzeppelin-contracts/contracts/access/manager/AuthorityUtils.sol +36 -0
  204. package/lib/openzeppelin-contracts/contracts/access/manager/IAccessManaged.sol +32 -0
  205. package/lib/openzeppelin-contracts/contracts/access/manager/IAccessManager.sol +399 -0
  206. package/lib/openzeppelin-contracts/contracts/access/manager/IAuthority.sol +14 -0
  207. package/lib/openzeppelin-contracts/contracts/account/Account.sol +151 -0
  208. package/lib/openzeppelin-contracts/contracts/account/README.adoc +30 -0
  209. package/lib/openzeppelin-contracts/contracts/account/extensions/draft-AccountERC7579.sol +419 -0
  210. package/lib/openzeppelin-contracts/contracts/account/extensions/draft-AccountERC7579Hooked.sol +107 -0
  211. package/lib/openzeppelin-contracts/contracts/account/extensions/draft-ERC7821.sol +70 -0
  212. package/lib/openzeppelin-contracts/contracts/account/utils/EIP7702Utils.sol +21 -0
  213. package/lib/openzeppelin-contracts/contracts/account/utils/draft-ERC4337Utils.sol +159 -0
  214. package/lib/openzeppelin-contracts/contracts/account/utils/draft-ERC7579Utils.sol +280 -0
  215. package/lib/openzeppelin-contracts/contracts/crosschain/ERC7786Recipient.sol +70 -0
  216. package/lib/openzeppelin-contracts/contracts/crosschain/README.adoc +12 -0
  217. package/lib/openzeppelin-contracts/contracts/finance/README.adoc +14 -0
  218. package/lib/openzeppelin-contracts/contracts/finance/VestingWallet.sol +159 -0
  219. package/lib/openzeppelin-contracts/contracts/finance/VestingWalletCliff.sol +54 -0
  220. package/lib/openzeppelin-contracts/contracts/governance/Governor.sol +818 -0
  221. package/lib/openzeppelin-contracts/contracts/governance/IGovernor.sol +454 -0
  222. package/lib/openzeppelin-contracts/contracts/governance/README.adoc +197 -0
  223. package/lib/openzeppelin-contracts/contracts/governance/TimelockController.sol +471 -0
  224. package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorCountingFractional.sol +190 -0
  225. package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorCountingOverridable.sol +222 -0
  226. package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorCountingSimple.sol +96 -0
  227. package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorNoncesKeyed.sol +91 -0
  228. package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorPreventLateQuorum.sol +92 -0
  229. package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorProposalGuardian.sol +59 -0
  230. package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorSequentialProposalId.sol +75 -0
  231. package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorSettings.sol +106 -0
  232. package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorStorage.sol +125 -0
  233. package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorSuperQuorum.sol +59 -0
  234. package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorTimelockAccess.sol +346 -0
  235. package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorTimelockCompound.sol +165 -0
  236. package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorTimelockControl.sol +167 -0
  237. package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorVotes.sol +63 -0
  238. package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorVotesQuorumFraction.sol +113 -0
  239. package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorVotesSuperQuorumFraction.sol +135 -0
  240. package/lib/openzeppelin-contracts/contracts/governance/utils/IVotes.sol +60 -0
  241. package/lib/openzeppelin-contracts/contracts/governance/utils/Votes.sol +252 -0
  242. package/lib/openzeppelin-contracts/contracts/governance/utils/VotesExtended.sol +84 -0
  243. package/lib/openzeppelin-contracts/contracts/interfaces/IERC1155.sol +6 -0
  244. package/lib/openzeppelin-contracts/contracts/interfaces/IERC1155MetadataURI.sol +6 -0
  245. package/lib/openzeppelin-contracts/contracts/interfaces/IERC1155Receiver.sol +6 -0
  246. package/lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol +17 -0
  247. package/lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol +86 -0
  248. package/lib/openzeppelin-contracts/contracts/interfaces/IERC1363Receiver.sol +32 -0
  249. package/lib/openzeppelin-contracts/contracts/interfaces/IERC1363Spender.sol +26 -0
  250. package/lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol +6 -0
  251. package/lib/openzeppelin-contracts/contracts/interfaces/IERC1820Implementer.sol +20 -0
  252. package/lib/openzeppelin-contracts/contracts/interfaces/IERC1820Registry.sol +112 -0
  253. package/lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol +24 -0
  254. package/lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol +6 -0
  255. package/lib/openzeppelin-contracts/contracts/interfaces/IERC20Metadata.sol +6 -0
  256. package/lib/openzeppelin-contracts/contracts/interfaces/IERC2309.sol +19 -0
  257. package/lib/openzeppelin-contracts/contracts/interfaces/IERC2612.sol +8 -0
  258. package/lib/openzeppelin-contracts/contracts/interfaces/IERC2981.sol +26 -0
  259. package/lib/openzeppelin-contracts/contracts/interfaces/IERC3156.sol +7 -0
  260. package/lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol +27 -0
  261. package/lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol +41 -0
  262. package/lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol +230 -0
  263. package/lib/openzeppelin-contracts/contracts/interfaces/IERC4906.sol +20 -0
  264. package/lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol +28 -0
  265. package/lib/openzeppelin-contracts/contracts/interfaces/IERC5313.sol +16 -0
  266. package/lib/openzeppelin-contracts/contracts/interfaces/IERC5805.sol +9 -0
  267. package/lib/openzeppelin-contracts/contracts/interfaces/IERC6372.sol +17 -0
  268. package/lib/openzeppelin-contracts/contracts/interfaces/IERC6909.sol +125 -0
  269. package/lib/openzeppelin-contracts/contracts/interfaces/IERC721.sol +6 -0
  270. package/lib/openzeppelin-contracts/contracts/interfaces/IERC721Enumerable.sol +6 -0
  271. package/lib/openzeppelin-contracts/contracts/interfaces/IERC721Metadata.sol +6 -0
  272. package/lib/openzeppelin-contracts/contracts/interfaces/IERC721Receiver.sol +6 -0
  273. package/lib/openzeppelin-contracts/contracts/interfaces/IERC7751.sol +12 -0
  274. package/lib/openzeppelin-contracts/contracts/interfaces/IERC777.sol +200 -0
  275. package/lib/openzeppelin-contracts/contracts/interfaces/IERC777Recipient.sol +35 -0
  276. package/lib/openzeppelin-contracts/contracts/interfaces/IERC777Sender.sol +35 -0
  277. package/lib/openzeppelin-contracts/contracts/interfaces/IERC7913.sol +18 -0
  278. package/lib/openzeppelin-contracts/contracts/interfaces/README.adoc +111 -0
  279. package/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol +20 -0
  280. package/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC4337.sol +253 -0
  281. package/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol +162 -0
  282. package/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC7579.sol +227 -0
  283. package/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC7674.sol +17 -0
  284. package/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC7786.sol +64 -0
  285. package/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC7802.sol +32 -0
  286. package/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC7821.sol +44 -0
  287. package/lib/openzeppelin-contracts/contracts/metatx/ERC2771Context.sol +90 -0
  288. package/lib/openzeppelin-contracts/contracts/metatx/ERC2771Forwarder.sol +372 -0
  289. package/lib/openzeppelin-contracts/contracts/metatx/README.adoc +17 -0
  290. package/lib/openzeppelin-contracts/contracts/mocks/AccessManagedTarget.sol +34 -0
  291. package/lib/openzeppelin-contracts/contracts/mocks/AccessManagerMock.sol +20 -0
  292. package/lib/openzeppelin-contracts/contracts/mocks/ArraysMock.sol +171 -0
  293. package/lib/openzeppelin-contracts/contracts/mocks/AuthorityMock.sol +69 -0
  294. package/lib/openzeppelin-contracts/contracts/mocks/Base64Dirty.sol +19 -0
  295. package/lib/openzeppelin-contracts/contracts/mocks/BatchCaller.sol +20 -0
  296. package/lib/openzeppelin-contracts/contracts/mocks/CallReceiverMock.sol +106 -0
  297. package/lib/openzeppelin-contracts/contracts/mocks/ConstructorMock.sol +34 -0
  298. package/lib/openzeppelin-contracts/contracts/mocks/ContextMock.sol +35 -0
  299. package/lib/openzeppelin-contracts/contracts/mocks/DummyImplementation.sol +65 -0
  300. package/lib/openzeppelin-contracts/contracts/mocks/EIP712Verifier.sol +16 -0
  301. package/lib/openzeppelin-contracts/contracts/mocks/ERC1271WalletMock.sol +24 -0
  302. package/lib/openzeppelin-contracts/contracts/mocks/ERC165Mock.sol +100 -0
  303. package/lib/openzeppelin-contracts/contracts/mocks/ERC2771ContextMock.sol +28 -0
  304. package/lib/openzeppelin-contracts/contracts/mocks/ERC3156FlashBorrowerMock.sol +53 -0
  305. package/lib/openzeppelin-contracts/contracts/mocks/EtherReceiverMock.sol +17 -0
  306. package/lib/openzeppelin-contracts/contracts/mocks/InitializableMock.sol +130 -0
  307. package/lib/openzeppelin-contracts/contracts/mocks/MerkleProofCustomHashMock.sol +62 -0
  308. package/lib/openzeppelin-contracts/contracts/mocks/MerkleTreeMock.sol +52 -0
  309. package/lib/openzeppelin-contracts/contracts/mocks/MulticallHelper.sol +23 -0
  310. package/lib/openzeppelin-contracts/contracts/mocks/MultipleInheritanceInitializableMocks.sol +131 -0
  311. package/lib/openzeppelin-contracts/contracts/mocks/PausableMock.sol +31 -0
  312. package/lib/openzeppelin-contracts/contracts/mocks/ReentrancyAttack.sol +17 -0
  313. package/lib/openzeppelin-contracts/contracts/mocks/ReentrancyMock.sol +59 -0
  314. package/lib/openzeppelin-contracts/contracts/mocks/ReentrancyTransientMock.sol +59 -0
  315. package/lib/openzeppelin-contracts/contracts/mocks/RegressionImplementation.sol +61 -0
  316. package/lib/openzeppelin-contracts/contracts/mocks/SingleInheritanceInitializableMocks.sol +49 -0
  317. package/lib/openzeppelin-contracts/contracts/mocks/Stateless.sol +61 -0
  318. package/lib/openzeppelin-contracts/contracts/mocks/StorageSlotMock.sol +87 -0
  319. package/lib/openzeppelin-contracts/contracts/mocks/TimelockReentrant.sol +26 -0
  320. package/lib/openzeppelin-contracts/contracts/mocks/TransientSlotMock.sol +61 -0
  321. package/lib/openzeppelin-contracts/contracts/mocks/UpgradeableBeaconMock.sol +27 -0
  322. package/lib/openzeppelin-contracts/contracts/mocks/VotesExtendedMock.sol +42 -0
  323. package/lib/openzeppelin-contracts/contracts/mocks/VotesMock.sol +42 -0
  324. package/lib/openzeppelin-contracts/contracts/mocks/account/AccountMock.sol +181 -0
  325. package/lib/openzeppelin-contracts/contracts/mocks/account/modules/ERC7579Mock.sol +122 -0
  326. package/lib/openzeppelin-contracts/contracts/mocks/account/utils/ERC7579UtilsMock.sol +23 -0
  327. package/lib/openzeppelin-contracts/contracts/mocks/compound/CompTimelock.sol +174 -0
  328. package/lib/openzeppelin-contracts/contracts/mocks/crosschain/ERC7786GatewayMock.sol +56 -0
  329. package/lib/openzeppelin-contracts/contracts/mocks/crosschain/ERC7786RecipientMock.sol +31 -0
  330. package/lib/openzeppelin-contracts/contracts/mocks/docs/ERC20WithAutoMinerReward.sol +22 -0
  331. package/lib/openzeppelin-contracts/contracts/mocks/docs/ERC4626Fees.sol +109 -0
  332. package/lib/openzeppelin-contracts/contracts/mocks/docs/MyNFT.sol +9 -0
  333. package/lib/openzeppelin-contracts/contracts/mocks/docs/access-control/AccessControlERC20MintBase.sol +25 -0
  334. package/lib/openzeppelin-contracts/contracts/mocks/docs/access-control/AccessControlERC20MintMissing.sol +24 -0
  335. package/lib/openzeppelin-contracts/contracts/mocks/docs/access-control/AccessControlERC20MintOnlyRole.sol +23 -0
  336. package/lib/openzeppelin-contracts/contracts/mocks/docs/access-control/AccessControlModified.sol +14 -0
  337. package/lib/openzeppelin-contracts/contracts/mocks/docs/access-control/AccessManagedERC20MintBase.sol +16 -0
  338. package/lib/openzeppelin-contracts/contracts/mocks/docs/access-control/MyContractOwnable.sol +17 -0
  339. package/lib/openzeppelin-contracts/contracts/mocks/docs/account/MyAccountERC7702.sol +20 -0
  340. package/lib/openzeppelin-contracts/contracts/mocks/docs/account/MyFactoryAccount.sol +37 -0
  341. package/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyGovernor.sol +80 -0
  342. package/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyToken.sol +21 -0
  343. package/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyTokenTimestampBased.sol +32 -0
  344. package/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyTokenWrapped.sol +28 -0
  345. package/lib/openzeppelin-contracts/contracts/mocks/docs/token/ERC1155/GameItems.sol +21 -0
  346. package/lib/openzeppelin-contracts/contracts/mocks/docs/token/ERC1155/MyERC115HolderContract.sol +7 -0
  347. package/lib/openzeppelin-contracts/contracts/mocks/docs/token/ERC20/GLDToken.sol +11 -0
  348. package/lib/openzeppelin-contracts/contracts/mocks/docs/token/ERC6909/ERC6909GameItems.sol +26 -0
  349. package/lib/openzeppelin-contracts/contracts/mocks/docs/token/ERC721/GameItem.sol +19 -0
  350. package/lib/openzeppelin-contracts/contracts/mocks/docs/utilities/Base64NFT.sol +27 -0
  351. package/lib/openzeppelin-contracts/contracts/mocks/docs/utilities/Multicall.sol +15 -0
  352. package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorCountingOverridableMock.sol +18 -0
  353. package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorFractionalMock.sol +14 -0
  354. package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorMock.sol +14 -0
  355. package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorNoncesKeyedMock.sol +44 -0
  356. package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorPreventLateQuorumMock.sol +40 -0
  357. package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorProposalGuardianMock.sol +27 -0
  358. package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorSequentialProposalIdMock.sol +39 -0
  359. package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorStorageMock.sol +79 -0
  360. package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorSuperQuorumMock.sol +95 -0
  361. package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorTimelockAccessMock.sol +70 -0
  362. package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorTimelockCompoundMock.sol +69 -0
  363. package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorTimelockControlMock.sol +69 -0
  364. package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorVoteMock.sol +20 -0
  365. package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorVotesSuperQuorumFractionMock.sol +37 -0
  366. package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorWithParamsMock.sol +51 -0
  367. package/lib/openzeppelin-contracts/contracts/mocks/proxy/BadBeacon.sol +11 -0
  368. package/lib/openzeppelin-contracts/contracts/mocks/proxy/ClashingImplementation.sol +19 -0
  369. package/lib/openzeppelin-contracts/contracts/mocks/proxy/UUPSUpgradeableMock.sol +35 -0
  370. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC1155ReceiverMock.sol +74 -0
  371. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC1363ForceApproveMock.sol +13 -0
  372. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC1363NoReturnMock.sol +33 -0
  373. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC1363ReceiverMock.sol +52 -0
  374. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC1363ReturnFalseMock.sol +34 -0
  375. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC1363SpenderMock.sol +47 -0
  376. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ApprovalMock.sol +10 -0
  377. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20BridgeableMock.sol +26 -0
  378. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20DecimalsMock.sol +17 -0
  379. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ExcessDecimalsMock.sol +9 -0
  380. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20FlashMintMock.sol +26 -0
  381. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ForceApproveMock.sol +13 -0
  382. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20GetterHelper.sol +38 -0
  383. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20Mock.sol +16 -0
  384. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20MulticallMock.sol +8 -0
  385. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20NoReturnMock.sol +30 -0
  386. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20Reentrant.sol +39 -0
  387. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ReturnFalseMock.sol +19 -0
  388. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20VotesAdditionalCheckpointsMock.sol +31 -0
  389. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20VotesLegacyMock.sol +253 -0
  390. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20VotesTimestampMock.sol +29 -0
  391. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC4626LimitsMock.sol +23 -0
  392. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC4626Mock.sol +17 -0
  393. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC4626OffsetMock.sol +17 -0
  394. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC4646FeesMock.sol +40 -0
  395. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC721ConsecutiveEnumerableMock.sol +42 -0
  396. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC721ConsecutiveMock.sol +61 -0
  397. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC721ReceiverMock.sol +47 -0
  398. package/lib/openzeppelin-contracts/contracts/mocks/token/ERC721URIStorageMock.sol +17 -0
  399. package/lib/openzeppelin-contracts/contracts/mocks/utils/cryptography/ERC7739Mock.sol +12 -0
  400. package/lib/openzeppelin-contracts/contracts/package.json +32 -0
  401. package/lib/openzeppelin-contracts/contracts/proxy/Clones.sol +294 -0
  402. package/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol +40 -0
  403. package/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol +177 -0
  404. package/lib/openzeppelin-contracts/contracts/proxy/Proxy.sol +69 -0
  405. package/lib/openzeppelin-contracts/contracts/proxy/README.adoc +87 -0
  406. package/lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol +57 -0
  407. package/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol +16 -0
  408. package/lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol +70 -0
  409. package/lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol +45 -0
  410. package/lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol +118 -0
  411. package/lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol +238 -0
  412. package/lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol +148 -0
  413. package/lib/openzeppelin-contracts/contracts/token/ERC1155/ERC1155.sol +389 -0
  414. package/lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol +123 -0
  415. package/lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol +59 -0
  416. package/lib/openzeppelin-contracts/contracts/token/ERC1155/README.adoc +43 -0
  417. package/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155Burnable.sol +28 -0
  418. package/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155Pausable.sol +38 -0
  419. package/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155Supply.sol +88 -0
  420. package/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155URIStorage.sol +61 -0
  421. package/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol +20 -0
  422. package/lib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Holder.sol +42 -0
  423. package/lib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Utils.sol +88 -0
  424. package/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol +305 -0
  425. package/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol +79 -0
  426. package/lib/openzeppelin-contracts/contracts/token/ERC20/README.adoc +78 -0
  427. package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC1363.sol +135 -0
  428. package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol +39 -0
  429. package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Capped.sol +54 -0
  430. package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20FlashMint.sol +134 -0
  431. package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Pausable.sol +33 -0
  432. package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Permit.sol +77 -0
  433. package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Votes.sol +83 -0
  434. package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Wrapper.sol +89 -0
  435. package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC4626.sol +305 -0
  436. package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol +26 -0
  437. package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol +90 -0
  438. package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-ERC20Bridgeable.sol +51 -0
  439. package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-ERC20TemporaryApproval.sol +119 -0
  440. package/lib/openzeppelin-contracts/contracts/token/ERC20/utils/ERC1363Utils.sol +95 -0
  441. package/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol +280 -0
  442. package/lib/openzeppelin-contracts/contracts/token/ERC6909/ERC6909.sol +224 -0
  443. package/lib/openzeppelin-contracts/contracts/token/ERC6909/README.adoc +27 -0
  444. package/lib/openzeppelin-contracts/contracts/token/ERC6909/extensions/ERC6909ContentURI.sol +53 -0
  445. package/lib/openzeppelin-contracts/contracts/token/ERC6909/extensions/ERC6909Metadata.sol +77 -0
  446. package/lib/openzeppelin-contracts/contracts/token/ERC6909/extensions/ERC6909TokenSupply.sol +35 -0
  447. package/lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol +430 -0
  448. package/lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol +135 -0
  449. package/lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol +28 -0
  450. package/lib/openzeppelin-contracts/contracts/token/ERC721/README.adoc +69 -0
  451. package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Burnable.sol +26 -0
  452. package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Consecutive.sol +176 -0
  453. package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Enumerable.sol +164 -0
  454. package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Pausable.sol +37 -0
  455. package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Royalty.sol +26 -0
  456. package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721URIStorage.sol +58 -0
  457. package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Votes.sol +47 -0
  458. package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Wrapper.sol +102 -0
  459. package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol +29 -0
  460. package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol +27 -0
  461. package/lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol +26 -0
  462. package/lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Utils.sol +50 -0
  463. package/lib/openzeppelin-contracts/contracts/token/common/ERC2981.sol +139 -0
  464. package/lib/openzeppelin-contracts/contracts/token/common/README.adoc +10 -0
  465. package/lib/openzeppelin-contracts/contracts/utils/Address.sol +167 -0
  466. package/lib/openzeppelin-contracts/contracts/utils/Arrays.sol +735 -0
  467. package/lib/openzeppelin-contracts/contracts/utils/Base58.sol +240 -0
  468. package/lib/openzeppelin-contracts/contracts/utils/Base64.sol +234 -0
  469. package/lib/openzeppelin-contracts/contracts/utils/Blockhash.sol +54 -0
  470. package/lib/openzeppelin-contracts/contracts/utils/Bytes.sol +247 -0
  471. package/lib/openzeppelin-contracts/contracts/utils/CAIP10.sol +54 -0
  472. package/lib/openzeppelin-contracts/contracts/utils/CAIP2.sol +51 -0
  473. package/lib/openzeppelin-contracts/contracts/utils/Calldata.sol +25 -0
  474. package/lib/openzeppelin-contracts/contracts/utils/Comparators.sol +19 -0
  475. package/lib/openzeppelin-contracts/contracts/utils/Context.sol +28 -0
  476. package/lib/openzeppelin-contracts/contracts/utils/Create2.sol +91 -0
  477. package/lib/openzeppelin-contracts/contracts/utils/Errors.sol +34 -0
  478. package/lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol +127 -0
  479. package/lib/openzeppelin-contracts/contracts/utils/Memory.sol +135 -0
  480. package/lib/openzeppelin-contracts/contracts/utils/Multicall.sol +37 -0
  481. package/lib/openzeppelin-contracts/contracts/utils/Nonces.sol +46 -0
  482. package/lib/openzeppelin-contracts/contracts/utils/NoncesKeyed.sol +74 -0
  483. package/lib/openzeppelin-contracts/contracts/utils/Packing.sol +1656 -0
  484. package/lib/openzeppelin-contracts/contracts/utils/Panic.sol +57 -0
  485. package/lib/openzeppelin-contracts/contracts/utils/Pausable.sol +112 -0
  486. package/lib/openzeppelin-contracts/contracts/utils/README.adoc +160 -0
  487. package/lib/openzeppelin-contracts/contracts/utils/RLP.sol +382 -0
  488. package/lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol +119 -0
  489. package/lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol +84 -0
  490. package/lib/openzeppelin-contracts/contracts/utils/RelayedCall.sol +133 -0
  491. package/lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol +122 -0
  492. package/lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol +155 -0
  493. package/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol +143 -0
  494. package/lib/openzeppelin-contracts/contracts/utils/Strings.sol +508 -0
  495. package/lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol +183 -0
  496. package/lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol +284 -0
  497. package/lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol +160 -0
  498. package/lib/openzeppelin-contracts/contracts/utils/cryptography/Hashes.sol +31 -0
  499. package/lib/openzeppelin-contracts/contracts/utils/cryptography/MerkleProof.sol +514 -0
  500. package/lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol +99 -0
  501. package/lib/openzeppelin-contracts/contracts/utils/cryptography/P256.sol +408 -0
  502. package/lib/openzeppelin-contracts/contracts/utils/cryptography/README.adoc +73 -0
  503. package/lib/openzeppelin-contracts/contracts/utils/cryptography/RSA.sol +154 -0
  504. package/lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol +164 -0
  505. package/lib/openzeppelin-contracts/contracts/utils/cryptography/WebAuthn.sol +261 -0
  506. package/lib/openzeppelin-contracts/contracts/utils/cryptography/draft-ERC7739Utils.sol +208 -0
  507. package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/AbstractSigner.sol +23 -0
  508. package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/MultiSignerERC7913.sol +252 -0
  509. package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/MultiSignerERC7913Weighted.sol +208 -0
  510. package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/SignerECDSA.sol +56 -0
  511. package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/SignerEIP7702.sol +25 -0
  512. package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/SignerERC7913.sol +63 -0
  513. package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/SignerP256.sol +64 -0
  514. package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/SignerRSA.sol +65 -0
  515. package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/SignerWebAuthn.sol +51 -0
  516. package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/draft-ERC7739.sol +98 -0
  517. package/lib/openzeppelin-contracts/contracts/utils/cryptography/verifiers/ERC7913P256Verifier.sol +29 -0
  518. package/lib/openzeppelin-contracts/contracts/utils/cryptography/verifiers/ERC7913RSAVerifier.sol +23 -0
  519. package/lib/openzeppelin-contracts/contracts/utils/cryptography/verifiers/ERC7913WebAuthnVerifier.sol +35 -0
  520. package/lib/openzeppelin-contracts/contracts/utils/draft-InteroperableAddress.sol +235 -0
  521. package/lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol +25 -0
  522. package/lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol +142 -0
  523. package/lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol +25 -0
  524. package/lib/openzeppelin-contracts/contracts/utils/math/Math.sol +756 -0
  525. package/lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol +1162 -0
  526. package/lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol +68 -0
  527. package/lib/openzeppelin-contracts/contracts/utils/structs/Accumulators.sol +130 -0
  528. package/lib/openzeppelin-contracts/contracts/utils/structs/BitMaps.sol +60 -0
  529. package/lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol +833 -0
  530. package/lib/openzeppelin-contracts/contracts/utils/structs/CircularBuffer.sol +141 -0
  531. package/lib/openzeppelin-contracts/contracts/utils/structs/DoubleEndedQueue.sol +156 -0
  532. package/lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol +1319 -0
  533. package/lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol +792 -0
  534. package/lib/openzeppelin-contracts/contracts/utils/structs/Heap.sol +256 -0
  535. package/lib/openzeppelin-contracts/contracts/utils/structs/MerkleTree.sol +267 -0
  536. package/lib/openzeppelin-contracts/contracts/utils/types/Time.sol +133 -0
  537. package/lib/openzeppelin-contracts/contracts/vendor/compound/ICompoundTimelock.sol +86 -0
  538. package/lib/openzeppelin-contracts/contracts/vendor/compound/LICENSE +11 -0
  539. package/lib/openzeppelin-contracts/docs/README.md +16 -0
  540. package/lib/openzeppelin-contracts/docs/antora.yml +7 -0
  541. package/lib/openzeppelin-contracts/docs/config.js +21 -0
  542. package/lib/openzeppelin-contracts/docs/modules/ROOT/images/access-control-multiple.svg +97 -0
  543. package/lib/openzeppelin-contracts/docs/modules/ROOT/images/access-manager-functions.svg +47 -0
  544. package/lib/openzeppelin-contracts/docs/modules/ROOT/images/access-manager.svg +99 -0
  545. package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3a.png +0 -0
  546. package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3b.png +0 -0
  547. package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-6.png +0 -0
  548. package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack.png +0 -0
  549. package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-deposit.png +0 -0
  550. package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-mint.png +0 -0
  551. package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-linear.png +0 -0
  552. package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglog.png +0 -0
  553. package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglogext.png +0 -0
  554. package/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-exec.png +0 -0
  555. package/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-vote.png +0 -0
  556. package/lib/openzeppelin-contracts/docs/modules/ROOT/nav.adoc +29 -0
  557. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/access-control.adoc +295 -0
  558. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/account-abstraction.adoc +100 -0
  559. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/accounts.adoc +354 -0
  560. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/backwards-compatibility.adoc +50 -0
  561. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/eoa-delegation.adoc +143 -0
  562. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc1155.adoc +118 -0
  563. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc20-supply.adoc +71 -0
  564. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc20.adoc +67 -0
  565. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc4626.adoc +214 -0
  566. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc6909.adoc +47 -0
  567. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc721.adoc +58 -0
  568. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/extending-contracts.adoc +51 -0
  569. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/faq.adoc +13 -0
  570. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/governance.adoc +239 -0
  571. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/index.adoc +70 -0
  572. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/multisig.adoc +306 -0
  573. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/tokens.adoc +31 -0
  574. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/upgradeable.adoc +77 -0
  575. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/utilities.adoc +634 -0
  576. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/wizard.adoc +15 -0
  577. package/lib/openzeppelin-contracts/docs/templates/contract.hbs +141 -0
  578. package/lib/openzeppelin-contracts/docs/templates/helpers.js +46 -0
  579. package/lib/openzeppelin-contracts/docs/templates/page.hbs +4 -0
  580. package/lib/openzeppelin-contracts/docs/templates/properties.js +88 -0
  581. package/lib/openzeppelin-contracts/eslint.config.mjs +26 -0
  582. package/lib/openzeppelin-contracts/foundry.toml +20 -0
  583. package/lib/openzeppelin-contracts/fv-requirements.txt +4 -0
  584. package/lib/openzeppelin-contracts/hardhat/async-test-sanity.js +10 -0
  585. package/lib/openzeppelin-contracts/hardhat/env-artifacts.js +29 -0
  586. package/lib/openzeppelin-contracts/hardhat/ignore-unreachable-warnings.js +45 -0
  587. package/lib/openzeppelin-contracts/hardhat/remappings.js +18 -0
  588. package/lib/openzeppelin-contracts/hardhat/skip-foundry-tests.js +6 -0
  589. package/lib/openzeppelin-contracts/hardhat/task-test-get-files.js +25 -0
  590. package/lib/openzeppelin-contracts/hardhat.config.js +125 -0
  591. package/lib/openzeppelin-contracts/lib/erc4626-tests/ERC4626.prop.sol +404 -0
  592. package/lib/openzeppelin-contracts/lib/erc4626-tests/ERC4626.test.sol +356 -0
  593. package/lib/openzeppelin-contracts/lib/erc4626-tests/LICENSE +661 -0
  594. package/lib/openzeppelin-contracts/lib/erc4626-tests/README.md +116 -0
  595. package/lib/openzeppelin-contracts/lib/forge-std/.gitattributes +1 -0
  596. package/lib/openzeppelin-contracts/lib/forge-std/.github/workflows/ci.yml +128 -0
  597. package/lib/openzeppelin-contracts/lib/forge-std/.github/workflows/sync.yml +31 -0
  598. package/lib/openzeppelin-contracts/lib/forge-std/CONTRIBUTING.md +193 -0
  599. package/lib/openzeppelin-contracts/lib/forge-std/LICENSE-APACHE +203 -0
  600. package/lib/openzeppelin-contracts/lib/forge-std/LICENSE-MIT +25 -0
  601. package/lib/openzeppelin-contracts/lib/forge-std/README.md +266 -0
  602. package/lib/openzeppelin-contracts/lib/forge-std/foundry.toml +23 -0
  603. package/lib/openzeppelin-contracts/lib/forge-std/package.json +16 -0
  604. package/lib/openzeppelin-contracts/lib/forge-std/scripts/vm.py +646 -0
  605. package/lib/openzeppelin-contracts/lib/forge-std/src/Base.sol +35 -0
  606. package/lib/openzeppelin-contracts/lib/forge-std/src/Script.sol +27 -0
  607. package/lib/openzeppelin-contracts/lib/forge-std/src/StdAssertions.sol +669 -0
  608. package/lib/openzeppelin-contracts/lib/forge-std/src/StdChains.sol +287 -0
  609. package/lib/openzeppelin-contracts/lib/forge-std/src/StdCheats.sol +829 -0
  610. package/lib/openzeppelin-contracts/lib/forge-std/src/StdError.sol +15 -0
  611. package/lib/openzeppelin-contracts/lib/forge-std/src/StdInvariant.sol +122 -0
  612. package/lib/openzeppelin-contracts/lib/forge-std/src/StdJson.sol +283 -0
  613. package/lib/openzeppelin-contracts/lib/forge-std/src/StdMath.sol +43 -0
  614. package/lib/openzeppelin-contracts/lib/forge-std/src/StdStorage.sol +473 -0
  615. package/lib/openzeppelin-contracts/lib/forge-std/src/StdStyle.sol +333 -0
  616. package/lib/openzeppelin-contracts/lib/forge-std/src/StdToml.sol +283 -0
  617. package/lib/openzeppelin-contracts/lib/forge-std/src/StdUtils.sol +209 -0
  618. package/lib/openzeppelin-contracts/lib/forge-std/src/Test.sol +33 -0
  619. package/lib/openzeppelin-contracts/lib/forge-std/src/Vm.sol +2263 -0
  620. package/lib/openzeppelin-contracts/lib/forge-std/src/console.sol +1560 -0
  621. package/lib/openzeppelin-contracts/lib/forge-std/src/console2.sol +4 -0
  622. package/lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IERC1155.sol +105 -0
  623. package/lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IERC165.sol +12 -0
  624. package/lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IERC20.sol +43 -0
  625. package/lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IERC4626.sol +190 -0
  626. package/lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IERC721.sol +164 -0
  627. package/lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IMulticall3.sol +73 -0
  628. package/lib/openzeppelin-contracts/lib/forge-std/src/safeconsole.sol +13937 -0
  629. package/lib/openzeppelin-contracts/lib/forge-std/test/StdAssertions.t.sol +141 -0
  630. package/lib/openzeppelin-contracts/lib/forge-std/test/StdChains.t.sol +227 -0
  631. package/lib/openzeppelin-contracts/lib/forge-std/test/StdCheats.t.sol +618 -0
  632. package/lib/openzeppelin-contracts/lib/forge-std/test/StdError.t.sol +120 -0
  633. package/lib/openzeppelin-contracts/lib/forge-std/test/StdJson.t.sol +49 -0
  634. package/lib/openzeppelin-contracts/lib/forge-std/test/StdMath.t.sol +202 -0
  635. package/lib/openzeppelin-contracts/lib/forge-std/test/StdStorage.t.sol +488 -0
  636. package/lib/openzeppelin-contracts/lib/forge-std/test/StdStyle.t.sol +110 -0
  637. package/lib/openzeppelin-contracts/lib/forge-std/test/StdToml.t.sol +49 -0
  638. package/lib/openzeppelin-contracts/lib/forge-std/test/StdUtils.t.sol +342 -0
  639. package/lib/openzeppelin-contracts/lib/forge-std/test/Vm.t.sol +18 -0
  640. package/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationScript.sol +10 -0
  641. package/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationScriptBase.sol +10 -0
  642. package/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationTest.sol +10 -0
  643. package/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationTestBase.sol +10 -0
  644. package/lib/openzeppelin-contracts/lib/forge-std/test/fixtures/broadcast.log.json +187 -0
  645. package/lib/openzeppelin-contracts/lib/forge-std/test/fixtures/test.json +8 -0
  646. package/lib/openzeppelin-contracts/lib/forge-std/test/fixtures/test.toml +6 -0
  647. package/lib/openzeppelin-contracts/lib/halmos-cheatcodes/LICENSE +661 -0
  648. package/lib/openzeppelin-contracts/lib/halmos-cheatcodes/README.md +97 -0
  649. package/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/SVM.sol +49 -0
  650. package/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/SymTest.sol +11 -0
  651. package/lib/openzeppelin-contracts/logo.svg +15 -0
  652. package/lib/openzeppelin-contracts/netlify.toml +3 -0
  653. package/lib/openzeppelin-contracts/package-lock.json +11090 -0
  654. package/lib/openzeppelin-contracts/package.json +107 -0
  655. package/lib/openzeppelin-contracts/remappings.txt +1 -0
  656. package/lib/openzeppelin-contracts/renovate.json +4 -0
  657. package/lib/openzeppelin-contracts/scripts/checks/compare-layout.js +28 -0
  658. package/lib/openzeppelin-contracts/scripts/checks/compareGasReports.js +249 -0
  659. package/lib/openzeppelin-contracts/scripts/checks/coverage.sh +24 -0
  660. package/lib/openzeppelin-contracts/scripts/checks/extract-layout.js +39 -0
  661. package/lib/openzeppelin-contracts/scripts/checks/generation.sh +6 -0
  662. package/lib/openzeppelin-contracts/scripts/checks/inheritance-ordering.js +55 -0
  663. package/lib/openzeppelin-contracts/scripts/checks/pragma-validity.js +45 -0
  664. package/lib/openzeppelin-contracts/scripts/fetch-common-contracts.js +50 -0
  665. package/lib/openzeppelin-contracts/scripts/gen-nav.js +81 -0
  666. package/lib/openzeppelin-contracts/scripts/generate/format-lines.js +16 -0
  667. package/lib/openzeppelin-contracts/scripts/generate/helpers/sanitize.js +5 -0
  668. package/lib/openzeppelin-contracts/scripts/generate/run.js +61 -0
  669. package/lib/openzeppelin-contracts/scripts/generate/templates/Arrays.js +454 -0
  670. package/lib/openzeppelin-contracts/scripts/generate/templates/Arrays.opts.js +9 -0
  671. package/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.js +242 -0
  672. package/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.opts.js +18 -0
  673. package/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.t.js +141 -0
  674. package/lib/openzeppelin-contracts/scripts/generate/templates/Enumerable.opts.js +53 -0
  675. package/lib/openzeppelin-contracts/scripts/generate/templates/EnumerableMap.js +463 -0
  676. package/lib/openzeppelin-contracts/scripts/generate/templates/EnumerableSet.js +469 -0
  677. package/lib/openzeppelin-contracts/scripts/generate/templates/MerkleProof.js +187 -0
  678. package/lib/openzeppelin-contracts/scripts/generate/templates/MerkleProof.opts.js +11 -0
  679. package/lib/openzeppelin-contracts/scripts/generate/templates/Packing.js +92 -0
  680. package/lib/openzeppelin-contracts/scripts/generate/templates/Packing.opts.js +3 -0
  681. package/lib/openzeppelin-contracts/scripts/generate/templates/Packing.t.js +48 -0
  682. package/lib/openzeppelin-contracts/scripts/generate/templates/SafeCast.js +136 -0
  683. package/lib/openzeppelin-contracts/scripts/generate/templates/Slot.opts.js +15 -0
  684. package/lib/openzeppelin-contracts/scripts/generate/templates/SlotDerivation.js +119 -0
  685. package/lib/openzeppelin-contracts/scripts/generate/templates/SlotDerivation.t.js +127 -0
  686. package/lib/openzeppelin-contracts/scripts/generate/templates/StorageSlot.js +77 -0
  687. package/lib/openzeppelin-contracts/scripts/generate/templates/StorageSlotMock.js +57 -0
  688. package/lib/openzeppelin-contracts/scripts/generate/templates/TransientSlot.js +80 -0
  689. package/lib/openzeppelin-contracts/scripts/generate/templates/TransientSlotMock.js +35 -0
  690. package/lib/openzeppelin-contracts/scripts/generate/templates/conversion.js +30 -0
  691. package/lib/openzeppelin-contracts/scripts/get-contracts-metadata.js +55 -0
  692. package/lib/openzeppelin-contracts/scripts/git-user-config.sh +6 -0
  693. package/lib/openzeppelin-contracts/scripts/helpers.js +7 -0
  694. package/lib/openzeppelin-contracts/scripts/minimize-pragma.js +138 -0
  695. package/lib/openzeppelin-contracts/scripts/prepack.sh +23 -0
  696. package/lib/openzeppelin-contracts/scripts/prepare-docs.sh +26 -0
  697. package/lib/openzeppelin-contracts/scripts/release/format-changelog.js +33 -0
  698. package/lib/openzeppelin-contracts/scripts/release/synchronize-versions.js +15 -0
  699. package/lib/openzeppelin-contracts/scripts/release/update-comment.js +34 -0
  700. package/lib/openzeppelin-contracts/scripts/release/version.sh +11 -0
  701. package/lib/openzeppelin-contracts/scripts/release/workflow/exit-prerelease.sh +8 -0
  702. package/lib/openzeppelin-contracts/scripts/release/workflow/github-release.js +48 -0
  703. package/lib/openzeppelin-contracts/scripts/release/workflow/integrity-check.sh +20 -0
  704. package/lib/openzeppelin-contracts/scripts/release/workflow/pack.sh +26 -0
  705. package/lib/openzeppelin-contracts/scripts/release/workflow/publish.sh +26 -0
  706. package/lib/openzeppelin-contracts/scripts/release/workflow/rerun.js +7 -0
  707. package/lib/openzeppelin-contracts/scripts/release/workflow/set-changesets-pr-title.js +17 -0
  708. package/lib/openzeppelin-contracts/scripts/release/workflow/start.sh +35 -0
  709. package/lib/openzeppelin-contracts/scripts/release/workflow/state.js +112 -0
  710. package/lib/openzeppelin-contracts/scripts/remove-ignored-artifacts.js +45 -0
  711. package/lib/openzeppelin-contracts/scripts/set-max-old-space-size.sh +10 -0
  712. package/lib/openzeppelin-contracts/scripts/solc-versions.js +15 -0
  713. package/lib/openzeppelin-contracts/scripts/solhint-custom/index.js +118 -0
  714. package/lib/openzeppelin-contracts/scripts/solhint-custom/package.json +8 -0
  715. package/lib/openzeppelin-contracts/scripts/update-docs-branch.js +65 -0
  716. package/lib/openzeppelin-contracts/scripts/upgradeable/README.md +21 -0
  717. package/lib/openzeppelin-contracts/scripts/upgradeable/alias/Initializable.sol +5 -0
  718. package/lib/openzeppelin-contracts/scripts/upgradeable/alias/UUPSUpgradeable.sol +5 -0
  719. package/lib/openzeppelin-contracts/scripts/upgradeable/patch-apply.sh +19 -0
  720. package/lib/openzeppelin-contracts/scripts/upgradeable/patch-save.sh +18 -0
  721. package/lib/openzeppelin-contracts/scripts/upgradeable/transpile-onto.sh +54 -0
  722. package/lib/openzeppelin-contracts/scripts/upgradeable/transpile.sh +49 -0
  723. package/lib/openzeppelin-contracts/scripts/upgradeable/upgradeable.patch +425 -0
  724. package/lib/openzeppelin-contracts/slither.config.json +4 -0
  725. package/lib/openzeppelin-contracts/solhint.config.js +29 -0
  726. package/lib/openzeppelin-contracts/test/TESTING.md +3 -0
  727. package/lib/openzeppelin-contracts/test/access/AccessControl.behavior.js +874 -0
  728. package/lib/openzeppelin-contracts/test/access/AccessControl.test.js +19 -0
  729. package/lib/openzeppelin-contracts/test/access/Ownable.test.js +79 -0
  730. package/lib/openzeppelin-contracts/test/access/Ownable2Step.test.js +102 -0
  731. package/lib/openzeppelin-contracts/test/access/extensions/AccessControlDefaultAdminRules.test.js +32 -0
  732. package/lib/openzeppelin-contracts/test/access/extensions/AccessControlEnumerable.test.js +24 -0
  733. package/lib/openzeppelin-contracts/test/access/manager/AccessManaged.test.js +146 -0
  734. package/lib/openzeppelin-contracts/test/access/manager/AccessManager.behavior.js +257 -0
  735. package/lib/openzeppelin-contracts/test/access/manager/AccessManager.predicate.js +456 -0
  736. package/lib/openzeppelin-contracts/test/access/manager/AccessManager.test.js +2489 -0
  737. package/lib/openzeppelin-contracts/test/access/manager/AuthorityUtils.test.js +112 -0
  738. package/lib/openzeppelin-contracts/test/account/Account.behavior.js +144 -0
  739. package/lib/openzeppelin-contracts/test/account/Account.test.js +48 -0
  740. package/lib/openzeppelin-contracts/test/account/AccountECDSA.test.js +52 -0
  741. package/lib/openzeppelin-contracts/test/account/AccountERC7702.t.sol +113 -0
  742. package/lib/openzeppelin-contracts/test/account/AccountERC7702.test.js +52 -0
  743. package/lib/openzeppelin-contracts/test/account/AccountERC7913.test.js +138 -0
  744. package/lib/openzeppelin-contracts/test/account/AccountMultiSigner.test.js +326 -0
  745. package/lib/openzeppelin-contracts/test/account/AccountMultiSignerWeighted.test.js +312 -0
  746. package/lib/openzeppelin-contracts/test/account/AccountP256.test.js +58 -0
  747. package/lib/openzeppelin-contracts/test/account/AccountRSA.test.js +58 -0
  748. package/lib/openzeppelin-contracts/test/account/AccountWebAuthn.test.js +88 -0
  749. package/lib/openzeppelin-contracts/test/account/examples/AccountERC7702WithModulesMock.test.js +99 -0
  750. package/lib/openzeppelin-contracts/test/account/extensions/AccountERC7579.behavior.js +601 -0
  751. package/lib/openzeppelin-contracts/test/account/extensions/AccountERC7579.test.js +60 -0
  752. package/lib/openzeppelin-contracts/test/account/extensions/AccountERC7579Hooked.test.js +60 -0
  753. package/lib/openzeppelin-contracts/test/account/extensions/ERC7821.behavior.js +145 -0
  754. package/lib/openzeppelin-contracts/test/account/utils/EIP7702Utils.test.js +53 -0
  755. package/lib/openzeppelin-contracts/test/account/utils/draft-ERC4337Utils.test.js +289 -0
  756. package/lib/openzeppelin-contracts/test/account/utils/draft-ERC7579Utils.t.sol +434 -0
  757. package/lib/openzeppelin-contracts/test/account/utils/draft-ERC7579Utils.test.js +399 -0
  758. package/lib/openzeppelin-contracts/test/crosschain/ERC7786Recipient.test.js +73 -0
  759. package/lib/openzeppelin-contracts/test/finance/VestingWallet.behavior.js +87 -0
  760. package/lib/openzeppelin-contracts/test/finance/VestingWallet.test.js +65 -0
  761. package/lib/openzeppelin-contracts/test/finance/VestingWalletCliff.test.js +70 -0
  762. package/lib/openzeppelin-contracts/test/governance/Governor.t.sol +59 -0
  763. package/lib/openzeppelin-contracts/test/governance/Governor.test.js +980 -0
  764. package/lib/openzeppelin-contracts/test/governance/TimelockController.test.js +1279 -0
  765. package/lib/openzeppelin-contracts/test/governance/extensions/GovernorCountingFractional.test.js +248 -0
  766. package/lib/openzeppelin-contracts/test/governance/extensions/GovernorCountingOverridable.test.js +346 -0
  767. package/lib/openzeppelin-contracts/test/governance/extensions/GovernorERC721.test.js +131 -0
  768. package/lib/openzeppelin-contracts/test/governance/extensions/GovernorNoncesKeyed.test.js +244 -0
  769. package/lib/openzeppelin-contracts/test/governance/extensions/GovernorPreventLateQuorum.test.js +185 -0
  770. package/lib/openzeppelin-contracts/test/governance/extensions/GovernorProposalGuardian.test.js +132 -0
  771. package/lib/openzeppelin-contracts/test/governance/extensions/GovernorSequentialProposalId.test.js +202 -0
  772. package/lib/openzeppelin-contracts/test/governance/extensions/GovernorStorage.test.js +155 -0
  773. package/lib/openzeppelin-contracts/test/governance/extensions/GovernorSuperQuorum.test.js +168 -0
  774. package/lib/openzeppelin-contracts/test/governance/extensions/GovernorSuperQuorumGreaterThanQuorum.t.sol +83 -0
  775. package/lib/openzeppelin-contracts/test/governance/extensions/GovernorTimelockAccess.test.js +864 -0
  776. package/lib/openzeppelin-contracts/test/governance/extensions/GovernorTimelockCompound.test.js +448 -0
  777. package/lib/openzeppelin-contracts/test/governance/extensions/GovernorTimelockControl.test.js +504 -0
  778. package/lib/openzeppelin-contracts/test/governance/extensions/GovernorVotesQuorumFraction.test.js +165 -0
  779. package/lib/openzeppelin-contracts/test/governance/extensions/GovernorVotesSuperQuorumFraction.test.js +160 -0
  780. package/lib/openzeppelin-contracts/test/governance/extensions/GovernorWithParams.test.js +245 -0
  781. package/lib/openzeppelin-contracts/test/governance/utils/ERC6372.behavior.js +28 -0
  782. package/lib/openzeppelin-contracts/test/governance/utils/Votes.behavior.js +325 -0
  783. package/lib/openzeppelin-contracts/test/governance/utils/Votes.test.js +102 -0
  784. package/lib/openzeppelin-contracts/test/governance/utils/VotesExtended.test.js +152 -0
  785. package/lib/openzeppelin-contracts/test/helpers/access-manager.js +85 -0
  786. package/lib/openzeppelin-contracts/test/helpers/account.js +14 -0
  787. package/lib/openzeppelin-contracts/test/helpers/chains.js +56 -0
  788. package/lib/openzeppelin-contracts/test/helpers/constants.js +7 -0
  789. package/lib/openzeppelin-contracts/test/helpers/deploy.js +14 -0
  790. package/lib/openzeppelin-contracts/test/helpers/eip712-types.js +61 -0
  791. package/lib/openzeppelin-contracts/test/helpers/eip712.js +45 -0
  792. package/lib/openzeppelin-contracts/test/helpers/enums.js +14 -0
  793. package/lib/openzeppelin-contracts/test/helpers/erc4337.js +217 -0
  794. package/lib/openzeppelin-contracts/test/helpers/erc7579.js +58 -0
  795. package/lib/openzeppelin-contracts/test/helpers/erc7739.js +118 -0
  796. package/lib/openzeppelin-contracts/test/helpers/governance.js +217 -0
  797. package/lib/openzeppelin-contracts/test/helpers/iterate.js +41 -0
  798. package/lib/openzeppelin-contracts/test/helpers/math.js +33 -0
  799. package/lib/openzeppelin-contracts/test/helpers/methods.js +14 -0
  800. package/lib/openzeppelin-contracts/test/helpers/precompiles.js +12 -0
  801. package/lib/openzeppelin-contracts/test/helpers/random.js +24 -0
  802. package/lib/openzeppelin-contracts/test/helpers/signers.js +222 -0
  803. package/lib/openzeppelin-contracts/test/helpers/storage.js +48 -0
  804. package/lib/openzeppelin-contracts/test/helpers/strings.js +5 -0
  805. package/lib/openzeppelin-contracts/test/helpers/time.js +33 -0
  806. package/lib/openzeppelin-contracts/test/helpers/txpool.js +29 -0
  807. package/lib/openzeppelin-contracts/test/metatx/ERC2771Context.test.js +109 -0
  808. package/lib/openzeppelin-contracts/test/metatx/ERC2771Forwarder.t.sol +279 -0
  809. package/lib/openzeppelin-contracts/test/metatx/ERC2771Forwarder.test.js +384 -0
  810. package/lib/openzeppelin-contracts/test/proxy/Clones.behaviour.js +160 -0
  811. package/lib/openzeppelin-contracts/test/proxy/Clones.t.sol +91 -0
  812. package/lib/openzeppelin-contracts/test/proxy/Clones.test.js +177 -0
  813. package/lib/openzeppelin-contracts/test/proxy/ERC1967/ERC1967Proxy.test.js +23 -0
  814. package/lib/openzeppelin-contracts/test/proxy/ERC1967/ERC1967Utils.test.js +162 -0
  815. package/lib/openzeppelin-contracts/test/proxy/Proxy.behaviour.js +185 -0
  816. package/lib/openzeppelin-contracts/test/proxy/beacon/BeaconProxy.test.js +141 -0
  817. package/lib/openzeppelin-contracts/test/proxy/beacon/UpgradeableBeacon.test.js +55 -0
  818. package/lib/openzeppelin-contracts/test/proxy/transparent/ProxyAdmin.test.js +82 -0
  819. package/lib/openzeppelin-contracts/test/proxy/transparent/TransparentUpgradeableProxy.behaviour.js +357 -0
  820. package/lib/openzeppelin-contracts/test/proxy/transparent/TransparentUpgradeableProxy.test.js +28 -0
  821. package/lib/openzeppelin-contracts/test/proxy/utils/Initializable.test.js +216 -0
  822. package/lib/openzeppelin-contracts/test/proxy/utils/UUPSUpgradeable.test.js +120 -0
  823. package/lib/openzeppelin-contracts/test/sanity.test.js +27 -0
  824. package/lib/openzeppelin-contracts/test/token/ERC1155/ERC1155.behavior.js +763 -0
  825. package/lib/openzeppelin-contracts/test/token/ERC1155/ERC1155.test.js +213 -0
  826. package/lib/openzeppelin-contracts/test/token/ERC1155/extensions/ERC1155Burnable.test.js +66 -0
  827. package/lib/openzeppelin-contracts/test/token/ERC1155/extensions/ERC1155Pausable.test.js +105 -0
  828. package/lib/openzeppelin-contracts/test/token/ERC1155/extensions/ERC1155Supply.test.js +119 -0
  829. package/lib/openzeppelin-contracts/test/token/ERC1155/extensions/ERC1155URIStorage.test.js +70 -0
  830. package/lib/openzeppelin-contracts/test/token/ERC1155/utils/ERC1155Holder.test.js +56 -0
  831. package/lib/openzeppelin-contracts/test/token/ERC1155/utils/ERC1155Utils.test.js +299 -0
  832. package/lib/openzeppelin-contracts/test/token/ERC20/ERC20.behavior.js +269 -0
  833. package/lib/openzeppelin-contracts/test/token/ERC20/ERC20.test.js +199 -0
  834. package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC1363.test.js +370 -0
  835. package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Burnable.test.js +105 -0
  836. package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Capped.test.js +55 -0
  837. package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20FlashMint.test.js +164 -0
  838. package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Pausable.test.js +129 -0
  839. package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Permit.test.js +109 -0
  840. package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Votes.test.js +546 -0
  841. package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Wrapper.test.js +203 -0
  842. package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC4626.t.sol +41 -0
  843. package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC4626.test.js +888 -0
  844. package/lib/openzeppelin-contracts/test/token/ERC20/extensions/draft-ERC20Bridgeable.test.js +89 -0
  845. package/lib/openzeppelin-contracts/test/token/ERC20/extensions/draft-ERC20TemporaryApproval.test.js +142 -0
  846. package/lib/openzeppelin-contracts/test/token/ERC20/utils/SafeERC20.test.js +463 -0
  847. package/lib/openzeppelin-contracts/test/token/ERC6909/ERC6909.behavior.js +216 -0
  848. package/lib/openzeppelin-contracts/test/token/ERC6909/ERC6909.test.js +104 -0
  849. package/lib/openzeppelin-contracts/test/token/ERC6909/extensions/ERC6909ContentURI.test.js +49 -0
  850. package/lib/openzeppelin-contracts/test/token/ERC6909/extensions/ERC6909Metadata.test.js +58 -0
  851. package/lib/openzeppelin-contracts/test/token/ERC6909/extensions/ERC6909TokenSupply.test.js +53 -0
  852. package/lib/openzeppelin-contracts/test/token/ERC721/ERC721.behavior.js +946 -0
  853. package/lib/openzeppelin-contracts/test/token/ERC721/ERC721.test.js +23 -0
  854. package/lib/openzeppelin-contracts/test/token/ERC721/ERC721Enumerable.test.js +28 -0
  855. package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Burnable.test.js +77 -0
  856. package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Consecutive.t.sol +187 -0
  857. package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Consecutive.test.js +228 -0
  858. package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Pausable.test.js +81 -0
  859. package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Royalty.test.js +57 -0
  860. package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721URIStorage.test.js +121 -0
  861. package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Votes.test.js +194 -0
  862. package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Wrapper.test.js +201 -0
  863. package/lib/openzeppelin-contracts/test/token/ERC721/utils/ERC721Holder.test.js +20 -0
  864. package/lib/openzeppelin-contracts/test/token/ERC721/utils/ERC721Utils.test.js +94 -0
  865. package/lib/openzeppelin-contracts/test/token/common/ERC2981.behavior.js +152 -0
  866. package/lib/openzeppelin-contracts/test/utils/Address.test.js +332 -0
  867. package/lib/openzeppelin-contracts/test/utils/Arrays.t.sol +248 -0
  868. package/lib/openzeppelin-contracts/test/utils/Arrays.test.js +284 -0
  869. package/lib/openzeppelin-contracts/test/utils/Base58.t.sol +24 -0
  870. package/lib/openzeppelin-contracts/test/utils/Base58.test.js +65 -0
  871. package/lib/openzeppelin-contracts/test/utils/Base64.t.sol +36 -0
  872. package/lib/openzeppelin-contracts/test/utils/Base64.test.js +79 -0
  873. package/lib/openzeppelin-contracts/test/utils/Blockhash.t.sol +101 -0
  874. package/lib/openzeppelin-contracts/test/utils/Blockhash.test.js +59 -0
  875. package/lib/openzeppelin-contracts/test/utils/Bytes.t.sol +251 -0
  876. package/lib/openzeppelin-contracts/test/utils/Bytes.test.js +359 -0
  877. package/lib/openzeppelin-contracts/test/utils/CAIP.test.js +56 -0
  878. package/lib/openzeppelin-contracts/test/utils/Calldata.test.js +22 -0
  879. package/lib/openzeppelin-contracts/test/utils/Context.behavior.js +48 -0
  880. package/lib/openzeppelin-contracts/test/utils/Context.test.js +18 -0
  881. package/lib/openzeppelin-contracts/test/utils/Create2.t.sol +17 -0
  882. package/lib/openzeppelin-contracts/test/utils/Create2.test.js +190 -0
  883. package/lib/openzeppelin-contracts/test/utils/LowLevelCall.test.js +257 -0
  884. package/lib/openzeppelin-contracts/test/utils/Memory.t.sol +38 -0
  885. package/lib/openzeppelin-contracts/test/utils/Memory.test.js +106 -0
  886. package/lib/openzeppelin-contracts/test/utils/Multicall.test.js +72 -0
  887. package/lib/openzeppelin-contracts/test/utils/Nonces.behavior.js +189 -0
  888. package/lib/openzeppelin-contracts/test/utils/Nonces.test.js +16 -0
  889. package/lib/openzeppelin-contracts/test/utils/NoncesKeyed.t.sol +51 -0
  890. package/lib/openzeppelin-contracts/test/utils/NoncesKeyed.test.js +17 -0
  891. package/lib/openzeppelin-contracts/test/utils/Packing.t.sol +993 -0
  892. package/lib/openzeppelin-contracts/test/utils/Packing.test.js +70 -0
  893. package/lib/openzeppelin-contracts/test/utils/Panic.test.js +37 -0
  894. package/lib/openzeppelin-contracts/test/utils/Pausable.test.js +90 -0
  895. package/lib/openzeppelin-contracts/test/utils/RLP.t.sol +135 -0
  896. package/lib/openzeppelin-contracts/test/utils/RLP.test.js +149 -0
  897. package/lib/openzeppelin-contracts/test/utils/ReentrancyGuard.test.js +58 -0
  898. package/lib/openzeppelin-contracts/test/utils/RelayedCall.test.js +217 -0
  899. package/lib/openzeppelin-contracts/test/utils/ShortStrings.t.sol +109 -0
  900. package/lib/openzeppelin-contracts/test/utils/ShortStrings.test.js +64 -0
  901. package/lib/openzeppelin-contracts/test/utils/SlotDerivation.t.sol +248 -0
  902. package/lib/openzeppelin-contracts/test/utils/SlotDerivation.test.js +58 -0
  903. package/lib/openzeppelin-contracts/test/utils/StorageSlot.test.js +73 -0
  904. package/lib/openzeppelin-contracts/test/utils/Strings.t.sol +50 -0
  905. package/lib/openzeppelin-contracts/test/utils/Strings.test.js +360 -0
  906. package/lib/openzeppelin-contracts/test/utils/TransientSlot.test.js +59 -0
  907. package/lib/openzeppelin-contracts/test/utils/cryptography/ECDSA.test.js +318 -0
  908. package/lib/openzeppelin-contracts/test/utils/cryptography/EIP712.test.js +105 -0
  909. package/lib/openzeppelin-contracts/test/utils/cryptography/ERC1271.behavior.js +111 -0
  910. package/lib/openzeppelin-contracts/test/utils/cryptography/ERC7739.test.js +42 -0
  911. package/lib/openzeppelin-contracts/test/utils/cryptography/ERC7739Utils.test.js +203 -0
  912. package/lib/openzeppelin-contracts/test/utils/cryptography/MerkleProof.test.js +213 -0
  913. package/lib/openzeppelin-contracts/test/utils/cryptography/MessageHashUtils.t.sol +33 -0
  914. package/lib/openzeppelin-contracts/test/utils/cryptography/MessageHashUtils.test.js +97 -0
  915. package/lib/openzeppelin-contracts/test/utils/cryptography/P256.t.sol +65 -0
  916. package/lib/openzeppelin-contracts/test/utils/cryptography/P256.test.js +182 -0
  917. package/lib/openzeppelin-contracts/test/utils/cryptography/RSA.helper.js +17 -0
  918. package/lib/openzeppelin-contracts/test/utils/cryptography/RSA.test.js +102 -0
  919. package/lib/openzeppelin-contracts/test/utils/cryptography/SigVer15_186-3.rsp +3850 -0
  920. package/lib/openzeppelin-contracts/test/utils/cryptography/SignatureChecker.test.js +422 -0
  921. package/lib/openzeppelin-contracts/test/utils/cryptography/WebAuthn.t.sol +297 -0
  922. package/lib/openzeppelin-contracts/test/utils/cryptography/ecdsa_secp256r1_sha256_p1363_test.json +3719 -0
  923. package/lib/openzeppelin-contracts/test/utils/draft-InteroperableAddress.t.sol +99 -0
  924. package/lib/openzeppelin-contracts/test/utils/draft-InteroperableAddress.test.js +170 -0
  925. package/lib/openzeppelin-contracts/test/utils/introspection/ERC165.test.js +18 -0
  926. package/lib/openzeppelin-contracts/test/utils/introspection/ERC165Checker.test.js +272 -0
  927. package/lib/openzeppelin-contracts/test/utils/introspection/SupportsInterface.behavior.js +166 -0
  928. package/lib/openzeppelin-contracts/test/utils/math/Math.t.sol +370 -0
  929. package/lib/openzeppelin-contracts/test/utils/math/Math.test.js +746 -0
  930. package/lib/openzeppelin-contracts/test/utils/math/SafeCast.test.js +159 -0
  931. package/lib/openzeppelin-contracts/test/utils/math/SignedMath.t.sol +81 -0
  932. package/lib/openzeppelin-contracts/test/utils/math/SignedMath.test.js +53 -0
  933. package/lib/openzeppelin-contracts/test/utils/structs/Accumulators.t.sol +35 -0
  934. package/lib/openzeppelin-contracts/test/utils/structs/BitMap.test.js +149 -0
  935. package/lib/openzeppelin-contracts/test/utils/structs/Checkpoints.t.sol +440 -0
  936. package/lib/openzeppelin-contracts/test/utils/structs/Checkpoints.test.js +147 -0
  937. package/lib/openzeppelin-contracts/test/utils/structs/CircularBuffer.test.js +83 -0
  938. package/lib/openzeppelin-contracts/test/utils/structs/DoubleEndedQueue.test.js +102 -0
  939. package/lib/openzeppelin-contracts/test/utils/structs/EnumerableMap.behavior.js +214 -0
  940. package/lib/openzeppelin-contracts/test/utils/structs/EnumerableMap.test.js +83 -0
  941. package/lib/openzeppelin-contracts/test/utils/structs/EnumerableSet.behavior.js +175 -0
  942. package/lib/openzeppelin-contracts/test/utils/structs/EnumerableSet.test.js +66 -0
  943. package/lib/openzeppelin-contracts/test/utils/structs/Heap.t.sol +74 -0
  944. package/lib/openzeppelin-contracts/test/utils/structs/Heap.test.js +113 -0
  945. package/lib/openzeppelin-contracts/test/utils/structs/MerkleTree.test.js +180 -0
  946. package/lib/openzeppelin-contracts/test/utils/types/Time.test.js +135 -0
  947. package/package.json +3 -3
@@ -0,0 +1,372 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // OpenZeppelin Contracts (last updated v5.5.0) (access/extensions/AccessControlDefaultAdminRules.sol)
3
+
4
+ pragma solidity ^0.8.20;
5
+
6
+ import {IAccessControlDefaultAdminRules} from "./IAccessControlDefaultAdminRules.sol";
7
+ import {AccessControl, IAccessControl} from "../AccessControl.sol";
8
+ import {SafeCast} from "../../utils/math/SafeCast.sol";
9
+ import {Math} from "../../utils/math/Math.sol";
10
+ import {IERC5313} from "../../interfaces/IERC5313.sol";
11
+ import {IERC165} from "../../utils/introspection/IERC165.sol";
12
+
13
+ /**
14
+ * @dev Extension of {AccessControl} that allows specifying special rules to manage
15
+ * the `DEFAULT_ADMIN_ROLE` holder, which is a sensitive role with special permissions
16
+ * over other roles that may potentially have privileged rights in the system.
17
+ *
18
+ * If a specific role doesn't have an admin role assigned, the holder of the
19
+ * `DEFAULT_ADMIN_ROLE` will have the ability to grant it and revoke it.
20
+ *
21
+ * This contract implements the following risk mitigations on top of {AccessControl}:
22
+ *
23
+ * * Only one account holds the `DEFAULT_ADMIN_ROLE` since deployment until it's potentially renounced.
24
+ * * Enforces a 2-step process to transfer the `DEFAULT_ADMIN_ROLE` to another account.
25
+ * * Enforces a configurable delay between the two steps, with the ability to cancel before the transfer is accepted.
26
+ * * The delay can be changed by scheduling, see {changeDefaultAdminDelay}.
27
+ * * Role transfers must wait at least one block after scheduling before it can be accepted.
28
+ * * It is not possible to use another role to manage the `DEFAULT_ADMIN_ROLE`.
29
+ *
30
+ * Example usage:
31
+ *
32
+ * ```solidity
33
+ * contract MyToken is AccessControlDefaultAdminRules {
34
+ * constructor() AccessControlDefaultAdminRules(
35
+ * 3 days,
36
+ * msg.sender // Explicit initial `DEFAULT_ADMIN_ROLE` holder
37
+ * ) {}
38
+ * }
39
+ * ```
40
+ */
41
+ abstract contract AccessControlDefaultAdminRules is IAccessControlDefaultAdminRules, IERC5313, AccessControl {
42
+ // pending admin pair read/written together frequently
43
+ address private _pendingDefaultAdmin;
44
+ uint48 private _pendingDefaultAdminSchedule; // 0 == unset
45
+
46
+ uint48 private _currentDelay;
47
+ address private _currentDefaultAdmin;
48
+
49
+ // pending delay pair read/written together frequently
50
+ uint48 private _pendingDelay;
51
+ uint48 private _pendingDelaySchedule; // 0 == unset
52
+
53
+ /**
54
+ * @dev Sets the initial values for {defaultAdminDelay} and {defaultAdmin} address.
55
+ */
56
+ constructor(uint48 initialDelay, address initialDefaultAdmin) {
57
+ if (initialDefaultAdmin == address(0)) {
58
+ revert AccessControlInvalidDefaultAdmin(address(0));
59
+ }
60
+ _currentDelay = initialDelay;
61
+ _grantRole(DEFAULT_ADMIN_ROLE, initialDefaultAdmin);
62
+ }
63
+
64
+ /// @inheritdoc IERC165
65
+ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
66
+ return interfaceId == type(IAccessControlDefaultAdminRules).interfaceId || super.supportsInterface(interfaceId);
67
+ }
68
+
69
+ /// @inheritdoc IERC5313
70
+ function owner() public view virtual returns (address) {
71
+ return defaultAdmin();
72
+ }
73
+
74
+ ///
75
+ /// Override AccessControl role management
76
+ ///
77
+
78
+ /**
79
+ * @dev See {AccessControl-grantRole}. Reverts for `DEFAULT_ADMIN_ROLE`.
80
+ */
81
+ function grantRole(bytes32 role, address account) public virtual override(AccessControl, IAccessControl) {
82
+ if (role == DEFAULT_ADMIN_ROLE) {
83
+ revert AccessControlEnforcedDefaultAdminRules();
84
+ }
85
+ super.grantRole(role, account);
86
+ }
87
+
88
+ /**
89
+ * @dev See {AccessControl-revokeRole}. Reverts for `DEFAULT_ADMIN_ROLE`.
90
+ */
91
+ function revokeRole(bytes32 role, address account) public virtual override(AccessControl, IAccessControl) {
92
+ if (role == DEFAULT_ADMIN_ROLE) {
93
+ revert AccessControlEnforcedDefaultAdminRules();
94
+ }
95
+ super.revokeRole(role, account);
96
+ }
97
+
98
+ /**
99
+ * @dev See {AccessControl-renounceRole}.
100
+ *
101
+ * For the `DEFAULT_ADMIN_ROLE`, it only allows renouncing in two steps by first calling
102
+ * {beginDefaultAdminTransfer} to the `address(0)`, so it's required that the {pendingDefaultAdmin} schedule
103
+ * has also passed when calling this function.
104
+ *
105
+ * After its execution, it will not be possible to call `onlyRole(DEFAULT_ADMIN_ROLE)` functions.
106
+ *
107
+ * NOTE: Renouncing `DEFAULT_ADMIN_ROLE` will leave the contract without a {defaultAdmin},
108
+ * thereby disabling any functionality that is only available for it, and the possibility of reassigning a
109
+ * non-administrated role.
110
+ */
111
+ function renounceRole(bytes32 role, address account) public virtual override(AccessControl, IAccessControl) {
112
+ if (role == DEFAULT_ADMIN_ROLE && account == defaultAdmin()) {
113
+ (address newDefaultAdmin, uint48 schedule) = pendingDefaultAdmin();
114
+ if (newDefaultAdmin != address(0) || !_isScheduleSet(schedule) || !_hasSchedulePassed(schedule)) {
115
+ revert AccessControlEnforcedDefaultAdminDelay(schedule);
116
+ }
117
+ delete _pendingDefaultAdminSchedule;
118
+ }
119
+ super.renounceRole(role, account);
120
+ }
121
+
122
+ /**
123
+ * @dev See {AccessControl-_grantRole}.
124
+ *
125
+ * For `DEFAULT_ADMIN_ROLE`, it only allows granting if there isn't already a {defaultAdmin} or if the
126
+ * role has been previously renounced.
127
+ *
128
+ * NOTE: Exposing this function through another mechanism may make the `DEFAULT_ADMIN_ROLE`
129
+ * assignable again. Make sure to guarantee this is the expected behavior in your implementation.
130
+ */
131
+ function _grantRole(bytes32 role, address account) internal virtual override returns (bool) {
132
+ if (role == DEFAULT_ADMIN_ROLE) {
133
+ if (defaultAdmin() != address(0)) {
134
+ revert AccessControlEnforcedDefaultAdminRules();
135
+ }
136
+ _currentDefaultAdmin = account;
137
+ }
138
+ return super._grantRole(role, account);
139
+ }
140
+
141
+ /// @inheritdoc AccessControl
142
+ function _revokeRole(bytes32 role, address account) internal virtual override returns (bool) {
143
+ if (role == DEFAULT_ADMIN_ROLE && account == defaultAdmin()) {
144
+ delete _currentDefaultAdmin;
145
+ }
146
+ return super._revokeRole(role, account);
147
+ }
148
+
149
+ /**
150
+ * @dev See {AccessControl-_setRoleAdmin}. Reverts for `DEFAULT_ADMIN_ROLE`.
151
+ */
152
+ function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual override {
153
+ if (role == DEFAULT_ADMIN_ROLE) {
154
+ revert AccessControlEnforcedDefaultAdminRules();
155
+ }
156
+ super._setRoleAdmin(role, adminRole);
157
+ }
158
+
159
+ ///
160
+ /// AccessControlDefaultAdminRules accessors
161
+ ///
162
+
163
+ /// @inheritdoc IAccessControlDefaultAdminRules
164
+ function defaultAdmin() public view virtual returns (address) {
165
+ return _currentDefaultAdmin;
166
+ }
167
+
168
+ /// @inheritdoc IAccessControlDefaultAdminRules
169
+ function pendingDefaultAdmin() public view virtual returns (address newAdmin, uint48 schedule) {
170
+ return (_pendingDefaultAdmin, _pendingDefaultAdminSchedule);
171
+ }
172
+
173
+ /// @inheritdoc IAccessControlDefaultAdminRules
174
+ function defaultAdminDelay() public view virtual returns (uint48) {
175
+ uint48 schedule = _pendingDelaySchedule;
176
+ return (_isScheduleSet(schedule) && _hasSchedulePassed(schedule)) ? _pendingDelay : _currentDelay;
177
+ }
178
+
179
+ /// @inheritdoc IAccessControlDefaultAdminRules
180
+ function pendingDefaultAdminDelay() public view virtual returns (uint48 newDelay, uint48 schedule) {
181
+ schedule = _pendingDelaySchedule;
182
+ return (_isScheduleSet(schedule) && !_hasSchedulePassed(schedule)) ? (_pendingDelay, schedule) : (0, 0);
183
+ }
184
+
185
+ /// @inheritdoc IAccessControlDefaultAdminRules
186
+ function defaultAdminDelayIncreaseWait() public view virtual returns (uint48) {
187
+ return 5 days;
188
+ }
189
+
190
+ ///
191
+ /// AccessControlDefaultAdminRules public and internal setters for defaultAdmin/pendingDefaultAdmin
192
+ ///
193
+
194
+ /// @inheritdoc IAccessControlDefaultAdminRules
195
+ function beginDefaultAdminTransfer(address newAdmin) public virtual onlyRole(DEFAULT_ADMIN_ROLE) {
196
+ _beginDefaultAdminTransfer(newAdmin);
197
+ }
198
+
199
+ /**
200
+ * @dev See {beginDefaultAdminTransfer}.
201
+ *
202
+ * Internal function without access restriction.
203
+ */
204
+ function _beginDefaultAdminTransfer(address newAdmin) internal virtual {
205
+ uint48 newSchedule = SafeCast.toUint48(block.timestamp) + defaultAdminDelay();
206
+ _setPendingDefaultAdmin(newAdmin, newSchedule);
207
+ emit DefaultAdminTransferScheduled(newAdmin, newSchedule);
208
+ }
209
+
210
+ /// @inheritdoc IAccessControlDefaultAdminRules
211
+ function cancelDefaultAdminTransfer() public virtual onlyRole(DEFAULT_ADMIN_ROLE) {
212
+ _cancelDefaultAdminTransfer();
213
+ }
214
+
215
+ /**
216
+ * @dev See {cancelDefaultAdminTransfer}.
217
+ *
218
+ * Internal function without access restriction.
219
+ */
220
+ function _cancelDefaultAdminTransfer() internal virtual {
221
+ _setPendingDefaultAdmin(address(0), 0);
222
+ }
223
+
224
+ /// @inheritdoc IAccessControlDefaultAdminRules
225
+ function acceptDefaultAdminTransfer() public virtual {
226
+ (address newDefaultAdmin, ) = pendingDefaultAdmin();
227
+ if (_msgSender() != newDefaultAdmin) {
228
+ // Enforce newDefaultAdmin explicit acceptance.
229
+ revert AccessControlInvalidDefaultAdmin(_msgSender());
230
+ }
231
+ _acceptDefaultAdminTransfer();
232
+ }
233
+
234
+ /**
235
+ * @dev See {acceptDefaultAdminTransfer}.
236
+ *
237
+ * Internal function without access restriction.
238
+ */
239
+ function _acceptDefaultAdminTransfer() internal virtual {
240
+ (address newAdmin, uint48 schedule) = pendingDefaultAdmin();
241
+ if (!_isScheduleSet(schedule) || !_hasSchedulePassed(schedule)) {
242
+ revert AccessControlEnforcedDefaultAdminDelay(schedule);
243
+ }
244
+ _revokeRole(DEFAULT_ADMIN_ROLE, defaultAdmin());
245
+ _grantRole(DEFAULT_ADMIN_ROLE, newAdmin);
246
+ delete _pendingDefaultAdmin;
247
+ delete _pendingDefaultAdminSchedule;
248
+ }
249
+
250
+ ///
251
+ /// AccessControlDefaultAdminRules public and internal setters for defaultAdminDelay/pendingDefaultAdminDelay
252
+ ///
253
+
254
+ /// @inheritdoc IAccessControlDefaultAdminRules
255
+ function changeDefaultAdminDelay(uint48 newDelay) public virtual onlyRole(DEFAULT_ADMIN_ROLE) {
256
+ _changeDefaultAdminDelay(newDelay);
257
+ }
258
+
259
+ /**
260
+ * @dev See {changeDefaultAdminDelay}.
261
+ *
262
+ * Internal function without access restriction.
263
+ */
264
+ function _changeDefaultAdminDelay(uint48 newDelay) internal virtual {
265
+ uint48 newSchedule = SafeCast.toUint48(block.timestamp) + _delayChangeWait(newDelay);
266
+ _setPendingDelay(newDelay, newSchedule);
267
+ emit DefaultAdminDelayChangeScheduled(newDelay, newSchedule);
268
+ }
269
+
270
+ /// @inheritdoc IAccessControlDefaultAdminRules
271
+ function rollbackDefaultAdminDelay() public virtual onlyRole(DEFAULT_ADMIN_ROLE) {
272
+ _rollbackDefaultAdminDelay();
273
+ }
274
+
275
+ /**
276
+ * @dev See {rollbackDefaultAdminDelay}.
277
+ *
278
+ * Internal function without access restriction.
279
+ */
280
+ function _rollbackDefaultAdminDelay() internal virtual {
281
+ _setPendingDelay(0, 0);
282
+ }
283
+
284
+ /**
285
+ * @dev Returns the amount of seconds to wait after the `newDelay` will
286
+ * become the new {defaultAdminDelay}.
287
+ *
288
+ * The value returned guarantees that if the delay is reduced, it will go into effect
289
+ * after a wait that honors the previously set delay.
290
+ *
291
+ * See {defaultAdminDelayIncreaseWait}.
292
+ */
293
+ function _delayChangeWait(uint48 newDelay) internal view virtual returns (uint48) {
294
+ uint48 currentDelay = defaultAdminDelay();
295
+
296
+ // When increasing the delay, we schedule the delay change to occur after a period of "new delay" has passed, up
297
+ // to a maximum given by defaultAdminDelayIncreaseWait, by default 5 days. For example, if increasing from 1 day
298
+ // to 3 days, the new delay will come into effect after 3 days. If increasing from 1 day to 10 days, the new
299
+ // delay will come into effect after 5 days. The 5 day wait period is intended to be able to fix an error like
300
+ // using milliseconds instead of seconds.
301
+ //
302
+ // When decreasing the delay, we wait the difference between "current delay" and "new delay". This guarantees
303
+ // that an admin transfer cannot be made faster than "current delay" at the time the delay change is scheduled.
304
+ // For example, if decreasing from 10 days to 3 days, the new delay will come into effect after 7 days.
305
+ return
306
+ newDelay > currentDelay
307
+ ? uint48(Math.min(newDelay, defaultAdminDelayIncreaseWait())) // no need to safecast, both inputs are uint48
308
+ : currentDelay - newDelay;
309
+ }
310
+
311
+ ///
312
+ /// Private setters
313
+ ///
314
+
315
+ /**
316
+ * @dev Setter of the tuple for pending admin and its schedule.
317
+ *
318
+ * May emit a DefaultAdminTransferCanceled event.
319
+ */
320
+ function _setPendingDefaultAdmin(address newAdmin, uint48 newSchedule) private {
321
+ (, uint48 oldSchedule) = pendingDefaultAdmin();
322
+
323
+ _pendingDefaultAdmin = newAdmin;
324
+ _pendingDefaultAdminSchedule = newSchedule;
325
+
326
+ // An `oldSchedule` from `pendingDefaultAdmin()` is only set if it hasn't been accepted.
327
+ if (_isScheduleSet(oldSchedule)) {
328
+ // Emit for implicit cancellations when another default admin was scheduled.
329
+ emit DefaultAdminTransferCanceled();
330
+ }
331
+ }
332
+
333
+ /**
334
+ * @dev Setter of the tuple for pending delay and its schedule.
335
+ *
336
+ * May emit a DefaultAdminDelayChangeCanceled event.
337
+ */
338
+ function _setPendingDelay(uint48 newDelay, uint48 newSchedule) private {
339
+ uint48 oldSchedule = _pendingDelaySchedule;
340
+
341
+ if (_isScheduleSet(oldSchedule)) {
342
+ if (_hasSchedulePassed(oldSchedule)) {
343
+ // Materialize a virtual delay
344
+ _currentDelay = _pendingDelay;
345
+ } else {
346
+ // Emit for implicit cancellations when another delay was scheduled.
347
+ emit DefaultAdminDelayChangeCanceled();
348
+ }
349
+ }
350
+
351
+ _pendingDelay = newDelay;
352
+ _pendingDelaySchedule = newSchedule;
353
+ }
354
+
355
+ ///
356
+ /// Private helpers
357
+ ///
358
+
359
+ /**
360
+ * @dev Defines if a `schedule` is considered set. For consistency purposes.
361
+ */
362
+ function _isScheduleSet(uint48 schedule) private pure returns (bool) {
363
+ return schedule != 0;
364
+ }
365
+
366
+ /**
367
+ * @dev Defines if a `schedule` is considered passed. For consistency purposes.
368
+ */
369
+ function _hasSchedulePassed(uint48 schedule) private view returns (bool) {
370
+ return schedule < block.timestamp;
371
+ }
372
+ }
@@ -0,0 +1,81 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // OpenZeppelin Contracts (last updated v5.5.0) (access/extensions/AccessControlEnumerable.sol)
3
+
4
+ pragma solidity ^0.8.24;
5
+
6
+ import {IAccessControlEnumerable} from "./IAccessControlEnumerable.sol";
7
+ import {AccessControl} from "../AccessControl.sol";
8
+ import {EnumerableSet} from "../../utils/structs/EnumerableSet.sol";
9
+ import {IERC165} from "../../utils/introspection/ERC165.sol";
10
+
11
+ /**
12
+ * @dev Extension of {AccessControl} that allows enumerating the members of each role.
13
+ */
14
+ abstract contract AccessControlEnumerable is IAccessControlEnumerable, AccessControl {
15
+ using EnumerableSet for EnumerableSet.AddressSet;
16
+
17
+ mapping(bytes32 role => EnumerableSet.AddressSet) private _roleMembers;
18
+
19
+ /// @inheritdoc IERC165
20
+ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
21
+ return interfaceId == type(IAccessControlEnumerable).interfaceId || super.supportsInterface(interfaceId);
22
+ }
23
+
24
+ /**
25
+ * @dev Returns one of the accounts that have `role`. `index` must be a
26
+ * value between 0 and {getRoleMemberCount}, non-inclusive.
27
+ *
28
+ * Role bearers are not sorted in any particular way, and their ordering may
29
+ * change at any point.
30
+ *
31
+ * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure
32
+ * you perform all queries on the same block. See the following
33
+ * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]
34
+ * for more information.
35
+ */
36
+ function getRoleMember(bytes32 role, uint256 index) public view virtual returns (address) {
37
+ return _roleMembers[role].at(index);
38
+ }
39
+
40
+ /**
41
+ * @dev Returns the number of accounts that have `role`. Can be used
42
+ * together with {getRoleMember} to enumerate all bearers of a role.
43
+ */
44
+ function getRoleMemberCount(bytes32 role) public view virtual returns (uint256) {
45
+ return _roleMembers[role].length();
46
+ }
47
+
48
+ /**
49
+ * @dev Return all accounts that have `role`
50
+ *
51
+ * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed
52
+ * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that
53
+ * this function has an unbounded cost, and using it as part of a state-changing function may render the function
54
+ * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.
55
+ */
56
+ function getRoleMembers(bytes32 role) public view virtual returns (address[] memory) {
57
+ return _roleMembers[role].values();
58
+ }
59
+
60
+ /**
61
+ * @dev Overload {AccessControl-_grantRole} to track enumerable memberships
62
+ */
63
+ function _grantRole(bytes32 role, address account) internal virtual override returns (bool) {
64
+ bool granted = super._grantRole(role, account);
65
+ if (granted) {
66
+ _roleMembers[role].add(account);
67
+ }
68
+ return granted;
69
+ }
70
+
71
+ /**
72
+ * @dev Overload {AccessControl-_revokeRole} to track enumerable memberships
73
+ */
74
+ function _revokeRole(bytes32 role, address account) internal virtual override returns (bool) {
75
+ bool revoked = super._revokeRole(role, account);
76
+ if (revoked) {
77
+ _roleMembers[role].remove(account);
78
+ }
79
+ return revoked;
80
+ }
81
+ }
@@ -0,0 +1,192 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // OpenZeppelin Contracts (last updated v5.5.0) (access/extensions/IAccessControlDefaultAdminRules.sol)
3
+
4
+ pragma solidity >=0.8.4;
5
+
6
+ import {IAccessControl} from "../IAccessControl.sol";
7
+
8
+ /**
9
+ * @dev External interface of AccessControlDefaultAdminRules declared to support ERC-165 detection.
10
+ */
11
+ interface IAccessControlDefaultAdminRules is IAccessControl {
12
+ /**
13
+ * @dev The new default admin is not a valid default admin.
14
+ */
15
+ error AccessControlInvalidDefaultAdmin(address defaultAdmin);
16
+
17
+ /**
18
+ * @dev At least one of the following rules was violated:
19
+ *
20
+ * - The `DEFAULT_ADMIN_ROLE` must only be managed by itself.
21
+ * - The `DEFAULT_ADMIN_ROLE` must only be held by one account at the time.
22
+ * - Any `DEFAULT_ADMIN_ROLE` transfer must be in two delayed steps.
23
+ */
24
+ error AccessControlEnforcedDefaultAdminRules();
25
+
26
+ /**
27
+ * @dev The delay for transferring the default admin delay is enforced and
28
+ * the operation must wait until `schedule`.
29
+ *
30
+ * NOTE: `schedule` can be 0 indicating there's no transfer scheduled.
31
+ */
32
+ error AccessControlEnforcedDefaultAdminDelay(uint48 schedule);
33
+
34
+ /**
35
+ * @dev Emitted when a {defaultAdmin} transfer is started, setting `newAdmin` as the next
36
+ * address to become the {defaultAdmin} by calling {acceptDefaultAdminTransfer} only after `acceptSchedule`
37
+ * passes.
38
+ */
39
+ event DefaultAdminTransferScheduled(address indexed newAdmin, uint48 acceptSchedule);
40
+
41
+ /**
42
+ * @dev Emitted when a {pendingDefaultAdmin} is reset if it was never accepted, regardless of its schedule.
43
+ */
44
+ event DefaultAdminTransferCanceled();
45
+
46
+ /**
47
+ * @dev Emitted when a {defaultAdminDelay} change is started, setting `newDelay` as the next
48
+ * delay to be applied between default admin transfer after `effectSchedule` has passed.
49
+ */
50
+ event DefaultAdminDelayChangeScheduled(uint48 newDelay, uint48 effectSchedule);
51
+
52
+ /**
53
+ * @dev Emitted when a {pendingDefaultAdminDelay} is reset if its schedule didn't pass.
54
+ */
55
+ event DefaultAdminDelayChangeCanceled();
56
+
57
+ /**
58
+ * @dev Returns the address of the current `DEFAULT_ADMIN_ROLE` holder.
59
+ */
60
+ function defaultAdmin() external view returns (address);
61
+
62
+ /**
63
+ * @dev Returns a tuple of a `newAdmin` and an accept schedule.
64
+ *
65
+ * After the `schedule` passes, the `newAdmin` will be able to accept the {defaultAdmin} role
66
+ * by calling {acceptDefaultAdminTransfer}, completing the role transfer.
67
+ *
68
+ * A zero value only in `acceptSchedule` indicates no pending admin transfer.
69
+ *
70
+ * NOTE: A zero address `newAdmin` means that {defaultAdmin} is being renounced.
71
+ */
72
+ function pendingDefaultAdmin() external view returns (address newAdmin, uint48 acceptSchedule);
73
+
74
+ /**
75
+ * @dev Returns the delay required to schedule the acceptance of a {defaultAdmin} transfer started.
76
+ *
77
+ * This delay will be added to the current timestamp when calling {beginDefaultAdminTransfer} to set
78
+ * the acceptance schedule.
79
+ *
80
+ * NOTE: If a delay change has been scheduled, it will take effect as soon as the schedule passes, making this
81
+ * function returns the new delay. See {changeDefaultAdminDelay}.
82
+ */
83
+ function defaultAdminDelay() external view returns (uint48);
84
+
85
+ /**
86
+ * @dev Returns a tuple of `newDelay` and an effect schedule.
87
+ *
88
+ * After the `schedule` passes, the `newDelay` will get into effect immediately for every
89
+ * new {defaultAdmin} transfer started with {beginDefaultAdminTransfer}.
90
+ *
91
+ * A zero value only in `effectSchedule` indicates no pending delay change.
92
+ *
93
+ * NOTE: A zero value only for `newDelay` means that the next {defaultAdminDelay}
94
+ * will be zero after the effect schedule.
95
+ */
96
+ function pendingDefaultAdminDelay() external view returns (uint48 newDelay, uint48 effectSchedule);
97
+
98
+ /**
99
+ * @dev Starts a {defaultAdmin} transfer by setting a {pendingDefaultAdmin} scheduled for acceptance
100
+ * after the current timestamp plus a {defaultAdminDelay}.
101
+ *
102
+ * Requirements:
103
+ *
104
+ * - Only can be called by the current {defaultAdmin}.
105
+ *
106
+ * Emits a DefaultAdminRoleChangeStarted event.
107
+ */
108
+ function beginDefaultAdminTransfer(address newAdmin) external;
109
+
110
+ /**
111
+ * @dev Cancels a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}.
112
+ *
113
+ * A {pendingDefaultAdmin} not yet accepted can also be cancelled with this function.
114
+ *
115
+ * Requirements:
116
+ *
117
+ * - Only can be called by the current {defaultAdmin}.
118
+ *
119
+ * May emit a DefaultAdminTransferCanceled event.
120
+ */
121
+ function cancelDefaultAdminTransfer() external;
122
+
123
+ /**
124
+ * @dev Completes a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}.
125
+ *
126
+ * After calling the function:
127
+ *
128
+ * - `DEFAULT_ADMIN_ROLE` should be granted to the caller.
129
+ * - `DEFAULT_ADMIN_ROLE` should be revoked from the previous holder.
130
+ * - {pendingDefaultAdmin} should be reset to zero values.
131
+ *
132
+ * Requirements:
133
+ *
134
+ * - Only can be called by the {pendingDefaultAdmin}'s `newAdmin`.
135
+ * - The {pendingDefaultAdmin}'s `acceptSchedule` should've passed.
136
+ */
137
+ function acceptDefaultAdminTransfer() external;
138
+
139
+ /**
140
+ * @dev Initiates a {defaultAdminDelay} update by setting a {pendingDefaultAdminDelay} scheduled for getting
141
+ * into effect after the current timestamp plus a {defaultAdminDelay}.
142
+ *
143
+ * This function guarantees that any call to {beginDefaultAdminTransfer} done between the timestamp this
144
+ * method is called and the {pendingDefaultAdminDelay} effect schedule will use the current {defaultAdminDelay}
145
+ * set before calling.
146
+ *
147
+ * The {pendingDefaultAdminDelay}'s effect schedule is defined in a way that waiting until the schedule and then
148
+ * calling {beginDefaultAdminTransfer} with the new delay will take at least the same as another {defaultAdmin}
149
+ * complete transfer (including acceptance).
150
+ *
151
+ * The schedule is designed for two scenarios:
152
+ *
153
+ * - When the delay is changed for a larger one the schedule is `block.timestamp + newDelay` capped by
154
+ * {defaultAdminDelayIncreaseWait}.
155
+ * - When the delay is changed for a shorter one, the schedule is `block.timestamp + (current delay - new delay)`.
156
+ *
157
+ * A {pendingDefaultAdminDelay} that never got into effect will be canceled in favor of a new scheduled change.
158
+ *
159
+ * Requirements:
160
+ *
161
+ * - Only can be called by the current {defaultAdmin}.
162
+ *
163
+ * Emits a DefaultAdminDelayChangeScheduled event and may emit a DefaultAdminDelayChangeCanceled event.
164
+ */
165
+ function changeDefaultAdminDelay(uint48 newDelay) external;
166
+
167
+ /**
168
+ * @dev Cancels a scheduled {defaultAdminDelay} change.
169
+ *
170
+ * Requirements:
171
+ *
172
+ * - Only can be called by the current {defaultAdmin}.
173
+ *
174
+ * May emit a DefaultAdminDelayChangeCanceled event.
175
+ */
176
+ function rollbackDefaultAdminDelay() external;
177
+
178
+ /**
179
+ * @dev Maximum time in seconds for an increase to {defaultAdminDelay} (that is scheduled using {changeDefaultAdminDelay})
180
+ * to take effect. Default to 5 days.
181
+ *
182
+ * When the {defaultAdminDelay} is scheduled to be increased, it goes into effect after the new delay has passed with
183
+ * the purpose of giving enough time for reverting any accidental change (i.e. using milliseconds instead of seconds)
184
+ * that may lock the contract. However, to avoid excessive schedules, the wait is capped by this function and it can
185
+ * be overridden for a custom {defaultAdminDelay} increase scheduling.
186
+ *
187
+ * IMPORTANT: Make sure to add a reasonable amount of time while overriding this value, otherwise,
188
+ * there's a risk of setting a high new delay that goes into effect almost immediately without the
189
+ * possibility of human intervention in the case of an input error (eg. set milliseconds instead of seconds).
190
+ */
191
+ function defaultAdminDelayIncreaseWait() external view returns (uint48);
192
+ }
@@ -0,0 +1,31 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // OpenZeppelin Contracts (last updated v5.4.0) (access/extensions/IAccessControlEnumerable.sol)
3
+
4
+ pragma solidity >=0.8.4;
5
+
6
+ import {IAccessControl} from "../IAccessControl.sol";
7
+
8
+ /**
9
+ * @dev External interface of AccessControlEnumerable declared to support ERC-165 detection.
10
+ */
11
+ interface IAccessControlEnumerable is IAccessControl {
12
+ /**
13
+ * @dev Returns one of the accounts that have `role`. `index` must be a
14
+ * value between 0 and {getRoleMemberCount}, non-inclusive.
15
+ *
16
+ * Role bearers are not sorted in any particular way, and their ordering may
17
+ * change at any point.
18
+ *
19
+ * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure
20
+ * you perform all queries on the same block. See the following
21
+ * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]
22
+ * for more information.
23
+ */
24
+ function getRoleMember(bytes32 role, uint256 index) external view returns (address);
25
+
26
+ /**
27
+ * @dev Returns the number of accounts that have `role`. Can be used
28
+ * together with {getRoleMember} to enumerate all bearers of a role.
29
+ */
30
+ function getRoleMemberCount(bytes32 role) external view returns (uint256);
31
+ }