@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,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.projectOndoConfigSettings = projectOndoConfigSettings;
|
|
4
|
+
const perps_sdk_1 = require("@lifi/perps-sdk");
|
|
5
|
+
const perps_types_1 = require("@lifi/perps-types");
|
|
6
|
+
function assertNever(value) {
|
|
7
|
+
throw new Error(`Unreachable: exhaustiveness check failed for value ${JSON.stringify(value)}`);
|
|
8
|
+
}
|
|
9
|
+
function projectOndoDescriptor(descriptor, config) {
|
|
10
|
+
switch (descriptor.type) {
|
|
11
|
+
case perps_types_1.ActionType.SIWE_LOGIN:
|
|
12
|
+
return {
|
|
13
|
+
type: descriptor.type,
|
|
14
|
+
values: [
|
|
15
|
+
{ name: 'authTokenExpiry', value: config.authTokenExpiry ?? null },
|
|
16
|
+
],
|
|
17
|
+
satisfied: config.loggedIn,
|
|
18
|
+
};
|
|
19
|
+
case perps_types_1.ActionType.SET_REFERRAL:
|
|
20
|
+
return {
|
|
21
|
+
type: descriptor.type,
|
|
22
|
+
values: [],
|
|
23
|
+
satisfied: config.referralSet,
|
|
24
|
+
};
|
|
25
|
+
case perps_types_1.ActionType.APPROVE_AGENT:
|
|
26
|
+
case perps_types_1.ActionType.APPROVE_BUILDER_FEE:
|
|
27
|
+
case perps_types_1.ActionType.APPROVE_INTEGRATOR:
|
|
28
|
+
case perps_types_1.ActionType.ACCOUNT_MODE:
|
|
29
|
+
case perps_types_1.ActionType.ACCOUNT_TYPE:
|
|
30
|
+
case perps_types_1.ActionType.SEND_ASSET:
|
|
31
|
+
case perps_types_1.ActionType.WITHDRAWAL:
|
|
32
|
+
case perps_types_1.ActionType.TRANSFER:
|
|
33
|
+
case perps_types_1.ActionType.PLACE_ORDER:
|
|
34
|
+
case perps_types_1.ActionType.PLACE_TRIGGER_ORDER:
|
|
35
|
+
case perps_types_1.ActionType.CANCEL_ORDER:
|
|
36
|
+
case perps_types_1.ActionType.CANCEL_ALL_ORDERS:
|
|
37
|
+
case perps_types_1.ActionType.MODIFY_ORDER:
|
|
38
|
+
case perps_types_1.ActionType.UPDATE_LEVERAGE:
|
|
39
|
+
case perps_types_1.ActionType.UPDATE_POSITION_MARGIN:
|
|
40
|
+
case perps_types_1.ActionType.UPDATE_ASSET_COLLATERAL:
|
|
41
|
+
case perps_types_1.ActionType.REGISTER_API_KEY:
|
|
42
|
+
case perps_types_1.ActionType.APPROVE_READ_ONLY_TOKEN:
|
|
43
|
+
case perps_types_1.ActionType.DEPOSIT:
|
|
44
|
+
case perps_types_1.ActionType.META_VOTE:
|
|
45
|
+
case perps_types_1.ActionType.META_ACCEPT_TERMS:
|
|
46
|
+
throw new perps_sdk_1.PerpsError(perps_types_1.PerpsErrorCode.SDKError, `Ondo account-config mapper has no projection for descriptor type ` +
|
|
47
|
+
`'${descriptor.type}' — this ActionType is not valid on ` +
|
|
48
|
+
`Provider.setup / Provider.options for Ondo.`);
|
|
49
|
+
default:
|
|
50
|
+
return assertNever(descriptor.type);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function projectOndoConfigSettings(config, setup, options) {
|
|
54
|
+
if (config.provider !== 'ondo') {
|
|
55
|
+
throw new perps_sdk_1.PerpsError(perps_types_1.PerpsErrorCode.SDKError, `Ondo account-config mapper received a '${config.provider}' config.`);
|
|
56
|
+
}
|
|
57
|
+
return [...setup, ...options].map((descriptor) => projectOndoDescriptor(descriptor, config));
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=accountConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accountConfig.js","sourceRoot":"","sources":["../../src/accountConfig.ts"],"names":[],"mappings":";;AA0FA,8DAcC;AAxGD,+CAA4C;AAO5C,mDAA8D;AAE9D,SAAS,WAAW,CAAC,KAAY;IAC/B,MAAM,IAAI,KAAK,CACb,sDAAsD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAC9E,CAAA;AACH,CAAC;AAaD,SAAS,qBAAqB,CAC5B,UAA0B,EAC1B,MAAyB;IAEzB,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;QACxB,KAAK,wBAAU,CAAC,UAAU;YACxB,OAAO;gBACL,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,MAAM,EAAE;oBACN,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,CAAC,eAAe,IAAI,IAAI,EAAE;iBACnE;gBACD,SAAS,EAAE,MAAM,CAAC,QAAQ;aAC3B,CAAA;QAEH,KAAK,wBAAU,CAAC,YAAY;YAC1B,OAAO;gBACL,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,MAAM,EAAE,EAAE;gBACV,SAAS,EAAE,MAAM,CAAC,WAAW;aAC9B,CAAA;QAEH,KAAK,wBAAU,CAAC,aAAa,CAAC;QAC9B,KAAK,wBAAU,CAAC,mBAAmB,CAAC;QACpC,KAAK,wBAAU,CAAC,kBAAkB,CAAC;QACnC,KAAK,wBAAU,CAAC,YAAY,CAAC;QAC7B,KAAK,wBAAU,CAAC,YAAY,CAAC;QAC7B,KAAK,wBAAU,CAAC,UAAU,CAAC;QAC3B,KAAK,wBAAU,CAAC,UAAU,CAAC;QAC3B,KAAK,wBAAU,CAAC,QAAQ,CAAC;QACzB,KAAK,wBAAU,CAAC,WAAW,CAAC;QAC5B,KAAK,wBAAU,CAAC,mBAAmB,CAAC;QACpC,KAAK,wBAAU,CAAC,YAAY,CAAC;QAC7B,KAAK,wBAAU,CAAC,iBAAiB,CAAC;QAClC,KAAK,wBAAU,CAAC,YAAY,CAAC;QAC7B,KAAK,wBAAU,CAAC,eAAe,CAAC;QAChC,KAAK,wBAAU,CAAC,sBAAsB,CAAC;QACvC,KAAK,wBAAU,CAAC,uBAAuB,CAAC;QACxC,KAAK,wBAAU,CAAC,gBAAgB,CAAC;QACjC,KAAK,wBAAU,CAAC,uBAAuB,CAAC;QACxC,KAAK,wBAAU,CAAC,OAAO,CAAC;QACxB,KAAK,wBAAU,CAAC,SAAS,CAAC;QAC1B,KAAK,wBAAU,CAAC,iBAAiB;YAC/B,MAAM,IAAI,sBAAU,CAClB,4BAAc,CAAC,QAAQ,EACvB,mEAAmE;gBACjE,IAAI,UAAU,CAAC,IAAI,sCAAsC;gBACzD,6CAA6C,CAChD,CAAA;QAEH;YACE,OAAO,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IACvC,CAAC;AACH,CAAC;AAYD,SAAgB,yBAAyB,CACvC,MAAqB,EACrB,KAAuB,EACvB,OAAyB;IAEzB,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC/B,MAAM,IAAI,sBAAU,CAClB,4BAAc,CAAC,QAAQ,EACvB,0CAA0C,MAAM,CAAC,QAAQ,WAAW,CACrE,CAAA;IACH,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAC/C,qBAAqB,CAAC,UAAU,EAAE,MAAM,CAAC,CAC1C,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accountSummary.d.ts","sourceRoot":"","sources":["../../src/accountSummary.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,QAAQ,EACT,MAAM,mBAAmB,CAAA;AAW1B,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,QAAQ,EAAE,GACpB,cAAc,CAEhB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getAccountSummary = getAccountSummary;
|
|
4
|
+
const perps_sdk_1 = require("@lifi/perps-sdk");
|
|
5
|
+
function getAccountSummary(account, positions) {
|
|
6
|
+
return (0, perps_sdk_1.summarizeAccount)(account, positions, 'gross');
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=accountSummary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accountSummary.js","sourceRoot":"","sources":["../../src/accountSummary.ts"],"names":[],"mappings":";;AAgBA,8CAKC;AArBD,+CAAkD;AAgBlD,SAAgB,iBAAiB,CAC/B,OAAwB,EACxB,SAAqB;IAErB,OAAO,IAAA,4BAAgB,EAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;AACtD,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type StorageAdapter } from '@lifi/perps-sdk';
|
|
2
|
+
import type { Address } from 'viem';
|
|
3
|
+
import type { OndoAuthToken } from '../types/auth.js';
|
|
4
|
+
export declare class OndoTokenStore {
|
|
5
|
+
private readonly storage;
|
|
6
|
+
private readonly host;
|
|
7
|
+
constructor(storage: StorageAdapter, baseUrl: string);
|
|
8
|
+
private storageKey;
|
|
9
|
+
get(address: Address): Promise<OndoAuthToken | null>;
|
|
10
|
+
set(address: Address, token: OndoAuthToken): Promise<void>;
|
|
11
|
+
remove(address: Address): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=OndoTokenStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OndoTokenStore.d.ts","sourceRoot":"","sources":["../../../src/auth/OndoTokenStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AA6CrD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;gBAEjB,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM;IAKpD,OAAO,CAAC,UAAU;IAMZ,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAapD,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAG9C"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OndoTokenStore = void 0;
|
|
4
|
+
const perps_sdk_1 = require("@lifi/perps-sdk");
|
|
5
|
+
const STORAGE_PREFIX = 'lifi-perps-ondo-session';
|
|
6
|
+
const isOnAuthToken = (value) => {
|
|
7
|
+
if (typeof value !== 'object' || value === null) {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
const { identifier, authType, accountId, issuedAtSecs, expirationSecs, token, newAccount, } = value;
|
|
11
|
+
return (typeof identifier === 'string' &&
|
|
12
|
+
typeof authType === 'string' &&
|
|
13
|
+
typeof accountId === 'string' &&
|
|
14
|
+
typeof issuedAtSecs === 'number' &&
|
|
15
|
+
Number.isFinite(issuedAtSecs) &&
|
|
16
|
+
typeof expirationSecs === 'number' &&
|
|
17
|
+
Number.isFinite(expirationSecs) &&
|
|
18
|
+
typeof token === 'string' &&
|
|
19
|
+
token.length > 0 &&
|
|
20
|
+
typeof newAccount === 'boolean');
|
|
21
|
+
};
|
|
22
|
+
const isExpired = (token) => token.expirationSecs * 1000 <= Date.now();
|
|
23
|
+
class OndoTokenStore {
|
|
24
|
+
storage;
|
|
25
|
+
host;
|
|
26
|
+
constructor(storage, baseUrl) {
|
|
27
|
+
this.storage = storage;
|
|
28
|
+
this.host = new URL(baseUrl).host;
|
|
29
|
+
}
|
|
30
|
+
storageKey(address) {
|
|
31
|
+
return `${STORAGE_PREFIX}:${this.host}:${address.toLowerCase()}`;
|
|
32
|
+
}
|
|
33
|
+
async get(address) {
|
|
34
|
+
const key = this.storageKey(address);
|
|
35
|
+
const parsed = await (0, perps_sdk_1.readValidatedRecord)(this.storage, key, isOnAuthToken);
|
|
36
|
+
if (!parsed) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
if (isExpired(parsed)) {
|
|
40
|
+
await this.remove(address);
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
return parsed;
|
|
44
|
+
}
|
|
45
|
+
async set(address, token) {
|
|
46
|
+
await this.storage.set(this.storageKey(address), JSON.stringify(token));
|
|
47
|
+
}
|
|
48
|
+
async remove(address) {
|
|
49
|
+
await this.storage.remove(this.storageKey(address));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.OndoTokenStore = OndoTokenStore;
|
|
53
|
+
//# sourceMappingURL=OndoTokenStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OndoTokenStore.js","sourceRoot":"","sources":["../../../src/auth/OndoTokenStore.ts"],"names":[],"mappings":";;;AAAA,+CAA0E;AAQ1E,MAAM,cAAc,GAAG,yBAAyB,CAAA;AAEhD,MAAM,aAAa,GAAG,CAAC,KAAc,EAA0B,EAAE;IAC/D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,EACJ,UAAU,EACV,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,cAAc,EACd,KAAK,EACL,UAAU,GACX,GAAG,KAAgC,CAAA;IACpC,OAAO,CACL,OAAO,UAAU,KAAK,QAAQ;QAC9B,OAAO,QAAQ,KAAK,QAAQ;QAC5B,OAAO,SAAS,KAAK,QAAQ;QAC7B,OAAO,YAAY,KAAK,QAAQ;QAChC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC7B,OAAO,cAAc,KAAK,QAAQ;QAClC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC/B,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,CAAC,MAAM,GAAG,CAAC;QAChB,OAAO,UAAU,KAAK,SAAS,CAChC,CAAA;AACH,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,CAAC,KAAoB,EAAW,EAAE,CAClD,KAAK,CAAC,cAAc,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAA;AAS3C,MAAa,cAAc;IACR,OAAO,CAAgB;IACvB,IAAI,CAAQ;IAE7B,YAAY,OAAuB,EAAE,OAAe;QAClD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAA;IACnC,CAAC;IAEO,UAAU,CAAC,OAAgB;QACjC,OAAO,GAAG,cAAc,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE,CAAA;IAClE,CAAC;IAID,KAAK,CAAC,GAAG,CAAC,OAAgB;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QACpC,MAAM,MAAM,GAAG,MAAM,IAAA,+BAAmB,EAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,aAAa,CAAC,CAAA;QAC1E,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAA;QACb,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YAC1B,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAgB,EAAE,KAAoB;QAC9C,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;IACzE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAgB;QAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAA;IACrD,CAAC;CACF;AAnCD,wCAmCC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { PerpsClientSigner } from '@lifi/perps-sdk';
|
|
2
|
+
import type { Hex } from 'viem';
|
|
3
|
+
import type { OndoAuthToken } from '../types/auth.js';
|
|
4
|
+
import type { OndoApiClient } from '../utils/apiClient.js';
|
|
5
|
+
export interface OndoSiweChallenge {
|
|
6
|
+
id: string;
|
|
7
|
+
message: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function completeSiweLogin(client: OndoApiClient, signer: PerpsClientSigner, challenge: OndoSiweChallenge): Promise<{
|
|
10
|
+
token: OndoAuthToken;
|
|
11
|
+
signature: Hex;
|
|
12
|
+
}>;
|
|
13
|
+
//# sourceMappingURL=completeSiweLogin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completeSiweLogin.d.ts","sourceRoot":"","sources":["../../../src/auth/completeSiweLogin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAO1D,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IAEV,OAAO,EAAE,MAAM,CAAA;CAChB;AAWD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,GAAG,CAAA;CAAE,CAAC,CAanD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.completeSiweLogin = completeSiweLogin;
|
|
4
|
+
async function completeSiweLogin(client, signer, challenge) {
|
|
5
|
+
const signature = await signer.signMessage({
|
|
6
|
+
account: signer.account,
|
|
7
|
+
message: challenge.message,
|
|
8
|
+
});
|
|
9
|
+
const token = await client.post('/v1/auth/erc-4361/login/complete_challenge', {
|
|
10
|
+
id: challenge.id,
|
|
11
|
+
signature,
|
|
12
|
+
});
|
|
13
|
+
return { token, signature };
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=completeSiweLogin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completeSiweLogin.js","sourceRoot":"","sources":["../../../src/auth/completeSiweLogin.ts"],"names":[],"mappings":";;AAyBA,8CAiBC;AAjBM,KAAK,UAAU,iBAAiB,CACrC,MAAqB,EACrB,MAAyB,EACzB,SAA4B;IAE5B,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC;QACzC,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,SAAS,CAAC,OAAO;KAC3B,CAAC,CAAA;IACF,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,IAAI,CAC7B,4CAA4C,EAC5C;QACE,EAAE,EAAE,SAAS,CAAC,EAAE;QAChB,SAAS;KACV,CACF,CAAA;IACD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;AAC7B,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { completeSiweLogin, type OndoSiweChallenge, } from './completeSiweLogin.js';
|
|
2
|
+
export { OndoTokenStore } from './OndoTokenStore.js';
|
|
3
|
+
export { executeOndoRestCallActions, type OndoSignActionsDeps, ondoSignActions, } from './signActions.js';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/auth/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,iBAAiB,EACjB,KAAK,iBAAiB,GACvB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EACL,0BAA0B,EAC1B,KAAK,mBAAmB,EACxB,eAAe,GAChB,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ondoSignActions = exports.executeOndoRestCallActions = exports.OndoTokenStore = exports.completeSiweLogin = void 0;
|
|
4
|
+
var completeSiweLogin_js_1 = require("./completeSiweLogin.js");
|
|
5
|
+
Object.defineProperty(exports, "completeSiweLogin", { enumerable: true, get: function () { return completeSiweLogin_js_1.completeSiweLogin; } });
|
|
6
|
+
var OndoTokenStore_js_1 = require("./OndoTokenStore.js");
|
|
7
|
+
Object.defineProperty(exports, "OndoTokenStore", { enumerable: true, get: function () { return OndoTokenStore_js_1.OndoTokenStore; } });
|
|
8
|
+
var signActions_js_1 = require("./signActions.js");
|
|
9
|
+
Object.defineProperty(exports, "executeOndoRestCallActions", { enumerable: true, get: function () { return signActions_js_1.executeOndoRestCallActions; } });
|
|
10
|
+
Object.defineProperty(exports, "ondoSignActions", { enumerable: true, get: function () { return signActions_js_1.ondoSignActions; } });
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/index.ts"],"names":[],"mappings":";;;AAEA,+DAG+B;AAF7B,yHAAA,iBAAiB,OAAA;AAGnB,yDAAoD;AAA3C,mHAAA,cAAc,OAAA;AACvB,mDAIyB;AAHvB,4HAAA,0BAA0B,OAAA;AAE1B,iHAAA,eAAe,OAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type SignActionsContext } from '@lifi/perps-sdk';
|
|
2
|
+
import type { ActionResult, ActionStep, RestCallSignedActionStep, SignedActionStep } from '@lifi/perps-types';
|
|
3
|
+
import { SigningMethod } from '@lifi/perps-types';
|
|
4
|
+
import type { Address } from 'viem';
|
|
5
|
+
import { type OndoApiClient } from '../utils/apiClient.js';
|
|
6
|
+
import type { OndoTokenStore } from './OndoTokenStore.js';
|
|
7
|
+
export interface OndoSignActionsDeps {
|
|
8
|
+
client: OndoApiClient;
|
|
9
|
+
tokenStore: OndoTokenStore;
|
|
10
|
+
}
|
|
11
|
+
export declare function ondoSignActions(deps: OndoSignActionsDeps, method: SigningMethod, steps: ActionStep[], address: Address, ctx?: SignActionsContext): Promise<SignedActionStep[]>;
|
|
12
|
+
export declare function executeOndoRestCallActions(client: OndoApiClient, steps: RestCallSignedActionStep[]): Promise<ActionResult[]>;
|
|
13
|
+
//# sourceMappingURL=signActions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signActions.d.ts","sourceRoot":"","sources":["../../../src/auth/signActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,wBAAwB,EACxB,gBAAgB,EAEjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAkB,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,EACL,KAAK,aAAa,EAGnB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAGzD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,aAAa,CAAA;IACrB,UAAU,EAAE,cAAc,CAAA;CAC3B;AAqBD,wBAAsB,eAAe,CACnC,IAAI,EAAE,mBAAmB,EACzB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,UAAU,EAAE,EACnB,OAAO,EAAE,OAAO,EAChB,GAAG,CAAC,EAAE,kBAAkB,GACvB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA0D7B;AAUD,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,wBAAwB,EAAE,GAChC,OAAO,CAAC,YAAY,EAAE,CAAC,CAuCzB"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ondoSignActions = ondoSignActions;
|
|
4
|
+
exports.executeOndoRestCallActions = executeOndoRestCallActions;
|
|
5
|
+
const perps_sdk_1 = require("@lifi/perps-sdk");
|
|
6
|
+
const perps_types_1 = require("@lifi/perps-types");
|
|
7
|
+
const apiClient_js_1 = require("../utils/apiClient.js");
|
|
8
|
+
const completeSiweLogin_js_1 = require("./completeSiweLogin.js");
|
|
9
|
+
const isSiweStep = (step) => 'siwe' in step;
|
|
10
|
+
const hasRequest = (step) => 'request' in step;
|
|
11
|
+
async function ondoSignActions(deps, method, steps, address, ctx) {
|
|
12
|
+
switch (method) {
|
|
13
|
+
case perps_types_1.SigningMethod.SIWE: {
|
|
14
|
+
const userWallet = ctx?.userWallet;
|
|
15
|
+
if (userWallet === undefined) {
|
|
16
|
+
throw new perps_sdk_1.PerpsError(perps_types_1.PerpsErrorCode.SDKError, 'Ondo SIWE login requires the user wallet. Pass `userWallet` when ' +
|
|
17
|
+
'creating the perps client.');
|
|
18
|
+
}
|
|
19
|
+
const signed = [];
|
|
20
|
+
for (const step of steps) {
|
|
21
|
+
if (!isSiweStep(step)) {
|
|
22
|
+
throw new perps_sdk_1.PerpsError(perps_types_1.PerpsErrorCode.SDKError, `Ondo received a non-SIWE step ('${step.action}') under the SIWE signing method.`);
|
|
23
|
+
}
|
|
24
|
+
const { token, signature } = await (0, completeSiweLogin_js_1.completeSiweLogin)(deps.client, userWallet, { id: step.siwe.challengeId, message: step.siwe.message });
|
|
25
|
+
await deps.tokenStore.set(address, token);
|
|
26
|
+
signed.push({ action: step.action, siwe: step.siwe, signature });
|
|
27
|
+
}
|
|
28
|
+
return signed;
|
|
29
|
+
}
|
|
30
|
+
case perps_types_1.SigningMethod.AUTH_TOKEN: {
|
|
31
|
+
const token = await deps.tokenStore.get(address);
|
|
32
|
+
if (token === null) {
|
|
33
|
+
throw new apiClient_js_1.OndoSessionExpiredError(`No valid Ondo session token stored for ${address}. Run the SIWE login first.`);
|
|
34
|
+
}
|
|
35
|
+
return steps.map((step) => {
|
|
36
|
+
if (!hasRequest(step)) {
|
|
37
|
+
throw new perps_sdk_1.PerpsError(perps_types_1.PerpsErrorCode.SDKError, `Ondo received a non-REST step ('${step.action}') under the AUTH_TOKEN signing method.`);
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
action: step.action,
|
|
41
|
+
request: step.request,
|
|
42
|
+
headers: { Authorization: `Bearer ${token.token}` },
|
|
43
|
+
};
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
default:
|
|
47
|
+
throw new perps_sdk_1.PerpsError(perps_types_1.PerpsErrorCode.SDKError, `Ondo does not sign via '${method}'. Supported methods: siwe, authToken.`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async function executeOndoRestCallActions(client, steps) {
|
|
51
|
+
const results = [];
|
|
52
|
+
let failed = false;
|
|
53
|
+
for (const step of steps) {
|
|
54
|
+
if (failed) {
|
|
55
|
+
results.push({
|
|
56
|
+
action: step.action,
|
|
57
|
+
success: false,
|
|
58
|
+
error: 'Skipped: a preceding step in the batch failed.',
|
|
59
|
+
});
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
const result = await client.send(step.request.method, step.request.path, { body: step.request.body, headers: step.headers });
|
|
64
|
+
const orderId = typeof result === 'object' &&
|
|
65
|
+
result !== null &&
|
|
66
|
+
typeof result.orderId === 'string'
|
|
67
|
+
? result.orderId
|
|
68
|
+
: undefined;
|
|
69
|
+
results.push({
|
|
70
|
+
action: step.action,
|
|
71
|
+
success: true,
|
|
72
|
+
...(orderId === undefined ? {} : { orderId }),
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
failed = true;
|
|
77
|
+
results.push({
|
|
78
|
+
action: step.action,
|
|
79
|
+
success: false,
|
|
80
|
+
error: err instanceof Error ? err.message : String(err),
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return results;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=signActions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signActions.js","sourceRoot":"","sources":["../../../src/auth/signActions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const ONDO_PROVIDER_KEY = "ondo";
|
|
2
|
+
export declare const DEFAULT_ONDO_API_URL = "https://api.ondoperps.xyz";
|
|
3
|
+
export declare const ONDO_SANDBOX_API_URL = "https://api.ondoperps-sandbox.xyz";
|
|
4
|
+
export declare const DEFAULT_ONDO_WS_URL = "wss://api.ondoperps.xyz/ws";
|
|
5
|
+
export declare const ONDO_BASE_FEE_TIER: {
|
|
6
|
+
maker: string;
|
|
7
|
+
taker: string;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,iBAAiB,SAAS,CAAA;AAOvC,eAAO,MAAM,oBAAoB,8BAA8B,CAAA;AAO/D,eAAO,MAAM,oBAAoB,sCAAsC,CAAA;AAOvE,eAAO,MAAM,mBAAmB,+BAA+B,CAAA;AAQ/D,eAAO,MAAM,kBAAkB;;;CAG9B,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ONDO_BASE_FEE_TIER = exports.DEFAULT_ONDO_WS_URL = exports.ONDO_SANDBOX_API_URL = exports.DEFAULT_ONDO_API_URL = exports.ONDO_PROVIDER_KEY = void 0;
|
|
4
|
+
exports.ONDO_PROVIDER_KEY = 'ondo';
|
|
5
|
+
exports.DEFAULT_ONDO_API_URL = 'https://api.ondoperps.xyz';
|
|
6
|
+
exports.ONDO_SANDBOX_API_URL = 'https://api.ondoperps-sandbox.xyz';
|
|
7
|
+
exports.DEFAULT_ONDO_WS_URL = 'wss://api.ondoperps.xyz/ws';
|
|
8
|
+
exports.ONDO_BASE_FEE_TIER = {
|
|
9
|
+
maker: '0.0002',
|
|
10
|
+
taker: '0.0005',
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";;;AAKa,QAAA,iBAAiB,GAAG,MAAM,CAAA;AAO1B,QAAA,oBAAoB,GAAG,2BAA2B,CAAA;AAOlD,QAAA,oBAAoB,GAAG,mCAAmC,CAAA;AAO1D,QAAA,mBAAmB,GAAG,4BAA4B,CAAA;AAQlD,QAAA,kBAAkB,GAAG;IAChC,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;CAChB,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { projectOndoConfigSettings } from './accountConfig.js';
|
|
2
|
+
export { getAccountSummary } from './accountSummary.js';
|
|
3
|
+
export * from './auth/index.js';
|
|
4
|
+
export { DEFAULT_ONDO_API_URL, DEFAULT_ONDO_WS_URL, ONDO_BASE_FEE_TIER, ONDO_PROVIDER_KEY, ONDO_SANDBOX_API_URL, } from './constants.js';
|
|
5
|
+
export { Ondo, type OndoProviderOptions, ondoProvider, } from './OndoProvider.js';
|
|
6
|
+
export * from './types/index.js';
|
|
7
|
+
export * from './utils/index.js';
|
|
8
|
+
export { OndoWsProvider, type OndoWsProviderOptions, ondoWsProvider, } from './websocket/OndoWsProvider.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,IAAI,EACJ,KAAK,mBAAmB,EACxB,YAAY,GACb,MAAM,mBAAmB,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,OAAO,EACL,cAAc,EACd,KAAK,qBAAqB,EAC1B,cAAc,GACf,MAAM,+BAA+B,CAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.ondoWsProvider = exports.OndoWsProvider = exports.ondoProvider = exports.Ondo = exports.ONDO_SANDBOX_API_URL = exports.ONDO_PROVIDER_KEY = exports.ONDO_BASE_FEE_TIER = exports.DEFAULT_ONDO_WS_URL = exports.DEFAULT_ONDO_API_URL = exports.getAccountSummary = exports.projectOndoConfigSettings = void 0;
|
|
18
|
+
var accountConfig_js_1 = require("./accountConfig.js");
|
|
19
|
+
Object.defineProperty(exports, "projectOndoConfigSettings", { enumerable: true, get: function () { return accountConfig_js_1.projectOndoConfigSettings; } });
|
|
20
|
+
var accountSummary_js_1 = require("./accountSummary.js");
|
|
21
|
+
Object.defineProperty(exports, "getAccountSummary", { enumerable: true, get: function () { return accountSummary_js_1.getAccountSummary; } });
|
|
22
|
+
__exportStar(require("./auth/index.js"), exports);
|
|
23
|
+
var constants_js_1 = require("./constants.js");
|
|
24
|
+
Object.defineProperty(exports, "DEFAULT_ONDO_API_URL", { enumerable: true, get: function () { return constants_js_1.DEFAULT_ONDO_API_URL; } });
|
|
25
|
+
Object.defineProperty(exports, "DEFAULT_ONDO_WS_URL", { enumerable: true, get: function () { return constants_js_1.DEFAULT_ONDO_WS_URL; } });
|
|
26
|
+
Object.defineProperty(exports, "ONDO_BASE_FEE_TIER", { enumerable: true, get: function () { return constants_js_1.ONDO_BASE_FEE_TIER; } });
|
|
27
|
+
Object.defineProperty(exports, "ONDO_PROVIDER_KEY", { enumerable: true, get: function () { return constants_js_1.ONDO_PROVIDER_KEY; } });
|
|
28
|
+
Object.defineProperty(exports, "ONDO_SANDBOX_API_URL", { enumerable: true, get: function () { return constants_js_1.ONDO_SANDBOX_API_URL; } });
|
|
29
|
+
var OndoProvider_js_1 = require("./OndoProvider.js");
|
|
30
|
+
Object.defineProperty(exports, "Ondo", { enumerable: true, get: function () { return OndoProvider_js_1.Ondo; } });
|
|
31
|
+
Object.defineProperty(exports, "ondoProvider", { enumerable: true, get: function () { return OndoProvider_js_1.ondoProvider; } });
|
|
32
|
+
__exportStar(require("./types/index.js"), exports);
|
|
33
|
+
__exportStar(require("./utils/index.js"), exports);
|
|
34
|
+
var OndoWsProvider_js_1 = require("./websocket/OndoWsProvider.js");
|
|
35
|
+
Object.defineProperty(exports, "OndoWsProvider", { enumerable: true, get: function () { return OndoWsProvider_js_1.OndoWsProvider; } });
|
|
36
|
+
Object.defineProperty(exports, "ondoWsProvider", { enumerable: true, get: function () { return OndoWsProvider_js_1.ondoWsProvider; } });
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAcA,uDAA8D;AAArD,6HAAA,yBAAyB,OAAA;AAClC,yDAAuD;AAA9C,sHAAA,iBAAiB,OAAA;AAC1B,kDAA+B;AAC/B,+CAMuB;AALrB,oHAAA,oBAAoB,OAAA;AACpB,mHAAA,mBAAmB,OAAA;AACnB,kHAAA,kBAAkB,OAAA;AAClB,iHAAA,iBAAiB,OAAA;AACjB,oHAAA,oBAAoB,OAAA;AAEtB,qDAI0B;AAHxB,uGAAA,IAAI,OAAA;AAEJ,+GAAA,YAAY,OAAA;AAEd,mDAAgC;AAChC,mDAAgC;AAChC,mEAIsC;AAHpC,mHAAA,cAAc,OAAA;AAEd,mHAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"commonjs"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface OndoGenericResponse<T> {
|
|
2
|
+
success: boolean;
|
|
3
|
+
error?: string;
|
|
4
|
+
error_code?: string;
|
|
5
|
+
result?: T;
|
|
6
|
+
}
|
|
7
|
+
export interface OndoAuthToken {
|
|
8
|
+
identifier: string;
|
|
9
|
+
authType: string;
|
|
10
|
+
accountId: string;
|
|
11
|
+
issuedAtSecs: number;
|
|
12
|
+
expirationSecs: number;
|
|
13
|
+
token: string;
|
|
14
|
+
newAccount: boolean;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/types/auth.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,CAAC,CAAA;CACX;AAQD,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IAEjB,YAAY,EAAE,MAAM,CAAA;IAEpB,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IAEb,UAAU,EAAE,OAAO,CAAA;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/types/auth.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AACnE,mBAAmB,WAAW,CAAA;AAC9B,mBAAmB,SAAS,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":""}
|