Skip to content

Chain Modules

dYdX Chain module groups.

GrpcOptions

Bases: TypedDict

Options for constructing a gRPC transport.

Source code in pkg/src/dydx/chain/modules/__init__.py
class GrpcOptions(TypedDict, total=False):
  """Options for constructing a gRPC transport."""

  port: int
  """gRPC endpoint port."""
  ssl: bool
  """Use TLS for the gRPC channel."""

port instance-attribute

gRPC endpoint port.

ssl instance-attribute

Use TLS for the gRPC channel.

Modules dataclass

Bases: GrpcRouter

Composed dYdX Chain module groups.

Source code in pkg/src/dydx/chain/modules/__init__.py
class Modules(GrpcRouter):
  """Composed dYdX Chain module groups."""

  auth: Auth
  bank: Bank
  tx: Tx
  tendermint: Tendermint
  staking: Staking
  distribution: Distribution
  subaccounts: Subaccounts
  clob: Clob
  prices: Prices
  perpetuals: Perpetuals
  assets: Assets
  feetiers: Feetiers
  rewards: Rewards
  affiliates: Affiliates
  revshare: Revshare

  @classmethod
  def new(cls, host: str, **kwargs: Unpack[GrpcOptions]) -> Self:
    """Create module groups for a custom gRPC endpoint."""
    return cls(client=GrpcClient(host=host, **kwargs))

  @classmethod
  def from_client(cls, client: GrpcClient) -> Self:
    """Create module groups from an existing gRPC transport."""
    return cls(client=client)

  @classmethod
  def oegs(cls, **kwargs: Unpack[GrpcOptions]) -> Self:
    """Create module groups for the OEGS mainnet gRPC endpoint."""
    return cls.new(DYDX_GRPC_OEGS_HOST, **kwargs)

  @classmethod
  def polkachu(cls, **kwargs: Unpack[GrpcOptions]) -> Self:
    """Create module groups for the first Polkachu mainnet gRPC endpoint."""
    return cls.new(DYDX_GRPC_POLKACHU_1_HOST, **kwargs)

  @classmethod
  def polkachu_2(cls, **kwargs: Unpack[GrpcOptions]) -> Self:
    """Create module groups for the second Polkachu mainnet gRPC endpoint."""
    return cls.new(DYDX_GRPC_POLKACHU_2_HOST, **kwargs)

  @classmethod
  def polkachu_3(cls, **kwargs: Unpack[GrpcOptions]) -> Self:
    """Create module groups for the third Polkachu mainnet gRPC endpoint."""
    return cls.new(DYDX_GRPC_POLKACHU_3_HOST, **kwargs)

  @classmethod
  def kingnodes(cls, **kwargs: Unpack[GrpcOptions]) -> Self:
    """Create module groups for the KingNodes mainnet gRPC endpoint."""
    return cls.new(DYDX_GRPC_KINGNODES_HOST, **kwargs)

  @classmethod
  def enigma(cls, **kwargs: Unpack[GrpcOptions]) -> Self:
    """Create module groups for the Enigma mainnet gRPC endpoint."""
    return cls.new(DYDX_GRPC_ENIGMA_HOST, **kwargs)

  @classmethod
  def polkachu_archive(cls, **kwargs: Unpack[GrpcOptions]) -> Self:
    """Create module groups for the Polkachu archive mainnet gRPC endpoint."""
    return cls.new(DYDX_GRPC_POLKACHU_ARCHIVE_1_HOST, **kwargs)

  @classmethod
  def kingnodes_archive(cls, **kwargs: Unpack[GrpcOptions]) -> Self:
    """Create module groups for the KingNodes archive mainnet gRPC endpoint."""
    return cls.new(DYDX_GRPC_KINGNODES_ARCHIVE_HOST, **kwargs)

  @classmethod
  def enigma_archive(cls, **kwargs: Unpack[GrpcOptions]) -> Self:
    """Create module groups for the Enigma archive mainnet gRPC endpoint."""
    return cls.new(DYDX_GRPC_ENIGMA_ARCHIVE_HOST, **kwargs)

  @classmethod
  def testnet_oegs(cls, **kwargs: Unpack[GrpcOptions]) -> Self:
    """Create module groups for the OEGS testnet gRPC endpoint."""
    return cls.new(DYDX_TESTNET_GRPC_OEGS_HOST, **kwargs)

  @classmethod
  def testnet_kingnodes(cls, **kwargs: Unpack[GrpcOptions]) -> Self:
    """Create module groups for the KingNodes testnet gRPC endpoint."""
    return cls.new(DYDX_TESTNET_GRPC_KINGNODES_HOST, **kwargs)

  @classmethod
  def testnet_polkachu(cls, **kwargs: Unpack[GrpcOptions]) -> Self:
    """Create module groups for the Polkachu plaintext testnet gRPC endpoint."""
    port = kwargs.get('port', 23890)
    ssl = kwargs.get('ssl', False)
    return cls.new(DYDX_TESTNET_GRPC_POLKACHU_HOST, port=port, ssl=ssl)

enigma(**kwargs) classmethod

Create module groups for the Enigma mainnet gRPC endpoint.

Source code in pkg/src/dydx/chain/modules/__init__.py
@classmethod
def enigma(cls, **kwargs: Unpack[GrpcOptions]) -> Self:
  """Create module groups for the Enigma mainnet gRPC endpoint."""
  return cls.new(DYDX_GRPC_ENIGMA_HOST, **kwargs)

enigma_archive(**kwargs) classmethod

Create module groups for the Enigma archive mainnet gRPC endpoint.

Source code in pkg/src/dydx/chain/modules/__init__.py
@classmethod
def enigma_archive(cls, **kwargs: Unpack[GrpcOptions]) -> Self:
  """Create module groups for the Enigma archive mainnet gRPC endpoint."""
  return cls.new(DYDX_GRPC_ENIGMA_ARCHIVE_HOST, **kwargs)

from_client(client) classmethod

Create module groups from an existing gRPC transport.

Source code in pkg/src/dydx/chain/modules/__init__.py
@classmethod
def from_client(cls, client: GrpcClient) -> Self:
  """Create module groups from an existing gRPC transport."""
  return cls(client=client)

kingnodes(**kwargs) classmethod

Create module groups for the KingNodes mainnet gRPC endpoint.

Source code in pkg/src/dydx/chain/modules/__init__.py
@classmethod
def kingnodes(cls, **kwargs: Unpack[GrpcOptions]) -> Self:
  """Create module groups for the KingNodes mainnet gRPC endpoint."""
  return cls.new(DYDX_GRPC_KINGNODES_HOST, **kwargs)

kingnodes_archive(**kwargs) classmethod

Create module groups for the KingNodes archive mainnet gRPC endpoint.

Source code in pkg/src/dydx/chain/modules/__init__.py
@classmethod
def kingnodes_archive(cls, **kwargs: Unpack[GrpcOptions]) -> Self:
  """Create module groups for the KingNodes archive mainnet gRPC endpoint."""
  return cls.new(DYDX_GRPC_KINGNODES_ARCHIVE_HOST, **kwargs)

new(host, **kwargs) classmethod

Create module groups for a custom gRPC endpoint.

Source code in pkg/src/dydx/chain/modules/__init__.py
@classmethod
def new(cls, host: str, **kwargs: Unpack[GrpcOptions]) -> Self:
  """Create module groups for a custom gRPC endpoint."""
  return cls(client=GrpcClient(host=host, **kwargs))

oegs(**kwargs) classmethod

Create module groups for the OEGS mainnet gRPC endpoint.

Source code in pkg/src/dydx/chain/modules/__init__.py
@classmethod
def oegs(cls, **kwargs: Unpack[GrpcOptions]) -> Self:
  """Create module groups for the OEGS mainnet gRPC endpoint."""
  return cls.new(DYDX_GRPC_OEGS_HOST, **kwargs)

polkachu(**kwargs) classmethod

Create module groups for the first Polkachu mainnet gRPC endpoint.

Source code in pkg/src/dydx/chain/modules/__init__.py
@classmethod
def polkachu(cls, **kwargs: Unpack[GrpcOptions]) -> Self:
  """Create module groups for the first Polkachu mainnet gRPC endpoint."""
  return cls.new(DYDX_GRPC_POLKACHU_1_HOST, **kwargs)

polkachu_2(**kwargs) classmethod

Create module groups for the second Polkachu mainnet gRPC endpoint.

Source code in pkg/src/dydx/chain/modules/__init__.py
@classmethod
def polkachu_2(cls, **kwargs: Unpack[GrpcOptions]) -> Self:
  """Create module groups for the second Polkachu mainnet gRPC endpoint."""
  return cls.new(DYDX_GRPC_POLKACHU_2_HOST, **kwargs)

polkachu_3(**kwargs) classmethod

Create module groups for the third Polkachu mainnet gRPC endpoint.

Source code in pkg/src/dydx/chain/modules/__init__.py
@classmethod
def polkachu_3(cls, **kwargs: Unpack[GrpcOptions]) -> Self:
  """Create module groups for the third Polkachu mainnet gRPC endpoint."""
  return cls.new(DYDX_GRPC_POLKACHU_3_HOST, **kwargs)

polkachu_archive(**kwargs) classmethod

Create module groups for the Polkachu archive mainnet gRPC endpoint.

Source code in pkg/src/dydx/chain/modules/__init__.py
@classmethod
def polkachu_archive(cls, **kwargs: Unpack[GrpcOptions]) -> Self:
  """Create module groups for the Polkachu archive mainnet gRPC endpoint."""
  return cls.new(DYDX_GRPC_POLKACHU_ARCHIVE_1_HOST, **kwargs)

testnet_kingnodes(**kwargs) classmethod

Create module groups for the KingNodes testnet gRPC endpoint.

Source code in pkg/src/dydx/chain/modules/__init__.py
@classmethod
def testnet_kingnodes(cls, **kwargs: Unpack[GrpcOptions]) -> Self:
  """Create module groups for the KingNodes testnet gRPC endpoint."""
  return cls.new(DYDX_TESTNET_GRPC_KINGNODES_HOST, **kwargs)

testnet_oegs(**kwargs) classmethod

Create module groups for the OEGS testnet gRPC endpoint.

Source code in pkg/src/dydx/chain/modules/__init__.py
@classmethod
def testnet_oegs(cls, **kwargs: Unpack[GrpcOptions]) -> Self:
  """Create module groups for the OEGS testnet gRPC endpoint."""
  return cls.new(DYDX_TESTNET_GRPC_OEGS_HOST, **kwargs)

testnet_polkachu(**kwargs) classmethod

Create module groups for the Polkachu plaintext testnet gRPC endpoint.

Source code in pkg/src/dydx/chain/modules/__init__.py
@classmethod
def testnet_polkachu(cls, **kwargs: Unpack[GrpcOptions]) -> Self:
  """Create module groups for the Polkachu plaintext testnet gRPC endpoint."""
  port = kwargs.get('port', 23890)
  ssl = kwargs.get('ssl', False)
  return cls.new(DYDX_TESTNET_GRPC_POLKACHU_HOST, port=port, ssl=ssl)

ModulesOptions

Bases: TypedDict

Options shared by gRPC module constructors.

Source code in pkg/src/dydx/chain/modules/__init__.py
class ModulesOptions(TypedDict, total=False):
  """Options shared by gRPC module constructors."""

  client: GrpcClient
  """Existing gRPC transport shared by module adapters."""

client instance-attribute

Existing gRPC transport shared by module adapters.

Cosmos auth module.

Auth dataclass

Bases: Account, AccountInfo, Accounts, GrpcEndpoint

Cosmos auth query group.

Source code in pkg/src/dydx/chain/modules/auth/__init__.py
class Auth(Account, AccountInfo, Accounts, GrpcEndpoint):
  """Cosmos auth query group."""

Cosmos auth account query.

Account dataclass

Bases: GrpcEndpoint

Auth account endpoint.

Source code in pkg/src/dydx/chain/modules/auth/account.py
class Account(GrpcEndpoint):
  """Auth account endpoint."""

  async def account(self, address: str) -> auth_proto.QueryAccountResponse:
    """Query an account by address."""
    return await auth_proto.QueryStub(self.channel).account(auth_proto.QueryAccountRequest(address=address))

