import typing as t
from dataclasses import dataclass
from celestia._celestia import types as ext # noqa
[docs]
@dataclass
class Balance:
""" Represents the balance of a particular denomination.
Attributes:
amount (int): The amount of the balance.
denom (str): The denomination of the balance.
"""
amount: int
denom: str
def __init__(self, amount: int, denom: str):
self.amount = int(amount)
self.denom = denom
[docs]
@staticmethod
def deserializer(result: dict) -> 'Balance':
""" Deserialize a result dictionary into a Balance object.
Args:
result (dict): The dictionary representation of a Balance.
Returns:
Balance: The deserialized Balance object.
"""
if result is not None:
return Balance(**result)
[docs]
@dataclass
class TXResponse:
""" Represents the response for a transaction.
Attributes:
height (int): The block height of the transaction.
txhash (str): The transaction hash.
logs (tuple[t.Any] | None): Logs associated with the transaction, if any.
events (tuple[t.Any, ...] | None): Events triggered by the transaction, if any.
"""
height: int
txhash: str
logs: tuple[t.Any] | None = None
events: tuple[t.Any, ...] | None = None
def __init__(self, height, txhash, logs, events):
self.height = int(height)
self.txhash = txhash
self.logs = tuple(log for log in logs) if logs else None
self.events = tuple(event for event in events) if events else None
[docs]
@staticmethod
def deserializer(result: dict) -> 'TXResponse':
""" Deserialize a result dictionary into a TXResponse object.
Args:
result (dict): The dictionary representation of a TXResponse.
Returns:
TXResponse: The deserialized TXResponse object.
"""
if result is not None:
return TXResponse(**result)
[docs]
@dataclass
class Delegation:
""" Represents a delegation of tokens to a validator.
Attributes:
delegator_address (str): The address of the delegator.
validator_address (str): The address of the validator.
shares (float): The amount of shares in the delegation.
"""
delegator_address: str
validator_address: str
shares: float
def __init__(self, delegator_address, validator_address, shares):
self.delegator_address = delegator_address
self.validator_address = validator_address
self.shares = float(shares)
[docs]
@dataclass
class DelegationResponse:
""" Represents the response for a delegation query.
Attributes:
delegation (Delegation): The delegation details.
balance (Balance): The balance associated with the delegation.
"""
delegation: Delegation
balance: Balance
def __init__(self, delegation, balance):
self.delegation = Delegation(**delegation)
self.balance = Balance(**balance)
[docs]
@dataclass
class QueryDelegationResponse:
""" Represents the response for a delegation query.
Attributes:
delegation_response (DelegationResponse): The delegation response details.
"""
delegation_response: DelegationResponse
def __init__(self, delegation_response):
self.delegation_response = DelegationResponse(**delegation_response)
[docs]
@staticmethod
def deserializer(result: dict) -> 'QueryDelegationResponse':
""" Deserialize a result dictionary into a QueryDelegationResponse object.
Args:
result (dict): The dictionary representation of a QueryDelegationResponse.
Returns:
QueryDelegationResponse: The deserialized QueryDelegationResponse object.
"""
if result is not None:
return QueryDelegationResponse(**result)
[docs]
@dataclass
class RedelegationEntry:
""" Represents a redelegation entry.
Attributes:
creation_height (int): The block height when the redelegation was created.
completion_time (str): The completion time of the redelegation.
initial_balance (int): The initial balance of the redelegation.
shares_dst (float): The amount of shares transferred to the destination validator.
"""
creation_height: int
completion_time: str
initial_balance: int
shares_dst: float
def __init__(self, creation_height, completion_time, initial_balance, shares_dst):
self.creation_height = creation_height
self.completion_time = completion_time
self.initial_balance = int(initial_balance)
self.shares_dst = float(shares_dst)
[docs]
@dataclass
class Redelegation:
""" Represents a redelegation of tokens from one validator to another.
Attributes:
delegator_address (str): The address of the delegator.
validator_src_address (str): The address of the source validator.
validator_dst_address (str): The address of the destination validator.
entries (tuple[RedelegationEntry, ...]): A list of redelegation entries.
"""
delegator_address: str
validator_src_address: str
validator_dst_address: str
entries: tuple[RedelegationEntry, ...]
def __init__(self, delegator_address, validator_src_address, validator_dst_address, entries):
self.delegator_address = delegator_address
self.validator_src_address = validator_src_address
self.validator_dst_address = validator_dst_address
self.entries = tuple(RedelegationEntry(**entry) for entry in entries) if entries is not None else []
[docs]
@dataclass
class RedelegationResponseEntry:
""" Represents a redelegation response entry.
Attributes:
redelegation_entry (RedelegationEntry): The redelegation entry details.
balance (int): The balance of the redelegation entry.
"""
redelegation_entry: RedelegationEntry
balance: int
def __init__(self, redelegation_entry, balance):
self.redelegation_entry = RedelegationEntry(**redelegation_entry)
self.balance = int(balance)
[docs]
@dataclass
class RedelegationResponse:
""" Represents the response for a redelegation query.
Attributes:
redelegation (Redelegation): The redelegation details.
entries (tuple[RedelegationResponseEntry, ...]): A list of redelegation response entries.
"""
redelegation: Redelegation
entries: tuple[RedelegationResponseEntry, ...]
def __init__(self, redelegation, entries):
self.redelegation = Redelegation(**redelegation)
self.entries = tuple(RedelegationResponseEntry(**entry) for entry in entries)
[docs]
@dataclass
class QueryRedelegationResponse:
""" Represents the response for a query to retrieve redelegations.
Attributes:
redelegation_responses (tuple[RedelegationResponse, ...]): A list of redelegation responses.
pagination (Pagination): Pagination information for the query results.
"""
redelegation_responses: tuple[RedelegationResponse, ...]
pagination: Pagination
def __init__(self, redelegation_responses, pagination=None):
self.redelegation_responses = tuple(
RedelegationResponse(**redelegation_response) for redelegation_response in redelegation_responses)
self.pagination = Pagination(**pagination) if pagination else None
[docs]
@staticmethod
def deserializer(result: dict) -> 'QueryRedelegationResponse':
""" Deserialize a result dictionary into a QueryRedelegationResponse object.
Args:
result (dict): The dictionary representation of a QueryRedelegationResponse.
Returns:
QueryRedelegationResponse: The deserialized QueryRedelegationResponse object.
"""
if result is not None:
return QueryRedelegationResponse(**result)
[docs]
@dataclass
class UnbondEntry:
""" Represents an unbonding entry for a validator.
Attributes:
creation_height (int): The block height when the unbonding was created.
completion_time (str): The completion time of the unbonding.
initial_balance (int): The initial balance of the unbonding.
balance (int): The current balance after unbonding.
"""
creation_height: int
completion_time: str
initial_balance: int
balance: int
def __init__(self, creation_height, completion_time, initial_balance, balance):
self.creation_height = creation_height
self.completion_time = completion_time
self.initial_balance = int(initial_balance)
self.balance = int(balance)
[docs]
@dataclass
class Unbond:
""" Represents an unbonding of tokens from a validator.
Attributes:
delegator_address (str): The address of the delegator.
validator_address (str): The address of the validator.
entries (tuple[UnbondEntry, ...]): A list of unbonding entries.
"""
delegator_address: str
validator_address: str
entries: tuple[UnbondEntry, ...]
def __init__(self, delegator_address, validator_address, entries):
self.delegator_address = delegator_address
self.validator_address = validator_address
self.entries = tuple(UnbondEntry(**entry) for entry in entries)
[docs]
@dataclass
class QueryUnbondingDelegationResponse:
""" Represents the response for a query to retrieve unbonding delegations.
Attributes:
unbond (Unbond): The unbonding details.
"""
unbond: Unbond
def __init__(self, unbond):
self.unbond = Unbond(**unbond)
[docs]
@staticmethod
def deserializer(result: dict) -> 'QueryUnbondingDelegationResponse':
""" Deserialize a result dictionary into a QueryUnbondingDelegationResponse object.
Args:
result (dict): The dictionary representation of a QueryUnbondingDelegationResponse.
Returns:
QueryUnbondingDelegationResponse: The deserialized QueryUnbondingDelegationResponse object.
"""
if result is not None:
return QueryUnbondingDelegationResponse(**result)