@marinade.finance/scoring 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/dist/computing/cluster.d.ts +10 -0
  2. package/dist/computing/cluster.js +95 -0
  3. package/dist/computing/cluster.js.map +1 -0
  4. package/dist/computing/eligibility.d.ts +19 -0
  5. package/dist/computing/eligibility.js +163 -0
  6. package/dist/computing/eligibility.js.map +1 -0
  7. package/dist/computing/score.d.ts +20 -0
  8. package/dist/computing/score.js +174 -0
  9. package/dist/computing/score.js.map +1 -0
  10. package/dist/computing/stake.d.ts +26 -0
  11. package/dist/computing/stake.js +197 -0
  12. package/dist/computing/stake.js.map +1 -0
  13. package/dist/computing/validators.d.ts +16 -0
  14. package/dist/computing/validators.js +123 -0
  15. package/dist/computing/validators.js.map +1 -0
  16. package/dist/constants/marinade.json +38 -0
  17. package/dist/dto/bonds.dto.d.ts +12 -0
  18. package/dist/dto/bonds.dto.js +3 -0
  19. package/dist/dto/bonds.dto.js.map +1 -0
  20. package/dist/dto/cluster.dto.d.ts +12 -0
  21. package/dist/dto/cluster.dto.js +3 -0
  22. package/dist/dto/cluster.dto.js.map +1 -0
  23. package/{src/dto/eligibility.dto.ts → dist/dto/eligibility.dto.d.ts} +15 -20
  24. package/dist/dto/eligibility.dto.js +3 -0
  25. package/dist/dto/eligibility.dto.js.map +1 -0
  26. package/dist/dto/jito.dto.d.ts +9 -0
  27. package/dist/dto/jito.dto.js +10 -0
  28. package/dist/dto/jito.dto.js.map +1 -0
  29. package/dist/dto/marinade.dto.d.ts +18 -0
  30. package/dist/dto/marinade.dto.js +3 -0
  31. package/dist/dto/marinade.dto.js.map +1 -0
  32. package/dist/dto/rewards.dto.d.ts +17 -0
  33. package/dist/dto/rewards.dto.js +18 -0
  34. package/dist/dto/rewards.dto.js.map +1 -0
  35. package/dist/dto/scoring.dto.d.ts +101 -0
  36. package/dist/dto/scoring.dto.js +3 -0
  37. package/dist/dto/scoring.dto.js.map +1 -0
  38. package/dist/dto/snapshots.dto.d.ts +15 -0
  39. package/dist/dto/snapshots.dto.js +13 -0
  40. package/dist/dto/snapshots.dto.js.map +1 -0
  41. package/dist/dto/stakes.dto.d.ts +30 -0
  42. package/dist/dto/stakes.dto.js +3 -0
  43. package/dist/dto/stakes.dto.js.map +1 -0
  44. package/dist/dto/validators.dto.d.ts +110 -0
  45. package/dist/dto/validators.dto.js +19 -0
  46. package/dist/dto/validators.dto.js.map +1 -0
  47. package/dist/errors/fetching.d.ts +22 -0
  48. package/dist/errors/fetching.js +30 -0
  49. package/dist/errors/fetching.js.map +1 -0
  50. package/dist/index.d.ts +24 -0
  51. package/dist/index.js +41 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/interfaces/data-provider.interface.d.ts +16 -0
  54. package/dist/interfaces/data-provider.interface.js +3 -0
  55. package/dist/interfaces/data-provider.interface.js.map +1 -0
  56. package/dist/logging/logger.d.ts +3 -0
  57. package/dist/logging/logger.js +72 -0
  58. package/dist/logging/logger.js.map +1 -0
  59. package/dist/providers/api-data.provider.d.ts +30 -0
  60. package/dist/providers/api-data.provider.js +227 -0
  61. package/dist/providers/api-data.provider.js.map +1 -0
  62. package/dist/providers/file-data.provider.d.ts +29 -0
  63. package/dist/providers/file-data.provider.js +96 -0
  64. package/dist/providers/file-data.provider.js.map +1 -0
  65. package/dist/tsconfig.tsbuildinfo +1 -0
  66. package/dist/utils/csv.d.ts +2 -0
  67. package/dist/utils/csv.js +53 -0
  68. package/dist/utils/csv.js.map +1 -0
  69. package/dist/utils/maths.d.ts +8 -0
  70. package/dist/utils/maths.js +56 -0
  71. package/dist/utils/maths.js.map +1 -0
  72. package/dist/utils/solana.d.ts +1 -0
  73. package/dist/utils/solana.js +9 -0
  74. package/dist/utils/solana.js.map +1 -0
  75. package/dist/utils/zip.d.ts +2 -0
  76. package/dist/utils/zip.js +15 -0
  77. package/dist/utils/zip.js.map +1 -0
  78. package/package.json +14 -16
  79. package/src/cluster/cluster.module.ts +0 -8
  80. package/src/cluster/cluster.service.ts +0 -108
  81. package/src/config/config.module.ts +0 -8
  82. package/src/config/config.service.ts +0 -136
  83. package/src/constants/marinade.json +0 -38
  84. package/src/dto/bonds.dto.ts +0 -14
  85. package/src/dto/cluster.dto.ts +0 -13
  86. package/src/dto/jito.dto.ts +0 -10
  87. package/src/dto/marinade.dto.ts +0 -18
  88. package/src/dto/rewards.dto.ts +0 -21
  89. package/src/dto/scoring.dto.ts +0 -109
  90. package/src/dto/snapshots.dto.ts +0 -19
  91. package/src/dto/stakes.dto.ts +0 -35
  92. package/src/dto/validators.dto.ts +0 -146
  93. package/src/eligibility/eligibility.module.ts +0 -11
  94. package/src/eligibility/eligibility.service.ts +0 -183
  95. package/src/errors/fetching.ts +0 -25
  96. package/src/interfaces/data-provider.interface.ts +0 -17
  97. package/src/providers/api-data.provider.ts +0 -261
  98. package/src/providers/file-data.provider.ts +0 -125
  99. package/src/scoring/scoring.module.ts +0 -11
  100. package/src/scoring/scoring.service.ts +0 -184
  101. package/src/stake/stake.module.ts +0 -10
  102. package/src/stake/stake.service.ts +0 -242
  103. package/src/utils/csv.ts +0 -30
  104. package/src/utils/maths.ts +0 -75
  105. package/src/utils/solana.ts +0 -9
  106. package/src/utils/zip.ts +0 -12
  107. package/src/validators/validators.module.ts +0 -48
  108. package/src/validators/validators.service.ts +0 -177
