Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
@metamask-institutional/defi-sdk
Advanced tools
This SDK is designed to provide an easy way of calling the service that implements our Defi Adapter Library.
Here's a quick example on how to use the library
import { DefiSdk } from '@metamask-institutional/defi-sdk'
// Create
const defiSdk = new DefiSdk({
apiUrl: '<mmi-gateway-api-url>',
apiKey: '<mmi-gateway-api-key>',
})
// Example on how to get all positions for an address
const getPositionsExample = await defiSdk.getPositions({
userAddress: '0xe141062f056c612a3f013d354ab89edadaf38ffd',
})
// Example on how to aggregate the market value of those positions
const getPositionsWithAggregatedValues = groupPositionsByProtocolAndChain(getPositionsExample)
// Example on how to get an SDK for CompoundV2 borrow-market product for the Ethereum mainnet
const compoundV2BorrowMarketSdk = defiSdk
.withProtocol(Protocol.CompoundV2)
.withProduct('borrow-market')
.withChain(Chain.Ethereum)
// Example on how to create transaction parameters to borrow an asset.
const borrowExample = await compoundV2BorrowMarketSdk.borrow({
amount: '100',
asset: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
})
// Example on how to get positions for that product
const getPositionsExample = await compoundV2BorrowMarketSdk.getPositions({
userAddress: '0xe141062f056c612a3f013d354ab89edadaf38ffd',
})
The groupPositionsByProtocolAndChain function groups DeFi positions by protocol and chain, and calculates aggregated market values. It iterates through the response data, skipping unsuccessful positions, and either updates an existing group or creates a new one with the position's data and market value.
import { DefiSdk } from '@metamask-institutional/defi-sdk'
// Create
const defiSdk = new DefiSdk({
apiUrl: '<mmi-gateway-api-url>',
apiKey: '<mmi-gateway-api-key>',
})
// Example on how to get all positions for an address
const getPositionsExample = await defiSdk.getPositions({
userAddress: '0xe141062f056c612a3f013d354ab89edadaf38ffd',
})
const groupPositionsByProtocolAndChainExample = groupPositionsByProtocolAndChain(getPositionsExample)
The flatDefiResponse function processes a DeFi position response, recursively collecting all base tokens. It iterates through the response data, skipping unsuccessful positions, constructs unique identifiers, and returns the flattened underlying base token arrays.
import { DefiSdk } from '@metamask-institutional/defi-sdk'
// Create
const defiSdk = new DefiSdk({
apiUrl: '<mmi-gateway-api-url>',
apiKey: '<mmi-gateway-api-key>',
})
// Example on how to get all positions for an address
const getPositionsExample = await defiSdk.getPositions({
userAddress: '0xe141062f056c612a3f013d354ab89edadaf38ffd',
})
const flatDefiResponseExample = flatDefiResponse(getPositionsExample)
FAQs
Defi adapters SDK for Metamask Institutional
The npm package @metamask-institutional/defi-sdk receives a total of 7 weekly downloads. As such, @metamask-institutional/defi-sdk popularity was classified as not popular.
We found that @metamask-institutional/defi-sdk demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.