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.
yarn add @balmy/sdk
npm install @balmy/sdk
import { buildSDK } from "@balmy/sdk";
const sdk = buildSDK(config);
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"
];
const accountAllowances = await sdk.allowanceService.getAllowances({
chainId: Chains.ETHEREUM.chainId,
token: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", // USDC
owner: "0x000000000000000000000000000000000000dead",
spenders: ["0x6666666600000000000000000000000000009999"],
});
const amountThatDevilCanSpend =
accountAllowances["0x6666666600000000000000000000000000009999"];
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);
- Install dependencies
yarn install