import { EthAddress } from '@aztec/foundation/eth-address'; import { z } from 'zod'; export declare enum OffenseType { UNKNOWN = 0, /** The data for proving an epoch was not publicly available, we slash its committee */ DATA_WITHHOLDING = 1, /** An epoch was not successfully proven in time, we slash its committee */ VALID_EPOCH_PRUNED = 2, /** A proposer failed to attest or propose during an epoch according to the Sentinel */ INACTIVITY = 3, /** A proposer sent an invalid block proposal over the p2p network to the committee */ BROADCASTED_INVALID_BLOCK_PROPOSAL = 4, /** A proposer pushed to L1 a block with insufficient committee attestations */ PROPOSED_INSUFFICIENT_ATTESTATIONS = 5, /** A proposer pushed to L1 a block with incorrect committee attestations (ie signature from a non-committee member) */ PROPOSED_INCORRECT_ATTESTATIONS = 6, /** A committee member attested to a block that was built as a descendent of an invalid block (as in a block with invalid attestations) */ ATTESTED_DESCENDANT_OF_INVALID = 7, /** A proposer sent duplicate proposals for the same position (slot, indexWithinCheckpoint for blocks or slot for checkpoints) */ DUPLICATE_PROPOSAL = 8, /** A validator signed attestations for different proposals at the same slot (equivocation) */ DUPLICATE_ATTESTATION = 9 } export declare function getOffenseTypeName(offense: OffenseType): "attested_descendant_of_invalid" | "broadcasted_invalid_block_proposal" | "data_withholding" | "duplicate_attestation" | "duplicate_proposal" | "inactivity" | "proposed_incorrect_attestations" | "proposed_insufficient_attestations" | "unknown" | "valid_epoch_pruned"; export declare const OffenseTypeSchema: z.ZodNativeEnum; export declare const OffenseToBigInt: Record; export declare function bigIntToOffense(offense: bigint): OffenseType; export type Offense = { validator: EthAddress; amount: bigint; offenseType: OffenseType; epochOrSlot: bigint; }; export type OffenseIdentifier = Pick; export declare const OffenseSchema: z.ZodObject<{ validator: import("../schemas/index.js").ZodFor; amount: z.ZodPipeline, z.ZodBigInt>; offenseType: z.ZodNativeEnum; epochOrSlot: z.ZodPipeline, z.ZodBigInt>; }, "strip", z.ZodTypeAny, { validator: EthAddress; amount: bigint; offenseType: OffenseType; epochOrSlot: bigint; }, { validator?: any; amount: string | number | bigint; offenseType: OffenseType; epochOrSlot: string | number | bigint; }>; /** Offense by a validator in the context of a slash payload */ export type ValidatorSlashOffense = { epochOrSlot: bigint; offenseType: OffenseType; }; /** Slashed amount and total offenses by a validator in the context of a slash payload */ export type ValidatorSlash = { validator: EthAddress; amount: bigint; offenses: ValidatorSlashOffense[]; }; /** Slash payload as published by the empire slash proposer */ export type SlashPayload = { address: EthAddress; slashes: ValidatorSlash[]; timestamp: bigint; }; /** Slash payload with round information from empire slash proposer */ export type SlashPayloadRound = SlashPayload & { votes: bigint; round: bigint; }; export declare const SlashPayloadRoundSchema: z.ZodObject<{ address: import("../schemas/index.js").ZodFor; timestamp: z.ZodPipeline, z.ZodBigInt>; votes: z.ZodPipeline, z.ZodBigInt>; round: z.ZodPipeline, z.ZodBigInt>; slashes: z.ZodArray; amount: z.ZodPipeline, z.ZodBigInt>; offenses: z.ZodArray; epochOrSlot: z.ZodPipeline, z.ZodBigInt>; }, "strip", z.ZodTypeAny, { offenseType: OffenseType; epochOrSlot: bigint; }, { offenseType: OffenseType; epochOrSlot: string | number | bigint; }>, "many">; }, "strip", z.ZodTypeAny, { validator: EthAddress; amount: bigint; offenses: { offenseType: OffenseType; epochOrSlot: bigint; }[]; }, { validator?: any; amount: string | number | bigint; offenses: { offenseType: OffenseType; epochOrSlot: string | number | bigint; }[]; }>, "many">; }, "strip", z.ZodTypeAny, { address: EthAddress; timestamp: bigint; votes: bigint; round: bigint; slashes: { validator: EthAddress; amount: bigint; offenses: { offenseType: OffenseType; epochOrSlot: bigint; }[]; }[]; }, { address?: any; timestamp: string | number | bigint; votes: string | number | bigint; round: string | number | bigint; slashes: { validator?: any; amount: string | number | bigint; offenses: { offenseType: OffenseType; epochOrSlot: string | number | bigint; }[]; }[]; }>; /** Votes for a validator slash in the consensus slash proposer */ export type ValidatorSlashVote = number; export type ProposerSlashAction = /** Create a new slash payload on an empire-based slash proposer */ { type: 'create-empire-payload'; data: ValidatorSlash[]; } /** Vote for a slashing payload on an empire-based slash proposer */ | { type: 'vote-empire-payload'; payload: EthAddress; } /** Execute a slashing payload on an empire-based slash proposer */ | { type: 'execute-empire-payload'; round: bigint; } /** Vote for offenses on a consensus slashing proposer */ | { type: 'vote-offenses'; votes: ValidatorSlashVote[]; committees: EthAddress[][]; round: bigint; } /** Execute a slashing round on a consensus slashing proposer */ | { type: 'execute-slash'; committees: EthAddress[][]; round: bigint; }; export type ProposerSlashActionType = ProposerSlashAction['type']; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zbGFzaGluZy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFM0QsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUl4QixvQkFBWSxXQUFXO0lBQ3JCLE9BQU8sSUFBSTtJQUNYLHVGQUF1RjtJQUN2RixnQkFBZ0IsSUFBSTtJQUNwQiwyRUFBMkU7SUFDM0Usa0JBQWtCLElBQUk7SUFDdEIsdUZBQXVGO0lBQ3ZGLFVBQVUsSUFBSTtJQUNkLHNGQUFzRjtJQUN0RixrQ0FBa0MsSUFBSTtJQUN0QywrRUFBK0U7SUFDL0Usa0NBQWtDLElBQUk7SUFDdEMsdUhBQXVIO0lBQ3ZILCtCQUErQixJQUFJO0lBQ25DLDBJQUEwSTtJQUMxSSw4QkFBOEIsSUFBSTtJQUNsQyxpSUFBaUk7SUFDakksa0JBQWtCLElBQUk7SUFDdEIsOEZBQThGO0lBQzlGLHFCQUFxQixJQUFJO0NBQzFCO0FBRUQsd0JBQWdCLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxXQUFXLDhRQXlCdEQ7QUFFRCxlQUFPLE1BQU0saUJBQWlCLHFDQUE0QixDQUFDO0FBRTNELGVBQU8sTUFBTSxlQUFlLEVBQUUsTUFBTSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBV3ZELENBQUM7QUFFRix3QkFBZ0IsZUFBZSxDQUFDLE9BQU8sRUFBRSxNQUFNLEdBQUcsV0FBVyxDQXlCNUQ7QUFFRCxNQUFNLE1BQU0sT0FBTyxHQUFHO0lBQ3BCLFNBQVMsRUFBRSxVQUFVLENBQUM7SUFDdEIsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLFdBQVcsRUFBRSxXQUFXLENBQUM7SUFDekIsV0FBVyxFQUFFLE1BQU0sQ0FBQztDQUNyQixDQUFDO0FBRUYsTUFBTSxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsV0FBVyxHQUFHLGFBQWEsR0FBRyxhQUFhLENBQUMsQ0FBQztBQUUzRixlQUFPLE1BQU0sYUFBYTs7Ozs7Ozs7Ozs7Ozs7O0VBT3pCLENBQUM7QUFFRiwrREFBK0Q7QUFDL0QsTUFBTSxNQUFNLHFCQUFxQixHQUFHO0lBQ2xDLFdBQVcsRUFBRSxNQUFNLENBQUM7SUFDcEIsV0FBVyxFQUFFLFdBQVcsQ0FBQztDQUMxQixDQUFDO0FBRUYseUZBQXlGO0FBQ3pGLE1BQU0sTUFBTSxjQUFjLEdBQUc7SUFDM0IsU0FBUyxFQUFFLFVBQVUsQ0FBQztJQUN0QixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsUUFBUSxFQUFFLHFCQUFxQixFQUFFLENBQUM7Q0FDbkMsQ0FBQztBQUVGLDhEQUE4RDtBQUM5RCxNQUFNLE1BQU0sWUFBWSxHQUFHO0lBQ3pCLE9BQU8sRUFBRSxVQUFVLENBQUM7SUFDcEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxDQUFDO0lBQzFCLFNBQVMsRUFBRSxNQUFNLENBQUM7Q0FDbkIsQ0FBQztBQUVGLHNFQUFzRTtBQUN0RSxNQUFNLE1BQU0saUJBQWlCLEdBQUcsWUFBWSxHQUFHO0lBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQztJQUFDLEtBQUssRUFBRSxNQUFNLENBQUE7Q0FBRSxDQUFDO0FBRWhGLGVBQU8sTUFBTSx1QkFBdUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBY25DLENBQUM7QUFFRixrRUFBa0U7QUFDbEUsTUFBTSxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQztBQUV4QyxNQUFNLE1BQU0sbUJBQW1CO0FBQzdCLG1FQUFtRTtBQUNqRTtJQUFFLElBQUksRUFBRSx1QkFBdUIsQ0FBQztJQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQTtDQUFFO0FBQzNELG9FQUFvRTtHQUNsRTtJQUFFLElBQUksRUFBRSxxQkFBcUIsQ0FBQztJQUFDLE9BQU8sRUFBRSxVQUFVLENBQUE7Q0FBRTtBQUN0RCxtRUFBbUU7R0FDakU7SUFBRSxJQUFJLEVBQUUsd0JBQXdCLENBQUM7SUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFBO0NBQUU7QUFDbkQseURBQXlEO0dBQ3ZEO0lBQUUsSUFBSSxFQUFFLGVBQWUsQ0FBQztJQUFDLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxDQUFDO0lBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUM7SUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFBO0NBQUU7QUFDbkcsZ0VBQWdFO0dBQzlEO0lBQUUsSUFBSSxFQUFFLGVBQWUsQ0FBQztJQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDO0lBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQTtDQUFFLENBQUM7QUFFekUsTUFBTSxNQUFNLHVCQUF1QixHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDIn0=