zo-sdk 0.0.51 → 0.1.1

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 (201) hide show
  1. package/README.md +272 -20
  2. package/dist/abstract/BaseAPI.cjs +117 -0
  3. package/dist/abstract/BaseAPI.cjs.map +1 -0
  4. package/dist/abstract/BaseAPI.d.cts +131 -0
  5. package/dist/abstract/BaseAPI.d.cts.map +1 -0
  6. package/dist/abstract/BaseAPI.d.mts +131 -0
  7. package/dist/abstract/BaseAPI.d.mts.map +1 -0
  8. package/dist/abstract/BaseAPI.mjs +113 -0
  9. package/dist/abstract/BaseAPI.mjs.map +1 -0
  10. package/dist/abstract/BaseDataAPI.cjs +139 -0
  11. package/dist/abstract/BaseDataAPI.cjs.map +1 -0
  12. package/dist/abstract/BaseDataAPI.d.cts +89 -0
  13. package/dist/abstract/BaseDataAPI.d.cts.map +1 -0
  14. package/dist/abstract/BaseDataAPI.d.mts +89 -0
  15. package/dist/abstract/BaseDataAPI.d.mts.map +1 -0
  16. package/dist/abstract/BaseDataAPI.mjs +135 -0
  17. package/dist/abstract/BaseDataAPI.mjs.map +1 -0
  18. package/dist/abstract/index.cjs +12 -0
  19. package/dist/abstract/index.cjs.map +1 -0
  20. package/dist/abstract/index.d.cts +7 -0
  21. package/dist/abstract/index.d.cts.map +1 -0
  22. package/dist/abstract/index.d.mts +7 -0
  23. package/dist/abstract/index.d.mts.map +1 -0
  24. package/dist/abstract/index.mjs +7 -0
  25. package/dist/abstract/index.mjs.map +1 -0
  26. package/dist/bcs.cjs +42 -0
  27. package/dist/bcs.cjs.map +1 -0
  28. package/dist/bcs.d.cts +91 -0
  29. package/dist/bcs.d.cts.map +1 -0
  30. package/dist/bcs.d.mts +91 -0
  31. package/dist/bcs.d.mts.map +1 -0
  32. package/dist/bcs.mjs +39 -0
  33. package/dist/bcs.mjs.map +1 -0
  34. package/dist/consts/deployments-slp-mainnet.json +710 -0
  35. package/dist/consts/deployments-slp-testnet.json +109 -0
  36. package/dist/consts/deployments-usdz-mainnet.json +180 -0
  37. package/dist/consts/deployments-usdz-testnet.json +98 -0
  38. package/dist/consts/{deployments-mainnet.json → deployments-zlp-mainnet.json} +278 -42
  39. package/dist/consts/index.cjs +49 -13
  40. package/dist/consts/index.cjs.map +1 -1
  41. package/dist/consts/index.d.cts +81 -11
  42. package/dist/consts/index.d.cts.map +1 -1
  43. package/dist/consts/index.d.mts +81 -11
  44. package/dist/consts/index.d.mts.map +1 -1
  45. package/dist/consts/index.mjs +48 -12
  46. package/dist/consts/index.mjs.map +1 -1
  47. package/dist/consts/price_id_to_object_id.mainnet.json +9 -1
  48. package/dist/factory/SDKFactory.cjs +185 -0
  49. package/dist/factory/SDKFactory.cjs.map +1 -0
  50. package/dist/factory/SDKFactory.d.cts +74 -0
  51. package/dist/factory/SDKFactory.d.cts.map +1 -0
  52. package/dist/factory/SDKFactory.d.mts +74 -0
  53. package/dist/factory/SDKFactory.d.mts.map +1 -0
  54. package/dist/factory/SDKFactory.mjs +179 -0
  55. package/dist/factory/SDKFactory.mjs.map +1 -0
  56. package/dist/implementations/SLPAPI.cjs +829 -0
  57. package/dist/implementations/SLPAPI.cjs.map +1 -0
  58. package/dist/implementations/SLPAPI.d.cts +120 -0
  59. package/dist/implementations/SLPAPI.d.cts.map +1 -0
  60. package/dist/implementations/SLPAPI.d.mts +120 -0
  61. package/dist/implementations/SLPAPI.d.mts.map +1 -0
  62. package/dist/implementations/SLPAPI.mjs +825 -0
  63. package/dist/implementations/SLPAPI.mjs.map +1 -0
  64. package/dist/implementations/SLPDataAPI.cjs +916 -0
  65. package/dist/implementations/SLPDataAPI.cjs.map +1 -0
  66. package/dist/implementations/SLPDataAPI.d.cts +102 -0
  67. package/dist/implementations/SLPDataAPI.d.cts.map +1 -0
  68. package/dist/implementations/SLPDataAPI.d.mts +102 -0
  69. package/dist/implementations/SLPDataAPI.d.mts.map +1 -0
  70. package/dist/implementations/SLPDataAPI.mjs +912 -0
  71. package/dist/implementations/SLPDataAPI.mjs.map +1 -0
  72. package/dist/implementations/USDZAPI.cjs +522 -0
  73. package/dist/implementations/USDZAPI.cjs.map +1 -0
  74. package/dist/implementations/USDZAPI.d.cts +118 -0
  75. package/dist/implementations/USDZAPI.d.cts.map +1 -0
  76. package/dist/implementations/USDZAPI.d.mts +118 -0
  77. package/dist/implementations/USDZAPI.d.mts.map +1 -0
  78. package/dist/implementations/USDZAPI.mjs +518 -0
  79. package/dist/implementations/USDZAPI.mjs.map +1 -0
  80. package/dist/implementations/USDZDataAPI.cjs +697 -0
  81. package/dist/implementations/USDZDataAPI.cjs.map +1 -0
  82. package/dist/implementations/USDZDataAPI.d.cts +86 -0
  83. package/dist/implementations/USDZDataAPI.d.cts.map +1 -0
  84. package/dist/implementations/USDZDataAPI.d.mts +86 -0
  85. package/dist/implementations/USDZDataAPI.d.mts.map +1 -0
  86. package/dist/implementations/USDZDataAPI.mjs +693 -0
  87. package/dist/implementations/USDZDataAPI.mjs.map +1 -0
  88. package/dist/implementations/ZLPAPI.cjs +809 -0
  89. package/dist/implementations/ZLPAPI.cjs.map +1 -0
  90. package/dist/implementations/ZLPAPI.d.cts +121 -0
  91. package/dist/implementations/ZLPAPI.d.cts.map +1 -0
  92. package/dist/implementations/ZLPAPI.d.mts +121 -0
  93. package/dist/implementations/ZLPAPI.d.mts.map +1 -0
  94. package/dist/implementations/ZLPAPI.mjs +805 -0
  95. package/dist/implementations/ZLPAPI.mjs.map +1 -0
  96. package/dist/implementations/ZLPDataAPI.cjs +724 -0
  97. package/dist/implementations/ZLPDataAPI.cjs.map +1 -0
  98. package/dist/implementations/ZLPDataAPI.d.cts +83 -0
  99. package/dist/implementations/ZLPDataAPI.d.cts.map +1 -0
  100. package/dist/implementations/ZLPDataAPI.d.mts +83 -0
  101. package/dist/implementations/ZLPDataAPI.d.mts.map +1 -0
  102. package/dist/implementations/ZLPDataAPI.mjs +720 -0
  103. package/dist/implementations/ZLPDataAPI.mjs.map +1 -0
  104. package/dist/implementations/index.cjs +22 -0
  105. package/dist/implementations/index.cjs.map +1 -0
  106. package/dist/implementations/index.d.cts +11 -0
  107. package/dist/implementations/index.d.cts.map +1 -0
  108. package/dist/implementations/index.d.mts +11 -0
  109. package/dist/implementations/index.d.mts.map +1 -0
  110. package/dist/implementations/index.mjs +13 -0
  111. package/dist/implementations/index.mjs.map +1 -0
  112. package/dist/index.cjs +47 -0
  113. package/dist/index.cjs.map +1 -1
  114. package/dist/index.d.cts +45 -0
  115. package/dist/index.d.cts.map +1 -1
  116. package/dist/index.d.mts +45 -0
  117. package/dist/index.d.mts.map +1 -1
  118. package/dist/index.mjs +45 -0
  119. package/dist/index.mjs.map +1 -1
  120. package/dist/interfaces/base.cjs +8 -0
  121. package/dist/interfaces/base.cjs.map +1 -0
  122. package/dist/interfaces/base.d.cts +293 -0
  123. package/dist/interfaces/base.d.cts.map +1 -0
  124. package/dist/interfaces/base.d.mts +293 -0
  125. package/dist/interfaces/base.d.mts.map +1 -0
  126. package/dist/interfaces/base.mjs +6 -0
  127. package/dist/interfaces/base.mjs.map +1 -0
  128. package/dist/interfaces/index.cjs +29 -0
  129. package/dist/interfaces/index.cjs.map +1 -0
  130. package/dist/interfaces/index.d.cts +13 -0
  131. package/dist/interfaces/index.d.cts.map +1 -0
  132. package/dist/interfaces/index.d.mts +13 -0
  133. package/dist/interfaces/index.d.mts.map +1 -0
  134. package/dist/interfaces/index.mjs +13 -0
  135. package/dist/interfaces/index.mjs.map +1 -0
  136. package/dist/interfaces/slp.cjs +9 -0
  137. package/dist/interfaces/slp.cjs.map +1 -0
  138. package/dist/interfaces/slp.d.cts +115 -0
  139. package/dist/interfaces/slp.d.cts.map +1 -0
  140. package/dist/interfaces/slp.d.mts +115 -0
  141. package/dist/interfaces/slp.d.mts.map +1 -0
  142. package/dist/interfaces/slp.mjs +7 -0
  143. package/dist/interfaces/slp.mjs.map +1 -0
  144. package/dist/interfaces/usdz.cjs +7 -0
  145. package/dist/interfaces/usdz.cjs.map +1 -0
  146. package/dist/interfaces/usdz.d.cts +40 -0
  147. package/dist/interfaces/usdz.d.cts.map +1 -0
  148. package/dist/interfaces/usdz.d.mts +40 -0
  149. package/dist/interfaces/usdz.d.mts.map +1 -0
  150. package/dist/interfaces/usdz.mjs +6 -0
  151. package/dist/interfaces/usdz.mjs.map +1 -0
  152. package/dist/interfaces/zlp.cjs +7 -0
  153. package/dist/interfaces/zlp.cjs.map +1 -0
  154. package/dist/interfaces/zlp.d.cts +45 -0
  155. package/dist/interfaces/zlp.d.cts.map +1 -0
  156. package/dist/interfaces/zlp.d.mts +45 -0
  157. package/dist/interfaces/zlp.d.mts.map +1 -0
  158. package/dist/interfaces/zlp.mjs +6 -0
  159. package/dist/interfaces/zlp.mjs.map +1 -0
  160. package/dist/oracle.cjs +7 -35
  161. package/dist/oracle.cjs.map +1 -1
  162. package/dist/oracle.d.cts +3 -4
  163. package/dist/oracle.d.cts.map +1 -1
  164. package/dist/oracle.d.mts +3 -4
  165. package/dist/oracle.d.mts.map +1 -1
  166. package/dist/oracle.mjs +8 -32
  167. package/dist/oracle.mjs.map +1 -1
  168. package/package.json +1 -1
  169. package/src/abstract/BaseAPI.ts +429 -0
  170. package/src/abstract/BaseDataAPI.ts +204 -0
  171. package/src/abstract/index.ts +7 -0
  172. package/src/bcs.ts +45 -0
  173. package/src/consts/deployments-slp-mainnet.json +710 -0
  174. package/src/consts/deployments-slp-testnet.json +109 -0
  175. package/src/consts/deployments-usdz-mainnet.json +180 -0
  176. package/src/consts/deployments-usdz-testnet.json +98 -0
  177. package/src/consts/{deployments-mainnet.json → deployments-zlp-mainnet.json} +279 -43
  178. package/src/consts/index.ts +143 -41
  179. package/src/consts/price_id_to_object_id.mainnet.json +10 -2
  180. package/src/factory/SDKFactory.ts +282 -0
  181. package/src/implementations/SLPAPI.ts +1207 -0
  182. package/src/implementations/SLPDataAPI.ts +1188 -0
  183. package/src/implementations/USDZAPI.ts +715 -0
  184. package/src/implementations/USDZDataAPI.ts +826 -0
  185. package/src/implementations/ZLPAPI.ts +1130 -0
  186. package/src/implementations/ZLPDataAPI.ts +856 -0
  187. package/src/implementations/index.ts +14 -0
  188. package/src/index.ts +53 -0
  189. package/src/interfaces/base.ts +556 -0
  190. package/src/interfaces/index.ts +45 -0
  191. package/src/interfaces/slp.ts +156 -0
  192. package/src/interfaces/usdz.ts +71 -0
  193. package/src/interfaces/zlp.ts +96 -0
  194. package/src/oracle.ts +12 -42
  195. package/tsconfig.json +4 -2
  196. package/dist/consts/staking/deployments-mainnet.json +0 -12
  197. package/dist/consts/staking/deployments-testnet.json +0 -11
  198. package/src/consts/staking/deployments-mainnet.json +0 -12
  199. package/src/consts/staking/deployments-testnet.json +0 -11
  200. /package/dist/consts/{deployments-testnet.json → deployments-zlp-testnet.json} +0 -0
  201. /package/src/consts/{deployments-testnet.json → deployments-zlp-testnet.json} +0 -0
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Abstract base class for all API implementations
3
+ * Extends BaseDataAPI with trading functionality
4
+ */
5
+ import type { SuiClient } from "@mysten/sui/client";
6
+ import { Transaction } from "@mysten/sui/transactions";
7
+ import type { Network, LPToken } from "../consts/index.mjs";
8
+ import type { IBaseAPI, IBaseCredential } from "../interfaces/index.mjs";
9
+ import { BaseDataAPI } from "./BaseDataAPI.mjs";
10
+ import { KioskClient, KioskOwnerCap } from "@mysten/kiosk";
11
+ export declare abstract class BaseAPI extends BaseDataAPI implements IBaseAPI {
12
+ constructor(network: Network, provider: SuiClient, apiEndpoint: string, connectionURL: string, lpToken: LPToken);
13
+ /**
14
+ * Processes coin objects for transactions
15
+ * Handles SUI gas coin and merges multiple coin objects if needed
16
+ */
17
+ protected processCoins(tx: Transaction, coin: string, coinObjects: string[]): {
18
+ $kind: "Input";
19
+ Input: number;
20
+ type?: "object";
21
+ } | {
22
+ $kind: "GasCoin";
23
+ GasCoin: true;
24
+ };
25
+ /**
26
+ * Processes slippage for price calculations
27
+ */
28
+ protected processSlippage(indexPrice: number, long: boolean, slippage: number): bigint;
29
+ /**
30
+ * Determines trade allowance based on order type
31
+ */
32
+ protected getTradeAllowance(isLimitOrder: boolean, isIocOrder: boolean): number;
33
+ abstract deposit(coin: string, coinObjects: string[], amount: number, minAmountOut?: number, referralAddress?: string, sender?: string): Promise<Transaction>;
34
+ abstract withdraw(coin: string, lpCoinObjects: string[], amount: number, minAmountOut?: number): Promise<Transaction>;
35
+ abstract swap(fromToken: string, toToken: string, fromAmount: bigint, fromCoinObjects: string[]): Promise<Transaction>;
36
+ abstract stake(lpCoinObjects: string[], amount: bigint, pool: string, tx?: Transaction): Promise<Transaction>;
37
+ abstract unstake(credentials: IBaseCredential[], amount: bigint, pool: string, tx?: Transaction): Promise<Transaction>;
38
+ abstract openPosition(collateralToken: string, indexToken: string, size: bigint, collateralAmount: bigint, coinObjects: string[], long: boolean, reserveAmount: bigint, indexPrice: number, collateralPrice: number, isLimitOrder?: boolean, isIocOrder?: boolean, pricesSlippage?: number, collateralSlippage?: number, relayerFee?: bigint, referralAddress?: string, sender?: string): Promise<Transaction>;
39
+ abstract decreasePosition(pcpId: string, collateralToken: string, indexToken: string, amount: bigint, long: boolean, indexPrice: number, collateralPrice: number, isTriggerOrder?: boolean, isTakeProfitOrder?: boolean, isIocOrder?: boolean, pricesSlippage?: number, collateralSlippage?: number, relayerFee?: bigint, coinObjects?: string[]): Promise<Transaction>;
40
+ abstract decreaseMultiPositions(positions: Array<{
41
+ pcpId: string;
42
+ collateralToken: string;
43
+ indexToken: string;
44
+ amount: bigint;
45
+ long: boolean;
46
+ indexPrice: number;
47
+ collateralPrice: number;
48
+ isTriggerOrder?: boolean;
49
+ isTakeProfitOrder?: boolean;
50
+ isIocOrder?: boolean;
51
+ pricesSlippage?: number;
52
+ collateralSlippage?: number;
53
+ relayerFee?: bigint;
54
+ coinObjects?: string[];
55
+ }>, tx?: Transaction): Promise<Transaction>;
56
+ abstract pledgeInPosition(pcpId: string, collateralToken: string, indexToken: string, amount: number, coinObjects: string[], long: boolean): Promise<Transaction>;
57
+ abstract redeemFromPosition(pcpId: string, collateralToken: string, indexToken: string, amount: number, long: boolean): Promise<Transaction>;
58
+ abstract cancelOrder(orderCapId: string, collateralToken: string, indexToken: string, long: boolean, type: string, isV11Order?: boolean): Promise<Transaction>;
59
+ abstract cancelMultiOrders(orders: Array<{
60
+ orderCapId: string;
61
+ collateralToken: string;
62
+ indexToken: string;
63
+ long: boolean;
64
+ type: string;
65
+ isV11Order?: boolean;
66
+ }>, tx?: Transaction): Promise<Transaction>;
67
+ abstract clearClosedPosition(pcpId: string, collateralToken: string, indexToken: string, long: boolean, tx: Transaction): void;
68
+ abstract clearOpenPositionOrder(orderCapId: string, collateralToken: string, indexToken: string, long: boolean, tx: Transaction, isV11Order?: boolean): void;
69
+ abstract clearDecreasePositionOrder(orderCapId: string, collateralToken: string, indexToken: string, long: boolean, tx: Transaction, isV11Order?: boolean): void;
70
+ abstract openPositionWithSCard(collateralToken: string, indexToken: string, size: bigint, collateralAmount: bigint, coinObjects: string[], long: boolean, reserveAmount: bigint, indexPrice: number, collateralPrice: number, kioskClient: KioskClient, kioskCap: KioskOwnerCap, scard: string, isLimitOrder?: boolean, isIocOrder?: boolean, pricesSlippage?: number, collateralSlippage?: number, relayerFee?: bigint, referralAddress?: string, sender?: string): Promise<Transaction>;
71
+ abstract decreasePositionWithSCard(pcpId: string, collateralToken: string, indexToken: string, amount: bigint, long: boolean, indexPrice: number, collateralPrice: number, kioskClient: KioskClient, kioskCap: KioskOwnerCap, scard: string, isTriggerOrder?: boolean, isTakeProfitOrder?: boolean, isIocOrder?: boolean, pricesSlippage?: number, collateralSlippage?: number, relayerFee?: bigint, coinObjects?: string[]): Promise<Transaction>;
72
+ abstract decreaseMultiPositionsWithSCard(positions: Array<{
73
+ pcpId: string;
74
+ collateralToken: string;
75
+ indexToken: string;
76
+ amount: bigint;
77
+ long: boolean;
78
+ indexPrice: number;
79
+ collateralPrice: number;
80
+ isTriggerOrder?: boolean;
81
+ isTakeProfitOrder?: boolean;
82
+ isIocOrder?: boolean;
83
+ pricesSlippage?: number;
84
+ collateralSlippage?: number;
85
+ relayerFee?: bigint;
86
+ coinObjects?: string[];
87
+ }>, kioskClient: KioskClient, kioskCap: KioskOwnerCap, scard: string, tx?: Transaction): Promise<Transaction>;
88
+ abstract claimTokenFromSCard(token: string, coinObjects: string[], kioskClient: KioskClient, kioskCap: KioskOwnerCap, scard: string): Promise<Transaction>;
89
+ abstract addReferral(referrer: string, tx?: Transaction): Transaction;
90
+ abstract adminUpdatePriceFeed(collateralToken: string, indexToken: string): Promise<Transaction>;
91
+ abstract adminSettlePosition(positionId: string, owner: string, collateralToken: string, indexToken: string, long: boolean): Promise<Transaction>;
92
+ abstract adminDecreasePosition(positionId: string, owner: string, collateralToken: string, indexToken: string, positionAmount: number, amount: bigint, long: boolean, collateralPrice?: number, collateralSlippage?: number, relayerFee?: bigint): Promise<Transaction>;
93
+ abstract adminClearClosedPosition(positionId: string, owner: string, collateralToken: string, indexToken: string, long: boolean, tx: Transaction): Promise<void>;
94
+ /**
95
+ * Helper method to initialize oracle transaction block
96
+ * This is commonly used across all LP token implementations
97
+ */
98
+ protected initOracleTransaction(tokens: string[], tx?: Transaction): Promise<Transaction>;
99
+ /**
100
+ * Helper method to add clock object to transaction
101
+ */
102
+ protected addClockToTransaction(tx: Transaction): {
103
+ $kind: "Input";
104
+ Input: number;
105
+ type?: "object";
106
+ };
107
+ /**
108
+ * Helper method to create move call arguments array
109
+ */
110
+ protected createMoveCallArgs(tx: Transaction, args: any[]): any[];
111
+ /**
112
+ * Helper method to validate transaction parameters
113
+ */
114
+ protected validateTransactionParams(params: {
115
+ coin?: string;
116
+ coinObjects?: string[];
117
+ amount?: number;
118
+ minAmountOut?: number;
119
+ }): void;
120
+ /**
121
+ * Helper method to validate position parameters
122
+ */
123
+ protected validatePositionParams(params: {
124
+ collateralToken: string;
125
+ indexToken: string;
126
+ size: bigint;
127
+ collateralAmount: bigint;
128
+ long: boolean;
129
+ }): void;
130
+ }
131
+ //# sourceMappingURL=BaseAPI.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseAPI.d.mts","sourceRoot":"","sources":["../../src/abstract/BaseAPI.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Abstract base class for all API implementations
3
+ * Extends BaseDataAPI with trading functionality
4
+ */
5
+ import { Transaction } from "@mysten/sui/transactions";
6
+ import { SUI_CLOCK_OBJECT_ID } from "@mysten/sui/utils";
7
+ import { ALLOW_TRADE_CAN_TRADE, ALLOW_TRADE_MUST_TRADE, ALLOW_TRADE_NO_TRADE } from "../consts/index.mjs";
8
+ import { BaseDataAPI } from "./BaseDataAPI.mjs";
9
+ import { KioskClient } from "@mysten/kiosk";
10
+ export class BaseAPI extends BaseDataAPI {
11
+ constructor(network, provider, apiEndpoint, connectionURL, lpToken) {
12
+ super(network, provider, apiEndpoint, connectionURL, lpToken);
13
+ }
14
+ /**
15
+ * Processes coin objects for transactions
16
+ * Handles SUI gas coin and merges multiple coin objects if needed
17
+ */
18
+ processCoins(tx, coin, coinObjects) {
19
+ if (coin === 'sui') {
20
+ return tx.gas;
21
+ }
22
+ if (coinObjects.length > 1) {
23
+ tx.mergeCoins(tx.object(coinObjects[0]), coinObjects.slice(1).map(coinObject => tx.object(coinObject)));
24
+ }
25
+ return tx.object(coinObjects[0]);
26
+ }
27
+ /**
28
+ * Processes slippage for price calculations
29
+ */
30
+ processSlippage(indexPrice, long, slippage) {
31
+ const raw = long ? indexPrice * (1 + slippage) : indexPrice * (1 - slippage);
32
+ return BigInt(Math.round(raw * 1e18));
33
+ }
34
+ /**
35
+ * Determines trade allowance based on order type
36
+ */
37
+ getTradeAllowance(isLimitOrder, isIocOrder) {
38
+ if (isLimitOrder) {
39
+ return isIocOrder ? ALLOW_TRADE_NO_TRADE : ALLOW_TRADE_CAN_TRADE;
40
+ }
41
+ return ALLOW_TRADE_MUST_TRADE;
42
+ }
43
+ /**
44
+ * Helper method to initialize oracle transaction block
45
+ * This is commonly used across all LP token implementations
46
+ */
47
+ async initOracleTransaction(tokens, tx) {
48
+ if (!tx) {
49
+ tx = new Transaction();
50
+ }
51
+ return await this.initOracleTxb(tokens, tx);
52
+ }
53
+ /**
54
+ * Helper method to add clock object to transaction
55
+ */
56
+ addClockToTransaction(tx) {
57
+ return tx.object(SUI_CLOCK_OBJECT_ID);
58
+ }
59
+ /**
60
+ * Helper method to create move call arguments array
61
+ */
62
+ createMoveCallArgs(tx, args) {
63
+ return args.map(arg => {
64
+ if (typeof arg === 'string' && arg.startsWith('0x')) {
65
+ return tx.object(arg);
66
+ }
67
+ if (typeof arg === 'number') {
68
+ return tx.pure.u64(arg);
69
+ }
70
+ if (typeof arg === 'bigint') {
71
+ return tx.pure.u256(arg);
72
+ }
73
+ return arg;
74
+ });
75
+ }
76
+ /**
77
+ * Helper method to validate transaction parameters
78
+ */
79
+ validateTransactionParams(params) {
80
+ const { coin, coinObjects, amount, minAmountOut } = params;
81
+ if (coin && !this.consts.coins[coin]) {
82
+ throw new Error(`Unsupported coin: ${coin}`);
83
+ }
84
+ if (coinObjects && coinObjects.length === 0) {
85
+ throw new Error('At least one coin object is required');
86
+ }
87
+ if (amount !== undefined && amount <= 0) {
88
+ throw new Error('Amount must be greater than 0');
89
+ }
90
+ if (minAmountOut !== undefined && minAmountOut < 0) {
91
+ throw new Error('Minimum amount out cannot be negative');
92
+ }
93
+ }
94
+ /**
95
+ * Helper method to validate position parameters
96
+ */
97
+ validatePositionParams(params) {
98
+ const { collateralToken, indexToken, size, collateralAmount } = params;
99
+ if (!this.consts.coins[collateralToken]) {
100
+ throw new Error(`Unsupported collateral token: ${collateralToken}`);
101
+ }
102
+ if (!this.consts.coins[indexToken]) {
103
+ throw new Error(`Unsupported index token: ${indexToken}`);
104
+ }
105
+ if (size <= 0n) {
106
+ throw new Error('Position size must be greater than 0');
107
+ }
108
+ if (collateralAmount <= 0n) {
109
+ throw new Error('Collateral amount must be greater than 0');
110
+ }
111
+ }
112
+ }
113
+ //# sourceMappingURL=BaseAPI.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseAPI.mjs","sourceRoot":"","sources":["../../src/abstract/BaseAPI.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ /**
3
+ * Abstract base class for all DataAPI implementations
4
+ * Provides common functionality and enforces interface contracts
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.BaseDataAPI = void 0;
8
+ const oracle_1 = require("../oracle.cjs");
9
+ class BaseDataAPI extends oracle_1.OracleAPI {
10
+ constructor(network, provider, apiEndpoint, connectionURL, lpToken) {
11
+ super(network, provider, connectionURL, lpToken);
12
+ // Cache management
13
+ this.vaultInfoCache = {};
14
+ this.symbolInfoCache = {};
15
+ this.marketInfoCache = null;
16
+ this.positionConfigCache = {};
17
+ this.rebaseFeeModelCache = null;
18
+ this.lastUpdate = 0;
19
+ this.CACHE_DURATION = 1000 * 60 * 3; // 3 minutes
20
+ this.provider = provider;
21
+ this.apiEndpoint = apiEndpoint;
22
+ this.connectionURL = connectionURL;
23
+ this.lpToken = lpToken;
24
+ }
25
+ /**
26
+ * Validates and clears cache if expired
27
+ */
28
+ validateCache() {
29
+ super.validateCache();
30
+ if (this.lastUpdate + this.CACHE_DURATION < Date.now()) {
31
+ this.clearCache();
32
+ }
33
+ }
34
+ /**
35
+ * Clears all cached data
36
+ */
37
+ clearCache() {
38
+ this.lastUpdate = Date.now();
39
+ this.vaultInfoCache = {};
40
+ this.symbolInfoCache = {};
41
+ this.marketInfoCache = null;
42
+ this.positionConfigCache = {};
43
+ this.rebaseFeeModelCache = null;
44
+ }
45
+ /**
46
+ * Gets cached vault info or fetches if not cached
47
+ */
48
+ async getCachedVaultInfo(vault) {
49
+ this.validateCache();
50
+ if (!this.vaultInfoCache[vault]) {
51
+ this.vaultInfoCache[vault] = await this.getVaultInfo(vault);
52
+ }
53
+ return this.vaultInfoCache[vault];
54
+ }
55
+ /**
56
+ * Gets cached symbol info or fetches if not cached
57
+ */
58
+ async getCachedSymbolInfo(tokenId, long) {
59
+ this.validateCache();
60
+ const key = `${tokenId}_${long}`;
61
+ if (!this.symbolInfoCache[key]) {
62
+ this.symbolInfoCache[key] = await this.getSymbolInfo(tokenId, long);
63
+ }
64
+ return this.symbolInfoCache[key];
65
+ }
66
+ /**
67
+ * Gets cached market info or fetches if not cached
68
+ */
69
+ async getCachedMarketInfo() {
70
+ this.validateCache();
71
+ if (!this.marketInfoCache) {
72
+ this.marketInfoCache = await this.getMarketInfo();
73
+ }
74
+ return this.marketInfoCache;
75
+ }
76
+ /**
77
+ * Gets cached position config or fetches if not cached
78
+ */
79
+ async getCachedPositionConfig(indexToken, long) {
80
+ this.validateCache();
81
+ const key = `${indexToken}_${long}`;
82
+ if (!this.positionConfigCache[key]) {
83
+ this.positionConfigCache[key] = await this.getPositionConfig(indexToken, long);
84
+ }
85
+ return this.positionConfigCache[key];
86
+ }
87
+ /**
88
+ * Gets cached rebase fee model or fetches if not cached
89
+ */
90
+ async getCachedRebaseFeeModel() {
91
+ this.validateCache();
92
+ if (!this.rebaseFeeModelCache) {
93
+ this.rebaseFeeModelCache = await this.getRebaseFeeModel();
94
+ }
95
+ return this.rebaseFeeModelCache;
96
+ }
97
+ /**
98
+ * Helper method to handle API requests with error handling
99
+ */
100
+ async makeAPIRequest(endpoint) {
101
+ try {
102
+ const response = await fetch(`${this.apiEndpoint}${endpoint}`);
103
+ if (!response.ok) {
104
+ throw new Error(`HTTP error! status: ${response.status}`);
105
+ }
106
+ return await response.json();
107
+ }
108
+ catch (error) {
109
+ console.error(`Error fetching data from ${endpoint}:`, error);
110
+ throw error;
111
+ }
112
+ }
113
+ /**
114
+ * Helper method to parse numeric values from API responses
115
+ */
116
+ parseNumericValue(value, decimals = 0) {
117
+ if (typeof value === 'string') {
118
+ return Number(value) / Math.pow(10, decimals);
119
+ }
120
+ if (typeof value === 'bigint') {
121
+ return Number(value) / Math.pow(10, decimals);
122
+ }
123
+ return Number(value) || 0;
124
+ }
125
+ /**
126
+ * Helper method to parse bigint values from API responses
127
+ */
128
+ parseBigIntValue(value) {
129
+ if (typeof value === 'string') {
130
+ return BigInt(value);
131
+ }
132
+ if (typeof value === 'bigint') {
133
+ return value;
134
+ }
135
+ return BigInt(Number(value) || 0);
136
+ }
137
+ }
138
+ exports.BaseDataAPI = BaseDataAPI;
139
+ //# sourceMappingURL=BaseDataAPI.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseDataAPI.cjs","sourceRoot":"","sources":["../../src/abstract/BaseDataAPI.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Abstract base class for all DataAPI implementations
3
+ * Provides common functionality and enforces interface contracts
4
+ */
5
+ import type { SuiClient } from "@mysten/sui/client";
6
+ import type { Transaction } from "@mysten/sui/transactions";
7
+ import type { Network, LPToken } from "../consts/index.cjs";
8
+ import type { IBaseDataAPI, IBaseMarketValuationInfo, IBaseMarketInfo, IBaseVaultInfo, IBaseSymbolInfo, IBasePositionInfo, IBasePositionConfig, IBasePositionCapInfo, IBaseOrderInfo, IBaseOrderCapInfo, IBaseHistoryResponse, IBaseStaked, IBaseRebaseFeeModel, IBaseStakePool } from "../interfaces/index.cjs";
9
+ import { OracleAPI } from "../oracle.cjs";
10
+ export declare abstract class BaseDataAPI extends OracleAPI implements IBaseDataAPI {
11
+ readonly provider: SuiClient;
12
+ readonly apiEndpoint: string;
13
+ readonly connectionURL: string;
14
+ readonly lpToken: LPToken;
15
+ protected vaultInfoCache: Record<string, IBaseVaultInfo>;
16
+ protected symbolInfoCache: Record<string, IBaseSymbolInfo>;
17
+ protected marketInfoCache: IBaseMarketInfo | null;
18
+ protected positionConfigCache: Record<string, IBasePositionConfig>;
19
+ protected rebaseFeeModelCache: IBaseRebaseFeeModel | null;
20
+ protected lastUpdate: number;
21
+ protected readonly CACHE_DURATION: number;
22
+ constructor(network: Network, provider: SuiClient, apiEndpoint: string, connectionURL: string, lpToken: LPToken);
23
+ /**
24
+ * Validates and clears cache if expired
25
+ */
26
+ validateCache(): void;
27
+ /**
28
+ * Clears all cached data
29
+ */
30
+ protected clearCache(): void;
31
+ /**
32
+ * Gets cached vault info or fetches if not cached
33
+ */
34
+ protected getCachedVaultInfo(vault: string): Promise<IBaseVaultInfo>;
35
+ /**
36
+ * Gets cached symbol info or fetches if not cached
37
+ */
38
+ protected getCachedSymbolInfo(tokenId: string, long: boolean): Promise<IBaseSymbolInfo>;
39
+ /**
40
+ * Gets cached market info or fetches if not cached
41
+ */
42
+ protected getCachedMarketInfo(): Promise<IBaseMarketInfo>;
43
+ /**
44
+ * Gets cached position config or fetches if not cached
45
+ */
46
+ protected getCachedPositionConfig(indexToken: string, long: boolean): Promise<IBasePositionConfig>;
47
+ /**
48
+ * Gets cached rebase fee model or fetches if not cached
49
+ */
50
+ protected getCachedRebaseFeeModel(): Promise<IBaseRebaseFeeModel>;
51
+ abstract valuateVaults(tx: Transaction): any;
52
+ abstract valuateSymbols(tx: Transaction): any;
53
+ abstract valuate(tx: Transaction): {
54
+ vaultsValuation: any;
55
+ symbolsValuation: any;
56
+ };
57
+ abstract valuateMarket(): Promise<IBaseMarketValuationInfo>;
58
+ abstract fundingFeeRate(indexToken: string, long: boolean, sender?: string): Promise<number>;
59
+ abstract rebaseFeeRate(collateralToken: string, increase: boolean, amount: number, sender?: string): Promise<number>;
60
+ abstract reservingFeeRate(collateralToken: string, amount: number, sender?: string): Promise<number>;
61
+ abstract getMarketInfo(): Promise<IBaseMarketInfo>;
62
+ abstract getVaultInfo(vault: string): Promise<IBaseVaultInfo>;
63
+ abstract getSymbolInfo(tokenId: string, long: boolean): Promise<IBaseSymbolInfo>;
64
+ abstract getPositionConfig(indexToken: string, long: boolean): Promise<IBasePositionConfig>;
65
+ abstract getRebaseFeeModel(): Promise<IBaseRebaseFeeModel>;
66
+ abstract getOpenPositions(batchSize: number, symbol: string): Promise<IBasePositionInfo[]>;
67
+ abstract getPositionCapInfoList(owner: string): Promise<IBasePositionCapInfo[]>;
68
+ abstract getPositionInfoList(positionCapInfoList: IBasePositionCapInfo[], owner: string): Promise<IBasePositionInfo[]>;
69
+ abstract getOrderCapInfoList(owner: string): Promise<IBaseOrderCapInfo[]>;
70
+ abstract getOrderInfoList(orderCapInfoList: IBaseOrderCapInfo[], owner: string): Promise<IBaseOrderInfo[]>;
71
+ abstract getHistory(trader: string, page: number, limit: number, orderType?: string, symbol?: string): Promise<IBaseHistoryResponse>;
72
+ abstract getStaked(owner: string): Promise<IBaseStaked>;
73
+ abstract getStakePool(): Promise<IBaseStakePool>;
74
+ abstract hasReferral(referree: string): Promise<boolean>;
75
+ abstract getReferralData(referree: string): Promise<any>;
76
+ /**
77
+ * Helper method to handle API requests with error handling
78
+ */
79
+ protected makeAPIRequest<T>(endpoint: string): Promise<T>;
80
+ /**
81
+ * Helper method to parse numeric values from API responses
82
+ */
83
+ protected parseNumericValue(value: any, decimals?: number): number;
84
+ /**
85
+ * Helper method to parse bigint values from API responses
86
+ */
87
+ protected parseBigIntValue(value: any): bigint;
88
+ }
89
+ //# sourceMappingURL=BaseDataAPI.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseDataAPI.d.cts","sourceRoot":"","sources":["../../src/abstract/BaseDataAPI.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Abstract base class for all DataAPI implementations
3
+ * Provides common functionality and enforces interface contracts
4
+ */
5
+ import type { SuiClient } from "@mysten/sui/client";
6
+ import type { Transaction } from "@mysten/sui/transactions";
7
+ import type { Network, LPToken } from "../consts/index.mjs";
8
+ import type { IBaseDataAPI, IBaseMarketValuationInfo, IBaseMarketInfo, IBaseVaultInfo, IBaseSymbolInfo, IBasePositionInfo, IBasePositionConfig, IBasePositionCapInfo, IBaseOrderInfo, IBaseOrderCapInfo, IBaseHistoryResponse, IBaseStaked, IBaseRebaseFeeModel, IBaseStakePool } from "../interfaces/index.mjs";
9
+ import { OracleAPI } from "../oracle.mjs";
10
+ export declare abstract class BaseDataAPI extends OracleAPI implements IBaseDataAPI {
11
+ readonly provider: SuiClient;
12
+ readonly apiEndpoint: string;
13
+ readonly connectionURL: string;
14
+ readonly lpToken: LPToken;
15
+ protected vaultInfoCache: Record<string, IBaseVaultInfo>;
16
+ protected symbolInfoCache: Record<string, IBaseSymbolInfo>;
17
+ protected marketInfoCache: IBaseMarketInfo | null;
18
+ protected positionConfigCache: Record<string, IBasePositionConfig>;
19
+ protected rebaseFeeModelCache: IBaseRebaseFeeModel | null;
20
+ protected lastUpdate: number;
21
+ protected readonly CACHE_DURATION: number;
22
+ constructor(network: Network, provider: SuiClient, apiEndpoint: string, connectionURL: string, lpToken: LPToken);
23
+ /**
24
+ * Validates and clears cache if expired
25
+ */
26
+ validateCache(): void;
27
+ /**
28
+ * Clears all cached data
29
+ */
30
+ protected clearCache(): void;
31
+ /**
32
+ * Gets cached vault info or fetches if not cached
33
+ */
34
+ protected getCachedVaultInfo(vault: string): Promise<IBaseVaultInfo>;
35
+ /**
36
+ * Gets cached symbol info or fetches if not cached
37
+ */
38
+ protected getCachedSymbolInfo(tokenId: string, long: boolean): Promise<IBaseSymbolInfo>;
39
+ /**
40
+ * Gets cached market info or fetches if not cached
41
+ */
42
+ protected getCachedMarketInfo(): Promise<IBaseMarketInfo>;
43
+ /**
44
+ * Gets cached position config or fetches if not cached
45
+ */
46
+ protected getCachedPositionConfig(indexToken: string, long: boolean): Promise<IBasePositionConfig>;
47
+ /**
48
+ * Gets cached rebase fee model or fetches if not cached
49
+ */
50
+ protected getCachedRebaseFeeModel(): Promise<IBaseRebaseFeeModel>;
51
+ abstract valuateVaults(tx: Transaction): any;
52
+ abstract valuateSymbols(tx: Transaction): any;
53
+ abstract valuate(tx: Transaction): {
54
+ vaultsValuation: any;
55
+ symbolsValuation: any;
56
+ };
57
+ abstract valuateMarket(): Promise<IBaseMarketValuationInfo>;
58
+ abstract fundingFeeRate(indexToken: string, long: boolean, sender?: string): Promise<number>;
59
+ abstract rebaseFeeRate(collateralToken: string, increase: boolean, amount: number, sender?: string): Promise<number>;
60
+ abstract reservingFeeRate(collateralToken: string, amount: number, sender?: string): Promise<number>;
61
+ abstract getMarketInfo(): Promise<IBaseMarketInfo>;
62
+ abstract getVaultInfo(vault: string): Promise<IBaseVaultInfo>;
63
+ abstract getSymbolInfo(tokenId: string, long: boolean): Promise<IBaseSymbolInfo>;
64
+ abstract getPositionConfig(indexToken: string, long: boolean): Promise<IBasePositionConfig>;
65
+ abstract getRebaseFeeModel(): Promise<IBaseRebaseFeeModel>;
66
+ abstract getOpenPositions(batchSize: number, symbol: string): Promise<IBasePositionInfo[]>;
67
+ abstract getPositionCapInfoList(owner: string): Promise<IBasePositionCapInfo[]>;
68
+ abstract getPositionInfoList(positionCapInfoList: IBasePositionCapInfo[], owner: string): Promise<IBasePositionInfo[]>;
69
+ abstract getOrderCapInfoList(owner: string): Promise<IBaseOrderCapInfo[]>;
70
+ abstract getOrderInfoList(orderCapInfoList: IBaseOrderCapInfo[], owner: string): Promise<IBaseOrderInfo[]>;
71
+ abstract getHistory(trader: string, page: number, limit: number, orderType?: string, symbol?: string): Promise<IBaseHistoryResponse>;
72
+ abstract getStaked(owner: string): Promise<IBaseStaked>;
73
+ abstract getStakePool(): Promise<IBaseStakePool>;
74
+ abstract hasReferral(referree: string): Promise<boolean>;
75
+ abstract getReferralData(referree: string): Promise<any>;
76
+ /**
77
+ * Helper method to handle API requests with error handling
78
+ */
79
+ protected makeAPIRequest<T>(endpoint: string): Promise<T>;
80
+ /**
81
+ * Helper method to parse numeric values from API responses
82
+ */
83
+ protected parseNumericValue(value: any, decimals?: number): number;
84
+ /**
85
+ * Helper method to parse bigint values from API responses
86
+ */
87
+ protected parseBigIntValue(value: any): bigint;
88
+ }
89
+ //# sourceMappingURL=BaseDataAPI.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseDataAPI.d.mts","sourceRoot":"","sources":["../../src/abstract/BaseDataAPI.ts"],"names":[],"mappings":"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"}