Contract utils provides TypeScript wrappers for our primary contracts. While you will read state data from moloch-v3-data, contract-utils equips you with instances of the contract and access to a set of helpers for making function calls and writing data to the contracts.

It utilizes TypeChain (opens in a new tab) for type generation.

Github (opens in a new tab)

NPM (opens in a new tab)



yarn add @daohaus/profile-data


This packages uses ethers.js (opens in a new tab) providers and RPC endpoints to create the connection to the blockchain and contract. You should provide an ether.js provider.


How to init a contract and make a function call

import { MolochV3Contract } from '@daohaus/contract-utils';
const molochV3 = MolochV3Contract.create({
  address: '0x0somedaoaddress',
  provider: new ethers.providers.JsonRpcProvider(

How to summon a DAO

Checkout the DAOhaus User Guide (opens in a new tab) for details on the process and parameters.

import { MolochV3AdvTokenSummonerContract } from '@daohaus/contract-utils';
const molochV3AdvSummoner = MolochV3AdvTokenSummonerContract.create({
  networkIs: '0x5',
  provider: new ethers.providers.JsonRpcProvider(
const daoSetUpData = {
  sharesTokenName: 'Voting',
  sharesTokenSymbol: 'vote',
  lootTokenName: 'nonVoting',
  lootTokenSymbol: 'nvote',
    'address if using exsiting safe for treasury, blank if creating a new one',
  tokenConfig: {
    pauseShares: true,
    pauseLoot: true,
  governanceConfig: {
    voting: 86400,
    grace: 86400,
    newOffering: 0,
    quorum: 0,
    sponsor: 0,
    minRetention: 66,
  shamanConfig: {
    shamans: ['shamanAddress'],
    permissions: [2],
  sharesConfig: {
    to: ['initialMemberAddress', 'initialMemberAddress'],
    amount: [1000000000000000000, 2000000000000000000],
  lootConfig: {
    to: ['initialLootHolderAddress'],
    amount: [1000000000000000000],
  daoName: 'Cheese DAO',
await molochV3AdvSummoner.summonMolochV3(daoSetUpData);