CreatorExtensionRoyalties.sol
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
import "@manifoldxyz/libraries-solidity/contracts/access/AdminControl.sol";
import "../core/IERC721CreatorCore.sol";
import "./CreatorExtension.sol";
import "./ICreatorExtensionRoyalties.sol";
abstract contract CreatorExtensionRoyalties is AdminControl, CreatorExtension, ICreatorExtensionRoyalties {
function supportsInterface(bytes4 interfaceId) public view virtual override(AdminControl, CreatorExtension, IERC165) returns (bool) {
return interfaceId == type(ICreatorExtensionRoyalties).interfaceId
|| super.supportsInterface(interfaceId);
}
function getRoyalties(address creator, uint256 tokenId) external virtual view returns (address payable[] memory, uint256[] memory);
}
IERC721CreatorCore.sol
pragma solidity ^0.8.0;
import "./ICreatorCore.sol";
interface IERC721CreatorCore is ICreatorCore {
function mintBase(address to) external returns (uint256);
function mintBase(address to, string calldata uri) external returns (uint256);
function mintBaseBatch(address to, uint16 count) external returns (uint256[] memory);
function mintBaseBatch(address to, string[] calldata uris) external returns (uint256[] memory);
function mintExtension(address to) external returns (uint256);
function mintExtension(address to, string calldata uri) external returns (uint256);
function mintExtensionBatch(address to, uint16 count) external returns (uint256[] memory);
function mintExtensionBatch(address to, string[] calldata uris) external returns (uint256[] memory);
function burn(uint256 tokenId) external;
}
CreatorExtension.sol
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/utils/introspection/ERC165.sol";
abstract contract CreatorExtension is ERC165 {
bytes4 constant internal LEGACY_EXTENSION_INTERFACE = 0x7005caad;
function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165) returns (bool) {
return interfaceId == LEGACY_EXTENSION_INTERFACE
|| super.supportsInterface(interfaceId);
}
}
ICreatorExtensionRoyalties.sol
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/utils/introspection/IERC165.sol";
interface ICreatorExtensionRoyalties is IERC165 {
function getRoyalties(address creator, uint256 tokenId) external view returns (address payable[] memory, uint256[] memory);
}