// The struct consists of ERC20-style token metadata.
struct ERC20Metadata {
string name;
string symbol;
uint8 decimals;
// The struct consists of token address,
// and price per full share (1e18).
struct Component {
address token;
int256 rate;

view functions


function getComponents(address token) view returns (Component[])

The function returns underlying tokens and price of the base token's full share (1e18).


function getMetadata(address token) view returns (ERC20Metadata) {
return ERC20Metadata({
name: getName(token),
symbol: getSymbol(token),
decimals: getDecimals(token)

The function returns ERC20-style metadata. It is recommended to override getName(), getSymbol(), and getDecimals() functions, although the whole function may be overridden.