@exromany/lido-csm-sdk
Version:
[](https://github.com/lidofinance/lido-csm-sdk/blob/main/LICENSE.txt) [](h
70 lines • 2.66 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.isRewardsReportV2 = exports.isRewardsReportV1 = void 0;
const zod_1 = require("zod");
const blockstampSchema = zod_1.z.object({
block_hash: zod_1.z.string(),
block_number: zod_1.z.number(),
block_timestamp: zod_1.z.number(),
ref_epoch: zod_1.z.number(),
ref_slot: zod_1.z.number(),
slot_number: zod_1.z.number(),
state_root: zod_1.z.string(),
});
const rewardsReportV1Schema = zod_1.z.object({
blockstamp: blockstampSchema,
distributable: zod_1.z.number(),
frame: zod_1.z.tuple([zod_1.z.number(), zod_1.z.number()]),
threshold: zod_1.z.number(),
operators: zod_1.z.record(zod_1.z.object({
distributed: zod_1.z.number(),
validators: zod_1.z.record(zod_1.z.object({
perf: zod_1.z.object({
assigned: zod_1.z.number(),
included: zod_1.z.number(),
}),
slashed: zod_1.z.boolean(),
})),
})),
});
const rewardsReportV2Schema = zod_1.z.array(zod_1.z.object({
blockstamp: blockstampSchema,
distributable: zod_1.z.number(),
distributed_rewards: zod_1.z.number(),
rebate_to_protocol: zod_1.z.number(),
frame: zod_1.z.tuple([zod_1.z.number(), zod_1.z.number()]),
operators: zod_1.z.record(zod_1.z.object({
distributed_rewards: zod_1.z.number(),
performance_coefficients: zod_1.z.object({
attestations_weight: zod_1.z.number(),
blocks_weight: zod_1.z.number(),
sync_weight: zod_1.z.number(),
}),
validators: zod_1.z.record(zod_1.z.object({
attestation_duty: zod_1.z.object({
assigned: zod_1.z.number(),
included: zod_1.z.number(),
}),
distributed_rewards: zod_1.z.number(),
performance: zod_1.z.number(),
proposal_duty: zod_1.z.object({
assigned: zod_1.z.number(),
included: zod_1.z.number(),
}),
rewards_share: zod_1.z.number(),
slashed: zod_1.z.boolean(),
strikes: zod_1.z.number(),
sync_duty: zod_1.z.object({ assigned: zod_1.z.number(), included: zod_1.z.number() }),
threshold: zod_1.z.number(),
})),
})),
}));
const isRewardsReportV1 = (report) => {
return rewardsReportV1Schema.safeParse(report).success;
};
exports.isRewardsReportV1 = isRewardsReportV1;
const isRewardsReportV2 = (report) => {
return rewardsReportV2Schema.safeParse(report).success;
};
exports.isRewardsReportV2 = isRewardsReportV2;
//# sourceMappingURL=types.js.map