@zofai/zo-sdk 0.1.93 → 0.1.94

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 (54) hide show
  1. package/dist/consts/deployments-slp-mainnet.json +1 -1
  2. package/dist/consts/deployments-usdz-mainnet.json +1 -1
  3. package/dist/consts/deployments-zlp-mainnet.json +1 -1
  4. package/dist/implementations/SLPDataAPI.cjs +212 -47
  5. package/dist/implementations/SLPDataAPI.cjs.map +1 -1
  6. package/dist/implementations/SLPDataAPI.d.cts +8 -1
  7. package/dist/implementations/SLPDataAPI.d.cts.map +1 -1
  8. package/dist/implementations/SLPDataAPI.d.mts +8 -1
  9. package/dist/implementations/SLPDataAPI.d.mts.map +1 -1
  10. package/dist/implementations/SLPDataAPI.mjs +212 -47
  11. package/dist/implementations/SLPDataAPI.mjs.map +1 -1
  12. package/dist/implementations/USDZDataAPI.cjs +197 -44
  13. package/dist/implementations/USDZDataAPI.cjs.map +1 -1
  14. package/dist/implementations/USDZDataAPI.d.cts +8 -1
  15. package/dist/implementations/USDZDataAPI.d.cts.map +1 -1
  16. package/dist/implementations/USDZDataAPI.d.mts +8 -1
  17. package/dist/implementations/USDZDataAPI.d.mts.map +1 -1
  18. package/dist/implementations/USDZDataAPI.mjs +197 -44
  19. package/dist/implementations/USDZDataAPI.mjs.map +1 -1
  20. package/dist/implementations/ZLPDataAPI.cjs +200 -46
  21. package/dist/implementations/ZLPDataAPI.cjs.map +1 -1
  22. package/dist/implementations/ZLPDataAPI.d.cts +8 -1
  23. package/dist/implementations/ZLPDataAPI.d.cts.map +1 -1
  24. package/dist/implementations/ZLPDataAPI.d.mts +8 -1
  25. package/dist/implementations/ZLPDataAPI.d.mts.map +1 -1
  26. package/dist/implementations/ZLPDataAPI.mjs +200 -46
  27. package/dist/implementations/ZLPDataAPI.mjs.map +1 -1
  28. package/dist/interfaces/base.d.cts +22 -0
  29. package/dist/interfaces/base.d.cts.map +1 -1
  30. package/dist/interfaces/base.d.mts +22 -0
  31. package/dist/interfaces/base.d.mts.map +1 -1
  32. package/dist/interfaces/slp.d.cts +6 -1
  33. package/dist/interfaces/slp.d.cts.map +1 -1
  34. package/dist/interfaces/slp.d.mts +6 -1
  35. package/dist/interfaces/slp.d.mts.map +1 -1
  36. package/dist/interfaces/usdz.d.cts +6 -1
  37. package/dist/interfaces/usdz.d.cts.map +1 -1
  38. package/dist/interfaces/usdz.d.mts +6 -1
  39. package/dist/interfaces/usdz.d.mts.map +1 -1
  40. package/dist/interfaces/zlp.d.cts +6 -1
  41. package/dist/interfaces/zlp.d.cts.map +1 -1
  42. package/dist/interfaces/zlp.d.mts +6 -1
  43. package/dist/interfaces/zlp.d.mts.map +1 -1
  44. package/package.json +1 -1
  45. package/src/consts/deployments-slp-mainnet.json +1 -1
  46. package/src/consts/deployments-usdz-mainnet.json +1 -1
  47. package/src/consts/deployments-zlp-mainnet.json +1 -1
  48. package/src/implementations/SLPDataAPI.ts +235 -19
  49. package/src/implementations/USDZDataAPI.ts +221 -16
  50. package/src/implementations/ZLPDataAPI.ts +222 -17
  51. package/src/interfaces/base.ts +26 -0
  52. package/src/interfaces/slp.ts +6 -0
  53. package/src/interfaces/usdz.ts +6 -0
  54. package/src/interfaces/zlp.ts +6 -0
@@ -3,7 +3,7 @@
3
3
  * Extends base interfaces with USDZ-specific implementations
4
4
  */
