@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
package/README.md
CHANGED
|
@@ -40,7 +40,7 @@ The below is a light overview of using Solana and Velocity's typescript sdk. If
|
|
|
40
40
|
# Generate a keypair
|
|
41
41
|
solana-keygen new
|
|
42
42
|
|
|
43
|
-
# Get the pubkey for the new wallet (You will need to send
|
|
43
|
+
# Get the pubkey for the new wallet (You will need to send the quote asset to this address to Deposit into Velocity (only on mainnet - devnet has a faucet for the quote asset))
|
|
44
44
|
solana address
|
|
45
45
|
|
|
46
46
|
# Put the private key into your .env to be used by your bot
|
|
@@ -210,12 +210,12 @@ const main = async () => {
|
|
|
210
210
|
provider.wallet.publicKey.toString()
|
|
211
211
|
);
|
|
212
212
|
|
|
213
|
-
//// Create a Velocity V1 account by Depositing some
|
|
213
|
+
//// Create a Velocity V1 account by Depositing some quote asset ($10,000 in this case)
|
|
214
214
|
const depositAmount = new BN(10000).mul(QUOTE_PRECISION);
|
|
215
215
|
await velocityClient.initializeUserAccountAndDepositCollateral(
|
|
216
216
|
depositAmount,
|
|
217
217
|
await getTokenAddress(
|
|
218
|
-
|
|
218
|
+
quoteTokenAddress.toString(),
|
|
219
219
|
provider.wallet.publicKey.toString()
|
|
220
220
|
)
|
|
221
221
|
);
|
|
@@ -2462,6 +2462,41 @@ export declare class AdminClient extends VelocityClient {
|
|
|
2462
2462
|
* @returns The unsigned `updateSpecialUserStatus` instruction.
|
|
2463
2463
|
*/
|
|
2464
2464
|
getUpdateSpecialUserStatusIx(userAccountPublicKey: PublicKey, status: number): Promise<TransactionInstruction>;
|
|
2465
|
+
/**
|
|
2466
|
+
* Sets a `User` account's `equityFloor`: the minimum cross-margin total
|
|
2467
|
+
* collateral (QUOTE_PRECISION) the account must keep. Below the floor the
|
|
2468
|
+
* program rejects risk-increasing order placement and fills, withdrawals,
|
|
2469
|
+
* and deposit/position transfers out of the account; reduce-only activity
|
|
2470
|
+
* stays allowed. Requires warm admin (`check_warm`); the account's
|
|
2471
|
+
* authority and delegate cannot change it. Pass `0` to disable.
|
|
2472
|
+
* @param userAccountPublicKey - `User` PDA to update.
|
|
2473
|
+
* @param equityFloor - New floor, QUOTE_PRECISION; `0` disables.
|
|
2474
|
+
* @param txParams - Optional transaction-building overrides.
|
|
2475
|
+
* @returns Transaction signature.
|
|
2476
|
+
*/
|
|
2477
|
+
updateUserEquityFloor(userAccountPublicKey: PublicKey, equityFloor: BN, txParams?: TxParams): Promise<TransactionSignature>;
|
|
2478
|
+
/**
|
|
2479
|
+
* Builds the `updateUserEquityFloor` instruction without sending it. See
|
|
2480
|
+
* `updateUserEquityFloor`.
|
|
2481
|
+
* @returns The unsigned `updateUserEquityFloor` instruction.
|
|
2482
|
+
*/
|
|
2483
|
+
getUpdateUserEquityFloorIx(userAccountPublicKey: PublicKey, equityFloor: BN): Promise<TransactionInstruction>;
|
|
2484
|
+
/**
|
|
2485
|
+
* Clears the authority-wide equity floor breaker set by the permissionless
|
|
2486
|
+
* `tripEquityFloorBreaker` keeper instruction, unfreezing all of the
|
|
2487
|
+
* authority's subaccounts. Requires warm admin (`check_warm`); intended to
|
|
2488
|
+
* be called after a human has reviewed why the breaker fired.
|
|
2489
|
+
* @param userStatsPublicKey - `UserStats` PDA of the authority to unfreeze.
|
|
2490
|
+
* @param txParams - Optional transaction-building overrides.
|
|
2491
|
+
* @returns Transaction signature.
|
|
2492
|
+
*/
|
|
2493
|
+
resetEquityFloorBreaker(userStatsPublicKey: PublicKey, txParams?: TxParams): Promise<TransactionSignature>;
|
|
2494
|
+
/**
|
|
2495
|
+
* Builds the `resetEquityFloorBreaker` instruction without sending it. See
|
|
2496
|
+
* `resetEquityFloorBreaker`.
|
|
2497
|
+
* @returns The unsigned `resetEquityFloorBreaker` instruction.
|
|
2498
|
+
*/
|
|
2499
|
+
getResetEquityFloorBreakerIx(userStatsPublicKey: PublicKey): Promise<TransactionInstruction>;
|
|
2465
2500
|
/**
|
|
2466
2501
|
* Rotates `state.warmAdmin`, the operational (multisig+timelock) tier that can
|
|
2467
2502
|
* rotate every hot-role key (`updateHotAdmin`). Cold-only: the `UpdateWarmAdmin`
|
|
@@ -4853,6 +4853,71 @@ class AdminClient extends velocityClient_1.VelocityClient {
|
|
|
4853
4853
|
},
|
|
4854
4854
|
});
|
|
4855
4855
|
}
|
|
4856
|
+
/**
|
|
4857
|
+
* Sets a `User` account's `equityFloor`: the minimum cross-margin total
|
|
4858
|
+
* collateral (QUOTE_PRECISION) the account must keep. Below the floor the
|
|
4859
|
+
* program rejects risk-increasing order placement and fills, withdrawals,
|
|
4860
|
+
* and deposit/position transfers out of the account; reduce-only activity
|
|
4861
|
+
* stays allowed. Requires warm admin (`check_warm`); the account's
|
|
4862
|
+
* authority and delegate cannot change it. Pass `0` to disable.
|
|
4863
|
+
* @param userAccountPublicKey - `User` PDA to update.
|
|
4864
|
+
* @param equityFloor - New floor, QUOTE_PRECISION; `0` disables.
|
|
4865
|
+
* @param txParams - Optional transaction-building overrides.
|
|
4866
|
+
* @returns Transaction signature.
|
|
4867
|
+
*/
|
|
4868
|
+
async updateUserEquityFloor(userAccountPublicKey, equityFloor, txParams) {
|
|
4869
|
+
const ix = await this.getUpdateUserEquityFloorIx(userAccountPublicKey, equityFloor);
|
|
4870
|
+
const tx = await this.buildTransaction(ix, txParams);
|
|
4871
|
+
const { txSig } = await this.sendTransaction(tx, [], this.opts);
|
|
4872
|
+
return txSig;
|
|
4873
|
+
}
|
|
4874
|
+
/**
|
|
4875
|
+
* Builds the `updateUserEquityFloor` instruction without sending it. See
|
|
4876
|
+
* `updateUserEquityFloor`.
|
|
4877
|
+
* @returns The unsigned `updateUserEquityFloor` instruction.
|
|
4878
|
+
*/
|
|
4879
|
+
async getUpdateUserEquityFloorIx(userAccountPublicKey, equityFloor) {
|
|
4880
|
+
return this.program.instruction.updateUserEquityFloor(equityFloor, {
|
|
4881
|
+
accounts: {
|
|
4882
|
+
admin: this.useHotWalletAdmin
|
|
4883
|
+
? this.wallet.publicKey
|
|
4884
|
+
: this.getStateAccount().coldAdmin,
|
|
4885
|
+
state: await this.getStatePublicKey(),
|
|
4886
|
+
user: userAccountPublicKey,
|
|
4887
|
+
},
|
|
4888
|
+
});
|
|
4889
|
+
}
|
|
4890
|
+
/**
|
|
4891
|
+
* Clears the authority-wide equity floor breaker set by the permissionless
|
|
4892
|
+
* `tripEquityFloorBreaker` keeper instruction, unfreezing all of the
|
|
4893
|
+
* authority's subaccounts. Requires warm admin (`check_warm`); intended to
|
|
4894
|
+
* be called after a human has reviewed why the breaker fired.
|
|
4895
|
+
* @param userStatsPublicKey - `UserStats` PDA of the authority to unfreeze.
|
|
4896
|
+
* @param txParams - Optional transaction-building overrides.
|
|
4897
|
+
* @returns Transaction signature.
|
|
4898
|
+
*/
|
|
4899
|
+
async resetEquityFloorBreaker(userStatsPublicKey, txParams) {
|
|
4900
|
+
const ix = await this.getResetEquityFloorBreakerIx(userStatsPublicKey);
|
|
4901
|
+
const tx = await this.buildTransaction(ix, txParams);
|
|
4902
|
+
const { txSig } = await this.sendTransaction(tx, [], this.opts);
|
|
4903
|
+
return txSig;
|
|
4904
|
+
}
|
|
4905
|
+
/**
|
|
4906
|
+
* Builds the `resetEquityFloorBreaker` instruction without sending it. See
|
|
4907
|
+
* `resetEquityFloorBreaker`.
|
|
4908
|
+
* @returns The unsigned `resetEquityFloorBreaker` instruction.
|
|
4909
|
+
*/
|
|
4910
|
+
async getResetEquityFloorBreakerIx(userStatsPublicKey) {
|
|
4911
|
+
return this.program.instruction.resetEquityFloorBreaker({
|
|
4912
|
+
accounts: {
|
|
4913
|
+
admin: this.useHotWalletAdmin
|
|
4914
|
+
? this.wallet.publicKey
|
|
4915
|
+
: this.getStateAccount().coldAdmin,
|
|
4916
|
+
state: await this.getStatePublicKey(),
|
|
4917
|
+
userStats: userStatsPublicKey,
|
|
4918
|
+
},
|
|
4919
|
+
});
|
|
4920
|
+
}
|
|
4856
4921
|
// ----- Tiered admin authority -----
|
|
4857
4922
|
//
|
|
4858
4923
|
// `state.coldAdmin` is the root. `state.warmAdmin` is rotated by cold; each
|
package/lib/browser/config.js
CHANGED
|
@@ -31,7 +31,7 @@ exports.configs = {
|
|
|
31
31
|
ENV: 'devnet',
|
|
32
32
|
PYTH_ORACLE_MAPPING_ADDRESS: 'BmA9Z6FjioHJPpjT39QazZyhDRUdZy2ezwx4GiDdE2u2',
|
|
33
33
|
VELOCITY_PROGRAM_ID: exports.VELOCITY_DEVNET_PROGRAM_ID,
|
|
34
|
-
JIT_PROXY_PROGRAM_ID: '
|
|
34
|
+
JIT_PROXY_PROGRAM_ID: 'J1TPRoXCtGuMcWiWFE6RB9eZU8U35PBMETCwNQLCNPhQ',
|
|
35
35
|
QUOTE_MINT_ADDRESS: 'GqmEqYsy8EyvofDpmtFxK8zhYrgWgNokAtYoduQdL7v6',
|
|
36
36
|
V2_ALPHA_TICKET_MINT_ADDRESS: 'DeEiGWfCMP9psnLGkxGrBBMEAW5Jv8bBGMN8DCtFRCyB',
|
|
37
37
|
PERP_MARKETS: perpMarkets_1.DevnetPerpMarkets,
|
|
@@ -46,7 +46,7 @@ exports.configs = {
|
|
|
46
46
|
ENV: 'mainnet-beta',
|
|
47
47
|
PYTH_ORACLE_MAPPING_ADDRESS: 'AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J',
|
|
48
48
|
VELOCITY_PROGRAM_ID: exports.VELOCITY_PROGRAM_ID,
|
|
49
|
-
JIT_PROXY_PROGRAM_ID: '
|
|
49
|
+
JIT_PROXY_PROGRAM_ID: 'J1TPRoXCtGuMcWiWFE6RB9eZU8U35PBMETCwNQLCNPhQ',
|
|
50
50
|
// Relaunch quote market (spot 0) is USDT — see
|
|
51
51
|
// deploy-scripts/params/relaunch-spot-markets.json.
|
|
52
52
|
QUOTE_MINT_ADDRESS: 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB',
|
|
@@ -54,11 +54,10 @@ exports.configs = {
|
|
|
54
54
|
PERP_MARKETS: perpMarkets_1.MainnetPerpMarkets,
|
|
55
55
|
SPOT_MARKETS: spotMarkets_1.MainnetSpotMarkets,
|
|
56
56
|
/** @deprecated use MARKET_LOOKUP_TABLES */
|
|
57
|
-
MARKET_LOOKUP_TABLE: '
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
],
|
|
57
|
+
MARKET_LOOKUP_TABLE: '4E971nER9Jn4JjT8mKEX1nvkfg8Qycp7zNEcCq2nT8ZY',
|
|
58
|
+
// Relaunch LUT: state, signer, spot markets 0-1 (oracle/mint/vault/IF
|
|
59
|
+
// vault), perp markets 0-3 with oracles, token/ATA/system programs.
|
|
60
|
+
MARKET_LOOKUP_TABLES: ['4E971nER9Jn4JjT8mKEX1nvkfg8Qycp7zNEcCq2nT8ZY'],
|
|
62
61
|
VELOCITY_ORACLE_RECEIVER_ID: exports.VELOCITY_ORACLE_RECEIVER_ID,
|
|
63
62
|
SB_ON_DEMAND_PID: exports.SB_ON_DEMAND_MAINNET_PID,
|
|
64
63
|
},
|
|
@@ -106,7 +106,7 @@ export declare const FIVE_MINUTE: BN;
|
|
|
106
106
|
export declare const ONE_HOUR: BN;
|
|
107
107
|
/** 31,536,000 seconds (365 days). */
|
|
108
108
|
export declare const ONE_YEAR: BN;
|
|
109
|
-
/** Market index of the protocol's quote spot market (
|
|
109
|
+
/** Market index of the protocol's quote spot market (the protocol's quote asset on mainnet). */
|
|
110
110
|
export declare const QUOTE_SPOT_MARKET_INDEX = 0;
|
|
111
111
|
/** 1e9 (`LAMPORTS_PER_SOL`); token-mint precision for wrapped SOL spot markets. */
|
|
112
112
|
export declare const LAMPORTS_PRECISION: BN;
|
|
@@ -111,7 +111,7 @@ exports.FIVE_MINUTE = new anchor_1.BN(60 * 5);
|
|
|
111
111
|
exports.ONE_HOUR = new anchor_1.BN(60 * 60);
|
|
112
112
|
/** 31,536,000 seconds (365 days). */
|
|
113
113
|
exports.ONE_YEAR = new anchor_1.BN(31536000);
|
|
114
|
-
/** Market index of the protocol's quote spot market (
|
|
114
|
+
/** Market index of the protocol's quote spot market (the protocol's quote asset on mainnet). */
|
|
115
115
|
exports.QUOTE_SPOT_MARKET_INDEX = 0;
|
|
116
116
|
/** 1e9 (`LAMPORTS_PER_SOL`); token-mint precision for wrapped SOL spot markets. */
|
|
117
117
|
exports.LAMPORTS_PRECISION = new anchor_1.BN(web3_js_1.LAMPORTS_PER_SOL);
|
|
@@ -333,7 +333,10 @@ function decodeUser(buffer) {
|
|
|
333
333
|
offset += 1;
|
|
334
334
|
const specialUserStatus = buffer.readUInt8(offset);
|
|
335
335
|
offset += 1;
|
|
336
|
-
offset +=
|
|
336
|
+
offset += 3; // padding
|
|
337
|
+
const equityFloor = readUnsignedBigInt64LE(buffer, offset);
|
|
338
|
+
offset += 8;
|
|
339
|
+
offset += 8; // padding2
|
|
337
340
|
return {
|
|
338
341
|
authority,
|
|
339
342
|
delegate,
|
|
@@ -362,6 +365,7 @@ function decodeUser(buffer) {
|
|
|
362
365
|
hasOpenAuction,
|
|
363
366
|
poolId,
|
|
364
367
|
specialUserStatus,
|
|
368
|
+
equityFloor,
|
|
365
369
|
};
|
|
366
370
|
}
|
|
367
371
|
exports.decodeUser = decodeUser;
|
|
@@ -8,7 +8,7 @@ export type Velocity = {
|
|
|
8
8
|
"address": "vELoC1audYbSYVRXn1vPaV8Axoa9oU6BYmNGZZBDZ1P";
|
|
9
9
|
"metadata": {
|
|
10
10
|
"name": "velocity";
|
|
11
|
-
"version": "2.
|
|
11
|
+
"version": "2.163.0";
|
|
12
12
|
"spec": "0.1.0";
|
|
13
13
|
"description": "Created with Anchor";
|
|
14
14
|
};
|
|
@@ -6382,6 +6382,33 @@ export type Velocity = {
|
|
|
6382
6382
|
}
|
|
6383
6383
|
];
|
|
6384
6384
|
},
|
|
6385
|
+
{
|
|
6386
|
+
"name": "resetEquityFloorBreaker";
|
|
6387
|
+
"discriminator": [
|
|
6388
|
+
230,
|
|
6389
|
+
181,
|
|
6390
|
+
202,
|
|
6391
|
+
36,
|
|
6392
|
+
127,
|
|
6393
|
+
56,
|
|
6394
|
+
56,
|
|
6395
|
+
27
|
|
6396
|
+
];
|
|
6397
|
+
"accounts": [
|
|
6398
|
+
{
|
|
6399
|
+
"name": "admin";
|
|
6400
|
+
"signer": true;
|
|
6401
|
+
},
|
|
6402
|
+
{
|
|
6403
|
+
"name": "state";
|
|
6404
|
+
},
|
|
6405
|
+
{
|
|
6406
|
+
"name": "userStats";
|
|
6407
|
+
"writable": true;
|
|
6408
|
+
}
|
|
6409
|
+
];
|
|
6410
|
+
"args": [];
|
|
6411
|
+
},
|
|
6385
6412
|
{
|
|
6386
6413
|
"name": "resetPerpMarketAmmOracleTwap";
|
|
6387
6414
|
"discriminator": [
|
|
@@ -7740,6 +7767,10 @@ export type Velocity = {
|
|
|
7740
7767
|
{
|
|
7741
7768
|
"name": "amount";
|
|
7742
7769
|
"type": "u64";
|
|
7770
|
+
},
|
|
7771
|
+
{
|
|
7772
|
+
"name": "equityFloorDelta";
|
|
7773
|
+
"type": "u64";
|
|
7743
7774
|
}
|
|
7744
7775
|
];
|
|
7745
7776
|
},
|
|
@@ -8222,6 +8253,39 @@ export type Velocity = {
|
|
|
8222
8253
|
}
|
|
8223
8254
|
];
|
|
8224
8255
|
},
|
|
8256
|
+
{
|
|
8257
|
+
"name": "tripEquityFloorBreaker";
|
|
8258
|
+
"discriminator": [
|
|
8259
|
+
133,
|
|
8260
|
+
184,
|
|
8261
|
+
25,
|
|
8262
|
+
80,
|
|
8263
|
+
193,
|
|
8264
|
+
52,
|
|
8265
|
+
162,
|
|
8266
|
+
249
|
|
8267
|
+
];
|
|
8268
|
+
"accounts": [
|
|
8269
|
+
{
|
|
8270
|
+
"name": "state";
|
|
8271
|
+
},
|
|
8272
|
+
{
|
|
8273
|
+
"name": "keeper";
|
|
8274
|
+
"docs": [
|
|
8275
|
+
"Any signer may trip the breaker; the proof is the margin calculation."
|
|
8276
|
+
];
|
|
8277
|
+
"signer": true;
|
|
8278
|
+
},
|
|
8279
|
+
{
|
|
8280
|
+
"name": "user";
|
|
8281
|
+
},
|
|
8282
|
+
{
|
|
8283
|
+
"name": "userStats";
|
|
8284
|
+
"writable": true;
|
|
8285
|
+
}
|
|
8286
|
+
];
|
|
8287
|
+
"args": [];
|
|
8288
|
+
},
|
|
8225
8289
|
{
|
|
8226
8290
|
"name": "updateAdmin";
|
|
8227
8291
|
"discriminator": [
|
|
@@ -9438,6 +9502,9 @@ export type Velocity = {
|
|
|
9438
9502
|
{
|
|
9439
9503
|
"name": "authority";
|
|
9440
9504
|
"signer": true;
|
|
9505
|
+
"relations": [
|
|
9506
|
+
"keeperStats"
|
|
9507
|
+
];
|
|
9441
9508
|
}
|
|
9442
9509
|
];
|
|
9443
9510
|
"args": [];
|
|
@@ -12227,6 +12294,38 @@ export type Velocity = {
|
|
|
12227
12294
|
}
|
|
12228
12295
|
];
|
|
12229
12296
|
},
|
|
12297
|
+
{
|
|
12298
|
+
"name": "updateUserEquityFloor";
|
|
12299
|
+
"discriminator": [
|
|
12300
|
+
49,
|
|
12301
|
+
87,
|
|
12302
|
+
139,
|
|
12303
|
+
119,
|
|
12304
|
+
136,
|
|
12305
|
+
239,
|
|
12306
|
+
186,
|
|
12307
|
+
104
|
|
12308
|
+
];
|
|
12309
|
+
"accounts": [
|
|
12310
|
+
{
|
|
12311
|
+
"name": "admin";
|
|
12312
|
+
"signer": true;
|
|
12313
|
+
},
|
|
12314
|
+
{
|
|
12315
|
+
"name": "state";
|
|
12316
|
+
},
|
|
12317
|
+
{
|
|
12318
|
+
"name": "user";
|
|
12319
|
+
"writable": true;
|
|
12320
|
+
}
|
|
12321
|
+
];
|
|
12322
|
+
"args": [
|
|
12323
|
+
{
|
|
12324
|
+
"name": "equityFloor";
|
|
12325
|
+
"type": "u64";
|
|
12326
|
+
}
|
|
12327
|
+
];
|
|
12328
|
+
},
|
|
12230
12329
|
{
|
|
12231
12330
|
"name": "updateUserIdle";
|
|
12232
12331
|
"discriminator": [
|
|
@@ -16017,6 +16116,21 @@ export type Velocity = {
|
|
|
16017
16116
|
"code": 6356;
|
|
16018
16117
|
"name": "invalidNativePerpMarketAccount";
|
|
16019
16118
|
"msg": "Native dispatch: supplied market account is not a Velocity perp market";
|
|
16119
|
+
},
|
|
16120
|
+
{
|
|
16121
|
+
"code": 6357;
|
|
16122
|
+
"name": "isolatedPositionDisabled";
|
|
16123
|
+
"msg": "Isolated positions are not enabled in this build";
|
|
16124
|
+
},
|
|
16125
|
+
{
|
|
16126
|
+
"code": 6358;
|
|
16127
|
+
"name": "equityBelowFloor";
|
|
16128
|
+
"msg": "Account equity is below the user-set equity floor";
|
|
16129
|
+
},
|
|
16130
|
+
{
|
|
16131
|
+
"code": 6359;
|
|
16132
|
+
"name": "invalidEquityFloorTransfer";
|
|
16133
|
+
"msg": "Invalid equity floor transfer between subaccounts";
|
|
16020
16134
|
}
|
|
16021
16135
|
];
|
|
16022
16136
|
"types": [
|
|
@@ -23721,7 +23835,26 @@ export type Velocity = {
|
|
|
23721
23835
|
"type": {
|
|
23722
23836
|
"array": [
|
|
23723
23837
|
"u8",
|
|
23724
|
-
|
|
23838
|
+
3
|
|
23839
|
+
];
|
|
23840
|
+
};
|
|
23841
|
+
},
|
|
23842
|
+
{
|
|
23843
|
+
"name": "equityFloor";
|
|
23844
|
+
"docs": [
|
|
23845
|
+
"Minimum account equity (cross-margin total collateral) required for",
|
|
23846
|
+
"risk-increasing orders, fills, withdrawals and deposit transfers.",
|
|
23847
|
+
"Settable only by the warm/cold admin; 0 disables the check.",
|
|
23848
|
+
"precision: QUOTE_PRECISION"
|
|
23849
|
+
];
|
|
23850
|
+
"type": "u64";
|
|
23851
|
+
},
|
|
23852
|
+
{
|
|
23853
|
+
"name": "padding2";
|
|
23854
|
+
"type": {
|
|
23855
|
+
"array": [
|
|
23856
|
+
"u8",
|
|
23857
|
+
8
|
|
23725
23858
|
];
|
|
23726
23859
|
};
|
|
23727
23860
|
}
|
|
@@ -23910,12 +24043,22 @@ export type Velocity = {
|
|
|
23910
24043
|
];
|
|
23911
24044
|
"type": "u8";
|
|
23912
24045
|
},
|
|
24046
|
+
{
|
|
24047
|
+
"name": "equityBreakerTripped";
|
|
24048
|
+
"docs": [
|
|
24049
|
+
"Set by the permissionless `trip_equity_floor_breaker` instruction when",
|
|
24050
|
+
"any of the authority's subaccounts falls below its equity floor.",
|
|
24051
|
+
"While set, every subaccount of the authority rejects risk-increasing",
|
|
24052
|
+
"fills, withdrawals and transfers out. Cleared only by the warm admin."
|
|
24053
|
+
];
|
|
24054
|
+
"type": "u8";
|
|
24055
|
+
},
|
|
23913
24056
|
{
|
|
23914
24057
|
"name": "padding";
|
|
23915
24058
|
"type": {
|
|
23916
24059
|
"array": [
|
|
23917
24060
|
"u8",
|
|
23918
|
-
|
|
24061
|
+
62
|
|
23919
24062
|
];
|
|
23920
24063
|
};
|
|
23921
24064
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"address": "vELoC1audYbSYVRXn1vPaV8Axoa9oU6BYmNGZZBDZ1P",
|
|
3
3
|
"metadata": {
|
|
4
4
|
"name": "velocity",
|
|
5
|
-
"version": "2.
|
|
5
|
+
"version": "2.163.0",
|
|
6
6
|
"spec": "0.1.0",
|
|
7
7
|
"description": "Created with Anchor"
|
|
8
8
|
},
|
|
@@ -6376,6 +6376,33 @@
|
|
|
6376
6376
|
}
|
|
6377
6377
|
]
|
|
6378
6378
|
},
|
|
6379
|
+
{
|
|
6380
|
+
"name": "reset_equity_floor_breaker",
|
|
6381
|
+
"discriminator": [
|
|
6382
|
+
230,
|
|
6383
|
+
181,
|
|
6384
|
+
202,
|
|
6385
|
+
36,
|
|
6386
|
+
127,
|
|
6387
|
+
56,
|
|
6388
|
+
56,
|
|
6389
|
+
27
|
|
6390
|
+
],
|
|
6391
|
+
"accounts": [
|
|
6392
|
+
{
|
|
6393
|
+
"name": "admin",
|
|
6394
|
+
"signer": true
|
|
6395
|
+
},
|
|
6396
|
+
{
|
|
6397
|
+
"name": "state"
|
|
6398
|
+
},
|
|
6399
|
+
{
|
|
6400
|
+
"name": "user_stats",
|
|
6401
|
+
"writable": true
|
|
6402
|
+
}
|
|
6403
|
+
],
|
|
6404
|
+
"args": []
|
|
6405
|
+
},
|
|
6379
6406
|
{
|
|
6380
6407
|
"name": "reset_perp_market_amm_oracle_twap",
|
|
6381
6408
|
"discriminator": [
|
|
@@ -7734,6 +7761,10 @@
|
|
|
7734
7761
|
{
|
|
7735
7762
|
"name": "amount",
|
|
7736
7763
|
"type": "u64"
|
|
7764
|
+
},
|
|
7765
|
+
{
|
|
7766
|
+
"name": "equity_floor_delta",
|
|
7767
|
+
"type": "u64"
|
|
7737
7768
|
}
|
|
7738
7769
|
]
|
|
7739
7770
|
},
|
|
@@ -8216,6 +8247,39 @@
|
|
|
8216
8247
|
}
|
|
8217
8248
|
]
|
|
8218
8249
|
},
|
|
8250
|
+
{
|
|
8251
|
+
"name": "trip_equity_floor_breaker",
|
|
8252
|
+
"discriminator": [
|
|
8253
|
+
133,
|
|
8254
|
+
184,
|
|
8255
|
+
25,
|
|
8256
|
+
80,
|
|
8257
|
+
193,
|
|
8258
|
+
52,
|
|
8259
|
+
162,
|
|
8260
|
+
249
|
|
8261
|
+
],
|
|
8262
|
+
"accounts": [
|
|
8263
|
+
{
|
|
8264
|
+
"name": "state"
|
|
8265
|
+
},
|
|
8266
|
+
{
|
|
8267
|
+
"name": "keeper",
|
|
8268
|
+
"docs": [
|
|
8269
|
+
"Any signer may trip the breaker; the proof is the margin calculation."
|
|
8270
|
+
],
|
|
8271
|
+
"signer": true
|
|
8272
|
+
},
|
|
8273
|
+
{
|
|
8274
|
+
"name": "user"
|
|
8275
|
+
},
|
|
8276
|
+
{
|
|
8277
|
+
"name": "user_stats",
|
|
8278
|
+
"writable": true
|
|
8279
|
+
}
|
|
8280
|
+
],
|
|
8281
|
+
"args": []
|
|
8282
|
+
},
|
|
8219
8283
|
{
|
|
8220
8284
|
"name": "update_admin",
|
|
8221
8285
|
"discriminator": [
|
|
@@ -9431,7 +9495,10 @@
|
|
|
9431
9495
|
},
|
|
9432
9496
|
{
|
|
9433
9497
|
"name": "authority",
|
|
9434
|
-
"signer": true
|
|
9498
|
+
"signer": true,
|
|
9499
|
+
"relations": [
|
|
9500
|
+
"keeper_stats"
|
|
9501
|
+
]
|
|
9435
9502
|
}
|
|
9436
9503
|
],
|
|
9437
9504
|
"args": []
|
|
@@ -12221,6 +12288,38 @@
|
|
|
12221
12288
|
}
|
|
12222
12289
|
]
|
|
12223
12290
|
},
|
|
12291
|
+
{
|
|
12292
|
+
"name": "update_user_equity_floor",
|
|
12293
|
+
"discriminator": [
|
|
12294
|
+
49,
|
|
12295
|
+
87,
|
|
12296
|
+
139,
|
|
12297
|
+
119,
|
|
12298
|
+
136,
|
|
12299
|
+
239,
|
|
12300
|
+
186,
|
|
12301
|
+
104
|
|
12302
|
+
],
|
|
12303
|
+
"accounts": [
|
|
12304
|
+
{
|
|
12305
|
+
"name": "admin",
|
|
12306
|
+
"signer": true
|
|
12307
|
+
},
|
|
12308
|
+
{
|
|
12309
|
+
"name": "state"
|
|
12310
|
+
},
|
|
12311
|
+
{
|
|
12312
|
+
"name": "user",
|
|
12313
|
+
"writable": true
|
|
12314
|
+
}
|
|
12315
|
+
],
|
|
12316
|
+
"args": [
|
|
12317
|
+
{
|
|
12318
|
+
"name": "equity_floor",
|
|
12319
|
+
"type": "u64"
|
|
12320
|
+
}
|
|
12321
|
+
]
|
|
12322
|
+
},
|
|
12224
12323
|
{
|
|
12225
12324
|
"name": "update_user_idle",
|
|
12226
12325
|
"discriminator": [
|
|
@@ -16011,6 +16110,21 @@
|
|
|
16011
16110
|
"code": 6356,
|
|
16012
16111
|
"name": "InvalidNativePerpMarketAccount",
|
|
16013
16112
|
"msg": "Native dispatch: supplied market account is not a Velocity perp market"
|
|
16113
|
+
},
|
|
16114
|
+
{
|
|
16115
|
+
"code": 6357,
|
|
16116
|
+
"name": "IsolatedPositionDisabled",
|
|
16117
|
+
"msg": "Isolated positions are not enabled in this build"
|
|
16118
|
+
},
|
|
16119
|
+
{
|
|
16120
|
+
"code": 6358,
|
|
16121
|
+
"name": "EquityBelowFloor",
|
|
16122
|
+
"msg": "Account equity is below the user-set equity floor"
|
|
16123
|
+
},
|
|
16124
|
+
{
|
|
16125
|
+
"code": 6359,
|
|
16126
|
+
"name": "InvalidEquityFloorTransfer",
|
|
16127
|
+
"msg": "Invalid equity floor transfer between subaccounts"
|
|
16014
16128
|
}
|
|
16015
16129
|
],
|
|
16016
16130
|
"types": [
|
|
@@ -23715,7 +23829,26 @@
|
|
|
23715
23829
|
"type": {
|
|
23716
23830
|
"array": [
|
|
23717
23831
|
"u8",
|
|
23718
|
-
|
|
23832
|
+
3
|
|
23833
|
+
]
|
|
23834
|
+
}
|
|
23835
|
+
},
|
|
23836
|
+
{
|
|
23837
|
+
"name": "equity_floor",
|
|
23838
|
+
"docs": [
|
|
23839
|
+
"Minimum account equity (cross-margin total collateral) required for",
|
|
23840
|
+
"risk-increasing orders, fills, withdrawals and deposit transfers.",
|
|
23841
|
+
"Settable only by the warm/cold admin; 0 disables the check.",
|
|
23842
|
+
"precision: QUOTE_PRECISION"
|
|
23843
|
+
],
|
|
23844
|
+
"type": "u64"
|
|
23845
|
+
},
|
|
23846
|
+
{
|
|
23847
|
+
"name": "padding2",
|
|
23848
|
+
"type": {
|
|
23849
|
+
"array": [
|
|
23850
|
+
"u8",
|
|
23851
|
+
8
|
|
23719
23852
|
]
|
|
23720
23853
|
}
|
|
23721
23854
|
}
|
|
@@ -23904,12 +24037,22 @@
|
|
|
23904
24037
|
],
|
|
23905
24038
|
"type": "u8"
|
|
23906
24039
|
},
|
|
24040
|
+
{
|
|
24041
|
+
"name": "equity_breaker_tripped",
|
|
24042
|
+
"docs": [
|
|
24043
|
+
"Set by the permissionless `trip_equity_floor_breaker` instruction when",
|
|
24044
|
+
"any of the authority's subaccounts falls below its equity floor.",
|
|
24045
|
+
"While set, every subaccount of the authority rejects risk-increasing",
|
|
24046
|
+
"fills, withdrawals and transfers out. Cleared only by the warm admin."
|
|
24047
|
+
],
|
|
24048
|
+
"type": "u8"
|
|
24049
|
+
},
|
|
23907
24050
|
{
|
|
23908
24051
|
"name": "padding",
|
|
23909
24052
|
"type": {
|
|
23910
24053
|
"array": [
|
|
23911
24054
|
"u8",
|
|
23912
|
-
|
|
24055
|
+
62
|
|
23913
24056
|
]
|
|
23914
24057
|
}
|
|
23915
24058
|
}
|
|
@@ -124,6 +124,9 @@ class OrderSubscriber {
|
|
|
124
124
|
await this.velocityClient.connection._rpcRequest('getProgramAccounts', rpcRequestArgs);
|
|
125
125
|
const rpcResponseAndContext = rpcJSONResponse.result;
|
|
126
126
|
const slot = rpcResponseAndContext.context.slot;
|
|
127
|
+
if (!this.mostRecentSlot || slot > this.mostRecentSlot) {
|
|
128
|
+
this.mostRecentSlot = slot;
|
|
129
|
+
}
|
|
127
130
|
for (const programAccount of rpcResponseAndContext.value) {
|
|
128
131
|
const key = programAccount.pubkey.toString();
|
|
129
132
|
this.tryUpdateUserAccount(key, 'raw', programAccount.account.data, slot);
|