private async Task <PaginationResult <BlockchainAsset> > GetAssetsAsync(int take, string continuation)
        {
            var apiResponse = await _runner.RunWithRetriesAsync(() => _api.GetAssetsAsync(take, continuation));

            ValidateContractValueIsNotNull(apiResponse);
            ValidateContractItemsIsNotNull(apiResponse.Items);

            return(PaginationResult.From(
                       apiResponse.Continuation,
                       apiResponse.Items.Select(a => new BlockchainAsset(a)).ToArray()));
        }
        private async Task <PaginationResult <WalletBalance> > GetWalletBalancesAsync(int take, string continuation, Func <string, int> assetAccuracyProvider)
        {
            ValidateTakeRange(take);
            ValidateAssetAccuracyProviderIsNotNull(assetAccuracyProvider);

            var apiResponse = await _runner.RunWithRetriesAsync(() => _api.GetWalletBalancesAsync(take, continuation));

            ValidateContractValueIsNotNull(apiResponse);
            ValidateContractItemsIsNotNull(apiResponse.Items);

            return(PaginationResult.From(
                       apiResponse.Continuation,
                       apiResponse.Items.Select(b => new WalletBalance(b, assetAccuracyProvider(b.AssetId))).ToArray()));
        }