from __future__ import annotations from typing import TYPE_CHECKING if TYPE_CHECKING: from .net import CFNet from .types import OriginItemTypes from ..common.types import ItemTypes from .crypto import CFSign class CFItem: def __init__(self, origin_item: OriginItemTypes, type: ItemTypes, net: CFNet): self._origin_item = origin_item self.type = type.value self.net = net class CFTxIn(CFItem): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.prev_hash = str(self._origin_item.prevHash) self.prev_idx = self._origin_item.prevIdx class CFTxInCond(CFItem): pass class CFTxOut(CFItem): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.address = str(self._origin_item.addr) self.value = self._origin_item.value class CFTxOutCond(CFItem): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.expires = self._origin_item.tsExpires self.value = self._origin_item.value self.subtype = str(self._origin_item.typeSubtype) class CFTxPkey(CFItem): pass class CFTxSig(CFItem): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.size = self._origin_item.sigSize self.sign = CFSign(self._origin_item.sign, self.net) class CFTxToken(CFItem): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.ticker = self._origin_item.ticker self.emission_hash = str(self._origin_item.tokenEmissionHash) self.emission_chain_id = str(self._origin_item.tokenEmissionChainId) class CFTxReceipt(CFItem): pass class CFTxOutExt(CFItem): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.address = str(self._origin_item.addr) self.ticker = self._origin_item.token self.value = self._origin_item.value class CFTxTSD(CFItem): pass class CFTxOutCondSubtypeSrvPay(CFItem): pass class CFTxOutCondSubtypeSrvXchange(CFItem): pass class CFTxOutCondSubtypeSrvStakeLock(CFItem): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.unlock = self._origin_item.timeUnlock self.value = self._origin_item.value self.reinvest_percent = self._origin_item.reinvestPercent class CFTxOutCondSubtypeSrvStakePosDelegate(CFItem): pass