@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.
- package/dist/computing/cluster.d.ts +10 -0
- package/dist/computing/cluster.js +95 -0
- package/dist/computing/cluster.js.map +1 -0
- package/dist/computing/eligibility.d.ts +19 -0
- package/dist/computing/eligibility.js +163 -0
- package/dist/computing/eligibility.js.map +1 -0
- package/dist/computing/score.d.ts +20 -0
- package/dist/computing/score.js +174 -0
- package/dist/computing/score.js.map +1 -0
- package/dist/computing/stake.d.ts +26 -0
- package/dist/computing/stake.js +197 -0
- package/dist/computing/stake.js.map +1 -0
- package/dist/computing/validators.d.ts +16 -0
- package/dist/computing/validators.js +123 -0
- package/dist/computing/validators.js.map +1 -0
- package/dist/constants/marinade.json +38 -0
- package/dist/dto/bonds.dto.d.ts +12 -0
- package/dist/dto/bonds.dto.js +3 -0
- package/dist/dto/bonds.dto.js.map +1 -0
- package/dist/dto/cluster.dto.d.ts +12 -0
- package/dist/dto/cluster.dto.js +3 -0
- package/dist/dto/cluster.dto.js.map +1 -0
- package/{src/dto/eligibility.dto.ts → dist/dto/eligibility.dto.d.ts} +15 -20
- package/dist/dto/eligibility.dto.js +3 -0
- package/dist/dto/eligibility.dto.js.map +1 -0
- package/dist/dto/jito.dto.d.ts +9 -0
- package/dist/dto/jito.dto.js +10 -0
- package/dist/dto/jito.dto.js.map +1 -0
- package/dist/dto/marinade.dto.d.ts +18 -0
- package/dist/dto/marinade.dto.js +3 -0
- package/dist/dto/marinade.dto.js.map +1 -0
- package/dist/dto/rewards.dto.d.ts +17 -0
- package/dist/dto/rewards.dto.js +18 -0
- package/dist/dto/rewards.dto.js.map +1 -0
- package/dist/dto/scoring.dto.d.ts +101 -0
- package/dist/dto/scoring.dto.js +3 -0
- package/dist/dto/scoring.dto.js.map +1 -0
- package/dist/dto/snapshots.dto.d.ts +15 -0
- package/dist/dto/snapshots.dto.js +13 -0
- package/dist/dto/snapshots.dto.js.map +1 -0
- package/dist/dto/stakes.dto.d.ts +30 -0
- package/dist/dto/stakes.dto.js +3 -0
- package/dist/dto/stakes.dto.js.map +1 -0
- package/dist/dto/validators.dto.d.ts +110 -0
- package/dist/dto/validators.dto.js +19 -0
- package/dist/dto/validators.dto.js.map +1 -0
- package/dist/errors/fetching.d.ts +22 -0
- package/dist/errors/fetching.js +30 -0
- package/dist/errors/fetching.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.js +41 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/data-provider.interface.d.ts +16 -0
- package/dist/interfaces/data-provider.interface.js +3 -0
- package/dist/interfaces/data-provider.interface.js.map +1 -0
- package/dist/logging/logger.d.ts +3 -0
- package/dist/logging/logger.js +72 -0
- package/dist/logging/logger.js.map +1 -0
- package/dist/providers/api-data.provider.d.ts +30 -0
- package/dist/providers/api-data.provider.js +227 -0
- package/dist/providers/api-data.provider.js.map +1 -0
- package/dist/providers/file-data.provider.d.ts +29 -0
- package/dist/providers/file-data.provider.js +96 -0
- package/dist/providers/file-data.provider.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/utils/csv.d.ts +2 -0
- package/dist/utils/csv.js +53 -0
- package/dist/utils/csv.js.map +1 -0
- package/dist/utils/maths.d.ts +8 -0
- package/dist/utils/maths.js +56 -0
- package/dist/utils/maths.js.map +1 -0
- package/dist/utils/solana.d.ts +1 -0
- package/dist/utils/solana.js +9 -0
- package/dist/utils/solana.js.map +1 -0
- package/dist/utils/zip.d.ts +2 -0
- package/dist/utils/zip.js +15 -0
- package/dist/utils/zip.js.map +1 -0
- package/package.json +14 -16
- package/src/cluster/cluster.module.ts +0 -8
- package/src/cluster/cluster.service.ts +0 -108
- package/src/config/config.module.ts +0 -8
- package/src/config/config.service.ts +0 -136
- package/src/constants/marinade.json +0 -38
- package/src/dto/bonds.dto.ts +0 -14
- package/src/dto/cluster.dto.ts +0 -13
- package/src/dto/jito.dto.ts +0 -10
- package/src/dto/marinade.dto.ts +0 -18
- package/src/dto/rewards.dto.ts +0 -21
- package/src/dto/scoring.dto.ts +0 -109
- package/src/dto/snapshots.dto.ts +0 -19
- package/src/dto/stakes.dto.ts +0 -35
- package/src/dto/validators.dto.ts +0 -146
- package/src/eligibility/eligibility.module.ts +0 -11
- package/src/eligibility/eligibility.service.ts +0 -183
- package/src/errors/fetching.ts +0 -25
- package/src/interfaces/data-provider.interface.ts +0 -17
- package/src/providers/api-data.provider.ts +0 -261
- package/src/providers/file-data.provider.ts +0 -125
- package/src/scoring/scoring.module.ts +0 -11
- package/src/scoring/scoring.service.ts +0 -184
- package/src/stake/stake.module.ts +0 -10
- package/src/stake/stake.service.ts +0 -242
- package/src/utils/csv.ts +0 -30
- package/src/utils/maths.ts +0 -75
- package/src/utils/solana.ts +0 -9
- package/src/utils/zip.ts +0 -12
- package/src/validators/validators.module.ts +0 -48
- 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 @@
|
|
|
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 @@
|
|
|
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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"data-provider.interface.js","sourceRoot":"","sources":["../../src/interfaces/data-provider.interface.ts"],"names":[],"mappings":""}
|
|
@@ -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
|
+
}
|