JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 6
  • Score
    100M100P100Q42044F
  • License MIT

The SDK is provides easy access to the high level interactions to be governance with an Clique DAO.

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);