0.1.53 • Published 3 years ago

@jelly-swap/erc20 v0.1.53

Weekly downloads
25
License
ISC
Repository
github
Last release
3 years ago

Getting started

yarn add @jelly-swap/erc20

or

npm install @jelly-swap/erc20

Setup

import { Providers, Contract, Config, Adapter } from  '@jelly-swap/erc20';

Configuration

const  SWAP_EXPIRATION_TIME = 86400; // 1 DAY
    
export  const  TokenConfig = {
    DAI: {   
	    network:  'DAI',
	    decimals:  18,
	    address:  '0x6b175474e89094c44da98b954eedeac495271d0f',    
    },
};

export  const  AddressToToken = {
    '0x6b175474e89094c44da98b954eedeac495271d0f':  TokenConfig.DAI,
};

const  config = {
    ...Config('DAI', TokenConfig, AddressToToken, SWAP_EXPIRATION_TIME),
    receiverAddress:  'LIQUIDITY_PROVIDER_ADDRESS',
    providerUrl:  'INFURA_URL',
};

ERC20 Provider

Web Wallet
const  privateKey = 'PRIVATE_KEY';
const  provider = new  Providers.WalletProvider(privateKey, config.providerUrl);
Web3
const provider = new Providers.Web3Provider(window.ethereum)

DAI Adapter

const  adapter = new  Adapter('DAI', config);

ERC20 Contract

const  contract = new  Contract(wallet, config);

Initiate a swap

const  userInput = {
    network:  'DAI',
    inputAmount:  '85.0542', // DAI amount
    
    outputNetwork:  'BTC',
    outputAmount:  '960400', // BTC amount
    
    sender:  '0x45ce9d7bdadb704c68242118e2b8586e491e5c51', // user's DAI address
    outputAddress:  'bc1q9zh2n6yqun8syggzx6kqlkema5qw9nrz7he90l', // user's BTC address
    
    secret:  'film ritual cream paper try search asthma grab admit viable work auction',
    tokenAddress:  TokenConfig.DAI.address,
};

const  swapInput = adapter.formatInput(userInput);

console.log(swapInput);
{
    network: 'DAI',
    inputAmount: '85054200000000000000',
    outputNetwork: 'BTC',
    outputAmount: '960400',
    sender: '0x45ce9d7bdadb704c68242118e2b8586e491e5c51',
    outputAddress: 'bc1q9zh2n6yqun8syggzx6kqlkema5qw9nrz7he90l',
    secret: 'film ritual cream paper try search asthma grab admit viable work auction',
    hashLock: '0xee4aad2300d4d8d3f5f58719201ded5a65e00dbda8c3ba0bd066cf3a365e9b73',
    receiver: 'LIQUIDITY_PROVIDER_ADDRESS',
    expiration: 1588587562,
};
    
const  txHash = await  contract.newContract(swapInput);

Subscribe

contract.subscribe(callback, {
	new: {
		receiver:  'USER_ADDRESS',
		sender:  'USER_ADDRESS',
	},
	withdraw: {
		receiver:  'USER_ADDRESS',
	},
	refund: {
		sender:  'USER_ADDRESS',
	},
});

