Skip to content

An SDK for all things Mean Finance (and more)

Notifications You must be signed in to change notification settings

asnov/DCA_protocol_sdk

This branch is 32 commits behind Balmy-protocol/sdk:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

8863e38 Β· Dec 28, 2024
Dec 18, 2024
Jan 11, 2023
Jan 11, 2023
May 6, 2024
Dec 28, 2024
Dec 28, 2024
Apr 12, 2024
Dec 18, 2024
Oct 2, 2023
Dec 18, 2023
Dec 18, 2023
Dec 18, 2024
Jan 11, 2023
Jan 11, 2023
Jan 11, 2023
Dec 24, 2024
Jan 11, 2023
Apr 26, 2024
Nov 19, 2024

Repository files navigation

Balmy SDK

Balmy is the state-of-the-art DCA open protocol that enables users (or dapps) to Dollar Cost Average (DCA) any ERC20 into any ERC20 with their preferred period frequency, without sacrificing decentralization or giving up personal information to any centralized parties.

The Balmy SDK allows you to interact with the Balmy protocol, providing efficient tools to manage token balances, retrieve trade quotes from DEX aggregators, and check token holdings across multiple chains.

πŸ§ͺ Installing

Yarn

yarn add @balmy/sdk

NPM

npm install @balmy/sdk

Usage

πŸ‘·πŸ½β€β™€οΈ Building the SDK

import { buildSDK } from "@balmy/sdk";

const sdk = buildSDK(config);

βš–οΈ Getting balance for multiple tokens on several chains

const accountBalances = await sdk.balanceService.getBalancesForTokens({
  account: "0x000000000000000000000000000000000000dead",
  tokens: {
    // [chainId]: [0xTokenAddress]
    [Chains.ETHEREUM.chainId]: [
      // Ethereum
      "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", // USDC
      "0x6b175474e89094c44da98b954eedeac495271d0f", // DAI
    ],
    [Chains.OPTIMISM.chainId]: [
      // Optimism
      "0x7f5c764cbc14f9669b88837ca1490cca17c31607", // USDC
      "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", // DAI
    ],
  },
  // Optional config
  config: {
    timeout: "30s",
  },
});

const usdcBalanceOnEthereum =
  accountBalances[Chains.ETHEREUM.chainId][
    "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
  ];

πŸ’Έ Getting allowances of multiple spenders for a token

const accountAllowances = await sdk.allowanceService.getAllowances({
  chainId: Chains.ETHEREUM.chainId,
  token: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", // USDC
  owner: "0x000000000000000000000000000000000000dead",
  spenders: ["0x6666666600000000000000000000000000009999"],
});

const amountThatDevilCanSpend =
  accountAllowances["0x6666666600000000000000000000000000009999"];

πŸ”„ Quoting all dex aggregators for a trade

const allQuotes = await sdk.quoteService.getAllQuotesWithTxs({
  request: {
    chainId: Chains.ETHEREUM.chainId, // Ethereum
    sellToken: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
    buyToken: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
    order: {
      type: "sell",
      sellAmount: utils.parseUnits("1000", 6), // 1000 USDC
    },
    slippagePercentage: 1, // 1%
    takerAddress: signer.address,
    // Optional gas speed
    gasSpeed: {
      speed: "instant",
    },
  },
  // Optional config
  config: {
    sort: {
      by: "most-swapped-accounting-for-gas",
    },
  },
});

const bestTradeBySort = allQuotes[0];
await signer.sendTransaction(bestTradeBySort.tx);

πŸ‘¨β€πŸ’» Development environment

  • Install dependencies
yarn install

About

An SDK for all things Mean Finance (and more)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 99.9%
  • Other 0.1%