account(address) async

Query an account by address.

Source code in pkg/src/dydx/chain/modules/auth/account.py
async def account(self, address: str) -> auth_proto.QueryAccountResponse:
  """Query an account by address."""
  return await auth_proto.QueryStub(self.channel).account(auth_proto.QueryAccountRequest(address=address))

Cosmos auth account info query.

AccountInfo dataclass

Bases: GrpcEndpoint

Auth account info endpoint.

Source code in pkg/src/dydx/chain/modules/auth/account_info.py
class AccountInfo(GrpcEndpoint):
  """Auth account info endpoint."""

  async def account_info(self, address: str) -> auth_proto.QueryAccountInfoResponse:
    """Query account sequence and number information."""
    return await auth_proto.QueryStub(self.channel).account_info(auth_proto.QueryAccountInfoRequest(address=address))

account_info(address) async

Query account sequence and number information.

Source code in pkg/src/dydx/chain/modules/auth/account_info.py
async def account_info(self, address: str) -> auth_proto.QueryAccountInfoResponse:
  """Query account sequence and number information."""
  return await auth_proto.QueryStub(self.channel).account_info(auth_proto.QueryAccountInfoRequest(address=address))

Cosmos auth accounts query.

Accounts dataclass

Bases: GrpcEndpoint

Auth accounts endpoint.

Source code in pkg/src/dydx/chain/modules/auth/accounts.py
class Accounts(GrpcEndpoint):
  """Auth accounts endpoint."""

  async def accounts(self, *, pagination: query_proto.PageRequest | None = None) -> auth_proto.QueryAccountsResponse:
    """Query chain accounts."""
    request = auth_proto.QueryAccountsRequest(pagination=pagination)
    return await auth_proto.QueryStub(self.channel).accounts(request)

  def accounts_paged(self, *, limit: int | None = None) -> PaginatedResponse[Any, bytes]:
    """Page through chain accounts.

    Args:
      limit: Optional maximum number of accounts per page.

    Returns:
      A paginated response yielding account payload pages.
    """
    async def next(key: bytes) -> tuple[list[Any], bytes | None]:
      """Fetch the next account page."""
      response = await self.accounts(pagination=page_request(key, limit=limit))
      return response.accounts, next_key(response)

    return PaginatedResponse(b'', next)

accounts(*, pagination=None) async

Query chain accounts.

Source code in pkg/src/dydx/chain/modules/auth/accounts.py
async def accounts(self, *, pagination: query_proto.PageRequest | None = None) -> auth_proto.QueryAccountsResponse:
  """Query chain accounts."""
  request = auth_proto.QueryAccountsRequest(pagination=pagination)
  return await auth_proto.QueryStub(self.channel).accounts(request)

accounts_paged(*, limit=None)

Page through chain accounts.

Parameters:

Name Type Description Default
limit int | None

Optional maximum number of accounts per page.

None

Returns:

Type Description
PaginatedResponse[Any, bytes]

A paginated response yielding account payload pages.

Source code in pkg/src/dydx/chain/modules/auth/accounts.py
def accounts_paged(self, *, limit: int | None = None) -> PaginatedResponse[Any, bytes]:
  """Page through chain accounts.

  Args:
    limit: Optional maximum number of accounts per page.

  Returns:
    A paginated response yielding account payload pages.
  """
  async def next(key: bytes) -> tuple[list[Any], bytes | None]:
    """Fetch the next account page."""
    response = await self.accounts(pagination=page_request(key, limit=limit))
    return response.accounts, next_key(response)

  return PaginatedResponse(b'', next)

Cosmos bank module.

Bank dataclass

Bases: AllBalances, Balance, DenomMetadata, DenomMetadataByQueryString, DenomsMetadata, Params, SpendableBalances, Supply, TotalSupply, GrpcEndpoint

Cosmos bank query group.

Source code in pkg/src/dydx/chain/modules/bank/__init__.py
class Bank(
  AllBalances,
  Balance,
  DenomMetadata,
  DenomMetadataByQueryString,
  DenomsMetadata,
  Params,
  SpendableBalances,
  Supply,
  TotalSupply,
  GrpcEndpoint,
):
  """Cosmos bank query group."""

Cosmos bank all balances query.

AllBalances dataclass

Bases: GrpcEndpoint

Bank all balances endpoint.

Source code in pkg/src/dydx/chain/modules/bank/all_balances.py
class AllBalances(GrpcEndpoint):
  """Bank all balances endpoint."""

  async def all_balances(
    self, address: str, *, pagination: query_proto.PageRequest | None = None, resolve_denom: bool = False,
  ) -> bank_proto.QueryAllBalancesResponse:
    """Query all balances for an account address."""
    request = bank_proto.QueryAllBalancesRequest(
      address=address,
      pagination=pagination,
      resolve_denom=resolve_denom,
    )
    return await bank_proto.QueryStub(self.channel).all_balances(request)

  def all_balances_paged(
    self, address: str, *, limit: int | None = None, resolve_denom: bool = False,
  ) -> PaginatedResponse[coin_proto.Coin, bytes]:
    """Page through all balances for an account address.

    Args:
      address: Account address to query.
      limit: Optional maximum number of balances per page.
      resolve_denom: Resolve denoms into human-readable metadata when supported.

    Returns:
      A paginated response yielding balance pages.
    """
    async def next(key: bytes) -> tuple[list[coin_proto.Coin], bytes | None]:
      """Fetch the next balance page."""
      response = await self.all_balances(
        address,
        pagination=page_request(key, limit=limit),
        resolve_denom=resolve_denom,
      )
      return response.balances, next_key(response)

    return PaginatedResponse(b'', next)

all_balances(address, *, pagination=None, resolve_denom=False) async

Query all balances for an account address.

Source code in pkg/src/dydx/chain/modules/bank/all_balances.py
async def all_balances(
  self, address: str, *, pagination: query_proto.PageRequest | None = None, resolve_denom: bool = False,
) -> bank_proto.QueryAllBalancesResponse:
  """Query all balances for an account address."""
  request = bank_proto.QueryAllBalancesRequest(
    address=address,
    pagination=pagination,
    resolve_denom=resolve_denom,
  )
  return await bank_proto.QueryStub(self.channel).all_balances(request)

all_balances_paged(address, *, limit=None, resolve_denom=False)

Page through all balances for an account address.

Parameters:

Name Type Description Default
address str

Account address to query.

required
limit int | None

Optional maximum number of balances per page.

None
resolve_denom bool

Resolve denoms into human-readable metadata when supported.

False

Returns:

Type Description
PaginatedResponse[Coin, bytes]

A paginated response yielding balance pages.

Source code in pkg/src/dydx/chain/modules/bank/all_balances.py
def all_balances_paged(
  self, address: str, *, limit: int | None = None, resolve_denom: bool = False,
) -> PaginatedResponse[coin_proto.Coin, bytes]:
  """Page through all balances for an account address.

  Args:
    address: Account address to query.
    limit: Optional maximum number of balances per page.
    resolve_denom: Resolve denoms into human-readable metadata when supported.

  Returns:
    A paginated response yielding balance pages.
  """
  async def next(key: bytes) -> tuple[list[coin_proto.Coin], bytes | None]:
    """Fetch the next balance page."""
    response = await self.all_balances(
      address,
      pagination=page_request(key, limit=limit),
      resolve_denom=resolve_denom,
    )
    return response.balances, next_key(response)

  return PaginatedResponse(b'', next)

Cosmos bank balance query.

Balance dataclass

Bases: GrpcEndpoint

Bank balance endpoint.

Source code in pkg/src/dydx/chain/modules/bank/balance.py
class Balance(GrpcEndpoint):
  """Bank balance endpoint."""

  async def balance(self, *, address: str, denom: str) -> bank_proto.QueryBalanceResponse:
    """Query one denom balance for an account address."""
    return await bank_proto.QueryStub(self.channel).balance(
      bank_proto.QueryBalanceRequest(address=address, denom=denom)
    )

balance(*, address, denom) async

Query one denom balance for an account address.

Source code in pkg/src/dydx/chain/modules/bank/balance.py
async def balance(self, *, address: str, denom: str) -> bank_proto.QueryBalanceResponse:
  """Query one denom balance for an account address."""
  return await bank_proto.QueryStub(self.channel).balance(
    bank_proto.QueryBalanceRequest(address=address, denom=denom)
  )

Cosmos bank denom metadata query.

DenomMetadata dataclass

Bases: GrpcEndpoint

Bank denom metadata endpoint.

Source code in pkg/src/dydx/chain/modules/bank/denom_metadata.py
class DenomMetadata(GrpcEndpoint):
  """Bank denom metadata endpoint."""

  async def denom_metadata(self, denom: str) -> bank_proto.QueryDenomMetadataResponse:
    """Query metadata for one denom.

    Args:
      denom: Base or display denomination to query.

    Returns:
      Metadata describing the denom display units and exponent.
    """
    request = bank_proto.QueryDenomMetadataRequest(denom=denom)
    return await bank_proto.QueryStub(self.channel).denom_metadata(request)

denom_metadata(denom) async

Query metadata for one denom.

Parameters:

Name Type Description Default
denom str

Base or display denomination to query.

required

Returns:

Type Description
QueryDenomMetadataResponse

Metadata describing the denom display units and exponent.

Source code in pkg/src/dydx/chain/modules/bank/denom_metadata.py
async def denom_metadata(self, denom: str) -> bank_proto.QueryDenomMetadataResponse:
  """Query metadata for one denom.

  Args:
    denom: Base or display denomination to query.

  Returns:
    Metadata describing the denom display units and exponent.
  """
  request = bank_proto.QueryDenomMetadataRequest(denom=denom)
  return await bank_proto.QueryStub(self.channel).denom_metadata(request)

Cosmos bank denom metadata query-string query.

DenomMetadataByQueryString dataclass

Bases: GrpcEndpoint

Bank denom metadata by query string endpoint.

Source code in pkg/src/dydx/chain/modules/bank/denom_metadata_by_query_string.py
class DenomMetadataByQueryString(GrpcEndpoint):
  """Bank denom metadata by query string endpoint."""

  async def denom_metadata_by_query_string(
    self, denom: str,
  ) -> bank_proto.QueryDenomMetadataByQueryStringResponse:
    """Query metadata for one denom through the alternate query-string RPC.

    Args:
      denom: Base or display denomination to query.

    Returns:
      Metadata describing the denom display units and exponent.
    """
    request = bank_proto.QueryDenomMetadataByQueryStringRequest(denom=denom)
    return await bank_proto.QueryStub(self.channel).denom_metadata_by_query_string(request)

denom_metadata_by_query_string(denom) async

Query metadata for one denom through the alternate query-string RPC.

Parameters:

Name Type Description Default
denom str

Base or display denomination to query.

required

Returns:

Type Description
QueryDenomMetadataByQueryStringResponse

Metadata describing the denom display units and exponent.

Source code in pkg/src/dydx/chain/modules/bank/denom_metadata_by_query_string.py
async def denom_metadata_by_query_string(
  self, denom: str,
) -> bank_proto.QueryDenomMetadataByQueryStringResponse:
  """Query metadata for one denom through the alternate query-string RPC.

  Args:
    denom: Base or display denomination to query.

  Returns:
    Metadata describing the denom display units and exponent.
  """
  request = bank_proto.QueryDenomMetadataByQueryStringRequest(denom=denom)
  return await bank_proto.QueryStub(self.channel).denom_metadata_by_query_string(request)

Cosmos bank denoms metadata query.

DenomsMetadata dataclass

Bases: GrpcEndpoint

Bank denoms metadata endpoint.

