UNPKG

@kamino-finance/farms-sdk

Version:
372 lines 13.9 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.initializeGlobalConfig = initializeGlobalConfig; exports.updateGlobalConfig = updateGlobalConfig; exports.updateGlobalConfigAdmin = updateGlobalConfigAdmin; exports.updateSecondDelegatedAuthority = updateSecondDelegatedAuthority; exports.updateFarmAdmin = updateFarmAdmin; exports.initializeFarm = initializeFarm; exports.initializeFarmDelegated = initializeFarmDelegated; exports.initializeReward = initializeReward; exports.addReward = addReward; exports.withdrawReward = withdrawReward; exports.updateFarmConfig = updateFarmConfig; exports.refreshFarm = refreshFarm; exports.initializeUser = initializeUser; exports.transferOwnership = transferOwnership; exports.stake = stake; exports.unstake = unstake; exports.harvestReward = harvestReward; exports.withdrawTreasury = withdrawTreasury; exports.refreshUserState = refreshUserState; exports.withdrawUnstakedDeposit = withdrawUnstakedDeposit; exports.withdrawFromFarmVault = withdrawFromFarmVault; exports.depositToFarmVault = depositToFarmVault; exports.serializeConfigValue = serializeConfigValue; exports.serializeRewardCurvePoint = serializeRewardCurvePoint; const kit_1 = require("@solana/kit"); const utils_1 = require("./utils"); const bn_js_1 = __importDefault(require("bn.js")); const system_1 = require("@solana-program/system"); const token_1 = require("@solana-program/token"); const sysvars_1 = require("@solana/sysvars"); const instructions_1 = require("../@codegen/farms/instructions"); const FarmConfigOption_1 = require("../@codegen/farms/types/FarmConfigOption"); const addressEncoder = (0, kit_1.getAddressEncoder)(); function initializeGlobalConfig(globalAdmin, globalConfig, treasuryVaultAuthority) { let accounts = { globalAdmin, globalConfig: globalConfig, treasuryVaultsAuthority: treasuryVaultAuthority, systemProgram: system_1.SYSTEM_PROGRAM_ADDRESS, }; return (0, instructions_1.initializeGlobalConfig)(accounts); } function updateGlobalConfig(globalAdmin, globalConfig, mode, flagValue, flagValueType) { let formattedValue = (0, utils_1.getGlobalConfigValue)(flagValueType, flagValue); let accounts = { globalAdmin, globalConfig: globalConfig, }; let args = { mode: mode.discriminator, value: formattedValue, }; return (0, instructions_1.updateGlobalConfig)(args, accounts); } function updateGlobalConfigAdmin(pendingGlobalAdmin, globalConfig) { let accounts = { pendingGlobalAdmin, globalConfig: globalConfig, }; return (0, instructions_1.updateGlobalConfigAdmin)(accounts); } function updateSecondDelegatedAuthority(globalConfigAdmin, globalConfig, farm, newSecondAuthority) { let accounts = { globalAdmin: globalConfigAdmin, farmState: farm, globalConfig, newSecondDelegatedAuthority: newSecondAuthority, }; return (0, instructions_1.updateSecondDelegatedAuthority)(accounts); } function updateFarmAdmin(pendingFarmAdmin, farm) { let accounts = { pendingFarmAdmin, farmState: farm, }; return (0, instructions_1.updateFarmAdmin)(accounts); } function initializeFarm(globalConfig, farmAdmin, farmState, farmVault, farmVaultAuthority, tokenMint) { let accounts = { farmAdmin, farmState: farmState, globalConfig: globalConfig, farmVault: farmVault, farmVaultsAuthority: farmVaultAuthority, tokenMint: tokenMint, tokenProgram: token_1.TOKEN_PROGRAM_ADDRESS, systemProgram: system_1.SYSTEM_PROGRAM_ADDRESS, rent: sysvars_1.SYSVAR_RENT_ADDRESS, }; return (0, instructions_1.initializeFarm)(accounts); } function initializeFarmDelegated(globalConfig, farmAdmin, farmState, farmVaultAuthority, farmDelegate) { let accounts = { farmAdmin, farmState: farmState, globalConfig: globalConfig, farmVaultsAuthority: farmVaultAuthority, systemProgram: system_1.SYSTEM_PROGRAM_ADDRESS, rent: sysvars_1.SYSVAR_RENT_ADDRESS, farmDelegate, }; return (0, instructions_1.initializeFarmDelegated)(accounts); } function initializeReward(globalConfig, treasuryVaultAuthority, treasuryVault, farmAdmin, farmState, rewardVault, farmVaultAuthority, rewardMint, tokenProgram) { let accounts = { farmAdmin, farmState: farmState, globalConfig: globalConfig, rewardVault: rewardVault, farmVaultsAuthority: farmVaultAuthority, treasuryVaultsAuthority: treasuryVaultAuthority, rewardTreasuryVault: treasuryVault, rewardMint: rewardMint, tokenProgram, systemProgram: system_1.SYSTEM_PROGRAM_ADDRESS, rent: sysvars_1.SYSVAR_RENT_ADDRESS, }; return (0, instructions_1.initializeReward)(accounts); } function addReward(payer, farmState, rewardVault, farmVaultAuthority, payerRewardAta, rewardMint, scopePrices, rewardIndex, tokenProgram, amount) { let accounts = { payer, farmState: farmState, rewardVault: rewardVault, farmVaultsAuthority: farmVaultAuthority, payerRewardTokenAta: payerRewardAta, rewardMint: rewardMint, tokenProgram, scopePrices, }; let args = { amount: amount, rewardIndex: new bn_js_1.default(rewardIndex), }; return (0, instructions_1.addRewards)(args, accounts); } function withdrawReward(admin, farmState, rewardMint, rewardVault, farmVaultAuthority, adminRewardAta, scopePrices, tokenProgram, rewardIndex, amount) { let accounts = { farmAdmin: admin, farmState: farmState, rewardVault: rewardVault, rewardMint, farmVaultsAuthority: farmVaultAuthority, adminRewardTokenAta: adminRewardAta, tokenProgram, scopePrices, }; let args = { amount: amount, rewardIndex: new bn_js_1.default(rewardIndex), }; return (0, instructions_1.withdrawReward)(args, accounts); } function updateFarmConfig(farmAdmin, farmState, scopePrices, rewardIndex, mode, value) { let accounts = { signer: farmAdmin, farmState: farmState, scopePrices, }; let data = new Uint8Array(); let buffer; switch (mode.discriminator) { case FarmConfigOption_1.LockingStartTimestamp.discriminator: case FarmConfigOption_1.LockingDuration.discriminator: case FarmConfigOption_1.DepositCapAmount.discriminator: case FarmConfigOption_1.LockingEarlyWithdrawalPenaltyBps.discriminator: case FarmConfigOption_1.LockingMode.discriminator: case FarmConfigOption_1.ScopeOracleMaxAge.discriminator: buffer = Buffer.alloc(8); buffer.writeBigUint64LE(BigInt(value), 0); data = Uint8Array.from(buffer); break; case FarmConfigOption_1.ScopeOraclePriceId.discriminator: // BN arg buffer = Buffer.alloc(8); buffer.writeBigUint64LE(BigInt(value.toString()), 0); data = Uint8Array.from(buffer); break; case FarmConfigOption_1.DepositWarmupPeriod.discriminator: case FarmConfigOption_1.WithdrawCooldownPeriod.discriminator: buffer = Buffer.alloc(4); buffer.writeInt32LE(value, 0); data = Uint8Array.from(buffer); break; case FarmConfigOption_1.UpdateStrategyId.discriminator: case FarmConfigOption_1.UpdatePendingFarmAdmin.discriminator: case FarmConfigOption_1.ScopePricesAccount.discriminator: case FarmConfigOption_1.SlashedAmountSpillAddress.discriminator: case FarmConfigOption_1.WithdrawAuthority.discriminator: case FarmConfigOption_1.UpdateDelegatedRpsAdmin.discriminator: case FarmConfigOption_1.UpdateVaultId.discriminator: data = Buffer.from(addressEncoder.encode(value)); break; case FarmConfigOption_1.UpdateRewardScheduleCurvePoints.discriminator: let points = value; data = serializeRewardCurvePoint(rewardIndex, points); break; default: data = serializeConfigValue(BigInt(rewardIndex), BigInt(value)); break; } let args = { mode: mode.discriminator, data, }; return (0, instructions_1.updateFarmConfig)(args, accounts); } function refreshFarm(farmState, scopePrices) { let accounts = { farmState: farmState, scopePrices, }; return (0, instructions_1.refreshFarm)(accounts); } function initializeUser(farmState, owner, userState, authority, delegatee = owner) { let accounts = { authority, payer: authority, delegatee, owner, userState: userState, farmState: farmState, systemProgram: system_1.SYSTEM_PROGRAM_ADDRESS, rent: sysvars_1.SYSVAR_RENT_ADDRESS, }; return (0, instructions_1.initializeUser)(accounts); } function transferOwnership(oldOwner, oldUserState, newOwner, farmState, newUserState, scopePrices) { let accounts = { oldOwner: oldOwner, newOwner: newOwner, // The current owner is the userState oldUserState: oldUserState, newUserState: newUserState, farmState: farmState, // Assuming farmState is the same as userState for this context systemProgram: system_1.SYSTEM_PROGRAM_ADDRESS, rent: sysvars_1.SYSVAR_RENT_ADDRESS, scopePrices: scopePrices, }; return (0, instructions_1.transferOwnership)(accounts); } function stake(owner, userState, ownerTokenAta, farmState, farmVault, tokenMint, scopePrices, amount) { let accounts = { owner: owner, userState: userState, farmState: farmState, farmVault: farmVault, userAta: ownerTokenAta, tokenMint: tokenMint, tokenProgram: token_1.TOKEN_PROGRAM_ADDRESS, scopePrices, }; let args = { amount, }; return (0, instructions_1.stake)(args, accounts); } function unstake(owner, userState, farmState, scopePrices, amount) { let accounts = { owner: owner, userState: userState, farmState: farmState, scopePrices, }; let args = { stakeSharesScaled: amount, }; return (0, instructions_1.unstake)(args, accounts); } function harvestReward(owner, userState, userRewardAta, globalConfig, treasuryVault, farmState, rewardMint, rewardVault, farmVaultAuthority, scopePrices, tokenProgram, rewardIndex) { let accounts = { owner: owner, userState: userState, farmState: farmState, globalConfig: globalConfig, rewardMint, rewardsVault: rewardVault, rewardsTreasuryVault: treasuryVault, userRewardAta: userRewardAta, farmVaultsAuthority: farmVaultAuthority, tokenProgram, scopePrices, }; let args = { rewardIndex: new bn_js_1.default(rewardIndex), }; return (0, instructions_1.harvestReward)(args, accounts); } function withdrawTreasury(globalAdmin, globalConfig, treasuryVault, treasuryVaultAuthority, globalAdminWithdrawAta, amount, rewardMint) { let accounts = { globalAdmin, globalConfig: globalConfig, rewardTreasuryVault: treasuryVault, treasuryVaultAuthority: treasuryVaultAuthority, withdrawDestinationTokenAccount: globalAdminWithdrawAta, rewardMint: rewardMint, tokenProgram: token_1.TOKEN_PROGRAM_ADDRESS, }; let args = { amount, }; return (0, instructions_1.withdrawTreasury)(args, accounts); } function refreshUserState(userState, farmState, scopePrices) { let accounts = { userState, farmState, scopePrices, }; return (0, instructions_1.refreshUserState)(accounts); } function withdrawUnstakedDeposit(owner, userState, farmState, userAta, farmVault, farmVaultsAuthority) { let accounts = { owner, userState, farmState, userAta, farmVault, farmVaultsAuthority, tokenProgram: token_1.TOKEN_PROGRAM_ADDRESS, }; return (0, instructions_1.withdrawUnstakedDeposits)(accounts); } function withdrawFromFarmVault(withdrawAuthority, farmState, withdrawerTokenAccount, farmVault, farmVaultsAuthority, amount) { let accounts = { farmState, withdrawAuthority, withdrawerTokenAccount, farmVault, farmVaultsAuthority, tokenProgram: token_1.TOKEN_PROGRAM_ADDRESS, }; let args = { amount, }; return (0, instructions_1.withdrawFromFarmVault)(args, accounts); } function depositToFarmVault(depositor, farmState, farmVault, depositorAta, amount) { let accounts = { depositor, farmState, farmVault, depositorAta, tokenProgram: token_1.TOKEN_PROGRAM_ADDRESS, }; let args = { amount, }; return (0, instructions_1.depositToFarmVault)(args, accounts); } function serializeConfigValue(reward_index, value) { let buffer; buffer = Buffer.alloc(16); buffer.writeBigUint64LE(reward_index, 0); buffer.writeBigUInt64LE(value, 8); return Uint8Array.from(buffer); } function serializeRewardCurvePoint(reward_index, points) { let buffer; buffer = Buffer.alloc(8 + 4 + 16 * points.length); buffer.writeBigUint64LE(BigInt(reward_index), 0); buffer.writeUInt32LE(points.length, 8); for (let i = 0; i < points.length; i++) { buffer.writeBigUint64LE(BigInt(points[i].startTs), 12 + 16 * i); buffer.writeBigUint64LE(BigInt(points[i].rps), 20 + 16 * i); } return Uint8Array.from(buffer); } //# sourceMappingURL=operations.js.map