I want to define limitations that apply different settings for merge requests for different branches

I am attempting to enforce a brnach policy by GitLab
Our branch policy specify that:
merges into main branch must be fast-forward-only and only after a specific pipeline has run and finished
merges to the develop branch should always be merge with a merge commit and have a different pipeline that needs to be run for them

how do i define it in such a way?