npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@zebec-protocol/bulk-transfer

v1.0.0

Published

Zebec Protocol Bulk Transfer SDK provides an easy way to interact with Zebec Protocol Bulk Transfer onchain programs.

Downloads

13

Readme

Zebec Protocol SDK

Zebec Protocol Bulk Transfer SDK provides an easy way to interact with Zebec Protocol Bulk Transfer onchain programs.

Prerequisities

Make sure, you've the following installed.

  • node (v14+)
  • npm or yarn

Test Package

To run the test scripts

yarn test:single <file path>

// example
yarn test:single tests/batchTransfer/createTokenAccounts.spec.ts

Usage

/** create service instance */
const provider = new anchor.AnchorProvider(connection, wallet, AnchorProvider.defaultOptions());
const program = BatchTranferProgramFactory.getProgram({ provider });
const batchTransferIxns = new BatchTransferInstruction(program);
const service = new BatchTransferService(provider, batchTransferIxns);

/** deposit sol for bulk transfer */

const feePayer = provider.publicKey;
const authority = feePayer;
const amount = 1.2353523;
const depositSolPayload = await service.depositSol({ authority, amount });
const signature0 = await depositSolPayload.execute();

/** **/

/** deposit token for bulk transfer */

const feePayer = provider.wallet.publicKey;
const tokenMint = new anchor.web3.PublicKey("AbLwGR8A1wvsiLWrzzA5eYPoQw51NVMcMMTPvAv5LTJ");
const amount = 100;
const decimals = 9;
const depositTx = await batchTransferService.depositToken({
	authority: feePayer,
	mint: tokenMint,
	amount,
	decimals,
});
const signature1 = await depositTx.execute();

/** **/

const accounts = [
	"Fx3xZ86YZw3gJUHU3FQKKq6ZDbkDLHa5j4z84gBY5LzF",
	"4VbwC8uYtjfj2jimQpyshaXRW2u5A3iyhUXQFTb82kCV",
	"H9kQHjJSUgbAABxwyFG4MXWb7vqfbBXq2nmPDFFU1S6T",
	"95Zp1x4f55uHBHFghX6YmKtQK16ZkqG7KZNmzyeg2ZGL",
	"FoqznQf9YL4kuTuRzTJbi4pCHghN32wEtqi4ZaE4bmJi",
	"6mcgvH3n5KWfedpzMj7aKT19VWLrkAeq5FSyLtwX2beq",
	"5JF1zKkoUWTGuCgRCT9caEP5a2kGB66jsGmfwsBKYsjE",
	"AxuiXjbNsGGRSCHgDvHFr8Y2c53jbbpXPeiWBvJmdvaX",
	"5QeqNRYVjJ8Apt8D44JtDHq4R3kkNX9p6sLtf2yUMvFL",
	"BGv5qqyi69HgR6EEYQK6wdFRj3cWsK2PvntvgJ9ECCdV",
	"4xrE4NUmXEW4PwCQU25AmLQmCBNagmWF8ehT5Qoyjrwk",
	"DMGY4uF97WRGohaJLKHH7ndSwKTqsZLxZLwusitgpHue",
	"H8dgDYpJWpHBauKfR1mpw6GybEVaUmPhy4phNbvLRpgA",
	"6q3CLKPQZECGA9QRHNdYmr796Cn8bYCgK9eHD63T6eeb",
	"8XoCkZz1WM7ndkbQX8fVXaGYyJobroUs2o2of8m5S8HU",
];

/** create a batch for bulk sol transfer  */

let batchSolTransferData: BatchSolTransferData[] = [];

for (let i = 0; i < receiversAddresses.length; i++) {
	let receiverPubkey = new anchor.web3.PublicKey(receiversAddresses[i]);
	let amount = 0.001;
	batchSolTransferData.push({
		account: receiverPubkey,
		amount: amount,
	});
}

const batchSolTransferIxn = await batchTransactionService.transferSolInBatch({
	authority: provider.wallet.publicKey,
	batchData: batchSolTransferData,
});
const signature2 = await batchSolTransferIxn.execute();

/** **/

/** create a batch for bulk token transfer */
const mint = new anchor.web3.PublicKey("AbLwGR8A1wvsiLWrzzA5eYPoQw51NVMcMMTPvAv5LTJ");
const data = accounts.map<BatchTokenTransferData>((account) => ({
	account: getAssociatedTokenAddressSync(mint, new anchor.web3.PublicKey(account)),
	amount: 1,
	decimals: 9,
}));

const splTransferPayload = await batchTransferService.transferTokenInBatch({
	authority: provider.wallet.publicKey,
	mint,
	batchData: data,
});
const signature3 = await batchTransferIxn.execute();

/** **/

/** check and get accounts that don't have token accounts **/

const mint = new anchor.web3.PublicKey("AbLwGR8A1wvsiLWrzzA5eYPoQw51NVMcMMTPvAv5LTJ");
const keys = await batchTransferService.checkTokenAccount({ accounts: pubkeys, mint, allowOwnerOffCurve: true });

/** **/