浏览代码

Update docs

github-actions 2 年之前
父节点
当前提交
645e2a6c4a

+ 22 - 0
docs/modules/api/pages/access.adoc

@@ -47,6 +47,7 @@
 :xref-AccessControl-_setRoleAdmin-bytes32-bytes32-: xref:access.adoc#AccessControl-_setRoleAdmin-bytes32-bytes32-
 :xref-AccessControl-_grantRole-bytes32-address-: xref:access.adoc#AccessControl-_grantRole-bytes32-address-
 :xref-AccessControl-_revokeRole-bytes32-address-: xref:access.adoc#AccessControl-_revokeRole-bytes32-address-
+:xref-AccessControl-DEFAULT_ADMIN_ROLE-bytes32: xref:access.adoc#AccessControl-DEFAULT_ADMIN_ROLE-bytes32
 :xref-IAccessControl-RoleAdminChanged-bytes32-bytes32-bytes32-: xref:access.adoc#IAccessControl-RoleAdminChanged-bytes32-bytes32-bytes32-
 :xref-IAccessControl-RoleGranted-bytes32-address-address-: xref:access.adoc#IAccessControl-RoleGranted-bytes32-address-address-
 :xref-IAccessControl-RoleRevoked-bytes32-address-address-: xref:access.adoc#IAccessControl-RoleRevoked-bytes32-address-address-
@@ -79,6 +80,7 @@
 :xref-AccessControl-revokeRole-bytes32-address-: xref:access.adoc#AccessControl-revokeRole-bytes32-address-
 :xref-AccessControl-renounceRole-bytes32-address-: xref:access.adoc#AccessControl-renounceRole-bytes32-address-
 :xref-AccessControl-_setRoleAdmin-bytes32-bytes32-: xref:access.adoc#AccessControl-_setRoleAdmin-bytes32-bytes32-
+:xref-AccessControl-DEFAULT_ADMIN_ROLE-bytes32: xref:access.adoc#AccessControl-DEFAULT_ADMIN_ROLE-bytes32
 :xref-IAccessControl-RoleAdminChanged-bytes32-bytes32-bytes32-: xref:access.adoc#IAccessControl-RoleAdminChanged-bytes32-bytes32-bytes32-
 :xref-IAccessControl-RoleGranted-bytes32-address-address-: xref:access.adoc#IAccessControl-RoleGranted-bytes32-address-address-
 :xref-IAccessControl-RoleRevoked-bytes32-address-address-: xref:access.adoc#IAccessControl-RoleRevoked-bytes32-address-address-
@@ -145,6 +147,7 @@
 :xref-AccessControl-_checkRole-bytes32-: xref:access.adoc#AccessControl-_checkRole-bytes32-
 :xref-AccessControl-_checkRole-bytes32-address-: xref:access.adoc#AccessControl-_checkRole-bytes32-address-
 :xref-AccessControl-getRoleAdmin-bytes32-: xref:access.adoc#AccessControl-getRoleAdmin-bytes32-
+:xref-AccessControl-DEFAULT_ADMIN_ROLE-bytes32: xref:access.adoc#AccessControl-DEFAULT_ADMIN_ROLE-bytes32
 :xref-IAccessControlDefaultAdminRules-DefaultAdminTransferScheduled-address-uint48-: xref:access.adoc#IAccessControlDefaultAdminRules-DefaultAdminTransferScheduled-address-uint48-
 :xref-IAccessControlDefaultAdminRules-DefaultAdminTransferCanceled--: xref:access.adoc#IAccessControlDefaultAdminRules-DefaultAdminTransferCanceled--
 :xref-IAccessControlDefaultAdminRules-DefaultAdminDelayChangeScheduled-uint48-uint48-: xref:access.adoc#IAccessControlDefaultAdminRules-DefaultAdminDelayChangeScheduled-uint48-uint48-
@@ -219,6 +222,8 @@
 :xref-AccessManager-cancel-address-address-bytes-: xref:access.adoc#AccessManager-cancel-address-address-bytes-
 :xref-AccessManager-hashOperation-address-address-bytes-: xref:access.adoc#AccessManager-hashOperation-address-address-bytes-
 :xref-AccessManager-updateAuthority-address-address-: xref:access.adoc#AccessManager-updateAuthority-address-address-
+:xref-AccessManager-ADMIN_ROLE-uint64: xref:access.adoc#AccessManager-ADMIN_ROLE-uint64
+:xref-AccessManager-PUBLIC_ROLE-uint64: xref:access.adoc#AccessManager-PUBLIC_ROLE-uint64
 :xref-Multicall-multicall-bytes---: xref:utils.adoc#Multicall-multicall-bytes---
 :xref-IAccessManager-OperationScheduled-bytes32-uint32-uint48-address-address-bytes-: xref:access.adoc#IAccessManager-OperationScheduled-bytes32-uint32-uint48-address-address-bytes-
 :xref-IAccessManager-OperationExecuted-bytes32-uint32-: xref:access.adoc#IAccessManager-OperationExecuted-bytes32-uint32-
