• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ethereum-alarm-clock / timenode-core / 835

pending completion
835

Pull #138

travis-ci

web-flow
chore(package): update mocha-typescript to version 1.1.17
Pull Request #138: Update mocha-typescript to the latest version 🚀

116 of 218 branches covered (53.21%)

Branch coverage included in aggregate %.

384 of 559 relevant lines covered (68.69%)

52.22 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

92.31
/src/EconomicStrategy/EconomicStrategyHelpers.ts
1
import { IEconomicStrategy } from './IEconomicStrategy';
2
import Config from '../Config';
3

4
/**
48✔
5
 * Checks whether a transaction requires a deposit that's higher than a
6
 * user-set maximum deposit limit.
7
 * @param {TransactionRequest} txRequest Transaction Request object to check.
8
 * @param {IEconomicStrategy} economicStrategy Economic strategy configuration object.
9
 */
10
const exceedsMaxDeposit = (txRequest: any, economicStrategy: IEconomicStrategy) => {
11
  const requiredDeposit = txRequest.requiredDeposit;
12
  const maxDeposit = economicStrategy.maxDeposit;
13

14
  if (maxDeposit && maxDeposit.gt(0)) {
15
    return requiredDeposit.gt(maxDeposit);
16
  }
17

18
  return false;
19
};
20

21
/**
22
 * Checks if the balance of the TimeNode is above a set limit.
23
 * @param {Config} config TimeNode configuration object.
24
 */
25
const isAboveMinBalanceLimit = async (config: Config) => {
26
  const minBalance = config.economicStrategy.minBalance;
48✔
27
  const currentBalance = await config.wallet.getBalanceOf(config.wallet.getAddresses()[0]);
28

29
  if (minBalance) {
30
    return currentBalance.gt(minBalance);
31
  }
32
  return true;
33
};
34

35
/**
36
 * Compares the profitability user settings and checks if the TimeNode
37
 * should claim a transaction.
38
 * @param {TransactionRequest} txRequest Transaction Request object to check.
39
 * @param {IEconomicStrategy} economicStrategy Economic strategy configuration object.
40
 */
12✔
41
const isProfitable = async (txRequest: any, economicStrategy: IEconomicStrategy) => {
12✔
42
  const paymentModifier = await txRequest.claimPaymentModifier();
43
  const reward = txRequest.bounty.times(paymentModifier);
12✔
44

45
  const minProfitability = economicStrategy.minProfitability;
46

47
  if (minProfitability && minProfitability.gt(0)) {
12✔
48
    return reward.gt(minProfitability);
49
  }
50

51
  return true;
52
};
2✔
53

54
const shouldClaimTx = async (txRequest: any, config: Config) => {
55
  if (!config.economicStrategy) {
56
    return true;
57
  }
58

59
  const profitable = await isProfitable(txRequest, config.economicStrategy);
14✔
60
  if (!profitable) {
61
    return false;
62
  }
14✔
63

64
  const enoughBalance = await isAboveMinBalanceLimit(config);
65
  if (!enoughBalance) {
×
66
    return false;
67
  }
68

69
  const exceedsDepositLimit = exceedsMaxDeposit(txRequest, config.economicStrategy);
2✔
70

71
  return profitable && enoughBalance && !exceedsDepositLimit;
72
};
16✔
73

74
export { shouldClaimTx };
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc