@frakters/nft-lending-v2
Version:
Client library for interacting with nft lenging solana program
162 lines (161 loc) • 5.43 kB
TypeScript
import { Connection, PublicKey, TransactionInstruction } from '@solana/web3.js';
import { TokenAmount } from './safe-math';
import { TokenInfo } from './tokens';
export interface IdoPoolInfo {
startTime: number;
endTime: number;
startWithdrawTime: number;
minDepositLimit: TokenAmount;
maxDepositLimit: TokenAmount;
stakePoolId: PublicKey;
minStakeLimit: TokenAmount;
quoteTokenDeposited: TokenAmount;
}
export interface IdoLotteryPoolInfo {
status: number;
nonce: number;
startTime: number;
endTime: number;
startWithdrawTime: number;
numerator: number;
denominator: number;
quoteTokenDeposited: TokenAmount;
baseTokenSupply: TokenAmount;
perUserMaxLottery: number;
perUserMinLottery: number;
perLotteryNeedMinStake: number;
perLotteryWorthQuoteAmount: TokenAmount;
totalWinLotteryLimit: number;
totalDepositUserNumber: number;
currentLotteryNumber: number;
luckyInfos: Array<{
luckyTailDigits: number;
luckyTailNumber: number;
luckyWithinNumber: number;
luckyNumberExist: number;
}>;
quoteTokenMint: PublicKey;
baseTokenMint: PublicKey;
quoteTokenVault: PublicKey;
baseTokenVault: PublicKey;
stakePoolId: PublicKey;
stakeProgramId: PublicKey;
checkProgramId: PublicKey;
idoOwner: PublicKey;
poolSeedId: PublicKey;
}
export interface IdoUserInfo {
deposited: TokenAmount;
snapshoted: boolean;
}
export interface IdoLotteryUserInfo {
deposited: TokenAmount;
snapshoted: boolean;
eligibleTicketAmount: number;
quoteTokenDeposited: number;
quoteTokenWithdrawn: number;
baseTokenWithdrawn: number;
lotteryBeginNumber: number;
lotteryEndNumber: number;
}
export interface IdoPool {
base: TokenInfo;
quote: TokenInfo;
version: number;
programId: string;
snapshotProgramId: string;
isRayPool: boolean;
isPrivate: boolean;
status?: string;
idoId: string;
baseVault: string;
quoteVault: string;
info?: IdoPoolInfo | IdoLotteryPoolInfo;
userInfo?: IdoUserInfo | IdoLotteryUserInfo;
price: TokenAmount;
raise: TokenAmount;
seedId?: string;
}
export declare const IDO_POOLS: IdoPool[];
export declare function getIdoPoolById(idoId: string): IdoPool;
export declare const IDO_POOL_INFO_LAYOUT: any;
export declare const IDO_LOTTERY_POOL_INFO_LAYOUT: any;
export declare const IDO_USER_INFO_LAYOUT: any;
export declare const IDO_LOTTERY_USER_INFO_LAYOUT: any;
export declare const IDO_LOTTERY_SNAPSHOT_DATA_LAYOUT: any;
export declare function findAssociatedIdoInfoAddress(idoId: PublicKey, walletAddress: PublicKey, programId: PublicKey): Promise<PublicKey>;
export declare function findAssociatedIdoCheckAddress(idoId: PublicKey, walletAddress: PublicKey, snapshotProgramId: PublicKey): Promise<PublicKey>;
export declare function purchase({ connection, wallet, poolInfo, userQuoteTokenAccount, stakeInfoAccount, amount, }: {
connection: Connection;
wallet: any;
poolInfo: IdoPool;
userQuoteTokenAccount: string;
stakeInfoAccount: string;
amount: string | number;
}): Promise<string>;
export declare function claim({ connection, wallet, poolInfo, userBaseTokenAccount, userQuoteTokenAccount, aim, }: {
connection: Connection;
wallet: any;
poolInfo: IdoPool;
userBaseTokenAccount: string;
userQuoteTokenAccount: string;
/**
* this is only for lottery
* the property indicate which coin user want to withdraw
*/
aim?: 'quote' | 'base';
}): Promise<string>;
interface PurchaseInstructionKeys {
idoId: PublicKey;
authority: PublicKey;
poolQuoteTokenAccount: PublicKey;
userQuoteTokenAccount: PublicKey;
userIdoInfo: PublicKey;
userStakeInfo: PublicKey;
userIdoCheck: PublicKey;
userOwner: PublicKey;
}
interface PurchaseInstructionKeysV3 {
idoId: PublicKey;
authority: PublicKey;
poolQuoteTokenAccount: PublicKey;
userQuoteTokenAccount: PublicKey;
userIdoInfo: PublicKey;
userIdoCheck: PublicKey;
userOwner: PublicKey;
}
interface PurchaseInstructionKeysPrivate {
idoId: PublicKey;
authority: PublicKey;
poolQuoteTokenAccount: PublicKey;
userQuoteTokenAccount: PublicKey;
userIdoInfo: PublicKey;
userIdoCheck: PublicKey;
userOwner: PublicKey;
}
export declare function purchaseInstruction<Flag extends '' | '3' | 'private' = ''>({ programId, amount }: {
programId: PublicKey;
amount: string | number;
}, instructionKeys: Flag extends '3' ? PurchaseInstructionKeysV3 : Flag extends 'private' ? PurchaseInstructionKeysPrivate : PurchaseInstructionKeys): TransactionInstruction;
interface ClaimInstructionKeys {
idoId: PublicKey;
authority: PublicKey;
poolQuoteTokenAccount: PublicKey;
poolBaseTokenAccount: PublicKey;
userQuoteTokenAccount: PublicKey;
userBaseTokenAccount: PublicKey;
userIdoInfo: PublicKey;
userOwner: PublicKey;
}
interface ClaimInstructionKeysV3 {
idoId: PublicKey;
authority: PublicKey;
poolTokenAccount: PublicKey;
userTokenAccount: PublicKey;
userIdoInfo: PublicKey;
userOwner: PublicKey;
}
export declare function claimInstruction<Version extends '' | '3' = ''>({ programId }: {
programId: PublicKey;
}, instructionKeys: Version extends '3' ? ClaimInstructionKeysV3 : ClaimInstructionKeys): TransactionInstruction;
export {};