Skip to main content

IPublicLockV7

The PublicLock Interface

Methods

addKeyGranter

function addKeyGranter(address account) external nonpayable

Parameters

NameTypeDescription
accountaddressundefined

addLockManager

function addLockManager(address account) external nonpayable

Parameters

NameTypeDescription
accountaddressundefined

approve

function approve(address to, uint256 tokenId) external nonpayable

Parameters

NameTypeDescription
toaddressundefined
tokenIduint256undefined

balanceOf

function balanceOf(address _owner) external view returns (uint256 balance)

Returns the number of NFTs in owner's account.

Parameters

NameTypeDescription
_owneraddressundefined

Returns

NameTypeDescription
balanceuint256undefined

beneficiary

function beneficiary() external view returns (address)

=================================================================== Auto-generated getter functions from public state variables

Returns

NameTypeDescription
_0addressundefined

cancelAndRefund

function cancelAndRefund(uint256 _tokenId) external nonpayable

allows the key manager to expire a given tokenId and send a refund to the keyOwner based on the amount of time remaining.

Parameters

NameTypeDescription
_tokenIduint256The id of the key to cancel.

cancelAndRefundFor

function cancelAndRefundFor(address _keyManager, uint8 _v, bytes32 _r, bytes32 _s, uint256 _tokenId) external nonpayable

Cancels a key managed by a different user and sends the funds to the keyOwner.

Parameters

NameTypeDescription
_keyManageraddressthe key managed by this user will be canceled
_vuint8_r _s getCancelAndRefundApprovalHash signed by the _keyManager
_rbytes32undefined
_sbytes32undefined
_tokenIduint256The key to cancel

disableLock

function disableLock() external nonpayable

Used to disable lock before migrating keys and/or destroying contract.

Throws if called by other than a lock manager.Throws if lock contract has already been disabled.

expirationDuration

function expirationDuration() external view returns (uint256)

Returns

NameTypeDescription
_0uint256undefined

expireAndRefundFor

function expireAndRefundFor(address _keyOwner, uint256 amount) external nonpayable

Invoked by a Lock manager to expire the user's key and perform a refund and cancellation of the keyThrows if called by other than a Lock managerThrows if _keyOwner does not have a valid key

Parameters

NameTypeDescription
_keyOwneraddressThe key owner to whom we wish to send a refund to
amountuint256The amount to refund the key-owner

freeTrialLength

function freeTrialLength() external view returns (uint256)

Returns

NameTypeDescription
_0uint256undefined

getApproved

function getApproved(uint256 _tokenId) external view returns (address operator)

Get the approved address for a single NFT

Throws if _tokenId is not a valid NFT.

Parameters

NameTypeDescription
_tokenIduint256The NFT to find the approved address for

Returns

NameTypeDescription
operatoraddressundefined

getBalance

function getBalance(address _tokenAddress, address _account) external view returns (uint256)

Gets the current balance of the account provided.

Parameters

NameTypeDescription
_tokenAddressaddressThe token type to retrieve the balance of.
_accountaddressThe account to get the balance of.

Returns

NameTypeDescription
_0uint256undefined

getCancelAndRefundApprovalHash

function getCancelAndRefundApprovalHash(address _keyManager, address _txSender) external view returns (bytes32 approvalHash)

returns the hash to sign in order to allow another user to cancel on your behalf.

this can be computed in JS instead of read from the contract.

Parameters

NameTypeDescription
_keyManageraddressThe key manager's address (also the message signer)
_txSenderaddressThe address cancelling cancel on behalf of the keyOwner

Returns

NameTypeDescription
approvalHashbytes32undefined

getCancelAndRefundValueFor

function getCancelAndRefundValueFor(address _keyOwner) external view returns (uint256 refund)

Determines how much of a refund a key owner would receive if they issued

Parameters

NameTypeDescription
_keyOwneraddressThe 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

NameTypeDescription
refunduint256undefined

getHasValidKey

function getHasValidKey(address _user) external view returns (bool)

Checks if the user has a non-expired key.

Parameters

NameTypeDescription
_useraddressThe address of the key owner

Returns

NameTypeDescription
_0boolundefined

getOwnersByPage

function getOwnersByPage(uint256 _page, uint256 _pageSize) external view returns (address[])

A function which returns a subset of the keys for this Lock as an array

Throws if there are no key owners yet

Parameters

