dao/contracts/terminus/TerminusFacet.sol

67 wiersze
1.8 KiB
Solidity
Czysty Zwykły widok Historia

// SPDX-License-Identifier: Apache-2.0
/**
* Authors: Moonstream Engineering (engineering@moonstream.to)
* GitHub: https://github.com/bugout-dev/dao
*
* This is an implementation of the ERC20 governance token for the Moonstream DAO.
*/
pragma solidity ^0.8.0;
import "./ERC1155WithTerminusStorage.sol";
import "./LibTerminus.sol";
import "../diamond/libraries/LibDiamond.sol";
contract TerminusFacet is ERC1155WithTerminusStorage {
constructor() {}
function terminusController() external view returns (address) {
return LibTerminus.terminusStorage().controller;
}
function setURI(uint256 poolID, string memory poolURI) external {
LibTerminus.enforcePoolIsController(poolID, _msgSender());
LibTerminus.TerminusStorage storage ts = LibTerminus.terminusStorage();
ts.poolURI[poolID] = poolURI;
}
function totalPools() external view returns (uint256) {
return LibTerminus.terminusStorage().currentPoolID;
}
function createPool() external returns (uint256) {
return LibTerminus.createPool();
}
function terminusPoolController(uint256 poolID)
external
view
returns (address)
{
return LibTerminus.terminusStorage().poolController[poolID];
}
function mint(
address to,
uint256 poolID,
uint256 amount,
bytes memory data
) external {
LibTerminus.enforcePoolIsController(poolID, msg.sender);
_mint(to, poolID, amount, data);
}
function mintBatch(
address to,
uint256[] memory poolIDs,
uint256[] memory amounts,
bytes memory data
) external {
for (uint256 i = 0; i < poolIDs.length; i++) {
LibTerminus.enforcePoolIsController(poolIDs[i], _msgSender());
}
_mintBatch(to, poolIDs, amounts, data);
}
}