@kamino-finance/farms-sdk
Version:
372 lines • 13.9 kB
JavaScript
;
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