@lifi/perps-sdk 0.0.0-preview-f3fb167 → 0.0.0-preview-29c8698
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 +5 -3
- package/dist/cjs/index.d.ts +2 -3
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +3 -7
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/utils/calculations.d.ts.map +1 -1
- package/dist/cjs/utils/calculations.js +38 -107
- package/dist/cjs/utils/calculations.js.map +1 -1
- package/dist/cjs/utils/parse.d.ts +0 -1
- package/dist/cjs/utils/parse.d.ts.map +1 -1
- package/dist/cjs/utils/parse.js +0 -15
- package/dist/cjs/utils/parse.js.map +1 -1
- package/dist/cjs/utils/positionMath.d.ts +0 -5
- package/dist/cjs/utils/positionMath.d.ts.map +1 -1
- package/dist/cjs/utils/positionMath.js +6 -53
- package/dist/cjs/utils/positionMath.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/client/requireProvider.d.ts +1 -1
- package/dist/esm/client/requireProvider.js +1 -1
- package/dist/esm/index.d.ts +2 -3
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utils/calculations.d.ts.map +1 -1
- package/dist/esm/utils/calculations.js +38 -107
- package/dist/esm/utils/calculations.js.map +1 -1
- package/dist/esm/utils/parse.d.ts +0 -7
- package/dist/esm/utils/parse.d.ts.map +1 -1
- package/dist/esm/utils/parse.js +0 -20
- package/dist/esm/utils/parse.js.map +1 -1
- package/dist/esm/utils/positionMath.d.ts +0 -13
- package/dist/esm/utils/positionMath.d.ts.map +1 -1
- package/dist/esm/utils/positionMath.js +6 -60
- package/dist/esm/utils/positionMath.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/types/client/requireProvider.d.ts +1 -1
- package/dist/types/index.d.ts +2 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/utils/calculations.d.ts.map +1 -1
- package/dist/types/utils/parse.d.ts +0 -7
- package/dist/types/utils/parse.d.ts.map +1 -1
- package/dist/types/utils/positionMath.d.ts +0 -13
- package/dist/types/utils/positionMath.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +2 -2
- package/src/client/requireProvider.ts +1 -1
- package/src/index.ts +1 -3
- package/src/utils/calculations.ts +41 -111
- package/src/utils/parse.ts +0 -25
- package/src/utils/positionMath.ts +6 -66
- package/src/version.ts +1 -1
- package/dist/cjs/utils/decimal.d.ts +0 -4
- package/dist/cjs/utils/decimal.d.ts.map +0 -1
- package/dist/cjs/utils/decimal.js +0 -14
- package/dist/cjs/utils/decimal.js.map +0 -1
- package/dist/esm/utils/decimal.d.ts +0 -9
- package/dist/esm/utils/decimal.d.ts.map +0 -1
- package/dist/esm/utils/decimal.js +0 -12
- package/dist/esm/utils/decimal.js.map +0 -1
- package/dist/types/utils/decimal.d.ts +0 -9
- package/dist/types/utils/decimal.d.ts.map +0 -1
- package/src/utils/decimal.ts +0 -13
package/README.md
CHANGED
|
@@ -127,10 +127,10 @@ margin that the close releases. Without an Ondo session, for Lighter spot
|
|
|
127
127
|
markets, and for every other provider, the client falls back to the account
|
|
128
128
|
summary, so `buy` and `sell` both equal `availableMargin`.
|
|
129
129
|
|
|
130
|
-
Each
|
|
130
|
+
Each collateral row in `Account.collateralBalances` and each spot row carries
|
|
131
131
|
`transferable`: the part of `units` that the venue releases from that category
|
|
132
|
-
|
|
133
|
-
|
|
132
|
+
for a transfer or a withdrawal. The value is always from `0` to `units`. No
|
|
133
|
+
WebSocket channel updates it.
|
|
134
134
|
|
|
135
135
|
- Hyperliquid: the sub-dex `clearinghouseState.withdrawable`, one row per
|
|
136
136
|
sub-dex.
|
|
@@ -138,6 +138,8 @@ on every other row, and no WebSocket channel updates it.
|
|
|
138
138
|
`0` on every other asset's row, since a category transfer moves only the
|
|
139
139
|
settlement asset.
|
|
140
140
|
- Ondo: the `/v1/perps/balance` `withdrawableMargin`.
|
|
141
|
+
- Hyperliquid spot rows: the `spotClearinghouseState` `total` minus `hold`.
|
|
142
|
+
- Lighter spot rows: the asset `balance` minus `locked_balance`.
|
|
141
143
|
|
|
142
144
|
`PerpsWsClient.streamsAvailableToTrade(provider)` tells a caller, before the
|
|
143
145
|
first subscribe, whether the provider streams the `availableToTrade` channel.
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export * from '@lifi/perps-types';
|
|
2
2
|
export { createPerpsClient, DEFAULT_API_URL, } from './client/createPerpsClient.js';
|
|
3
3
|
export { PerpsClient } from './client/PerpsClient.js';
|
|
4
|
-
export { requireProvider } from './client/requireProvider.js';
|
|
5
4
|
export { PerpsErrorMessage } from './errors/constants.js';
|
|
6
5
|
export { PerpsError } from './errors/PerpsError.js';
|
|
7
6
|
export { AssetRegistry, getAssetRegistry, toAssetDisplay, } from './registry/assetRegistry.js';
|
|
@@ -72,8 +71,8 @@ export type { FormatOptions, RoundingMode } from './utils/format.js';
|
|
|
72
71
|
export { formatCompactUsd, formatNumber, formatPrice, formatSignedPercent, formatSignedUsd, formatUsd, } from './utils/format.js';
|
|
73
72
|
export { ACTIVE_ORDER_STATUSES, classifyFill, FillClassification, isActiveOrderStatus, isRegularOrder, isStopLossOrder, isTakeProfitOrder, isTpSlOrder, isTriggerOrder, isTwapOrder, triggerConditionFor, } from './utils/orderClassification.js';
|
|
74
73
|
export { expectedRealizedPnlForOpenOrder, expectedRealizedPnlForTriggerOrder, findMatchingPosition, resolveCloseSize, } from './utils/orderMath.js';
|
|
75
|
-
export {
|
|
76
|
-
export { directionSign, estimateIsolatedLiquidationPrice, predictAverageEntryPrice, predictNewLeverage, predictUnrealizedPnl, realizedPnlOnClose,
|
|
74
|
+
export { stringToFloat } from './utils/parse.js';
|
|
75
|
+
export { directionSign, estimateIsolatedLiquidationPrice, predictAverageEntryPrice, predictNewLeverage, predictUnrealizedPnl, realizedPnlOnClose, } from './utils/positionMath.js';
|
|
77
76
|
export type { ScaleToIntegerPolicy } from './utils/scaleToInteger.js';
|
|
78
77
|
export { scaleToInteger } from './utils/scaleToInteger.js';
|
|
79
78
|
export { isSetupOptionFor, selectUserSetupActions, } from './utils/setupActions.js';
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAYA,cAAc,mBAAmB,CAAA;AACjC,OAAO,EACL,iBAAiB,EACjB,eAAe,GAChB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAYA,cAAc,mBAAmB,CAAA;AACjC,OAAO,EACL,iBAAiB,EACjB,eAAe,GAChB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAEnD,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,cAAc,GACf,MAAM,6BAA6B,CAAA;AACpC,YAAY,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACzE,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,eAAe,EACf,oBAAoB,GACrB,MAAM,8BAA8B,CAAA;AAErC,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAC3D,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,YAAY,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAA;AACpF,OAAO,EACL,oBAAoB,EACpB,YAAY,GACb,MAAM,oCAAoC,CAAA;AAC3C,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,YAAY,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC/C,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,YAAY,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AACvE,YAAY,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC7E,OAAO,EACL,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1D,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,YAAY,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAC5E,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,WAAW,EACX,WAAW,GACZ,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,4BAA4B,CAAA;AACnC,YAAY,EACV,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,IAAI,2BAA2B,EACpD,8BAA8B,EAC9B,uBAAuB,EACvB,gBAAgB,EAChB,oBAAoB,EACpB,yBAAyB,EACzB,cAAc,EACd,6BAA6B,EAC7B,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,gBAAgB,IAAI,sBAAsB,EAC1C,uBAAuB,IAAI,6BAA6B,EACxD,oBAAoB,IAAI,0BAA0B,EAClD,aAAa,EACb,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,GACf,MAAM,gBAAgB,CAAA;AACvB,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,GAChB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EACV,oBAAoB,EACpB,WAAW,EACX,+BAA+B,EAC/B,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EACV,wBAAwB,EACxB,yBAAyB,EACzB,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,2BAA2B,EAC3B,wBAAwB,EACxB,yBAAyB,EACzB,iCAAiC,EACjC,4BAA4B,EAC5B,sBAAsB,EACtB,+BAA+B,EAC/B,sBAAsB,EACtB,uBAAuB,EACvB,iCAAiC,EACjC,0BAA0B,EAC1B,sBAAsB,EACtB,qCAAqC,EACrC,6BAA6B,EAC7B,aAAa,EACb,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,2BAA2B,EAC3B,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EACL,aAAa,EACb,UAAU,EACV,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,2BAA2B,EAC3B,uBAAuB,EACvB,YAAY,EACZ,sBAAsB,EACtB,iBAAiB,EACjB,YAAY,EACZ,0BAA0B,EAC1B,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,GACd,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,cAAc,GACf,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,eAAe,EACf,aAAa,EACb,qBAAqB,GACtB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACxE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,SAAS,GACV,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,WAAW,EACX,mBAAmB,GACpB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EACL,+BAA+B,EAC/B,kCAAkC,EAClC,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EACL,aAAa,EACb,gCAAgC,EAChC,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,yBAAyB,CAAA;AAChC,YAAY,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EACL,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,aAAa,EACb,uBAAuB,GACxB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,YAAY,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,YAAY,EACV,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,YAAY,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAA;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAA;AAC5E,YAAY,EACV,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,UAAU,EACV,gBAAgB,GACjB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,6BAA6B,EAC7B,cAAc,GACf,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -14,17 +14,15 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.DISABLED_RETRY = exports.isAbortError = exports.fetchWithRetry = exports.errorCodeFromStatus = exports.createMemoryStorage = exports.readValidatedRecord = exports.parseStoredRecord = exports.localStorageAdapter = exports.resolveSubscribeQuote = exports.QUOTE_THROTTLE_MS = exports.resolveQuoteMarket = exports.resolveQuote = exports.getTermsAcceptance = exports.getReferralStatus = exports.getReferralActivity = exports.getQuote = exports.getProviders = exports.getPositions = exports.getOrders = exports.getOrderbook = exports.getOrder = exports.getOhlcv = exports.getMeta = exports.getMarketsContext = exports.getMarkets = exports.getMarket = exports.LIFI_API_URL = exports.getGasRecommendation = exports.getFills = exports.getAssets = exports.getActivity = exports.getAccount = exports.executeAction = exports.createAction = exports.toPerpsMarketDisplay = exports.toMarketDisplay = exports.MarketRegistry = exports.isActiveMarket = exports.getMarketRegistry = exports.getDefaultMarketId = exports.DEFAULT_MARKET_ID = exports.toAssetDisplay = exports.getAssetRegistry = exports.AssetRegistry = exports.PerpsError = exports.PerpsErrorMessage = exports.
|
|
18
|
-
exports.resolveCloseSize = exports.findMatchingPosition = exports.expectedRealizedPnlForTriggerOrder = exports.expectedRealizedPnlForOpenOrder = exports.triggerConditionFor = exports.isTwapOrder = exports.isTriggerOrder = exports.isTpSlOrder = exports.isTakeProfitOrder = exports.isStopLossOrder = exports.isRegularOrder = exports.isActiveOrderStatus = exports.FillClassification = exports.classifyFill = exports.ACTIVE_ORDER_STATUSES = exports.formatUsd = exports.formatSignedUsd = exports.formatSignedPercent = exports.formatPrice = exports.formatNumber = exports.formatCompactUsd = exports.classifyFillFromPosition = exports.explorerTxUrlFromBase = exports.explorerTxUrl = exports.ExplorerChainId = exports.ROBINHOOD_USDG = exports.ROBINHOOD_NATIVE_GAS = exports.LIGHTER_USDC = exports.HYPERLIQUID_USDC = exports.ETHEREUM_USDC = exports.ETHEREUM_NATIVE_GAS = exports.walkOrderbook = exports.priceFromPercent = exports.percentFromPrice = exports.liquidationDistancePercent = exports.estimateFees = exports.effectiveLeverage = exports.calculateUnrealizedPnl = exports.calculateRoe = exports.calculateRequiredMargin = exports.calculateRealizedPnlPercent = exports.calculatePositionSize = exports.calculateNotionalValue = exports.calculateExpectedPnl = exports.buildQuote = exports.applySlippage = exports.paginateActivity = exports.resolveRetryPolicy = exports.LIFI_RETRY_DEFAULTS =
|
|
19
|
-
exports.wsLog = exports.WsProviderBase = exports.WS_CHANNEL_TEARDOWN_LINGER_MS = exports.ReconnectingWebSocket = exports.PerpsWsClient = exports.DecodeChain = exports.cachePromise = exports.version = exports.name = exports.createWarnOnce = exports.validateMargin = exports.fromBaseUnitsNumber = exports.fromBaseUnits = exports.signTypedDataWithSigner = exports.signTypedData = exports.selectUserSetupActions = exports.isSetupOptionFor = exports.scaleToInteger = exports.
|
|
17
|
+
exports.LIFI_REQUEST_KEY = exports.DISABLED_RETRY = exports.isAbortError = exports.fetchWithRetry = exports.errorCodeFromStatus = exports.createMemoryStorage = exports.readValidatedRecord = exports.parseStoredRecord = exports.localStorageAdapter = exports.resolveSubscribeQuote = exports.QUOTE_THROTTLE_MS = exports.resolveQuoteMarket = exports.resolveQuote = exports.getTermsAcceptance = exports.getReferralStatus = exports.getReferralActivity = exports.getQuote = exports.getProviders = exports.getPositions = exports.getOrders = exports.getOrderbook = exports.getOrder = exports.getOhlcv = exports.getMeta = exports.getMarketsContext = exports.getMarkets = exports.getMarket = exports.LIFI_API_URL = exports.getGasRecommendation = exports.getFills = exports.getAssets = exports.getActivity = exports.getAccount = exports.executeAction = exports.createAction = exports.toPerpsMarketDisplay = exports.toMarketDisplay = exports.MarketRegistry = exports.isActiveMarket = exports.getMarketRegistry = exports.getDefaultMarketId = exports.DEFAULT_MARKET_ID = exports.toAssetDisplay = exports.getAssetRegistry = exports.AssetRegistry = exports.PerpsError = exports.PerpsErrorMessage = exports.PerpsClient = exports.DEFAULT_API_URL = exports.createPerpsClient = void 0;
|
|
18
|
+
exports.stringToFloat = exports.resolveCloseSize = exports.findMatchingPosition = exports.expectedRealizedPnlForTriggerOrder = exports.expectedRealizedPnlForOpenOrder = exports.triggerConditionFor = exports.isTwapOrder = exports.isTriggerOrder = exports.isTpSlOrder = exports.isTakeProfitOrder = exports.isStopLossOrder = exports.isRegularOrder = exports.isActiveOrderStatus = exports.FillClassification = exports.classifyFill = exports.ACTIVE_ORDER_STATUSES = exports.formatUsd = exports.formatSignedUsd = exports.formatSignedPercent = exports.formatPrice = exports.formatNumber = exports.formatCompactUsd = exports.classifyFillFromPosition = exports.explorerTxUrlFromBase = exports.explorerTxUrl = exports.ExplorerChainId = exports.ROBINHOOD_USDG = exports.ROBINHOOD_NATIVE_GAS = exports.LIGHTER_USDC = exports.HYPERLIQUID_USDC = exports.ETHEREUM_USDC = exports.ETHEREUM_NATIVE_GAS = exports.walkOrderbook = exports.priceFromPercent = exports.percentFromPrice = exports.liquidationDistancePercent = exports.estimateFees = exports.effectiveLeverage = exports.calculateUnrealizedPnl = exports.calculateRoe = exports.calculateRequiredMargin = exports.calculateRealizedPnlPercent = exports.calculatePositionSize = exports.calculateNotionalValue = exports.calculateExpectedPnl = exports.buildQuote = exports.applySlippage = exports.paginateActivity = exports.resolveRetryPolicy = exports.LIFI_RETRY_DEFAULTS = void 0;
|
|
19
|
+
exports.wsLog = exports.WsProviderBase = exports.WS_CHANNEL_TEARDOWN_LINGER_MS = exports.ReconnectingWebSocket = exports.PerpsWsClient = exports.DecodeChain = exports.cachePromise = exports.version = exports.name = exports.createWarnOnce = exports.validateMargin = exports.fromBaseUnitsNumber = exports.fromBaseUnits = exports.signTypedDataWithSigner = exports.signTypedData = exports.selectUserSetupActions = exports.isSetupOptionFor = exports.scaleToInteger = exports.realizedPnlOnClose = exports.predictUnrealizedPnl = exports.predictNewLeverage = exports.predictAverageEntryPrice = exports.estimateIsolatedLiquidationPrice = exports.directionSign = void 0;
|
|
20
20
|
__exportStar(require("@lifi/perps-types"), exports);
|
|
21
21
|
var createPerpsClient_js_1 = require("./client/createPerpsClient.js");
|
|
22
22
|
Object.defineProperty(exports, "createPerpsClient", { enumerable: true, get: function () { return createPerpsClient_js_1.createPerpsClient; } });
|
|
23
23
|
Object.defineProperty(exports, "DEFAULT_API_URL", { enumerable: true, get: function () { return createPerpsClient_js_1.DEFAULT_API_URL; } });
|
|
24
24
|
var PerpsClient_js_1 = require("./client/PerpsClient.js");
|
|
25
25
|
Object.defineProperty(exports, "PerpsClient", { enumerable: true, get: function () { return PerpsClient_js_1.PerpsClient; } });
|
|
26
|
-
var requireProvider_js_1 = require("./client/requireProvider.js");
|
|
27
|
-
Object.defineProperty(exports, "requireProvider", { enumerable: true, get: function () { return requireProvider_js_1.requireProvider; } });
|
|
28
26
|
var constants_js_1 = require("./errors/constants.js");
|
|
29
27
|
Object.defineProperty(exports, "PerpsErrorMessage", { enumerable: true, get: function () { return constants_js_1.PerpsErrorMessage; } });
|
|
30
28
|
var PerpsError_js_1 = require("./errors/PerpsError.js");
|
|
@@ -163,7 +161,6 @@ Object.defineProperty(exports, "expectedRealizedPnlForTriggerOrder", { enumerabl
|
|
|
163
161
|
Object.defineProperty(exports, "findMatchingPosition", { enumerable: true, get: function () { return orderMath_js_1.findMatchingPosition; } });
|
|
164
162
|
Object.defineProperty(exports, "resolveCloseSize", { enumerable: true, get: function () { return orderMath_js_1.resolveCloseSize; } });
|
|
165
163
|
var parse_js_1 = require("./utils/parse.js");
|
|
166
|
-
Object.defineProperty(exports, "parseDecimal", { enumerable: true, get: function () { return parse_js_1.parseDecimal; } });
|
|
167
164
|
Object.defineProperty(exports, "stringToFloat", { enumerable: true, get: function () { return parse_js_1.stringToFloat; } });
|
|
168
165
|
var positionMath_js_1 = require("./utils/positionMath.js");
|
|
169
166
|
Object.defineProperty(exports, "directionSign", { enumerable: true, get: function () { return positionMath_js_1.directionSign; } });
|
|
@@ -172,7 +169,6 @@ Object.defineProperty(exports, "predictAverageEntryPrice", { enumerable: true, g
|
|
|
172
169
|
Object.defineProperty(exports, "predictNewLeverage", { enumerable: true, get: function () { return positionMath_js_1.predictNewLeverage; } });
|
|
173
170
|
Object.defineProperty(exports, "predictUnrealizedPnl", { enumerable: true, get: function () { return positionMath_js_1.predictUnrealizedPnl; } });
|
|
174
171
|
Object.defineProperty(exports, "realizedPnlOnClose", { enumerable: true, get: function () { return positionMath_js_1.realizedPnlOnClose; } });
|
|
175
|
-
Object.defineProperty(exports, "wouldImmediatelyLiquidate", { enumerable: true, get: function () { return positionMath_js_1.wouldImmediatelyLiquidate; } });
|
|
176
172
|
var scaleToInteger_js_1 = require("./utils/scaleToInteger.js");
|
|
177
173
|
Object.defineProperty(exports, "scaleToInteger", { enumerable: true, get: function () { return scaleToInteger_js_1.scaleToInteger; } });
|
|
178
174
|
var setupActions_js_1 = require("./utils/setupActions.js");
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAYA,oDAAiC;AACjC,sEAGsC;AAFpC,yHAAA,iBAAiB,OAAA;AACjB,uHAAA,eAAe,OAAA;AAEjB,0DAAqD;AAA5C,6GAAA,WAAW,OAAA;AACpB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculations.d.ts","sourceRoot":"","sources":["../../../src/utils/calculations.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,cAAc,EAEnB,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"calculations.d.ts","sourceRoot":"","sources":["../../../src/utils/calculations.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,64 +17,30 @@ exports.walkOrderbook = walkOrderbook;
|
|
|
17
17
|
exports.buildQuote = buildQuote;
|
|
18
18
|
const perps_types_1 = require("@lifi/perps-types");
|
|
19
19
|
const PerpsError_js_1 = require("../errors/PerpsError.js");
|
|
20
|
-
const decimal_js_1 = require("./decimal.js");
|
|
21
20
|
function calculatePositionSize(marginUsd, leverage, price) {
|
|
22
|
-
|
|
23
|
-
return (marginUsd * leverage) / price;
|
|
24
|
-
}
|
|
25
|
-
if (!(0, decimal_js_1.areFinite)(marginUsd, leverage, price)) {
|
|
26
|
-
return Number.NaN;
|
|
27
|
-
}
|
|
28
|
-
return new decimal_js_1.DivBig(marginUsd).times(leverage).div(price).toNumber();
|
|
21
|
+
return (marginUsd * leverage) / price;
|
|
29
22
|
}
|
|
30
23
|
function calculateNotionalValue(size, price) {
|
|
31
|
-
|
|
32
|
-
return Number.NaN;
|
|
33
|
-
}
|
|
34
|
-
return new decimal_js_1.DivBig(size).abs().times(price).toNumber();
|
|
24
|
+
return Math.abs(size) * price;
|
|
35
25
|
}
|
|
36
26
|
function calculateUnrealizedPnl(entryPrice, currentPrice, size) {
|
|
37
|
-
|
|
38
|
-
return Number.NaN;
|
|
39
|
-
}
|
|
40
|
-
return new decimal_js_1.DivBig(currentPrice).minus(entryPrice).times(size).toNumber();
|
|
27
|
+
return (currentPrice - entryPrice) * size;
|
|
41
28
|
}
|
|
42
29
|
function calculateRoe(pnl, margin) {
|
|
43
30
|
if (margin === 0) {
|
|
44
31
|
return 0;
|
|
45
32
|
}
|
|
46
|
-
|
|
47
|
-
return Number.NaN;
|
|
48
|
-
}
|
|
49
|
-
return new decimal_js_1.DivBig(pnl).div(margin).times(100).toNumber();
|
|
33
|
+
return (pnl / margin) * 100;
|
|
50
34
|
}
|
|
51
35
|
function calculateRequiredMargin(notionalValue, leverage) {
|
|
52
|
-
|
|
53
|
-
return notionalValue / leverage;
|
|
54
|
-
}
|
|
55
|
-
if (!(0, decimal_js_1.areFinite)(notionalValue, leverage)) {
|
|
56
|
-
return Number.NaN;
|
|
57
|
-
}
|
|
58
|
-
return new decimal_js_1.DivBig(notionalValue).div(leverage).toNumber();
|
|
36
|
+
return notionalValue / leverage;
|
|
59
37
|
}
|
|
60
38
|
function estimateFees(sizeUsd, feeRate) {
|
|
61
|
-
|
|
62
|
-
return Number.NaN;
|
|
63
|
-
}
|
|
64
|
-
return new decimal_js_1.DivBig(sizeUsd).times(feeRate).toNumber();
|
|
39
|
+
return sizeUsd * feeRate;
|
|
65
40
|
}
|
|
66
41
|
function applySlippage(price, slippagePercent, isBuy) {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
const multiplier = new decimal_js_1.DivBig(slippagePercent).div(100).plus(1);
|
|
71
|
-
if (isBuy) {
|
|
72
|
-
return new decimal_js_1.DivBig(price).times(multiplier).toNumber();
|
|
73
|
-
}
|
|
74
|
-
if (multiplier.eq(0)) {
|
|
75
|
-
return price / multiplier.toNumber();
|
|
76
|
-
}
|
|
77
|
-
return new decimal_js_1.DivBig(price).div(multiplier).toNumber();
|
|
42
|
+
const multiplier = 1 + slippagePercent / 100;
|
|
43
|
+
return isBuy ? price * multiplier : price / multiplier;
|
|
78
44
|
}
|
|
79
45
|
function liquidationDistancePercent(params) {
|
|
80
46
|
const { liquidationPrice, currentPrice } = params;
|
|
@@ -88,101 +54,66 @@ function effectiveLeverage(params) {
|
|
|
88
54
|
if (marginUsd === 0) {
|
|
89
55
|
return 0;
|
|
90
56
|
}
|
|
91
|
-
|
|
92
|
-
return Number.NaN;
|
|
93
|
-
}
|
|
94
|
-
return new decimal_js_1.DivBig(positionValueUsd).div(marginUsd).toNumber();
|
|
57
|
+
return positionValueUsd / marginUsd;
|
|
95
58
|
}
|
|
96
59
|
function calculateExpectedPnl(triggerPrice, entryPrice, leverage, isLong, margin) {
|
|
97
60
|
if (!triggerPrice || entryPrice === 0 || margin === 0) {
|
|
98
61
|
return null;
|
|
99
62
|
}
|
|
100
|
-
if (!(0, decimal_js_1.areFinite)(triggerPrice, entryPrice, leverage, margin)) {
|
|
101
|
-
return { amount: Number.NaN, percent: Number.NaN };
|
|
102
|
-
}
|
|
103
63
|
const priceDiff = isLong
|
|
104
|
-
?
|
|
105
|
-
:
|
|
106
|
-
const percent = priceDiff
|
|
107
|
-
const amount =
|
|
108
|
-
return { amount
|
|
64
|
+
? triggerPrice - entryPrice
|
|
65
|
+
: entryPrice - triggerPrice;
|
|
66
|
+
const percent = (priceDiff / entryPrice) * leverage * 100;
|
|
67
|
+
const amount = margin * (percent / 100);
|
|
68
|
+
return { amount, percent };
|
|
109
69
|
}
|
|
110
70
|
function priceFromPercent(percent, entryPrice, leverage, isLong) {
|
|
111
71
|
if (entryPrice === 0 || leverage === 0) {
|
|
112
72
|
return 0;
|
|
113
73
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
}
|
|
117
|
-
const priceDelta = new decimal_js_1.DivBig(percent)
|
|
118
|
-
.times(entryPrice)
|
|
119
|
-
.div(new decimal_js_1.DivBig(leverage).times(100));
|
|
120
|
-
const entry = new decimal_js_1.DivBig(entryPrice);
|
|
121
|
-
return (isLong ? entry.plus(priceDelta) : entry.minus(priceDelta)).toNumber();
|
|
74
|
+
const priceDelta = (percent / 100 / leverage) * entryPrice;
|
|
75
|
+
return isLong ? entryPrice + priceDelta : entryPrice - priceDelta;
|
|
122
76
|
}
|
|
123
77
|
function percentFromPrice(price, entryPrice, leverage, isLong) {
|
|
124
78
|
if (entryPrice === 0 || leverage === 0) {
|
|
125
79
|
return 0;
|
|
126
80
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
}
|
|
130
|
-
const priceDiff = isLong
|
|
131
|
-
? new decimal_js_1.DivBig(price).minus(entryPrice)
|
|
132
|
-
: new decimal_js_1.DivBig(entryPrice).minus(price);
|
|
133
|
-
return priceDiff.div(entryPrice).times(leverage).times(100).toNumber();
|
|
81
|
+
const priceDiff = isLong ? price - entryPrice : entryPrice - price;
|
|
82
|
+
return (priceDiff / entryPrice) * leverage * 100;
|
|
134
83
|
}
|
|
135
84
|
function calculateRealizedPnlPercent(realizedPnl, size, price) {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
}
|
|
139
|
-
const positionValue = new decimal_js_1.DivBig(size).abs().times(price);
|
|
140
|
-
if (positionValue.eq(0)) {
|
|
85
|
+
const positionValue = Math.abs(size) * price;
|
|
86
|
+
if (positionValue === 0) {
|
|
141
87
|
return 0;
|
|
142
88
|
}
|
|
143
|
-
return
|
|
89
|
+
return (realizedPnl / positionValue) * 100;
|
|
144
90
|
}
|
|
145
91
|
function walkOrderbook(levels, sizeUsd) {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
filledNotional: Number.NaN,
|
|
150
|
-
vwap: Number.NaN,
|
|
151
|
-
insufficientLiquidity: false,
|
|
152
|
-
};
|
|
153
|
-
}
|
|
154
|
-
let remaining = new decimal_js_1.DivBig(sizeUsd);
|
|
155
|
-
let baseSize = new decimal_js_1.DivBig(0);
|
|
156
|
-
let filledNotional = new decimal_js_1.DivBig(0);
|
|
92
|
+
let remaining = sizeUsd;
|
|
93
|
+
let baseSize = 0;
|
|
94
|
+
let filledNotional = 0;
|
|
157
95
|
for (const level of levels) {
|
|
158
|
-
if (remaining
|
|
96
|
+
if (remaining <= 0) {
|
|
159
97
|
break;
|
|
160
98
|
}
|
|
161
|
-
const
|
|
162
|
-
const
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
continue;
|
|
99
|
+
const price = Number.parseFloat(level.price);
|
|
100
|
+
const size = Number.parseFloat(level.size);
|
|
101
|
+
if (!Number.isFinite(price) || !Number.isFinite(size)) {
|
|
102
|
+
throw new PerpsError_js_1.PerpsError(perps_types_1.PerpsErrorCode.ValidationError, `Malformed orderbook level: price='${level.price}', size='${level.size}'`);
|
|
166
103
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
104
|
+
const levelNotional = size * price;
|
|
105
|
+
const take = Math.min(remaining, levelNotional);
|
|
106
|
+
filledNotional += take;
|
|
107
|
+
baseSize += take / price;
|
|
108
|
+
remaining -= take;
|
|
170
109
|
}
|
|
171
110
|
return {
|
|
172
|
-
baseSize
|
|
173
|
-
filledNotional
|
|
174
|
-
vwap: baseSize
|
|
175
|
-
insufficientLiquidity: remaining
|
|
111
|
+
baseSize,
|
|
112
|
+
filledNotional,
|
|
113
|
+
vwap: baseSize === 0 ? 0 : filledNotional / baseSize,
|
|
114
|
+
insufficientLiquidity: remaining > 0,
|
|
176
115
|
};
|
|
177
116
|
}
|
|
178
|
-
function parseLevel(level) {
|
|
179
|
-
try {
|
|
180
|
-
return { price: new decimal_js_1.DivBig(level.price), size: new decimal_js_1.DivBig(level.size) };
|
|
181
|
-
}
|
|
182
|
-
catch {
|
|
183
|
-
throw new PerpsError_js_1.PerpsError(perps_types_1.PerpsErrorCode.ValidationError, `Malformed orderbook level: price='${level.price}', size='${level.size}'`);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
117
|
function buildQuote(input) {
|
|
187
118
|
const { market, price, side, sizeUsd, feeTier } = input;
|
|
188
119
|
const markPrice = Number.parseFloat(price.markPrice);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculations.js","sourceRoot":"","sources":["../../../src/utils/calculations.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"calculations.js","sourceRoot":"","sources":["../../../src/utils/calculations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/utils/parse.ts"],"names":[],"mappings":"AAmBA,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CASnD
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/utils/parse.ts"],"names":[],"mappings":"AAmBA,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CASnD"}
|
package/dist/cjs/utils/parse.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.stringToFloat = stringToFloat;
|
|
4
|
-
exports.parseDecimal = parseDecimal;
|
|
5
4
|
function stringToFloat(value) {
|
|
6
5
|
if (!value) {
|
|
7
6
|
return 0;
|
|
@@ -12,18 +11,4 @@ function stringToFloat(value) {
|
|
|
12
11
|
}
|
|
13
12
|
return parseFloat(cleaned);
|
|
14
13
|
}
|
|
15
|
-
const FORMATTED_NUMBER = /^(?:[+-]\s*)?(?:\$\s*)?(?:(?:\d{1,3}(?:,\d{3})+|\d+)(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?(?:\s*(?:%|USD))?$/i;
|
|
16
|
-
function parseDecimal(value) {
|
|
17
|
-
if (value == null) {
|
|
18
|
-
return undefined;
|
|
19
|
-
}
|
|
20
|
-
if (value.trim() === '') {
|
|
21
|
-
return stringToFloat(value);
|
|
22
|
-
}
|
|
23
|
-
if (!FORMATTED_NUMBER.test(value.trim())) {
|
|
24
|
-
return undefined;
|
|
25
|
-
}
|
|
26
|
-
const parsed = stringToFloat(value);
|
|
27
|
-
return Number.isFinite(parsed) ? parsed : undefined;
|
|
28
|
-
}
|
|
29
14
|
//# sourceMappingURL=parse.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/utils/parse.ts"],"names":[],"mappings":";;AAmBA,sCASC;
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/utils/parse.ts"],"names":[],"mappings":";;AAmBA,sCASC;AATD,SAAgB,aAAa,CAAC,KAAa;IACzC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,CAAA;IACV,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAC1E,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,CAAA;IACV,CAAC;IACD,OAAO,UAAU,CAAC,OAAO,CAAC,CAAA;AAC5B,CAAC"}
|
|
@@ -5,11 +5,6 @@ export declare function estimateIsolatedLiquidationPrice(params: {
|
|
|
5
5
|
isLong: boolean;
|
|
6
6
|
maintenanceMarginRate: number;
|
|
7
7
|
}): number | undefined;
|
|
8
|
-
export declare function wouldImmediatelyLiquidate(params: {
|
|
9
|
-
liquidationPrice: number;
|
|
10
|
-
currentPrice: number;
|
|
11
|
-
isLong: boolean;
|
|
12
|
-
}): boolean;
|
|
13
8
|
export declare function predictAverageEntryPrice(params: {
|
|
14
9
|
currentSize: number;
|
|
15
10
|
currentEntry: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"positionMath.d.ts","sourceRoot":"","sources":["../../../src/utils/positionMath.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"positionMath.d.ts","sourceRoot":"","sources":["../../../src/utils/positionMath.ts"],"names":[],"mappings":"AAeA,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAErD;AAoBD,wBAAgB,gCAAgC,CAAC,MAAM,EAAE;IACvD,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,qBAAqB,EAAE,MAAM,CAAA;CAC9B,GAAG,MAAM,GAAG,SAAS,CAYrB;AAkBD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAC/C,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,MAAM,GAAG,SAAS,CAUrB;AAaD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,MAAM,GAAG,SAAS,CAOrB;AAUD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;CAChB,GAAG,MAAM,CAGT;AAUD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,OAAO,CAAA;CAChB,GAAG,MAAM,CAGT"}
|
|
@@ -2,12 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.directionSign = directionSign;
|
|
4
4
|
exports.estimateIsolatedLiquidationPrice = estimateIsolatedLiquidationPrice;
|
|
5
|
-
exports.wouldImmediatelyLiquidate = wouldImmediatelyLiquidate;
|
|
6
5
|
exports.predictAverageEntryPrice = predictAverageEntryPrice;
|
|
7
6
|
exports.predictNewLeverage = predictNewLeverage;
|
|
8
7
|
exports.predictUnrealizedPnl = predictUnrealizedPnl;
|
|
9
8
|
exports.realizedPnlOnClose = realizedPnlOnClose;
|
|
10
|
-
const decimal_js_1 = require("./decimal.js");
|
|
11
9
|
function directionSign(isLong) {
|
|
12
10
|
return isLong ? 1 : -1;
|
|
13
11
|
}
|
|
@@ -21,26 +19,8 @@ function estimateIsolatedLiquidationPrice(params) {
|
|
|
21
19
|
if (denominator === 0) {
|
|
22
20
|
return undefined;
|
|
23
21
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
const mmr = new decimal_js_1.DivBig(maintenanceMarginRate);
|
|
28
|
-
const marginAvailable = new decimal_js_1.DivBig(1)
|
|
29
|
-
.div(leverage)
|
|
30
|
-
.minus(mmr)
|
|
31
|
-
.times(entryPrice);
|
|
32
|
-
return new decimal_js_1.DivBig(entryPrice)
|
|
33
|
-
.minus(marginAvailable.times(side).div(mmr.times(-side).plus(1)))
|
|
34
|
-
.toNumber();
|
|
35
|
-
}
|
|
36
|
-
function wouldImmediatelyLiquidate(params) {
|
|
37
|
-
const { liquidationPrice, currentPrice, isLong } = params;
|
|
38
|
-
if (currentPrice <= 0 || liquidationPrice <= 0) {
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
return isLong
|
|
42
|
-
? liquidationPrice >= currentPrice
|
|
43
|
-
: liquidationPrice <= currentPrice;
|
|
22
|
+
const marginAvailable = entryPrice * (1 / leverage - maintenanceMarginRate);
|
|
23
|
+
return entryPrice - (side * marginAvailable) / denominator;
|
|
44
24
|
}
|
|
45
25
|
function predictAverageEntryPrice(params) {
|
|
46
26
|
const { currentSize, currentEntry, addSize, fillPrice } = params;
|
|
@@ -51,14 +31,7 @@ function predictAverageEntryPrice(params) {
|
|
|
51
31
|
if (!Number.isFinite(currentEntry) || !Number.isFinite(fillPrice)) {
|
|
52
32
|
return undefined;
|
|
53
33
|
}
|
|
54
|
-
|
|
55
|
-
return Number.NaN;
|
|
56
|
-
}
|
|
57
|
-
return new decimal_js_1.DivBig(currentSize)
|
|
58
|
-
.times(currentEntry)
|
|
59
|
-
.plus(new decimal_js_1.DivBig(addSize).times(fillPrice))
|
|
60
|
-
.div(new decimal_js_1.DivBig(currentSize).plus(addSize))
|
|
61
|
-
.toNumber();
|
|
34
|
+
return (currentSize * currentEntry + addSize * fillPrice) / totalSize;
|
|
62
35
|
}
|
|
63
36
|
function predictNewLeverage(params) {
|
|
64
37
|
const { currentNotional, currentMargin, addNotional, addMargin } = params;
|
|
@@ -66,34 +39,14 @@ function predictNewLeverage(params) {
|
|
|
66
39
|
if (totalMargin <= 0) {
|
|
67
40
|
return undefined;
|
|
68
41
|
}
|
|
69
|
-
|
|
70
|
-
return Number.NaN;
|
|
71
|
-
}
|
|
72
|
-
return new decimal_js_1.DivBig(currentNotional)
|
|
73
|
-
.plus(addNotional)
|
|
74
|
-
.div(new decimal_js_1.DivBig(currentMargin).plus(addMargin))
|
|
75
|
-
.toNumber();
|
|
42
|
+
return (currentNotional + addNotional) / totalMargin;
|
|
76
43
|
}
|
|
77
44
|
function predictUnrealizedPnl(params) {
|
|
78
45
|
const { entryPrice, markPrice, size, isLong } = params;
|
|
79
|
-
|
|
80
|
-
return Number.NaN;
|
|
81
|
-
}
|
|
82
|
-
return new decimal_js_1.DivBig(markPrice)
|
|
83
|
-
.minus(entryPrice)
|
|
84
|
-
.times(size)
|
|
85
|
-
.times(directionSign(isLong))
|
|
86
|
-
.toNumber();
|
|
46
|
+
return (markPrice - entryPrice) * size * directionSign(isLong);
|
|
87
47
|
}
|
|
88
48
|
function realizedPnlOnClose(params) {
|
|
89
49
|
const { entryPrice, closePrice, closeSize, isLong } = params;
|
|
90
|
-
|
|
91
|
-
return Number.NaN;
|
|
92
|
-
}
|
|
93
|
-
return new decimal_js_1.DivBig(closePrice)
|
|
94
|
-
.minus(entryPrice)
|
|
95
|
-
.times(closeSize)
|
|
96
|
-
.times(directionSign(isLong))
|
|
97
|
-
.toNumber();
|
|
50
|
+
return (closePrice - entryPrice) * closeSize * directionSign(isLong);
|
|
98
51
|
}
|
|
99
52
|
//# sourceMappingURL=positionMath.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"positionMath.js","sourceRoot":"","sources":["../../../src/utils/positionMath.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"positionMath.js","sourceRoot":"","sources":["../../../src/utils/positionMath.ts"],"names":[],"mappings":";;AAeA,sCAEC;AAoBD,4EAiBC;AAkBD,4DAeC;AAaD,gDAYC;AAUD,oDAQC;AAUD,gDAQC;AArID,SAAgB,aAAa,CAAC,MAAe;IAC3C,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACxB,CAAC;AAoBD,SAAgB,gCAAgC,CAAC,MAKhD;IACC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,CAAA;IACtE,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;IAClC,MAAM,WAAW,GAAG,CAAC,GAAG,qBAAqB,GAAG,IAAI,CAAA;IACpD,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,eAAe,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,qBAAqB,CAAC,CAAA;IAC3E,OAAO,UAAU,GAAG,CAAC,IAAI,GAAG,eAAe,CAAC,GAAG,WAAW,CAAA;AAC5D,CAAC;AAkBD,SAAgB,wBAAwB,CAAC,MAKxC;IACC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,CAAA;IAChE,MAAM,SAAS,GAAG,WAAW,GAAG,OAAO,CAAA;IACvC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QACnB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAClE,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,CAAC,WAAW,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,CAAC,GAAG,SAAS,CAAA;AACvE,CAAC;AAaD,SAAgB,kBAAkB,CAAC,MAKlC;IACC,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,MAAM,CAAA;IACzE,MAAM,WAAW,GAAG,aAAa,GAAG,SAAS,CAAA;IAC7C,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,CAAC,eAAe,GAAG,WAAW,CAAC,GAAG,WAAW,CAAA;AACtD,CAAC;AAUD,SAAgB,oBAAoB,CAAC,MAKpC;IACC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IACtD,OAAO,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;AAChE,CAAC;AAUD,SAAgB,kBAAkB,CAAC,MAKlC;IACC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IAC5D,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;AACtE,CAAC"}
|
package/dist/cjs/version.d.ts
CHANGED
package/dist/cjs/version.js
CHANGED
|
@@ -6,7 +6,7 @@ import type { PerpsProvider, PerpsSDKClient } from '../types/provider.js';
|
|
|
6
6
|
* `createPerpsClient({ providers: [...] })`) rather than a runtime-recoverable
|
|
7
7
|
* state.
|
|
8
8
|
*
|
|
9
|
-
* @
|
|
9
|
+
* @internal
|
|
10
10
|
*/
|
|
11
11
|
export declare function requireProvider(client: PerpsSDKClient, provider: string): PerpsProvider;
|
|
12
12
|
//# sourceMappingURL=requireProvider.d.ts.map
|