pyaver.refresh

  1from .aver_client import AverClient
  2from .user_market import AverMarket, UserMarket
  3from .utils import load_multiple_account_states
  4
  5
  6
  7"""
  8Use this function to quickly refresh market data (it is quicker that AverMarket.load_multiple)
  9"""
 10async def refresh_multiple_markets(
 11    aver_client: AverClient, 
 12    markets: list[AverMarket],
 13    ) -> list[AverMarket]:
 14    """
 15    Refresh all data for multiple markets quickly
 16
 17    This function optimizes the calls to the Solana network batching them efficiently so that many can be reloaded in the fewest calls.
 18
 19    Use instead instead of src.market.AverMarket.load_multiple()
 20
 21    Args:
 22        aver_client (AverClient): AverClient object
 23        markets (list[AverMarket]): List of AverMarket objects
 24
 25    Returns:
 26        list[AverMarket]: List of refreshed AverMarket objects
 27    """
 28    market_pubkeys = [m.market_pubkey for m in markets]
 29    market_store_pubkeys = [m.market_state.market_store for m in markets]
 30
 31    slabs_pubkeys = []
 32    for m in markets:
 33        if(m.market_store_state is None or m.market_store_state.orderbook_accounts is None):
 34            continue
 35        oa = m.market_store_state.orderbook_accounts
 36        for s in oa:
 37            slabs_pubkeys.append(s.bids)
 38            slabs_pubkeys.append(s.asks)
 39    
 40    multiple_account_states = await load_multiple_account_states(
 41        aver_client, 
 42        market_pubkeys,
 43        market_store_pubkeys,
 44        slabs_pubkeys,
 45        )
 46
 47    markets = AverMarket.get_markets_from_account_states(
 48        aver_client, 
 49        market_pubkeys, 
 50        multiple_account_states['market_states'], 
 51        multiple_account_states['market_stores'], 
 52        multiple_account_states['slabs'],
 53    )
 54
 55    return markets
 56
 57async def refresh_market(aver_client: AverClient, market: AverMarket) -> AverMarket:
 58    """
 59    Refresh all data for an AverMarket quickly
 60
 61    This function optimizes the calls to the Solana network batching them efficiently so that many can be reloaded in the fewest calls.
 62
 63    Use instead instead of src.market.AverMarket.load()
 64
 65    Args:
 66        aver_client (AverClient): AverClient object
 67        market (AverMarket): AverMarket object
 68
 69    Returns:
 70        AverMarket: Refreshed AverMarket object
 71    """
 72    return (await refresh_multiple_markets(aver_client, [market]))[0]
 73
 74async def refresh_multiple_user_markets(
 75    aver_client: AverClient, 
 76    user_markets: list[UserMarket],
 77    ) -> list[UserMarket]:
 78    """
 79    Refresh all data for multiple user markets quickly
 80
 81    This function optimizes the calls to the Solana network batching them efficiently so that many can be reloaded in the fewest calls.
 82
 83    Also refreshes the underlying AverMarket objects
 84
 85    Args:
 86        aver_client (AverClient): AverMarket object
 87        user_markets (list[UserMarket]): List of UserMarket objects
 88
 89    Returns:
 90        list[UserMarket]: List of refreshed UserMarket objects
 91    """
 92    market_pubkeys = [u.market.market_pubkey for u in user_markets]
 93    market_store_pubkeys = [u.market.market_state.market_store for u in user_markets]
 94    user_markets_pubkeys = [u.pubkey for u in user_markets]
 95    user_pubkeys = [u.user_market_state.user for u in user_markets]
 96    uhl_pubkeys = [u.user_host_lifetime.pubkey for u in user_markets]
 97
 98    slabs_pubkeys = []
 99    for u in user_markets:
