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

@metamask-institutional/defi-adapters

Package Overview
Dependencies
Maintainers
0
Versions
53
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@metamask-institutional/defi-adapters

Defi adapters for MMI Dashboard

  • 0.14.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
2
decreased by-97.33%
Maintainers
0
Weekly downloads
 
Created
Source

Welcome to our DeFi Adapter Library! 🚀

This library is designed to simplify and standardise the process of fetching data and interacting with various DeFi protocols, which often have unique interfaces and data structures. Our adapters 1) fetch and transform underlying protocol data into a standardised format that can be easily used by portfolio dashboards and 2) generate transaction params to create and update protocol positions.

Note: Please note that in this library, adapters must query on-chain data to ensure accuracy and reliability, we do not accept centralised APIs to get positions, withdrawals, deposits, profits or rewards.

How to create a Read Adapter

Setup steps

Watch the setup video for a detailed guide.

  1. Install:
    • nvm use to select the environment
    • npm i to install dependencies
    • npm run build to build the CLI
  2. Run project:
    • npm run dev to run the project

Continue watching videos for the following steps or, alternatively, find a written version in Steps to create a read adapter

Build adapter steps

Watch the build adapter video for a detailed guide.

  1. Use CLI:
    • npm run new-adapter this launches our interactive CLI that will prompt you with a series of questions

Inspect your automatically created adapter file and implement unfinished methods

Watch the inspect your adapter video for a detailed guide.

Build Smart Contract Classes from ABIs

Watch the build contract classes from ABIs video for a detailed guide.

  1. Save a json file with your abi and add it to your ${protocolName}/contracts/abis/ folder
  2. Run:
    • npm run build-types to generate your smart contract classes

Build your DeFi asset metadata files

Watch the build your DeFi asset metadata files video for a detailed guide.

  1. Implement the getProtocolToken function in your adapter.
  2. Run:
    • npm run build-metadata -- -p <protocol-id> to create your metadata files

Build your Snapshot tests

Watch the build your snapshot tests video for a detailed guide.

  1. Populate your test cases file.
  2. Run:
    • npm run build-snapshots -- -p <protocol-id> to build your snapshot tests

How to create a Write Adapter

The tutorial video below shows an intro to on how to add write adapter actions to an existing read adapter:

Don't have a read adapter? And don't intend to create a read adapter? Then:

  1. Select "WriteOnlyAdapterTemplate" on our new-adapter CLI. See section "Build adapter steps" above for more information.
  2. Implement the buildMetadata() method see section "Build your DeFi asset metadata files" above for more information.
  3. Then follow the video tutorial below:

Watch the build write adapter video for a detailed guide.

Example code for write-adapters, as described in the above video:

export const WriteActionInputs = {
  [WriteActions.Deposit]: z.object({
    asset: z.string(),
    amount: z.string(),
    onBehalfOf: z.string(),
    referralCode: z.number(),
  }),
  [WriteActions.Withdraw]: z.object({
    asset: z.string(),
    amount: z.string(),
    to: z.string(),
  }),
} satisfies WriteActionInputSchemas
async getTransactionParams({
  action,
  inputs,
}: Extract<
  GetTransactionParams,
  { protocolId: typeof Protocol.YourProtocolKey; productId: 'YourProductId' }
>): Promise<{ to: string; data: string }> {
  switch (action) {
    case WriteActions.Deposit: {
      const { asset, amount, onBehalfOf, referralCode } = inputs
      return poolContract.supply.populateTransaction(
        asset,
        amount,
        onBehalfOf,
        referralCode,
      )
    }
    case WriteActions.Withdraw: {
      const { asset, amount, to } = inputs
      return poolContract.withdraw.populateTransaction(asset, amount, to)
    }
  }
}

FAQs

Package last updated on 25 Sep 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