NameTypeDescription
_pageuint256the page of key owners requested when faceted by page size
_pageSizeuint256the number of Key Owners requested per page

Returns

NameTypeDescription
_0address[]undefined

getTokenIdFor

function getTokenIdFor(address _account) external view returns (uint256)

Find the tokenId for a given user

Parameters

NameTypeDescription
_accountaddressThe address of the key owner

Returns

NameTypeDescription
_0uint256undefined

getTransferFee

function getTransferFee(address _keyOwner, uint256 _time) external view returns (uint256)

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 _keyOwner does not have a valid key

Parameters

NameTypeDescription
_keyOwneraddressThe owner of the key check the transfer fee for.
_timeuint256The amount of time to calculate the fee for.

Returns

NameTypeDescription
_0uint256undefined

grantKeys

function grantKeys(address[] _recipients, uint256[] _expirationTimestamps, address[] _keyManagers) external nonpayable

Allows a Lock manager 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 a Lock manager

Parameters

NameTypeDescription
_recipientsaddress[]An array of receiving addresses
_expirationTimestampsuint256[]An array of expiration Timestamps for the keys being granted
_keyManagersaddress[]undefined

initialize

function initialize(address _lockCreator, uint256 _expirationDuration, address _tokenAddress, uint256 _keyPrice, uint256 _maxNumberOfKeys, string _lockName) external nonpayable

Functions

Parameters

NameTypeDescription
_lockCreatoraddressundefined
_expirationDurationuint256undefined
_tokenAddressaddressundefined
_keyPriceuint256undefined
_maxNumberOfKeysuint256undefined
_lockNamestringundefined

initialize

function initialize() external nonpayable

Never used directly

invalidateOffchainApproval

function invalidateOffchainApproval(uint256 _nextAvailableNonce) external nonpayable

Sets the minimum nonce for a valid off-chain approval message from the senders account.

This can be used to invalidate a previously signed message.

Parameters

NameTypeDescription
_nextAvailableNonceuint256undefined

isAlive

function isAlive() external view returns (bool)

Returns

NameTypeDescription
_0boolundefined

isApprovedForAll

function isApprovedForAll(address _owner, address operator) external view returns (bool)

Parameters

NameTypeDescription
_owneraddressundefined
operatoraddressundefined

Returns

NameTypeDescription
_0boolundefined

isKeyGranter

function isKeyGranter(address account) external view returns (bool)

Parameters

NameTypeDescription
accountaddressundefined

Returns

NameTypeDescription
_0boolundefined

isKeyOwner

function isKeyOwner(uint256 _tokenId, address _keyOwner) external view returns (bool)

Checks if the given address owns the given tokenId.

Parameters

NameTypeDescription
_tokenIduint256The tokenId of the key to check
_keyOwneraddressThe potential key owners address

Returns

NameTypeDescription
_0boolundefined

isLockManager

function isLockManager(address account) external view returns (bool)

Parameters

NameTypeDescription
accountaddressundefined

Returns

NameTypeDescription
_0boolundefined

keyExpirationTimestampFor

function keyExpirationTimestampFor(address _keyOwner) external view returns (uint256 timestamp)

Returns the key's ExpirationTimestamp field for a given owner.Returns 0 if the owner has never owned a key for this lock

Parameters

NameTypeDescription
_keyOwneraddressaddress of the user for whom we search the key

Returns

NameTypeDescription
timestampuint256undefined

keyManagerOf

function keyManagerOf(uint256) external view returns (address)

Parameters

NameTypeDescription
_0uint256undefined

Returns

NameTypeDescription
_0addressundefined

keyManagerToNonce

function keyManagerToNonce(address) external view returns (uint256)

Parameters

NameTypeDescription
_0addressundefined

Returns

NameTypeDescription
_0uint256undefined

keyPrice

function keyPrice() external view returns (uint256)

Returns

NameTypeDescription
_0uint256undefined

maxNumberOfKeys

function maxNumberOfKeys() external view returns (uint256)

Returns

NameTypeDescription
_0uint256undefined

name

function name() external view returns (string _name)

A descriptive name for a collection of NFTs in this contract

Returns

NameTypeDescription
_namestringundefined

numberOfOwners

function numberOfOwners() external view returns (uint256)

Public function which returns the total number of unique owners (both expired and valid). This may be larger than totalSupply.

Returns

NameTypeDescription
_0uint256undefined

onKeyCancelHook

function onKeyCancelHook() external view returns (address)

Returns