100        if(u.market.market_store_state is None or u.market.market_store_state.orderbook_accounts is None):
101            continue
102        oa = u.market.market_store_state.orderbook_accounts
103        for s in oa:
104            slabs_pubkeys.append(s.bids)
105            slabs_pubkeys.append(s.asks)
106    
107    multiple_account_states = await load_multiple_account_states(
108        aver_client, 
109        market_pubkeys,
110        market_store_pubkeys,
111        slabs_pubkeys,
112        user_markets_pubkeys,
113        user_pubkeys,
114        uhl_pubkeys
115        )
116
117    markets = AverMarket.get_markets_from_account_states(
118        aver_client, 
119        market_pubkeys, 
120        multiple_account_states['market_states'], 
121        multiple_account_states['market_stores'], 
122        multiple_account_states['slabs'],
123    )
124
125    user_markets = UserMarket.get_user_markets_from_account_state(
126        aver_client,
127        user_markets_pubkeys,
128        multiple_account_states['user_market_states'],
129        markets,
130        multiple_account_states['user_balance_states'],
131        multiple_account_states['user_host_lifetime_states'],
132        uhl_pubkeys
133    )
134    
135    return user_markets
136
137async def refresh_user_market(aver_client: AverClient, user_market: UserMarket) -> UserMarket:
138    """
139    Refresh all data for a user markets quickly
140
141    This function optimizes the calls to the Solana network batching them efficiently so that many can be reloaded in the fewest calls.
142
143    Also refreshes the underlying AverMarket object
144
145    Args:
146        aver_client (AverClient): AverClient object
147        user_market (UserMarket): UserMarket object
148
149    Returns:
150        UserMarket: Refreshed UserMarket object
151    """
152    return (await refresh_multiple_user_markets(aver_client, [user_market]))[0]
async def refresh_multiple_markets( aver_client: pyaver.aver_client.AverClient, markets: list[pyaver.market.AverMarket]) -> list[pyaver.market.AverMarket]:
11async def refresh_multiple_markets(
12    aver_client: AverClient, 
13    markets: list[AverMarket],
14    ) -> list[AverMarket]:
15    """
16    Refresh all data for multiple markets quickly
17
18    This function optimizes the calls to the Solana network batching them efficiently so that many can be reloaded in the fewest calls.
19
20    Use instead instead of src.market.AverMarket.load_multiple()
21
22    Args:
23        aver_client (AverClient): AverClient object
24        markets (list[AverMarket]): List of AverMarket objects
25
26    Returns:
27        list[AverMarket]: List of refreshed AverMarket objects
28    """
29    market_pubkeys = [m.market_pubkey for m in markets]
30    market_store_pubkeys = [m.market_state.market_store for m in markets]
31
32    slabs_pubkeys = []
33    for m in markets:
34        if(m.market_store_state is None or m.market_store_state.orderbook_accounts is None):
35            continue
36        oa = m.market_store_state.orderbook_accounts
37        for s in oa:
38            slabs_pubkeys.append(s.bids)
39            slabs_pubkeys.append(s.asks)
40    
41    multiple_account_states = await load_multiple_account_states(
42        aver_client, 
43        market_pubkeys,
44        market_store_pubkeys,
45        slabs_pubkeys,
46        )
47
48    markets = AverMarket.get_markets_from_account_states(
49        aver_client, 
50        market_pubkeys, 
51        multiple_account_states['market_states'], 
52        multiple_account_states['market_stores'], 
53        multiple_account_states['slabs'],
54    )
55
56    return markets

Refresh all data for multiple markets quickly

This function optimizes the calls to the Solana network batching them efficiently so that many can be reloaded in the fewest calls.

Use instead instead of src.market.AverMarket.load_multiple()

Args
  • aver_client (AverClient): AverClient object
  • markets (list[AverMarket]): List of AverMarket objects
Returns

list[AverMarket]: List of refreshed AverMarket objects

async def refresh_market( aver_client: pyaver.aver_client.AverClient, market: pyaver.market.AverMarket) -> pyaver.market.AverMarket:
58async def refresh_market(aver_client: AverClient, market: AverMarket) -> AverMarket:
59    """
60    Refresh all data for an AverMarket quickly
61
62    This function optimizes the calls to the Solana network batching them efficiently so that many can be reloaded in the fewest calls.
63
64    Use instead instead of src.market.AverMarket.load()
65
66    Args:
67        aver_client (AverClient): AverClient object
68        market (AverMarket): AverMarket object
69
70    Returns:
71        AverMarket: Refreshed AverMarket object
72    """
73    return (await refresh_multiple_markets(aver_client, [market]))[0]

Refresh all data for an AverMarket quickly

This function optimizes the calls to the Solana network batching them efficiently so that many can be reloaded in the fewest calls.

