@zofai/zo-sdk 0.1.92

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 (275) hide show
  1. package/.claude/settings.local.json +9 -0
  2. package/.gitattributes +4 -0
  3. package/.prettierrc.js +9 -0
  4. package/README.md +28 -0
  5. package/dist/abstract/BaseAPI.cjs +206 -0
  6. package/dist/abstract/BaseAPI.cjs.map +1 -0
  7. package/dist/abstract/BaseAPI.d.cts +172 -0
  8. package/dist/abstract/BaseAPI.d.cts.map +1 -0
  9. package/dist/abstract/BaseAPI.d.mts +172 -0
  10. package/dist/abstract/BaseAPI.d.mts.map +1 -0
  11. package/dist/abstract/BaseAPI.mjs +202 -0
  12. package/dist/abstract/BaseAPI.mjs.map +1 -0
  13. package/dist/abstract/BaseDataAPI.cjs +140 -0
  14. package/dist/abstract/BaseDataAPI.cjs.map +1 -0
  15. package/dist/abstract/BaseDataAPI.d.cts +89 -0
  16. package/dist/abstract/BaseDataAPI.d.cts.map +1 -0
  17. package/dist/abstract/BaseDataAPI.d.mts +89 -0
  18. package/dist/abstract/BaseDataAPI.d.mts.map +1 -0
  19. package/dist/abstract/BaseDataAPI.mjs +136 -0
  20. package/dist/abstract/BaseDataAPI.mjs.map +1 -0
  21. package/dist/abstract/index.cjs +12 -0
  22. package/dist/abstract/index.cjs.map +1 -0
  23. package/dist/abstract/index.d.cts +7 -0
  24. package/dist/abstract/index.d.cts.map +1 -0
  25. package/dist/abstract/index.d.mts +7 -0
  26. package/dist/abstract/index.d.mts.map +1 -0
  27. package/dist/abstract/index.mjs +7 -0
  28. package/dist/abstract/index.mjs.map +1 -0
  29. package/dist/api.cjs +779 -0
  30. package/dist/api.cjs.map +1 -0
  31. package/dist/api.d.cts +75 -0
  32. package/dist/api.d.cts.map +1 -0
  33. package/dist/api.d.mts +75 -0
  34. package/dist/api.d.mts.map +1 -0
  35. package/dist/api.mjs +775 -0
  36. package/dist/api.mjs.map +1 -0
  37. package/dist/bcs.cjs +42 -0
  38. package/dist/bcs.cjs.map +1 -0
  39. package/dist/bcs.d.cts +91 -0
  40. package/dist/bcs.d.cts.map +1 -0
  41. package/dist/bcs.d.mts +91 -0
  42. package/dist/bcs.d.mts.map +1 -0
  43. package/dist/bcs.mjs +39 -0
  44. package/dist/bcs.mjs.map +1 -0
  45. package/dist/consts/deployments-shared-mainnet.json +50 -0
  46. package/dist/consts/deployments-shared-testnet.json +45 -0
  47. package/dist/consts/deployments-slp-mainnet.json +600 -0
  48. package/dist/consts/deployments-slp-testnet.json +87 -0
  49. package/dist/consts/deployments-usdz-mainnet.json +494 -0
  50. package/dist/consts/deployments-usdz-testnet.json +98 -0
  51. package/dist/consts/deployments-zbtcvc-mainnet.json +180 -0
  52. package/dist/consts/deployments-zlp-mainnet.json +791 -0
  53. package/dist/consts/deployments-zlp-testnet.json +76 -0
  54. package/dist/consts/index.cjs +200 -0
  55. package/dist/consts/index.cjs.map +1 -0
  56. package/dist/consts/index.d.cts +157 -0
  57. package/dist/consts/index.d.cts.map +1 -0
  58. package/dist/consts/index.d.mts +157 -0
  59. package/dist/consts/index.d.mts.map +1 -0
  60. package/dist/consts/index.mjs +189 -0
  61. package/dist/consts/index.mjs.map +1 -0
  62. package/dist/consts/price_id_to_object_id.mainnet.json +56 -0
  63. package/dist/consts/price_id_to_object_id.testnet.json +17 -0
  64. package/dist/data.cjs +919 -0
  65. package/dist/data.cjs.map +1 -0
  66. package/dist/data.d.cts +235 -0
  67. package/dist/data.d.cts.map +1 -0
  68. package/dist/data.d.mts +235 -0
  69. package/dist/data.d.mts.map +1 -0
  70. package/dist/data.mjs +915 -0
  71. package/dist/data.mjs.map +1 -0
  72. package/dist/factory/SDKFactory.cjs +228 -0
  73. package/dist/factory/SDKFactory.cjs.map +1 -0
  74. package/dist/factory/SDKFactory.d.cts +84 -0
  75. package/dist/factory/SDKFactory.d.cts.map +1 -0
  76. package/dist/factory/SDKFactory.d.mts +84 -0
  77. package/dist/factory/SDKFactory.d.mts.map +1 -0
  78. package/dist/factory/SDKFactory.mjs +222 -0
  79. package/dist/factory/SDKFactory.mjs.map +1 -0
  80. package/dist/implementations/SLPAPI.cjs +1794 -0
  81. package/dist/implementations/SLPAPI.cjs.map +1 -0
  82. package/dist/implementations/SLPAPI.d.cts +183 -0
  83. package/dist/implementations/SLPAPI.d.cts.map +1 -0
  84. package/dist/implementations/SLPAPI.d.mts +183 -0
  85. package/dist/implementations/SLPAPI.d.mts.map +1 -0
  86. package/dist/implementations/SLPAPI.mjs +1790 -0
  87. package/dist/implementations/SLPAPI.mjs.map +1 -0
  88. package/dist/implementations/SLPDataAPI.cjs +1384 -0
  89. package/dist/implementations/SLPDataAPI.cjs.map +1 -0
  90. package/dist/implementations/SLPDataAPI.d.cts +158 -0
  91. package/dist/implementations/SLPDataAPI.d.cts.map +1 -0
  92. package/dist/implementations/SLPDataAPI.d.mts +158 -0
  93. package/dist/implementations/SLPDataAPI.d.mts.map +1 -0
  94. package/dist/implementations/SLPDataAPI.mjs +1380 -0
  95. package/dist/implementations/SLPDataAPI.mjs.map +1 -0
  96. package/dist/implementations/USDZAPI.cjs +1676 -0
  97. package/dist/implementations/USDZAPI.cjs.map +1 -0
  98. package/dist/implementations/USDZAPI.d.cts +180 -0
  99. package/dist/implementations/USDZAPI.d.cts.map +1 -0
  100. package/dist/implementations/USDZAPI.d.mts +180 -0
  101. package/dist/implementations/USDZAPI.d.mts.map +1 -0
  102. package/dist/implementations/USDZAPI.mjs +1672 -0
  103. package/dist/implementations/USDZAPI.mjs.map +1 -0
  104. package/dist/implementations/USDZDataAPI.cjs +1209 -0
  105. package/dist/implementations/USDZDataAPI.cjs.map +1 -0
  106. package/dist/implementations/USDZDataAPI.d.cts +191 -0
  107. package/dist/implementations/USDZDataAPI.d.cts.map +1 -0
  108. package/dist/implementations/USDZDataAPI.d.mts +191 -0
  109. package/dist/implementations/USDZDataAPI.d.mts.map +1 -0
  110. package/dist/implementations/USDZDataAPI.mjs +1205 -0
  111. package/dist/implementations/USDZDataAPI.mjs.map +1 -0
  112. package/dist/implementations/ZBTCVCAPI.cjs +906 -0
  113. package/dist/implementations/ZBTCVCAPI.cjs.map +1 -0
  114. package/dist/implementations/ZBTCVCAPI.d.cts +107 -0
  115. package/dist/implementations/ZBTCVCAPI.d.cts.map +1 -0
  116. package/dist/implementations/ZBTCVCAPI.d.mts +107 -0
  117. package/dist/implementations/ZBTCVCAPI.d.mts.map +1 -0
  118. package/dist/implementations/ZBTCVCAPI.mjs +902 -0
  119. package/dist/implementations/ZBTCVCAPI.mjs.map +1 -0
  120. package/dist/implementations/ZBTCVCDataAPI.cjs +829 -0
  121. package/dist/implementations/ZBTCVCDataAPI.cjs.map +1 -0
  122. package/dist/implementations/ZBTCVCDataAPI.d.cts +94 -0
  123. package/dist/implementations/ZBTCVCDataAPI.d.cts.map +1 -0
  124. package/dist/implementations/ZBTCVCDataAPI.d.mts +94 -0
  125. package/dist/implementations/ZBTCVCDataAPI.d.mts.map +1 -0
  126. package/dist/implementations/ZBTCVCDataAPI.mjs +825 -0
  127. package/dist/implementations/ZBTCVCDataAPI.mjs.map +1 -0
  128. package/dist/implementations/ZLPAPI.cjs +1948 -0
  129. package/dist/implementations/ZLPAPI.cjs.map +1 -0
  130. package/dist/implementations/ZLPAPI.d.cts +192 -0
  131. package/dist/implementations/ZLPAPI.d.cts.map +1 -0
  132. package/dist/implementations/ZLPAPI.d.mts +192 -0
  133. package/dist/implementations/ZLPAPI.d.mts.map +1 -0
  134. package/dist/implementations/ZLPAPI.mjs +1944 -0
  135. package/dist/implementations/ZLPAPI.mjs.map +1 -0
  136. package/dist/implementations/ZLPDataAPI.cjs +1267 -0
  137. package/dist/implementations/ZLPDataAPI.cjs.map +1 -0
  138. package/dist/implementations/ZLPDataAPI.d.cts +193 -0
  139. package/dist/implementations/ZLPDataAPI.d.cts.map +1 -0
  140. package/dist/implementations/ZLPDataAPI.d.mts +193 -0
  141. package/dist/implementations/ZLPDataAPI.d.mts.map +1 -0
  142. package/dist/implementations/ZLPDataAPI.mjs +1263 -0
  143. package/dist/implementations/ZLPDataAPI.mjs.map +1 -0
  144. package/dist/implementations/index.cjs +26 -0
  145. package/dist/implementations/index.cjs.map +1 -0
  146. package/dist/implementations/index.d.cts +13 -0
  147. package/dist/implementations/index.d.cts.map +1 -0
  148. package/dist/implementations/index.d.mts +13 -0
  149. package/dist/implementations/index.d.mts.map +1 -0
  150. package/dist/implementations/index.mjs +15 -0
  151. package/dist/implementations/index.mjs.map +1 -0
  152. package/dist/index.cjs +69 -0
  153. package/dist/index.cjs.map +1 -0
  154. package/dist/index.d.cts +51 -0
  155. package/dist/index.d.cts.map +1 -0
  156. package/dist/index.d.mts +51 -0
  157. package/dist/index.d.mts.map +1 -0
  158. package/dist/index.mjs +51 -0
  159. package/dist/index.mjs.map +1 -0
  160. package/dist/interfaces/base.cjs +7 -0
  161. package/dist/interfaces/base.cjs.map +1 -0
  162. package/dist/interfaces/base.d.cts +346 -0
  163. package/dist/interfaces/base.d.cts.map +1 -0
  164. package/dist/interfaces/base.d.mts +346 -0
  165. package/dist/interfaces/base.d.mts.map +1 -0
  166. package/dist/interfaces/base.mjs +6 -0
  167. package/dist/interfaces/base.mjs.map +1 -0
  168. package/dist/interfaces/index.cjs +31 -0
  169. package/dist/interfaces/index.cjs.map +1 -0
  170. package/dist/interfaces/index.d.cts +15 -0
  171. package/dist/interfaces/index.d.cts.map +1 -0
  172. package/dist/interfaces/index.d.mts +15 -0
  173. package/dist/interfaces/index.d.mts.map +1 -0
  174. package/dist/interfaces/index.mjs +15 -0
  175. package/dist/interfaces/index.mjs.map +1 -0
  176. package/dist/interfaces/slp.cjs +7 -0
  177. package/dist/interfaces/slp.cjs.map +1 -0
  178. package/dist/interfaces/slp.d.cts +179 -0
  179. package/dist/interfaces/slp.d.cts.map +1 -0
  180. package/dist/interfaces/slp.d.mts +179 -0
  181. package/dist/interfaces/slp.d.mts.map +1 -0
  182. package/dist/interfaces/slp.mjs +6 -0
  183. package/dist/interfaces/slp.mjs.map +1 -0
  184. package/dist/interfaces/usdz.cjs +7 -0
  185. package/dist/interfaces/usdz.cjs.map +1 -0
  186. package/dist/interfaces/usdz.d.cts +104 -0
  187. package/dist/interfaces/usdz.d.cts.map +1 -0
  188. package/dist/interfaces/usdz.d.mts +104 -0
  189. package/dist/interfaces/usdz.d.mts.map +1 -0
  190. package/dist/interfaces/usdz.mjs +6 -0
  191. package/dist/interfaces/usdz.mjs.map +1 -0
  192. package/dist/interfaces/zbtcvc.cjs +7 -0
  193. package/dist/interfaces/zbtcvc.cjs.map +1 -0
  194. package/dist/interfaces/zbtcvc.d.cts +64 -0
  195. package/dist/interfaces/zbtcvc.d.cts.map +1 -0
  196. package/dist/interfaces/zbtcvc.d.mts +64 -0
  197. package/dist/interfaces/zbtcvc.d.mts.map +1 -0
  198. package/dist/interfaces/zbtcvc.mjs +6 -0
  199. package/dist/interfaces/zbtcvc.mjs.map +1 -0
  200. package/dist/interfaces/zlp.cjs +7 -0
  201. package/dist/interfaces/zlp.cjs.map +1 -0
  202. package/dist/interfaces/zlp.d.cts +114 -0
  203. package/dist/interfaces/zlp.d.cts.map +1 -0
  204. package/dist/interfaces/zlp.d.mts +114 -0
  205. package/dist/interfaces/zlp.d.mts.map +1 -0
  206. package/dist/interfaces/zlp.mjs +6 -0
  207. package/dist/interfaces/zlp.mjs.map +1 -0
  208. package/dist/oracle.cjs +118 -0
  209. package/dist/oracle.cjs.map +1 -0
  210. package/dist/oracle.d.cts +25 -0
  211. package/dist/oracle.d.cts.map +1 -0
  212. package/dist/oracle.d.mts +25 -0
  213. package/dist/oracle.d.mts.map +1 -0
  214. package/dist/oracle.mjs +114 -0
  215. package/dist/oracle.mjs.map +1 -0
  216. package/dist/utils.cjs +129 -0
  217. package/dist/utils.cjs.map +1 -0
  218. package/dist/utils.d.cts +44 -0
  219. package/dist/utils.d.cts.map +1 -0
  220. package/dist/utils.d.mts +44 -0
  221. package/dist/utils.d.mts.map +1 -0
  222. package/dist/utils.mjs +115 -0
  223. package/dist/utils.mjs.map +1 -0
  224. package/docs/SUMMARY.md +10 -0
  225. package/docs/api-reference.md +32 -0
  226. package/docs/architecture.md +14 -0
  227. package/docs/common-operations.md +52 -0
  228. package/docs/error-handling.md +17 -0
  229. package/docs/getting-started.md +60 -0
  230. package/docs/introduction.md +15 -0
  231. package/docs/lp-specific-features.md +96 -0
  232. package/docs/type-safety.md +29 -0
  233. package/eslint.config.mjs +18 -0
  234. package/package.json +42 -0
  235. package/src/abstract/BaseAPI.ts +575 -0
  236. package/src/abstract/BaseDataAPI.ts +207 -0
  237. package/src/abstract/index.ts +7 -0
  238. package/src/api.ts +1100 -0
  239. package/src/bcs.ts +45 -0
  240. package/src/consts/deployments-shared-mainnet.json +50 -0
  241. package/src/consts/deployments-shared-testnet.json +45 -0
  242. package/src/consts/deployments-slp-mainnet.json +600 -0
  243. package/src/consts/deployments-slp-testnet.json +87 -0
  244. package/src/consts/deployments-usdz-mainnet.json +494 -0
  245. package/src/consts/deployments-usdz-testnet.json +98 -0
  246. package/src/consts/deployments-zbtcvc-mainnet.json +180 -0
  247. package/src/consts/deployments-zlp-mainnet.json +791 -0
  248. package/src/consts/deployments-zlp-testnet.json +76 -0
  249. package/src/consts/index.ts +345 -0
  250. package/src/consts/price_id_to_object_id.mainnet.json +56 -0
  251. package/src/consts/price_id_to_object_id.testnet.json +17 -0
  252. package/src/data.ts +1279 -0
  253. package/src/factory/SDKFactory.ts +340 -0
  254. package/src/implementations/SLPAPI.ts +2722 -0
  255. package/src/implementations/SLPDataAPI.ts +1839 -0
  256. package/src/implementations/USDZAPI.ts +2488 -0
  257. package/src/implementations/USDZDataAPI.ts +1548 -0
  258. package/src/implementations/ZBTCVCAPI.ts +1337 -0
  259. package/src/implementations/ZBTCVCDataAPI.ts +993 -0
  260. package/src/implementations/ZLPAPI.ts +2888 -0
  261. package/src/implementations/ZLPDataAPI.ts +1603 -0
  262. package/src/implementations/index.ts +16 -0
  263. package/src/index.ts +58 -0
  264. package/src/interfaces/base.ts +838 -0
  265. package/src/interfaces/index.ts +50 -0
  266. package/src/interfaces/slp.ts +268 -0
  267. package/src/interfaces/usdz.ts +181 -0
  268. package/src/interfaces/zbtcvc.ts +116 -0
  269. package/src/interfaces/zlp.ts +244 -0
  270. package/src/oracle.ts +153 -0
  271. package/src/utils.ts +168 -0
  272. package/tests/api.test.ts +219 -0
  273. package/tests/data.test.ts +156 -0
  274. package/tests/oracle.test.ts +33 -0
  275. package/tsconfig.json +22 -0
