@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/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
|
);
|
|
@@ -1533,6 +1533,23 @@ export declare class AdminClient extends VelocityClient {
|
|
|
1533
1533
|
* @returns The unsigned `updatePerpMarketFeePoolBufferTarget` instruction.
|
|
1534
1534
|
*/
|
|
1535
1535
|
getUpdatePerpMarketFeePoolBufferTargetIx(perpMarketIndex: number, feePoolBufferTarget: BN): Promise<TransactionInstruction>;
|
|
1536
|
+
/**
|
|
1537
|
+
* Sets the fraction of open-interest notional the streaming fee sweep must leave behind in
|
|
1538
|
+
* `feeLedger.pendingIfFee` as a standing bankruptcy tranche (notional valued at the market's
|
|
1539
|
+
* oracle TWAP). The permissionless sweep cannot drain the tranche below this floor, so a
|
|
1540
|
+
* sweep front-running a `resolvePerpBankruptcy` cannot strip the first-loss coverage up to
|
|
1541
|
+
* the floor. New markets initialize to 10 bps; 0 disables. Requires warm admin (`check_warm`).
|
|
1542
|
+
* @param perpMarketIndex - Perp market to update.
|
|
1543
|
+
* @param bankruptcyIfFloorPct - Floor as PERCENTAGE_PRECISION (1e6 = 100%; 1000 = 10 bps); max 1e6.
|
|
1544
|
+
* @returns Transaction signature.
|
|
1545
|
+
*/
|
|
1546
|
+
updatePerpMarketBankruptcyIfFloorPct(perpMarketIndex: number, bankruptcyIfFloorPct: number): Promise<TransactionSignature>;
|
|
1547
|
+
/**
|
|
1548
|
+
* Builds the `updatePerpMarketBankruptcyIfFloorPct` instruction without sending it. See
|
|
1549
|
+
* `updatePerpMarketBankruptcyIfFloorPct`.
|
|
1550
|
+
* @returns The unsigned `updatePerpMarketBankruptcyIfFloorPct` instruction.
|
|
1551
|
+
*/
|
|
1552
|
+
getUpdatePerpMarketBankruptcyIfFloorPctIx(perpMarketIndex: number, bankruptcyIfFloorPct: number): Promise<TransactionInstruction>;
|
|
1536
1553
|
/**
|
|
1537
1554
|
* Scales a spot market's taker fee and maker rebate up or down by a percentage of the base
|
|
1538
1555
|
* fee tier. Requires warm admin (`check_warm`). Throws `DefaultError` on-chain if
|
|
@@ -2462,6 +2479,41 @@ export declare class AdminClient extends VelocityClient {
|
|
|
2462
2479
|
* @returns The unsigned `updateSpecialUserStatus` instruction.
|
|
2463
2480
|
*/
|
|
2464
2481
|
getUpdateSpecialUserStatusIx(userAccountPublicKey: PublicKey, status: number): Promise<TransactionInstruction>;
|
|
2482
|
+
/**
|
|
2483
|
+
* Sets a `User` account's `equityFloor`: the minimum cross-margin total
|
|
2484
|
+
* collateral (QUOTE_PRECISION) the account must keep. Below the floor the
|
|
2485
|
+
* program rejects risk-increasing order placement and fills, withdrawals,
|
|
2486
|
+
* and deposit/position transfers out of the account; reduce-only activity
|
|
2487
|
+
* stays allowed. Requires warm admin (`check_warm`); the account's
|
|
2488
|
+
* authority and delegate cannot change it. Pass `0` to disable.
|
|
2489
|
+
* @param userAccountPublicKey - `User` PDA to update.
|
|
2490
|
+
* @param equityFloor - New floor, QUOTE_PRECISION; `0` disables.
|
|
2491
|
+
* @param txParams - Optional transaction-building overrides.
|
|
2492
|
+
* @returns Transaction signature.
|
|
2493
|
+
*/
|
|
2494
|
+
updateUserEquityFloor(userAccountPublicKey: PublicKey, equityFloor: BN, txParams?: TxParams): Promise<TransactionSignature>;
|
|
2495
|
+
/**
|
|
2496
|
+
* Builds the `updateUserEquityFloor` instruction without sending it. See
|
|
2497
|
+
* `updateUserEquityFloor`.
|
|
2498
|
+
* @returns The unsigned `updateUserEquityFloor` instruction.
|
|
2499
|
+
*/
|
|
2500
|
+
getUpdateUserEquityFloorIx(userAccountPublicKey: PublicKey, equityFloor: BN): Promise<TransactionInstruction>;
|
|
2501
|
+
/**
|
|
2502
|
+
* Clears the authority-wide equity floor breaker set by the permissionless
|
|
2503
|
+
* `tripEquityFloorBreaker` keeper instruction, unfreezing all of the
|
|
2504
|
+
* authority's subaccounts. Requires warm admin (`check_warm`); intended to
|
|
2505
|
+
* be called after a human has reviewed why the breaker fired.
|
|
2506
|
+
* @param userStatsPublicKey - `UserStats` PDA of the authority to unfreeze.
|
|
2507
|
+
* @param txParams - Optional transaction-building overrides.
|
|
2508
|
+
* @returns Transaction signature.
|
|
2509
|
+
*/
|
|
2510
|
+
resetEquityFloorBreaker(userStatsPublicKey: PublicKey, txParams?: TxParams): Promise<TransactionSignature>;
|
|
2511
|
+
/**
|
|
2512
|
+
* Builds the `resetEquityFloorBreaker` instruction without sending it. See
|
|
2513
|
+
* `resetEquityFloorBreaker`.
|
|
2514
|
+
* @returns The unsigned `resetEquityFloorBreaker` instruction.
|
|
2515
|
+
*/
|
|
2516
|
+
getResetEquityFloorBreakerIx(userStatsPublicKey: PublicKey): Promise<TransactionInstruction>;
|
|
2465
2517
|
/**
|
|
2466
2518
|
* Rotates `state.warmAdmin`, the operational (multisig+timelock) tier that can
|
|
2467
2519
|
* rotate every hot-role key (`updateHotAdmin`). Cold-only: the `UpdateWarmAdmin`
|
|
@@ -3015,6 +3015,38 @@ class AdminClient extends velocityClient_1.VelocityClient {
|
|
|
3015
3015
|
},
|
|
3016
3016
|
});
|
|
3017
3017
|
}
|
|
3018
|
+
/**
|
|
3019
|
+
* Sets the fraction of open-interest notional the streaming fee sweep must leave behind in
|
|
3020
|
+
* `feeLedger.pendingIfFee` as a standing bankruptcy tranche (notional valued at the market's
|
|
3021
|
+
* oracle TWAP). The permissionless sweep cannot drain the tranche below this floor, so a
|
|
3022
|
+
* sweep front-running a `resolvePerpBankruptcy` cannot strip the first-loss coverage up to
|
|
3023
|
+
* the floor. New markets initialize to 10 bps; 0 disables. Requires warm admin (`check_warm`).
|
|
3024
|
+
* @param perpMarketIndex - Perp market to update.
|
|
3025
|
+
* @param bankruptcyIfFloorPct - Floor as PERCENTAGE_PRECISION (1e6 = 100%; 1000 = 10 bps); max 1e6.
|
|
3026
|
+
* @returns Transaction signature.
|
|
3027
|
+
*/
|
|
3028
|
+
async updatePerpMarketBankruptcyIfFloorPct(perpMarketIndex, bankruptcyIfFloorPct) {
|
|
3029
|
+
const updatePerpMarketBankruptcyIfFloorPctIx = await this.getUpdatePerpMarketBankruptcyIfFloorPctIx(perpMarketIndex, bankruptcyIfFloorPct);
|
|
3030
|
+
const tx = await this.buildTransaction(updatePerpMarketBankruptcyIfFloorPctIx);
|
|
3031
|
+
const { txSig } = await this.sendTransaction(tx, [], this.opts);
|
|
3032
|
+
return txSig;
|
|
3033
|
+
}
|
|
3034
|
+
/**
|
|
3035
|
+
* Builds the `updatePerpMarketBankruptcyIfFloorPct` instruction without sending it. See
|
|
3036
|
+
* `updatePerpMarketBankruptcyIfFloorPct`.
|
|
3037
|
+
* @returns The unsigned `updatePerpMarketBankruptcyIfFloorPct` instruction.
|
|
3038
|
+
*/
|
|
3039
|
+
async getUpdatePerpMarketBankruptcyIfFloorPctIx(perpMarketIndex, bankruptcyIfFloorPct) {
|
|
3040
|
+
return await this.program.instruction.updatePerpMarketBankruptcyIfFloorPct(bankruptcyIfFloorPct, {
|
|
3041
|
+
accounts: {
|
|
3042
|
+
admin: this.isSubscribed
|
|
3043
|
+
? this.getStateAccount().coldAdmin
|
|
3044
|
+
: this.wallet.publicKey,
|
|
3045
|
+
state: await this.getStatePublicKey(),
|
|
3046
|
+
perpMarket: await (0, pda_1.getPerpMarketPublicKey)(this.program.programId, perpMarketIndex),
|
|
3047
|
+
},
|
|
3048
|
+
});
|
|
3049
|
+
}
|
|
3018
3050
|
/**
|
|
3019
3051
|
* Scales a spot market's taker fee and maker rebate up or down by a percentage of the base
|
|
3020
3052
|
* fee tier. Requires warm admin (`check_warm`). Throws `DefaultError` on-chain if
|
|
@@ -4853,6 +4885,71 @@ class AdminClient extends velocityClient_1.VelocityClient {
|
|
|
4853
4885
|
},
|
|
4854
4886
|
});
|
|
4855
4887
|
}
|
|
4888
|
+
/**
|
|
4889
|
+
* Sets a `User` account's `equityFloor`: the minimum cross-margin total
|
|
4890
|
+
* collateral (QUOTE_PRECISION) the account must keep. Below the floor the
|
|
4891
|
+
* program rejects risk-increasing order placement and fills, withdrawals,
|
|
4892
|
+
* and deposit/position transfers out of the account; reduce-only activity
|
|
4893
|
+
* stays allowed. Requires warm admin (`check_warm`); the account's
|
|
4894
|
+
* authority and delegate cannot change it. Pass `0` to disable.
|
|
4895
|
+
* @param userAccountPublicKey - `User` PDA to update.
|
|
4896
|
+
* @param equityFloor - New floor, QUOTE_PRECISION; `0` disables.
|
|
4897
|
+
* @param txParams - Optional transaction-building overrides.
|
|
4898
|
+
* @returns Transaction signature.
|
|
4899
|
+
*/
|
|
4900
|
+
async updateUserEquityFloor(userAccountPublicKey, equityFloor, txParams) {
|
|
4901
|
+
const ix = await this.getUpdateUserEquityFloorIx(userAccountPublicKey, equityFloor);
|
|
4902
|
+
const tx = await this.buildTransaction(ix, txParams);
|
|
4903
|
+
const { txSig } = await this.sendTransaction(tx, [], this.opts);
|
|
4904
|
+
return txSig;
|
|
4905
|
+
}
|
|
4906
|
+
/**
|
|
4907
|
+
* Builds the `updateUserEquityFloor` instruction without sending it. See
|
|
4908
|
+
* `updateUserEquityFloor`.
|
|
4909
|
+
* @returns The unsigned `updateUserEquityFloor` instruction.
|
|
4910
|
+
*/
|
|
4911
|
+
async getUpdateUserEquityFloorIx(userAccountPublicKey, equityFloor) {
|
|
4912
|
+
return this.program.instruction.updateUserEquityFloor(equityFloor, {
|
|
4913
|
+
accounts: {
|
|
4914
|
+
admin: this.useHotWalletAdmin
|
|
4915
|
+
? this.wallet.publicKey
|
|
4916
|
+
: this.getStateAccount().coldAdmin,
|
|
4917
|
+
state: await this.getStatePublicKey(),
|
|
4918
|
+
user: userAccountPublicKey,
|
|
4919
|
+
},
|
|
4920
|
+
});
|
|
4921
|
+
}
|
|
4922
|
+
/**
|
|
4923
|
+
* Clears the authority-wide equity floor breaker set by the permissionless
|
|
4924
|
+
* `tripEquityFloorBreaker` keeper instruction, unfreezing all of the
|
|
4925
|
+
* authority's subaccounts. Requires warm admin (`check_warm`); intended to
|
|
4926
|
+
* be called after a human has reviewed why the breaker fired.
|
|
4927
|
+
* @param userStatsPublicKey - `UserStats` PDA of the authority to unfreeze.
|
|
4928
|
+
* @param txParams - Optional transaction-building overrides.
|
|
4929
|
+
* @returns Transaction signature.
|
|
4930
|
+
*/
|
|
4931
|
+
async resetEquityFloorBreaker(userStatsPublicKey, txParams) {
|
|
4932
|
+
const ix = await this.getResetEquityFloorBreakerIx(userStatsPublicKey);
|
|
4933
|
+
const tx = await this.buildTransaction(ix, txParams);
|
|
4934
|
+
const { txSig } = await this.sendTransaction(tx, [], this.opts);
|
|
4935
|
+
return txSig;
|
|
4936
|
+
}
|
|
4937
|
+
/**
|
|
4938
|
+
* Builds the `resetEquityFloorBreaker` instruction without sending it. See
|
|
4939
|
+
* `resetEquityFloorBreaker`.
|
|
4940
|
+
* @returns The unsigned `resetEquityFloorBreaker` instruction.
|
|
4941
|
+
*/
|
|
4942
|
+
async getResetEquityFloorBreakerIx(userStatsPublicKey) {
|
|
4943
|
+
return this.program.instruction.resetEquityFloorBreaker({
|
|
4944
|
+
accounts: {
|
|
4945
|
+
admin: this.useHotWalletAdmin
|
|
4946
|
+
? this.wallet.publicKey
|
|
4947
|
+
: this.getStateAccount().coldAdmin,
|
|
4948
|
+
state: await this.getStatePublicKey(),
|
|
4949
|
+
userStats: userStatsPublicKey,
|
|
4950
|
+
},
|
|
4951
|
+
});
|
|
4952
|
+
}
|
|
4856
4953
|
// ----- Tiered admin authority -----
|
|
4857
4954
|
//
|
|
4858
4955
|
// `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": [];
|
|
@@ -9611,6 +9678,38 @@ export type Velocity = {
|
|
|
9611
9678
|
}
|
|
9612
9679
|
];
|
|
9613
9680
|
},
|
|
9681
|
+
{
|
|
9682
|
+
"name": "updatePerpMarketBankruptcyIfFloorPct";
|
|
9683
|
+
"discriminator": [
|
|
9684
|
+
192,
|
|
9685
|
+
2,
|
|
9686
|
+
229,
|
|
9687
|
+
220,
|
|
9688
|
+
243,
|
|
9689
|
+
115,
|
|
9690
|
+
121,
|
|
9691
|
+
84
|
|
9692
|
+
];
|
|
9693
|
+
"accounts": [
|
|
9694
|
+
{
|
|
9695
|
+
"name": "admin";
|
|
9696
|
+
"signer": true;
|
|
9697
|
+
},
|
|
9698
|
+
{
|
|
9699
|
+
"name": "state";
|
|
9700
|
+
},
|
|
9701
|
+
{
|
|
9702
|
+
"name": "perpMarket";
|
|
9703
|
+
"writable": true;
|
|
9704
|
+
}
|
|
9705
|
+
];
|
|
9706
|
+
"args": [
|
|
9707
|
+
{
|
|
9708
|
+
"name": "bankruptcyIfFloorPct";
|
|
9709
|
+
"type": "u32";
|
|
9710
|
+
}
|
|
9711
|
+
];
|
|
9712
|
+
},
|
|
9614
9713
|
{
|
|
9615
9714
|
"name": "updatePerpMarketBaseSpread";
|
|
9616
9715
|
"discriminator": [
|
|
@@ -12227,6 +12326,38 @@ export type Velocity = {
|
|
|
12227
12326
|
}
|
|
12228
12327
|
];
|
|
12229
12328
|
},
|
|
12329
|
+
{
|
|
12330
|
+
"name": "updateUserEquityFloor";
|
|
12331
|
+
"discriminator": [
|
|
12332
|
+
49,
|
|
12333
|
+
87,
|
|
12334
|
+
139,
|
|
12335
|
+
119,
|
|
12336
|
+
136,
|
|
12337
|
+
239,
|
|
12338
|
+
186,
|
|
12339
|
+
104
|
|
12340
|
+
];
|
|
12341
|
+
"accounts": [
|
|
12342
|
+
{
|
|
12343
|
+
"name": "admin";
|
|
12344
|
+
"signer": true;
|
|
12345
|
+
},
|
|
12346
|
+
{
|
|
12347
|
+
"name": "state";
|
|
12348
|
+
},
|
|
12349
|
+
{
|
|
12350
|
+
"name": "user";
|
|
12351
|
+
"writable": true;
|
|
12352
|
+
}
|
|
12353
|
+
];
|
|
12354
|
+
"args": [
|
|
12355
|
+
{
|
|
12356
|
+
"name": "equityFloor";
|
|
12357
|
+
"type": "u64";
|
|
12358
|
+
}
|
|
12359
|
+
];
|
|
12360
|
+
},
|
|
12230
12361
|
{
|
|
12231
12362
|
"name": "updateUserIdle";
|
|
12232
12363
|
"discriminator": [
|
|
@@ -16017,6 +16148,21 @@ export type Velocity = {
|
|
|
16017
16148
|
"code": 6356;
|
|
16018
16149
|
"name": "invalidNativePerpMarketAccount";
|
|
16019
16150
|
"msg": "Native dispatch: supplied market account is not a Velocity perp market";
|
|
16151
|
+
},
|
|
16152
|
+
{
|
|
16153
|
+
"code": 6357;
|
|
16154
|
+
"name": "isolatedPositionDisabled";
|
|
16155
|
+
"msg": "Isolated positions are not enabled in this build";
|
|
16156
|
+
},
|
|
16157
|
+
{
|
|
16158
|
+
"code": 6358;
|
|
16159
|
+
"name": "equityBelowFloor";
|
|
16160
|
+
"msg": "Account equity is below the user-set equity floor";
|
|
16161
|
+
},
|
|
16162
|
+
{
|
|
16163
|
+
"code": 6359;
|
|
16164
|
+
"name": "invalidEquityFloorTransfer";
|
|
16165
|
+
"msg": "Invalid equity floor transfer between subaccounts";
|
|
16020
16166
|
}
|
|
16021
16167
|
];
|
|
16022
16168
|
"types": [
|
|
@@ -21032,20 +21178,21 @@ export type Velocity = {
|
|
|
21032
21178
|
"type": "i8";
|
|
21033
21179
|
},
|
|
21034
21180
|
{
|
|
21035
|
-
"name": "
|
|
21181
|
+
"name": "bankruptcyIfFloorPct";
|
|
21036
21182
|
"docs": [
|
|
21037
|
-
"
|
|
21038
|
-
"
|
|
21039
|
-
"
|
|
21040
|
-
"
|
|
21041
|
-
"
|
|
21183
|
+
"Floor on the unswept IF-fee carveout, as a percentage of open-interest",
|
|
21184
|
+
"notional (PERCENTAGE_PRECISION; 0 disables). The fee sweep's IF drain",
|
|
21185
|
+
"leaves `pending_if_fee` at (at least) this floor, so a standing",
|
|
21186
|
+
"first-loss tranche is always available to `resolve_perp_bankruptcy` —",
|
|
21187
|
+
"a permissionless sweep (or the inline sweep on any pnl settle) cannot",
|
|
21188
|
+
"drain the tranche below it ahead of a bankruptcy resolution. Notional",
|
|
21189
|
+
"is valued at the market's own oracle TWAP so a manipulated spot print",
|
|
21190
|
+
"can't crush the floor. Occupies the former 4-byte trailing padding",
|
|
21191
|
+
"before `market_stats` (same offset/alignment on all targets), so",
|
|
21192
|
+
"existing accounts read 0 = disabled until the admin sets it;",
|
|
21193
|
+
"new markets initialize to `DEFAULT_BANKRUPTCY_IF_FLOOR_PCT`."
|
|
21042
21194
|
];
|
|
21043
|
-
"type":
|
|
21044
|
-
"array": [
|
|
21045
|
-
"u8",
|
|
21046
|
-
4
|
|
21047
|
-
];
|
|
21048
|
-
};
|
|
21195
|
+
"type": "u32";
|
|
21049
21196
|
},
|
|
21050
21197
|
{
|
|
21051
21198
|
"name": "marketStats";
|
|
@@ -23721,7 +23868,26 @@ export type Velocity = {
|
|
|
23721
23868
|
"type": {
|
|
23722
23869
|
"array": [
|
|
23723
23870
|
"u8",
|
|
23724
|
-
|
|
23871
|
+
3
|
|
23872
|
+
];
|
|
23873
|
+
};
|
|
23874
|
+
},
|
|
23875
|
+
{
|
|
23876
|
+
"name": "equityFloor";
|
|
23877
|
+
"docs": [
|
|
23878
|
+
"Minimum account equity (cross-margin total collateral) required for",
|
|
23879
|
+
"risk-increasing orders, fills, withdrawals and deposit transfers.",
|
|
23880
|
+
"Settable only by the warm/cold admin; 0 disables the check.",
|
|
23881
|
+
"precision: QUOTE_PRECISION"
|
|
23882
|
+
];
|
|
23883
|
+
"type": "u64";
|
|
23884
|
+
},
|
|
23885
|
+
{
|
|
23886
|
+
"name": "padding2";
|
|
23887
|
+
"type": {
|
|
23888
|
+
"array": [
|
|
23889
|
+
"u8",
|
|
23890
|
+
8
|
|
23725
23891
|
];
|
|
23726
23892
|
};
|
|
23727
23893
|
}
|
|
@@ -23910,12 +24076,22 @@ export type Velocity = {
|
|
|
23910
24076
|
];
|
|
23911
24077
|
"type": "u8";
|
|
23912
24078
|
},
|
|
24079
|
+
{
|
|
24080
|
+
"name": "equityBreakerTripped";
|
|
24081
|
+
"docs": [
|
|
24082
|
+
"Set by the permissionless `trip_equity_floor_breaker` instruction when",
|
|
24083
|
+
"any of the authority's subaccounts falls below its equity floor.",
|
|
24084
|
+
"While set, every subaccount of the authority rejects risk-increasing",
|
|
24085
|
+
"fills, withdrawals and transfers out. Cleared only by the warm admin."
|
|
24086
|
+
];
|
|
24087
|
+
"type": "u8";
|
|
24088
|
+
},
|
|
23913
24089
|
{
|
|
23914
24090
|
"name": "padding";
|
|
23915
24091
|
"type": {
|
|
23916
24092
|
"array": [
|
|
23917
24093
|
"u8",
|
|
23918
|
-
|
|
24094
|
+
62
|
|
23919
24095
|
];
|
|
23920
24096
|
};
|
|
23921
24097
|
}
|