flash-sdk 1.0.130 → 1.0.132

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.
@@ -25,7 +25,6 @@ export declare class PerpetualsClient {
25
25
  admin: PublicKey;
26
26
  programId: PublicKey;
27
27
  composabilityProgramId: PublicKey;
28
- poolConfig: PoolConfig;
29
28
  multisig: {
30
29
  publicKey: PublicKey;
31
30
  bump: number;
@@ -46,7 +45,7 @@ export declare class PerpetualsClient {
46
45
  private postSendTxCallback?;
47
46
  private prioritizationFee;
48
47
  private txConfirmationCommitment;
49
- constructor(provider: AnchorProvider, poolConfig: PoolConfig, composabilityProgramId: PublicKey, opts: PerpClientOptions);
48
+ constructor(provider: AnchorProvider, programId: PublicKey, composabilityProgramId: PublicKey, opts: PerpClientOptions);
50
49
  setPrioritizationFee: (fee: number) => void;
51
50
  loadAddressLookupTable: (poolConfig: PoolConfig) => Promise<void>;
52
51
  findProgramAddress: (label: string, extraSeeds?: any) => {
@@ -2178,10 +2177,9 @@ export declare class PerpetualsClient {
2178
2177
  addCustody: (poolName: string, tokenMint: PublicKey, isStable: boolean, isVirtual: boolean, oracle: OracleParams, pricing: PricingParams, permissions: Permissions, fees: Fees, borrowRate: BorrowRateParams, ratios: TokenRatios[]) => Promise<void>;
2179
2178
  editCustody: (poolName: string, tokenMint: PublicKey, isStable: boolean, oracle: OracleParams, pricing: PricingParams, permissions: Permissions, fees: Fees, borrowRate: BorrowRateParams, ratios: TokenRatios[]) => Promise<void>;
2180
2179
  removeCustody: (poolName: string, tokenMint: PublicKey, ratios: TokenRatios[]) => Promise<void>;
2181
- getPythnetOraclePrices: (poolConfig: PoolConfig, backupOracleSecretKey: string) => Promise<TransactionInstruction>;
2182
- getLiquidationState: (wallet: PublicKey, poolName: string, tokenMint: PublicKey, collateralMint: PublicKey, side: PositionSide) => Promise<any>;
2180
+ getLiquidationState: (wallet: PublicKey, poolName: string, tokenMint: PublicKey, collateralMint: PublicKey, side: PositionSide, poolConfig: PoolConfig) => Promise<any>;
2183
2181
  validateCollectivePnl: (marketSymbol: string, collateralSymbol: string, poolConfig: PoolConfig, poolName: string, side: Side) => Promise<void>;
2184
- liquidate: (wallet: PublicKey, poolName: string, tokenMint: PublicKey, collateralMint: PublicKey, side: PositionSide, receivingAccount: PublicKey, rewardsReceivingAccount: PublicKey) => Promise<string>;
2182
+ liquidate: (wallet: PublicKey, poolConfig: PoolConfig, tokenMint: PublicKey, collateralMint: PublicKey, side: PositionSide, receivingAccount: PublicKey, rewardsReceivingAccount: PublicKey) => Promise<string>;
2185
2183
  getOraclePriceView: (poolName: string, tokenMint: PublicKey, ema: boolean) => Promise<any>;
2186
2184
  getAddLiquidityAmountAndFeeView: (poolName: string, tokenMint: PublicKey, amount: BN) => Promise<any>;
2187
2185
  getRemoveLiquidityAmountAndFeeView: (poolName: string, tokenMint: PublicKey, lpAmount: BN) => Promise<any>;
@@ -2209,6 +2207,7 @@ export declare class PerpetualsClient {
2209
2207
  getLeverageAtAmountEntryWithSwapSync: (positionAccount: PositionAccount | null, inputDeltaAmount: BN, sizeDeltaAmount: BN, side: Side, poolAccount: PoolAccount, inputTokenPrice: OraclePrice, inputTokenEmaPrice: OraclePrice, inputTokenCustodyAccount: CustodyAccount, collateralTokenPrice: OraclePrice, collateralTokenEmaPrice: OraclePrice, collateralTokenCustodyAccount: CustodyAccount, marketTokenPrice: OraclePrice, marketTokenEmaPrice: OraclePrice, marketTokenCustodyAccount: CustodyAccount, poolAumUsdMax: BN, poolConfig: PoolConfig, pnlUsd: BN) => BN;
2210
2208
  getEntryPriceAndFeeSync: (positionAccount: PositionAccount | null, collateralDeltaAmount: BN, sizeDeltaAmount: BN, side: Side, marketPrice: OraclePrice, marketEmaPrice: OraclePrice, marketCustodyAccount: CustodyAccount, collateralPrice: OraclePrice, collateralEmaPrice: OraclePrice, collateralCustodyAccount: CustodyAccount, currentTimestamp: BN) => EntryPriceAndFee;
2211
2209
  getEntryPriceSync: (side: Side, marketPrice: OraclePrice, marketEmaPrice: OraclePrice, marketCustodyAccount: CustodyAccount) => BN;
2210
+ getPriceAfterSlippage(isEntry: boolean, slippageBps: BN, marketPrice: OraclePrice, marketEmaPrice: OraclePrice, side: Side, custody: CustodyAccount): BN;
2212
2211
  getExitPriceAndFeeSync: (positionAccount: PositionAccount, collateralDeltaAmount: BN, sizeDeltaAmount: BN, side: Side, marketPrice: OraclePrice, marketEmaPrice: OraclePrice, marketCustodyAccount: CustodyAccount, collateralPrice: OraclePrice, collateralEmaPrice: OraclePrice, collateralCustodyAccount: CustodyAccount, currentTimestamp: BN) => ExitPriceAndFee;
2213
2212
  getExitPriceSync: (side: Side, marketPrice: OraclePrice, marketEmaPrice: OraclePrice, marketCustodyAccount: CustodyAccount) => BN;
2214
2213
  getSizeAmountFromLeverageAndCollateral: (collateralAmtWithFee: BN, leverage: string, marketToken: Token, collateralToken: Token, side: Side, marketPrice: OraclePrice, marketEmaPrice: OraclePrice, marketCustodyAccount: CustodyAccount, collateralPrice: OraclePrice, collateralEmaPrice: OraclePrice, collateralCustodyAccount: CustodyAccount) => BN;
@@ -10,29 +10,6 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- var desc = Object.getOwnPropertyDescriptor(m, k);
16
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
- desc = { enumerable: true, get: function() { return m[k]; } };
18
- }
19
- Object.defineProperty(o, k2, desc);
20
- }) : (function(o, m, k, k2) {
21
- if (k2 === undefined) k2 = k;
22
- o[k2] = m[k];
23
- }));
24
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
- Object.defineProperty(o, "default", { enumerable: true, value: v });
26
- }) : function(o, v) {
27
- o["default"] = v;
28
- });
29
- var __importStar = (this && this.__importStar) || function (mod) {
30
- if (mod && mod.__esModule) return mod;
31
- var result = {};
32
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
- __setModuleDefault(result, mod);
34
- return result;
35
- };
36
13
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
37
14
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
38
15
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -97,11 +74,8 @@ var rpc_1 = require("./utils/rpc");
97
74
  var utils_1 = require("./utils");
98
75
  var constants_1 = require("./constants");
99
76
  var bignumber_js_1 = __importDefault(require("bignumber.js"));
100
- var backupOracle_1 = require("./backupOracle");
101
- var bytes_1 = require("@coral-xyz/anchor/dist/cjs/utils/bytes");
102
- var nacl = __importStar(require("tweetnacl"));
103
77
  var PerpetualsClient = (function () {
104
- function PerpetualsClient(provider, poolConfig, composabilityProgramId, opts) {
78
+ function PerpetualsClient(provider, programId, composabilityProgramId, opts) {
105
79
  var _this = this;
106
80
  var _a;
107
81
  this.addressLookupTables = [];
@@ -595,45 +569,7 @@ var PerpetualsClient = (function () {
595
569
  }
596
570
  });
597
571
  }); };
598
- this.getPythnetOraclePrices = function (poolConfig, backupOracleSecretKey) { return __awaiter(_this, void 0, void 0, function () {
599
- var pythPriceIds, currentPrices, backupOracleAccount, caches_1, permissionlessPythCache, message, signature, preInstruction;
600
- return __generator(this, function (_a) {
601
- switch (_a.label) {
602
- case 0:
603
- pythPriceIds = poolConfig.custodies.map(function (f) { return f.pythPriceId; });
604
- return [4, backupOracle_1.pythPriceServiceConnection.getLatestPriceFeeds(pythPriceIds)];
605
- case 1:
606
- currentPrices = _a.sent();
607
- backupOracleAccount = web3_js_1.Keypair.fromSecretKey(bytes_1.bs58.decode(backupOracleSecretKey));
608
- if (pythPriceIds.length === currentPrices.length) {
609
- caches_1 = currentPrices.map(function (price) {
610
- var uncheckedPrice = price.getPriceUnchecked();
611
- var uncheckedEmaPrice = price.getEmaPriceUnchecked();
612
- return {
613
- price: new anchor_1.BN(uncheckedPrice.price),
614
- expo: uncheckedPrice.expo,
615
- conf: new anchor_1.BN(uncheckedPrice.conf),
616
- ema: new anchor_1.BN(uncheckedEmaPrice.price),
617
- publishTime: new anchor_1.BN(uncheckedPrice.publishTime)
618
- };
619
- });
620
- permissionlessPythCache = {
621
- backupCache: caches_1
622
- };
623
- message = this.program._coder.types.encode('PermissionlessPythCache', permissionlessPythCache);
624
- signature = nacl.sign.detached(message, backupOracleAccount.secretKey);
625
- preInstruction = web3_js_1.Ed25519Program.createInstructionWithPublicKey({
626
- publicKey: backupOracleAccount.publicKey.toBytes(),
627
- message: message,
628
- signature: signature,
629
- });
630
- return [2, preInstruction];
631
- }
632
- return [2];
633
- }
634
- });
635
- }); };
636
- this.getLiquidationState = function (wallet, poolName, tokenMint, collateralMint, side) { return __awaiter(_this, void 0, void 0, function () {
572
+ this.getLiquidationState = function (wallet, poolName, tokenMint, collateralMint, side, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
637
573
  var _a, _b;
638
574
  var _c;
639
575
  return __generator(this, function (_d) {
@@ -651,9 +587,9 @@ var PerpetualsClient = (function () {
651
587
  return [4, this.getCustodyOracleAccountKey(poolName, tokenMint)];
652
588
  case 1:
653
589
  _c.custodyOracleAccount = _d.sent(),
654
- _c.custodyCustomOracleAccount = this.poolConfig.backupOracle,
590
+ _c.custodyCustomOracleAccount = poolConfig.backupOracle,
655
591
  _c.collateralCustody = this.getCustodyKey(poolName, collateralMint),
656
- _c.collateralCustodyCustomOracleAccount = this.poolConfig.backupOracle;
592
+ _c.collateralCustodyCustomOracleAccount = poolConfig.backupOracle;
657
593
  return [4, this.getCustodyOracleAccountKey(poolName, collateralMint)];
658
594
  case 2: return [4, _b.apply(_a, [(_c.collateralCustodyOracleAccount = _d.sent(),
659
595
  _c.ixSysvar = web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
@@ -681,10 +617,10 @@ var PerpetualsClient = (function () {
681
617
  pool: this.getPoolKey(poolName),
682
618
  custody: marketCustodyConfig.custodyAccount,
683
619
  custodyOracleAccount: marketCustodyConfig.oracleAddress,
684
- custodyCustomOracleAccount: this.poolConfig.backupOracle,
620
+ custodyCustomOracleAccount: poolConfig.backupOracle,
685
621
  collateralCustody: collateralCustodyConfig.custodyAccount,
686
622
  collateralCustodyOracleAccount: collateralCustodyConfig.oracleAddress,
687
- collateralCustodyCustomOracleAccount: this.poolConfig.backupOracle,
623
+ collateralCustodyCustomOracleAccount: poolConfig.backupOracle,
688
624
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY
689
625
  })
690
626
  .remainingAccounts([])
@@ -699,12 +635,13 @@ var PerpetualsClient = (function () {
699
635
  }
700
636
  });
701
637
  }); };
702
- this.liquidate = function (wallet, poolName, tokenMint, collateralMint, side, receivingAccount, rewardsReceivingAccount) { return __awaiter(_this, void 0, void 0, function () {
703
- var _a, _b;
638
+ this.liquidate = function (wallet, poolConfig, tokenMint, collateralMint, side, receivingAccount, rewardsReceivingAccount) { return __awaiter(_this, void 0, void 0, function () {
639
+ var poolName, _a, _b;
704
640
  var _c;
705
641
  return __generator(this, function (_d) {
706
642
  switch (_d.label) {
707
643
  case 0:
644
+ poolName = poolConfig.poolName;
708
645
  _b = (_a = this.program.methods
709
646
  .liquidate({}))
710
647
  .accounts;
@@ -725,8 +662,8 @@ var PerpetualsClient = (function () {
725
662
  return [4, this.getCustodyOracleAccountKey(poolName, collateralMint)];
726
663
  case 2: return [4, _b.apply(_a, [(_c.collateralCustodyOracleAccount = _d.sent(),
727
664
  _c.collateralCustodyTokenAccount = this.getCustodyTokenAccountKey(poolName, collateralMint),
728
- _c.collateralCustodyCustomOracleAccount = this.poolConfig.backupOracle,
729
- _c.custodyCustomOracleAccount = this.poolConfig.backupOracle,
665
+ _c.collateralCustodyCustomOracleAccount = poolConfig.backupOracle,
666
+ _c.custodyCustomOracleAccount = poolConfig.backupOracle,
730
667
  _c.eventAuthority = this.eventAuthority.publicKey,
731
668
  _c.tokenProgram = spl_token_1.TOKEN_PROGRAM_ID,
732
669
  _c.program = this.program.programId,
@@ -1868,10 +1805,10 @@ var PerpetualsClient = (function () {
1868
1805
  position: positionAccount,
1869
1806
  custody: marketCustodyConfig.custodyAccount,
1870
1807
  custodyOracleAccount: marketCustodyConfig.oracleAddress,
1871
- custodyCustomOracleAccount: this.poolConfig.backupOracle,
1808
+ custodyCustomOracleAccount: poolConfig.backupOracle,
1872
1809
  collateralCustody: collateralCustodyConfig.custodyAccount,
1873
1810
  collateralCustodyOracleAccount: collateralCustodyConfig.oracleAddress,
1874
- collateralCustodyCustomOracleAccount: this.poolConfig.backupOracle,
1811
+ collateralCustodyCustomOracleAccount: poolConfig.backupOracle,
1875
1812
  collateralCustodyTokenAccount: collateralCustodyConfig.tokenAccount,
1876
1813
  eventAuthority: this.eventAuthority.publicKey,
1877
1814
  systemProgram: web3_js_1.SystemProgram.programId,
@@ -1984,7 +1921,7 @@ var PerpetualsClient = (function () {
1984
1921
  isWritable: false,
1985
1922
  });
1986
1923
  custodyCustomOracles.push({
1987
- pubkey: this.poolConfig.backupOracle,
1924
+ pubkey: poolConfig.backupOracle,
1988
1925
  isSigner: false,
1989
1926
  isWritable: false,
1990
1927
  });
@@ -2020,16 +1957,16 @@ var PerpetualsClient = (function () {
2020
1957
  pool: poolConfig.poolAddress,
2021
1958
  receivingCustody: inputCustodyConfig.custodyAccount,
2022
1959
  receivingCustodyOracleAccount: inputCustodyConfig.oracleAddress,
2023
- receivingCustodyCustomOracleAccount: this.poolConfig.backupOracle,
1960
+ receivingCustodyCustomOracleAccount: poolConfig.backupOracle,
2024
1961
  receivingCustodyTokenAccount: inputCustodyConfig.tokenAccount,
2025
1962
  dispensingCustody: collateralCustodyConfig.custodyAccount,
2026
1963
  dispensingCustodyOracleAccount: collateralCustodyConfig.oracleAddress,
2027
- dispensingCustodyCustomOracleAccount: this.poolConfig.backupOracle,
1964
+ dispensingCustodyCustomOracleAccount: poolConfig.backupOracle,
2028
1965
  dispensingCustodyTokenAccount: collateralCustodyConfig.tokenAccount,
2029
1966
  position: positionAccount,
2030
1967
  custody: marketCustodyConfig.custodyAccount,
2031
1968
  custodyOracleAccount: marketCustodyConfig.oracleAddress,
2032
- custodyCustomOracleAccount: this.poolConfig.backupOracle,
1969
+ custodyCustomOracleAccount: poolConfig.backupOracle,
2033
1970
  eventAuthority: this.eventAuthority.publicKey,
2034
1971
  systemProgram: web3_js_1.SystemProgram.programId,
2035
1972
  tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
@@ -2124,10 +2061,10 @@ var PerpetualsClient = (function () {
2124
2061
  position: positionAccount,
2125
2062
  custody: marketCustodyConfig.custodyAccount,
2126
2063
  custodyOracleAccount: marketCustodyConfig.oracleAddress,
2127
- custodyCustomOracleAccount: this.poolConfig.backupOracle,
2064
+ custodyCustomOracleAccount: poolConfig.backupOracle,
2128
2065
  collateralCustody: collateralCustodyConfig.custodyAccount,
2129
2066
  collateralCustodyOracleAccount: collateralCustodyConfig.oracleAddress,
2130
- collateralCustodyCustomOracleAccount: this.poolConfig.backupOracle,
2067
+ collateralCustodyCustomOracleAccount: poolConfig.backupOracle,
2131
2068
  collateralCustodyTokenAccount: collateralCustodyConfig.tokenAccount,
2132
2069
  eventAuthority: this.eventAuthority.publicKey,
2133
2070
  tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
@@ -2230,7 +2167,7 @@ var PerpetualsClient = (function () {
2230
2167
  isWritable: false,
2231
2168
  });
2232
2169
  custodyCustomOracles.push({
2233
- pubkey: this.poolConfig.backupOracle,
2170
+ pubkey: poolConfig.backupOracle,
2234
2171
  isSigner: false,
2235
2172
  isWritable: false,
2236
2173
  });
@@ -2263,16 +2200,16 @@ var PerpetualsClient = (function () {
2263
2200
  pool: poolConfig.poolAddress,
2264
2201
  receivingCustody: collateralCustodyConfig.custodyAccount,
2265
2202
  receivingCustodyOracleAccount: collateralCustodyConfig.oracleAddress,
2266
- receivingCustodyCustomOracleAccount: this.poolConfig.backupOracle,
2203
+ receivingCustodyCustomOracleAccount: poolConfig.backupOracle,
2267
2204
  receivingCustodyTokenAccount: collateralCustodyConfig.tokenAccount,
2268
2205
  dispensingCustody: outputCustodyConfig.custodyAccount,
2269
2206
  dispensingCustodyOracleAccount: outputCustodyConfig.oracleAddress,
2270
- dispensingCustodyCustomOracleAccount: this.poolConfig.backupOracle,
2207
+ dispensingCustodyCustomOracleAccount: poolConfig.backupOracle,
2271
2208
  dispensingCustodyTokenAccount: outputCustodyConfig.tokenAccount,
2272
2209
  position: positionAccount,
2273
2210
  custody: marketCustodyConfig.custodyAccount,
2274
2211
  custodyOracleAccount: marketCustodyConfig.oracleAddress,
2275
- custodyCustomOracleAccount: this.poolConfig.backupOracle,
2212
+ custodyCustomOracleAccount: poolConfig.backupOracle,
2276
2213
  eventAuthority: this.eventAuthority.publicKey,
2277
2214
  tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
2278
2215
  perpProgram: this.programId,
@@ -2450,7 +2387,7 @@ var PerpetualsClient = (function () {
2450
2387
  isWritable: false,
2451
2388
  });
2452
2389
  custodyCustomOracles.push({
2453
- pubkey: this.poolConfig.backupOracle,
2390
+ pubkey: poolConfig.backupOracle,
2454
2391
  isSigner: false,
2455
2392
  isWritable: false,
2456
2393
  });
@@ -2484,11 +2421,11 @@ var PerpetualsClient = (function () {
2484
2421
  pool: poolConfig.poolAddress,
2485
2422
  receivingCustody: userInputCustodyConfig.custodyAccount,
2486
2423
  receivingCustodyOracleAccount: userInputCustodyConfig.oracleAddress,
2487
- receivingCustodyCustomOracleAccount: this.poolConfig.backupOracle,
2424
+ receivingCustodyCustomOracleAccount: poolConfig.backupOracle,
2488
2425
  receivingCustodyTokenAccount: userInputCustodyConfig.tokenAccount,
2489
2426
  dispensingCustody: userOutputCustodyConfig.custodyAccount,
2490
2427
  dispensingCustodyOracleAccount: userOutputCustodyConfig.oracleAddress,
2491
- dispensingCustodyCustomOracleAccount: this.poolConfig.backupOracle,
2428
+ dispensingCustodyCustomOracleAccount: poolConfig.backupOracle,
2492
2429
  dispensingCustodyTokenAccount: userOutputCustodyConfig.tokenAccount,
2493
2430
  eventAuthority: this.eventAuthority.publicKey,
2494
2431
  tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
@@ -2595,10 +2532,10 @@ var PerpetualsClient = (function () {
2595
2532
  pool: poolConfig.poolAddress,
2596
2533
  custody: marketCustodyConfig.custodyAccount,
2597
2534
  custodyOracleAccount: marketCustodyConfig.oracleAddress,
2598
- custodyCustomOracleAccount: this.poolConfig.backupOracle,
2535
+ custodyCustomOracleAccount: poolConfig.backupOracle,
2599
2536
  collateralCustody: collateralCustodyConfig.custodyAccount,
2600
2537
  collateralCustodyOracleAccount: collateralCustodyConfig.oracleAddress,
2601
- collateralCustodyCustomOracleAccount: this.poolConfig.backupOracle,
2538
+ collateralCustodyCustomOracleAccount: poolConfig.backupOracle,
2602
2539
  collateralCustodyTokenAccount: collateralCustodyConfig.tokenAccount,
2603
2540
  eventAuthority: this.eventAuthority.publicKey,
2604
2541
  tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
@@ -2708,7 +2645,7 @@ var PerpetualsClient = (function () {
2708
2645
  isWritable: false,
2709
2646
  });
2710
2647
  custodyCustomOracles.push({
2711
- pubkey: this.poolConfig.backupOracle,
2648
+ pubkey: poolConfig.backupOracle,
2712
2649
  isSigner: false,
2713
2650
  isWritable: false,
2714
2651
  });
@@ -2740,15 +2677,15 @@ var PerpetualsClient = (function () {
2740
2677
  pool: poolConfig.poolAddress,
2741
2678
  receivingCustody: inputCustodyConfig.custodyAccount,
2742
2679
  receivingCustodyOracleAccount: inputCustodyConfig.oracleAddress,
2743
- receivingCustodyCustomOracleAccount: this.poolConfig.backupOracle,
2680
+ receivingCustodyCustomOracleAccount: poolConfig.backupOracle,
2744
2681
  receivingCustodyTokenAccount: inputCustodyConfig.tokenAccount,
2745
2682
  dispensingCustody: collateralCustodyConfig.custodyAccount,
2746
2683
  dispensingCustodyOracleAccount: collateralCustodyConfig.oracleAddress,
2747
- dispensingCustodyCustomOracleAccount: this.poolConfig.backupOracle,
2684
+ dispensingCustodyCustomOracleAccount: poolConfig.backupOracle,
2748
2685
  dispensingCustodyTokenAccount: collateralCustodyConfig.tokenAccount,
2749
2686
  custody: marketCustodyConfig.custodyAccount,
2750
2687
  custodyOracleAccount: marketCustodyConfig.oracleAddress,
2751
- custodyCustomOracleAccount: this.poolConfig.backupOracle,
2688
+ custodyCustomOracleAccount: poolConfig.backupOracle,
2752
2689
  eventAuthority: this.eventAuthority.publicKey,
2753
2690
  tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
2754
2691
  perpProgram: this.programId,
@@ -2842,10 +2779,10 @@ var PerpetualsClient = (function () {
2842
2779
  position: positionPubKey,
2843
2780
  custody: marketCustodyConfig.custodyAccount,
2844
2781
  custodyOracleAccount: marketCustodyConfig.oracleAddress,
2845
- custodyCustomOracleAccount: this.poolConfig.backupOracle,
2782
+ custodyCustomOracleAccount: poolConfig.backupOracle,
2846
2783
  collateralCustody: collateralCustodyConfig.custodyAccount,
2847
2784
  collateralCustodyOracleAccount: collateralCustodyConfig.oracleAddress,
2848
- collateralCustodyCustomOracleAccount: this.poolConfig.backupOracle,
2785
+ collateralCustodyCustomOracleAccount: poolConfig.backupOracle,
2849
2786
  collateralCustodyTokenAccount: collateralCustodyConfig.tokenAccount,
2850
2787
  eventAuthority: this.eventAuthority.publicKey,
2851
2788
  tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
@@ -2949,7 +2886,7 @@ var PerpetualsClient = (function () {
2949
2886
  isWritable: false,
2950
2887
  });
2951
2888
  custodyCustomOracles.push({
2952
- pubkey: this.poolConfig.backupOracle,
2889
+ pubkey: poolConfig.backupOracle,
2953
2890
  isSigner: false,
2954
2891
  isWritable: false,
2955
2892
  });
@@ -2982,16 +2919,16 @@ var PerpetualsClient = (function () {
2982
2919
  pool: poolConfig.poolAddress,
2983
2920
  receivingCustody: collateralCustodyConfig.custodyAccount,
2984
2921
  receivingCustodyOracleAccount: collateralCustodyConfig.oracleAddress,
2985
- receivingCustodyCustomOracleAccount: this.poolConfig.backupOracle,
2922
+ receivingCustodyCustomOracleAccount: poolConfig.backupOracle,
2986
2923
  receivingCustodyTokenAccount: collateralCustodyConfig.tokenAccount,
2987
2924
  dispensingCustody: outputCustodyConfig.custodyAccount,
2988
2925
  dispensingCustodyOracleAccount: outputCustodyConfig.oracleAddress,
2989
- dispensingCustodyCustomOracleAccount: this.poolConfig.backupOracle,
2926
+ dispensingCustodyCustomOracleAccount: poolConfig.backupOracle,
2990
2927
  dispensingCustodyTokenAccount: outputCustodyConfig.tokenAccount,
2991
2928
  position: positionAccount,
2992
2929
  custody: marketCustodyConfig.custodyAccount,
2993
2930
  custodyOracleAccount: marketCustodyConfig.oracleAddress,
2994
- custodyCustomOracleAccount: this.poolConfig.backupOracle,
2931
+ custodyCustomOracleAccount: poolConfig.backupOracle,
2995
2932
  eventAuthority: this.eventAuthority.publicKey,
2996
2933
  tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
2997
2934
  perpProgram: this.programId,
@@ -3041,10 +2978,10 @@ var PerpetualsClient = (function () {
3041
2978
  position: positionPubKey,
3042
2979
  custody: marketCustodyConfig.custodyAccount,
3043
2980
  custodyOracleAccount: marketCustodyConfig.oracleAddress,
3044
- custodyCustomOracleAccount: this.poolConfig.backupOracle,
2981
+ custodyCustomOracleAccount: poolConfig.backupOracle,
3045
2982
  collateralCustody: collateralCustodyConfig.custodyAccount,
3046
2983
  collateralCustodyOracleAccount: collateralCustodyConfig.oracleAddress,
3047
- collateralCustodyCustomOracleAccount: this.poolConfig.backupOracle,
2984
+ collateralCustodyCustomOracleAccount: poolConfig.backupOracle,
3048
2985
  eventAuthority: this.eventAuthority.publicKey,
3049
2986
  program: this.programId,
3050
2987
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY
@@ -3093,10 +3030,10 @@ var PerpetualsClient = (function () {
3093
3030
  position: positionPubKey,
3094
3031
  custody: marketCustodyConfig.custodyAccount,
3095
3032
  custodyOracleAccount: marketCustodyConfig.oracleAddress,
3096
- custodyCustomOracleAccount: this.poolConfig.backupOracle,
3033
+ custodyCustomOracleAccount: poolConfig.backupOracle,
3097
3034
  collateralCustody: collateralCustodyConfig.custodyAccount,
3098
3035
  collateralCustodyOracleAccount: collateralCustodyConfig.oracleAddress,
3099
- collateralCustodyCustomOracleAccount: this.poolConfig.backupOracle,
3036
+ collateralCustodyCustomOracleAccount: poolConfig.backupOracle,
3100
3037
  collateralCustodyTokenAccount: collateralCustodyConfig.tokenAccount,
3101
3038
  eventAuthority: this.eventAuthority.publicKey,
3102
3039
  program: this.programId,
@@ -3154,7 +3091,7 @@ var PerpetualsClient = (function () {
3154
3091
  isWritable: false,
3155
3092
  });
3156
3093
  custodyCustomOracles.push({
3157
- pubkey: this.poolConfig.backupOracle,
3094
+ pubkey: poolConfig.backupOracle,
3158
3095
  isSigner: false,
3159
3096
  isWritable: false,
3160
3097
  });
@@ -3236,7 +3173,7 @@ var PerpetualsClient = (function () {
3236
3173
  pool: poolConfig.poolAddress,
3237
3174
  custody: payTokenCustodyConfig.custodyAccount,
3238
3175
  custodyOracleAccount: payTokenCustodyConfig.oracleAddress,
3239
- custodyCustomOracleAccount: this.poolConfig.backupOracle,
3176
+ custodyCustomOracleAccount: poolConfig.backupOracle,
3240
3177
  custodyTokenAccount: payTokenCustodyConfig.tokenAccount,
3241
3178
  lpTokenMint: poolConfig.lpTokenMint,
3242
3179
  eventAuthority: this.eventAuthority.publicKey,
@@ -3301,7 +3238,7 @@ var PerpetualsClient = (function () {
3301
3238
  isWritable: false,
3302
3239
  });
3303
3240
  custodyCustomOracles.push({
3304
- pubkey: this.poolConfig.backupOracle,
3241
+ pubkey: poolConfig.backupOracle,
3305
3242
  isSigner: false,
3306
3243
  isWritable: false,
3307
3244
  });
@@ -3370,7 +3307,7 @@ var PerpetualsClient = (function () {
3370
3307
  pool: poolConfig.poolAddress,
3371
3308
  custody: recieveTokenCustodyConfig.custodyAccount,
3372
3309
  custodyOracleAccount: recieveTokenCustodyConfig.oracleAddress,
3373
- custodyCustomOracleAccount: this.poolConfig.backupOracle,
3310
+ custodyCustomOracleAccount: poolConfig.backupOracle,
3374
3311
  custodyTokenAccount: recieveTokenCustodyConfig.tokenAccount,
3375
3312
  lpTokenMint: poolConfig.lpTokenMint,
3376
3313
  eventAuthority: this.eventAuthority.publicKey,
@@ -3405,10 +3342,9 @@ var PerpetualsClient = (function () {
3405
3342
  };
3406
3343
  this.provider = provider;
3407
3344
  (0, anchor_1.setProvider)(provider);
3408
- this.program = new anchor_1.Program(perpetuals_1.IDL, poolConfig.programId);
3345
+ this.program = new anchor_1.Program(perpetuals_1.IDL, programId);
3409
3346
  this.programPerpComposability = new anchor_1.Program(perp_composability_1.IDL, composabilityProgramId);
3410
- this.poolConfig = poolConfig;
3411
- this.programId = poolConfig.programId;
3347
+ this.programId = programId;
3412
3348
  this.composabilityProgramId = composabilityProgramId;
3413
3349
  this.admin = this.provider.wallet.publicKey;
3414
3350
  this.multisig = this.findProgramAddress("multisig");
@@ -3447,6 +3383,40 @@ var PerpetualsClient = (function () {
3447
3383
  }
3448
3384
  return newRatio;
3449
3385
  };
3386
+ PerpetualsClient.prototype.getPriceAfterSlippage = function (isEntry, slippageBps, marketPrice, marketEmaPrice, side, custody) {
3387
+ if (isEntry) {
3388
+ var current_price = this.getEntryPriceSync(side, marketPrice, marketEmaPrice, custody);
3389
+ var spread_i = (0, utils_1.checkedDecimalCeilMul)(current_price, new anchor_1.BN(-1 * constants_1.PRICE_DECIMALS), slippageBps, new anchor_1.BN(-1 * constants_1.BPS_DECIMALS), new anchor_1.BN(-1 * constants_1.PRICE_DECIMALS));
3390
+ if ((0, types_1.isVariant)(side, 'long')) {
3391
+ return current_price.add(spread_i);
3392
+ }
3393
+ else {
3394
+ if (spread_i.lt(current_price)) {
3395
+ return current_price.sub(spread_i);
3396
+ }
3397
+ else {
3398
+ return constants_1.BN_ZERO;
3399
+ }
3400
+ ;
3401
+ }
3402
+ }
3403
+ else {
3404
+ var current_price = this.getExitPriceSync(side, marketPrice, marketEmaPrice, custody);
3405
+ var spread_i = (0, utils_1.checkedDecimalCeilMul)(current_price, new anchor_1.BN(-1 * constants_1.PRICE_DECIMALS), slippageBps, new anchor_1.BN(-1 * constants_1.BPS_DECIMALS), new anchor_1.BN(-1 * constants_1.PRICE_DECIMALS));
3406
+ if ((0, types_1.isVariant)(side, 'long')) {
3407
+ if (spread_i.lt(current_price)) {
3408
+ return current_price.sub(spread_i);
3409
+ }
3410
+ else {
3411
+ return constants_1.BN_ZERO;
3412
+ }
3413
+ ;
3414
+ }
3415
+ else {
3416
+ return current_price.add(spread_i);
3417
+ }
3418
+ }
3419
+ };
3450
3420
  PerpetualsClient.prototype.sendTransaction = function (ixs, opts) {
3451
3421
  if (opts === void 0) { opts = {}; }
3452
3422
  return __awaiter(this, void 0, void 0, function () {
@@ -1,9 +1,7 @@
1
1
  /// <reference types="bn.js" />
2
2
  import { BN } from "@coral-xyz/anchor";
3
- import { Pool, Side, TokenRatios } from "./types";
3
+ import { Pool, TokenRatios } from "./types";
4
4
  import { PublicKey } from "@solana/web3.js";
5
- import { CustodyAccount } from "./CustodyAccount";
6
- import { OraclePrice } from "./OraclePrice";
7
5
  export declare class PoolAccount implements Pool {
8
6
  publicKey: PublicKey;
9
7
  name: string;
@@ -17,8 +15,4 @@ export declare class PoolAccount implements Pool {
17
15
  static from(publicKey: PublicKey, parseData: Pool): PoolAccount;
18
16
  updatePoolData(parseData: Pool): void;
19
17
  getTokenId(custodyKey: PublicKey): number;
20
- static getPriceAfterSlippage(isEntry: boolean, slippageBps: BN, token_price: OraclePrice, token_ema_price: OraclePrice, side: Side, custody: CustodyAccount): BN;
21
- static getPrice(token_price: OraclePrice, token_ema_price: OraclePrice, side: Side, spread: BN): OraclePrice;
22
- static getEntryPrice(token_price: OraclePrice, token_ema_price: OraclePrice, side: Side, custody: CustodyAccount): BN;
23
- static getExitPrice(token_price: OraclePrice, token_ema_price: OraclePrice, side: Side, custody: CustodyAccount): BN;
24
18
  }
@@ -1,11 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PoolAccount = void 0;
4
- var constants_1 = require("./constants");
5
- var anchor_1 = require("@coral-xyz/anchor");
6
- var types_1 = require("./types");
7
- var OraclePrice_1 = require("./OraclePrice");
8
- var utils_1 = require("./utils");
9
4
  var PoolAccount = (function () {
10
5
  function PoolAccount(publicKey, parseData) {
11
6
  this.publicKey = publicKey;
@@ -20,90 +15,6 @@ var PoolAccount = (function () {
20
15
  PoolAccount.prototype.getTokenId = function (custodyKey) {
21
16
  return this.custodies.findIndex(function (i) { return i.toBase58() == custodyKey.toBase58(); });
22
17
  };
23
- PoolAccount.getPriceAfterSlippage = function (isEntry, slippageBps, token_price, token_ema_price, side, custody) {
24
- if (isEntry) {
25
- var current_price = this.getEntryPrice(token_price, token_ema_price, side, custody);
26
- var spread_i = (0, utils_1.checkedDecimalCeilMul)(current_price, new anchor_1.BN(-1 * constants_1.PRICE_DECIMALS), slippageBps, new anchor_1.BN(-1 * constants_1.BPS_DECIMALS), new anchor_1.BN(-1 * constants_1.PRICE_DECIMALS));
27
- if ((0, types_1.isVariant)(side, 'long')) {
28
- return current_price.add(spread_i);
29
- }
30
- else {
31
- if (spread_i.lt(current_price)) {
32
- return current_price.sub(spread_i);
33
- }
34
- else {
35
- return constants_1.BN_ZERO;
36
- }
37
- ;
38
- }
39
- }
40
- else {
41
- var current_price = this.getExitPrice(token_price, token_ema_price, side, custody);
42
- var spread_i = (0, utils_1.checkedDecimalCeilMul)(current_price, new anchor_1.BN(-1 * constants_1.PRICE_DECIMALS), slippageBps, new anchor_1.BN(-1 * constants_1.BPS_DECIMALS), new anchor_1.BN(-1 * constants_1.PRICE_DECIMALS));
43
- if ((0, types_1.isVariant)(side, 'long')) {
44
- if (spread_i.lt(current_price)) {
45
- return current_price.sub(spread_i);
46
- }
47
- else {
48
- return constants_1.BN_ZERO;
49
- }
50
- ;
51
- }
52
- else {
53
- return current_price.add(spread_i);
54
- }
55
- }
56
- };
57
- PoolAccount.getPrice = function (token_price, token_ema_price, side, spread) {
58
- if ((0, types_1.isVariant)(side, 'long')) {
59
- var max_price = void 0;
60
- if (token_price.cmp(token_ema_price)) {
61
- max_price = token_price;
62
- }
63
- else {
64
- max_price = token_ema_price;
65
- }
66
- ;
67
- var spread_i = (0, utils_1.checkedDecimalCeilMul)(max_price.price, max_price.exponent, spread, new anchor_1.BN(-1 * constants_1.BPS_DECIMALS), max_price.exponent);
68
- return new OraclePrice_1.OraclePrice({
69
- price: max_price.price.add(spread_i),
70
- exponent: max_price.exponent,
71
- confidence: constants_1.BN_ZERO,
72
- });
73
- }
74
- else {
75
- var min_price = void 0;
76
- if (token_price.cmp(token_ema_price)) {
77
- min_price = token_ema_price;
78
- }
79
- else {
80
- min_price = token_price;
81
- }
82
- ;
83
- var spread_i = (0, utils_1.checkedDecimalMul)(min_price.price, min_price.exponent, spread, new anchor_1.BN(-1 * constants_1.BPS_DECIMALS), min_price.exponent);
84
- var price = void 0;
85
- if (spread_i.lt(min_price.price)) {
86
- price = min_price.price.sub(spread_i);
87
- }
88
- else {
89
- price = constants_1.BN_ZERO;
90
- }
91
- ;
92
- return new OraclePrice_1.OraclePrice({
93
- price: price,
94
- exponent: min_price.exponent,
95
- confidence: constants_1.BN_ZERO,
96
- });
97
- }
98
- };
99
- PoolAccount.getEntryPrice = function (token_price, token_ema_price, side, custody) {
100
- var price = PoolAccount.getPrice(token_price, token_ema_price, ((0, types_1.isVariant)(side, 'long')) ? types_1.Side.Long : types_1.Side.Short, ((0, types_1.isVariant)(side, 'long')) ? custody.pricing.tradeSpreadLong : custody.pricing.tradeSpreadShort);
101
- return price.scale_to_exponent(new anchor_1.BN(-1 * constants_1.PRICE_DECIMALS)).price;
102
- };
103
- PoolAccount.getExitPrice = function (token_price, token_ema_price, side, custody) {
104
- var price = PoolAccount.getPrice(token_price, token_ema_price, ((0, types_1.isVariant)(side, 'long')) ? types_1.Side.Short : types_1.Side.Long, ((0, types_1.isVariant)(side, 'long')) ? custody.pricing.tradeSpreadShort : custody.pricing.tradeSpreadLong);
105
- return price.scale_to_exponent(new anchor_1.BN(-1 * constants_1.PRICE_DECIMALS)).price;
106
- };
107
18
  return PoolAccount;
108
19
  }());
109
20
  exports.PoolAccount = PoolAccount;
@@ -10,7 +10,6 @@ export interface CustodyConfig {
10
10
  isStable: boolean;
11
11
  isVirtual: boolean;
12
12
  oracleAddress: PublicKey;
13
- pythPriceId: string;
14
13
  }
15
14
  export type Token = {
16
15
  symbol: string;
@@ -19,6 +18,7 @@ export type Token = {
19
18
  isStable: boolean;
20
19
  isVirtual: boolean;
21
20
  pythTicker: string;
21
+ pythPriceId: string;
22
22
  };
23
23
  export declare class PoolConfig {
24
24
  programId: PublicKey;
@@ -27,6 +27,7 @@ export declare class PoolConfig {
27
27
  poolAddress: PublicKey;
28
28
  lpTokenMint: PublicKey;
29
29
  lpDecimals: number;
30
+ lpTokenSymbol: string;
30
31
  perpetuals: PublicKey;
31
32
  transferAuthority: PublicKey;
32
33
  multisig: PublicKey;
@@ -34,7 +35,7 @@ export declare class PoolConfig {
34
35
  backupOracle: PublicKey;
35
36
  tokens: Token[];
36
37
  custodies: CustodyConfig[];
37
- constructor(programId: PublicKey, cluster: Cluster, poolName: string, poolAddress: PublicKey, lpTokenMint: PublicKey, lpDecimals: number, perpetuals: PublicKey, transferAuthority: PublicKey, multisig: PublicKey, addressLookupTableAddresses: PublicKey[], backupOracle: PublicKey, tokens: Token[], custodies: CustodyConfig[]);
38
+ constructor(programId: PublicKey, cluster: Cluster, poolName: string, poolAddress: PublicKey, lpTokenMint: PublicKey, lpDecimals: number, lpTokenSymbol: string, perpetuals: PublicKey, transferAuthority: PublicKey, multisig: PublicKey, addressLookupTableAddresses: PublicKey[], backupOracle: PublicKey, tokens: Token[], custodies: CustodyConfig[]);
38
39
  getAllTokenMints(): PublicKey[];
39
40
  getNonStableTokens(): PublicKey[];
40
41
  getAllCustodies(): PublicKey[];