contract LogMetadataTransformer is
    Transformer
{
    event TransformerMetadata(bytes32 callDataHash, address sender, address taker, bytes data);

    /// @dev Maximum uint256 value.
    uint256 private constant MAX_UINT256 = uint256(-1);

    /// @dev Emits an event.
    /// @param context Context information.
    /// @return success The success bytes (`LibERC20Transformer.TRANSFORMER_SUCCESS`).
    function transform(TransformContext calldata context)
        external
        override
        returns (bytes4 success)
    {
        emit TransformerMetadata(context.callDataHash, context.sender, context.taker, context.data);
        return LibERC20Transformer.TRANSFORMER_SUCCESS;
    }
}
/// @dev A transformer that just emits an event with an arbitrary byte payload.
function transform(TransformContext calldata context)
    external
    override
    returns (bytes4 success)
{
    emit TransformerMetadata(context.callDataHash, context.sender, context.taker, context.data);
    return LibERC20Transformer.TRANSFORMER_SUCCESS;
}

/// @dev Emits an event.
/// @param context Context information.
/// @return success The success bytes (`LibERC20Transformer.TRANSFORMER_SUCCESS`).