@unloc-xyz/unloc-sdk
Version:
227 lines • 11.3 kB
JavaScript
;
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