@zebec-network/zebec-vault-sdk
v3.1.0
Published
An SDK for zebec vault solana program
Downloads
138
Readme
Zebec Vault Sdk
Installation
yarn add @zebec-network/zebec-vault-sdknpm install @zebec-network/zebec-vault-sdkDependency Map

Development
To build the package
yarn buildTo run specific test filess
yarn test <test file path> -f "<regex for test name>"
// example:
// yarn test ./test/<filename>.test.tspublish
Build package and bump package version to specific need and publish
npm publish --access publicUsage
Create Vault Instance
const network = "devnet";
const wallet = <Anchor wallet>;
const connection = <Connection Instance>;
const provider = createAnchorProvider(connection, wallet);
const service = await ZebecVaultService.create(provider, network);Create Vault
const vaultKeypair = Keypair.generate();
console.log("Vault Keypair:", vaultKeypair.publicKey.toBase58());
const payload = await service.createVault({
vaultKeypair,
});
const signature = await payload.execute({ commitment: "finalized" });
console.log("Signature:", signature);Get Vault Info of User
const vaultsInfo = await service.getVaultsInfoOfUser(wallet.publicKey);
console.log("vaults info:", JSON.stringify(vaultsInfo, null, 2));
const vault = vaultsInfo[0].vault;Deposit Sol
const vault = <vault public key>;
const amount = 2;
const payload = await service.depositSol({ amount, vault });
const signature = await payload.execute({ commitment: "finalized" });Withdraw Sol
const vault = <vault public key>;
const amount = 0.01;
const payload = await service.withdrawSol({ amount, vault });
const signature = await payload.execute({ commitment: "finalized" });Deposit Token
const tokenMint = "De31sBPcDejCVpZZh1fq8SNs7AcuWcBKuU3k2jqnkmKc";
const vault = <vault public key>;
const amount = 1000
const payload = await service.depositToken({ amount, vault, tokenMint });
const signature = await payload.execute({ commitment: "finalized" });Withdraw Token
const vault = <vault public key>;
const tokenMint = "De31sBPcDejCVpZZh1fq8SNs7AcuWcBKuU3k2jqnkmKc";
const amount = 1;
const payload = await service.withdrawToken({ amount, vault, tokenMint });
const signature = await payload.execute({ commitment: "finalized" });Execute Proposal Direct
const proposer = <wallet public key>;
const vault = <vault public key>;
const memoInstruction = new TransactionInstruction({
keys: [],
programId: MEMO_PROGRAM_ID,
data: Buffer.from("This is test memo", "utf8"),
});
const actions = [memoInstruction];
const payload = await service.executeProposalDirect({
actions,
proposer,
vault,
});
const signature = await payload.execute({ commitment: "finalized" });
console.log("Execute Proposal Direct Signature:", signature);Create Proposal
const proposer = <wallet public key>;
const receiver = <wallet public Key>;
const vault = <vault public key>;
const [vaultSigner] = deriveVaultSigner(vault, service.programId);
const name = "Transfer Funds";
const ix = SystemProgram.transfer({
fromPubkey: vaultSigner,
toPubkey: receiver,
lamports: Number(parseSol(1)),
});
const actions = [ix];
const proposalKeypair = Keypair.generate();
const createProposalPayload = await service.createProposal({
actions,
name,
proposer,
vault,
proposalKeypair,
});
const signature = await createProposalPayload.execute({ commitment: "finalized" });Append Actions
const proposal = <proposal public key>;
const ixB = new TransactionInstruction({
keys: [],
programId: MEMO_PROGRAM_ID,
data: Buffer.from("This is test memo", "utf8"),
});
const actionsB = [ixB];
const appendActionsPayload = await service.appendActions({
actions: actionsB,
proposal,
});
const appendActionsSignature = await appendActionsPayload.execute({ commitment: "confirmed" });Execute Proposal
const proposal = <proposal public key>;
const payload = await service.executeProposal({
proposal,
});
const signature = await payload.execute({ commitment: "confirmed" });
console.log("Execute Proposal Signature:", signature);Delete Proposal
const proposal = <proposal public key>;
const deleteProposalPayload = await service.deleteProposal({ proposal });
const deleteProposalSignature = await deleteProposalPayload.execute({
commitment: "confirmed",
});
console.log("Delete Proposal Signature:", deleteProposalSignature);Get Proposals Info of a Vault
const vault = <vault public key>;
const proposalsInfo = await service.getProposalsInfoOfVault(vault);Get All Vaults Info
const vaultsInfo = await service.getAllVaultsInfo();