UNPKG

@tribecahq/tribeca-sdk

Version:

The TypeScript SDK for Tribeca, an open standard and toolkit for launching DAOs on Solana.

589 lines 17.6 kB
import type { TransactionEnvelope } from "@saberhq/solana-contrib"; import type { TokenAmount } from "@saberhq/token-utils"; import type { PublicKey } from "@solana/web3.js"; import BN from "bn.js"; import type { TribecaSDK } from "../../sdk"; import type { VoteSide } from "../govern/types"; export declare class VoteEscrow { readonly sdk: TribecaSDK; readonly locker: PublicKey; readonly governorKey: PublicKey; readonly escrowKey: PublicKey; readonly owner: PublicKey; private _lockerData; private _escrowData; constructor(sdk: TribecaSDK, locker: PublicKey, governorKey: PublicKey, escrowKey: PublicKey, owner: PublicKey); get provider(): import("@saberhq/solana-contrib").AugmentedProvider; get lockerProgram(): import("@saberhq/anchor-contrib").AnchorProgram<import("../../idls/locked_voter").LockedVoterIDL, { locker: { base: PublicKey; governor: PublicKey; bump: number; params: { whitelistEnabled: boolean; maxStakeVoteMultiplier: number; minStakeDuration: BN; maxStakeDuration: BN; proposalActivationMinVotes: BN; }; tokenMint: PublicKey; lockedSupply: BN; }; escrow: { bump: number; locker: PublicKey; amount: BN; voteDelegate: PublicKey; owner: PublicKey; tokens: PublicKey; escrowStartedAt: BN; escrowEndsAt: BN; }; lockerWhitelistEntry: { bump: number; programId: PublicKey; locker: PublicKey; owner: PublicKey; }; }, import("@saberhq/anchor-contrib").AnchorDefined<import("../../idls/locked_voter").LockedVoterIDL, Record<string, never>>, { activateProposal: { accounts: [{ name: "locker"; isMut: false; isSigner: false; }, { name: "governor"; isMut: false; isSigner: false; }, { name: "proposal"; isMut: true; isSigner: false; }, { name: "escrow"; isMut: false; isSigner: false; }, { name: "escrowOwner"; isMut: false; isSigner: true; }, { name: "governProgram"; isMut: false; isSigner: false; }]; args: [] & unknown[]; namedArgs: {}; }; newLocker: { accounts: [{ name: "base"; isMut: false; isSigner: true; }, { name: "locker"; isMut: true; isSigner: false; pda: { seeds: [{ kind: "const"; type: "string"; value: "Locker"; }, { kind: "account"; type: "publicKey"; path: "base"; }]; }; }, { name: "tokenMint"; isMut: false; isSigner: false; }, { name: "governor"; isMut: false; isSigner: false; }, { name: "payer"; isMut: true; isSigner: true; }, { name: "systemProgram"; isMut: false; isSigner: false; }]; args: [number, { whitelistEnabled: boolean; maxStakeVoteMultiplier: number; minStakeDuration: BN; maxStakeDuration: BN; proposalActivationMinVotes: BN; }] & unknown[]; namedArgs: { bump: number; params: { whitelistEnabled: boolean; maxStakeVoteMultiplier: number; minStakeDuration: BN; maxStakeDuration: BN; proposalActivationMinVotes: BN; }; }; }; newEscrow: { accounts: [{ name: "locker"; isMut: false; isSigner: false; }, { name: "escrow"; isMut: true; isSigner: false; pda: { seeds: [{ kind: "const"; type: "string"; value: "Escrow"; }, { kind: "account"; type: "publicKey"; account: "Locker"; path: "locker"; }, { kind: "account"; type: "publicKey"; path: "escrow_owner"; }]; }; }, { name: "escrowOwner"; isMut: false; isSigner: false; }, { name: "payer"; isMut: true; isSigner: true; }, { name: "systemProgram"; isMut: false; isSigner: false; }]; args: [number] & unknown[]; namedArgs: { bump: number; }; }; lock: { accounts: [{ name: "locker"; isMut: true; isSigner: false; }, { name: "escrow"; isMut: true; isSigner: false; }, { name: "escrowTokens"; isMut: true; isSigner: false; }, { name: "escrowOwner"; isMut: false; isSigner: true; }, { name: "sourceTokens"; isMut: true; isSigner: false; }, { name: "tokenProgram"; isMut: false; isSigner: false; }]; args: [BN, BN] & unknown[]; namedArgs: { amount: BN; duration: BN; }; }; lockWithWhitelist: { accounts: [{ name: "lock"; accounts: [{ name: "locker"; isMut: true; isSigner: false; }, { name: "escrow"; isMut: true; isSigner: false; }, { name: "escrowTokens"; isMut: true; isSigner: false; }, { name: "escrowOwner"; isMut: false; isSigner: true; }, { name: "sourceTokens"; isMut: true; isSigner: false; }, { name: "tokenProgram"; isMut: false; isSigner: false; }]; }, { name: "instructionsSysvar"; isMut: false; isSigner: false; }]; args: [BN, BN] & unknown[]; namedArgs: { amount: BN; duration: BN; }; }; lockWithWhitelistEntry: { accounts: [{ name: "lock"; accounts: [{ name: "locker"; isMut: true; isSigner: false; }, { name: "escrow"; isMut: true; isSigner: false; }, { name: "escrowTokens"; isMut: true; isSigner: false; }, { name: "escrowOwner"; isMut: false; isSigner: true; }, { name: "sourceTokens"; isMut: true; isSigner: false; }, { name: "tokenProgram"; isMut: false; isSigner: false; }]; }, { name: "instructionsSysvar"; isMut: false; isSigner: false; }, { name: "whitelistEntry"; isMut: false; isSigner: false; }]; args: [BN, BN] & unknown[]; namedArgs: { amount: BN; duration: BN; }; }; lockPermissionless: { accounts: [{ name: "locker"; isMut: true; isSigner: false; }, { name: "escrow"; isMut: true; isSigner: false; }, { name: "escrowTokens"; isMut: true; isSigner: false; }, { name: "escrowOwner"; isMut: false; isSigner: true; }, { name: "sourceTokens"; isMut: true; isSigner: false; }, { name: "tokenProgram"; isMut: false; isSigner: false; }]; args: [BN, BN] & unknown[]; namedArgs: { amount: BN; duration: BN; }; }; exit: { accounts: [{ name: "locker"; isMut: true; isSigner: false; }, { name: "escrow"; isMut: true; isSigner: false; }, { name: "escrowOwner"; isMut: false; isSigner: true; }, { name: "escrowTokens"; isMut: true; isSigner: false; }, { name: "destinationTokens"; isMut: true; isSigner: false; }, { name: "payer"; isMut: true; isSigner: true; }, { name: "tokenProgram"; isMut: false; isSigner: false; }]; args: [] & unknown[]; namedArgs: {}; }; castVote: { accounts: [{ name: "locker"; isMut: false; isSigner: false; }, { name: "escrow"; isMut: false; isSigner: false; }, { name: "voteDelegate"; isMut: false; isSigner: true; }, { name: "proposal"; isMut: true; isSigner: false; }, { name: "vote"; isMut: true; isSigner: false; }, { name: "governor"; isMut: false; isSigner: false; }, { name: "governProgram"; isMut: false; isSigner: false; }]; args: [number] & unknown[]; namedArgs: { side: number; }; }; setVoteDelegate: { accounts: [{ name: "escrow"; isMut: true; isSigner: false; }, { name: "escrowOwner"; isMut: false; isSigner: true; }]; args: [PublicKey] & unknown[]; namedArgs: { newDelegate: PublicKey; }; }; setLockerParams: { accounts: [{ name: "locker"; isMut: true; isSigner: false; }, { name: "governor"; isMut: false; isSigner: false; }, { name: "smartWallet"; isMut: false; isSigner: true; }]; args: [{ whitelistEnabled: boolean; maxStakeVoteMultiplier: number; minStakeDuration: BN; maxStakeDuration: BN; proposalActivationMinVotes: BN; }] & unknown[]; namedArgs: { params: { whitelistEnabled: boolean; maxStakeVoteMultiplier: number; minStakeDuration: BN; maxStakeDuration: BN; proposalActivationMinVotes: BN; }; }; }; approveProgramLockPrivilege: { accounts: [{ name: "locker"; isMut: false; isSigner: false; }, { name: "whitelistEntry"; isMut: true; isSigner: false; pda: { seeds: [{ kind: "const"; type: "string"; value: "LockerWhitelistEntry"; }, { kind: "account"; type: "publicKey"; account: "Locker"; path: "locker"; }, { kind: "account"; type: "publicKey"; path: "executable_id"; }, { kind: "account"; type: "publicKey"; path: "whitelisted_owner"; }]; }; }, { name: "governor"; isMut: false; isSigner: false; }, { name: "smartWallet"; isMut: false; isSigner: true; }, { name: "executableId"; isMut: false; isSigner: false; }, { name: "whitelistedOwner"; isMut: false; isSigner: false; }, { name: "payer"; isMut: true; isSigner: true; }, { name: "systemProgram"; isMut: false; isSigner: false; }]; args: [number] & unknown[]; namedArgs: { bump: number; }; }; revokeProgramLockPrivilege: { accounts: [{ name: "locker"; isMut: false; isSigner: false; }, { name: "whitelistEntry"; isMut: true; isSigner: false; }, { name: "governor"; isMut: false; isSigner: false; }, { name: "smartWallet"; isMut: false; isSigner: true; }, { name: "payer"; isMut: true; isSigner: true; }]; args: [] & unknown[]; namedArgs: {}; }; }, {}>; /** * Locker data. */ lockerData(): Promise<{ base: PublicKey; governor: PublicKey; bump: number; params: { whitelistEnabled: boolean; maxStakeVoteMultiplier: number; minStakeDuration: BN; maxStakeDuration: BN; proposalActivationMinVotes: BN; }; tokenMint: PublicKey; lockedSupply: BN; }>; /** * Escrow data. */ data(): Promise<{ bump: number; locker: PublicKey; amount: BN; voteDelegate: PublicKey; owner: PublicKey; tokens: PublicKey; escrowStartedAt: BN; escrowEndsAt: BN; }>; /** * Creates a function to calculate the voting power of this escrow. * @returns */ makeCalculateVotingPower(): Promise<(timestampSeconds: number) => BN>; /** * Calculates the voting power of this escrow. * @param time Optional time to calculate power for. * @returns */ calculateVotingPower(time?: Date): Promise<BN>; /** * Activates a proposal. * @returns */ activateProposal(proposal: PublicKey): TransactionEnvelope; /** * Casts a vote on a proposal. * @returns */ castVote({ proposal, side, }: { proposal: PublicKey; side: VoteSide; }): Promise<TransactionEnvelope>; /** * Locks tokens into the escrow. * @param amount * @param durationSeconds The duration of the lock, in seconds * @param authority * @returns */ lock(amount: TokenAmount, durationSeconds: number): Promise<TransactionEnvelope>; /** * Exits the escrow. * @returns */ exit(): Promise<TransactionEnvelope>; } //# sourceMappingURL=escrow.d.ts.map