@velocity-exchange/sdk 0.9.0 → 0.11.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/lib/browser/adminClient.d.ts +4 -3
- package/lib/browser/adminClient.js +5 -13
- package/lib/browser/equityFloorManager.d.ts +9 -5
- package/lib/browser/equityFloorManager.js +9 -5
- package/lib/browser/idl/velocity.d.ts +119 -3
- package/lib/browser/idl/velocity.json +119 -3
- package/lib/browser/index.d.ts +2 -0
- package/lib/browser/index.js +3 -0
- package/lib/browser/jupiter/jupiterClient.d.ts +31 -27
- package/lib/browser/jupiter/jupiterClient.js +61 -35
- package/lib/browser/math/amm.d.ts +6 -5
- package/lib/browser/math/amm.js +39 -19
- package/lib/browser/math/margin.d.ts +12 -10
- package/lib/browser/math/margin.js +16 -14
- package/lib/browser/math/superStake.d.ts +9 -9
- package/lib/browser/math/superStake.js +8 -8
- package/lib/browser/swap/UnifiedSwapClient.d.ts +38 -76
- package/lib/browser/swap/UnifiedSwapClient.js +46 -117
- package/lib/browser/swap/routeInstructions.d.ts +19 -0
- package/lib/browser/swap/routeInstructions.js +43 -0
- package/lib/browser/swap/types.d.ts +196 -0
- package/lib/browser/swap/types.js +88 -0
- package/lib/browser/titan/titanClient.d.ts +32 -68
- package/lib/browser/titan/titanClient.js +128 -102
- package/lib/browser/types.d.ts +2 -0
- package/lib/browser/user.d.ts +16 -18
- package/lib/browser/user.js +24 -26
- package/lib/browser/velocityClient.d.ts +122 -101
- package/lib/browser/velocityClient.js +221 -289
- package/lib/node/adminClient.d.ts +4 -3
- package/lib/node/adminClient.d.ts.map +1 -1
- package/lib/node/adminClient.js +5 -13
- package/lib/node/equityFloorManager.d.ts +9 -5
- package/lib/node/equityFloorManager.d.ts.map +1 -1
- package/lib/node/equityFloorManager.js +9 -5
- package/lib/node/idl/velocity.d.ts +119 -3
- package/lib/node/idl/velocity.d.ts.map +1 -1
- package/lib/node/idl/velocity.json +119 -3
- package/lib/node/index.d.ts +2 -0
- package/lib/node/index.d.ts.map +1 -1
- package/lib/node/index.js +3 -0
- package/lib/node/jupiter/jupiterClient.d.ts +31 -27
- package/lib/node/jupiter/jupiterClient.d.ts.map +1 -1
- package/lib/node/jupiter/jupiterClient.js +61 -35
- package/lib/node/math/amm.d.ts +6 -5
- package/lib/node/math/amm.d.ts.map +1 -1
- package/lib/node/math/amm.js +39 -19
- package/lib/node/math/margin.d.ts +12 -10
- package/lib/node/math/margin.d.ts.map +1 -1
- package/lib/node/math/margin.js +16 -14
- package/lib/node/math/superStake.d.ts +9 -9
- package/lib/node/math/superStake.d.ts.map +1 -1
- package/lib/node/math/superStake.js +8 -8
- package/lib/node/swap/UnifiedSwapClient.d.ts +38 -76
- package/lib/node/swap/UnifiedSwapClient.d.ts.map +1 -1
- package/lib/node/swap/UnifiedSwapClient.js +46 -117
- package/lib/node/swap/routeInstructions.d.ts +20 -0
- package/lib/node/swap/routeInstructions.d.ts.map +1 -0
- package/lib/node/swap/routeInstructions.js +43 -0
- package/lib/node/swap/types.d.ts +197 -0
- package/lib/node/swap/types.d.ts.map +1 -0
- package/lib/node/swap/types.js +88 -0
- package/lib/node/titan/titanClient.d.ts +32 -68
- package/lib/node/titan/titanClient.d.ts.map +1 -1
- package/lib/node/titan/titanClient.js +128 -102
- package/lib/node/types.d.ts +2 -0
- package/lib/node/types.d.ts.map +1 -1
- package/lib/node/user.d.ts +16 -18
- package/lib/node/user.d.ts.map +1 -1
- package/lib/node/user.js +24 -26
- package/lib/node/velocityClient.d.ts +122 -101
- package/lib/node/velocityClient.d.ts.map +1 -1
- package/lib/node/velocityClient.js +221 -289
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"address": "vELoC1audYbSYVRXn1vPaV8Axoa9oU6BYmNGZZBDZ1P",
|
|
3
3
|
"metadata": {
|
|
4
4
|
"name": "velocity",
|
|
5
|
-
"version": "2.
|
|
5
|
+
"version": "2.165.0",
|
|
6
6
|
"spec": "0.1.0",
|
|
7
7
|
"description": "Created with Anchor"
|
|
8
8
|
},
|
|
@@ -2188,6 +2188,104 @@
|
|
|
2188
2188
|
}
|
|
2189
2189
|
]
|
|
2190
2190
|
},
|
|
2191
|
+
{
|
|
2192
|
+
"name": "extend_account",
|
|
2193
|
+
"docs": [
|
|
2194
|
+
"Grow a zero-copy account to the size this program build compiles in",
|
|
2195
|
+
"for its type (resolved from the account discriminator). The migration",
|
|
2196
|
+
"crank after an upgrade that appends fields to an account struct; no-op",
|
|
2197
|
+
"when already at size. Payer covers the rent-exempt shortfall (auth:",
|
|
2198
|
+
"`AccountExtension` hot key, or warm/cold admin). See",
|
|
2199
|
+
"`docs/ACCOUNT-EXTENSION.md`."
|
|
2200
|
+
],
|
|
2201
|
+
"discriminator": [
|
|
2202
|
+
234,
|
|
2203
|
+
102,
|
|
2204
|
+
194,
|
|
2205
|
+
203,
|
|
2206
|
+
150,
|
|
2207
|
+
72,
|
|
2208
|
+
62,
|
|
2209
|
+
229
|
|
2210
|
+
],
|
|
2211
|
+
"accounts": [
|
|
2212
|
+
{
|
|
2213
|
+
"name": "state"
|
|
2214
|
+
},
|
|
2215
|
+
{
|
|
2216
|
+
"name": "payer",
|
|
2217
|
+
"writable": true,
|
|
2218
|
+
"signer": true
|
|
2219
|
+
},
|
|
2220
|
+
{
|
|
2221
|
+
"name": "authority",
|
|
2222
|
+
"signer": true
|
|
2223
|
+
},
|
|
2224
|
+
{
|
|
2225
|
+
"name": "account",
|
|
2226
|
+
"docs": [
|
|
2227
|
+
"size) from the account discriminator"
|
|
2228
|
+
],
|
|
2229
|
+
"writable": true
|
|
2230
|
+
},
|
|
2231
|
+
{
|
|
2232
|
+
"name": "system_program",
|
|
2233
|
+
"address": "11111111111111111111111111111111"
|
|
2234
|
+
}
|
|
2235
|
+
],
|
|
2236
|
+
"args": []
|
|
2237
|
+
},
|
|
2238
|
+
{
|
|
2239
|
+
"name": "extend_account_devnet",
|
|
2240
|
+
"docs": [
|
|
2241
|
+
"Devnet/test-only: grow a zero-copy account to an arbitrary larger size",
|
|
2242
|
+
"to exercise the extension flow before a real struct extension exists.",
|
|
2243
|
+
"Stripped from production mainnet builds; `anchor-test` keeps it so the",
|
|
2244
|
+
"integration suite (which builds with default features + `anchor-test`)",
|
|
2245
|
+
"can exercise extension end to end."
|
|
2246
|
+
],
|
|
2247
|
+
"discriminator": [
|
|
2248
|
+
58,
|
|
2249
|
+
206,
|
|
2250
|
+
231,
|
|
2251
|
+
21,
|
|
2252
|
+
136,
|
|
2253
|
+
141,
|
|
2254
|
+
180,
|
|
2255
|
+
252
|
|
2256
|
+
],
|
|
2257
|
+
"accounts": [
|
|
2258
|
+
{
|
|
2259
|
+
"name": "state"
|
|
2260
|
+
},
|
|
2261
|
+
{
|
|
2262
|
+
"name": "payer",
|
|
2263
|
+
"writable": true,
|
|
2264
|
+
"signer": true
|
|
2265
|
+
},
|
|
2266
|
+
{
|
|
2267
|
+
"name": "authority",
|
|
2268
|
+
"signer": true
|
|
2269
|
+
},
|
|
2270
|
+
{
|
|
2271
|
+
"name": "account",
|
|
2272
|
+
"docs": [
|
|
2273
|
+
"zero-copy discriminator"
|
|
2274
|
+
],
|
|
2275
|
+
"writable": true
|
|
2276
|
+
},
|
|
2277
|
+
{
|
|
2278
|
+
"name": "system_program",
|
|
2279
|
+
"address": "11111111111111111111111111111111"
|
|
2280
|
+
}
|
|
2281
|
+
],
|
|
2282
|
+
"args": [
|
|
2283
|
+
{
|
|
2284
|
+
"name": "new_len",
|
|
2285
|
+
"type": "u64"
|
|
2286
|
+
}
|
|
2287
|
+
]
|
|
2288
|
+
},
|
|
2191
2289
|
{
|
|
2192
2290
|
"name": "fill_perp_order",
|
|
2193
2291
|
"discriminator": [
|
|
@@ -16364,6 +16462,11 @@
|
|
|
16364
16462
|
"code": 6366,
|
|
16365
16463
|
"name": "CannotModifyBuilderOrder",
|
|
16366
16464
|
"msg": "Cannot modify a builder-coded order; cancel and re-place instead"
|
|
16465
|
+
},
|
|
16466
|
+
{
|
|
16467
|
+
"code": 6367,
|
|
16468
|
+
"name": "InvalidAccountExtension",
|
|
16469
|
+
"msg": "Invalid account extension"
|
|
16367
16470
|
}
|
|
16368
16471
|
],
|
|
16369
16472
|
"types": [
|
|
@@ -18211,6 +18314,9 @@
|
|
|
18211
18314
|
},
|
|
18212
18315
|
{
|
|
18213
18316
|
"name": "FeeWithdraw"
|
|
18317
|
+
},
|
|
18318
|
+
{
|
|
18319
|
+
"name": "AccountExtension"
|
|
18214
18320
|
}
|
|
18215
18321
|
]
|
|
18216
18322
|
}
|
|
@@ -23693,12 +23799,21 @@
|
|
|
23693
23799
|
],
|
|
23694
23800
|
"type": "pubkey"
|
|
23695
23801
|
},
|
|
23802
|
+
{
|
|
23803
|
+
"name": "hot_account_extension",
|
|
23804
|
+
"docs": [
|
|
23805
|
+
"Hot key authorized for the `AccountExtension` role (grows zero-copy",
|
|
23806
|
+
"accounts to the deployed program's size after a struct-extending",
|
|
23807
|
+
"upgrade)."
|
|
23808
|
+
],
|
|
23809
|
+
"type": "pubkey"
|
|
23810
|
+
},
|
|
23696
23811
|
{
|
|
23697
23812
|
"name": "padding",
|
|
23698
23813
|
"type": {
|
|
23699
23814
|
"array": [
|
|
23700
23815
|
"u8",
|
|
23701
|
-
|
|
23816
|
+
239
|
|
23702
23817
|
]
|
|
23703
23818
|
}
|
|
23704
23819
|
}
|
|
@@ -24130,7 +24245,8 @@
|
|
|
24130
24245
|
{
|
|
24131
24246
|
"name": "equity_floor",
|
|
24132
24247
|
"docs": [
|
|
24133
|
-
"Minimum account equity (
|
|
24248
|
+
"Minimum account net equity (unweighted assets plus perp pnl minus",
|
|
24249
|
+
"spot liabilities, see `calculate_user_equity`). Below this the",
|
|
24134
24250
|
"permissionless breaker can trip. Risk-increasing orders, fills,",
|
|
24135
24251
|
"withdrawals and deposit transfers must clear `equity_floor +",
|
|
24136
24252
|
"equity_floor_buffer`. Settable only by the warm/cold admin; 0 disables",
|
package/lib/node/index.d.ts
CHANGED
|
@@ -65,6 +65,8 @@ export * from './events/parse';
|
|
|
65
65
|
export * from './events/pollingLogProvider';
|
|
66
66
|
export * from './jupiter/jupiterClient';
|
|
67
67
|
export * from './swap/UnifiedSwapClient';
|
|
68
|
+
export * from './swap/types';
|
|
69
|
+
export * from './swap/routeInstructions';
|
|
68
70
|
export * from './math/auction';
|
|
69
71
|
export * from './math/builder';
|
|
70
72
|
export * from './math/spotMarket';
|
package/lib/node/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,IAAI,MAAM,qBAAqB,CAAC;AAEvC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,qDAAqD,CAAC;AACpE,cAAc,yDAAyD,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAC;AACvF,OAAO,EAAE,iCAAiC,EAAE,MAAM,8CAA8C,CAAC;AACjG,OAAO,EAAE,qCAAqC,EAAE,MAAM,kDAAkD,CAAC;AACzG,OAAO,EAAE,oCAAoC,EAAE,MAAM,iDAAiD,CAAC;AACvG,OAAO,EAAE,0CAA0C,EAAE,MAAM,uDAAuD,CAAC;AACnH,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,OAAO,EAAE,kCAAkC,EAAE,MAAM,+CAA+C,CAAC;AACnG,cAAc,mDAAmD,CAAC;AAClE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,0CAA0C,CAAC;AACzD,cAAc,yCAAyC,CAAC;AACxD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,uDAAuD,CAAC;AACtE,cAAc,uCAAuC,CAAC;AACtD,cAAc,yCAAyC,CAAC;AACxD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,OAAO,EACN,mBAAmB,EACnB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,GACvB,MAAM,QAAQ,CAAC;AAChB,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AAExC,cAAc,0BAA0B,CAAC;AAEzC,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wCAAwC,CAAC;AACvD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uCAAuC,CAAC;AACtD,cAAc,yBAAyB,CAAC;AACxC,cAAc,4CAA4C,CAAC;AAC3D,cAAc,aAAa,CAAC;AAC5B,cAAc,iCAAiC,CAAC;AAChD,cAAc,QAAQ,CAAC;AAEvB,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC"}
|
package/lib/node/index.js
CHANGED
|
@@ -96,6 +96,9 @@ __exportStar(require("./events/pollingLogProvider"), exports);
|
|
|
96
96
|
__exportStar(require("./jupiter/jupiterClient"), exports);
|
|
97
97
|
// Primary swap client interface - use this for all swap operations
|
|
98
98
|
__exportStar(require("./swap/UnifiedSwapClient"), exports);
|
|
99
|
+
// The SwapProvider contract both providers implement, and the shared route filter
|
|
100
|
+
__exportStar(require("./swap/types"), exports);
|
|
101
|
+
__exportStar(require("./swap/routeInstructions"), exports);
|
|
99
102
|
__exportStar(require("./math/auction"), exports);
|
|
100
103
|
__exportStar(require("./math/builder"), exports);
|
|
101
104
|
__exportStar(require("./math/spotMarket"), exports);
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { AddressLookupTableAccount, Connection, PublicKey, TransactionInstruction, TransactionMessage, VersionedTransaction } from '@solana/web3.js';
|
|
2
|
-
import {
|
|
3
|
-
import { SwapMode } from '../swap/UnifiedSwapClient';
|
|
2
|
+
import { GetRouteInstructionsParams, SwapMode, SwapProvider, SwapQuote, SwapQuoteParams, SwapRouteInstructions } from '../swap/types';
|
|
4
3
|
export interface MarketInfo {
|
|
5
4
|
id: string;
|
|
6
5
|
inAmount: number;
|
|
@@ -207,14 +206,17 @@ export interface QuoteResponse {
|
|
|
207
206
|
*/
|
|
208
207
|
errorCode?: string;
|
|
209
208
|
}
|
|
209
|
+
/** A Jupiter quote plus the payload {@link JupiterClient.getRouteInstructions} needs. */
|
|
210
|
+
export type JupiterSwapQuote = QuoteResponse & SwapQuote;
|
|
210
211
|
export declare const RECOMMENDED_JUPITER_API_VERSION = "/v1";
|
|
211
212
|
/** @deprecated Use RECOMMENDED_JUPITER_API instead. lite-api.jup.ag requires migration to api.jup.ag with API key. */
|
|
212
213
|
export declare const LEGACY_JUPITER_API = "https://lite-api.jup.ag/swap";
|
|
213
214
|
export declare const RECOMMENDED_JUPITER_API = "https://api.jup.ag/swap";
|
|
214
|
-
export declare class JupiterClient {
|
|
215
|
+
export declare class JupiterClient implements SwapProvider {
|
|
216
|
+
readonly providerName: "jupiter";
|
|
215
217
|
url: string;
|
|
216
218
|
connection: Connection;
|
|
217
|
-
|
|
219
|
+
lookupTableCache: Map<string, AddressLookupTableAccount>;
|
|
218
220
|
private apiKey?;
|
|
219
221
|
/**
|
|
220
222
|
* Create a Jupiter client
|
|
@@ -240,31 +242,34 @@ export declare class JupiterClient {
|
|
|
240
242
|
* @param swapMode the swap mode (ExactIn or ExactOut)
|
|
241
243
|
* @param onlyDirectRoutes whether to only return direct routes
|
|
242
244
|
*/
|
|
243
|
-
getQuote({ inputMint, outputMint, amount, maxAccounts,
|
|
244
|
-
slippageBps, swapMode, onlyDirectRoutes, excludeDexes, autoSlippage, maxAutoSlippageBps, usdEstimate, }: {
|
|
245
|
-
inputMint: PublicKey;
|
|
246
|
-
outputMint: PublicKey;
|
|
247
|
-
amount: BN;
|
|
248
|
-
maxAccounts?: number;
|
|
249
|
-
slippageBps?: number;
|
|
250
|
-
swapMode?: SwapMode;
|
|
251
|
-
onlyDirectRoutes?: boolean;
|
|
252
|
-
excludeDexes?: string[];
|
|
253
|
-
autoSlippage?: boolean;
|
|
254
|
-
maxAutoSlippageBps?: number;
|
|
255
|
-
usdEstimate?: number;
|
|
256
|
-
}): Promise<QuoteResponse>;
|
|
245
|
+
getQuote({ inputMint, outputMint, amount, maxAccounts, slippageBps, swapMode, onlyDirectRoutes, excludeDexes, autoSlippage, maxAutoSlippageBps, usdEstimate, }: SwapQuoteParams): Promise<JupiterSwapQuote>;
|
|
257
246
|
/**
|
|
258
247
|
* Get a swap transaction for quote
|
|
259
|
-
* @param
|
|
248
|
+
* @param quote quote to perform swap, from {@link getQuote}
|
|
260
249
|
* @param userPublicKey the signer's wallet public key
|
|
261
|
-
*
|
|
250
|
+
*
|
|
251
|
+
* Always builds at the quote's own slippage — the price the caller was
|
|
252
|
+
* shown. Re-quote to change it rather than overriding it here.
|
|
262
253
|
*/
|
|
263
|
-
getSwap({ quote, userPublicKey,
|
|
264
|
-
quote: QuoteResponse;
|
|
254
|
+
getSwap({ quote, userPublicKey, }: {
|
|
255
|
+
quote: QuoteResponse | JupiterSwapQuote;
|
|
265
256
|
userPublicKey: PublicKey;
|
|
266
|
-
slippageBps?: number;
|
|
267
257
|
}): Promise<VersionedTransaction>;
|
|
258
|
+
/**
|
|
259
|
+
* The standalone transaction Jupiter's `/swap` endpoint returns, setup and
|
|
260
|
+
* teardown included.
|
|
261
|
+
* @throws If the quote came from a different provider or a different wallet.
|
|
262
|
+
*/
|
|
263
|
+
getSwapTransaction({ quote, userPublicKey, }: GetRouteInstructionsParams): Promise<VersionedTransaction>;
|
|
264
|
+
/**
|
|
265
|
+
* Builds the route instructions for a quote returned by {@link getQuote}.
|
|
266
|
+
*
|
|
267
|
+
* The quote carries its own route payload, so this reads no client state
|
|
268
|
+
* and two quotes in flight can never be confused for one another. The swap
|
|
269
|
+
* is built at the slippage the quote was priced at — re-quote to change it.
|
|
270
|
+
* @throws If the quote came from a different provider or a different wallet.
|
|
271
|
+
*/
|
|
272
|
+
getRouteInstructions({ quote, userPublicKey, }: GetRouteInstructionsParams): Promise<SwapRouteInstructions>;
|
|
268
273
|
/**
|
|
269
274
|
* Get the transaction message and lookup tables for a transaction
|
|
270
275
|
* @param transaction
|
|
@@ -277,10 +282,9 @@ export declare class JupiterClient {
|
|
|
277
282
|
}>;
|
|
278
283
|
getLookupTable(accountKey: PublicKey): Promise<AddressLookupTableAccount | undefined>;
|
|
279
284
|
/**
|
|
280
|
-
*
|
|
281
|
-
* @
|
|
282
|
-
*
|
|
283
|
-
* @param outputMint the output mint
|
|
285
|
+
* Strips the setup/teardown Jupiter wraps around its route.
|
|
286
|
+
* @deprecated Use {@link getRouteInstructions}, which quotes and filters in
|
|
287
|
+
* one step. Kept for callers holding a decompiled message of their own.
|
|
284
288
|
*/
|
|
285
289
|
getJupiterInstructions({ transactionMessage, inputMint, outputMint, }: {
|
|
286
290
|
transactionMessage: TransactionMessage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jupiterClient.d.ts","sourceRoot":"","sources":["../../../src/jupiter/jupiterClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,yBAAyB,EACzB,UAAU,EACV,SAAS,EACT,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"jupiterClient.d.ts","sourceRoot":"","sources":["../../../src/jupiter/jupiterClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.JupiterClient = exports.RECOMMENDED_JUPITER_API = exports.LEGACY_JUPITER_API = exports.RECOMMENDED_JUPITER_API_VERSION = void 0;
|
|
7
7
|
const web3_js_1 = require("@solana/web3.js");
|
|
8
8
|
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
9
|
+
const routeInstructions_1 = require("../swap/routeInstructions");
|
|
10
|
+
const types_1 = require("../swap/types");
|
|
9
11
|
exports.RECOMMENDED_JUPITER_API_VERSION = '/v1';
|
|
10
12
|
/** @deprecated Use RECOMMENDED_JUPITER_API instead. lite-api.jup.ag requires migration to api.jup.ag with API key. */
|
|
11
13
|
exports.LEGACY_JUPITER_API = 'https://lite-api.jup.ag/swap';
|
|
@@ -18,7 +20,8 @@ class JupiterClient {
|
|
|
18
20
|
* @param apiKey - API key for Jupiter API. Required for api.jup.ag (free tier available at https://portal.jup.ag)
|
|
19
21
|
*/
|
|
20
22
|
constructor({ connection, url, apiKey, }) {
|
|
21
|
-
this.
|
|
23
|
+
this.providerName = 'jupiter';
|
|
24
|
+
this.lookupTableCache = new Map();
|
|
22
25
|
this.connection = connection;
|
|
23
26
|
this.url = url !== null && url !== void 0 ? url : exports.RECOMMENDED_JUPITER_API;
|
|
24
27
|
this.apiKey = apiKey;
|
|
@@ -45,8 +48,7 @@ class JupiterClient {
|
|
|
45
48
|
* @param swapMode the swap mode (ExactIn or ExactOut)
|
|
46
49
|
* @param onlyDirectRoutes whether to only return direct routes
|
|
47
50
|
*/
|
|
48
|
-
async getQuote({ inputMint, outputMint, amount, maxAccounts =
|
|
49
|
-
slippageBps = 50, swapMode = 'ExactIn', onlyDirectRoutes = false, excludeDexes, autoSlippage = false, maxAutoSlippageBps, usdEstimate, }) {
|
|
51
|
+
async getQuote({ inputMint, outputMint, amount, maxAccounts = types_1.DEFAULT_SWAP_MAX_ACCOUNTS, slippageBps = 50, swapMode = 'ExactIn', onlyDirectRoutes = false, excludeDexes, autoSlippage = false, maxAutoSlippageBps, usdEstimate, }) {
|
|
50
52
|
var _a;
|
|
51
53
|
if (autoSlippage && maxAutoSlippageBps === undefined) {
|
|
52
54
|
throw new Error('JupiterClient.getQuote: maxAutoSlippageBps is required when autoSlippage is enabled');
|
|
@@ -94,19 +96,25 @@ class JupiterClient {
|
|
|
94
96
|
if (!quote.inputMint || !quote.outputMint || !quote.outAmount) {
|
|
95
97
|
throw new Error('Jupiter quote failed: response is missing route fields');
|
|
96
98
|
}
|
|
97
|
-
|
|
99
|
+
// Jupiter's /swap endpoint takes the quote body back verbatim, so the
|
|
100
|
+
// quote is its own route payload.
|
|
101
|
+
return (0, types_1.buildSwapQuote)(quote, { provider: 'jupiter', quote });
|
|
98
102
|
}
|
|
99
103
|
/**
|
|
100
104
|
* Get a swap transaction for quote
|
|
101
|
-
* @param
|
|
105
|
+
* @param quote quote to perform swap, from {@link getQuote}
|
|
102
106
|
* @param userPublicKey the signer's wallet public key
|
|
103
|
-
*
|
|
107
|
+
*
|
|
108
|
+
* Always builds at the quote's own slippage — the price the caller was
|
|
109
|
+
* shown. Re-quote to change it rather than overriding it here.
|
|
104
110
|
*/
|
|
105
|
-
async getSwap({ quote, userPublicKey,
|
|
111
|
+
async getSwap({ quote, userPublicKey, }) {
|
|
106
112
|
var _a;
|
|
107
113
|
if (!quote) {
|
|
108
114
|
throw new Error('Jupiter swap quote not provided. Please try again.');
|
|
109
115
|
}
|
|
116
|
+
// `providerRoute` is our own wrapper, not part of Jupiter's quote body.
|
|
117
|
+
const { providerRoute: _providerRoute, ...quoteResponse } = quote;
|
|
110
118
|
const apiVersionParam = this.url === exports.RECOMMENDED_JUPITER_API || this.url === exports.LEGACY_JUPITER_API
|
|
111
119
|
? exports.RECOMMENDED_JUPITER_API_VERSION
|
|
112
120
|
: '';
|
|
@@ -114,9 +122,9 @@ class JupiterClient {
|
|
|
114
122
|
method: 'POST',
|
|
115
123
|
headers: this.getHeaders('application/json'),
|
|
116
124
|
body: JSON.stringify({
|
|
117
|
-
quoteResponse
|
|
125
|
+
quoteResponse,
|
|
118
126
|
userPublicKey,
|
|
119
|
-
slippageBps,
|
|
127
|
+
slippageBps: quoteResponse.slippageBps,
|
|
120
128
|
}),
|
|
121
129
|
})).json();
|
|
122
130
|
if (!('swapTransaction' in resp)) {
|
|
@@ -131,6 +139,41 @@ class JupiterClient {
|
|
|
131
139
|
throw new Error('Something went wrong with creating the Jupiter swap transaction. Please try again.');
|
|
132
140
|
}
|
|
133
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* The standalone transaction Jupiter's `/swap` endpoint returns, setup and
|
|
144
|
+
* teardown included.
|
|
145
|
+
* @throws If the quote came from a different provider or a different wallet.
|
|
146
|
+
*/
|
|
147
|
+
async getSwapTransaction({ quote, userPublicKey, }) {
|
|
148
|
+
const jupiterQuote = (0, types_1.expectProviderRoute)(quote, 'jupiter', userPublicKey)
|
|
149
|
+
.quote;
|
|
150
|
+
return this.getSwap({ quote: jupiterQuote, userPublicKey });
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Builds the route instructions for a quote returned by {@link getQuote}.
|
|
154
|
+
*
|
|
155
|
+
* The quote carries its own route payload, so this reads no client state
|
|
156
|
+
* and two quotes in flight can never be confused for one another. The swap
|
|
157
|
+
* is built at the slippage the quote was priced at — re-quote to change it.
|
|
158
|
+
* @throws If the quote came from a different provider or a different wallet.
|
|
159
|
+
*/
|
|
160
|
+
async getRouteInstructions({ quote, userPublicKey, }) {
|
|
161
|
+
const jupiterQuote = (0, types_1.expectProviderRoute)(quote, 'jupiter', userPublicKey)
|
|
162
|
+
.quote;
|
|
163
|
+
const transaction = await this.getSwap({
|
|
164
|
+
quote: jupiterQuote,
|
|
165
|
+
userPublicKey,
|
|
166
|
+
});
|
|
167
|
+
const { transactionMessage, lookupTables } = await this.getTransactionMessageAndLookupTables({ transaction });
|
|
168
|
+
return {
|
|
169
|
+
instructions: (0, routeInstructions_1.filterRouteInstructions)({
|
|
170
|
+
instructions: transactionMessage.instructions,
|
|
171
|
+
inputMint: new web3_js_1.PublicKey(quote.inputMint),
|
|
172
|
+
outputMint: new web3_js_1.PublicKey(quote.outputMint),
|
|
173
|
+
}),
|
|
174
|
+
lookupTables,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
134
177
|
/**
|
|
135
178
|
* Get the transaction message and lookup tables for a transaction
|
|
136
179
|
* @param transaction
|
|
@@ -149,7 +192,7 @@ class JupiterClient {
|
|
|
149
192
|
};
|
|
150
193
|
}
|
|
151
194
|
async getLookupTable(accountKey) {
|
|
152
|
-
const cached = this.
|
|
195
|
+
const cached = this.lookupTableCache.get(accountKey.toString());
|
|
153
196
|
if (cached !== undefined) {
|
|
154
197
|
return cached;
|
|
155
198
|
}
|
|
@@ -159,36 +202,19 @@ class JupiterClient {
|
|
|
159
202
|
}
|
|
160
203
|
// Populate the cache — without this every route re-fetches the same tables,
|
|
161
204
|
// which is a large share of the RPC calls a swap makes.
|
|
162
|
-
this.
|
|
205
|
+
this.lookupTableCache.set(accountKey.toString(), lookupTable);
|
|
163
206
|
return lookupTable;
|
|
164
207
|
}
|
|
165
208
|
/**
|
|
166
|
-
*
|
|
167
|
-
* @
|
|
168
|
-
*
|
|
169
|
-
* @param outputMint the output mint
|
|
209
|
+
* Strips the setup/teardown Jupiter wraps around its route.
|
|
210
|
+
* @deprecated Use {@link getRouteInstructions}, which quotes and filters in
|
|
211
|
+
* one step. Kept for callers holding a decompiled message of their own.
|
|
170
212
|
*/
|
|
171
213
|
getJupiterInstructions({ transactionMessage, inputMint, outputMint, }) {
|
|
172
|
-
return
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
}
|
|
177
|
-
if (instruction.programId.toString() ===
|
|
178
|
-
'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA') {
|
|
179
|
-
return false;
|
|
180
|
-
}
|
|
181
|
-
if (instruction.programId.toString() === '11111111111111111111111111111111') {
|
|
182
|
-
return false;
|
|
183
|
-
}
|
|
184
|
-
if (instruction.programId.toString() ===
|
|
185
|
-
'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL') {
|
|
186
|
-
const mint = instruction.keys[3].pubkey;
|
|
187
|
-
if (mint.equals(inputMint) || mint.equals(outputMint)) {
|
|
188
|
-
return false;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
return true;
|
|
214
|
+
return (0, routeInstructions_1.filterRouteInstructions)({
|
|
215
|
+
instructions: transactionMessage.instructions,
|
|
216
|
+
inputMint,
|
|
217
|
+
outputMint,
|
|
192
218
|
});
|
|
193
219
|
}
|
|
194
220
|
}
|
package/lib/node/math/amm.d.ts
CHANGED
|
@@ -327,15 +327,16 @@ export declare function calculateSpreadBN(baseSpread: number, lastOracleReserveP
|
|
|
327
327
|
* Convenience wrapper around `calculateSpreadBN` that derives its lower-level inputs
|
|
328
328
|
* (reserve price, oracle-vs-reserve spread, live oracle std, and confidence interval) from
|
|
329
329
|
* `amm`/`marketStats`/`oraclePriceData` directly, then applies the market's manual
|
|
330
|
-
* `ammSpreadAdjustment` (%, shrink if negative/grow if positive, floored at 1) on top.
|
|
331
|
-
* `
|
|
332
|
-
* `curveUpdateIntensity` is zero
|
|
330
|
+
* `ammSpreadAdjustment` (%, shrink if negative/grow if positive, floored at 1) on top.
|
|
331
|
+
* Mirrors `update_spreads` in `vlp/amm/math/spread.rs`: the dynamic spread is computed
|
|
332
|
+
* whenever `curveUpdateIntensity` is nonzero, and only a zero `curveUpdateIntensity`
|
|
333
|
+
* falls back to `[baseSpread/2, baseSpread/2]` (truncated).
|
|
333
334
|
* @param amm AMM state to price the spread for.
|
|
334
335
|
* @param marketStats Market stats needed for volatility/funding-bias inputs.
|
|
335
|
-
* @param oraclePriceData Current oracle price data; required unless `
|
|
336
|
+
* @param oraclePriceData Current oracle price data; required unless `curveUpdateIntensity` is zero.
|
|
336
337
|
* @param now Current unix timestamp (seconds); defaults to wall-clock time if omitted.
|
|
337
338
|
* @param reservePrice Current AMM reserve price, PRICE_PRECISION (1e6); computed from `amm`'s reserves if omitted.
|
|
338
|
-
* @throws if `oraclePriceData` is omitted while `
|
|
339
|
+
* @throws if `oraclePriceData` is omitted while `curveUpdateIntensity` is nonzero.
|
|
339
340
|
* @returns `[longSpread, shortSpread]`, both BID_ASK_SPREAD_PRECISION (1e6) fraction-of-price units.
|
|
340
341
|
*/
|
|
341
342
|
export declare function calculateSpread(amm: AMM, marketStats: MarketStats, oraclePriceData?: Pick<OraclePriceData, 'price' | 'confidence'>, now?: BN, reservePrice?: BN): [number, number];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"amm.d.ts","sourceRoot":"","sources":["../../../src/math/amm.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"amm.d.ts","sourceRoot":"","sources":["../../../src/math/amm.ts"],"names":[],"mappings":"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"}
|
package/lib/node/math/amm.js
CHANGED
|
@@ -699,27 +699,57 @@ function calculateSpreadBN(baseSpread, lastOracleReservePriceSpreadPct, lastOrac
|
|
|
699
699
|
return [longSpread, shortSpread];
|
|
700
700
|
}
|
|
701
701
|
exports.calculateSpreadBN = calculateSpreadBN;
|
|
702
|
+
/**
|
|
703
|
+
* Applies the market's manual `ammSpreadAdjustment` (%, grow if positive / shrink if
|
|
704
|
+
* negative, floored at 1) to an already-computed spread pair. Mirrors the tail of
|
|
705
|
+
* `update_spreads` in `vlp/amm/math/spread.rs`, which applies it to the frozen-curve
|
|
706
|
+
* branch as well as the dynamic one, and rounds as integer math (ceil when growing,
|
|
707
|
+
* floor when shrinking).
|
|
708
|
+
* @param amm AMM state holding `ammSpreadAdjustment`.
|
|
709
|
+
* @param longSpread Long-side spread before adjustment.
|
|
710
|
+
* @param shortSpread Short-side spread before adjustment.
|
|
711
|
+
* @returns `[longSpread, shortSpread]` after adjustment.
|
|
712
|
+
*/
|
|
713
|
+
function applyAmmSpreadAdjustment(amm, longSpread, shortSpread) {
|
|
714
|
+
if (amm.ammSpreadAdjustment > 0) {
|
|
715
|
+
const grow = (spread) => Math.max(spread + Math.ceil((spread * amm.ammSpreadAdjustment) / 100), 1);
|
|
716
|
+
return [grow(longSpread), grow(shortSpread)];
|
|
717
|
+
}
|
|
718
|
+
if (amm.ammSpreadAdjustment < 0) {
|
|
719
|
+
const shrink = (spread) => Math.max(spread - Math.floor((spread * -amm.ammSpreadAdjustment) / 100), 1);
|
|
720
|
+
return [shrink(longSpread), shrink(shortSpread)];
|
|
721
|
+
}
|
|
722
|
+
return [longSpread, shortSpread];
|
|
723
|
+
}
|
|
702
724
|
/**
|
|
703
725
|
* Convenience wrapper around `calculateSpreadBN` that derives its lower-level inputs
|
|
704
726
|
* (reserve price, oracle-vs-reserve spread, live oracle std, and confidence interval) from
|
|
705
727
|
* `amm`/`marketStats`/`oraclePriceData` directly, then applies the market's manual
|
|
706
|
-
* `ammSpreadAdjustment` (%, shrink if negative/grow if positive, floored at 1) on top.
|
|
707
|
-
* `
|
|
708
|
-
* `curveUpdateIntensity` is zero
|
|
728
|
+
* `ammSpreadAdjustment` (%, shrink if negative/grow if positive, floored at 1) on top.
|
|
729
|
+
* Mirrors `update_spreads` in `vlp/amm/math/spread.rs`: the dynamic spread is computed
|
|
730
|
+
* whenever `curveUpdateIntensity` is nonzero, and only a zero `curveUpdateIntensity`
|
|
731
|
+
* falls back to `[baseSpread/2, baseSpread/2]` (truncated).
|
|
709
732
|
* @param amm AMM state to price the spread for.
|
|
710
733
|
* @param marketStats Market stats needed for volatility/funding-bias inputs.
|
|
711
|
-
* @param oraclePriceData Current oracle price data; required unless `
|
|
734
|
+
* @param oraclePriceData Current oracle price data; required unless `curveUpdateIntensity` is zero.
|
|
712
735
|
* @param now Current unix timestamp (seconds); defaults to wall-clock time if omitted.
|
|
713
736
|
* @param reservePrice Current AMM reserve price, PRICE_PRECISION (1e6); computed from `amm`'s reserves if omitted.
|
|
714
|
-
* @throws if `oraclePriceData` is omitted while `
|
|
737
|
+
* @throws if `oraclePriceData` is omitted while `curveUpdateIntensity` is nonzero.
|
|
715
738
|
* @returns `[longSpread, shortSpread]`, both BID_ASK_SPREAD_PRECISION (1e6) fraction-of-price units.
|
|
716
739
|
*/
|
|
717
740
|
function calculateSpread(amm, marketStats, oraclePriceData, now, reservePrice) {
|
|
718
|
-
|
|
719
|
-
|
|
741
|
+
// On chain the dynamic spread is computed whenever curveUpdateIntensity > 0; a
|
|
742
|
+
// baseSpread of 0 does NOT disable it, it only lowers the floor that the vol
|
|
743
|
+
// spread is maxed against. Short-circuiting on baseSpread == 0 made the SDK
|
|
744
|
+
// report a zero-width vAMM spread on markets configured with baseSpread 0,
|
|
745
|
+
// while the program was quoting an inventory-skewed spread of >10%.
|
|
746
|
+
if (amm.curveUpdateIntensity == 0) {
|
|
747
|
+
// integer division on chain: `base_spread.safe_div(2)`
|
|
748
|
+
const halfBaseSpread = Math.floor(amm.baseSpread / 2);
|
|
749
|
+
return applyAmmSpreadAdjustment(amm, halfBaseSpread, halfBaseSpread);
|
|
720
750
|
}
|
|
721
751
|
if (!oraclePriceData) {
|
|
722
|
-
throw new Error('calculateSpread: oraclePriceData is required when
|
|
752
|
+
throw new Error('calculateSpread: oraclePriceData is required when curveUpdateIntensity is nonzero');
|
|
723
753
|
}
|
|
724
754
|
if (!reservePrice) {
|
|
725
755
|
reservePrice = calculatePrice(amm.baseAssetReserve, amm.quoteAssetReserve, amm.pegMultiplier);
|
|
@@ -733,17 +763,7 @@ function calculateSpread(amm, marketStats, oraclePriceData, now, reservePrice) {
|
|
|
733
763
|
const liveOracleStd = (0, oracles_1.calculateLiveOracleStd)(marketStats, oraclePriceData, now);
|
|
734
764
|
const confIntervalPct = (0, oracles_1.getNewOracleConfPct)(marketStats, oraclePriceData, reservePrice, now);
|
|
735
765
|
const spreads = calculateSpreadBN(amm.baseSpread, targetMarkSpreadPct, confIntervalPct, amm.maxSpread, amm.quoteAssetReserve, amm.terminalQuoteAssetReserve, amm.pegMultiplier, amm.baseAssetAmountWithAmm, reservePrice, amm.totalFeeMinusDistributions, amm.netRevenueSinceLastFunding, amm.baseAssetReserve, amm.minBaseAssetReserve, amm.maxBaseAssetReserve, marketStats.markStd, liveOracleStd, marketStats.longIntensityVolume, marketStats.shortIntensityVolume, marketStats.volume24H, amm.ammInventorySpreadAdjustment, marketStats.last24HAvgFundingRate, marketStats.lastFundingOracleTwap, amm.fundingBiasSensitivity);
|
|
736
|
-
|
|
737
|
-
let shortSpread = spreads[1];
|
|
738
|
-
if (amm.ammSpreadAdjustment > 0) {
|
|
739
|
-
longSpread = Math.max(longSpread + (longSpread * amm.ammSpreadAdjustment) / 100, 1);
|
|
740
|
-
shortSpread = Math.max(shortSpread + (shortSpread * amm.ammSpreadAdjustment) / 100, 1);
|
|
741
|
-
}
|
|
742
|
-
else if (amm.ammSpreadAdjustment < 0) {
|
|
743
|
-
longSpread = Math.max(longSpread - (longSpread * -amm.ammSpreadAdjustment) / 100, 1);
|
|
744
|
-
shortSpread = Math.max(shortSpread - (shortSpread * -amm.ammSpreadAdjustment) / 100, 1);
|
|
745
|
-
}
|
|
746
|
-
return [longSpread, shortSpread];
|
|
766
|
+
return applyAmmSpreadAdjustment(amm, spreads[0], spreads[1]);
|
|
747
767
|
}
|
|
748
768
|
exports.calculateSpread = calculateSpread;
|
|
749
769
|
/**
|