Source code in pkg/src/dydx/chain/modules/bank/denoms_metadata.py
class DenomsMetadata(GrpcEndpoint):
  """Bank denoms metadata endpoint."""

  async def denoms_metadata(
    self, *, pagination: query_proto.PageRequest | None = None,
  ) -> bank_proto.QueryDenomsMetadataResponse:
    """Query metadata for all registered denoms.

    Args:
      pagination: Optional page controls for large metadata registries.

    Returns:
      Metadata entries describing denom display units and exponents.
    """
    request = bank_proto.QueryDenomsMetadataRequest(pagination=pagination)
    return await bank_proto.QueryStub(self.channel).denoms_metadata(request)

  def denoms_metadata_paged(
    self, *, limit: int | None = None,
  ) -> PaginatedResponse[bank_proto.Metadata, bytes]:
    """Page through metadata for all registered denoms.

    Args:
      limit: Optional maximum number of metadata entries per page.

    Returns:
      A paginated response yielding denom metadata pages.
    """
    async def next(key: bytes) -> tuple[list[bank_proto.Metadata], bytes | None]:
      """Fetch the next denom metadata page."""
      response = await self.denoms_metadata(pagination=page_request(key, limit=limit))
      return response.metadatas, next_key(response)

    return PaginatedResponse(b'', next)

denoms_metadata(*, pagination=None) async

Query metadata for all registered denoms.

Parameters:

Name Type Description Default
pagination PageRequest | None

Optional page controls for large metadata registries.

None

Returns:

Type Description
QueryDenomsMetadataResponse

Metadata entries describing denom display units and exponents.

Source code in pkg/src/dydx/chain/modules/bank/denoms_metadata.py
async def denoms_metadata(
  self, *, pagination: query_proto.PageRequest | None = None,
) -> bank_proto.QueryDenomsMetadataResponse:
  """Query metadata for all registered denoms.

  Args:
    pagination: Optional page controls for large metadata registries.

  Returns:
    Metadata entries describing denom display units and exponents.
  """
  request = bank_proto.QueryDenomsMetadataRequest(pagination=pagination)
  return await bank_proto.QueryStub(self.channel).denoms_metadata(request)

denoms_metadata_paged(*, limit=None)

Page through metadata for all registered denoms.

Parameters:

Name Type Description Default
limit int | None

Optional maximum number of metadata entries per page.

None

Returns:

Type Description
PaginatedResponse[Metadata, bytes]

A paginated response yielding denom metadata pages.

Source code in pkg/src/dydx/chain/modules/bank/denoms_metadata.py
def denoms_metadata_paged(
  self, *, limit: int | None = None,
) -> PaginatedResponse[bank_proto.Metadata, bytes]:
  """Page through metadata for all registered denoms.

  Args:
    limit: Optional maximum number of metadata entries per page.

  Returns:
    A paginated response yielding denom metadata pages.
  """
  async def next(key: bytes) -> tuple[list[bank_proto.Metadata], bytes | None]:
    """Fetch the next denom metadata page."""
    response = await self.denoms_metadata(pagination=page_request(key, limit=limit))
    return response.metadatas, next_key(response)

  return PaginatedResponse(b'', next)

Cosmos bank params query.

Params dataclass

Bases: GrpcEndpoint

Bank params endpoint.

Source code in pkg/src/dydx/chain/modules/bank/params.py
class Params(GrpcEndpoint):
  """Bank params endpoint."""

  async def params(self) -> bank_proto.QueryParamsResponse:
    """Query bank module parameters."""
    return await bank_proto.QueryStub(self.channel).params(bank_proto.QueryParamsRequest())

params() async

Query bank module parameters.

Source code in pkg/src/dydx/chain/modules/bank/params.py
async def params(self) -> bank_proto.QueryParamsResponse:
  """Query bank module parameters."""
  return await bank_proto.QueryStub(self.channel).params(bank_proto.QueryParamsRequest())

Cosmos bank spendable balances query.

SpendableBalances dataclass

Bases: GrpcEndpoint

Bank spendable balances endpoint.

Source code in pkg/src/dydx/chain/modules/bank/spendable_balances.py
class SpendableBalances(GrpcEndpoint):
  """Bank spendable balances endpoint."""

  async def spendable_balances(
    self, address: str, *, pagination: query_proto.PageRequest | None = None,
  ) -> bank_proto.QuerySpendableBalancesResponse:
    """Query spendable balances for an account address."""
    request = bank_proto.QuerySpendableBalancesRequest(address=address, pagination=pagination)
    return await bank_proto.QueryStub(self.channel).spendable_balances(request)

  def spendable_balances_paged(
    self, address: str, *, limit: int | None = None,
  ) -> PaginatedResponse[coin_proto.Coin, bytes]:
    """Page through spendable balances for an account address.

    Args:
      address: Account address to query.
      limit: Optional maximum number of balances per page.

    Returns:
      A paginated response yielding spendable balance pages.
    """
    async def next(key: bytes) -> tuple[list[coin_proto.Coin], bytes | None]:
      """Fetch the next spendable balance page."""
      response = await self.spendable_balances(
        address,
        pagination=page_request(key, limit=limit),
      )
      return response.balances, next_key(response)

    return PaginatedResponse(b'', next)

spendable_balances(address, *, pagination=None) async

Query spendable balances for an account address.

Source code in pkg/src/dydx/chain/modules/bank/spendable_balances.py
async def spendable_balances(
  self, address: str, *, pagination: query_proto.PageRequest | None = None,
) -> bank_proto.QuerySpendableBalancesResponse:
  """Query spendable balances for an account address."""
  request = bank_proto.QuerySpendableBalancesRequest(address=address, pagination=pagination)
  return await bank_proto.QueryStub(self.channel).spendable_balances(request)

spendable_balances_paged(address, *, limit=None)

Page through spendable balances for an account address.

Parameters:

Name Type Description Default
address str

Account address to query.

required
limit int | None

Optional maximum number of balances per page.

None

Returns:

Type Description
PaginatedResponse[Coin, bytes]

A paginated response yielding spendable balance pages.

Source code in pkg/src/dydx/chain/modules/bank/spendable_balances.py
def spendable_balances_paged(
  self, address: str, *, limit: int | None = None,
) -> PaginatedResponse[coin_proto.Coin, bytes]:
  """Page through spendable balances for an account address.

  Args:
    address: Account address to query.
    limit: Optional maximum number of balances per page.

  Returns:
    A paginated response yielding spendable balance pages.
  """
  async def next(key: bytes) -> tuple[list[coin_proto.Coin], bytes | None]:
    """Fetch the next spendable balance page."""
    response = await self.spendable_balances(
      address,
      pagination=page_request(key, limit=limit),
    )
    return response.balances, next_key(response)

  return PaginatedResponse(b'', next)

Cosmos bank denom supply query.

Supply dataclass

Bases: GrpcEndpoint

Bank denom supply endpoint.

Source code in pkg/src/dydx/chain/modules/bank/supply.py
class Supply(GrpcEndpoint):
  """Bank denom supply endpoint."""

  async def supply_of(self, denom: str) -> bank_proto.QuerySupplyOfResponse:
    """Query supply for one denom."""
    return await bank_proto.QueryStub(self.channel).supply_of(bank_proto.QuerySupplyOfRequest(denom=denom))

supply_of(denom) async

Query supply for one denom.

Source code in pkg/src/dydx/chain/modules/bank/supply.py
async def supply_of(self, denom: str) -> bank_proto.QuerySupplyOfResponse:
  """Query supply for one denom."""
  return await bank_proto.QueryStub(self.channel).supply_of(bank_proto.QuerySupplyOfRequest(denom=denom))

Cosmos bank total supply query.

TotalSupply dataclass

Bases: GrpcEndpoint

Bank total supply endpoint.

Source code in pkg/src/dydx/chain/modules/bank/total_supply.py
class TotalSupply(GrpcEndpoint):
  """Bank total supply endpoint."""

  async def total_supply(
    self, *, pagination: query_proto.PageRequest | None = None,
  ) -> bank_proto.QueryTotalSupplyResponse:
    """Query total token supply."""
    request = bank_proto.QueryTotalSupplyRequest(pagination=pagination)
    return await bank_proto.QueryStub(self.channel).total_supply(request)

  def total_supply_paged(self, *, limit: int | None = None) -> PaginatedResponse[coin_proto.Coin, bytes]:
    """Page through total token supply.

    Args:
      limit: Optional maximum number of supply entries per page.

    Returns:
      A paginated response yielding supply pages.
    """
    async def next(key: bytes) -> tuple[list[coin_proto.Coin], bytes | None]:
      """Fetch the next supply page."""
      response = await self.total_supply(pagination=page_request(key, limit=limit))
      return response.supply, next_key(response)

    return PaginatedResponse(b'', next)

total_supply(*, pagination=None) async

Query total token supply.

Source code in pkg/src/dydx/chain/modules/bank/total_supply.py
async def total_supply(
  self, *, pagination: query_proto.PageRequest | None = None,
) -> bank_proto.QueryTotalSupplyResponse:
  """Query total token supply."""
  request = bank_proto.QueryTotalSupplyRequest(pagination=pagination)
  return await bank_proto.QueryStub(self.channel).total_supply(request)

total_supply_paged(*, limit=None)

Page through total token supply.

Parameters:

Name Type Description Default
limit int | None

Optional maximum number of supply entries per page.

None

Returns:

Type Description
PaginatedResponse[Coin, bytes]

A paginated response yielding supply pages.

Source code in pkg/src/dydx/chain/modules/bank/total_supply.py
def total_supply_paged(self, *, limit: int | None = None) -> PaginatedResponse[coin_proto.Coin, bytes]:
  """Page through total token supply.

  Args:
    limit: Optional maximum number of supply entries per page.

  Returns:
    A paginated response yielding supply pages.
  """
  async def next(key: bytes) -> tuple[list[coin_proto.Coin], bytes | None]:
    """Fetch the next supply page."""
    response = await self.total_supply(pagination=page_request(key, limit=limit))
    return response.supply, next_key(response)

  return PaginatedResponse(b'', next)

Cosmos tx service module.

Tx dataclass

Bases: Broadcast, GetTx, GetTxsEvent, Simulate, GrpcEndpoint

Cosmos transaction service group.

Source code in pkg/src/dydx/chain/modules/tx/__init__.py
class Tx(Broadcast, GetTx, GetTxsEvent, Simulate, GrpcEndpoint):
  """Cosmos transaction service group."""

Cosmos tx broadcast query.

Broadcast dataclass

Bases: GrpcEndpoint

Transaction broadcast endpoint.

Source code in pkg/src/dydx/chain/modules/tx/broadcast.py
class Broadcast(GrpcEndpoint):
  """Transaction broadcast endpoint."""

  async def broadcast(
    self,
    tx_bytes: bytes,
    *,
    mode: tx_proto.BroadcastMode = tx_proto.BroadcastMode.SYNC,
  ) -> tx_proto.BroadcastTxResponse:
    """Broadcast encoded transaction bytes."""
    request = tx_proto.BroadcastTxRequest(tx_bytes=tx_bytes, mode=mode)
    return await tx_proto.ServiceStub(self.channel).broadcast_tx(request)

broadcast(tx_bytes, *, mode=tx_proto.BroadcastMode.SYNC) async

Broadcast encoded transaction bytes.

Source code in pkg/src/dydx/chain/modules/tx/broadcast.py
async def broadcast(
  self,
  tx_bytes: bytes,
  *,
  mode: tx_proto.BroadcastMode = tx_proto.BroadcastMode.SYNC,
) -> tx_proto.BroadcastTxResponse:
  """Broadcast encoded transaction bytes."""
  request = tx_proto.BroadcastTxRequest(tx_bytes=tx_bytes, mode=mode)
  return await tx_proto.ServiceStub(self.channel).broadcast_tx(request)

Cosmos tx get transaction query.

GetTx dataclass

Bases: GrpcEndpoint

Transaction lookup endpoint.

Source code in pkg/src/dydx/chain/modules/tx/get_tx.py
class GetTx(GrpcEndpoint):
  """Transaction lookup endpoint."""

  async def get_tx(self, hash: str) -> tx_proto.GetTxResponse:
    """Query a transaction by hash."""
    return await tx_proto.ServiceStub(self.channel).get_tx(tx_proto.GetTxRequest(hash=hash))

get_tx(hash) async

Query a transaction by hash.

Source code in pkg/src/dydx/chain/modules/tx/get_tx.py
async def get_tx(self, hash: str) -> tx_proto.GetTxResponse:
  """Query a transaction by hash."""
  return await tx_proto.ServiceStub(self.channel).get_tx(tx_proto.GetTxRequest(hash=hash))