NameTypeDescription
_0addressundefined

onKeyPurchaseHook

function onKeyPurchaseHook() external view returns (address)

Returns

NameTypeDescription
_0addressundefined

ownerOf

function ownerOf(uint256 tokenId) external view returns (address _owner)

Returns the owner of the NFT specified by tokenId.

Parameters

NameTypeDescription
tokenIduint256undefined

Returns

NameTypeDescription
_owneraddressundefined

owners

function owners(uint256) external view returns (address)

Parameters

NameTypeDescription
_0uint256undefined

Returns

NameTypeDescription
_0addressundefined

publicLockVersion

function publicLockVersion() external pure returns (uint256)

The version number of the current implementation on this network.

Returns

NameTypeDescription
_0uint256undefined

purchase

function purchase(uint256 _value, address _recipient, address _referrer, bytes _data) external payable

Purchase functionThrows if lock is disabled. Throws if lock is sold-out. Throws if _recipient == address(0).Setting _value to keyPrice exactly doubles as a security feature. That way if a Lock manager increases the price while my transaction is pending I can't be charged more than I expected (only applicable to ERC-20 when more than keyPrice is approved for spending).

Parameters

NameTypeDescription
_valueuint256the number of tokens to pay for this purchase >= the current keyPrice - any applicable discount (_value is ignored when using ETH)
_recipientaddressaddress of the recipient of the purchased key
_referreraddressaddress of the user making the referral
_databytesarbitrary data populated by the front-end which initiated the sale

purchasePriceFor

function purchasePriceFor(address _recipient, address _referrer, bytes _data) external view returns (uint256)

returns the minimum price paid for a purchase with these params.

this considers any discount from Unlock or the OnKeyPurchase hook.

Parameters

NameTypeDescription
_recipientaddressundefined
_referreraddressundefined
_databytesundefined

Returns

NameTypeDescription
_0uint256undefined

refundPenaltyBasisPoints

function refundPenaltyBasisPoints() external view returns (uint256)

Returns

NameTypeDescription
_0uint256undefined

renounceLockManager

function renounceLockManager() external nonpayable

revokeKeyGranter

function revokeKeyGranter(address _granter) external nonpayable

Parameters

NameTypeDescription
_granteraddressundefined

safeTransferFrom

function safeTransferFrom(address from, address to, uint256 tokenId) external nonpayable

Transfers a specific NFT (tokenId) from one account (from) to another (to). Requirements: - from, to cannot be zero. - tokenId must be owned by from. - If the caller is not from, it must be have been allowed to move this NFT by either {approve} or {setApprovalForAll}.

Parameters

NameTypeDescription
fromaddressundefined
toaddressundefined
tokenIduint256undefined

safeTransferFrom

function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) external nonpayable

Parameters

NameTypeDescription
fromaddressundefined
toaddressundefined
tokenIduint256undefined
databytesundefined

setApprovalForAll

function setApprovalForAll(address operator, bool _approved) external nonpayable

Parameters

NameTypeDescription
operatoraddressundefined
_approvedboolundefined

setBaseTokenURI

function setBaseTokenURI(string _baseTokenURI) external nonpayable

Allows a Lock manager to update the baseTokenURI for this Lock.

Throws if called by other than a Lock manager

Parameters

NameTypeDescription
_baseTokenURIstringString representing the base of the URI for this lock.

setEventHooks

function setEventHooks(address _onKeyPurchaseHook, address _onKeyCancelHook) external nonpayable

Allows a Lock manager to add or remove an event hook

Parameters

NameTypeDescription
_onKeyPurchaseHookaddressHook called when the purchase function is called
_onKeyCancelHookaddressHook called when the internal _cancelAndRefund function is called

setKeyManagerOf

function setKeyManagerOf(uint256 _tokenId, address _keyManager) external nonpayable

Update transfer and cancel rights for a given key

Parameters

NameTypeDescription
_tokenIduint256The id of the key to assign rights for
_keyManageraddressThe address to assign the rights to for the given key

shareKey

function shareKey(address _to, uint256 _tokenId, uint256 _timeShared) external nonpayable

Allows the key owner to safely share their key (parent key) by transferring a portion of the remaining time to a new key (child key).

Throws if key is not valid.Throws if _to is the zero addressEmit Transfer event

Parameters

NameTypeDescription
_toaddressThe recipient of the shared key
_tokenIduint256the key to share
_timeShareduint256The amount of time shared 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)')).

