Module orca_whirlpool.internal.anchor.accounts.whirlpool

Expand source code
import typing
from dataclasses import dataclass
from solders.pubkey import Pubkey
from solana.rpc.async_api import AsyncClient
from solana.rpc.commitment import Commitment
import borsh_construct as borsh
from anchorpy.coder.accounts import ACCOUNT_DISCRIMINATOR_SIZE
from anchorpy.error import AccountInvalidDiscriminator
from anchorpy.utils.rpc import get_multiple_accounts
from anchorpy.borsh_extension import BorshPubkey
from ..program_id import PROGRAM_ID
from .. import types


class WhirlpoolJSON(typing.TypedDict):
    whirlpools_config: str
    whirlpool_bump: list[int]
    tick_spacing: int
    tick_spacing_seed: list[int]
    fee_rate: int
    protocol_fee_rate: int
    liquidity: int
    sqrt_price: int
    tick_current_index: int
    protocol_fee_owed_a: int
    protocol_fee_owed_b: int
    token_mint_a: str
    token_vault_a: str
    fee_growth_global_a: int
    token_mint_b: str
    token_vault_b: str
    fee_growth_global_b: int
    reward_last_updated_timestamp: int
    reward_infos: list[types.whirlpool_reward_info.WhirlpoolRewardInfoJSON]


