@nekoproject/swap
Version:
Cross-chain Swap Token
63 lines (57 loc) • 1.97 kB
text/typescript
// /* eslint-disable @typescript-eslint/no-explicit-any */
import { expect } from 'chai';
import 'mocha';
import { SPLNetworkInstance } from '@nekoproject/networks';
import { SPLWallet } from '@nekoproject/wallets';
import { SPLToken, TokenInfo } from '@nekoproject/tokens';
import * as splSwapDev from '../src';
import * as splSwapProduction from '../lib/index.commonjs';
//
let SPLSwap: any;
const env = process.env.NODE_ENV;
if (env === 'production') {
SPLSwap = splSwapProduction.SPLSwap;
} else {
SPLSwap = splSwapDev.SPLSwap;
}
describe(`SPL Swap on ${env} environment`, async () => {
// init instance
// SPLNetworkInstance.rpcUrl = 'https://solana-api.projectserum.com';
const swap = new SPLSwap(SPLNetworkInstance);
const mnemonic =
'vendor cactus design describe scare detect portion sad hammer tell celery penalty';
const wallet = await SPLWallet.fromMnemonic(mnemonic);
let swapRequest: any;
const usdcInfo: TokenInfo = {
decimals: 6,
mintAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
};
const usdtInfo: TokenInfo = {
decimals: 6,
mintAddress: 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB',
};
const usdcToken = new SPLToken(SPLNetworkInstance, usdcInfo);
const usdtToken = new SPLToken(SPLNetworkInstance, usdtInfo);
it('Create Swap Order', async () => {
const order = {
wallet_address: wallet.address,
slippage: 1,
srcAmount: '0.01',
srcToken: usdtToken,
destToken: usdcToken,
};
console.log('order: ', order);
swapRequest = await swap.createSwapOrder(order);
console.log('swap: ', swapRequest);
expect(swapRequest.id).to.be.a('string');
}).timeout(2000000);
it('Execute Swap', async () => {
swapRequest = {
...swapRequest,
slippage: 1,
};
const response = await swap.swapToken(swapRequest, wallet);
expect(response).to.be.a('string');
expect(response).to.have.length(64);
}).timeout(20000000);
});