mirror of
				https://github.com/Instadapp/assembly.git
				synced 2024-07-29 22:37:06 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			62 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { Spell } from "dsa-connect";
 | |
| import { useBigNumber } from "../useBigNumber";
 | |
| import { useDSA } from "../useDSA";
 | |
| import { useFormatting } from "../useFormatting";
 | |
| import { useMath } from "../useMath";
 | |
| import { Network, useNetwork } from "../useNetwork";
 | |
| 
 | |
| export const use1InchSwap = () => {
 | |
|   const { divWithDec } = useMath();
 | |
|   const { activeNetworkId } = useNetwork();
 | |
|   const { dsa, activeAccount } = useDSA();
 | |
|   const { isZero, ensureValue, gt, minus, times, plus, toBN } = useBigNumber();
 | |
|   const { formatPercent, getFractionDigits } = useFormatting();
 | |
| 
 | |
|   /**
 | |
|    * @dev Get different sell spell, based on simulation mode on/offand account network .
 | |
|    * Shared params:
 | |
|    * @param {string} params.buyAddr - buying token address.(For ETH: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE)
 | |
|    * @param {string} params.sellAddr - selling token amount.(For ETH: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE)
 | |
|    * @param {number} params.sellAmt - selling token amount.
 | |
|    * @param {number} params.unitAmt - unit amount of buyAmt/sellAmt with slippage.
 | |
|    * @param {number} params.setId - set token amount at this ID in `InstaMemory` Contract.
 | |
|    *
 | |
|    * 1Inch related params:
 | |
|    * @param {string} params.calldata - data from 1inch API.
 | |
|    *
 | |
|    * 1Split related params(using in simulation mode):
 | |
|    * @param {number[]} params.distribution - distribution of swap across different dex.
 | |
|    * @param {number} params.disableDexes - disable a dex. (To disable none: 0)
 | |
|    * @param {number} params.getId - get token amount at this ID from `InstaMemory` Contract.
 | |
|    */
 | |
|   function getSellSpell({
 | |
|     buyAddr,
 | |
|     sellAddr,
 | |
|     sellAmt,
 | |
|     unitAmt,
 | |
|     calldata,
 | |
|     setId
 | |
|   }): Spell {
 | |
|     if (
 | |
|       activeNetworkId.value === Network.Polygon ||
 | |
|       activeAccount.value.version == 2
 | |
|     ) {
 | |
|       return {
 | |
|         connector: "1INCH-A",
 | |
|         method: "sell",
 | |
|         args: [buyAddr, sellAddr, sellAmt, unitAmt, calldata, setId]
 | |
|       };
 | |
|     }
 | |
| 
 | |
|     return {
 | |
|       connector: "oneInch",
 | |
|       method: "sellThree",
 | |
|       args: [buyAddr, sellAddr, sellAmt, unitAmt, calldata, setId]
 | |
|     };
 | |
|   }
 | |
| 
 | |
|   return {
 | |
|     getSellSpell
 | |
|   };
 | |
| };
 | 