@@ -721,6 +726,7 @@ to enforce additional security measures for this role.
 * {xref-AccessControl-_setRoleAdmin-bytes32-bytes32-}[`++_setRoleAdmin(role, adminRole)++`]
 * {xref-AccessControl-_grantRole-bytes32-address-}[`++_grantRole(role, account)++`]
 * {xref-AccessControl-_revokeRole-bytes32-address-}[`++_revokeRole(role, account)++`]
+* {xref-AccessControl-DEFAULT_ADMIN_ROLE-bytes32}[`++DEFAULT_ADMIN_ROLE()++`]
 
 [.contract-subindex-inherited]
 .ERC165
@@ -886,6 +892,10 @@ Internal function without access restriction.
 
 May emit a {RoleRevoked} event.
 
+[.contract-item]
+[[AccessControl-DEFAULT_ADMIN_ROLE-bytes32]]
+==== `[.contract-item-name]#++DEFAULT_ADMIN_ROLE++#++() → bytes32++` [.item-kind]#public#
+
 == Extensions
 
 :getRoleMember: pass:normal[xref:#IAccessControlEnumerable-getRoleMember-bytes32-uint256-[`++getRoleMember++`]]
@@ -999,6 +1009,7 @@ Extension of {AccessControl} that allows enumerating the members of each role.
 * {xref-AccessControl-revokeRole-bytes32-address-}[`++revokeRole(role, account)++`]
 * {xref-AccessControl-renounceRole-bytes32-address-}[`++renounceRole(role, callerConfirmation)++`]
 * {xref-AccessControl-_setRoleAdmin-bytes32-bytes32-}[`++_setRoleAdmin(role, adminRole)++`]
+* {xref-AccessControl-DEFAULT_ADMIN_ROLE-bytes32}[`++DEFAULT_ADMIN_ROLE()++`]
 
 [.contract-subindex-inherited]
 .ERC165
@@ -1478,6 +1489,7 @@ contract MyToken is AccessControlDefaultAdminRules {
 * {xref-AccessControl-_checkRole-bytes32-}[`++_checkRole(role)++`]
 * {xref-AccessControl-_checkRole-bytes32-address-}[`++_checkRole(role, account)++`]
 * {xref-AccessControl-getRoleAdmin-bytes32-}[`++getRoleAdmin(role)++`]
+* {xref-AccessControl-DEFAULT_ADMIN_ROLE-bytes32}[`++DEFAULT_ADMIN_ROLE()++`]
 
 [.contract-subindex-inherited]
 .ERC165
@@ -1993,6 +2005,8 @@ mindful of the danger associated with functions such as {{Ownable-renounceOwners
 * {xref-AccessManager-cancel-address-address-bytes-}[`++cancel(caller, target, data)++`]
 * {xref-AccessManager-hashOperation-address-address-bytes-}[`++hashOperation(caller, target, data)++`]
 * {xref-AccessManager-updateAuthority-address-address-}[`++updateAuthority(target, newAuthority)++`]
+* {xref-AccessManager-ADMIN_ROLE-uint64}[`++ADMIN_ROLE()++`]
+* {xref-AccessManager-PUBLIC_ROLE-uint64}[`++PUBLIC_ROLE()++`]
 
 [.contract-subindex-inherited]
 .IAccessManager
@@ -2445,6 +2459,14 @@ Requirements:
 
 - the caller must be a global admin
 
+[.contract-item]
+[[AccessManager-ADMIN_ROLE-uint64]]
+==== `[.contract-item-name]#++ADMIN_ROLE++#++() → uint64++` [.item-kind]#public#
+
+[.contract-item]
+[[AccessManager-PUBLIC_ROLE-uint64]]
+==== `[.contract-item-name]#++PUBLIC_ROLE++#++() → uint64++` [.item-kind]#public#
+
 :constructor: pass:normal[xref:#AccessManaged-constructor-address-[`++constructor++`]]
 :restricted: pass:normal[xref:#AccessManaged-restricted--[`++restricted++`]]
 :authority: pass:normal[xref:#AccessManaged-authority--[`++authority++`]]

+ 64 - 0
docs/modules/api/pages/governance.adoc

@@ -119,6 +119,8 @@
 :xref-Governor-votingDelay--: xref:governance.adoc#Governor-votingDelay--
 :xref-Governor-votingPeriod--: xref:governance.adoc#Governor-votingPeriod--
 :xref-Governor-quorum-uint256-: xref:governance.adoc#Governor-quorum-uint256-
+:xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32
+:xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32
 :xref-IGovernor-COUNTING_MODE--: xref:governance.adoc#IGovernor-COUNTING_MODE--
 :xref-IGovernor-hasVoted-uint256-address-: xref:governance.adoc#IGovernor-hasVoted-uint256-address-
 :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
@@ -237,6 +239,8 @@
 :xref-Governor-votingDelay--: xref:governance.adoc#Governor-votingDelay--
 :xref-Governor-votingPeriod--: xref:governance.adoc#Governor-votingPeriod--
 :xref-Governor-quorum-uint256-: xref:governance.adoc#Governor-quorum-uint256-
+:xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32
+:xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32
 :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
 :xref-Nonces-_useNonce-address-: xref:utils.adoc#Nonces-_useNonce-address-
 :xref-Nonces-_useCheckedNonce-address-uint256-: xref:utils.adoc#Nonces-_useCheckedNonce-address-uint256-
@@ -325,6 +329,8 @@
 :xref-Governor-votingDelay--: xref:governance.adoc#Governor-votingDelay--
 :xref-Governor-votingPeriod--: xref:governance.adoc#Governor-votingPeriod--
 :xref-Governor-quorum-uint256-: xref:governance.adoc#Governor-quorum-uint256-
+:xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32
+:xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32
 :xref-IGovernor-COUNTING_MODE--: xref:governance.adoc#IGovernor-COUNTING_MODE--
 :xref-IGovernor-hasVoted-uint256-address-: xref:governance.adoc#IGovernor-hasVoted-uint256-address-
 :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
@@ -414,6 +420,8 @@
 :xref-Governor-_isValidDescriptionForProposer-address-string-: xref:governance.adoc#Governor-_isValidDescriptionForProposer-address-string-
 :xref-Governor-votingDelay--: xref:governance.adoc#Governor-votingDelay--
 :xref-Governor-votingPeriod--: xref:governance.adoc#Governor-votingPeriod--
+:xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32
+:xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32
 :xref-IGovernor-COUNTING_MODE--: xref:governance.adoc#IGovernor-COUNTING_MODE--
 :xref-IGovernor-hasVoted-uint256-address-: xref:governance.adoc#IGovernor-hasVoted-uint256-address-
 :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
@@ -510,6 +518,8 @@
 :xref-Governor-votingDelay--: xref:governance.adoc#Governor-votingDelay--
 :xref-Governor-votingPeriod--: xref:governance.adoc#Governor-votingPeriod--
 :xref-Governor-quorum-uint256-: xref:governance.adoc#Governor-quorum-uint256-
+:xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32
+:xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32
 :xref-IGovernor-COUNTING_MODE--: xref:governance.adoc#IGovernor-COUNTING_MODE--
 :xref-IGovernor-hasVoted-uint256-address-: xref:governance.adoc#IGovernor-hasVoted-uint256-address-
 :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
@@ -606,6 +616,8 @@
 :xref-Governor-votingDelay--: xref:governance.adoc#Governor-votingDelay--
 :xref-Governor-votingPeriod--: xref:governance.adoc#Governor-votingPeriod--
 :xref-Governor-quorum-uint256-: xref:governance.adoc#Governor-quorum-uint256-
+:xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32
+:xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32
 :xref-IGovernor-COUNTING_MODE--: xref:governance.adoc#IGovernor-COUNTING_MODE--
 :xref-IGovernor-hasVoted-uint256-address-: xref:governance.adoc#IGovernor-hasVoted-uint256-address-
 :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
@@ -699,6 +711,8 @@
 :xref-Governor-clock--: xref:governance.adoc#Governor-clock--
 :xref-Governor-CLOCK_MODE--: xref:governance.adoc#Governor-CLOCK_MODE--
 :xref-Governor-quorum-uint256-: xref:governance.adoc#Governor-quorum-uint256-
+:xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32
+:xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32
 :xref-IGovernor-COUNTING_MODE--: xref:governance.adoc#IGovernor-COUNTING_MODE--
 :xref-IGovernor-hasVoted-uint256-address-: xref:governance.adoc#IGovernor-hasVoted-uint256-address-
 :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
@@ -789,6 +803,8 @@
 :xref-Governor-votingDelay--: xref:governance.adoc#Governor-votingDelay--
 :xref-Governor-votingPeriod--: xref:governance.adoc#Governor-votingPeriod--
 :xref-Governor-quorum-uint256-: xref:governance.adoc#Governor-quorum-uint256-
+:xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32
+:xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32
 :xref-IGovernor-COUNTING_MODE--: xref:governance.adoc#IGovernor-COUNTING_MODE--
 :xref-IGovernor-hasVoted-uint256-address-: xref:governance.adoc#IGovernor-hasVoted-uint256-address-
 :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
@@ -882,6 +898,8 @@
 :xref-Governor-votingDelay--: xref:governance.adoc#Governor-votingDelay--
 :xref-Governor-votingPeriod--: xref:governance.adoc#Governor-votingPeriod--
 :xref-Governor-quorum-uint256-: xref:governance.adoc#Governor-quorum-uint256-
+:xref-Governor-BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-BALLOT_TYPEHASH-bytes32
+:xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32: xref:governance.adoc#Governor-EXTENDED_BALLOT_TYPEHASH-bytes32
 :xref-IGovernor-COUNTING_MODE--: xref:governance.adoc#IGovernor-COUNTING_MODE--
 :xref-IGovernor-hasVoted-uint256-address-: xref:governance.adoc#IGovernor-hasVoted-uint256-address-
 :xref-Nonces-nonces-address-: xref:utils.adoc#Nonces-nonces-address-
@@ -974,6 +992,9 @@
 :xref-TimelockController-_execute-address-uint256-bytes-: xref:governance.adoc#TimelockController-_execute-address-uint256-bytes-
 :xref-TimelockController-updateDelay-uint256-: xref:governance.adoc#TimelockController-updateDelay-uint256-
 :xref-TimelockController-_encodeStateBitmap-enum-TimelockController-OperationState-: xref:governance.adoc#TimelockController-_encodeStateBitmap-enum-TimelockController-OperationState-
+:xref-TimelockController-PROPOSER_ROLE-bytes32: xref:governance.adoc#TimelockController-PROPOSER_ROLE-bytes32
+:xref-TimelockController-EXECUTOR_ROLE-bytes32: xref:governance.adoc#TimelockController-EXECUTOR_ROLE-bytes32
+:xref-TimelockController-CANCELLER_ROLE-bytes32: xref:governance.adoc#TimelockController-CANCELLER_ROLE-bytes32
 :xref-ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-: xref:token/ERC1155.adoc#ERC1155Holder-onERC1155Received-address-address-uint256-uint256-bytes-
 :xref-ERC1155Holder-onERC1155BatchReceived-address-address-uint256---uint256---bytes-: xref:token/ERC1155.adoc#ERC1155Holder-onERC1155BatchReceived-address-address-uint256---uint256---bytes-
 :xref-ERC721Holder-onERC721Received-address-address-uint256-bytes-: xref:token/ERC721.adoc#ERC721Holder-onERC721Received-address-address-uint256-bytes-
@@ -987,6 +1008,7 @@
 :xref-AccessControl-_setRoleAdmin-bytes32-bytes32-: xref:access.adoc#AccessControl-_setRoleAdmin-bytes32-bytes32-
 :xref-AccessControl-_grantRole-bytes32-address-: xref:access.adoc#AccessControl-_grantRole-bytes32-address-
 :xref-AccessControl-_revokeRole-bytes32-address-: xref:access.adoc#AccessControl-_revokeRole-bytes32-address-
+:xref-AccessControl-DEFAULT_ADMIN_ROLE-bytes32: xref:access.adoc#AccessControl-DEFAULT_ADMIN_ROLE-bytes32
 :xref-TimelockController-CallScheduled-bytes32-uint256-address-uint256-bytes-bytes32-uint256-: xref:governance.adoc#TimelockController-CallScheduled-bytes32-uint256-address-uint256-bytes-bytes32-uint256-
 :xref-TimelockController-CallExecuted-bytes32-uint256-address-uint256-bytes-: xref:governance.adoc#TimelockController-CallExecuted-bytes32-uint256-address-uint256-bytes-
 :xref-TimelockController-CallSalt-bytes32-bytes32-: xref:governance.adoc#TimelockController-CallSalt-bytes32-bytes32-
@@ -1697,6 +1719,8 @@ This contract is abstract and requires several functions to be implemented in va
 * {xref-Governor-votingDelay--}[`++votingDelay()++`]
 * {xref-Governor-votingPeriod--}[`++votingPeriod()++`]
 * {xref-Governor-quorum-uint256-}[`++quorum(timepoint)++`]
+* {xref-Governor-BALLOT_TYPEHASH-bytes32}[`++BALLOT_TYPEHASH()++`]
+* {xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32}[`++EXTENDED_BALLOT_TYPEHASH()++`]
 
 [.contract-subindex-inherited]
 .IERC1155Receiver
@@ -2201,6 +2225,14 @@ Minimum number of cast voted required for a proposal to be successful.
 NOTE: The `timepoint` parameter corresponds to the snapshot used for counting vote. This allows to scale the
 quorum depending on values such as the totalSupply of a token at this timepoint (see {ERC20Votes}).
 
+[.contract-item]
+[[Governor-BALLOT_TYPEHASH-bytes32]]
+==== `[.contract-item-name]#++BALLOT_TYPEHASH++#++() → bytes32++` [.item-kind]#public#
+
+[.contract-item]
+[[Governor-EXTENDED_BALLOT_TYPEHASH-bytes32]]
+==== `[.contract-item-name]#++EXTENDED_BALLOT_TYPEHASH++#++() → bytes32++` [.item-kind]#public#
+
 === Modules
 
 :VoteType: pass:normal[xref:#GovernorCountingSimple-VoteType[`++VoteType++`]]
@@ -2279,6 +2311,8 @@ Extension of {Governor} for simple, 3 options, vote counting.
 * {xref-Governor-votingDelay--}[`++votingDelay()++`]
 * {xref-Governor-votingPeriod--}[`++votingPeriod()++`]
 * {xref-Governor-quorum-uint256-}[`++quorum(timepoint)++`]
+* {xref-Governor-BALLOT_TYPEHASH-bytes32}[`++BALLOT_TYPEHASH()++`]
+* {xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32}[`++EXTENDED_BALLOT_TYPEHASH()++`]
 
 [.contract-subindex-inherited]
 .IERC1155Receiver
@@ -2521,6 +2555,8 @@ token.
 * {xref-Governor-votingDelay--}[`++votingDelay()++`]
 * {xref-Governor-votingPeriod--}[`++votingPeriod()++`]
 * {xref-Governor-quorum-uint256-}[`++quorum(timepoint)++`]
+* {xref-Governor-BALLOT_TYPEHASH-bytes32}[`++BALLOT_TYPEHASH()++`]
+* {xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32}[`++EXTENDED_BALLOT_TYPEHASH()++`]
 
 [.contract-subindex-inherited]
 .IERC1155Receiver
@@ -2768,6 +2804,8 @@ fraction of the total supply.
 * {xref-Governor-_isValidDescriptionForProposer-address-string-}[`++_isValidDescriptionForProposer(proposer, description)++`]
 * {xref-Governor-votingDelay--}[`++votingDelay()++`]
 * {xref-Governor-votingPeriod--}[`++votingPeriod()++`]
+* {xref-Governor-BALLOT_TYPEHASH-bytes32}[`++BALLOT_TYPEHASH()++`]
+* {xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32}[`++EXTENDED_BALLOT_TYPEHASH()++`]
 
 [.contract-subindex-inherited]
 .IERC1155Receiver
@@ -3074,6 +3112,8 @@ the same time. See {AccessManager-schedule} for a workaround.
 * {xref-Governor-votingDelay--}[`++votingDelay()++`]
 * {xref-Governor-votingPeriod--}[`++votingPeriod()++`]
 * {xref-Governor-quorum-uint256-}[`++quorum(timepoint)++`]
+* {xref-Governor-BALLOT_TYPEHASH-bytes32}[`++BALLOT_TYPEHASH()++`]
+* {xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32}[`++EXTENDED_BALLOT_TYPEHASH()++`]
 
 [.contract-subindex-inherited]
 .IERC1155Receiver
@@ -3362,6 +3402,8 @@ inaccessible.
 * {xref-Governor-votingDelay--}[`++votingDelay()++`]
 * {xref-Governor-votingPeriod--}[`++votingPeriod()++`]
 * {xref-Governor-quorum-uint256-}[`++quorum(timepoint)++`]
+* {xref-Governor-BALLOT_TYPEHASH-bytes32}[`++BALLOT_TYPEHASH()++`]
+* {xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32}[`++EXTENDED_BALLOT_TYPEHASH()++`]
 
 [.contract-subindex-inherited]
 .IERC1155Receiver
@@ -3661,6 +3703,8 @@ Extension of {Governor} for settings updatable through governance.
 * {xref-Governor-clock--}[`++clock()++`]
 * {xref-Governor-CLOCK_MODE--}[`++CLOCK_MODE()++`]
 * {xref-Governor-quorum-uint256-}[`++quorum(timepoint)++`]
+* {xref-Governor-BALLOT_TYPEHASH-bytes32}[`++BALLOT_TYPEHASH()++`]
+* {xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32}[`++EXTENDED_BALLOT_TYPEHASH()++`]
 
 [.contract-subindex-inherited]
 .IERC1155Receiver
@@ -3966,6 +4010,8 @@ proposal.
 * {xref-Governor-votingDelay--}[`++votingDelay()++`]
 * {xref-Governor-votingPeriod--}[`++votingPeriod()++`]
 * {xref-Governor-quorum-uint256-}[`++quorum(timepoint)++`]
+* {xref-Governor-BALLOT_TYPEHASH-bytes32}[`++BALLOT_TYPEHASH()++`]
+* {xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32}[`++EXTENDED_BALLOT_TYPEHASH()++`]
 
 [.contract-subindex-inherited]
 .IERC1155Receiver
@@ -4249,6 +4295,8 @@ Use cases for this module include:
 * {xref-Governor-votingDelay--}[`++votingDelay()++`]
 * {xref-Governor-votingPeriod--}[`++votingPeriod()++`]
 * {xref-Governor-quorum-uint256-}[`++quorum(timepoint)++`]
+* {xref-Governor-BALLOT_TYPEHASH-bytes32}[`++BALLOT_TYPEHASH()++`]
+* {xref-Governor-EXTENDED_BALLOT_TYPEHASH-bytes32}[`++EXTENDED_BALLOT_TYPEHASH()++`]
 
 [.contract-subindex-inherited]
 .IERC1155Receiver
@@ -4777,6 +4825,9 @@ a multisig or a DAO as the sole proposer.
 * {xref-TimelockController-_execute-address-uint256-bytes-}[`++_execute(target, value, data)++`]
 * {xref-TimelockController-updateDelay-uint256-}[`++updateDelay(newDelay)++`]
 * {xref-TimelockController-_encodeStateBitmap-enum-TimelockController-OperationState-}[`++_encodeStateBitmap(operationState)++`]
+* {xref-TimelockController-PROPOSER_ROLE-bytes32}[`++PROPOSER_ROLE()++`]
+* {xref-TimelockController-EXECUTOR_ROLE-bytes32}[`++EXECUTOR_ROLE()++`]
+* {xref-TimelockController-CANCELLER_ROLE-bytes32}[`++CANCELLER_ROLE()++`]
 
 [.contract-subindex-inherited]
 .ERC1155Holder
@@ -4805,6 +4856,7 @@ a multisig or a DAO as the sole proposer.
 * {xref-AccessControl-_setRoleAdmin-bytes32-bytes32-}[`++_setRoleAdmin(role, adminRole)++`]
 * {xref-AccessControl-_grantRole-bytes32-address-}[`++_grantRole(role, account)++`]
 * {xref-AccessControl-_revokeRole-bytes32-address-}[`++_revokeRole(role, account)++`]
+* {xref-AccessControl-DEFAULT_ADMIN_ROLE-bytes32}[`++DEFAULT_ADMIN_ROLE()++`]
 
 [.contract-subindex-inherited]
 .ERC165
@@ -5080,6 +5132,18 @@ the underlying position in the `OperationState` enum. For example:
           ^-- Waiting
            ^- Unset
 
+[.contract-item]
+[[TimelockController-PROPOSER_ROLE-bytes32]]
+==== `[.contract-item-name]#++PROPOSER_ROLE++#++() → bytes32++` [.item-kind]#public#
+
+[.contract-item]
+[[TimelockController-EXECUTOR_ROLE-bytes32]]
+==== `[.contract-item-name]#++EXECUTOR_ROLE++#++() → bytes32++` [.item-kind]#public#
+
+[.contract-item]
+[[TimelockController-CANCELLER_ROLE-bytes32]]
+==== `[.contract-item-name]#++CANCELLER_ROLE++#++() → bytes32++` [.item-kind]#public#
+
 [.contract-item]
 [[TimelockController-CallScheduled-bytes32-uint256-address-uint256-bytes-bytes32-uint256-]]
 ==== `[.contract-item-name]#++CallScheduled++#++(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data, bytes32 predecessor, uint256 delay)++` [.item-kind]#event#

+ 26 - 0
docs/modules/api/pages/proxy.adoc

@@ -59,6 +59,7 @@
 :TransparentUpgradeableProxy: pass:normal[xref:proxy.adoc#TransparentUpgradeableProxy[`TransparentUpgradeableProxy`]]
 :xref-ProxyAdmin-constructor-address-: xref:proxy.adoc#ProxyAdmin-constructor-address-
 :xref-ProxyAdmin-upgradeAndCall-contract-ITransparentUpgradeableProxy-address-bytes-: xref:proxy.adoc#ProxyAdmin-upgradeAndCall-contract-ITransparentUpgradeableProxy-address-bytes-
+:xref-ProxyAdmin-UPGRADE_INTERFACE_VERSION-string: xref:proxy.adoc#ProxyAdmin-UPGRADE_INTERFACE_VERSION-string
 :xref-Ownable-owner--: xref:access.adoc#Ownable-owner--
 :xref-Ownable-_checkOwner--: xref:access.adoc#Ownable-_checkOwner--
 :xref-Ownable-renounceOwnership--: xref:access.adoc#Ownable-renounceOwnership--
@@ -119,6 +120,7 @@
 :xref-UUPSUpgradeable-_checkProxy--: xref:proxy.adoc#UUPSUpgradeable-_checkProxy--
 :xref-UUPSUpgradeable-_checkNotDelegated--: xref:proxy.adoc#UUPSUpgradeable-_checkNotDelegated--
 :xref-UUPSUpgradeable-_authorizeUpgrade-address-: xref:proxy.adoc#UUPSUpgradeable-_authorizeUpgrade-address-
+:xref-UUPSUpgradeable-UPGRADE_INTERFACE_VERSION-string: xref:proxy.adoc#UUPSUpgradeable-UPGRADE_INTERFACE_VERSION-string
 :xref-UUPSUpgradeable-UUPSUnauthorizedCallContext--: xref:proxy.adoc#UUPSUpgradeable-UUPSUnauthorizedCallContext--
 :xref-UUPSUpgradeable-UUPSUnsupportedProxiableUUID-bytes32-: xref:proxy.adoc#UUPSUpgradeable-UUPSUnsupportedProxiableUUID-bytes32-
 :Ownable-onlyOwner: pass:normal[xref:access.adoc#Ownable-onlyOwner--[`Ownable.onlyOwner`]]
@@ -583,6 +585,7 @@ explanation of why you would want to use this see the documentation for {Transpa
 --
 * {xref-ProxyAdmin-constructor-address-}[`++constructor(initialOwner)++`]
 * {xref-ProxyAdmin-upgradeAndCall-contract-ITransparentUpgradeableProxy-address-bytes-}[`++upgradeAndCall(proxy, implementation, data)++`]
+* {xref-ProxyAdmin-UPGRADE_INTERFACE_VERSION-string}[`++UPGRADE_INTERFACE_VERSION()++`]
 
 [.contract-subindex-inherited]
 .Ownable
@@ -633,6 +636,17 @@ Requirements:
 - This contract must be the admin of `proxy`.
 - If `data` is empty, `msg.value` must be zero.
 
+[.contract-item]
+[[ProxyAdmin-UPGRADE_INTERFACE_VERSION-string]]
+==== `[.contract-item-name]#++UPGRADE_INTERFACE_VERSION++#++() → string++` [.item-kind]#public#
+
+The version of the upgrade interface of the contract. If this getter is missing, both `upgrade(address)`
+and `upgradeAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,
+while `upgradeAndCall` will invoke the `receive` function if the second argument is the empty byte string.
+If the getter returns `"5.0.0"`, only `upgradeAndCall(address,bytes)` is present, and the second argument must
+be the empty byte string if no function should be called, making it impossible to invoke the `receive` function
+during an upgrade.
+
 == Beacon
 
 :constructor: pass:normal[xref:#BeaconProxy-constructor-address-bytes-[`++constructor++`]]
@@ -1153,6 +1167,7 @@ The {_authorizeUpgrade} function must be overridden to include access restrictio
 * {xref-UUPSUpgradeable-_checkProxy--}[`++_checkProxy()++`]
 * {xref-UUPSUpgradeable-_checkNotDelegated--}[`++_checkNotDelegated()++`]
 * {xref-UUPSUpgradeable-_authorizeUpgrade-address-}[`++_authorizeUpgrade(newImplementation)++`]
+* {xref-UUPSUpgradeable-UPGRADE_INTERFACE_VERSION-string}[`++UPGRADE_INTERFACE_VERSION()++`]
 
 [.contract-subindex-inherited]
 .IERC1822Proxiable
@@ -1237,6 +1252,17 @@ Normally, this function will use an xref:access.adoc[access control] modifier su
 function _authorizeUpgrade(address) internal onlyOwner {}
 ```
 
+[.contract-item]
+[[UUPSUpgradeable-UPGRADE_INTERFACE_VERSION-string]]
+==== `[.contract-item-name]#++UPGRADE_INTERFACE_VERSION++#++() → string++` [.item-kind]#public#
+
+The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`
+and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,
+while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.
+If the getter returns `"5.0.0"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must
+be the empty byte string if no function should be called, making it impossible to invoke the `receive` function
+during an upgrade.
+
 [.contract-item]
 [[UUPSUpgradeable-UUPSUnauthorizedCallContext--]]
 ==== `[.contract-item-name]#++UUPSUnauthorizedCallContext++#++()++` [.item-kind]#error#

+ 1 - 1
docs/templates/contract.hbs

@@ -86,7 +86,7 @@ import "@openzeppelin/{{__item_context.file.absolutePath}}";
 {{#each functions}}
 [.contract-item]
 [[{{anchor}}]]
-==== `[.contract-item-name]#++{{name}}++#++({{typed-params params}}){{#if returns}} → {{typed-params returns}}{{/if}}++` [.item-kind]#{{visibility}}#
+==== `[.contract-item-name]#++{{name}}++#++({{typed-params params}}){{#if returns2}} → {{typed-params returns2}}{{/if}}++` [.item-kind]#{{visibility}}#
 
 {{{natspec.dev}}}
 

+ 1 - 1
docs/templates/helpers.js

@@ -6,7 +6,7 @@ module.exports['readme-path'] = opts => {
   return 'contracts/' + opts.data.root.id.replace(/\.adoc$/, '') + '/README.adoc';
 };
 
-module.exports.names = params => params.map(p => p.name).join(', ');
+module.exports.names = params => params?.map(p => p.name).join(', ');
 
 module.exports['typed-params'] = params => {
   return params?.map(p => `${p.type}${p.indexed ? ' indexed' : ''}${p.name ? ' ' + p.name : ''}`).join(', ');

+ 16 - 1
docs/templates/properties.js

@@ -1,4 +1,4 @@
-const { isNodeType } = require('solidity-ast/utils');
+const { isNodeType, findAll } = require('solidity-ast/utils');
 const { slug } = require('./helpers');
 
 module.exports.anchor = function anchor({ item, contract }) {
@@ -39,6 +39,21 @@ module.exports['has-errors'] = function ({ item }) {
   return item.inheritance.some(c => c.errors.length > 0);
 };
 
+module.exports.functions = function ({ item }) {
+  return [
+    ...[...findAll('FunctionDefinition', item)].filter(f => f.visibility !== 'private'),
+    ...[...findAll('VariableDeclaration', item)].filter(f => f.visibility === 'public'),
+  ];
+};
+
+module.exports.returns2 = function ({ item }) {
+  if (isNodeType('VariableDeclaration', item)) {
+    return [{ type: item.typeDescriptions.typeString }];
+  } else {
+    return item.returns;
+  }
+};
+
 module.exports['inherited-functions'] = function ({ item }) {
   const { inheritance } = item;
   const baseFunctions = new Set(inheritance.flatMap(c => c.functions.flatMap(f => f.baseFunctions ?? [])));

+ 4 - 4
package-lock.json

@@ -17,7 +17,7 @@
         "@nomicfoundation/hardhat-network-helpers": "^1.0.3",
         "@nomiclabs/hardhat-truffle5": "^2.0.5",
         "@nomiclabs/hardhat-web3": "^2.0.0",
-        "@openzeppelin/docs-utils": "^0.1.4",
+        "@openzeppelin/docs-utils": "^0.1.5",
         "@openzeppelin/test-helpers": "^0.5.13",
         "@openzeppelin/upgrade-safe-transpiler": "^0.3.32",
         "@openzeppelin/upgrades-core": "^1.20.6",
@@ -2299,9 +2299,9 @@
       }
     },
     "node_modules/@openzeppelin/docs-utils": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/@openzeppelin/docs-utils/-/docs-utils-0.1.4.tgz",
-      "integrity": "sha512-2I56U1GhnNlymz0gGmJbyZKhnErGIaJ+rqtKTGyNf7YX3jgeS9/Twv8H0T+OgLV4dimtCHPz/27w6CYhWQ/TGg==",
+      "version": "0.1.5",
+      "resolved": "https://registry.npmjs.org/@openzeppelin/docs-utils/-/docs-utils-0.1.5.tgz",
+      "integrity": "sha512-GfqXArKmdq8rv+hsP+g8uS1VEkvMIzWs31dCONffzmqFwJ+MOsaNQNZNXQnLRgUkzk8i5mTNDjJuxDy+aBZImQ==",
       "dev": true,
       "dependencies": {
         "@frangio/servbot": "^0.2.5",

+ 1 - 1
package.json

@@ -57,7 +57,7 @@
     "@nomicfoundation/hardhat-network-helpers": "^1.0.3",
     "@nomiclabs/hardhat-truffle5": "^2.0.5",
     "@nomiclabs/hardhat-web3": "^2.0.0",
-    "@openzeppelin/docs-utils": "^0.1.4",
+    "@openzeppelin/docs-utils": "^0.1.5",
     "@openzeppelin/test-helpers": "^0.5.13",
     "@openzeppelin/upgrade-safe-transpiler": "^0.3.32",
     "@openzeppelin/upgrades-core": "^1.20.6",