@tribecahq/tribeca-sdk
Version:
The TypeScript SDK for Tribeca, an open standard and toolkit for launching DAOs on Solana.
39 lines • 1.49 kB
JavaScript
import { TransactionEnvelope } from "@saberhq/solana-contrib";
import { Keypair, SystemProgram } from "@solana/web3.js";
import { DEFAULT_GOVERNANCE_PARAMETERS } from "../..";
import { GovernorWrapper } from "./governor";
import { findGovernorAddress } from "./pda";
export class GovernWrapper {
constructor(sdk) {
this.sdk = sdk;
this.program = sdk.programs.Govern;
}
get provider() {
return this.sdk.provider;
}
async fetchVote(key) {
return await this.program.account.vote.fetch(key);
}
async createGovernor({ electorate, smartWallet, baseKP = Keypair.generate(), ...governorParams }) {
const [governor, bump] = await findGovernorAddress(baseKP.publicKey);
const wrapper = new GovernorWrapper(this.sdk, governor);
return {
wrapper,
tx: new TransactionEnvelope(this.provider, [
this.sdk.programs.Govern.instruction.createGovernor(bump, electorate, {
...DEFAULT_GOVERNANCE_PARAMETERS,
...governorParams,
}, {
accounts: {
base: baseKP.publicKey,
governor,
smartWallet,
payer: this.provider.wallet.publicKey,
systemProgram: SystemProgram.programId,
},
}),
], [baseKP]),
};
}
}
//# sourceMappingURL=govern.js.map