Go to file
Gary Wang 9b7e39c8fe Add method for retrieving fills 2020-08-13 12:46:09 -07:00
src Add method for retrieving fills 2020-08-13 12:46:09 -07:00
.editorconfig Initial commit 2020-08-06 10:17:24 -07:00
.eslintignore Initial commit 2020-08-06 10:17:24 -07:00
.eslintrc Add some types and fix some bugs 2020-08-13 10:12:14 -07:00
.gitignore Fix cjs build 2020-08-09 20:31:54 -07:00
.travis.yml Initial commit 2020-08-06 10:17:24 -07:00
README.md Add method for retrieving fills 2020-08-13 12:46:09 -07:00
jest.config.js Switch to tsc for transpilation 2020-08-13 07:29:12 -07:00
package.json Add method for retrieving fills 2020-08-13 12:46:09 -07:00
tsconfig.json Switch to tsc for transpilation 2020-08-13 07:29:12 -07:00
yarn.lock Add some types and fix some bugs 2020-08-13 10:12:14 -07:00

README.md

npm (scoped) Build Status

Serum JS Client Library

WIP

yarn add @project-serum/serum

import { Account, Connection, PublicKey } from '@solana/web3.js';
import { Market } from '@project-serum/serum';

let connection = new Connection('https://testnet.solana.com');
let marketAddress = new PublicKey('...');
let market = await Market.load(connection, marketAddress);
let bids = await market.loadBids(connection);
let asks = await market.loadAsks(connection);
for (let [price, size] of bids.getL2(20)) {
  console.log(price, size);
}
for (let order of asks) {
  console.log(
    order.orderId,
    order.owner.toBase58(),
    order.price,
    order.size,
    order.side,
  );
}

let owner = new Account('...');
let payer = new PublicKey('...');
await market.placeOrder(connection, {
  owner,
  payer,
  side: 'buy', // 'buy' or 'sell'
  price: 123.45,
  size: 17.0,
  orderType: 'limit', // 'limit', 'ioc', 'postOnly'
});

for (let order of await market.loadBids(connection)) {
  if (order.owner.equals(owner.publicKey)) {
    await market.cancelOrder(connection, owner, order);
  }
}

for (let fill of await market.loadFills(connection)) {
  console.log(
    fill.orderId,
    fill.owner.toBase58(),
    fill.price,
    fill.size,
    fill.side,
  );
}