UNPKG

@cryptoscan/orca-sdk

Version:

The fastest and easiest way to trade on Orca.

108 lines (107 loc) 3.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.OrcaApi = void 0; const swap_sdk_1 = require("@cryptoscan/swap-sdk"); const scanner_sdk_1 = require("@cryptoscan/scanner-sdk"); const web3_js_1 = require("@solana/web3.js"); const solana_wallet_sdk_1 = require("@cryptoscan/solana-wallet-sdk"); class OrcaApi { params = { buySlippage: 1, sellSlippage: 10, bumpSlippage: 10, buyFee: 0.00005, sellFee: 0.00005, transferFee: 0.00005, connection: new web3_js_1.Connection('https://api.mainnet-beta.solana.com/'), }; constructor(params) { if (params) { this.params = { ...this.params, ...params, }; } } async buy(_params) { const params = { ..._params, type: 'swap', network: 'solana', amount: _params.sol, wallet: _params.payerWallet || _params.wallet, from: 'So11111111111111111111111111111111111111112', to: _params.coinAddress, fee: _params.fee || this.params.buyFee, slippage: _params.slippage || this.params.buySlippage, connection: this.params.connection, }; return (0, swap_sdk_1.swap)(params); } async sell(_params) { let sol = _params.sol; let amount; if (!_params.sol) { const balance = await (0, solana_wallet_sdk_1.getBalance)(_params.wallet.publicKey.toString(), _params.coinAddress); amount = balance; } if (!amount) { amount = await (0, scanner_sdk_1.getRate)({ network: 'solana', from: 'So11111111111111111111111111111111111111112', to: _params.coinAddress, amount: sol, }).then((r) => r?.amount); } if (!amount) { throw new Error('Failed to get price'); } const params = { ..._params, type: 'swap', network: 'solana', amount, wallet: _params.payerWallet || _params.wallet, from: _params.coinAddress, to: 'So11111111111111111111111111111111111111112', fee: _params.fee || this.params.sellFee, slippage: _params.slippage || this.params.sellSlippage, connection: this.params.connection, }; return (0, swap_sdk_1.swap)(params); } async transfer(_params) { let amount = _params.sol; if (!_params.sol) { amount = await (0, solana_wallet_sdk_1.getBalance)(_params.walletFrom.publicKey.toString()); } if (!!_params.coinAddress || _params.coinAddress?.toLowerCase() === 'so11111111111111111111111111111111111111112') { amount = await (0, scanner_sdk_1.getRate)({ network: 'solana', from: 'So11111111111111111111111111111111111111112', to: _params.coinAddress, amount, }).then((r) => r?.amount); if (!amount) { throw new Error('Failed to get price'); } } const params = { ..._params, type: 'transfer', network: 'solana', wallet: _params.payerWallet || _params.walletFrom, coinAddress: _params.coinAddress || 'So11111111111111111111111111111111111111112', from: _params.walletFrom.publicKey.toString(), to: _params.walletTo.publicKey.toString(), amount: amount, fee: _params.fee || this.params.transferFee, connection: this.params.connection, }; return (0, swap_sdk_1.swap)(params); } async listenTransactions(address, onTransaction) { throw new Error('is not implemented'); } } exports.OrcaApi = OrcaApi;