mirror of
				https://github.com/Instadapp/dsa-connectors.git
				synced 2024-07-29 22:37:00 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			333 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			333 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { BigNumber } from "ethers";
 | |
| import { encodeSpells } from "../../../scripts/tests/encodeSpells"
 | |
| 
 | |
| const depositCollteral = async (
 | |
|     dsa: any,
 | |
|     authority: any,
 | |
|     referrer: any,
 | |
|     currencyId: number,
 | |
|     amount: BigNumber,
 | |
|     underlying: boolean
 | |
| ) => {
 | |
|     const spells = [
 | |
|         {
 | |
|             connector: "NOTIONAL-TEST-A",
 | |
|             method: "depositCollateral",
 | |
|             args: [currencyId, underlying, amount, 0, 0]
 | |
|         }
 | |
|     ];
 | |
| 
 | |
|     const tx = await dsa.connect(authority).cast(...encodeSpells(spells), referrer.address);
 | |
|     await tx.wait()
 | |
| };
 | |
| 
 | |
| const depositAndMintNToken = async (
 | |
|     dsa: any,
 | |
|     authority: any,
 | |
|     referrer: any,
 | |
|     currencyId: number,
 | |
|     amount: BigNumber,
 | |
|     underlying: boolean
 | |
| ) => {
 | |
|     const spells = [
 | |
|         {
 | |
|             connector: "NOTIONAL-TEST-A",
 | |
|             method: "depositAndMintNToken",
 | |
|             args: [currencyId, amount, underlying, 0, 0]
 | |
|         }
 | |
|     ];
 | |
| 
 | |
|     const tx = await dsa.connect(authority).cast(...encodeSpells(spells), referrer.address);
 | |
|     await tx.wait()
 | |
| }
 | |
| 
 | |
| const depositAndLend = async (
 | |
|     dsa: any,
 | |
|     authority: any,
 | |
|     referrer: any,
 | |
|     currencyId: number,
 | |
|     underlying: boolean,
 | |
|     amount: BigNumber,
 | |
|     market: number,
 | |
|     fcash: BigNumber
 | |
| ) => {
 | |
|     const spells = [
 | |
|         {
 | |
|             connector: "NOTIONAL-TEST-A",
 | |
|             method: "depositAndLend",
 | |
|             args: [currencyId, amount, underlying, market, fcash, 0, 0]
 | |
|         }
 | |
|     ];
 | |
| 
 | |
|     const tx = await dsa.connect(authority).cast(...encodeSpells(spells), referrer.address);
 | |
|     await tx.wait()
 | |
| };
 | |
| 
 | |
| const withdrawCollateral = async (
 | |
|     dsa: any,
 | |
|     authority: any,
 | |
|     referrer: any,
 | |
|     currencyId: number,
 | |
|     amount: BigNumber,
 | |
|     underlying: boolean
 | |
| ) => {
 | |
|     const spells = [
 | |
|         {
 | |
|             connector: "NOTIONAL-TEST-A",
 | |
|             method: "withdrawCollateral",
 | |
|             args: [currencyId, underlying, amount, 0, 0]
 | |
|         }
 | |
|     ];
 | |
| 
 | |
|     const tx = await dsa.connect(authority).cast(...encodeSpells(spells), referrer.address);
 | |
|     await tx.wait()
 | |
| };
 | |
| 
 | |
| const redeemNTokenRaw = async (
 | |
|     dsa: any,
 | |
|     authority: any,
 | |
|     referrer: any,
 | |
|     currencyId: number,
 | |
|     sellTokenAssets: boolean,
 | |
|     tokensToRedeem: BigNumber
 | |
| ) => {
 | |
|     const spells = [
 | |
|         {
 | |
|             connector: "NOTIONAL-TEST-A",
 | |
|             method: "redeemNTokenRaw",
 | |
|             args: [currencyId, sellTokenAssets, tokensToRedeem, false, 0, 0]
 | |
|         }
 | |
|     ];
 | |
| 
 | |
|     const tx = await dsa.connect(authority).cast(...encodeSpells(spells), referrer.address);
 | |
|     await tx.wait()
 | |
| };
 | |
| 
 | |
