1.0.1 • Published 1 year ago

centarus-incentive-sdk v1.0.1

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

SDK for centarus incentive solana

📝 About

  • Sdk with helper functions to perform actions on the Incentive smart contracts
  • including data accounts serialization/deserialization

🔥🔥 Actions:

  • initializeAccounts -- to be called by any account that has sol
  • wrapTokens -- to be called by user
  • unwrapTokens -- to be called by user
  • refreshPrizePool -- to be called by anybody (preferably rewardAuthority)
  • setEmergencyMode -- can be called by either multisig operator or rewardAuthority. But note that rewardAuthority will be changed once this function is called
  • rewardUser -- to be called by rewardAuthority
  • confirmUpdateRewardAuthority -- -- to be called by new rewardAuthority

🚀 Multisig Instructions: generated to be called by a multisig

  • getUpdateRewardAuthorityInstruction -- generate updateRewardAuthority instruction for Multisig
  • getSetEmergencyModeInstruction -- generate setEmergencyModeInstruction for Multisig

🚀 Example:

  • Import package
import { initializeCentarusAccounts } from "centarus-incentive-solana";
  • Get reserve Information
   const reserveToUse = {
       asset: 'SOL',
       address: '5VVLD7BQp8y3bTgyF5ezm1ResyMTR3PhYsT4iHFU8Sxz',
       collateralMintAddress: 'FzwZWRMc3GCqjSrcpVX3ueJc6UpcV6iWWb7ZMsTXE3Gf',
       collateralSupplyAddress: 'J5KGpESS8Zq2MvK4rtL6wKbeMRYZzb6TEzn8qPsZFgGd',
       liquidityAddress: 'furd3XUtjXZ2gRvSsoUts9A5m8cMJNqdsyR2Rt8vY9s',
       liquidityFeeReceiverAddress: '5kFqzU2k1tEXtoeNayk1TVxLycoAH5k8WsaGnBnanYJH',
       userSupplyCap: 250
   }
  • Initialize accounts
const connection = new Connection("https://api.devnet.solana.com", 'confirmed');
const payer = getKeypair(testAccounts[0].privateKey);
const rewardAuthority = getKeypair(testAccounts[1].privateKey);
const operator = getKeypair(testAccounts[2].privateKey);
const user = getKeypair(testAccounts[3].privateKey);
  • Call function
    await initializeCentarusAccounts({
        connection,
        tokenSymbol: reserveToUse.asset,
        centarusProgramId: CENTARUS_PROGRAM_ID,
        decimals: asset.decimals,
        lendingMarketAddress: new PublicKey(lendingMarket.address),
        multisigOperator: operator.publicKey,
        payer,
        reserveCollateralMintAddress: new PublicKey(reserveToUse.collateralMintAddress),
        rewardAuthority: rewardAuthority.publicKey,
        tokenMintAddress: new PublicKey(asset.mintAddress),
    })