Cosmos tx event search query.

GetTxsEvent dataclass

Bases: GrpcEndpoint

Transaction event search endpoint.

Source code in pkg/src/dydx/chain/modules/tx/get_txs_event.py
class GetTxsEvent(GrpcEndpoint):
  """Transaction event search endpoint."""

  async def get_txs_event(
    self,
    query: str | None = None, *,
    events: list[str] | None = None,
    pagination: query_proto.PageRequest | None = None,
    order_by: OrderBy | None = None,
    page: int | None = None,
    limit: int | None = None,
  ) -> tx_proto.GetTxsEventResponse:
    """Query transactions by event expression."""
    request = tx_proto.GetTxsEventRequest()
    if pagination is not None:
      request.pagination = pagination
    if order_by is not None:
      request.order_by = order_by
    if page is not None:
      request.page = page
    if limit is not None:
      request.limit = limit
    if query is not None:
      request.query = query
    if events:
      request.events.extend(events)
    return await tx_proto.ServiceStub(self.channel).get_txs_event(request)

  def get_txs_event_paged(
    self,
    query: str | None = None, *,
    events: list[str] | None = None,
    order_by: OrderBy | None = None,
    limit: int | None = None,
  ) -> PaginatedResponse[abci_proto.TxResponse, bytes]:
    """Page through transactions matching event filters.

    Args:
      query: Optional event query expression.
      events: Optional event filters for legacy query semantics.
      order_by: Optional result ordering.
      limit: Optional maximum number of transactions per page.

    Returns:
      A paginated response yielding transaction response pages.
    """
    async def next(key: bytes) -> tuple[list[abci_proto.TxResponse], bytes | None]:
      """Fetch the next transaction event page."""
      response = await self.get_txs_event(
        query,
        events=events,
        pagination=page_request(key, limit=limit),
        order_by=order_by,
      )
      return response.tx_responses, next_key(response)

    return PaginatedResponse(b'', next)

get_txs_event(query=None, *, events=None, pagination=None, order_by=None, page=None, limit=None) async

Query transactions by event expression.

Source code in pkg/src/dydx/chain/modules/tx/get_txs_event.py
async def get_txs_event(
  self,
  query: str | None = None, *,
  events: list[str] | None = None,
  pagination: query_proto.PageRequest | None = None,
  order_by: OrderBy | None = None,
  page: int | None = None,
  limit: int | None = None,
) -> tx_proto.GetTxsEventResponse:
  """Query transactions by event expression."""
  request = tx_proto.GetTxsEventRequest()
  if pagination is not None:
    request.pagination = pagination
  if order_by is not None:
    request.order_by = order_by
  if page is not None:
    request.page = page
  if limit is not None:
    request.limit = limit
  if query is not None:
    request.query = query
  if events:
    request.events.extend(events)
  return await tx_proto.ServiceStub(self.channel).get_txs_event(request)

get_txs_event_paged(query=None, *, events=None, order_by=None, limit=None)

Page through transactions matching event filters.

Parameters:

Name Type Description Default
query str | None

Optional event query expression.

None
events list[str] | None

Optional event filters for legacy query semantics.

None
order_by OrderBy | None

Optional result ordering.

None
limit int | None

Optional maximum number of transactions per page.

None

Returns:

Type Description
PaginatedResponse[TxResponse, bytes]

A paginated response yielding transaction response pages.

Source code in pkg/src/dydx/chain/modules/tx/get_txs_event.py
def get_txs_event_paged(
  self,
  query: str | None = None, *,
  events: list[str] | None = None,
  order_by: OrderBy | None = None,
  limit: int | None = None,
) -> PaginatedResponse[abci_proto.TxResponse, bytes]:
  """Page through transactions matching event filters.

  Args:
    query: Optional event query expression.
    events: Optional event filters for legacy query semantics.
    order_by: Optional result ordering.
    limit: Optional maximum number of transactions per page.

  Returns:
    A paginated response yielding transaction response pages.
  """
  async def next(key: bytes) -> tuple[list[abci_proto.TxResponse], bytes | None]:
    """Fetch the next transaction event page."""
    response = await self.get_txs_event(
      query,
      events=events,
      pagination=page_request(key, limit=limit),
      order_by=order_by,
    )
    return response.tx_responses, next_key(response)

  return PaginatedResponse(b'', next)

Cosmos tx simulation query.

Simulate dataclass

Bases: GrpcEndpoint

Transaction simulation endpoint.

Source code in pkg/src/dydx/chain/modules/tx/simulate.py
class Simulate(GrpcEndpoint):
  """Transaction simulation endpoint."""

  async def simulate(
    self,
    tx_bytes: bytes = b'',
    *,
    tx: tx_proto.Tx | None = None,
  ) -> tx_proto.SimulateResponse:
    """Simulate an encoded or structured transaction."""
    request = tx_proto.SimulateRequest(tx_bytes=tx_bytes, tx=tx)
    return await tx_proto.ServiceStub(self.channel).simulate(request)

simulate(tx_bytes=b'', *, tx=None) async

Simulate an encoded or structured transaction.

Source code in pkg/src/dydx/chain/modules/tx/simulate.py
async def simulate(
  self,
  tx_bytes: bytes = b'',
  *,
  tx: tx_proto.Tx | None = None,
) -> tx_proto.SimulateResponse:
  """Simulate an encoded or structured transaction."""
  request = tx_proto.SimulateRequest(tx_bytes=tx_bytes, tx=tx)
  return await tx_proto.ServiceStub(self.channel).simulate(request)

Cosmos Tendermint service module.

Tendermint dataclass

Bases: GetBlockByHeight, GetLatestBlock, GetNodeInfo, GetValidatorSetByHeight, ValidatorSets, GrpcEndpoint

Cosmos Tendermint query group.

Source code in pkg/src/dydx/chain/modules/tendermint/__init__.py
class Tendermint(
  GetBlockByHeight,
  GetLatestBlock,
  GetNodeInfo,
  GetValidatorSetByHeight,
  ValidatorSets,
  GrpcEndpoint,
):
  """Cosmos Tendermint query group."""

Cosmos Tendermint block by height query.

GetBlockByHeight dataclass

Bases: GrpcEndpoint

Tendermint block by height endpoint.

Source code in pkg/src/dydx/chain/modules/tendermint/get_block_by_height.py
class GetBlockByHeight(GrpcEndpoint):
  """Tendermint block by height endpoint."""

  async def get_block_by_height(self, height: int) -> tendermint_proto.GetBlockByHeightResponse:
    """Query a block by height."""
    return await tendermint_proto.ServiceStub(self.channel).get_block_by_height(tendermint_proto.GetBlockByHeightRequest(height=height))

get_block_by_height(height) async

Query a block by height.

Source code in pkg/src/dydx/chain/modules/tendermint/get_block_by_height.py
async def get_block_by_height(self, height: int) -> tendermint_proto.GetBlockByHeightResponse:
  """Query a block by height."""
  return await tendermint_proto.ServiceStub(self.channel).get_block_by_height(tendermint_proto.GetBlockByHeightRequest(height=height))

Cosmos Tendermint latest block query.

GetLatestBlock dataclass

Bases: GrpcEndpoint

Tendermint latest block endpoint.

Source code in pkg/src/dydx/chain/modules/tendermint/get_latest_block.py
class GetLatestBlock(GrpcEndpoint):
  """Tendermint latest block endpoint."""

  async def get_latest_block(self) -> tendermint_proto.GetLatestBlockResponse:
    """Query the latest block."""
    return await tendermint_proto.ServiceStub(self.channel).get_latest_block(tendermint_proto.GetLatestBlockRequest())

get_latest_block() async

Query the latest block.

Source code in pkg/src/dydx/chain/modules/tendermint/get_latest_block.py
async def get_latest_block(self) -> tendermint_proto.GetLatestBlockResponse:
  """Query the latest block."""
  return await tendermint_proto.ServiceStub(self.channel).get_latest_block(tendermint_proto.GetLatestBlockRequest())

Cosmos Tendermint node info query.

GetNodeInfo dataclass

Bases: GrpcEndpoint

Tendermint node info endpoint.

Source code in pkg/src/dydx/chain/modules/tendermint/get_node_info.py
class GetNodeInfo(GrpcEndpoint):
  """Tendermint node info endpoint."""

  async def get_node_info(self) -> tendermint_proto.GetNodeInfoResponse:
    """Query node information."""
    return await tendermint_proto.ServiceStub(self.channel).get_node_info(tendermint_proto.GetNodeInfoRequest())

get_node_info() async

Query node information.

Source code in pkg/src/dydx/chain/modules/tendermint/get_node_info.py
async def get_node_info(self) -> tendermint_proto.GetNodeInfoResponse:
  """Query node information."""
  return await tendermint_proto.ServiceStub(self.channel).get_node_info(tendermint_proto.GetNodeInfoRequest())

Cosmos Tendermint validator set by height query.

GetValidatorSetByHeight dataclass

Bases: GrpcEndpoint

Tendermint validator set by height endpoint.

Source code in pkg/src/dydx/chain/modules/tendermint/get_validator_set_by_height.py
class GetValidatorSetByHeight(GrpcEndpoint):
  """Tendermint validator set by height endpoint."""

  async def get_validator_set_by_height(
    self, height: int, *, pagination: query_proto.PageRequest | None = None,
  ) -> tendermint_proto.GetValidatorSetByHeightResponse:
    """Query a validator set by height."""
    request = tendermint_proto.GetValidatorSetByHeightRequest(height=height, pagination=pagination)
    return await tendermint_proto.ServiceStub(self.channel).get_validator_set_by_height(request)

  def get_validator_set_by_height_paged(
    self, height: int, *, limit: int | None = None,
  ) -> PaginatedResponse[tendermint_proto.Validator, bytes]:
    """Page through a validator set by height.

    Args:
      height: Block height to query.
      limit: Optional maximum number of validators per page.

    Returns:
      A paginated response yielding validator pages.
    """
    async def next(key: bytes) -> tuple[list[tendermint_proto.Validator], bytes | None]:
      """Fetch the next validator-set page for the height."""
      response = await self.get_validator_set_by_height(
        height,
        pagination=page_request(key, limit=limit),
      )
      return response.validators, next_key(response)

    return PaginatedResponse(b'', next)

get_validator_set_by_height(height, *, pagination=None) async

Query a validator set by height.

Source code in pkg/src/dydx/chain/modules/tendermint/get_validator_set_by_height.py
async def get_validator_set_by_height(
  self, height: int, *, pagination: query_proto.PageRequest | None = None,
) -> tendermint_proto.GetValidatorSetByHeightResponse:
  """Query a validator set by height."""
  request = tendermint_proto.GetValidatorSetByHeightRequest(height=height, pagination=pagination)
  return await tendermint_proto.ServiceStub(self.channel).get_validator_set_by_height(request)

get_validator_set_by_height_paged(height, *, limit=None)

Page through a validator set by height.

Parameters:

Name Type Description Default
height int

Block height to query.

required
limit int | None

Optional maximum number of validators per page.

None

Returns:

Type Description
PaginatedResponse[Validator, bytes]

A paginated response yielding validator pages.

Source code in pkg/src/dydx/chain/modules/tendermint/get_validator_set_by_height.py
def get_validator_set_by_height_paged(
  self, height: int, *, limit: int | None = None,
) -> PaginatedResponse[tendermint_proto.Validator, bytes]:
  """Page through a validator set by height.

  Args:
    height: Block height to query.
    limit: Optional maximum number of validators per page.

  Returns:
    A paginated response yielding validator pages.
  """
  async def next(key: bytes) -> tuple[list[tendermint_proto.Validator], bytes | None]:
    """Fetch the next validator-set page for the height."""
    response = await self.get_validator_set_by_height(
      height,
      pagination=page_request(key, limit=limit),
    )
    return response.validators, next_key(response)

  return PaginatedResponse(b'', next)

Cosmos Tendermint latest validator set query.

ValidatorSets dataclass

Bases: GrpcEndpoint

Tendermint latest validator set endpoint.

