from near_jsonrpc_models.block_id import BlockId
from near_jsonrpc_models.finality import Finality
from near_jsonrpc_models.sync_checkpoint import SyncCheckpoint
from pydantic import BaseModel
from pydantic import RootModel
from typing import Union


class RpcStateChangesInBlockRequestBlockId(BaseModel):
    block_id: BlockId

class RpcStateChangesInBlockRequestFinality(BaseModel):
    finality: Finality

class RpcStateChangesInBlockRequestSyncCheckpoint(BaseModel):
    sync_checkpoint: SyncCheckpoint

class RpcStateChangesInBlockRequest(RootModel[Union[RpcStateChangesInBlockRequestBlockId, RpcStateChangesInBlockRequestFinality, RpcStateChangesInBlockRequestSyncCheckpoint]]):
    pass

