Skip to main content

TWFee

Methods​

DEFAULT_ADMIN_ROLE​

function DEFAULT_ADMIN_ROLE() external view returns (bytes32)

Returns​

NameTypeDescription
_0bytes32undefined

MAX_FEE_BPS​

function MAX_FEE_BPS() external view returns (uint256)

The maximum threshold for fees. 1%

Returns​

NameTypeDescription
_0uint256undefined

factory​

function factory() external view returns (contract TWFactory)

The factory for deploying contracts.

Returns​

NameTypeDescription
_0contract TWFactoryundefined

feeInfo​

function feeInfo(uint256, uint256) external view returns (uint256 bps, address recipient)

Mapping from pricing tier id => Fee Type (lib/FeeType.sol) => FeeInfo

Parameters​

NameTypeDescription
_0uint256undefined
_1uint256undefined

Returns​

NameTypeDescription
bpsuint256undefined
recipientaddressundefined

getFeeInfo​

function getFeeInfo(address _proxy, uint256 _feeType) external view returns (address recipient, uint256 bps)

Returns the fee info for a given module and fee type.

Parameters​

NameTypeDescription
_proxyaddressundefined
_feeTypeuint256undefined

Returns​

NameTypeDescription
recipientaddressundefined
bpsuint256undefined

getFeeTier​

function getFeeTier(address _deployer, address _proxy) external view returns (uint128 tierId, uint128 validUntilTimestamp)

Returns the fee tier for a proxy deployer wallet or contract address.

Parameters​

NameTypeDescription
_deployeraddressundefined
_proxyaddressundefined

Returns​

NameTypeDescription
tierIduint128undefined
validUntilTimestampuint128undefined

getRoleAdmin​

function getRoleAdmin(bytes32 role) external view returns (bytes32)

Returns the admin role that controls role. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.

Parameters​

NameTypeDescription
rolebytes32undefined

Returns​

NameTypeDescription
_0bytes32undefined

getRoleMember​

function getRoleMember(bytes32 role, uint256 index) external view returns (address)

Returns one of the accounts that have role. index must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296 for more information.

Parameters​

NameTypeDescription
rolebytes32undefined
indexuint256undefined

Returns​

NameTypeDescription
_0addressundefined

getRoleMemberCount​

function getRoleMemberCount(bytes32 role) external view returns (uint256)

Returns the number of accounts that have role. Can be used together with {getRoleMember} to enumerate all bearers of a role.

Parameters​

NameTypeDescription
rolebytes32undefined

Returns​

NameTypeDescription
_0uint256undefined

grantRole​

function grantRole(bytes32 role, address account) external nonpayable

Grants role to account. If account had not been already granted role, emits a {RoleGranted} event. Requirements: - the caller must have role's admin role. May emit a {RoleGranted} event.

Parameters​

NameTypeDescription
rolebytes32undefined
accountaddressundefined

hasRole​

function hasRole(bytes32 role, address account) external view returns (bool)

Returns true if account has been granted role.

Parameters​

NameTypeDescription
rolebytes32undefined
accountaddressundefined

Returns​

NameTypeDescription
_0boolundefined

isTrustedForwarder​

function isTrustedForwarder(address forwarder) external view returns (bool)

Parameters​

NameTypeDescription
forwarderaddressundefined

Returns​

NameTypeDescription
_0boolundefined

multicall​

function multicall(bytes[] data) external nonpayable returns (bytes[] results)

Receives and executes a batch of function calls on this contract.

Parameters​

NameTypeDescription
databytes[]undefined

Returns​

NameTypeDescription
resultsbytes[]undefined

renounceRole​

function renounceRole(bytes32 role, address account) external nonpayable

Revokes role from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked role, emits a {RoleRevoked} event. Requirements: - the caller must be account. May emit a {RoleRevoked} event.

Parameters​

NameTypeDescription
rolebytes32undefined
accountaddressundefined

revokeRole​

function revokeRole(bytes32 role, address account) external nonpayable

Revokes role from account. If account had been granted role, emits a {RoleRevoked} event. Requirements: - the caller must have role's admin role. May emit a {RoleRevoked} event.

Parameters​

NameTypeDescription
rolebytes32undefined
accountaddressundefined

setFeeInfoForTier​

function setFeeInfoForTier(uint256 _tierId, uint256 _feeBps, address _feeRecipient, uint256 _feeType) external nonpayable

Lets the admin set fee bps and recipient for the given pricing tier and fee type.

Parameters​

NameTypeDescription
_tierIduint256undefined
_feeBpsuint256undefined
_feeRecipientaddressundefined
_feeTypeuint256undefined

setFeeTierPlacementExtension​

function setFeeTierPlacementExtension(address _extension) external nonpayable

Parameters​

NameTypeDescription
_extensionaddressundefined

setTier​

function setTier(address _proxyOrDeployer, uint128 _tierId, uint128 _validUntilTimestamp) external nonpayable

Lets a TIER_CONTROLLER_ROLE holder assign a tier to a proxy deployer.

Parameters​

NameTypeDescription
_proxyOrDeployeraddressundefined
_tierIduint128undefined
_validUntilTimestampuint128undefined

supportsInterface​

function supportsInterface(bytes4 interfaceId) external view returns (bool)

See {IERC165-supportsInterface}.

Parameters​

NameTypeDescription
interfaceIdbytes4undefined

Returns​

NameTypeDescription
_0boolundefined

tierPlacementExtension​

function tierPlacementExtension() external view returns (contract IFeeTierPlacementExtension)

If we want to extend the logic for fee tier placement, we could easily points it to a different extension implementation.

Returns​

NameTypeDescription
_0contract IFeeTierPlacementExtensionundefined

Events​

FeeTierUpdated​

event FeeTierUpdated(uint256 indexed tierId, uint256 indexed feeType, address recipient, uint256 bps)

Parameters​

NameTypeDescription
tierId indexeduint256undefined
feeType indexeduint256undefined
recipientaddressundefined
bpsuint256undefined

RoleAdminChanged​

event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)

Parameters​

NameTypeDescription
role indexedbytes32undefined
previousAdminRole indexedbytes32undefined
newAdminRole indexedbytes32undefined

RoleGranted​

event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)

Parameters​

NameTypeDescription
role indexedbytes32undefined
account indexedaddressundefined
sender indexedaddressundefined

RoleRevoked​

event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)

Parameters​

NameTypeDescription
role indexedbytes32undefined
account indexedaddressundefined
sender indexedaddressundefined

TierUpdated​

event TierUpdated(address indexed proxyOrDeployer, uint256 tierId, uint256 validUntilTimestamp)

Events

Parameters​

NameTypeDescription
proxyOrDeployer indexedaddressundefined
tierIduint256undefined
validUntilTimestampuint256undefined