This sdk contains collection of functions to interact with defiedge's smart contract.
Install with
or
npm install @defiedge/sdk
1. isStrategyTokenApproved()
param |
type |
default |
required |
userAddress |
string |
- |
true |
tokenIdx |
0 | 1 |
- |
true |
amount |
string | number, |
- |
true |
strategyAddress |
string |
- |
true |
jsonProvider |
JsonRpcProvider |
- |
true |
import { Web3Provider } from '@ethersproject/providers';
import { isToken0Approved } from '@defiedge/sdk';
const web3Provider = new Web3Provider(YOUR_WEB3_PROVIDER);
const strategyAddress = "0xc3ad...72bf9eb"
const accountAddress = "0xaaaa...aaaaaa"
const amount = 100
const isToken0Approved: boolean = await isStrategyTokenApproved(
accountAddress,
0, // token idx can be 0 or 1
amount,
strategyAddress,
web3Provider
)
2. approveStrategyToken()
param |
type |
default |
required |
userAddress |
string |
- |
true |
tokenIdx |
0 | 1 |
- |
true |
strategyAddress |
string |
- |
true |
jsonProvider |
JsonRpcProvider |
- |
true |
amount |
string | number |
undefined |
false |
overrides |
Overrides |
undefined |
false |
import { Web3Provider } from '@ethersproject/providers';
import { approveStrategyToken } from '@defiedge/sdk';
const web3Provider = new Web3Provider(YOUR_WEB3_PROVIDER);
const strategyAddress = "0xc3ad...72bf9eb"
const accountAddress = "0xaaaa...aaaaaa"
const amount = 100
const txnDetails = await approveStrategyToken(
accountAddress,
0, // token idx can be 0 or 1
strategyAddress,
provider,
amount // (optional)
);
await txnDetails.wait();
// can now deposit token0
// ...
param |
type |
default |
required |
strategyAddress |
string |
- |
true |
jsonProvider |
JsonRpcProvider |
- |
true |
import { Web3Provider } from '@ethersproject/providers';
import { getLiquidityRatio } from '@defiedge/sdk';
const provider = new Web3Provider(YOUR_WEB3_PROVIDER);
const strategyAddress = "0xc3ad...72bf9eb"
const accountAddress = "0xaaaa...aaaaaa"
const ratio = await getLiquidityRatio(
strategyAddress,
web3Provider,
)
const amount0 = 100
const amount1 = amount0 * ratio
// - or -
const amount1 = 100
const amount0 = amount1 * 1 / ratio
param |
type |
default |
required |
userAddress |
string |
- |
true |
amount0 |
string | number |
- |
true |
amount1 |
string | number |
- |
true |
strategyAddress |
string |
- |
true |
jsonProvider |
JsonRpcProvider |
- |
true |
overrides |
Overrides |
undefined |
false |
import { Web3Provider } from '@ethersproject/providers';
import { depositLP } from '@defiedge/sdk';
const web3Provider = new Web3Provider(YOUR_WEB3_PROVIDER);
const strategyAddress = "0xc3ad...72bf9eb"
const accountAddress = "0xaaaa...aaaaaa"
const amount0 = 100
const amount1 = amount0 * ratio // getLiquidityRatio()
const txnDetails = await depositLP(
accountAddress,
amount0, // can be 0 when only depositing amount1
amount1, // can be 0 when only depositing amount0
strategyAddress,
web3Provider
)
5. getUserDeshareBalance()
param |
type |
default |
required |
accountAddress |
string |
- |
true |
strategyAddress |
string |
- |
true |
jsonProvider |
JsonRpcProvider |
- |
true |
raw |
true |
undefined |
false |
import { Web3Provider } from '@ethersproject/providers';
import { getUserDeshareBalance } from '@defiedge/sdk';
const provider = new Web3Provider(YOUR_WEB3_PROVIDER);
const strategyAddress = "0xc3ad...72bf9eb"
const accountAddress = "0xaaaa...aaaaaa"
const deShare: string = await getUserDeshareBalance(
strategyAddress,
accountAddress,
web3Provider
)
// - or -
const deShareBN: BigNumber = await getUserDeshareBalance(
strategyAddress,
accountAddress,
web3Provider,
true
)
param |
type |
default |
required |
userAddress |
string |
- |
true |
shares |
string | number |
- |
true |
strategyAddress |
string |
- |
true |
jsonProvider |
JsonRpcProvider |
- |
true |
overrides |
Overrides |
undefined |
false |
import { Web3Provider } from '@ethersproject/providers';
import { removeLP, getUserDeshareBalance } from '@defiedge/sdk';
const web3Provider = new Web3Provider(YOUR_WEB3_PROVIDER);
const strategyAddress = "0xc3ad...72bf9eb"
const accountAddress = "0xaaaa...aaaaaa"
const totalUserShare: string = getUserDeshareBalance(
accountAddress,
strategyAddress,
web3Provider
)
let shares = Number(totalUserShare) * 0.5 // 50% of user deshare balance
const txnDetails = await removeLP(
accountAddress,
shares, // de shares
strategyAddress,
web3Provider
)
param |
type |
default |
required |
chainId |
SupportedChainId |
- |
true |
strategyAddress |
string |
- |
true |
import { getStrategyMetaData } from '@defiedge/sdk';
const strategyAddress = '0xc3ad...72bf9eb'
const strategy: Strategy = await getStrategyMetaData(
SupportedChainId.bsc,
strategyAddress
)
For api detail and other functions please refer to this postman documentation.
enum SupportedChainId {
arbitrum = 42161,
base = 8453,
bsc = 56,
mainnet = 1,
mantle = 5000,
moonbeam = 1284,
optimism = 10,
polygon = 137,
}
type Currency = 'USD' | 'BTC' | 'MATIC' | 'ETH';
interface Strategy {
id: string;
title: string;
subTitle: string;
description: string;
updatedAt: string;
network: string;
sharePrice: number;
address: string;
aum: number;
createdAt: string;
feesApr: Record<Currency, number>;
sevenDayApy: Record<Currency, number>;
sinceInception: Record<Currency, number>;
oneDayApy: Record<Currency, number>;
}
This version of @defiedge/sdk
is still in beta, so unfortunately documentation is pretty sparse at the moment. Comments and the source code itself are the best ways to get an idea of what's going on. More thorough documentation is a priority as development continues!