@dataclass
class Whirlpool:
    discriminator: typing.ClassVar = b"?\x95\xd1\x0c\xe1\x80c\t"
    layout: typing.ClassVar = borsh.CStruct(
        "whirlpools_config" / BorshPubkey,
        "whirlpool_bump" / borsh.U8[1],
        "tick_spacing" / borsh.U16,
        "tick_spacing_seed" / borsh.U8[2],
        "fee_rate" / borsh.U16,
        "protocol_fee_rate" / borsh.U16,
        "liquidity" / borsh.U128,
        "sqrt_price" / borsh.U128,
        "tick_current_index" / borsh.I32,
        "protocol_fee_owed_a" / borsh.U64,
        "protocol_fee_owed_b" / borsh.U64,
        "token_mint_a" / BorshPubkey,
        "token_vault_a" / BorshPubkey,
        "fee_growth_global_a" / borsh.U128,
        "token_mint_b" / BorshPubkey,
        "token_vault_b" / BorshPubkey,
        "fee_growth_global_b" / borsh.U128,
        "reward_last_updated_timestamp" / borsh.U64,
        "reward_infos" / types.whirlpool_reward_info.WhirlpoolRewardInfo.layout[3],
    )
    whirlpools_config: Pubkey
    whirlpool_bump: list[int]
    tick_spacing: int
    tick_spacing_seed: list[int]
    fee_rate: int
    protocol_fee_rate: int
    liquidity: int
    sqrt_price: int
    tick_current_index: int
    protocol_fee_owed_a: int
    protocol_fee_owed_b: int
    token_mint_a: Pubkey
    token_vault_a: Pubkey
    fee_growth_global_a: int
    token_mint_b: Pubkey
    token_vault_b: Pubkey
    fee_growth_global_b: int
    reward_last_updated_timestamp: int
    reward_infos: list[types.whirlpool_reward_info.WhirlpoolRewardInfo]

    @classmethod
    async def fetch(
        cls,
        conn: AsyncClient,
        address: Pubkey,
        commitment: typing.Optional[Commitment] = None,
        program_id: Pubkey = PROGRAM_ID,
    ) -> typing.Optional["Whirlpool"]:
        resp = await conn.get_account_info(address, commitment=commitment)
        info = resp.value
        if info is None:
            return None
        if info.owner != program_id:
            raise ValueError("Account does not belong to this program")
        bytes_data = info.data
        return cls.decode(bytes_data)

    @classmethod
    async def fetch_multiple(
        cls,
        conn: AsyncClient,
        addresses: list[Pubkey],
        commitment: typing.Optional[Commitment] = None,
        program_id: Pubkey = PROGRAM_ID,
    ) -> typing.List[typing.Optional["Whirlpool"]]:
        infos = await get_multiple_accounts(conn, addresses, commitment=commitment)
        res: typing.List[typing.Optional["Whirlpool"]] = []
        for info in infos:
            if info is None:
                res.append(None)
                continue
            if info.account.owner != program_id:
                raise ValueError("Account does not belong to this program")
            res.append(cls.decode(info.account.data))
        return res

    @classmethod
    def decode(cls, data: bytes) -> "Whirlpool":
        if data[:ACCOUNT_DISCRIMINATOR_SIZE] != cls.discriminator:
            raise AccountInvalidDiscriminator(
                "The discriminator for this account is invalid"
            )
        dec = Whirlpool.layout.parse(data[ACCOUNT_DISCRIMINATOR_SIZE:])
        return cls(
            whirlpools_config=dec.whirlpools_config,
            whirlpool_bump=dec.whirlpool_bump,
            tick_spacing=dec.tick_spacing,
            tick_spacing_seed=dec.tick_spacing_seed,
            fee_rate=dec.fee_rate,
            protocol_fee_rate=dec.protocol_fee_rate,
            liquidity=dec.liquidity,
            sqrt_price=dec.sqrt_price,
            tick_current_index=dec.tick_current_index,
            protocol_fee_owed_a=dec.protocol_fee_owed_a,
            protocol_fee_owed_b=dec.protocol_fee_owed_b,
            token_mint_a=dec.token_mint_a,
            token_vault_a=dec.token_vault_a,
            fee_growth_global_a=dec.fee_growth_global_a,
            token_mint_b=dec.token_mint_b,
            token_vault_b=dec.token_vault_b,
            fee_growth_global_b=dec.fee_growth_global_b,
            reward_last_updated_timestamp=dec.reward_last_updated_timestamp,
            reward_infos=list(
                map(
                    lambda item: types.whirlpool_reward_info.WhirlpoolRewardInfo.from_decoded(
                        item
                    ),
                    dec.reward_infos,
                )
            ),
        )

    def to_json(self) -> WhirlpoolJSON:
        return {
            "whirlpools_config": str(self.whirlpools_config),
            "whirlpool_bump": self.whirlpool_bump,
            "tick_spacing": self.tick_spacing,
            "tick_spacing_seed": self.tick_spacing_seed,
            "fee_rate": self.fee_rate,
            "protocol_fee_rate": self.protocol_fee_rate,
            "liquidity": self.liquidity,
            "sqrt_price": self.sqrt_price,
            "tick_current_index": self.tick_current_index,
            "protocol_fee_owed_a": self.protocol_fee_owed_a,
            "protocol_fee_owed_b": self.protocol_fee_owed_b,
            "token_mint_a": str(self.token_mint_a),
            "token_vault_a": str(self.token_vault_a),
            "fee_growth_global_a": self.fee_growth_global_a,
            "token_mint_b": str(self.token_mint_b),
            "token_vault_b": str(self.token_vault_b),
            "fee_growth_global_b": self.fee_growth_global_b,
            "reward_last_updated_timestamp": self.reward_last_updated_timestamp,
            "reward_infos": list(map(lambda item: item.to_json(), self.reward_infos)),
        }

    @classmethod
    def from_json(cls, obj: WhirlpoolJSON) -> "Whirlpool":
        return cls(
            whirlpools_config=Pubkey.from_string(obj["whirlpools_config"]),
            whirlpool_bump=obj["whirlpool_bump"],
            tick_spacing=obj["tick_spacing"],
            tick_spacing_seed=obj["tick_spacing_seed"],
            fee_rate=obj["fee_rate"],
            protocol_fee_rate=obj["protocol_fee_rate"],
            liquidity=obj["liquidity"],
            sqrt_price=obj["sqrt_price"],
            tick_current_index=obj["tick_current_index"],
            protocol_fee_owed_a=obj["protocol_fee_owed_a"],
            protocol_fee_owed_b=obj["protocol_fee_owed_b"],
            token_mint_a=Pubkey.from_string(obj["token_mint_a"]),
            token_vault_a=Pubkey.from_string(obj["token_vault_a"]),
            fee_growth_global_a=obj["fee_growth_global_a"],
            token_mint_b=Pubkey.from_string(obj["token_mint_b"]),
            token_vault_b=Pubkey.from_string(obj["token_vault_b"]),
            fee_growth_global_b=obj["fee_growth_global_b"],
            reward_last_updated_timestamp=obj["reward_last_updated_timestamp"],
            reward_infos=list(
                map(
                    lambda item: types.whirlpool_reward_info.WhirlpoolRewardInfo.from_json(
                        item
                    ),
                    obj["reward_infos"],
                )
            ),
        )

Classes

