-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathIPartyFactory.sol
37 lines (32 loc) · 1.48 KB
/
IPartyFactory.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// SPDX-License-Identifier: Beta Software
pragma solidity ^0.8;
import "../globals/IGlobals.sol";
import "../tokens/IERC721.sol";
import "./Party.sol";
// Creates generic Party instances.
interface IPartyFactory {
event PartyCreated(Party party, address creator);
/// @notice Deploy a new party instance. Afterwards, governance NFTs can be minted
/// for party members using the `mint()` function from the newly
/// created party.
/// @param authority The address that can call `mint()`.
/// @param opts Options used to initialize the party. These are fixed
/// and cannot be changed later.
/// @param preciousTokens The tokens that are considered precious by the
/// party.These are protected assets and are subject
/// to extra restrictions in proposals vs other
/// assets.
/// @param preciousTokenIds The IDs associated with each token in `preciousTokens`.
/// @return party The newly created `Party` instance.
function createParty(
address authority,
Party.PartyOptions calldata opts,
IERC721[] memory preciousTokens,
uint256[] memory preciousTokenIds
)
external
returns (Party party);
/// @notice The `Globals` contract storing global configuration values. This contract
/// is immutable and it’s address will never change.
function GLOBALS() external view returns (IGlobals);
}