Behavioural Types for Local-First Software