@lifi/perps-sdk-provider-ondo 2.1.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/OndoProvider.d.ts.map +1 -1
- package/dist/cjs/OndoProvider.js +33 -3
- package/dist/cjs/OndoProvider.js.map +1 -1
- package/dist/cjs/accountConfig.d.ts.map +1 -1
- package/dist/cjs/accountConfig.js +6 -0
- package/dist/cjs/accountConfig.js.map +1 -1
- package/dist/cjs/auth/signActions.d.ts.map +1 -1
- package/dist/cjs/auth/signActions.js +14 -0
- package/dist/cjs/auth/signActions.js.map +1 -1
- package/dist/cjs/utils/depositAddress.d.ts +25 -0
- package/dist/cjs/utils/depositAddress.d.ts.map +1 -0
- package/dist/cjs/utils/depositAddress.js +84 -0
- package/dist/cjs/utils/depositAddress.js.map +1 -0
- package/dist/cjs/utils/index.d.ts +1 -0
- package/dist/cjs/utils/index.d.ts.map +1 -1
- package/dist/cjs/utils/index.js +6 -1
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/esm/OndoProvider.d.ts.map +1 -1
- package/dist/esm/OndoProvider.js +38 -5
- package/dist/esm/OndoProvider.js.map +1 -1
- package/dist/esm/accountConfig.d.ts.map +1 -1
- package/dist/esm/accountConfig.js +8 -1
- package/dist/esm/accountConfig.js.map +1 -1
- package/dist/esm/auth/signActions.d.ts.map +1 -1
- package/dist/esm/auth/signActions.js +16 -0
- package/dist/esm/auth/signActions.js.map +1 -1
- package/dist/esm/utils/depositAddress.d.ts +39 -0
- package/dist/esm/utils/depositAddress.d.ts.map +1 -0
- package/dist/esm/utils/depositAddress.js +90 -0
- package/dist/esm/utils/depositAddress.js.map +1 -0
- package/dist/esm/utils/index.d.ts +1 -0
- package/dist/esm/utils/index.d.ts.map +1 -1
- package/dist/esm/utils/index.js +1 -0
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/types/OndoProvider.d.ts.map +1 -1
- package/dist/types/accountConfig.d.ts.map +1 -1
- package/dist/types/auth/signActions.d.ts.map +1 -1
- package/dist/types/utils/depositAddress.d.ts +39 -0
- package/dist/types/utils/depositAddress.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +1 -0
- package/dist/types/utils/index.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/OndoProvider.ts +71 -23
- package/src/accountConfig.ts +10 -1
- package/src/auth/signActions.ts +28 -0
- package/src/utils/depositAddress.ts +128 -0
- package/src/utils/index.ts +8 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accountConfig.js","sourceRoot":"","sources":["../../src/accountConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAO5C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAE9D,SAAS,WAAW,CAAC,KAAY;IAC/B,MAAM,IAAI,KAAK,CACb,sDAAsD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAC9E,CAAA;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"accountConfig.js","sourceRoot":"","sources":["../../src/accountConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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,UAAU,EAIV,gBAAgB,EAEjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAA8B,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AASnC,OAAO,EACL,KAAK,aAAa,EAGnB,MAAM,uBAAuB,CAAA;
|
|
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,UAAU,EAIV,gBAAgB,EAEjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAA8B,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AASnC,OAAO,EACL,KAAK,aAAa,EAGnB,MAAM,uBAAuB,CAAA;AAO9B,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEzD,gBAAgB;AAChB,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,aAAa,CAAA;IACrB,UAAU,EAAE,cAAc,CAAA;IAC1B,WAAW,EAAE,eAAe,CAAA;CAC7B;AAwFD;;;;;;;;;;;;;;;;;;GAkBG;AACH,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,CAsI7B"}
|
|
@@ -2,6 +2,7 @@ import { PerpsError } from '@lifi/perps-sdk';
|
|
|
2
2
|
import { ActionType, PerpsErrorCode, SigningMethod } from '@lifi/perps-types';
|
|
3
3
|
import { ONDO_API_KEY_NAME, ONDO_API_KEY_SCOPES, ONDO_PRIVACY_VERSION, ONDO_TERMS_VERSION, } from '../constants.js';
|
|
4
4
|
import { OndoApiError, OndoSessionExpiredError, } from '../utils/apiClient.js';
|
|
5
|
+
import { buildOndoProvisionPayload, listOndoDepositAddress, } from '../utils/depositAddress.js';
|
|
5
6
|
import { completeSiweLogin } from './completeSiweLogin.js';
|
|
6
7
|
import { hmacSignRequest } from './hmac.js';
|
|
7
8
|
import { isOndoApiKey } from './OndoApiKeyStore.js';
|
|
@@ -138,6 +139,21 @@ export async function ondoSignActions(deps, method, steps, address, ctx) {
|
|
|
138
139
|
throw new PerpsError(PerpsErrorCode.SDKError, `Ondo received a non-session step ('${step.action}') under the session signing method.`);
|
|
139
140
|
}
|
|
140
141
|
switch (step.action) {
|
|
142
|
+
case ActionType.CREATE_DEPOSIT_ADDRESS: {
|
|
143
|
+
const token = await deps.tokenStore.get(address);
|
|
144
|
+
if (token === null) {
|
|
145
|
+
throw new OndoSessionExpiredError(`No valid Ondo session token stored for ${address}. Run the SIWE login first.`);
|
|
146
|
+
}
|
|
147
|
+
const account = await deps.client.get('/v1/account', { authToken: token.token });
|
|
148
|
+
const payload = buildOndoProvisionPayload(step.session, typeof account.accountID === 'string' ? account.accountID : '');
|
|
149
|
+
await deps.client.post('/v1/provision_address', payload, {
|
|
150
|
+
authToken: token.token,
|
|
151
|
+
});
|
|
152
|
+
// Re-query to validate that Ondo can read the provisioned address;
|
|
153
|
+
// getAccount performs the authoritative state refresh afterward.
|
|
154
|
+
await listOndoDepositAddress(deps.client, token.token);
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
141
157
|
case ActionType.ACCEPT_PROVIDER_TERMS: {
|
|
142
158
|
const token = await deps.tokenStore.get(address);
|
|
143
159
|
if (token === null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signActions.js","sourceRoot":"","sources":["../../../src/auth/signActions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"signActions.js","sourceRoot":"","sources":["../../../src/auth/signActions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type Address } from 'viem';
|
|
2
|
+
import type { OndoApiClient } from './apiClient.js';
|
|
3
|
+
/** The only deposit policy supported by the Ondo provider. */
|
|
4
|
+
export declare const ONDO_DEPOSIT_POLICY: {
|
|
5
|
+
readonly network: "ethereum";
|
|
6
|
+
readonly symbol: "USDC";
|
|
7
|
+
readonly depositDestination: {
|
|
8
|
+
readonly wallet: "margin";
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
/** @internal */
|
|
12
|
+
export type OndoDepositPolicyMarker = {
|
|
13
|
+
network: 'ethereum';
|
|
14
|
+
symbol: 'USDC';
|
|
15
|
+
depositDestination: {
|
|
16
|
+
wallet: 'margin';
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
/** @internal */
|
|
20
|
+
export interface OndoDepositAddressRecord {
|
|
21
|
+
address: string;
|
|
22
|
+
coin: string;
|
|
23
|
+
network: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Extract the canonical Ethereum USDC address from Ondo's list response.
|
|
27
|
+
* An empty list is a valid, unsatisfied setup state; malformed records are
|
|
28
|
+
* errors so an API/schema failure cannot be mistaken for an absent address.
|
|
29
|
+
*/
|
|
30
|
+
export declare const parseOndoDepositAddress: (result: unknown) => Address | null;
|
|
31
|
+
/** Query Ondo's authenticated Ethereum USDC deposit-address list. */
|
|
32
|
+
export declare const listOndoDepositAddress: (client: OndoApiClient, authToken: string) => Promise<Address | null>;
|
|
33
|
+
/**
|
|
34
|
+
* Validate the backend's minimal client-only marker and hydrate the venue
|
|
35
|
+
* request with the authenticated account ID. The marker is validated against
|
|
36
|
+
* the one fixed Ondo policy before any venue write is attempted.
|
|
37
|
+
*/
|
|
38
|
+
export declare const buildOndoProvisionPayload: (marker: object, accountID: string) => Record<string, unknown>;
|
|
39
|
+
//# sourceMappingURL=depositAddress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"depositAddress.d.ts","sourceRoot":"","sources":["../../../src/utils/depositAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAa,MAAM,MAAM,CAAA;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAGnD,8DAA8D;AAC9D,eAAO,MAAM,mBAAmB;;;;;;CAItB,CAAA;AAEV,gBAAgB;AAChB,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,UAAU,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,kBAAkB,EAAE;QAAE,MAAM,EAAE,QAAQ,CAAA;KAAE,CAAA;CACzC,CAAA;AAED,gBAAgB;AAChB,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAsBD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAAI,QAAQ,OAAO,KAAG,OAAO,GAAG,IAoBnE,CAAA;AAED,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,GACjC,QAAQ,aAAa,EACrB,WAAW,MAAM,KAChB,OAAO,CAAC,OAAO,GAAG,IAAI,CAOtB,CAAA;AAgBH;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,GACpC,QAAQ,MAAM,EACd,WAAW,MAAM,KAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAoBxB,CAAA"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { isAddress } from 'viem';
|
|
2
|
+
import { OndoApiError } from './apiClient.js';
|
|
3
|
+
/** The only deposit policy supported by the Ondo provider. */
|
|
4
|
+
export const ONDO_DEPOSIT_POLICY = {
|
|
5
|
+
network: 'ethereum',
|
|
6
|
+
symbol: 'USDC',
|
|
7
|
+
depositDestination: { wallet: 'margin' },
|
|
8
|
+
};
|
|
9
|
+
const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
10
|
+
const malformed = (message) => new OndoApiError(`Ondo deposit-address response is malformed: ${message}`);
|
|
11
|
+
const entriesFromResult = (result) => {
|
|
12
|
+
if (Array.isArray(result)) {
|
|
13
|
+
return result;
|
|
14
|
+
}
|
|
15
|
+
if (isRecord(result)) {
|
|
16
|
+
for (const key of ['addresses', 'deposit_addresses', 'depositAddresses']) {
|
|
17
|
+
if (Array.isArray(result[key])) {
|
|
18
|
+
return result[key];
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
throw malformed('expected an address array');
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Extract the canonical Ethereum USDC address from Ondo's list response.
|
|
26
|
+
* An empty list is a valid, unsatisfied setup state; malformed records are
|
|
27
|
+
* errors so an API/schema failure cannot be mistaken for an absent address.
|
|
28
|
+
*/
|
|
29
|
+
export const parseOndoDepositAddress = (result) => {
|
|
30
|
+
const entries = entriesFromResult(result);
|
|
31
|
+
for (const entry of entries) {
|
|
32
|
+
if (!isRecord(entry)) {
|
|
33
|
+
throw malformed('address entries must be objects');
|
|
34
|
+
}
|
|
35
|
+
const coin = entry.coin ?? entry.symbol;
|
|
36
|
+
const network = entry.network;
|
|
37
|
+
if (typeof coin !== 'string' || typeof network !== 'string') {
|
|
38
|
+
throw malformed('address entries require coin and network');
|
|
39
|
+
}
|
|
40
|
+
if (coin.toUpperCase() !== 'USDC' || network.toLowerCase() !== 'ethereum') {
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
if (typeof entry.address !== 'string' || !isAddress(entry.address)) {
|
|
44
|
+
throw malformed('the Ethereum USDC entry has an invalid address');
|
|
45
|
+
}
|
|
46
|
+
return entry.address;
|
|
47
|
+
}
|
|
48
|
+
return null;
|
|
49
|
+
};
|
|
50
|
+
/** Query Ondo's authenticated Ethereum USDC deposit-address list. */
|
|
51
|
+
export const listOndoDepositAddress = async (client, authToken) => parseOndoDepositAddress(await client.post('/v1/wallet/deposit_address/list', { coins: ['USDC'], network: 'ethereum' }, { authToken }));
|
|
52
|
+
const policyCandidate = (marker) => {
|
|
53
|
+
if (!isRecord(marker)) {
|
|
54
|
+
throw malformed('session marker must be an object');
|
|
55
|
+
}
|
|
56
|
+
const candidate = marker.policy;
|
|
57
|
+
if (candidate === undefined) {
|
|
58
|
+
return marker;
|
|
59
|
+
}
|
|
60
|
+
if (!isRecord(candidate)) {
|
|
61
|
+
throw malformed('session policy must be an object');
|
|
62
|
+
}
|
|
63
|
+
return candidate;
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Validate the backend's minimal client-only marker and hydrate the venue
|
|
67
|
+
* request with the authenticated account ID. The marker is validated against
|
|
68
|
+
* the one fixed Ondo policy before any venue write is attempted.
|
|
69
|
+
*/
|
|
70
|
+
export const buildOndoProvisionPayload = (marker, accountID) => {
|
|
71
|
+
if (typeof accountID !== 'string' || accountID.length === 0) {
|
|
72
|
+
throw malformed('accountID is missing from /v1/account');
|
|
73
|
+
}
|
|
74
|
+
const candidate = policyCandidate(marker);
|
|
75
|
+
const network = candidate.network;
|
|
76
|
+
const symbol = candidate.symbol;
|
|
77
|
+
const destination = candidate.depositDestination ?? candidate.deposit_destination;
|
|
78
|
+
if (network !== 'ethereum' || symbol !== 'USDC' || !isRecord(destination)) {
|
|
79
|
+
throw malformed('unsupported deposit policy');
|
|
80
|
+
}
|
|
81
|
+
if (destination.wallet !== 'margin') {
|
|
82
|
+
throw malformed('unsupported deposit wallet');
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
network: 'ethereum',
|
|
86
|
+
symbol: 'USDC',
|
|
87
|
+
deposit_destination: { id: accountID, wallet: 'margin' },
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=depositAddress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"depositAddress.js","sourceRoot":"","sources":["../../../src/utils/depositAddress.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { decodeActivityCursor, encodeActivityCursor, type OndoActivityCursor, } from './activityCursor.js';
|
|
2
2
|
export { type ApiParams, ONDO_RETRY_DEFAULTS, OndoApiClient, type OndoApiClientOptions, OndoApiError, type OndoHttpMethod, type OndoPage, type OndoRequestOptions, OndoSessionExpiredError, } from './apiClient.js';
|
|
3
|
+
export { buildOndoProvisionPayload, listOndoDepositAddress, ONDO_DEPOSIT_POLICY, type OndoDepositAddressRecord, type OndoDepositPolicyMarker, parseOndoDepositAddress, } from './depositAddress.js';
|
|
3
4
|
export { estimateLiquidationPrice } from './liquidation.js';
|
|
4
5
|
export { mapFundingActivity, mapLiquidationActivity } from './mapActivity.js';
|
|
5
6
|
export { mapFill } from './mapFill.js';
|
|
@@ -1 +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"}
|
|
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,EACL,yBAAyB,EACzB,sBAAsB,EACtB,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,uBAAuB,GACxB,MAAM,qBAAqB,CAAA;AAC5B,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"}
|
package/dist/esm/utils/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// biome-ignore-all lint/performance/noBarrelFile: module public entry point.
|
|
2
2
|
export { decodeActivityCursor, encodeActivityCursor, } from './activityCursor.js';
|
|
3
3
|
export { ONDO_RETRY_DEFAULTS, OndoApiClient, OndoApiError, OndoSessionExpiredError, } from './apiClient.js';
|
|
4
|
+
export { buildOndoProvisionPayload, listOndoDepositAddress, ONDO_DEPOSIT_POLICY, parseOndoDepositAddress, } from './depositAddress.js';
|
|
4
5
|
export { estimateLiquidationPrice } from './liquidation.js';
|
|
5
6
|
export { mapFundingActivity, mapLiquidationActivity } from './mapActivity.js';
|
|
6
7
|
export { mapFill } from './mapFill.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAE7E,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GAErB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAEL,mBAAmB,EACnB,aAAa,EAEb,YAAY,EAIZ,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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAE7E,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GAErB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAEL,mBAAmB,EACnB,aAAa,EAEb,YAAY,EAIZ,uBAAuB,GACxB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,mBAAmB,EAGnB,uBAAuB,GACxB,MAAM,qBAAqB,CAAA;AAC5B,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"}
|
|
@@ -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,EAML,KAAK,mBAAmB,EAexB,KAAK,cAAc,EAEpB,MAAM,iBAAiB,CAAA;AAyExB;;;;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,mBA2jBF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,IAAI,aAnkBN,mBAAmB,KAC3B,mBAkkB6B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accountConfig.d.ts","sourceRoot":"","sources":["../../src/accountConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EAEpB,cAAc,EACf,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"accountConfig.d.ts","sourceRoot":"","sources":["../../src/accountConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EAEpB,cAAc,EACf,MAAM,mBAAmB,CAAA;AAkG1B;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,EAAE,cAAc,EAAE,GACxB,oBAAoB,EAAE,CAUxB"}
|
|
@@ -1 +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,UAAU,EAIV,gBAAgB,EAEjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAA8B,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AASnC,OAAO,EACL,KAAK,aAAa,EAGnB,MAAM,uBAAuB,CAAA;
|
|
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,UAAU,EAIV,gBAAgB,EAEjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAA8B,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AASnC,OAAO,EACL,KAAK,aAAa,EAGnB,MAAM,uBAAuB,CAAA;AAO9B,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEzD,gBAAgB;AAChB,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,aAAa,CAAA;IACrB,UAAU,EAAE,cAAc,CAAA;IAC1B,WAAW,EAAE,eAAe,CAAA;CAC7B;AAwFD;;;;;;;;;;;;;;;;;;GAkBG;AACH,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,CAsI7B"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type Address } from 'viem';
|
|
2
|
+
import type { OndoApiClient } from './apiClient.js';
|
|
3
|
+
/** The only deposit policy supported by the Ondo provider. */
|
|
4
|
+
export declare const ONDO_DEPOSIT_POLICY: {
|
|
5
|
+
readonly network: "ethereum";
|
|
6
|
+
readonly symbol: "USDC";
|
|
7
|
+
readonly depositDestination: {
|
|
8
|
+
readonly wallet: "margin";
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
/** @internal */
|
|
12
|
+
export type OndoDepositPolicyMarker = {
|
|
13
|
+
network: 'ethereum';
|
|
14
|
+
symbol: 'USDC';
|
|
15
|
+
depositDestination: {
|
|
16
|
+
wallet: 'margin';
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
/** @internal */
|
|
20
|
+
export interface OndoDepositAddressRecord {
|
|
21
|
+
address: string;
|
|
22
|
+
coin: string;
|
|
23
|
+
network: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Extract the canonical Ethereum USDC address from Ondo's list response.
|
|
27
|
+
* An empty list is a valid, unsatisfied setup state; malformed records are
|
|
28
|
+
* errors so an API/schema failure cannot be mistaken for an absent address.
|
|
29
|
+
*/
|
|
30
|
+
export declare const parseOndoDepositAddress: (result: unknown) => Address | null;
|
|
31
|
+
/** Query Ondo's authenticated Ethereum USDC deposit-address list. */
|
|
32
|
+
export declare const listOndoDepositAddress: (client: OndoApiClient, authToken: string) => Promise<Address | null>;
|
|
33
|
+
/**
|
|
34
|
+
* Validate the backend's minimal client-only marker and hydrate the venue
|
|
35
|
+
* request with the authenticated account ID. The marker is validated against
|
|
36
|
+
* the one fixed Ondo policy before any venue write is attempted.
|
|
37
|
+
*/
|
|
38
|
+
export declare const buildOndoProvisionPayload: (marker: object, accountID: string) => Record<string, unknown>;
|
|
39
|
+
//# sourceMappingURL=depositAddress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"depositAddress.d.ts","sourceRoot":"","sources":["../../../src/utils/depositAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAa,MAAM,MAAM,CAAA;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAGnD,8DAA8D;AAC9D,eAAO,MAAM,mBAAmB;;;;;;CAItB,CAAA;AAEV,gBAAgB;AAChB,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,UAAU,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,kBAAkB,EAAE;QAAE,MAAM,EAAE,QAAQ,CAAA;KAAE,CAAA;CACzC,CAAA;AAED,gBAAgB;AAChB,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAsBD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAAI,QAAQ,OAAO,KAAG,OAAO,GAAG,IAoBnE,CAAA;AAED,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,GACjC,QAAQ,aAAa,EACrB,WAAW,MAAM,KAChB,OAAO,CAAC,OAAO,GAAG,IAAI,CAOtB,CAAA;AAgBH;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,GACpC,QAAQ,MAAM,EACd,WAAW,MAAM,KAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAoBxB,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { decodeActivityCursor, encodeActivityCursor, type OndoActivityCursor, } from './activityCursor.js';
|
|
2
2
|
export { type ApiParams, ONDO_RETRY_DEFAULTS, OndoApiClient, type OndoApiClientOptions, OndoApiError, type OndoHttpMethod, type OndoPage, type OndoRequestOptions, OndoSessionExpiredError, } from './apiClient.js';
|
|
3
|
+
export { buildOndoProvisionPayload, listOndoDepositAddress, ONDO_DEPOSIT_POLICY, type OndoDepositAddressRecord, type OndoDepositPolicyMarker, parseOndoDepositAddress, } from './depositAddress.js';
|
|
3
4
|
export { estimateLiquidationPrice } from './liquidation.js';
|
|
4
5
|
export { mapFundingActivity, mapLiquidationActivity } from './mapActivity.js';
|
|
5
6
|
export { mapFill } from './mapFill.js';
|
|
@@ -1 +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"}
|
|
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,EACL,yBAAyB,EACzB,sBAAsB,EACtB,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,uBAAuB,GACxB,MAAM,qBAAqB,CAAA;AAC5B,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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lifi/perps-sdk-provider-ondo",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "Ondo Perps provider plugin for @lifi/perps-sdk",
|
|
5
5
|
"homepage": "https://github.com/lifinance/perps-sdk",
|
|
6
6
|
"bugs": {
|
|
@@ -43,10 +43,10 @@
|
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"big.js": "^7.0.1",
|
|
45
45
|
"viem": "^2.48.8",
|
|
46
|
-
"@lifi/perps-types": "^3.
|
|
46
|
+
"@lifi/perps-types": "^3.3.2"
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|
|
49
|
-
"@lifi/perps-sdk": "^
|
|
49
|
+
"@lifi/perps-sdk": "^5.0.0"
|
|
50
50
|
},
|
|
51
51
|
"publishConfig": {
|
|
52
52
|
"access": "public"
|
package/src/OndoProvider.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
|
+
type DepositFlow,
|
|
3
|
+
ETHEREUM_USDC,
|
|
2
4
|
getMarketRegistry,
|
|
3
5
|
localStorageAdapter,
|
|
4
6
|
PerpsError,
|
|
@@ -7,6 +9,7 @@ import {
|
|
|
7
9
|
type ProviderAccountExistsParams,
|
|
8
10
|
type ProviderGetAccountParams,
|
|
9
11
|
type ProviderGetActivityParams,
|
|
12
|
+
type ProviderGetDepositFlowParams,
|
|
10
13
|
type ProviderGetFillsParams,
|
|
11
14
|
type ProviderGetOrderParams,
|
|
12
15
|
type ProviderGetOrdersParams,
|
|
@@ -82,6 +85,7 @@ import {
|
|
|
82
85
|
estimateLiquidationPrice,
|
|
83
86
|
formatOrderPrice,
|
|
84
87
|
formatOrderSize,
|
|
88
|
+
listOndoDepositAddress,
|
|
85
89
|
mapFill,
|
|
86
90
|
mapFundingActivity,
|
|
87
91
|
mapLiquidationActivity,
|
|
@@ -169,6 +173,7 @@ export const ondoProvider = (
|
|
|
169
173
|
termsAccepted: false,
|
|
170
174
|
apiKeyRegistered: false,
|
|
171
175
|
referralSet: false,
|
|
176
|
+
depositAddress: null,
|
|
172
177
|
}
|
|
173
178
|
|
|
174
179
|
const loggedOutAccount = (address: Address): AccountResponse => ({
|
|
@@ -232,21 +237,23 @@ export const ondoProvider = (
|
|
|
232
237
|
},
|
|
233
238
|
async (token) => {
|
|
234
239
|
const client = apiClient(opts)
|
|
235
|
-
const [balance, rawPositions, referral, account] =
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
240
|
+
const [balance, rawPositions, referral, account, depositAddress] =
|
|
241
|
+
await Promise.all([
|
|
242
|
+
client.get<OndoBalanceSummary>('/v1/perps/balance', {
|
|
243
|
+
authToken: token.token,
|
|
244
|
+
}),
|
|
245
|
+
client.get<OndoPosition[]>('/v1/perps/positions', {
|
|
246
|
+
authToken: token.token,
|
|
247
|
+
}),
|
|
248
|
+
client.get<OndoAccountReferral | null>('/v1/account/referral', {
|
|
249
|
+
authToken: token.token,
|
|
250
|
+
}),
|
|
251
|
+
client.get<OndoAccountInfo>('/v1/account', {
|
|
252
|
+
authToken: token.token,
|
|
253
|
+
}),
|
|
254
|
+
listOndoDepositAddress(client, token.token),
|
|
255
|
+
marketRegistry().sync(),
|
|
256
|
+
])
|
|
250
257
|
|
|
251
258
|
const positions: Position[] = mapOpenPositions(
|
|
252
259
|
rawPositions,
|
|
@@ -280,6 +287,7 @@ export const ondoProvider = (
|
|
|
280
287
|
account.privacyVersion === ONDO_PRIVACY_VERSION,
|
|
281
288
|
apiKeyRegistered,
|
|
282
289
|
referralSet: referral !== null && referral !== undefined,
|
|
290
|
+
depositAddress,
|
|
283
291
|
},
|
|
284
292
|
}
|
|
285
293
|
}
|
|
@@ -300,6 +308,39 @@ export const ondoProvider = (
|
|
|
300
308
|
)
|
|
301
309
|
},
|
|
302
310
|
|
|
311
|
+
async getDepositFlow(
|
|
312
|
+
params: ProviderGetDepositFlowParams,
|
|
313
|
+
opts?: SDKRequestOptions
|
|
314
|
+
): Promise<DepositFlow> {
|
|
315
|
+
// Ondo credits deposits to a per-user address the venue provisions behind
|
|
316
|
+
// an authenticated session, so both the session and the address must exist
|
|
317
|
+
// before a route has a recipient.
|
|
318
|
+
return withSession<DepositFlow>(
|
|
319
|
+
params.address,
|
|
320
|
+
() => ({
|
|
321
|
+
kind: 'setupRequired',
|
|
322
|
+
setup: [ActionType.SIWE_LOGIN, ActionType.CREATE_DEPOSIT_ADDRESS],
|
|
323
|
+
}),
|
|
324
|
+
async (token) => {
|
|
325
|
+
const depositAddress = await listOndoDepositAddress(
|
|
326
|
+
apiClient(opts),
|
|
327
|
+
token.token
|
|
328
|
+
)
|
|
329
|
+
if (depositAddress === null) {
|
|
330
|
+
return {
|
|
331
|
+
kind: 'setupRequired',
|
|
332
|
+
setup: [ActionType.CREATE_DEPOSIT_ADDRESS],
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
return {
|
|
336
|
+
kind: 'lifiSwap',
|
|
337
|
+
destination: ETHEREUM_USDC,
|
|
338
|
+
toAddress: depositAddress,
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
)
|
|
342
|
+
},
|
|
343
|
+
|
|
303
344
|
async getPositions(
|
|
304
345
|
params: ProviderGetPositionsParams,
|
|
305
346
|
opts?: SDKRequestOptions
|
|
@@ -619,19 +660,26 @@ export const ondoProvider = (
|
|
|
619
660
|
return projectOndoConfigSettings(config, setup, configOptions)
|
|
620
661
|
},
|
|
621
662
|
|
|
622
|
-
signActions(
|
|
663
|
+
async signActions(
|
|
623
664
|
method: SigningMethod,
|
|
624
665
|
steps: ActionStep[],
|
|
625
666
|
address: Address,
|
|
626
667
|
ctx?: SignActionsContext
|
|
627
668
|
): Promise<SignedActionStep[]> {
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
669
|
+
try {
|
|
670
|
+
return await ondoSignActions(
|
|
671
|
+
{ client: apiClient(), tokenStore, apiKeyStore },
|
|
672
|
+
method,
|
|
673
|
+
steps,
|
|
674
|
+
address,
|
|
675
|
+
ctx
|
|
676
|
+
)
|
|
677
|
+
} catch (err) {
|
|
678
|
+
if (err instanceof OndoSessionExpiredError) {
|
|
679
|
+
await tokenStore.remove(address)
|
|
680
|
+
}
|
|
681
|
+
throw err
|
|
682
|
+
}
|
|
635
683
|
},
|
|
636
684
|
|
|
637
685
|
// The venue rejecting an HMAC-signed request with Unauthorized means the
|
package/src/accountConfig.ts
CHANGED
|
@@ -15,8 +15,9 @@ function assertNever(value: never): never {
|
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* Project a single Ondo descriptor against the typed `OndoAccountConfig`
|
|
18
|
-
* into an `AccountConfigSetting`. Ondo has
|
|
18
|
+
* into an `AccountConfigSetting`. Ondo has five setup descriptors:
|
|
19
19
|
* `SIWE_LOGIN`, satisfied by the presence of a live session token;
|
|
20
|
+
* `CREATE_DEPOSIT_ADDRESS`, satisfied by a canonical Ethereum USDC address;
|
|
20
21
|
* `ACCEPT_PROVIDER_TERMS`, satisfied once the venue terms are accepted;
|
|
21
22
|
* `REGISTER_API_KEY`, satisfied by a locally stored venue API key; and
|
|
22
23
|
* `SET_REFERRAL`, satisfied when a referral code is already applied to the
|
|
@@ -40,6 +41,14 @@ function projectOndoDescriptor(
|
|
|
40
41
|
satisfied: config.loggedIn,
|
|
41
42
|
}
|
|
42
43
|
|
|
44
|
+
case ActionType.CREATE_DEPOSIT_ADDRESS:
|
|
45
|
+
return {
|
|
46
|
+
type: descriptor.type,
|
|
47
|
+
values: [{ name: 'depositAddress', value: config.depositAddress }],
|
|
48
|
+
satisfied:
|
|
49
|
+
config.depositAddress !== null && config.depositAddress.length > 0,
|
|
50
|
+
}
|
|
51
|
+
|
|
43
52
|
case ActionType.ACCEPT_PROVIDER_TERMS:
|
|
44
53
|
return {
|
|
45
54
|
type: descriptor.type,
|
package/src/auth/signActions.ts
CHANGED
|
@@ -22,6 +22,10 @@ import {
|
|
|
22
22
|
OndoApiError,
|
|
23
23
|
OndoSessionExpiredError,
|
|
24
24
|
} from '../utils/apiClient.js'
|
|
25
|
+
import {
|
|
26
|
+
buildOndoProvisionPayload,
|
|
27
|
+
listOndoDepositAddress,
|
|
28
|
+
} from '../utils/depositAddress.js'
|
|
25
29
|
import { completeSiweLogin } from './completeSiweLogin.js'
|
|
26
30
|
import { hmacSignRequest } from './hmac.js'
|
|
27
31
|
import { isOndoApiKey, type OndoApiKeyStore } from './OndoApiKeyStore.js'
|
|
@@ -219,6 +223,30 @@ export async function ondoSignActions(
|
|
|
219
223
|
)
|
|
220
224
|
}
|
|
221
225
|
switch (step.action) {
|
|
226
|
+
case ActionType.CREATE_DEPOSIT_ADDRESS: {
|
|
227
|
+
const token = await deps.tokenStore.get(address)
|
|
228
|
+
if (token === null) {
|
|
229
|
+
throw new OndoSessionExpiredError(
|
|
230
|
+
`No valid Ondo session token stored for ${address}. Run the SIWE login first.`
|
|
231
|
+
)
|
|
232
|
+
}
|
|
233
|
+
const account = await deps.client.get<{ accountID?: unknown }>(
|
|
234
|
+
'/v1/account',
|
|
235
|
+
{ authToken: token.token }
|
|
236
|
+
)
|
|
237
|
+
const payload = buildOndoProvisionPayload(
|
|
238
|
+
step.session,
|
|
239
|
+
typeof account.accountID === 'string' ? account.accountID : ''
|
|
240
|
+
)
|
|
241
|
+
await deps.client.post('/v1/provision_address', payload, {
|
|
242
|
+
authToken: token.token,
|
|
243
|
+
})
|
|
244
|
+
// Re-query to validate that Ondo can read the provisioned address;
|
|
245
|
+
// getAccount performs the authoritative state refresh afterward.
|
|
246
|
+
await listOndoDepositAddress(deps.client, token.token)
|
|
247
|
+
break
|
|
248
|
+
}
|
|
249
|
+
|
|
222
250
|
case ActionType.ACCEPT_PROVIDER_TERMS: {
|
|
223
251
|
const token = await deps.tokenStore.get(address)
|
|
224
252
|
if (token === null) {
|