@reflectmoney/stable.ts 2.9.1 → 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.
- 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 +73 -60
- package/dist/classes/ReflectKeeper.js +181 -164
- 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
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { Address, TransactionSigner, Rpc, SolanaRpcApi, Instruction } from "@solana/kit";
|
|
2
|
+
import { Stablecoin } from "../classes/Stablecoin";
|
|
3
|
+
import { type DriftUsdcController } from "../generated/reflect_main/accounts";
|
|
4
|
+
import BN from "bn.js";
|
|
5
|
+
/**
|
|
6
|
+
* Legacy USDC+ Stablecoin implementation for the Reflect protocol.
|
|
7
|
+
*
|
|
8
|
+
* This class uses the legacy DriftUsdcController account type and mint/redeem
|
|
9
|
+
* instructions (mintDriftS1/redeemDriftS1) that were used before the program migration.
|
|
10
|
+
* These instructions interact directly with Drift and require many more accounts.
|
|
11
|
+
*
|
|
12
|
+
* Use this class for programs that have NOT been migrated yet.
|
|
13
|
+
* After migration, use the regular UsdcPlusStablecoin class instead.
|
|
14
|
+
*
|
|
15
|
+
* Strategy ID: 0
|
|
16
|
+
* Collateral: USDC
|
|
17
|
+
*
|
|
18
|
+
* Environment handling:
|
|
19
|
+
* - devnet=true → Uses devnet program
|
|
20
|
+
* - devnet=false, mock=true → Uses mock program on mainnet
|
|
21
|
+
* - devnet=false, mock=false → Uses production mainnet program
|
|
22
|
+
*/
|
|
23
|
+
export declare class UsdcPlusStablecoinLegacy extends Stablecoin<DriftUsdcController> {
|
|
24
|
+
/**
|
|
25
|
+
* Creates a new Legacy USDC+ Stablecoin instance.
|
|
26
|
+
*
|
|
27
|
+
* @param rpc - Solana RPC instance
|
|
28
|
+
* @param stablecoinMintOverride - Optional override for the stablecoin mint address
|
|
29
|
+
* @param devnet - Whether to use devnet program
|
|
30
|
+
* @param mock - Whether to use mock program on mainnet (only applies when devnet=false)
|
|
31
|
+
*/
|
|
32
|
+
constructor(rpc: Rpc<SolanaRpcApi>, stablecoinMintOverride?: Address, devnet?: boolean, mock?: boolean);
|
|
33
|
+
/**
|
|
34
|
+
* Loads the legacy USDC+ controller data from the blockchain.
|
|
35
|
+
* Uses the DriftUsdcController account type which has baseStrategy and compounder.
|
|
36
|
+
*/
|
|
37
|
+
load(): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Helper to get associated token address
|
|
40
|
+
*/
|
|
41
|
+
private getAtaLegacy;
|
|
42
|
+
/**
|
|
43
|
+
* Creates a mint instruction for the USDC+ stablecoin using the legacy instruction.
|
|
44
|
+
*
|
|
45
|
+
* This method uses the legacy mintDriftS1 instruction that interacts directly
|
|
46
|
+
* with Drift protocol. Use this for programs that have NOT been migrated.
|
|
47
|
+
*
|
|
48
|
+
* @param user - TransactionSigner of the user
|
|
49
|
+
* @param amount - Amount of USDC to deposit
|
|
50
|
+
* @param minimumReceived - Minimum amount of USDC+ stablecoins to receive
|
|
51
|
+
* @returns Promise resolving to an array of Instructions
|
|
52
|
+
*/
|
|
53
|
+
mint(user: TransactionSigner, amount: bigint | number, minimumReceived: bigint | number): Promise<Instruction[]>;
|
|
54
|
+
/**
|
|
55
|
+
* Creates a redeem instruction for the USDC+ stablecoin using the legacy instruction.
|
|
56
|
+
*
|
|
57
|
+
* This method uses the legacy redeemDriftS1 instruction that interacts directly
|
|
58
|
+
* with Drift protocol. Use this for programs that have NOT been migrated.
|
|
59
|
+
*
|
|
60
|
+
* @param user - TransactionSigner of the user
|
|
61
|
+
* @param amount - Amount of USDC+ to redeem
|
|
62
|
+
* @param minimumReceived - Minimum amount of USDC to receive
|
|
63
|
+
* @param canChill - Whether to allow the transaction to "chill" if Drift withdrawal is delayed
|
|
64
|
+
* @returns Promise resolving to an array of Instructions
|
|
65
|
+
*/
|
|
66
|
+
redeem(user: TransactionSigner, amount: bigint | number, minimumReceived: bigint | number, canChill?: boolean): Promise<Instruction[]>;
|
|
67
|
+
/**
|
|
68
|
+
* Initializes the legacy USDC stablecoin with the specified parameters.
|
|
69
|
+
*/
|
|
70
|
+
initialize(admin: TransactionSigner, mint: Address, cap: bigint, recipientAddresses: Address[], recipientCuts: number[]): Promise<Instruction[]>;
|
|
71
|
+
/**
|
|
72
|
+
* Rebalance is not needed for legacy USDC+.
|
|
73
|
+
*/
|
|
74
|
+
rebalance(): Promise<Instruction[]>;
|
|
75
|
+
/**
|
|
76
|
+
* Gets the USD exchange rate for the USDC+ stablecoin.
|
|
77
|
+
*/
|
|
78
|
+
getBaseUsdExchangeRate(): Promise<number>;
|
|
79
|
+
getReceiptUsdExchangeRate(): Promise<number>;
|
|
80
|
+
getBaseToCollateralExchangeRate(): Promise<number>;
|
|
81
|
+
getReceiptToCollateralExchangeRate(): Promise<number>;
|
|
82
|
+
/**
|
|
83
|
+
* Math helper function that calculates receipt tokens to issue for a given deposit amount.
|
|
84
|
+
*/
|
|
85
|
+
private computeReceiptToken;
|
|
86
|
+
/**
|
|
87
|
+
* Math helper function that calculates base token amount to return for a given receipt token burn.
|
|
88
|
+
*/
|
|
89
|
+
private computeBaseToken;
|
|
90
|
+
simulateMintMath(usdcAmount: BN): Promise<BN>;
|
|
91
|
+
simulateRedeemMath(receiptTokens: BN): Promise<BN>;
|
|
92
|
+
/**
|
|
93
|
+
* Deposit to Drift
|
|
94
|
+
*/
|
|
95
|
+
depositDrift(depositor: TransactionSigner, amount: bigint): Promise<import("../generated/reflect_main").DepositDriftInstruction<Address, string, string, string, string, string, string, string, string, string, string, string, string, "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", []>>;
|
|
96
|
+
cleanup(): Promise<void>;
|
|
97
|
+
}
|
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.UsdcPlusStablecoinLegacy = void 0;
|
|
16
|
+
const kit_1 = require("@solana/kit");
|
|
17
|
+
const Stablecoin_1 = require("../classes/Stablecoin");
|
|
18
|
+
const classes_1 = require("../classes");
|
|
19
|
+
const constants_1 = require("../constants");
|
|
20
|
+
const reflect_main_1 = require("../generated/reflect_main");
|
|
21
|
+
const accounts_1 = require("../generated/reflect_main/accounts");
|
|
22
|
+
const drift_1 = require("../helpers/drift");
|
|
23
|
+
const sdk_1 = require("@drift-labs/sdk");
|
|
24
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
25
|
+
const bn_js_1 = __importDefault(require("bn.js"));
|
|
26
|
+
const token_1 = require("@solana-program/token");
|
|
27
|
+
/**
|
|
28
|
+
* Legacy USDC+ Stablecoin implementation for the Reflect protocol.
|
|
29
|
+
*
|
|
30
|
+
* This class uses the legacy DriftUsdcController account type and mint/redeem
|
|
31
|
+
* instructions (mintDriftS1/redeemDriftS1) that were used before the program migration.
|
|
32
|
+
* These instructions interact directly with Drift and require many more accounts.
|
|
33
|
+
*
|
|
34
|
+
* Use this class for programs that have NOT been migrated yet.
|
|
35
|
+
* After migration, use the regular UsdcPlusStablecoin class instead.
|
|
36
|
+
*
|
|
37
|
+
* Strategy ID: 0
|
|
38
|
+
* Collateral: USDC
|
|
39
|
+
*
|
|
40
|
+
* Environment handling:
|
|
41
|
+
* - devnet=true → Uses devnet program
|
|
42
|
+
* - devnet=false, mock=true → Uses mock program on mainnet
|
|
43
|
+
* - devnet=false, mock=false → Uses production mainnet program
|
|
44
|
+
*/
|
|
45
|
+
class UsdcPlusStablecoinLegacy extends Stablecoin_1.Stablecoin {
|
|
46
|
+
/**
|
|
47
|
+
* Creates a new Legacy USDC+ Stablecoin instance.
|
|
48
|
+
*
|
|
49
|
+
* @param rpc - Solana RPC instance
|
|
50
|
+
* @param stablecoinMintOverride - Optional override for the stablecoin mint address
|
|
51
|
+
* @param devnet - Whether to use devnet program
|
|
52
|
+
* @param mock - Whether to use mock program on mainnet (only applies when devnet=false)
|
|
53
|
+
*/
|
|
54
|
+
constructor(rpc, stablecoinMintOverride, devnet = false, mock = false) {
|
|
55
|
+
super(0, "USD Coin Plus (Legacy)", rpc, devnet ? constants_1.USDC_PLUS_LOOKUP_TABLE_DEVNET : constants_1.USDC_PLUS_LOOKUP_TABLE, devnet, mock);
|
|
56
|
+
this.collaterals = [
|
|
57
|
+
{
|
|
58
|
+
mint: devnet ? constants_1.USDC_MINT_DEVNET : constants_1.USDC_MINT,
|
|
59
|
+
oracle: "0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",
|
|
60
|
+
decimals: 6,
|
|
61
|
+
},
|
|
62
|
+
];
|
|
63
|
+
this.isPermissioned = true;
|
|
64
|
+
if (stablecoinMintOverride) {
|
|
65
|
+
this.stablecoinMint = stablecoinMintOverride;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Loads the legacy USDC+ controller data from the blockchain.
|
|
70
|
+
* Uses the DriftUsdcController account type which has baseStrategy and compounder.
|
|
71
|
+
*/
|
|
72
|
+
load() {
|
|
73
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
74
|
+
if (!this.controllerKey)
|
|
75
|
+
yield this.initializeKeys();
|
|
76
|
+
// Fetch and decode the DriftUsdcController account
|
|
77
|
+
const controllerAccount = yield (0, accounts_1.fetchDriftUsdcController)(this.rpc, this.controllerKey);
|
|
78
|
+
this.controller = controllerAccount.data;
|
|
79
|
+
this.stablecoinMint = this.controller.baseStrategy.mint;
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Helper to get associated token address
|
|
84
|
+
*/
|
|
85
|
+
getAtaLegacy(mint, owner) {
|
|
86
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
87
|
+
const [ata] = yield (0, token_1.findAssociatedTokenPda)({
|
|
88
|
+
mint,
|
|
89
|
+
owner,
|
|
90
|
+
tokenProgram: token_1.TOKEN_PROGRAM_ADDRESS,
|
|
91
|
+
});
|
|
92
|
+
return ata;
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Creates a mint instruction for the USDC+ stablecoin using the legacy instruction.
|
|
97
|
+
*
|
|
98
|
+
* This method uses the legacy mintDriftS1 instruction that interacts directly
|
|
99
|
+
* with Drift protocol. Use this for programs that have NOT been migrated.
|
|
100
|
+
*
|
|
101
|
+
* @param user - TransactionSigner of the user
|
|
102
|
+
* @param amount - Amount of USDC to deposit
|
|
103
|
+
* @param minimumReceived - Minimum amount of USDC+ stablecoins to receive
|
|
104
|
+
* @returns Promise resolving to an array of Instructions
|
|
105
|
+
*/
|
|
106
|
+
mint(user, amount, minimumReceived) {
|
|
107
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
108
|
+
if (!this.controllerKey)
|
|
109
|
+
yield this.initializeKeys();
|
|
110
|
+
if (!this.stablecoinMint)
|
|
111
|
+
throw new Error("Stablecoin mint not loaded. Call load() first.");
|
|
112
|
+
const main = yield classes_1.PdaClient.deriveMain(this.devnet, this.mock);
|
|
113
|
+
const adminPermissions = yield classes_1.PdaClient.derivePermissions(user.address, this.devnet, this.mock);
|
|
114
|
+
const usdcMint = this.devnet ? constants_1.USDC_MINT_DEVNET : constants_1.USDC_MINT;
|
|
115
|
+
const userReceiptAta = yield this.getAtaLegacy(this.stablecoinMint, user.address);
|
|
116
|
+
const userUsdcAta = yield this.getAtaLegacy(usdcMint, user.address);
|
|
117
|
+
const controllerUsdcAta = yield this.getAtaLegacy(usdcMint, this.controllerKey);
|
|
118
|
+
// Derive Drift accounts
|
|
119
|
+
const driftProgramPubkey = new web3_js_1.PublicKey(constants_1.DRIFT_PROGRAM_ID);
|
|
120
|
+
const controllerPubkey = new web3_js_1.PublicKey(this.controllerKey);
|
|
121
|
+
const driftState = yield (0, sdk_1.getDriftStateAccountPublicKey)(driftProgramPubkey);
|
|
122
|
+
const userAccount = (0, sdk_1.getUserAccountPublicKeySync)(driftProgramPubkey, controllerPubkey);
|
|
123
|
+
const userStats = yield (0, sdk_1.getUserStatsAccountPublicKey)(driftProgramPubkey, controllerPubkey);
|
|
124
|
+
const spotMarketVault = yield (0, sdk_1.getSpotMarketVaultPublicKey)(driftProgramPubkey, 0);
|
|
125
|
+
const ix = (0, reflect_main_1.getMintDriftS1Instruction)({
|
|
126
|
+
user,
|
|
127
|
+
main,
|
|
128
|
+
usdcController: this.controllerKey,
|
|
129
|
+
adminPermissions,
|
|
130
|
+
userReceiptAta,
|
|
131
|
+
userUsdcAta,
|
|
132
|
+
controllerUsdcAta,
|
|
133
|
+
receiptMint: this.stablecoinMint,
|
|
134
|
+
drift: constants_1.DRIFT_PROGRAM_ID,
|
|
135
|
+
state: (0, kit_1.address)(driftState.toBase58()),
|
|
136
|
+
userStats: (0, kit_1.address)(userStats.toBase58()),
|
|
137
|
+
referrerUserStats: constants_1.REFERRAL_USER_STATS,
|
|
138
|
+
referrerUser: constants_1.REFERRAL_USER,
|
|
139
|
+
userAccount: (0, kit_1.address)(userAccount.toBase58()),
|
|
140
|
+
spotMarketVault: (0, kit_1.address)(spotMarketVault.toBase58()),
|
|
141
|
+
driftVault: constants_1.DRIFT_VAULT,
|
|
142
|
+
tokenProgram: token_1.TOKEN_PROGRAM_ADDRESS,
|
|
143
|
+
usdcAmount: BigInt(amount),
|
|
144
|
+
minUsdcAmount: BigInt(minimumReceived),
|
|
145
|
+
}, { programAddress: this.programAddress });
|
|
146
|
+
return [ix];
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Creates a redeem instruction for the USDC+ stablecoin using the legacy instruction.
|
|
151
|
+
*
|
|
152
|
+
* This method uses the legacy redeemDriftS1 instruction that interacts directly
|
|
153
|
+
* with Drift protocol. Use this for programs that have NOT been migrated.
|
|
154
|
+
*
|
|
155
|
+
* @param user - TransactionSigner of the user
|
|
156
|
+
* @param amount - Amount of USDC+ to redeem
|
|
157
|
+
* @param minimumReceived - Minimum amount of USDC to receive
|
|
158
|
+
* @param canChill - Whether to allow the transaction to "chill" if Drift withdrawal is delayed
|
|
159
|
+
* @returns Promise resolving to an array of Instructions
|
|
160
|
+
*/
|
|
161
|
+
redeem(user_1, amount_1, minimumReceived_1) {
|
|
162
|
+
return __awaiter(this, arguments, void 0, function* (user, amount, minimumReceived, canChill = false) {
|
|
163
|
+
if (!this.controllerKey)
|
|
164
|
+
yield this.initializeKeys();
|
|
165
|
+
if (!this.stablecoinMint)
|
|
166
|
+
throw new Error("Stablecoin mint not loaded. Call load() first.");
|
|
167
|
+
const main = yield classes_1.PdaClient.deriveMain(this.devnet, this.mock);
|
|
168
|
+
const adminPermissions = yield classes_1.PdaClient.derivePermissions(user.address, this.devnet, this.mock);
|
|
169
|
+
const usdcMint = this.devnet ? constants_1.USDC_MINT_DEVNET : constants_1.USDC_MINT;
|
|
170
|
+
const userReceiptAta = yield this.getAtaLegacy(this.stablecoinMint, user.address);
|
|
171
|
+
const userUsdcAta = yield this.getAtaLegacy(usdcMint, user.address);
|
|
172
|
+
const controllerUsdcAta = yield this.getAtaLegacy(usdcMint, this.controllerKey);
|
|
173
|
+
// Derive Drift accounts
|
|
174
|
+
const driftProgramPubkey = new web3_js_1.PublicKey(constants_1.DRIFT_PROGRAM_ID);
|
|
175
|
+
const controllerPubkey = new web3_js_1.PublicKey(this.controllerKey);
|
|
176
|
+
const driftState = yield (0, sdk_1.getDriftStateAccountPublicKey)(driftProgramPubkey);
|
|
177
|
+
const userAccount = (0, sdk_1.getUserAccountPublicKeySync)(driftProgramPubkey, controllerPubkey);
|
|
178
|
+
const userStats = yield (0, sdk_1.getUserStatsAccountPublicKey)(driftProgramPubkey, controllerPubkey);
|
|
179
|
+
const spotMarketVault = yield (0, sdk_1.getSpotMarketVaultPublicKey)(driftProgramPubkey, 0);
|
|
180
|
+
const ix = (0, reflect_main_1.getRedeemDriftS1Instruction)({
|
|
181
|
+
user,
|
|
182
|
+
main,
|
|
183
|
+
usdcController: this.controllerKey,
|
|
184
|
+
adminPermissions,
|
|
185
|
+
userReceiptAta,
|
|
186
|
+
userUsdcAta,
|
|
187
|
+
controllerUsdcAta,
|
|
188
|
+
receiptMint: this.stablecoinMint,
|
|
189
|
+
drift: constants_1.DRIFT_PROGRAM_ID,
|
|
190
|
+
state: (0, kit_1.address)(driftState.toBase58()),
|
|
191
|
+
userStats: (0, kit_1.address)(userStats.toBase58()),
|
|
192
|
+
referrerUserStats: constants_1.REFERRAL_USER_STATS,
|
|
193
|
+
referrerUser: constants_1.REFERRAL_USER,
|
|
194
|
+
userAccount: (0, kit_1.address)(userAccount.toBase58()),
|
|
195
|
+
spotMarketVault: (0, kit_1.address)(spotMarketVault.toBase58()),
|
|
196
|
+
driftVault: constants_1.DRIFT_VAULT,
|
|
197
|
+
tokenProgram: token_1.TOKEN_PROGRAM_ADDRESS,
|
|
198
|
+
rusdBurnAmount: BigInt(amount),
|
|
199
|
+
minLstRedeem: BigInt(minimumReceived),
|
|
200
|
+
canChill,
|
|
201
|
+
}, { programAddress: this.programAddress });
|
|
202
|
+
return [ix];
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Initializes the legacy USDC stablecoin with the specified parameters.
|
|
207
|
+
*/
|
|
208
|
+
initialize(admin, mint, cap, recipientAddresses, recipientCuts) {
|
|
209
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
210
|
+
if (!this.controllerKey)
|
|
211
|
+
yield this.initializeKeys();
|
|
212
|
+
const main = yield classes_1.PdaClient.deriveMain(this.devnet, this.mock);
|
|
213
|
+
const adminPermissions = yield classes_1.PdaClient.derivePermissions(admin.address, this.devnet, this.mock);
|
|
214
|
+
const usdcMint = this.devnet ? constants_1.USDC_MINT_DEVNET : constants_1.USDC_MINT;
|
|
215
|
+
const ix = (0, reflect_main_1.getInitDriftControllerS1Instruction)({
|
|
216
|
+
admin,
|
|
217
|
+
adminPermissions,
|
|
218
|
+
main,
|
|
219
|
+
driftUsdcController: this.controllerKey,
|
|
220
|
+
mint,
|
|
221
|
+
cap,
|
|
222
|
+
recipientAddresses,
|
|
223
|
+
recipientCuts,
|
|
224
|
+
}, { programAddress: this.programAddress });
|
|
225
|
+
// Create new instruction with USDC mint added as remaining account
|
|
226
|
+
// (ix is frozen, so we need to create a new object)
|
|
227
|
+
const ixWithRemainingAccounts = Object.assign(Object.assign({}, ix), { accounts: [
|
|
228
|
+
...ix.accounts,
|
|
229
|
+
{ address: usdcMint, role: kit_1.AccountRole.READONLY },
|
|
230
|
+
] });
|
|
231
|
+
return [ixWithRemainingAccounts];
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Rebalance is not needed for legacy USDC+.
|
|
236
|
+
*/
|
|
237
|
+
rebalance() {
|
|
238
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
239
|
+
return [];
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Gets the USD exchange rate for the USDC+ stablecoin.
|
|
244
|
+
*/
|
|
245
|
+
getBaseUsdExchangeRate() {
|
|
246
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
247
|
+
if (!this.controllerKey)
|
|
248
|
+
yield this.initializeKeys();
|
|
249
|
+
const controllerPubkey = new web3_js_1.PublicKey(this.controllerKey);
|
|
250
|
+
const driftProgramPubkey = new web3_js_1.PublicKey(constants_1.DRIFT_PROGRAM_ID);
|
|
251
|
+
const userAccount = (0, sdk_1.getUserAccountPublicKeySync)(driftProgramPubkey, controllerPubkey);
|
|
252
|
+
const { data: userAccountData } = yield (0, drift_1.fetchUser)(this.rpc, (0, kit_1.address)(userAccount.toBase58()));
|
|
253
|
+
const spotPosition = userAccountData.spotPositions[0];
|
|
254
|
+
const { scaledBalance, balanceType } = spotPosition;
|
|
255
|
+
const spotMarketAccount = (0, sdk_1.getSpotMarketPublicKeySync)(driftProgramPubkey, 0);
|
|
256
|
+
const { data: spotMarketAccountData } = yield (0, drift_1.fetchSpotMarket)(this.rpc, (0, kit_1.address)(spotMarketAccount.toBase58()));
|
|
257
|
+
const usdcAmount = (0, sdk_1.getTokenAmount)(new bn_js_1.default(scaledBalance.toString()), (0, drift_1.mapSpotMarket)(spotMarketAccountData), (0, drift_1.mapSpotBalanceType)(balanceType));
|
|
258
|
+
const [{ mint: usdcMint }] = this.collaterals;
|
|
259
|
+
const { data: [{ price: { expo, price } }], } = yield this.getCollateralPrice(usdcMint);
|
|
260
|
+
const exchangeRate = usdcAmount
|
|
261
|
+
.mul(new bn_js_1.default(price))
|
|
262
|
+
.mul(new bn_js_1.default(constants_1.EXCHANGE_RATE_PRECISION))
|
|
263
|
+
.div(new bn_js_1.default(this.stablecoinMintSupply.toString()))
|
|
264
|
+
.div(new bn_js_1.default(10).pow(new bn_js_1.default(expo).abs()));
|
|
265
|
+
return exchangeRate.toNumber();
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
getReceiptUsdExchangeRate() {
|
|
269
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
270
|
+
return this.getBaseUsdExchangeRate();
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
getBaseToCollateralExchangeRate() {
|
|
274
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
275
|
+
if (!this.controllerKey)
|
|
276
|
+
yield this.initializeKeys();
|
|
277
|
+
const controllerPubkey = new web3_js_1.PublicKey(this.controllerKey);
|
|
278
|
+
const driftProgramPubkey = new web3_js_1.PublicKey(constants_1.DRIFT_PROGRAM_ID);
|
|
279
|
+
const userAccount = (0, sdk_1.getUserAccountPublicKeySync)(driftProgramPubkey, controllerPubkey);
|
|
280
|
+
const { data: userAccountData } = yield (0, drift_1.fetchUser)(this.rpc, (0, kit_1.address)(userAccount.toBase58()));
|
|
281
|
+
const spotPosition = userAccountData.spotPositions[0];
|
|
282
|
+
const { scaledBalance, balanceType } = spotPosition;
|
|
283
|
+
const spotMarketAccount = (0, sdk_1.getSpotMarketPublicKeySync)(driftProgramPubkey, 0);
|
|
284
|
+
const { data: spotMarketAccountData } = yield (0, drift_1.fetchSpotMarket)(this.rpc, (0, kit_1.address)(spotMarketAccount.toBase58()));
|
|
285
|
+
const usdcAmount = (0, sdk_1.getTokenAmount)(new bn_js_1.default(scaledBalance.toString()), (0, drift_1.mapSpotMarket)(spotMarketAccountData), (0, drift_1.mapSpotBalanceType)(balanceType));
|
|
286
|
+
const exchangeRate = usdcAmount
|
|
287
|
+
.mul(new bn_js_1.default(constants_1.EXCHANGE_RATE_PRECISION))
|
|
288
|
+
.div(new bn_js_1.default(this.stablecoinMintSupply.toString()));
|
|
289
|
+
return exchangeRate.toNumber();
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
getReceiptToCollateralExchangeRate() {
|
|
293
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
294
|
+
return this.getBaseToCollateralExchangeRate();
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Math helper function that calculates receipt tokens to issue for a given deposit amount.
|
|
299
|
+
*/
|
|
300
|
+
computeReceiptToken(deposit, depositedVault, receiptTokenSupply) {
|
|
301
|
+
if (receiptTokenSupply.isZero()) {
|
|
302
|
+
return deposit;
|
|
303
|
+
}
|
|
304
|
+
return deposit.mul(receiptTokenSupply).div(depositedVault);
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Math helper function that calculates base token amount to return for a given receipt token burn.
|
|
308
|
+
*/
|
|
309
|
+
computeBaseToken(receipt, depositedVault, receiptTokenSupply) {
|
|
310
|
+
return receipt.mul(depositedVault).div(receiptTokenSupply);
|
|
311
|
+
}
|
|
312
|
+
simulateMintMath(usdcAmount) {
|
|
313
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
314
|
+
var _a;
|
|
315
|
+
if (!this.controller) {
|
|
316
|
+
yield this.load();
|
|
317
|
+
}
|
|
318
|
+
if (!((_a = this.controller) === null || _a === void 0 ? void 0 : _a.compounder)) {
|
|
319
|
+
throw new Error("AutoCompound data not available");
|
|
320
|
+
}
|
|
321
|
+
const receiptTokens = this.computeReceiptToken(usdcAmount, new bn_js_1.default(this.controller.compounder.depositedVaultValue.toString()), new bn_js_1.default(this.stablecoinMintSupply.toString()));
|
|
322
|
+
return receiptTokens;
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
simulateRedeemMath(receiptTokens) {
|
|
326
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
327
|
+
var _a;
|
|
328
|
+
if (!this.controller) {
|
|
329
|
+
yield this.load();
|
|
330
|
+
}
|
|
331
|
+
if (!((_a = this.controller) === null || _a === void 0 ? void 0 : _a.compounder)) {
|
|
332
|
+
throw new Error("AutoCompound data not available");
|
|
333
|
+
}
|
|
334
|
+
const usdcAmount = this.computeBaseToken(receiptTokens, new bn_js_1.default(this.controller.compounder.depositedVaultValue.toString()), new bn_js_1.default(this.stablecoinMintSupply.toString()));
|
|
335
|
+
return usdcAmount;
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Deposit to Drift
|
|
340
|
+
*/
|
|
341
|
+
depositDrift(depositor, amount) {
|
|
342
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
343
|
+
if (!this.controllerKey)
|
|
344
|
+
yield this.initializeKeys();
|
|
345
|
+
if (!this.controller)
|
|
346
|
+
throw new Error("Controller not loaded. Call load() first.");
|
|
347
|
+
const { oracle, marketIndex } = sdk_1.SpotMarkets["mainnet-beta"][0];
|
|
348
|
+
const driftProgramPubkey = new web3_js_1.PublicKey(constants_1.DRIFT_PROGRAM_ID);
|
|
349
|
+
const controllerPubkey = new web3_js_1.PublicKey(this.controllerKey);
|
|
350
|
+
const spotMarket = (0, sdk_1.getSpotMarketPublicKeySync)(driftProgramPubkey, marketIndex);
|
|
351
|
+
const [{ mint }] = this.collaterals;
|
|
352
|
+
const controllerTokenAccount = yield this.getAtaLegacy(mint, this.controllerKey);
|
|
353
|
+
const depositorTokenAccount = yield this.getAtaLegacy(mint, depositor.address);
|
|
354
|
+
const bump = this.controller.baseStrategy.bump;
|
|
355
|
+
const driftState = yield (0, sdk_1.getDriftStateAccountPublicKey)(driftProgramPubkey);
|
|
356
|
+
const spotMarketVault = yield (0, sdk_1.getSpotMarketVaultPublicKey)(driftProgramPubkey, 0);
|
|
357
|
+
const userAccount = (0, sdk_1.getUserAccountPublicKeySync)(driftProgramPubkey, controllerPubkey);
|
|
358
|
+
const userStats = (0, sdk_1.getUserStatsAccountPublicKey)(driftProgramPubkey, controllerPubkey);
|
|
359
|
+
const ix = (0, reflect_main_1.getDepositDriftInstruction)({
|
|
360
|
+
controller: this.controllerKey,
|
|
361
|
+
depositor,
|
|
362
|
+
spotMarket: (0, kit_1.address)(spotMarket.toBase58()),
|
|
363
|
+
controllerTokenAccount,
|
|
364
|
+
main: yield classes_1.PdaClient.deriveMain(this.devnet, this.mock),
|
|
365
|
+
userAccount: (0, kit_1.address)(userAccount.toBase58()),
|
|
366
|
+
userStats: (0, kit_1.address)(userStats.toBase58()),
|
|
367
|
+
spotMarketVault: (0, kit_1.address)(spotMarketVault.toBase58()),
|
|
368
|
+
oracle: (0, kit_1.address)(oracle.toBase58()),
|
|
369
|
+
tokenProgram: token_1.TOKEN_PROGRAM_ADDRESS,
|
|
370
|
+
state: (0, kit_1.address)(driftState.toBase58()),
|
|
371
|
+
depositorTokenAccount,
|
|
372
|
+
drift: constants_1.DRIFT_PROGRAM_ID,
|
|
373
|
+
amount,
|
|
374
|
+
controllerBump: bump,
|
|
375
|
+
controllerIndex: this.index,
|
|
376
|
+
}, { programAddress: this.programAddress });
|
|
377
|
+
return ix;
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
cleanup() {
|
|
381
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
382
|
+
// No cleanup needed
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
exports.UsdcPlusStablecoinLegacy = UsdcPlusStablecoinLegacy;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { Stablecoin } from "../classes/Stablecoin";
|
|
2
|
+
import { Address, TransactionSigner, Rpc, SolanaRpcApi, Instruction } from "@solana/kit";
|
|
3
|
+
import { StrategyController } from "../generated/reflect_main/accounts";
|
|
4
|
+
import BN from "bn.js";
|
|
5
|
+
/**
|
|
6
|
+
* USDT+ Stablecoin implementation for the Reflect protocol.
|
|
7
|
+
* Extends the base Stablecoin class to provide USDT-specific functionality
|
|
8
|
+
* including initialization, minting, redemption, and rebalancing operations.
|
|
9
|
+
*
|
|
10
|
+
* Strategy ID: 1
|
|
11
|
+
* Collateral: USDT
|
|
12
|
+
*
|
|
13
|
+
* This class uses the StrategyController account type which stores data
|
|
14
|
+
* in a rack component system.
|
|
15
|
+
*
|
|
16
|
+
* Environment handling:
|
|
17
|
+
* - devnet=true → Uses devnet program
|
|
18
|
+
* - devnet=false, mock=true → Uses mock program on mainnet
|
|
19
|
+
* - devnet=false, mock=false → Uses production mainnet program
|
|
20
|
+
*/
|
|
21
|
+
export declare class UsdtPlusStablecoin extends Stablecoin<StrategyController> {
|
|
22
|
+
private autoCompound;
|
|
23
|
+
/**
|
|
24
|
+
* Creates a new USDT+ Stablecoin instance.
|
|
25
|
+
*
|
|
26
|
+
* @param rpc - Solana RPC instance
|
|
27
|
+
* @param stablecoinMintOverride - Optional override for the stablecoin mint address
|
|
28
|
+
* @param devnet - Whether to use devnet program
|
|
29
|
+
* @param mock - Whether to use mock program on mainnet (only applies when devnet=false)
|
|
30
|
+
*/
|
|
31
|
+
constructor(rpc: Rpc<SolanaRpcApi>, stablecoinMintOverride?: Address, devnet?: boolean, mock?: boolean);
|
|
32
|
+
/**
|
|
33
|
+
* Loads the USDT+ controller data from the blockchain.
|
|
34
|
+
* Updates the stablecoin mint and strategy information.
|
|
35
|
+
*
|
|
36
|
+
* This method fetches the StrategyController account and extracts:
|
|
37
|
+
* - Base strategy data (mint, bump, cap, etc.)
|
|
38
|
+
* - AutoCompound component from the rack system
|
|
39
|
+
*/
|
|
40
|
+
load(): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Helper to get associated token address
|
|
43
|
+
*/
|
|
44
|
+
private getAta;
|
|
45
|
+
/**
|
|
46
|
+
* Initializes the USDT+ stablecoin with the specified parameters.
|
|
47
|
+
*
|
|
48
|
+
* @param admin - TransactionSigner of the initializer
|
|
49
|
+
* @param mint - Address of the mint to be used for the stablecoin
|
|
50
|
+
* @param cap - Maximum supply cap
|
|
51
|
+
* @param recipientAddresses - Array of recipient addresses for fee distribution
|
|
52
|
+
* @param recipientCuts - Array of recipient cuts (u16 values, total must equal 10000)
|
|
53
|
+
* @returns Promise resolving to an array of Instructions
|
|
54
|
+
*/
|
|
55
|
+
initialize(admin: TransactionSigner, mint: Address, cap: bigint, recipientAddresses: Address[], recipientCuts: number[]): Promise<Instruction[]>;
|
|
56
|
+
/**
|
|
57
|
+
* Creates a mint instruction for the USDT+ stablecoin.
|
|
58
|
+
*
|
|
59
|
+
* @param user - TransactionSigner of the user
|
|
60
|
+
* @param amount - Amount of USDT to deposit
|
|
61
|
+
* @param minimumReceived - Minimum amount of USDT+ stablecoins to receive
|
|
62
|
+
* @returns Promise resolving to an array of Instructions
|
|
63
|
+
*/
|
|
64
|
+
mint(user: TransactionSigner, amount: bigint | number, minimumReceived: bigint | number): Promise<Instruction[]>;
|
|
65
|
+
/**
|
|
66
|
+
* Creates a redeem instruction for the USDT+ stablecoin.
|
|
67
|
+
*
|
|
68
|
+
* @param user - TransactionSigner of the user
|
|
69
|
+
* @param amount - Amount of USDT+ to redeem
|
|
70
|
+
* @param minimumReceived - Minimum amount of USDT to receive
|
|
71
|
+
* @returns Promise resolving to an array of Instructions
|
|
72
|
+
*/
|
|
73
|
+
redeem(user: TransactionSigner, amount: bigint | number, minimumReceived: bigint | number): Promise<Instruction[]>;
|
|
74
|
+
/**
|
|
75
|
+
* Creates a rebalance instruction for the USDT+ stablecoin.
|
|
76
|
+
* Currently returns an empty array as rebalance may not be necessary.
|
|
77
|
+
*
|
|
78
|
+
* @returns Promise resolving to an empty array
|
|
79
|
+
*/
|
|
80
|
+
rebalance(): Promise<Instruction[]>;
|
|
81
|
+
/**
|
|
82
|
+
* Gets the USD exchange rate for the USDT+ stablecoin.
|
|
83
|
+
*
|
|
84
|
+
* @returns Promise resolving to the USD exchange rate as a number
|
|
85
|
+
*/
|
|
86
|
+
getBaseUsdExchangeRate(): Promise<number>;
|
|
87
|
+
getReceiptUsdExchangeRate(): Promise<number>;
|
|
88
|
+
/**
|
|
89
|
+
* Base (USDT) to Collateral (USDT) exchange rate.
|
|
90
|
+
* For USDT+, base and collateral are the same asset/decimals.
|
|
91
|
+
*/
|
|
92
|
+
getBaseToCollateralExchangeRate(): Promise<number>;
|
|
93
|
+
/**
|
|
94
|
+
* Receipt (USDT+) to Collateral (USDT) exchange rate.
|
|
95
|
+
*/
|
|
96
|
+
getReceiptToCollateralExchangeRate(): Promise<number>;
|
|
97
|
+
/**
|
|
98
|
+
* Math helper function that calculates receipt tokens to issue for a given deposit amount.
|
|
99
|
+
*/
|
|
100
|
+
private computeReceiptToken;
|
|
101
|
+
/**
|
|
102
|
+
* Math helper function that calculates base token amount to return for a given receipt token burn.
|
|
103
|
+
*/
|
|
104
|
+
private computeBaseToken;
|
|
105
|
+
/**
|
|
106
|
+
* Processes a user deposit: calculates receipt tokens to issue.
|
|
107
|
+
*/
|
|
108
|
+
private processDeposit;
|
|
109
|
+
/**
|
|
110
|
+
* Processes a user redemption: calculates USDT to return.
|
|
111
|
+
*/
|
|
112
|
+
private processRedemption;
|
|
113
|
+
simulateMintMath(usdtAmount: BN): Promise<BN>;
|
|
114
|
+
simulateRedeemMath(receiptTokens: BN): Promise<BN>;
|
|
115
|
+
/**
|
|
116
|
+
* Deposit to Drift
|
|
117
|
+
*/
|
|
118
|
+
depositDrift(depositor: TransactionSigner, amount: bigint): Promise<import("../generated/reflect_main").DepositDriftInstruction<Address, string, string, string, string, string, string, string, string, string, string, string, string, "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", []>>;
|
|
119
|
+
cleanup(): Promise<void>;
|
|
120
|
+
}
|