orca-so / typescript-sdk

The Orca SDK contains a set of simple to use APIs to allow developers to integrate with the Orca platform.
155 stars 49 forks source link

Support stable pools #37

Closed atulbipin closed 3 years ago

atulbipin commented 3 years ago

What's in the PR:

Note: Code used to test the swap is as follows:

export async function getConnection(
  url: string = "https://orca.rpcpool.com/"
): Promise<Connection> {
  const connection = new Connection(url, "singleGossip");
  const version = await connection.getVersion();

  console.log("Connection to cluster established:", url, version);
  return connection;
}

export async function swap(wallet: Wallet | null): Promise<void> {
  if (!wallet) {
    throw new Error("wallet was null");
  }

  const connection = await getConnection();
  const orca = getOrca(connection);

  try {
    const pool = orca.getPool(OrcaPoolConfig.USDC_USDT);
    const token = pool.getTokenA();
    const tradeValue = new Decimal(2);
    const quote = await pool.getQuote(token, tradeValue, new Decimal(2));

    const swapInstructions = await pool.swap(
      wallet.publicKey(),
      token,
      tradeValue,
      quote.getMinOutputAmount()
    );
    swapInstructions.transaction.partialSign(...swapInstructions.signers);
    const signedTransaction = await wallet.signTransaction(
      swapInstructions.transaction
    );
    await sendAndConfirm(connection, signedTransaction)();
  } catch (err) {
    console.error(err);
  }
}