contract WorkerpoolRegistry is Registry
{
	/**
	 * Constructor
	 */
	constructor()
	public Registry(
		address(new Workerpool()),
		'iExec Workerpool Registry (V5)',
		'iExecWorkerpoolV5')
	{
	}

	/**
	 * Pool creation
	 */
	function encodeInitializer(
		string memory _workerpoolDescription)
	internal pure returns (bytes memory)
	{
		return abi.encodeWithSignature(
			'initialize(string)'
		,	_workerpoolDescription
		);
	}

	function createWorkerpool(
		address          _workerpoolOwner,
		string  calldata _workerpoolDescription)
	external returns (Workerpool)
	{
		return Workerpool(_mintCreate(_workerpoolOwner, encodeInitializer(_workerpoolDescription)));
	}

	function predictWorkerpool(
		address          _workerpoolOwner,
		string  calldata _workerpoolDescription)
	external view returns (Workerpool)
	{
		return Workerpool(_mintPredict(_workerpoolOwner, encodeInitializer(_workerpoolDescription)));
	}
}
function encodeInitializer(
	string memory _workerpoolDescription)
internal pure returns (bytes memory)
{
	return abi.encodeWithSignature(
		'initialize(string)'
	,	_workerpoolDescription
	);
}

/**
 	 * Pool creation
 	 */