@velocity-exchange/sdk 0.4.0 → 0.6.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 (325) hide show
  1. package/README.md +3 -3
  2. package/lib/browser/adminClient.d.ts +52 -0
  3. package/lib/browser/adminClient.js +97 -0
  4. package/lib/browser/config.js +6 -7
  5. package/lib/browser/constants/numericConstants.d.ts +1 -1
  6. package/lib/browser/constants/numericConstants.js +1 -1
  7. package/lib/browser/decode/user.js +5 -1
  8. package/lib/browser/idl/velocity.d.ts +191 -15
  9. package/lib/browser/idl/velocity.json +192 -16
  10. package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +1 -0
  11. package/lib/browser/orderSubscriber/OrderSubscriber.js +10 -4
  12. package/lib/browser/pyth/pythLazerSubscriber.js +37 -27
  13. package/lib/browser/types.d.ts +6 -0
  14. package/lib/browser/user.d.ts +20 -3
  15. package/lib/browser/user.js +52 -4
  16. package/lib/browser/velocityClient.d.ts +46 -10
  17. package/lib/browser/velocityClient.js +107 -35
  18. package/lib/node/adminClient.d.ts +52 -0
  19. package/lib/node/adminClient.d.ts.map +1 -1
  20. package/lib/node/adminClient.js +97 -0
  21. package/lib/node/config.d.ts.map +1 -1
  22. package/lib/node/config.js +6 -7
  23. package/lib/node/constants/numericConstants.d.ts +1 -1
  24. package/lib/node/constants/numericConstants.d.ts.map +1 -1
  25. package/lib/node/constants/numericConstants.js +1 -1
  26. package/lib/node/decode/user.d.ts.map +1 -1
  27. package/lib/node/decode/user.js +5 -1
  28. package/lib/node/idl/velocity.d.ts +191 -15
  29. package/lib/node/idl/velocity.d.ts.map +1 -1
  30. package/lib/node/idl/velocity.json +192 -16
  31. package/lib/node/orderSubscriber/OrderSubscriber.d.ts +1 -0
  32. package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
  33. package/lib/node/orderSubscriber/OrderSubscriber.js +10 -4
  34. package/lib/node/pyth/pythLazerSubscriber.d.ts.map +1 -1
  35. package/lib/node/pyth/pythLazerSubscriber.js +37 -27
  36. package/lib/node/types.d.ts +6 -0
  37. package/lib/node/types.d.ts.map +1 -1
  38. package/lib/node/user.d.ts +20 -3
  39. package/lib/node/user.d.ts.map +1 -1
  40. package/lib/node/user.js +52 -4
  41. package/lib/node/velocityClient.d.ts +46 -10
  42. package/lib/node/velocityClient.d.ts.map +1 -1
  43. package/lib/node/velocityClient.js +107 -35
  44. package/package.json +7 -3
  45. package/.prettierignore +0 -1
  46. package/CHANGELOG.md +0 -132
  47. package/build-browser.js +0 -58
  48. package/bunfig.toml +0 -3
  49. package/esbuild-shims.js +0 -12
  50. package/scripts/deposit-isolated-positions.ts +0 -110
  51. package/scripts/find-flagged-users.ts +0 -213
  52. package/scripts/grpc-client-test-comparison.ts +0 -372
  53. package/scripts/grpc-multiuser-client-test-comparison.ts +0 -158
  54. package/scripts/postbuild.js +0 -95
  55. package/scripts/single-grpc-client-test.ts +0 -284
  56. package/scripts/withdraw-isolated-positions.ts +0 -174
  57. package/src/accounts/README_WebSocketAccountSubscriberV2.md +0 -95
  58. package/src/accounts/README_WebSocketProgramAccountSubscriberV2.md +0 -135
  59. package/src/accounts/basicUserAccountSubscriber.ts +0 -79
  60. package/src/accounts/basicUserStatsAccountSubscriber.ts +0 -87
  61. package/src/accounts/bulkAccountLoader.ts +0 -358
  62. package/src/accounts/bulkUserStatsSubscription.ts +0 -40
  63. package/src/accounts/bulkUserSubscription.ts +0 -39
  64. package/src/accounts/customizedCadenceBulkAccountLoader.ts +0 -250
  65. package/src/accounts/fetch.ts +0 -200
  66. package/src/accounts/grpcAccountSubscriber.ts +0 -225
  67. package/src/accounts/grpcInsuranceFundStakeAccountSubscriber.ts +0 -73
  68. package/src/accounts/grpcMultiAccountSubscriber.ts +0 -566
  69. package/src/accounts/grpcMultiUserAccountSubscriber.ts +0 -328
  70. package/src/accounts/grpcProgramAccountSubscriber.ts +0 -264
  71. package/src/accounts/grpcUserAccountSubscriber.ts +0 -63
  72. package/src/accounts/grpcUserStatsAccountSubscriber.ts +0 -65
  73. package/src/accounts/grpcVelocityClientAccountSubscriber.ts +0 -257
  74. package/src/accounts/grpcVelocityClientAccountSubscriberV2.ts +0 -941
  75. package/src/accounts/laserProgramAccountSubscriber.ts +0 -266
  76. package/src/accounts/oneShotUserAccountSubscriber.ts +0 -88
  77. package/src/accounts/oneShotUserStatsAccountSubscriber.ts +0 -94
  78. package/src/accounts/pollingInsuranceFundStakeAccountSubscriber.ts +0 -223
  79. package/src/accounts/pollingOracleAccountSubscriber.ts +0 -151
  80. package/src/accounts/pollingTokenAccountSubscriber.ts +0 -147
  81. package/src/accounts/pollingUserAccountSubscriber.ts +0 -198
  82. package/src/accounts/pollingUserStatsAccountSubscriber.ts +0 -180
  83. package/src/accounts/pollingVelocityClientAccountSubscriber.ts +0 -774
  84. package/src/accounts/testBulkAccountLoader.ts +0 -59
  85. package/src/accounts/types.ts +0 -428
  86. package/src/accounts/utils.ts +0 -90
  87. package/src/accounts/webSocketAccountSubscriber.ts +0 -304
  88. package/src/accounts/webSocketAccountSubscriberV2.ts +0 -536
  89. package/src/accounts/webSocketInsuranceFundStakeAccountSubscriber.ts +0 -171
  90. package/src/accounts/webSocketProgramAccountSubscriber.ts +0 -244
  91. package/src/accounts/webSocketProgramAccountSubscriberV2.ts +0 -1048
  92. package/src/accounts/webSocketProgramAccountsSubscriberV2.ts +0 -1042
  93. package/src/accounts/webSocketUserAccountSubscriber.ts +0 -139
  94. package/src/accounts/webSocketUserStatsAccountSubsriber.ts +0 -131
  95. package/src/accounts/webSocketVelocityClientAccountSubscriber.ts +0 -865
  96. package/src/accounts/webSocketVelocityClientAccountSubscriberV2.ts +0 -897
  97. package/src/accounts/websocketProgramUserAccountSubscriber.ts +0 -127
  98. package/src/addresses/marketAddresses.ts +0 -28
  99. package/src/addresses/pda.ts +0 -620
  100. package/src/adminClient.ts +0 -8136
  101. package/src/assert/assert.ts +0 -5
  102. package/src/auctionSubscriber/auctionSubscriber.ts +0 -86
  103. package/src/auctionSubscriber/auctionSubscriberGrpc.ts +0 -99
  104. package/src/auctionSubscriber/index.ts +0 -9
  105. package/src/auctionSubscriber/types.ts +0 -30
  106. package/src/bankrun/bankrunConnection.ts +0 -630
  107. package/src/blockhashSubscriber/BlockhashSubscriber.ts +0 -160
  108. package/src/blockhashSubscriber/index.ts +0 -6
  109. package/src/blockhashSubscriber/types.ts +0 -13
  110. package/src/clock/clockSubscriber.ts +0 -146
  111. package/src/config.ts +0 -312
  112. package/src/constants/index.ts +0 -9
  113. package/src/constants/numericConstants.ts +0 -194
  114. package/src/constants/perpMarkets.ts +0 -127
  115. package/src/constants/spotMarkets.ts +0 -104
  116. package/src/constants/txConstants.ts +0 -2
  117. package/src/constituentMap/constituentMap.ts +0 -305
  118. package/src/constituentMap/pollingConstituentAccountSubscriber.ts +0 -99
  119. package/src/constituentMap/webSocketConstituentAccountSubscriber.ts +0 -121
  120. package/src/core/VelocityCore.ts +0 -606
  121. package/src/core/index.ts +0 -12
  122. package/src/core/instructions/deposit.ts +0 -64
  123. package/src/core/instructions/fill.ts +0 -51
  124. package/src/core/instructions/funding.ts +0 -33
  125. package/src/core/instructions/liquidation.ts +0 -55
  126. package/src/core/instructions/orders.ts +0 -84
  127. package/src/core/instructions/perpOrders.ts +0 -312
  128. package/src/core/instructions/settlement.ts +0 -40
  129. package/src/core/instructions/trigger.ts +0 -41
  130. package/src/core/instructions/withdraw.ts +0 -65
  131. package/src/core/remainingAccounts.ts +0 -320
  132. package/src/core/signedMsg.ts +0 -109
  133. package/src/decode/customCoder.ts +0 -148
  134. package/src/decode/user.ts +0 -401
  135. package/src/dlob/DLOB.ts +0 -2793
  136. package/src/dlob/DLOBNode.ts +0 -305
  137. package/src/dlob/DLOBSubscriber.ts +0 -269
  138. package/src/dlob/NodeList.ts +0 -244
  139. package/src/dlob/orderBookLevels.ts +0 -695
  140. package/src/dlob/types.ts +0 -37
  141. package/src/events/eventList.ts +0 -114
  142. package/src/events/eventSubscriber.ts +0 -521
  143. package/src/events/eventsServerLogProvider.ts +0 -189
  144. package/src/events/fetchLogs.ts +0 -219
  145. package/src/events/parse.ts +0 -271
  146. package/src/events/pollingLogProvider.ts +0 -113
  147. package/src/events/sort.ts +0 -51
  148. package/src/events/txEventCache.ts +0 -92
  149. package/src/events/types.ts +0 -337
  150. package/src/events/webSocketLogProvider.ts +0 -152
  151. package/src/factory/bigNum.ts +0 -709
  152. package/src/factory/oracleClient.ts +0 -73
  153. package/src/idl/pyth.json +0 -142
  154. package/src/idl/pyth.ts +0 -97
  155. package/src/idl/pyth_solana_receiver.json +0 -628
  156. package/src/idl/token_faucet.json +0 -229
  157. package/src/idl/token_faucet.ts +0 -197
  158. package/src/idl/velocity.json +0 -23974
  159. package/src/idl/velocity.ts +0 -23980
  160. package/src/index.ts +0 -150
  161. package/src/indicative-quotes/indicativeQuotesSender.ts +0 -233
  162. package/src/isomorphic/README.md +0 -19
  163. package/src/isomorphic/anchor.browser.ts +0 -44
  164. package/src/isomorphic/anchor.node.ts +0 -1
  165. package/src/isomorphic/anchor.ts +0 -1
  166. package/src/isomorphic/anchor29.browser.ts +0 -24
  167. package/src/isomorphic/anchor29.node.ts +0 -1
  168. package/src/isomorphic/anchor29.ts +0 -1
  169. package/src/isomorphic/grpc.browser.ts +0 -4
  170. package/src/isomorphic/grpc.node.ts +0 -130
  171. package/src/isomorphic/grpc.ts +0 -1
  172. package/src/jupiter/jupiterClient.ts +0 -502
  173. package/src/keypair.ts +0 -32
  174. package/src/margin/README.md +0 -138
  175. package/src/marginCalculation.ts +0 -407
  176. package/src/marinade/idl/idl.json +0 -1962
  177. package/src/marinade/index.ts +0 -73
  178. package/src/marinade/types.ts +0 -3925
  179. package/src/math/amm.ts +0 -1758
  180. package/src/math/auction.ts +0 -480
  181. package/src/math/bankruptcy.ts +0 -138
  182. package/src/math/builder.ts +0 -130
  183. package/src/math/conversion.ts +0 -45
  184. package/src/math/exchangeStatus.ts +0 -261
  185. package/src/math/funding.ts +0 -498
  186. package/src/math/insurance.ts +0 -171
  187. package/src/math/liquidation.ts +0 -433
  188. package/src/math/margin.ts +0 -327
  189. package/src/math/market.ts +0 -487
  190. package/src/math/oracles.ts +0 -477
  191. package/src/math/orders.ts +0 -500
  192. package/src/math/position.ts +0 -381
  193. package/src/math/repeg.ts +0 -223
  194. package/src/math/spotBalance.ts +0 -996
  195. package/src/math/spotMarket.ts +0 -115
  196. package/src/math/spotPosition.ts +0 -263
  197. package/src/math/state.ts +0 -71
  198. package/src/math/superStake.ts +0 -602
  199. package/src/math/tiers.ts +0 -73
  200. package/src/math/trade.ts +0 -879
  201. package/src/math/utils.ts +0 -183
  202. package/src/memcmp.ts +0 -279
  203. package/src/oracles/oracleClientCache.ts +0 -41
  204. package/src/oracles/oracleId.ts +0 -99
  205. package/src/oracles/prelaunchOracleClient.ts +0 -63
  206. package/src/oracles/pythClient.ts +0 -125
  207. package/src/oracles/pythLazerClient.ts +0 -141
  208. package/src/oracles/quoteAssetOracleClient.ts +0 -43
  209. package/src/oracles/strictOraclePrice.ts +0 -40
  210. package/src/oracles/types.ts +0 -82
  211. package/src/oracles/utils.ts +0 -45
  212. package/src/orderParams.ts +0 -117
  213. package/src/orderSubscriber/OrderSubscriber.ts +0 -378
  214. package/src/orderSubscriber/PollingSubscription.ts +0 -50
  215. package/src/orderSubscriber/WebsocketSubscription.ts +0 -137
  216. package/src/orderSubscriber/grpcSubscription.ts +0 -155
  217. package/src/orderSubscriber/index.ts +0 -7
  218. package/src/orderSubscriber/types.ts +0 -64
  219. package/src/priorityFee/averageOverSlotsStrategy.ts +0 -17
  220. package/src/priorityFee/averageStrategy.ts +0 -13
  221. package/src/priorityFee/ewmaStrategy.ts +0 -51
  222. package/src/priorityFee/heliusPriorityFeeMethod.ts +0 -68
  223. package/src/priorityFee/index.ts +0 -16
  224. package/src/priorityFee/maxOverSlotsStrategy.ts +0 -18
  225. package/src/priorityFee/maxStrategy.ts +0 -8
  226. package/src/priorityFee/priorityFeeSubscriber.ts +0 -328
  227. package/src/priorityFee/priorityFeeSubscriberMap.ts +0 -134
  228. package/src/priorityFee/solanaPriorityFeeMethod.ts +0 -46
  229. package/src/priorityFee/types.ts +0 -82
  230. package/src/priorityFee/velocityPriorityFeeMethod.ts +0 -53
  231. package/src/pyth/constants.ts +0 -9
  232. package/src/pyth/index.ts +0 -15
  233. package/src/pyth/pythLazerSubscriber.ts +0 -365
  234. package/src/pyth/types.ts +0 -4451
  235. package/src/pyth/utils.ts +0 -13
  236. package/src/slot/SlotSubscriber.ts +0 -126
  237. package/src/slot/SlothashSubscriber.ts +0 -163
  238. package/src/swap/UnifiedSwapClient.ts +0 -315
  239. package/src/swift/grpcSignedMsgUserAccountSubscriber.ts +0 -81
  240. package/src/swift/index.ts +0 -10
  241. package/src/swift/signedMsgUserAccountSubscriber.ts +0 -251
  242. package/src/swift/swiftOrderSubscriber.ts +0 -351
  243. package/src/testClient.ts +0 -42
  244. package/src/titan/titanClient.ts +0 -438
  245. package/src/token/index.ts +0 -13
  246. package/src/tokenFaucet.ts +0 -296
  247. package/src/tx/baseTxSender.ts +0 -651
  248. package/src/tx/blockhashFetcher/baseBlockhashFetcher.ts +0 -31
  249. package/src/tx/blockhashFetcher/cachedBlockhashFetcher.ts +0 -105
  250. package/src/tx/blockhashFetcher/types.ts +0 -9
  251. package/src/tx/fastSingleTxSender.ts +0 -200
  252. package/src/tx/forwardOnlyTxSender.ts +0 -193
  253. package/src/tx/priorityFeeCalculator.ts +0 -117
  254. package/src/tx/reportTransactionError.ts +0 -176
  255. package/src/tx/retryTxSender.ts +0 -177
  256. package/src/tx/txHandler.ts +0 -1009
  257. package/src/tx/txParamProcessor.ts +0 -225
  258. package/src/tx/types.ts +0 -117
  259. package/src/tx/utils.ts +0 -133
  260. package/src/tx/whileValidTxSender.ts +0 -377
  261. package/src/types.ts +0 -2575
  262. package/src/user.ts +0 -5316
  263. package/src/userConfig.ts +0 -38
  264. package/src/userMap/PollingSubscription.ts +0 -61
  265. package/src/userMap/WebsocketSubscription.ts +0 -93
  266. package/src/userMap/grpcSubscription.ts +0 -93
  267. package/src/userMap/referrerMap.ts +0 -360
  268. package/src/userMap/revenueShareEscrowMap.ts +0 -342
  269. package/src/userMap/userMap.ts +0 -784
  270. package/src/userMap/userMapConfig.ts +0 -82
  271. package/src/userMap/userStatsMap.ts +0 -393
  272. package/src/userName.ts +0 -37
  273. package/src/userStats.ts +0 -159
  274. package/src/userStatsConfig.ts +0 -35
  275. package/src/util/TransactionConfirmationManager.ts +0 -333
  276. package/src/util/chainClock.ts +0 -65
  277. package/src/util/computeUnits.ts +0 -101
  278. package/src/util/digest.ts +0 -33
  279. package/src/util/ed25519Utils.ts +0 -95
  280. package/src/util/promiseTimeout.ts +0 -23
  281. package/src/velocityClient.ts +0 -14802
  282. package/src/velocityClientConfig.ts +0 -119
  283. package/src/wallet.ts +0 -91
  284. package/tests/VelocityCore/builder_escrow.test.ts +0 -121
  285. package/tests/VelocityCore/decode.test.ts +0 -16
  286. package/tests/VelocityCore/fill_trigger.test.ts +0 -73
  287. package/tests/VelocityCore/instructions.test.ts +0 -46
  288. package/tests/VelocityCore/pdas.test.ts +0 -30
  289. package/tests/VelocityCore/perp_orders.test.ts +0 -205
  290. package/tests/VelocityCore/remainingAccounts.test.ts +0 -72
  291. package/tests/VelocityCore/settlement_liquidation.test.ts +0 -69
  292. package/tests/accounts/customizedCadenceBulkAccountLoader.test.ts +0 -211
  293. package/tests/amm/test.ts +0 -2402
  294. package/tests/auctions/test.ts +0 -81
  295. package/tests/bn/test.ts +0 -355
  296. package/tests/builder/builderFee.test.ts +0 -42
  297. package/tests/ci/verifyConstants.ts +0 -393
  298. package/tests/decode/test.ts +0 -262
  299. package/tests/decode/userAccountBufferStrings.ts +0 -102
  300. package/tests/dlob/helpers.ts +0 -748
  301. package/tests/dlob/test.ts +0 -6969
  302. package/tests/dlob/tickSizeStandardization.ts +0 -545
  303. package/tests/events/parseLogsForCuUsage.ts +0 -139
  304. package/tests/exchangeStatus/test.ts +0 -45
  305. package/tests/insurance/test.ts +0 -40
  306. package/tests/liquidation/test.ts +0 -125
  307. package/tests/oracles/mmOracleGate.test.ts +0 -379
  308. package/tests/oracles/pythPegSnap.test.ts +0 -76
  309. package/tests/sdkParity/enumParity.test.ts +0 -84
  310. package/tests/sdkParity/marginCategoryFill.test.ts +0 -143
  311. package/tests/sdkParity/memcmpOffsets.test.ts +0 -139
  312. package/tests/spot/test.ts +0 -281
  313. package/tests/tx/TransactionConfirmationManager.test.ts +0 -312
  314. package/tests/tx/cachedBlockhashFetcher.test.ts +0 -96
  315. package/tests/tx/priorityFeeCalculator.ts +0 -77
  316. package/tests/tx/priorityFeeStrategy.ts +0 -95
  317. package/tests/user/bankruptcy.ts +0 -165
  318. package/tests/user/feeAndWithdrawLimits.ts +0 -284
  319. package/tests/user/getMarginCalculation.ts +0 -586
  320. package/tests/user/helpers.ts +0 -184
  321. package/tests/user/liquidations.ts +0 -129
  322. package/tests/user/marginCalculations.test.ts +0 -321
  323. package/tests/user/test.ts +0 -833
  324. package/tsconfig.browser.json +0 -18
  325. package/tsconfig.json +0 -36
