@velocity-exchange/sdk 0.4.0 → 0.6.0
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/README.md +3 -3
- package/lib/browser/adminClient.d.ts +35 -0
- package/lib/browser/adminClient.js +65 -0
- package/lib/browser/config.js +6 -7
- package/lib/browser/constants/numericConstants.d.ts +1 -1
- package/lib/browser/constants/numericConstants.js +1 -1
- package/lib/browser/decode/user.js +5 -1
- package/lib/browser/idl/velocity.d.ts +146 -3
- package/lib/browser/idl/velocity.json +147 -4
- package/lib/browser/orderSubscriber/OrderSubscriber.js +3 -0
- package/lib/browser/pyth/pythLazerSubscriber.js +37 -27
- package/lib/browser/types.d.ts +4 -0
- package/lib/browser/user.d.ts +15 -0
- package/lib/browser/user.js +37 -1
- package/lib/browser/velocityClient.d.ts +46 -10
- package/lib/browser/velocityClient.js +107 -35
- package/lib/node/adminClient.d.ts +35 -0
- package/lib/node/adminClient.d.ts.map +1 -1
- package/lib/node/adminClient.js +65 -0
- package/lib/node/config.d.ts.map +1 -1
- package/lib/node/config.js +6 -7
- package/lib/node/constants/numericConstants.d.ts +1 -1
- package/lib/node/constants/numericConstants.d.ts.map +1 -1
- package/lib/node/constants/numericConstants.js +1 -1
- package/lib/node/decode/user.d.ts.map +1 -1
- package/lib/node/decode/user.js +5 -1
- package/lib/node/idl/velocity.d.ts +146 -3
- package/lib/node/idl/velocity.d.ts.map +1 -1
- package/lib/node/idl/velocity.json +147 -4
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
- package/lib/node/orderSubscriber/OrderSubscriber.js +3 -0
- package/lib/node/pyth/pythLazerSubscriber.d.ts.map +1 -1
- package/lib/node/pyth/pythLazerSubscriber.js +37 -27
- package/lib/node/types.d.ts +4 -0
- package/lib/node/types.d.ts.map +1 -1
- package/lib/node/user.d.ts +15 -0
- package/lib/node/user.d.ts.map +1 -1
- package/lib/node/user.js +37 -1
- package/lib/node/velocityClient.d.ts +46 -10
- package/lib/node/velocityClient.d.ts.map +1 -1
- package/lib/node/velocityClient.js +107 -35
- package/package.json +7 -3
- package/.prettierignore +0 -1
- package/CHANGELOG.md +0 -132
- package/build-browser.js +0 -58
- package/bunfig.toml +0 -3
- package/esbuild-shims.js +0 -12
- package/scripts/deposit-isolated-positions.ts +0 -110
- package/scripts/find-flagged-users.ts +0 -213
- package/scripts/grpc-client-test-comparison.ts +0 -372
- package/scripts/grpc-multiuser-client-test-comparison.ts +0 -158
- package/scripts/postbuild.js +0 -95
- package/scripts/single-grpc-client-test.ts +0 -284
- package/scripts/withdraw-isolated-positions.ts +0 -174
- package/src/accounts/README_WebSocketAccountSubscriberV2.md +0 -95
- package/src/accounts/README_WebSocketProgramAccountSubscriberV2.md +0 -135
- package/src/accounts/basicUserAccountSubscriber.ts +0 -79
- package/src/accounts/basicUserStatsAccountSubscriber.ts +0 -87
- package/src/accounts/bulkAccountLoader.ts +0 -358
- package/src/accounts/bulkUserStatsSubscription.ts +0 -40
- package/src/accounts/bulkUserSubscription.ts +0 -39
- package/src/accounts/customizedCadenceBulkAccountLoader.ts +0 -250
- package/src/accounts/fetch.ts +0 -200
- package/src/accounts/grpcAccountSubscriber.ts +0 -225
- package/src/accounts/grpcInsuranceFundStakeAccountSubscriber.ts +0 -73
- package/src/accounts/grpcMultiAccountSubscriber.ts +0 -566
- package/src/accounts/grpcMultiUserAccountSubscriber.ts +0 -328
- package/src/accounts/grpcProgramAccountSubscriber.ts +0 -264
- package/src/accounts/grpcUserAccountSubscriber.ts +0 -63
- package/src/accounts/grpcUserStatsAccountSubscriber.ts +0 -65
- package/src/accounts/grpcVelocityClientAccountSubscriber.ts +0 -257
- package/src/accounts/grpcVelocityClientAccountSubscriberV2.ts +0 -941
- package/src/accounts/laserProgramAccountSubscriber.ts +0 -266
- package/src/accounts/oneShotUserAccountSubscriber.ts +0 -88
- package/src/accounts/oneShotUserStatsAccountSubscriber.ts +0 -94
- package/src/accounts/pollingInsuranceFundStakeAccountSubscriber.ts +0 -223
- package/src/accounts/pollingOracleAccountSubscriber.ts +0 -151
- package/src/accounts/pollingTokenAccountSubscriber.ts +0 -147
- package/src/accounts/pollingUserAccountSubscriber.ts +0 -198
- package/src/accounts/pollingUserStatsAccountSubscriber.ts +0 -180
- package/src/accounts/pollingVelocityClientAccountSubscriber.ts +0 -774
- package/src/accounts/testBulkAccountLoader.ts +0 -59
- package/src/accounts/types.ts +0 -428
- package/src/accounts/utils.ts +0 -90
- package/src/accounts/webSocketAccountSubscriber.ts +0 -304
- package/src/accounts/webSocketAccountSubscriberV2.ts +0 -536
- package/src/accounts/webSocketInsuranceFundStakeAccountSubscriber.ts +0 -171
- package/src/accounts/webSocketProgramAccountSubscriber.ts +0 -244
- package/src/accounts/webSocketProgramAccountSubscriberV2.ts +0 -1048
- package/src/accounts/webSocketProgramAccountsSubscriberV2.ts +0 -1042
- package/src/accounts/webSocketUserAccountSubscriber.ts +0 -139
- package/src/accounts/webSocketUserStatsAccountSubsriber.ts +0 -131
- package/src/accounts/webSocketVelocityClientAccountSubscriber.ts +0 -865
- package/src/accounts/webSocketVelocityClientAccountSubscriberV2.ts +0 -897
- package/src/accounts/websocketProgramUserAccountSubscriber.ts +0 -127
- package/src/addresses/marketAddresses.ts +0 -28
- package/src/addresses/pda.ts +0 -620
- package/src/adminClient.ts +0 -8136
- package/src/assert/assert.ts +0 -5
- package/src/auctionSubscriber/auctionSubscriber.ts +0 -86
- package/src/auctionSubscriber/auctionSubscriberGrpc.ts +0 -99
- package/src/auctionSubscriber/index.ts +0 -9
- package/src/auctionSubscriber/types.ts +0 -30
- package/src/bankrun/bankrunConnection.ts +0 -630
- package/src/blockhashSubscriber/BlockhashSubscriber.ts +0 -160
- package/src/blockhashSubscriber/index.ts +0 -6
- package/src/blockhashSubscriber/types.ts +0 -13
- package/src/clock/clockSubscriber.ts +0 -146
- package/src/config.ts +0 -312
- package/src/constants/index.ts +0 -9
- package/src/constants/numericConstants.ts +0 -194
- package/src/constants/perpMarkets.ts +0 -127
- package/src/constants/spotMarkets.ts +0 -104
- package/src/constants/txConstants.ts +0 -2
- package/src/constituentMap/constituentMap.ts +0 -305
- package/src/constituentMap/pollingConstituentAccountSubscriber.ts +0 -99
- package/src/constituentMap/webSocketConstituentAccountSubscriber.ts +0 -121
- package/src/core/VelocityCore.ts +0 -606
- package/src/core/index.ts +0 -12
- package/src/core/instructions/deposit.ts +0 -64
- package/src/core/instructions/fill.ts +0 -51
- package/src/core/instructions/funding.ts +0 -33
- package/src/core/instructions/liquidation.ts +0 -55
- package/src/core/instructions/orders.ts +0 -84
- package/src/core/instructions/perpOrders.ts +0 -312
- package/src/core/instructions/settlement.ts +0 -40
- package/src/core/instructions/trigger.ts +0 -41
- package/src/core/instructions/withdraw.ts +0 -65
- package/src/core/remainingAccounts.ts +0 -320
- package/src/core/signedMsg.ts +0 -109
- package/src/decode/customCoder.ts +0 -148
- package/src/decode/user.ts +0 -401
- package/src/dlob/DLOB.ts +0 -2793
- package/src/dlob/DLOBNode.ts +0 -305
- package/src/dlob/DLOBSubscriber.ts +0 -269
- package/src/dlob/NodeList.ts +0 -244
- package/src/dlob/orderBookLevels.ts +0 -695
- package/src/dlob/types.ts +0 -37
- package/src/events/eventList.ts +0 -114
- package/src/events/eventSubscriber.ts +0 -521
- package/src/events/eventsServerLogProvider.ts +0 -189
- package/src/events/fetchLogs.ts +0 -219
- package/src/events/parse.ts +0 -271
- package/src/events/pollingLogProvider.ts +0 -113
- package/src/events/sort.ts +0 -51
- package/src/events/txEventCache.ts +0 -92
- package/src/events/types.ts +0 -337
- package/src/events/webSocketLogProvider.ts +0 -152
- package/src/factory/bigNum.ts +0 -709
- package/src/factory/oracleClient.ts +0 -73
- package/src/idl/pyth.json +0 -142
- package/src/idl/pyth.ts +0 -97
- package/src/idl/pyth_solana_receiver.json +0 -628
- package/src/idl/token_faucet.json +0 -229
- package/src/idl/token_faucet.ts +0 -197
- package/src/idl/velocity.json +0 -23974
- package/src/idl/velocity.ts +0 -23980
- package/src/index.ts +0 -150
- package/src/indicative-quotes/indicativeQuotesSender.ts +0 -233
- package/src/isomorphic/README.md +0 -19
- package/src/isomorphic/anchor.browser.ts +0 -44
- package/src/isomorphic/anchor.node.ts +0 -1
- package/src/isomorphic/anchor.ts +0 -1
- package/src/isomorphic/anchor29.browser.ts +0 -24
- package/src/isomorphic/anchor29.node.ts +0 -1
- package/src/isomorphic/anchor29.ts +0 -1
- package/src/isomorphic/grpc.browser.ts +0 -4
- package/src/isomorphic/grpc.node.ts +0 -130
- package/src/isomorphic/grpc.ts +0 -1
- package/src/jupiter/jupiterClient.ts +0 -502
- package/src/keypair.ts +0 -32
- package/src/margin/README.md +0 -138
- package/src/marginCalculation.ts +0 -407
- package/src/marinade/idl/idl.json +0 -1962
- package/src/marinade/index.ts +0 -73
- package/src/marinade/types.ts +0 -3925
- package/src/math/amm.ts +0 -1758
- package/src/math/auction.ts +0 -480
- package/src/math/bankruptcy.ts +0 -138
- package/src/math/builder.ts +0 -130
- package/src/math/conversion.ts +0 -45
- package/src/math/exchangeStatus.ts +0 -261
- package/src/math/funding.ts +0 -498
- package/src/math/insurance.ts +0 -171
- package/src/math/liquidation.ts +0 -433
- package/src/math/margin.ts +0 -327
- package/src/math/market.ts +0 -487
- package/src/math/oracles.ts +0 -477
- package/src/math/orders.ts +0 -500
- package/src/math/position.ts +0 -381
- package/src/math/repeg.ts +0 -223
- package/src/math/spotBalance.ts +0 -996
- package/src/math/spotMarket.ts +0 -115
- package/src/math/spotPosition.ts +0 -263
- package/src/math/state.ts +0 -71
- package/src/math/superStake.ts +0 -602
- package/src/math/tiers.ts +0 -73
- package/src/math/trade.ts +0 -879
- package/src/math/utils.ts +0 -183
- package/src/memcmp.ts +0 -279
- package/src/oracles/oracleClientCache.ts +0 -41
- package/src/oracles/oracleId.ts +0 -99
- package/src/oracles/prelaunchOracleClient.ts +0 -63
- package/src/oracles/pythClient.ts +0 -125
- package/src/oracles/pythLazerClient.ts +0 -141
- package/src/oracles/quoteAssetOracleClient.ts +0 -43
- package/src/oracles/strictOraclePrice.ts +0 -40
- package/src/oracles/types.ts +0 -82
- package/src/oracles/utils.ts +0 -45
- package/src/orderParams.ts +0 -117
- package/src/orderSubscriber/OrderSubscriber.ts +0 -378
- package/src/orderSubscriber/PollingSubscription.ts +0 -50
- package/src/orderSubscriber/WebsocketSubscription.ts +0 -137
- package/src/orderSubscriber/grpcSubscription.ts +0 -155
- package/src/orderSubscriber/index.ts +0 -7
- package/src/orderSubscriber/types.ts +0 -64
- package/src/priorityFee/averageOverSlotsStrategy.ts +0 -17
- package/src/priorityFee/averageStrategy.ts +0 -13
- package/src/priorityFee/ewmaStrategy.ts +0 -51
- package/src/priorityFee/heliusPriorityFeeMethod.ts +0 -68
- package/src/priorityFee/index.ts +0 -16
- package/src/priorityFee/maxOverSlotsStrategy.ts +0 -18
- package/src/priorityFee/maxStrategy.ts +0 -8
- package/src/priorityFee/priorityFeeSubscriber.ts +0 -328
- package/src/priorityFee/priorityFeeSubscriberMap.ts +0 -134
- package/src/priorityFee/solanaPriorityFeeMethod.ts +0 -46
- package/src/priorityFee/types.ts +0 -82
- package/src/priorityFee/velocityPriorityFeeMethod.ts +0 -53
- package/src/pyth/constants.ts +0 -9
- package/src/pyth/index.ts +0 -15
- package/src/pyth/pythLazerSubscriber.ts +0 -365
- package/src/pyth/types.ts +0 -4451
- package/src/pyth/utils.ts +0 -13
- package/src/slot/SlotSubscriber.ts +0 -126
- package/src/slot/SlothashSubscriber.ts +0 -163
- package/src/swap/UnifiedSwapClient.ts +0 -315
- package/src/swift/grpcSignedMsgUserAccountSubscriber.ts +0 -81
- package/src/swift/index.ts +0 -10
- package/src/swift/signedMsgUserAccountSubscriber.ts +0 -251
- package/src/swift/swiftOrderSubscriber.ts +0 -351
- package/src/testClient.ts +0 -42
- package/src/titan/titanClient.ts +0 -438
- package/src/token/index.ts +0 -13
- package/src/tokenFaucet.ts +0 -296
- package/src/tx/baseTxSender.ts +0 -651
- package/src/tx/blockhashFetcher/baseBlockhashFetcher.ts +0 -31
- package/src/tx/blockhashFetcher/cachedBlockhashFetcher.ts +0 -105
- package/src/tx/blockhashFetcher/types.ts +0 -9
- package/src/tx/fastSingleTxSender.ts +0 -200
- package/src/tx/forwardOnlyTxSender.ts +0 -193
- package/src/tx/priorityFeeCalculator.ts +0 -117
- package/src/tx/reportTransactionError.ts +0 -176
- package/src/tx/retryTxSender.ts +0 -177
- package/src/tx/txHandler.ts +0 -1009
- package/src/tx/txParamProcessor.ts +0 -225
- package/src/tx/types.ts +0 -117
- package/src/tx/utils.ts +0 -133
- package/src/tx/whileValidTxSender.ts +0 -377
- package/src/types.ts +0 -2575
- package/src/user.ts +0 -5316
- package/src/userConfig.ts +0 -38
- package/src/userMap/PollingSubscription.ts +0 -61
- package/src/userMap/WebsocketSubscription.ts +0 -93
- package/src/userMap/grpcSubscription.ts +0 -93
- package/src/userMap/referrerMap.ts +0 -360
- package/src/userMap/revenueShareEscrowMap.ts +0 -342
- package/src/userMap/userMap.ts +0 -784
- package/src/userMap/userMapConfig.ts +0 -82
- package/src/userMap/userStatsMap.ts +0 -393
- package/src/userName.ts +0 -37
- package/src/userStats.ts +0 -159
- package/src/userStatsConfig.ts +0 -35
- package/src/util/TransactionConfirmationManager.ts +0 -333
- package/src/util/chainClock.ts +0 -65
- package/src/util/computeUnits.ts +0 -101
- package/src/util/digest.ts +0 -33
- package/src/util/ed25519Utils.ts +0 -95
- package/src/util/promiseTimeout.ts +0 -23
- package/src/velocityClient.ts +0 -14802
- package/src/velocityClientConfig.ts +0 -119
- package/src/wallet.ts +0 -91
- package/tests/VelocityCore/builder_escrow.test.ts +0 -121
- package/tests/VelocityCore/decode.test.ts +0 -16
- package/tests/VelocityCore/fill_trigger.test.ts +0 -73
- package/tests/VelocityCore/instructions.test.ts +0 -46
- package/tests/VelocityCore/pdas.test.ts +0 -30
- package/tests/VelocityCore/perp_orders.test.ts +0 -205
- package/tests/VelocityCore/remainingAccounts.test.ts +0 -72
- package/tests/VelocityCore/settlement_liquidation.test.ts +0 -69
- package/tests/accounts/customizedCadenceBulkAccountLoader.test.ts +0 -211
- package/tests/amm/test.ts +0 -2402
- package/tests/auctions/test.ts +0 -81
- package/tests/bn/test.ts +0 -355
- package/tests/builder/builderFee.test.ts +0 -42
- package/tests/ci/verifyConstants.ts +0 -393
- package/tests/decode/test.ts +0 -262
- package/tests/decode/userAccountBufferStrings.ts +0 -102
- package/tests/dlob/helpers.ts +0 -748
- package/tests/dlob/test.ts +0 -6969
- package/tests/dlob/tickSizeStandardization.ts +0 -545
- package/tests/events/parseLogsForCuUsage.ts +0 -139
- package/tests/exchangeStatus/test.ts +0 -45
- package/tests/insurance/test.ts +0 -40
- package/tests/liquidation/test.ts +0 -125
- package/tests/oracles/mmOracleGate.test.ts +0 -379
- package/tests/oracles/pythPegSnap.test.ts +0 -76
- package/tests/sdkParity/enumParity.test.ts +0 -84
- package/tests/sdkParity/marginCategoryFill.test.ts +0 -143
- package/tests/sdkParity/memcmpOffsets.test.ts +0 -139
- package/tests/spot/test.ts +0 -281
- package/tests/tx/TransactionConfirmationManager.test.ts +0 -312
- package/tests/tx/cachedBlockhashFetcher.test.ts +0 -96
- package/tests/tx/priorityFeeCalculator.ts +0 -77
- package/tests/tx/priorityFeeStrategy.ts +0 -95
- package/tests/user/bankruptcy.ts +0 -165
- package/tests/user/feeAndWithdrawLimits.ts +0 -284
- package/tests/user/getMarginCalculation.ts +0 -586
- package/tests/user/helpers.ts +0 -184
- package/tests/user/liquidations.ts +0 -129
- package/tests/user/marginCalculations.test.ts +0 -321
- package/tests/user/test.ts +0 -833
- package/tsconfig.browser.json +0 -18
- package/tsconfig.json +0 -36
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
import { LAMPORTS_PER_SOL } from '@solana/web3.js';
|
|
2
|
-
import { BN } from '../isomorphic/anchor';
|
|
3
|
-
|
|
4
|
-
/** Precision constants used throughout the SDK. Each mirrors an on-chain fixed-point scale — a raw `BN` amount at that precision represents `amount / 10^exponent` in human units (e.g. `PRICE_PRECISION` = 1e6, so a raw price of `1_500_000` is `$1.50`). Values must stay numerically identical to the Rust program's `math::constants` — a mismatch here silently mis-scales every derived SDK computation. */
|
|
5
|
-
export const ZERO = new BN(0);
|
|
6
|
-
export const ONE = new BN(1);
|
|
7
|
-
export const TWO = new BN(2);
|
|
8
|
-
export const THREE = new BN(3);
|
|
9
|
-
export const FOUR = new BN(4);
|
|
10
|
-
export const FIVE = new BN(5);
|
|
11
|
-
export const SIX = new BN(6);
|
|
12
|
-
export const SEVEN = new BN(7);
|
|
13
|
-
export const EIGHT = new BN(8);
|
|
14
|
-
export const NINE = new BN(9);
|
|
15
|
-
export const TEN = new BN(10);
|
|
16
|
-
export const TEN_THOUSAND = new BN(10000);
|
|
17
|
-
/** Largest value safely representable as a JS `number` (2^53 - 1), wrapped in a `BN`; used as a practical "infinite" ceiling, not an on-chain limit. */
|
|
18
|
-
export const BN_MAX = new BN(Number.MAX_SAFE_INTEGER);
|
|
19
|
-
export const TEN_MILLION = TEN_THOUSAND.mul(TEN_THOUSAND);
|
|
20
|
-
|
|
21
|
-
/** Default max leverage (5x) used by SDK helpers when a market's actual `marginRatioInitial` isn't available. */
|
|
22
|
-
export const MAX_LEVERAGE = new BN(5);
|
|
23
|
-
/** `u64::MAX`; sentinel order size meaning "close the whole position" in reduce-only market-order helpers. */
|
|
24
|
-
export const MAX_LEVERAGE_ORDER_SIZE = new BN('18446744073709551615');
|
|
25
|
-
|
|
26
|
-
/** Exponent for `PERCENTAGE_PRECISION` (1e6). */
|
|
27
|
-
export const PERCENTAGE_PRECISION_EXP = new BN(6);
|
|
28
|
-
/** 1e6; precision for percentage/fraction fields (e.g. AMM concentration coefficient, funding ramp slope, LP pool volatility). */
|
|
29
|
-
export const PERCENTAGE_PRECISION = new BN(10).pow(PERCENTAGE_PRECISION_EXP);
|
|
30
|
-
/** Alias of `PERCENTAGE_PRECISION` (1e6) for the AMM's `concentrationCoef` field. */
|
|
31
|
-
export const CONCENTRATION_PRECISION = PERCENTAGE_PRECISION;
|
|
32
|
-
|
|
33
|
-
/** Exponent for `QUOTE_PRECISION` (1e6). */
|
|
34
|
-
export const QUOTE_PRECISION_EXP = new BN(6);
|
|
35
|
-
/** Exponent for `FUNDING_RATE_BUFFER_PRECISION` (1e3) — the extra precision funding rates carry beyond `PRICE_PRECISION`. */
|
|
36
|
-
export const FUNDING_RATE_BUFFER_PRECISION_EXP = new BN(3);
|
|
37
|
-
/** Exponent for `PRICE_PRECISION` (1e6). */
|
|
38
|
-
export const PRICE_PRECISION_EXP = new BN(6);
|
|
39
|
-
/** Exponent for `FUNDING_RATE_PRECISION` (1e9) = `PRICE_PRECISION_EXP` + `FUNDING_RATE_BUFFER_PRECISION_EXP`. */
|
|
40
|
-
export const FUNDING_RATE_PRECISION_EXP = PRICE_PRECISION_EXP.add(
|
|
41
|
-
FUNDING_RATE_BUFFER_PRECISION_EXP
|
|
42
|
-
);
|
|
43
|
-
/** Exponent for `PEG_PRECISION` (1e6). */
|
|
44
|
-
export const PEG_PRECISION_EXP = new BN(6);
|
|
45
|
-
/** Exponent for `AMM_RESERVE_PRECISION` / `BASE_PRECISION` (1e9). */
|
|
46
|
-
export const AMM_RESERVE_PRECISION_EXP = new BN(9);
|
|
47
|
-
|
|
48
|
-
/** Exponent for `SPOT_MARKET_RATE_PRECISION` (1e6). */
|
|
49
|
-
export const SPOT_MARKET_RATE_PRECISION_EXP = new BN(6);
|
|
50
|
-
/** 1e6; precision for spot market interest-rate fields (`optimalBorrowRate`, `maxBorrowRate`). */
|
|
51
|
-
export const SPOT_MARKET_RATE_PRECISION = new BN(10).pow(
|
|
52
|
-
SPOT_MARKET_RATE_PRECISION_EXP
|
|
53
|
-
);
|
|
54
|
-
|
|
55
|
-
/** Exponent for `SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION` (1e10). */
|
|
56
|
-
export const SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION_EXP = new BN(10);
|
|
57
|
-
/** 1e10; precision for `SpotMarketAccount.cumulativeDepositInterest`/`cumulativeBorrowInterest`. */
|
|
58
|
-
export const SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION = new BN(10).pow(
|
|
59
|
-
SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION_EXP
|
|
60
|
-
);
|
|
61
|
-
|
|
62
|
-
/** Exponent for `SPOT_MARKET_UTILIZATION_PRECISION` (1e6). */
|
|
63
|
-
export const SPOT_MARKET_UTILIZATION_PRECISION_EXP = new BN(6);
|
|
64
|
-
/** 1e6; precision for spot market utilization fields (`optimalUtilization`, `utilizationTwap`). */
|
|
65
|
-
export const SPOT_MARKET_UTILIZATION_PRECISION = new BN(10).pow(
|
|
66
|
-
SPOT_MARKET_UTILIZATION_PRECISION_EXP
|
|
67
|
-
);
|
|
68
|
-
|
|
69
|
-
/** 1e4; precision for spot asset/liability weight fields (`initialAssetWeight`, `maintenanceLiabilityWeight`, etc). Same scale as `MARGIN_PRECISION`. */
|
|
70
|
-
export const SPOT_MARKET_WEIGHT_PRECISION = new BN(10000);
|
|
71
|
-
/** Exponent for `SPOT_MARKET_BALANCE_PRECISION` (1e9). */
|
|
72
|
-
export const SPOT_MARKET_BALANCE_PRECISION_EXP = new BN(9);
|
|
73
|
-
/** 1e9; precision for scaled spot balances (`SpotPosition.scaledBalance`, `PoolBalance.scaledBalance`, `depositBalance`/`borrowBalance`). Multiply by the market's cumulative interest to get the token amount. */
|
|
74
|
-
export const SPOT_MARKET_BALANCE_PRECISION = new BN(10).pow(
|
|
75
|
-
SPOT_MARKET_BALANCE_PRECISION_EXP
|
|
76
|
-
);
|
|
77
|
-
/** Exponent for `SPOT_MARKET_IMF_PRECISION` (1e6). */
|
|
78
|
-
export const SPOT_MARKET_IMF_PRECISION_EXP = new BN(6);
|
|
79
|
-
|
|
80
|
-
/** 1e6; precision for `imfFactor`-style fields (deprecated alias — most `imfFactor` fields use `MARGIN_PRECISION`, 1e4). */
|
|
81
|
-
export const SPOT_MARKET_IMF_PRECISION = new BN(10).pow(
|
|
82
|
-
SPOT_MARKET_IMF_PRECISION_EXP
|
|
83
|
-
);
|
|
84
|
-
/** 1e6; precision for `liquidatorFee`/`ifLiquidationFee`/`protocolLiquidationFee` fields on perp and spot markets. */
|
|
85
|
-
export const LIQUIDATION_FEE_PRECISION = new BN(1000000);
|
|
86
|
-
|
|
87
|
-
/** 1e6; precision for quote-asset (USD-denominated) amounts — pnl, deposits/withdraws, fees, collateral. The protocol's most widely used precision. */
|
|
88
|
-
export const QUOTE_PRECISION = new BN(10).pow(QUOTE_PRECISION_EXP);
|
|
89
|
-
/** 1e6; precision for prices (`Order.price`, oracle prices, TWAPs, `oraclePriceOffset`). */
|
|
90
|
-
export const PRICE_PRECISION = new BN(10).pow(PRICE_PRECISION_EXP);
|
|
91
|
-
/** 1e9; precision for funding-rate fields (`cumulativeFundingRateLong/Short`, `lastFundingRate`, `FundingRateRecord.fundingRate`). Unit is quote per base. */
|
|
92
|
-
export const FUNDING_RATE_PRECISION = new BN(10).pow(
|
|
93
|
-
FUNDING_RATE_PRECISION_EXP
|
|
94
|
-
);
|
|
95
|
-
/** 1e3; the extra scale factor between `PRICE_PRECISION` and `FUNDING_RATE_PRECISION`. */
|
|
96
|
-
export const FUNDING_RATE_BUFFER_PRECISION = new BN(10).pow(
|
|
97
|
-
FUNDING_RATE_BUFFER_PRECISION_EXP
|
|
98
|
-
);
|
|
99
|
-
/** 1e6; precision for `AMM.pegMultiplier`, normalizing the AMM's quote reserve. */
|
|
100
|
-
export const PEG_PRECISION = new BN(10).pow(PEG_PRECISION_EXP);
|
|
101
|
-
|
|
102
|
-
/** 1e9; precision for AMM constant-product reserves (`baseAssetReserve`, `quoteAssetReserve`, `sqrtK`, etc). Same scale as `BASE_PRECISION`. */
|
|
103
|
-
export const AMM_RESERVE_PRECISION = new BN(10).pow(AMM_RESERVE_PRECISION_EXP);
|
|
104
|
-
|
|
105
|
-
/** 1e9; precision for perp base-asset amounts (position size, `Order.baseAssetAmount`, open interest). Alias of `AMM_RESERVE_PRECISION`. */
|
|
106
|
-
export const BASE_PRECISION = AMM_RESERVE_PRECISION;
|
|
107
|
-
export const BASE_PRECISION_EXP = AMM_RESERVE_PRECISION_EXP;
|
|
108
|
-
|
|
109
|
-
/** 1e3; ratio to convert an `AMM_RESERVE_PRECISION` amount into `QUOTE_PRECISION` units (at peg = 1). */
|
|
110
|
-
export const AMM_TO_QUOTE_PRECISION_RATIO =
|
|
111
|
-
AMM_RESERVE_PRECISION.div(QUOTE_PRECISION); // 10^3
|
|
112
|
-
/** 1e1 (=10); ratio between `PRICE_PRECISION` and `PEG_PRECISION`. */
|
|
113
|
-
export const PRICE_DIV_PEG = PRICE_PRECISION.div(PEG_PRECISION); //10^1
|
|
114
|
-
/** 1e1 (=10); ratio between `PRICE_PRECISION` and `QUOTE_PRECISION`. */
|
|
115
|
-
export const PRICE_TO_QUOTE_PRECISION = PRICE_PRECISION.div(QUOTE_PRECISION); // 10^1
|
|
116
|
-
/** 1e9; combined `AMM_RESERVE_PRECISION * PEG_PRECISION / QUOTE_PRECISION` conversion ratio used in AMM quote-value math. */
|
|
117
|
-
export const AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO =
|
|
118
|
-
AMM_RESERVE_PRECISION.mul(PEG_PRECISION).div(QUOTE_PRECISION); // 10^9
|
|
119
|
-
/** 1e4; precision for margin-ratio fields (`marginRatioInitial`, `marginRatioMaintenance`, `imfFactor`, `maxMarginRatio`, `StateAccount.liquidationMarginBufferRatio`). */
|
|
120
|
-
export const MARGIN_PRECISION = TEN_THOUSAND;
|
|
121
|
-
/** 1e4; precision for basis-point fields where 1 unit = 1 bp (e.g. `PerpMarketAccount.fundingClampThreshold`). */
|
|
122
|
-
export const BPS_PRECISION = TEN_THOUSAND; // 1 unit = 1bp
|
|
123
|
-
/** 1e6; precision for AMM bid/ask spread fields (`baseSpread`, `maxSpread`, `longSpread`, `shortSpread`, `lastOracleReservePriceSpreadPct`). */
|
|
124
|
-
export const BID_ASK_SPREAD_PRECISION = new BN(1000000); // 10^6
|
|
125
|
-
/** 1e4; precision for `StateAccount.initialPctToLiquidate`, the fraction of a position liquidated per partial-liquidation pass. */
|
|
126
|
-
export const LIQUIDATION_PCT_PRECISION = TEN_THOUSAND;
|
|
127
|
-
/** Denominator (3333) used to derive `FUNDING_RATE_OFFSET_PERCENTAGE`; yields ~10.95% annualized when applied hourly. */
|
|
128
|
-
export const FUNDING_RATE_OFFSET_DENOMINATOR = new BN(3333);
|
|
129
|
-
/** `FUNDING_RATE_PRECISION / FUNDING_RATE_OFFSET_DENOMINATOR`; the default funding-rate offset floor/ceiling nudge. */
|
|
130
|
-
export const FUNDING_RATE_OFFSET_PERCENTAGE = FUNDING_RATE_PRECISION.div(
|
|
131
|
-
FUNDING_RATE_OFFSET_DENOMINATOR
|
|
132
|
-
);
|
|
133
|
-
/** Denominator (2000, i.e. 0.05%) used to clamp per-update funding-rate changes. */
|
|
134
|
-
export const FUNDING_RATE_CLAMP_DENOMINATOR = new BN(2000);
|
|
135
|
-
/** `PRICE_PRECISION * AMM_TO_QUOTE_PRECISION_RATIO`; combined conversion ratio used when pricing AMM reserve amounts directly in quote terms. */
|
|
136
|
-
export const PRICE_TIMES_AMM_TO_QUOTE_PRECISION_RATIO = PRICE_PRECISION.mul(
|
|
137
|
-
AMM_TO_QUOTE_PRECISION_RATIO
|
|
138
|
-
);
|
|
139
|
-
|
|
140
|
-
/** 300 seconds. */
|
|
141
|
-
export const FIVE_MINUTE = new BN(60 * 5);
|
|
142
|
-
/** 3600 seconds. */
|
|
143
|
-
export const ONE_HOUR = new BN(60 * 60);
|
|
144
|
-
/** 31,536,000 seconds (365 days). */
|
|
145
|
-
export const ONE_YEAR = new BN(31536000);
|
|
146
|
-
|
|
147
|
-
/** Market index of the protocol's quote spot market (USDC on mainnet). */
|
|
148
|
-
export const QUOTE_SPOT_MARKET_INDEX = 0;
|
|
149
|
-
|
|
150
|
-
/** 1e9 (`LAMPORTS_PER_SOL`); token-mint precision for wrapped SOL spot markets. */
|
|
151
|
-
export const LAMPORTS_PRECISION = new BN(LAMPORTS_PER_SOL);
|
|
152
|
-
/** 9; decimal exponent for `LAMPORTS_PRECISION`. */
|
|
153
|
-
export const LAMPORTS_EXP = new BN(Math.log10(LAMPORTS_PER_SOL));
|
|
154
|
-
|
|
155
|
-
/** `QUOTE_PRECISION / 100` = $0.01; per-open-order margin requirement reserved against free collateral. */
|
|
156
|
-
export const OPEN_ORDER_MARGIN_REQUIREMENT = QUOTE_PRECISION.div(new BN(100));
|
|
157
|
-
|
|
158
|
-
/** -$25 (`QUOTE_PRECISION`); default floor for `AMM.netRevenueSinceLastFunding` below which the funding-rate spread retreats, damping the AMM from over-widening its spread after a large one-off loss. */
|
|
159
|
-
export const DEFAULT_REVENUE_SINCE_LAST_FUNDING_SPREAD_RETREAT = new BN(
|
|
160
|
-
-25
|
|
161
|
-
).mul(QUOTE_PRECISION);
|
|
162
|
-
|
|
163
|
-
/** 13 days in seconds; minimum account age before an idle user account becomes eligible for keeper-initiated deletion. */
|
|
164
|
-
export const ACCOUNT_AGE_DELETION_CUTOFF_SECONDS = 60 * 60 * 24 * 13; // 13 days
|
|
165
|
-
/** Slots of inactivity (~1 week at `SLOT_TIME_ESTIMATE_MS`) after which a user account is eligible to be marked idle. */
|
|
166
|
-
export const IDLE_TIME_SLOTS = 9000;
|
|
167
|
-
/** Approximate Solana slot duration in milliseconds, used by the SDK to convert between slots and wall-clock time. */
|
|
168
|
-
export const SLOT_TIME_ESTIMATE_MS = 400;
|
|
169
|
-
|
|
170
|
-
/** `QUOTE_PRECISION / 100` = $0.01; a perp position smaller than this is treated as dust (safe to ignore/close for free). */
|
|
171
|
-
export const DUST_POSITION_SIZE = QUOTE_PRECISION.divn(100); // Dust position is any position smaller than 1c
|
|
172
|
-
|
|
173
|
-
/**
|
|
174
|
-
* $100 (`QUOTE_PRECISION`); the cap on a user's unrealized positive perp PnL that may count toward
|
|
175
|
-
* *initial* margin (free collateral for opening/increasing positions). Unrealized profit beyond
|
|
176
|
-
* this amount is not double-counted as collateral for new risk — it still counts in full for
|
|
177
|
-
* maintenance-margin (liquidation) calculations. Mirrors the Rust
|
|
178
|
-
* `MAX_POSITIVE_UPNL_FOR_INITIAL_MARGIN` constant; keep both in sync.
|
|
179
|
-
*/
|
|
180
|
-
export const MAX_POSITIVE_UPNL_FOR_INITIAL_MARGIN = new BN(100).mul(
|
|
181
|
-
QUOTE_PRECISION
|
|
182
|
-
); // max upnl for initial margin calc
|
|
183
|
-
|
|
184
|
-
/** Max number of pubkeys per `getMultipleAccounts` RPC call the SDK will batch (RPC-imposed ceiling is 100; kept at 99 for headroom). */
|
|
185
|
-
export const GET_MULTIPLE_ACCOUNTS_CHUNK_SIZE = 99;
|
|
186
|
-
|
|
187
|
-
// integer constants
|
|
188
|
-
// Built with `BN` directly (not `BigNum.fromPrint`) to avoid a module-load
|
|
189
|
-
// circular dependency: `bigNum.ts` imports `ZERO` from this file, so importing
|
|
190
|
-
// `bigNum.ts` first leaves `BigNum` undefined while this module body evaluates.
|
|
191
|
-
/** `i64::MAX` (9223372036854775807). */
|
|
192
|
-
export const MAX_I64 = new BN('9223372036854775807');
|
|
193
|
-
/** `i64::MIN` (-9223372036854775808). */
|
|
194
|
-
export const MIN_I64 = new BN('-9223372036854775808');
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import { PublicKey } from '@solana/web3.js';
|
|
2
|
-
import { MarketStatus, OracleSource } from '../types';
|
|
3
|
-
import { VelocityEnv } from '../config';
|
|
4
|
-
|
|
5
|
-
/** Static off-chain metadata for one deployed perp market, keyed by `marketIndex`. This is a client-side registry (symbol/oracle wiring for UIs and SDK bootstrapping) — it is not decoded from chain and can drift from the live `PerpMarketAccount` if not kept in sync with deployments. */
|
|
6
|
-
export type PerpMarketConfig = {
|
|
7
|
-
fullName?: string;
|
|
8
|
-
category?: string[];
|
|
9
|
-
symbol: string;
|
|
10
|
-
baseAssetSymbol: string;
|
|
11
|
-
marketIndex: number;
|
|
12
|
-
/** unix ms timestamp the market launched */
|
|
13
|
-
launchTs: number;
|
|
14
|
-
oracle: PublicKey;
|
|
15
|
-
oracleSource: OracleSource;
|
|
16
|
-
/** Pyth price-feed id (hex), for the legacy Pyth push/pull oracle path */
|
|
17
|
-
pythFeedId?: string;
|
|
18
|
-
/** Pyth Lazer feed id, for `OracleSource.PYTH_LAZER*` markets */
|
|
19
|
-
pythLazerId?: number;
|
|
20
|
-
/** current known on-chain status; omitted means `ACTIVE`. Kept here so tooling can filter out delisted markets without an RPC round-trip */
|
|
21
|
-
marketStatus?: MarketStatus;
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Reflects what is actually deployed on devnet (per on-chain enumeration of
|
|
26
|
-
* `StateAccount.numberOfMarkets`). Update when devnet adds/changes a perp market.
|
|
27
|
-
*/
|
|
28
|
-
export const DevnetPerpMarkets: PerpMarketConfig[] = [
|
|
29
|
-
{
|
|
30
|
-
fullName: 'Solana',
|
|
31
|
-
category: ['L1', 'Infra'],
|
|
32
|
-
symbol: 'SOL-PERP',
|
|
33
|
-
baseAssetSymbol: 'SOL',
|
|
34
|
-
marketIndex: 0,
|
|
35
|
-
oracle: new PublicKey('2k3UHX6ehRFzx5fTVvbL6FwXhMjkucjJDL9MuVKLo8TV'),
|
|
36
|
-
launchTs: 1655751353000,
|
|
37
|
-
oracleSource: OracleSource.PYTH_LAZER,
|
|
38
|
-
pythLazerId: 6,
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
fullName: 'Bitcoin',
|
|
42
|
-
category: ['L1', 'Payment'],
|
|
43
|
-
symbol: 'BTC-PERP',
|
|
44
|
-
baseAssetSymbol: 'BTC',
|
|
45
|
-
marketIndex: 1,
|
|
46
|
-
oracle: new PublicKey('J7Fp8iTKuKdCM7PnzqHXTdTo5Jr7ykAmiDyvpz58GJGZ'),
|
|
47
|
-
launchTs: 1782950400000,
|
|
48
|
-
oracleSource: OracleSource.PYTH_LAZER,
|
|
49
|
-
pythLazerId: 1,
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
fullName: 'Ethereum',
|
|
53
|
-
category: ['L1', 'Infra'],
|
|
54
|
-
symbol: 'ETH-PERP',
|
|
55
|
-
baseAssetSymbol: 'ETH',
|
|
56
|
-
marketIndex: 2,
|
|
57
|
-
oracle: new PublicKey('6wQ5RiQ7usJ3TqYZSiuAPZHrVCeSWNrvace84khDKEmH'),
|
|
58
|
-
launchTs: 1782950400000,
|
|
59
|
-
oracleSource: OracleSource.PYTH_LAZER,
|
|
60
|
-
pythLazerId: 2,
|
|
61
|
-
},
|
|
62
|
-
];
|
|
63
|
-
|
|
64
|
-
// Relaunch set from deploy-scripts/params/relaunch-perp-markets.json (PR #188).
|
|
65
|
-
// Oracles are the velocity program's pyth_lazer PDAs:
|
|
66
|
-
// findProgramAddress(["pyth_lazer", u32le(lazerFeedId)], VELOCITY_PROGRAM_ID).
|
|
67
|
-
// launchTs = planned 2026-07 mainnet relaunch init.
|
|
68
|
-
export const MainnetPerpMarkets: PerpMarketConfig[] = [
|
|
69
|
-
{
|
|
70
|
-
fullName: 'Solana',
|
|
71
|
-
category: ['L1', 'Infra', 'Solana'],
|
|
72
|
-
symbol: 'SOL-PERP',
|
|
73
|
-
baseAssetSymbol: 'SOL',
|
|
74
|
-
marketIndex: 0,
|
|
75
|
-
oracle: new PublicKey('2k3UHX6ehRFzx5fTVvbL6FwXhMjkucjJDL9MuVKLo8TV'),
|
|
76
|
-
launchTs: 1782950400000,
|
|
77
|
-
oracleSource: OracleSource.PYTH_LAZER,
|
|
78
|
-
pythFeedId:
|
|
79
|
-
'0xef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d',
|
|
80
|
-
pythLazerId: 6,
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
fullName: 'Bitcoin',
|
|
84
|
-
category: ['L1', 'Payment'],
|
|
85
|
-
symbol: 'BTC-PERP',
|
|
86
|
-
baseAssetSymbol: 'BTC',
|
|
87
|
-
marketIndex: 1,
|
|
88
|
-
oracle: new PublicKey('J7Fp8iTKuKdCM7PnzqHXTdTo5Jr7ykAmiDyvpz58GJGZ'),
|
|
89
|
-
launchTs: 1782950400000,
|
|
90
|
-
oracleSource: OracleSource.PYTH_LAZER,
|
|
91
|
-
pythFeedId:
|
|
92
|
-
'0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43',
|
|
93
|
-
pythLazerId: 1,
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
fullName: 'Ethereum',
|
|
97
|
-
category: ['L1', 'Infra'],
|
|
98
|
-
symbol: 'ETH-PERP',
|
|
99
|
-
baseAssetSymbol: 'ETH',
|
|
100
|
-
marketIndex: 2,
|
|
101
|
-
oracle: new PublicKey('6wQ5RiQ7usJ3TqYZSiuAPZHrVCeSWNrvace84khDKEmH'),
|
|
102
|
-
launchTs: 1782950400000,
|
|
103
|
-
oracleSource: OracleSource.PYTH_LAZER,
|
|
104
|
-
pythFeedId:
|
|
105
|
-
'0xff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace',
|
|
106
|
-
pythLazerId: 2,
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
fullName: 'Hyperliquid',
|
|
110
|
-
category: ['DEX'],
|
|
111
|
-
symbol: 'HYPE-PERP',
|
|
112
|
-
baseAssetSymbol: 'HYPE',
|
|
113
|
-
marketIndex: 3,
|
|
114
|
-
oracle: new PublicKey('Nc9hadTxNbLw6SiYVGVGjp4WZjanWUuNiKSxdHwHNtK'),
|
|
115
|
-
launchTs: 1782950400000,
|
|
116
|
-
oracleSource: OracleSource.PYTH_LAZER,
|
|
117
|
-
pythFeedId:
|
|
118
|
-
'0x4279e31cc369bbcc2faf022b382b080e32a8e689ff20fbc530d2a603eb6cd98b',
|
|
119
|
-
pythLazerId: 110,
|
|
120
|
-
},
|
|
121
|
-
];
|
|
122
|
-
|
|
123
|
-
/** Perp market registries keyed by `VelocityEnv`, for looking up a deployment's markets without hardcoding the environment. */
|
|
124
|
-
export const PerpMarkets: { [key in VelocityEnv]: PerpMarketConfig[] } = {
|
|
125
|
-
devnet: DevnetPerpMarkets,
|
|
126
|
-
'mainnet-beta': MainnetPerpMarkets,
|
|
127
|
-
};
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import { PublicKey } from '@solana/web3.js';
|
|
2
|
-
import {
|
|
3
|
-
QUOTE_PRECISION,
|
|
4
|
-
QUOTE_PRECISION_EXP,
|
|
5
|
-
LAMPORTS_EXP,
|
|
6
|
-
LAMPORTS_PRECISION,
|
|
7
|
-
SIX,
|
|
8
|
-
} from './numericConstants';
|
|
9
|
-
import { OracleSource } from '../types';
|
|
10
|
-
import { BN } from '../isomorphic/anchor';
|
|
11
|
-
import { VelocityEnv } from '../config';
|
|
12
|
-
|
|
13
|
-
/** Static off-chain metadata for one deployed spot market, keyed by `marketIndex`. Client-side registry (symbol/oracle/mint/decimals wiring) — not decoded from chain, so it must be kept in sync with deployments. */
|
|
14
|
-
export type SpotMarketConfig = {
|
|
15
|
-
symbol: string;
|
|
16
|
-
marketIndex: number;
|
|
17
|
-
/** the LP-pool "pool" this market belongs to (distinct spot markets can wrap the same mint under different pool ids, e.g. `SOL` vs `SOL-2`) */
|
|
18
|
-
poolId: number;
|
|
19
|
-
oracle: PublicKey;
|
|
20
|
-
mint: PublicKey;
|
|
21
|
-
oracleSource: OracleSource;
|
|
22
|
-
/** `10^precisionExp`; the token mint's precision as a `BN`, i.e. one whole token */
|
|
23
|
-
precision: BN;
|
|
24
|
-
/** the token mint's decimals */
|
|
25
|
-
precisionExp: BN;
|
|
26
|
-
/** unix ms timestamp the market launched */
|
|
27
|
-
launchTs?: number;
|
|
28
|
-
/** Pyth price-feed id (hex), for the legacy Pyth push/pull oracle path */
|
|
29
|
-
pythFeedId?: string;
|
|
30
|
-
/** Pyth Lazer feed id, for `OracleSource.PYTH_LAZER*` markets */
|
|
31
|
-
pythLazerId?: number;
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
/** The canonical wrapped-SOL mint address, shared across all `SOL`-symbol spot market configs. */
|
|
35
|
-
export const WRAPPED_SOL_MINT = new PublicKey(
|
|
36
|
-
'So11111111111111111111111111111111111111112'
|
|
37
|
-
);
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Reflects what is actually deployed on devnet (per on-chain enumeration of
|
|
41
|
-
* `StateAccount.numberOfSpotMarkets`). Update when devnet adds/changes a spot market.
|
|
42
|
-
*/
|
|
43
|
-
export const DevnetSpotMarkets: SpotMarketConfig[] = [
|
|
44
|
-
{
|
|
45
|
-
symbol: 'dUSDT',
|
|
46
|
-
marketIndex: 0,
|
|
47
|
-
poolId: 0,
|
|
48
|
-
oracle: new PublicKey('Dai8hT1YRBBm5rBSJUSKcdR11psM55LVAkshbypfC4k4'),
|
|
49
|
-
oracleSource: OracleSource.PYTH_LAZER_STABLE_COIN,
|
|
50
|
-
mint: new PublicKey('GqmEqYsy8EyvofDpmtFxK8zhYrgWgNokAtYoduQdL7v6'),
|
|
51
|
-
precision: new BN(10).pow(SIX),
|
|
52
|
-
precisionExp: SIX,
|
|
53
|
-
pythLazerId: 8,
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
symbol: 'SOL',
|
|
57
|
-
marketIndex: 1,
|
|
58
|
-
poolId: 0,
|
|
59
|
-
oracle: new PublicKey('2k3UHX6ehRFzx5fTVvbL6FwXhMjkucjJDL9MuVKLo8TV'),
|
|
60
|
-
oracleSource: OracleSource.PYTH_LAZER,
|
|
61
|
-
mint: WRAPPED_SOL_MINT,
|
|
62
|
-
precision: LAMPORTS_PRECISION,
|
|
63
|
-
precisionExp: LAMPORTS_EXP,
|
|
64
|
-
pythLazerId: 6,
|
|
65
|
-
},
|
|
66
|
-
];
|
|
67
|
-
|
|
68
|
-
// Relaunch set from deploy-scripts/params/relaunch-spot-markets.json (PR #188).
|
|
69
|
-
// Oracles are the velocity program's pyth_lazer PDAs:
|
|
70
|
-
// findProgramAddress(["pyth_lazer", u32le(lazerFeedId)], VELOCITY_PROGRAM_ID).
|
|
71
|
-
export const MainnetSpotMarkets: SpotMarketConfig[] = [
|
|
72
|
-
{
|
|
73
|
-
symbol: 'USDT',
|
|
74
|
-
marketIndex: 0,
|
|
75
|
-
poolId: 0,
|
|
76
|
-
oracle: new PublicKey('Dai8hT1YRBBm5rBSJUSKcdR11psM55LVAkshbypfC4k4'),
|
|
77
|
-
oracleSource: OracleSource.PYTH_LAZER_STABLE_COIN,
|
|
78
|
-
mint: new PublicKey('Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB'),
|
|
79
|
-
precision: QUOTE_PRECISION,
|
|
80
|
-
precisionExp: QUOTE_PRECISION_EXP,
|
|
81
|
-
pythFeedId:
|
|
82
|
-
'0x2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b',
|
|
83
|
-
pythLazerId: 8,
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
symbol: 'SOL',
|
|
87
|
-
marketIndex: 1,
|
|
88
|
-
poolId: 0,
|
|
89
|
-
oracle: new PublicKey('2k3UHX6ehRFzx5fTVvbL6FwXhMjkucjJDL9MuVKLo8TV'),
|
|
90
|
-
oracleSource: OracleSource.PYTH_LAZER,
|
|
91
|
-
mint: WRAPPED_SOL_MINT,
|
|
92
|
-
precision: LAMPORTS_PRECISION,
|
|
93
|
-
precisionExp: LAMPORTS_EXP,
|
|
94
|
-
pythFeedId:
|
|
95
|
-
'0xef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d',
|
|
96
|
-
pythLazerId: 6,
|
|
97
|
-
},
|
|
98
|
-
];
|
|
99
|
-
|
|
100
|
-
/** Spot market registries keyed by `VelocityEnv`, for looking up a deployment's markets without hardcoding the environment. */
|
|
101
|
-
export const SpotMarkets: { [key in VelocityEnv]: SpotMarketConfig[] } = {
|
|
102
|
-
devnet: DevnetSpotMarkets,
|
|
103
|
-
'mainnet-beta': MainnetSpotMarkets,
|
|
104
|
-
};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/** Error code attached to the `TxSendError` thrown when a transaction send times out without the SDK observing either a confirmation or a definite on-chain failure (see `BaseTxSender`/`TransactionConfirmationManager`). Not a Solana/program error code — it's SDK-internal, meaning "we don't know what happened." */
|
|
2
|
-
export const NOT_CONFIRMED_ERROR_CODE = -1001;
|