Source code in pkg/src/dydx/chain/modules/tendermint/validator_sets.py
class ValidatorSets(GrpcEndpoint):
  """Tendermint latest validator set endpoint."""

  async def get_latest_validator_set(
    self, *, pagination: query_proto.PageRequest | None = None,
  ) -> tendermint_proto.GetLatestValidatorSetResponse:
    """Query the latest validator set."""
    request = tendermint_proto.GetLatestValidatorSetRequest(pagination=pagination)
    return await tendermint_proto.ServiceStub(self.channel).get_latest_validator_set(request)

  def get_latest_validator_set_paged(
    self, *, limit: int | None = None,
  ) -> PaginatedResponse[tendermint_proto.Validator, bytes]:
    """Page through the latest validator set.

    Args:
      limit: Optional maximum number of validators per page.

    Returns:
      A paginated response yielding validator pages.
    """
    async def next(key: bytes) -> tuple[list[tendermint_proto.Validator], bytes | None]:
      """Fetch the next latest validator-set page."""
      response = await self.get_latest_validator_set(
        pagination=page_request(key, limit=limit),
      )
      return response.validators, next_key(response)

    return PaginatedResponse(b'', next)

get_latest_validator_set(*, pagination=None) async

Query the latest validator set.

Source code in pkg/src/dydx/chain/modules/tendermint/validator_sets.py
async def get_latest_validator_set(
  self, *, pagination: query_proto.PageRequest | None = None,
) -> tendermint_proto.GetLatestValidatorSetResponse:
  """Query the latest validator set."""
  request = tendermint_proto.GetLatestValidatorSetRequest(pagination=pagination)
  return await tendermint_proto.ServiceStub(self.channel).get_latest_validator_set(request)

get_latest_validator_set_paged(*, limit=None)

Page through the latest validator set.

Parameters:

Name Type Description Default
limit int | None

Optional maximum number of validators per page.

None

Returns:

Type Description
PaginatedResponse[Validator, bytes]

A paginated response yielding validator pages.

Source code in pkg/src/dydx/chain/modules/tendermint/validator_sets.py
def get_latest_validator_set_paged(
  self, *, limit: int | None = None,
) -> PaginatedResponse[tendermint_proto.Validator, bytes]:
  """Page through the latest validator set.

  Args:
    limit: Optional maximum number of validators per page.

  Returns:
    A paginated response yielding validator pages.
  """
  async def next(key: bytes) -> tuple[list[tendermint_proto.Validator], bytes | None]:
    """Fetch the next latest validator-set page."""
    response = await self.get_latest_validator_set(
      pagination=page_request(key, limit=limit),
    )
    return response.validators, next_key(response)

  return PaginatedResponse(b'', next)

dYdX subaccounts module.

Subaccounts dataclass

Bases: CollateralPoolAddress, Subaccount, SubaccountsAll, GrpcEndpoint

dYdX subaccounts query group.

Source code in pkg/src/dydx/chain/modules/subaccounts/__init__.py
class Subaccounts(CollateralPoolAddress, Subaccount, SubaccountsAll, GrpcEndpoint):
  """dYdX subaccounts query group."""

dYdX collateral pool address query.

CollateralPoolAddress dataclass

Bases: GrpcEndpoint

Collateral pool address endpoint.

Source code in pkg/src/dydx/chain/modules/subaccounts/collateral_pool_address.py
class CollateralPoolAddress(GrpcEndpoint):
  """Collateral pool address endpoint."""

  async def collateral_pool_address(self, perpetual_id: int) -> subaccounts_proto.QueryCollateralPoolAddressResponse:
    """Query the collateral pool address for a perpetual."""
    return await subaccounts_proto.QueryStub(self.channel).collateral_pool_address(
      subaccounts_proto.QueryCollateralPoolAddressRequest(perpetual_id=perpetual_id)
    )

collateral_pool_address(perpetual_id) async

Query the collateral pool address for a perpetual.

Source code in pkg/src/dydx/chain/modules/subaccounts/collateral_pool_address.py
async def collateral_pool_address(self, perpetual_id: int) -> subaccounts_proto.QueryCollateralPoolAddressResponse:
  """Query the collateral pool address for a perpetual."""
  return await subaccounts_proto.QueryStub(self.channel).collateral_pool_address(
    subaccounts_proto.QueryCollateralPoolAddressRequest(perpetual_id=perpetual_id)
  )

dYdX subaccount query.

Subaccount dataclass

Bases: GrpcEndpoint

Subaccount endpoint.

Source code in pkg/src/dydx/chain/modules/subaccounts/subaccount.py
class Subaccount(GrpcEndpoint):
  """Subaccount endpoint."""

  async def subaccount(self, owner: str, number: int = 0) -> subaccounts_proto.QuerySubaccountResponse:
    """Query a subaccount by owner and number."""
    return await subaccounts_proto.QueryStub(self.channel).subaccount(subaccounts_proto.QueryGetSubaccountRequest(owner=owner, number=number))

subaccount(owner, number=0) async

Query a subaccount by owner and number.

Source code in pkg/src/dydx/chain/modules/subaccounts/subaccount.py
async def subaccount(self, owner: str, number: int = 0) -> subaccounts_proto.QuerySubaccountResponse:
  """Query a subaccount by owner and number."""
  return await subaccounts_proto.QueryStub(self.channel).subaccount(subaccounts_proto.QueryGetSubaccountRequest(owner=owner, number=number))

dYdX subaccounts query.

SubaccountsAll dataclass

Bases: GrpcEndpoint

Subaccounts list endpoint.

Source code in pkg/src/dydx/chain/modules/subaccounts/subaccounts.py
class SubaccountsAll(GrpcEndpoint):
  """Subaccounts list endpoint."""

  async def subaccounts(self, *, pagination: query_proto.PageRequest | None = None) -> subaccounts_proto.QuerySubaccountAllResponse:
    """Query all subaccounts."""
    request = subaccounts_proto.QueryAllSubaccountRequest(pagination=pagination)
    return await subaccounts_proto.QueryStub(self.channel).subaccount_all(request)

  def subaccounts_paged(
    self, *, limit: int | None = None,
  ) -> PaginatedResponse[subaccounts_proto.Subaccount, bytes]:
    """Page through all subaccounts.

    Args:
      limit: Optional maximum number of subaccounts per page.

    Returns:
      A paginated response yielding subaccount pages.
    """
    async def next(key: bytes) -> tuple[list[subaccounts_proto.Subaccount], bytes | None]:
      """Fetch the next subaccount page."""
      response = await self.subaccounts(pagination=page_request(key, limit=limit))
      return response.subaccount, next_key(response)

    return PaginatedResponse(b'', next)

subaccounts(*, pagination=None) async

Query all subaccounts.

Source code in pkg/src/dydx/chain/modules/subaccounts/subaccounts.py
async def subaccounts(self, *, pagination: query_proto.PageRequest | None = None) -> subaccounts_proto.QuerySubaccountAllResponse:
  """Query all subaccounts."""
  request = subaccounts_proto.QueryAllSubaccountRequest(pagination=pagination)
  return await subaccounts_proto.QueryStub(self.channel).subaccount_all(request)

subaccounts_paged(*, limit=None)

Page through all subaccounts.

Parameters:

Name Type Description Default
limit int | None

Optional maximum number of subaccounts per page.

None

Returns:

Type Description
PaginatedResponse[Subaccount, bytes]

A paginated response yielding subaccount pages.

Source code in pkg/src/dydx/chain/modules/subaccounts/subaccounts.py
def subaccounts_paged(
  self, *, limit: int | None = None,
) -> PaginatedResponse[subaccounts_proto.Subaccount, bytes]:
  """Page through all subaccounts.

  Args:
    limit: Optional maximum number of subaccounts per page.

  Returns:
    A paginated response yielding subaccount pages.
  """
  async def next(key: bytes) -> tuple[list[subaccounts_proto.Subaccount], bytes | None]:
    """Fetch the next subaccount page."""
    response = await self.subaccounts(pagination=page_request(key, limit=limit))
    return response.subaccount, next_key(response)

  return PaginatedResponse(b'', next)

dYdX CLOB module.

Clob dataclass

Bases: ClobPair, ClobPairs, Leverage, GrpcEndpoint

dYdX CLOB query group.

Source code in pkg/src/dydx/chain/modules/clob/__init__.py
class Clob(ClobPair, ClobPairs, Leverage, GrpcEndpoint):
  """dYdX CLOB query group."""

dYdX CLOB pair query.

ClobPair dataclass

Bases: GrpcEndpoint

CLOB pair endpoint.

Source code in pkg/src/dydx/chain/modules/clob/clob_pair.py
class ClobPair(GrpcEndpoint):
  """CLOB pair endpoint."""

  async def clob_pair(self, id: int) -> clob_proto.QueryClobPairResponse:
    """Query a CLOB pair by id."""
    return await clob_proto.QueryStub(self.channel).clob_pair(clob_proto.QueryGetClobPairRequest(id=id))

clob_pair(id) async

Query a CLOB pair by id.

Source code in pkg/src/dydx/chain/modules/clob/clob_pair.py
async def clob_pair(self, id: int) -> clob_proto.QueryClobPairResponse:
  """Query a CLOB pair by id."""
  return await clob_proto.QueryStub(self.channel).clob_pair(clob_proto.QueryGetClobPairRequest(id=id))

dYdX CLOB pairs query.

ClobPairs dataclass

Bases: GrpcEndpoint

CLOB pairs endpoint.

Source code in pkg/src/dydx/chain/modules/clob/clob_pairs.py
class ClobPairs(GrpcEndpoint):
  """CLOB pairs endpoint."""

  async def clob_pairs(self, *, pagination: query_proto.PageRequest | None = None) -> clob_proto.QueryClobPairAllResponse:
    """Query all CLOB pairs."""
    request = clob_proto.QueryAllClobPairRequest(pagination=pagination)
    return await clob_proto.QueryStub(self.channel).clob_pair_all(request)

  def clob_pairs_paged(self, *, limit: int | None = None) -> PaginatedResponse[clob_proto.ClobPair, bytes]:
    """Page through all CLOB pairs.

    Args:
      limit: Optional maximum number of CLOB pairs per page.

    Returns:
      A paginated response yielding CLOB pair pages.
    """
    async def next(key: bytes) -> tuple[list[clob_proto.ClobPair], bytes | None]:
      """Fetch the next CLOB pair page."""
      response = await self.clob_pairs(pagination=page_request(key, limit=limit))
      return response.clob_pair, next_key(response)

    return PaginatedResponse(b'', next)

clob_pairs(*, pagination=None) async

Query all CLOB pairs.

Source code in pkg/src/dydx/chain/modules/clob/clob_pairs.py
async def clob_pairs(self, *, pagination: query_proto.PageRequest | None = None) -> clob_proto.QueryClobPairAllResponse:
  """Query all CLOB pairs."""
  request = clob_proto.QueryAllClobPairRequest(pagination=pagination)
  return await clob_proto.QueryStub(self.channel).clob_pair_all(request)

clob_pairs_paged(*, limit=None)

Page through all CLOB pairs.

Parameters:

Name Type Description Default
limit int | None

Optional maximum number of CLOB pairs per page.

None

Returns:

Type Description
PaginatedResponse[ClobPair, bytes]

A paginated response yielding CLOB pair pages.

Source code in pkg/src/dydx/chain/modules/clob/clob_pairs.py
def clob_pairs_paged(self, *, limit: int | None = None) -> PaginatedResponse[clob_proto.ClobPair, bytes]:
  """Page through all CLOB pairs.

  Args:
    limit: Optional maximum number of CLOB pairs per page.

  Returns:
    A paginated response yielding CLOB pair pages.
  """
  async def next(key: bytes) -> tuple[list[clob_proto.ClobPair], bytes | None]:
    """Fetch the next CLOB pair page."""
    response = await self.clob_pairs(pagination=page_request(key, limit=limit))
    return response.clob_pair, next_key(response)

  return PaginatedResponse(b'', next)

dYdX CLOB leverage query.

Leverage dataclass

Bases: GrpcEndpoint

CLOB leverage endpoint.

Source code in pkg/src/dydx/chain/modules/clob/leverage.py
class Leverage(GrpcEndpoint):
  """CLOB leverage endpoint."""

  async def leverage(self, *, owner: str, number: int = 0) -> clob_proto.QueryLeverageResponse:
    """Query leverage info for a subaccount."""
    return await clob_proto.QueryStub(self.channel).leverage(clob_proto.QueryLeverageRequest(owner=owner, number=number))

