WSTGBPVault
Documentation for eth_defi.wstgbp.vault.WSTGBPVault Python class.
- 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.
Attributes summary
Return the Wren Staked tGBP token and vault address.
Return the EVM chain identifier.
Get the token which denominates the vault valuation
Deposit manager assocaited with this vault
Return the product description.
Flow manager associated with this vault
Get info dictionary related to this vault deployment.
Return the protocol display name.
Return the ERC-20 share token name.
ERC-20 that presents vault shares.
Return a listing-friendly product summary.
Return the ERC-20 share token symbol.
Return the scanner compatibility vault-address alias.
whitelist_notesOptional qualification for the exported whitelist status.
Return the wstGBP contract interface.
Methods summary
__init__(web3, spec[, token_cache, ...])Create a Wren Staked tGBP vault adapter.
fetch_available_liquidity([block_identifier])Get the amount of denomination token available for immediate withdrawal.
Fetch metadata for the wstGBP
gem()token.Read the wstGBP purchase token through
gem().Get human-readable reason why deposits are closed.
Get when deposits will next be open.
Return Wren Staked tGBP metadata and NAV source.
fetch_minimum_deposit([block_identifier])Fetch a source-proven minimum deposit in decimal token units.
fetch_minimum_redemption([block_identifier])Fetch a source-proven redemption minimum in decimal share units.
fetch_nav([block_identifier])Return Wren Staked tGBP NAV.
fetch_portfolio(universe[, block_identifier])Return an empty portfolio for the scan-only adapter.
Get human-readable reason why redemptions are closed.
Get when withdrawals/redemptions will next be open.
Return Wren Staked tGBP-specific scanner diagnostics.
fetch_share_price([block_identifier])Read Wren Staked tGBP NAV/share from
navprice().Fetch Wren Staked tGBP ERC-20 token metadata.
fetch_share_token_address([block_identifier])Return the Wren Staked tGBP share-token address.
fetch_total_assets([block_identifier])Calculate Wren Staked tGBP TVL from supply and NAV/share.
fetch_total_supply([block_identifier])Read the outstanding Wren Staked tGBP share supply.
fetch_utilisation_percent([block_identifier])Get the percentage of assets currently lent out.
get_deposit_fee(block_identifier)Calculate the mint spread above NAV/share.
Reject generic Wren Staked tGBP transaction construction.
Return static public transaction-adapter support, if any.
What is the estimated lock-up period for this vault.
Return current Wren Staked tGBP mint and redemption spread fees.
Get how this vault accounts its fees.
Get various vault state flags from the smart contract.
Reject generic Wren Staked tGBP flow accounting.
get_historical_reader(stateful)Create a Wren Staked tGBP historical reader.
get_link([referral])Return the Wren Staked tGBP homepage.
get_management_fee(block_identifier)Return the unknown annual management fee.
Return the wstGBP product description for vault exports.
get_performance_fee(block_identifier)Return the unknown performance fee.
Return the name of the vault protocol.
get_risk()Get risk profile of this vault.
Return the Wren Staked tGBP NAV source classification.
get_spec()Return an export caveat for the vault-wide whitelist status.
get_withdraw_fee(block_identifier)Calculate the redemption spread below NAV/share.
Return whether standard vault-flow event reading is supported.
Does this vault have fees outside the shared fee model.
Return whether deposits distribute directly to positions.
is_account_whitelisted(address)Determine whether an account has completed the vault's KYC policy.
Determine whether deposits require KYC or identity approval.
- __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.
- fetch_share_token_address(block_identifier='latest')
Return the Wren Staked tGBP share-token address.
- fetch_share_token()
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
- get_share_price_source()
Return the Wren Staked tGBP NAV source classification.
The adapter reads
navprice()from the product contract at the requested block.- Returns
Smart-contract state source.
- Return type
- fetch_share_price(block_identifier='latest')
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.
- fetch_nav(block_identifier='latest')
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 homepage.
- 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_minimum_deposit(block_identifier='latest')
Fetch a source-proven minimum deposit in decimal token units.
A
Noneresult means this adapter does not expose a known minimum; it does not prove the protocol accepts arbitrarily small deposits. A zero result means the adapter positively established that the vault has no minimum deposit.- Parameters
block_identifier (Union[Literal['latest', 'earliest', 'pending', 'safe', 'finalized'], eth_typing.evm.BlockNumber, eth_typing.evm.Hash32, eth_typing.encoding.HexStr, int]) – Block at which to read the protocol configuration.
- Returns
Decimal denomination-token minimum, or
Nonewhen unknown.- Return type
- fetch_minimum_redemption(block_identifier='latest')
Fetch a source-proven redemption minimum in decimal share units.
A
Noneresult means this adapter does not expose a known minimum; it does not prove the protocol accepts arbitrarily small redemptions. A zero result means the adapter positively established that the vault has no minimum redemption.- Parameters
block_identifier (Union[Literal['latest', 'earliest', 'pending', 'safe', 'finalized'], eth_typing.evm.BlockNumber, eth_typing.evm.Hash32, eth_typing.encoding.HexStr, int]) – Block at which to read the protocol configuration.
- Returns
Decimal vault-share minimum, or
Nonewhen unknown.- 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_protocol_name()
Return the name of the vault protocol.
- Return type
- get_risk()
Get risk profile of this vault.
- Return type
- get_whitelist_notes()
Return an export caveat for the vault-wide whitelist status.
Adapters may attach a concise, stable explanation when a classification is an explicitly requested operating assumption or excludes an integration-specific permission mechanism. The note describes the policy classification only; it must not be used to report temporary deposit availability.
- 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
- is_account_whitelisted(address)
Determine whether an account has completed the vault’s KYC policy.
The result concerns KYC or manual identity-approval membership only. A protocol may still require scheduling, a token balance, an allowance, available capacity, or an open epoch before a deposit can be submitted. Callers must use the relevant deposit manager pre-flight before broadcasting a transaction.
- Parameters
address (eth_typing.evm.HexAddress) – Account whose deposit-policy membership is queried.
- Returns
Truewhen the account has the required KYC/identity approval.- Raises
NotImplementedError – If the adapter cannot safely query account membership.
- Return type
- is_whitelisted_deposit()
Determine whether deposits require KYC or identity approval.
Protocol adapters override this predicate only when the deployed contract version has verified implementation source or a canonical application ABI that proves a reliable vault-wide policy read. An explicitly documented operating assumption may also override it, but must set
whitelist_notesso consumers can distinguish it from a source-proven result.Truemeans the vault requires KYC or comparable manual identity approval;Falsemeans its policy is permissionless. An open date, lock-up, epoch, pause, cap, token balance, or other non-identity eligibility condition must not affect the result. A source-proven override requires a fixed-block adapter test for every supported implementation generation. An operating assumption requires a unit test that asserts both its classification and its caveat. This is independent of a caller’s current balance, allowance, pause state, capacity, and request lifecycle.- Returns
Truewhen deposits require KYC/identity approval andFalsewhen they do not.- Raises
NotImplementedError – If the adapter cannot safely determine the policy.
- Return type
- property share_token: eth_defi.token.TokenDetails
ERC-20 that presents vault shares.
User gets shares on deposit and burns them on redemption