class Whirlpool (whirlpools_config: solders.pubkey.Pubkey, whirlpool_bump: list[int], tick_spacing: int, tick_spacing_seed: list[int], fee_rate: int, protocol_fee_rate: int, liquidity: int, sqrt_price: int, tick_current_index: int, protocol_fee_owed_a: int, protocol_fee_owed_b: int, token_mint_a: solders.pubkey.Pubkey, token_vault_a: solders.pubkey.Pubkey, fee_growth_global_a: int, token_mint_b: solders.pubkey.Pubkey, token_vault_b: solders.pubkey.Pubkey, fee_growth_global_b: int, reward_last_updated_timestamp: int, reward_infos: list[WhirlpoolRewardInfo])

Whirlpool(whirlpools_config: solders.pubkey.Pubkey, whirlpool_bump: list[int], tick_spacing: int, tick_spacing_seed: list[int], fee_rate: int, protocol_fee_rate: int, liquidity: int, sqrt_price: int, tick_current_index: int, protocol_fee_owed_a: int, protocol_fee_owed_b: int, token_mint_a: solders.pubkey.Pubkey, token_vault_a: solders.pubkey.Pubkey, fee_growth_global_a: int, token_mint_b: solders.pubkey.Pubkey, token_vault_b: solders.pubkey.Pubkey, fee_growth_global_b: int, reward_last_updated_timestamp: int, reward_infos: list[orca_whirlpool.internal.anchor.types.whirlpool_reward_info.WhirlpoolRewardInfo])

