@drift-labs/sdk 2.86.0-beta.9 → 2.87.0-beta.1

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.
Files changed (39) hide show
  1. package/VERSION +1 -1
  2. package/lib/addresses/pda.d.ts +1 -0
  3. package/lib/addresses/pda.js +8 -1
  4. package/lib/adminClient.d.ts +8 -4
  5. package/lib/adminClient.js +51 -8
  6. package/lib/bankrun/bankrunConnection.d.ts +1 -0
  7. package/lib/bankrun/bankrunConnection.js +6 -0
  8. package/lib/constants/numericConstants.d.ts +2 -0
  9. package/lib/constants/numericConstants.js +3 -1
  10. package/lib/constants/perpMarkets.js +139 -126
  11. package/lib/constants/spotMarkets.js +52 -40
  12. package/lib/driftClient.d.ts +12 -14
  13. package/lib/driftClient.js +147 -9
  14. package/lib/idl/drift.json +344 -10
  15. package/lib/idl/pyth_solana_receiver.json +628 -0
  16. package/lib/math/fuel.d.ts +1 -0
  17. package/lib/math/fuel.js +12 -2
  18. package/lib/types.d.ts +25 -6
  19. package/lib/types.js +3 -2
  20. package/lib/user.d.ts +6 -5
  21. package/lib/user.js +36 -18
  22. package/package.json +1 -1
  23. package/src/addresses/pda.ts +15 -0
  24. package/src/adminClient.ts +119 -7
  25. package/src/bankrun/bankrunConnection.ts +13 -0
  26. package/src/constants/numericConstants.ts +2 -0
  27. package/src/constants/perpMarkets.ts +142 -126
  28. package/src/constants/spotMarkets.ts +54 -40
  29. package/src/driftClient.ts +203 -16
  30. package/src/idl/drift.json +344 -10
  31. package/src/idl/openbook.json +3854 -0
  32. package/src/idl/pyth_solana_receiver.json +628 -0
  33. package/src/math/fuel.ts +15 -1
  34. package/src/types.ts +28 -7
  35. package/src/user.ts +119 -55
  36. package/tests/ci/verifyConstants.ts +214 -0
  37. package/tests/dlob/helpers.ts +30 -0
  38. package/tests/user/helpers.ts +1 -0
  39. package/tests/user/test.ts +2 -0