Use instead instead of src.market.AverMarket.load()

Args
  • aver_client (AverClient): AverClient object
  • market (AverMarket): AverMarket object
Returns

AverMarket: Refreshed AverMarket object

async def refresh_multiple_user_markets( aver_client: pyaver.aver_client.AverClient, user_markets: list[pyaver.user_market.UserMarket]) -> list[pyaver.user_market.UserMarket]:
 75async def refresh_multiple_user_markets(
 76    aver_client: AverClient, 
 77    user_markets: list[UserMarket],
 78    ) -> list[UserMarket]:
 79    """
 80    Refresh all data for multiple user markets quickly
 81
 82    This function optimizes the calls to the Solana network batching them efficiently so that many can be reloaded in the fewest calls.
 83
 84    Also refreshes the underlying AverMarket objects
 85
 86    Args:
 87        aver_client (AverClient): AverMarket object
 88        user_markets (list[UserMarket]): List of UserMarket objects
 89
 90    Returns:
 91        list[UserMarket]: List of refreshed UserMarket objects
 92    """
 93    market_pubkeys = [u.market.market_pubkey for u in user_markets]
 94    market_store_pubkeys = [u.market.market_state.market_store for u in user_markets]
 95    user_markets_pubkeys = [u.pubkey for u in user_markets]
 96    user_pubkeys = [u.user_market_state.user for u in user_markets]
 97    uhl_pubkeys = [u.user_host_lifetime.pubkey for u in user_markets]
 98
 99    slabs_pubkeys = []
100    for u in user_markets:
101        if(u.market.market_store_state is None or u.market.market_store_state.orderbook_accounts is None):
102            continue
103        oa = u.market.market_store_state.orderbook_accounts
104        for s in oa:
105            slabs_pubkeys.append(s.bids)
106            slabs_pubkeys.append(s.asks)
107    
108    multiple_account_states = await load_multiple_account_states(
109        aver_client, 
110        market_pubkeys,
111        market_store_pubkeys,
112        slabs_pubkeys,
113        user_markets_pubkeys,
114        user_pubkeys,
115        uhl_pubkeys
116        )
117
118    markets = AverMarket.get_markets_from_account_states(
119        aver_client, 
120        market_pubkeys, 
121        multiple_account_states['market_states'], 
122        multiple_account_states['market_stores'], 
123        multiple_account_states['slabs'],
124    )
125
126    user_markets = UserMarket.get_user_markets_from_account_state(
127        aver_client,
128        user_markets_pubkeys,
129        multiple_account_states['user_market_states'],
130        markets,
131        multiple_account_states['user_balance_states'],
132        multiple_account_states['user_host_lifetime_states'],
133        uhl_pubkeys
134    )
135    
136    return user_markets

Refresh all data for multiple user markets quickly

This function optimizes the calls to the Solana network batching them efficiently so that many can be reloaded in the fewest calls.

Also refreshes the underlying AverMarket objects

Args
  • aver_client (AverClient): AverMarket object
  • user_markets (list[UserMarket]): List of UserMarket objects
Returns

list[UserMarket]: List of refreshed UserMarket objects

async def refresh_user_market( aver_client: pyaver.aver_client.AverClient, user_market: pyaver.user_market.UserMarket) -> pyaver.user_market.UserMarket:
138async def refresh_user_market(aver_client: AverClient, user_market: UserMarket) -> UserMarket:
139    """
140    Refresh all data for a user markets quickly
141
142    This function optimizes the calls to the Solana network batching them efficiently so that many can be reloaded in the fewest calls.
143
144    Also refreshes the underlying AverMarket object
145
146    Args:
147        aver_client (AverClient): AverClient object
148        user_market (UserMarket): UserMarket object
149
150    Returns:
151        UserMarket: Refreshed UserMarket object
152    """
153    return (await refresh_multiple_user_markets(aver_client, [user_market]))[0]

Refresh all data for a user markets quickly

This function optimizes the calls to the Solana network batching them efficiently so that many can be reloaded in the fewest calls.

Also refreshes the underlying AverMarket object

Args
  • aver_client (AverClient): AverClient object
  • user_market (UserMarket): UserMarket object
Returns

UserMarket: Refreshed UserMarket object