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: {
[Chains.ETHEREUM.chainId]: [
"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"0x6b175474e89094c44da98b954eedeac495271d0f",
],
[Chains.OPTIMISM.chainId]: [
"0x7f5c764cbc14f9669b88837ca1490cca17c31607",
"0xda10009cbd5d07dd0cecc66161fc93d7c9000da1",
],
},
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",
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,
sellToken: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
buyToken: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
order: {
type: "sell",
sellAmount: utils.parseUnits("1000", 6),
},
slippagePercentage: 1,
takerAddress: signer.address,
gasSpeed: {
speed: "instant",
},
},
config: {
sort: {
by: "most-swapped-accounting-for-gas",
},
},
});
const bestTradeBySort = allQuotes[0];
await signer.sendTransaction(bestTradeBySort.tx);
👨💻 Development environment
yarn install