package/VERSION CHANGED
@@ -1 +1 @@
1
- 2.86.0-beta.9
1
+ 2.87.0-beta.1
@@ -17,6 +17,7 @@ export declare function getSerumOpenOrdersPublicKey(programId: PublicKey, market
17
17
  export declare function getSerumSignerPublicKey(programId: PublicKey, market: PublicKey, nonce: BN): PublicKey;
18
18
  export declare function getSerumFulfillmentConfigPublicKey(programId: PublicKey, market: PublicKey): PublicKey;
19
19
  export declare function getPhoenixFulfillmentConfigPublicKey(programId: PublicKey, market: PublicKey): PublicKey;
20
+ export declare function getOpenbookV2FulfillmentConfigPublicKey(programId: PublicKey, market: PublicKey): PublicKey;
20
21
  export declare function getReferrerNamePublicKeySync(programId: PublicKey, nameBuffer: number[]): PublicKey;
21
22
  export declare function getProtocolIfSharesTransferConfigPublicKey(programId: PublicKey): PublicKey;
22
23
  export declare function getPrelaunchOraclePublicKey(programId: PublicKey, marketIndex: number): PublicKey;
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.getPythPullOraclePublicKey = exports.getPrelaunchOraclePublicKey = exports.getProtocolIfSharesTransferConfigPublicKey = exports.getReferrerNamePublicKeySync = exports.getPhoenixFulfillmentConfigPublicKey = exports.getSerumFulfillmentConfigPublicKey = exports.getSerumSignerPublicKey = exports.getSerumOpenOrdersPublicKey = exports.getDriftSignerPublicKey = exports.getInsuranceFundStakeAccountPublicKey = exports.getInsuranceFundVaultPublicKey = exports.getSpotMarketVaultPublicKey = exports.getSpotMarketPublicKey = exports.getPerpMarketPublicKey = exports.getUserStatsAccountPublicKey = exports.getUserAccountPublicKeySync = exports.getUserAccountPublicKey = exports.getUserAccountPublicKeyAndNonce = exports.getDriftStateAccountPublicKey = exports.getDriftStateAccountPublicKeyAndNonce = void 0;
26
+ exports.getPythPullOraclePublicKey = exports.getPrelaunchOraclePublicKey = exports.getProtocolIfSharesTransferConfigPublicKey = exports.getReferrerNamePublicKeySync = exports.getOpenbookV2FulfillmentConfigPublicKey = exports.getPhoenixFulfillmentConfigPublicKey = exports.getSerumFulfillmentConfigPublicKey = exports.getSerumSignerPublicKey = exports.getSerumOpenOrdersPublicKey = exports.getDriftSignerPublicKey = exports.getInsuranceFundStakeAccountPublicKey = exports.getInsuranceFundVaultPublicKey = exports.getSpotMarketVaultPublicKey = exports.getSpotMarketPublicKey = exports.getPerpMarketPublicKey = exports.getUserStatsAccountPublicKey = exports.getUserAccountPublicKeySync = exports.getUserAccountPublicKey = exports.getUserAccountPublicKeyAndNonce = exports.getDriftStateAccountPublicKey = exports.getDriftStateAccountPublicKeyAndNonce = void 0;
27
27
  const web3_js_1 = require("@solana/web3.js");
28
28
  const anchor = __importStar(require("@coral-xyz/anchor"));
29
29
  async function getDriftStateAccountPublicKeyAndNonce(programId) {
@@ -126,6 +126,13 @@ function getPhoenixFulfillmentConfigPublicKey(programId, market) {
126
126
  ], programId)[0];
127
127
  }
128
128
  exports.getPhoenixFulfillmentConfigPublicKey = getPhoenixFulfillmentConfigPublicKey;
