How would one pass in these values in create_contract?
balances seems to be more a map or a big map as explained here: How do I decide between using map, big_map, and record?.
Have a look at my first code
Now if balances is a big map:
sp.create_contract(
ExampleContract, None, sp.tez(0), sp.record(owner=owner, balances=sp.big_map()))