Files
dodo-contractV2/contracts/DODOFee/UserQuotaFactory.sol

53 lines
1.2 KiB
Solidity
Raw Normal View History

2022-02-18 21:12:18 +08:00
/*
Copyright 2022 DODO ZOO.
SPDX-License-Identifier: Apache-2.0
*/
pragma solidity 0.6.9;
pragma experimental ABIEncoderV2;
import {ICloneFactory} from "../lib/CloneFactory.sol";
import {InitializableOwnable} from "../lib/InitializableOwnable.sol";
interface IQuota {
function initOwner(address newOwner) external;
function getUserQuota(address user) external view returns (int);
}
/**
* @title DODO UserQuotaFactory
* @author DODO Breeder
*
*/
contract UserQuotaFactory is InitializableOwnable{
// ============ Templates ============
address public immutable _CLONE_FACTORY_;
address public immutable _USER_QUOTA_TEMPLATE_;
// ============ Events ============
event NewQuota(address quota);
// ============ Functions ============
constructor(
address cloneFactory,
address quotaTemplate
) public {
_CLONE_FACTORY_ = cloneFactory;
_USER_QUOTA_TEMPLATE_ = quotaTemplate;
}
function createQuota(
address quotaOwner
) external onlyOwner returns(address newQuota){
newQuota = ICloneFactory(_CLONE_FACTORY_).clone(_USER_QUOTA_TEMPLATE_);
IQuota(newQuota).initOwner(quotaOwner);
emit NewQuota(newQuota);
}
}