| const redeemNTokenAndWithdraw = async (
 | |
|     dsa: any,
 | |
|     authority: any,
 | |
|     referrer: any,
 | |
|     currencyId: number,
 | |
|     tokensToRedeem: BigNumber,
 | |
|     amountToWithdraw: BigNumber,
 | |
|     redeemToUnderlying: boolean
 | |
| ) => {
 | |
|     const spells = [
 | |
|         {
 | |
|             connector: "NOTIONAL-TEST-A",
 | |
|             method: "redeemNTokenAndWithdraw",
 | |
|             args: [currencyId, tokensToRedeem, amountToWithdraw, redeemToUnderlying, 0, 0]
 | |
|         }
 | |
|     ];
 | |
| 
 | |
|     const tx = await dsa.connect(authority).cast(...encodeSpells(spells), referrer.address);
 | |
|     await tx.wait()
 | |
| };
 | |
| 
 | |
| const redeemNTokenAndDeleverage = async (
 | |
|     dsa: any,
 | |
|     authority: any,
 | |
|     referrer: any,
 | |
|     currencyId: number,
 | |
|     tokensToRedeem: BigNumber,
 | |
|     marketIndex: number,
 | |
|     fCashAmount: BigNumber
 | |
| ) => {
 | |
|     const spells = [
 | |
|         {
 | |
|             connector: "NOTIONAL-TEST-A",
 | |
|             method: "redeemNTokenAndDeleverage",
 | |
|             args: [currencyId, tokensToRedeem, marketIndex, fCashAmount, 0, 0]
 | |
|         }
 | |
|     ];
 | |
| 
 | |
|     const tx = await dsa.connect(authority).cast(...encodeSpells(spells), referrer.address);
 | |
|     await tx.wait()
 | |
| };
 | |
| 
 | |
| const depositCollateralBorrowAndWithdraw = async (
 | |
|     dsa: any,
 | |
|     authority: any,
 | |
|     referrer: any,
 | |
|     depositCurrencyId: number,
 | |
|     depositType: number,
 | |
|     depositAmount: BigNumber,
 | |
|     borrowCurrencyId: number,
 | |
|     marketIndex: number,
 | |
|     fCashAmount: BigNumber,
 | |
|     redeedmUnderlying: boolean
 | |
| ) => {
 | |
|     const spells = [
 | |
|         {
 | |
|             connector: "NOTIONAL-TEST-A",
 | |
|             method: "depositCollateralBorrowAndWithdraw",
 | |
|             args: [
 | |
|                 depositCurrencyId,
 | |
|                 depositType,
 | |
|                 depositAmount,
 | |
|                 borrowCurrencyId,
 | |
|                 marketIndex,
 | |
|                 fCashAmount,
 | |
|                 0,
 | |
|                 redeedmUnderlying,
 | |
|                 0,
 | |
|                 0
 | |
|             ]
 | |
|         }
 | |
|     ];
 | |
| 
 | |
|     const tx = await dsa.connect(authority).cast(...encodeSpells(spells), referrer.address);
 | |
|     await tx.wait()
 | |
| };
 | |
| 
 | |
| const withdrawLend = async (
 | |
|     dsa: any,
 | |
|     authority: any,
 | |
|     referrer: any,
 | |
|     currencyId: number,
 | |
|     marketIndex: number,
 | |
|     fCashAmount: BigNumber
 | |
| ) => {
 | |
|     const spells = [
 | |
|         {
 | |
|             connector: "NOTIONAL-TEST-A",
 | |
|             method: "withdrawLend",
 | |
|             args: [currencyId, marketIndex, fCashAmount, 0, 0]
 | |
|         }
 | |
|     ];
 | |
| 
 | |
|     const tx = await dsa.connect(authority).cast(...encodeSpells(spells), referrer.address);
 | |
|     await tx.wait()
 | |
| };
 | |
| 
 | |
| const mintSNoteFromETH = async (
 | |
|     dsa: any,
 | |
|     authority: any,
 | |
|     referrer: any,
 | |
|     noteAmount: BigNumber, 
 | |
|     ethAmount: BigNumber,
 | |
|     minBPT: BigNumber
 | |
| ) => {
 | |
|     const spells = [
 | |
|         {
 | |
|             connector: "NOTIONAL-TEST-A",
 | |
|             method: "mintSNoteFromETH",
 | |
|             args: [noteAmount, ethAmount, minBPT, 0]
 | |
|         }        
 | |
|     ]
 | |
| 
 | |
|     const tx = await dsa.connect(authority).cast(...encodeSpells(spells), referrer.address);
 | |
|     await tx.wait()
 | |
| }
 | |