@@ -0,0 +1,340 @@
1
+ /* eslint-disable unicorn/empty-brace-spaces */
2
+ /**
3
+ * SDK Factory for creating appropriate SDK instances based on LP token type
4
+ * This is the main entry point for the re-architected SDK system
5
+ */
6
+
7
+ import type { SuiClient } from '@mysten/sui/client'
8
+
9
+ import type { LPToken, Network } from '../consts'
10
+ import { LPToken as LPTokenEnum } from '../consts'
11
+ // Import concrete implementations
12
+ import {
13
+ SLPAPI,
14
+ SLPDataAPI,
15
+ USDZAPI,
16
+ USDZDataAPI,
17
+ ZLPAPI,
18
+ ZLPDataAPI,
19
+ } from '../implementations'
20
+ import { ZBTCVCAPI } from '../implementations/ZBTCVCAPI'
21
+ import { ZBTCVCDataAPI } from '../implementations/ZBTCVCDataAPI'
22
+ import type {
23
+ IBaseAPI,
24
+ IBaseDataAPI,
25
+ ISDKFactory,
26
+ ISLPAPI,
27
+ ISLPDataAPI,
28
+ IUSDZAPI,
29
+ IUSDZDataAPI,
30
+ IZBTCVCAPI,
31
+ IZBTCVCDataAPI,
32
+ IZLPAPI,
33
+ IZLPDataAPI,
34
+ } from '../interfaces'
35
+
36
+ export class SDKFactory implements ISDKFactory {
37
+ private static instance: SDKFactory
38
+
39
+ // Singleton instances for DataAPI
40
+ private zlpDataAPIInstance: IZLPDataAPI | null = null
41
+ private slpDataAPIInstance: ISLPDataAPI | null = null
42
+ private usdzDataAPIInstance: IUSDZDataAPI | null = null
43
+ private zbtcvcDataAPIInstance: IZBTCVCDataAPI | null = null
44
+
45
+ // Singleton instances for API
46
+ private zlpAPIInstance: IZLPAPI | null = null
47
+ private slpAPIInstance: ISLPAPI | null = null
48
+ private usdzAPIInstance: IUSDZAPI | null = null
49
+ private zbtcvcAPIInstance: IZBTCVCAPI | null = null
50
+
51
+ private constructor() { }
52
+
53
+ /**
54
+ * Gets the singleton instance of the SDK factory
55
+ */
56
+ public static getInstance(): SDKFactory {
57
+ if (!SDKFactory.instance) {
58
+ SDKFactory.instance = new SDKFactory()
59
+ }
60
+ return SDKFactory.instance
61
+ }
62
+
63
+ /**
64
+ * Creates a DataAPI instance based on the LP token type (returns singleton)
65
+ */
66
+ public createDataAPI(
67
+ network: Network,
68
+ provider: SuiClient,
69
+ apiEndpoint: string,
70
+ connectionURL: string,
71
+ lpToken: LPToken,
72
+ ): IBaseDataAPI {
73
+ switch (lpToken) {
74
+ case LPTokenEnum.ZLP: {
75
+ if (!this.zlpDataAPIInstance) {
76
+ this.zlpDataAPIInstance = new ZLPDataAPI(network, provider, apiEndpoint, connectionURL)
77
+ }
78
+ return this.zlpDataAPIInstance
79
+ }
80
+ case LPTokenEnum.SLP: {
81
+ if (!this.slpDataAPIInstance) {
82
+ this.slpDataAPIInstance = new SLPDataAPI(network, provider, apiEndpoint, connectionURL)
83
+ }
84
+ return this.slpDataAPIInstance
85
+ }
86
+ case LPTokenEnum.USDZ: {
87
+ if (!this.usdzDataAPIInstance) {
88
+ this.usdzDataAPIInstance = new USDZDataAPI(network, provider, apiEndpoint, connectionURL)
89
+ }
90
+ return this.usdzDataAPIInstance
91
+ }
92
+ case LPTokenEnum.ZBTCVC: {
93
+ if (!this.zbtcvcDataAPIInstance) {
94
+ this.zbtcvcDataAPIInstance = new ZBTCVCDataAPI(network, provider, apiEndpoint, connectionURL)
95
+ }
96
+ return this.zbtcvcDataAPIInstance
97
+ }
98
+ default: {
99
+ throw new Error(`Unsupported LP token type: ${lpToken}`)
100
+ }
101
+ }
102
+ }
103
+
104
+ /**
105
+ * Creates an API instance based on the LP token type (returns singleton)
106
+ */
107
+ public createAPI(
108
+ network: Network,
109
+ provider: SuiClient,
110
+ apiEndpoint: string,
111
+ connectionURL: string,
112
+ lpToken: LPToken,
113
+ ): IBaseAPI {
114
+ switch (lpToken) {
115
+ case LPTokenEnum.ZLP: {
116
+ if (!this.zlpAPIInstance) {
117
+ this.zlpAPIInstance = new ZLPAPI(network, provider, apiEndpoint, connectionURL)
118
+ }
119
+ return this.zlpAPIInstance
120
+ }
121
+ case LPTokenEnum.SLP: {
122
+ if (!this.slpAPIInstance) {
123
+ this.slpAPIInstance = new SLPAPI(network, provider, apiEndpoint, connectionURL)
124
+ }
125
+ return this.slpAPIInstance
126
+ }
127
+ case LPTokenEnum.USDZ: {
128
+ if (!this.usdzAPIInstance) {
129
+ this.usdzAPIInstance = new USDZAPI(network, provider, apiEndpoint, connectionURL)
130
+ }
131
+ return this.usdzAPIInstance
132
+ }
133
+ case LPTokenEnum.ZBTCVC: {
134
+ if (!this.zbtcvcAPIInstance) {
135
+ this.zbtcvcAPIInstance = new ZBTCVCAPI(network, provider, apiEndpoint, connectionURL)
136
+ }
137
+ return this.zbtcvcAPIInstance
138
+ }
139
+ default: {
140
+ throw new Error(`Unsupported LP token type: ${lpToken}`)
141
+ }
142
+ }
143
+ }
144
+
145
+ /**
146
+ * Creates a typed DataAPI instance for ZLP (returns singleton)
147
+ */
148
+ public createZLPDataAPI(
149
+ network: Network,
150
+ provider: SuiClient,
151
+ apiEndpoint: string,
152
+ connectionURL: string,
153
+ ): IZLPDataAPI {
154
+ if (!this.zlpDataAPIInstance) {
155
+ this.zlpDataAPIInstance = new ZLPDataAPI(network, provider, apiEndpoint, connectionURL)
156
+ }
157
+ return this.zlpDataAPIInstance
158
+ }
159
+
160
+ /**
161
+ * Creates a typed API instance for ZLP (returns singleton)
162
+ */
163
+ public createZLPAPI(
164
+ network: Network,
165
+ provider: SuiClient,
166
+ apiEndpoint: string,
167
+ connectionURL: string,
168
+ ): IZLPAPI {
169
+ if (!this.zlpAPIInstance) {
170
+ this.zlpAPIInstance = new ZLPAPI(network, provider, apiEndpoint, connectionURL)
171
+ }
172
+ return this.zlpAPIInstance
173
+ }
174
+
175
+ /**
176
+ * Creates a typed DataAPI instance for SLP (returns singleton)
177
+ */
178
+ public createSLPDataAPI(
179
+ network: Network,
180
+ provider: SuiClient,
181
+ apiEndpoint: string,
182
+ connectionURL: string,
183
+ ): ISLPDataAPI {
184
+ if (!this.slpDataAPIInstance) {
185
+ this.slpDataAPIInstance = new SLPDataAPI(network, provider, apiEndpoint, connectionURL)
186
+ }
187
+ return this.slpDataAPIInstance
188
+ }
189
+
190
+ /**
191
+ * Creates a typed API instance for SLP (returns singleton)
192
+ */
193
+ public createSLPAPI(
194
+ network: Network,
195
+ provider: SuiClient,
196
+ apiEndpoint: string,
197
+ connectionURL: string,
198
+ ): ISLPAPI {
199
+ if (!this.slpAPIInstance) {
200
+ this.slpAPIInstance = new SLPAPI(network, provider, apiEndpoint, connectionURL)
201
+ }
202
+ return this.slpAPIInstance
203
+ }
204
+
205
+ /**
206
+ * Creates a typed DataAPI instance for USDZ (returns singleton)
207
+ */
208
+ public createUSDZDataAPI(
209
+ network: Network,
210
+ provider: SuiClient,
211
+ apiEndpoint: string,
212
+ connectionURL: string,
213
+ ): IUSDZDataAPI {
214
+ if (!this.usdzDataAPIInstance) {
215
+ this.usdzDataAPIInstance = new USDZDataAPI(network, provider, apiEndpoint, connectionURL)
216
+ }
217
+ return this.usdzDataAPIInstance
218
+ }
219
+
220
+ /**
221
+ * Creates a typed API instance for USDZ (returns singleton)
222
+ */
223
+ public createUSDZAPI(
224
+ network: Network,
225
+ provider: SuiClient,
226
+ apiEndpoint: string,
227
+ connectionURL: string,
228
+ ): IUSDZAPI {
229
+ if (!this.usdzAPIInstance) {
230
+ this.usdzAPIInstance = new USDZAPI(network, provider, apiEndpoint, connectionURL)
231
+ }
232
+ return this.usdzAPIInstance
233
+ }
234
+
235
+ /**
236
+ * Creates a typed DataAPI instance for USDZ (returns singleton)
237
+ */
238
+ public createZBTCVCDataAPI(
239
+ network: Network,
240
+ provider: SuiClient,
241
+ apiEndpoint: string,
242
+ connectionURL: string,
243
+ ): IZBTCVCDataAPI {
244
+ if (!this.zbtcvcDataAPIInstance) {
245
+ this.zbtcvcDataAPIInstance = new ZBTCVCDataAPI(network, provider, apiEndpoint, connectionURL)
246
+ }
247
+ return this.zbtcvcDataAPIInstance
248
+ }
249
+
250
+ /**
251
+ * Creates a typed API instance for USDZ (returns singleton)
252
+ */
253
+ public createZBTCVCAPI(
254
+ network: Network,
255
+ provider: SuiClient,
256
+ apiEndpoint: string,
257
+ connectionURL: string,
258
+ ): IZBTCVCAPI {
259
+ if (!this.zbtcvcAPIInstance) {
260
+ this.zbtcvcAPIInstance = new ZBTCVCAPI(network, provider, apiEndpoint, connectionURL)
261
+ }
262
+ return this.zbtcvcAPIInstance
263
+ }
264
+
265
+ /**
266
+ * Validates if a given LP token is supported
267
+ */
268
+ public static isLPTokenSupported(lpToken: string): lpToken is LPToken {
269
+ return Object.values(LPTokenEnum).includes(lpToken as LPToken)
270
+ }
271
+
272
+ /**
273
+ * Gets all supported LP token types
274
+ */
275
+ public static getSupportedLPTokens(): LPToken[] {
276
+ return Object.values(LPTokenEnum)
277
+ }
278
+
279
+ /**
280
+ * Clears all singleton instances (useful for testing or configuration changes)
281
+ */
282
+ public clearInstances(): void {
283
+ this.zlpDataAPIInstance = null
284
+ this.slpDataAPIInstance = null
285
+ this.usdzDataAPIInstance = null
286
+ this.zbtcvcAPIInstance = null
287
+ this.zlpAPIInstance = null
288
+ this.slpAPIInstance = null
289
+ this.usdzAPIInstance = null
290
+ this.zbtcvcAPIInstance = null
291
+ }
292
+
293
+ /**
294
+ * Creates the appropriate SDK instance based on string LP token type
295
+ * Useful for dynamic SDK creation from configuration
296
+ */
297
+ public createSDKFromString(
298
+ lpTokenString: string,
299
+ network: Network,
300
+ provider: SuiClient,
301
+ apiEndpoint: string,
302
+ connectionURL: string,
303
+ includeTrading = true,
304
+ ): IBaseDataAPI | IBaseAPI {
305
+ if (!SDKFactory.isLPTokenSupported(lpTokenString)) {
306
+ throw new Error(`Unsupported LP token: ${lpTokenString}`)
307
+ }
308
+
309
+ const lpToken = lpTokenString as LPToken
310
+
311
+ if (includeTrading) {
312
+ return this.createAPI(network, provider, apiEndpoint, connectionURL, lpToken)
313
+ }
314
+ return this.createDataAPI(network, provider, apiEndpoint, connectionURL, lpToken)
315
+ }
316
+ }
317
+
318
+ // Export convenience functions for backward compatibility
319
+ export function createDataAPI(
320
+ network: Network,
321
+ provider: SuiClient,
322
+ apiEndpoint: string,
323
+ connectionURL: string,
324
+ lpToken: LPToken,
325
+ ): IBaseDataAPI {
326
+ return SDKFactory.getInstance().createDataAPI(network, provider, apiEndpoint, connectionURL, lpToken)
327
+ }
328
+
329
+ export function createAPI(
330
+ network: Network,
331
+ provider: SuiClient,
332
+ apiEndpoint: string,
333
+ connectionURL: string,
334
+ lpToken: LPToken,
335
+ ): IBaseAPI {
336
+ return SDKFactory.getInstance().createAPI(network, provider, apiEndpoint, connectionURL, lpToken)
337
+ }
338
+
339
+ // Export the singleton instance for direct use
340
+ export const sdkFactory = SDKFactory.getInstance()