@orca-so/sdk
Advanced tools
Comparing version 1.2.25 to 1.2.26
@@ -19,2 +19,14 @@ "use strict"; | ||
*/ | ||
function calculateFee(inputTradeAmount, feeNumerator, feeDenominator) { | ||
if (feeNumerator.eq(public_1.ZERO) || inputTradeAmount.eq(public_1.ZERO)) { | ||
return public_1.ZERO; | ||
} | ||
const fee = inputTradeAmount.mul(feeNumerator).div(feeDenominator); | ||
// minimum fee of one token | ||
return fee.eq(public_1.ZERO) ? public_1.ONE : fee; | ||
} | ||
function getInputAmountLessFees(inputTradeAmount, params) { | ||
const fees = getLPFees(inputTradeAmount, params); | ||
return fees.gt(inputTradeAmount) ? new spl_token_1.u64(0) : inputTradeAmount.sub(fees); | ||
} | ||
function getRate(inputTradeAmountU64, params) { | ||
@@ -35,2 +47,7 @@ if (inputTradeAmountU64.eq(public_1.ZERO)) { | ||
const outputCountU64 = getExpectedOutputAmount(inputTradeAmount, params); | ||
if (noSlippageOutputCountU64.isZero()) { | ||
// The minimum fee of one token makes inputTradeLessFees zero when the input is minimal, | ||
// and the output is also zero. | ||
return new decimal_js_1.default(0); | ||
} | ||
const noSlippageOutputCount = public_1.DecimalUtil.fromU64(noSlippageOutputCountU64, params.outputToken.scale); | ||
@@ -43,12 +60,8 @@ const outputCount = public_1.DecimalUtil.fromU64(outputCountU64, params.outputToken.scale); | ||
const { feeStructure } = params; | ||
const tradingFee = inputTradeAmount | ||
.mul(feeStructure.traderFee.numerator) | ||
.div(feeStructure.traderFee.denominator); | ||
const ownerFee = inputTradeAmount | ||
.mul(feeStructure.ownerFee.numerator) | ||
.div(feeStructure.ownerFee.denominator); | ||
const tradingFee = calculateFee(inputTradeAmount, feeStructure.traderFee.numerator, feeStructure.traderFee.denominator); | ||
const ownerFee = calculateFee(inputTradeAmount, feeStructure.ownerFee.numerator, feeStructure.ownerFee.denominator); | ||
return new spl_token_1.u64(tradingFee.add(ownerFee).toString()); | ||
} | ||
function getExpectedOutputAmount(inputTradeAmount, params) { | ||
const inputTradeLessFees = inputTradeAmount.sub(getLPFees(inputTradeAmount, params)); | ||
const inputTradeLessFees = getInputAmountLessFees(inputTradeAmount, params); | ||
return getOutputAmount(inputTradeLessFees, params); | ||
@@ -60,3 +73,3 @@ } | ||
} | ||
const inputTradeLessFees = inputTradeAmount.sub(getLPFees(inputTradeAmount, params)); | ||
const inputTradeLessFees = getInputAmountLessFees(inputTradeAmount, params); | ||
return inputTradeLessFees.mul(params.outputTokenCount).div(params.inputTokenCount); | ||
@@ -63,0 +76,0 @@ } |
@@ -12,4 +12,13 @@ "use strict"; | ||
const tokens_1 = require("../../constants/tokens"); | ||
function calculateFee(inputTradeAmount, feeNumerator, feeDenominator) { | ||
if (feeNumerator.eq(public_1.ZERO) || inputTradeAmount.eq(public_1.ZERO)) { | ||
return public_1.ZERO; | ||
} | ||
const fee = inputTradeAmount.mul(feeNumerator).div(feeDenominator); | ||
// minimum fee of one token | ||
return fee.eq(public_1.ZERO) ? public_1.ONE : fee; | ||
} | ||
function getInputAmountLessFees(inputTradeAmount, params) { | ||
return inputTradeAmount.sub(getLPFees(inputTradeAmount, params)); | ||
const fees = getLPFees(inputTradeAmount, params); | ||
return fees.gt(inputTradeAmount) ? new spl_token_1.u64(0) : inputTradeAmount.sub(fees); | ||
} | ||
@@ -57,2 +66,7 @@ function getOutputAmountWithNoSlippage(inputTradeAmountLessFees, params) { | ||
const outputCountU64 = getExpectedOutputAmount(inputTradeAmount, params); | ||
if (noSlippageOutputCountU64.isZero()) { | ||
// The minimum fee of one token makes inputTradeLessFees zero when the input is minimal, | ||
// and the output is also zero. | ||
return new decimal_js_1.default(0); | ||
} | ||
const noSlippageOutputCount = public_1.DecimalUtil.fromU64(noSlippageOutputCountU64, params.outputToken.scale); | ||
@@ -65,12 +79,4 @@ const outputCount = public_1.DecimalUtil.fromU64(outputCountU64, params.outputToken.scale); | ||
const { feeStructure } = params; | ||
const tradingFee = feeStructure.traderFee.numerator === public_1.ZERO | ||
? public_1.ZERO | ||
: inputTradeAmount | ||
.mul(feeStructure.traderFee.numerator) | ||
.div(feeStructure.traderFee.denominator); | ||
const ownerFee = feeStructure.ownerFee.numerator === public_1.ZERO | ||
? public_1.ZERO | ||
: inputTradeAmount | ||
.mul(feeStructure.ownerFee.numerator) | ||
.div(feeStructure.ownerFee.denominator); | ||
const tradingFee = calculateFee(inputTradeAmount, feeStructure.traderFee.numerator, feeStructure.traderFee.denominator); | ||
const ownerFee = calculateFee(inputTradeAmount, feeStructure.ownerFee.numerator, feeStructure.ownerFee.denominator); | ||
return new spl_token_1.u64(tradingFee.add(ownerFee).toString()); | ||
@@ -77,0 +83,0 @@ } |
{ | ||
"name": "@orca-so/sdk", | ||
"version": "1.2.25", | ||
"version": "1.2.26", | ||
"description": "Typescript SDK for the Orca protocol.", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
@@ -0,7 +1,19 @@ | ||
⚠️ **WARNING: DEPRECATED TYPESCRIPT SDK** ⚠️ | ||
This Typescript SDK is for the **legacy pools** which are **deprecated**. We highly recommend you to use the **Whirlpools SDK** for the new and improved pools. You can find it here: | ||
🌊 [Whirlpools SDK on npmjs](https://www.npmjs.com/package/@orca-so/whirlpools-sdk) 🌊 | ||
Please update your implementations to avoid any issues or disruptions in the future. | ||
# Orca Typescript SDK | ||
The Orca SDK contains a set of simple to use APIs to allow developers to integrate with the Orca exchange platform. | ||
The Orca SDK contains a set of simple to use APIs to allow developers to integrate with the Orca platform. | ||
Learn more Orca [here](https://docs.orca.so). | ||
### Orca Token Swap V2 | ||
- The [Orca Token Swap V2 program](https://solscan.io/account/9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP) uses the following commit hash of the SPL Token Swap program: [3613cea3](https://github.com/solana-labs/solana-program-library/tree/3613cea3cabbb5f7e4445d6203b7292d413732da/token-swap) | ||
### Trading Orca Liquidity Pools | ||
@@ -160,2 +172,3 @@ | ||
The example code above can be run on devnet by updating the import statement: | ||
```typescript | ||
@@ -162,0 +175,0 @@ import { getOrca, OrcaFarmConfig, OrcaPoolConfig, Network } from "@orca-so/sdk"; |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Deprecated
MaintenanceThe maintainer of the package marked it as deprecated. This could indicate that a single version should not be used, or that the package is no longer maintained and any new vulnerabilities will not be fixed.
Found 1 instance in 1 package
9100
0
214
561451
113