@tribecahq/tribeca-sdk
Version:
The TypeScript SDK for Tribeca, an open standard and toolkit for launching DAOs on Solana.
589 lines • 17.6 kB
TypeScript
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