| 
 | |
| const mintSNoteFromWETH = async (
 | |
|     dsa: any,
 | |
|     authority: any,
 | |
|     referrer: any,
 | |
|     noteAmount: BigNumber,
 | |
|     wethAmount: BigNumber,
 | |
|     minBPT: BigNumber
 | |
| ) => {
 | |
|     const spells = [
 | |
|         {
 | |
|             connector: "NOTIONAL-TEST-A",
 | |
|             method: "mintSNoteFromWETH",
 | |
|             args: [noteAmount, wethAmount, minBPT, 0]
 | |
|         }        
 | |
|     ]
 | |
| 
 | |
|     const tx = await dsa.connect(authority).cast(...encodeSpells(spells), referrer.address);
 | |
|     await tx.wait()
 | |
| }
 | |
| 
 | |
| const mintSNoteFromBPT = async (
 | |
|     dsa: any,
 | |
|     authority: any,
 | |
|     referrer: any,
 | |
|     bptAmount: BigNumber
 | |
| ) => {
 | |
|     const spells = [
 | |
|         {
 | |
|             connector: "NOTIONAL-TEST-A",
 | |
|             method: "mintSNoteFromBPT",
 | |
|             args: [bptAmount]
 | |
|         }        
 | |
|     ]
 | |
| 
 | |
|     const tx = await dsa.connect(authority).cast(...encodeSpells(spells), referrer.address);
 | |
|     await tx.wait()
 | |
| }
 | |
| 
 | |
| const startCoolDown = async (
 | |
|     dsa: any,
 | |
|     authority: any,
 | |
|     referrer: any
 | |
| ) => {
 | |
|     const spells = [
 | |
|         {
 | |
|             connector: "NOTIONAL-TEST-A",
 | |
|             method: "startCoolDown",
 | |
|             args: []
 | |
|         }        
 | |
|     ]
 | |
| 
 | |
|     const tx = await dsa.connect(authority).cast(...encodeSpells(spells), referrer.address);
 | |
|     await tx.wait()
 | |
| }
 | |
| 
 | |
| const stopCoolDown = async (
 | |
|     dsa: any,
 | |
|     authority: any,
 | |
|     referrer: any
 | |
| ) => {
 | |
|     const spells = [
 | |
|         {
 | |
|             connector: "NOTIONAL-TEST-A",
 | |
|             method: "stopCoolDown",
 | |
|             args: []
 | |
|         }        
 | |
|     ]
 | |
| 
 | |
|     const tx = await dsa.connect(authority).cast(...encodeSpells(spells), referrer.address);
 | |
|     await tx.wait()
 | |
| }
 | |
| 
 | |
| const redeemSNote = async (
 | |
|     dsa: any,
 | |
|     authority: any,
 | |
|     referrer: any,
 | |
|     sNOTEAmount: BigNumber,
 | |
|     minWETH: BigNumber,
 | |
|     minNOTE: BigNumber,
 | |
|     redeemWETH: boolean
 | |
| ) => {
 | |
|     const spells = [
 | |
|         {
 | |
|             connector: "NOTIONAL-TEST-A",
 | |
|             method: "redeemSNote",
 | |
|             args: [sNOTEAmount, minWETH, minNOTE, redeemWETH]
 | |
|         }        
 | |
|     ]
 | |
| 
 | |
|     const tx = await dsa.connect(authority).cast(...encodeSpells(spells), referrer.address);
 | |
|     await tx.wait()
 | |
| }
 | |
| 
 | |
| export default {
 | |
|     depositCollteral,
 | |
|     depositAndMintNToken,
 | |
|     depositAndLend,
 | |
|     withdrawCollateral,
 | |
|     withdrawLend,
 | |
|     redeemNTokenRaw,
 | |
|     redeemNTokenAndWithdraw,
 | |
|     redeemNTokenAndDeleverage,
 | |
|     depositCollateralBorrowAndWithdraw,
 | |
|     mintSNoteFromETH,
 | |
|     mintSNoteFromWETH,
 | |
|     mintSNoteFromBPT,
 | |
|     startCoolDown,
 | |
|     stopCoolDown,
 | |
|     redeemSNote
 | |
| };
 | 
