Manchester City have agreed a swap deal with Juventus involving Joao Cancelo and Danilo.