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):
...