@lifi/perps-sdk-provider-ondo 0.0.0-preview-7ff840c
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/LICENSE +201 -0
- package/README.md +38 -0
- package/dist/cjs/OndoProvider.d.ts +8 -0
- package/dist/cjs/OndoProvider.d.ts.map +1 -0
- package/dist/cjs/OndoProvider.js +338 -0
- package/dist/cjs/OndoProvider.js.map +1 -0
- package/dist/cjs/accountConfig.d.ts +3 -0
- package/dist/cjs/accountConfig.d.ts.map +1 -0
- package/dist/cjs/accountConfig.js +59 -0
- package/dist/cjs/accountConfig.js.map +1 -0
- package/dist/cjs/accountSummary.d.ts +3 -0
- package/dist/cjs/accountSummary.d.ts.map +1 -0
- package/dist/cjs/accountSummary.js +8 -0
- package/dist/cjs/accountSummary.js.map +1 -0
- package/dist/cjs/auth/OndoTokenStore.d.ts +13 -0
- package/dist/cjs/auth/OndoTokenStore.d.ts.map +1 -0
- package/dist/cjs/auth/OndoTokenStore.js +53 -0
- package/dist/cjs/auth/OndoTokenStore.js.map +1 -0
- package/dist/cjs/auth/completeSiweLogin.d.ts +13 -0
- package/dist/cjs/auth/completeSiweLogin.d.ts.map +1 -0
- package/dist/cjs/auth/completeSiweLogin.js +15 -0
- package/dist/cjs/auth/completeSiweLogin.js.map +1 -0
- package/dist/cjs/auth/index.d.ts +4 -0
- package/dist/cjs/auth/index.d.ts.map +1 -0
- package/dist/cjs/auth/index.js +11 -0
- package/dist/cjs/auth/index.js.map +1 -0
- package/dist/cjs/auth/signActions.d.ts +13 -0
- package/dist/cjs/auth/signActions.d.ts.map +1 -0
- package/dist/cjs/auth/signActions.js +86 -0
- package/dist/cjs/auth/signActions.js.map +1 -0
- package/dist/cjs/constants.d.ts +9 -0
- package/dist/cjs/constants.d.ts.map +1 -0
- package/dist/cjs/constants.js +12 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/index.d.ts +9 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +37 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/types/auth.d.ts +16 -0
- package/dist/cjs/types/auth.d.ts.map +1 -0
- package/dist/cjs/types/auth.js +3 -0
- package/dist/cjs/types/auth.js.map +1 -0
- package/dist/cjs/types/index.d.ts +4 -0
- package/dist/cjs/types/index.d.ts.map +1 -0
- package/dist/cjs/types/index.js +3 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/wire.d.ts +154 -0
- package/dist/cjs/types/wire.d.ts.map +1 -0
- package/dist/cjs/types/wire.js +3 -0
- package/dist/cjs/types/wire.js.map +1 -0
- package/dist/cjs/types/ws.d.ts +92 -0
- package/dist/cjs/types/ws.d.ts.map +1 -0
- package/dist/cjs/types/ws.js +3 -0
- package/dist/cjs/types/ws.js.map +1 -0
- package/dist/cjs/utils/activityCursor.d.ts +9 -0
- package/dist/cjs/utils/activityCursor.d.ts.map +1 -0
- package/dist/cjs/utils/activityCursor.js +79 -0
- package/dist/cjs/utils/activityCursor.js.map +1 -0
- package/dist/cjs/utils/apiClient.d.ts +43 -0
- package/dist/cjs/utils/apiClient.d.ts.map +1 -0
- package/dist/cjs/utils/apiClient.js +134 -0
- package/dist/cjs/utils/apiClient.js.map +1 -0
- package/dist/cjs/utils/index.d.ts +11 -0
- package/dist/cjs/utils/index.d.ts.map +1 -0
- package/dist/cjs/utils/index.js +39 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/cjs/utils/liquidation.d.ts +4 -0
- package/dist/cjs/utils/liquidation.d.ts.map +1 -0
- package/dist/cjs/utils/liquidation.js +16 -0
- package/dist/cjs/utils/liquidation.js.map +1 -0
- package/dist/cjs/utils/mapActivity.d.ts +5 -0
- package/dist/cjs/utils/mapActivity.d.ts.map +1 -0
- package/dist/cjs/utils/mapActivity.js +34 -0
- package/dist/cjs/utils/mapActivity.js.map +1 -0
- package/dist/cjs/utils/mapFill.d.ts +4 -0
- package/dist/cjs/utils/mapFill.d.ts.map +1 -0
- package/dist/cjs/utils/mapFill.js +36 -0
- package/dist/cjs/utils/mapFill.js.map +1 -0
- package/dist/cjs/utils/mapOrder.d.ts +16 -0
- package/dist/cjs/utils/mapOrder.d.ts.map +1 -0
- package/dist/cjs/utils/mapOrder.js +135 -0
- package/dist/cjs/utils/mapOrder.js.map +1 -0
- package/dist/cjs/utils/mapPosition.d.ts +5 -0
- package/dist/cjs/utils/mapPosition.d.ts.map +1 -0
- package/dist/cjs/utils/mapPosition.js +26 -0
- package/dist/cjs/utils/mapPosition.js.map +1 -0
- package/dist/cjs/utils/ohlcvInterval.d.ts +4 -0
- package/dist/cjs/utils/ohlcvInterval.d.ts.map +1 -0
- package/dist/cjs/utils/ohlcvInterval.js +49 -0
- package/dist/cjs/utils/ohlcvInterval.js.map +1 -0
- package/dist/cjs/utils/ondoAsset.d.ts +3 -0
- package/dist/cjs/utils/ondoAsset.d.ts.map +1 -0
- package/dist/cjs/utils/ondoAsset.js +12 -0
- package/dist/cjs/utils/ondoAsset.js.map +1 -0
- package/dist/cjs/utils/orderFormatting.d.ts +4 -0
- package/dist/cjs/utils/orderFormatting.d.ts.map +1 -0
- package/dist/cjs/utils/orderFormatting.js +40 -0
- package/dist/cjs/utils/orderFormatting.js.map +1 -0
- package/dist/cjs/websocket/OndoWsProvider.d.ts +56 -0
- package/dist/cjs/websocket/OndoWsProvider.d.ts.map +1 -0
- package/dist/cjs/websocket/OndoWsProvider.js +515 -0
- package/dist/cjs/websocket/OndoWsProvider.js.map +1 -0
- package/dist/esm/OndoProvider.d.ts +39 -0
- package/dist/esm/OndoProvider.d.ts.map +1 -0
- package/dist/esm/OndoProvider.js +366 -0
- package/dist/esm/OndoProvider.js.map +1 -0
- package/dist/esm/accountConfig.d.ts +13 -0
- package/dist/esm/accountConfig.d.ts.map +1 -0
- package/dist/esm/accountConfig.js +77 -0
- package/dist/esm/accountConfig.js.map +1 -0
- package/dist/esm/accountSummary.d.ts +12 -0
- package/dist/esm/accountSummary.d.ts.map +1 -0
- package/dist/esm/accountSummary.js +14 -0
- package/dist/esm/accountSummary.js.map +1 -0
- package/dist/esm/auth/OndoTokenStore.d.ts +20 -0
- package/dist/esm/auth/OndoTokenStore.d.ts.map +1 -0
- package/dist/esm/auth/OndoTokenStore.js +61 -0
- package/dist/esm/auth/OndoTokenStore.js.map +1 -0
- package/dist/esm/auth/completeSiweLogin.d.ts +28 -0
- package/dist/esm/auth/completeSiweLogin.d.ts.map +1 -0
- package/dist/esm/auth/completeSiweLogin.js +21 -0
- package/dist/esm/auth/completeSiweLogin.js.map +1 -0
- package/dist/esm/auth/index.d.ts +4 -0
- package/dist/esm/auth/index.d.ts.map +1 -0
- package/dist/esm/auth/index.js +5 -0
- package/dist/esm/auth/index.js.map +1 -0
- package/dist/esm/auth/signActions.d.ts +35 -0
- package/dist/esm/auth/signActions.d.ts.map +1 -0
- package/dist/esm/auth/signActions.js +103 -0
- package/dist/esm/auth/signActions.js.map +1 -0
- package/dist/esm/constants.d.ts +35 -0
- package/dist/esm/constants.d.ts.map +1 -0
- package/dist/esm/constants.js +35 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/index.d.ts +19 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +21 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/types/auth.d.ts +32 -0
- package/dist/esm/types/auth.d.ts.map +1 -0
- package/dist/esm/types/auth.js +2 -0
- package/dist/esm/types/auth.js.map +1 -0
- package/dist/esm/types/index.d.ts +4 -0
- package/dist/esm/types/index.d.ts.map +1 -0
- package/dist/esm/types/index.js +3 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/wire.d.ts +195 -0
- package/dist/esm/types/wire.d.ts.map +1 -0
- package/dist/esm/types/wire.js +7 -0
- package/dist/esm/types/wire.js.map +1 -0
- package/dist/esm/types/ws.d.ts +108 -0
- package/dist/esm/types/ws.d.ts.map +1 -0
- package/dist/esm/types/ws.js +7 -0
- package/dist/esm/types/ws.js.map +1 -0
- package/dist/esm/utils/activityCursor.d.ts +47 -0
- package/dist/esm/utils/activityCursor.d.ts.map +1 -0
- package/dist/esm/utils/activityCursor.js +93 -0
- package/dist/esm/utils/activityCursor.js.map +1 -0
- package/dist/esm/utils/apiClient.d.ts +90 -0
- package/dist/esm/utils/apiClient.d.ts.map +1 -0
- package/dist/esm/utils/apiClient.js +169 -0
- package/dist/esm/utils/apiClient.js.map +1 -0
- package/dist/esm/utils/index.d.ts +11 -0
- package/dist/esm/utils/index.d.ts.map +1 -0
- package/dist/esm/utils/index.js +12 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/liquidation.d.ts +20 -0
- package/dist/esm/utils/liquidation.d.ts.map +1 -0
- package/dist/esm/utils/liquidation.js +29 -0
- package/dist/esm/utils/liquidation.js.map +1 -0
- package/dist/esm/utils/mapActivity.d.ts +21 -0
- package/dist/esm/utils/mapActivity.d.ts.map +1 -0
- package/dist/esm/utils/mapActivity.js +45 -0
- package/dist/esm/utils/mapActivity.js.map +1 -0
- package/dist/esm/utils/mapFill.d.ts +12 -0
- package/dist/esm/utils/mapFill.d.ts.map +1 -0
- package/dist/esm/utils/mapFill.js +37 -0
- package/dist/esm/utils/mapFill.js.map +1 -0
- package/dist/esm/utils/mapOrder.d.ts +50 -0
- package/dist/esm/utils/mapOrder.d.ts.map +1 -0
- package/dist/esm/utils/mapOrder.js +155 -0
- package/dist/esm/utils/mapOrder.js.map +1 -0
- package/dist/esm/utils/mapPosition.d.ts +19 -0
- package/dist/esm/utils/mapPosition.d.ts.map +1 -0
- package/dist/esm/utils/mapPosition.js +32 -0
- package/dist/esm/utils/mapPosition.js.map +1 -0
- package/dist/esm/utils/ohlcvInterval.d.ts +11 -0
- package/dist/esm/utils/ohlcvInterval.d.ts.map +1 -0
- package/dist/esm/utils/ohlcvInterval.js +59 -0
- package/dist/esm/utils/ohlcvInterval.js.map +1 -0
- package/dist/esm/utils/ondoAsset.d.ts +4 -0
- package/dist/esm/utils/ondoAsset.d.ts.map +1 -0
- package/dist/esm/utils/ondoAsset.js +9 -0
- package/dist/esm/utils/ondoAsset.js.map +1 -0
- package/dist/esm/utils/orderFormatting.d.ts +33 -0
- package/dist/esm/utils/orderFormatting.d.ts.map +1 -0
- package/dist/esm/utils/orderFormatting.js +62 -0
- package/dist/esm/utils/orderFormatting.js.map +1 -0
- package/dist/esm/websocket/OndoWsProvider.d.ts +122 -0
- package/dist/esm/websocket/OndoWsProvider.d.ts.map +1 -0
- package/dist/esm/websocket/OndoWsProvider.js +591 -0
- package/dist/esm/websocket/OndoWsProvider.js.map +1 -0
- package/dist/types/OndoProvider.d.ts +39 -0
- package/dist/types/OndoProvider.d.ts.map +1 -0
- package/dist/types/accountConfig.d.ts +13 -0
- package/dist/types/accountConfig.d.ts.map +1 -0
- package/dist/types/accountSummary.d.ts +12 -0
- package/dist/types/accountSummary.d.ts.map +1 -0
- package/dist/types/auth/OndoTokenStore.d.ts +20 -0
- package/dist/types/auth/OndoTokenStore.d.ts.map +1 -0
- package/dist/types/auth/completeSiweLogin.d.ts +28 -0
- package/dist/types/auth/completeSiweLogin.d.ts.map +1 -0
- package/dist/types/auth/index.d.ts +4 -0
- package/dist/types/auth/index.d.ts.map +1 -0
- package/dist/types/auth/signActions.d.ts +35 -0
- package/dist/types/auth/signActions.d.ts.map +1 -0
- package/dist/types/constants.d.ts +35 -0
- package/dist/types/constants.d.ts.map +1 -0
- package/dist/types/index.d.ts +19 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/types/auth.d.ts +32 -0
- package/dist/types/types/auth.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +4 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/types/wire.d.ts +195 -0
- package/dist/types/types/wire.d.ts.map +1 -0
- package/dist/types/types/ws.d.ts +108 -0
- package/dist/types/types/ws.d.ts.map +1 -0
- package/dist/types/utils/activityCursor.d.ts +47 -0
- package/dist/types/utils/activityCursor.d.ts.map +1 -0
- package/dist/types/utils/apiClient.d.ts +90 -0
- package/dist/types/utils/apiClient.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +11 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/dist/types/utils/liquidation.d.ts +20 -0
- package/dist/types/utils/liquidation.d.ts.map +1 -0
- package/dist/types/utils/mapActivity.d.ts +21 -0
- package/dist/types/utils/mapActivity.d.ts.map +1 -0
- package/dist/types/utils/mapFill.d.ts +12 -0
- package/dist/types/utils/mapFill.d.ts.map +1 -0
- package/dist/types/utils/mapOrder.d.ts +50 -0
- package/dist/types/utils/mapOrder.d.ts.map +1 -0
- package/dist/types/utils/mapPosition.d.ts +19 -0
- package/dist/types/utils/mapPosition.d.ts.map +1 -0
- package/dist/types/utils/ohlcvInterval.d.ts +11 -0
- package/dist/types/utils/ohlcvInterval.d.ts.map +1 -0
- package/dist/types/utils/ondoAsset.d.ts +4 -0
- package/dist/types/utils/ondoAsset.d.ts.map +1 -0
- package/dist/types/utils/orderFormatting.d.ts +33 -0
- package/dist/types/utils/orderFormatting.d.ts.map +1 -0
- package/dist/types/websocket/OndoWsProvider.d.ts +122 -0
- package/dist/types/websocket/OndoWsProvider.d.ts.map +1 -0
- package/package.json +64 -0
- package/src/OndoProvider.ts +635 -0
- package/src/accountConfig.ts +105 -0
- package/src/accountSummary.ts +22 -0
- package/src/auth/OndoTokenStore.ts +83 -0
- package/src/auth/completeSiweLogin.ts +43 -0
- package/src/auth/index.ts +12 -0
- package/src/auth/signActions.ts +160 -0
- package/src/constants.ts +38 -0
- package/src/index.ts +36 -0
- package/src/types/auth.ts +32 -0
- package/src/types/index.ts +5 -0
- package/src/types/wire.ts +228 -0
- package/src/types/ws.ts +79 -0
- package/src/utils/activityCursor.ts +140 -0
- package/src/utils/apiClient.ts +257 -0
- package/src/utils/index.ts +35 -0
- package/src/utils/liquidation.ts +37 -0
- package/src/utils/mapActivity.ts +61 -0
- package/src/utils/mapFill.ts +47 -0
- package/src/utils/mapOrder.ts +201 -0
- package/src/utils/mapPosition.ts +44 -0
- package/src/utils/ohlcvInterval.ts +69 -0
- package/src/utils/ondoAsset.ts +10 -0
- package/src/utils/orderFormatting.ts +70 -0
- package/src/websocket/OndoWsProvider.ts +752 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { PerpsError, type ResolvedRetryPolicy } from '@lifi/perps-sdk';
|
|
2
|
+
import type { OndoPageInfo } from '../types/wire.js';
|
|
3
|
+
/** @internal */
|
|
4
|
+
export type ApiParams = Record<string, string | number | boolean>;
|
|
5
|
+
/** One page of a paginated Ondo response: `pageInfo` is a SIBLING of `result`. @public */
|
|
6
|
+
export interface OndoPage<T> {
|
|
7
|
+
result: T[];
|
|
8
|
+
pageInfo: OndoPageInfo | undefined;
|
|
9
|
+
}
|
|
10
|
+
/** @internal */
|
|
11
|
+
export type OndoHttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE';
|
|
12
|
+
/**
|
|
13
|
+
* Ondo request failure — a non-2xx HTTP status, a `success: false` envelope,
|
|
14
|
+
* or a body that is not a `GenericResponse` envelope at all. `errorCode`
|
|
15
|
+
* carries the wire `error_code` when the envelope advertised one.
|
|
16
|
+
*
|
|
17
|
+
* @public
|
|
18
|
+
*/
|
|
19
|
+
export declare class OndoApiError extends PerpsError {
|
|
20
|
+
readonly errorCode: string | undefined;
|
|
21
|
+
constructor(message: string, errorCode?: string);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The Ondo session JWT was rejected (HTTP 401). Distinct from
|
|
25
|
+
* {@link OndoApiError} so callers can evict the stored token and re-run the
|
|
26
|
+
* SIWE login instead of surfacing a generic venue failure.
|
|
27
|
+
*
|
|
28
|
+
* @public
|
|
29
|
+
*/
|
|
30
|
+
export declare class OndoSessionExpiredError extends PerpsError {
|
|
31
|
+
constructor(message: string);
|
|
32
|
+
}
|
|
33
|
+
/** @internal */
|
|
34
|
+
export declare const ONDO_RETRY_DEFAULTS: ResolvedRetryPolicy;
|
|
35
|
+
/** @internal */
|
|
36
|
+
export interface OndoApiClientOptions {
|
|
37
|
+
signal?: AbortSignal;
|
|
38
|
+
policy?: ResolvedRetryPolicy;
|
|
39
|
+
fetchImpl?: typeof fetch;
|
|
40
|
+
}
|
|
41
|
+
/** @internal */
|
|
42
|
+
export interface OndoRequestOptions {
|
|
43
|
+
params?: ApiParams;
|
|
44
|
+
/** Ondo session JWT, sent as `Authorization: Bearer <token>`. */
|
|
45
|
+
authToken?: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* HTTP boundary against Ondo's REST API.
|
|
49
|
+
*
|
|
50
|
+
* Browser-direct by design: the session JWT lives client-side only, so
|
|
51
|
+
* credentialed calls (`authToken` option) go straight to Ondo — never through
|
|
52
|
+
* the LI.FI backend. Every response is an `OndoGenericResponse` envelope; the
|
|
53
|
+
* client unwraps `result` on success and throws {@link OndoApiError} (carrying
|
|
54
|
+
* the wire `error_code`) otherwise. An HTTP 401 throws
|
|
55
|
+
* {@link OndoSessionExpiredError} so callers can re-run the SIWE login.
|
|
56
|
+
* @public
|
|
57
|
+
*/
|
|
58
|
+
export declare class OndoApiClient {
|
|
59
|
+
private readonly baseUrl;
|
|
60
|
+
private readonly signal;
|
|
61
|
+
private readonly policy;
|
|
62
|
+
private readonly fetchImpl;
|
|
63
|
+
constructor(baseUrl: string, options?: OndoApiClientOptions);
|
|
64
|
+
get<T>(path: string, options?: OndoRequestOptions): Promise<T>;
|
|
65
|
+
/**
|
|
66
|
+
* GET a paginated endpoint, preserving the `pageInfo` sibling that
|
|
67
|
+
* {@link get}'s envelope unwrap would otherwise drop.
|
|
68
|
+
*/
|
|
69
|
+
getPage<T>(path: string, options?: OndoRequestOptions): Promise<OndoPage<T>>;
|
|
70
|
+
/**
|
|
71
|
+
* Arbitrary-method request with caller-prebuilt headers — the execution
|
|
72
|
+
* surface for credential-bearing `RestCallSignedActionStep`s, whose
|
|
73
|
+
* `Authorization` header is attached by `signActions` from the token store.
|
|
74
|
+
* Only GET is ever retried; writes are not idempotent.
|
|
75
|
+
*/
|
|
76
|
+
send<T>(method: OndoHttpMethod, path: string, options?: {
|
|
77
|
+
body?: unknown;
|
|
78
|
+
headers?: Record<string, string>;
|
|
79
|
+
}): Promise<T>;
|
|
80
|
+
/**
|
|
81
|
+
* POSTs are never auto-retried regardless of policy: Ondo writes (order
|
|
82
|
+
* placement, login completion) are not idempotent, and a retried request
|
|
83
|
+
* whose first attempt landed would double-submit.
|
|
84
|
+
*/
|
|
85
|
+
post<T>(path: string, body?: unknown, options?: Pick<OndoRequestOptions, 'authToken'>): Promise<T>;
|
|
86
|
+
private buildUrl;
|
|
87
|
+
private perform;
|
|
88
|
+
private unwrap;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=apiClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiClient.d.ts","sourceRoot":"","sources":["../../../src/utils/apiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACV,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAEpD,gBAAgB;AAChB,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;AAEjE,0FAA0F;AAC1F,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,MAAM,EAAE,CAAC,EAAE,CAAA;IACX,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAA;CACnC;AAED,gBAAgB;AAChB,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;AAE9D;;;;;;GAMG;AACH,qBAAa,YAAa,SAAQ,UAAU;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;gBAE1B,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CAIhD;AAED;;;;;;GAMG;AACH,qBAAa,uBAAwB,SAAQ,UAAU;gBACzC,OAAO,EAAE,MAAM;CAG5B;AAED,gBAAgB;AAChB,eAAO,MAAM,mBAAmB,EAAE,mBAmBjC,CAAA;AAED,gBAAgB;AAChB,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,MAAM,CAAC,EAAE,mBAAmB,CAAA;IAC5B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB;AAED,gBAAgB;AAChB,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AASD;;;;;;;;;;GAUG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;gBAExC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB;IAOrD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAUpE;;;OAGG;IACG,OAAO,CAAC,CAAC,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAYvB;;;;;OAKG;IACG,IAAI,CAAC,CAAC,EACV,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAC7D,OAAO,CAAC,CAAC,CAAC;IAUb;;;;OAIG;IACG,IAAI,CAAC,CAAC,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAC9C,OAAO,CAAC,CAAC,CAAC;IAUb,OAAO,CAAC,QAAQ;YAaF,OAAO;IAgCrB,OAAO,CAAC,MAAM;CAyBf"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { decodeActivityCursor, encodeActivityCursor, type OndoActivityCursor, } from './activityCursor.js';
|
|
2
|
+
export { type ApiParams, ONDO_RETRY_DEFAULTS, OndoApiClient, type OndoApiClientOptions, OndoApiError, type OndoHttpMethod, type OndoPage, type OndoRequestOptions, OndoSessionExpiredError, } from './apiClient.js';
|
|
3
|
+
export { estimateLiquidationPrice } from './liquidation.js';
|
|
4
|
+
export { mapFundingActivity, mapLiquidationActivity } from './mapActivity.js';
|
|
5
|
+
export { mapFill } from './mapFill.js';
|
|
6
|
+
export { classifyAndMapOrders, isTriggerOrder, mapOrder, mapOrderDetail, mapOrderStatus, mapOrderType, mapStatusReason, mapTriggerOrder, } from './mapOrder.js';
|
|
7
|
+
export { mapOpenPositions, mapPosition } from './mapPosition.js';
|
|
8
|
+
export { intervalFromBarSpan, mapInterval } from './ohlcvInterval.js';
|
|
9
|
+
export { ondoAsset } from './ondoAsset.js';
|
|
10
|
+
export { formatOrderPrice, formatOrderSize } from './orderFormatting.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,kBAAkB,GACxB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,KAAK,SAAS,EACd,mBAAmB,EACnB,aAAa,EACb,KAAK,oBAAoB,EACzB,YAAY,EACZ,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,kBAAkB,EACvB,uBAAuB,GACxB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,QAAQ,EACR,cAAc,EACd,cAAc,EACd,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ondo liquidation price estimation.
|
|
3
|
+
*
|
|
4
|
+
* The LI.FI backend surfaces Ondo's per-market maintenance margin rate on the
|
|
5
|
+
* generic {@link PerpsMarket} as `maintenanceMarginRate`. The estimate is the
|
|
6
|
+
* standard isolated-margin model parameterised by that rate.
|
|
7
|
+
*/
|
|
8
|
+
import { type LiquidationEstimateParams } from '@lifi/perps-sdk';
|
|
9
|
+
import type { PerpsMarket } from '@lifi/perps-types';
|
|
10
|
+
/**
|
|
11
|
+
* Estimate the liquidation price of a new position on an Ondo market.
|
|
12
|
+
*
|
|
13
|
+
* @returns The estimated liquidation price, or `undefined` when
|
|
14
|
+
* `market.maintenanceMarginRate` is absent (the model cannot be evaluated
|
|
15
|
+
* without the venue's maintenance margin rate) or the inputs are
|
|
16
|
+
* degenerate.
|
|
17
|
+
* @public
|
|
18
|
+
*/
|
|
19
|
+
export declare function estimateLiquidationPrice(market: PerpsMarket, params: LiquidationEstimateParams): number | undefined;
|
|
20
|
+
//# sourceMappingURL=liquidation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"liquidation.d.ts","sourceRoot":"","sources":["../../../src/utils/liquidation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,yBAAyB,GAChC,MAAM,GAAG,SAAS,CAUpB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { FundingActivity, LiquidationActivity, MarketDisplay } from '@lifi/perps-types';
|
|
2
|
+
import type { OndoFundingFeeTransfer, OndoLiquidationEvent } from '../types/wire.js';
|
|
3
|
+
/**
|
|
4
|
+
* Map an Ondo funding-fee transfer to a {@link FundingActivity}. Ondo carries
|
|
5
|
+
* no transfer id on the wire, so a deterministic `funding:<market>:<ISO time>`
|
|
6
|
+
* id is synthesized — funding settles at most once per market per interval,
|
|
7
|
+
* so the pair is unique.
|
|
8
|
+
*
|
|
9
|
+
* @param market - Backend-resolved market identity for `transfer.market`.
|
|
10
|
+
* @public
|
|
11
|
+
*/
|
|
12
|
+
export declare const mapFundingActivity: (transfer: OndoFundingFeeTransfer, market: MarketDisplay) => FundingActivity;
|
|
13
|
+
/**
|
|
14
|
+
* Map an Ondo liquidation event to a {@link LiquidationActivity}. Ondo does
|
|
15
|
+
* not report the account value at liquidation time, and its margin accounts
|
|
16
|
+
* are cross-only, so `accountValue` is `'0'` and `leverageType` is `'cross'`.
|
|
17
|
+
*
|
|
18
|
+
* @public
|
|
19
|
+
*/
|
|
20
|
+
export declare const mapLiquidationActivity: (event: OndoLiquidationEvent, resolveMarket: (market: string) => MarketDisplay) => LiquidationActivity;
|
|
21
|
+
//# sourceMappingURL=mapActivity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapActivity.d.ts","sourceRoot":"","sources":["../../../src/utils/mapActivity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,aAAa,EACd,MAAM,mBAAmB,CAAA;AAG1B,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,kBAAkB,CAAA;AAEzB;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,GAC7B,UAAU,sBAAsB,EAChC,QAAQ,aAAa,KACpB,eAYF,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,GACjC,OAAO,oBAAoB,EAC3B,eAAe,CAAC,MAAM,EAAE,MAAM,KAAK,aAAa,KAC/C,mBAYD,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Fill, MarketDisplay } from '@lifi/perps-types';
|
|
2
|
+
import type { OndoFill } from '../types/wire.js';
|
|
3
|
+
/**
|
|
4
|
+
* Map a raw Ondo fill to the generic {@link Fill}. The fee is netted against
|
|
5
|
+
* Ondo's `feeRebate`; when the wire `direction` is absent the classification
|
|
6
|
+
* falls back to the fill side.
|
|
7
|
+
*
|
|
8
|
+
* @param market - Backend-resolved market identity for `fill.market`.
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
export declare const mapFill: (fill: OndoFill, market: MarketDisplay) => Fill;
|
|
12
|
+
//# sourceMappingURL=mapFill.d.ts.map
|
|
@@ -0,0 +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;AAQ5D,OAAO,KAAK,EAAE,QAAQ,EAAqB,MAAM,kBAAkB,CAAA;AAYnE;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,GAAI,MAAM,QAAQ,EAAE,QAAQ,aAAa,KAAG,IAkB9D,CAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { MarketDisplay, OpenOrder, Order, TriggerOrder } from '@lifi/perps-types';
|
|
2
|
+
import { OrderStatus, OrderType } from '@lifi/perps-types';
|
|
3
|
+
import type { OndoOrder, OndoOrderStatus, OndoOrderType } from '../types/wire.js';
|
|
4
|
+
/** @public */
|
|
5
|
+
export declare const mapOrderType: (type: OndoOrderType) => OrderType;
|
|
6
|
+
/**
|
|
7
|
+
* Map Ondo's order status onto the generic enum. `untriggered` stop orders
|
|
8
|
+
* are active resting orders from the trader's point of view, so they map to
|
|
9
|
+
* OPEN.
|
|
10
|
+
* @public
|
|
11
|
+
*/
|
|
12
|
+
export declare const mapOrderStatus: (status: OndoOrderStatus) => OrderStatus;
|
|
13
|
+
/**
|
|
14
|
+
* Plain-English `statusReason` for a cancelled order; `undefined` for every
|
|
15
|
+
* other status. Unknown wire reasons fall back to the generic sentence rather
|
|
16
|
+
* than leaking raw enum values into the UI.
|
|
17
|
+
* @public
|
|
18
|
+
*/
|
|
19
|
+
export declare const mapStatusReason: (order: OndoOrder) => string | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* Whether an order rests on a trigger. Checks `stopOrderType` and
|
|
22
|
+
* `triggerPrice` besides the type so a lagging `type` field cannot
|
|
23
|
+
* misclassify a trigger as a plain order.
|
|
24
|
+
* @public
|
|
25
|
+
*/
|
|
26
|
+
export declare const isTriggerOrder: (order: OndoOrder) => boolean;
|
|
27
|
+
/** Map an active non-trigger Ondo order to an {@link OpenOrder}. @public */
|
|
28
|
+
export declare const mapOrder: (order: OndoOrder, market: MarketDisplay) => OpenOrder;
|
|
29
|
+
/** Map an active trigger Ondo order to a {@link TriggerOrder}. @public */
|
|
30
|
+
export declare const mapTriggerOrder: (order: OndoOrder, market: MarketDisplay) => TriggerOrder;
|
|
31
|
+
/**
|
|
32
|
+
* Bucket a venue order list into active open/trigger orders (mapped) and
|
|
33
|
+
* terminal order ids. Orders whose market the resolver does not know are
|
|
34
|
+
* skipped.
|
|
35
|
+
* @public
|
|
36
|
+
*/
|
|
37
|
+
export declare const classifyAndMapOrders: (orders: OndoOrder[], resolveMarket: (market: string) => MarketDisplay | undefined) => {
|
|
38
|
+
openOrders: OpenOrder[];
|
|
39
|
+
triggerOrders: TriggerOrder[];
|
|
40
|
+
terminated: string[];
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Map a single venue order onto the rich {@link Order} detail shape.
|
|
44
|
+
* `remainingSize` and `averagePrice` are derived (`size − filledSize`,
|
|
45
|
+
* `filledCost ÷ filledSize`); `updatedAt` is the latest transition timestamp
|
|
46
|
+
* Ondo exposes, falling back to `createdAt`.
|
|
47
|
+
* @public
|
|
48
|
+
*/
|
|
49
|
+
export declare const mapOrderDetail: (order: OndoOrder, market: MarketDisplay) => Order;
|
|
50
|
+
//# sourceMappingURL=mapOrder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapOrder.d.ts","sourceRoot":"","sources":["../../../src/utils/mapOrder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,KAAK,EACL,YAAY,EACb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAEL,WAAW,EACX,SAAS,EAEV,MAAM,mBAAmB,CAAA;AAE1B,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EACf,aAAa,EACd,MAAM,kBAAkB,CAAA;AAOzB,cAAc;AACd,eAAO,MAAM,YAAY,GAAI,MAAM,aAAa,KAAG,SAWlD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,eAAe,KAAG,WAYxD,CAAA;AASD;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,SAAS,KAAG,MAAM,GAAG,SAK3D,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,SAAS,KAAG,OAIhB,CAAA;AAElC,4EAA4E;AAC5E,eAAO,MAAM,QAAQ,GACnB,OAAO,SAAS,EAChB,QAAQ,aAAa,KACpB,SAUD,CAAA;AAEF,0EAA0E;AAC1E,eAAO,MAAM,eAAe,GAC1B,OAAO,SAAS,EAChB,QAAQ,aAAa,KACpB,YAOD,CAAA;AAOF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,SAAS,EAAE,EACnB,eAAe,CAAC,MAAM,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,KAC3D;IACD,UAAU,EAAE,SAAS,EAAE,CAAA;IACvB,aAAa,EAAE,YAAY,EAAE,CAAA;IAC7B,UAAU,EAAE,MAAM,EAAE,CAAA;CAqBrB,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,SAAS,EAChB,QAAQ,aAAa,KACpB,KA+BF,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { MarketDisplay, Position } from '@lifi/perps-types';
|
|
2
|
+
import type { OndoPosition } from '../types/wire.js';
|
|
3
|
+
/**
|
|
4
|
+
* Map a raw Ondo position to the generic Position type. Ondo margin accounts
|
|
5
|
+
* are cross-margined only.
|
|
6
|
+
*
|
|
7
|
+
* @param market - Backend-resolved market identity for `pos.market`.
|
|
8
|
+
* @public
|
|
9
|
+
*/
|
|
10
|
+
export declare const mapPosition: (pos: OndoPosition, market: MarketDisplay) => Position;
|
|
11
|
+
/**
|
|
12
|
+
* Map raw Ondo positions to open {@link Position}s, dropping neutral and
|
|
13
|
+
* zero-quantity rows. Only valid for payloads carrying the full position
|
|
14
|
+
* set — dropping zeros from a partial frame would make closes unobservable.
|
|
15
|
+
*
|
|
16
|
+
* @public
|
|
17
|
+
*/
|
|
18
|
+
export declare const mapOpenPositions: (positions: OndoPosition[], resolveMarket: (market: string) => MarketDisplay) => Position[];
|
|
19
|
+
//# sourceMappingURL=mapPosition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapPosition.d.ts","sourceRoot":"","sources":["../../../src/utils/mapPosition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAGhE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAEpD;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GACtB,KAAK,YAAY,EACjB,QAAQ,aAAa,KACpB,QAWD,CAAA;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,WAAW,YAAY,EAAE,EACzB,eAAe,CAAC,MAAM,EAAE,MAAM,KAAK,aAAa,KAC/C,QAAQ,EAK6C,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { OhlcvInterval } from '@lifi/perps-types';
|
|
2
|
+
/** @public */
|
|
3
|
+
export declare const mapInterval: (interval: string) => string;
|
|
4
|
+
/**
|
|
5
|
+
* Recover the SDK interval from a kline frame's bar span in seconds. Ondo's
|
|
6
|
+
* kline updates carry no resolution field — only the interval start/end —
|
|
7
|
+
* so the span is the only way to route a frame to its subscription.
|
|
8
|
+
* @public
|
|
9
|
+
*/
|
|
10
|
+
export declare const intervalFromBarSpan: (spanSecs: number) => OhlcvInterval | undefined;
|
|
11
|
+
//# sourceMappingURL=ohlcvInterval.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ohlcvInterval.d.ts","sourceRoot":"","sources":["../../../src/utils/ohlcvInterval.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAoCtD,cAAc;AACd,eAAO,MAAM,WAAW,GAAI,UAAU,MAAM,KAAG,MAU9C,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAC9B,UAAU,MAAM,KACf,aAAa,GAAG,SAUlB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ondoAsset.d.ts","sourceRoot":"","sources":["../../../src/utils/ondoAsset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAG9C,cAAc;AACd,eAAO,MAAM,SAAS,GAAI,IAAI,MAAM,EAAE,eAAe,MAAM,KAAG,KAK5D,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ondo order size and price formatting for exchange submission.
|
|
3
|
+
*
|
|
4
|
+
* Ondo's tick and lot grids are exact contract increments (`quoteIncrement` /
|
|
5
|
+
* `baseIncrement`) that need not be powers of ten. When the generic
|
|
6
|
+
* {@link Market} carries the raw increment (`priceIncrement` / `sizeIncrement`)
|
|
7
|
+
* these helpers snap onto that grid; otherwise they fall back to the
|
|
8
|
+
* power-of-ten grid implied by `priceDecimals` / `szDecimals`. Prices round
|
|
9
|
+
* half-up to the nearest tick; sizes truncate toward zero to the lot.
|
|
10
|
+
*/
|
|
11
|
+
import { type Market } from '@lifi/perps-types';
|
|
12
|
+
/**
|
|
13
|
+
* Format a price onto an Ondo market's tick grid: snapped half-up to the
|
|
14
|
+
* nearest `priceIncrement` (or the grid implied by `priceDecimals`), trailing
|
|
15
|
+
* zeros stripped.
|
|
16
|
+
*
|
|
17
|
+
* @throws {PerpsError} `ValidationError` when the market carries neither
|
|
18
|
+
* `priceIncrement` nor `priceDecimals` — without the venue's tick grid no
|
|
19
|
+
* correct price can be produced.
|
|
20
|
+
* @public
|
|
21
|
+
*/
|
|
22
|
+
export declare function formatOrderPrice(market: Market, price: number): string;
|
|
23
|
+
/**
|
|
24
|
+
* Format a size onto an Ondo market's lot grid: truncated toward zero (never
|
|
25
|
+
* rounded up, so the size cannot exceed the user's balance) to the market's
|
|
26
|
+
* `sizeIncrement` (or the grid implied by `szDecimals`), trailing zeros
|
|
27
|
+
* stripped.
|
|
28
|
+
*
|
|
29
|
+
* @param size - Size in base-asset units as a non-negative magnitude.
|
|
30
|
+
* @public
|
|
31
|
+
*/
|
|
32
|
+
export declare function formatOrderSize(market: Market, size: number): string;
|
|
33
|
+
//# sourceMappingURL=orderFormatting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orderFormatting.d.ts","sourceRoot":"","sources":["../../../src/utils/orderFormatting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,KAAK,MAAM,EAAkB,MAAM,mBAAmB,CAAA;AAmB/D;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAOtE;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAUpE"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { type PerpsSDKClient, type ProviderGetQuoteParams, type QuoteListener, type StorageAdapter, WsProviderBase, type WsProviderFactory } from '@lifi/perps-sdk';
|
|
2
|
+
import type { Subscription } from '@lifi/perps-types';
|
|
3
|
+
import type { Address } from 'viem';
|
|
4
|
+
interface SubState {
|
|
5
|
+
/** Subscribe payload minus `op` — re-sent verbatim on every (re)open. */
|
|
6
|
+
frame: {
|
|
7
|
+
channel: string;
|
|
8
|
+
markets?: string[];
|
|
9
|
+
resolution?: string;
|
|
10
|
+
};
|
|
11
|
+
needsAuth: boolean;
|
|
12
|
+
address?: Address;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Options for {@link ondoWsProvider} / {@link OndoWsProvider}.
|
|
16
|
+
*
|
|
17
|
+
* @public
|
|
18
|
+
*/
|
|
19
|
+
export interface OndoWsProviderOptions {
|
|
20
|
+
/**
|
|
21
|
+
* Ondo REST base URL — namespaces the session-token lookup, so it must
|
|
22
|
+
* match the `apiUrl` the SIWE login stored the token under. Defaults to
|
|
23
|
+
* production.
|
|
24
|
+
*/
|
|
25
|
+
apiUrl?: string;
|
|
26
|
+
/** Session-token persistence backend. Defaults to browser `localStorage`. */
|
|
27
|
+
storage?: StorageAdapter;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Ondo realtime WS provider (extends {@link WsProviderBase}): subscribes to
|
|
31
|
+
* Ondo's WS channels (orderbook, trades, candles, market context, orders,
|
|
32
|
+
* fills, positions), logging in with the stored SIWE session JWT for the
|
|
33
|
+
* account channels. Construct via {@link ondoWsProvider}.
|
|
34
|
+
*
|
|
35
|
+
* @public
|
|
36
|
+
*/
|
|
37
|
+
export declare class OndoWsProvider extends WsProviderBase<SubState> {
|
|
38
|
+
private readonly tokenStore;
|
|
39
|
+
private readonly client;
|
|
40
|
+
private readonly registry;
|
|
41
|
+
private readonly apiUrl;
|
|
42
|
+
/**
|
|
43
|
+
* Ref count per shared authenticated wire channel (`positionsPerps`,
|
|
44
|
+
* `fillsPerps`, `ordersPerps`): `positions`/`fills` and the derived
|
|
45
|
+
* `accountSummary` ride the same wire subs, so neither's teardown may
|
|
46
|
+
* unsubscribe one the other still holds.
|
|
47
|
+
*/
|
|
48
|
+
private readonly authWireRefs;
|
|
49
|
+
/**
|
|
50
|
+
* Running account-summary inputs while `accountSummary` is subscribed
|
|
51
|
+
* (`undefined` otherwise). `walletBalance` is REST-seeded and refreshed on
|
|
52
|
+
* fills; `marginUsed`/`unrealizedPnl` track the latest positions frame.
|
|
53
|
+
*/
|
|
54
|
+
private accountSummary;
|
|
55
|
+
/** Complete (mark-price-bearing) contexts, keyed by venue market symbol. */
|
|
56
|
+
private contexts;
|
|
57
|
+
/** Funding seen before the market's first mark price. */
|
|
58
|
+
private pendingFunding;
|
|
59
|
+
/** The single address this connection's login is bound to. */
|
|
60
|
+
private accountAddress;
|
|
61
|
+
private loginPromise;
|
|
62
|
+
constructor(wsUrl?: string, providerKey?: string, options?: OndoWsProviderOptions, client?: PerpsSDKClient);
|
|
63
|
+
subscribeQuote(params: ProviderGetQuoteParams, onQuote: QuoteListener): Promise<() => void>;
|
|
64
|
+
protected toKey(sub: Subscription): string;
|
|
65
|
+
protected openChannel(sub: Subscription): Promise<() => void>;
|
|
66
|
+
/** Register a wire sub, ref-counting the shared authenticated channels. */
|
|
67
|
+
private acquireWire;
|
|
68
|
+
/** Mirror of {@link acquireWire}: drop the wire sub on its last release. */
|
|
69
|
+
private releaseWire;
|
|
70
|
+
protected sendSubscribe(state: SubState): Promise<void>;
|
|
71
|
+
protected onClose(): void;
|
|
72
|
+
/** Wire subs for `sub`, keyed uniquely for the base's replay registry. */
|
|
73
|
+
private resolveChannel;
|
|
74
|
+
/**
|
|
75
|
+
* Send the login op once per connection, before the first authenticated
|
|
76
|
+
* subscribe. Concurrent callers share one in-flight login; a failure
|
|
77
|
+
* clears the guard so a later subscribe (after a fresh SIWE login) retries.
|
|
78
|
+
*/
|
|
79
|
+
private ensureLogin;
|
|
80
|
+
private restClient;
|
|
81
|
+
/**
|
|
82
|
+
* Seed the account-summary inputs from the REST balance so the first emit is
|
|
83
|
+
* complete before any positions frame lands. Throws {@link
|
|
84
|
+
* OndoSessionExpiredError} when the SIWE session is missing, matching the
|
|
85
|
+
* other authenticated channels.
|
|
86
|
+
*/
|
|
87
|
+
private seedAccountSummary;
|
|
88
|
+
/** Re-pull the wallet balance (moved by the fill) and re-emit the summary. */
|
|
89
|
+
private refreshAccountSummaryBalance;
|
|
90
|
+
/**
|
|
91
|
+
* Emit the current account summary. Gross semantics: `walletBalance` is the
|
|
92
|
+
* collateral, the positions carry unrealized PnL, so it counts toward buying
|
|
93
|
+
* power (`availableMargin = walletBalance + unrealizedPnl − marginUsed`).
|
|
94
|
+
*/
|
|
95
|
+
private emitAccountSummary;
|
|
96
|
+
protected handleMessage(raw: string): void;
|
|
97
|
+
private handleBooks;
|
|
98
|
+
private handleTrades;
|
|
99
|
+
private handleKline;
|
|
100
|
+
private handleMarkPrices;
|
|
101
|
+
private handleFundingRates;
|
|
102
|
+
private emitContexts;
|
|
103
|
+
/** Registry-backed market identity, or `undefined` off the tradable list. */
|
|
104
|
+
private resolveMarket;
|
|
105
|
+
private handleOrders;
|
|
106
|
+
private handleFills;
|
|
107
|
+
private handlePositions;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Factory for registering the Ondo WS provider with `PerpsWsClient`:
|
|
111
|
+
* `new PerpsWsClient(client, { wsProviders: { ondo: ondoWsProvider() } })`.
|
|
112
|
+
*
|
|
113
|
+
* Closes over the per-instance options (storage, apiUrl override) so
|
|
114
|
+
* `PerpsWsClient` can call the returned factory with just
|
|
115
|
+
* `({ provider, wsUrl, client })` at subscribe time. `markets` is unused —
|
|
116
|
+
* Ondo advertises a single venue, no sub-DEX filtering.
|
|
117
|
+
*
|
|
118
|
+
* @public
|
|
119
|
+
*/
|
|
120
|
+
export declare const ondoWsProvider: (options?: OndoWsProviderOptions) => WsProviderFactory;
|
|
121
|
+
export {};
|
|
122
|
+
//# sourceMappingURL=OndoWsProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OndoWsProvider.d.ts","sourceRoot":"","sources":["../../../src/websocket/OndoWsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAGlB,KAAK,cAAc,EAEnB,cAAc,EACd,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAGV,YAAY,EACb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAwDnC,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;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,6EAA6E;IAC7E,OAAO,CAAC,EAAE,cAAc,CAAA;CACzB;AAED;;;;;;;GAOG;AACH,qBAAa,cAAe,SAAQ,cAAc,CAAC,QAAQ,CAAC;IAC1D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAE/B;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IAEzD;;;;OAIG;IACH,OAAO,CAAC,cAAc,CAET;IAEb,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAAoC;IACpD,yDAAyD;IACzD,OAAO,CAAC,cAAc,CAGnB;IAEH,8DAA8D;IAC9D,OAAO,CAAC,cAAc,CAAoB;IAC1C,OAAO,CAAC,YAAY,CAA2B;gBAG7C,KAAK,GAAE,MAA4B,EACnC,WAAW,SAAoB,EAC/B,OAAO,GAAE,qBAA0B,EACnC,MAAM,CAAC,EAAE,cAAc;IAmBnB,cAAc,CAClB,MAAM,EAAE,sBAAsB,EAC9B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,IAAI,CAAC;IAkBtB,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM;cAqB1B,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC;IAgDnE,2EAA2E;YAC7D,WAAW;IAsBzB,4EAA4E;IAC5E,OAAO,CAAC,WAAW;cAaH,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;cAO1C,OAAO,IAAI,IAAI;IAMlC,0EAA0E;IAC1E,OAAO,CAAC,cAAc;IAyGtB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,UAAU;IAMlB;;;;;OAKG;YACW,kBAAkB;IAmBhC,8EAA8E;YAChE,4BAA4B;IAiB1C;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAkB1B,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IA+C1C,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,YAAY;IA0BpB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,YAAY;IAgBpB,6EAA6E;IAC7E,OAAO,CAAC,aAAa,CAGpB;IAED,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,eAAe;CA2BxB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,GACxB,UAAU,qBAAqB,KAAG,iBAEmB,CAAA"}
|
package/package.json
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@lifi/perps-sdk-provider-ondo",
|
|
3
|
+
"version": "0.0.0-preview-7ff840c",
|
|
4
|
+
"description": "Ondo Perps provider plugin for @lifi/perps-sdk",
|
|
5
|
+
"homepage": "https://github.com/lifinance/perps-sdk",
|
|
6
|
+
"bugs": {
|
|
7
|
+
"url": "https://github.com/lifinance/perps-sdk/issues"
|
|
8
|
+
},
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "https://github.com/lifinance/perps-sdk.git"
|
|
12
|
+
},
|
|
13
|
+
"license": "Apache-2.0",
|
|
14
|
+
"author": "Aaron Boyd <aaron@li.finance>",
|
|
15
|
+
"type": "module",
|
|
16
|
+
"main": "./dist/cjs/index.js",
|
|
17
|
+
"module": "./dist/esm/index.js",
|
|
18
|
+
"types": "./dist/types/index.d.ts",
|
|
19
|
+
"typings": "./dist/types/index.d.ts",
|
|
20
|
+
"sideEffects": false,
|
|
21
|
+
"exports": {
|
|
22
|
+
".": {
|
|
23
|
+
"types": "./dist/types/index.d.ts",
|
|
24
|
+
"import": "./dist/esm/index.js",
|
|
25
|
+
"default": "./dist/cjs/index.js"
|
|
26
|
+
},
|
|
27
|
+
"./package.json": "./package.json"
|
|
28
|
+
},
|
|
29
|
+
"files": [
|
|
30
|
+
"dist/**",
|
|
31
|
+
"!dist/**/*.tsbuildinfo",
|
|
32
|
+
"src/**/*.ts",
|
|
33
|
+
"!src/**/*.spec.ts",
|
|
34
|
+
"!src/**/*.test.ts",
|
|
35
|
+
"!src/**/*.mock.ts",
|
|
36
|
+
"!src/**/*.handlers.ts",
|
|
37
|
+
"!src/**/*.tsbuildinfo",
|
|
38
|
+
"!**/__mocks__/**",
|
|
39
|
+
"!*.tmp",
|
|
40
|
+
"!*.env",
|
|
41
|
+
"!tsconfig.json"
|
|
42
|
+
],
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"big.js": "^7.0.1",
|
|
45
|
+
"viem": "^2.48.8",
|
|
46
|
+
"@lifi/perps-types": "^0.0.0-preview-7ff840c"
|
|
47
|
+
},
|
|
48
|
+
"peerDependencies": {
|
|
49
|
+
"@lifi/perps-sdk": "^0.0.0-preview-7ff840c"
|
|
50
|
+
},
|
|
51
|
+
"publishConfig": {
|
|
52
|
+
"access": "public"
|
|
53
|
+
},
|
|
54
|
+
"keywords": [
|
|
55
|
+
"perps",
|
|
56
|
+
"perpetuals",
|
|
57
|
+
"trading",
|
|
58
|
+
"defi",
|
|
59
|
+
"lifi",
|
|
60
|
+
"sdk",
|
|
61
|
+
"viem",
|
|
62
|
+
"ondo"
|
|
63
|
+
]
|
|
64
|
+
}
|