MetavaultsRegistry

The MetavaultsRegistry is the on-chain registry for managing MetaVaults and their associated markets, chains, and bridge paths. It is access-managed — only authorized callers can modify the registry. On-chain validation contracts read from this registry to validate curator actions.

Code for MetavaultsRegistry.sol can be found on GitHubarrow-up-right.

Structs

PoolInfos

struct PoolInfos {
    address pool;    // Curve pool address
    address pt;      // Principal Token address
    address yt;      // Yield Token address
    address ibt;     // Interest Bearing Token address
    address asset;   // Underlying asset address
}

Cached pool metadata, populated automatically when a market is registered.

MarketConfig

struct MarketConfig {
    bool isRegistered;
}

MetavaultChainConfig

BridgePath

View Methods

getPoolInfos

Returns the cached pool info (pool, PT, YT, IBT, asset) for a market.

getMarketFromPT

Returns the Curve pool address associated with a Principal Token.

getMarketFromYT

Returns the Curve pool address associated with a Yield Token.

getMarketConfig

Returns the market config for a specific metavault-market pair.

getBridgePaths

Returns all registered bridge paths for a MetaVault.

isMarketRegistered

Returns whether a market (Curve pool) is registered for a MetaVault.

isPTRegistered

Returns whether a Principal Token's market is registered for a MetaVault.

isYTRegistered

Returns whether a Yield Token's market is registered for a MetaVault.

marketsCount

Returns the number of registered markets for a MetaVault.

market

Returns the market address at the given index.

allMarkets

Returns all registered market addresses for a MetaVault.

isChainRegistered

Returns whether a chain is registered for a MetaVault.

isBridgePathAllowed

Returns whether a specific bridge path is whitelisted for a MetaVault.

getPathsCount

Returns the number of registered bridge paths for a MetaVault.

chainConfig

Returns the chain configuration for a specific chain ID.

allChains

Returns all registered chain configurations for a MetaVault.

chainsCount

Returns the number of registered chains for a MetaVault.

Events

Event
Description

MetavaultRegistered(address indexed metavault)

A new MetaVault was registered

MetavaultUnregistered(address indexed metavault)

A MetaVault was unregistered

MarketRegistered(address indexed metavault, address indexed market)

A market was added to a MetaVault

MarketUnregistered(address indexed metavault, address indexed market)

A market was removed from a MetaVault

ChainRegistered(address indexed metavault, uint256 indexed chainId, address indexed remoteMetavaultAddress)

A chain was registered

ChainUnregistered(address indexed metavault, uint256 indexed chainId, address indexed remoteMetavaultAddress)

A chain was unregistered

BridgePathAllowed(address indexed metavault, address indexed tokenIn, address tokenOut, uint32 indexed dstChainId, address bridge)

A bridge path was whitelisted

BridgePathRemoved(address indexed metavault, address indexed tokenIn, address tokenOut, uint32 indexed dstChainId, address bridge)

A bridge path was removed

Errors

Error
Description

ZeroAddress()

An address parameter is address(0)

MetavaultAlreadyRegistered(address metavault)

MetaVault is already registered

MetavaultNotRegistered(address metavault)

MetaVault is not registered

MarketAlreadyRegistered(address metavault, address market)

Market is already registered for this MetaVault

MarketNotRegistered(address metavault, address market)

Market is not registered for this MetaVault

ChainAlreadyRegistered(address metavault, uint256 chainId, address remoteMetavaultAddress)

Chain is already registered

ChainNotRegistered(address metavault, uint256 chainId)

Chain is not registered

BridgePathAlreadyRegistered(address metavault, address tokenIn, address tokenOut, uint32 dstChainId, address bridge)

Bridge path is already registered

BridgePathNotRegistered(address metavault, address tokenIn, address tokenOut, uint32 dstChainId, address bridge)

Bridge path is not registered

InvalidChainId()

Chain ID is 0

IndexOutOfBounds(uint256 index, uint256 length)

Market index out of bounds

ChainIndexOutOfBounds(uint256 index, uint256 length)

Chain index out of bounds

BridgePathIndexOutOfBounds(uint256 index, uint256 length)

Bridge path index out of bounds

Last updated