Package Exports
- @myclique/governance-sdk
- @myclique/governance-sdk/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@myclique/governance-sdk) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Clique JS governance SDK
@myclique/governance-sdk provides easy access to the high level interactions to be governance with an Clique DAO.
- Testnet website
- The current version is the test version.
- The project is in beta, use at your own risk.
Installation
Use npm or yarn to install @myclique/governance-sdk.
npm install @myclique/governance-sdk
# or
yarn add @myclique/governance-sdk# Usage
Context
The Context class is an utility component that holds the configuration passed to Clique instance.
import { Context, Clique, CChainId } from "@myclique/governance-sdk";
// Define
const context: Context = new Context({
daoChainId: CChainId.GOERLI,
daoAddress: "0xadf89e38a2d189531c425e1f79db22b43889cb50",
isTest: true,
web3Providers: {
[CChainId.GOERLI]: "https://goerli.infura.io/v3/",
[CChainId.POLYGON_MUMBAI]: "https://rpc.ankr.com/polygon_mumbai",
},
});
const clique: Clique = new Clique(context);
// Update signer
context.set({ signer });
// or
clique.web3.useSigner(signer);Get governance dao info
import { Clique, DaoInfoProp } from "@myclique/governance-sdk";
const clique: Clique = new Clique(context);
const daoInfo: DaoInfoProp | undefined = clique.daoInfo;
// if undefined
const daoInfo: DaoInfoProp = await clique.getDaoInfo();Get governance dao token
import { Clique, DaoInfoProp, Token } from "@myclique/governance-sdk";
const clique: Clique = new Clique(context);
const daoToken: Token | undefined = await clique.getDaoToken();
// or
const daoInfo: DaoInfoProp | undefined = clique.daoInfo;
// const daoInfo: DaoInfoProp = await clique.getDaoInfo()
const daoToken: Token = daoInfo.token;Create proposal
import {
ProposalSignProp,
ProposalVotingTypes,
} from "@myclique/governance-sdk";
const data: ProposalSignProp = await clique.getCreateProposalDataAndSignature(
account
);
clique.createProposal(
"title1",
"introduction1",
"content1",
1664774069,
1666033269,
ProposalVotingTypes.MULTI,
["one", "two"],
data
);Get proposal list ids
import { ProposalStatus } from "@myclique/governance-sdk";
// get ids
const proposalListData: {
total: number;
proposalIds: number[];
} = await clique.getProposalListIds(ProposalStatus.OPEN, 0);Get proposal info by proposal id
import { ProposalDetailProp } from "@myclique/governance-sdk";
const proposalDetail: ProposalDetailProp = await clique.getProposalInfo(1);Cancel proposal
// To cancel proposal before closing
clique.cancelProposal(1);Get account votes
import { AccountVotesInfo } from "@myclique/governance-sdk";
const votes: AccountVotesInfo = clique.getAccountVotesById(account, 1);vote
import { ProposalSignProp } from "@myclique/governance-sdk";
const proposalId = 1;
const data: ProposalSignProp = await clique.getVotesDataAndSignature(
account,
proposalId
);
clique.proposalVote(proposalId, [0], [data.balance.raw.toString()], data, true);Get proposal vote history
import { ProposalVoteHistory } from "@myclique/governance-sdk";
const list: {
total: number;
list: ProposalVoteHistory[];
} = await clique.getProposalVoteHistory(proposalId, 0, 8);