leverage(*, owner, number=0) async

Query leverage info for a subaccount.

Source code in pkg/src/dydx/chain/modules/clob/leverage.py
async def leverage(self, *, owner: str, number: int = 0) -> clob_proto.QueryLeverageResponse:
  """Query leverage info for a subaccount."""
  return await clob_proto.QueryStub(self.channel).leverage(clob_proto.QueryLeverageRequest(owner=owner, number=number))

dYdX prices module.

Prices dataclass

Bases: MarketParam, MarketPrice, MarketPrices, GrpcEndpoint

dYdX prices query group.

Source code in pkg/src/dydx/chain/modules/prices/__init__.py
class Prices(MarketParam, MarketPrice, MarketPrices, GrpcEndpoint):
  """dYdX prices query group."""

dYdX market param query.

MarketParam dataclass

Bases: GrpcEndpoint

Market param endpoint.

Source code in pkg/src/dydx/chain/modules/prices/market_param.py
class MarketParam(GrpcEndpoint):
  """Market param endpoint."""

  async def market_param(self, id: int) -> prices_proto.QueryMarketParamResponse:
    """Query a market parameter by id."""
    return await prices_proto.QueryStub(self.channel).market_param(prices_proto.QueryMarketParamRequest(id=id))

market_param(id) async

Query a market parameter by id.

Source code in pkg/src/dydx/chain/modules/prices/market_param.py
async def market_param(self, id: int) -> prices_proto.QueryMarketParamResponse:
  """Query a market parameter by id."""
  return await prices_proto.QueryStub(self.channel).market_param(prices_proto.QueryMarketParamRequest(id=id))

dYdX market price query.

MarketPrice dataclass

Bases: GrpcEndpoint

Market price endpoint.

Source code in pkg/src/dydx/chain/modules/prices/market_price.py
class MarketPrice(GrpcEndpoint):
  """Market price endpoint."""

  async def market_price(self, id: int) -> prices_proto.QueryMarketPriceResponse:
    """Query a market price by id."""
    return await prices_proto.QueryStub(self.channel).market_price(prices_proto.QueryMarketPriceRequest(id=id))

market_price(id) async

Query a market price by id.

Source code in pkg/src/dydx/chain/modules/prices/market_price.py
async def market_price(self, id: int) -> prices_proto.QueryMarketPriceResponse:
  """Query a market price by id."""
  return await prices_proto.QueryStub(self.channel).market_price(prices_proto.QueryMarketPriceRequest(id=id))

dYdX market prices query.

MarketPrices dataclass

Bases: GrpcEndpoint

Market prices endpoint.

Source code in pkg/src/dydx/chain/modules/prices/market_prices.py
class MarketPrices(GrpcEndpoint):
  """Market prices endpoint."""

  async def market_prices(
    self, *, pagination: query_proto.PageRequest | None = None,
  ) -> prices_proto.QueryAllMarketPricesResponse:
    """Query all market prices."""
    request = prices_proto.QueryAllMarketPricesRequest(pagination=pagination)
    return await prices_proto.QueryStub(self.channel).all_market_prices(request)

  def market_prices_paged(
    self, *, limit: int | None = None,
  ) -> PaginatedResponse[prices_proto.MarketPrice, bytes]:
    """Page through all market prices.

    Args:
      limit: Optional maximum number of market prices per page.

    Returns:
      A paginated response yielding market price pages.
    """
    async def next(key: bytes) -> tuple[list[prices_proto.MarketPrice], bytes | None]:
      """Fetch the next market price page."""
      response = await self.market_prices(pagination=page_request(key, limit=limit))
      return response.market_prices, next_key(response)

    return PaginatedResponse(b'', next)

market_prices(*, pagination=None) async

Query all market prices.

Source code in pkg/src/dydx/chain/modules/prices/market_prices.py
async def market_prices(
  self, *, pagination: query_proto.PageRequest | None = None,
) -> prices_proto.QueryAllMarketPricesResponse:
  """Query all market prices."""
  request = prices_proto.QueryAllMarketPricesRequest(pagination=pagination)
  return await prices_proto.QueryStub(self.channel).all_market_prices(request)

market_prices_paged(*, limit=None)

Page through all market prices.

Parameters:

Name Type Description Default
limit int | None

Optional maximum number of market prices per page.

None

Returns:

Type Description
PaginatedResponse[MarketPrice, bytes]

A paginated response yielding market price pages.

Source code in pkg/src/dydx/chain/modules/prices/market_prices.py
def market_prices_paged(
  self, *, limit: int | None = None,
) -> PaginatedResponse[prices_proto.MarketPrice, bytes]:
  """Page through all market prices.

  Args:
    limit: Optional maximum number of market prices per page.

  Returns:
    A paginated response yielding market price pages.
  """
  async def next(key: bytes) -> tuple[list[prices_proto.MarketPrice], bytes | None]:
    """Fetch the next market price page."""
    response = await self.market_prices(pagination=page_request(key, limit=limit))
    return response.market_prices, next_key(response)

  return PaginatedResponse(b'', next)

dYdX perpetuals module.

Perpetuals dataclass

Bases: LiquidityTiers, Perpetual, PerpetualsAll, GrpcEndpoint

dYdX perpetuals query group.

Source code in pkg/src/dydx/chain/modules/perpetuals/__init__.py
class Perpetuals(LiquidityTiers, Perpetual, PerpetualsAll, GrpcEndpoint):
  """dYdX perpetuals query group."""

dYdX liquidity tiers query.

LiquidityTiers dataclass

Bases: GrpcEndpoint

Liquidity tiers endpoint.

Source code in pkg/src/dydx/chain/modules/perpetuals/liquidity_tiers.py
class LiquidityTiers(GrpcEndpoint):
  """Liquidity tiers endpoint."""

  async def liquidity_tiers(
    self, *, pagination: query_proto.PageRequest | None = None,
  ) -> perpetuals_proto.QueryAllLiquidityTiersResponse:
    """Query all liquidity tiers."""
    request = perpetuals_proto.QueryAllLiquidityTiersRequest(pagination=pagination)
    return await perpetuals_proto.QueryStub(self.channel).all_liquidity_tiers(request)

  def liquidity_tiers_paged(
    self, *, limit: int | None = None,
  ) -> PaginatedResponse[perpetuals_proto.LiquidityTier, bytes]:
    """Page through all liquidity tiers.

    Args:
      limit: Optional maximum number of liquidity tiers per page.

    Returns:
      A paginated response yielding liquidity tier pages.
    """
    async def next(key: bytes) -> tuple[list[perpetuals_proto.LiquidityTier], bytes | None]:
      """Fetch the next liquidity tier page."""
      response = await self.liquidity_tiers(pagination=page_request(key, limit=limit))
      return response.liquidity_tiers, next_key(response)

    return PaginatedResponse(b'', next)

liquidity_tiers(*, pagination=None) async

Query all liquidity tiers.

Source code in pkg/src/dydx/chain/modules/perpetuals/liquidity_tiers.py
async def liquidity_tiers(
  self, *, pagination: query_proto.PageRequest | None = None,
) -> perpetuals_proto.QueryAllLiquidityTiersResponse:
  """Query all liquidity tiers."""
  request = perpetuals_proto.QueryAllLiquidityTiersRequest(pagination=pagination)
  return await perpetuals_proto.QueryStub(self.channel).all_liquidity_tiers(request)

liquidity_tiers_paged(*, limit=None)

Page through all liquidity tiers.

Parameters:

Name Type Description Default
limit int | None

Optional maximum number of liquidity tiers per page.

None

Returns:

Type Description
PaginatedResponse[LiquidityTier, bytes]

A paginated response yielding liquidity tier pages.

Source code in pkg/src/dydx/chain/modules/perpetuals/liquidity_tiers.py
def liquidity_tiers_paged(
  self, *, limit: int | None = None,
) -> PaginatedResponse[perpetuals_proto.LiquidityTier, bytes]:
  """Page through all liquidity tiers.

  Args:
    limit: Optional maximum number of liquidity tiers per page.

  Returns:
    A paginated response yielding liquidity tier pages.
  """
  async def next(key: bytes) -> tuple[list[perpetuals_proto.LiquidityTier], bytes | None]:
    """Fetch the next liquidity tier page."""
    response = await self.liquidity_tiers(pagination=page_request(key, limit=limit))
    return response.liquidity_tiers, next_key(response)

  return PaginatedResponse(b'', next)

dYdX perpetual query.

Perpetual dataclass

Bases: GrpcEndpoint

Perpetual endpoint.

Source code in pkg/src/dydx/chain/modules/perpetuals/perpetual.py
class Perpetual(GrpcEndpoint):
  """Perpetual endpoint."""

  async def perpetual(self, id: int) -> perpetuals_proto.QueryPerpetualResponse:
    """Query a perpetual by id."""
    return await perpetuals_proto.QueryStub(self.channel).perpetual(perpetuals_proto.QueryPerpetualRequest(id=id))

perpetual(id) async

Query a perpetual by id.

Source code in pkg/src/dydx/chain/modules/perpetuals/perpetual.py
async def perpetual(self, id: int) -> perpetuals_proto.QueryPerpetualResponse:
  """Query a perpetual by id."""
  return await perpetuals_proto.QueryStub(self.channel).perpetual(perpetuals_proto.QueryPerpetualRequest(id=id))

dYdX perpetuals query.

PerpetualsAll dataclass

Bases: GrpcEndpoint

Perpetuals list endpoint.

Source code in pkg/src/dydx/chain/modules/perpetuals/perpetuals.py
class PerpetualsAll(GrpcEndpoint):
  """Perpetuals list endpoint."""

  async def perpetuals(self, *, pagination: query_proto.PageRequest | None = None) -> perpetuals_proto.QueryAllPerpetualsResponse:
    """Query all perpetuals."""
    request = perpetuals_proto.QueryAllPerpetualsRequest(pagination=pagination)
    return await perpetuals_proto.QueryStub(self.channel).all_perpetuals(request)

  def perpetuals_paged(
    self, *, limit: int | None = None,
  ) -> PaginatedResponse[perpetuals_proto.Perpetual, bytes]:
    """Page through all perpetuals.

    Args:
      limit: Optional maximum number of perpetuals per page.

    Returns:
      A paginated response yielding perpetual pages.
    """
    async def next(key: bytes) -> tuple[list[perpetuals_proto.Perpetual], bytes | None]:
      """Fetch the next perpetual page."""
      response = await self.perpetuals(pagination=page_request(key, limit=limit))
      return response.perpetual, next_key(response)

    return PaginatedResponse(b'', next)

perpetuals(*, pagination=None) async

Query all perpetuals.

Source code in pkg/src/dydx/chain/modules/perpetuals/perpetuals.py
async def perpetuals(self, *, pagination: query_proto.PageRequest | None = None) -> perpetuals_proto.QueryAllPerpetualsResponse:
  """Query all perpetuals."""
  request = perpetuals_proto.QueryAllPerpetualsRequest(pagination=pagination)
  return await perpetuals_proto.QueryStub(self.channel).all_perpetuals(request)

perpetuals_paged(*, limit=None)

Page through all perpetuals.

Parameters:

Name Type Description Default
limit int | None

Optional maximum number of perpetuals per page.

None

Returns:

Type Description
PaginatedResponse[Perpetual, bytes]

A paginated response yielding perpetual pages.

Source code in pkg/src/dydx/chain/modules/perpetuals/perpetuals.py
def perpetuals_paged(
  self, *, limit: int | None = None,
) -> PaginatedResponse[perpetuals_proto.Perpetual, bytes]:
  """Page through all perpetuals.

  Args:
    limit: Optional maximum number of perpetuals per page.

  Returns:
    A paginated response yielding perpetual pages.
  """
  async def next(key: bytes) -> tuple[list[perpetuals_proto.Perpetual], bytes | None]:
    """Fetch the next perpetual page."""
    response = await self.perpetuals(pagination=page_request(key, limit=limit))
    return response.perpetual, next_key(response)

  return PaginatedResponse(b'', next)

