@lifi/perps-sdk-provider-ondo 21.0.0 → 22.0.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 +16 -1
- package/dist/cjs/OndoProvider.d.ts.map +1 -1
- package/dist/cjs/OndoProvider.js +31 -7
- package/dist/cjs/OndoProvider.js.map +1 -1
- package/dist/cjs/utils/mapFill.d.ts.map +1 -1
- package/dist/cjs/utils/mapFill.js +4 -5
- package/dist/cjs/utils/mapFill.js.map +1 -1
- package/dist/cjs/utils/mapOrder.d.ts.map +1 -1
- package/dist/cjs/utils/mapOrder.js +8 -10
- package/dist/cjs/utils/mapOrder.js.map +1 -1
- package/dist/cjs/utils/mapPosition.d.ts.map +1 -1
- package/dist/cjs/utils/mapPosition.js +2 -5
- package/dist/cjs/utils/mapPosition.js.map +1 -1
- package/dist/cjs/utils/withdrawableBalances.d.ts.map +1 -1
- package/dist/cjs/utils/withdrawableBalances.js +1 -0
- package/dist/cjs/utils/withdrawableBalances.js.map +1 -1
- package/dist/cjs/websocket/OndoWsProvider.d.ts +6 -0
- package/dist/cjs/websocket/OndoWsProvider.d.ts.map +1 -1
- package/dist/cjs/websocket/OndoWsProvider.js +125 -33
- package/dist/cjs/websocket/OndoWsProvider.js.map +1 -1
- package/dist/esm/OndoProvider.d.ts.map +1 -1
- package/dist/esm/OndoProvider.js +31 -9
- package/dist/esm/OndoProvider.js.map +1 -1
- package/dist/esm/utils/mapFill.d.ts.map +1 -1
- package/dist/esm/utils/mapFill.js +4 -2
- package/dist/esm/utils/mapFill.js.map +1 -1
- package/dist/esm/utils/mapOrder.d.ts.map +1 -1
- package/dist/esm/utils/mapOrder.js +8 -7
- package/dist/esm/utils/mapOrder.js.map +1 -1
- package/dist/esm/utils/mapPosition.d.ts.map +1 -1
- package/dist/esm/utils/mapPosition.js +2 -2
- package/dist/esm/utils/mapPosition.js.map +1 -1
- package/dist/esm/utils/withdrawableBalances.d.ts +3 -2
- package/dist/esm/utils/withdrawableBalances.d.ts.map +1 -1
- package/dist/esm/utils/withdrawableBalances.js +4 -2
- package/dist/esm/utils/withdrawableBalances.js.map +1 -1
- package/dist/esm/websocket/OndoWsProvider.d.ts +8 -7
- package/dist/esm/websocket/OndoWsProvider.d.ts.map +1 -1
- package/dist/esm/websocket/OndoWsProvider.js +128 -45
- package/dist/esm/websocket/OndoWsProvider.js.map +1 -1
- package/dist/types/OndoProvider.d.ts.map +1 -1
- package/dist/types/utils/mapFill.d.ts.map +1 -1
- package/dist/types/utils/mapOrder.d.ts.map +1 -1
- package/dist/types/utils/mapPosition.d.ts.map +1 -1
- package/dist/types/utils/withdrawableBalances.d.ts +3 -2
- package/dist/types/utils/withdrawableBalances.d.ts.map +1 -1
- package/dist/types/websocket/OndoWsProvider.d.ts +8 -7
- package/dist/types/websocket/OndoWsProvider.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/OndoProvider.ts +68 -14
- package/src/utils/mapFill.ts +4 -2
- package/src/utils/mapOrder.ts +8 -7
- package/src/utils/mapPosition.ts +2 -2
- package/src/utils/withdrawableBalances.ts +4 -2
- package/src/websocket/OndoWsProvider.ts +157 -47
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OndoProvider.d.ts","sourceRoot":"","sources":["../../src/OndoProvider.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"OndoProvider.d.ts","sourceRoot":"","sources":["../../src/OndoProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAaL,KAAK,mBAAmB,EAsBxB,KAAK,cAAc,EAKpB,MAAM,iBAAiB,CAAA;AA4GxB;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,oFAAoF;IACpF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,6EAA6E;IAC7E,OAAO,CAAC,EAAE,cAAc,CAAA;CACzB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,YAAY,GACvB,UAAS,mBAAwB,KAChC,mBA2/BF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,IAAI,aAngCN,mBAAmB,KAC3B,mBAkgC6B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapFill.d.ts","sourceRoot":"","sources":["../../../src/utils/mapFill.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"mapFill.d.ts","sourceRoot":"","sources":["../../../src/utils/mapFill.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAE5D,OAAO,KAAK,EAAE,QAAQ,EAAqB,MAAM,kBAAkB,CAAA;AAanE;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,GAAI,MAAM,QAAQ,EAAE,QAAQ,aAAa,KAAG,IAwB9D,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapOrder.d.ts","sourceRoot":"","sources":["../../../src/utils/mapOrder.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,KAAK,EAGV,WAAW,EAIZ,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"mapOrder.d.ts","sourceRoot":"","sources":["../../../src/utils/mapOrder.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,KAAK,EAGV,WAAW,EAIZ,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAGhE,+EAA+E;AAC/E,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,WAiB/C,CAAA;AAgCD,yEAAyE;AACzE,eAAO,MAAM,QAAQ,GACnB,OAAO,SAAS,GAAG,aAAa,EAChC,QAAQ,aAAa,EACrB,gBAAgB,MAAM,KACrB,KA2GF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAC1B,MAAM,SAAS,EAAE,EACjB,eAAe,CAAC,MAAM,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,KAC3D;IAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CA0BzC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapPosition.d.ts","sourceRoot":"","sources":["../../../src/utils/mapPosition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"mapPosition.d.ts","sourceRoot":"","sources":["../../../src/utils/mapPosition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAErE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAGpD;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GACtB,KAAK,YAAY,EACjB,QAAQ,kBAAkB,KACzB,QAaD,CAAA;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,WAAW,YAAY,EAAE,EACzB,eAAe,CAAC,MAAM,EAAE,MAAM,KAAK,kBAAkB,KACpD,QAAQ,EAK6C,CAAA"}
|
|
@@ -8,8 +8,9 @@ import type { OndoBalanceSummary } from '../types/wire.js';
|
|
|
8
8
|
*
|
|
9
9
|
* @param assetId - `Asset.id` the row is keyed by.
|
|
10
10
|
* @param withdrawalFeeUsd - The account's `withdrawalFeeUSD`. Ondo collateral
|
|
11
|
-
* is USDC, so the USD fee is the row fee 1:1 in collateral units.
|
|
12
|
-
* leaves the row without a
|
|
11
|
+
* is USDC, so the USD fee is the row fee 1:1 in collateral units. Ondo
|
|
12
|
+
* charges it on top of the requested amount. Absent leaves the row without a
|
|
13
|
+
* fee.
|
|
13
14
|
* @public
|
|
14
15
|
*/
|
|
15
16
|
export declare const ondoWithdrawableBalances: (assetId: string, balance: OndoBalanceSummary, withdrawalFeeUsd?: string) => ProviderWithdrawableBalance[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withdrawableBalances.d.ts","sourceRoot":"","sources":["../../../src/utils/withdrawableBalances.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAG1D
|
|
1
|
+
{"version":3,"file":"withdrawableBalances.d.ts","sourceRoot":"","sources":["../../../src/utils/withdrawableBalances.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAG1D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,wBAAwB,GACnC,SAAS,MAAM,EACf,SAAS,kBAAkB,EAC3B,mBAAmB,MAAM,KACxB,2BAA2B,EAwB7B,CAAA"}
|
|
@@ -10,6 +10,7 @@ interface SubState {
|
|
|
10
10
|
};
|
|
11
11
|
needsAuth: boolean;
|
|
12
12
|
address?: Address;
|
|
13
|
+
authGeneration?: number;
|
|
13
14
|
}
|
|
14
15
|
/**
|
|
15
16
|
* Options for {@link ondoWsProvider} / {@link OndoWsProvider}.
|
|
@@ -52,6 +53,7 @@ export declare class OndoWsProvider extends WsProviderBase<SubState> {
|
|
|
52
53
|
* positions frame, which is what moves them.
|
|
53
54
|
*/
|
|
54
55
|
private accountSummary;
|
|
56
|
+
private accountSummaryGeneration;
|
|
55
57
|
/**
|
|
56
58
|
* Serializes the balance re-read: a single trade event emits a fills frame
|
|
57
59
|
* and a positions frame together, and two concurrent REST reads can resolve
|
|
@@ -65,6 +67,9 @@ export declare class OndoWsProvider extends WsProviderBase<SubState> {
|
|
|
65
67
|
/** The single address this connection's login is bound to. */
|
|
66
68
|
private accountAddress;
|
|
67
69
|
private loginPromise;
|
|
70
|
+
private authGeneration;
|
|
71
|
+
private authBindingRefs;
|
|
72
|
+
private closeGeneration;
|
|
68
73
|
constructor(wsUrl?: string, providerKey?: string, options?: OndoWsProviderOptions, client?: PerpsSDKClient);
|
|
69
74
|
subscribeQuote(params: ProviderGetQuoteParams, onQuote: QuoteListener): Promise<() => void>;
|
|
70
75
|
protected toKey(sub: Subscription): string;
|
|
@@ -82,11 +87,7 @@ export declare class OndoWsProvider extends WsProviderBase<SubState> {
|
|
|
82
87
|
* false — leaving the binding intact — while any is still live.
|
|
83
88
|
*/
|
|
84
89
|
private releaseBindingIfIdle;
|
|
85
|
-
/**
|
|
86
|
-
* Forget the authenticated binding and cycle the connection. The venue
|
|
87
|
-
* permits one login per socket, so a later subscribe for a different address
|
|
88
|
-
* must authenticate on a fresh connection rather than re-login on this one.
|
|
89
|
-
*/
|
|
90
|
+
/** Release a channel's binding reservation, including one still opening. */
|
|
90
91
|
private releaseBinding;
|
|
91
92
|
/** Register a wire sub, ref-counting the shared authenticated channels. */
|
|
92
93
|
private acquireWire;
|
|
@@ -118,6 +119,7 @@ export declare class OndoWsProvider extends WsProviderBase<SubState> {
|
|
|
118
119
|
private seedAccountSummary;
|
|
119
120
|
/** Re-read the venue balance moved by the frame and re-emit the summary. */
|
|
120
121
|
private refreshAccountSummary;
|
|
122
|
+
private clearAccountSummary;
|
|
121
123
|
private readBalance;
|
|
122
124
|
/** Emit the current account summary from the venue balance figures. */
|
|
123
125
|
private emitAccountSummary;
|
|
@@ -141,8 +143,7 @@ export declare class OndoWsProvider extends WsProviderBase<SubState> {
|
|
|
141
143
|
*
|
|
142
144
|
* Closes over the per-instance options (storage, apiUrl override) so
|
|
143
145
|
* `PerpsWsClient` can call the returned factory with just
|
|
144
|
-
* `({ provider, wsUrl, client })` at subscribe time.
|
|
145
|
-
* Ondo advertises a single venue, no sub-DEX filtering.
|
|
146
|
+
* `({ provider, wsUrl, client })` at subscribe time.
|
|
146
147
|
*
|
|
147
148
|
* @public
|
|
148
149
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OndoWsProvider.d.ts","sourceRoot":"","sources":["../../../src/websocket/OndoWsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAGlB,KAAK,cAAc,EAGnB,cAAc,EACd,KAAK,iBAAiB,EAGvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAKV,YAAY,EACb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAgEnC,UAAU,QAAQ;IAChB,yEAAyE;IACzE,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACnE,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"OndoWsProvider.d.ts","sourceRoot":"","sources":["../../../src/websocket/OndoWsProvider.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lifi/perps-sdk-provider-ondo",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "22.0.1",
|
|
4
4
|
"description": "Ondo Perps provider plugin for @lifi/perps-sdk",
|
|
5
5
|
"homepage": "https://github.com/lifinance/perps-sdk",
|
|
6
6
|
"bugs": {
|
|
@@ -44,10 +44,10 @@
|
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"big.js": "^7.0.1",
|
|
46
46
|
"viem": "^2.55.18",
|
|
47
|
-
"@lifi/perps-types": "^
|
|
47
|
+
"@lifi/perps-types": "^18.0.0"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
|
-
"@lifi/perps-sdk": "^
|
|
50
|
+
"@lifi/perps-sdk": "^20.1.0"
|
|
51
51
|
},
|
|
52
52
|
"publishConfig": {
|
|
53
53
|
"access": "public"
|
package/src/OndoProvider.ts
CHANGED
|
@@ -8,6 +8,8 @@ import {
|
|
|
8
8
|
getMarketRegistry,
|
|
9
9
|
getProviders,
|
|
10
10
|
localStorageAdapter,
|
|
11
|
+
maxOf,
|
|
12
|
+
minOf,
|
|
11
13
|
PerpsError,
|
|
12
14
|
type PerpsProviderPlugin,
|
|
13
15
|
type PerpsSDKClient,
|
|
@@ -17,6 +19,7 @@ import {
|
|
|
17
19
|
type ProviderGetAvailableToTradeParams,
|
|
18
20
|
type ProviderGetDepositFlowParams,
|
|
19
21
|
type ProviderGetFillsParams,
|
|
22
|
+
type ProviderGetMarketSettingsParams,
|
|
20
23
|
type ProviderGetOrderParams,
|
|
21
24
|
type ProviderGetOrdersParams,
|
|
22
25
|
type ProviderGetPortfolioHistoryParams,
|
|
@@ -51,6 +54,7 @@ import type {
|
|
|
51
54
|
FundingActivity,
|
|
52
55
|
LiquidationActivity,
|
|
53
56
|
MarketDisplay,
|
|
57
|
+
MarketSettings,
|
|
54
58
|
OndoAccountConfig,
|
|
55
59
|
Order,
|
|
56
60
|
OrdersResponse,
|
|
@@ -64,8 +68,13 @@ import type {
|
|
|
64
68
|
SigningMethod,
|
|
65
69
|
WithdrawalActivity,
|
|
66
70
|
} from '@lifi/perps-types'
|
|
67
|
-
import {
|
|
68
|
-
|
|
71
|
+
import {
|
|
72
|
+
ActionType,
|
|
73
|
+
ActivityType,
|
|
74
|
+
MarginMode,
|
|
75
|
+
PerpsErrorCode,
|
|
76
|
+
} from '@lifi/perps-types'
|
|
77
|
+
import Big from 'big.js'
|
|
69
78
|
import { type Address, getAddress } from 'viem'
|
|
70
79
|
import { projectOndoConfigSettings } from './accountConfig.js'
|
|
71
80
|
import { getAccountSummary } from './accountSummary.js'
|
|
@@ -137,13 +146,6 @@ import {
|
|
|
137
146
|
type OrderSource,
|
|
138
147
|
} from './utils/orderCursor.js'
|
|
139
148
|
|
|
140
|
-
const transferableWithin = (venueFigure: Big, units: Big): string => {
|
|
141
|
-
if (venueFigure.lt(0)) {
|
|
142
|
-
return '0'
|
|
143
|
-
}
|
|
144
|
-
return (venueFigure.gt(units) ? units : venueFigure).toFixed()
|
|
145
|
-
}
|
|
146
|
-
|
|
147
149
|
/**
|
|
148
150
|
* Construction options for the Ondo {@link PerpsProviderPlugin}.
|
|
149
151
|
*
|
|
@@ -371,13 +373,16 @@ export const ondoProvider = (
|
|
|
371
373
|
units: balance.walletBalance,
|
|
372
374
|
valueUsd: balance.walletBalance,
|
|
373
375
|
price: '1',
|
|
374
|
-
transferable:
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
376
|
+
transferable: minOf(
|
|
377
|
+
maxOf(
|
|
378
|
+
toWireBig(
|
|
379
|
+
balance.withdrawableMargin,
|
|
380
|
+
'balance.withdrawableMargin'
|
|
381
|
+
),
|
|
382
|
+
new Big(0)
|
|
378
383
|
),
|
|
379
384
|
walletBalance
|
|
380
|
-
),
|
|
385
|
+
).toFixed(),
|
|
381
386
|
},
|
|
382
387
|
]
|
|
383
388
|
: [],
|
|
@@ -436,6 +441,55 @@ export const ondoProvider = (
|
|
|
436
441
|
)
|
|
437
442
|
},
|
|
438
443
|
|
|
444
|
+
/** Ondo is cross-only, so the venue reports leverage alone. */
|
|
445
|
+
async getMarketSettings(
|
|
446
|
+
params: ProviderGetMarketSettingsParams,
|
|
447
|
+
opts?: SDKRequestOptions
|
|
448
|
+
): Promise<MarketSettings> {
|
|
449
|
+
const { marketId, categoryId } = params.market
|
|
450
|
+
if (categoryId !== ONDO_PROVIDER_KEY) {
|
|
451
|
+
const error = new PerpsError(
|
|
452
|
+
PerpsErrorCode.ValidationError,
|
|
453
|
+
`Ondo market '${marketId}' in category '${categoryId}' is not a perps market`
|
|
454
|
+
)
|
|
455
|
+
error.tool = ONDO_PROVIDER_KEY
|
|
456
|
+
throw error
|
|
457
|
+
}
|
|
458
|
+
return withSession(
|
|
459
|
+
params.address,
|
|
460
|
+
() => {
|
|
461
|
+
throw new OndoSessionExpiredError(
|
|
462
|
+
`No valid Ondo session token stored for ${params.address}. Run the SIWE login first.`
|
|
463
|
+
)
|
|
464
|
+
},
|
|
465
|
+
async (token) => {
|
|
466
|
+
const leverages = await apiClient(opts).get<OndoLeverage[]>(
|
|
467
|
+
'/v1/perps/leverage',
|
|
468
|
+
{ params: { market: marketId }, authToken: token.token }
|
|
469
|
+
)
|
|
470
|
+
const row = leverages.find((r) => r.market === marketId)
|
|
471
|
+
if (row === undefined) {
|
|
472
|
+
const error = new PerpsError(
|
|
473
|
+
PerpsErrorCode.SDKError,
|
|
474
|
+
`Ondo returned no leverage for market '${marketId}'`
|
|
475
|
+
)
|
|
476
|
+
error.tool = ONDO_PROVIDER_KEY
|
|
477
|
+
throw error
|
|
478
|
+
}
|
|
479
|
+
const leverage = toWireBig(row.leverage, 'leverage')
|
|
480
|
+
if (leverage.lte(0)) {
|
|
481
|
+
const error = new PerpsError(
|
|
482
|
+
PerpsErrorCode.SDKError,
|
|
483
|
+
`Ondo field \`leverage\` must be positive: '${row.leverage}'`
|
|
484
|
+
)
|
|
485
|
+
error.tool = ONDO_PROVIDER_KEY
|
|
486
|
+
throw error
|
|
487
|
+
}
|
|
488
|
+
return { marginMode: MarginMode.CROSS, leverage: leverage.toNumber() }
|
|
489
|
+
}
|
|
490
|
+
)
|
|
491
|
+
},
|
|
492
|
+
|
|
439
493
|
async getAvailableToTrade(
|
|
440
494
|
params: ProviderGetAvailableToTradeParams,
|
|
441
495
|
opts?: SDKRequestOptions
|
package/src/utils/mapFill.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Fill, MarketDisplay } from '@lifi/perps-types'
|
|
2
2
|
import { FillClassification, LiquidityRole, OrderSide } from '@lifi/perps-types'
|
|
3
|
-
import Big from 'big.js'
|
|
4
3
|
import type { OndoFill, OndoFillDirection } from '../types/wire.js'
|
|
4
|
+
import { toWireBig } from './decimal.js'
|
|
5
5
|
|
|
6
6
|
const DIRECTION_CLASSIFICATIONS: Record<OndoFillDirection, FillClassification> =
|
|
7
7
|
{
|
|
@@ -32,7 +32,9 @@ export const mapFill = (fill: OndoFill, market: MarketDisplay): Fill => ({
|
|
|
32
32
|
liquidity: fill.isMaker ? LiquidityRole.MAKER : LiquidityRole.TAKER,
|
|
33
33
|
// Ondo charges the fill fee in the market's quote asset.
|
|
34
34
|
fee: {
|
|
35
|
-
amount:
|
|
35
|
+
amount: toWireBig(fill.fee, 'fee')
|
|
36
|
+
.minus(toWireBig(fill.feeRebate ?? '0', 'feeRebate'))
|
|
37
|
+
.toFixed(),
|
|
36
38
|
asset: market.quoteAsset.displaySymbol,
|
|
37
39
|
},
|
|
38
40
|
realizedPnl: fill.pnl,
|
package/src/utils/mapOrder.ts
CHANGED
|
@@ -13,8 +13,8 @@ import {
|
|
|
13
13
|
PerpsErrorCode,
|
|
14
14
|
TimeInForce,
|
|
15
15
|
} from '@lifi/perps-types'
|
|
16
|
-
import Big from 'big.js'
|
|
17
16
|
import type { OndoOrder, OndoTwapOrder } from '../types/wire.js'
|
|
17
|
+
import { toWireBig } from './decimal.js'
|
|
18
18
|
|
|
19
19
|
/** Map supported Ondo lifecycle states; unsupported states fail explicitly. */
|
|
20
20
|
export const mapOrderStatus = (status: string): OrderStatus => {
|
|
@@ -73,7 +73,10 @@ export const mapOrder = (
|
|
|
73
73
|
parentOrderId?: string
|
|
74
74
|
): Order => {
|
|
75
75
|
const twap = 'twapId' in order
|
|
76
|
-
const filled =
|
|
76
|
+
const filled = toWireBig(order.filledSize, 'filledSize')
|
|
77
|
+
const totalSize = twap
|
|
78
|
+
? toWireBig(order.totalSize, 'totalSize')
|
|
79
|
+
: toWireBig(order.size, 'size')
|
|
77
80
|
const status = twap
|
|
78
81
|
? twapStatus(order.orderStatus)
|
|
79
82
|
: mapOrderStatus(order.status)
|
|
@@ -88,10 +91,8 @@ export const mapOrder = (
|
|
|
88
91
|
status === OrderStatus.OPEN && filled.gt(0)
|
|
89
92
|
? OrderStatus.PARTIALLY_FILLED
|
|
90
93
|
: status,
|
|
91
|
-
originalSize:
|
|
92
|
-
remainingSize:
|
|
93
|
-
.minus(filled)
|
|
94
|
-
.toFixed(),
|
|
94
|
+
originalSize: totalSize.toFixed(),
|
|
95
|
+
remainingSize: totalSize.minus(filled).toFixed(),
|
|
95
96
|
filledSize: order.filledSize,
|
|
96
97
|
reduceOnly: order.reduceOnly ?? false,
|
|
97
98
|
createdAt,
|
|
@@ -104,7 +105,7 @@ export const mapOrder = (
|
|
|
104
105
|
? {
|
|
105
106
|
averagePrice: twap
|
|
106
107
|
? order.avgFilledPrice
|
|
107
|
-
:
|
|
108
|
+
: toWireBig(order.filledCost, 'filledCost').div(filled).toFixed(),
|
|
108
109
|
}
|
|
109
110
|
: {}),
|
|
110
111
|
}
|
package/src/utils/mapPosition.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { PerpsMarketDisplay, Position } from '@lifi/perps-types'
|
|
2
2
|
import { MarginMode, PositionSide } from '@lifi/perps-types'
|
|
3
|
-
import Big from 'big.js'
|
|
4
3
|
import type { OndoPosition } from '../types/wire.js'
|
|
4
|
+
import { toWireBig } from './decimal.js'
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Map a raw Ondo position to the generic Position type. Ondo margin accounts
|
|
@@ -16,7 +16,7 @@ export const mapPosition = (
|
|
|
16
16
|
): Position => ({
|
|
17
17
|
market,
|
|
18
18
|
side: pos.direction === 'short' ? PositionSide.SHORT : PositionSide.LONG,
|
|
19
|
-
size:
|
|
19
|
+
size: toWireBig(pos.netQuantity, 'netQuantity').abs().toFixed(),
|
|
20
20
|
entryPrice: pos.averageEntryPrice,
|
|
21
21
|
markPrice: pos.markPrice,
|
|
22
22
|
liquidationPrice: pos.liquidationPrice,
|
|
@@ -10,8 +10,9 @@ import { toWireBig } from './decimal.js'
|
|
|
10
10
|
*
|
|
11
11
|
* @param assetId - `Asset.id` the row is keyed by.
|
|
12
12
|
* @param withdrawalFeeUsd - The account's `withdrawalFeeUSD`. Ondo collateral
|
|
13
|
-
* is USDC, so the USD fee is the row fee 1:1 in collateral units.
|
|
14
|
-
* leaves the row without a
|
|
13
|
+
* is USDC, so the USD fee is the row fee 1:1 in collateral units. Ondo
|
|
14
|
+
* charges it on top of the requested amount. Absent leaves the row without a
|
|
15
|
+
* fee.
|
|
15
16
|
* @public
|
|
16
17
|
*/
|
|
17
18
|
export const ondoWithdrawableBalances = (
|
|
@@ -38,6 +39,7 @@ export const ondoWithdrawableBalances = (
|
|
|
38
39
|
withdrawalFeeUsd,
|
|
39
40
|
'account.withdrawalFeeUSD'
|
|
40
41
|
).toFixed(),
|
|
42
|
+
isFeeDeducted: false,
|
|
41
43
|
}),
|
|
42
44
|
},
|
|
43
45
|
]
|