Source code for jam.types.header

from dataclasses import dataclass
from jam.types.base.choices.option import Option, decodable_option
from jam.types.base.sequences.array import Array, decodable_array
from jam.types.base import Vector, decodable_vector
from jam.types.extrinsics.tickets import TicketBody
from jam.types.protocol.core import TimeSlot, ValidatorIndex
from jam.types.protocol.epoch import EpochMark
from jam.utils.codec.codable import Codable
from jam.utils.codec.decorators.dataclasses import decodable_dataclass
from jam.types.protocol.crypto import (
    BandersnatchVrfSignature,
    Ed25519Public,
    HeaderHash,
    StateRoot,
    OpaqueHash,
)
from jam.utils.constants import EPOCH_LENGTH
from jam.utils.json.serde import JsonSerde

"""Fixed-length array of ticket bodies."""


[docs] @decodable_array(length=EPOCH_LENGTH, element_type=TicketBody) class TicketsMark(Array[TicketBody]): ...
[docs] @decodable_vector(element_type=Ed25519Public) class OffendersMark(Vector[Ed25519Public]): ...
[docs] @decodable_option(EpochMark) class OptionalEpochMark(Option): ...
[docs] @decodable_option(TicketsMark) class OptionalTicketsMark(Option): ...