@meteora-ag/cp-amm-sdk 1.0.1-rc.12 → 1.0.1-rc.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +171 -31
- package/dist/index.d.ts +171 -31
- package/dist/index.js +291 -244
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +320 -273
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -22,12 +22,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
22
22
|
|
|
23
23
|
// src/CpAmm.ts
|
|
24
24
|
import { Program } from "@coral-xyz/anchor";
|
|
25
|
-
import {
|
|
26
|
-
NATIVE_MINT as NATIVE_MINT2,
|
|
27
|
-
TOKEN_2022_PROGRAM_ID as TOKEN_2022_PROGRAM_ID2
|
|
28
|
-
} from "@solana/spl-token";
|
|
25
|
+
import { NATIVE_MINT as NATIVE_MINT2, TOKEN_2022_PROGRAM_ID as TOKEN_2022_PROGRAM_ID2 } from "@solana/spl-token";
|
|
29
26
|
import invariant from "invariant";
|
|
30
|
-
import Decimal3 from "decimal.js";
|
|
31
27
|
|
|
32
28
|
// src/idl/cp_amm.json
|
|
33
29
|
var cp_amm_default = {
|
|
@@ -6288,71 +6284,7 @@ function deriveEventAuthority(programId) {
|
|
|
6288
6284
|
);
|
|
6289
6285
|
}
|
|
6290
6286
|
|
|
6291
|
-
// src/
|
|
6292
|
-
import { BN as BN2 } from "@coral-xyz/anchor";
|
|
6293
|
-
import Decimal from "decimal.js";
|
|
6294
|
-
|
|
6295
|
-
// src/types.ts
|
|
6296
|
-
var Rounding = /* @__PURE__ */ ((Rounding2) => {
|
|
6297
|
-
Rounding2[Rounding2["Up"] = 0] = "Up";
|
|
6298
|
-
Rounding2[Rounding2["Down"] = 1] = "Down";
|
|
6299
|
-
return Rounding2;
|
|
6300
|
-
})(Rounding || {});
|
|
6301
|
-
var ActivationPoint = /* @__PURE__ */ ((ActivationPoint2) => {
|
|
6302
|
-
ActivationPoint2[ActivationPoint2["Timestamp"] = 0] = "Timestamp";
|
|
6303
|
-
ActivationPoint2[ActivationPoint2["Slot"] = 1] = "Slot";
|
|
6304
|
-
return ActivationPoint2;
|
|
6305
|
-
})(ActivationPoint || {});
|
|
6306
|
-
var FeeSchedulerMode = /* @__PURE__ */ ((FeeSchedulerMode2) => {
|
|
6307
|
-
FeeSchedulerMode2[FeeSchedulerMode2["Linear"] = 0] = "Linear";
|
|
6308
|
-
FeeSchedulerMode2[FeeSchedulerMode2["Exponential"] = 1] = "Exponential";
|
|
6309
|
-
return FeeSchedulerMode2;
|
|
6310
|
-
})(FeeSchedulerMode || {});
|
|
6311
|
-
var CollectFeeMode = /* @__PURE__ */ ((CollectFeeMode2) => {
|
|
6312
|
-
CollectFeeMode2[CollectFeeMode2["BothToken"] = 0] = "BothToken";
|
|
6313
|
-
CollectFeeMode2[CollectFeeMode2["OnlyB"] = 1] = "OnlyB";
|
|
6314
|
-
return CollectFeeMode2;
|
|
6315
|
-
})(CollectFeeMode || {});
|
|
6316
|
-
var TradeDirection = /* @__PURE__ */ ((TradeDirection2) => {
|
|
6317
|
-
TradeDirection2[TradeDirection2["AtoB"] = 0] = "AtoB";
|
|
6318
|
-
TradeDirection2[TradeDirection2["BtoA"] = 1] = "BtoA";
|
|
6319
|
-
return TradeDirection2;
|
|
6320
|
-
})(TradeDirection || {});
|
|
6321
|
-
var ActivationType = /* @__PURE__ */ ((ActivationType2) => {
|
|
6322
|
-
ActivationType2[ActivationType2["Slot"] = 0] = "Slot";
|
|
6323
|
-
ActivationType2[ActivationType2["Timestamp"] = 1] = "Timestamp";
|
|
6324
|
-
return ActivationType2;
|
|
6325
|
-
})(ActivationType || {});
|
|
6326
|
-
|
|
6327
|
-
// src/math/index.ts
|
|
6328
|
-
function shlDiv(x, y, offset, rounding) {
|
|
6329
|
-
const scale = new BN2(1).shln(offset);
|
|
6330
|
-
return mulDiv(x, scale, y, rounding);
|
|
6331
|
-
}
|
|
6332
|
-
function mulDiv(x, y, denominator, rounding) {
|
|
6333
|
-
const { div, mod } = x.mul(y).divmod(denominator);
|
|
6334
|
-
if (rounding == 0 /* Up */ && !mod.isZero()) {
|
|
6335
|
-
return div.add(new BN2(1));
|
|
6336
|
-
}
|
|
6337
|
-
return div;
|
|
6338
|
-
}
|
|
6339
|
-
function divCeil(a, b) {
|
|
6340
|
-
if (a.isZero()) {
|
|
6341
|
-
return new BN2(0);
|
|
6342
|
-
}
|
|
6343
|
-
return a.add(b.sub(new BN2(1))).div(b);
|
|
6344
|
-
}
|
|
6345
|
-
function decimalToQ64(num) {
|
|
6346
|
-
return new BN2(num.mul(Decimal.pow(2, 64)).floor().toFixed());
|
|
6347
|
-
}
|
|
6348
|
-
function priceToSqrtPrice(initPrice, tokenADecimal, tokenBDecimal) {
|
|
6349
|
-
const sqrtPriceQ64 = decimalToQ64(
|
|
6350
|
-
initPrice.mul(Decimal.pow(10, tokenBDecimal - tokenADecimal)).sqrt()
|
|
6351
|
-
);
|
|
6352
|
-
return sqrtPriceQ64;
|
|
6353
|
-
}
|
|
6354
|
-
|
|
6355
|
-
// src/utils/token.ts
|
|
6287
|
+
// src/helpers/token.ts
|
|
6356
6288
|
import {
|
|
6357
6289
|
createAssociatedTokenAccountIdempotentInstruction,
|
|
6358
6290
|
createCloseAccountInstruction,
|
|
@@ -6451,14 +6383,46 @@ function getNftOwner(connection, nftMint) {
|
|
|
6451
6383
|
});
|
|
6452
6384
|
}
|
|
6453
6385
|
|
|
6454
|
-
// src/
|
|
6455
|
-
import { BN as
|
|
6386
|
+
// src/helpers/fee.ts
|
|
6387
|
+
import { BN as BN5 } from "@coral-xyz/anchor";
|
|
6388
|
+
|
|
6389
|
+
// src/types.ts
|
|
6390
|
+
var Rounding = /* @__PURE__ */ ((Rounding2) => {
|
|
6391
|
+
Rounding2[Rounding2["Up"] = 0] = "Up";
|
|
6392
|
+
Rounding2[Rounding2["Down"] = 1] = "Down";
|
|
6393
|
+
return Rounding2;
|
|
6394
|
+
})(Rounding || {});
|
|
6395
|
+
var ActivationPoint = /* @__PURE__ */ ((ActivationPoint2) => {
|
|
6396
|
+
ActivationPoint2[ActivationPoint2["Timestamp"] = 0] = "Timestamp";
|
|
6397
|
+
ActivationPoint2[ActivationPoint2["Slot"] = 1] = "Slot";
|
|
6398
|
+
return ActivationPoint2;
|
|
6399
|
+
})(ActivationPoint || {});
|
|
6400
|
+
var FeeSchedulerMode = /* @__PURE__ */ ((FeeSchedulerMode2) => {
|
|
6401
|
+
FeeSchedulerMode2[FeeSchedulerMode2["Linear"] = 0] = "Linear";
|
|
6402
|
+
FeeSchedulerMode2[FeeSchedulerMode2["Exponential"] = 1] = "Exponential";
|
|
6403
|
+
return FeeSchedulerMode2;
|
|
6404
|
+
})(FeeSchedulerMode || {});
|
|
6405
|
+
var CollectFeeMode = /* @__PURE__ */ ((CollectFeeMode3) => {
|
|
6406
|
+
CollectFeeMode3[CollectFeeMode3["BothToken"] = 0] = "BothToken";
|
|
6407
|
+
CollectFeeMode3[CollectFeeMode3["OnlyB"] = 1] = "OnlyB";
|
|
6408
|
+
return CollectFeeMode3;
|
|
6409
|
+
})(CollectFeeMode || {});
|
|
6410
|
+
var TradeDirection = /* @__PURE__ */ ((TradeDirection3) => {
|
|
6411
|
+
TradeDirection3[TradeDirection3["AtoB"] = 0] = "AtoB";
|
|
6412
|
+
TradeDirection3[TradeDirection3["BtoA"] = 1] = "BtoA";
|
|
6413
|
+
return TradeDirection3;
|
|
6414
|
+
})(TradeDirection || {});
|
|
6415
|
+
var ActivationType = /* @__PURE__ */ ((ActivationType2) => {
|
|
6416
|
+
ActivationType2[ActivationType2["Slot"] = 0] = "Slot";
|
|
6417
|
+
ActivationType2[ActivationType2["Timestamp"] = 1] = "Timestamp";
|
|
6418
|
+
return ActivationType2;
|
|
6419
|
+
})(ActivationType || {});
|
|
6456
6420
|
|
|
6457
6421
|
// src/math/feeMath.ts
|
|
6458
|
-
import { BN as
|
|
6459
|
-
var MAX_EXPONENTIAL = new
|
|
6460
|
-
var ONE = new
|
|
6461
|
-
var MAX = new
|
|
6422
|
+
import { BN as BN2 } from "@coral-xyz/anchor";
|
|
6423
|
+
var MAX_EXPONENTIAL = new BN2(524288);
|
|
6424
|
+
var ONE = new BN2(1).shln(SCALE_OFFSET);
|
|
6425
|
+
var MAX = new BN2(2).pow(new BN2(128)).sub(new BN2(1));
|
|
6462
6426
|
function pow(base, exp) {
|
|
6463
6427
|
let invert = exp.isNeg();
|
|
6464
6428
|
if (exp.isZero()) {
|
|
@@ -6466,7 +6430,7 @@ function pow(base, exp) {
|
|
|
6466
6430
|
}
|
|
6467
6431
|
exp = invert ? exp.abs() : exp;
|
|
6468
6432
|
if (exp.gt(MAX_EXPONENTIAL)) {
|
|
6469
|
-
return new
|
|
6433
|
+
return new BN2(0);
|
|
6470
6434
|
}
|
|
6471
6435
|
let squaredBase = base;
|
|
6472
6436
|
let result = ONE;
|
|
@@ -6474,83 +6438,83 @@ function pow(base, exp) {
|
|
|
6474
6438
|
squaredBase = MAX.div(squaredBase);
|
|
6475
6439
|
invert = !invert;
|
|
6476
6440
|
}
|
|
6477
|
-
if (!exp.and(new
|
|
6441
|
+
if (!exp.and(new BN2(1)).isZero()) {
|
|
6478
6442
|
result = result.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6479
6443
|
}
|
|
6480
6444
|
squaredBase = squaredBase.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6481
|
-
if (!exp.and(new
|
|
6445
|
+
if (!exp.and(new BN2(2)).isZero()) {
|
|
6482
6446
|
result = result.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6483
6447
|
}
|
|
6484
6448
|
squaredBase = squaredBase.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6485
|
-
if (!exp.and(new
|
|
6449
|
+
if (!exp.and(new BN2(4)).isZero()) {
|
|
6486
6450
|
result = result.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6487
6451
|
}
|
|
6488
6452
|
squaredBase = squaredBase.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6489
|
-
if (!exp.and(new
|
|
6453
|
+
if (!exp.and(new BN2(8)).isZero()) {
|
|
6490
6454
|
result = result.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6491
6455
|
}
|
|
6492
6456
|
squaredBase = squaredBase.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6493
|
-
if (!exp.and(new
|
|
6457
|
+
if (!exp.and(new BN2(16)).isZero()) {
|
|
6494
6458
|
result = result.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6495
6459
|
}
|
|
6496
6460
|
squaredBase = squaredBase.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6497
|
-
if (!exp.and(new
|
|
6461
|
+
if (!exp.and(new BN2(32)).isZero()) {
|
|
6498
6462
|
result = result.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6499
6463
|
}
|
|
6500
6464
|
squaredBase = squaredBase.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6501
|
-
if (!exp.and(new
|
|
6465
|
+
if (!exp.and(new BN2(64)).isZero()) {
|
|
6502
6466
|
result = result.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6503
6467
|
}
|
|
6504
6468
|
squaredBase = squaredBase.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6505
|
-
if (!exp.and(new
|
|
6469
|
+
if (!exp.and(new BN2(128)).isZero()) {
|
|
6506
6470
|
result = result.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6507
6471
|
}
|
|
6508
6472
|
squaredBase = squaredBase.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6509
|
-
if (!exp.and(new
|
|
6473
|
+
if (!exp.and(new BN2(256)).isZero()) {
|
|
6510
6474
|
result = result.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6511
6475
|
}
|
|
6512
6476
|
squaredBase = squaredBase.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6513
|
-
if (!exp.and(new
|
|
6477
|
+
if (!exp.and(new BN2(512)).isZero()) {
|
|
6514
6478
|
result = result.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6515
6479
|
}
|
|
6516
6480
|
squaredBase = squaredBase.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6517
|
-
if (!exp.and(new
|
|
6481
|
+
if (!exp.and(new BN2(1024)).isZero()) {
|
|
6518
6482
|
result = result.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6519
6483
|
}
|
|
6520
6484
|
squaredBase = squaredBase.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6521
|
-
if (!exp.and(new
|
|
6485
|
+
if (!exp.and(new BN2(2048)).isZero()) {
|
|
6522
6486
|
result = result.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6523
6487
|
}
|
|
6524
6488
|
squaredBase = squaredBase.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6525
|
-
if (!exp.and(new
|
|
6489
|
+
if (!exp.and(new BN2(4096)).isZero()) {
|
|
6526
6490
|
result = result.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6527
6491
|
}
|
|
6528
6492
|
squaredBase = squaredBase.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6529
|
-
if (!exp.and(new
|
|
6493
|
+
if (!exp.and(new BN2(8192)).isZero()) {
|
|
6530
6494
|
result = result.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6531
6495
|
}
|
|
6532
6496
|
squaredBase = squaredBase.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6533
|
-
if (!exp.and(new
|
|
6497
|
+
if (!exp.and(new BN2(16384)).isZero()) {
|
|
6534
6498
|
result = result.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6535
6499
|
}
|
|
6536
6500
|
squaredBase = squaredBase.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6537
|
-
if (!exp.and(new
|
|
6501
|
+
if (!exp.and(new BN2(32768)).isZero()) {
|
|
6538
6502
|
result = result.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6539
6503
|
}
|
|
6540
6504
|
squaredBase = squaredBase.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6541
|
-
if (!exp.and(new
|
|
6505
|
+
if (!exp.and(new BN2(65536)).isZero()) {
|
|
6542
6506
|
result = result.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6543
6507
|
}
|
|
6544
6508
|
squaredBase = squaredBase.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6545
|
-
if (!exp.and(new
|
|
6509
|
+
if (!exp.and(new BN2(131072)).isZero()) {
|
|
6546
6510
|
result = result.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6547
6511
|
}
|
|
6548
6512
|
squaredBase = squaredBase.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6549
|
-
if (!exp.and(new
|
|
6513
|
+
if (!exp.and(new BN2(262144)).isZero()) {
|
|
6550
6514
|
result = result.mul(squaredBase).shrn(SCALE_OFFSET);
|
|
6551
6515
|
}
|
|
6552
6516
|
if (result.isZero()) {
|
|
6553
|
-
return new
|
|
6517
|
+
return new BN2(0);
|
|
6554
6518
|
}
|
|
6555
6519
|
if (invert) {
|
|
6556
6520
|
result = MAX.div(result);
|
|
@@ -6558,52 +6522,33 @@ function pow(base, exp) {
|
|
|
6558
6522
|
return result;
|
|
6559
6523
|
}
|
|
6560
6524
|
|
|
6561
|
-
// src/
|
|
6562
|
-
|
|
6563
|
-
|
|
6564
|
-
|
|
6565
|
-
|
|
6566
|
-
|
|
6567
|
-
const bps = reductionFactor.shln(SCALE_OFFSET).div(new BN4(BASIS_POINT_MAX));
|
|
6568
|
-
const base = ONE.sub(bps);
|
|
6569
|
-
const result = pow(base, period);
|
|
6570
|
-
feeNumerator = cliffFeeNumerator.mul(result).shrn(SCALE_OFFSET);
|
|
6571
|
-
}
|
|
6572
|
-
return feeNumerator;
|
|
6573
|
-
}
|
|
6574
|
-
function getDynamicFeeNumerator(volatilityAccumulator, binStep, variableFeeControl) {
|
|
6575
|
-
const squareVfaBin = volatilityAccumulator.mul(binStep).pow(new BN4(2));
|
|
6576
|
-
const vFee = squareVfaBin.mul(variableFeeControl);
|
|
6577
|
-
return vFee.addn(99999999999).divn(1e11);
|
|
6525
|
+
// src/math/index.ts
|
|
6526
|
+
import { BN as BN3 } from "@coral-xyz/anchor";
|
|
6527
|
+
import Decimal from "decimal.js";
|
|
6528
|
+
function shlDiv(x, y, offset, rounding) {
|
|
6529
|
+
const scale = new BN3(1).shln(offset);
|
|
6530
|
+
return mulDiv(x, scale, y, rounding);
|
|
6578
6531
|
}
|
|
6579
|
-
function
|
|
6580
|
-
|
|
6581
|
-
|
|
6532
|
+
function mulDiv(x, y, denominator, rounding) {
|
|
6533
|
+
const { div, mod } = x.mul(y).divmod(denominator);
|
|
6534
|
+
if (rounding == 0 /* Up */ && !mod.isZero()) {
|
|
6535
|
+
return div.add(new BN3(1));
|
|
6582
6536
|
}
|
|
6583
|
-
|
|
6584
|
-
|
|
6585
|
-
|
|
6586
|
-
)
|
|
6587
|
-
|
|
6588
|
-
feeSchedulerMode,
|
|
6589
|
-
cliffFeeNumerator,
|
|
6590
|
-
period,
|
|
6591
|
-
reductionFactor
|
|
6592
|
-
);
|
|
6593
|
-
if (dynamicFeeParams) {
|
|
6594
|
-
const { volatilityAccumulator, binStep, variableFeeControl } = dynamicFeeParams;
|
|
6595
|
-
const dynamicFeeNumberator = getDynamicFeeNumerator(
|
|
6596
|
-
volatilityAccumulator,
|
|
6597
|
-
binStep,
|
|
6598
|
-
variableFeeControl
|
|
6599
|
-
);
|
|
6600
|
-
feeNumerator.add(dynamicFeeNumberator);
|
|
6537
|
+
return div;
|
|
6538
|
+
}
|
|
6539
|
+
function divCeil(a, b) {
|
|
6540
|
+
if (a.isZero()) {
|
|
6541
|
+
return new BN3(0);
|
|
6601
6542
|
}
|
|
6602
|
-
return
|
|
6543
|
+
return a.add(b.sub(new BN3(1))).div(b);
|
|
6544
|
+
}
|
|
6545
|
+
function getInitPriceQ64(tokenAAmount, tokenBAmount) {
|
|
6546
|
+
const sqrtInitPrice = new Decimal(tokenBAmount.toString()).div(new Decimal(tokenAAmount.toString())).sqrt();
|
|
6547
|
+
return new BN3(sqrtInitPrice.mul(Decimal.pow(2, 64)).floor().toFixed());
|
|
6603
6548
|
}
|
|
6604
6549
|
|
|
6605
|
-
// src/
|
|
6606
|
-
import { BN as
|
|
6550
|
+
// src/helpers/curve.ts
|
|
6551
|
+
import { BN as BN4 } from "@coral-xyz/anchor";
|
|
6607
6552
|
function getNextSqrtPrice(amount, sqrtPrice, liquidity, aToB) {
|
|
6608
6553
|
let result;
|
|
6609
6554
|
if (aToB) {
|
|
@@ -6628,99 +6573,13 @@ function getDeltaAmountB(lowerSqrtPrice, upperSqrtPrice, liquidity, rounding) {
|
|
|
6628
6573
|
const prod = liquidity.mul(deltaSqrtPrice);
|
|
6629
6574
|
let result;
|
|
6630
6575
|
if (rounding == 0 /* Up */) {
|
|
6631
|
-
const denominator = new
|
|
6576
|
+
const denominator = new BN4(1).shln(SCALE_OFFSET * 2);
|
|
6632
6577
|
result = divCeil(prod, denominator);
|
|
6633
6578
|
} else {
|
|
6634
6579
|
result = prod.shrn(SCALE_OFFSET * 2);
|
|
6635
6580
|
}
|
|
6636
6581
|
return result;
|
|
6637
6582
|
}
|
|
6638
|
-
function calculateSwap(inAmount, sqrtPrice, liquidity, tradeFeeNumerator, aToB, collectFeeMode) {
|
|
6639
|
-
let outAmount;
|
|
6640
|
-
let lpFee;
|
|
6641
|
-
if (collectFeeMode === 0 /* BothToken */) {
|
|
6642
|
-
if (aToB) {
|
|
6643
|
-
const nextSqrtPrice = getNextSqrtPrice(
|
|
6644
|
-
inAmount,
|
|
6645
|
-
sqrtPrice,
|
|
6646
|
-
liquidity,
|
|
6647
|
-
true
|
|
6648
|
-
);
|
|
6649
|
-
outAmount = getDeltaAmountB(
|
|
6650
|
-
nextSqrtPrice,
|
|
6651
|
-
sqrtPrice,
|
|
6652
|
-
liquidity,
|
|
6653
|
-
1 /* Down */
|
|
6654
|
-
);
|
|
6655
|
-
lpFee = mulDiv(
|
|
6656
|
-
outAmount,
|
|
6657
|
-
tradeFeeNumerator,
|
|
6658
|
-
new BN5(FEE_DENOMINATOR),
|
|
6659
|
-
1 /* Down */
|
|
6660
|
-
);
|
|
6661
|
-
} else {
|
|
6662
|
-
const nextSqrtPrice = getNextSqrtPrice(
|
|
6663
|
-
inAmount,
|
|
6664
|
-
sqrtPrice,
|
|
6665
|
-
liquidity,
|
|
6666
|
-
false
|
|
6667
|
-
);
|
|
6668
|
-
outAmount = getDeltaAmountA(
|
|
6669
|
-
sqrtPrice,
|
|
6670
|
-
nextSqrtPrice,
|
|
6671
|
-
liquidity,
|
|
6672
|
-
1 /* Down */
|
|
6673
|
-
);
|
|
6674
|
-
lpFee = mulDiv(
|
|
6675
|
-
outAmount,
|
|
6676
|
-
tradeFeeNumerator,
|
|
6677
|
-
new BN5(new BN5(FEE_DENOMINATOR)),
|
|
6678
|
-
1 /* Down */
|
|
6679
|
-
);
|
|
6680
|
-
}
|
|
6681
|
-
} else {
|
|
6682
|
-
const nextSqrtPrice = getNextSqrtPrice(
|
|
6683
|
-
inAmount,
|
|
6684
|
-
sqrtPrice,
|
|
6685
|
-
liquidity,
|
|
6686
|
-
true
|
|
6687
|
-
);
|
|
6688
|
-
outAmount = getDeltaAmountB(
|
|
6689
|
-
nextSqrtPrice,
|
|
6690
|
-
sqrtPrice,
|
|
6691
|
-
liquidity,
|
|
6692
|
-
1 /* Down */
|
|
6693
|
-
);
|
|
6694
|
-
lpFee = mulDiv(
|
|
6695
|
-
outAmount,
|
|
6696
|
-
tradeFeeNumerator,
|
|
6697
|
-
new BN5(FEE_DENOMINATOR),
|
|
6698
|
-
1 /* Down */
|
|
6699
|
-
);
|
|
6700
|
-
if (aToB) {
|
|
6701
|
-
} else {
|
|
6702
|
-
lpFee = mulDiv(
|
|
6703
|
-
inAmount,
|
|
6704
|
-
tradeFeeNumerator,
|
|
6705
|
-
new BN5(FEE_DENOMINATOR),
|
|
6706
|
-
1 /* Down */
|
|
6707
|
-
);
|
|
6708
|
-
const nextSqrtPrice2 = getNextSqrtPrice(
|
|
6709
|
-
inAmount.sub(lpFee),
|
|
6710
|
-
sqrtPrice,
|
|
6711
|
-
liquidity,
|
|
6712
|
-
false
|
|
6713
|
-
);
|
|
6714
|
-
outAmount = getDeltaAmountA(
|
|
6715
|
-
sqrtPrice,
|
|
6716
|
-
nextSqrtPrice2,
|
|
6717
|
-
liquidity,
|
|
6718
|
-
1 /* Down */
|
|
6719
|
-
);
|
|
6720
|
-
}
|
|
6721
|
-
}
|
|
6722
|
-
return { amountOutExcludedlpFee: outAmount.sub(lpFee), lpFee };
|
|
6723
|
-
}
|
|
6724
6583
|
function getLiquidityDeltaFromAmountA(maxAmountA, lowerSqrtPrice, upperSqrtPrice) {
|
|
6725
6584
|
const prod = maxAmountA.mul(upperSqrtPrice.mul(lowerSqrtPrice));
|
|
6726
6585
|
const delta = upperSqrtPrice.sub(lowerSqrtPrice);
|
|
@@ -6743,7 +6602,89 @@ function getAmountBFromLiquidityDelta(liquidity, currentSqrtPrice) {
|
|
|
6743
6602
|
return prod.shrn(SCALE_OFFSET * 2);
|
|
6744
6603
|
}
|
|
6745
6604
|
|
|
6746
|
-
// src/
|
|
6605
|
+
// src/helpers/fee.ts
|
|
6606
|
+
function getBaseFeeNumerator(feeSchedulerMode, cliffFeeNumerator, period, reductionFactor) {
|
|
6607
|
+
let feeNumerator;
|
|
6608
|
+
if (feeSchedulerMode == 0 /* Linear */) {
|
|
6609
|
+
feeNumerator = cliffFeeNumerator.sub(period.mul(reductionFactor));
|
|
6610
|
+
} else {
|
|
6611
|
+
const bps = reductionFactor.shln(SCALE_OFFSET).div(new BN5(BASIS_POINT_MAX));
|
|
6612
|
+
const base = ONE.sub(bps);
|
|
6613
|
+
const result = pow(base, period);
|
|
6614
|
+
feeNumerator = cliffFeeNumerator.mul(result).shrn(SCALE_OFFSET);
|
|
6615
|
+
}
|
|
6616
|
+
return feeNumerator;
|
|
6617
|
+
}
|
|
6618
|
+
function getDynamicFeeNumerator(volatilityAccumulator, binStep, variableFeeControl) {
|
|
6619
|
+
const squareVfaBin = volatilityAccumulator.mul(binStep).pow(new BN5(2));
|
|
6620
|
+
const vFee = squareVfaBin.mul(variableFeeControl);
|
|
6621
|
+
return vFee.addn(99999999999).divn(1e11);
|
|
6622
|
+
}
|
|
6623
|
+
function getFeeNumerator(currentPoint, activationPoint, numberOfPeriod, periodFrequency, feeSchedulerMode, cliffFeeNumerator, reductionFactor, dynamicFeeParams) {
|
|
6624
|
+
if (Number(periodFrequency) == 0) {
|
|
6625
|
+
return cliffFeeNumerator;
|
|
6626
|
+
}
|
|
6627
|
+
const period = new BN5(currentPoint).lt(activationPoint) ? new BN5(numberOfPeriod) : BN5.min(
|
|
6628
|
+
new BN5(numberOfPeriod),
|
|
6629
|
+
new BN5(currentPoint).sub(activationPoint).div(periodFrequency)
|
|
6630
|
+
);
|
|
6631
|
+
let feeNumerator = getBaseFeeNumerator(
|
|
6632
|
+
feeSchedulerMode,
|
|
6633
|
+
cliffFeeNumerator,
|
|
6634
|
+
period,
|
|
6635
|
+
reductionFactor
|
|
6636
|
+
);
|
|
6637
|
+
if (dynamicFeeParams) {
|
|
6638
|
+
const { volatilityAccumulator, binStep, variableFeeControl } = dynamicFeeParams;
|
|
6639
|
+
const dynamicFeeNumberator = getDynamicFeeNumerator(
|
|
6640
|
+
volatilityAccumulator,
|
|
6641
|
+
binStep,
|
|
6642
|
+
variableFeeControl
|
|
6643
|
+
);
|
|
6644
|
+
feeNumerator.add(dynamicFeeNumberator);
|
|
6645
|
+
}
|
|
6646
|
+
return feeNumerator.gt(new BN5(MAX_FEE_NUMERATOR)) ? new BN5(MAX_FEE_NUMERATOR) : feeNumerator;
|
|
6647
|
+
}
|
|
6648
|
+
function getFeeMode(collectFeeMode, btoA) {
|
|
6649
|
+
const feeOnInput = btoA && collectFeeMode === 1 /* OnlyB */;
|
|
6650
|
+
const feesOnTokenA = btoA && collectFeeMode === 0 /* BothToken */;
|
|
6651
|
+
return {
|
|
6652
|
+
feeOnInput,
|
|
6653
|
+
feesOnTokenA
|
|
6654
|
+
};
|
|
6655
|
+
}
|
|
6656
|
+
function getTotalFeeOnAmount(amount, tradeFeeNumerator) {
|
|
6657
|
+
return mulDiv(
|
|
6658
|
+
amount,
|
|
6659
|
+
tradeFeeNumerator,
|
|
6660
|
+
new BN5(FEE_DENOMINATOR),
|
|
6661
|
+
0 /* Up */
|
|
6662
|
+
);
|
|
6663
|
+
}
|
|
6664
|
+
function getSwapAmount(inAmount, sqrtPrice, liquidity, tradeFeeNumerator, aToB, collectFeeMode) {
|
|
6665
|
+
let feeMode = getFeeMode(collectFeeMode, !aToB);
|
|
6666
|
+
let actualInAmount = inAmount;
|
|
6667
|
+
let totalFee = new BN5(0);
|
|
6668
|
+
if (feeMode.feeOnInput) {
|
|
6669
|
+
totalFee = getTotalFeeOnAmount(inAmount, tradeFeeNumerator);
|
|
6670
|
+
actualInAmount = inAmount.sub(totalFee);
|
|
6671
|
+
}
|
|
6672
|
+
const outAmount = aToB ? getDeltaAmountB(
|
|
6673
|
+
getNextSqrtPrice(actualInAmount, sqrtPrice, liquidity, true),
|
|
6674
|
+
sqrtPrice,
|
|
6675
|
+
liquidity,
|
|
6676
|
+
1 /* Down */
|
|
6677
|
+
) : getDeltaAmountA(
|
|
6678
|
+
sqrtPrice,
|
|
6679
|
+
getNextSqrtPrice(actualInAmount, sqrtPrice, liquidity, false),
|
|
6680
|
+
liquidity,
|
|
6681
|
+
1 /* Down */
|
|
6682
|
+
);
|
|
6683
|
+
const actualOutAmount = feeMode.feeOnInput ? outAmount : (totalFee = getTotalFeeOnAmount(outAmount, tradeFeeNumerator), outAmount.sub(totalFee));
|
|
6684
|
+
return { actualOutAmount, totalFee };
|
|
6685
|
+
}
|
|
6686
|
+
|
|
6687
|
+
// src/helpers/computeUnits.ts
|
|
6747
6688
|
import {
|
|
6748
6689
|
ComputeBudgetProgram,
|
|
6749
6690
|
PublicKey as PublicKey4,
|
|
@@ -6818,20 +6759,20 @@ var getEstimatedComputeUnitIxWithBuffer = (connection, instructions, feePayer, b
|
|
|
6818
6759
|
return ComputeBudgetProgram.setComputeUnitLimit({ units });
|
|
6819
6760
|
});
|
|
6820
6761
|
|
|
6821
|
-
// src/
|
|
6762
|
+
// src/helpers/utils.ts
|
|
6822
6763
|
import { BN as BN6 } from "@coral-xyz/anchor";
|
|
6823
6764
|
import Decimal2 from "decimal.js";
|
|
6824
|
-
var getMaxAmountWithSlippage = (amount,
|
|
6825
|
-
const slippage = (100 +
|
|
6765
|
+
var getMaxAmountWithSlippage = (amount, rate) => {
|
|
6766
|
+
const slippage = (100 + rate) / 100 * BASIS_POINT_MAX;
|
|
6826
6767
|
return amount.mul(new BN6(slippage)).div(new BN6(BASIS_POINT_MAX));
|
|
6827
6768
|
};
|
|
6828
|
-
var getMinAmountWithSlippage = (amount,
|
|
6829
|
-
const slippage = (100 -
|
|
6769
|
+
var getMinAmountWithSlippage = (amount, rate) => {
|
|
6770
|
+
const slippage = (100 - rate) / 100 * BASIS_POINT_MAX;
|
|
6830
6771
|
return amount.mul(new BN6(slippage)).div(new BN6(BASIS_POINT_MAX));
|
|
6831
6772
|
};
|
|
6832
|
-
var getPriceImpact = (
|
|
6833
|
-
const diff =
|
|
6834
|
-
return new Decimal2(diff.toString()).div(new Decimal2(
|
|
6773
|
+
var getPriceImpact = (actualAmount, idealAmount) => {
|
|
6774
|
+
const diff = idealAmount.sub(actualAmount);
|
|
6775
|
+
return new Decimal2(diff.toString()).div(new Decimal2(idealAmount.toString())).mul(100).toNumber();
|
|
6835
6776
|
};
|
|
6836
6777
|
var getCurrentPrice = (sqrtPrice, tokenADecimal, tokenBDecimal) => {
|
|
6837
6778
|
const rawSqrtPrice = sqrtPrice.shrn(SCALE_OFFSET);
|
|
@@ -6847,7 +6788,7 @@ var getUnClaimReward = (positionState) => {
|
|
|
6847
6788
|
};
|
|
6848
6789
|
};
|
|
6849
6790
|
|
|
6850
|
-
// src/
|
|
6791
|
+
// src/helpers/accountFilters.ts
|
|
6851
6792
|
var positionByPoolFilter = (pool) => {
|
|
6852
6793
|
return {
|
|
6853
6794
|
memcmp: {
|
|
@@ -6864,28 +6805,23 @@ var CpAmm = class {
|
|
|
6864
6805
|
connection
|
|
6865
6806
|
});
|
|
6866
6807
|
}
|
|
6808
|
+
/**
|
|
6809
|
+
* Returns the Anchor program instance.
|
|
6810
|
+
* @returns The AmmProgram instance.
|
|
6811
|
+
*/
|
|
6867
6812
|
getProgram() {
|
|
6868
6813
|
return this._program;
|
|
6869
6814
|
}
|
|
6870
6815
|
/**
|
|
6871
|
-
|
|
6872
|
-
|
|
6873
|
-
|
|
6874
|
-
|
|
6875
|
-
|
|
6876
|
-
@param {Decimal} initialPrice - The initial price ratio of tokenX/tokenY (will be inverted if needed).
|
|
6877
|
-
@param {Decimal} liquidity - The initial liquidity value.
|
|
6878
|
-
@returns {PreparedPoolCreation} Object containing the ordered token mints and their Q64 price/liquidity values.
|
|
6879
|
-
*/
|
|
6816
|
+
* Prepares parameters required for pool creation, including initial sqrt price and liquidity.
|
|
6817
|
+
* @private
|
|
6818
|
+
* @param {PreparePoolCreationParams} params - Initial token amounts for pool creation.
|
|
6819
|
+
* @returns init sqrt price and liquidity in Q64 format.
|
|
6820
|
+
*/
|
|
6880
6821
|
preparePoolCreationParams(params) {
|
|
6881
6822
|
return __async(this, null, function* () {
|
|
6882
|
-
const { tokenAAmount, tokenBAmount
|
|
6883
|
-
const
|
|
6884
|
-
const sqrtPriceQ64 = priceToSqrtPrice(
|
|
6885
|
-
new Decimal3(initPrice.toString()),
|
|
6886
|
-
tokenADecimal,
|
|
6887
|
-
tokenBDecimal
|
|
6888
|
-
);
|
|
6823
|
+
const { tokenAAmount, tokenBAmount } = params;
|
|
6824
|
+
const sqrtPriceQ64 = getInitPriceQ64(tokenAAmount, tokenBAmount);
|
|
6889
6825
|
if (sqrtPriceQ64.lt(MIN_SQRT_PRICE) || sqrtPriceQ64.gt(MAX_SQRT_PRICE)) {
|
|
6890
6826
|
throw new Error(`Invalid sqrt price: ${sqrtPriceQ64.toString()}`);
|
|
6891
6827
|
}
|
|
@@ -6908,7 +6844,11 @@ var CpAmm = class {
|
|
|
6908
6844
|
};
|
|
6909
6845
|
});
|
|
6910
6846
|
}
|
|
6911
|
-
|
|
6847
|
+
/**
|
|
6848
|
+
* Fetches the Config state of the program.
|
|
6849
|
+
* @param config - Public key of the config account.
|
|
6850
|
+
* @returns Parsed ConfigState.
|
|
6851
|
+
*/
|
|
6912
6852
|
fetchConfigState(config) {
|
|
6913
6853
|
return __async(this, null, function* () {
|
|
6914
6854
|
const configState = yield this._program.account.config.fetchNullable(
|
|
@@ -6918,6 +6858,11 @@ var CpAmm = class {
|
|
|
6918
6858
|
return configState;
|
|
6919
6859
|
});
|
|
6920
6860
|
}
|
|
6861
|
+
/**
|
|
6862
|
+
* Fetches the Pool state.
|
|
6863
|
+
* @param pool - Public key of the pool.
|
|
6864
|
+
* @returns Parsed PoolState.
|
|
6865
|
+
*/
|
|
6921
6866
|
fetchPoolState(pool) {
|
|
6922
6867
|
return __async(this, null, function* () {
|
|
6923
6868
|
const poolState = yield this._program.account.pool.fetchNullable(pool);
|
|
@@ -6925,6 +6870,11 @@ var CpAmm = class {
|
|
|
6925
6870
|
return poolState;
|
|
6926
6871
|
});
|
|
6927
6872
|
}
|
|
6873
|
+
/**
|
|
6874
|
+
* Fetches the Position state.
|
|
6875
|
+
* @param position - Public key of the position.
|
|
6876
|
+
* @returns Parsed PositionState.
|
|
6877
|
+
*/
|
|
6928
6878
|
fetchPositionState(position) {
|
|
6929
6879
|
return __async(this, null, function* () {
|
|
6930
6880
|
const positionState = yield this._program.account.position.fetchNullable(
|
|
@@ -6934,24 +6884,42 @@ var CpAmm = class {
|
|
|
6934
6884
|
return positionState;
|
|
6935
6885
|
});
|
|
6936
6886
|
}
|
|
6887
|
+
/**
|
|
6888
|
+
* Retrieves all config accounts.
|
|
6889
|
+
* @returns Array of config public keys and their states.
|
|
6890
|
+
*/
|
|
6937
6891
|
getAllConfigs() {
|
|
6938
6892
|
return __async(this, null, function* () {
|
|
6939
6893
|
const configAccounts = yield this._program.account.config.all();
|
|
6940
6894
|
return configAccounts;
|
|
6941
6895
|
});
|
|
6942
6896
|
}
|
|
6897
|
+
/**
|
|
6898
|
+
* Retrieves all pool accounts.
|
|
6899
|
+
* @returns Array of pool public keys and their states.
|
|
6900
|
+
*/
|
|
6943
6901
|
getAllPools() {
|
|
6944
6902
|
return __async(this, null, function* () {
|
|
6945
6903
|
const poolAccounts = yield this._program.account.pool.all();
|
|
6946
6904
|
return poolAccounts;
|
|
6947
6905
|
});
|
|
6948
6906
|
}
|
|
6907
|
+
/**
|
|
6908
|
+
* Retrieves all position accounts.
|
|
6909
|
+
* @returns Array of position public keys and their states.
|
|
6910
|
+
*/
|
|
6949
6911
|
getAllPositions() {
|
|
6950
6912
|
return __async(this, null, function* () {
|
|
6951
6913
|
const poolAccounts = yield this._program.account.position.all();
|
|
6952
6914
|
return poolAccounts;
|
|
6953
6915
|
});
|
|
6954
6916
|
}
|
|
6917
|
+
/**
|
|
6918
|
+
* Gets all positions of a user for a specific pool.
|
|
6919
|
+
* @param pool - Public key of the pool.
|
|
6920
|
+
* @param user - Public key of the user.
|
|
6921
|
+
* @returns List of user positions for the pool.
|
|
6922
|
+
*/
|
|
6955
6923
|
getUserPositionByPool(pool, user) {
|
|
6956
6924
|
return __async(this, null, function* () {
|
|
6957
6925
|
const positions = yield this._program.account.position.all([
|
|
@@ -6970,6 +6938,11 @@ var CpAmm = class {
|
|
|
6970
6938
|
return result;
|
|
6971
6939
|
});
|
|
6972
6940
|
}
|
|
6941
|
+
/**
|
|
6942
|
+
* Gets all positions of a user across all pools.
|
|
6943
|
+
* @param user - Public key of the user.
|
|
6944
|
+
* @returns Array of user positions.
|
|
6945
|
+
*/
|
|
6973
6946
|
getPositionsByUser(user) {
|
|
6974
6947
|
return __async(this, null, function* () {
|
|
6975
6948
|
const positions = yield this._program.account.position.all();
|
|
@@ -6986,6 +6959,11 @@ var CpAmm = class {
|
|
|
6986
6959
|
return result;
|
|
6987
6960
|
});
|
|
6988
6961
|
}
|
|
6962
|
+
/**
|
|
6963
|
+
* Calculates swap quote based on input amount and pool state.
|
|
6964
|
+
* @param params - Swap parameters including input amount, pool state, slippage, etc.
|
|
6965
|
+
* @returns Swap quote including expected output amount, fee, and price impact.
|
|
6966
|
+
*/
|
|
6989
6967
|
getQuote(params) {
|
|
6990
6968
|
return __async(this, null, function* () {
|
|
6991
6969
|
var _a;
|
|
@@ -7028,7 +7006,7 @@ var CpAmm = class {
|
|
|
7028
7006
|
reductionFactor,
|
|
7029
7007
|
dynamicFeeParams
|
|
7030
7008
|
);
|
|
7031
|
-
const {
|
|
7009
|
+
const { actualOutAmount, totalFee } = getSwapAmount(
|
|
7032
7010
|
inAmount,
|
|
7033
7011
|
sqrtPriceQ64,
|
|
7034
7012
|
liquidityQ64,
|
|
@@ -7037,28 +7015,22 @@ var CpAmm = class {
|
|
|
7037
7015
|
collectFeeMode
|
|
7038
7016
|
);
|
|
7039
7017
|
const minSwapOutAmount = getMinAmountWithSlippage(
|
|
7040
|
-
|
|
7018
|
+
actualOutAmount,
|
|
7041
7019
|
slippage
|
|
7042
7020
|
);
|
|
7043
7021
|
return {
|
|
7044
7022
|
swapInAmount: inAmount,
|
|
7045
|
-
swapOutAmount:
|
|
7023
|
+
swapOutAmount: actualOutAmount,
|
|
7046
7024
|
minSwapOutAmount,
|
|
7047
|
-
totalFee
|
|
7048
|
-
priceImpact: getPriceImpact(minSwapOutAmount,
|
|
7025
|
+
totalFee,
|
|
7026
|
+
priceImpact: getPriceImpact(minSwapOutAmount, actualOutAmount)
|
|
7049
7027
|
};
|
|
7050
7028
|
});
|
|
7051
7029
|
}
|
|
7052
7030
|
/**
|
|
7053
7031
|
* Computes the liquidity delta based on the provided token amounts and pool state.
|
|
7054
7032
|
*
|
|
7055
|
-
* @param {LiquidityDeltaParams} params - The parameters for liquidity calculation
|
|
7056
|
-
* - tokenX: The mint address of token X.
|
|
7057
|
-
* - tokenY: The mint address of token Y.
|
|
7058
|
-
* - maxAmountX: The maximum amount of token X available.
|
|
7059
|
-
* - maxAmountY: The maximum amount of token Y available.
|
|
7060
|
-
* - pool: The address of the liquidity pool.
|
|
7061
|
-
*
|
|
7033
|
+
* @param {LiquidityDeltaParams} params - The parameters for liquidity calculation
|
|
7062
7034
|
* @returns {Promise<BN>} - The computed liquidity delta in Q64 value.
|
|
7063
7035
|
*/
|
|
7064
7036
|
getLiquidityDelta(params) {
|
|
@@ -7083,6 +7055,11 @@ var CpAmm = class {
|
|
|
7083
7055
|
return liquidityDeltaFromAmountA.gte(liquidityDeltaFromAmountB) ? liquidityDeltaFromAmountB : liquidityDeltaFromAmountA;
|
|
7084
7056
|
});
|
|
7085
7057
|
}
|
|
7058
|
+
/**
|
|
7059
|
+
* Builds a transaction to create a permissionless pool.
|
|
7060
|
+
* @param params - Parameters for pool creation.
|
|
7061
|
+
* @returns Transaction builder.
|
|
7062
|
+
*/
|
|
7086
7063
|
createPool(params) {
|
|
7087
7064
|
return __async(this, null, function* () {
|
|
7088
7065
|
const {
|
|
@@ -7095,17 +7072,13 @@ var CpAmm = class {
|
|
|
7095
7072
|
activationPoint,
|
|
7096
7073
|
tokenAAmount,
|
|
7097
7074
|
tokenBAmount,
|
|
7098
|
-
tokenADecimal,
|
|
7099
|
-
tokenBDecimal,
|
|
7100
7075
|
tokenAProgram,
|
|
7101
7076
|
tokenBProgram
|
|
7102
7077
|
} = params;
|
|
7103
7078
|
const { sqrtPriceQ64, liquidityQ64 } = yield this.preparePoolCreationParams(
|
|
7104
7079
|
{
|
|
7105
7080
|
tokenAAmount,
|
|
7106
|
-
tokenBAmount
|
|
7107
|
-
tokenADecimal,
|
|
7108
|
-
tokenBDecimal
|
|
7081
|
+
tokenBAmount
|
|
7109
7082
|
}
|
|
7110
7083
|
);
|
|
7111
7084
|
const poolAuthority = derivePoolAuthority(this._program.programId);
|
|
@@ -7202,6 +7175,11 @@ var CpAmm = class {
|
|
|
7202
7175
|
return tx;
|
|
7203
7176
|
});
|
|
7204
7177
|
}
|
|
7178
|
+
/**
|
|
7179
|
+
* Builds a transaction to create a customizable pool.
|
|
7180
|
+
* @param params - Parameters for customizable pool creation.
|
|
7181
|
+
* @returns Transaction and related addresses.
|
|
7182
|
+
*/
|
|
7205
7183
|
createCustomPool(params) {
|
|
7206
7184
|
return __async(this, null, function* () {
|
|
7207
7185
|
const {
|
|
@@ -7225,9 +7203,7 @@ var CpAmm = class {
|
|
|
7225
7203
|
const { sqrtPriceQ64, liquidityQ64 } = yield this.preparePoolCreationParams(
|
|
7226
7204
|
{
|
|
7227
7205
|
tokenAAmount,
|
|
7228
|
-
tokenBAmount
|
|
7229
|
-
tokenADecimal,
|
|
7230
|
-
tokenBDecimal
|
|
7206
|
+
tokenBAmount
|
|
7231
7207
|
}
|
|
7232
7208
|
);
|
|
7233
7209
|
const poolAuthority = derivePoolAuthority(this._program.programId);
|
|
@@ -7328,6 +7304,11 @@ var CpAmm = class {
|
|
|
7328
7304
|
return { tx: transaction, pool, position };
|
|
7329
7305
|
});
|
|
7330
7306
|
}
|
|
7307
|
+
/**
|
|
7308
|
+
* Builds a transaction to create a position.
|
|
7309
|
+
* @param {CreatePositionParams} params - Parameters for position creation.
|
|
7310
|
+
* @returns Transaction builder.
|
|
7311
|
+
*/
|
|
7331
7312
|
createPosition(params) {
|
|
7332
7313
|
return __async(this, null, function* () {
|
|
7333
7314
|
const { owner, payer, pool, positionNft } = params;
|
|
@@ -7355,6 +7336,11 @@ var CpAmm = class {
|
|
|
7355
7336
|
}).transaction();
|
|
7356
7337
|
});
|
|
7357
7338
|
}
|
|
7339
|
+
/**
|
|
7340
|
+
* Builds a transaction to add liquidity to an existing position.
|
|
7341
|
+
* @param {AddLiquidityParams} params - Parameters for adding liquidity.
|
|
7342
|
+
* @returns Transaction builder.
|
|
7343
|
+
*/
|
|
7358
7344
|
addLiquidity(params) {
|
|
7359
7345
|
return __async(this, null, function* () {
|
|
7360
7346
|
const {
|
|
@@ -7447,6 +7433,11 @@ var CpAmm = class {
|
|
|
7447
7433
|
}).preInstructions(preInstructions).postInstructions(postInstructions).transaction();
|
|
7448
7434
|
});
|
|
7449
7435
|
}
|
|
7436
|
+
/**
|
|
7437
|
+
* Builds a transaction to remove liquidity from a position.
|
|
7438
|
+
* @param {RemoveLiquidityParams} params - Parameters for removing liquidity.
|
|
7439
|
+
* @returns Transaction builder.
|
|
7440
|
+
*/
|
|
7450
7441
|
removeLiquidity(params) {
|
|
7451
7442
|
return __async(this, null, function* () {
|
|
7452
7443
|
const {
|
|
@@ -7523,6 +7514,11 @@ var CpAmm = class {
|
|
|
7523
7514
|
}).preInstructions(preInstructions).postInstructions(postInstructions).transaction();
|
|
7524
7515
|
});
|
|
7525
7516
|
}
|
|
7517
|
+
/**
|
|
7518
|
+
* Builds a transaction to perform a swap in the pool.
|
|
7519
|
+
* @param {SwapParams} params - Parameters for swapping tokens.
|
|
7520
|
+
* @returns Transaction builder.
|
|
7521
|
+
*/
|
|
7526
7522
|
swap(params) {
|
|
7527
7523
|
return __async(this, null, function* () {
|
|
7528
7524
|
const {
|
|
@@ -7601,6 +7597,11 @@ var CpAmm = class {
|
|
|
7601
7597
|
}).preInstructions(preInstructions).postInstructions(postInstructions).transaction();
|
|
7602
7598
|
});
|
|
7603
7599
|
}
|
|
7600
|
+
/**
|
|
7601
|
+
* Builds a transaction to lock a position with vesting schedule.
|
|
7602
|
+
* @param {LockPositionParams} params - Locking parameters.
|
|
7603
|
+
* @returns Transaction builder.
|
|
7604
|
+
*/
|
|
7604
7605
|
lockPosition(params) {
|
|
7605
7606
|
return __async(this, null, function* () {
|
|
7606
7607
|
const {
|
|
@@ -7642,6 +7643,11 @@ var CpAmm = class {
|
|
|
7642
7643
|
}).transaction();
|
|
7643
7644
|
});
|
|
7644
7645
|
}
|
|
7646
|
+
/**
|
|
7647
|
+
* Builds a transaction to permanently lock a position.
|
|
7648
|
+
* @param {PermanentLockParams} params - Parameters for permanent locking.
|
|
7649
|
+
* @returns Transaction builder.
|
|
7650
|
+
*/
|
|
7645
7651
|
permanentLockPosition(params) {
|
|
7646
7652
|
return __async(this, null, function* () {
|
|
7647
7653
|
const { owner, position, positionNftMint, pool, unlockedLiquidity } = params;
|
|
@@ -7659,6 +7665,11 @@ var CpAmm = class {
|
|
|
7659
7665
|
}).transaction();
|
|
7660
7666
|
});
|
|
7661
7667
|
}
|
|
7668
|
+
/**
|
|
7669
|
+
* Builds a transaction to refresh vesting status of a position.
|
|
7670
|
+
* @param {RefreshVestingParams} params - Refresh vesting parameters.
|
|
7671
|
+
* @returns Transaction builder.
|
|
7672
|
+
*/
|
|
7662
7673
|
refreshVesting(params) {
|
|
7663
7674
|
return __async(this, null, function* () {
|
|
7664
7675
|
const { owner, position, positionNftMint, pool, vestings } = params;
|
|
@@ -7682,6 +7693,11 @@ var CpAmm = class {
|
|
|
7682
7693
|
).transaction();
|
|
7683
7694
|
});
|
|
7684
7695
|
}
|
|
7696
|
+
/**
|
|
7697
|
+
* Builds a transaction to claim position fee rewards.
|
|
7698
|
+
* @param {ClaimPositionFeeParams} params - Parameters for claiming position fee.
|
|
7699
|
+
* @returns Transaction builder.
|
|
7700
|
+
*/
|
|
7685
7701
|
claimPositionFee(params) {
|
|
7686
7702
|
return __async(this, null, function* () {
|
|
7687
7703
|
const {
|
|
@@ -7751,6 +7767,11 @@ var CpAmm = class {
|
|
|
7751
7767
|
}).preInstructions(preInstructions).postInstructions(postInstructions).transaction();
|
|
7752
7768
|
});
|
|
7753
7769
|
}
|
|
7770
|
+
/**
|
|
7771
|
+
* Builds a transaction to update reward duration.
|
|
7772
|
+
* @param {UpdateRewardDurationParams} params - Parameters including pool and new duration.
|
|
7773
|
+
* @returns Transaction builder.
|
|
7774
|
+
*/
|
|
7754
7775
|
updateRewardDuration(params) {
|
|
7755
7776
|
return __async(this, null, function* () {
|
|
7756
7777
|
const { pool, admin, rewardIndex, newDuration } = params;
|
|
@@ -7762,6 +7783,11 @@ var CpAmm = class {
|
|
|
7762
7783
|
}).transaction();
|
|
7763
7784
|
});
|
|
7764
7785
|
}
|
|
7786
|
+
/**
|
|
7787
|
+
* Builds a transaction to update reward funder address.
|
|
7788
|
+
* @param {UpdateRewardFunderParams} params - Parameters including pool and new funder address.
|
|
7789
|
+
* @returns Transaction builder.
|
|
7790
|
+
*/
|
|
7765
7791
|
updateRewardFunder(params) {
|
|
7766
7792
|
return __async(this, null, function* () {
|
|
7767
7793
|
const { pool, admin, rewardIndex, newFunder } = params;
|
|
@@ -7773,6 +7799,11 @@ var CpAmm = class {
|
|
|
7773
7799
|
}).transaction();
|
|
7774
7800
|
});
|
|
7775
7801
|
}
|
|
7802
|
+
/**
|
|
7803
|
+
* Builds a transaction to fund rewards in a pool.
|
|
7804
|
+
* @param {FundRewardParams} params - Funding parameters.
|
|
7805
|
+
* @returns Transaction builder.
|
|
7806
|
+
*/
|
|
7776
7807
|
fundReward(params) {
|
|
7777
7808
|
return __async(this, null, function* () {
|
|
7778
7809
|
const { rewardIndex, carryForward, pool, funder, amount } = params;
|
|
@@ -7810,6 +7841,11 @@ var CpAmm = class {
|
|
|
7810
7841
|
}).transaction();
|
|
7811
7842
|
});
|
|
7812
7843
|
}
|
|
7844
|
+
/**
|
|
7845
|
+
* Builds a transaction to withdraw ineligible rewards from a pool.
|
|
7846
|
+
* @param {WithdrawIneligibleRewardParams} params - Parameters for withdrawal.
|
|
7847
|
+
* @returns Transaction builder.
|
|
7848
|
+
*/
|
|
7813
7849
|
withdrawIneligibleReward(params) {
|
|
7814
7850
|
return __async(this, null, function* () {
|
|
7815
7851
|
const { rewardIndex, pool, funder } = params;
|
|
@@ -7846,6 +7882,11 @@ var CpAmm = class {
|
|
|
7846
7882
|
}).preInstructions(preInstructions).postInstructions(postInstructions).transaction();
|
|
7847
7883
|
});
|
|
7848
7884
|
}
|
|
7885
|
+
/**
|
|
7886
|
+
* Builds a transaction to claim partner fee rewards.
|
|
7887
|
+
* @param {ClaimPartnerFeeParams} params - Claim parameters including amounts and partner address.
|
|
7888
|
+
* @returns Transaction builder.
|
|
7889
|
+
*/
|
|
7849
7890
|
claimPartnerFee(params) {
|
|
7850
7891
|
return __async(this, null, function* () {
|
|
7851
7892
|
const { partner, pool, maxAmountA, maxAmountB } = params;
|
|
@@ -7910,6 +7951,11 @@ var CpAmm = class {
|
|
|
7910
7951
|
}).preInstructions(preInstructions).postInstructions(postInstructions).transaction();
|
|
7911
7952
|
});
|
|
7912
7953
|
}
|
|
7954
|
+
/**
|
|
7955
|
+
* Builds a transaction to claim reward from a position.
|
|
7956
|
+
* @param {ClaimRewardParams} params - Parameters for claiming reward.
|
|
7957
|
+
* @returns Transaction builder.
|
|
7958
|
+
*/
|
|
7913
7959
|
claimReward(params) {
|
|
7914
7960
|
return __async(this, null, function* () {
|
|
7915
7961
|
const { user, position, rewardIndex } = params;
|
|
@@ -7973,7 +8019,6 @@ export {
|
|
|
7973
8019
|
Rounding,
|
|
7974
8020
|
SCALE_OFFSET,
|
|
7975
8021
|
TradeDirection,
|
|
7976
|
-
calculateSwap,
|
|
7977
8022
|
index_default as default,
|
|
7978
8023
|
deriveClaimFeeOperatorAddress,
|
|
7979
8024
|
deriveConfigAddress,
|
|
@@ -8007,9 +8052,11 @@ export {
|
|
|
8007
8052
|
getPriceImpact,
|
|
8008
8053
|
getSecondKey,
|
|
8009
8054
|
getSimulationComputeUnits,
|
|
8055
|
+
getSwapAmount,
|
|
8010
8056
|
getTokenDecimals,
|
|
8011
8057
|
getTokenProgram,
|
|
8012
8058
|
getUnClaimReward,
|
|
8059
|
+
positionByPoolFilter,
|
|
8013
8060
|
unwrapSOLInstruction,
|
|
8014
8061
|
wrapSOLInstruction
|
|
8015
8062
|
};
|