@@ -1,620 +0,0 @@
1
- /**
2
- * PDA derivation helpers for all Velocity protocol accounts.
3
- * Covers: User, UserStats, PerpMarket, SpotMarket, InsuranceFundStake, State,
4
- * LP pool (and its constituents/caches), revenue share, and vault PDAs.
5
- * All functions are pure (no RPC calls).
6
- */
7
- import { PublicKey } from '@solana/web3.js';
8
- import * as anchor from '../isomorphic/anchor';
9
- import {
10
- getAssociatedTokenAddress,
11
- TOKEN_2022_PROGRAM_ID,
12
- TOKEN_PROGRAM_ID,
13
- } from '@solana/spl-token';
14
- import { SpotMarketAccount, TokenProgramFlag } from '../types';
15
-
16
- /**
17
- * Derives the singleton `State` account PDA (seed `"velocity_state"`), plus its bump nonce. There
18
- * is exactly one `State` account per program deployment.
19
- * @param programId - Deployed velocity program id.
20
- * @returns Tuple of `[stateAccountPublicKey, bumpNonce]`.
21
- */
22
- export async function getVelocityStateAccountPublicKeyAndNonce(
23
- programId: PublicKey
24
- ): Promise<[PublicKey, number]> {
25
- return Promise.resolve(
26
- PublicKey.findProgramAddressSync(
27
- [Buffer.from(anchor.utils.bytes.utf8.encode('velocity_state'))],
28
- programId
29
- )
30
- );
31
- }
32
-
33
- /**
34
- * Derives the singleton `State` account PDA (seed `"velocity_state"`).
35
- * @param programId - Deployed velocity program id.
36
- * @returns The `State` account's public key.
37
- */
38
- export async function getVelocityStateAccountPublicKey(
39
- programId: PublicKey
40
- ): Promise<PublicKey> {
41
- return (await getVelocityStateAccountPublicKeyAndNonce(programId))[0];
42
- }
43
-
44
- /**
45
- * Derives a `User` (sub-account) PDA, plus its bump nonce, from seeds `["user", authority,
46
- * subAccountId as u16 LE]`.
47
- * @param programId - Deployed velocity program id.
48
- * @param authority - Wallet pubkey that owns the sub-account.
49
- * @param subAccountId - Sub-account index (u16); defaults to 0, the wallet's first/main sub-account.
50
- * @returns Tuple of `[userAccountPublicKey, bumpNonce]`.
51
- */
52
- export async function getUserAccountPublicKeyAndNonce(
53
- programId: PublicKey,
54
- authority: PublicKey,
55
- subAccountId = 0
56
- ): Promise<[PublicKey, number]> {
57
- return Promise.resolve(
58
- PublicKey.findProgramAddressSync(
59
- [
60
- Buffer.from(anchor.utils.bytes.utf8.encode('user')),
61
- authority.toBuffer(),
62
- new anchor.BN(subAccountId).toArrayLike(Buffer, 'le', 2),
63
- ],
64
- programId
65
- )
66
- );
67
- }
68
-
69
- /**
70
- * Derives a `User` (sub-account) PDA from seeds `["user", authority, subAccountId as u16 LE]`.
71
- * @param programId - Deployed velocity program id.
72
- * @param authority - Wallet pubkey that owns the sub-account.
73
- * @param subAccountId - Sub-account index (u16); defaults to 0, the wallet's first/main sub-account.
74
- * @returns The `User` account's public key.
75
- */
76
- export async function getUserAccountPublicKey(
77
- programId: PublicKey,
78
- authority: PublicKey,
79
- subAccountId = 0
80
- ): Promise<PublicKey> {
81
- return (
82
- await getUserAccountPublicKeyAndNonce(programId, authority, subAccountId)
83
- )[0];
84
- }
85
-
86
- /**
87
- * Synchronous variant of `getUserAccountPublicKey` (no RPC/async round-trip; pure PDA math).
88
- * @param programId - Deployed velocity program id.
89
- * @param authority - Wallet pubkey that owns the sub-account.
90
- * @param subAccountId - Sub-account index (u16); defaults to 0.
91
- * @returns The `User` account's public key.
92
- */
93
- export function getUserAccountPublicKeySync(
94
- programId: PublicKey,
95
- authority: PublicKey,
96
- subAccountId = 0
97
- ): PublicKey {
98
- return PublicKey.findProgramAddressSync(
99
- [
100
- Buffer.from(anchor.utils.bytes.utf8.encode('user')),
101
- authority.toBuffer(),
102
- new anchor.BN(subAccountId).toArrayLike(Buffer, 'le', 2),
103
- ],
104
- programId
105
- )[0];
106
- }
107
-
108
- /**
109
- * Derives the `UserStats` PDA (one per authority, shared across all of that authority's
110
- * sub-accounts) from seeds `["user_stats", authority]`.
111
- * @param programId - Deployed velocity program id.
112
- * @param authority - Wallet pubkey the stats account tracks.
113
- * @returns The `UserStats` account's public key.
114
- */
115
- export function getUserStatsAccountPublicKey(
116
- programId: PublicKey,
117
- authority: PublicKey
118
- ): PublicKey {
119
- return PublicKey.findProgramAddressSync(
120
- [
121
- Buffer.from(anchor.utils.bytes.utf8.encode('user_stats')),
122
- authority.toBuffer(),
123
- ],
124
- programId
125
- )[0];
126
- }
127
-
128
- /**
129
- * Derives the `SignedMsgUserOrders` PDA (holds a user's pending swift/signed-message orders) from
130
- * seeds `["SIGNED_MSG", authority]`.
131
- * @param programId - Deployed velocity program id.
132
- * @param authority - Wallet pubkey (the user's main authority, not the sub-account) that owns the account.
133
- * @returns The `SignedMsgUserOrders` account's public key.
134
- */
135
- export function getSignedMsgUserAccountPublicKey(
136
- programId: PublicKey,
137
- authority: PublicKey
138
- ): PublicKey {
139
- return PublicKey.findProgramAddressSync(
140
- [
141
- Buffer.from(anchor.utils.bytes.utf8.encode('SIGNED_MSG')),
142
- authority.toBuffer(),
143
- ],
144
- programId
145
- )[0];
146
- }
147
-
148
- /**
149
- * Derives the PDA that stores a user's approved signed-message (swift) websocket delegate keys,
150
- * from seeds `["SIGNED_MSG_WS", authority]`.
151
- * @param programId - Deployed velocity program id.
152
- * @param authority - Wallet pubkey (the user's main authority) that owns the delegates account.
153
- * @returns The delegates account's public key.
154
- */
155
- export function getSignedMsgWsDelegatesAccountPublicKey(
156
- programId: PublicKey,
157
- authority: PublicKey
158
- ): PublicKey {
159
- return PublicKey.findProgramAddressSync(
160
- [
161
- Buffer.from(anchor.utils.bytes.utf8.encode('SIGNED_MSG_WS')),
162
- authority.toBuffer(),
163
- ],
164
- programId
165
- )[0];
166
- }
167
-
168
- /**
169
- * Derives a `PerpMarket` PDA from seeds `["perp_market", marketIndex as u16 LE]`.
170
- * @param programId - Deployed velocity program id.
171
- * @param marketIndex - Perp market index.
172
- * @returns The `PerpMarket` account's public key.
173
- */
174
- export async function getPerpMarketPublicKey(
175
- programId: PublicKey,
176
- marketIndex: number
177
- ): Promise<PublicKey> {
178
- return (
179
- await PublicKey.findProgramAddress(
180
- [
181
- Buffer.from(anchor.utils.bytes.utf8.encode('perp_market')),
182
- new anchor.BN(marketIndex).toArrayLike(Buffer, 'le', 2),
183
- ],
184
- programId
185
- )
186
- )[0];
187
- }
188
-
189
- /**
190
- * Synchronous variant of `getPerpMarketPublicKey`.
191
- * @param programId - Deployed velocity program id.
192
- * @param marketIndex - Perp market index.
193
- * @returns The `PerpMarket` account's public key.
194
- */
195
- export function getPerpMarketPublicKeySync(
196
- programId: PublicKey,
197
- marketIndex: number
198
- ): PublicKey {
199
- return PublicKey.findProgramAddressSync(
200
- [
201
- Buffer.from(anchor.utils.bytes.utf8.encode('perp_market')),
202
- new anchor.BN(marketIndex).toArrayLike(Buffer, 'le', 2),
203
- ],
204
- programId
205
- )[0];
206
- }
207
-
208
- /**
209
- * Derives a `SpotMarket` PDA from seeds `["spot_market", marketIndex as u16 LE]`.
210
- * @param programId - Deployed velocity program id.
211
- * @param marketIndex - Spot market index.
212
- * @returns The `SpotMarket` account's public key.
213
- */
214
- export async function getSpotMarketPublicKey(
215
- programId: PublicKey,
216
- marketIndex: number
217
- ): Promise<PublicKey> {
218
- return (
219
- await PublicKey.findProgramAddress(
220
- [
221
- Buffer.from(anchor.utils.bytes.utf8.encode('spot_market')),
222
- new anchor.BN(marketIndex).toArrayLike(Buffer, 'le', 2),
223
- ],
224
- programId
225
- )
226
- )[0];
227
- }
228
-
229
- /**
230
- * Synchronous variant of `getSpotMarketPublicKey`.
231
- * @param programId - Deployed velocity program id.
232
- * @param marketIndex - Spot market index.
233
- * @returns The `SpotMarket` account's public key.
234
- */
235
- export function getSpotMarketPublicKeySync(
236
- programId: PublicKey,
237
- marketIndex: number
238
- ): PublicKey {
239
- return PublicKey.findProgramAddressSync(
240
- [
241
- Buffer.from(anchor.utils.bytes.utf8.encode('spot_market')),
242
- new anchor.BN(marketIndex).toArrayLike(Buffer, 'le', 2),
243
- ],
244
- programId
245
- )[0];
246
- }
247
-
248
- /**
249
- * Derives the token vault PDA (an SPL/Token-2022 token account owned by the `velocity_signer` PDA)
250
- * that custodies a spot market's deposits, from seeds `["spot_market_vault", marketIndex as u16 LE]`.
251
- * @param programId - Deployed velocity program id.
252
- * @param marketIndex - Spot market index.
253
- * @returns The spot market vault token account's public key.
254
- */
255
- export async function getSpotMarketVaultPublicKey(
256
- programId: PublicKey,
257
- marketIndex: number
258
- ): Promise<PublicKey> {
259
- return (
260
- await PublicKey.findProgramAddress(
261
- [
262
- Buffer.from(anchor.utils.bytes.utf8.encode('spot_market_vault')),
263
- new anchor.BN(marketIndex).toArrayLike(Buffer, 'le', 2),
264
- ],
265
- programId
266
- )
267
- )[0];
268
- }
269
-
270
- /**
271
- * Derives the insurance fund's token vault PDA for a market, from seeds `["insurance_fund_vault",
272
- * marketIndex as u16 LE]`.
273
- * @param programId - Deployed velocity program id.
274
- * @param marketIndex - Spot market index whose insurance fund this vault backs.
275
- * @returns The insurance fund vault token account's public key.
276
- */
277
- export async function getInsuranceFundVaultPublicKey(
278
- programId: PublicKey,
279
- marketIndex: number
280
- ): Promise<PublicKey> {
281
- return (
282
- await PublicKey.findProgramAddress(
283
- [
284
- Buffer.from(anchor.utils.bytes.utf8.encode('insurance_fund_vault')),
285
- new anchor.BN(marketIndex).toArrayLike(Buffer, 'le', 2),
286
- ],
287
- programId
288
- )
289
- )[0];
290
- }
291
-
292
- /**
293
- * Derives an `InsuranceFundStake` PDA (an authority's staked share of one market's insurance fund)
294
- * from seeds `["insurance_fund_stake", authority, marketIndex as u16 LE]`.
295
- * @param programId - Deployed velocity program id.
296
- * @param authority - Wallet pubkey staking into the insurance fund.
297
- * @param marketIndex - Spot market index whose insurance fund is being staked into.
298
- * @returns The `InsuranceFundStake` account's public key.
299
- */
300
- export function getInsuranceFundStakeAccountPublicKey(
301
- programId: PublicKey,
302
- authority: PublicKey,
303
- marketIndex: number
304
- ): PublicKey {
305
- return PublicKey.findProgramAddressSync(
306
- [
307
- Buffer.from(anchor.utils.bytes.utf8.encode('insurance_fund_stake')),
308
- authority.toBuffer(),
309
- new anchor.BN(marketIndex).toArrayLike(Buffer, 'le', 2),
310
- ],
311
- programId
312
- )[0];
313
- }
314
-
315
- /**
316
- * Derives the singleton `velocity_signer` PDA — the program-derived authority that owns/signs for
317
- * all program-controlled token vaults (spot market vaults, insurance fund vaults, etc.) via CPI.
318
- * @param programId - Deployed velocity program id.
319
- * @returns The velocity signer PDA's public key.
320
- */
321
- export function getVelocitySignerPublicKey(programId: PublicKey): PublicKey {
322
- return PublicKey.findProgramAddressSync(
323
- [Buffer.from(anchor.utils.bytes.utf8.encode('velocity_signer'))],
324
- programId
325
- )[0];
326
- }
327
-
328
- /**
329
- * Derives the PDA that reserves a unique referrer name, from seeds `["referrer_name", nameBuffer]`.
330
- * Used to enforce name uniqueness for referrers on-chain.
331
- * @param programId - Deployed velocity program id.
332
- * @param nameBuffer - The 32-byte encoded name (see `encodeName`) to reserve.
333
- * @returns The referrer-name PDA's public key.
334
- */
335
- export function getReferrerNamePublicKeySync(
336
- programId: PublicKey,
337
- nameBuffer: number[]
338
- ): PublicKey {
339
- return PublicKey.findProgramAddressSync(
340
- [
341
- Buffer.from(anchor.utils.bytes.utf8.encode('referrer_name')),
342
- Buffer.from(nameBuffer),
343
- ],
344
- programId
345
- )[0];
346
- }
347
-
348
- /**
349
- * Derives the `PrelaunchOracle` PDA used as a placeholder/synthetic oracle for a not-yet-listed
350
- * perp market, from seeds `["prelaunch_oracle", marketIndex as u16 LE]`.
351
- * @param programId - Deployed velocity program id.
352
- * @param marketIndex - Perp market index the prelaunch oracle backs.
353
- * @returns The `PrelaunchOracle` account's public key.
354
- */
355
- export function getPrelaunchOraclePublicKey(
356
- programId: PublicKey,
357
- marketIndex: number
358
- ): PublicKey {
359
- return PublicKey.findProgramAddressSync(
360
- [
361
- Buffer.from(anchor.utils.bytes.utf8.encode('prelaunch_oracle')),
362
- new anchor.BN(marketIndex).toArrayLike(Buffer, 'le', 2),
363
- ],
364
- programId
365
- )[0];
366
- }
367
-
368
- /**
369
- * Derives a Pyth Lazer oracle account PDA from seeds `["pyth_lazer", feedId as u32 LE]`. One
370
- * account exists per Lazer feed id and is shared across all markets using that feed.
371
- * @param progarmId - Deployed velocity program id (note: parameter name is misspelled but stable API).
372
- * @param feedId - Pyth Lazer feed id (u32).
373
- * @returns The Pyth Lazer oracle account's public key.
374
- */
375
- export function getPythLazerOraclePublicKey(
376
- progarmId: PublicKey,
377
- feedId: number
378
- ): PublicKey {
379
- const buffer = new ArrayBuffer(4);
380
- const view = new DataView(buffer);
381
- view.setUint32(0, feedId, true);
382
- const feedIdBytes = new Uint8Array(buffer);
383
- return PublicKey.findProgramAddressSync(
384
- [
385
- Buffer.from(anchor.utils.bytes.utf8.encode('pyth_lazer')),
386
- Buffer.from(feedIdBytes),
387
- ],
388
- progarmId
389
- )[0];
390
- }
391
-
392
- /**
393
- * Picks the correct SPL token program for a spot market's mint, based on its `tokenProgramFlag`.
394
- * Needed because Velocity supports both classic SPL tokens and Token-2022 mints; passing the wrong
395
- * token program id to an instruction's accounts will fail owner checks.
396
- * @param spotMarketAccount - The spot market to inspect.
397
- * @returns `TOKEN_2022_PROGRAM_ID` if `TokenProgramFlag.Token2022` is set, otherwise `TOKEN_PROGRAM_ID`.
398
- */
399
- export function getTokenProgramForSpotMarket(
400
- spotMarketAccount: SpotMarketAccount
401
- ): PublicKey {
402
- if ((spotMarketAccount.tokenProgramFlag & TokenProgramFlag.Token2022) > 0) {
403
- return TOKEN_2022_PROGRAM_ID;
404
- }
405
- return TOKEN_PROGRAM_ID;
406
- }
407
-
408
- /**
409
- * Derives a builder/referrer's `RevenueShare` PDA from seeds `["REV_SHARE", authority]`. Tracks
410
- * fees a builder/referrer has accrued from orders that credited them.
411
- * @param programId - Deployed velocity program id.
412
- * @param authority - Wallet pubkey of the builder/referrer.
413
- * @returns The `RevenueShare` account's public key.
414
- */
415
- export function getRevenueShareAccountPublicKey(
416
- programId: PublicKey,
417
- authority: PublicKey
418
- ): PublicKey {
419
- return PublicKey.findProgramAddressSync(
420
- [
421
- Buffer.from(anchor.utils.bytes.utf8.encode('REV_SHARE')),
422
- authority.toBuffer(),
423
- ],
424
- programId
425
- )[0];
426
- }
427
-
428
- /**
429
- * Derives a user's `RevenueShareEscrow` PDA from seeds `["REV_ESCROW", authority]`. Holds the
430
- * user's referrer link and approved builder-fee list; required as a remaining account whenever a
431
- * placed order references a `builderIdx`/builder fee, or when a taker was referred.
432
- * @param programId - Deployed velocity program id.
433
- * @param authority - Wallet pubkey of the user (order placer), not the builder/referrer.
434
- * @returns The `RevenueShareEscrow` account's public key.
435
- */
436
- export function getRevenueShareEscrowAccountPublicKey(
437
- programId: PublicKey,
438
- authority: PublicKey
439
- ): PublicKey {
440
- return PublicKey.findProgramAddressSync(
441
- [
442
- Buffer.from(anchor.utils.bytes.utf8.encode('REV_ESCROW')),
443
- authority.toBuffer(),
444
- ],
445
- programId
446
- )[0];
447
- }
448
-
449
- /**
450
- * Derives an `LpPool` PDA from seeds `["lp_pool", lpPoolId as u8 LE]`.
451
- * @param programId - Deployed velocity program id.
452
- * @param lpPoolId - Single-byte LP pool id.
453
- * @returns The `LpPool` account's public key.
454
- */
455
- export function getLpPoolPublicKey(
456
- programId: PublicKey,
457
- lpPoolId: number
458
- ): PublicKey {
459
- return PublicKey.findProgramAddressSync(
460
- [
461
- Buffer.from(anchor.utils.bytes.utf8.encode('lp_pool')),
462
- new anchor.BN(lpPoolId).toArrayLike(Buffer, 'le', 1),
463
- ],
464
- programId
465
- )[0];
466
- }
467
-
468
- /**
469
- * Derives the token vault PDA holding an `LpPool`'s minted LP token supply's backing, from seeds
470
- * `["LP_POOL_TOKEN_VAULT", lpPool]`.
471
- * @param programId - Deployed velocity program id.
472
- * @param lpPool - The `LpPool` account's public key.
473
- * @returns The LP pool token vault's public key.
474
- */
475
- export function getLpPoolTokenVaultPublicKey(
476
- programId: PublicKey,
477
- lpPool: PublicKey
478
- ): PublicKey {
479
- return PublicKey.findProgramAddressSync(
480
- [
481
- Buffer.from(anchor.utils.bytes.utf8.encode('LP_POOL_TOKEN_VAULT')),
482
- lpPool.toBuffer(),
483
- ],
484
- programId
485
- )[0];
486
- }
487
- /**
488
- * Derives the `AmmConstituentMapping` PDA (maps LP-pool constituents to the perp AMMs they hedge)
489
- * from seeds `["AMM_MAP", lpPoolPublicKey]`.
490
- * @param programId - Deployed velocity program id.
491
- * @param lpPoolPublicKey - The `LpPool` account's public key.
492
- * @returns The `AmmConstituentMapping` account's public key.
493
- */
494
- export function getAmmConstituentMappingPublicKey(
495
- programId: PublicKey,
496
- lpPoolPublicKey: PublicKey
497
- ): PublicKey {
498
- return PublicKey.findProgramAddressSync(
499
- [
500
- Buffer.from(anchor.utils.bytes.utf8.encode('AMM_MAP')),
501
- lpPoolPublicKey.toBuffer(),
502
- ],
503
- programId
504
- )[0];
505
- }
506
-
507
- /**
508
- * Derives the `ConstituentTargetBase` PDA (target base-asset weights for an LP pool's
509
- * constituents) from seeds `["constituent_target_base_seed", lpPoolPublicKey]`.
510
- * @param programId - Deployed velocity program id.
511
- * @param lpPoolPublicKey - The `LpPool` account's public key.
512
- * @returns The `ConstituentTargetBase` account's public key.
513
- */
514
- export function getConstituentTargetBasePublicKey(
515
- programId: PublicKey,
516
- lpPoolPublicKey: PublicKey
517
- ): PublicKey {
518
- return PublicKey.findProgramAddressSync(
519
- [
520
- Buffer.from(
521
- anchor.utils.bytes.utf8.encode('constituent_target_base_seed')
522
- ),
523
- lpPoolPublicKey.toBuffer(),
524
- ],
525
- programId
526
- )[0];
527
- }
528
-
529
- /**
530
- * Derives a `Constituent` PDA (one per spot market backing an LP pool) from seeds `["CONSTITUENT",
531
- * lpPoolPublicKey, spotMarketIndex as u16 LE]`.
532
- * @param programId - Deployed velocity program id.
533
- * @param lpPoolPublicKey - The `LpPool` account's public key.
534
- * @param spotMarketIndex - Spot market index of this constituent.
535
- * @returns The `Constituent` account's public key.
536
- */
537
- export function getConstituentPublicKey(
538
- programId: PublicKey,
539
- lpPoolPublicKey: PublicKey,
540
- spotMarketIndex: number
541
- ): PublicKey {
542
- return PublicKey.findProgramAddressSync(
543
- [
544
- Buffer.from(anchor.utils.bytes.utf8.encode('CONSTITUENT')),
545
- lpPoolPublicKey.toBuffer(),
546
- new anchor.BN(spotMarketIndex).toArrayLike(Buffer, 'le', 2),
547
- ],
548
- programId
549
- )[0];
550
- }
551
-
552
- /**
553
- * Derives the token vault PDA that custodies a `Constituent`'s deposits, from seeds
554
- * `["CONSTITUENT_VAULT", lpPoolPublicKey, spotMarketIndex as u16 LE]`.
555
- * @param programId - Deployed velocity program id.
556
- * @param lpPoolPublicKey - The `LpPool` account's public key.
557
- * @param spotMarketIndex - Spot market index of the constituent this vault backs.
558
- * @returns The constituent vault token account's public key.
559
- */
560
- export function getConstituentVaultPublicKey(
561
- programId: PublicKey,
562
- lpPoolPublicKey: PublicKey,
563
- spotMarketIndex: number
564
- ): PublicKey {
565
- return PublicKey.findProgramAddressSync(
566
- [
567
- Buffer.from(anchor.utils.bytes.utf8.encode('CONSTITUENT_VAULT')),
568
- lpPoolPublicKey.toBuffer(),
569
- new anchor.BN(spotMarketIndex).toArrayLike(Buffer, 'le', 2),
570
- ],
571
- programId
572
- )[0];
573
- }
574
-
575
- /**
576
- * Derives the singleton `AmmCache` PDA (caches per-AMM data used by LP-pool hedging/settlement)
577
- * from seed `"amm_cache_seed"`. One per program deployment.
578
- * @param programId - Deployed velocity program id.
579
- * @returns The `AmmCache` account's public key.
580
- */
581
- export function getAmmCachePublicKey(programId: PublicKey): PublicKey {
582
- return PublicKey.findProgramAddressSync(
583
- [Buffer.from(anchor.utils.bytes.utf8.encode('amm_cache_seed'))],
584
- programId
585
- )[0];
586
- }
587
-
588
- /**
589
- * Derives the `ConstituentCorrelations` PDA (pairwise correlation data between an LP pool's
590
- * constituents) from seeds `["constituent_correlations", lpPoolPublicKey]`.
591
- * @param programId - Deployed velocity program id.
592
- * @param lpPoolPublicKey - The `LpPool` account's public key.
593
- * @returns The `ConstituentCorrelations` account's public key.
594
- */
595
- export function getConstituentCorrelationsPublicKey(
596
- programId: PublicKey,
597
- lpPoolPublicKey: PublicKey
598
- ): PublicKey {
599
- return PublicKey.findProgramAddressSync(
600
- [
601
- Buffer.from(anchor.utils.bytes.utf8.encode('constituent_correlations')),
602
- lpPoolPublicKey.toBuffer(),
603
- ],
604
- programId
605
- )[0];
606
- }
607
-
608
- /**
609
- * Derives the associated token account for an LP pool's mint under a given owner (not a
610
- * program-derived PDA — a standard SPL associated token account).
611
- * @param lpPoolTokenMint - The LP pool's token mint.
612
- * @param authority - Owner of the associated token account.
613
- * @returns The associated token account's public key.
614
- */
615
- export async function getLpPoolTokenTokenAccountPublicKey(
616
- lpPoolTokenMint: PublicKey,
617
- authority: PublicKey
618
- ): Promise<PublicKey> {
619
- return await getAssociatedTokenAddress(lpPoolTokenMint, authority, true);
620
- }