TransferManager
LooksRare protocol team (👀,💎); bitbeckers
TransferManager
This contract provides the transfer functions for ERC721/ERC1155/Hypercert for contracts that require them. Collection type "0" refers to ERC721 transfer functions. Collection type "1" refers to ERC1155 transfer functions. Collection type "2" refers to Hypercert transfer functions.
"Safe" transfer functions for ERC721 are not implemented since they come with added gas costs to verify if the recipient is a contract as it requires verifying the receiver interface is valid.
Methods​
allowOperator​
function allowOperator(address operator) external nonpayable
This function allows an operator to be added for the shared transfer system. Once the operator is allowed, users can grant NFT approvals to this operator.
Only callable by owner.
Parameters​
Name | Type | Description |
---|---|---|
operator | address | Operator address to allow |
cancelOwnershipTransfer​
function cancelOwnershipTransfer() external nonpayable
This function is used to cancel the ownership transfer.
This function can be used for both cancelling a transfer to a new owner and cancelling the renouncement of the ownership.
confirmOwnershipRenouncement​
function confirmOwnershipRenouncement() external nonpayable
This function is used to confirm the ownership renouncement.
confirmOwnershipTransfer​
function confirmOwnershipTransfer() external nonpayable
This function is used to confirm the ownership transfer.
This function can only be called by the current potential owner.
grantApprovals​
function grantApprovals(address[] operators) external nonpayable
This function allows a user to grant approvals for an array of operators. Users cannot grant approvals if the operator is not allowed by this contract's owner.
Each operator address must be globally allowed to be approved.
Parameters​
Name | Type | Description |
---|---|---|
operators | address[] | Array of operator addresses |
hasUserApprovedOperator​
function hasUserApprovedOperator(address, address) external view returns (bool)
This returns whether the user has approved the operator address. The first address is the user and the second address is the operator (e.g. LooksRareProtocol).
Parameters​
Name | Type | Description |
---|---|---|
_0 | address | undefined |
_1 | address | undefined |
Returns​
Name | Type | Description |
---|---|---|
_0 | bool | undefined |
initiateOwnershipRenouncement​
function initiateOwnershipRenouncement() external nonpayable
This function is used to initiate the ownership renouncement.
initiateOwnershipTransfer​
function initiateOwnershipTransfer(address newPotentialOwner) external nonpayable
This function is used to initiate the transfer of ownership to a new owner.
Parameters​
Name | Type | Description |
---|---|---|
newPotentialOwner | address | New potential owner address |
isOperatorAllowed​
function isOperatorAllowed(address) external view returns (bool)
This returns whether the operator address is allowed by this contract's owner.
Parameters​
Name | Type | Description |
---|---|---|
_0 | address | undefined |
Returns​
Name | Type | Description |
---|---|---|
_0 | bool | undefined |
owner​
function owner() external view returns (address)
Address of the current owner.
Returns​
Name | Type | Description |
---|---|---|
_0 | address | undefined |
ownershipStatus​
function ownershipStatus() external view returns (enum IOwnableTwoSteps.Status)
Ownership status.
Returns​
Name | Type | Description |
---|---|---|
_0 | enum IOwnableTwoSteps.Status | undefined |
potentialOwner​
function potentialOwner() external view returns (address)
Address of the potential owner.
Returns​
Name | Type | Description |
---|---|---|
_0 | address | undefined |
removeOperator​
function removeOperator(address operator) external nonpayable
This function allows the user to remove an operator for the shared transfer system.
Only callable by owner.
Parameters​
Name | Type | Description |
---|---|---|
operator | address | Operator address to remove |
revokeApprovals​
function revokeApprovals(address[] operators) external nonpayable
This function allows a user to revoke existing approvals for an array of operators.
Each operator address must be approved at the user level to be revoked.
Parameters​
Name | Type | Description |
---|---|---|
operators | address[] | Array of operator addresses |
splitItemsHypercert​
function splitItemsHypercert(address collection, address from, address to, uint256[] itemIds, uint256[] amounts) external nonpayable
This function splits and transfers a fraction of a hypercert.
It does not allow batch transferring.
Parameters​
Name | Type | Description |
---|---|---|
collection | address | Collection address |
from | address | Sender address |
to | address | Recipient address |
itemIds | uint256[] | Array of itemIds |
amounts | uint256[] | Array of amounts |
transferBatchItemsAcrossCollections​
function transferBatchItemsAcrossCollections(ITransferManager.BatchTransferItem[] items, address from, address to) external nonpayable
Parameters​
Name | Type | Description |
---|---|---|
items | ITransferManager.BatchTransferItem[] | undefined |
from | address | undefined |
to | address | undefined |
transferItemsERC1155​
function transferItemsERC1155(address collection, address from, address to, uint256[] itemIds, uint256[] amounts) external nonpayable
This function transfers items for a single ERC1155 collection.
It does not allow batch transferring if from = msg.sender since native function should be used.
Parameters​
Name | Type | Description |
---|---|---|
collection | address | Collection address |
from | address | Sender address |
to | address | Recipient address |
itemIds | uint256[] | Array of itemIds |
amounts | uint256[] | Array of amounts |
transferItemsERC721​
function transferItemsERC721(address collection, address from, address to, uint256[] itemIds, uint256[] amounts) external nonpayable
This function transfers items for a single ERC721 collection.
Parameters​
Name | Type | Description |
---|---|---|
collection | address | Collection address |
from | address | Sender address |
to | address | Recipient address |
itemIds | uint256[] | Array of itemIds |
amounts | uint256[] | Array of amounts |
transferItemsHypercert​
function transferItemsHypercert(address collection, address from, address to, uint256[] itemIds, uint256[] amounts) external nonpayable
This function transfers items for a single Hypercert.
It does not allow batch transferring if from = msg.sender since native function should be used.
Parameters​
Name | Type | Description |
---|---|---|
collection | address | Collection address |
from | address | Sender address |
to | address | Recipient address |
itemIds | uint256[] | Array of itemIds |
amounts | uint256[] | Array of amounts |
Events​
ApprovalsGranted​
event ApprovalsGranted(address user, address[] operators)
It is emitted if operators' approvals to transfer NFTs are granted by a user.
Parameters​
Name | Type | Description |
---|---|---|
user | address | undefined |
operators | address[] | undefined |
ApprovalsRemoved​
event ApprovalsRemoved(address user, address[] operators)
It is emitted if operators' approvals to transfer NFTs are revoked by a user.
Parameters​
Name | Type | Description |
---|---|---|
user | address | undefined |
operators | address[] | undefined |
CancelOwnershipTransfer​
event CancelOwnershipTransfer()
This is emitted if the ownership transfer is cancelled.
InitiateOwnershipRenouncement​
event InitiateOwnershipRenouncement()
This is emitted if the ownership renouncement is initiated.
InitiateOwnershipTransfer​
event InitiateOwnershipTransfer(address previousOwner, address potentialOwner)
This is emitted if the ownership transfer is initiated.
Parameters​
Name | Type | Description |
---|---|---|
previousOwner | address | undefined |
potentialOwner | address | undefined |
NewOwner​
event NewOwner(address newOwner)
This is emitted when there is a new owner.
Parameters​
Name | Type | Description |
---|---|---|
newOwner | address | undefined |
OperatorAllowed​
event OperatorAllowed(address operator)
It is emitted if a new operator is added to the global allowlist.
Parameters​
Name | Type | Description |
---|---|---|
operator | address | undefined |
OperatorRemoved​
event OperatorRemoved(address operator)
It is emitted if an operator is removed from the global allowlist.
Parameters​
Name | Type | Description |
---|---|---|
operator | address | undefined |
Errors​
AmountInvalid​
error AmountInvalid()
It is returned if the amount is invalid. For ERC721 and Hypercert, any number that is not 1. For ERC1155, if amount is 0.
ERC1155SafeBatchTransferFromFail​
error ERC1155SafeBatchTransferFromFail()
It is emitted if the ERC1155 safeBatchTransferFrom fails.
ERC1155SafeTransferFromFail​
error ERC1155SafeTransferFromFail()
It is emitted if the ERC1155 safeTransferFrom fails.
ERC721TransferFromFail​
error ERC721TransferFromFail()
It is emitted if the ERC721 transferFrom fails.
HypercertSplitFractionError​
error HypercertSplitFractionError()
LengthsInvalid​
error LengthsInvalid()
It is returned if there is either a mismatch or an error in the length of the array(s).
NoOngoingTransferInProgress​
error NoOngoingTransferInProgress()
This is returned when there is no transfer of ownership in progress.
NotAContract​
error NotAContract()
It is emitted if the call recipient is not a contract.
NotOwner​
error NotOwner()
This is returned when the caller is not the owner.
OperatorAlreadyAllowed​
error OperatorAlreadyAllowed()
It is returned if the transfer caller is already allowed by the owner.
This error can only be returned for owner operations.
OperatorAlreadyApprovedByUser​
error OperatorAlreadyApprovedByUser()
It is returned if the operator to approve has already been approved by the user.
OperatorNotAllowed​
error OperatorNotAllowed()
It is returned if the operator to approve is not in the global allowlist defined by the owner.
This error can be returned if the user tries to grant approval to an operator address not in the allowlist or if the owner tries to remove the operator from the global allowlist.
OperatorNotApprovedByUser​
error OperatorNotApprovedByUser()
It is returned if the operator to revoke has not been previously approved by the user.
RenouncementNotInProgress​
error RenouncementNotInProgress()
This is returned when there is no renouncement in progress but the owner tries to validate the ownership renouncement.
TransferAlreadyInProgress​
error TransferAlreadyInProgress()
This is returned when the transfer is already in progress but the owner tries initiate a new ownership transfer.
TransferCallerInvalid​
error TransferCallerInvalid()
It is returned if the transfer caller is invalid. For a transfer called to be valid, the operator must be in the global allowlist and approved by the 'from' user.
TransferNotInProgress​
error TransferNotInProgress()
This is returned when there is no ownership transfer in progress but the ownership change tries to be approved.
WrongPotentialOwner​
error WrongPotentialOwner()
This is returned when the ownership transfer is attempted to be validated by the a caller that is not the potential owner.