Expand source code
@dataclass
class Whirlpool:
    discriminator: typing.ClassVar = b"?\x95\xd1\x0c\xe1\x80c\t"
    layout: typing.ClassVar = borsh.CStruct(
        "whirlpools_config" / BorshPubkey,
        "whirlpool_bump" / borsh.U8[1],
        "tick_spacing" / borsh.U16,
        "tick_spacing_seed" / borsh.U8[2],
        "fee_rate" / borsh.U16,
        "protocol_fee_rate" / borsh.U16,
        "liquidity" / borsh.U128,
        "sqrt_price" / borsh.U128,
        "tick_current_index" / borsh.I32,
        "protocol_fee_owed_a" / borsh.U64,
        "protocol_fee_owed_b" / borsh.U64,
        "token_mint_a" / BorshPubkey,
        "token_vault_a" / BorshPubkey,
        "fee_growth_global_a" / borsh.U128,
        "token_mint_b" / BorshPubkey,
        "token_vault_b" / BorshPubkey,
        "fee_growth_global_b" / borsh.U128,
        "reward_last_updated_timestamp" / borsh.U64,
        "reward_infos" / types.whirlpool_reward_info.WhirlpoolRewardInfo.layout[3],
    )
    whirlpools_config: Pubkey
    whirlpool_bump: list[int]
    tick_spacing: int
    tick_spacing_seed: list[int]
    fee_rate: int
    protocol_fee_rate: int
    liquidity: int
    sqrt_price: int
    tick_current_index: int
    protocol_fee_owed_a: int
    protocol_fee_owed_b: int
    token_mint_a: Pubkey
    token_vault_a: Pubkey
    fee_growth_global_a: int
    token_mint_b: Pubkey
    token_vault_b: Pubkey
    fee_growth_global_b: int
    reward_last_updated_timestamp: int
    reward_infos: list[types.whirlpool_reward_info.WhirlpoolRewardInfo]

    @classmethod
    async def fetch(
        cls,
        conn: AsyncClient,
        address: Pubkey,
        commitment: typing.Optional[Commitment] = None,
        program_id: Pubkey = PROGRAM_ID,
    ) -> typing.Optional["Whirlpool"]:
        resp = await conn.get_account_info(address, commitment=commitment)
        info = resp.value
        if info is None:
            return None
        if info.owner != program_id:
            raise ValueError("Account does not belong to this program")
        bytes_data = info.data
        return cls.decode(bytes_data)

    @classmethod
    async def fetch_multiple(
        cls,
        conn: AsyncClient,
        addresses: list[Pubkey],
        commitment: typing.Optional[Commitment] = None,
        program_id: Pubkey = PROGRAM_ID,
    ) -> typing.List[typing.Optional["Whirlpool"]]:
        infos = await get_multiple_accounts(conn, addresses, commitment=commitment)
        res: typing.List[typing.Optional["Whirlpool"]] = []
        for info in infos:
            if info is None:
                res.append(None)
                continue
            if info.account.owner != program_id:
                raise ValueError("Account does not belong to this program")
            res.append(cls.decode(info.account.data))
        return res

    @classmethod
    def decode(cls, data: bytes) -> "Whirlpool":
        if data[:ACCOUNT_DISCRIMINATOR_SIZE] != cls.discriminator:
            raise AccountInvalidDiscriminator(
                "The discriminator for this account is invalid"
            )
        dec = Whirlpool.layout.parse(data[ACCOUNT_DISCRIMINATOR_SIZE:])
        return cls(
            whirlpools_config=dec.whirlpools_config,
            whirlpool_bump=dec.whirlpool_bump,
            tick_spacing=dec.tick_spacing,
            tick_spacing_seed=dec.tick_spacing_seed,
            fee_rate=dec.fee_rate,
            protocol_fee_rate=dec.protocol_fee_rate,
            liquidity=dec.liquidity,
            sqrt_price=dec.sqrt_price,
            tick_current_index=dec.tick_current_index,
            protocol_fee_owed_a=dec.protocol_fee_owed_a,
            protocol_fee_owed_b=dec.protocol_fee_owed_b,
            token_mint_a=dec.token_mint_a,
            token_vault_a=dec.token_vault_a,
            fee_growth_global_a=dec.fee_growth_global_a,
            token_mint_b=dec.token_mint_b,
            token_vault_b=dec.token_vault_b,
            fee_growth_global_b=dec.fee_growth_global_b,
            reward_last_updated_timestamp=dec.reward_last_updated_timestamp,
            reward_infos=list(
                map(
                    lambda item: types.whirlpool_reward_info.WhirlpoolRewardInfo.from_decoded(
                        item
                    ),
                    dec.reward_infos,
                )
            ),
        )

    def to_json(self) -> WhirlpoolJSON:
        return {
            "whirlpools_config": str(self.whirlpools_config),
            "whirlpool_bump": self.whirlpool_bump,
            "tick_spacing": self.tick_spacing,
            "tick_spacing_seed": self.tick_spacing_seed,
            "fee_rate": self.fee_rate,
            "protocol_fee_rate": self.protocol_fee_rate,
            "liquidity": self.liquidity,
            "sqrt_price": self.sqrt_price,
            "tick_current_index": self.tick_current_index,
            "protocol_fee_owed_a": self.protocol_fee_owed_a,
            "protocol_fee_owed_b": self.protocol_fee_owed_b,
            "token_mint_a": str(self.token_mint_a),
            "token_vault_a": str(self.token_vault_a),
            "fee_growth_global_a": self.fee_growth_global_a,
            "token_mint_b": str(self.token_mint_b),
            "token_vault_b": str(self.token_vault_b),
            "fee_growth_global_b": self.fee_growth_global_b,
            "reward_last_updated_timestamp": self.reward_last_updated_timestamp,
            "reward_infos": list(map(lambda item: item.to_json(), self.reward_infos)),
        }

    @classmethod
    def from_json(cls, obj: WhirlpoolJSON) -> "Whirlpool":
        return cls(
            whirlpools_config=Pubkey.from_string(obj["whirlpools_config"]),
            whirlpool_bump=obj["whirlpool_bump"],
            tick_spacing=obj["tick_spacing"],
            tick_spacing_seed=obj["tick_spacing_seed"],
            fee_rate=obj["fee_rate"],
            protocol_fee_rate=obj["protocol_fee_rate"],
            liquidity=obj["liquidity"],
            sqrt_price=obj["sqrt_price"],
            tick_current_index=obj["tick_current_index"],
            protocol_fee_owed_a=obj["protocol_fee_owed_a"],
            protocol_fee_owed_b=obj["protocol_fee_owed_b"],
            token_mint_a=Pubkey.from_string(obj["token_mint_a"]),
            token_vault_a=Pubkey.from_string(obj["token_vault_a"]),
            fee_growth_global_a=obj["fee_growth_global_a"],
            token_mint_b=Pubkey.from_string(obj["token_mint_b"]),
            token_vault_b=Pubkey.from_string(obj["token_vault_b"]),
            fee_growth_global_b=obj["fee_growth_global_b"],
            reward_last_updated_timestamp=obj["reward_last_updated_timestamp"],
            reward_infos=list(
                map(
                    lambda item: types.whirlpool_reward_info.WhirlpoolRewardInfo.from_json(
                        item
                    ),
                    obj["reward_infos"],
                )
            ),
        )

Class variables

