@reflectmoney/stable.ts 2.9.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +73 -60
  9. package/dist/classes/ReflectKeeper.js +181 -164
  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
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Reflect Money SDK
2
2
 
3
- A TypeScript SDK for interacting with the Reflect programs on Solana. This SDK provides high-level abstractions for minting, redeeming, and managing stablecoins, administrative operations, and protocol integrations.
3
+ A TypeScript SDK for interacting with the Reflect protocol on Solana. The SDK provides high-level abstractions for minting, redeeming, and managing stablecoins.
4
4
 
5
5
  ## Installation
6
6
 
@@ -12,180 +12,311 @@ yarn add @reflectmoney/stable.ts
12
12
 
13
13
  ## Overview
14
14
 
15
- The Reflect SDK enables developers to interact with the protocol via three main Reflect stablecoins:
15
+ The Reflect SDK enables developers to interact with the protocol's stablecoins:
16
16
 
17
- 1. **USDC+ (Index 0)**: Stablecoin backed by USDC deployed in various money markets
18
- 2. **JLP Hedged (Index 1)**: Stablecoin backed by the JLP token, neutralized with perpetual hedging strategies
19
- 3. **LST Delta-Neutral (Index 2)**: Stablecoin backed by LSTs hedged by perpetual futures positions
17
+ - **USDC+ (Index 0)**: Yield-bearing stablecoin backed by USDC deployed in money markets
20
18
 
21
19
  ## Architecture
22
20
 
23
- The SDK is organized into several key components:
24
-
25
21
  ### Core Classes
26
22
 
27
23
  #### `Stablecoin` (Abstract Base Class)
28
- The foundation for all stablecoin implementations. Provides abstract functions and a common interface for:
29
- - Minting
30
- - Redemption
31
- - Administrative operations
32
24
 
33
- **Key Methods:**
34
- - `mint()` - Create mint instructions
35
- - `redeem()` - Create redemption instructions
36
- - `rebalance()` - Create rebalance instructions (admin-only or permissionless, depending on the strategy)
25
+ The foundation for all stablecoin implementations. Provides common interface for:
26
+
27
+ - Minting stablecoins
28
+ - Redemption operations
29
+ - Administrative functions (cap updates, freezing)
30
+ - Drift protocol integration
31
+
32
+ **Key Properties:**
33
+ - `controllerKey` - PDA for the stablecoin controller account
34
+ - `stablecoinMint` - Address of the stablecoin token mint
35
+ - `collaterals` - Array of supported collateral assets
36
+ - `lookupTable` - Address lookup table for transaction optimization
37
+
38
+ #### `UsdcPlusStablecoin`
39
+
40
+ USDC+ implementation - a yield-bearing stablecoin backed by USDC in money markets.
41
+
42
+ - **Strategy ID**: 0
43
+ - **Collateral**: USDC
44
+ - **Status**: Live on mainnet
37
45
 
38
46
  #### `ReflectKeeper`
39
- Administrative client for protocol-level operations (admin-only).
40
47
 
41
- #### `PdaClient`
42
- Utility class for deriving PDAs:
43
- - Configuration program accounts
44
- - Stablecoin controllers
45
- - Permission accounts
46
- - External protocol integrations (Drift, Jupiter, Tokenized Bond)
48
+ Static utility class for protocol-level administrative operations:
47
49
 
48
- #### `ReflectTokenizedBond`
49
- Client for the tokenized bonds program used for wrapping base stablecoins into yield-bearing receipts. Allows for:
50
- - Vault creation and management
51
- - Receipt token generation
52
- - Deposit and withdrawal operations
50
+ - `initializeMain()` - Initialize the main protocol account
51
+ - Protocol configuration and management
53
52
 
54
- ### Stablecoin Implementations
53
+ #### `PdaClient`
55
54
 
56
- #### `UsdcPlusStablecoin`
57
- USDC+ is a stablecoin backed by USDC deployed in money markets. Implementation details:
58
- - Status: Live
59
- - Strategy ID: 0
60
- - Collateral: USDC
61
- - Integrated with the tokenized bonds program at the protocol level
62
- - Users only receive the yield-bearing stablecoin
63
- - Does not require rebalancing
64
-
65
- #### `UsdjStablecoin`
66
- Stablecoin backed by JLP neutralized with perpetual hedging:
67
- - Status: Coming soon
68
- - Strategy ID: 1
69
- - Collateral: JLP (Jupiter LP tokens)
70
- - Requires manual wrapping via the Tokenized Bonds program
71
- - Requires rebalancing, currently permissioned
72
-
73
- #### `LstStablecoin`
74
- Liquid staking token delta-neutral strategy:
75
- - Status: Live
76
- - Strategy ID: 2
77
- - Collateral: Various LSTs (mSOL, jitoSOL, etc.) - use `load()` functionality to fetch the currently supported list of collateral assets
78
- - Requires manual wrapping via the Tokenized Bonds program
79
- - Requires rebalancing, currently permissioned
55
+ Utility class for deriving Program Derived Addresses:
56
+
57
+ - `deriveMain()` - Main protocol configuration account
58
+ - `deriveController(index)` - Stablecoin controller accounts
59
+ - `derivePermissions(admin)` - Admin permission accounts
80
60
 
81
61
  ## Usage
82
62
 
83
- Follow the snippets below to mint and redeem Reflect stablecoins. All Stablecoin subclasses expose methods following the same schema, so the code below works interchangeably with minor changes - simply change between the three:
63
+ ### Setup
84
64
 
85
65
  ```typescript
86
- const stablecoin = new UsdcPlusStablecoin(connection);
87
- const stablecoin = new UsdjStablecoin(connection);
88
- const stablecoin = new LstStablecoin(connection);
66
+ import { createSolanaRpc } from "@solana/kit";
67
+ import { UsdcPlusStablecoin } from "@reflectmoney/stable.ts";
68
+
69
+ // Create RPC connection
70
+ const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");
71
+
72
+ // Initialize the stablecoin client
73
+ const usdcPlus = new UsdcPlusStablecoin(rpc);
74
+
75
+ // Load on-chain state (fetches controller data, mint, exchange rate)
76
+ await usdcPlus.load();
89
77
  ```
90
78
 
91
79
  ### Minting Stablecoins
92
80
 
93
81
  ```typescript
94
- import { UsdcPlusStablecoin } from '@reflectmoney/stable.ts';
95
- import { PublicKey, Keypair, Connection, TransactionMessage, VersionedTransaction } from '@solana/web3.js';
96
- import BN from 'bn.js';
97
-
98
- // Use an actual user's public key, read from wallet adapter or local environment.
99
- const user = Keypair.generate();
100
- const stablecoin = new UsdcPlusStablecoin(connection);
101
-
102
- // Load controller data for the most up-to-date stablecoin setup.
103
- await stablecoin.load(connection);
104
-
105
- // Mint stablecoins against USDC collateral
106
- const instructions = await stablecoin.mint(
107
- user.publicKey,
108
- new BN(1000 * 1_000_000), // Deposit collateral of 1,000 USDC (6 decimals)
109
- new BN(999 * 1_000_000), // Minimum received USDC+ (0.1% slippage protection)
82
+ import {
83
+ createSolanaRpc,
84
+ pipe,
85
+ createTransactionMessage,
86
+ setTransactionMessageFeePayer,
87
+ setTransactionMessageLifetimeUsingBlockhash,
88
+ appendTransactionMessageInstructions,
89
+ signTransactionMessageWithSigners,
90
+ sendAndConfirmTransactionFactory,
91
+ } from "@solana/kit";
92
+ import { UsdcPlusStablecoin } from "@reflectmoney/stable.ts";
93
+
94
+ // Your wallet signer (from wallet adapter or keypair)
95
+ const user = /* your signer */;
96
+
97
+ // Initialize and load stablecoin state
98
+ const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");
99
+ const usdcPlus = new UsdcPlusStablecoin(rpc);
100
+ await usdcPlus.load();
101
+
102
+ // Create mint instruction
103
+ // Deposit 1,000 USDC, expect minimum 999 USDC+ (0.1% slippage)
104
+ const instructions = await usdcPlus.mint(
105
+ user,
106
+ BigInt(1000_000_000), // 1,000 USDC (6 decimals)
107
+ BigInt(999_000_000), // Minimum USDC+ to receive
110
108
  );
111
109
 
112
- const { blockhash } = await connection.getLatestBlockhash();
110
+ // Build and send transaction
111
+ const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();
113
112
 
114
- const {
115
- value: lookupTable
116
- } = await connection.getAddressLookupTable(
117
- stablecoin.lookupTable
113
+ const transactionMessage = pipe(
114
+ createTransactionMessage({ version: 0 }),
115
+ tx => setTransactionMessageFeePayer(user.address, tx),
116
+ tx => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, tx),
117
+ tx => appendTransactionMessageInstructions(instructions, tx),
118
118
  );
119
119
 
120
- const message = new TransactionMessage({
121
- instructions,
122
- payerKey: user.publicKey,
123
- recentBlockhash: blockhash
124
- }).compileToV0Message([lookupTable]);
125
-
126
- const transaction = new VersionedTransaction(message);
120
+ const signedTransaction = await signTransactionMessageWithSigners(transactionMessage);
121
+ const sendAndConfirm = sendAndConfirmTransactionFactory({ rpc });
122
+ const signature = await sendAndConfirm(signedTransaction, { commitment: "confirmed" });
127
123
 
128
- // Transaction signature and confirmation logic, adjust for your needs.
129
- transaction.sign([user]);
130
- await connection.sendRawTransaction(transaction.serialize());
124
+ console.log("Mint transaction:", signature);
131
125
  ```
132
126
 
133
127
  ### Redeeming Stablecoins
134
128
 
135
129
  ```typescript
136
- import { UsdcPlusStablecoin } from '@reflectmoney/stable.ts';
137
- import { PublicKey, Keypair, Connection, TransactionMessage, VersionedTransaction } from '@solana/web3.js';
138
- import BN from 'bn.js';
139
-
140
- // Use an actual user's public key, read from wallet adapter or local environment.
141
- const user = Keypair.generate();
142
- const stablecoin = new UsdcPlusStablecoin(connection);
143
-
144
- // Load controller data for the most up-to-date stablecoin setup.
145
- await stablecoin.load(connection);
146
-
147
- // Redeem USDC+ into USDC
148
- const instructions = await stablecoin.redeem(
149
- user.publicKey,
150
- new BN(999 * 1_000_000), // Burn 999 of USDC+
151
- new BN(1_000 * 1_000_000), // Minimum received USDC (USDC+ is yield bearing, so you'll receive more USDC over time)
130
+ import {
131
+ createSolanaRpc,
132
+ pipe,
133
+ createTransactionMessage,
134
+ setTransactionMessageFeePayer,
135
+ setTransactionMessageLifetimeUsingBlockhash,
136
+ appendTransactionMessageInstructions,
137
+ signTransactionMessageWithSigners,
138
+ sendAndConfirmTransactionFactory,
139
+ } from "@solana/kit";
140
+ import { UsdcPlusStablecoin } from "@reflectmoney/stable.ts";
141
+
142
+ const user = /* your signer */;
143
+
144
+ const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");
145
+ const usdcPlus = new UsdcPlusStablecoin(rpc);
146
+ await usdcPlus.load();
147
+
148
+ // Create redeem instruction
149
+ // Burn 999 USDC+, expect minimum 1,000 USDC (USDC+ accrues yield)
150
+ const instructions = await usdcPlus.redeem(
151
+ user,
152
+ BigInt(999_000_000), // USDC+ to burn
153
+ BigInt(1000_000_000), // Minimum USDC to receive
152
154
  );
153
155
 
154
- const { blockhash } = await connection.getLatestBlockhash();
156
+ // Build and send transaction
157
+ const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();
155
158
 
156
- const {
157
- value: lookupTable
158
- } = await connection.getAddressLookupTable(
159
- stablecoin.lookupTable
159
+ const transactionMessage = pipe(
160
+ createTransactionMessage({ version: 0 }),
161
+ tx => setTransactionMessageFeePayer(user.address, tx),
162
+ tx => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, tx),
163
+ tx => appendTransactionMessageInstructions(instructions, tx),
160
164
  );
161
165
 
162
- const message = new TransactionMessage({
163
- instructions,
164
- payerKey: user.publicKey,
165
- recentBlockhash: blockhash
166
- }).compileToV0Message([lookupTable]);
166
+ const signedTransaction = await signTransactionMessageWithSigners(transactionMessage);
167
+ const sendAndConfirm = sendAndConfirmTransactionFactory({ rpc });
168
+ const signature = await sendAndConfirm(signedTransaction, { commitment: "confirmed" });
169
+
170
+ console.log("Redeem transaction:", signature);
171
+ ```
172
+
173
+ ### Getting Exchange Rate
174
+
175
+ ```typescript
176
+ import { createSolanaRpc } from "@solana/kit";
177
+ import { UsdcPlusStablecoin } from "@reflectmoney/stable.ts";
178
+
179
+ const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");
180
+ const usdcPlus = new UsdcPlusStablecoin(rpc);
181
+ await usdcPlus.load();
182
+
183
+ // Get current exchange rate (USDC per USDC+)
184
+ const exchangeRate = await usdcPlus.getExchangeRate();
185
+ console.log(`1 USDC+ = ${exchangeRate} USDC`);
186
+ ```
187
+
188
+ ### PDA Derivation
189
+
190
+ ```typescript
191
+ import { PdaClient } from "@reflectmoney/stable.ts";
192
+
193
+ // Derive main protocol account
194
+ const mainPda = await PdaClient.deriveMain();
195
+
196
+ // Derive controller for strategy index 0 (USDC+)
197
+ const controllerPda = await PdaClient.deriveController(0);
198
+
199
+ // Derive permissions account for an admin
200
+ const permissionsPda = await PdaClient.derivePermissions(adminAddress);
201
+ ```
202
+
203
+ ### Administrative Operations
204
+
205
+ ```typescript
206
+ import { UsdcPlusStablecoin, ReflectKeeper } from "@reflectmoney/stable.ts";
207
+
208
+ const admin = /* admin signer */;
167
209
 
168
- const transaction = new VersionedTransaction(message);
210
+ // Initialize main protocol (one-time setup)
211
+ const initMainIx = await ReflectKeeper.initializeMain(admin);
169
212
 
170
- // Transaction signature and confirmation logic, adjust for your needs.
171
- transaction.sign([user]);
172
- await connection.sendRawTransaction(transaction.serialize());
213
+ // Update supply cap
214
+ const usdcPlus = new UsdcPlusStablecoin(rpc);
215
+ await usdcPlus.load();
216
+ const updateCapIx = await usdcPlus.updateCap(
217
+ admin,
218
+ BigInt(1_000_000_000_000_000) // New cap
219
+ );
220
+
221
+ // Freeze/unfreeze minting
222
+ const freezeIx = await usdcPlus.freeze(admin, true, 0); // Freeze action 0
223
+ const unfreezeIx = await usdcPlus.freeze(admin, false, 0); // Unfreeze
224
+ ```
225
+
226
+ ## API Reference
227
+
228
+ ### UsdcPlusStablecoin
229
+
230
+ #### Constructor
231
+
232
+ ```typescript
233
+ constructor(rpc: Rpc<SolanaRpcApi>, mint?: Address)
234
+ ```
235
+
236
+ - `rpc` - Solana RPC client
237
+ - `mint` - Optional stablecoin mint address (auto-loaded if not provided)
238
+
239
+ #### Methods
240
+
241
+ | Method | Description | Returns |
242
+ |--------|-------------|---------|
243
+ | `load()` | Load on-chain state (controller, mint, exchange rate) | `Promise<void>` |
244
+ | `initializeKeys()` | Initialize PDA keys without fetching on-chain data | `Promise<void>` |
245
+ | `mint(user, amount, minReceived)` | Create mint instruction | `Promise<Instruction[]>` |
246
+ | `redeem(user, amount, minReceived)` | Create redeem instruction | `Promise<Instruction[]>` |
247
+ | `getExchangeRate()` | Get current USDC/USDC+ exchange rate | `Promise<number>` |
248
+ | `updateCap(admin, newCap)` | Update supply cap (admin) | `Promise<Instruction>` |
249
+ | `freeze(admin, freeze, action)` | Freeze/unfreeze actions (admin) | `Promise<Instruction>` |
250
+
251
+ ### PdaClient
252
+
253
+ #### Static Methods
254
+
255
+ | Method | Description | Returns |
256
+ |--------|-------------|---------|
257
+ | `deriveMain(devnet?)` | Derive main protocol PDA | `Promise<Address>` |
258
+ | `deriveController(index, devnet?)` | Derive controller PDA for strategy | `Promise<Address>` |
259
+ | `derivePermissions(admin, devnet?)` | Derive admin permissions PDA | `Promise<Address>` |
260
+
261
+ ### ReflectKeeper
262
+
263
+ #### Static Methods
264
+
265
+ | Method | Description | Returns |
266
+ |--------|-------------|---------|
267
+ | `initializeMain(admin)` | Initialize main protocol account | `Promise<Instruction>` |
268
+
269
+ ## Types
270
+
271
+ ```typescript
272
+ // Collateral asset configuration
273
+ interface Collateral {
274
+ mint: Address;
275
+ oracle: string;
276
+ decimals: number;
277
+ }
278
+
279
+ // Stablecoin metadata
280
+ interface StablecoinMetadata {
281
+ name: string;
282
+ ticker: string;
283
+ uri: string;
284
+ }
285
+ ```
286
+
287
+ ## Integration Notes
288
+
289
+ ### Drift Protocol
290
+
291
+ The SDK integrates with Drift Protocol for perpetual futures positions. Admin operations for Drift account management:
292
+
293
+ ```typescript
294
+ // Initialize Drift stats account for the controller
295
+ const driftStatsIx = await usdcPlus.initializeStablecoinDriftStatsAccount(admin);
296
+
297
+ // Initialize Drift sub-account
298
+ const driftAccountIx = await usdcPlus.initializeStablecoinDriftAccount(admin);
299
+ ```
300
+
301
+ ### Address Lookup Tables
302
+
303
+ For transaction optimization, use the stablecoin's lookup table:
304
+
305
+ ```typescript
306
+ const lookupTableAddress = usdcPlus.lookupTable;
307
+ // Fetch and use in versioned transactions for reduced transaction size
173
308
  ```
174
309
 
175
- ### Integration with External Protocols
310
+ ## Network Support
176
311
 
177
- The SDK is built with integration for:
178
- - **Drift Protocol**: For perpetual futures and spot trading
179
- - **Jupiter Protocol**: For LP token operations and swaps
180
- - **Pyth Network**: For price oracle data
181
- - **Tokenized Bonds**: For yield generation
312
+ - **Mainnet**: Default configuration
313
+ - **Devnet**: Pass `devnet: true` to constructor or use devnet RPC
182
314
 
183
315
  ## License
184
316
 
185
- This SDK is licensed under the MIT License.
317
+ MIT License
186
318
 
187
319
  ## Support
188
320
 
189
- For support and questions:
190
321
  - Documentation: [docs.reflect.money](https://docs.reflect.money)
191
- - GitHub Issues: [github.com/palindrome-eng/reflect-delta-neutral](https://github.com/palindrome-eng/reflect-delta-neutral)
322
+ - GitHub: [github.com/palindrome-eng/reflect-delta-neutral](https://github.com/palindrome-eng/reflect-delta-neutral)
@@ -0,0 +1,66 @@
1
+ import { Address, TransactionSigner, Rpc, SolanaRpcApi, Instruction } from "@solana/kit";
2
+ /**
3
+ * Migration handler for the Reflect protocol.
4
+ * Provides functionality for migrating program state and accounts to new versions.
5
+ *
6
+ * This class is used by protocol administrators to execute migration instructions
7
+ * when upgrading the program to a new version.
8
+ *
9
+ * Environment handling:
10
+ * - devnet=true → Uses devnet program
11
+ * - devnet=false, mock=true → Uses mock program on mainnet
12
+ * - devnet=false, mock=false → Uses production mainnet program
13
+ */
14
+ export declare class Migration {
15
+ /** Solana RPC instance for communication */
16
+ private rpc;
17
+ /** Address of the main program account */
18
+ private main;
19
+ /** Whether to use devnet program */
20
+ private devnet;
21
+ /** Whether to use mock program on mainnet (only applies when devnet=false) */
22
+ private mock;
23
+ /**
24
+ * Creates a new Migration instance.
25
+ *
26
+ * @param rpc - Solana RPC instance
27
+ * @param devnet - Whether to use devnet program
28
+ * @param mock - Whether to use mock program on mainnet (only applies when devnet=false)
29
+ */
30
+ constructor({ rpc, devnet, mock, }: {
31
+ rpc: Rpc<SolanaRpcApi>;
32
+ devnet?: boolean;
33
+ mock?: boolean;
34
+ });
35
+ /**
36
+ * Initialize the migration client by deriving necessary PDAs.
37
+ */
38
+ initialize(): Promise<void>;
39
+ /**
40
+ * Get the program address based on network configuration.
41
+ * - devnet=true → devnet program
42
+ * - devnet=false, mock=true → mock program on mainnet
43
+ * - devnet=false, mock=false → production mainnet program
44
+ */
45
+ get programAddress(): Address;
46
+ /**
47
+ * Migrates the USDC+ Strategy 1 controller to the new program version.
48
+ *
49
+ * This instruction updates the USDC controller account structure to be
50
+ * compatible with the new program version. It should be called by an admin
51
+ * after the program has been upgraded.
52
+ *
53
+ * @param admin - TransactionSigner of the admin executing the migration
54
+ * @returns Promise resolving to the migration instruction
55
+ *
56
+ * @example
57
+ * ```typescript
58
+ * const migration = new Migration({ rpc, devnet: false });
59
+ * await migration.initialize();
60
+ *
61
+ * const ix = await migration.migrateStrategy1(adminSigner);
62
+ * // Add ix to a transaction and send
63
+ * ```
64
+ */
65
+ migrateStrategy1(admin: TransactionSigner): Promise<Instruction>;
66
+ }
@@ -0,0 +1,95 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Migration = void 0;
13
+ const reflect_main_1 = require("../generated/reflect_main");
14
+ const getProgramAddress_1 = require("../utils/getProgramAddress");
15
+ const PdaClient_1 = require("./PdaClient");
16
+ /**
17
+ * Migration handler for the Reflect protocol.
18
+ * Provides functionality for migrating program state and accounts to new versions.
19
+ *
20
+ * This class is used by protocol administrators to execute migration instructions
21
+ * when upgrading the program to a new version.
22
+ *
23
+ * Environment handling:
24
+ * - devnet=true → Uses devnet program
25
+ * - devnet=false, mock=true → Uses mock program on mainnet
26
+ * - devnet=false, mock=false → Uses production mainnet program
27
+ */
28
+ class Migration {
29
+ /**
30
+ * Creates a new Migration instance.
31
+ *
32
+ * @param rpc - Solana RPC instance
33
+ * @param devnet - Whether to use devnet program
34
+ * @param mock - Whether to use mock program on mainnet (only applies when devnet=false)
35
+ */
36
+ constructor({ rpc, devnet = false, mock = false, }) {
37
+ /** Address of the main program account */
38
+ this.main = null;
39
+ this.rpc = rpc;
40
+ this.devnet = devnet;
41
+ this.mock = mock;
42
+ }
43
+ /**
44
+ * Initialize the migration client by deriving necessary PDAs.
45
+ */
46
+ initialize() {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ this.main = yield PdaClient_1.PdaClient.deriveMain(this.devnet, this.mock);
49
+ });
50
+ }
51
+ /**
52
+ * Get the program address based on network configuration.
53
+ * - devnet=true → devnet program
54
+ * - devnet=false, mock=true → mock program on mainnet
55
+ * - devnet=false, mock=false → production mainnet program
56
+ */
57
+ get programAddress() {
58
+ return (0, getProgramAddress_1.getProgramAddress)({ devnet: this.devnet, mock: this.mock });
59
+ }
60
+ /**
61
+ * Migrates the USDC+ Strategy 1 controller to the new program version.
62
+ *
63
+ * This instruction updates the USDC controller account structure to be
64
+ * compatible with the new program version. It should be called by an admin
65
+ * after the program has been upgraded.
66
+ *
67
+ * @param admin - TransactionSigner of the admin executing the migration
68
+ * @returns Promise resolving to the migration instruction
69
+ *
70
+ * @example
71
+ * ```typescript
72
+ * const migration = new Migration({ rpc, devnet: false });
73
+ * await migration.initialize();
74
+ *
75
+ * const ix = await migration.migrateStrategy1(adminSigner);
76
+ * // Add ix to a transaction and send
77
+ * ```
78
+ */
79
+ migrateStrategy1(admin) {
80
+ return __awaiter(this, void 0, void 0, function* () {
81
+ if (!this.main)
82
+ yield this.initialize();
83
+ const adminPermissions = yield PdaClient_1.PdaClient.derivePermissions(admin.address, this.devnet, this.mock);
84
+ const usdcController = yield PdaClient_1.PdaClient.deriveController(0, this.devnet, this.mock);
85
+ const ix = (0, reflect_main_1.getMigrateS1Instruction)({
86
+ usdcController,
87
+ main: this.main,
88
+ adminPermissions,
89
+ admin,
90
+ }, { programAddress: this.programAddress });
91
+ return ix;
92
+ });
93
+ }
94
+ }
95
+ exports.Migration = Migration;