// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@thirdweb-dev/contracts/eip/ERC1155.sol";
import "@thirdweb-dev/contracts/extension/LazyMint.sol";
import "@thirdweb-dev/contracts/extension/Drop1155.sol";
contract Contract is ERC1155, LazyMint, Drop1155 {
constructor(
string memory _name,
string memory _symbol
)
ERC1155(
_name,
_symbol
)
{}
function _canLazyMint() internal view override returns (bool) {
// Your custom implementation here
}
/// @dev Runs before every `claim` function call.
function _beforeClaim(
uint256 _tokenId,
address _receiver,
uint256 _quantity,
address _currency,
uint256 _pricePerToken,
AllowlistProof calldata _allowlistProof,
bytes memory _data
) internal virtual {}
/// @dev Runs after every `claim` function call.
function _afterClaim(
uint256 _tokenId,
address _receiver,
uint256 _quantity,
address _currency,
uint256 _pricePerToken,
AllowlistProof calldata _allowlistProof,
bytes memory _data
) internal virtual {}
/// @dev Collects and distributes the primary sale value of NFTs being claimed.
function _collectPriceOnClaim(
uint256 _tokenId,
address _primarySaleRecipient,
uint256 _quantityToClaim,
address _currency,
uint256 _pricePerToken
) internal virtual override {
if (_pricePerToken == 0) {
return;
}
uint256 totalPrice = _quantityToClaim * _pricePerToken;
if (_currency == CurrencyTransferLib.NATIVE_TOKEN) {
if (msg.value != totalPrice) {
revert("Must send total price.");
}
}
address saleRecipient = _primarySaleRecipient;
CurrencyTransferLib.transferCurrency(_currency, msg.sender, saleRecipient, totalPrice);
}
/// @dev Transfers the tokens being claimed.
function _transferTokensOnClaim(address _to, uint256 _tokenId, uint256 _quantityBeingClaimed)
internal
virtual
override
{
_mint(_to, _tokenId, _quantityBeingClaimed, "");
}
/// @dev Checks whether platform fee info can be set in the given execution context.
function _canSetClaimConditions()
internal
view
virtual
override
returns (bool)
{
return msg.sender == owner();
}
}