DCIPs/assets/eip-6220/contracts/mocks/EquippableTokenMock.sol

101 lines
2.3 KiB
Solidity
Raw Normal View History

// SPDX-License-Identifier: CC0-1.0
pragma solidity ^0.8.16;
import "../EquippableToken.sol";
//Minimal public implementation of INestable for testing.
contract EquippableTokenMock is EquippableToken {
address private _issuer;
constructor() EquippableToken() {
_setIssuer(_msgSender());
}
modifier onlyIssuer() {
require(_msgSender() == _issuer, "RMRK: Only issuer");
_;
}
function setIssuer(address issuer) external onlyIssuer {
_setIssuer(issuer);
}
function _setIssuer(address issuer) private {
_issuer = issuer;
}
function getIssuer() external view returns (address) {
return _issuer;
}
function mint(address to, uint256 tokenId) external onlyIssuer {
_mint(to, tokenId);
}
function nestMint(
address to,
uint256 tokenId,
uint256 destinationId
) external {
_nestMint(to, tokenId, destinationId, "");
}
// Utility transfers:
function transfer(address to, uint256 tokenId) public virtual {
transferFrom(_msgSender(), to, tokenId);
}
function nestTransfer(
address to,
uint256 tokenId,
uint256 destinationId
) public virtual {
nestTransferFrom(_msgSender(), to, tokenId, destinationId, "");
}
function addAssetToToken(
uint256 tokenId,
uint64 assetId,
uint64 replacesAssetWithId
) external onlyIssuer {
_addAssetToToken(tokenId, assetId, replacesAssetWithId);
}
function addAssetEntry(
uint64 id,
string memory metadataURI
) external onlyIssuer {
_addAssetEntry(id, metadataURI);
}
function addEquippableAssetEntry(
uint64 id,
uint64 equippableGroupId,
address catalogAddress,
string memory metadataURI,
uint64[] calldata partIds
) external onlyIssuer {
_addAssetEntry(
id,
equippableGroupId,
catalogAddress,
metadataURI,
partIds
);
}
function setValidParentForEquippableGroup(
uint64 equippableGroupId,
address parentAddress,
uint64 partId
) external {
_setValidParentForEquippableGroup(
equippableGroupId,
parentAddress,
partId
);
}
}