@reflectmoney/stable.ts 2.9.1 → 3.0.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 (513) hide show
  1. package/README.md +257 -126
  2. package/dist/classes/Migration.d.ts +66 -0
  3. package/dist/classes/Migration.js +95 -0
  4. package/dist/classes/PdaClient.d.ts +46 -68
  5. package/dist/classes/PdaClient.js +161 -141
  6. package/dist/classes/Reflect.d.ts +19 -5
  7. package/dist/classes/Reflect.js +23 -6
  8. package/dist/classes/ReflectKeeper.d.ts +79 -60
  9. package/dist/classes/ReflectKeeper.js +192 -163
  10. package/dist/classes/ReflectTokenisedBond.d.ts +37 -50
  11. package/dist/classes/ReflectTokenisedBond.js +70 -130
  12. package/dist/classes/Stablecoin.d.ts +90 -130
  13. package/dist/classes/Stablecoin.js +134 -247
  14. package/dist/classes/index.d.ts +1 -0
  15. package/dist/classes/index.js +1 -0
  16. package/dist/constants/devnet.d.ts +4 -4
  17. package/dist/constants/devnet.js +5 -5
  18. package/dist/constants/drift.d.ts +8 -6
  19. package/dist/constants/drift.js +12 -12
  20. package/dist/constants/index.d.ts +4 -2
  21. package/dist/constants/index.js +4 -2
  22. package/dist/constants/jupiter.d.ts +12 -4
  23. package/dist/constants/jupiter.js +17 -6
  24. package/dist/constants/kamino.d.ts +14 -0
  25. package/dist/constants/kamino.js +39 -0
  26. package/dist/constants/lookupTables.d.ts +3 -4
  27. package/dist/constants/lookupTables.js +5 -5
  28. package/dist/constants/mock.d.ts +2 -0
  29. package/dist/constants/mock.js +5 -0
  30. package/dist/constants/usdc.d.ts +6 -7
  31. package/dist/constants/usdc.js +8 -9
  32. package/dist/constants/usdt.d.ts +6 -0
  33. package/dist/constants/usdt.js +9 -0
  34. package/dist/constants/wsol.d.ts +6 -6
  35. package/dist/constants/wsol.js +6 -6
  36. package/dist/generated/reflect_main/accounts/driftUsdcController.d.ts +31 -0
  37. package/dist/generated/reflect_main/accounts/driftUsdcController.js +77 -0
  38. package/dist/generated/reflect_main/accounts/index.d.ts +11 -38
  39. package/dist/generated/reflect_main/accounts/index.js +11 -39
  40. package/dist/generated/reflect_main/accounts/main.d.ts +62 -0
  41. package/dist/generated/reflect_main/accounts/main.js +91 -0
  42. package/dist/generated/reflect_main/accounts/strategyController.d.ts +31 -0
  43. package/dist/generated/reflect_main/accounts/strategyController.js +77 -0
  44. package/dist/generated/reflect_main/accounts/userPermissions.d.ts +44 -0
  45. package/dist/generated/reflect_main/accounts/userPermissions.js +89 -0
  46. package/dist/generated/reflect_main/errors/index.d.ts +5 -966
  47. package/dist/generated/reflect_main/errors/index.js +21 -1663
  48. package/dist/generated/reflect_main/errors/reflectMain.d.ts +215 -0
  49. package/dist/generated/reflect_main/errors/reflectMain.js +323 -0
  50. package/dist/generated/reflect_main/index.d.ts +9 -16
  51. package/dist/generated/reflect_main/index.js +8 -16
  52. package/dist/generated/reflect_main/instructions/addLstDrift.d.ts +62 -45
  53. package/dist/generated/reflect_main/instructions/addLstDrift.js +155 -104
  54. package/dist/generated/reflect_main/instructions/addSubAccount.d.ts +74 -50
  55. package/dist/generated/reflect_main/instructions/addSubAccount.js +166 -119
  56. package/dist/generated/reflect_main/instructions/captureSpreadDrift.d.ts +70 -59
  57. package/dist/generated/reflect_main/instructions/captureSpreadDrift.js +167 -115
  58. package/dist/generated/reflect_main/instructions/createAdminAccount.d.ts +53 -46
  59. package/dist/generated/reflect_main/instructions/createAdminAccount.js +135 -91
  60. package/dist/generated/reflect_main/instructions/createDriftUserAccount.d.ts +78 -0
  61. package/dist/generated/reflect_main/instructions/createDriftUserAccount.js +184 -0
  62. package/dist/generated/reflect_main/instructions/createDriftUserStatsAccount.d.ts +74 -0
  63. package/dist/generated/reflect_main/instructions/createDriftUserStatsAccount.js +173 -0
  64. package/dist/generated/reflect_main/instructions/createKaminoUserAccounts.d.ts +144 -0
  65. package/dist/generated/reflect_main/instructions/createKaminoUserAccounts.js +395 -0
  66. package/dist/generated/reflect_main/instructions/depositDrift.d.ts +96 -66
  67. package/dist/generated/reflect_main/instructions/depositDrift.js +190 -139
  68. package/dist/generated/reflect_main/instructions/freezeProgram.d.ts +56 -47
  69. package/dist/generated/reflect_main/instructions/freezeProgram.js +139 -94
  70. package/dist/generated/reflect_main/instructions/freezeProtocolAction.d.ts +57 -48
  71. package/dist/generated/reflect_main/instructions/freezeProtocolAction.js +140 -95
  72. package/dist/generated/reflect_main/instructions/freezeStrategyAction.d.ts +61 -51
  73. package/dist/generated/reflect_main/instructions/freezeStrategyAction.js +145 -101
  74. package/dist/generated/reflect_main/instructions/increaseAdminSize.d.ts +40 -45
  75. package/dist/generated/reflect_main/instructions/increaseAdminSize.js +81 -90
  76. package/dist/generated/reflect_main/instructions/index.d.ts +45 -33
  77. package/dist/generated/reflect_main/instructions/index.js +19 -7
  78. package/dist/generated/reflect_main/instructions/initDriftControllerS1.d.ts +70 -53
  79. package/dist/generated/reflect_main/instructions/initDriftControllerS1.js +163 -100
  80. package/dist/generated/reflect_main/instructions/initDriftControllerS2.d.ts +75 -0
  81. package/dist/generated/reflect_main/instructions/initDriftControllerS2.js +176 -0
  82. package/dist/generated/reflect_main/instructions/initDriftControllerS3.d.ts +70 -53
  83. package/dist/generated/reflect_main/instructions/initDriftControllerS3.js +163 -100
  84. package/dist/generated/reflect_main/instructions/initMain.d.ts +50 -39
  85. package/dist/generated/reflect_main/instructions/initMain.js +136 -91
  86. package/dist/generated/reflect_main/instructions/migrateS1.d.ts +58 -0
  87. package/dist/generated/reflect_main/instructions/migrateS1.js +145 -0
  88. package/dist/generated/reflect_main/instructions/mintDriftS1.d.ts +118 -81
  89. package/dist/generated/reflect_main/instructions/mintDriftS1.js +244 -169
  90. package/dist/generated/reflect_main/instructions/mintDriftS3.d.ts +118 -81
  91. package/dist/generated/reflect_main/instructions/mintDriftS3.js +244 -169
  92. package/dist/generated/reflect_main/instructions/mintStrategy1.d.ts +95 -0
  93. package/dist/generated/reflect_main/instructions/mintStrategy1.js +236 -0
  94. package/dist/generated/reflect_main/instructions/mintStrategy2.d.ts +95 -0
  95. package/dist/generated/reflect_main/instructions/mintStrategy2.js +236 -0
  96. package/dist/generated/reflect_main/instructions/rebalanceS1.d.ts +74 -0
  97. package/dist/generated/reflect_main/instructions/rebalanceS1.js +211 -0
  98. package/dist/generated/reflect_main/instructions/rebalanceS2.d.ts +74 -0
  99. package/dist/generated/reflect_main/instructions/rebalanceS2.js +211 -0
  100. package/dist/generated/reflect_main/instructions/redeemDriftS1.d.ts +121 -81
  101. package/dist/generated/reflect_main/instructions/redeemDriftS1.js +246 -170
  102. package/dist/generated/reflect_main/instructions/redeemDriftS3.d.ts +121 -81
  103. package/dist/generated/reflect_main/instructions/redeemDriftS3.js +246 -170
  104. package/dist/generated/reflect_main/instructions/redeemStrategy1.d.ts +95 -0
  105. package/dist/generated/reflect_main/instructions/redeemStrategy1.js +236 -0
  106. package/dist/generated/reflect_main/instructions/redeemStrategy2.d.ts +95 -0
  107. package/dist/generated/reflect_main/instructions/redeemStrategy2.js +236 -0
  108. package/dist/generated/reflect_main/instructions/settlePnl.d.ts +62 -46
  109. package/dist/generated/reflect_main/instructions/settlePnl.js +135 -104
  110. package/dist/generated/reflect_main/instructions/suspendSplProtocol.d.ts +57 -48
  111. package/dist/generated/reflect_main/instructions/suspendSplProtocol.js +139 -95
  112. package/dist/generated/reflect_main/instructions/suspendSplStrategy.d.ts +61 -50
  113. package/dist/generated/reflect_main/instructions/suspendSplStrategy.js +144 -100
  114. package/dist/generated/reflect_main/instructions/updateActionRoleProtocol.d.ts +60 -50
  115. package/dist/generated/reflect_main/instructions/updateActionRoleProtocol.js +142 -98
  116. package/dist/generated/reflect_main/instructions/updateActionRoleStrategy.d.ts +64 -52
  117. package/dist/generated/reflect_main/instructions/updateActionRoleStrategy.js +147 -103
  118. package/dist/generated/reflect_main/instructions/updateAttenuation.d.ts +65 -51
  119. package/dist/generated/reflect_main/instructions/updateAttenuation.js +146 -100
  120. package/dist/generated/reflect_main/instructions/updateCap.d.ts +58 -50
  121. package/dist/generated/reflect_main/instructions/updateCap.js +142 -98
  122. package/dist/generated/reflect_main/instructions/updateCapitalConductor.d.ts +79 -0
  123. package/dist/generated/reflect_main/instructions/updateCapitalConductor.js +161 -0
  124. package/dist/generated/reflect_main/instructions/updateRecipients.d.ts +62 -51
  125. package/dist/generated/reflect_main/instructions/updateRecipients.js +144 -100
  126. package/dist/generated/reflect_main/instructions/updateRoleHolderProtocol.d.ts +65 -53
  127. package/dist/generated/reflect_main/instructions/updateRoleHolderProtocol.js +154 -104
  128. package/dist/generated/reflect_main/instructions/updateRoleHolderStrategy.d.ts +65 -53
  129. package/dist/generated/reflect_main/instructions/updateRoleHolderStrategy.js +154 -104
  130. package/dist/generated/reflect_main/programs/index.d.ts +8 -0
  131. package/dist/generated/reflect_main/programs/index.js +24 -0
  132. package/dist/generated/reflect_main/programs/reflectMain.d.ts +139 -0
  133. package/dist/generated/reflect_main/programs/reflectMain.js +190 -0
  134. package/dist/generated/reflect_main/shared/index.d.ts +49 -0
  135. package/dist/generated/reflect_main/shared/index.js +90 -0
  136. package/dist/generated/reflect_main/types/accessControl.d.ts +24 -0
  137. package/dist/generated/reflect_main/types/accessControl.js +29 -0
  138. package/dist/generated/reflect_main/types/accessMap.d.ts +24 -0
  139. package/dist/generated/reflect_main/types/accessMap.js +35 -0
  140. package/dist/generated/reflect_main/types/action.d.ts +32 -0
  141. package/dist/generated/reflect_main/types/action.js +44 -0
  142. package/dist/generated/reflect_main/types/actionMapping.d.ts +22 -0
  143. package/dist/generated/reflect_main/types/actionMapping.js +31 -0
  144. package/dist/generated/reflect_main/types/addedProtocolActionRole.d.ts +20 -0
  145. package/dist/generated/reflect_main/types/addedProtocolActionRole.js +29 -0
  146. package/dist/generated/reflect_main/types/addedProtocolRoleHolder.d.ts +20 -0
  147. package/dist/generated/reflect_main/types/addedProtocolRoleHolder.js +29 -0
  148. package/dist/generated/reflect_main/types/addedStrategyActionRole.d.ts +22 -0
  149. package/dist/generated/reflect_main/types/addedStrategyActionRole.js +31 -0
  150. package/dist/generated/reflect_main/types/addedStrategyRoleHolder.d.ts +22 -0
  151. package/dist/generated/reflect_main/types/addedStrategyRoleHolder.js +31 -0
  152. package/dist/generated/reflect_main/types/attenuation.d.ts +16 -0
  153. package/dist/generated/reflect_main/types/attenuation.js +28 -0
  154. package/dist/generated/reflect_main/types/attenuationUpdated.d.ts +23 -0
  155. package/dist/generated/reflect_main/types/attenuationUpdated.js +32 -0
  156. package/dist/generated/reflect_main/types/autoCompound.d.ts +23 -0
  157. package/dist/generated/reflect_main/types/autoCompound.js +32 -0
  158. package/dist/generated/reflect_main/types/base.d.ts +38 -0
  159. package/dist/generated/reflect_main/types/base.js +47 -0
  160. package/dist/generated/reflect_main/types/capitalConductorComponent.d.ts +28 -0
  161. package/dist/generated/reflect_main/types/capitalConductorComponent.js +43 -0
  162. package/dist/generated/reflect_main/types/capture.d.ts +24 -0
  163. package/dist/generated/reflect_main/types/capture.js +33 -0
  164. package/dist/generated/reflect_main/types/component.d.ts +24 -0
  165. package/dist/generated/reflect_main/types/component.js +33 -0
  166. package/dist/generated/reflect_main/types/componentType.d.ts +24 -0
  167. package/dist/generated/reflect_main/types/componentType.js +36 -0
  168. package/dist/generated/reflect_main/types/currentProtocolBalance.d.ts +20 -0
  169. package/dist/generated/reflect_main/types/currentProtocolBalance.js +29 -0
  170. package/dist/generated/reflect_main/types/currentProtocolRatio.d.ts +24 -0
  171. package/dist/generated/reflect_main/types/currentProtocolRatio.js +33 -0
  172. package/dist/generated/reflect_main/types/driftSpotData.d.ts +17 -0
  173. package/dist/generated/reflect_main/types/driftSpotData.js +30 -0
  174. package/dist/generated/reflect_main/types/driftSpotMarketsComponent.d.ts +20 -0
  175. package/dist/generated/reflect_main/types/driftSpotMarketsComponent.js +29 -0
  176. package/dist/generated/reflect_main/types/driftSubAccountsComponent.d.ts +18 -0
  177. package/dist/generated/reflect_main/types/driftSubAccountsComponent.js +23 -0
  178. package/dist/generated/reflect_main/types/driftSubs.d.ts +17 -0
  179. package/dist/generated/reflect_main/types/driftSubs.js +30 -0
  180. package/dist/generated/reflect_main/types/dustThresholdUpdated.d.ts +21 -0
  181. package/dist/generated/reflect_main/types/dustThresholdUpdated.js +30 -0
  182. package/dist/generated/reflect_main/types/externals.d.ts +18 -0
  183. package/dist/generated/reflect_main/types/externals.js +23 -0
  184. package/dist/generated/reflect_main/types/flowControl.d.ts +20 -0
  185. package/dist/generated/reflect_main/types/flowControl.js +29 -0
  186. package/dist/generated/reflect_main/types/index.d.ts +76 -81
  187. package/dist/generated/reflect_main/types/index.js +76 -81
  188. package/dist/generated/reflect_main/types/issue.d.ts +39 -0
  189. package/dist/generated/reflect_main/types/issue.js +36 -0
  190. package/dist/generated/reflect_main/types/killSwitch.d.ts +20 -0
  191. package/dist/generated/reflect_main/types/killSwitch.js +22 -0
  192. package/dist/generated/reflect_main/types/levelRoles.d.ts +23 -0
  193. package/dist/generated/reflect_main/types/levelRoles.js +23 -0
  194. package/dist/generated/reflect_main/types/maxDeviationBpsUpdated.d.ts +17 -0
  195. package/dist/generated/reflect_main/types/maxDeviationBpsUpdated.js +30 -0
  196. package/dist/generated/reflect_main/types/minPerLegTransferUpdated.d.ts +21 -0
  197. package/dist/generated/reflect_main/types/minPerLegTransferUpdated.js +30 -0
  198. package/dist/generated/reflect_main/types/newAdminAccount.d.ts +15 -0
  199. package/dist/generated/reflect_main/types/newAdminAccount.js +22 -0
  200. package/dist/generated/reflect_main/types/penaltyScaleFactorUpdated.d.ts +17 -0
  201. package/dist/generated/reflect_main/types/penaltyScaleFactorUpdated.js +30 -0
  202. package/dist/generated/reflect_main/types/program.d.ts +22 -0
  203. package/dist/generated/reflect_main/types/program.js +31 -0
  204. package/dist/generated/reflect_main/types/programStatus.d.ts +16 -0
  205. package/dist/generated/reflect_main/types/programStatus.js +28 -0
  206. package/dist/generated/reflect_main/types/programStatusUpdate.d.ts +20 -0
  207. package/dist/generated/reflect_main/types/programStatusUpdate.js +29 -0
  208. package/dist/generated/reflect_main/types/protocolActionUpdate.d.ts +20 -0
  209. package/dist/generated/reflect_main/types/protocolActionUpdate.js +29 -0
  210. package/dist/generated/reflect_main/types/protocolRatiosUpdated.d.ts +22 -0
  211. package/dist/generated/reflect_main/types/protocolRatiosUpdated.js +31 -0
  212. package/dist/generated/reflect_main/types/rack.d.ts +18 -0
  213. package/dist/generated/reflect_main/types/rack.js +27 -0
  214. package/dist/generated/reflect_main/types/recipient.d.ts +19 -0
  215. package/dist/generated/reflect_main/types/recipient.js +28 -0
  216. package/dist/generated/reflect_main/types/recipients.d.ts +20 -0
  217. package/dist/generated/reflect_main/types/recipients.js +29 -0
  218. package/dist/generated/reflect_main/types/redeem.d.ts +39 -0
  219. package/dist/generated/reflect_main/types/redeem.js +36 -0
  220. package/dist/generated/reflect_main/types/removedProtocolActionRole.d.ts +20 -0
  221. package/dist/generated/reflect_main/types/removedProtocolActionRole.js +29 -0
  222. package/dist/generated/reflect_main/types/removedProtocolRoleHolder.d.ts +20 -0
  223. package/dist/generated/reflect_main/types/removedProtocolRoleHolder.js +29 -0
  224. package/dist/generated/reflect_main/types/removedStrategyActionRole.d.ts +22 -0
  225. package/dist/generated/reflect_main/types/removedStrategyActionRole.js +31 -0
  226. package/dist/generated/reflect_main/types/removedStrategyRoleHolder.d.ts +22 -0
  227. package/dist/generated/reflect_main/types/removedStrategyRoleHolder.js +31 -0
  228. package/dist/generated/reflect_main/types/role.d.ts +22 -0
  229. package/dist/generated/reflect_main/types/role.js +34 -0
  230. package/dist/generated/reflect_main/types/settlement.d.ts +17 -0
  231. package/dist/generated/reflect_main/types/settlement.js +30 -0
  232. package/dist/generated/reflect_main/types/splBase.d.ts +17 -0
  233. package/dist/generated/reflect_main/types/splBase.js +30 -0
  234. package/dist/generated/reflect_main/types/splMain.d.ts +43 -0
  235. package/dist/generated/reflect_main/types/splMain.js +44 -0
  236. package/dist/generated/reflect_main/types/splSupport.d.ts +15 -0
  237. package/dist/generated/reflect_main/types/splSupport.js +22 -0
  238. package/dist/generated/reflect_main/types/splSupportStrategy.d.ts +16 -0
  239. package/dist/generated/reflect_main/types/splSupportStrategy.js +28 -0
  240. package/dist/generated/reflect_main/types/splSuspendProtocol.d.ts +16 -0
  241. package/dist/generated/reflect_main/types/splSuspendProtocol.js +28 -0
  242. package/dist/generated/reflect_main/types/splSuspendStrategy.d.ts +17 -0
  243. package/dist/generated/reflect_main/types/splSuspendStrategy.js +30 -0
  244. package/dist/generated/reflect_main/types/spls.d.ts +20 -0
  245. package/dist/generated/reflect_main/types/spls.js +29 -0
  246. package/dist/generated/reflect_main/types/spotDepositDrift.d.ts +19 -0
  247. package/dist/generated/reflect_main/types/spotDepositDrift.js +28 -0
  248. package/dist/generated/reflect_main/types/spreadCapture.d.ts +27 -0
  249. package/dist/generated/reflect_main/types/spreadCapture.js +30 -0
  250. package/dist/generated/reflect_main/types/status.d.ts +17 -0
  251. package/dist/generated/reflect_main/types/status.js +29 -0
  252. package/dist/generated/reflect_main/types/strategyActionUpdate.d.ts +22 -0
  253. package/dist/generated/reflect_main/types/strategyActionUpdate.js +31 -0
  254. package/dist/generated/reflect_main/types/strategyNegative.d.ts +21 -0
  255. package/dist/generated/reflect_main/types/strategyNegative.js +28 -0
  256. package/dist/generated/reflect_main/types/strategyPadding.d.ts +15 -0
  257. package/dist/generated/reflect_main/types/strategyPadding.js +26 -0
  258. package/dist/generated/reflect_main/types/strategyRoleEntry.d.ts +24 -0
  259. package/dist/generated/reflect_main/types/strategyRoleEntry.js +29 -0
  260. package/dist/generated/reflect_main/types/subsVec.d.ts +20 -0
  261. package/dist/generated/reflect_main/types/subsVec.js +29 -0
  262. package/dist/generated/reflect_main/types/update.d.ts +16 -0
  263. package/dist/generated/reflect_main/types/update.js +28 -0
  264. package/dist/generated/reflect_main/types/updateCap.d.ts +21 -0
  265. package/dist/generated/reflect_main/types/updateCap.js +30 -0
  266. package/dist/generated/reflect_main/types/updateRebalanceSlippage.d.ts +17 -0
  267. package/dist/generated/reflect_main/types/updateRebalanceSlippage.js +30 -0
  268. package/dist/generated/reflect_main/types/updateRecipients.d.ts +20 -0
  269. package/dist/generated/reflect_main/types/updateRecipients.js +29 -0
  270. package/dist/generated/reflect_main/types/yieldDistribution.d.ts +16 -0
  271. package/dist/generated/reflect_main/types/yieldDistribution.js +28 -0
  272. package/dist/generated/reflect_main/types/yieldVenue.d.ts +17 -0
  273. package/dist/generated/reflect_main/types/yieldVenue.js +29 -0
  274. package/dist/generated/reflect_main/types/yieldVenueAllocation.d.ts +25 -0
  275. package/dist/generated/reflect_main/types/yieldVenueAllocation.js +29 -0
  276. package/dist/generated/reflect_tokenised_bonds/accounts/Config.d.ts +1 -1
  277. package/dist/generated/reflect_tokenised_bonds/accounts/Vault.d.ts +1 -1
  278. package/dist/helpers/drift/accounts/spotMarket.d.ts +1 -1
  279. package/dist/helpers/drift/accounts/user.d.ts +1 -1
  280. package/dist/helpers/drift/accounts/userStats.d.ts +1 -1
  281. package/dist/index.d.ts +3 -2
  282. package/dist/index.js +6 -3
  283. package/dist/stablecoins/UsdcPlusStablecoin.d.ts +115 -70
  284. package/dist/stablecoins/UsdcPlusStablecoin.js +575 -238
  285. package/dist/stablecoins/UsdcPlusStablecoinLegacy.d.ts +97 -0
  286. package/dist/stablecoins/UsdcPlusStablecoinLegacy.js +386 -0
  287. package/dist/stablecoins/UsdtPlusStablecoin.d.ts +120 -0
  288. package/dist/stablecoins/UsdtPlusStablecoin.js +428 -0
  289. package/dist/stablecoins/index.d.ts +2 -2
  290. package/dist/stablecoins/index.js +2 -2
  291. package/dist/tsconfig.tsbuildinfo +1 -1
  292. package/dist/types/index.d.ts +6 -18
  293. package/dist/utils/getProgramAddress.d.ts +22 -0
  294. package/dist/utils/getProgramAddress.js +27 -0
  295. package/dist/utils/index.d.ts +1 -0
  296. package/dist/utils/index.js +43 -0
  297. package/package.json +8 -3
  298. package/dist/classes/ApiClient.d.ts +0 -84
  299. package/dist/classes/ApiClient.js +0 -139
  300. package/dist/constants/lst.d.ts +0 -3
  301. package/dist/constants/lst.js +0 -6
  302. package/dist/generated/reflect_main/accounts/DriftJlpController.d.ts +0 -110
  303. package/dist/generated/reflect_main/accounts/DriftJlpController.js +0 -175
  304. package/dist/generated/reflect_main/accounts/DriftLstController.d.ts +0 -104
  305. package/dist/generated/reflect_main/accounts/DriftLstController.js +0 -171
  306. package/dist/generated/reflect_main/accounts/DriftUsdcController.d.ts +0 -102
  307. package/dist/generated/reflect_main/accounts/DriftUsdcController.js +0 -168
  308. package/dist/generated/reflect_main/accounts/Main.d.ts +0 -110
  309. package/dist/generated/reflect_main/accounts/Main.js +0 -175
  310. package/dist/generated/reflect_main/accounts/PerpMarket.d.ts +0 -226
  311. package/dist/generated/reflect_main/accounts/PerpMarket.js +0 -317
  312. package/dist/generated/reflect_main/accounts/PrelaunchOracle.d.ts +0 -130
  313. package/dist/generated/reflect_main/accounts/PrelaunchOracle.js +0 -234
  314. package/dist/generated/reflect_main/accounts/PythLazerOracle.d.ts +0 -124
  315. package/dist/generated/reflect_main/accounts/PythLazerOracle.js +0 -220
  316. package/dist/generated/reflect_main/accounts/RebalanceLst.d.ts +0 -111
  317. package/dist/generated/reflect_main/accounts/RebalanceLst.js +0 -185
  318. package/dist/generated/reflect_main/accounts/SpotMarket.d.ts +0 -377
  319. package/dist/generated/reflect_main/accounts/SpotMarket.js +0 -611
  320. package/dist/generated/reflect_main/accounts/User.d.ts +0 -221
  321. package/dist/generated/reflect_main/accounts/User.js +0 -341
  322. package/dist/generated/reflect_main/accounts/UserPermissions.d.ts +0 -106
  323. package/dist/generated/reflect_main/accounts/UserPermissions.js +0 -171
  324. package/dist/generated/reflect_main/accounts/UserStats.d.ts +0 -211
  325. package/dist/generated/reflect_main/accounts/UserStats.js +0 -333
  326. package/dist/generated/reflect_main/instructions/createUserStatsAccount.d.ts +0 -52
  327. package/dist/generated/reflect_main/instructions/createUserStatsAccount.js +0 -126
  328. package/dist/generated/reflect_main/instructions/initDriftAccountsS1.d.ts +0 -54
  329. package/dist/generated/reflect_main/instructions/initDriftAccountsS1.js +0 -131
  330. package/dist/generated/reflect_main/instructions/processSwapDeposit.d.ts +0 -69
  331. package/dist/generated/reflect_main/instructions/processSwapDeposit.js +0 -165
  332. package/dist/generated/reflect_main/instructions/processSwapWithdraw.d.ts +0 -69
  333. package/dist/generated/reflect_main/instructions/processSwapWithdraw.js +0 -165
  334. package/dist/generated/reflect_main/instructions/settlePnlMulti.d.ts +0 -60
  335. package/dist/generated/reflect_main/instructions/settlePnlMulti.js +0 -118
  336. package/dist/generated/reflect_main/instructions/swapOrca.d.ts +0 -81
  337. package/dist/generated/reflect_main/instructions/swapOrca.js +0 -166
  338. package/dist/generated/reflect_main/instructions/swapOrcaTwoHop.d.ts +0 -101
  339. package/dist/generated/reflect_main/instructions/swapOrcaTwoHop.js +0 -213
  340. package/dist/generated/reflect_main/instructions/updateRebalanceSlippage.d.ts +0 -55
  341. package/dist/generated/reflect_main/instructions/updateRebalanceSlippage.js +0 -109
  342. package/dist/generated/reflect_main/types/AMM.d.ts +0 -102
  343. package/dist/generated/reflect_main/types/AMM.js +0 -137
  344. package/dist/generated/reflect_main/types/AccKey.d.ts +0 -15
  345. package/dist/generated/reflect_main/types/AccKey.js +0 -48
  346. package/dist/generated/reflect_main/types/AccessControl.d.ts +0 -18
  347. package/dist/generated/reflect_main/types/AccessControl.js +0 -53
  348. package/dist/generated/reflect_main/types/AccessMap.d.ts +0 -17
  349. package/dist/generated/reflect_main/types/AccessMap.js +0 -52
  350. package/dist/generated/reflect_main/types/Action.d.ts +0 -35
  351. package/dist/generated/reflect_main/types/Action.js +0 -72
  352. package/dist/generated/reflect_main/types/ActionMapping.d.ts +0 -19
  353. package/dist/generated/reflect_main/types/ActionMapping.js +0 -54
  354. package/dist/generated/reflect_main/types/AssetTier.d.ts +0 -23
  355. package/dist/generated/reflect_main/types/AssetTier.js +0 -60
  356. package/dist/generated/reflect_main/types/Attenuation.d.ts +0 -16
  357. package/dist/generated/reflect_main/types/Attenuation.js +0 -51
  358. package/dist/generated/reflect_main/types/AutoCompound.d.ts +0 -18
  359. package/dist/generated/reflect_main/types/AutoCompound.js +0 -53
  360. package/dist/generated/reflect_main/types/BalanceType.d.ts +0 -20
  361. package/dist/generated/reflect_main/types/BalanceType.js +0 -57
  362. package/dist/generated/reflect_main/types/Capture.d.ts +0 -19
  363. package/dist/generated/reflect_main/types/Capture.js +0 -54
  364. package/dist/generated/reflect_main/types/ContractTier.d.ts +0 -24
  365. package/dist/generated/reflect_main/types/ContractTier.js +0 -61
  366. package/dist/generated/reflect_main/types/ContractType.d.ts +0 -20
  367. package/dist/generated/reflect_main/types/ContractType.js +0 -57
  368. package/dist/generated/reflect_main/types/CorpAction.d.ts +0 -19
  369. package/dist/generated/reflect_main/types/CorpAction.js +0 -56
  370. package/dist/generated/reflect_main/types/CustodyInfo.d.ts +0 -20
  371. package/dist/generated/reflect_main/types/CustodyInfo.js +0 -55
  372. package/dist/generated/reflect_main/types/DirectionCollateral.d.ts +0 -20
  373. package/dist/generated/reflect_main/types/DirectionCollateral.js +0 -57
  374. package/dist/generated/reflect_main/types/DirectionPosition.d.ts +0 -20
  375. package/dist/generated/reflect_main/types/DirectionPosition.js +0 -57
  376. package/dist/generated/reflect_main/types/DriftControllerBase.d.ts +0 -15
  377. package/dist/generated/reflect_main/types/DriftControllerBase.js +0 -48
  378. package/dist/generated/reflect_main/types/DriftJlpControllerFixedAccounts.d.ts +0 -18
  379. package/dist/generated/reflect_main/types/DriftJlpControllerFixedAccounts.js +0 -53
  380. package/dist/generated/reflect_main/types/DriftLstData.d.ts +0 -17
  381. package/dist/generated/reflect_main/types/DriftLstData.js +0 -52
  382. package/dist/generated/reflect_main/types/Ema.d.ts +0 -17
  383. package/dist/generated/reflect_main/types/Ema.js +0 -52
  384. package/dist/generated/reflect_main/types/Externals.d.ts +0 -16
  385. package/dist/generated/reflect_main/types/Externals.js +0 -49
  386. package/dist/generated/reflect_main/types/FlowControl.d.ts +0 -17
  387. package/dist/generated/reflect_main/types/FlowControl.js +0 -52
  388. package/dist/generated/reflect_main/types/HistoricalIndexData.d.ts +0 -19
  389. package/dist/generated/reflect_main/types/HistoricalIndexData.js +0 -54
  390. package/dist/generated/reflect_main/types/HistoricalOracleData.d.ts +0 -20
  391. package/dist/generated/reflect_main/types/HistoricalOracleData.js +0 -55
  392. package/dist/generated/reflect_main/types/Holding.d.ts +0 -21
  393. package/dist/generated/reflect_main/types/Holding.js +0 -56
  394. package/dist/generated/reflect_main/types/Holdings.d.ts +0 -17
  395. package/dist/generated/reflect_main/types/Holdings.js +0 -52
  396. package/dist/generated/reflect_main/types/InsuranceClaim.d.ts +0 -19
  397. package/dist/generated/reflect_main/types/InsuranceClaim.js +0 -54
  398. package/dist/generated/reflect_main/types/InsuranceFund.d.ts +0 -24
  399. package/dist/generated/reflect_main/types/InsuranceFund.js +0 -59
  400. package/dist/generated/reflect_main/types/JlpRebalanceSettings.d.ts +0 -15
  401. package/dist/generated/reflect_main/types/JlpRebalanceSettings.js +0 -48
  402. package/dist/generated/reflect_main/types/KillSwitch.d.ts +0 -15
  403. package/dist/generated/reflect_main/types/KillSwitch.js +0 -48
  404. package/dist/generated/reflect_main/types/LevelRoles.d.ts +0 -16
  405. package/dist/generated/reflect_main/types/LevelRoles.js +0 -49
  406. package/dist/generated/reflect_main/types/MarketStatus.d.ts +0 -27
  407. package/dist/generated/reflect_main/types/MarketStatus.js +0 -64
  408. package/dist/generated/reflect_main/types/MarketType.d.ts +0 -20
  409. package/dist/generated/reflect_main/types/MarketType.js +0 -57
  410. package/dist/generated/reflect_main/types/ModifyOrderParams.d.ts +0 -32
  411. package/dist/generated/reflect_main/types/ModifyOrderParams.js +0 -67
  412. package/dist/generated/reflect_main/types/ModifyOrderPolicy.d.ts +0 -20
  413. package/dist/generated/reflect_main/types/ModifyOrderPolicy.js +0 -57
  414. package/dist/generated/reflect_main/types/Movements.d.ts +0 -19
  415. package/dist/generated/reflect_main/types/Movements.js +0 -54
  416. package/dist/generated/reflect_main/types/OracleGuardRails.d.ts +0 -18
  417. package/dist/generated/reflect_main/types/OracleGuardRails.js +0 -53
  418. package/dist/generated/reflect_main/types/OracleSource.d.ts +0 -34
  419. package/dist/generated/reflect_main/types/OracleSource.js +0 -71
  420. package/dist/generated/reflect_main/types/OracleValidity.d.ts +0 -25
  421. package/dist/generated/reflect_main/types/OracleValidity.js +0 -62
  422. package/dist/generated/reflect_main/types/Order.d.ts +0 -43
  423. package/dist/generated/reflect_main/types/Order.js +0 -78
  424. package/dist/generated/reflect_main/types/OrderDirection.d.ts +0 -20
  425. package/dist/generated/reflect_main/types/OrderDirection.js +0 -57
  426. package/dist/generated/reflect_main/types/OrderParams.d.ts +0 -36
  427. package/dist/generated/reflect_main/types/OrderParams.js +0 -71
  428. package/dist/generated/reflect_main/types/OrderStatus.d.ts +0 -22
  429. package/dist/generated/reflect_main/types/OrderStatus.js +0 -59
  430. package/dist/generated/reflect_main/types/OrderTriggerCondition.d.ts +0 -22
  431. package/dist/generated/reflect_main/types/OrderTriggerCondition.js +0 -59
  432. package/dist/generated/reflect_main/types/OrderType.d.ts +0 -23
  433. package/dist/generated/reflect_main/types/OrderType.js +0 -60
  434. package/dist/generated/reflect_main/types/PermissionLevel.d.ts +0 -45
  435. package/dist/generated/reflect_main/types/PermissionLevel.js +0 -58
  436. package/dist/generated/reflect_main/types/PerpHedge.d.ts +0 -17
  437. package/dist/generated/reflect_main/types/PerpHedge.js +0 -52
  438. package/dist/generated/reflect_main/types/PerpPosition.d.ts +0 -29
  439. package/dist/generated/reflect_main/types/PerpPosition.js +0 -64
  440. package/dist/generated/reflect_main/types/PoolBalance.d.ts +0 -17
  441. package/dist/generated/reflect_main/types/PoolBalance.js +0 -52
  442. package/dist/generated/reflect_main/types/Position.d.ts +0 -20
  443. package/dist/generated/reflect_main/types/Position.js +0 -55
  444. package/dist/generated/reflect_main/types/PositionDirection.d.ts +0 -20
  445. package/dist/generated/reflect_main/types/PositionDirection.js +0 -57
  446. package/dist/generated/reflect_main/types/PositionDrift.d.ts +0 -18
  447. package/dist/generated/reflect_main/types/PositionDrift.js +0 -53
  448. package/dist/generated/reflect_main/types/PostOnlyParam.d.ts +0 -22
  449. package/dist/generated/reflect_main/types/PostOnlyParam.js +0 -59
  450. package/dist/generated/reflect_main/types/Price.d.ts +0 -41
  451. package/dist/generated/reflect_main/types/Price.js +0 -76
  452. package/dist/generated/reflect_main/types/PriceComp.d.ts +0 -19
  453. package/dist/generated/reflect_main/types/PriceComp.js +0 -54
  454. package/dist/generated/reflect_main/types/PriceDivergenceGuardRails.d.ts +0 -16
  455. package/dist/generated/reflect_main/types/PriceDivergenceGuardRails.js +0 -51
  456. package/dist/generated/reflect_main/types/PriceInfo.d.ts +0 -21
  457. package/dist/generated/reflect_main/types/PriceInfo.js +0 -56
  458. package/dist/generated/reflect_main/types/PriceStatus.d.ts +0 -22
  459. package/dist/generated/reflect_main/types/PriceStatus.js +0 -59
  460. package/dist/generated/reflect_main/types/PriceType.d.ts +0 -20
  461. package/dist/generated/reflect_main/types/PriceType.js +0 -57
  462. package/dist/generated/reflect_main/types/Program.d.ts +0 -19
  463. package/dist/generated/reflect_main/types/Program.js +0 -54
  464. package/dist/generated/reflect_main/types/ProgramStatus.d.ts +0 -20
  465. package/dist/generated/reflect_main/types/ProgramStatus.js +0 -57
  466. package/dist/generated/reflect_main/types/Recipient.d.ts +0 -17
  467. package/dist/generated/reflect_main/types/Recipient.js +0 -52
  468. package/dist/generated/reflect_main/types/Recipients.d.ts +0 -17
  469. package/dist/generated/reflect_main/types/Recipients.js +0 -52
  470. package/dist/generated/reflect_main/types/Role.d.ts +0 -25
  471. package/dist/generated/reflect_main/types/Role.js +0 -62
  472. package/dist/generated/reflect_main/types/ShiftCollateral.d.ts +0 -19
  473. package/dist/generated/reflect_main/types/ShiftCollateral.js +0 -54
  474. package/dist/generated/reflect_main/types/ShiftPosition.d.ts +0 -17
  475. package/dist/generated/reflect_main/types/ShiftPosition.js +0 -52
  476. package/dist/generated/reflect_main/types/ShortHolding.d.ts +0 -17
  477. package/dist/generated/reflect_main/types/ShortHolding.js +0 -52
  478. package/dist/generated/reflect_main/types/SplBase.d.ts +0 -17
  479. package/dist/generated/reflect_main/types/SplBase.js +0 -52
  480. package/dist/generated/reflect_main/types/SplMain.d.ts +0 -22
  481. package/dist/generated/reflect_main/types/SplMain.js +0 -57
  482. package/dist/generated/reflect_main/types/Spls.d.ts +0 -17
  483. package/dist/generated/reflect_main/types/Spls.js +0 -52
  484. package/dist/generated/reflect_main/types/SpotBalanceType.d.ts +0 -20
  485. package/dist/generated/reflect_main/types/SpotBalanceType.js +0 -57
  486. package/dist/generated/reflect_main/types/SpotPosition.d.ts +0 -23
  487. package/dist/generated/reflect_main/types/SpotPosition.js +0 -58
  488. package/dist/generated/reflect_main/types/Status.d.ts +0 -21
  489. package/dist/generated/reflect_main/types/Status.js +0 -58
  490. package/dist/generated/reflect_main/types/Strategy.d.ts +0 -33
  491. package/dist/generated/reflect_main/types/Strategy.js +0 -68
  492. package/dist/generated/reflect_main/types/StrategyPadding.d.ts +0 -15
  493. package/dist/generated/reflect_main/types/StrategyPadding.js +0 -48
  494. package/dist/generated/reflect_main/types/StrategyRoleEntry.d.ts +0 -17
  495. package/dist/generated/reflect_main/types/StrategyRoleEntry.js +0 -52
  496. package/dist/generated/reflect_main/types/SubAccount.d.ts +0 -17
  497. package/dist/generated/reflect_main/types/SubAccount.js +0 -52
  498. package/dist/generated/reflect_main/types/Update.d.ts +0 -20
  499. package/dist/generated/reflect_main/types/Update.js +0 -57
  500. package/dist/generated/reflect_main/types/UserFees.d.ts +0 -20
  501. package/dist/generated/reflect_main/types/UserFees.js +0 -55
  502. package/dist/generated/reflect_main/types/ValidityGuardRails.d.ts +0 -18
  503. package/dist/generated/reflect_main/types/ValidityGuardRails.js +0 -53
  504. package/dist/generated/reflect_main/types/YieldDistribution.d.ts +0 -20
  505. package/dist/generated/reflect_main/types/YieldDistribution.js +0 -57
  506. package/dist/helpers/getOrcaQuote.d.ts +0 -3
  507. package/dist/helpers/getOrcaQuote.js +0 -27
  508. package/dist/stablecoins/LstStablecoin.d.ts +0 -108
  509. package/dist/stablecoins/LstStablecoin.js +0 -354
  510. package/dist/stablecoins/UsdjStablecoin.d.ts +0 -1
  511. package/dist/stablecoins/UsdjStablecoin.js +0 -44
  512. package/dist/types/api.d.ts +0 -1384
  513. package/dist/types/api.js +0 -6
@@ -0,0 +1,97 @@
1
+ import { Address, TransactionSigner, Rpc, SolanaRpcApi, Instruction } from "@solana/kit";
2
+ import { Stablecoin } from "../classes/Stablecoin";
3
+ import { type DriftUsdcController } from "../generated/reflect_main/accounts";
4
+ import BN from "bn.js";
5
+ /**
6
+ * Legacy USDC+ Stablecoin implementation for the Reflect protocol.
7
+ *
8
+ * This class uses the legacy DriftUsdcController account type and mint/redeem
9
+ * instructions (mintDriftS1/redeemDriftS1) that were used before the program migration.
10
+ * These instructions interact directly with Drift and require many more accounts.
11
+ *
12
+ * Use this class for programs that have NOT been migrated yet.
13
+ * After migration, use the regular UsdcPlusStablecoin class instead.
14
+ *
15
+ * Strategy ID: 0
16
+ * Collateral: USDC
17
+ *
18
+ * Environment handling:
19
+ * - devnet=true → Uses devnet program
20
+ * - devnet=false, mock=true → Uses mock program on mainnet
21
+ * - devnet=false, mock=false → Uses production mainnet program
22
+ */
23
+ export declare class UsdcPlusStablecoinLegacy extends Stablecoin<DriftUsdcController> {
24
+ /**
25
+ * Creates a new Legacy USDC+ Stablecoin instance.
26
+ *
27
+ * @param rpc - Solana RPC instance
28
+ * @param stablecoinMintOverride - Optional override for the stablecoin mint address
29
+ * @param devnet - Whether to use devnet program
30
+ * @param mock - Whether to use mock program on mainnet (only applies when devnet=false)
31
+ */
32
+ constructor(rpc: Rpc<SolanaRpcApi>, stablecoinMintOverride?: Address, devnet?: boolean, mock?: boolean);
33
+ /**
34
+ * Loads the legacy USDC+ controller data from the blockchain.
35
+ * Uses the DriftUsdcController account type which has baseStrategy and compounder.
36
+ */
37
+ load(): Promise<void>;
38
+ /**
39
+ * Helper to get associated token address
40
+ */
41
+ private getAtaLegacy;
42
+ /**
43
+ * Creates a mint instruction for the USDC+ stablecoin using the legacy instruction.
44
+ *
45
+ * This method uses the legacy mintDriftS1 instruction that interacts directly
46
+ * with Drift protocol. Use this for programs that have NOT been migrated.
47
+ *
48
+ * @param user - TransactionSigner of the user
49
+ * @param amount - Amount of USDC to deposit
50
+ * @param minimumReceived - Minimum amount of USDC+ stablecoins to receive
51
+ * @returns Promise resolving to an array of Instructions
52
+ */
53
+ mint(user: TransactionSigner, amount: bigint | number, minimumReceived: bigint | number): Promise<Instruction[]>;
54
+ /**
55
+ * Creates a redeem instruction for the USDC+ stablecoin using the legacy instruction.
56
+ *
57
+ * This method uses the legacy redeemDriftS1 instruction that interacts directly
58
+ * with Drift protocol. Use this for programs that have NOT been migrated.
59
+ *
60
+ * @param user - TransactionSigner of the user
61
+ * @param amount - Amount of USDC+ to redeem
62
+ * @param minimumReceived - Minimum amount of USDC to receive
63
+ * @param canChill - Whether to allow the transaction to "chill" if Drift withdrawal is delayed
64
+ * @returns Promise resolving to an array of Instructions
65
+ */
66
+ redeem(user: TransactionSigner, amount: bigint | number, minimumReceived: bigint | number, canChill?: boolean): Promise<Instruction[]>;
67
+ /**
68
+ * Initializes the legacy USDC stablecoin with the specified parameters.
69
+ */
70
+ initialize(admin: TransactionSigner, mint: Address, cap: bigint, recipientAddresses: Address[], recipientCuts: number[]): Promise<Instruction[]>;
71
+ /**
72
+ * Rebalance is not needed for legacy USDC+.
73
+ */
74
+ rebalance(): Promise<Instruction[]>;
75
+ /**
76
+ * Gets the USD exchange rate for the USDC+ stablecoin.
77
+ */
78
+ getBaseUsdExchangeRate(): Promise<number>;
79
+ getReceiptUsdExchangeRate(): Promise<number>;
80
+ getBaseToCollateralExchangeRate(): Promise<number>;
81
+ getReceiptToCollateralExchangeRate(): Promise<number>;
82
+ /**
83
+ * Math helper function that calculates receipt tokens to issue for a given deposit amount.
84
+ */
85
+ private computeReceiptToken;
86
+ /**
87
+ * Math helper function that calculates base token amount to return for a given receipt token burn.
88
+ */
89
+ private computeBaseToken;
90
+ simulateMintMath(usdcAmount: BN): Promise<BN>;
91
+ simulateRedeemMath(receiptTokens: BN): Promise<BN>;
92
+ /**
93
+ * Deposit to Drift
94
+ */
95
+ depositDrift(depositor: TransactionSigner, amount: bigint): Promise<import("../generated/reflect_main").DepositDriftInstruction<Address, string, string, string, string, string, string, string, string, string, string, string, string, "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", []>>;
96
+ cleanup(): Promise<void>;
97
+ }
@@ -0,0 +1,386 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.UsdcPlusStablecoinLegacy = void 0;
16
+ const kit_1 = require("@solana/kit");
17
+ const Stablecoin_1 = require("../classes/Stablecoin");
18
+ const classes_1 = require("../classes");
19
+ const constants_1 = require("../constants");
20
+ const reflect_main_1 = require("../generated/reflect_main");
21
+ const accounts_1 = require("../generated/reflect_main/accounts");
22
+ const drift_1 = require("../helpers/drift");
23
+ const sdk_1 = require("@drift-labs/sdk");
24
+ const web3_js_1 = require("@solana/web3.js");
25
+ const bn_js_1 = __importDefault(require("bn.js"));
26
+ const token_1 = require("@solana-program/token");
27
+ /**
28
+ * Legacy USDC+ Stablecoin implementation for the Reflect protocol.
29
+ *
30
+ * This class uses the legacy DriftUsdcController account type and mint/redeem
31
+ * instructions (mintDriftS1/redeemDriftS1) that were used before the program migration.
32
+ * These instructions interact directly with Drift and require many more accounts.
33
+ *
34
+ * Use this class for programs that have NOT been migrated yet.
35
+ * After migration, use the regular UsdcPlusStablecoin class instead.
36
+ *
37
+ * Strategy ID: 0
38
+ * Collateral: USDC
39
+ *
40
+ * Environment handling:
41
+ * - devnet=true → Uses devnet program
42
+ * - devnet=false, mock=true → Uses mock program on mainnet
43
+ * - devnet=false, mock=false → Uses production mainnet program
44
+ */
45
+ class UsdcPlusStablecoinLegacy extends Stablecoin_1.Stablecoin {
46
+ /**
47
+ * Creates a new Legacy USDC+ Stablecoin instance.
48
+ *
49
+ * @param rpc - Solana RPC instance
50
+ * @param stablecoinMintOverride - Optional override for the stablecoin mint address
51
+ * @param devnet - Whether to use devnet program
52
+ * @param mock - Whether to use mock program on mainnet (only applies when devnet=false)
53
+ */
54
+ constructor(rpc, stablecoinMintOverride, devnet = false, mock = false) {
55
+ super(0, "USD Coin Plus (Legacy)", rpc, devnet ? constants_1.USDC_PLUS_LOOKUP_TABLE_DEVNET : constants_1.USDC_PLUS_LOOKUP_TABLE, devnet, mock);
56
+ this.collaterals = [
57
+ {
58
+ mint: devnet ? constants_1.USDC_MINT_DEVNET : constants_1.USDC_MINT,
59
+ oracle: "0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",
60
+ decimals: 6,
61
+ },
62
+ ];
63
+ this.isPermissioned = true;
64
+ if (stablecoinMintOverride) {
65
+ this.stablecoinMint = stablecoinMintOverride;
66
+ }
67
+ }
68
+ /**
69
+ * Loads the legacy USDC+ controller data from the blockchain.
70
+ * Uses the DriftUsdcController account type which has baseStrategy and compounder.
71
+ */
72
+ load() {
73
+ return __awaiter(this, void 0, void 0, function* () {
74
+ if (!this.controllerKey)
75
+ yield this.initializeKeys();
76
+ // Fetch and decode the DriftUsdcController account
77
+ const controllerAccount = yield (0, accounts_1.fetchDriftUsdcController)(this.rpc, this.controllerKey);
78
+ this.controller = controllerAccount.data;
79
+ this.stablecoinMint = this.controller.baseStrategy.mint;
80
+ });
81
+ }
82
+ /**
83
+ * Helper to get associated token address
84
+ */
85
+ getAtaLegacy(mint, owner) {
86
+ return __awaiter(this, void 0, void 0, function* () {
87
+ const [ata] = yield (0, token_1.findAssociatedTokenPda)({
88
+ mint,
89
+ owner,
90
+ tokenProgram: token_1.TOKEN_PROGRAM_ADDRESS,
91
+ });
92
+ return ata;
93
+ });
94
+ }
95
+ /**
96
+ * Creates a mint instruction for the USDC+ stablecoin using the legacy instruction.
97
+ *
98
+ * This method uses the legacy mintDriftS1 instruction that interacts directly
99
+ * with Drift protocol. Use this for programs that have NOT been migrated.
100
+ *
101
+ * @param user - TransactionSigner of the user
102
+ * @param amount - Amount of USDC to deposit
103
+ * @param minimumReceived - Minimum amount of USDC+ stablecoins to receive
104
+ * @returns Promise resolving to an array of Instructions
105
+ */
106
+ mint(user, amount, minimumReceived) {
107
+ return __awaiter(this, void 0, void 0, function* () {
108
+ if (!this.controllerKey)
109
+ yield this.initializeKeys();
110
+ if (!this.stablecoinMint)
111
+ throw new Error("Stablecoin mint not loaded. Call load() first.");
112
+ const main = yield classes_1.PdaClient.deriveMain(this.devnet, this.mock);
113
+ const adminPermissions = yield classes_1.PdaClient.derivePermissions(user.address, this.devnet, this.mock);
114
+ const usdcMint = this.devnet ? constants_1.USDC_MINT_DEVNET : constants_1.USDC_MINT;
115
+ const userReceiptAta = yield this.getAtaLegacy(this.stablecoinMint, user.address);
116
+ const userUsdcAta = yield this.getAtaLegacy(usdcMint, user.address);
117
+ const controllerUsdcAta = yield this.getAtaLegacy(usdcMint, this.controllerKey);
118
+ // Derive Drift accounts
119
+ const driftProgramPubkey = new web3_js_1.PublicKey(constants_1.DRIFT_PROGRAM_ID);
120
+ const controllerPubkey = new web3_js_1.PublicKey(this.controllerKey);
121
+ const driftState = yield (0, sdk_1.getDriftStateAccountPublicKey)(driftProgramPubkey);
122
+ const userAccount = (0, sdk_1.getUserAccountPublicKeySync)(driftProgramPubkey, controllerPubkey);
123
+ const userStats = yield (0, sdk_1.getUserStatsAccountPublicKey)(driftProgramPubkey, controllerPubkey);
124
+ const spotMarketVault = yield (0, sdk_1.getSpotMarketVaultPublicKey)(driftProgramPubkey, 0);
125
+ const ix = (0, reflect_main_1.getMintDriftS1Instruction)({
126
+ user,
127
+ main,
128
+ usdcController: this.controllerKey,
129
+ adminPermissions,
130
+ userReceiptAta,
131
+ userUsdcAta,
132
+ controllerUsdcAta,
133
+ receiptMint: this.stablecoinMint,
134
+ drift: constants_1.DRIFT_PROGRAM_ID,
135
+ state: (0, kit_1.address)(driftState.toBase58()),
136
+ userStats: (0, kit_1.address)(userStats.toBase58()),
137
+ referrerUserStats: constants_1.REFERRAL_USER_STATS,
138
+ referrerUser: constants_1.REFERRAL_USER,
139
+ userAccount: (0, kit_1.address)(userAccount.toBase58()),
140
+ spotMarketVault: (0, kit_1.address)(spotMarketVault.toBase58()),
141
+ driftVault: constants_1.DRIFT_VAULT,
142
+ tokenProgram: token_1.TOKEN_PROGRAM_ADDRESS,
143
+ usdcAmount: BigInt(amount),
144
+ minUsdcAmount: BigInt(minimumReceived),
145
+ }, { programAddress: this.programAddress });
146
+ return [ix];
147
+ });
148
+ }
149
+ /**
150
+ * Creates a redeem instruction for the USDC+ stablecoin using the legacy instruction.
151
+ *
152
+ * This method uses the legacy redeemDriftS1 instruction that interacts directly
153
+ * with Drift protocol. Use this for programs that have NOT been migrated.
154
+ *
155
+ * @param user - TransactionSigner of the user
156
+ * @param amount - Amount of USDC+ to redeem
157
+ * @param minimumReceived - Minimum amount of USDC to receive
158
+ * @param canChill - Whether to allow the transaction to "chill" if Drift withdrawal is delayed
159
+ * @returns Promise resolving to an array of Instructions
160
+ */
161
+ redeem(user_1, amount_1, minimumReceived_1) {
162
+ return __awaiter(this, arguments, void 0, function* (user, amount, minimumReceived, canChill = false) {
163
+ if (!this.controllerKey)
164
+ yield this.initializeKeys();
165
+ if (!this.stablecoinMint)
166
+ throw new Error("Stablecoin mint not loaded. Call load() first.");
167
+ const main = yield classes_1.PdaClient.deriveMain(this.devnet, this.mock);
168
+ const adminPermissions = yield classes_1.PdaClient.derivePermissions(user.address, this.devnet, this.mock);
169
+ const usdcMint = this.devnet ? constants_1.USDC_MINT_DEVNET : constants_1.USDC_MINT;
170
+ const userReceiptAta = yield this.getAtaLegacy(this.stablecoinMint, user.address);
171
+ const userUsdcAta = yield this.getAtaLegacy(usdcMint, user.address);
172
+ const controllerUsdcAta = yield this.getAtaLegacy(usdcMint, this.controllerKey);
173
+ // Derive Drift accounts
174
+ const driftProgramPubkey = new web3_js_1.PublicKey(constants_1.DRIFT_PROGRAM_ID);
175
+ const controllerPubkey = new web3_js_1.PublicKey(this.controllerKey);
176
+ const driftState = yield (0, sdk_1.getDriftStateAccountPublicKey)(driftProgramPubkey);
177
+ const userAccount = (0, sdk_1.getUserAccountPublicKeySync)(driftProgramPubkey, controllerPubkey);
178
+ const userStats = yield (0, sdk_1.getUserStatsAccountPublicKey)(driftProgramPubkey, controllerPubkey);
179
+ const spotMarketVault = yield (0, sdk_1.getSpotMarketVaultPublicKey)(driftProgramPubkey, 0);
180
+ const ix = (0, reflect_main_1.getRedeemDriftS1Instruction)({
181
+ user,
182
+ main,
183
+ usdcController: this.controllerKey,
184
+ adminPermissions,
185
+ userReceiptAta,
186
+ userUsdcAta,
187
+ controllerUsdcAta,
188
+ receiptMint: this.stablecoinMint,
189
+ drift: constants_1.DRIFT_PROGRAM_ID,
190
+ state: (0, kit_1.address)(driftState.toBase58()),
191
+ userStats: (0, kit_1.address)(userStats.toBase58()),
192
+ referrerUserStats: constants_1.REFERRAL_USER_STATS,
193
+ referrerUser: constants_1.REFERRAL_USER,
194
+ userAccount: (0, kit_1.address)(userAccount.toBase58()),
195
+ spotMarketVault: (0, kit_1.address)(spotMarketVault.toBase58()),
196
+ driftVault: constants_1.DRIFT_VAULT,
197
+ tokenProgram: token_1.TOKEN_PROGRAM_ADDRESS,
198
+ rusdBurnAmount: BigInt(amount),
199
+ minLstRedeem: BigInt(minimumReceived),
200
+ canChill,
201
+ }, { programAddress: this.programAddress });
202
+ return [ix];
203
+ });
204
+ }
205
+ /**
206
+ * Initializes the legacy USDC stablecoin with the specified parameters.
207
+ */
208
+ initialize(admin, mint, cap, recipientAddresses, recipientCuts) {
209
+ return __awaiter(this, void 0, void 0, function* () {
210
+ if (!this.controllerKey)
211
+ yield this.initializeKeys();
212
+ const main = yield classes_1.PdaClient.deriveMain(this.devnet, this.mock);
213
+ const adminPermissions = yield classes_1.PdaClient.derivePermissions(admin.address, this.devnet, this.mock);
214
+ const usdcMint = this.devnet ? constants_1.USDC_MINT_DEVNET : constants_1.USDC_MINT;
215
+ const ix = (0, reflect_main_1.getInitDriftControllerS1Instruction)({
216
+ admin,
217
+ adminPermissions,
218
+ main,
219
+ driftUsdcController: this.controllerKey,
220
+ mint,
221
+ cap,
222
+ recipientAddresses,
223
+ recipientCuts,
224
+ }, { programAddress: this.programAddress });
225
+ // Create new instruction with USDC mint added as remaining account
226
+ // (ix is frozen, so we need to create a new object)
227
+ const ixWithRemainingAccounts = Object.assign(Object.assign({}, ix), { accounts: [
228
+ ...ix.accounts,
229
+ { address: usdcMint, role: kit_1.AccountRole.READONLY },
230
+ ] });
231
+ return [ixWithRemainingAccounts];
232
+ });
233
+ }
234
+ /**
235
+ * Rebalance is not needed for legacy USDC+.
236
+ */
237
+ rebalance() {
238
+ return __awaiter(this, void 0, void 0, function* () {
239
+ return [];
240
+ });
241
+ }
242
+ /**
243
+ * Gets the USD exchange rate for the USDC+ stablecoin.
244
+ */
245
+ getBaseUsdExchangeRate() {
246
+ return __awaiter(this, void 0, void 0, function* () {
247
+ if (!this.controllerKey)
248
+ yield this.initializeKeys();
249
+ const controllerPubkey = new web3_js_1.PublicKey(this.controllerKey);
250
+ const driftProgramPubkey = new web3_js_1.PublicKey(constants_1.DRIFT_PROGRAM_ID);
251
+ const userAccount = (0, sdk_1.getUserAccountPublicKeySync)(driftProgramPubkey, controllerPubkey);
252
+ const { data: userAccountData } = yield (0, drift_1.fetchUser)(this.rpc, (0, kit_1.address)(userAccount.toBase58()));
253
+ const spotPosition = userAccountData.spotPositions[0];
254
+ const { scaledBalance, balanceType } = spotPosition;
255
+ const spotMarketAccount = (0, sdk_1.getSpotMarketPublicKeySync)(driftProgramPubkey, 0);
256
+ const { data: spotMarketAccountData } = yield (0, drift_1.fetchSpotMarket)(this.rpc, (0, kit_1.address)(spotMarketAccount.toBase58()));
257
+ const usdcAmount = (0, sdk_1.getTokenAmount)(new bn_js_1.default(scaledBalance.toString()), (0, drift_1.mapSpotMarket)(spotMarketAccountData), (0, drift_1.mapSpotBalanceType)(balanceType));
258
+ const [{ mint: usdcMint }] = this.collaterals;
259
+ const { data: [{ price: { expo, price } }], } = yield this.getCollateralPrice(usdcMint);
260
+ const exchangeRate = usdcAmount
261
+ .mul(new bn_js_1.default(price))
262
+ .mul(new bn_js_1.default(constants_1.EXCHANGE_RATE_PRECISION))
263
+ .div(new bn_js_1.default(this.stablecoinMintSupply.toString()))
264
+ .div(new bn_js_1.default(10).pow(new bn_js_1.default(expo).abs()));
265
+ return exchangeRate.toNumber();
266
+ });
267
+ }
268
+ getReceiptUsdExchangeRate() {
269
+ return __awaiter(this, void 0, void 0, function* () {
270
+ return this.getBaseUsdExchangeRate();
271
+ });
272
+ }
273
+ getBaseToCollateralExchangeRate() {
274
+ return __awaiter(this, void 0, void 0, function* () {
275
+ if (!this.controllerKey)
276
+ yield this.initializeKeys();
277
+ const controllerPubkey = new web3_js_1.PublicKey(this.controllerKey);
278
+ const driftProgramPubkey = new web3_js_1.PublicKey(constants_1.DRIFT_PROGRAM_ID);
279
+ const userAccount = (0, sdk_1.getUserAccountPublicKeySync)(driftProgramPubkey, controllerPubkey);
280
+ const { data: userAccountData } = yield (0, drift_1.fetchUser)(this.rpc, (0, kit_1.address)(userAccount.toBase58()));
281
+ const spotPosition = userAccountData.spotPositions[0];
282
+ const { scaledBalance, balanceType } = spotPosition;
283
+ const spotMarketAccount = (0, sdk_1.getSpotMarketPublicKeySync)(driftProgramPubkey, 0);
284
+ const { data: spotMarketAccountData } = yield (0, drift_1.fetchSpotMarket)(this.rpc, (0, kit_1.address)(spotMarketAccount.toBase58()));
285
+ const usdcAmount = (0, sdk_1.getTokenAmount)(new bn_js_1.default(scaledBalance.toString()), (0, drift_1.mapSpotMarket)(spotMarketAccountData), (0, drift_1.mapSpotBalanceType)(balanceType));
286
+ const exchangeRate = usdcAmount
287
+ .mul(new bn_js_1.default(constants_1.EXCHANGE_RATE_PRECISION))
288
+ .div(new bn_js_1.default(this.stablecoinMintSupply.toString()));
289
+ return exchangeRate.toNumber();
290
+ });
291
+ }
292
+ getReceiptToCollateralExchangeRate() {
293
+ return __awaiter(this, void 0, void 0, function* () {
294
+ return this.getBaseToCollateralExchangeRate();
295
+ });
296
+ }
297
+ /**
298
+ * Math helper function that calculates receipt tokens to issue for a given deposit amount.
299
+ */
300
+ computeReceiptToken(deposit, depositedVault, receiptTokenSupply) {
301
+ if (receiptTokenSupply.isZero()) {
302
+ return deposit;
303
+ }
304
+ return deposit.mul(receiptTokenSupply).div(depositedVault);
305
+ }
306
+ /**
307
+ * Math helper function that calculates base token amount to return for a given receipt token burn.
308
+ */
309
+ computeBaseToken(receipt, depositedVault, receiptTokenSupply) {
310
+ return receipt.mul(depositedVault).div(receiptTokenSupply);
311
+ }
312
+ simulateMintMath(usdcAmount) {
313
+ return __awaiter(this, void 0, void 0, function* () {
314
+ var _a;
315
+ if (!this.controller) {
316
+ yield this.load();
317
+ }
318
+ if (!((_a = this.controller) === null || _a === void 0 ? void 0 : _a.compounder)) {
319
+ throw new Error("AutoCompound data not available");
320
+ }
321
+ const receiptTokens = this.computeReceiptToken(usdcAmount, new bn_js_1.default(this.controller.compounder.depositedVaultValue.toString()), new bn_js_1.default(this.stablecoinMintSupply.toString()));
322
+ return receiptTokens;
323
+ });
324
+ }
325
+ simulateRedeemMath(receiptTokens) {
326
+ return __awaiter(this, void 0, void 0, function* () {
327
+ var _a;
328
+ if (!this.controller) {
329
+ yield this.load();
330
+ }
331
+ if (!((_a = this.controller) === null || _a === void 0 ? void 0 : _a.compounder)) {
332
+ throw new Error("AutoCompound data not available");
333
+ }
334
+ const usdcAmount = this.computeBaseToken(receiptTokens, new bn_js_1.default(this.controller.compounder.depositedVaultValue.toString()), new bn_js_1.default(this.stablecoinMintSupply.toString()));
335
+ return usdcAmount;
336
+ });
337
+ }
338
+ /**
339
+ * Deposit to Drift
340
+ */
341
+ depositDrift(depositor, amount) {
342
+ return __awaiter(this, void 0, void 0, function* () {
343
+ if (!this.controllerKey)
344
+ yield this.initializeKeys();
345
+ if (!this.controller)
346
+ throw new Error("Controller not loaded. Call load() first.");
347
+ const { oracle, marketIndex } = sdk_1.SpotMarkets["mainnet-beta"][0];
348
+ const driftProgramPubkey = new web3_js_1.PublicKey(constants_1.DRIFT_PROGRAM_ID);
349
+ const controllerPubkey = new web3_js_1.PublicKey(this.controllerKey);
350
+ const spotMarket = (0, sdk_1.getSpotMarketPublicKeySync)(driftProgramPubkey, marketIndex);
351
+ const [{ mint }] = this.collaterals;
352
+ const controllerTokenAccount = yield this.getAtaLegacy(mint, this.controllerKey);
353
+ const depositorTokenAccount = yield this.getAtaLegacy(mint, depositor.address);
354
+ const bump = this.controller.baseStrategy.bump;
355
+ const driftState = yield (0, sdk_1.getDriftStateAccountPublicKey)(driftProgramPubkey);
356
+ const spotMarketVault = yield (0, sdk_1.getSpotMarketVaultPublicKey)(driftProgramPubkey, 0);
357
+ const userAccount = (0, sdk_1.getUserAccountPublicKeySync)(driftProgramPubkey, controllerPubkey);
358
+ const userStats = (0, sdk_1.getUserStatsAccountPublicKey)(driftProgramPubkey, controllerPubkey);
359
+ const ix = (0, reflect_main_1.getDepositDriftInstruction)({
360
+ controller: this.controllerKey,
361
+ depositor,
362
+ spotMarket: (0, kit_1.address)(spotMarket.toBase58()),
363
+ controllerTokenAccount,
364
+ main: yield classes_1.PdaClient.deriveMain(this.devnet, this.mock),
365
+ userAccount: (0, kit_1.address)(userAccount.toBase58()),
366
+ userStats: (0, kit_1.address)(userStats.toBase58()),
367
+ spotMarketVault: (0, kit_1.address)(spotMarketVault.toBase58()),
368
+ oracle: (0, kit_1.address)(oracle.toBase58()),
369
+ tokenProgram: token_1.TOKEN_PROGRAM_ADDRESS,
370
+ state: (0, kit_1.address)(driftState.toBase58()),
371
+ depositorTokenAccount,
372
+ drift: constants_1.DRIFT_PROGRAM_ID,
373
+ amount,
374
+ controllerBump: bump,
375
+ controllerIndex: this.index,
376
+ }, { programAddress: this.programAddress });
377
+ return ix;
378
+ });
379
+ }
380
+ cleanup() {
381
+ return __awaiter(this, void 0, void 0, function* () {
382
+ // No cleanup needed
383
+ });
384
+ }
385
+ }
386
+ exports.UsdcPlusStablecoinLegacy = UsdcPlusStablecoinLegacy;
@@ -0,0 +1,120 @@
1
+ import { Stablecoin } from "../classes/Stablecoin";
2
+ import { Address, TransactionSigner, Rpc, SolanaRpcApi, Instruction } from "@solana/kit";
3
+ import { StrategyController } from "../generated/reflect_main/accounts";
4
+ import BN from "bn.js";
5
+ /**
6
+ * USDT+ Stablecoin implementation for the Reflect protocol.
7
+ * Extends the base Stablecoin class to provide USDT-specific functionality
8
+ * including initialization, minting, redemption, and rebalancing operations.
9
+ *
10
+ * Strategy ID: 1
11
+ * Collateral: USDT
12
+ *
13
+ * This class uses the StrategyController account type which stores data
14
+ * in a rack component system.
15
+ *
16
+ * Environment handling:
17
+ * - devnet=true → Uses devnet program
18
+ * - devnet=false, mock=true → Uses mock program on mainnet
19
+ * - devnet=false, mock=false → Uses production mainnet program
20
+ */
21
+ export declare class UsdtPlusStablecoin extends Stablecoin<StrategyController> {
22
+ private autoCompound;
23
+ /**
24
+ * Creates a new USDT+ Stablecoin instance.
25
+ *
26
+ * @param rpc - Solana RPC instance
27
+ * @param stablecoinMintOverride - Optional override for the stablecoin mint address
28
+ * @param devnet - Whether to use devnet program
29
+ * @param mock - Whether to use mock program on mainnet (only applies when devnet=false)
30
+ */
31
+ constructor(rpc: Rpc<SolanaRpcApi>, stablecoinMintOverride?: Address, devnet?: boolean, mock?: boolean);
32
+ /**
33
+ * Loads the USDT+ controller data from the blockchain.
34
+ * Updates the stablecoin mint and strategy information.
35
+ *
36
+ * This method fetches the StrategyController account and extracts:
37
+ * - Base strategy data (mint, bump, cap, etc.)
38
+ * - AutoCompound component from the rack system
39
+ */
40
+ load(): Promise<void>;
41
+ /**
42
+ * Helper to get associated token address
43
+ */
44
+ private getAta;
45
+ /**
46
+ * Initializes the USDT+ stablecoin with the specified parameters.
47
+ *
48
+ * @param admin - TransactionSigner of the initializer
49
+ * @param mint - Address of the mint to be used for the stablecoin
50
+ * @param cap - Maximum supply cap
51
+ * @param recipientAddresses - Array of recipient addresses for fee distribution
52
+ * @param recipientCuts - Array of recipient cuts (u16 values, total must equal 10000)
53
+ * @returns Promise resolving to an array of Instructions
54
+ */
55
+ initialize(admin: TransactionSigner, mint: Address, cap: bigint, recipientAddresses: Address[], recipientCuts: number[]): Promise<Instruction[]>;
56
+ /**
57
+ * Creates a mint instruction for the USDT+ stablecoin.
58
+ *
59
+ * @param user - TransactionSigner of the user
60
+ * @param amount - Amount of USDT to deposit
61
+ * @param minimumReceived - Minimum amount of USDT+ stablecoins to receive
62
+ * @returns Promise resolving to an array of Instructions
63
+ */
64
+ mint(user: TransactionSigner, amount: bigint | number, minimumReceived: bigint | number): Promise<Instruction[]>;
65
+ /**
66
+ * Creates a redeem instruction for the USDT+ stablecoin.
67
+ *
68
+ * @param user - TransactionSigner of the user
69
+ * @param amount - Amount of USDT+ to redeem
70
+ * @param minimumReceived - Minimum amount of USDT to receive
71
+ * @returns Promise resolving to an array of Instructions
72
+ */
73
+ redeem(user: TransactionSigner, amount: bigint | number, minimumReceived: bigint | number): Promise<Instruction[]>;
74
+ /**
75
+ * Creates a rebalance instruction for the USDT+ stablecoin.
76
+ * Currently returns an empty array as rebalance may not be necessary.
77
+ *
78
+ * @returns Promise resolving to an empty array
79
+ */
80
+ rebalance(): Promise<Instruction[]>;
81
+ /**
82
+ * Gets the USD exchange rate for the USDT+ stablecoin.
83
+ *
84
+ * @returns Promise resolving to the USD exchange rate as a number
85
+ */
86
+ getBaseUsdExchangeRate(): Promise<number>;
87
+ getReceiptUsdExchangeRate(): Promise<number>;
88
+ /**
89
+ * Base (USDT) to Collateral (USDT) exchange rate.
90
+ * For USDT+, base and collateral are the same asset/decimals.
91
+ */
92
+ getBaseToCollateralExchangeRate(): Promise<number>;
93
+ /**
94
+ * Receipt (USDT+) to Collateral (USDT) exchange rate.
95
+ */
96
+ getReceiptToCollateralExchangeRate(): Promise<number>;
97
+ /**
98
+ * Math helper function that calculates receipt tokens to issue for a given deposit amount.
99
+ */
100
+ private computeReceiptToken;
101
+ /**
102
+ * Math helper function that calculates base token amount to return for a given receipt token burn.
103
+ */
104
+ private computeBaseToken;
105
+ /**
106
+ * Processes a user deposit: calculates receipt tokens to issue.
107
+ */
108
+ private processDeposit;
109
+ /**
110
+ * Processes a user redemption: calculates USDT to return.
111
+ */
112
+ private processRedemption;
113
+ simulateMintMath(usdtAmount: BN): Promise<BN>;
114
+ simulateRedeemMath(receiptTokens: BN): Promise<BN>;
115
+ /**
116
+ * Deposit to Drift
117
+ */
118
+ depositDrift(depositor: TransactionSigner, amount: bigint): Promise<import("../generated/reflect_main").DepositDriftInstruction<Address, string, string, string, string, string, string, string, string, string, string, string, string, "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", []>>;
119
+ cleanup(): Promise<void>;
120
+ }