UNPKG

@unloc-xyz/unloc-sdk

Version:
227 lines 11.3 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getVotingUserKey = exports.getVotingUser = exports.getVotingItemKey = exports.getAllVotingItems = exports.getVotingItem = exports.getLastVotingKey = exports.getLastVoting = exports.getVoting = exports.getVotingGlobalState = exports.vote = exports.delVotingItem = exports.setVotingItem = exports.setVoting = exports.createVoting = exports.setVotingGlobalState = exports.initVotingProgram = exports.votingProgramId = exports.votingProgramProvider = exports.votingProgram = exports.VOTING_USER_TAG = exports.VOTING_ITEM_TAG = exports.VOTING_TAG = exports.VOTING_GLOBAL_STATE_TAG = void 0; const anchor = __importStar(require("@project-serum/anchor")); const anchor_1 = require("@project-serum/anchor"); const global_config_1 = require("./../global-config"); const staking_1 = require("./../staking"); const utils_1 = require("./../utils"); const { PublicKey } = anchor.web3; const unloc_voting_1 = require("../types/unloc_voting"); exports.VOTING_GLOBAL_STATE_TAG = Buffer.from("GLOBAL_STATE_TAG"); exports.VOTING_TAG = Buffer.from("VOTING_TAG"); exports.VOTING_ITEM_TAG = Buffer.from("VOTING_ITEM_TAG"); exports.VOTING_USER_TAG = Buffer.from("VOTING_USER_TAG"); exports.votingProgram = null; exports.votingProgramProvider = null; exports.votingProgramId = null; const initVotingProgram = (wallet, connection = utils_1.SOLANA_CONNECTION, pid = global_config_1.VOTING_PID) => { if (exports.votingProgram != null) { return; } exports.votingProgramId = pid; const provider = new anchor.AnchorProvider(connection, wallet, { skipPreflight: true, }); exports.votingProgramProvider = provider; // Generate the program client from IDL. exports.votingProgram = new anchor.Program(unloc_voting_1.IDL, exports.votingProgramId, provider); }; exports.initVotingProgram = initVotingProgram; const setVotingGlobalState = async (newSuperOwner, stakingPid = global_config_1.STAKING_PID, signer = exports.votingProgramProvider.wallet.publicKey, signers = []) => { const globalState = await (0, utils_1.pda)([exports.VOTING_GLOBAL_STATE_TAG], exports.votingProgramId); const superOwner = signer; const tx = await exports.votingProgram.rpc.setGlobalState(newSuperOwner, stakingPid, { accounts: { superOwner, globalState, ...utils_1.defaults, }, signers, }); // eslint-disable-next-line no-console console.log("setGlobalState tx = ", tx); }; exports.setVotingGlobalState = setVotingGlobalState; const createVoting = async (votingStartTimestamp, votingEndTimestamp, signer = exports.votingProgramProvider.wallet.publicKey, signers = []) => { const globalState = await (0, utils_1.pda)([exports.VOTING_GLOBAL_STATE_TAG], exports.votingProgramId); const globalStateData = await exports.votingProgram.account.globalState.fetch(globalState); const votingNumber = globalStateData.votingCount; const voting = await (0, utils_1.pda)([exports.VOTING_TAG, votingNumber.toArrayLike(Buffer, "be", 8)], exports.votingProgramId); const superOwner = signer; const tx = await exports.votingProgram.rpc.setVoting(votingNumber, votingStartTimestamp, votingEndTimestamp, { accounts: { superOwner, globalState, voting, ...utils_1.defaults, }, signers, }); // eslint-disable-next-line no-console console.log("createVoting tx = ", tx); }; exports.createVoting = createVoting; const setVoting = async (votingNumber, votingStartTimestamp, votingEndTimestamp, signer = exports.votingProgramProvider.wallet.publicKey, signers = []) => { const globalState = await (0, utils_1.pda)([exports.VOTING_GLOBAL_STATE_TAG], exports.votingProgramId); const voting = await (0, utils_1.pda)([exports.VOTING_TAG, votingNumber.toArrayLike(Buffer, "be", 8)], exports.votingProgramId); const superOwner = signer; const tx = await exports.votingProgram.rpc.setVoting(votingNumber, votingStartTimestamp, votingEndTimestamp, { accounts: { superOwner, globalState, voting, ...utils_1.defaults, }, signers, }); // eslint-disable-next-line no-console console.log("setVoting tx = ", tx); }; exports.setVoting = setVoting; const setVotingItem = async (collectionKey, voting, signer = exports.votingProgramProvider.wallet.publicKey, signers = []) => { const globalState = await (0, utils_1.pda)([exports.VOTING_GLOBAL_STATE_TAG], exports.votingProgramId); const superOwner = signer; const votingItem = await (0, utils_1.pda)([exports.VOTING_ITEM_TAG, voting.toBuffer(), collectionKey.toBuffer()], exports.votingProgramId); try { const tx = await exports.votingProgram.rpc.setVotingItem(collectionKey, { accounts: { superOwner, globalState, voting, votingItem, ...utils_1.defaults, }, signers, }); // eslint-disable-next-line no-console console.log("setVotingItem tx = ", tx); } catch (e) { console.log(e); } }; exports.setVotingItem = setVotingItem; const delVotingItem = async (votingItem, signer = exports.votingProgramProvider.wallet.publicKey, signers = []) => { const globalState = await (0, utils_1.pda)([exports.VOTING_GLOBAL_STATE_TAG], exports.votingProgramId); const superOwner = signer; const votingItemData = await exports.votingProgram.account.votingItem.fetch(votingItem); const voting = votingItemData.voting; const tx = await exports.votingProgram.rpc.setVotingItem({ accounts: { superOwner, globalState, voting, votingItem, ...utils_1.defaults, }, signers, }); // eslint-disable-next-line no-console console.log("delVotingItem tx = ", tx); }; exports.delVotingItem = delVotingItem; const vote = async (votingItem, signer = exports.votingProgramProvider.wallet.publicKey, signers = []) => { const globalState = await (0, utils_1.pda)([exports.VOTING_GLOBAL_STATE_TAG], exports.votingProgramId); const user = signer; const votingItemData = await exports.votingProgram.account.votingItem.fetch(votingItem); const voting = votingItemData.voting; const votingUser = await (0, utils_1.pda)([exports.VOTING_USER_TAG, voting.toBuffer(), user.toBuffer()], exports.votingProgramId); const stakingPool = (await (0, staking_1.getFirstStakingPool)()).publicKey; const stakingUser = await (0, utils_1.pda)([stakingPool.toBuffer(), user.toBuffer()], global_config_1.STAKING_PID); try { const tx = await exports.votingProgram.rpc.vote({ accounts: { user, globalState, voting, votingItem, votingUser, stakingUser, ...utils_1.defaults, }, signers, }); // eslint-disable-next-line no-console console.log("vote tx = ", tx); } catch (e) { console.log(e); } }; exports.vote = vote; const getVotingGlobalState = async () => { const globalState = await (0, utils_1.pda)([exports.VOTING_GLOBAL_STATE_TAG], exports.votingProgramId); return await exports.votingProgram.account.globalState.fetch(globalState); }; exports.getVotingGlobalState = getVotingGlobalState; const getVoting = async (votingNumber) => { const voting = await (0, utils_1.pda)([exports.VOTING_TAG, votingNumber.toArrayLike(Buffer, "be", 8)], exports.votingProgramId); return await exports.votingProgram.account.voting.fetch(voting); }; exports.getVoting = getVoting; const getLastVoting = async () => { const globalState = await (0, utils_1.pda)([exports.VOTING_GLOBAL_STATE_TAG], exports.votingProgramId); const globalStateData = await exports.votingProgram.account.globalState.fetch(globalState); const votingNumber = new anchor_1.BN(globalStateData.votingCount.toNumber() - 1); const voting = await (0, utils_1.pda)([exports.VOTING_TAG, votingNumber.toArrayLike(Buffer, "be", 8)], exports.votingProgramId); return await exports.votingProgram.account.voting.fetch(voting); }; exports.getLastVoting = getLastVoting; const getLastVotingKey = async () => { const globalState = await (0, utils_1.pda)([exports.VOTING_GLOBAL_STATE_TAG], exports.votingProgramId); const globalStateData = await exports.votingProgram.account.globalState.fetch(globalState); const votingNumber = new anchor_1.BN(globalStateData.votingCount.toNumber() - 1); const voting = await (0, utils_1.pda)([exports.VOTING_TAG, votingNumber.toArrayLike(Buffer, "be", 8)], exports.votingProgramId); return voting; }; exports.getLastVotingKey = getLastVotingKey; const getVotingItem = async (votingItem) => { return await exports.votingProgram.account.votingItem.fetch(votingItem); }; exports.getVotingItem = getVotingItem; const getAllVotingItems = async () => { return await exports.votingProgram.account.votingItem.all(); }; exports.getAllVotingItems = getAllVotingItems; const getVotingItemKey = async (collectionKey, voting) => { const votingItem = await (0, utils_1.pda)([exports.VOTING_ITEM_TAG, voting.toBuffer(), collectionKey.toBuffer()], exports.votingProgramId); return votingItem; }; exports.getVotingItemKey = getVotingItemKey; const getVotingUser = async (voting, signer = exports.votingProgramProvider.wallet.publicKey, signers = []) => { const user = signer; const votingUser = await (0, utils_1.pda)([exports.VOTING_USER_TAG, voting.toBuffer(), user.toBuffer()], exports.votingProgramId); return await exports.votingProgram.account.votingUser.fetch(votingUser); }; exports.getVotingUser = getVotingUser; const getVotingUserKey = async (voting, signer = exports.votingProgramProvider.wallet.publicKey, signers = []) => { const user = signer; const votingUser = await (0, utils_1.pda)([exports.VOTING_USER_TAG, voting.toBuffer(), user.toBuffer()], exports.votingProgramId); return votingUser; }; exports.getVotingUserKey = getVotingUserKey; //# sourceMappingURL=index.js.map