The PublicLock Interface
Methods​  address2Str​  function address2Str(address _addr) external pure returns (string) Copy A utility function for erc721 metadata
Parameters​  Name Type Description _addr address An address to convert 
Returns​  Name Type Description _0 string undefined 
approve​  function approve(address _approved, uint256 _tokenId) external payable Copy Set or reaffirm the approved address for an NFT
The zero address indicates there is no approved address.Throws unless msg.sender is the current NFT owner, or an authorized  operator of the current owner. 
Parameters​  Name Type Description _approved address The new approved NFT controller _tokenId uint256 The NFT to approve 
balanceOf​  function balanceOf(address _owner) external view returns (uint256) Copy In the specific case of a Lock, each owner can own only at most 1 key.
Throws if _owner = address(0) 
Parameters​  Name Type Description _owner address The address of the key owner 
Returns​  Name Type Description _0 uint256 undefined 
beneficiary​  function beneficiary() external view returns (address) Copy =================================================================== Auto-generated getter functions from public state variables
Returns​  Name Type Description _0 address undefined 
cancelAndRefund​  function cancelAndRefund() external nonpayable Copy Destroys the msg.sender's key and sends a refund based on the amount of time remaining.
cancelAndRefundFor​  function cancelAndRefundFor(address _keyOwner, bytes _signature) external nonpayable Copy Cancels a key owned by a different user and sends the funds to the msg.sender. 
Parameters​  Name Type Description _keyOwner address this user's key will be canceled _signature bytes getCancelAndRefundApprovalHash signed by the _keyOwner 
destroyLock​  function destroyLock() external nonpayable Copy Used to clean up old lock contracts from the blockchain. TODO: add a check to ensure all keys are INVALID!
Throws if called by other than owner.Throws if lock has not yet been disabled. 
disableLock​  function disableLock() external nonpayable Copy Used to disable lock before migrating keys and/or destroying contract.
Throws if called by other than the owner.Throws if lock contract has already been disabled. 
expirationDuration​  function expirationDuration() external view returns (uint256) Copy Returns​  Name Type Description _0 uint256 undefined 
expireKeyFor​  function expireKeyFor(address _owner) external nonpayable Copy A function which lets the owner of the lock expire a users' key.
Throws if called by other than lock ownerThrows if key owner does not have a valid key 
Parameters​  Name Type Description _owner address The address of the key owner 
getApproved​  function getApproved(uint256 _tokenId) external view returns (address) Copy Will return the approved recipient for a key, if any.
Parameters​  Name Type Description _tokenId uint256 The ID of the token we're inquiring about. 
Returns​  Name Type Description _0 address undefined 
getCancelAndRefundApprovalHash​  function getCancelAndRefundApprovalHash(address _keyOwner, address _txSender) external view returns (bytes32 approvalHash) Copy returns the hash to sign in order to allow another user to cancel on your behalf. 
Parameters​  Name Type Description _keyOwner address The key owner's address _txSender address The address cancelling the key on behalf of the key-owner 
Returns​  Name Type Description approvalHash bytes32 undefined 
getCancelAndRefundValueFor​  function getCancelAndRefundValueFor(address _owner) external view returns (uint256 refund) Copy Determines how much of a refund a key owner would receive if they issued 
Parameters​  Name Type Description _owner address The key owner to get the refund value for. a cancelAndRefund block.timestamp. Note that due to the time required to mine a tx, the actual refund amount will be lower than what the user reads from this call. 
Returns​  Name Type Description refund uint256 undefined 
getHasValidKey​  function getHasValidKey(address _owner) external view returns (bool) Copy Checks if the user has a non-expired key.
Parameters​  Name Type Description _owner address The address of the key owner 
Returns​  Name Type Description _0 bool undefined 
getOwnersByPage​  function getOwnersByPage(uint256 _page, uint256 _pageSize) external view returns (address[]) Copy A function which returns a subset of the keys for this Lock as an array
Throws if there are no key owners yet 
Parameters​  Name Type Description _page uint256 the page of key owners requested when faceted by page size _pageSize uint256 the number of Key Owners requested per page 
Returns​  Name Type Description _0 address[] undefined 
getTokenIdFor​  function getTokenIdFor(address _account) external view returns (uint256) Copy Find the tokenId for a given user
Throws if key owner does not have a valid key 
Parameters​  Name Type Description _account address The address of the key owner 
Returns​  Name Type Description _0 uint256 undefined 
getTransferFee​  function getTransferFee(address _owner) external view returns (uint256) Copy Determines how much of a fee a key owner would need to pay in order to transfer the key to another account.  This is pro-rated so the fee goes down overtime.
Throws if _owner does not have a valid key 
Parameters​  Name Type Description _owner address The owner of the key check the transfer fee for. 
Returns​  Name Type Description _0 uint256 undefined 
grantKeys​  function grantKeys(address[] _recipients, uint256[] _expirationTimestamps) external nonpayable Copy Allows the Lock owner to give a collection of users a key with no charge. Each key may be assigned a different expiration date.
Throws if called by other than the lock-owner 
Parameters​  Name Type Description _recipients address[] An array of receiving addresses _expirationTimestamps uint256[] An array of expiration Timestamps for the keys being granted 
isAlive​  function isAlive() external view returns (bool) Copy Returns​  Name Type Description _0 bool undefined 
isApprovedForAll​  function isApprovedForAll(address _owner, address _operator) external view returns (bool) Copy Tells whether an operator is approved by a given owner 
Parameters​  Name Type Description _owner address owner address which you want to query the approval of _operator address operator address which you want to query the approval of 
Returns​  Name Type Description _0 bool undefined 
isKeyOwner​  function isKeyOwner(uint256 _tokenId, address _owner) external view returns (bool) Copy Checks if the given address owns the given tokenId.
Parameters​  Name Type Description _tokenId uint256 The tokenId of the key to check _owner address The potential key owners address 
Returns​  Name Type Description _0 bool undefined 
isOwner​  function isOwner() external view returns (bool) Copy Returns​  Name Type Description _0 bool undefined 
keyExpirationTimestampFor​  function keyExpirationTimestampFor(address _owner) external view returns (uint256 timestamp) Copy Returns the key's ExpirationTimestamp field for a given owner.Throws if owner has never owned a key for this lock 
Parameters​  Name Type Description _owner address address of the user for whom we search the key 
Returns​  Name Type Description timestamp uint256 undefined 
keyOwnerToNonce​  function keyOwnerToNonce(address) external view returns (uint256) Copy Parameters​  Name Type Description _0 address undefined 
Returns​  Name Type Description _0 uint256 undefined 
keyPrice​  function keyPrice() external view returns (uint256) Copy Returns​  Name Type Description _0 uint256 undefined 
maxNumberOfKeys​  function maxNumberOfKeys() external view returns (uint256) Copy Returns​  Name Type Description _0 uint256 undefined 
function name() external view returns (string _name) Copy A descriptive name for a collection of NFTs in this contract
Returns​  Name Type Description _name string undefined 
numberOfOwners​  function numberOfOwners() external view returns (uint256) Copy Public function which returns the total number of unique owners (both expired and valid).  This may be larger than totalSupply.
Returns​  Name Type Description _0 uint256 undefined 
function owner() external view returns (address) Copy =================================================================== From Openzeppelin's Ownable.sol
Returns​  Name Type Description _0 address undefined 
ownerOf​  function ownerOf(uint256 _tokenId) external view returns (address) Copy Find the owner of an NFT
NFTs assigned to zero address are considered invalid, and queries  about them do throw. 
Parameters​  Name Type Description _tokenId uint256 The identifier for an NFT 
Returns​  Name Type Description _0 address undefined 
function owners(uint256) external view returns (address) Copy Parameters​  Name Type Description _0 uint256 undefined 
Returns​  Name Type Description _0 address undefined 
publicLockVersion​  function publicLockVersion() external pure returns (uint16) Copy The version number of the current implementation on this network.
Returns​  Name Type Description _0 uint16 undefined 
purchaseFor​  function purchaseFor(address _recipient) external payable Copy Key Purchase functionThrows if lock is disabled. 
Parameters​  Name Type Description _recipient address address of the recipient of the purchased key 
purchaseForFrom​  function purchaseForFrom(address _recipient, address _referrer) external payable Copy Purchase function, public version, with referrer.Throws if lock is disabled, or if referrer doesn't have a valid key. 
Parameters​  Name Type Description _recipient address address of the recipient of the purchased key _referrer address address of the user making the referral 
renounceOwnership​  function renounceOwnership() external nonpayable Copy safeTransferFrom​  function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable Copy Transfers the ownership of an NFT from one address to another address
This works identically to the other function with an extra data parameter,  except this function just sets data to '' 
Parameters​  Name Type Description _from address The current owner of the NFT _to address The new owner _tokenId uint256 The NFT to transfer 
safeTransferFrom​  function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable Copy Transfers the ownership of an NFT from one address to another address
Throws unless msg.sender is the current owner, an authorized  operator, or the approved address for this NFT. Throws if _from is  not the current owner. Throws if _to is the zero address. Throws if  _tokenId is not a valid NFT. When transfer is complete, this function  checks if _to is a smart contract (code size > 0). If so, it calls  onERC721Received on _to and throws if the return value is not  bytes4(keccak256('onERC721Received(address,address,uint,bytes)')). 
Parameters​  Name Type Description _from address The current owner of the NFT _to address The new owner _tokenId uint256 The NFT to transfer data bytes Additional data with no specified format, sent in call to _to 
setApprovalForAll​  function setApprovalForAll(address _to, bool _approved) external nonpayable Copy Sets or unsets the approval of a given operator An operator is allowed to transfer all tokens of the sender on their behalfThrows if lock is disabled, or if _to == msg.sender. 
Parameters​  Name Type Description _to address operator address to set the approval _approved bool representing the status of the approval to be set 
setBaseTokenURI​  function setBaseTokenURI(string _baseTokenURI) external nonpayable Copy Allows the Lock owner to update the baseTokenURI for this Lock.
Throws if called by other than the lock owner 
Parameters​  Name Type Description _baseTokenURI string String representing the base of the URI for this lock. 
strConcat​  function strConcat(string _a, string _b, string _c, string _d) external pure returns (string _concatenatedString) Copy notice A utility function for erc721 metadata
Parameters​  Name Type Description _a string String 1 _b string String 2 _c string String 3 _d string String 4 
Returns​  Name Type Description _concatenatedString string undefined 
supportsInterface​  function supportsInterface(bytes4 interfaceId) external view returns (bool) Copy =================================================================== From ERC165.sol
Parameters​  Name Type Description interfaceId bytes4 undefined 
Returns​  Name Type Description _0 bool undefined 
function symbol() external view returns (string) Copy Gets the token symbol 
Returns​  Name Type Description _0 string undefined 
tokenURI​  function tokenURI(uint256 _tokenId) external view returns (string) Copy A distinct Uniform Resource Identifier (URI) for a given asset.
Throws if _tokenId is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the "ERC721 Metadata JSON Schema". https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md  
Parameters​  Name Type Description _tokenId uint256 The tokenID we're inquiring about 
Returns​  Name Type Description _0 string undefined 
totalSupply​  function totalSupply() external view returns (uint256) Copy =================================================================== From IERC721Enumerable
Returns​  Name Type Description _0 uint256 undefined 
transferFrom​  function transferFrom(address _from, address _to, uint256 _tokenId) external payable Copy =================================================================== From Openzeppelin's IERC721.solTransfer ownership of an NFT -- THE CALLER IS RESPONSIBLE  TO CONFIRM THAT _to IS CAPABLE OF RECEIVING NFTS OR ELSE  THEY MAY BE PERMANENTLY LOST
Throws unless msg.sender is the current owner, an authorized  operator, or the approved address for this NFT. Throws if _from is  not the current owner. Throws if _to is the zero address. Throws if  _tokenId is not a valid NFT. 
Parameters​  Name Type Description _from address The current owner of the NFT _to address The new owner _tokenId uint256 The NFT to transfer 
transferOwnership​  function transferOwnership(address newOwner) external nonpayable Copy Parameters​  Name Type Description newOwner address undefined 
uint2Str​  function uint2Str(uint256 _i) external pure returns (string _uintAsString) Copy A utility function for erc721 metadata
Parameters​  Name Type Description _i uint256 A uint to convert 
Returns​  Name Type Description _uintAsString string undefined 
unlockProtocol​  function unlockProtocol() external view returns (address) Copy Returns​  Name Type Description _0 address undefined 
updateBeneficiary​  function updateBeneficiary(address _beneficiary) external nonpayable Copy A function which lets the owner of the lock update the beneficiary account, which receives funds on withdrawal.
Throws if called by other than owner of beneficiaryThrows if _beneficiary is address(0) 
Parameters​  Name Type Description _beneficiary address The new address to set as the beneficiary 
updateKeyPrice​  function updateKeyPrice(uint256 _keyPrice) external nonpayable Copy A function which lets the owner of the lock to change the price for future purchases.
Throws if called by other than ownerThrows if lock has been disabled 
Parameters​  Name Type Description _keyPrice uint256 The new price to set for keys 
updateLockName​  function updateLockName(string _lockName) external nonpayable Copy Allows the Lock owner to assign a descriptive name for this Lock.
Throws if called by other than the lock owner 
Parameters​  Name Type Description _lockName string The new name for the lock 
updateLockSymbol​  function updateLockSymbol(string _lockSymbol) external nonpayable Copy Allows the Lock owner to assign a Symbol for this Lock.
Throws if called by other than the lock owner 
Parameters​  Name Type Description _lockSymbol string The new Symbol for the lock 
updateRefundPenalty​  function updateRefundPenalty(uint256 _refundPenaltyNumerator, uint256 _refundPenaltyDenominator) external nonpayable Copy Allow the owner to change the refund penalty.
Throws if called by other than owner 
Parameters​  Name Type Description _refundPenaltyNumerator uint256 undefined _refundPenaltyDenominator uint256 undefined 
updateTransferFee​  function updateTransferFee(uint256 _transferFeeNumerator, uint256 _transferFeeDenominator) external nonpayable Copy Allow the Lock owner to change the transfer fee.
Throws if called by other than lock-owner Ex: 200 bps = 2% 
Parameters​  Name Type Description _transferFeeNumerator uint256 undefined _transferFeeDenominator uint256 undefined 
withdraw​  function withdraw(uint256 _amount) external nonpayable Copy Called by owner to withdraw all funds from the lock and send them to the beneficiary.Throws if called by other than the owner or beneficiary 
Parameters​  Name Type Description _amount uint256 specifies the max amount to withdraw, which may be reduced when considering the available balance. Set to 0 or MAX_UINT to withdraw everything. -- however be wary of draining funds as it breaks the cancelAndRefund use case. 
Approval​  event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId) Copy Parameters​  Name Type Description _owner indexed address undefined _approved indexed address undefined _tokenId indexed uint256 undefined 
ApprovalForAll​  event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved) Copy Parameters​  Name Type Description _owner indexed address undefined _operator indexed address undefined _approved bool undefined 
CancelKey​  event CancelKey(uint256 indexed tokenId, address indexed owner, address indexed sendTo, uint256 refund) Copy Parameters​  Name Type Description tokenId indexed uint256 undefined owner indexed address undefined sendTo indexed address undefined refund uint256 undefined 
Destroy​  event Destroy(uint256 balance, address indexed owner) Copy Parameters​  Name Type Description balance uint256 undefined owner indexed address undefined 
Disable​  ExpireKey​  event ExpireKey(uint256 indexed tokenId) Copy Parameters​  Name Type Description tokenId indexed uint256 undefined 
NewLockSymbol​  event NewLockSymbol(string symbol) Copy Parameters​  Name Type Description symbol string undefined 
PriceChanged​  event PriceChanged(uint256 oldKeyPrice, uint256 keyPrice) Copy Parameters​  Name Type Description oldKeyPrice uint256 undefined keyPrice uint256 undefined 
RefundPenaltyChanged​  event RefundPenaltyChanged(uint256 _refundPenaltyNumerator, uint256 _refundPenaltyDenominator) Copy Parameters​  Name Type Description _refundPenaltyNumerator uint256 undefined _refundPenaltyDenominator uint256 undefined 
Transfer​  event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId) Copy Parameters​  Name Type Description _from indexed address undefined _to indexed address undefined _tokenId indexed uint256 undefined 
TransferFeeChanged​  event TransferFeeChanged(uint256 _transferFeeNumerator, uint256 _transferFeeDenominator) Copy Parameters​  Name Type Description _transferFeeNumerator uint256 undefined _transferFeeDenominator uint256 undefined 
Withdrawal​  event Withdrawal(address indexed sender, address indexed beneficiary, uint256 amount) Copy Parameters​  Name Type Description sender indexed address undefined beneficiary indexed address undefined amount uint256 undefined