@zebec-network/zebec-stake-sdk
Version:
An SDK for zebec network stake solana program
46 lines (45 loc) • 2.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.deriveStakeAddress = deriveStakeAddress;
exports.deriveLockupAddress = deriveLockupAddress;
exports.deriveUserNonceAddress = deriveUserNonceAddress;
exports.deriveStakeVaultAddress = deriveStakeVaultAddress;
exports.deriveRewardVaultAddress = deriveRewardVaultAddress;
const anchor_1 = require("@coral-xyz/anchor");
const web3_js_1 = require("@solana/web3.js");
const constants_1 = require("./constants");
const SEEDS = {
lockup: "zebec_lockup",
stakeVault: "stake_vault",
rewardVault: "reward_vault",
};
function deriveStakeAddress(staker, lockup, nonce, programId = constants_1.ZEBEC_STAKE_PROGRAM.mainnet) {
const [stakeAddress] = web3_js_1.PublicKey.findProgramAddressSync([
(0, anchor_1.translateAddress)(staker).toBuffer(),
(0, anchor_1.translateAddress)(lockup).toBuffer(),
new anchor_1.BN(nonce.toString()).toArrayLike(Buffer, "le", 8),
], (0, anchor_1.translateAddress)(programId));
return stakeAddress;
}
function deriveLockupAddress(name, programId = constants_1.ZEBEC_STAKE_PROGRAM.mainnet) {
const [lockupAddress] = web3_js_1.PublicKey.findProgramAddressSync([anchor_1.utils.bytes.utf8.encode(SEEDS.lockup), anchor_1.utils.bytes.utf8.encode(name)], (0, anchor_1.translateAddress)(programId));
return lockupAddress;
}
function deriveUserNonceAddress(user, lockup, programId = constants_1.ZEBEC_STAKE_PROGRAM.mainnet) {
const [userNonceAddress] = web3_js_1.PublicKey.findProgramAddressSync([(0, anchor_1.translateAddress)(user).toBuffer(), (0, anchor_1.translateAddress)(lockup).toBuffer()], (0, anchor_1.translateAddress)(programId));
return userNonceAddress;
}
function deriveStakeVaultAddress(lockup, programId = constants_1.ZEBEC_STAKE_PROGRAM.mainnet) {
const [stakeVault] = web3_js_1.PublicKey.findProgramAddressSync([
anchor_1.utils.bytes.utf8.encode(SEEDS.stakeVault),
(0, anchor_1.translateAddress)(lockup).toBuffer(),
], (0, anchor_1.translateAddress)(programId));
return stakeVault;
}
function deriveRewardVaultAddress(lockup, programId = constants_1.ZEBEC_STAKE_PROGRAM.mainnet) {
const [rewardVault] = web3_js_1.PublicKey.findProgramAddressSync([
anchor_1.utils.bytes.utf8.encode(SEEDS.rewardVault),
(0, anchor_1.translateAddress)(lockup).toBuffer(),
], (0, anchor_1.translateAddress)(programId));
return rewardVault;
}