const  callback = (event) => {

console.log(event);


{
	eventName:  'NEW_CONTRACT',
	network:  'DAI',
	inputAmount:  '30000000000000000000',
	outputNetwork:  'BTC',
	outputAmount:  429100,
	expiration:  1585971331,
	id:  '0xfce96561a13d0a1732e818af24a00af9da19ded340c61089cc7bc9c3fdb189df',
	hashLock:  '0x3ba1dc9d7e65a4fdcd0136771f85c8321e239bac772dbd5589f7dd481b2dd52c',
	tokenAddress:  '0x6b175474e89094c44da98b954eedeac495271d0f',
	sender:  '0x77C0fd531157050FeBfCaD81DB27DB87ed8319f5',
	isSender:  true,
	receiver:  '0x44EED7dE9A8bBF75e88afe4507D10767965CBef6',
	outputAddress:  'bc1qpz6zc3ve7jwfzzveeuv0qhh2536y4qfav07qx3',
	transactionHash:  '0x7e78ab376fd11926fdedf8f8cf5c9e91f5592d31d37b165638db6bdb1d1b0bb3',
};

{
	eventName:  'WITHDRAW',
	network:  'DAI',
	id:  '0x3626d9312d4900da7a1381c36b7bfad82f81516686f6500ef8305b9f824fcb17',
	secret:  '0x6ea6731d7ee4519794dbb2b02885af743725ca5270626664110d34f37f410508',
	hashLock:  '0x85ad0744375881b9962031fe5be3bf63a2fb132bf5755ee1c64142615a667934',
	tokenAddress:  '0x6b175474e89094c44da98b954eedeac495271d0f',
	sender:  '0x44EED7dE9A8bBF75e88afe4507D10767965CBef6',
	receiver:  '0xdd74dd2697206A910c42F9f5EF8c760A306483b8',
	transactionHash:  '0x1a1cfc5cb1cf6b09a3ccc61688c321c2429d22406c3dc1274d94ea5db1519bc2',
};

Get Past Events

const  type = 'new' || 'withdraw' || 'refund';
const  pastEvents = await  contract.getPastEvents(type, {
	new: {
		receiver:  filterAddress,
		sender:  filterAddress,
	},
	withdraw: {
		receiver:  filterAddress,
	},
	refund: {
		sender:  filterAddress,
	},
});

console.log(pastEvents);

New Contract

[
    {	 
		eventName:  'NEW_CONTRACT',
		network:  'DAI',
		inputAmount:  '30000000000000000000',
		outputNetwork:  'BTC',
		outputAmount:  429100,
		expiration:  1585971331,
		id:  '0xfce96561a13d0a1732e818af24a00af9da19ded340c61089cc7bc9c3fdb189df',
		hashLock:  '0x3ba1dc9d7e65a4fdcd0136771f85c8321e239bac772dbd5589f7dd481b2dd52c',
		tokenAddress:  '0x6b175474e89094c44da98b954eedeac495271d0f',
		sender:  '0x77C0fd531157050FeBfCaD81DB27DB87ed8319f5',
		isSender:  true,
		receiver:  '0x44EED7dE9A8bBF75e88afe4507D10767965CBef6',
		outputAddress:  'bc1qpz6zc3ve7jwfzzveeuv0qhh2536y4qfav07qx3',
		transactionHash:  '0x7e78ab376fd11926fdedf8f8cf5c9e91f5592d31d37b165638db6bdb1d1b0bb3',
	},
    ...
];

Withdraw

[
    {
    	eventName:  'WITHDRAW',
    	network:  'DAI',
    	id:  '0x3626d9312d4900da7a1381c36b7bfad82f81516686f6500ef8305b9f824fcb17',
    	secret:  '0x6ea6731d7ee4519794dbb2b02885af743725ca5270626664110d34f37f410508',
    	hashLock:  '0x85ad0744375881b9962031fe5be3bf63a2fb132bf5755ee1c64142615a667934',
    	tokenAddress:  '0x6b175474e89094c44da98b954eedeac495271d0f',
    	sender:  '0x44EED7dE9A8bBF75e88afe4507D10767965CBef6',
    	receiver:  '0xdd74dd2697206A910c42F9f5EF8c760A306483b8',
    	transactionHash:  '0x1a1cfc5cb1cf6b09a3ccc61688c321c2429d22406c3dc1274d94ea5db1519bc2',
    },
    ....
]
0.1.53

3 years ago

0.1.52

3 years ago

0.1.51

4 years ago

0.1.50

4 years ago

0.1.49

4 years ago

0.1.44

4 years ago

0.1.42

4 years ago

0.1.41

4 years ago

0.1.40

4 years ago

0.1.39

4 years ago

0.1.37

4 years ago

0.1.38

4 years ago

0.1.36

4 years ago

0.1.34

4 years ago

0.1.33

4 years ago

0.1.32

4 years ago

0.1.30

4 years ago

0.1.27

4 years ago

0.1.28

4 years ago

0.1.26

4 years ago

0.1.24

4 years ago

0.1.23

4 years ago

0.1.18

4 years ago

0.1.14

4 years ago

0.0.1

4 years ago