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