interface icoic {

    /**
     * @dev Mint tokens
     */
    function mint(address[] calldata receivers, string[] calldata uris) external;

    /**
     * @dev Lock transfers for specified tokens
     */
    function setTransferLock(uint256[] calldata tokenIds, bool lock) external;

    /**
     * @dev Burn all tokens
     */
    function burn() external;

    /**
     * @dev Move tokens
     */
    function move(uint256[] calldata tokenIds, address[] calldata recipients) external;

    /**
     * @dev Set the contract information
     */
    function setInfo(string calldata name_, string calldata symbol_) external;

    /**
     * @dev Set the image base uri (prefix)
     */
    function setPrefixURI(string calldata uri) external;

    /**
     * @dev Set the image base uri (common for all tokens)
     */
    function setCommonURI(string calldata uri) external;

    /**
     * @dev Set token uri
     */
    function setTokenURIs(uint256[] calldata tokenIds, string[] calldata uris) external;

    /**
     * @dev Update royalties
     */
    function updateRoyalties(address payable recipient, uint256 bps) external;

    /**
     * ROYALTY FUNCTIONS
     */
    function getRoyalties(uint256) external view returns (address payable[] memory recipients, uint256[] memory bps);
    function getFeeRecipients(uint256) external view returns (address payable[] memory recipients);
    function getFeeBps(uint256) external view returns (uint[] memory bps);
    function royaltyInfo(uint256, uint256 value) external view returns (address, uint256);
}
/**
 * coic Interface
 */
function getRoyalties(uint256) external view returns (address payable[] memory recipients, uint256[] memory bps);

/**
 * ROYALTY FUNCTIONS
 */