@tribecahq/tribeca-sdk
Version:
The TypeScript SDK for Tribeca, an open standard and toolkit for launching DAOs on Solana.
44 lines • 1.49 kB
JavaScript
import { Keypair } from "@solana/web3.js";
import BN from "bn.js";
import { DEFAULT_GOVERNANCE_PARAMETERS } from "../..";
import { findGovernorAddress } from "..";
/**
* Creates a Governor.
* @returns
*/
export const createGovernorWithElectorate = async ({ createElectorate, sdk, gokiSDK, owners = [sdk.provider.wallet.publicKey], governanceParameters = DEFAULT_GOVERNANCE_PARAMETERS, govBaseKP = Keypair.generate(), smartWalletBaseKP = Keypair.generate(), }) => {
const [governor] = await findGovernorAddress(govBaseKP.publicKey);
const createTXs = [];
const { smartWalletWrapper, tx: tx1 } = await gokiSDK.newSmartWallet({
owners: [...owners, governor],
threshold: new BN(2),
numOwners: 3,
base: smartWalletBaseKP,
});
createTXs.push({
title: "Create Smart Wallet",
tx: tx1,
});
const { key: electorate, tx: createElectorateTX } = await createElectorate(governor);
const { wrapper: governorWrapper, tx: tx2 } = await sdk.govern.createGovernor({
...governanceParameters,
baseKP: govBaseKP,
electorate,
smartWallet: smartWalletWrapper.key,
});
createTXs.push({
title: "Create Governor",
tx: tx2,
});
createTXs.push({
title: "Create Electorate",
tx: createElectorateTX,
});
return {
governorWrapper,
smartWalletWrapper,
createTXs,
electorate,
};
};
//# sourceMappingURL=setup.js.map