UNPKG

@cks-systems/manifest-sdk

Version:
38 lines (37 loc) 2 kB
import { Connection, Keypair } from '@solana/web3.js'; import { OrderType } from '../src/manifest/types'; import { createMarket } from './createMarket'; import { deposit } from './deposit'; import { Market } from '../src/market'; import { assert } from 'chai'; import { placeOrder } from './placeOrder'; async function testReverse() { const connection = new Connection('http://127.0.0.1:8899', 'confirmed'); const payerKeypair = Keypair.generate(); const marketAddress = await createMarket(connection, payerKeypair); const market = await Market.loadFromAddress({ connection, address: marketAddress, }); // Deposit base and quote. await deposit(connection, payerKeypair, marketAddress, market.baseMint(), 10); await deposit(connection, payerKeypair, marketAddress, market.quoteMint(), 10); const spreadBps = 2_000; await placeOrder(connection, payerKeypair, marketAddress, 5, 5, false, OrderType.Reverse, 0, 0, spreadBps); // Bid 1@6, should fill and result in a new order on the book. await placeOrder(connection, payerKeypair, marketAddress, 1, 6, true, OrderType.Limit, 1); await market.reload(connection); market.prettyPrint(); // Asks are sorted worst to best. assert(market.asks().length == 1, 'place asks did not work'); assert(Number(market.asks()[0].numBaseTokens) == 4, `ask top of book wrong size expected ${4} actual ${Number(market.asks()[0].numBaseTokens)}`); assert(market.asks()[0].tokenPrice == 5, `ask top of book wrong price ${market.asks()[0].tokenPrice}`); assert(market.bids().length == 1, 'place bids did not work'); assert(market.bids()[0].tokenPrice == 4, `bid top of book wrong price ${market.bids()[0].tokenPrice}`); assert(Number(market.bids()[0].numBaseTokens) == 1.25, `bids top of book wrong size expected ${1.25} actual ${Number(market.bids()[0].numBaseTokens)}`); } describe('Reverse test', () => { it('Reverse', async () => { await testReverse(); }); });