@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.
- package/README.md +3 -3
- package/lib/browser/adminClient.d.ts +52 -0
- package/lib/browser/adminClient.js +97 -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 +191 -15
- package/lib/browser/idl/velocity.json +192 -16
- package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +1 -0
- package/lib/browser/orderSubscriber/OrderSubscriber.js +10 -4
- package/lib/browser/pyth/pythLazerSubscriber.js +37 -27
- package/lib/browser/types.d.ts +6 -0
- package/lib/browser/user.d.ts +20 -3
- package/lib/browser/user.js +52 -4
- package/lib/browser/velocityClient.d.ts +46 -10
- package/lib/browser/velocityClient.js +107 -35
- package/lib/node/adminClient.d.ts +52 -0
- package/lib/node/adminClient.d.ts.map +1 -1
- package/lib/node/adminClient.js +97 -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 +191 -15
- package/lib/node/idl/velocity.d.ts.map +1 -1
- package/lib/node/idl/velocity.json +192 -16
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts +1 -0
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
- package/lib/node/orderSubscriber/OrderSubscriber.js +10 -4
- package/lib/node/pyth/pythLazerSubscriber.d.ts.map +1 -1
- package/lib/node/pyth/pythLazerSubscriber.js +37 -27
- package/lib/node/types.d.ts +6 -0
- package/lib/node/types.d.ts.map +1 -1
- package/lib/node/user.d.ts +20 -3
- package/lib/node/user.d.ts.map +1 -1
- package/lib/node/user.js +52 -4
- 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
package/src/addresses/pda.ts
DELETED
|
@@ -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
|
-
}
|