contract TestTransformerHost {

    using LibERC20Transformer for IERC20TokenV06;
    using LibRichErrorsV06 for bytes;

    function rawExecuteTransform(
        IERC20Transformer transformer,
        bytes32 callDataHash,
        address taker,
        bytes calldata data
    )
        external
    {
        (bool _success, bytes memory resultData) =
            address(transformer).delegatecall(abi.encodeWithSelector(
                transformer.transform.selector,
                callDataHash,
                taker,
                data
            ));
        if (!_success) {
            resultData.rrevert();
        }
        require(
            abi.decode(resultData, (bytes4)) == LibERC20Transformer.TRANSFORMER_SUCCESS,
            "TestTransformerHost/INVALID_TRANSFORMER_RESULT"
        );
    }

    // solhint-disable
    receive() external payable {}
    // solhint-enable
}
// solhint-disable