interface IDao is ISemanticSBT {
//初始化合约,由daoRegister合约调用进行合约初始化
function initialize(
address owner,
address minter,
string memory name_,
string memory symbol_,
string memory baseURI_,
string memory schemaURI_,
string[] memory classes_,
Predicate[] memory predicates_
) external;
/**
* 设置daoURI
* @param daoURI 将dao的信息存放至arweave上,把arweave的哈希作为daoURI
*/
function setDaoURI(string memory daoURI) external;
/**
* 是否开放加入
* @param isFreeJoin true-开放加入;false-非开放,需要dao的创建者将成员拉入dao
*/
function isFreeJoin() external view returns (bool);
/**
* 将指定地址加入dao
* @param addr 待加入的成员地址
*/
function addMember(address[] memory addr) external;
/**
* 自己主动加入dao
* @param tokenId
*/
function join() external returns (uint256);
/**
* 将地址移除dao
* @param addr 被移除的地址
* @return tokenId
*/
function remove(address addr) external returns (uint256);
/**
* 是否为dao的成员
* @param addr 被查询的地址
* @return isMember
*/
function isMember(address addr) external view returns (bool);
}