Updated Account layout for v3.3.
This commit is contained in:
parent
ad8f8efd47
commit
f9b7d7b03f
|
@ -100,7 +100,8 @@ class Account(AddressableAccount):
|
|||
in_margin_basket: typing.Sequence[bool],
|
||||
slot_indices: typing.Sequence[bool],
|
||||
base_slots: typing.Sequence[AccountSlot],
|
||||
msrm_amount: Decimal, being_liquidated: bool, is_bankrupt: bool) -> None:
|
||||
msrm_amount: Decimal, being_liquidated: bool, is_bankrupt: bool,
|
||||
advanced_orders: PublicKey, not_upgradable: bool, delegate: PublicKey) -> None:
|
||||
super().__init__(account_info)
|
||||
self.version: Version = version
|
||||
|
||||
|
@ -116,6 +117,9 @@ class Account(AddressableAccount):
|
|||
self.msrm_amount: Decimal = msrm_amount
|
||||
self.being_liquidated: bool = being_liquidated
|
||||
self.is_bankrupt: bool = is_bankrupt
|
||||
self.advanced_orders: PublicKey = advanced_orders
|
||||
self.not_upgradable: bool = not_upgradable
|
||||
self.delegate: PublicKey = delegate
|
||||
|
||||
@property
|
||||
def shared_quote_token(self) -> Token:
|
||||
|
@ -263,8 +267,13 @@ class Account(AddressableAccount):
|
|||
msrm_amount: Decimal = layout.msrm_amount
|
||||
being_liquidated: bool = bool(layout.being_liquidated)
|
||||
is_bankrupt: bool = bool(layout.is_bankrupt)
|
||||
advanced_orders: PublicKey = layout.advanced_orders
|
||||
not_upgradable: bool = bool(layout.not_upgradable)
|
||||
delegate: PublicKey = layout.delegate
|
||||
|
||||
return Account(account_info, version, meta_data, group.name, group.address, owner, info, quote, in_margin_basket, active_in_basket, slots, msrm_amount, being_liquidated, is_bankrupt)
|
||||
return Account(account_info, version, meta_data, group.name, group.address, owner, info, quote,
|
||||
in_margin_basket, active_in_basket, slots, msrm_amount, being_liquidated, is_bankrupt,
|
||||
advanced_orders, not_upgradable, delegate)
|
||||
|
||||
@staticmethod
|
||||
def parse(account_info: AccountInfo, group: Group, cache: Cache) -> "Account":
|
||||
|
@ -715,9 +724,12 @@ class Account(AddressableAccount):
|
|||
return f"""« Account {info}, {self.version} [{self.address}]
|
||||
{self.meta_data}
|
||||
Owner: {self.owner}
|
||||
Delegated To: {self.delegate}
|
||||
Group: « Group '{self.group_name}' [{self.group_address}] »
|
||||
Advanced Orders Account: {self.advanced_orders}
|
||||
MSRM: {self.msrm_amount}
|
||||
Bankrupt? {self.is_bankrupt}
|
||||
Upgradable? {not self.not_upgradable}
|
||||
Being Liquidated? {self.being_liquidated}
|
||||
Shared Quote Token:
|
||||
{shared_quote}
|
||||
|
|
|
@ -683,8 +683,21 @@ PERP_ACCOUNT = construct.Struct(
|
|||
# /// This account cannot do anything except go through `resolve_bankruptcy`
|
||||
# pub is_bankrupt: bool,
|
||||
# pub info: [u8; INFO_LEN],
|
||||
#
|
||||
# /// Starts off as zero pubkey and points to the AdvancedOrders account
|
||||
# pub advanced_orders_key: Pubkey,
|
||||
#
|
||||
# /// Can this account be upgraded to v1 so it can be closed
|
||||
# pub not_upgradable: bool,
|
||||
#
|
||||
# // Alternative authority/signer of transactions for a mango account
|
||||
# pub delegate: Pubkey,
|
||||
#
|
||||
# /// padding for expansions
|
||||
# pub padding: [u8; 70],
|
||||
# /// Note: future expansion can also be just done via isolated PDAs
|
||||
# /// which can be computed independently and dont need to be linked from
|
||||
# /// this account
|
||||
# pub padding: [u8; 5],
|
||||
# }
|
||||
# ```
|
||||
MANGO_ACCOUNT = construct.Struct(
|
||||
|
@ -703,9 +716,12 @@ MANGO_ACCOUNT = construct.Struct(
|
|||
"client_order_ids" / construct.Array(MAX_PERP_OPEN_ORDERS, DecimalAdapter()),
|
||||
"msrm_amount" / DecimalAdapter(),
|
||||
"being_liquidated" / DecimalAdapter(1),
|
||||
"is_bankrupt" / DecimalAdapter(1),
|
||||
"is_bankrupt" / construct.Flag,
|
||||
"info" / construct.PaddedString(32, "utf8"),
|
||||
construct.Padding(70)
|
||||
"advanced_orders" / PublicKeyAdapter(),
|
||||
"not_upgradable" / construct.Flag,
|
||||
"delegate" / PublicKeyAdapter(),
|
||||
construct.Padding(5)
|
||||
)
|
||||
|
||||
# # 🥭 LIQUIDITY_MINING_INFO
|
||||
|
|
|
@ -175,7 +175,8 @@ def fake_account() -> mango.Account:
|
|||
quote = fake_account_slot()
|
||||
return mango.Account(fake_account_info(), mango.Version.V1, meta_data, "GROUPNAME",
|
||||
fake_seeded_public_key("group"), fake_seeded_public_key("owner"), "INFO",
|
||||
quote, [], [], [], Decimal(1), False, False)
|
||||
quote, [], [], [], Decimal(1), False, False, fake_seeded_public_key("advanced_orders"),
|
||||
False, fake_seeded_public_key("delegate"))
|
||||
|
||||
|
||||
def fake_root_bank() -> mango.RootBank:
|
||||
|
|
|
@ -48,10 +48,13 @@ def test_construction() -> None:
|
|||
msrm_amount = Decimal(0)
|
||||
being_liquidated = False
|
||||
is_bankrupt = False
|
||||
advanced_orders = fake_seeded_public_key("advanced_orders")
|
||||
not_upgradable = False
|
||||
delegate = fake_seeded_public_key("delegate")
|
||||
|
||||
actual = mango.Account(account_info, mango.Version.V1, meta_data, "Test Group", group, owner, info, quote,
|
||||
in_margin_basket, active_in_basket, basket, msrm_amount, being_liquidated,
|
||||
is_bankrupt)
|
||||
is_bankrupt, advanced_orders, not_upgradable, delegate)
|
||||
|
||||
assert actual is not None
|
||||
assert actual.version == mango.Version.V1
|
||||
|
@ -69,6 +72,9 @@ def test_construction() -> None:
|
|||
assert actual.msrm_amount == msrm_amount
|
||||
assert actual.being_liquidated == being_liquidated
|
||||
assert actual.is_bankrupt == is_bankrupt
|
||||
assert actual.advanced_orders == advanced_orders
|
||||
assert actual.not_upgradable == not_upgradable
|
||||
assert actual.delegate == delegate
|
||||
|
||||
|
||||
def test_slot_lookups() -> None:
|
||||
|
@ -100,10 +106,13 @@ def test_slot_lookups() -> None:
|
|||
msrm_amount = Decimal(0)
|
||||
being_liquidated = False
|
||||
is_bankrupt = False
|
||||
advanced_orders = fake_seeded_public_key("advanced_orders")
|
||||
not_upgradable = False
|
||||
delegate = fake_seeded_public_key("delegate")
|
||||
|
||||
actual = mango.Account(account_info, mango.Version.V1, meta_data, "Test Group", group, owner, info, quote_slot,
|
||||
in_margin_basket, active_in_basket, slots, msrm_amount, being_liquidated,
|
||||
is_bankrupt)
|
||||
is_bankrupt, advanced_orders, not_upgradable, delegate)
|
||||
|
||||
assert actual.shared_quote == quote_slot
|
||||
assert actual.shared_quote_token == quote_slot.base_instrument
|
||||
|
|
|
@ -51,6 +51,8 @@ def test_construction() -> None:
|
|||
assert actual.srm_vault == srm_vault
|
||||
assert actual.msrm_vault == msrm_vault
|
||||
assert actual.fees_vault == fees_vault
|
||||
assert actual.max_mango_accounts == max_mango_accounts
|
||||
assert actual.num_mango_accounts == num_mango_accounts
|
||||
|
||||
|
||||
def test_slot_lookups() -> None:
|
||||
|
|
Loading…
Reference in New Issue