UNPKG

@zebec-network/zebec-stake-sdk

Version:

An SDK for zebec network stake solana program

46 lines (45 loc) 2.45 kB
"use strict"; 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; }