# Task Drafts

### Create draft task <a href="#create-draft-task" id="create-draft-task"></a>

#### Inputs <a href="#inputs" id="inputs"></a>

**Metadata**: string; the uri for the metadata of the proposal.

**StartDate:** uint64; unix timestamp (seconds) when the proposal voting period starts.

**EndDate**: uint64; unix timestamp (seconds) when the proposal voting period ends.

**TaskInfo**: CreateTaskInfo (tuple(string, uint64, ERC20Transfer\[] (tuple(address, uint96)), address, PreapprovedApplication\[] (tuple(address, Reward\[] (tuple(bool,address,uint88)))))); information about the task you want to propose to be created.

#### Code <a href="#code" id="code"></a>

````
```solidity
function createDraftTask(
    bytes calldata _metadata,
    uint64 _startDate,
    uint64 _endDate,
    CreateTaskInfo calldata _taskInfo
) external {
    // Could also add approve ERC20's of budget here
    // Currently the DAO should approve select ERC20's in advance (once) for unlimited spending

    IDAO.Action[] memory actions = new IDAO.Action[](1);
    {
        bytes memory callData = abi.encodeWithSelector(
            tasks.createTask.selector,
            _taskInfo.metadata,
            _taskInfo.deadline,
            _taskInfo.budget,
            _taskInfo.manager,
            _taskInfo.preapproved
        );
        actions[0] = IDAO.Action(address(tasks), 0, callData);
    }

    governancePlugin.createPluginProposal(
        _metadata,
        actions,
        0,
        _startDate,
        _endDate
    );
}
```
````

### Update Addresses <a href="#update-addresses" id="update-addresses"></a>

#### Inputs <a href="#inputs-1" id="inputs-1"></a>

**Tasks**: ITasks (address); the new address of the tasks contract used to create the draft tasks.

**GovernancePlugin**: IPluginProposals (address); the new address of the governance plugin used to create proposals.

#### Code <a href="#code-1" id="code-1"></a>

````
```solidity
function updateAddresses(
    ITasks _tasks,
    IPluginProposals _governancePlugin
) external auth(UPDATE_ADDRESSES_PERMISSION_ID) {
    tasks = _tasks;
    governancePlugin = _governancePlugin;
}
```
````

### [Auto-generated documentation](https://github.com/L3A-Protocol/openrd/blob/main/docs/DAO/TaskDrafts/TaskDrafts.md) <a href="#auto-generated-documentation" id="auto-generated-documentation"></a>
