zebec-instant-card-sdk
Version:
An sdk for interacting with zebec instant card program in solana.
136 lines (135 loc) • 7.27 kB
TypeScript
/// <reference types="bn.js" />
/// <reference types="@coral-xyz/anchor/node_modules/@solana/web3.js" />
import { BN, Program } from "@coral-xyz/anchor";
import { PublicKey, TransactionInstruction } from "@solana/web3.js";
import { ZebecCardContract } from "./idl";
type CardType = "reloadable" | "non_reloadable";
/**
* Data required while depositing
*/
export type DepositInstructionData = {
amount: BN;
sourceTokenAddress?: PublicKey;
};
export type ParsedFeeTier = {
minAmount: BN;
maxAmount: BN;
fee: BN;
};
export type ParsedTokenFeeStruct = {
tokenAddress: PublicKey;
fee: BN;
};
export type ParsedTokenFeeList = ParsedTokenFeeStruct[];
export type InitCardConfigInstructionData = {
cardVault: PublicKey;
revenueVault: PublicKey;
commissionVault: PublicKey;
revenueFee: BN;
nativeFee: BN;
nonNativeFee: BN;
maxCardAmount: BN;
minCardAmount: BN;
dailyCardPurchaseLimit: BN;
feeTiers: ParsedFeeTier[];
};
export type SetCardConfigInstructionData = {
newZicOwner: PublicKey;
cardVault: PublicKey;
revenueVault: PublicKey;
commissionVault: PublicKey;
revenueFee: BN;
nativeFee: BN;
nonNativeFee: BN;
maxCardAmount: BN;
minCardAmount: BN;
dailyCardPurchaseLimit: BN;
feeTiers: ParsedFeeTier[];
};
export type BuyPrepaidDigitalCardInstructionData = {
amount: BN;
cardType: CardType;
index: BN;
};
export type BuyCardDirectInstructionData = {
amount: BN;
cardType: CardType;
index: BN;
sourceTokenAddress?: PublicKey;
};
export type BuyCardBotInstructionData = {
amount: BN;
sourceTokenAddress: PublicKey;
userId: string;
cardType: CardType;
};
export type InitBotConfigData = {
botAdmin: PublicKey;
};
export type IntiBotPdaData = {
userId: string;
};
export type SetBotAdminData = {
newAdmin: PublicKey;
};
export type ParsedCardConfigInfo = {
index: BN;
zicOwner: PublicKey;
nativeFee: BN;
nonNativeFee: BN;
revenueFee: BN;
usdcMint: PublicKey;
revenueVault: PublicKey;
commissionVault: PublicKey;
cardVault: PublicKey;
totalBought: BN;
dailyCardBuyLimit: BN;
providerConfig: ParsedProviderConfig;
};
export type ParsedProviderConfig = {
minCardAmount: BN;
maxCardAmount: BN;
feeTiers: {
tiers: ParsedFeeTier[];
};
};
export type IntiOnRampUserCustodyData = {
userId: string;
};
export type InitOnRampInstructionData = {
admin: PublicKey;
zbcnToken: PublicKey;
};
export type SetOnRampAdminInstructionData = {
newAdmin: PublicKey;
};
export type OnRampTransferZbcnInstructionData = {
amount: BN;
userId: string;
};
/**
* Zebec Card Instruction Factory
*/
export declare class ZebecCardInstructions {
readonly cardProgram: Program<ZebecCardContract>;
constructor(cardProgram: Program<ZebecCardContract>);
getInitCardConfigsInstruction(cardPda: PublicKey, usdcToken: PublicKey, zicOwner: PublicKey, data: InitCardConfigInstructionData): Promise<TransactionInstruction>;
getDepositInstruction(cardPda: PublicKey, feeMapPda: PublicKey, tokenMint: PublicKey, user: PublicKey, userAta: PublicKey, userVault: PublicKey, userVaultAta: PublicKey, userPurchaseRecord: PublicKey, revenueVault: PublicKey, revenueVaultAta: PublicKey, data: DepositInstructionData): Promise<TransactionInstruction>;
getSetCardConfigsInstruction(cardPda: PublicKey, zicOwner: PublicKey, data: SetCardConfigInstructionData): Promise<TransactionInstruction>;
getWithdrawInstruction(user: PublicKey, tokenMint: PublicKey, userAta: PublicKey, userVault: PublicKey, userVaultAta: PublicKey, userPurchaseRecord: PublicKey, amount: BN): Promise<TransactionInstruction>;
getBuyPrepaidDigitalCardInstruction(buyerPda: PublicKey, cardPda: PublicKey, cardVault: PublicKey, cardVaultAta: PublicKey, commissionVault: PublicKey, commissionVaultAta: PublicKey, revenueVault: PublicKey, revenueVaultAta: PublicKey, usdcToken: PublicKey, user: PublicKey, userVault: PublicKey, userVaultAta: PublicKey, userPurchaseRecord: PublicKey, buyCardData: BuyPrepaidDigitalCardInstructionData): Promise<TransactionInstruction>;
getGenerateYieldInstruction(user: PublicKey, userVault: PublicKey, userPurchaseRecord: PublicKey, userVaultAta: PublicKey, tokenMint: PublicKey, flexlendUserAccount: PublicKey, flexlendUserAta: PublicKey, promotionReservePda: PublicKey, reserveAdmin: PublicKey, amount: BN): Promise<TransactionInstruction>;
getWithdrawYieldInstruction(user: PublicKey, userPurchaseRecord: PublicKey, userVault: PublicKey, userVaultAta: PublicKey, tokenMint: PublicKey, flexlendUserAccount: PublicKey, flexlendUserAta: PublicKey, promotionReserve: PublicKey, amount: BN, withdrawAll: boolean): Promise<TransactionInstruction>;
getBuyCardDirectInstruction(buyerPda: PublicKey, cardPda: PublicKey, cardVault: PublicKey, cardVaultAta: PublicKey, feeMapPda: PublicKey, revenueVault: PublicKey, revenueVaultAta: PublicKey, usdcToken: PublicKey, user: PublicKey, userAta: PublicKey, userPurchaseRecord: PublicKey, buyCardData: BuyCardDirectInstructionData): Promise<TransactionInstruction>;
getSetCustomFeesInstruction(cardPda: PublicKey, feeMapPda: PublicKey, zicOwner: PublicKey, tokenFeeList: ParsedTokenFeeList): Promise<TransactionInstruction>;
getDeleteCustomFeesInstruction(cardPda: PublicKey, feeMapPda: PublicKey, zicOwner: PublicKey, tokenFeeList: PublicKey[]): Promise<TransactionInstruction>;
getInitBotConfigInstruction(cardBotConfig: PublicKey, cardPda: PublicKey, zicOwner: PublicKey, data: InitBotConfigData): Promise<TransactionInstruction>;
getSetBotAdminInstruction(cardBotConfig: PublicKey, cardPda: PublicKey, zicOwner: PublicKey, data: SetBotAdminData): Promise<TransactionInstruction>;
getInitBotUserCustodyInstruction(botAdmin: PublicKey, cardBotConfig: PublicKey, usdcToken: PublicKey, userCustody: PublicKey, userCustodyAta: PublicKey, data: IntiBotPdaData): Promise<TransactionInstruction>;
getBuyCardBotInstruction(botAdmin: PublicKey, cardBotConfig: PublicKey, cardPda: PublicKey, cardVault: PublicKey, cardVaultAta: PublicKey, feeMapPda: PublicKey, revenueVault: PublicKey, revenueVaultAta: PublicKey, usdcToken: PublicKey, userCustody: PublicKey, userCustodyAta: PublicKey, buyCardData: BuyCardBotInstructionData): Promise<TransactionInstruction>;
getInitOnRampInstruction(zicOwner: PublicKey, cardConfig: PublicKey, onRampConfig: PublicKey, data: InitOnRampInstructionData): Promise<TransactionInstruction>;
getInitOnRampUserCustodyInstruction(admin: PublicKey, onRampConfig: PublicKey, onRampUserCustody: PublicKey, onRampUserCustodyZbcnAccount: PublicKey, zbcnToken: PublicKey, data: IntiOnRampUserCustodyData): Promise<TransactionInstruction>;
getSetOnRampAdminInstruction(cardConfig: PublicKey, onRampConfig: PublicKey, zicOwner: PublicKey, data: SetOnRampAdminInstructionData): Promise<TransactionInstruction>;
getOnRampTransferZbcnInstruction(onRampAdmin: PublicKey, onRampConfig: PublicKey, onRampUserCustody: PublicKey, onRampUserCustodyZbcnAccount: PublicKey, receiverAccount: PublicKey, receiverZbcnAccount: PublicKey, zbcnToken: PublicKey, data: OnRampTransferZbcnInstructionData): Promise<TransactionInstruction>;
}
export {};