5
5
  import type { Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
6
- import type { IBaseAPI, IBaseCredential, IBaseDataAPI, IBaseFundingFeeModel, IBaseHistory, IBaseMarketInfo, IBaseMarketValuationInfo, IBaseOrderCapInfo, IBaseOrderInfo, IBasePositionCapInfo, IBasePositionConfig, IBasePositionInfo, IBaseRebaseFeeModel, IBaseReservingFeeModel, IBaseStakePool, IBaseSymbolInfo, IBaseVaultInfo } from "./base.cjs";
6
+ import type { IBaseAPI, IBaseCredential, IBaseDataAPI, IBaseFundingFeeModel, IBaseHistory, IBaseMarketInfo, IBaseMarketValuationInfo, IBaseOrderCapInfo, IBaseOrderInfo, IBasePositionCapInfo, IBasePositionConfig, IBasePositionInfo, IBaseRebaseFeeModel, IBaseReservingFeeModel, IBaseStakePool, IBaseSymbolInfo, IBaseVaultInfo, ISwapFeeBreakdown } from "./base.cjs";
7
7
  export interface IUSDZMarketValuationInfo extends IBaseMarketValuationInfo {
8
8
  /** Oracle price per vault token at valuation time (e.g. { sui: 1.5, usdc: 1.0 }) */
9
9
  vaultPrices?: Record<string, number>;
@@ -67,6 +67,10 @@ export interface IUSDZOiFundingState {
67
67
  enabled: boolean;
68
68
  last_update: number;
69
69
  model: IUSDZOiFundingModel;
70
+ /** OI cap for long side (optional; when set with maxOiShort, uses capped skew formula) */
71
+ maxOiLong?: number;
72
+ /** OI cap for short side (optional; when set with maxOiLong, uses capped skew formula) */
73
+ maxOiShort?: number;
70
74
  }
71
75
  /**
72
76
  * Price impact configuration for a trading symbol.
@@ -94,6 +98,7 @@ export interface IUSDZPriceImpactConfig {
94
98
  export interface IUSDZDataAPI extends IBaseDataAPI {
95
99
  getSymbolConfig: (indexToken: string, long: boolean) => Promise<IUSDZSymbolConfig | null>;
96
100
  getPriceImpactConfig: (indexToken: string) => Promise<IUSDZPriceImpactConfig | null>;
101
+ calculateSwapFeeBreakdown: (fromToken: string, toToken: string, fromAmount: number) => Promise<ISwapFeeBreakdown>;
97
102
  }
98
103
  export interface IUSDZAPI extends IBaseAPI {
99
104
  depositPtb: (coin: string, coinObjects: string[], amount: number, minAmountOut?: number, referralAddress?: string, sender?: string, tx?: Transaction, sponsoredTx?: boolean, suiCoinObjectsForPythUpdate?: string[]) => Promise<TransactionObjectArgument>;
@@ -1 +1 @@
1
- {"version":3,"file":"usdz.d.cts","sourceRoot":"","sources":["../../src/interfaces/usdz.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usdz.d.cts","sourceRoot":"","sources":["../../src/interfaces/usdz.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  * Extends base interfaces with USDZ-specific implementations
4
4
  */
5
5
  import type { Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
6
- import type { IBaseAPI, IBaseCredential, IBaseDataAPI, IBaseFundingFeeModel, IBaseHistory, IBaseMarketInfo, IBaseMarketValuationInfo, IBaseOrderCapInfo, IBaseOrderInfo, IBasePositionCapInfo, IBasePositionConfig, IBasePositionInfo, IBaseRebaseFeeModel, IBaseReservingFeeModel, IBaseStakePool, IBaseSymbolInfo, IBaseVaultInfo } from "./base.mjs";
6
+ import type { IBaseAPI, IBaseCredential, IBaseDataAPI, IBaseFundingFeeModel, IBaseHistory, IBaseMarketInfo, IBaseMarketValuationInfo, IBaseOrderCapInfo, IBaseOrderInfo, IBasePositionCapInfo, IBasePositionConfig, IBasePositionInfo, IBaseRebaseFeeModel, IBaseReservingFeeModel, IBaseStakePool, IBaseSymbolInfo, IBaseVaultInfo, ISwapFeeBreakdown } from "./base.mjs";
7
7
  export interface IUSDZMarketValuationInfo extends IBaseMarketValuationInfo {
8
8
  /** Oracle price per vault token at valuation time (e.g. { sui: 1.5, usdc: 1.0 }) */
9
9
  vaultPrices?: Record<string, number>;
@@ -67,6 +67,10 @@ export interface IUSDZOiFundingState {
67
67
  enabled: boolean;
68
68
  last_update: number;
69
69
  model: IUSDZOiFundingModel;
70
+ /** OI cap for long side (optional; when set with maxOiShort, uses capped skew formula) */
71
+ maxOiLong?: number;
72
+ /** OI cap for short side (optional; when set with maxOiLong, uses capped skew formula) */
73
+ maxOiShort?: number;
70
74
  }
71
75
  /**
72
76
  * Price impact configuration for a trading symbol.
@@ -94,6 +98,7 @@ export interface IUSDZPriceImpactConfig {
94
98
  export interface IUSDZDataAPI extends IBaseDataAPI {
95
99
  getSymbolConfig: (indexToken: string, long: boolean) => Promise<IUSDZSymbolConfig | null>;
96
100
  getPriceImpactConfig: (indexToken: string) => Promise<IUSDZPriceImpactConfig | null>;
101
+ calculateSwapFeeBreakdown: (fromToken: string, toToken: string, fromAmount: number) => Promise<ISwapFeeBreakdown>;
97
102
  }
98
103
  export interface IUSDZAPI extends IBaseAPI {
99
104
  depositPtb: (coin: string, coinObjects: string[], amount: number, minAmountOut?: number, referralAddress?: string, sender?: string, tx?: Transaction, sponsoredTx?: boolean, suiCoinObjectsForPythUpdate?: string[]) => Promise<TransactionObjectArgument>;
@@ -1 +1 @@
1
- {"version":3,"file":"usdz.d.mts","sourceRoot":"","sources":["../../src/interfaces/usdz.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,yBAAyB,EAAE,iCAAgC;AAEtF,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,wBAAwB,EACxB,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,cAAc,EACf,mBAAc;AAGf,MAAM,WAAW,wBAAyB,SAAQ,wBAAwB;IACxE,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACrC;AAED,MAAM,WAAW,cAAe,SAAQ,cAAc;CAAI;AAE1D,MAAM,WAAW,sBAAuB,SAAQ,sBAAsB;CAAI;AAE1E,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;CAAI;AAEtE,MAAM,WAAW,mBAAoB,SAAQ,mBAAmB;CAAI;AAEpE,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAAI;AAE5D,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAEvD;AAED,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;CAE3D;AAED,MAAM,WAAW,mBAAoB,SAAQ,mBAAmB;CAAI;AAEpE,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;CAAI;AAEtE,MAAM,WAAW,cAAe,SAAQ,cAAc;CAAI;AAE1D,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;CAAI;AAEhE,MAAM,WAAW,YAAa,SAAQ,YAAY;CAEjD;AAED,MAAM,WAAW,cAAe,SAAQ,cAAc;IAEpD,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,eAAgB,SAAQ,eAAe;CAEvD;AAGD,MAAM,WAAW,iCAAiC;IAChD,sCAAsC,EAAE,MAAM,CAAA;IAC9C,2BAA2B,EAAE,MAAM,CAAA;IACnC,+BAA+B,EAAE,OAAO,CAAA;IACxC,sCAAsC,EAAE,MAAM,CAAA;IAC9C,2BAA2B,EAAE,MAAM,CAAA;IACnC,+BAA+B,EAAE,OAAO,CAAA;IACxC,sCAAsC,EAAE,MAAM,CAAA;IAC9C,2BAA2B,EAAE,MAAM,CAAA;IACnC,+BAA+B,EAAE,OAAO,CAAA;CACzC;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,gBAAgB,EAAE,MAAM,CAAA;IACxB,wBAAwB,EAAE,OAAO,CAAA;IACjC,6BAA6B,EAAE,MAAM,CAAA;IACrC,qCAAqC,EAAE,OAAO,CAAA;IAC9C,uBAAuB,EAAE,iCAAiC,CAAA;CAC3D;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,MAAM,CAAA;CACZ;AACD,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,mBAAmB,CAAA;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAA;IACV,sDAAsD;IACtD,OAAO,EAAE,OAAO,CAAA;IAChB,wEAAwE;IACxE,cAAc,EAAE,MAAM,CAAA;IACtB,yDAAyD;IACzD,oBAAoB,EAAE,MAAM,CAAA;IAC5B,4CAA4C;IAC5C,kBAAkB,EAAE,MAAM,CAAA;IAC1B,uEAAuE;IACvE,cAAc,EAAE,MAAM,CAAA;IACtB,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAA;IACjB,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAA;IAClB,mFAAmF;IACnF,aAAa,EAAE,MAAM,CAAA;CACtB;AAGD,MAAM,WAAW,YAAa,SAAQ,YAAY;IAChD,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAA;IACzF,oBAAoB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAA;CACrF;AAGD,MAAM,WAAW,QAAS,SAAQ,QAAQ;IACxC,UAAU,EAAE,CACV,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,EACrB,eAAe,CAAC,EAAE,MAAM,EACxB,MAAM,CAAC,EAAE,MAAM,EACf,EAAE,CAAC,EAAE,WAAW,EAChB,WAAW,CAAC,EAAE,OAAO,EACrB,2BAA2B,CAAC,EAAE,MAAM,EAAE,KACnC,OAAO,CAAC,yBAAyB,CAAC,CAAA;IAEvC,oBAAoB,EAAE,CACpB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,yBAAyB,EACvC,YAAY,EAAE,MAAM,EACpB,EAAE,CAAC,EAAE,WAAW,KACb,OAAO,CAAC,WAAW,CAAC,CAAA;IAEzB,eAAe,EAAE,CACf,UAAU,EAAE,yBAAyB,EACrC,IAAI,EAAE,MAAM,EACZ,EAAE,CAAC,EAAE,WAAW,KACb,WAAW,CAAA;IAEhB,oBAAoB,EAAE,CACpB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,EAAE,EAAE,WAAW,KACZ,yBAAyB,CAAA;IAE9B,eAAe,EAAE,CACf,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,WAAW,KACZ,yBAAyB,CAAA;IAE9B,cAAc,EAAE,CACd,WAAW,EAAE,eAAe,EAAE,EAC9B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,WAAW,KACZ,yBAAyB,EAAE,CAAA;CACjC"}
1
+ {"version":3,"file":"usdz.d.mts","sourceRoot":"","sources":["../../src/interfaces/usdz.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  * Extends base interfaces with ZLP-specific implementations
4
4
  */
5
5
  import type { Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
6
- import type { IBaseAPI, IBaseCredential, IBaseDataAPI, IBaseFundingFeeModel, IBaseHistory, IBaseMarketInfo, IBaseMarketValuationInfo, IBaseOrderCapInfo, IBaseOrderInfo, IBasePositionCapInfo, IBasePositionConfig, IBasePositionInfo, IBaseRebaseFeeModel, IBaseReservingFeeModel, IBaseStakePool, IBaseSymbolInfo, IBaseVaultInfo } from "./base.cjs";
6
+ import type { IBaseAPI, IBaseCredential, IBaseDataAPI, IBaseFundingFeeModel, IBaseHistory, IBaseMarketInfo, IBaseMarketValuationInfo, IBaseOrderCapInfo, IBaseOrderInfo, IBasePositionCapInfo, IBasePositionConfig, IBasePositionInfo, IBaseRebaseFeeModel, IBaseReservingFeeModel, IBaseStakePool, IBaseSymbolInfo, IBaseVaultInfo, ISwapFeeBreakdown } from "./base.cjs";
7
7
  export interface IZLPMarketValuationInfo extends IBaseMarketValuationInfo {
8
8
  /** Oracle price per vault token at valuation time (e.g. { sui: 1.5, usdc: 1.0 }) */
9
9
  vaultPrices?: Record<string, number>;
@@ -67,6 +67,10 @@ export interface IZLPOiFundingState {
67
67
  enabled: boolean;
68
68
  last_update: number;
69
69
  model: IZLPOiFundingModel;
70
+ /** OI cap for long side (optional; when set with maxOiShort, uses capped skew formula) */
71
+ maxOiLong?: number;
72
+ /** OI cap for short side (optional; when set with maxOiLong, uses capped skew formula) */
73
+ maxOiShort?: number;
70
74
  }
71
75
  /**
72
76
  * Price impact configuration for a trading symbol.
@@ -94,6 +98,7 @@ export interface IZLPPriceImpactConfig {
94
98
  export interface IZLPDataAPI extends IBaseDataAPI {
95
99
  getSymbolConfig: (indexToken: string, long: boolean) => Promise<IZLPSymbolConfig | null>;
96
100
  getPriceImpactConfig: (indexToken: string) => Promise<IZLPPriceImpactConfig | null>;
101
+ calculateSwapFeeBreakdown: (fromToken: string, toToken: string, fromAmount: number) => Promise<ISwapFeeBreakdown>;
97
102
  }
98
103
  export interface IZLPAPI extends IBaseAPI {
99
104
  adminIssueLootbox: (coin: string, tiers: number[], beneficiaries: string[], amounts: number[], tx: Transaction) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"zlp.d.cts","sourceRoot":"","sources":["../../src/interfaces/zlp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zlp.d.cts","sourceRoot":"","sources":["../../src/interfaces/zlp.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,yBAAyB,EAAE,iCAAgC;AAEtF,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,wBAAwB,EACxB,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,cAAc,EACd,iBAAiB,EAClB,mBAAc;AAGf,MAAM,WAAW,uBAAwB,SAAQ,wBAAwB;IACvE,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACrC;AAED,MAAM,WAAW,aAAc,SAAQ,cAAc;CAAI;AAEzD,MAAM,WAAW,qBAAsB,SAAQ,sBAAsB;CAAI;AAEzE,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;CAAI;AAErE,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;CAAI;AAEnE,MAAM,WAAW,cAAe,SAAQ,eAAe;CAAI;AAE3D,MAAM,WAAW,cAAe,SAAQ,eAAe;CAEtD;AAED,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;CAE1D;AAED,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;CAAI;AAEnE,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;CAAI;AAErE,MAAM,WAAW,aAAc,SAAQ,cAAc;CAAI;AAEzD,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;CAAI;AAE/D,MAAM,WAAW,WAAY,SAAQ,YAAY;CAEhD;AAED,MAAM,WAAW,aAAc,SAAQ,cAAc;IAEnD,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,cAAe,SAAQ,eAAe;CAEtD;AAGD,MAAM,WAAW,gCAAgC;IAC/C,sCAAsC,EAAE,MAAM,CAAA;IAC9C,2BAA2B,EAAE,MAAM,CAAA;IACnC,+BAA+B,EAAE,OAAO,CAAA;IACxC,sCAAsC,EAAE,MAAM,CAAA;IAC9C,2BAA2B,EAAE,MAAM,CAAA;IACnC,+BAA+B,EAAE,OAAO,CAAA;IACxC,sCAAsC,EAAE,MAAM,CAAA;IAC9C,2BAA2B,EAAE,MAAM,CAAA;IACnC,+BAA+B,EAAE,OAAO,CAAA;CACzC;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,gBAAgB,EAAE,MAAM,CAAA;IACxB,wBAAwB,EAAE,OAAO,CAAA;IACjC,6BAA6B,EAAE,MAAM,CAAA;IACrC,qCAAqC,EAAE,OAAO,CAAA;IAC9C,uBAAuB,EAAE,gCAAgC,CAAA;CAC1D;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,MAAM,CAAA;CACZ;AACD,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,kBAAkB,CAAA;IACzB,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,0FAA0F;IAC1F,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,sDAAsD;IACtD,OAAO,EAAE,OAAO,CAAA;IAChB,wEAAwE;IACxE,cAAc,EAAE,MAAM,CAAA;IACtB,yDAAyD;IACzD,oBAAoB,EAAE,MAAM,CAAA;IAC5B,4CAA4C;IAC5C,kBAAkB,EAAE,MAAM,CAAA;IAC1B,uEAAuE;IACvE,cAAc,EAAE,MAAM,CAAA;IACtB,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAA;IACjB,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAA;IAClB,mFAAmF;IACnF,aAAa,EAAE,MAAM,CAAA;CACtB;AAGD,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAA;IACxF,oBAAoB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAA;IACnF,yBAAyB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAA;CAClH;AAGD,MAAM,WAAW,OAAQ,SAAQ,QAAQ;IACvC,iBAAiB,EAAE,CACjB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EAAE,EACf,aAAa,EAAE,MAAM,EAAE,EACvB,OAAO,EAAE,MAAM,EAAE,EACjB,EAAE,EAAE,WAAW,KACZ,IAAI,CAAA;IAET,kBAAkB,EAAE,CAClB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,EAAE,MAAM,KACX,WAAW,CAAA;IAEhB,qBAAqB,EAAE,CACrB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,KACX,WAAW,CAAA;IAEhB,WAAW,EAAE,CACX,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,KACZ,WAAW,CAAA;IAEhB,mBAAmB,EAAE,CACnB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EAAE,EACf,aAAa,EAAE,MAAM,EAAE,EACvB,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,EAAE,MAAM,EAAE,EAChB,YAAY,EAAE,MAAM,EAAE,EACtB,EAAE,EAAE,WAAW,KACZ,IAAI,CAAA;IAET,aAAa,EAAE,CACb,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,KACZ,WAAW,CAAA;IAEhB,0BAA0B,EAAE,CAC1B,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EAAE,EACvB,eAAe,EAAE,MAAM,EAAE,EACzB,aAAa,EAAE,MAAM,EAAE,EACvB,eAAe,EAAE,MAAM,EAAE,EACzB,EAAE,EAAE,WAAW,KACZ,IAAI,CAAA;IAET,eAAe,EAAE,CACf,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,KACnB,WAAW,CAAA;IAEhB,aAAa,EAAE,CACb,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,KACnB,WAAW,CAAA;IAEhB,uBAAuB,EAAE,CACvB,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,KACnB,WAAW,CAAA;IAEhB,UAAU,EAAE,CACV,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,EACrB,eAAe,CAAC,EAAE,MAAM,EACxB,MAAM,CAAC,EAAE,MAAM,EACf,EAAE,CAAC,EAAE,WAAW,EAChB,WAAW,CAAC,EAAE,OAAO,EACrB,2BAA2B,CAAC,EAAE,MAAM,EAAE,KACnC,OAAO,CAAC,yBAAyB,CAAC,CAAA;IAEvC,eAAe,EAAE,CACf,UAAU,EAAE,yBAAyB,EACrC,IAAI,EAAE,MAAM,EACZ,EAAE,CAAC,EAAE,WAAW,KACb,WAAW,CAAA;IAEhB,oBAAoB,EAAE,CACpB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,yBAAyB,EACvC,YAAY,EAAE,MAAM,EACpB,EAAE,CAAC,EAAE,WAAW,KACb,OAAO,CAAC,WAAW,CAAC,CAAA;IAEzB,oBAAoB,EAAE,CACpB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,EAAE,EAAE,WAAW,KACZ,yBAAyB,CAAA;IAE9B,eAAe,EAAE,CACf,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,WAAW,KACZ,yBAAyB,CAAA;IAE9B,cAAc,EAAE,CACd,WAAW,EAAE,cAAc,EAAE,EAC7B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,WAAW,KACZ,yBAAyB,EAAE,CAAA;CACjC"}
@@ -3,7 +3,7 @@
3
3
  * Extends base interfaces with ZLP-specific implementations
4
4
  */
5
5
  import type { Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
6
- import type { IBaseAPI, IBaseCredential, IBaseDataAPI, IBaseFundingFeeModel, IBaseHistory, IBaseMarketInfo, IBaseMarketValuationInfo, IBaseOrderCapInfo, IBaseOrderInfo, IBasePositionCapInfo, IBasePositionConfig, IBasePositionInfo, IBaseRebaseFeeModel, IBaseReservingFeeModel, IBaseStakePool, IBaseSymbolInfo, IBaseVaultInfo } from "./base.mjs";
6
+ import type { IBaseAPI, IBaseCredential, IBaseDataAPI, IBaseFundingFeeModel, IBaseHistory, IBaseMarketInfo, IBaseMarketValuationInfo, IBaseOrderCapInfo, IBaseOrderInfo, IBasePositionCapInfo, IBasePositionConfig, IBasePositionInfo, IBaseRebaseFeeModel, IBaseReservingFeeModel, IBaseStakePool, IBaseSymbolInfo, IBaseVaultInfo, ISwapFeeBreakdown } from "./base.mjs";
7
7
  export interface IZLPMarketValuationInfo extends IBaseMarketValuationInfo {
8
8
  /** Oracle price per vault token at valuation time (e.g. { sui: 1.5, usdc: 1.0 }) */
9
9
  vaultPrices?: Record<string, number>;
@@ -67,6 +67,10 @@ export interface IZLPOiFundingState {
67
67
  enabled: boolean;
68
68
  last_update: number;
69
69
  model: IZLPOiFundingModel;
70
+ /** OI cap for long side (optional; when set with maxOiShort, uses capped skew formula) */
71
+ maxOiLong?: number;
72
+ /** OI cap for short side (optional; when set with maxOiLong, uses capped skew formula) */
73
+ maxOiShort?: number;
70
74
  }
71
75
  /**
72
76
  * Price impact configuration for a trading symbol.
@@ -94,6 +98,7 @@ export interface IZLPPriceImpactConfig {
94
98
  export interface IZLPDataAPI extends IBaseDataAPI {
95
99
  getSymbolConfig: (indexToken: string, long: boolean) => Promise<IZLPSymbolConfig | null>;
96
100
  getPriceImpactConfig: (indexToken: string) => Promise<IZLPPriceImpactConfig | null>;
101
+ calculateSwapFeeBreakdown: (fromToken: string, toToken: string, fromAmount: number) => Promise<ISwapFeeBreakdown>;
97
102
  }
98
103
  export interface IZLPAPI extends IBaseAPI {
99
104
  adminIssueLootbox: (coin: string, tiers: number[], beneficiaries: string[], amounts: number[], tx: Transaction) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"zlp.d.mts","sourceRoot":"","sources":["../../src/interfaces/zlp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zlp.d.mts","sourceRoot":"","sources":["../../src/interfaces/zlp.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@zofai/zo-sdk",
3
3
  "type": "module",
4
- "version": "0.1.93",
4
+ "version": "0.1.94",
5
5
  "author": "zo",
6
6
  "exports": {
7
7
  ".": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "sudo_core": {
3
3
  "package": "0xc44d97a4bc4e5a33ca847b72b123172c88a6328196b71414f32c3070233604b2",
4
- "upgraded_package": "0x60d75af192054ac52dce44b496f8d4c2ab27d4fd3dd0737aa69902b3170a78b7",
4
+ "upgraded_package": "0x133f18548e87ae085905f3dd4c9d5be9b9ceb9a9bd2d55f34a0804eb249db1ae",
5
5
  "upgrade_cap": "0x2092387c072fe18f91b57b9dde362f758259ee88d993a5faf569b4f2eb288b12",
6
6
  "admin_cap": "0x0b4183c84de542c6f9623acd521294ea7e8205a2a7a23f4fac97e964fe4da30e",
7
7
  "market": "0x4d753c2c69109cbeb806393956cfeba28d832354a37d59d9a019ee580f82893d",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "zo_core": {
3
3
  "package": "0x7fd8aba1652c58b6397c799fd375e748e5053145cb7e126d303e0a1545fd1fec",
4
- "upgraded_package": "0x9074c6ee5ca95af8356c676636a51a04baca03745ea5d25ce932b06a11612898",
4
+ "upgraded_package": "0x43779d65ae051458c5021f6bfe891a117c49b091132c6f3be2c714b02a4bcb25",
5
5
  "upgrade_cap": "0x2f67d379d3b9e256a9c4079de50f4bd336dcbda1bd90d1fcd61a9cc1dc369d69",
6
6
  "admin_cap": "0x63af8e78701327be98e0c44967389148c374f4ea7c7cf8acf64957b705ffd02d",
7
7
  "market": "0x3310c794d0bbc4b0421d2fedc74fbd5a028b09fe4d396cd5458786f4c52fa636",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "zo_core": {
3
3
  "package": "0xf7fade57462e56e2eff1d7adef32e4fd285b21fd81f983f407bb7110ca766cda",
4
- "upgraded_package": "0x8693f6ae1c2ea462c97bcbafa29974fd304cefc1d3aa457346594226603d8fe4",
4
+ "upgraded_package": "0x420dbbc3b14a2e1645a38b111dc1c381cae43f349ddf800540f8991efbce563d",
5
5
  "upgrade_cap": "0xcc96f78abe0b868afaab05954ccc6357afb5d379a21389d6eb88dda8b1f60052",
6
6
  "admin_cap": "0xbc10f6481f2b5d6185c73ee680aa90a60fe3854d9f638e00f7e00d3b6a88e2b8",
7
7
  "market": "0x35c667bd8c401036103992791a924f31df0d104256a9e2313acee5b1bcf05b7e",
@@ -37,6 +37,7 @@ import type {
37
37
  ISLPSymbolConfig,
38
38
  ISLPSymbolInfo,
39
39
  ISLPVaultInfo,
40
+ ISwapFeeBreakdown,
40
41
  } from '../interfaces'
41
42
  import { joinSymbol, parseSymbolKey, parseValue, suiSymbolToSymbol } from '../utils'
42
43
 
@@ -49,6 +50,20 @@ let aprResponse: GetCumulativeAprResponse = {}
49
50
 
50
51
  const SECONDS_PER_EIGHT_HOUR = 8 * 60 * 60 // 28800 seconds
51
52
 
53
+ interface SwapImpactConfig {
54
+ id: string
55
+ enabled: boolean
56
+ impactMultiplier: number
57
+ maxImpactRate: number
58
+ }
59
+
60
+ interface EmaVolatilityFeeConfig {
61
+ id: string
62
+ enabled: boolean
63
+ multiplier: number
64
+ maxFeeRate: number
65
+ }
66
+
52
67
  export class SLPDataAPI extends BaseDataAPI implements ISLPDataAPI {
53
68
  constructor(
54
69
  network: Network,
@@ -76,7 +91,7 @@ export class SLPDataAPI extends BaseDataAPI implements ISLPDataAPI {
76
91
  price: number,
77
92
  lpSupplyAmount: number,
78
93
  timestamp: number,
79
- oiModel?: ISLPOiFundingModel,
94
+ oiState?: ISLPOiFundingState,
80
95
  pairedOpeningSize?: number,
81
96
  ): number {
82
97
  const accFundingRate = SLPDataAPI.calcAccFundingFeeRate(
@@ -86,7 +101,7 @@ export class SLPDataAPI extends BaseDataAPI implements ISLPDataAPI {
86
101
  lpSupplyAmount,
87
102
  timestamp,
88
103
  symbol.long,
89
- oiModel,
104
+ oiState,
90
105
  pairedOpeningSize,
91
106
  )
92
107
  return symbol.unrealisedFundingFeeValue + (accFundingRate - symbol.accFundingRate) * symbol.openingSize
@@ -230,7 +245,7 @@ export class SLPDataAPI extends BaseDataAPI implements ISLPDataAPI {
230
245
  price,
231
246
  marketInfo.lpSupplyWithDecimals,
232
247
  Date.now() / 1000,
233
- oiState && oiState.enabled ? oiState.model : undefined,
248
+ oiState && oiState.enabled ? oiState : undefined,
234
249
  pairedInfo.openingSize,
235
250
  )
236
251
  const symbolValue = fundingFeeDelta + deltaSize
@@ -485,6 +500,177 @@ export class SLPDataAPI extends BaseDataAPI implements ISLPDataAPI {
485
500
  }
486
501
  }
487
502
 
503
+ public async calculateSwapFeeBreakdown(fromToken: string, toToken: string, fromAmount: number): Promise<ISwapFeeBreakdown> {
504
+ if (!this.consts.sudoCore) {
505
+ throw new Error('Sudo Core configuration not found. Make sure you are using LPToken.SLP')
506
+ }
507
+
508
+ const timestamp = Date.now() / 1000
509
+
510
+ const fromDecimals = this.consts.coins[fromToken]?.decimals
511
+ const toDecimals = this.consts.coins[toToken]?.decimals
512
+ if (fromDecimals === undefined || toDecimals === undefined) {
513
+ throw new Error(`Unknown token decimals for swap: ${fromToken} -> ${toToken}`)
514
+ }
515
+
516
+ const fromFeed = await this.getOraclePrice(fromToken)
517
+ const toFeed = await this.getOraclePrice(toToken)
518
+ const fromPrice = fromFeed.getPriceUnchecked().getPriceAsNumberUnchecked()
519
+ const toPrice = toFeed.getPriceUnchecked().getPriceAsNumberUnchecked()
520
+
521
+ const swapValue = (fromAmount * fromPrice) / (10 ** fromDecimals)
522
+ const totalVaultsValue = await this.#getTotalVaultsValueUsd(timestamp)
523
+
524
+ const rebaseFeeInRate = await this.rebaseFeeRate(fromToken, true, fromAmount)
525
+ const rebaseFeeInValue = swapValue * rebaseFeeInRate
526
+
527
+ const estimatedToAmount = toPrice !== 0
528
+ ? (swapValue * (10 ** toDecimals)) / toPrice
529
+ : 0
530
+ const rebaseFeeOutRate = await this.rebaseFeeRate(toToken, false, estimatedToAmount)
531
+ const rebaseFeeOutValue = swapValue * rebaseFeeOutRate
532
+
533
+ const swapImpactCfg = await this.#getSwapImpactConfig()
534
+ const swapImpactFeeValue = swapImpactCfg?.enabled
535
+ ? SLPDataAPI.#computeSwapImpactFeeValue(swapValue, totalVaultsValue, swapImpactCfg.impactMultiplier, swapImpactCfg.maxImpactRate)
536
+ : 0
537
+
538
+ const emaCfg = await this.#getEmaVolatilityFeeConfig()
539
+ const emaVolatilityFeeValue = emaCfg?.enabled
540
+ ? SLPDataAPI.#computeEmaVolatilityFeeValue(
541
+ swapValue,
542
+ SLPDataAPI.#maxEmaDivergenceRate(fromFeed, toFeed),
543
+ emaCfg.multiplier,
544
+ emaCfg.maxFeeRate,
545
+ )
546
+ : 0
547
+
548
+ const totalFeeValue = rebaseFeeInValue + rebaseFeeOutValue + swapImpactFeeValue + emaVolatilityFeeValue
549
+ const totalFeeRate = swapValue !== 0 ? totalFeeValue / swapValue : 0
550
+
551
+ return {
552
+ swapValue,
553
+ totalVaultsValue,
554
+ rebaseFeeInRate,
555
+ rebaseFeeOutRate,
556
+ rebaseFeeInValue,
557
+ rebaseFeeOutValue,
558
+ swapImpactFeeValue,
559
+ emaVolatilityFeeValue,
560
+ totalFeeValue,
561
+ totalFeeRate,
562
+ }
563
+ }
564
+
565
+ async #getTotalVaultsValueUsd(timestamp: number): Promise<number> {
566
+ if (!this.consts.sudoCore) {
567
+ return 0
568
+ }
569
+ const vaultKeys = Object.keys(this.consts.sudoCore.vaults)
570
+ const vaultValues = await Promise.all(vaultKeys.map(async (vault) => {
571
+ const vaultInfo = await this.getVaultInfo(vault)
572
+ const reservingFeeDelta = SLPDataAPI.calculateVaultReservingFee(vaultInfo, vaultInfo.reservingFeeModel, timestamp)
573
+ const totalVaultAmount = reservingFeeDelta + vaultInfo.liquidity + vaultInfo.reservedAmount
574
+ const oraclePrice = (await this.getOraclePrice(vault)).getPriceUnchecked().getPriceAsNumberUnchecked()
575
+ const { decimals } = this.consts.coins[vault]
576
+ return totalVaultAmount * oraclePrice / (10 ** decimals)
577
+ }))
578
+ return vaultValues.reduce((acc, curr) => acc + curr, 0)
579
+ }
580
+
581
+ async #getSwapImpactConfig(): Promise<SwapImpactConfig | null> {
582
+ if (!this.consts.sudoCore) {
583
+ return null
584
+ }
585
+ const raw = await this.#getMarketDynamicFieldObjectByKeySuffix(this.consts.sudoCore.market, 'SwapImpactConfigKey')
586
+ if (!raw)
587
+ return null
588
+ return SLPDataAPI.#parseSwapImpactConfig(raw)
589
+ }
590
+
591
+ async #getEmaVolatilityFeeConfig(): Promise<EmaVolatilityFeeConfig | null> {
592
+ if (!this.consts.sudoCore) {
593
+ return null
594
+ }
595
+ const raw = await this.#getMarketDynamicFieldObjectByKeySuffix(this.consts.sudoCore.market, 'EmaVolatilityFeeConfigKey')
596
+ if (!raw)
597
+ return null
598
+ return SLPDataAPI.#parseEmaVolatilityFeeConfig(raw)
599
+ }
600
+
601
+ async #getMarketDynamicFieldObjectByKeySuffix(parentId: string, keyTypeSuffix: string): Promise<any | null> {
602
+ let cursor: string | null | undefined
603
+ let hasNextPage = true
604
+
605
+ while (hasNextPage) {
606
+ const page = await this.provider.getDynamicFields({ parentId, cursor })
607
+ for (const field of page.data) {
608
+ const type = (field.name as any)?.type
609
+ if (typeof type === 'string' && type.endsWith(`::${keyTypeSuffix}`)) {
610
+ return await this.provider.getDynamicFieldObject({
611
+ parentId,
612
+ name: field.name as any,
613
+ })
614
+ }
615
+ }
616
+ hasNextPage = page.hasNextPage
617
+ cursor = page.nextCursor
618
+ }
619
+ return null
620
+ }
621
+
622
+ static #parseSwapImpactConfig(raw: any): SwapImpactConfig {
623
+ const { fields } = raw.data.content
624
+ return {
625
+ id: fields.id.id,
626
+ enabled: fields.enabled,
627
+ impactMultiplier: parseValue(fields.impact_multiplier),
628
+ maxImpactRate: parseValue(fields.max_impact_rate),
629
+ }
630
+ }
631
+
632
+ static #parseEmaVolatilityFeeConfig(raw: any): EmaVolatilityFeeConfig {
633
+ const { fields } = raw.data.content
634
+ return {
635
+ id: fields.id.id,
636
+ enabled: fields.enabled,
637
+ multiplier: parseValue(fields.multiplier),
638
+ maxFeeRate: parseValue(fields.max_fee_rate),
639
+ }
640
+ }
641
+
642
+ static #computeSwapImpactFeeValue(swapValue: number, totalVaultsValue: number, impactMultiplier: number, maxImpactRate: number): number {
643
+ if (swapValue <= 0 || totalVaultsValue <= 0)
644
+ return 0
645
+ const utilization = swapValue / totalVaultsValue
646
+ const rawImpactRate = impactMultiplier * utilization
647
+ const impactRate = Math.min(rawImpactRate, maxImpactRate)
648
+ return swapValue * impactRate
649
+ }
650
+
651
+ static #computeEmaVolatilityFeeValue(swapValue: number, maxDiv: number, multiplier: number, maxFeeRate: number): number {
652
+ if (swapValue <= 0 || maxDiv <= 0)
653
+ return 0
654
+ const rawFeeRate = multiplier * maxDiv
655
+ const feeRate = Math.min(rawFeeRate, maxFeeRate)
656
+ return swapValue * feeRate
657
+ }
658
+
659
+ static #maxEmaDivergenceRate(sourceFeed: any, destFeed: any): number {
660
+ const sourceDiv = SLPDataAPI.#emaDivergenceRate(sourceFeed)
661
+ const destDiv = SLPDataAPI.#emaDivergenceRate(destFeed)
662
+ return Math.max(sourceDiv, destDiv)
663
+ }
664
+
665
+ static #emaDivergenceRate(priceFeed: any): number {
666
+ const price = priceFeed.getPriceUnchecked().getPriceAsNumberUnchecked()
667
+ const ema = priceFeed.getEmaPriceUnchecked().getPriceAsNumberUnchecked()
668
+ const denom = Math.abs(price)
669
+ if (denom === 0)
670
+ return 0
671
+ return Math.abs(price - ema) / denom
672
+ }
673
+
488
674
  public async getPositionInfoList(
489
675
  positionCapInfoList: ISLPPositionCapInfo[],
490
676
  owner: string,
@@ -717,6 +903,8 @@ export class SLPDataAPI extends BaseDataAPI implements ISLPDataAPI {
717
903
  longSymbol.openingSize,
718
904
  shortSymbol.openingSize,
719
905
  elapsed,
906
+ oiState.maxOiLong,
907
+ oiState.maxOiShort,
720
908
  )
721
909
  return long ? deltaRate : -deltaRate
722
910
  }
@@ -1096,7 +1284,7 @@ export class SLPDataAPI extends BaseDataAPI implements ISLPDataAPI {
1096
1284
  price: number,
1097
1285
  lpSupplyAmount: number,
1098
1286
  timestamp: number,
1099
- oiModel?: ISLPOiFundingModel,
1287
+ oiState?: ISLPOiFundingState,
1100
1288
  pairedOpeningSize?: number,
1101
1289
  ): number {
1102
1290
  const accFundingRate = this.calcAccFundingFeeRate(
@@ -1106,7 +1294,7 @@ export class SLPDataAPI extends BaseDataAPI implements ISLPDataAPI {
1106
1294
  lpSupplyAmount,
1107
1295
  timestamp,
1108
1296
  position.long,
1109
- oiModel,
1297
+ oiState,
1110
1298
  pairedOpeningSize,
1111
1299
  )
1112
1300
  return position.fundingFeeValue + (accFundingRate - position.lastFundingRate) * position.positionSize
@@ -1119,17 +1307,17 @@ export class SLPDataAPI extends BaseDataAPI implements ISLPDataAPI {
1119
1307
  lpSupplyAmount: number,
1120
1308
  timestamp: number,
1121
1309
  isLong: boolean,
1122
- oiModel?: ISLPOiFundingModel,
1310
+ oiState?: ISLPOiFundingState,
1123
1311
  pairedOpeningSize?: number,
1124
1312
  ): number {
1125
1313
  if (symbol.lastUpdate > 0) {
1126
1314
  const elapsed = timestamp - symbol.lastUpdate
1127
1315
  if (elapsed > 0) {
1128
- // Prefer OI-based delta when OI model and paired side are available
1129
- if (oiModel && typeof pairedOpeningSize === 'number') {
1316
+ // Prefer OI-based delta when OI state and paired side are available
1317
+ if (oiState?.enabled && oiState.model && typeof pairedOpeningSize === 'number') {
1130
1318
  const longSize = isLong ? symbol.openingSize : pairedOpeningSize
1131
1319
  const shortSize = isLong ? pairedOpeningSize : symbol.openingSize
1132
- const deltaRate = SLPDataAPI.calcOiFundingFeeRate(oiModel, longSize, shortSize, elapsed)
1320
+ const deltaRate = SLPDataAPI.calcOiFundingFeeRate(oiState.model, longSize, shortSize, elapsed, oiState.maxOiLong, oiState.maxOiShort)
1133
1321
  const appliedRate = isLong ? deltaRate : -deltaRate
1134
1322
  return symbol.accFundingRate + appliedRate
1135
1323
  }
@@ -1154,16 +1342,42 @@ export class SLPDataAPI extends BaseDataAPI implements ISLPDataAPI {
1154
1342
  return pnlPerRate >= 0 ? -secondsRate : secondsRate
1155
1343
  }
1156
1344
 
1157
- private static calcOiFundingFeeRate(model: ISLPOiFundingModel, longSize: number, shortSize: number, elapsed: number): number {
1158
- const imbalance = Math.abs(longSize - shortSize)
1159
- const denom = longSize + shortSize > 0 ? longSize + shortSize : 1
1345
+ /**
1346
+ * OI funding rate matching Move compute_oi_funding_rate_capped.
1347
+ * When both maxOiLong and maxOiShort are set and > 0, uses normalized skew (oi/cap);
1348
+ * otherwise falls back to (long - short) / total.
1349
+ */
1350
+ private static calcOiFundingFeeRate(
1351
+ model: ISLPOiFundingModel,
1352
+ oiLong: number,
1353
+ oiShort: number,
1354
+ elapsed: number,
1355
+ maxOiLong?: number,
1356
+ maxOiShort?: number,
1357
+ ): number {
1358
+ let skew: number
1359
+ if (maxOiLong && maxOiShort && maxOiLong > 0 && maxOiShort > 0) {
1360
+ const normLong = Math.min(oiLong / maxOiLong, 1)
1361
+ const normShort = Math.min(oiShort / maxOiShort, 1)
1362
+ skew = normLong - normShort
1363
+ }
1364
+ else {
1365
+ const total = oiLong + oiShort
1366
+ if (total === 0)
1367
+ return 0
1368
+ skew = (oiLong - oiShort) / total
1369
+ }
1160
1370
 
1161
- const dailyRate = Math.min(
1162
- (model.multiplier * (imbalance ** model.exponent)) / denom,
1163
- model.max,
1164
- )
1165
- const secondsRate = dailyRate * elapsed / SECONDS_PER_EIGHT_HOUR
1166
- return longSize >= shortSize ? secondsRate : -secondsRate
1371
+ if (skew === 0)
1372
+ return 0
1373
+
1374
+ const skewIsPositive = skew > 0
1375
+ const skewAbs = Math.abs(skew)
1376
+ const exponentInt = Math.floor(model.exponent)
1377
+ const skewPow = skewAbs ** exponentInt
1378
+ const dailyRate = Math.min(model.multiplier * skewPow, model.max)
1379
+ const secondsRate = (dailyRate * elapsed) / SECONDS_PER_EIGHT_HOUR
1380
+ return skewIsPositive ? secondsRate : -secondsRate
1167
1381
  }
1168
1382
 
1169
1383
  private static calculatePositionReserveFee(position: ISLPPositionInfo, vault: ISLPVaultInfo, model: ISLPReservingFeeModel, timestamp: number): number {
@@ -1496,6 +1710,8 @@ export class SLPDataAPI extends BaseDataAPI implements ISLPDataAPI {
1496
1710
  exponent: parseValue(content.model.fields.exponent),
1497
1711
  max: parseValue(content.model.fields.max),
1498
1712
  },
1713
+ maxOiLong: content.max_oi_long !== null && content.max_oi_long !== undefined ? parseValue(content.max_oi_long) : undefined,
1714
+ maxOiShort: content.max_oi_short !== null && content.max_oi_short !== undefined ? parseValue(content.max_oi_short) : undefined,
1499
1715
  }
1500
1716
  }
1501
1717
 
@@ -1650,7 +1866,7 @@ export class SLPDataAPI extends BaseDataAPI implements ISLPDataAPI {
1650
1866
  (await this.getOraclePrice(positionInfo.indexToken)).getPriceUnchecked().getPriceAsNumberUnchecked(),
1651
1867
  (await this.getMarketInfo()).lpSupplyWithDecimals,
1652
1868
  Date.now() / 1000,
1653
- oiState && oiState.enabled ? oiState.model : undefined,
1869
+ oiState && oiState.enabled ? oiState : undefined,
1654
1870
  pairedSymbol.openingSize,
1655
1871
  )
1656
1872
  }