refactor(client): return chainable API