Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@metamask-institutional/defi-sdk

Package Overview
Dependencies
Maintainers
0
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@metamask-institutional/defi-sdk

Defi adapters SDK for Metamask Institutional

  • 0.9.1
  • latest
  • npm
  • Socket score

Version published
Weekly downloads
8
decreased by-50%
Maintainers
0
Weekly downloads
 
Created
Source

Welcome to our DeFi Adapter SDK! 🚀

This SDK is designed to provide an easy way of calling the service that implements our Defi Adapter Library.

Quick Start

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',
})

Helper Methods

groupPositionsByProtocolAndChain

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)

flatDefiResponse

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

Package last updated on 03 Oct 2024

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc