@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.
- package/README.md +257 -126
- package/dist/classes/Migration.d.ts +66 -0
- package/dist/classes/Migration.js +95 -0
- package/dist/classes/PdaClient.d.ts +46 -68
- package/dist/classes/PdaClient.js +161 -141
- package/dist/classes/Reflect.d.ts +19 -5
- package/dist/classes/Reflect.js +23 -6
- package/dist/classes/ReflectKeeper.d.ts +79 -60
- package/dist/classes/ReflectKeeper.js +192 -163
- package/dist/classes/ReflectTokenisedBond.d.ts +37 -50
- package/dist/classes/ReflectTokenisedBond.js +70 -130
- package/dist/classes/Stablecoin.d.ts +90 -130
- package/dist/classes/Stablecoin.js +134 -247
- package/dist/classes/index.d.ts +1 -0
- package/dist/classes/index.js +1 -0
- package/dist/constants/devnet.d.ts +4 -4
- package/dist/constants/devnet.js +5 -5
- package/dist/constants/drift.d.ts +8 -6
- package/dist/constants/drift.js +12 -12
- package/dist/constants/index.d.ts +4 -2
- package/dist/constants/index.js +4 -2
- package/dist/constants/jupiter.d.ts +12 -4
- package/dist/constants/jupiter.js +17 -6
- package/dist/constants/kamino.d.ts +14 -0
- package/dist/constants/kamino.js +39 -0
- package/dist/constants/lookupTables.d.ts +3 -4
- package/dist/constants/lookupTables.js +5 -5
- package/dist/constants/mock.d.ts +2 -0
- package/dist/constants/mock.js +5 -0
- package/dist/constants/usdc.d.ts +6 -7
- package/dist/constants/usdc.js +8 -9
- package/dist/constants/usdt.d.ts +6 -0
- package/dist/constants/usdt.js +9 -0
- package/dist/constants/wsol.d.ts +6 -6
- package/dist/constants/wsol.js +6 -6
- package/dist/generated/reflect_main/accounts/driftUsdcController.d.ts +31 -0
- package/dist/generated/reflect_main/accounts/driftUsdcController.js +77 -0
- package/dist/generated/reflect_main/accounts/index.d.ts +11 -38
- package/dist/generated/reflect_main/accounts/index.js +11 -39
- package/dist/generated/reflect_main/accounts/main.d.ts +62 -0
- package/dist/generated/reflect_main/accounts/main.js +91 -0
- package/dist/generated/reflect_main/accounts/strategyController.d.ts +31 -0
- package/dist/generated/reflect_main/accounts/strategyController.js +77 -0
- package/dist/generated/reflect_main/accounts/userPermissions.d.ts +44 -0
- package/dist/generated/reflect_main/accounts/userPermissions.js +89 -0
- package/dist/generated/reflect_main/errors/index.d.ts +5 -966
- package/dist/generated/reflect_main/errors/index.js +21 -1663
- package/dist/generated/reflect_main/errors/reflectMain.d.ts +215 -0
- package/dist/generated/reflect_main/errors/reflectMain.js +323 -0
- package/dist/generated/reflect_main/index.d.ts +9 -16
- package/dist/generated/reflect_main/index.js +8 -16
- package/dist/generated/reflect_main/instructions/addLstDrift.d.ts +62 -45
- package/dist/generated/reflect_main/instructions/addLstDrift.js +155 -104
- package/dist/generated/reflect_main/instructions/addSubAccount.d.ts +74 -50
- package/dist/generated/reflect_main/instructions/addSubAccount.js +166 -119
- package/dist/generated/reflect_main/instructions/captureSpreadDrift.d.ts +70 -59
- package/dist/generated/reflect_main/instructions/captureSpreadDrift.js +167 -115
- package/dist/generated/reflect_main/instructions/createAdminAccount.d.ts +53 -46
- package/dist/generated/reflect_main/instructions/createAdminAccount.js +135 -91
- package/dist/generated/reflect_main/instructions/createDriftUserAccount.d.ts +78 -0
- package/dist/generated/reflect_main/instructions/createDriftUserAccount.js +184 -0
- package/dist/generated/reflect_main/instructions/createDriftUserStatsAccount.d.ts +74 -0
- package/dist/generated/reflect_main/instructions/createDriftUserStatsAccount.js +173 -0
- package/dist/generated/reflect_main/instructions/createKaminoUserAccounts.d.ts +144 -0
- package/dist/generated/reflect_main/instructions/createKaminoUserAccounts.js +395 -0
- package/dist/generated/reflect_main/instructions/depositDrift.d.ts +96 -66
- package/dist/generated/reflect_main/instructions/depositDrift.js +190 -139
- package/dist/generated/reflect_main/instructions/freezeProgram.d.ts +56 -47
- package/dist/generated/reflect_main/instructions/freezeProgram.js +139 -94
- package/dist/generated/reflect_main/instructions/freezeProtocolAction.d.ts +57 -48
- package/dist/generated/reflect_main/instructions/freezeProtocolAction.js +140 -95
- package/dist/generated/reflect_main/instructions/freezeStrategyAction.d.ts +61 -51
- package/dist/generated/reflect_main/instructions/freezeStrategyAction.js +145 -101
- package/dist/generated/reflect_main/instructions/increaseAdminSize.d.ts +40 -45
- package/dist/generated/reflect_main/instructions/increaseAdminSize.js +81 -90
- package/dist/generated/reflect_main/instructions/index.d.ts +45 -33
- package/dist/generated/reflect_main/instructions/index.js +19 -7
- package/dist/generated/reflect_main/instructions/initDriftControllerS1.d.ts +70 -53
- package/dist/generated/reflect_main/instructions/initDriftControllerS1.js +163 -100
- package/dist/generated/reflect_main/instructions/initDriftControllerS2.d.ts +75 -0
- package/dist/generated/reflect_main/instructions/initDriftControllerS2.js +176 -0
- package/dist/generated/reflect_main/instructions/initDriftControllerS3.d.ts +70 -53
- package/dist/generated/reflect_main/instructions/initDriftControllerS3.js +163 -100
- package/dist/generated/reflect_main/instructions/initMain.d.ts +50 -39
- package/dist/generated/reflect_main/instructions/initMain.js +136 -91
- package/dist/generated/reflect_main/instructions/migrateS1.d.ts +58 -0
- package/dist/generated/reflect_main/instructions/migrateS1.js +145 -0
- package/dist/generated/reflect_main/instructions/mintDriftS1.d.ts +118 -81
- package/dist/generated/reflect_main/instructions/mintDriftS1.js +244 -169
- package/dist/generated/reflect_main/instructions/mintDriftS3.d.ts +118 -81
- package/dist/generated/reflect_main/instructions/mintDriftS3.js +244 -169
- package/dist/generated/reflect_main/instructions/mintStrategy1.d.ts +95 -0
- package/dist/generated/reflect_main/instructions/mintStrategy1.js +236 -0
- package/dist/generated/reflect_main/instructions/mintStrategy2.d.ts +95 -0
- package/dist/generated/reflect_main/instructions/mintStrategy2.js +236 -0
- package/dist/generated/reflect_main/instructions/rebalanceS1.d.ts +74 -0
- package/dist/generated/reflect_main/instructions/rebalanceS1.js +211 -0
- package/dist/generated/reflect_main/instructions/rebalanceS2.d.ts +74 -0
- package/dist/generated/reflect_main/instructions/rebalanceS2.js +211 -0
- package/dist/generated/reflect_main/instructions/redeemDriftS1.d.ts +121 -81
- package/dist/generated/reflect_main/instructions/redeemDriftS1.js +246 -170
- package/dist/generated/reflect_main/instructions/redeemDriftS3.d.ts +121 -81
- package/dist/generated/reflect_main/instructions/redeemDriftS3.js +246 -170
- package/dist/generated/reflect_main/instructions/redeemStrategy1.d.ts +95 -0
- package/dist/generated/reflect_main/instructions/redeemStrategy1.js +236 -0
- package/dist/generated/reflect_main/instructions/redeemStrategy2.d.ts +95 -0
- package/dist/generated/reflect_main/instructions/redeemStrategy2.js +236 -0
- package/dist/generated/reflect_main/instructions/settlePnl.d.ts +62 -46
- package/dist/generated/reflect_main/instructions/settlePnl.js +135 -104
- package/dist/generated/reflect_main/instructions/suspendSplProtocol.d.ts +57 -48
- package/dist/generated/reflect_main/instructions/suspendSplProtocol.js +139 -95
- package/dist/generated/reflect_main/instructions/suspendSplStrategy.d.ts +61 -50
- package/dist/generated/reflect_main/instructions/suspendSplStrategy.js +144 -100
- package/dist/generated/reflect_main/instructions/updateActionRoleProtocol.d.ts +60 -50
- package/dist/generated/reflect_main/instructions/updateActionRoleProtocol.js +142 -98
- package/dist/generated/reflect_main/instructions/updateActionRoleStrategy.d.ts +64 -52
- package/dist/generated/reflect_main/instructions/updateActionRoleStrategy.js +147 -103
- package/dist/generated/reflect_main/instructions/updateAttenuation.d.ts +65 -51
- package/dist/generated/reflect_main/instructions/updateAttenuation.js +146 -100
- package/dist/generated/reflect_main/instructions/updateCap.d.ts +58 -50
- package/dist/generated/reflect_main/instructions/updateCap.js +142 -98
- package/dist/generated/reflect_main/instructions/updateCapitalConductor.d.ts +79 -0
- package/dist/generated/reflect_main/instructions/updateCapitalConductor.js +161 -0
- package/dist/generated/reflect_main/instructions/updateRecipients.d.ts +62 -51
- package/dist/generated/reflect_main/instructions/updateRecipients.js +144 -100
- package/dist/generated/reflect_main/instructions/updateRoleHolderProtocol.d.ts +65 -53
- package/dist/generated/reflect_main/instructions/updateRoleHolderProtocol.js +154 -104
- package/dist/generated/reflect_main/instructions/updateRoleHolderStrategy.d.ts +65 -53
- package/dist/generated/reflect_main/instructions/updateRoleHolderStrategy.js +154 -104
- package/dist/generated/reflect_main/programs/index.d.ts +8 -0
- package/dist/generated/reflect_main/programs/index.js +24 -0
- package/dist/generated/reflect_main/programs/reflectMain.d.ts +139 -0
- package/dist/generated/reflect_main/programs/reflectMain.js +190 -0
- package/dist/generated/reflect_main/shared/index.d.ts +49 -0
- package/dist/generated/reflect_main/shared/index.js +90 -0
- package/dist/generated/reflect_main/types/accessControl.d.ts +24 -0
- package/dist/generated/reflect_main/types/accessControl.js +29 -0
- package/dist/generated/reflect_main/types/accessMap.d.ts +24 -0
- package/dist/generated/reflect_main/types/accessMap.js +35 -0
- package/dist/generated/reflect_main/types/action.d.ts +32 -0
- package/dist/generated/reflect_main/types/action.js +44 -0
- package/dist/generated/reflect_main/types/actionMapping.d.ts +22 -0
- package/dist/generated/reflect_main/types/actionMapping.js +31 -0
- package/dist/generated/reflect_main/types/addedProtocolActionRole.d.ts +20 -0
- package/dist/generated/reflect_main/types/addedProtocolActionRole.js +29 -0
- package/dist/generated/reflect_main/types/addedProtocolRoleHolder.d.ts +20 -0
- package/dist/generated/reflect_main/types/addedProtocolRoleHolder.js +29 -0
- package/dist/generated/reflect_main/types/addedStrategyActionRole.d.ts +22 -0
- package/dist/generated/reflect_main/types/addedStrategyActionRole.js +31 -0
- package/dist/generated/reflect_main/types/addedStrategyRoleHolder.d.ts +22 -0
- package/dist/generated/reflect_main/types/addedStrategyRoleHolder.js +31 -0
- package/dist/generated/reflect_main/types/attenuation.d.ts +16 -0
- package/dist/generated/reflect_main/types/attenuation.js +28 -0
- package/dist/generated/reflect_main/types/attenuationUpdated.d.ts +23 -0
- package/dist/generated/reflect_main/types/attenuationUpdated.js +32 -0
- package/dist/generated/reflect_main/types/autoCompound.d.ts +23 -0
- package/dist/generated/reflect_main/types/autoCompound.js +32 -0
- package/dist/generated/reflect_main/types/base.d.ts +38 -0
- package/dist/generated/reflect_main/types/base.js +47 -0
- package/dist/generated/reflect_main/types/capitalConductorComponent.d.ts +28 -0
- package/dist/generated/reflect_main/types/capitalConductorComponent.js +43 -0
- package/dist/generated/reflect_main/types/capture.d.ts +24 -0
- package/dist/generated/reflect_main/types/capture.js +33 -0
- package/dist/generated/reflect_main/types/component.d.ts +24 -0
- package/dist/generated/reflect_main/types/component.js +33 -0
- package/dist/generated/reflect_main/types/componentType.d.ts +24 -0
- package/dist/generated/reflect_main/types/componentType.js +36 -0
- package/dist/generated/reflect_main/types/currentProtocolBalance.d.ts +20 -0
- package/dist/generated/reflect_main/types/currentProtocolBalance.js +29 -0
- package/dist/generated/reflect_main/types/currentProtocolRatio.d.ts +24 -0
- package/dist/generated/reflect_main/types/currentProtocolRatio.js +33 -0
- package/dist/generated/reflect_main/types/driftSpotData.d.ts +17 -0
- package/dist/generated/reflect_main/types/driftSpotData.js +30 -0
- package/dist/generated/reflect_main/types/driftSpotMarketsComponent.d.ts +20 -0
- package/dist/generated/reflect_main/types/driftSpotMarketsComponent.js +29 -0
- package/dist/generated/reflect_main/types/driftSubAccountsComponent.d.ts +18 -0
- package/dist/generated/reflect_main/types/driftSubAccountsComponent.js +23 -0
- package/dist/generated/reflect_main/types/driftSubs.d.ts +17 -0
- package/dist/generated/reflect_main/types/driftSubs.js +30 -0
- package/dist/generated/reflect_main/types/dustThresholdUpdated.d.ts +21 -0
- package/dist/generated/reflect_main/types/dustThresholdUpdated.js +30 -0
- package/dist/generated/reflect_main/types/externals.d.ts +18 -0
- package/dist/generated/reflect_main/types/externals.js +23 -0
- package/dist/generated/reflect_main/types/flowControl.d.ts +20 -0
- package/dist/generated/reflect_main/types/flowControl.js +29 -0
- package/dist/generated/reflect_main/types/index.d.ts +76 -81
- package/dist/generated/reflect_main/types/index.js +76 -81
- package/dist/generated/reflect_main/types/issue.d.ts +39 -0
- package/dist/generated/reflect_main/types/issue.js +36 -0
- package/dist/generated/reflect_main/types/killSwitch.d.ts +20 -0
- package/dist/generated/reflect_main/types/killSwitch.js +22 -0
- package/dist/generated/reflect_main/types/levelRoles.d.ts +23 -0
- package/dist/generated/reflect_main/types/levelRoles.js +23 -0
- package/dist/generated/reflect_main/types/maxDeviationBpsUpdated.d.ts +17 -0
- package/dist/generated/reflect_main/types/maxDeviationBpsUpdated.js +30 -0
- package/dist/generated/reflect_main/types/minPerLegTransferUpdated.d.ts +21 -0
- package/dist/generated/reflect_main/types/minPerLegTransferUpdated.js +30 -0
- package/dist/generated/reflect_main/types/newAdminAccount.d.ts +15 -0
- package/dist/generated/reflect_main/types/newAdminAccount.js +22 -0
- package/dist/generated/reflect_main/types/penaltyScaleFactorUpdated.d.ts +17 -0
- package/dist/generated/reflect_main/types/penaltyScaleFactorUpdated.js +30 -0
- package/dist/generated/reflect_main/types/program.d.ts +22 -0
- package/dist/generated/reflect_main/types/program.js +31 -0
- package/dist/generated/reflect_main/types/programStatus.d.ts +16 -0
- package/dist/generated/reflect_main/types/programStatus.js +28 -0
- package/dist/generated/reflect_main/types/programStatusUpdate.d.ts +20 -0
- package/dist/generated/reflect_main/types/programStatusUpdate.js +29 -0
- package/dist/generated/reflect_main/types/protocolActionUpdate.d.ts +20 -0
- package/dist/generated/reflect_main/types/protocolActionUpdate.js +29 -0
- package/dist/generated/reflect_main/types/protocolRatiosUpdated.d.ts +22 -0
- package/dist/generated/reflect_main/types/protocolRatiosUpdated.js +31 -0
- package/dist/generated/reflect_main/types/rack.d.ts +18 -0
- package/dist/generated/reflect_main/types/rack.js +27 -0
- package/dist/generated/reflect_main/types/recipient.d.ts +19 -0
- package/dist/generated/reflect_main/types/recipient.js +28 -0
- package/dist/generated/reflect_main/types/recipients.d.ts +20 -0
- package/dist/generated/reflect_main/types/recipients.js +29 -0
- package/dist/generated/reflect_main/types/redeem.d.ts +39 -0
- package/dist/generated/reflect_main/types/redeem.js +36 -0
- package/dist/generated/reflect_main/types/removedProtocolActionRole.d.ts +20 -0
- package/dist/generated/reflect_main/types/removedProtocolActionRole.js +29 -0
- package/dist/generated/reflect_main/types/removedProtocolRoleHolder.d.ts +20 -0
- package/dist/generated/reflect_main/types/removedProtocolRoleHolder.js +29 -0
- package/dist/generated/reflect_main/types/removedStrategyActionRole.d.ts +22 -0
- package/dist/generated/reflect_main/types/removedStrategyActionRole.js +31 -0
- package/dist/generated/reflect_main/types/removedStrategyRoleHolder.d.ts +22 -0
- package/dist/generated/reflect_main/types/removedStrategyRoleHolder.js +31 -0
- package/dist/generated/reflect_main/types/role.d.ts +22 -0
- package/dist/generated/reflect_main/types/role.js +34 -0
- package/dist/generated/reflect_main/types/settlement.d.ts +17 -0
- package/dist/generated/reflect_main/types/settlement.js +30 -0
- package/dist/generated/reflect_main/types/splBase.d.ts +17 -0
- package/dist/generated/reflect_main/types/splBase.js +30 -0
- package/dist/generated/reflect_main/types/splMain.d.ts +43 -0
- package/dist/generated/reflect_main/types/splMain.js +44 -0
- package/dist/generated/reflect_main/types/splSupport.d.ts +15 -0
- package/dist/generated/reflect_main/types/splSupport.js +22 -0
- package/dist/generated/reflect_main/types/splSupportStrategy.d.ts +16 -0
- package/dist/generated/reflect_main/types/splSupportStrategy.js +28 -0
- package/dist/generated/reflect_main/types/splSuspendProtocol.d.ts +16 -0
- package/dist/generated/reflect_main/types/splSuspendProtocol.js +28 -0
- package/dist/generated/reflect_main/types/splSuspendStrategy.d.ts +17 -0
- package/dist/generated/reflect_main/types/splSuspendStrategy.js +30 -0
- package/dist/generated/reflect_main/types/spls.d.ts +20 -0
- package/dist/generated/reflect_main/types/spls.js +29 -0
- package/dist/generated/reflect_main/types/spotDepositDrift.d.ts +19 -0
- package/dist/generated/reflect_main/types/spotDepositDrift.js +28 -0
- package/dist/generated/reflect_main/types/spreadCapture.d.ts +27 -0
- package/dist/generated/reflect_main/types/spreadCapture.js +30 -0
- package/dist/generated/reflect_main/types/status.d.ts +17 -0
- package/dist/generated/reflect_main/types/status.js +29 -0
- package/dist/generated/reflect_main/types/strategyActionUpdate.d.ts +22 -0
- package/dist/generated/reflect_main/types/strategyActionUpdate.js +31 -0
- package/dist/generated/reflect_main/types/strategyNegative.d.ts +21 -0
- package/dist/generated/reflect_main/types/strategyNegative.js +28 -0
- package/dist/generated/reflect_main/types/strategyPadding.d.ts +15 -0
- package/dist/generated/reflect_main/types/strategyPadding.js +26 -0
- package/dist/generated/reflect_main/types/strategyRoleEntry.d.ts +24 -0
- package/dist/generated/reflect_main/types/strategyRoleEntry.js +29 -0
- package/dist/generated/reflect_main/types/subsVec.d.ts +20 -0
- package/dist/generated/reflect_main/types/subsVec.js +29 -0
- package/dist/generated/reflect_main/types/update.d.ts +16 -0
- package/dist/generated/reflect_main/types/update.js +28 -0
- package/dist/generated/reflect_main/types/updateCap.d.ts +21 -0
- package/dist/generated/reflect_main/types/updateCap.js +30 -0
- package/dist/generated/reflect_main/types/updateRebalanceSlippage.d.ts +17 -0
- package/dist/generated/reflect_main/types/updateRebalanceSlippage.js +30 -0
- package/dist/generated/reflect_main/types/updateRecipients.d.ts +20 -0
- package/dist/generated/reflect_main/types/updateRecipients.js +29 -0
- package/dist/generated/reflect_main/types/yieldDistribution.d.ts +16 -0
- package/dist/generated/reflect_main/types/yieldDistribution.js +28 -0
- package/dist/generated/reflect_main/types/yieldVenue.d.ts +17 -0
- package/dist/generated/reflect_main/types/yieldVenue.js +29 -0
- package/dist/generated/reflect_main/types/yieldVenueAllocation.d.ts +25 -0
- package/dist/generated/reflect_main/types/yieldVenueAllocation.js +29 -0
- package/dist/generated/reflect_tokenised_bonds/accounts/Config.d.ts +1 -1
- package/dist/generated/reflect_tokenised_bonds/accounts/Vault.d.ts +1 -1
- package/dist/helpers/drift/accounts/spotMarket.d.ts +1 -1
- package/dist/helpers/drift/accounts/user.d.ts +1 -1
- package/dist/helpers/drift/accounts/userStats.d.ts +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +6 -3
- package/dist/stablecoins/UsdcPlusStablecoin.d.ts +115 -70
- package/dist/stablecoins/UsdcPlusStablecoin.js +575 -238
- package/dist/stablecoins/UsdcPlusStablecoinLegacy.d.ts +97 -0
- package/dist/stablecoins/UsdcPlusStablecoinLegacy.js +386 -0
- package/dist/stablecoins/UsdtPlusStablecoin.d.ts +120 -0
- package/dist/stablecoins/UsdtPlusStablecoin.js +428 -0
- package/dist/stablecoins/index.d.ts +2 -2
- package/dist/stablecoins/index.js +2 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/index.d.ts +6 -18
- package/dist/utils/getProgramAddress.d.ts +22 -0
- package/dist/utils/getProgramAddress.js +27 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +43 -0
- package/package.json +8 -3
- package/dist/classes/ApiClient.d.ts +0 -84
- package/dist/classes/ApiClient.js +0 -139
- package/dist/constants/lst.d.ts +0 -3
- package/dist/constants/lst.js +0 -6
- package/dist/generated/reflect_main/accounts/DriftJlpController.d.ts +0 -110
- package/dist/generated/reflect_main/accounts/DriftJlpController.js +0 -175
- package/dist/generated/reflect_main/accounts/DriftLstController.d.ts +0 -104
- package/dist/generated/reflect_main/accounts/DriftLstController.js +0 -171
- package/dist/generated/reflect_main/accounts/DriftUsdcController.d.ts +0 -102
- package/dist/generated/reflect_main/accounts/DriftUsdcController.js +0 -168
- package/dist/generated/reflect_main/accounts/Main.d.ts +0 -110
- package/dist/generated/reflect_main/accounts/Main.js +0 -175
- package/dist/generated/reflect_main/accounts/PerpMarket.d.ts +0 -226
- package/dist/generated/reflect_main/accounts/PerpMarket.js +0 -317
- package/dist/generated/reflect_main/accounts/PrelaunchOracle.d.ts +0 -130
- package/dist/generated/reflect_main/accounts/PrelaunchOracle.js +0 -234
- package/dist/generated/reflect_main/accounts/PythLazerOracle.d.ts +0 -124
- package/dist/generated/reflect_main/accounts/PythLazerOracle.js +0 -220
- package/dist/generated/reflect_main/accounts/RebalanceLst.d.ts +0 -111
- package/dist/generated/reflect_main/accounts/RebalanceLst.js +0 -185
- package/dist/generated/reflect_main/accounts/SpotMarket.d.ts +0 -377
- package/dist/generated/reflect_main/accounts/SpotMarket.js +0 -611
- package/dist/generated/reflect_main/accounts/User.d.ts +0 -221
- package/dist/generated/reflect_main/accounts/User.js +0 -341
- package/dist/generated/reflect_main/accounts/UserPermissions.d.ts +0 -106
- package/dist/generated/reflect_main/accounts/UserPermissions.js +0 -171
- package/dist/generated/reflect_main/accounts/UserStats.d.ts +0 -211
- package/dist/generated/reflect_main/accounts/UserStats.js +0 -333
- package/dist/generated/reflect_main/instructions/createUserStatsAccount.d.ts +0 -52
- package/dist/generated/reflect_main/instructions/createUserStatsAccount.js +0 -126
- package/dist/generated/reflect_main/instructions/initDriftAccountsS1.d.ts +0 -54
- package/dist/generated/reflect_main/instructions/initDriftAccountsS1.js +0 -131
- package/dist/generated/reflect_main/instructions/processSwapDeposit.d.ts +0 -69
- package/dist/generated/reflect_main/instructions/processSwapDeposit.js +0 -165
- package/dist/generated/reflect_main/instructions/processSwapWithdraw.d.ts +0 -69
- package/dist/generated/reflect_main/instructions/processSwapWithdraw.js +0 -165
- package/dist/generated/reflect_main/instructions/settlePnlMulti.d.ts +0 -60
- package/dist/generated/reflect_main/instructions/settlePnlMulti.js +0 -118
- package/dist/generated/reflect_main/instructions/swapOrca.d.ts +0 -81
- package/dist/generated/reflect_main/instructions/swapOrca.js +0 -166
- package/dist/generated/reflect_main/instructions/swapOrcaTwoHop.d.ts +0 -101
- package/dist/generated/reflect_main/instructions/swapOrcaTwoHop.js +0 -213
- package/dist/generated/reflect_main/instructions/updateRebalanceSlippage.d.ts +0 -55
- package/dist/generated/reflect_main/instructions/updateRebalanceSlippage.js +0 -109
- package/dist/generated/reflect_main/types/AMM.d.ts +0 -102
- package/dist/generated/reflect_main/types/AMM.js +0 -137
- package/dist/generated/reflect_main/types/AccKey.d.ts +0 -15
- package/dist/generated/reflect_main/types/AccKey.js +0 -48
- package/dist/generated/reflect_main/types/AccessControl.d.ts +0 -18
- package/dist/generated/reflect_main/types/AccessControl.js +0 -53
- package/dist/generated/reflect_main/types/AccessMap.d.ts +0 -17
- package/dist/generated/reflect_main/types/AccessMap.js +0 -52
- package/dist/generated/reflect_main/types/Action.d.ts +0 -35
- package/dist/generated/reflect_main/types/Action.js +0 -72
- package/dist/generated/reflect_main/types/ActionMapping.d.ts +0 -19
- package/dist/generated/reflect_main/types/ActionMapping.js +0 -54
- package/dist/generated/reflect_main/types/AssetTier.d.ts +0 -23
- package/dist/generated/reflect_main/types/AssetTier.js +0 -60
- package/dist/generated/reflect_main/types/Attenuation.d.ts +0 -16
- package/dist/generated/reflect_main/types/Attenuation.js +0 -51
- package/dist/generated/reflect_main/types/AutoCompound.d.ts +0 -18
- package/dist/generated/reflect_main/types/AutoCompound.js +0 -53
- package/dist/generated/reflect_main/types/BalanceType.d.ts +0 -20
- package/dist/generated/reflect_main/types/BalanceType.js +0 -57
- package/dist/generated/reflect_main/types/Capture.d.ts +0 -19
- package/dist/generated/reflect_main/types/Capture.js +0 -54
- package/dist/generated/reflect_main/types/ContractTier.d.ts +0 -24
- package/dist/generated/reflect_main/types/ContractTier.js +0 -61
- package/dist/generated/reflect_main/types/ContractType.d.ts +0 -20
- package/dist/generated/reflect_main/types/ContractType.js +0 -57
- package/dist/generated/reflect_main/types/CorpAction.d.ts +0 -19
- package/dist/generated/reflect_main/types/CorpAction.js +0 -56
- package/dist/generated/reflect_main/types/CustodyInfo.d.ts +0 -20
- package/dist/generated/reflect_main/types/CustodyInfo.js +0 -55
- package/dist/generated/reflect_main/types/DirectionCollateral.d.ts +0 -20
- package/dist/generated/reflect_main/types/DirectionCollateral.js +0 -57
- package/dist/generated/reflect_main/types/DirectionPosition.d.ts +0 -20
- package/dist/generated/reflect_main/types/DirectionPosition.js +0 -57
- package/dist/generated/reflect_main/types/DriftControllerBase.d.ts +0 -15
- package/dist/generated/reflect_main/types/DriftControllerBase.js +0 -48
- package/dist/generated/reflect_main/types/DriftJlpControllerFixedAccounts.d.ts +0 -18
- package/dist/generated/reflect_main/types/DriftJlpControllerFixedAccounts.js +0 -53
- package/dist/generated/reflect_main/types/DriftLstData.d.ts +0 -17
- package/dist/generated/reflect_main/types/DriftLstData.js +0 -52
- package/dist/generated/reflect_main/types/Ema.d.ts +0 -17
- package/dist/generated/reflect_main/types/Ema.js +0 -52
- package/dist/generated/reflect_main/types/Externals.d.ts +0 -16
- package/dist/generated/reflect_main/types/Externals.js +0 -49
- package/dist/generated/reflect_main/types/FlowControl.d.ts +0 -17
- package/dist/generated/reflect_main/types/FlowControl.js +0 -52
- package/dist/generated/reflect_main/types/HistoricalIndexData.d.ts +0 -19
- package/dist/generated/reflect_main/types/HistoricalIndexData.js +0 -54
- package/dist/generated/reflect_main/types/HistoricalOracleData.d.ts +0 -20
- package/dist/generated/reflect_main/types/HistoricalOracleData.js +0 -55
- package/dist/generated/reflect_main/types/Holding.d.ts +0 -21
- package/dist/generated/reflect_main/types/Holding.js +0 -56
- package/dist/generated/reflect_main/types/Holdings.d.ts +0 -17
- package/dist/generated/reflect_main/types/Holdings.js +0 -52
- package/dist/generated/reflect_main/types/InsuranceClaim.d.ts +0 -19
- package/dist/generated/reflect_main/types/InsuranceClaim.js +0 -54
- package/dist/generated/reflect_main/types/InsuranceFund.d.ts +0 -24
- package/dist/generated/reflect_main/types/InsuranceFund.js +0 -59
- package/dist/generated/reflect_main/types/JlpRebalanceSettings.d.ts +0 -15
- package/dist/generated/reflect_main/types/JlpRebalanceSettings.js +0 -48
- package/dist/generated/reflect_main/types/KillSwitch.d.ts +0 -15
- package/dist/generated/reflect_main/types/KillSwitch.js +0 -48
- package/dist/generated/reflect_main/types/LevelRoles.d.ts +0 -16
- package/dist/generated/reflect_main/types/LevelRoles.js +0 -49
- package/dist/generated/reflect_main/types/MarketStatus.d.ts +0 -27
- package/dist/generated/reflect_main/types/MarketStatus.js +0 -64
- package/dist/generated/reflect_main/types/MarketType.d.ts +0 -20
- package/dist/generated/reflect_main/types/MarketType.js +0 -57
- package/dist/generated/reflect_main/types/ModifyOrderParams.d.ts +0 -32
- package/dist/generated/reflect_main/types/ModifyOrderParams.js +0 -67
- package/dist/generated/reflect_main/types/ModifyOrderPolicy.d.ts +0 -20
- package/dist/generated/reflect_main/types/ModifyOrderPolicy.js +0 -57
- package/dist/generated/reflect_main/types/Movements.d.ts +0 -19
- package/dist/generated/reflect_main/types/Movements.js +0 -54
- package/dist/generated/reflect_main/types/OracleGuardRails.d.ts +0 -18
- package/dist/generated/reflect_main/types/OracleGuardRails.js +0 -53
- package/dist/generated/reflect_main/types/OracleSource.d.ts +0 -34
- package/dist/generated/reflect_main/types/OracleSource.js +0 -71
- package/dist/generated/reflect_main/types/OracleValidity.d.ts +0 -25
- package/dist/generated/reflect_main/types/OracleValidity.js +0 -62
- package/dist/generated/reflect_main/types/Order.d.ts +0 -43
- package/dist/generated/reflect_main/types/Order.js +0 -78
- package/dist/generated/reflect_main/types/OrderDirection.d.ts +0 -20
- package/dist/generated/reflect_main/types/OrderDirection.js +0 -57
- package/dist/generated/reflect_main/types/OrderParams.d.ts +0 -36
- package/dist/generated/reflect_main/types/OrderParams.js +0 -71
- package/dist/generated/reflect_main/types/OrderStatus.d.ts +0 -22
- package/dist/generated/reflect_main/types/OrderStatus.js +0 -59
- package/dist/generated/reflect_main/types/OrderTriggerCondition.d.ts +0 -22
- package/dist/generated/reflect_main/types/OrderTriggerCondition.js +0 -59
- package/dist/generated/reflect_main/types/OrderType.d.ts +0 -23
- package/dist/generated/reflect_main/types/OrderType.js +0 -60
- package/dist/generated/reflect_main/types/PermissionLevel.d.ts +0 -45
- package/dist/generated/reflect_main/types/PermissionLevel.js +0 -58
- package/dist/generated/reflect_main/types/PerpHedge.d.ts +0 -17
- package/dist/generated/reflect_main/types/PerpHedge.js +0 -52
- package/dist/generated/reflect_main/types/PerpPosition.d.ts +0 -29
- package/dist/generated/reflect_main/types/PerpPosition.js +0 -64
- package/dist/generated/reflect_main/types/PoolBalance.d.ts +0 -17
- package/dist/generated/reflect_main/types/PoolBalance.js +0 -52
- package/dist/generated/reflect_main/types/Position.d.ts +0 -20
- package/dist/generated/reflect_main/types/Position.js +0 -55
- package/dist/generated/reflect_main/types/PositionDirection.d.ts +0 -20
- package/dist/generated/reflect_main/types/PositionDirection.js +0 -57
- package/dist/generated/reflect_main/types/PositionDrift.d.ts +0 -18
- package/dist/generated/reflect_main/types/PositionDrift.js +0 -53
- package/dist/generated/reflect_main/types/PostOnlyParam.d.ts +0 -22
- package/dist/generated/reflect_main/types/PostOnlyParam.js +0 -59
- package/dist/generated/reflect_main/types/Price.d.ts +0 -41
- package/dist/generated/reflect_main/types/Price.js +0 -76
- package/dist/generated/reflect_main/types/PriceComp.d.ts +0 -19
- package/dist/generated/reflect_main/types/PriceComp.js +0 -54
- package/dist/generated/reflect_main/types/PriceDivergenceGuardRails.d.ts +0 -16
- package/dist/generated/reflect_main/types/PriceDivergenceGuardRails.js +0 -51
- package/dist/generated/reflect_main/types/PriceInfo.d.ts +0 -21
- package/dist/generated/reflect_main/types/PriceInfo.js +0 -56
- package/dist/generated/reflect_main/types/PriceStatus.d.ts +0 -22
- package/dist/generated/reflect_main/types/PriceStatus.js +0 -59
- package/dist/generated/reflect_main/types/PriceType.d.ts +0 -20
- package/dist/generated/reflect_main/types/PriceType.js +0 -57
- package/dist/generated/reflect_main/types/Program.d.ts +0 -19
- package/dist/generated/reflect_main/types/Program.js +0 -54
- package/dist/generated/reflect_main/types/ProgramStatus.d.ts +0 -20
- package/dist/generated/reflect_main/types/ProgramStatus.js +0 -57
- package/dist/generated/reflect_main/types/Recipient.d.ts +0 -17
- package/dist/generated/reflect_main/types/Recipient.js +0 -52
- package/dist/generated/reflect_main/types/Recipients.d.ts +0 -17
- package/dist/generated/reflect_main/types/Recipients.js +0 -52
- package/dist/generated/reflect_main/types/Role.d.ts +0 -25
- package/dist/generated/reflect_main/types/Role.js +0 -62
- package/dist/generated/reflect_main/types/ShiftCollateral.d.ts +0 -19
- package/dist/generated/reflect_main/types/ShiftCollateral.js +0 -54
- package/dist/generated/reflect_main/types/ShiftPosition.d.ts +0 -17
- package/dist/generated/reflect_main/types/ShiftPosition.js +0 -52
- package/dist/generated/reflect_main/types/ShortHolding.d.ts +0 -17
- package/dist/generated/reflect_main/types/ShortHolding.js +0 -52
- package/dist/generated/reflect_main/types/SplBase.d.ts +0 -17
- package/dist/generated/reflect_main/types/SplBase.js +0 -52
- package/dist/generated/reflect_main/types/SplMain.d.ts +0 -22
- package/dist/generated/reflect_main/types/SplMain.js +0 -57
- package/dist/generated/reflect_main/types/Spls.d.ts +0 -17
- package/dist/generated/reflect_main/types/Spls.js +0 -52
- package/dist/generated/reflect_main/types/SpotBalanceType.d.ts +0 -20
- package/dist/generated/reflect_main/types/SpotBalanceType.js +0 -57
- package/dist/generated/reflect_main/types/SpotPosition.d.ts +0 -23
- package/dist/generated/reflect_main/types/SpotPosition.js +0 -58
- package/dist/generated/reflect_main/types/Status.d.ts +0 -21
- package/dist/generated/reflect_main/types/Status.js +0 -58
- package/dist/generated/reflect_main/types/Strategy.d.ts +0 -33
- package/dist/generated/reflect_main/types/Strategy.js +0 -68
- package/dist/generated/reflect_main/types/StrategyPadding.d.ts +0 -15
- package/dist/generated/reflect_main/types/StrategyPadding.js +0 -48
- package/dist/generated/reflect_main/types/StrategyRoleEntry.d.ts +0 -17
- package/dist/generated/reflect_main/types/StrategyRoleEntry.js +0 -52
- package/dist/generated/reflect_main/types/SubAccount.d.ts +0 -17
- package/dist/generated/reflect_main/types/SubAccount.js +0 -52
- package/dist/generated/reflect_main/types/Update.d.ts +0 -20
- package/dist/generated/reflect_main/types/Update.js +0 -57
- package/dist/generated/reflect_main/types/UserFees.d.ts +0 -20
- package/dist/generated/reflect_main/types/UserFees.js +0 -55
- package/dist/generated/reflect_main/types/ValidityGuardRails.d.ts +0 -18
- package/dist/generated/reflect_main/types/ValidityGuardRails.js +0 -53
- package/dist/generated/reflect_main/types/YieldDistribution.d.ts +0 -20
- package/dist/generated/reflect_main/types/YieldDistribution.js +0 -57
- package/dist/helpers/getOrcaQuote.d.ts +0 -3
- package/dist/helpers/getOrcaQuote.js +0 -27
- package/dist/stablecoins/LstStablecoin.d.ts +0 -108
- package/dist/stablecoins/LstStablecoin.js +0 -354
- package/dist/stablecoins/UsdjStablecoin.d.ts +0 -1
- package/dist/stablecoins/UsdjStablecoin.js +0 -44
- package/dist/types/api.d.ts +0 -1384
- 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
|
|
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
|
|
15
|
+
The Reflect SDK enables developers to interact with the protocol's stablecoins:
|
|
16
16
|
|
|
17
|
-
|
|
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
|
-
|
|
34
|
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
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
|
-
|
|
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
|
-
|
|
49
|
-
|
|
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
|
-
|
|
53
|
+
#### `PdaClient`
|
|
55
54
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
-
|
|
59
|
-
-
|
|
60
|
-
-
|
|
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
|
-
|
|
63
|
+
### Setup
|
|
84
64
|
|
|
85
65
|
```typescript
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
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 {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
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
|
-
|
|
110
|
+
// Build and send transaction
|
|
111
|
+
const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();
|
|
113
112
|
|
|
114
|
-
const
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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
|
|
121
|
-
|
|
122
|
-
|
|
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
|
-
|
|
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 {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
const
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
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
|
-
|
|
156
|
+
// Build and send transaction
|
|
157
|
+
const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();
|
|
155
158
|
|
|
156
|
-
const
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
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
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
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
|
-
|
|
210
|
+
// Initialize main protocol (one-time setup)
|
|
211
|
+
const initMainIx = await ReflectKeeper.initializeMain(admin);
|
|
169
212
|
|
|
170
|
-
//
|
|
171
|
-
|
|
172
|
-
await
|
|
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
|
-
|
|
310
|
+
## Network Support
|
|
176
311
|
|
|
177
|
-
|
|
178
|
-
- **
|
|
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
|
-
|
|
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
|
|
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;
|