To give you an example, in my architecture I do not have separate layers for data sources and repo - instead they are merged into one layer (the "Data layer").
I also have a domain layer that has no external SDK dependencies. So my data later handles exceptions and if needed "translates" them into domain-specific errors