dYdX assets module.

Assets dataclass

Bases: Asset, AssetsAll, GrpcEndpoint

dYdX assets query group.

Source code in pkg/src/dydx/chain/modules/assets/__init__.py
class Assets(Asset, AssetsAll, GrpcEndpoint):
  """dYdX assets query group."""

dYdX asset query.

Asset dataclass

Bases: GrpcEndpoint

Asset endpoint.

Source code in pkg/src/dydx/chain/modules/assets/asset.py
class Asset(GrpcEndpoint):
  """Asset endpoint."""

  async def asset(self, id: int) -> assets_proto.QueryAssetResponse:
    """Query an asset by id."""
    return await assets_proto.QueryStub(self.channel).asset(assets_proto.QueryAssetRequest(id=id))

asset(id) async

Query an asset by id.

Source code in pkg/src/dydx/chain/modules/assets/asset.py
async def asset(self, id: int) -> assets_proto.QueryAssetResponse:
  """Query an asset by id."""
  return await assets_proto.QueryStub(self.channel).asset(assets_proto.QueryAssetRequest(id=id))

dYdX assets query.

AssetsAll dataclass

Bases: GrpcEndpoint

Assets list endpoint.

Source code in pkg/src/dydx/chain/modules/assets/assets.py
class AssetsAll(GrpcEndpoint):
  """Assets list endpoint."""

  async def assets(self, *, pagination: query_proto.PageRequest | None = None) -> assets_proto.QueryAllAssetsResponse:
    """Query all assets."""
    request = assets_proto.QueryAllAssetsRequest(pagination=pagination)
    return await assets_proto.QueryStub(self.channel).all_assets(request)

  def assets_paged(self, *, limit: int | None = None) -> PaginatedResponse[assets_proto.Asset, bytes]:
    """Page through dYdX assets.

    Args:
      limit: Optional maximum number of assets per page.

    Returns:
      A paginated response yielding asset pages.
    """
    async def next(key: bytes) -> tuple[list[assets_proto.Asset], bytes | None]:
      """Fetch the next asset page."""
      response = await self.assets(pagination=page_request(key, limit=limit))
      return response.asset, next_key(response)

    return PaginatedResponse(b'', next)

assets(*, pagination=None) async

Query all assets.

Source code in pkg/src/dydx/chain/modules/assets/assets.py
async def assets(self, *, pagination: query_proto.PageRequest | None = None) -> assets_proto.QueryAllAssetsResponse:
  """Query all assets."""
  request = assets_proto.QueryAllAssetsRequest(pagination=pagination)
  return await assets_proto.QueryStub(self.channel).all_assets(request)

assets_paged(*, limit=None)

Page through dYdX assets.

Parameters:

Name Type Description Default
limit int | None

Optional maximum number of assets per page.

None

Returns:

Type Description
PaginatedResponse[Asset, bytes]

A paginated response yielding asset pages.

Source code in pkg/src/dydx/chain/modules/assets/assets.py
def assets_paged(self, *, limit: int | None = None) -> PaginatedResponse[assets_proto.Asset, bytes]:
  """Page through dYdX assets.

  Args:
    limit: Optional maximum number of assets per page.

  Returns:
    A paginated response yielding asset pages.
  """
  async def next(key: bytes) -> tuple[list[assets_proto.Asset], bytes | None]:
    """Fetch the next asset page."""
    response = await self.assets(pagination=page_request(key, limit=limit))
    return response.asset, next_key(response)

  return PaginatedResponse(b'', next)

Cosmos staking module.

Staking dataclass

Bases: DelegatorDelegations, Pool, Validators, GrpcEndpoint

Cosmos staking query group.

Source code in pkg/src/dydx/chain/modules/staking/__init__.py
class Staking(DelegatorDelegations, Pool, Validators, GrpcEndpoint):
  """Cosmos staking query group."""

Cosmos staking delegator delegations query.

DelegatorDelegations dataclass

Bases: GrpcEndpoint

Delegator delegations endpoint.

Source code in pkg/src/dydx/chain/modules/staking/delegator_delegations.py
class DelegatorDelegations(GrpcEndpoint):
  """Delegator delegations endpoint."""

  async def delegator_delegations(
    self, delegator_addr: str, *, pagination: query_proto.PageRequest | None = None,
  ) -> staking_proto.QueryDelegatorDelegationsResponse:
    """Query delegations for a delegator."""
    request = staking_proto.QueryDelegatorDelegationsRequest(
      delegator_addr=delegator_addr,
      pagination=pagination,
    )
    return await staking_proto.QueryStub(self.channel).delegator_delegations(request)

  def delegator_delegations_paged(
    self, delegator_addr: str, *, limit: int | None = None,
  ) -> PaginatedResponse[staking_proto.DelegationResponse, bytes]:
    """Page through delegations for a delegator.

    Args:
      delegator_addr: Delegator account address.
      limit: Optional maximum number of delegations per page.

    Returns:
      A paginated response yielding delegation pages.
    """
    async def next(key: bytes) -> tuple[list[staking_proto.DelegationResponse], bytes | None]:
      """Fetch the next delegation page."""
      response = await self.delegator_delegations(
        delegator_addr,
        pagination=page_request(key, limit=limit),
      )
      return response.delegation_responses, next_key(response)

    return PaginatedResponse(b'', next)

delegator_delegations(delegator_addr, *, pagination=None) async

Query delegations for a delegator.

Source code in pkg/src/dydx/chain/modules/staking/delegator_delegations.py
async def delegator_delegations(
  self, delegator_addr: str, *, pagination: query_proto.PageRequest | None = None,
) -> staking_proto.QueryDelegatorDelegationsResponse:
  """Query delegations for a delegator."""
  request = staking_proto.QueryDelegatorDelegationsRequest(
    delegator_addr=delegator_addr,
    pagination=pagination,
  )
  return await staking_proto.QueryStub(self.channel).delegator_delegations(request)

delegator_delegations_paged(delegator_addr, *, limit=None)

Page through delegations for a delegator.

Parameters:

Name Type Description Default
delegator_addr str

Delegator account address.

required
limit int | None

Optional maximum number of delegations per page.

None

Returns:

Type Description
PaginatedResponse[DelegationResponse, bytes]

A paginated response yielding delegation pages.

Source code in pkg/src/dydx/chain/modules/staking/delegator_delegations.py
def delegator_delegations_paged(
  self, delegator_addr: str, *, limit: int | None = None,
) -> PaginatedResponse[staking_proto.DelegationResponse, bytes]:
  """Page through delegations for a delegator.

  Args:
    delegator_addr: Delegator account address.
    limit: Optional maximum number of delegations per page.

  Returns:
    A paginated response yielding delegation pages.
  """
  async def next(key: bytes) -> tuple[list[staking_proto.DelegationResponse], bytes | None]:
    """Fetch the next delegation page."""
    response = await self.delegator_delegations(
      delegator_addr,
      pagination=page_request(key, limit=limit),
    )
    return response.delegation_responses, next_key(response)

  return PaginatedResponse(b'', next)

Cosmos staking pool query.

Pool dataclass

Bases: GrpcEndpoint

Staking pool endpoint.

Source code in pkg/src/dydx/chain/modules/staking/pool.py
class Pool(GrpcEndpoint):
  """Staking pool endpoint."""

  async def pool(self) -> staking_proto.QueryPoolResponse:
    """Query staking pool state."""
    return await staking_proto.QueryStub(self.channel).pool(staking_proto.QueryPoolRequest())

pool() async

Query staking pool state.

Source code in pkg/src/dydx/chain/modules/staking/pool.py
async def pool(self) -> staking_proto.QueryPoolResponse:
  """Query staking pool state."""
  return await staking_proto.QueryStub(self.channel).pool(staking_proto.QueryPoolRequest())

Cosmos staking validators query.

Validators dataclass

Bases: GrpcEndpoint

Staking validators endpoint.

Source code in pkg/src/dydx/chain/modules/staking/validators.py
class Validators(GrpcEndpoint):
  """Staking validators endpoint."""

  async def validators(
    self, *, status: str = '', pagination: query_proto.PageRequest | None = None,
  ) -> staking_proto.QueryValidatorsResponse:
    """Query staking validators."""
    request = staking_proto.QueryValidatorsRequest(status=status, pagination=pagination)
    return await staking_proto.QueryStub(self.channel).validators(request)

  def validators_paged(
    self, *, status: str = '', limit: int | None = None,
  ) -> PaginatedResponse[staking_proto.Validator, bytes]:
    """Page through staking validators.

    Args:
      status: Optional validator status filter.
      limit: Optional maximum number of validators per page.

    Returns:
      A paginated response yielding validator pages.
    """
    async def next(key: bytes) -> tuple[list[staking_proto.Validator], bytes | None]:
      """Fetch the next validator page."""
      response = await self.validators(
        status=status,
        pagination=page_request(key, limit=limit),
      )
      return response.validators, next_key(response)

    return PaginatedResponse(b'', next)

validators(*, status='', pagination=None) async

Query staking validators.

Source code in pkg/src/dydx/chain/modules/staking/validators.py
async def validators(
  self, *, status: str = '', pagination: query_proto.PageRequest | None = None,
) -> staking_proto.QueryValidatorsResponse:
  """Query staking validators."""
  request = staking_proto.QueryValidatorsRequest(status=status, pagination=pagination)
  return await staking_proto.QueryStub(self.channel).validators(request)

validators_paged(*, status='', limit=None)

Page through staking validators.

Parameters:

Name Type Description Default
status str

Optional validator status filter.

''
limit int | None

Optional maximum number of validators per page.

None

Returns:

Type Description
PaginatedResponse[Validator, bytes]

A paginated response yielding validator pages.

Source code in pkg/src/dydx/chain/modules/staking/validators.py
def validators_paged(
  self, *, status: str = '', limit: int | None = None,
) -> PaginatedResponse[staking_proto.Validator, bytes]:
  """Page through staking validators.

  Args:
    status: Optional validator status filter.
    limit: Optional maximum number of validators per page.

  Returns:
    A paginated response yielding validator pages.
  """
  async def next(key: bytes) -> tuple[list[staking_proto.Validator], bytes | None]:
    """Fetch the next validator page."""
    response = await self.validators(
      status=status,
      pagination=page_request(key, limit=limit),
    )
    return response.validators, next_key(response)

  return PaginatedResponse(b'', next)

Cosmos distribution module.

Distribution dataclass

Bases: CommunityPool, DelegationRewards, DelegationTotalRewards, GrpcEndpoint

Cosmos distribution query group.

Source code in pkg/src/dydx/chain/modules/distribution/__init__.py
class Distribution(CommunityPool, DelegationRewards, DelegationTotalRewards, GrpcEndpoint):
  """Cosmos distribution query group."""

Cosmos distribution community pool query.

CommunityPool dataclass

Bases: GrpcEndpoint

Community pool endpoint.

Source code in pkg/src/dydx/chain/modules/distribution/community_pool.py
class CommunityPool(GrpcEndpoint):
  """Community pool endpoint."""

  async def community_pool(self) -> distribution_proto.QueryCommunityPoolResponse:
    """Query distribution community pool funds."""
    return await distribution_proto.QueryStub(self.channel).community_pool(distribution_proto.QueryCommunityPoolRequest())

community_pool() async

Query distribution community pool funds.

Source code in pkg/src/dydx/chain/modules/distribution/community_pool.py
async def community_pool(self) -> distribution_proto.QueryCommunityPoolResponse:
  """Query distribution community pool funds."""
  return await distribution_proto.QueryStub(self.channel).community_pool(distribution_proto.QueryCommunityPoolRequest())

Cosmos distribution delegation rewards query.

DelegationRewards dataclass

Bases: GrpcEndpoint

Delegation rewards endpoint.

Source code in pkg/src/dydx/chain/modules/distribution/delegation_rewards.py
class DelegationRewards(GrpcEndpoint):
  """Delegation rewards endpoint."""

  async def delegation_rewards(
    self, *, delegator_address: str, validator_address: str,
  ) -> distribution_proto.QueryDelegationRewardsResponse:
    """Query rewards for a delegator and validator."""
    return await distribution_proto.QueryStub(self.channel).delegation_rewards(
      distribution_proto.QueryDelegationRewardsRequest(
        delegator_address=delegator_address,
        validator_address=validator_address,
      )
    )

