DeFund Protocol v1 SDK
npm install @defund-protocol/v1-sdk
SDK initialization requires the following parameters
Param | type | description |
---|---|---|
chainId | number | 1 for mainnet, 5 for goerli, 137 for matic, 80001 for mumbai |
signer | Signer |
import { UniversalSDK } from '@defund-protocol/v1-sdk';
import { Wallet, providers } from 'ethers';
const chainId = 1;
const provider = new providers.JsonRpcProvider('your json rpc url');
const signer = new Wallet('your signer privateKey', provider);
const sdk = new UniversalSDK(chainId, signer);
Param | Type | Description |
---|---|---|
maker | Address | your signer address |
fundAddress | Address | your fund address |
swapDetails | SwapDetails | |
overrides | Overrides |
Param | Type | Description |
---|---|---|
opType | string | exactInput , exactOutput |
tokenIn | Address | |
tokenOut | Address | |
amountIn | BigNumber | amountIn for exactInput, amountInMaximum for exactOutput |
amountOut | BigNumber | amountOutMinimum for exactInput, amountOut for exactOutput |
useNative | Boolean | set to true if you want to swap to or from native Token instead of warpped native Token |
expiration | number | optional, default expires in 10 minutes |
You can find out more about the overrides parameter from the ethers document
const maker = signer.address;
const fundAddress = 'your fund address';
const swapDetails = {
opType: 'exactInput',
tokenIn: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', // WETH Address on mainnet
tokenOut: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC Address on mainnet
amountIn: BigNumber.from('100000000000000000'), // 0.1 ETH
amountOut: BigNumber.from('1000000'), // 1 USDC
useNative: true, // use native token, use ETH in this demo
expiration: Math.round(new Date().getTime() / 1000 + 30 * 60) // 30 minutes
};
const overrides = {};
const tx = await sdk.executeSwap(maker, fundAddress, swapDetails, overrides);
Param | Type | Description |
---|---|---|
maker | Address | your signer address |
fundAddress | Address | your fund address |
convertDetails | ConvertDetails | |
overrides | Overrides |
Param | Type | Description |
---|---|---|
ratio | number | ratio of tokenIn |
tokenIn | Address | |
tokenOut | Address | |
slippage | number | 1 for 1%, minimum is 0.01 for 0.01% |
useNative | Boolean | set to true if you want to swap to or from native Token instead of warpped native Token |
expiration | number | optional, default expires in 10 minutes |
const maker = signer.address;
const fundAddress = 'your fund address';
const convertDetails = {
opType: 'assetsConvert',
tokenIn: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', // WETH Address on mainnet
tokenOut: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC Address on mainnet
ratio: 1000, // 10%
useNative: true
};
const overrides = {};
const tx = await sdk.executeAssetsConvert(
maker,
fundAddress,
convertDetails,
overrides
);
You can use this method to get the asset information of the fund
const maker = signer.address;
const fundAddress = 'your fund address';
const assets = await sdk.getFundAssets(fundAddress);
You can use this method to get all the on-chain information of the fund
Param | Type | Description |
---|---|---|
fundAddress | Address | |
lpAddress | Address | Optional, If you want to get share information about a specific lp, pass this parameter |
withAssets | Boolean | The default is true, return all information, if you don't need asset information, you can pass false |
const maker = signer.address;
const fundAddress = 'your fund address';
const lpAddress = 'this address of specific lp';
const witAssets = false;
const assets = await sdk.getFundAssets(fundAddress, lpAddress, withAssets);
Examples can be found at: Examples