var discriminator : ClassVar
var fee_growth_global_a : int
var fee_growth_global_b : int
var fee_rate : int
var layout : ClassVar
var liquidity : int
var protocol_fee_owed_a : int
var protocol_fee_owed_b : int
var protocol_fee_rate : int
var reward_infos : list[WhirlpoolRewardInfo]
var reward_last_updated_timestamp : int
var sqrt_price : int
var tick_current_index : int
var tick_spacing : int
var tick_spacing_seed : list[int]
var token_mint_a : solders.pubkey.Pubkey
var token_mint_b : solders.pubkey.Pubkey
var token_vault_a : solders.pubkey.Pubkey
var token_vault_b : solders.pubkey.Pubkey
var whirlpool_bump : list[int]
var whirlpools_config : solders.pubkey.Pubkey

Static methods

def decode(data: bytes) ‑> Whirlpool
Expand source code
@classmethod
def decode(cls, data: bytes) -> "Whirlpool":
    if data[:ACCOUNT_DISCRIMINATOR_SIZE] != cls.discriminator:
        raise AccountInvalidDiscriminator(
            "The discriminator for this account is invalid"
        )
    dec = Whirlpool.layout.parse(data[ACCOUNT_DISCRIMINATOR_SIZE:])
    return cls(
        whirlpools_config=dec.whirlpools_config,
        whirlpool_bump=dec.whirlpool_bump,
        tick_spacing=dec.tick_spacing,
        tick_spacing_seed=dec.tick_spacing_seed,
        fee_rate=dec.fee_rate,
        protocol_fee_rate=dec.protocol_fee_rate,
        liquidity=dec.liquidity,
        sqrt_price=dec.sqrt_price,
        tick_current_index=dec.tick_current_index,
        protocol_fee_owed_a=dec.protocol_fee_owed_a,
        protocol_fee_owed_b=dec.protocol_fee_owed_b,
        token_mint_a=dec.token_mint_a,
        token_vault_a=dec.token_vault_a,
        fee_growth_global_a=dec.fee_growth_global_a,
        token_mint_b=dec.token_mint_b,
        token_vault_b=dec.token_vault_b,
        fee_growth_global_b=dec.fee_growth_global_b,
        reward_last_updated_timestamp=dec.reward_last_updated_timestamp,
        reward_infos=list(
            map(
                lambda item: types.whirlpool_reward_info.WhirlpoolRewardInfo.from_decoded(
                    item
                ),
                dec.reward_infos,
            )
        ),
    )
async def fetch(conn: solana.rpc.async_api.AsyncClient, address: solders.pubkey.Pubkey, commitment: Optional[solana.rpc.commitment.Commitment] = None, program_id: solders.pubkey.Pubkey = Pubkey( whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc, )) ‑> Optional[Whirlpool]
Expand source code
@classmethod
async def fetch(
    cls,
    conn: AsyncClient,
    address: Pubkey,
    commitment: typing.Optional[Commitment] = None,
    program_id: Pubkey = PROGRAM_ID,
) -> typing.Optional["Whirlpool"]:
    resp = await conn.get_account_info(address, commitment=commitment)
    info = resp.value
    if info is None:
        return None
    if info.owner != program_id:
        raise ValueError("Account does not belong to this program")
    bytes_data = info.data
    return cls.decode(bytes_data)
async def fetch_multiple(conn: solana.rpc.async_api.AsyncClient, addresses: list[solders.pubkey.Pubkey], commitment: Optional[solana.rpc.commitment.Commitment] = None, program_id: solders.pubkey.Pubkey = Pubkey( whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc, )) ‑> List[Optional[Whirlpool]]
Expand source code
@classmethod
async def fetch_multiple(
    cls,
    conn: AsyncClient,
    addresses: list[Pubkey],
    commitment: typing.Optional[Commitment] = None,
    program_id: Pubkey = PROGRAM_ID,
) -> typing.List[typing.Optional["Whirlpool"]]:
    infos = await get_multiple_accounts(conn, addresses, commitment=commitment)
    res: typing.List[typing.Optional["Whirlpool"]] = []
    for info in infos:
        if info is None:
            res.append(None)
            continue
        if info.account.owner != program_id:
            raise ValueError("Account does not belong to this program")
        res.append(cls.decode(info.account.data))
    return res
