start Once
suspend fun <T> SyncApiClient.startOnce(filter: String? = null, setPresence: Presence? = null, getBatchToken: suspend () -> String?, setBatchToken: suspend (String) -> Unit, timeout: Long = 0, asUserId: UserId? = null, runOnce: suspend (Sync.Response) -> T): Result<T>
suspend fun SyncApiClient.startOnce(filter: String? = null, setPresence: Presence? = null, getBatchToken: suspend () -> String?, setBatchToken: suspend (String) -> Unit, timeout: Long = 0, withTransaction: suspend (block: suspend () -> Unit) -> Unit = { it() }, asUserId: UserId? = null): Result<Unit>