/// @title Reading key data from specified Vault
/// @notice Contains key information about a Vault
uint256 primaryConversion;
uint256 complementConversion;
/// @notice Contains key information about a derivative token
/// @notice Contains key information from Derivative Specification
struct DerivativeSpecification {
uint primaryNominalValue;
uint complementNominalValue;
/// @notice Getting information about a Vault, its derivative tokens and specification
/// @param _vault vault address
/// @return vaultData vault-specific information
/// @return derivativeSpecificationData vault's derivative specification
/// @return collateralData vault's collateral token metadata
/// @return lockedCollateralAmount vault's total locked collateral amount
/// @return primaryData vault's primary token metadata
/// @return complementData vault's complement token metadata
function getVaultInfo(address _vault)
DerivativeSpecification memory derivativeSpecificationData,
Token memory collateralData,
uint lockedCollateralAmount,
Token memory primaryData,
Token memory complementData
/// @notice Getting vault derivative token balances
/// @param _owner address for which balances are being extracted
/// @param _vaults list of all vaults
/// @return primaries primary token balances
/// @return complements complement token balances
function getVaultTokenBalancesByOwner(
address[] calldata _vaults
returns (uint256[] memory primaries, uint256[] memory complements)
/// @notice Getting any ERC20 token balances
/// @param _owner address for which balances are being extracted
/// @param _tokens list of all tokens
/// @return balances token balances
function getERC20BalancesByOwner(address _owner, address[] calldata _tokens)
returns (uint256[] memory balances)