129
+ function getOpenbookV2FulfillmentConfigPublicKey(programId, market) {
130
+ return web3_js_1.PublicKey.findProgramAddressSync([
131
+ Buffer.from(anchor.utils.bytes.utf8.encode('openbook_v2_fulfillment_config')),
132
+ market.toBuffer(),
133
+ ], programId)[0];
134
+ }
135
+ exports.getOpenbookV2FulfillmentConfigPublicKey = getOpenbookV2FulfillmentConfigPublicKey;
129
136
  function getReferrerNamePublicKeySync(programId, nameBuffer) {
130
137
  return web3_js_1.PublicKey.findProgramAddressSync([
131
138
  Buffer.from(anchor.utils.bytes.utf8.encode('referrer_name')),
@@ -17,6 +17,8 @@ export declare class AdminClient extends DriftClient {
17
17
  getInitializeSerumFulfillmentConfigIx(marketIndex: number, serumMarket: PublicKey, serumProgram: PublicKey): Promise<TransactionInstruction>;
18
18
  initializePhoenixFulfillmentConfig(marketIndex: number, phoenixMarket: PublicKey): Promise<TransactionSignature>;
19
19
  getInitializePhoenixFulfillmentConfigIx(marketIndex: number, phoenixMarket: PublicKey): Promise<TransactionInstruction>;
20
+ initializeOpenbookV2FulfillmentConfig(marketIndex: number, openbookMarket: PublicKey): Promise<TransactionSignature>;
21
+ getInitializeOpenbookV2FulfillmentConfigIx(marketIndex: number, openbookMarket: PublicKey): Promise<TransactionInstruction>;
20
22
  initializePerpMarket(marketIndex: number, priceOracle: PublicKey, baseAssetReserve: BN, quoteAssetReserve: BN, periodicity: BN, pegMultiplier?: BN, oracleSource?: OracleSource, contractTier?: ContractTier, marginRatioInitial?: number, marginRatioMaintenance?: number, liquidatorFee?: number, ifLiquidatorFee?: number, imfFactor?: number, activeStatus?: boolean, baseSpread?: number, maxSpread?: number, maxOpenInterest?: BN, maxRevenueWithdrawPerPeriod?: BN, quoteMaxInsurance?: BN, orderStepSize?: BN, orderTickSize?: BN, minOrderSize?: BN, concentrationCoefScale?: BN, curveUpdateIntensity?: number, ammJitIntensity?: number, name?: string): Promise<TransactionSignature>;
21
23
  getInitializePerpMarketIx(marketIndex: number, priceOracle: PublicKey, baseAssetReserve: BN, quoteAssetReserve: BN, periodicity: BN, pegMultiplier?: BN, oracleSource?: OracleSource, contractTier?: ContractTier, marginRatioInitial?: number, marginRatioMaintenance?: number, liquidatorFee?: number, ifLiquidatorFee?: number, imfFactor?: number, activeStatus?: boolean, baseSpread?: number, maxSpread?: number, maxOpenInterest?: BN, maxRevenueWithdrawPerPeriod?: BN, quoteMaxInsurance?: BN, orderStepSize?: BN, orderTickSize?: BN, minOrderSize?: BN, concentrationCoefScale?: BN, curveUpdateIntensity?: number, ammJitIntensity?: number, name?: string): Promise<TransactionInstruction>;
22
24
  deleteInitializedPerpMarket(marketIndex: number): Promise<TransactionSignature>;
@@ -89,8 +91,8 @@ export declare class AdminClient extends DriftClient {
89
91
  getUpdateSpotMarketRevenueSettlePeriodIx(spotMarketIndex: number, revenueSettlePeriod: BN): Promise<TransactionInstruction>;
90
92
  updateSpotMarketMaxTokenDeposits(spotMarketIndex: number, maxTokenDeposits: BN): Promise<TransactionSignature>;
91
93
  getUpdateSpotMarketMaxTokenDepositsIx(spotMarketIndex: number, maxTokenDeposits: BN): Promise<TransactionInstruction>;
92
- updateSpotMarketMaxTokenBorrows(spotMarketIndex: number, maxTokenBorrows: BN): Promise<TransactionSignature>;
93
- getUpdateSpotMarketMaxTokenBorrowsIx(spotMarketIndex: number, maxTokenBorrows: BN): Promise<TransactionInstruction>;
94
+ updateSpotMarketMaxTokenBorrows(spotMarketIndex: number, maxTokenBorrowsFraction: number): Promise<TransactionSignature>;
95
+ getUpdateSpotMarketMaxTokenBorrowsIx(spotMarketIndex: number, maxTokenBorrowsFraction: number): Promise<TransactionInstruction>;
94
96
  updateSpotMarketScaleInitialAssetWeightStart(spotMarketIndex: number, scaleInitialAssetWeightStart: BN): Promise<TransactionSignature>;
95
97
  getUpdateSpotMarketScaleInitialAssetWeightStartIx(spotMarketIndex: number, scaleInitialAssetWeightStart: BN): Promise<TransactionInstruction>;
96
98
  updateInsuranceFundUnstakingPeriod(spotMarketIndex: number, insuranceWithdrawEscrowPeriod: BN): Promise<TransactionSignature>;
@@ -179,10 +181,12 @@ export declare class AdminClient extends DriftClient {
179
181
  getUpdatePrelaunchOracleParamsIx(perpMarketIndex: number, price?: BN, maxPrice?: BN): Promise<TransactionInstruction>;
180
182
  deletePrelaunchOracle(perpMarketIndex: number): Promise<TransactionSignature>;
181
183
  getDeletePrelaunchOracleIx(perpMarketIndex: number, price?: BN, maxPrice?: BN): Promise<TransactionInstruction>;
182
- updateSpotMarketFuel(spotMarketIndex: number, fuelBoostDeposits?: number, fuelBoostBorrows?: number, fuelBoostTaker?: number, fuelBoostMaker?: number): Promise<TransactionSignature>;
183
- getUpdateSpotMarketFuelIx(spotMarketIndex: number, fuelBoostDeposits?: number, fuelBoostBorrows?: number, fuelBoostTaker?: number, fuelBoostMaker?: number): Promise<TransactionInstruction>;
184
+ updateSpotMarketFuel(spotMarketIndex: number, fuelBoostDeposits?: number, fuelBoostBorrows?: number, fuelBoostTaker?: number, fuelBoostMaker?: number, fuelBoostInsurance?: number): Promise<TransactionSignature>;
185
+ getUpdateSpotMarketFuelIx(spotMarketIndex: number, fuelBoostDeposits?: number, fuelBoostBorrows?: number, fuelBoostTaker?: number, fuelBoostMaker?: number, fuelBoostInsurance?: number): Promise<TransactionInstruction>;
184
186
  updatePerpMarketFuel(perpMarketIndex: number, fuelBoostTaker?: number, fuelBoostMaker?: number, fuelBoostPosition?: number): Promise<TransactionSignature>;
185
187
  getUpdatePerpMarketFuelIx(perpMarketIndex: number, fuelBoostTaker?: number, fuelBoostMaker?: number, fuelBoostPosition?: number): Promise<TransactionInstruction>;
188
+ initUserFuel(user: PublicKey, authority: PublicKey, fuelBonusDeposits?: number, fuelBonusBorrows?: number, fuelBonusTaker?: number, fuelBonusMaker?: number, fuelBonusInsurance?: number): Promise<TransactionSignature>;
189
+ getInitUserFuelIx(user: PublicKey, authority: PublicKey, fuelBonusDeposits?: number, fuelBonusBorrows?: number, fuelBonusTaker?: number, fuelBonusMaker?: number, fuelBonusInsurance?: number): Promise<TransactionInstruction>;
186
190
  initializePythPullOracle(feedId: string): Promise<TransactionSignature>;
187
191
  getInitializePythPullOracleIx(feedId: string): Promise<TransactionInstruction>;
188
192
  }
@@ -39,6 +39,7 @@ const amm_1 = require("./math/amm");
39
39
  const phoenix_sdk_1 = require("@ellipsis-labs/phoenix-sdk");
40
40
  const config_1 = require("./config");
41
41
  const pythPullOracleUtils_1 = require("./util/pythPullOracleUtils");
42
+ const OPENBOOK_PROGRAM_ID = new web3_js_1.PublicKey('opnb2LAfJYbRMAHHvqjCwQxanZn7ReEHp1k81EohpZb');
42
43
  class AdminClient extends driftClient_1.DriftClient {
43
44
  async initialize(usdcMint, _adminControlsPrices) {
44
45
  const stateAccountRPCResponse = await this.connection.getParsedAccountInfo(await this.getStatePublicKey());
@@ -177,6 +178,31 @@ class AdminClient extends driftClient_1.DriftClient {
177
178
  },
178
179
  });
179
180
  }
181
+ async initializeOpenbookV2FulfillmentConfig(marketIndex, openbookMarket) {
182
+ const initializeIx = await this.getInitializeOpenbookV2FulfillmentConfigIx(marketIndex, openbookMarket);
183
+ const tx = await this.buildTransaction(initializeIx);
184
+ const { txSig } = await this.sendTransaction(tx, [], this.opts);
185
+ return txSig;
186
+ }
187
+ async getInitializeOpenbookV2FulfillmentConfigIx(marketIndex, openbookMarket) {
188
+ const openbookFulfillmentConfig = (0, pda_1.getOpenbookV2FulfillmentConfigPublicKey)(this.program.programId, openbookMarket);
189
+ return this.program.instruction.initializeOpenbookV2FulfillmentConfig(marketIndex, {
190
+ accounts: {
191
+ baseSpotMarket: this.getSpotMarketAccount(marketIndex).pubkey,
192
+ quoteSpotMarket: this.getQuoteSpotMarketAccount().pubkey,
193
+ state: await this.getStatePublicKey(),
194
+ openbookV2Program: OPENBOOK_PROGRAM_ID,
195
+ openbookV2Market: openbookMarket,
196
+ driftSigner: this.getSignerPublicKey(),
197
+ openbookV2FulfillmentConfig: openbookFulfillmentConfig,
198
+ admin: this.isSubscribed
199
+ ? this.getStateAccount().admin
200
+ : this.wallet.publicKey,
201
+ rent: web3_js_1.SYSVAR_RENT_PUBKEY,
202
+ systemProgram: anchor.web3.SystemProgram.programId,
203
+ },
204
+ });
205
+ }
180
206
  async initializePerpMarket(marketIndex, priceOracle, baseAssetReserve, quoteAssetReserve, periodicity, pegMultiplier = numericConstants_1.PEG_PRECISION, oracleSource = types_1.OracleSource.PYTH, contractTier = types_1.ContractTier.SPECULATIVE, marginRatioInitial = 2000, marginRatioMaintenance = 500, liquidatorFee = 0, ifLiquidatorFee = 10000, imfFactor = 0, activeStatus = true, baseSpread = 0, maxSpread = 142500, maxOpenInterest = numericConstants_1.ZERO, maxRevenueWithdrawPerPeriod = numericConstants_1.ZERO, quoteMaxInsurance = numericConstants_1.ZERO, orderStepSize = numericConstants_1.BASE_PRECISION.divn(10000), orderTickSize = numericConstants_1.PRICE_PRECISION.divn(100000), minOrderSize = numericConstants_1.BASE_PRECISION.divn(10000), concentrationCoefScale = numericConstants_1.ONE, curveUpdateIntensity = 0, ammJitIntensity = 0, name = userName_1.DEFAULT_MARKET_NAME) {
181
207
  const currentPerpMarketIndex = this.getStateAccount().numberOfMarkets;
182
208
  const initializeMarketIx = await this.getInitializePerpMarketIx(marketIndex, priceOracle, baseAssetReserve, quoteAssetReserve, periodicity, pegMultiplier, oracleSource, contractTier, marginRatioInitial, marginRatioMaintenance, liquidatorFee, ifLiquidatorFee, imfFactor, activeStatus, baseSpread, maxSpread, maxOpenInterest, maxRevenueWithdrawPerPeriod, quoteMaxInsurance, orderStepSize, orderTickSize, minOrderSize, concentrationCoefScale, curveUpdateIntensity, ammJitIntensity, name);
@@ -831,14 +857,14 @@ class AdminClient extends driftClient_1.DriftClient {
831
857
  },
832
858
  });
833
859
  }
834
- async updateSpotMarketMaxTokenBorrows(spotMarketIndex, maxTokenBorrows) {
835
- const updateSpotMarketMaxTokenBorrowsIx = await this.getUpdateSpotMarketMaxTokenBorrowsIx(spotMarketIndex, maxTokenBorrows);
860
+ async updateSpotMarketMaxTokenBorrows(spotMarketIndex, maxTokenBorrowsFraction) {
861
+ const updateSpotMarketMaxTokenBorrowsIx = await this.getUpdateSpotMarketMaxTokenBorrowsIx(spotMarketIndex, maxTokenBorrowsFraction);
836
862
  const tx = await this.buildTransaction(updateSpotMarketMaxTokenBorrowsIx);
837
863
  const { txSig } = await this.sendTransaction(tx, [], this.opts);
838
864
  return txSig;
839
865
  }
840
- async getUpdateSpotMarketMaxTokenBorrowsIx(spotMarketIndex, maxTokenBorrows) {
841
- return this.program.instruction.updateSpotMarketMaxTokenBorrows(maxTokenBorrows, {
866
+ async getUpdateSpotMarketMaxTokenBorrowsIx(spotMarketIndex, maxTokenBorrowsFraction) {
867
+ return this.program.instruction.updateSpotMarketMaxTokenBorrows(maxTokenBorrowsFraction, {
842
868
  accounts: {
843
869
  admin: this.isSubscribed
844
870
  ? this.getStateAccount().admin
@@ -1631,15 +1657,15 @@ class AdminClient extends driftClient_1.DriftClient {
1631
1657
  },
1632
1658
  });
1633
1659
  }
1634
- async updateSpotMarketFuel(spotMarketIndex, fuelBoostDeposits, fuelBoostBorrows, fuelBoostTaker, fuelBoostMaker) {
1635
- const updateSpotMarketFuelIx = await this.getUpdateSpotMarketFuelIx(spotMarketIndex, fuelBoostDeposits || null, fuelBoostBorrows || null, fuelBoostTaker || null, fuelBoostMaker || null);
1660
+ async updateSpotMarketFuel(spotMarketIndex, fuelBoostDeposits, fuelBoostBorrows, fuelBoostTaker, fuelBoostMaker, fuelBoostInsurance) {
1661
+ const updateSpotMarketFuelIx = await this.getUpdateSpotMarketFuelIx(spotMarketIndex, fuelBoostDeposits || null, fuelBoostBorrows || null, fuelBoostTaker || null, fuelBoostMaker || null, fuelBoostInsurance || null);
1636
1662
  const tx = await this.buildTransaction(updateSpotMarketFuelIx);
1637
1663
  const { txSig } = await this.sendTransaction(tx, [], this.opts);
1638
1664
  return txSig;
1639
1665
  }
1640
- async getUpdateSpotMarketFuelIx(spotMarketIndex, fuelBoostDeposits, fuelBoostBorrows, fuelBoostTaker, fuelBoostMaker) {
1666
+ async getUpdateSpotMarketFuelIx(spotMarketIndex, fuelBoostDeposits, fuelBoostBorrows, fuelBoostTaker, fuelBoostMaker, fuelBoostInsurance) {
1641
1667
  const spotMarketPublicKey = await (0, pda_1.getSpotMarketPublicKey)(this.program.programId, spotMarketIndex);
1642
- return await this.program.instruction.updateSpotMarketFuel(fuelBoostDeposits || null, fuelBoostBorrows || null, fuelBoostTaker || null, fuelBoostMaker || null, {
1668
+ return await this.program.instruction.updateSpotMarketFuel(fuelBoostDeposits || null, fuelBoostBorrows || null, fuelBoostTaker || null, fuelBoostMaker || null, fuelBoostInsurance || null, {
1643
1669
  accounts: {
1644
1670
  admin: this.isSubscribed
1645
1671
  ? this.getStateAccount().admin
@@ -1667,6 +1693,23 @@ class AdminClient extends driftClient_1.DriftClient {
1667
1693
  },
1668
1694
  });
1669
1695
  }
1696
+ async initUserFuel(user, authority, fuelBonusDeposits, fuelBonusBorrows, fuelBonusTaker, fuelBonusMaker, fuelBonusInsurance) {
1697
+ const updatePerpMarketFuelIx = await this.getInitUserFuelIx(user, authority, fuelBonusDeposits, fuelBonusBorrows, fuelBonusTaker, fuelBonusMaker, fuelBonusInsurance);
1698
+ const tx = await this.buildTransaction(updatePerpMarketFuelIx);
1699
+ const { txSig } = await this.sendTransaction(tx, [], this.opts);
1700
+ return txSig;
1701
+ }
1702
+ async getInitUserFuelIx(user, authority, fuelBonusDeposits, fuelBonusBorrows, fuelBonusTaker, fuelBonusMaker, fuelBonusInsurance) {
1703
+ const userStats = await (0, pda_1.getUserStatsAccountPublicKey)(this.program.programId, authority);
1704
+ return await this.program.instruction.initUserFuel(fuelBonusDeposits || null, fuelBonusBorrows || null, fuelBonusTaker || null, fuelBonusMaker || null, fuelBonusInsurance || null, {
1705
+ accounts: {
1706
+ admin: this.wallet.publicKey,
1707
+ state: await this.getStatePublicKey(),
1708
+ user,
1709
+ userStats,
1710
+ },
1711
+ });
1712
+ }
1670
1713
  async initializePythPullOracle(feedId) {
1671
1714
  const initializePythPullOracleIx = await this.getInitializePythPullOracleIx(feedId);
1672
1715
  const tx = await this.buildTransaction(initializePythPullOracleIx);
@@ -26,6 +26,7 @@ export declare class BankrunContextWrapper {
26
26
  getLatestBlockhash(): Promise<Blockhash>;
27
27
  printTxLogs(signature: string): void;
28
28
  moveTimeForward(increment: number): Promise<void>;
29
+ setTimestamp(unix_timestamp: number): Promise<void>;
29
30
  }
30
31
  export declare class BankrunConnection {
31
32
  private readonly _banksClient;
@@ -53,6 +53,12 @@ class BankrunContextWrapper {
53
53
  const newClock = new solana_bankrun_1.Clock(currentClock.slot, currentClock.epochStartTimestamp, currentClock.epoch, currentClock.leaderScheduleEpoch, newUnixTimestamp);
54
54
  await this.context.setClock(newClock);
55
55
  }
56
+ async setTimestamp(unix_timestamp) {
57
+ const currentClock = await this.context.banksClient.getClock();
58
+ const newUnixTimestamp = BigInt(unix_timestamp);
59
+ const newClock = new solana_bankrun_1.Clock(currentClock.slot, currentClock.epochStartTimestamp, currentClock.epoch, currentClock.leaderScheduleEpoch, newUnixTimestamp);
60
+ await this.context.setClock(newClock);
61
+ }
56
62
  }
57
63
  exports.BankrunContextWrapper = BankrunContextWrapper;
58
64
  class BankrunConnection {
@@ -57,6 +57,7 @@ export declare const FIVE_MINUTE: BN;
57
57
  export declare const ONE_HOUR: BN;
58
58
  export declare const ONE_YEAR: BN;
59
59
  export declare const QUOTE_SPOT_MARKET_INDEX = 0;
60
+ export declare const GOV_SPOT_MARKET_INDEX = 15;
60
61
  export declare const LAMPORTS_PRECISION: BN;
61
62
  export declare const LAMPORTS_EXP: BN;
62
63
  export declare const OPEN_ORDER_MARGIN_REQUIREMENT: BN;
@@ -66,3 +67,4 @@ export declare const IDLE_TIME_SLOTS = 9000;
66
67
  export declare const SLOT_TIME_ESTIMATE_MS = 400;
67
68
  export declare const DUST_POSITION_SIZE: BN;
68
69
  export declare const FUEL_WINDOW: BN;
70
+ export declare const FUEL_START_TS: BN;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MARGIN_PRECISION = exports.AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO = exports.PRICE_TO_QUOTE_PRECISION = exports.PRICE_DIV_PEG = exports.AMM_TO_QUOTE_PRECISION_RATIO = exports.BASE_PRECISION_EXP = exports.BASE_PRECISION = exports.AMM_RESERVE_PRECISION = exports.PEG_PRECISION = exports.FUNDING_RATE_BUFFER_PRECISION = exports.FUNDING_RATE_PRECISION = exports.PRICE_PRECISION = exports.QUOTE_PRECISION = exports.LIQUIDATION_FEE_PRECISION = exports.SPOT_MARKET_IMF_PRECISION = exports.SPOT_MARKET_IMF_PRECISION_EXP = exports.SPOT_MARKET_BALANCE_PRECISION = exports.SPOT_MARKET_BALANCE_PRECISION_EXP = exports.SPOT_MARKET_WEIGHT_PRECISION = exports.SPOT_MARKET_UTILIZATION_PRECISION = exports.SPOT_MARKET_UTILIZATION_PRECISION_EXP = exports.SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION = exports.SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION_EXP = exports.SPOT_MARKET_RATE_PRECISION = exports.SPOT_MARKET_RATE_PRECISION_EXP = exports.AMM_RESERVE_PRECISION_EXP = exports.PEG_PRECISION_EXP = exports.FUNDING_RATE_PRECISION_EXP = exports.PRICE_PRECISION_EXP = exports.FUNDING_RATE_BUFFER_PRECISION_EXP = exports.QUOTE_PRECISION_EXP = exports.CONCENTRATION_PRECISION = exports.PERCENTAGE_PRECISION = exports.PERCENTAGE_PRECISION_EXP = exports.MAX_LEVERAGE_ORDER_SIZE = exports.MAX_LEVERAGE = exports.TEN_MILLION = exports.BN_MAX = exports.TEN_THOUSAND = exports.TEN = exports.NINE = exports.EIGHT = exports.SEVEN = exports.SIX = exports.FIVE = exports.FOUR = exports.THREE = exports.TWO = exports.ONE = exports.ZERO = void 0;
4
- exports.FUEL_WINDOW = exports.DUST_POSITION_SIZE = exports.SLOT_TIME_ESTIMATE_MS = exports.IDLE_TIME_SLOTS = exports.ACCOUNT_AGE_DELETION_CUTOFF_SECONDS = exports.DEFAULT_REVENUE_SINCE_LAST_FUNDING_SPREAD_RETREAT = exports.OPEN_ORDER_MARGIN_REQUIREMENT = exports.LAMPORTS_EXP = exports.LAMPORTS_PRECISION = exports.QUOTE_SPOT_MARKET_INDEX = exports.ONE_YEAR = exports.ONE_HOUR = exports.FIVE_MINUTE = exports.FUNDING_RATE_OFFSET_DENOMINATOR = exports.LIQUIDATION_PCT_PRECISION = exports.BID_ASK_SPREAD_PRECISION = void 0;
4
+ exports.FUEL_START_TS = exports.FUEL_WINDOW = exports.DUST_POSITION_SIZE = exports.SLOT_TIME_ESTIMATE_MS = exports.IDLE_TIME_SLOTS = exports.ACCOUNT_AGE_DELETION_CUTOFF_SECONDS = exports.DEFAULT_REVENUE_SINCE_LAST_FUNDING_SPREAD_RETREAT = exports.OPEN_ORDER_MARGIN_REQUIREMENT = exports.LAMPORTS_EXP = exports.LAMPORTS_PRECISION = exports.GOV_SPOT_MARKET_INDEX = exports.QUOTE_SPOT_MARKET_INDEX = exports.ONE_YEAR = exports.ONE_HOUR = exports.FIVE_MINUTE = exports.FUNDING_RATE_OFFSET_DENOMINATOR = exports.LIQUIDATION_PCT_PRECISION = exports.BID_ASK_SPREAD_PRECISION = void 0;
5
5
  const web3_js_1 = require("@solana/web3.js");
6
6
  const __1 = require("../");
7
7
  exports.ZERO = new __1.BN(0);
@@ -61,6 +61,7 @@ exports.FIVE_MINUTE = new __1.BN(60 * 5);
61
61
  exports.ONE_HOUR = new __1.BN(60 * 60);
62
62
  exports.ONE_YEAR = new __1.BN(31536000);
63
63
  exports.QUOTE_SPOT_MARKET_INDEX = 0;
64
+ exports.GOV_SPOT_MARKET_INDEX = 15;
64
65
  exports.LAMPORTS_PRECISION = new __1.BN(web3_js_1.LAMPORTS_PER_SOL);
65
66
  exports.LAMPORTS_EXP = new __1.BN(Math.log10(web3_js_1.LAMPORTS_PER_SOL));
66
67
  exports.OPEN_ORDER_MARGIN_REQUIREMENT = exports.QUOTE_PRECISION.div(new __1.BN(100));
@@ -70,3 +71,4 @@ exports.IDLE_TIME_SLOTS = 9000;
70
71
  exports.SLOT_TIME_ESTIMATE_MS = 400;
71
72
  exports.DUST_POSITION_SIZE = exports.QUOTE_PRECISION.divn(100); // Dust position is any position smaller than 1c
72
73
  exports.FUEL_WINDOW = new __1.BN(60 * 60 * 24 * 28); // 28 days
74
+ exports.FUEL_START_TS = new __1.BN(1722384000); // unix timestamp