Using `git_remote_callbacks` is going to give you a hard time. It's **really** low-level in the protocol; most Obj-C users will want something that's easier to consume.

I'd recommend using the higher-level progress callback (use the second two args to `git_remote_download`), and **maybe** expose the `git_remote_callbacks` stuff through a separate channel if someone wants it. Take a look at how the [clone function does this](https://github.com/libgit2/libgit2/blob/c46fe0c651c9dc32ba03fab5b34340d92af864e6/src/clone.c#L356-L401) for an example.