/* Crafted with love by Fueled on Bacon https://fueledonbacon.com */ //SPDX-License-Identifier: MIT pragma solidity ^0.8.15; import "./IERC721Wide.sol"; interface IERC721E is IERC721Wide { event NewEntry(uint256 indexed pos, string name, uint256 indexed price, uint256 maxSupply, uint256 saleEnd); event MintTickets(address indexed buyer, uint256 indexed userId, uint256 indexed entryType, uint256 amount); struct EntryType { string name; uint256 price; uint256 maxSupply; uint256 maxBuy; uint256 sold; uint256 saleEnd; } /// @dev create ticket entry type, i.e VIP 2000USDC 100 /// @param name VIP, PLATINUM, TABLE.... /// @param price price per token/ticket /// @param maxSupply max number of tokens/tickets that can be sold /// @param maxBuy max number of tokens/tickets sender can buy /// @param saleEnd ticket sale deadline function createEntry( string memory name, uint256 price, uint256 maxSupply, uint256 maxBuy, uint256 saleEnd ) external; /// @dev mints/buys tokens/tickets for defined EntrType /// @param receiver token receiver /// @param userId user id /// @param entryPos location of EntryType /// @param amount amount of tokens/tickets to mint/buy /// @param sellingPrices array of prices the sender will sell the token/ticket function buyTickets( address receiver, uint256 userId, uint256 entryPos, uint256 amount, uint256[] memory sellingPrices ) external; function getTicketInfo(uint256 tokenId) external view returns (EntryType memory); function getEntry(uint256 pos) external view returns(EntryType memory); }