@lifi/perps-sdk-provider-ondo 2.1.1 → 2.2.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.
Files changed (47) hide show
  1. package/dist/cjs/OndoProvider.d.ts.map +1 -1
  2. package/dist/cjs/OndoProvider.js +14 -3
  3. package/dist/cjs/OndoProvider.js.map +1 -1
  4. package/dist/cjs/accountConfig.d.ts.map +1 -1
  5. package/dist/cjs/accountConfig.js +6 -0
  6. package/dist/cjs/accountConfig.js.map +1 -1
  7. package/dist/cjs/auth/signActions.d.ts.map +1 -1
  8. package/dist/cjs/auth/signActions.js +14 -0
  9. package/dist/cjs/auth/signActions.js.map +1 -1
  10. package/dist/cjs/utils/depositAddress.d.ts +24 -0
  11. package/dist/cjs/utils/depositAddress.d.ts.map +1 -0
  12. package/dist/cjs/utils/depositAddress.js +84 -0
  13. package/dist/cjs/utils/depositAddress.js.map +1 -0
  14. package/dist/cjs/utils/index.d.ts +1 -0
  15. package/dist/cjs/utils/index.d.ts.map +1 -1
  16. package/dist/cjs/utils/index.js +6 -1
  17. package/dist/cjs/utils/index.js.map +1 -1
  18. package/dist/esm/OndoProvider.d.ts.map +1 -1
  19. package/dist/esm/OndoProvider.js +15 -4
  20. package/dist/esm/OndoProvider.js.map +1 -1
  21. package/dist/esm/accountConfig.d.ts.map +1 -1
  22. package/dist/esm/accountConfig.js +8 -1
  23. package/dist/esm/accountConfig.js.map +1 -1
  24. package/dist/esm/auth/signActions.d.ts.map +1 -1
  25. package/dist/esm/auth/signActions.js +16 -0
  26. package/dist/esm/auth/signActions.js.map +1 -1
  27. package/dist/esm/utils/depositAddress.d.ts +38 -0
  28. package/dist/esm/utils/depositAddress.d.ts.map +1 -0
  29. package/dist/esm/utils/depositAddress.js +90 -0
  30. package/dist/esm/utils/depositAddress.js.map +1 -0
  31. package/dist/esm/utils/index.d.ts +1 -0
  32. package/dist/esm/utils/index.d.ts.map +1 -1
  33. package/dist/esm/utils/index.js +1 -0
  34. package/dist/esm/utils/index.js.map +1 -1
  35. package/dist/types/OndoProvider.d.ts.map +1 -1
  36. package/dist/types/accountConfig.d.ts.map +1 -1
  37. package/dist/types/auth/signActions.d.ts.map +1 -1
  38. package/dist/types/utils/depositAddress.d.ts +38 -0
  39. package/dist/types/utils/depositAddress.d.ts.map +1 -0
  40. package/dist/types/utils/index.d.ts +1 -0
  41. package/dist/types/utils/index.d.ts.map +1 -1
  42. package/package.json +3 -3
  43. package/src/OndoProvider.ts +35 -23
  44. package/src/accountConfig.ts +10 -1
  45. package/src/auth/signActions.ts +28 -0
  46. package/src/utils/depositAddress.ts +128 -0
  47. package/src/utils/index.ts +8 -0