delegation_rewards(*, delegator_address, validator_address) async

Query rewards for a delegator and validator.

Source code in pkg/src/dydx/chain/modules/distribution/delegation_rewards.py
async def delegation_rewards(
  self, *, delegator_address: str, validator_address: str,
) -> distribution_proto.QueryDelegationRewardsResponse:
  """Query rewards for a delegator and validator."""
  return await distribution_proto.QueryStub(self.channel).delegation_rewards(
    distribution_proto.QueryDelegationRewardsRequest(
      delegator_address=delegator_address,
      validator_address=validator_address,
    )
  )

Cosmos distribution delegation total rewards query.

DelegationTotalRewards dataclass

Bases: GrpcEndpoint

Delegation total rewards endpoint.

Source code in pkg/src/dydx/chain/modules/distribution/delegation_total_rewards.py
class DelegationTotalRewards(GrpcEndpoint):
  """Delegation total rewards endpoint."""

  async def delegation_total_rewards(self, delegator_address: str) -> distribution_proto.QueryDelegationTotalRewardsResponse:
    """Query total rewards for a delegator."""
    return await distribution_proto.QueryStub(self.channel).delegation_total_rewards(
      distribution_proto.QueryDelegationTotalRewardsRequest(delegator_address=delegator_address)
    )

delegation_total_rewards(delegator_address) async

Query total rewards for a delegator.

Source code in pkg/src/dydx/chain/modules/distribution/delegation_total_rewards.py
async def delegation_total_rewards(self, delegator_address: str) -> distribution_proto.QueryDelegationTotalRewardsResponse:
  """Query total rewards for a delegator."""
  return await distribution_proto.QueryStub(self.channel).delegation_total_rewards(
    distribution_proto.QueryDelegationTotalRewardsRequest(delegator_address=delegator_address)
  )

dYdX fee tiers module.

Feetiers dataclass

Bases: PerpetualFeeParams, UserFeeTier, UserStakingTier, GrpcEndpoint

dYdX fee tiers query group.

Source code in pkg/src/dydx/chain/modules/feetiers/__init__.py
class Feetiers(PerpetualFeeParams, UserFeeTier, UserStakingTier, GrpcEndpoint):
  """dYdX fee tiers query group."""

  async def call(self, method: str, **fields: Any) -> Any:
    """Call a fee tiers generated query by RPC name."""
    if method == 'UserFeeTier':
      return await self.user_fee_tier(fields['user'])
    if method == 'UserStakingTier':
      return await self.user_staking_tier(fields['address'])
    raise ValueError(f'Unsupported fee tiers query: {method}')

call(method, **fields) async

Call a fee tiers generated query by RPC name.

Source code in pkg/src/dydx/chain/modules/feetiers/__init__.py
async def call(self, method: str, **fields: Any) -> Any:
  """Call a fee tiers generated query by RPC name."""
  if method == 'UserFeeTier':
    return await self.user_fee_tier(fields['user'])
  if method == 'UserStakingTier':
    return await self.user_staking_tier(fields['address'])
  raise ValueError(f'Unsupported fee tiers query: {method}')

dYdX perpetual fee params query.

PerpetualFeeParams dataclass

Bases: GrpcEndpoint

Perpetual fee params endpoint.

Source code in pkg/src/dydx/chain/modules/feetiers/perpetual_fee_params.py
class PerpetualFeeParams(GrpcEndpoint):
  """Perpetual fee params endpoint."""

  async def perpetual_fee_params(self) -> feetiers_proto.QueryPerpetualFeeParamsResponse:
    """Query perpetual fee parameters."""
    return await feetiers_proto.QueryStub(self.channel).perpetual_fee_params(feetiers_proto.QueryPerpetualFeeParamsRequest())

perpetual_fee_params() async

Query perpetual fee parameters.

Source code in pkg/src/dydx/chain/modules/feetiers/perpetual_fee_params.py
async def perpetual_fee_params(self) -> feetiers_proto.QueryPerpetualFeeParamsResponse:
  """Query perpetual fee parameters."""
  return await feetiers_proto.QueryStub(self.channel).perpetual_fee_params(feetiers_proto.QueryPerpetualFeeParamsRequest())

dYdX user fee tier query.

UserFeeTier dataclass

Bases: GrpcEndpoint

User fee tier endpoint.

Source code in pkg/src/dydx/chain/modules/feetiers/user_fee_tier.py
class UserFeeTier(GrpcEndpoint):
  """User fee tier endpoint."""

  async def user_fee_tier(self, user: str) -> feetiers_proto.QueryUserFeeTierResponse:
    """Query the fee tier for a user."""
    return await feetiers_proto.QueryStub(self.channel).user_fee_tier(feetiers_proto.QueryUserFeeTierRequest(user=user))

user_fee_tier(user) async

Query the fee tier for a user.

Source code in pkg/src/dydx/chain/modules/feetiers/user_fee_tier.py
async def user_fee_tier(self, user: str) -> feetiers_proto.QueryUserFeeTierResponse:
  """Query the fee tier for a user."""
  return await feetiers_proto.QueryStub(self.channel).user_fee_tier(feetiers_proto.QueryUserFeeTierRequest(user=user))

dYdX user staking tier query.

UserStakingTier dataclass

Bases: GrpcEndpoint

User staking tier endpoint.

Source code in pkg/src/dydx/chain/modules/feetiers/user_staking_tier.py
class UserStakingTier(GrpcEndpoint):
  """User staking tier endpoint."""

  async def user_staking_tier(self, address: str) -> feetiers_proto.QueryUserStakingTierResponse:
    """Query the staking fee tier for a user."""
    return await feetiers_proto.QueryStub(self.channel).user_staking_tier(feetiers_proto.QueryUserStakingTierRequest(address=address))

user_staking_tier(address) async

Query the staking fee tier for a user.

Source code in pkg/src/dydx/chain/modules/feetiers/user_staking_tier.py
async def user_staking_tier(self, address: str) -> feetiers_proto.QueryUserStakingTierResponse:
  """Query the staking fee tier for a user."""
  return await feetiers_proto.QueryStub(self.channel).user_staking_tier(feetiers_proto.QueryUserStakingTierRequest(address=address))

dYdX rewards module.

Rewards dataclass

Bases: Params, GrpcEndpoint

dYdX rewards query group.

Source code in pkg/src/dydx/chain/modules/rewards/__init__.py
class Rewards(Params, GrpcEndpoint):
  """dYdX rewards query group."""

dYdX rewards params query.

Params dataclass

Bases: GrpcEndpoint

Rewards params endpoint.

Source code in pkg/src/dydx/chain/modules/rewards/params.py
class Params(GrpcEndpoint):
  """Rewards params endpoint."""

  async def params(self) -> rewards_proto.QueryParamsResponse:
    """Query rewards parameters."""
    return await rewards_proto.QueryStub(self.channel).params(rewards_proto.QueryParamsRequest())

params() async

Query rewards parameters.

Source code in pkg/src/dydx/chain/modules/rewards/params.py
async def params(self) -> rewards_proto.QueryParamsResponse:
  """Query rewards parameters."""
  return await rewards_proto.QueryStub(self.channel).params(rewards_proto.QueryParamsRequest())

dYdX affiliates module.

Affiliates dataclass

Bases: AffiliateInfo, ReferredBy, GrpcEndpoint

dYdX affiliates query group.

Source code in pkg/src/dydx/chain/modules/affiliates/__init__.py
class Affiliates(AffiliateInfo, ReferredBy, GrpcEndpoint):
  """dYdX affiliates query group."""

dYdX affiliate info query.

AffiliateInfo dataclass

Bases: GrpcEndpoint

Affiliate info endpoint.

Source code in pkg/src/dydx/chain/modules/affiliates/affiliate_info.py
class AffiliateInfo(GrpcEndpoint):
  """Affiliate info endpoint."""

  async def affiliate_info(self, address: str) -> affiliates_proto.AffiliateInfoResponse:
    """Query affiliate info for an address."""
    return await affiliates_proto.QueryStub(self.channel).affiliate_info(affiliates_proto.AffiliateInfoRequest(address=address))

affiliate_info(address) async

Query affiliate info for an address.

Source code in pkg/src/dydx/chain/modules/affiliates/affiliate_info.py
async def affiliate_info(self, address: str) -> affiliates_proto.AffiliateInfoResponse:
  """Query affiliate info for an address."""
  return await affiliates_proto.QueryStub(self.channel).affiliate_info(affiliates_proto.AffiliateInfoRequest(address=address))

dYdX referred-by query.

ReferredBy dataclass

Bases: GrpcEndpoint

Referred-by endpoint.

Source code in pkg/src/dydx/chain/modules/affiliates/referred_by.py
class ReferredBy(GrpcEndpoint):
  """Referred-by endpoint."""

  async def referred_by(self, address: str) -> affiliates_proto.ReferredByResponse:
    """Query the affiliate referrer for an address."""
    return await affiliates_proto.QueryStub(self.channel).referred_by(affiliates_proto.ReferredByRequest(address=address))

referred_by(address) async

Query the affiliate referrer for an address.

Source code in pkg/src/dydx/chain/modules/affiliates/referred_by.py
async def referred_by(self, address: str) -> affiliates_proto.ReferredByResponse:
  """Query the affiliate referrer for an address."""
  return await affiliates_proto.QueryStub(self.channel).referred_by(affiliates_proto.ReferredByRequest(address=address))

dYdX revshare module.

Revshare dataclass

Bases: MarketMapperRevShareDetails, OrderRouterRevShare, GrpcEndpoint

dYdX revshare query group.

Source code in pkg/src/dydx/chain/modules/revshare/__init__.py
class Revshare(MarketMapperRevShareDetails, OrderRouterRevShare, GrpcEndpoint):
  """dYdX revshare query group."""

dYdX market mapper revshare details query.

MarketMapperRevShareDetails dataclass

Bases: GrpcEndpoint

Market mapper revshare details endpoint.

Source code in pkg/src/dydx/chain/modules/revshare/market_mapper_rev_share_details.py
class MarketMapperRevShareDetails(GrpcEndpoint):
  """Market mapper revshare details endpoint."""

  async def market_mapper_rev_share_details(self, market_id: int) -> revshare_proto.QueryMarketMapperRevShareDetailsResponse:
    """Query market mapper revenue-share details."""
    return await revshare_proto.QueryStub(self.channel).market_mapper_rev_share_details(
      revshare_proto.QueryMarketMapperRevShareDetails(market_id=market_id)
    )

market_mapper_rev_share_details(market_id) async

Query market mapper revenue-share details.

Source code in pkg/src/dydx/chain/modules/revshare/market_mapper_rev_share_details.py
async def market_mapper_rev_share_details(self, market_id: int) -> revshare_proto.QueryMarketMapperRevShareDetailsResponse:
  """Query market mapper revenue-share details."""
  return await revshare_proto.QueryStub(self.channel).market_mapper_rev_share_details(
    revshare_proto.QueryMarketMapperRevShareDetails(market_id=market_id)
  )

dYdX order router revshare query.

OrderRouterRevShare dataclass

Bases: GrpcEndpoint

Order router revshare endpoint.

Source code in pkg/src/dydx/chain/modules/revshare/order_router_rev_share.py
class OrderRouterRevShare(GrpcEndpoint):
  """Order router revshare endpoint."""

  async def order_router_rev_share(self, address: str) -> revshare_proto.QueryOrderRouterRevShareResponse:
    """Query order router revenue-share state."""
    return await revshare_proto.QueryStub(self.channel).order_router_rev_share(revshare_proto.QueryOrderRouterRevShare(address=address))

order_router_rev_share(address) async

Query order router revenue-share state.

Source code in pkg/src/dydx/chain/modules/revshare/order_router_rev_share.py
async def order_router_rev_share(self, address: str) -> revshare_proto.QueryOrderRouterRevShareResponse:
  """Query order router revenue-share state."""
  return await revshare_proto.QueryStub(self.channel).order_router_rev_share(revshare_proto.QueryOrderRouterRevShare(address=address))