def from_json(obj: WhirlpoolJSON) ‑> Whirlpool
Expand source code
@classmethod
def from_json(cls, obj: WhirlpoolJSON) -> "Whirlpool":
    return cls(
        whirlpools_config=Pubkey.from_string(obj["whirlpools_config"]),
        whirlpool_bump=obj["whirlpool_bump"],
        tick_spacing=obj["tick_spacing"],
        tick_spacing_seed=obj["tick_spacing_seed"],
        fee_rate=obj["fee_rate"],
        protocol_fee_rate=obj["protocol_fee_rate"],
        liquidity=obj["liquidity"],
        sqrt_price=obj["sqrt_price"],
        tick_current_index=obj["tick_current_index"],
        protocol_fee_owed_a=obj["protocol_fee_owed_a"],
        protocol_fee_owed_b=obj["protocol_fee_owed_b"],
        token_mint_a=Pubkey.from_string(obj["token_mint_a"]),
        token_vault_a=Pubkey.from_string(obj["token_vault_a"]),
        fee_growth_global_a=obj["fee_growth_global_a"],
        token_mint_b=Pubkey.from_string(obj["token_mint_b"]),
        token_vault_b=Pubkey.from_string(obj["token_vault_b"]),
        fee_growth_global_b=obj["fee_growth_global_b"],
        reward_last_updated_timestamp=obj["reward_last_updated_timestamp"],
        reward_infos=list(
            map(
                lambda item: types.whirlpool_reward_info.WhirlpoolRewardInfo.from_json(
                    item
                ),
                obj["reward_infos"],
            )
        ),
    )

Methods

def to_json(self) ‑> WhirlpoolJSON
Expand source code
def to_json(self) -> WhirlpoolJSON:
    return {
        "whirlpools_config": str(self.whirlpools_config),
        "whirlpool_bump": self.whirlpool_bump,
        "tick_spacing": self.tick_spacing,
        "tick_spacing_seed": self.tick_spacing_seed,
        "fee_rate": self.fee_rate,
        "protocol_fee_rate": self.protocol_fee_rate,
        "liquidity": self.liquidity,
        "sqrt_price": self.sqrt_price,
        "tick_current_index": self.tick_current_index,
        "protocol_fee_owed_a": self.protocol_fee_owed_a,
        "protocol_fee_owed_b": self.protocol_fee_owed_b,
        "token_mint_a": str(self.token_mint_a),
        "token_vault_a": str(self.token_vault_a),
        "fee_growth_global_a": self.fee_growth_global_a,
        "token_mint_b": str(self.token_mint_b),
        "token_vault_b": str(self.token_vault_b),
        "fee_growth_global_b": self.fee_growth_global_b,
        "reward_last_updated_timestamp": self.reward_last_updated_timestamp,
        "reward_infos": list(map(lambda item: item.to_json(), self.reward_infos)),
    }
class WhirlpoolJSON (*args, **kwargs)

dict() -> new empty dictionary dict(mapping) -> new dictionary initialized from a mapping object's (key, value) pairs dict(iterable) -> new dictionary initialized as if via: d = {} for k, v in iterable: d[k] = v dict(**kwargs) -> new dictionary initialized with the name=value pairs in the keyword argument list. For example: dict(one=1, two=2)

Expand source code
class WhirlpoolJSON(typing.TypedDict):
    whirlpools_config: str
    whirlpool_bump: list[int]
    tick_spacing: int
    tick_spacing_seed: list[int]
    fee_rate: int
    protocol_fee_rate: int
    liquidity: int
    sqrt_price: int
    tick_current_index: int
    protocol_fee_owed_a: int
    protocol_fee_owed_b: int
    token_mint_a: str
    token_vault_a: str
    fee_growth_global_a: int
    token_mint_b: str
    token_vault_b: str
    fee_growth_global_b: int
    reward_last_updated_timestamp: int
    reward_infos: list[types.whirlpool_reward_info.WhirlpoolRewardInfoJSON]

Ancestors

  • builtins.dict

Class variables

var fee_growth_global_a : int
var fee_growth_global_b : int
var fee_rate : int
var liquidity : int
var protocol_fee_owed_a : int
var protocol_fee_owed_b : int
var protocol_fee_rate : int
var reward_infos : list[WhirlpoolRewardInfoJSON]
var reward_last_updated_timestamp : int
var sqrt_price : int
var tick_current_index : int
var tick_spacing : int
var tick_spacing_seed : list[int]
var token_mint_a : str
var token_mint_b : str
var token_vault_a : str
var token_vault_b : str
var whirlpool_bump : list[int]
var whirlpools_config : str