/// <inheritdoc />
        public async Task <IEnumerable <HistoricalTransaction> > GetHistoryOfOutgoingTransactions(
            string address,
            string afterHash,
            int take,
            Func <string, int> assetAccuracyProvider)
        {
            ValidateAddressIsNotEmpty(address);
            ValidateAfterHashIsNotEmpty(afterHash);
            ValidateTakeRange(take);
            ValidateAssetAccuracyProviderIsNotNull(assetAccuracyProvider);

            var apiResponse = await _runner.RunWithRetriesAsync(() => _api.GetHistoryOfOutgoingTransactions(address, afterHash, take));

            ValidateContractValueIsNotNull(apiResponse);

            return(apiResponse.Select(t => new HistoricalTransaction(t, assetAccuracyProvider(t.AssetId))));
        }