supportsInterface

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

=================================================================== From ERC165.sol

Parameters

NameTypeDescription
interfaceIdbytes4undefined

Returns

NameTypeDescription
_0boolundefined

symbol

function symbol() external view returns (string)

Gets the token symbol

Returns

NameTypeDescription
_0stringundefined

tokenAddress

function tokenAddress() external view returns (address)

Returns

NameTypeDescription
_0addressundefined

tokenByIndex

function tokenByIndex(uint256 index) external view returns (uint256)

Parameters

NameTypeDescription
indexuint256undefined

Returns

NameTypeDescription
_0uint256undefined

tokenOfOwnerByIndex

function tokenOfOwnerByIndex(address _owner, uint256 index) external view returns (uint256 tokenId)

Parameters

NameTypeDescription
_owneraddressundefined
indexuint256undefined

Returns

NameTypeDescription
tokenIduint256undefined

tokenURI

function tokenURI(uint256 _tokenId) external view returns (string)

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

NameTypeDescription
_tokenIduint256The tokenID we're inquiring about

Returns

NameTypeDescription
_0stringundefined

totalSupply

function totalSupply() external view returns (uint256)

Returns

NameTypeDescription
_0uint256undefined

transferFeeBasisPoints

function transferFeeBasisPoints() external view returns (uint256)

Returns

NameTypeDescription
_0uint256undefined

transferFrom

function transferFrom(address from, address to, uint256 tokenId) external nonpayable

Transfers a specific NFT (tokenId) from one account (from) to another (to). Requirements: - If the caller is not from, it must be approved to move this NFT by either {approve} or {setApprovalForAll}.*

Parameters

NameTypeDescription
fromaddressundefined
toaddressundefined
tokenIduint256undefined

unlockProtocol

function unlockProtocol() external view returns (address)

Returns

NameTypeDescription
_0addressundefined

updateBeneficiary

function updateBeneficiary(address _beneficiary) external nonpayable

A function which lets a Lock manager update the beneficiary account, which receives funds on withdrawal.

Throws if called by other than a Lock manager or beneficiaryThrows if _beneficiary is address(0)

Parameters

NameTypeDescription
_beneficiaryaddressThe new address to set as the beneficiary

updateKeyPricing

function updateKeyPricing(uint256 _keyPrice, address _tokenAddress) external nonpayable

A function which lets a Lock manager of the lock to change the price for future purchases.

Throws if called by other than a Lock managerThrows if lock has been disabledThrows if _tokenAddress is not a valid token

Parameters

NameTypeDescription
_keyPriceuint256The new price to set for keys
_tokenAddressaddressThe address of the erc20 token to use for pricing the keys, or 0 to use ETH

updateLockName

function updateLockName(string _lockName) external nonpayable

Allows a Lock manager to assign a descriptive name for this Lock.

Throws if called by other than a Lock manager

Parameters

NameTypeDescription
_lockNamestringThe new name for the lock

updateLockSymbol

function updateLockSymbol(string _lockSymbol) external nonpayable

Allows a Lock manager to assign a Symbol for this Lock.

Throws if called by other than a Lock manager

Parameters

NameTypeDescription
_lockSymbolstringThe new Symbol for the lock

updateRefundPenalty

function updateRefundPenalty(uint256 _freeTrialLength, uint256 _refundPenaltyBasisPoints) external nonpayable

Allow a Lock manager to change the refund penalty.

Throws if called by other than a Lock manager

Parameters

NameTypeDescription
_freeTrialLengthuint256The new duration of free trials for this lock
_refundPenaltyBasisPointsuint256The new refund penaly in basis-points(bps)

updateTransferFee

function updateTransferFee(uint256 _transferFeeBasisPoints) external nonpayable

Allow a Lock manager to change the transfer fee.

Throws if called by other than a Lock manager

Parameters

NameTypeDescription
_transferFeeBasisPointsuint256The new transfer fee in basis-points(bps). Ex: 200 bps = 2%

withdraw

function withdraw(address _tokenAddress, uint256 _amount) external nonpayable

Called by a lock manager or beneficiary to withdraw all funds from the lock and send them to the beneficiary.Throws if called by other than a lock manager or beneficiary

Parameters

NameTypeDescription
_tokenAddressaddressspecifies the token address to withdraw or 0 for ETH. This is usually the same as tokenAddress in MixinFunds.
_amountuint256specifies 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 and expireAndRefundFor use cases.