@zebec-network/solana-payroll-sdk 2.7.0 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/services.d.ts +2 -1
- package/dist/services.js +49 -2
- package/dist/types.d.ts +14 -0
- package/package.json +1 -1
package/dist/services.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { type Commitment } from "@solana/web3.js";
|
|
|
3
3
|
import { MultiTransactionPayload, TransactionPayload } from "@zebec-network/solana-common";
|
|
4
4
|
import type { ZebecConfigs as ZebecConfigsIdl } from "@zebec-network/zebec_configs";
|
|
5
5
|
import type { ZebecPayroll as ZebecPayrollIdl } from "@zebec-network/zebec_payroll";
|
|
6
|
-
import type { CancelMultiplePayrollParams, CancelPayrollParams, CancelUnlockParams, CardPurchaseInfo, ChangePayrollReceiverParams, CompanyDepositInfo, CompanyNonceInfo, CompleteUnlockParams, CreateCardParams, CreateMultiplePayrollParams, CreatePayrollParams, DistributeRewardsParams, PauseResumeMultiplePayrollParams, PauseResumePayrollParams, PayrollConfigInfo, PayrollMetadataInfo, RequestUnlockParams, SetMultipleTopupDelegateParams, SetTopupDelegateParams, SwapAndCreateCardParams, TokenMetadata, TopupMultiplePayrollParams, TopupPayrollParams, UserPurchaseRecordInfo, WithdrawMultiplePayrollParams, WithdrawPayrollParams, WithdrawRewardsParams, YieldDepositParams } from "./types.js";
|
|
6
|
+
import type { CancelMultiplePayrollParams, CancelPayrollParams, CancelUnlockParams, CardPurchaseInfo, ChangePayrollReceiverParams, CompanyDepositInfo, CompanyNonceInfo, CompleteUnlockParams, CreateCardParams, CreateMultiplePayrollParams, CreatePayrollParams, DistributeRewardsParams, InstantDisbursementParams, PauseResumeMultiplePayrollParams, PauseResumePayrollParams, PayrollConfigInfo, PayrollMetadataInfo, RequestUnlockParams, SetMultipleTopupDelegateParams, SetTopupDelegateParams, SwapAndCreateCardParams, TokenMetadata, TopupMultiplePayrollParams, TopupPayrollParams, UserPurchaseRecordInfo, WithdrawMultiplePayrollParams, WithdrawPayrollParams, WithdrawRewardsParams, YieldDepositParams } from "./types.js";
|
|
7
7
|
export declare function getPayrollConfig(configProgram: Program<ZebecConfigsIdl>, configName: string): Promise<PayrollConfigInfo>;
|
|
8
8
|
export declare function getWhitelistedTokens(configProgram: Program<ZebecConfigsIdl>, configName: string, commitment?: "processed" | "confirmed" | "finalized"): Promise<TokenMetadata[]>;
|
|
9
9
|
export declare function getPayrollMetadataInfo(program: Program<ZebecPayrollIdl>, payrollMetadata: Address, commitment?: Commitment): Promise<PayrollMetadataInfo>;
|
|
@@ -37,3 +37,4 @@ export declare function getCardIndexInfo(payrollProgram: Program<ZebecPayrollIdl
|
|
|
37
37
|
export declare function getNextCardIndex(payrollProgram: Program<ZebecPayrollIdl>, entCardConfigName: string, commitment?: Commitment): Promise<bigint>;
|
|
38
38
|
export declare function getUserPurchaseRecordInfo(payrollProgram: Program<ZebecPayrollIdl>, entCardConfigName: string, user: Address, commitment?: Commitment): Promise<UserPurchaseRecordInfo | null>;
|
|
39
39
|
export declare function getCardPurchaseInfo(payrollProgram: Program<ZebecPayrollIdl>, entCardConfigName: string, user: Address, cardIndex: bigint, commitment?: Commitment): Promise<CardPurchaseInfo | null>;
|
|
40
|
+
export declare function instantDisbursement(payrollProgram: Program<ZebecPayrollIdl>, params: InstantDisbursementParams): Promise<MultiTransactionPayload>;
|
package/dist/services.js
CHANGED
|
@@ -2,8 +2,8 @@ import { AnchorProvider, translateAddress, utils, } from "@coral-xyz/anchor";
|
|
|
2
2
|
import { fetchMetadata, MPL_TOKEN_METADATA_PROGRAM_ID, } from "@metaplex-foundation/mpl-token-metadata";
|
|
3
3
|
import { createUmi } from "@metaplex-foundation/umi-bundle-defaults";
|
|
4
4
|
import { fromWeb3JsPublicKey, toWeb3JsPublicKey, } from "@metaplex-foundation/umi-web3js-adapters";
|
|
5
|
-
import { createCloseAccountInstruction, createSyncNativeInstruction, } from "@solana/spl-token";
|
|
6
|
-
import { AddressLookupTableAccount, ComputeBudgetProgram, Ed25519Program, Keypair, PublicKey, SystemProgram, TransactionMessage, VersionedTransaction, } from "@solana/web3.js";
|
|
5
|
+
import { createCloseAccountInstruction, createSyncNativeInstruction, createTransferInstruction, } from "@solana/spl-token";
|
|
6
|
+
import { AddressLookupTableAccount, ComputeBudgetProgram, Ed25519Program, Keypair, LAMPORTS_PER_SOL, PublicKey, SystemProgram, TransactionMessage, VersionedTransaction, } from "@solana/web3.js";
|
|
7
7
|
import { assertBufferSize, bpsToPercent, percentToBps, } from "@zebec-network/core-utils";
|
|
8
8
|
import { createAssociatedTokenAccountInstruction, getAssociatedTokenAddressSync, getMintDecimals, MultiTransactionPayload, TEN_BIGNUM, TransactionPayload, UNITS_PER_USDC, USDC_DECIMALS, WSOL, } from "@zebec-network/solana-common";
|
|
9
9
|
import { BigNumber } from "bignumber.js";
|
|
@@ -1182,3 +1182,50 @@ export async function getCardPurchaseInfo(payrollProgram, entCardConfigName, use
|
|
|
1182
1182
|
purchasedAt: info.purchaseAt.toNumber(),
|
|
1183
1183
|
};
|
|
1184
1184
|
}
|
|
1185
|
+
export async function instantDisbursement(payrollProgram, params) {
|
|
1186
|
+
const sender = translateAddress(params.sender);
|
|
1187
|
+
const feePayer = params.feePayer ? translateAddress(params.feePayer) : sender;
|
|
1188
|
+
if (params.recipients.length === 0) {
|
|
1189
|
+
throw new Error("At least one recipient is required");
|
|
1190
|
+
}
|
|
1191
|
+
const chunkSize = params.chunkSize ?? (params.isNative ? 20 : 5);
|
|
1192
|
+
const chunks = [];
|
|
1193
|
+
for (let i = 0; i < params.recipients.length; i += chunkSize) {
|
|
1194
|
+
chunks.push(params.recipients.slice(i, i + chunkSize));
|
|
1195
|
+
}
|
|
1196
|
+
const transactionData = await Promise.all(chunks.map(async (chunk) => {
|
|
1197
|
+
const instructions = [];
|
|
1198
|
+
if (params.isNative) {
|
|
1199
|
+
for (const recipient of chunk) {
|
|
1200
|
+
const receiver = translateAddress(recipient.address);
|
|
1201
|
+
const amount = BigNumber(recipient.amount)
|
|
1202
|
+
.times(LAMPORTS_PER_SOL)
|
|
1203
|
+
.toFixed(0);
|
|
1204
|
+
instructions.push(SystemProgram.transfer({
|
|
1205
|
+
fromPubkey: sender,
|
|
1206
|
+
toPubkey: receiver,
|
|
1207
|
+
lamports: BigInt(amount),
|
|
1208
|
+
}));
|
|
1209
|
+
}
|
|
1210
|
+
}
|
|
1211
|
+
else {
|
|
1212
|
+
const token = translateAddress(params.token);
|
|
1213
|
+
const decimals = await getMintDecimals(payrollProgram.provider.connection, token);
|
|
1214
|
+
const senderAta = getAssociatedTokenAddressSync(token, sender, true);
|
|
1215
|
+
for (const recipient of chunk) {
|
|
1216
|
+
const receiver = translateAddress(recipient.address);
|
|
1217
|
+
const receiverAta = getAssociatedTokenAddressSync(token, receiver, true);
|
|
1218
|
+
const amount = BigNumber(recipient.amount)
|
|
1219
|
+
.times(BigNumber(10).pow(decimals))
|
|
1220
|
+
.toFixed(0);
|
|
1221
|
+
const receiverAtaInfo = await payrollProgram.provider.connection.getAccountInfo(receiverAta);
|
|
1222
|
+
if (!receiverAtaInfo) {
|
|
1223
|
+
instructions.push(createAssociatedTokenAccountInstruction(feePayer, receiverAta, receiver, token));
|
|
1224
|
+
}
|
|
1225
|
+
instructions.push(createTransferInstruction(senderAta, receiverAta, sender, BigInt(amount)));
|
|
1226
|
+
}
|
|
1227
|
+
}
|
|
1228
|
+
return { instructions };
|
|
1229
|
+
}));
|
|
1230
|
+
return createMultiTransactionPayload(payrollProgram, feePayer, transactionData);
|
|
1231
|
+
}
|
package/dist/types.d.ts
CHANGED
|
@@ -355,6 +355,20 @@ export type SwapAndCreateCardParams = {
|
|
|
355
355
|
quoteInfo: QuoteInfo;
|
|
356
356
|
wrapAndUnwrapWsol?: boolean;
|
|
357
357
|
};
|
|
358
|
+
export type InstantDisbursementRecipient = {
|
|
359
|
+
address: Address;
|
|
360
|
+
amount: Numeric;
|
|
361
|
+
};
|
|
362
|
+
export type InstantDisbursementParams = {
|
|
363
|
+
sender: Address;
|
|
364
|
+
feePayer?: Address;
|
|
365
|
+
/** SPL token mint. Ignored when isNative is true (uses SOL). */
|
|
366
|
+
token: Address;
|
|
367
|
+
isNative: boolean;
|
|
368
|
+
recipients: InstantDisbursementRecipient[];
|
|
369
|
+
/** Max recipients per transaction. Defaults to 5 for SPL, 20 for native SOL. */
|
|
370
|
+
chunkSize?: number;
|
|
371
|
+
};
|
|
358
372
|
export type CardPurchaseInfo = {
|
|
359
373
|
index: bigint;
|
|
360
374
|
buyer: Address;
|
package/package.json
CHANGED