@@ -1 +1 @@
1
- {"version":3,"file":"signActions.js","sourceRoot":"","sources":["../../../src/auth/signActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA2B,MAAM,iBAAiB,CAAA;AASrE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAE7E,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EAEL,YAAY,EACZ,uBAAuB,GACxB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAwB,MAAM,sBAAsB,CAAA;AAUzE,MAAM,UAAU,GAAG,CAAC,IAAgB,EAA0B,EAAE,CAAC,MAAM,IAAI,IAAI,CAAA;AAE/E,MAAM,aAAa,GAAG,CAAC,IAAgB,EAA6B,EAAE,CACpE,SAAS,IAAI,IAAI,CAAA;AAEnB,MAAM,UAAU,GAAG,CACjB,IAAgB,EACmC,EAAE,CAAC,SAAS,IAAI,IAAI,CAAA;AAEzE;;;;;;GAMG;AACH,SAAS,cAAc,CAAC,OAA0B;IAChD,MAAM,MAAM,GAAe;QACzB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAA;IACD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,YAAY,CACpB,2DAA2D,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CACnG,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,YAAY,CACzB,IAAyB,EACzB,OAAgB;IAEhB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACpD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAChD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,uBAAuB,CAC/B,0CAA0C,OAAO,6BAA6B,CAC/E,CAAA;IACH,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACpC,cAAc,EACd,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,mBAAmB,EAAE,EACxD,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,CAC3B,CAAA;IACD,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IACtC,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC3C,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,qBAAqB,CAClC,IAAyB,EACzB,OAAgB,EAChB,OAAkC;IAElC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAChD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,uBAAuB,CAC/B,0CAA0C,OAAO,6BAA6B,CAC/E,CAAA;IACH,CAAC;IACD,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE;QACnD,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACvE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,CAAC,KAAK,EAAE,EAAE;KACpD,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAyB,EACzB,MAAqB,EACrB,KAAmB,EACnB,OAAgB,EAChB,GAAwB;IAExB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;YACxB,MAAM,UAAU,GAAG,GAAG,EAAE,UAAU,CAAA;YAClC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,QAAQ,EACvB,mEAAmE;oBACjE,4BAA4B,CAC/B,CAAA;YACH,CAAC;YACD,MAAM,MAAM,GAAuB,EAAE,CAAA;YACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtB,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,QAAQ,EACvB,mCAAmC,IAAI,CAAC,MAAM,mCAAmC,CAClF,CAAA;gBACH,CAAC;gBACD,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,iBAAiB,CAClD,IAAI,CAAC,MAAM,EACX,UAAU,EACV,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAC1D,CAAA;gBACD,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;gBACzC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;YAClE,CAAC;YACD,OAAO,MAAM,CAAA;QACf,CAAC;QAED,KAAK,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;YACxB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YAChD,OAAO,OAAO,CAAC,GAAG,CAChB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAiC,EAAE;gBACtD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtB,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,QAAQ,EACvB,4CAA4C,IAAI,CAAC,MAAM,mCAAmC,CAC3F,CAAA;gBACH,CAAC;gBACD,wEAAwE;gBACxE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;gBAC9B,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE;oBACxD,WAAW;oBACX,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;oBAC3B,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;oBAChC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;iBACxB,CAAC,CAAA;gBACF,OAAO;oBACL,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,IAAI,EAAE;wBACJ,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,WAAW;wBACX,SAAS;qBACV;iBACF,CAAA;YACH,CAAC,CAAC,CACH,CAAA;QACH,CAAC;QAED,KAAK,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACrB,MAAM,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;oBACxD,SAAQ;gBACV,CAAC;gBACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;oBACzB,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,QAAQ,EACvB,sCAAsC,IAAI,CAAC,MAAM,sCAAsC,CACxF,CAAA;gBACH,CAAC;gBACD,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;oBACpB,KAAK,UAAU,CAAC,qBAAqB,CAAC,CAAC,CAAC;wBACtC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;wBAChD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;4BACnB,MAAM,IAAI,uBAAuB,CAC/B,0CAA0C,OAAO,6BAA6B,CAC/E,CAAA;wBACH,CAAC;wBACD,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACpB,eAAe,EACf;4BACE,YAAY,EAAE,kBAAkB;4BAChC,cAAc,EAAE,oBAAoB;yBACrC,EACD,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,CAC3B,CAAA;wBACD,MAAK;oBACP,CAAC;oBACD,KAAK,UAAU,CAAC,gBAAgB;wBAC9B,MAAM,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;wBACjC,MAAK;oBACP;wBACE,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,QAAQ,EACvB,iDAAiD,IAAI,CAAC,MAAM,IAAI,CACjE,CAAA;gBACL,CAAC;YACH,CAAC;YACD,OAAO,EAAE,CAAA;QACX,CAAC;QAED;YACE,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,QAAQ,EACvB,2BAA2B,MAAM,4CAA4C,CAC9E,CAAA;IACL,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"signActions.js","sourceRoot":"","sources":["../../../src/auth/signActions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { OndoApiClient } from './apiClient.js';
2
+ /** The only deposit policy supported by the Ondo provider. */
3
+ export declare const ONDO_DEPOSIT_POLICY: {
4
+ readonly network: "ethereum";
5
+ readonly symbol: "USDC";
6
+ readonly depositDestination: {
7
+ readonly wallet: "margin";
8
+ };
9
+ };
10
+ /** @internal */
11
+ export type OndoDepositPolicyMarker = {
12
+ network: 'ethereum';
13
+ symbol: 'USDC';
14
+ depositDestination: {
15
+ wallet: 'margin';
16
+ };
17
+ };
18
+ /** @internal */
19
+ export interface OndoDepositAddressRecord {
20
+ address: string;
21
+ coin: string;
22
+ network: string;
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 declare const parseOndoDepositAddress: (result: unknown) => string | null;
30
+ /** Query Ondo's authenticated Ethereum USDC deposit-address list. */
31
+ export declare const listOndoDepositAddress: (client: OndoApiClient, authToken: string) => Promise<string | null>;
32
+ /**
33
+ * Validate the backend's minimal client-only marker and hydrate the venue
34
+ * request with the authenticated account ID. The marker is validated against
35
+ * the one fixed Ondo policy before any venue write is attempted.
36
+ */
37
+ export declare const buildOndoProvisionPayload: (marker: object, accountID: string) => Record<string, unknown>;
38
+ //# sourceMappingURL=depositAddress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"depositAddress.d.ts","sourceRoot":"","sources":["../../../src/utils/depositAddress.ts"],"names":[],"mappings":"AACA,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,MAAM,GAAG,IAoBlE,CAAA;AAED,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,GACjC,QAAQ,aAAa,EACrB,WAAW,MAAM,KAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAOrB,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":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,8DAA8D;AAC9D,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,OAAO,EAAE,UAAU;IACnB,MAAM,EAAE,MAAM;IACd,kBAAkB,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;CAChC,CAAA;AAgBV,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CACpE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAEtE,MAAM,SAAS,GAAG,CAAC,OAAe,EAAgB,EAAE,CAClD,IAAI,YAAY,CAAC,+CAA+C,OAAO,EAAE,CAAC,CAAA;AAE5E,MAAM,iBAAiB,GAAG,CAAC,MAAe,EAAa,EAAE;IACvD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAA;IACf,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACrB,KAAK,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,EAAE,CAAC;YACzE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC/B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,SAAS,CAAC,2BAA2B,CAAC,CAAA;AAC9C,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAAe,EAAiB,EAAE;IACxE,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAA;IACzC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,SAAS,CAAC,iCAAiC,CAAC,CAAA;QACpD,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAA;QACvC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;QAC7B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC5D,MAAM,SAAS,CAAC,0CAA0C,CAAC,CAAA;QAC7D,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,UAAU,EAAE,CAAC;YAC1E,SAAQ;QACV,CAAC;QACD,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACnE,MAAM,SAAS,CAAC,gDAAgD,CAAC,CAAA;QACnE,CAAC;QACD,OAAO,KAAK,CAAC,OAAO,CAAA;IACtB,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,qEAAqE;AACrE,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EACzC,MAAqB,EACrB,SAAiB,EACO,EAAE,CAC1B,uBAAuB,CACrB,MAAM,MAAM,CAAC,IAAI,CACf,iCAAiC,EACjC,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,EACxC,EAAE,SAAS,EAAE,CACd,CACF,CAAA;AAEH,MAAM,eAAe,GAAG,CAAC,MAAc,EAA2B,EAAE;IAClE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,MAAM,SAAS,CAAC,kCAAkC,CAAC,CAAA;IACrD,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAA;IAC/B,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAA;IACf,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACzB,MAAM,SAAS,CAAC,kCAAkC,CAAC,CAAA;IACrD,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,MAAc,EACd,SAAiB,EACQ,EAAE;IAC3B,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5D,MAAM,SAAS,CAAC,uCAAuC,CAAC,CAAA;IAC1D,CAAC;IACD,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IACzC,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAA;IACjC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAA;IAC/B,MAAM,WAAW,GACf,SAAS,CAAC,kBAAkB,IAAI,SAAS,CAAC,mBAAmB,CAAA;IAC/D,IAAI,OAAO,KAAK,UAAU,IAAI,MAAM,KAAK,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1E,MAAM,SAAS,CAAC,4BAA4B,CAAC,CAAA;IAC/C,CAAC;IACD,IAAI,WAAW,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,SAAS,CAAC,4BAA4B,CAAC,CAAA;IAC/C,CAAC;IACD,OAAO;QACL,OAAO,EAAE,UAAU;QACnB,MAAM,EAAE,MAAM;QACd,mBAAmB,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE;KACzD,CAAA;AACH,CAAC,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"}
@@ -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,EAIL,KAAK,mBAAmB,EAcxB,KAAK,cAAc,EAEpB,MAAM,iBAAiB,CAAA;AAwExB;;;;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,mBA+gBF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,IAAI,aAvhBN,mBAAmB,KAC3B,mBAshB6B,CAAA"}
1
+ {"version":3,"file":"OndoProvider.d.ts","sourceRoot":"","sources":["../../src/OndoProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,mBAAmB,EAcxB,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,mBA0hBF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,IAAI,aAliBN,mBAAmB,KAC3B,mBAiiB6B,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;AAyF1B;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,EAAE,cAAc,EAAE,GACxB,oBAAoB,EAAE,CAUxB"}
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;AAG9B,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,CA8G7B"}
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,38 @@
1
+ import type { OndoApiClient } from './apiClient.js';
2
+ /** The only deposit policy supported by the Ondo provider. */
3
+ export declare const ONDO_DEPOSIT_POLICY: {
4
+ readonly network: "ethereum";
5
+ readonly symbol: "USDC";
6
+ readonly depositDestination: {
7
+ readonly wallet: "margin";
8
+ };
9
+ };
10
+ /** @internal */
11
+ export type OndoDepositPolicyMarker = {
12
+ network: 'ethereum';
13
+ symbol: 'USDC';
14
+ depositDestination: {
15
+ wallet: 'margin';
16
+ };
17
+ };
18
+ /** @internal */
19
+ export interface OndoDepositAddressRecord {
20
+ address: string;
21
+ coin: string;
22
+ network: string;
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 declare const parseOndoDepositAddress: (result: unknown) => string | null;
30
+ /** Query Ondo's authenticated Ethereum USDC deposit-address list. */
31
+ export declare const listOndoDepositAddress: (client: OndoApiClient, authToken: string) => Promise<string | null>;
32
+ /**
33
+ * Validate the backend's minimal client-only marker and hydrate the venue
34
+ * request with the authenticated account ID. The marker is validated against
35
+ * the one fixed Ondo policy before any venue write is attempted.
36
+ */
37
+ export declare const buildOndoProvisionPayload: (marker: object, accountID: string) => Record<string, unknown>;
38
+ //# sourceMappingURL=depositAddress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"depositAddress.d.ts","sourceRoot":"","sources":["../../../src/utils/depositAddress.ts"],"names":[],"mappings":"AACA,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,MAAM,GAAG,IAoBlE,CAAA;AAED,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,GACjC,QAAQ,aAAa,EACrB,WAAW,MAAM,KAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAOrB,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": "2.1.1",
3
+ "version": "2.2.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.1.0"
46
+ "@lifi/perps-types": "^3.3.0"
47
47
  },
48
48
  "peerDependencies": {
49
- "@lifi/perps-sdk": "^4.2.0"
49
+ "@lifi/perps-sdk": "^4.3.0"
50
50
  },
51
51
  "publishConfig": {
52
52
  "access": "public"
@@ -82,6 +82,7 @@ import {
82
82
  estimateLiquidationPrice,
83
83
  formatOrderPrice,
84
84
  formatOrderSize,
85
+ listOndoDepositAddress,
85
86
  mapFill,
86
87
  mapFundingActivity,
87
88
  mapLiquidationActivity,
@@ -169,6 +170,7 @@ export const ondoProvider = (
169
170
  termsAccepted: false,
170
171
  apiKeyRegistered: false,
171
172
  referralSet: false,
173
+ depositAddress: null,
172
174
  }
173
175
 
174
176
  const loggedOutAccount = (address: Address): AccountResponse => ({
@@ -232,21 +234,23 @@ export const ondoProvider = (
232
234
  },
233
235
  async (token) => {
234
236
  const client = apiClient(opts)
235
- const [balance, rawPositions, referral, account] = await Promise.all([
236
- client.get<OndoBalanceSummary>('/v1/perps/balance', {
237
- authToken: token.token,
238
- }),
239
- client.get<OndoPosition[]>('/v1/perps/positions', {
240
- authToken: token.token,
241
- }),
242
- client.get<OndoAccountReferral | null>('/v1/account/referral', {
243
- authToken: token.token,
244
- }),
245
- client.get<OndoAccountInfo>('/v1/account', {
246
- authToken: token.token,
247
- }),
248
- marketRegistry().sync(),
249
- ])
237
+ const [balance, rawPositions, referral, account, depositAddress] =
238
+ await Promise.all([
239
+ client.get<OndoBalanceSummary>('/v1/perps/balance', {
240
+ authToken: token.token,
241
+ }),
242
+ client.get<OndoPosition[]>('/v1/perps/positions', {
243
+ authToken: token.token,
244
+ }),
245
+ client.get<OndoAccountReferral | null>('/v1/account/referral', {
246
+ authToken: token.token,
247
+ }),
248
+ client.get<OndoAccountInfo>('/v1/account', {
249
+ authToken: token.token,
250
+ }),
251
+ listOndoDepositAddress(client, token.token),
252
+ marketRegistry().sync(),
253
+ ])
250
254
 
251
255
  const positions: Position[] = mapOpenPositions(
252
256
  rawPositions,
@@ -280,6 +284,7 @@ export const ondoProvider = (
280
284
  account.privacyVersion === ONDO_PRIVACY_VERSION,
281
285
  apiKeyRegistered,
282
286
  referralSet: referral !== null && referral !== undefined,
287
+ depositAddress,
283
288
  },
284
289
  }
285
290
  }
@@ -619,19 +624,26 @@ export const ondoProvider = (
619
624
  return projectOndoConfigSettings(config, setup, configOptions)
620
625
  },
621
626
 
622
- signActions(
627
+ async signActions(
623
628
  method: SigningMethod,
624
629
  steps: ActionStep[],
625
630
  address: Address,
626
631
  ctx?: SignActionsContext
627
632
  ): Promise<SignedActionStep[]> {
628
- return ondoSignActions(
629
- { client: apiClient(), tokenStore, apiKeyStore },
630
- method,
631
- steps,
632
- address,
633
- ctx
634
- )
633
+ try {
634
+ return await ondoSignActions(
635
+ { client: apiClient(), tokenStore, apiKeyStore },
636
+ method,
637
+ steps,
638
+ address,
639
+ ctx
640
+ )
641
+ } catch (err) {
642
+ if (err instanceof OndoSessionExpiredError) {
643
+ await tokenStore.remove(address)
644
+ }
645
+ throw err
646
+ }
635
647
  },
636
648
 
637
649
  // The venue rejecting an HMAC-signed request with Unauthorized means the
@@ -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 four setup descriptors:
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,
@@ -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) {
@@ -0,0 +1,128 @@
1
+ import { isAddress } from 'viem'
2
+ import type { OndoApiClient } from './apiClient.js'
3
+ import { OndoApiError } from './apiClient.js'
4
+
5
+ /** The only deposit policy supported by the Ondo provider. */
6
+ export const ONDO_DEPOSIT_POLICY = {
7
+ network: 'ethereum',
8
+ symbol: 'USDC',
9
+ depositDestination: { wallet: 'margin' },
10
+ } as const
11
+
12
+ /** @internal */
13
+ export type OndoDepositPolicyMarker = {
14
+ network: 'ethereum'
15
+ symbol: 'USDC'
16
+ depositDestination: { wallet: 'margin' }
17
+ }
18
+
19
+ /** @internal */
20
+ export interface OndoDepositAddressRecord {
21
+ address: string
22
+ coin: string
23
+ network: string
24
+ }
25
+
26
+ const isRecord = (value: unknown): value is Record<string, unknown> =>
27
+ typeof value === 'object' && value !== null && !Array.isArray(value)
28
+
29
+ const malformed = (message: string): OndoApiError =>
30
+ new OndoApiError(`Ondo deposit-address response is malformed: ${message}`)
31
+
32
+ const entriesFromResult = (result: unknown): unknown[] => {
33
+ if (Array.isArray(result)) {
34
+ return result
35
+ }
36
+ if (isRecord(result)) {
37
+ for (const key of ['addresses', 'deposit_addresses', 'depositAddresses']) {
38
+ if (Array.isArray(result[key])) {
39
+ return result[key]
40
+ }
41
+ }
42
+ }
43
+ throw malformed('expected an address array')
44
+ }
45
+
46
+ /**
47
+ * Extract the canonical Ethereum USDC address from Ondo's list response.
48
+ * An empty list is a valid, unsatisfied setup state; malformed records are
49
+ * errors so an API/schema failure cannot be mistaken for an absent address.
50
+ */
51
+ export const parseOndoDepositAddress = (result: unknown): string | null => {
52
+ const entries = entriesFromResult(result)
53
+ for (const entry of entries) {
54
+ if (!isRecord(entry)) {
55
+ throw malformed('address entries must be objects')
56
+ }
57
+ const coin = entry.coin ?? entry.symbol
58
+ const network = entry.network
59
+ if (typeof coin !== 'string' || typeof network !== 'string') {
60
+ throw malformed('address entries require coin and network')
61
+ }
62
+ if (coin.toUpperCase() !== 'USDC' || network.toLowerCase() !== 'ethereum') {
63
+ continue
64
+ }
65
+ if (typeof entry.address !== 'string' || !isAddress(entry.address)) {
66
+ throw malformed('the Ethereum USDC entry has an invalid address')
67
+ }
68
+ return entry.address
69
+ }
70
+ return null
71
+ }
72
+
73
+ /** Query Ondo's authenticated Ethereum USDC deposit-address list. */
74
+ export const listOndoDepositAddress = async (
75
+ client: OndoApiClient,
76
+ authToken: string
77
+ ): Promise<string | null> =>
78
+ parseOndoDepositAddress(
79
+ await client.post<unknown>(
80
+ '/v1/wallet/deposit_address/list',
81
+ { coins: ['USDC'], network: 'ethereum' },
82
+ { authToken }
83
+ )
84
+ )
85
+
86
+ const policyCandidate = (marker: object): Record<string, unknown> => {
87
+ if (!isRecord(marker)) {
88
+ throw malformed('session marker must be an object')
89
+ }
90
+ const candidate = marker.policy
91
+ if (candidate === undefined) {
92
+ return marker
93
+ }
94
+ if (!isRecord(candidate)) {
95
+ throw malformed('session policy must be an object')
96
+ }
97
+ return candidate
98
+ }
99
+
100
+ /**
101
+ * Validate the backend's minimal client-only marker and hydrate the venue
102
+ * request with the authenticated account ID. The marker is validated against
103
+ * the one fixed Ondo policy before any venue write is attempted.
104
+ */
105
+ export const buildOndoProvisionPayload = (
106
+ marker: object,
107
+ accountID: string
108
+ ): Record<string, unknown> => {
109
+ if (typeof accountID !== 'string' || accountID.length === 0) {
110
+ throw malformed('accountID is missing from /v1/account')
111
+ }
112
+ const candidate = policyCandidate(marker)
113
+ const network = candidate.network
114
+ const symbol = candidate.symbol
115
+ const destination =
116
+ candidate.depositDestination ?? candidate.deposit_destination
117
+ if (network !== 'ethereum' || symbol !== 'USDC' || !isRecord(destination)) {
118
+ throw malformed('unsupported deposit policy')
119
+ }
120
+ if (destination.wallet !== 'margin') {
121
+ throw malformed('unsupported deposit wallet')
122
+ }
123
+ return {
124
+ network: 'ethereum',
125
+ symbol: 'USDC',
126
+ deposit_destination: { id: accountID, wallet: 'margin' },
127
+ }
128
+ }
@@ -16,6 +16,14 @@ export {
16
16
  type OndoRequestOptions,
17
17
  OndoSessionExpiredError,
18
18
  } from './apiClient.js'
19
+ export {
20
+ buildOndoProvisionPayload,
21
+ listOndoDepositAddress,
22
+ ONDO_DEPOSIT_POLICY,
23
+ type OndoDepositAddressRecord,
24
+ type OndoDepositPolicyMarker,
25
+ parseOndoDepositAddress,
26
+ } from './depositAddress.js'
19
27
  export { estimateLiquidationPrice } from './liquidation.js'
20
28
  export { mapFundingActivity, mapLiquidationActivity } from './mapActivity.js'
21
29
  export { mapFill } from './mapFill.js'