@@ -0,0 +1,101 @@
1
+ import { ClusterInfo } from './cluster.dto';
2
+ import { AggregatedValidator } from './validators.dto';
3
+ export type ScoreDto = {
4
+ score: number;
5
+ concentrationScore: number;
6
+ scores: number[];
7
+ values: number[];
8
+ scoreErrors: boolean[];
9
+ tooltips: string[];
10
+ };
11
+ export type Score = {
12
+ vote_account: string;
13
+ score: string;
14
+ score_credits: string;
15
+ score_block_production: string;
16
+ score_inflation_commission: string;
17
+ score_mev_commission: string;
18
+ score_country_concentration: string;
19
+ score_city_concentration: string;
20
+ score_aso_concentration: string;
21
+ score_node_concentration: string;
22
+ ui_hints: string;
23
+ eligible_stake_algo: number;
24
+ eligible_bonus: number;
25
+ in_algo_stake_set: number;
26
+ msol_votes: string;
27
+ vemnde_votes: string;
28
+ blacklisted: number;
29
+ rank: number;
30
+ version: string;
31
+ max_commission: number;
32
+ marinade_stake: string;
33
+ target_stake_vemnde: string;
34
+ target_stake_msol: string;
35
+ target_stake_algo: string;
36
+ target_stake: string;
37
+ };
38
+ export type ScoreConfig = {
39
+ epochs: number;
40
+ concentrationParams: number[];
41
+ };
42
+ export type ScoringConfig = {
43
+ DS_PUBKEY: string;
44
+ REWARDS_PAST_EPOCHS: number;
45
+ CAP_FROM_BOND: number;
46
+ formulaStakeBlockSize: string;
47
+ formulaStakeBlocksFromScore: string;
48
+ formulaVoteCredits: string;
49
+ formulaBlockProduction: string;
50
+ formulaInflationCommission: string;
51
+ formulaMEVCommission: string;
52
+ formulaStakeConcentrationCountry: string;
53
+ formulaStakeConcentrationCity: string;
54
+ formulaStakeConcentrationASO: string;
55
+ formulaStakeConcentrationNode: string;
56
+ weightTargetSumOfRewards: number;
57
+ weightMevHeuristic: number;
58
+ weightVoteCredits: number;
59
+ weightBlockProduction: number;
60
+ weightInflationCommission: number;
61
+ weightMEVCommission: number;
62
+ weightStakeConcentrationCountry: number;
63
+ weightStakeConcentrationCity: number;
64
+ weightStakeConcentrationASO: number;
65
+ weightStakeConcentrationNode: number;
66
+ basicEligibilityEpochs: number;
67
+ bonusEligibilityExtraEpochs: number;
68
+ maxCommission: number;
69
+ voteCreditsWarning: number;
70
+ voteCreditsLow: number;
71
+ minExternalStake: number;
72
+ minScore: number;
73
+ maxStakeShare: number;
74
+ maxWarnings: number;
75
+ mSolControl: number;
76
+ veMndeControl: number;
77
+ stakeBlocksFromBonus: number;
78
+ concentrationParams: number[];
79
+ };
80
+ export type Variables = {
81
+ bp_cluster_mean: number;
82
+ bp_cluster_std_dev: number;
83
+ credits_pct_mean: number;
84
+ bp_mean: number;
85
+ commission_inflation_max: number;
86
+ commission_mev: number;
87
+ country_stake_concentration_last: number;
88
+ city_stake_concentration_last: number;
89
+ aso_stake_concentration_last: number;
90
+ node_stake_last: number;
91
+ };
92
+ export type Scores = Record<string, ScoreDto>;
93
+ export type ScoreTooltipBuilder = (validator: AggregatedValidator, clusterInfo: ClusterInfo) => string;
94
+ export type UnstakeHint = {
95
+ vote_account: string;
96
+ marinade_stake: string;
97
+ hints: string[];
98
+ };
99
+ export type UnstakeHints = {
100
+ unstake_hints: UnstakeHint[];
101
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=scoring.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoring.dto.js","sourceRoot":"","sources":["../../src/dto/scoring.dto.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ export declare class RecordDto {
2
+ amount: string | null;
3
+ tokenOwner: string;
4
+ validatorVoteAccount: string;
5
+ }
6
+ export declare class veMNDESnapshotDto {
7
+ voteRecordsCreatedAt: string;
8
+ records: RecordDto[];
9
+ }
10
+ export declare class mSolSnapshotDto {
11
+ mSolSnapshotCreatedAt: string;
12
+ voteRecordsCreatedAt: string;
13
+ records: RecordDto[];
14
+ }
15
+ export type Votes = Record<string, number>;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mSolSnapshotDto = exports.veMNDESnapshotDto = exports.RecordDto = void 0;
4
+ class RecordDto {
5
+ }
6
+ exports.RecordDto = RecordDto;
7
+ class veMNDESnapshotDto {
8
+ }
9
+ exports.veMNDESnapshotDto = veMNDESnapshotDto;
10
+ class mSolSnapshotDto {
11
+ }
12
+ exports.mSolSnapshotDto = mSolSnapshotDto;
13
+ //# sourceMappingURL=snapshots.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshots.dto.js","sourceRoot":"","sources":["../../src/dto/snapshots.dto.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAS;CAIrB;AAJD,8BAIC;AACD,MAAa,iBAAiB;CAG7B;AAHD,8CAGC;AACD,MAAa,eAAe;CAI3B;AAJD,0CAIC"}
@@ -0,0 +1,30 @@
1
+ import { Votes } from './snapshots.dto';
2
+ export type StakesConfig = {
3
+ tvl: number;
4
+ mSolControl: number;
5
+ veMndeControl: number;
6
+ stakeBlocksFromBonus: number;
7
+ formulaStakeBlockSize: string;
8
+ formulaStakeBlocksFromScore: string;
9
+ };
10
+ export type Stake = {
11
+ algoStake: number;
12
+ mSolStake: number;
13
+ veMndeStake: number;
14
+ totalStake: number;
15
+ algoStakeFromOverflow: number;
16
+ mSolStakeFromOverflow: number;
17
+ veMndeStakeFromOverflow: number;
18
+ totalStakeFromOverlfow: number;
19
+ };
20
+ export type ProcessedVotesAndTVLs = {
21
+ updatedMSolVotes: Votes;
22
+ updatedVeMndeVotes: Votes;
23
+ mSolTvl: number;
24
+ veMndeTvl: number;
25
+ totalTvl: number;
26
+ };
27
+ export type StakingVariables = {
28
+ tvl: number;
29
+ };
30
+ export type Stakes = Record<string, Stake>;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=stakes.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stakes.dto.js","sourceRoot":"","sources":["../../src/dto/stakes.dto.ts"],"names":[],"mappings":""}
@@ -0,0 +1,110 @@
1
+ export declare class WarningDto {
2
+ warning: string;
3
+ }
4
+ export declare class EpochStatDto {
5
+ epoch: number;
6
+ epoch_start_at: string;
7
+ epoch_end_at?: string;
8
+ commission_max_observed?: number | null;
9
+ commission_min_observed?: number | null;
10
+ commission_advertised: number;
11
+ commission_effective?: number | null;
12
+ version: string;
13
+ activated_stake: string;
14
+ marinade_stake: string;
15
+ foundation_stake: string;
16
+ marinade_native_stake: string;
17
+ self_stake: string;
18
+ superminority: boolean;
19
+ stake_to_become_superminority: string;
20
+ credits: number;
21
+ leader_slots: number;
22
+ blocks_produced: number;
23
+ skip_rate: number;
24
+ uptime_pct?: number | null;
25
+ uptime?: number | null;
26
+ downtime?: number | null;
27
+ apr?: number | null;
28
+ apy?: number | null;
29
+ score: number;
30
+ rank_score: number;
31
+ rank_activated_stake: number;
32
+ rank_apy: number;
33
+ }
34
+ export declare class ValidatorDto {
35
+ identity: string;
36
+ vote_account: string;
37
+ start_epoch: number;
38
+ start_date: string;
39
+ info_name: string;
40
+ info_url: string;
41
+ info_keybase: string;
42
+ node_ip: string;
43
+ dc_coordinates_lat: number;
44
+ dc_coordinates_lon: number;
45
+ dc_continent: string;
46
+ dc_country_iso: string;
47
+ dc_country: string;
48
+ dc_city: string;
49
+ dc_full_city: string;
50
+ dc_asn: number;
51
+ dc_aso: string;
52
+ dcc_full_city: number;
53
+ dcc_asn: number;
54
+ dcc_aso: number;
55
+ commission_max_observed?: number | null;
56
+ commission_min_observed?: number | null;
57
+ commission_advertised: number;
58
+ commission_effective?: number | null;
59
+ commission_aggregated?: number | null;
60
+ rugged_commission_occurrences: number;
61
+ rugged_commission: boolean;
62
+ rugged_commission_info: string[];
63
+ version: string;
64
+ activated_stake: string;
65
+ marinade_stake: string;
66
+ foundation_stake: string;
67
+ marinade_native_stake: string;
68
+ self_stake: string;
69
+ superminority: boolean;
70
+ credits: number;
71
+ score: number;
72
+ warnings: WarningDto[];
73
+ epoch_stats: EpochStatDto[];
74
+ epochStats: Record<number, EpochStatDto>;
75
+ epochs_count: number;
76
+ has_last_epoch_stats: boolean;
77
+ avg_uptime_pct: number;
78
+ avg_apy: number;
79
+ }
80
+ export declare class ValidatorAggregatedDto {
81
+ epoch: number;
82
+ epoch_start_date: string;
83
+ avg_marinade_score?: number | null;
84
+ avg_apy?: number | null;
85
+ }
86
+ export declare class ValidatorsResponseDto {
87
+ validators: ValidatorDto[];
88
+ validators_aggregated: ValidatorAggregatedDto[];
89
+ }
90
+ export type AggregatedValidator = {
91
+ voteAccount: string;
92
+ name: string;
93
+ epochs: number[];
94
+ currentStake: number;
95
+ currentMarinadeStake: number;
96
+ commission: number[];
97
+ stake: number[];
98
+ externalStake: number[];
99
+ credits: number[];
100
+ blocksProduced: number[];
101
+ leaderSlots: number[];
102
+ dataAvailable: boolean[];
103
+ mevCommission: number;
104
+ country: string;
105
+ city: string;
106
+ aso: string;
107
+ blacklisted: boolean;
108
+ version: string;
109
+ };
110
+ export type AggregatedValidators = Record<string, AggregatedValidator>;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValidatorsResponseDto = exports.ValidatorAggregatedDto = exports.ValidatorDto = exports.EpochStatDto = exports.WarningDto = void 0;
4
+ class WarningDto {
5
+ }
6
+ exports.WarningDto = WarningDto;
7
+ class EpochStatDto {
8
+ }
9
+ exports.EpochStatDto = EpochStatDto;
10
+ class ValidatorDto {
11
+ }
12
+ exports.ValidatorDto = ValidatorDto;
13
+ class ValidatorAggregatedDto {
14
+ }
15
+ exports.ValidatorAggregatedDto = ValidatorAggregatedDto;
16
+ class ValidatorsResponseDto {
17
+ }
18
+ exports.ValidatorsResponseDto = ValidatorsResponseDto;
19
+ //# sourceMappingURL=validators.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.dto.js","sourceRoot":"","sources":["../../src/dto/validators.dto.ts"],"names":[],"mappings":";;;AAAA,MAAa,UAAU;CAEtB;AAFD,gCAEC;AACD,MAAa,YAAY;CA6BxB;AA7BD,oCA6BC;AACD,MAAa,YAAY;CA6CxB;AA7CD,oCA6CC;AACD,MAAa,sBAAsB;CAKlC;AALD,wDAKC;AACD,MAAa,qBAAqB;CAGjC;AAHD,sDAGC"}
@@ -0,0 +1,22 @@
1
+ export declare class FetchError extends Error {
2
+ statusCode: number;
3
+ constructor(message: string, statusCode: number);
4
+ }
5
+ export declare const FETCHING_ERROR_MESSAGES: {
6
+ generalValidatorsFetchFailed: string;
7
+ generalTvlFetchFailed: string;
8
+ generalBondsFetchFailed: string;
9
+ generalRewardsFetchFailed: string;
10
+ generalVemndeFetchFailed: string;
11
+ generalMsolFetchFailed: string;
12
+ generalJitoMEVFetchFailed: string;
13
+ generalBlacklistFetchFailed: string;
14
+ validatorsFetchFailed: string;
15
+ tvlFetchFailed: string;
16
+ bondsFetchFailed: string;
17
+ vemndeFetchFailed: string;
18
+ msolFetchFailed: string;
19
+ rewardsFetchFailed: string;
20
+ jitoMevFetchFailed: string;
21
+ blacklistFetchFailed: string;
22
+ };
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FETCHING_ERROR_MESSAGES = exports.FetchError = void 0;
4
+ class FetchError extends Error {
5
+ constructor(message, statusCode) {
6
+ super(message);
7
+ this.statusCode = statusCode;
8
+ this.name = 'FetchError';
9
+ }
10
+ }
11
+ exports.FetchError = FetchError;
12
+ exports.FETCHING_ERROR_MESSAGES = {
13
+ generalValidatorsFetchFailed: 'An error occured while fetching validators data',
14
+ generalTvlFetchFailed: 'An error occured while fetching validators data',
15
+ generalBondsFetchFailed: 'An error occured while fetching bonds data',
16
+ generalRewardsFetchFailed: 'An error occured while fetching rewards',
17
+ generalVemndeFetchFailed: 'An error occured while fetching veMNDE votes',
18
+ generalMsolFetchFailed: 'An error occured while fetching mSOL votes',
19
+ generalJitoMEVFetchFailed: 'An error occured while fetching Jito MEV',
20
+ generalBlacklistFetchFailed: 'An error occured while fetching blacklist',
21
+ validatorsFetchFailed: 'Failed to fetch validators data',
22
+ tvlFetchFailed: 'Failed to fetch tvl data',
23
+ bondsFetchFailed: 'Failed to fetch bonds data',
24
+ vemndeFetchFailed: 'Failed to fetch veMNDE votes',
25
+ msolFetchFailed: 'Failed to fetch mSOL votes',
26
+ rewardsFetchFailed: 'Failed to fetch rewards',
27
+ jitoMevFetchFailed: 'Failed to fetch Jito MEV',
28
+ blacklistFetchFailed: 'Failed to fetch blacklist'
29
+ };
30
+ //# sourceMappingURL=fetching.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetching.js","sourceRoot":"","sources":["../../src/errors/fetching.ts"],"names":[],"mappings":";;;AAAA,MAAa,UAAW,SAAQ,KAAK;IACnC,YAAa,OAAe,EAAS,UAAkB;QACrD,KAAK,CAAC,OAAO,CAAC,CAAC;QADoB,eAAU,GAAV,UAAU,CAAQ;QAErD,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AALD,gCAKC;AAEY,QAAA,uBAAuB,GAAG;IACrC,4BAA4B,EAAE,iDAAiD;IAC/E,qBAAqB,EAAE,iDAAiD;IACxE,uBAAuB,EAAE,4CAA4C;IACrE,yBAAyB,EAAE,yCAAyC;IACpE,wBAAwB,EAAE,8CAA8C;IACxE,sBAAsB,EAAE,4CAA4C;IACpE,yBAAyB,EAAE,0CAA0C;IACrE,2BAA2B,EAAE,2CAA2C;IACxE,qBAAqB,EAAE,iCAAiC;IACxD,cAAc,EAAE,0BAA0B;IAC1C,gBAAgB,EAAE,4BAA4B;IAC9C,iBAAiB,EAAE,8BAA8B;IACjD,eAAe,EAAE,4BAA4B;IAC7C,kBAAkB,EAAE,yBAAyB;IAC7C,kBAAkB,EAAE,0BAA0B;IAC9C,oBAAoB,EAAE,2BAA2B;CAClD,CAAC"}
@@ -0,0 +1,24 @@
1
+ export * from './computing/cluster';
2
+ export * from './computing/eligibility';
3
+ export * from './computing/score';
4
+ export * from './computing/validators';
5
+ export * from './computing/stake';
6
+ export * from './dto/bonds.dto';
7
+ export * from './dto/cluster.dto';
8
+ export * from './dto/eligibility.dto';
9
+ export * from './dto/jito.dto';
10
+ export * from './dto/marinade.dto';
11
+ export * from './dto/rewards.dto';
12
+ export * from './dto/scoring.dto';
13
+ export * from './dto/snapshots.dto';
14
+ export * from './dto/stakes.dto';
15
+ export * from './dto/validators.dto';
16
+ export * from './errors/fetching';
17
+ export * from './interfaces/data-provider.interface';
18
+ export * from './logging/logger';
19
+ export * from './providers/api-data.provider';
20
+ export * from './providers/file-data.provider';
21
+ export * from './utils/csv';
22
+ export * from './utils/maths';
23
+ export * from './utils/solana';
24
+ export * from './utils/zip';
package/dist/index.js ADDED
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./computing/cluster"), exports);
18
+ __exportStar(require("./computing/eligibility"), exports);
19
+ __exportStar(require("./computing/score"), exports);
20
+ __exportStar(require("./computing/validators"), exports);
21
+ __exportStar(require("./computing/stake"), exports);
22
+ __exportStar(require("./dto/bonds.dto"), exports);
23
+ __exportStar(require("./dto/cluster.dto"), exports);
24
+ __exportStar(require("./dto/eligibility.dto"), exports);
25
+ __exportStar(require("./dto/jito.dto"), exports);
26
+ __exportStar(require("./dto/marinade.dto"), exports);
27
+ __exportStar(require("./dto/rewards.dto"), exports);
28
+ __exportStar(require("./dto/scoring.dto"), exports);
29
+ __exportStar(require("./dto/snapshots.dto"), exports);
30
+ __exportStar(require("./dto/stakes.dto"), exports);
31
+ __exportStar(require("./dto/validators.dto"), exports);
32
+ __exportStar(require("./errors/fetching"), exports);
33
+ __exportStar(require("./interfaces/data-provider.interface"), exports);
34
+ __exportStar(require("./logging/logger"), exports);
35
+ __exportStar(require("./providers/api-data.provider"), exports);
36
+ __exportStar(require("./providers/file-data.provider"), exports);
37
+ __exportStar(require("./utils/csv"), exports);
38
+ __exportStar(require("./utils/maths"), exports);
39
+ __exportStar(require("./utils/solana"), exports);
40
+ __exportStar(require("./utils/zip"), exports);
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,0DAAwC;AACxC,oDAAkC;AAClC,yDAAuC;AACvC,oDAAkC;AAClC,kDAAgC;AAChC,oDAAkC;AAClC,wDAAsC;AACtC,iDAA+B;AAC/B,qDAAmC;AACnC,oDAAkC;AAClC,oDAAkC;AAClC,sDAAoC;AACpC,mDAAiC;AACjC,uDAAqC;AACrC,oDAAkC;AAClC,uEAAqD;AACrD,mDAAiC;AACjC,gEAA8C;AAC9C,iEAA+C;AAC/C,8CAA4B;AAC5B,gDAA8B;AAC9B,iDAA+B;AAC/B,8CAA4B"}
@@ -0,0 +1,16 @@
1
+ import { ValidatorDto } from '../dto/validators.dto';
2
+ import { Rewards } from '../dto/rewards.dto';
3
+ import { Votes } from '../dto/snapshots.dto';
4
+ import { JitoValidatorDto } from '../dto/jito.dto';
5
+ import { Bonds } from '../dto/bonds.dto';
6
+ import { TvlStats } from '../dto/marinade.dto';
7
+ export interface IDataProvider {
8
+ fetchValidators(epochsToFetch: number, withSnapshot: boolean): Promise<ValidatorDto[]>;
9
+ fetchBlacklist(withSnapshot: boolean): Promise<Set<string>>;
10
+ fetchVeMndeVotes(withSnapshot: boolean): Promise<Votes>;
11
+ fetchMSolVotes(withSnapshot: boolean): Promise<Votes>;
12
+ fetchRewards(epochs: number, withSnapshot: boolean): Promise<Rewards>;
13
+ fetchValidatorsJitoMEV(withSnapshot: boolean): Promise<Record<string, JitoValidatorDto>>;
14
+ fetchBonds(withSnapshot: boolean): Promise<Bonds>;
15
+ fetchTvl(withSnapshot: boolean): Promise<TvlStats>;
16
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data-provider.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-provider.interface.js","sourceRoot":"","sources":["../../src/interfaces/data-provider.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export declare const log: (...args: any[]) => void;
2
+ export declare const error: (...args: any[]) => void;
3
+ export declare const warn: (...args: any[]) => void;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.warn = exports.error = exports.log = void 0;
27
+ const log4js = __importStar(require("log4js"));
28
+ const configureLogger = () => {
29
+ log4js.configure({
30
+ appenders: {
31
+ app: {
32
+ type: 'stdout',
33
+ layout: {
34
+ type: 'pattern',
35
+ pattern: '%d %[[%p]%] %x{singleLine}',
36
+ tokens: {
37
+ singleLine: (logEvent) => {
38
+ const [msg, ctx] = logEvent.data;
39
+ const err = ctx?.err;
40
+ if (err) {
41
+ ctx.err = undefined;
42
+ }
43
+ const ctxSerialized = ctx ? ` ${JSON.stringify(ctx)}` : '';
44
+ const errSerialized = err instanceof Error
45
+ ? ` <${err.name}: ${err.message}> (${err.stack})`
46
+ : '';
47
+ return `${msg}${errSerialized}${ctxSerialized}`.replace(/\n/g, '\\n');
48
+ },
49
+ },
50
+ },
51
+ },
52
+ },
53
+ categories: {
54
+ default: { appenders: ['app'], level: 'DEBUG' },
55
+ },
56
+ });
57
+ return log4js.getLogger();
58
+ };
59
+ const logger = configureLogger();
60
+ const log = (...args) => {
61
+ logger.log('INFO', ...args);
62
+ };
63
+ exports.log = log;
64
+ const error = (...args) => {
65
+ logger.log('ERROR', ...args);
66
+ };
67
+ exports.error = error;
68
+ const warn = (...args) => {
69
+ logger.log('WARN', ...args);
70
+ };
71
+ exports.warn = warn;
72
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logging/logger.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;AAEjC,MAAM,eAAe,GAAG,GAAG,EAAE;IAC3B,MAAM,CAAC,SAAS,CAAC;QACf,SAAS,EAAE;YACT,GAAG,EAAE;gBACH,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE;oBACN,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,4BAA4B;oBACrC,MAAM,EAAE;wBACN,UAAU,EAAE,CAAC,QAAa,EAAE,EAAE;4BAC5B,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;4BACjC,MAAM,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC;4BACrB,IAAI,GAAG,EAAE;gCACP,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC;6BACrB;4BAED,MAAM,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC3D,MAAM,aAAa,GACjB,GAAG,YAAY,KAAK;gCAClB,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,MAAM,GAAG,CAAC,KAAK,GAAG;gCACjD,CAAC,CAAC,EAAE,CAAC;4BAET,OAAO,GAAG,GAAG,GAAG,aAAa,GAAG,aAAa,EAAE,CAAC,OAAO,CACrD,KAAK,EACL,KAAK,CACN,CAAC;wBACJ,CAAC;qBACF;iBACF;aACF;SACF;QACD,UAAU,EAAE;YACV,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE;SAChD;KACF,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC;AAC5B,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;AAE1B,MAAM,GAAG,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE;IACpC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;AAC9B,CAAC,CAAC;AAFW,QAAA,GAAG,OAEd;AAEK,MAAM,KAAK,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE;IACtC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC;AAFW,QAAA,KAAK,SAEhB;AAEK,MAAM,IAAI,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE;IACrC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;AAC9B,CAAC,CAAC;AAFW,QAAA,IAAI,QAEf"}
@@ -0,0 +1,30 @@
1
+ import { Rewards } from '../dto/rewards.dto';
2
+ import { Votes } from '../dto/snapshots.dto';
3
+ import { ValidatorDto } from '../dto/validators.dto';
4
+ import { IDataProvider } from '../interfaces/data-provider.interface';
5
+ import { JitoValidatorDto } from '../dto/jito.dto';
6
+ import { Bonds } from '../dto/bonds.dto';
7
+ import { TvlStats } from '../dto/marinade.dto';
8
+ export declare class URLs {
9
+ validatorsURL: string;
10
+ blacklistURL: string;
11
+ vemndeVotesURL: string;
12
+ msolVotesURL: string;
13
+ rewardsURL: string;
14
+ jitoMevURL: string;
15
+ bondsURL: string;
16
+ marinadeTvlURL: string;
17
+ }
18
+ export declare class ApiDataProvider implements IDataProvider {
19
+ private urls;
20
+ private snapshotsBasePath?;
21
+ constructor(urls: URLs, snapshotsBasePath?: string);
22
+ fetchValidators(epochsToFetch: number, withSnapshot?: boolean): Promise<ValidatorDto[]>;
23
+ fetchTvl(withSnapshot: boolean): Promise<TvlStats>;
24
+ fetchBonds(withSnapshot: boolean): Promise<Bonds>;
25
+ fetchBlacklist(withSnapshot?: boolean): Promise<Set<string>>;
26
+ fetchVeMndeVotes(withSnapshot?: boolean): Promise<Votes>;
27
+ fetchMSolVotes(withSnapshot?: boolean): Promise<Votes>;
28
+ fetchRewards(epochs: number, withSnapshot?: boolean): Promise<Rewards>;
29
+ fetchValidatorsJitoMEV(withSnapshot?: boolean): Promise<Record<string, JitoValidatorDto>>;
30
+ }