wstgbp.vault
Documentation for eth_defi.wstgbp.vault Python module.
Wren Staked tGBP vault adapter.
wstGBP is an ERC-20 token with permissionless mint() and redeem()
functions. It is not an ERC-4626 vault: the purchase token is
exposed through gem() and NAV/share through navprice(). This adapter
uses eth_defi.vault.base.VaultBase so the shared scanner can track
historical price and TVL without presenting the bespoke flows as ERC-4626.
Classes
Scan-only adapter for Wren Staked tGBP contracts. |
|
Wren Staked tGBP token metadata and operational state. |
- class WSTGBPVaultInfo
Bases:
eth_defi.vault.base.VaultInfoWren Staked tGBP token metadata and operational state.
- token: eth_typing.evm.HexAddress
ERC-20 share token and wstGBP contract address.
- denomination_token: eth_typing.evm.HexAddress
Purchase and redemption ERC-20 token exposed by
gem().
NAV source label.
Whether NAV is estimated.
- __init__(*args, **kwargs)
- __new__(**kwargs)
- clear()
Remove all items from the dict.
- copy()
Return a shallow copy of the dict.
- fromkeys(value=None, /)
Create a new dictionary with keys from iterable and values set to value.
- get(key, default=None, /)
Return the value for key if key is in the dictionary, else default.
- items()
Return a set-like object providing a view on the dict’s items.
- keys()
Return a set-like object providing a view on the dict’s keys.
- pop(k[, d]) v, remove specified key and return the corresponding value.
If the key is not found, return the default if given; otherwise, raise a KeyError.
- popitem()
Remove and return a (key, value) pair as a 2-tuple.
Pairs are returned in LIFO (last-in, first-out) order. Raises KeyError if the dict is empty.
- setdefault(key, default=None, /)
Insert key with a value of default if key is not in the dictionary.
Return the value for key if key is in the dictionary, else default.
- update([E, ]**F) None. Update D from mapping/iterable E and F.
If E is present and has a .keys() method, then does: for k in E.keys(): D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]
- values()
Return an object providing a view on the dict’s values.
- class WSTGBPVault
Bases:
eth_defi.vault.base.VaultBaseScan-only adapter for Wren Staked tGBP contracts.
The wstGBP contract itself is the share token. It reports a WAD-scaled NAV/share and the actual asset used for minting and redemption. The adapter reads these values, but leaves generic transaction construction unsupported because the contract uses bespoke flows.
Create a Wren Staked tGBP vault adapter.
- Parameters
web3 – Web3 connection.
spec – Chain and wstGBP token address.
token_cache – Token metadata cache used by
fetch_erc20_details().features – Shared pipeline feature flags. Expected to contain
ERC4626Feature.wstgbp_like.default_block_identifier – Default block for metadata reads.
require_denomination_token – Whether a failed
gem()lookup should raise throughVaultBase.denomination_token.
- __init__(web3, spec, token_cache=None, features=None, default_block_identifier=None, require_denomination_token=False)
Create a Wren Staked tGBP vault adapter.
- Parameters
web3 (web3.main.Web3) – Web3 connection.
spec (eth_defi.vault.base.VaultSpec) – Chain and wstGBP token address.
token_cache (Optional[dict]) – Token metadata cache used by
fetch_erc20_details().features (Optional[set[eth_defi.erc_4626.core.ERC4626Feature]]) – Shared pipeline feature flags. Expected to contain
ERC4626Feature.wstgbp_like.default_block_identifier (Optional[Union[Literal['latest', 'earliest', 'pending', 'safe', 'finalized'], eth_typing.evm.BlockNumber, eth_typing.evm.Hash32, eth_typing.encoding.HexStr, int]]) – Default block for metadata reads.
require_denomination_token (bool) – Whether a failed
gem()lookup should raise throughVaultBase.denomination_token.
- property chain_id: int
Return the EVM chain identifier.
- Returns
Chain id associated with this deployment.
- property address: eth_typing.evm.HexAddress
Return the Wren Staked tGBP token and vault address.
- Returns
Checksummed wstGBP contract address.
- property vault_address: eth_typing.evm.HexAddress
Return the scanner compatibility vault-address alias.
- Returns
The wstGBP contract address.
- property wstgbp_contract: web3.contract.contract.Contract
Return the wstGBP contract interface.
- Returns
Contract bound to this asset’s primary address.
- property name: str
Return the ERC-20 share token name.
- Returns
Human-readable Wren Staked tGBP product name.
- property symbol: str
Return the ERC-20 share token symbol.
- Returns
Wren Staked tGBP share-token symbol.
- property description: str
Return the product description.
- Returns
Short explanation of the Wren Staked tGBP product shape.
- property short_description: str
Return a listing-friendly product summary.
- Returns
Short product description.
- get_notes()
Return the wstGBP product description for vault exports.
Unlike manual vault notes, this description applies to the sole Wren Staked tGBP deployment and is part of its native metadata.
- Returns
Human-readable wstGBP product and redemption information.
- Return type
- property manager_name: str
Return the protocol display name.
- Returns
Wren Staked tGBP protocol name.
Return the Wren Staked tGBP share-token address.
Fetch Wren Staked tGBP ERC-20 token metadata.
- Returns
Share token details.
- Return type
- fetch_denomination_token_address()
Read the wstGBP purchase token through
gem().- Returns
Checksummed ERC-20 token address used for minting and redemption.
- Return type
- fetch_denomination_token()
Fetch metadata for the wstGBP
gem()token.- Returns
Purchase and redemption token details.
- Return type
Read Wren Staked tGBP NAV/share from
navprice().
- fetch_total_supply(block_identifier='latest')
Read the outstanding Wren Staked tGBP share supply.
- fetch_total_assets(block_identifier='latest')
Calculate Wren Staked tGBP TVL from supply and NAV/share.
Return Wren Staked tGBP NAV.
- fetch_info()
Return Wren Staked tGBP metadata and NAV source.
- Returns
Onchain denomination token and NAV-source data.
- Return type
- fetch_scan_record_extra_data()
Return Wren Staked tGBP-specific scanner diagnostics.
- fetch_portfolio(universe, block_identifier=None)
Return an empty portfolio for the scan-only adapter.
The Wren Staked tGBP contract can route surplus
gemliquidity to its conduit, so its ERC-20 balance is not a canonical representation of the tokenised asset’s portfolio.- Parameters
universe (eth_defi.vault.base.TradingUniverse) – Ignored.
block_identifier (Optional[Union[Literal['latest', 'earliest', 'pending', 'safe', 'finalized'], eth_typing.evm.BlockNumber, eth_typing.evm.Hash32, eth_typing.encoding.HexStr, int]]) – Ignored.
- Returns
Empty spot portfolio.
- Return type
- has_block_range_event_support()
Return whether standard vault-flow event reading is supported.
- Returns
Falsebecause Wren Staked tGBP uses bespoke lifecycle events.- Return type
- has_deposit_distribution_to_all_positions()
Return whether deposits distribute directly to positions.
- Returns
Falsebecause the adapter does not model Wren Staked tGBP flows.- Return type
- get_flow_manager()
Reject generic Wren Staked tGBP flow accounting.
- Raises
NotImplementedError – Wren Staked tGBP events are not currently mapped to generic flows.
- Return type
- get_deposit_manager()
Reject generic Wren Staked tGBP transaction construction.
- Raises
NotImplementedError – The contract’s mint/redeem functions use bespoke transaction methods.
- Return type
- get_historical_reader(stateful)
Create a Wren Staked tGBP historical reader.
- Parameters
stateful (bool) – Whether to attach adaptive reader state.
- Returns
Historical reader for supply and NAV/share.
- Return type
- get_fee_data()
Return current Wren Staked tGBP mint and redemption spread fees.
- Returns
Externalised entry and exit fees derived from onchain prices.
- Return type
- get_management_fee(block_identifier)
Return the unknown annual management fee.
- get_performance_fee(block_identifier)
Return the unknown performance fee.
- get_deposit_fee(block_identifier)
Calculate the mint spread above NAV/share.
- get_withdraw_fee(block_identifier)
Calculate the redemption spread below NAV/share.
- get_link(referral=None)
Return the Wren Staked tGBP product documentation link.
- property denomination_token: Optional[eth_defi.token.TokenDetails]
Get the token which denominates the vault valuation
Used in deposits and redemptions
Used in NAV calculation
Used in profit benchmarks
Usually USDC
- Returns
Token wrapper instance.
Maybe None for broken vaults like https://arbiscan.io/address/0x9d0fbc852deccb7dcdd6cb224fa7561efda74411#code
Note
Noneresults are not cached — the next access will retry the on-chain call. This avoids permanently caching a transient RPC failure.
- property deposit_manager: eth_defi.vault.deposit_redeem.VaultDepositManager
Deposit manager assocaited with this vault
- fetch_available_liquidity(block_identifier='latest')
Get the amount of denomination token available for immediate withdrawal.
Only applicable to lending protocol vaults (IPOR, Euler, Morpho, Gearbox, etc.). Non-lending protocols should leave this method unimplemented.
Note: maxRedeem(address(0)) does NOT work as a proxy for available liquidity because it requires a specific address that has already deposited shares. For address(0), balanceOf is always 0, so maxRedeem returns 0 regardless of actual liquidity.
- Parameters
block_identifier (Union[Literal['latest', 'earliest', 'pending', 'safe', 'finalized'], eth_typing.evm.BlockNumber, eth_typing.evm.Hash32, eth_typing.encoding.HexStr, int]) – Block to query. Defaults to “latest”.
- Raises
NotImplementedError – For non-lending protocol vaults.
- Returns
Amount in denomination token units (human-readable Decimal).
- Return type
- fetch_deposit_closed_reason()
Get human-readable reason why deposits are closed.
Override in protocol-specific subclasses
Default behaviour: assume deposits are always open (return None)
- fetch_deposit_next_open()
Get when deposits will next be open.
For epoch-based vaults (Ostium, D2), return calculated window open time
For non-epoch vaults (Plutus, IPOR, Morpho), return None
Override in protocol-specific subclasses
- Returns
Naive UTC datetime when deposits will next be available, or None if:
Deposits are currently open
Timing is unpredictable (manually controlled)
Protocol does not support timing information
- Return type
- fetch_redemption_closed_reason()
Get human-readable reason why redemptions are closed.
Override in protocol-specific subclasses
Default behaviour: assume redemptions are always open (return None)
- fetch_redemption_next_open()
Get when withdrawals/redemptions will next be open.
For epoch-based vaults (Ostium, D2), return calculated window open time
For non-epoch vaults (Plutus, IPOR, Morpho), return None
Override in protocol-specific subclasses
- Returns
Naive UTC datetime when withdrawals will next be available, or None if:
Withdrawals are currently open
Timing is unpredictable (manually controlled)
Protocol does not support timing information
- Return type
- fetch_utilisation_percent(block_identifier='latest')
Get the percentage of assets currently lent out.
Only applicable to lending protocol vaults (IPOR, Euler, Morpho, Gearbox, etc.). Non-lending protocols should leave this method unimplemented.
- Parameters
block_identifier (Union[Literal['latest', 'earliest', 'pending', 'safe', 'finalized'], eth_typing.evm.BlockNumber, eth_typing.evm.Hash32, eth_typing.encoding.HexStr, int]) – Block to query. Defaults to “latest”.
- Raises
NotImplementedError – For non-lending protocol vaults.
- Returns
Utilisation as float between 0.0 and 1.0 (0% to 100%).
- Return type
- property flow_manager: eth_defi.vault.base.VaultFlowManager
Flow manager associated with this vault
- get_deposit_manager_capability()
Return static public transaction-adapter support, if any.
This method deliberately does not attempt to construct a manager or query live pause, cap, epoch, balance, allow-list, or liquidity state. Adapters opt in only after their complete deposit and redemption lifecycles have focused coverage.
Noneis therefore the safe default for unknown and protocol-specific vaults.- Returns
Adapter-specific capability object, or
Nonewhen unsupported.- Return type
Optional[eth_defi.vault.deposit_redeem.VaultDepositManagerCapability]
- get_estimated_lock_up()
What is the estimated lock-up period for this vault.
- Returns
None if not know
- Return type
- get_fee_mode()
Get how this vault accounts its fees.
- Return type
- get_flags()
Get various vault state flags from the smart contract.
Override to add status flags
Also add flags from our manual flag list in
eth_defi.vault.flag
- Returns
Flag set.
Do not modify in place.
- Return type
- get_risk()
Get risk profile of this vault.
- Return type
- has_custom_fees()
Does this vault have fees outside the shared fee model.
Custom fees cause risk in vault comparison because the shared management/performance/deposit/withdraw fee fields cannot describe the full fee structure.
Do not return
Truemerely because a vault implements custom accessors for ordinary management, performance, deposit, or withdraw fees. ReturnTrueonly when some vault fee cannot be reflected in those standard fields as a fee-like value.- Returns
Trueif the vault has fees outside the shared fee model.- Return type
- property info: eth_defi.vault.base.VaultInfo
Get info dictionary related to this vault deployment.
Get cached data on the various vault parameters
- Returns
Vault protocol specific information dictionary
ERC-20 that presents vault shares.
User gets shares on deposit and burns them on redemption