@frakters/nft-lending-v2
Version:
Client library for interacting with nft lenging solana program
202 lines (201 loc) • 8.1 kB
TypeScript
/// <reference types="node" />
import { TransactionInstruction, PublicKey } from '@solana/web3.js';
import * as Borsh from './utils/borsh';
import BN from 'bn.js';
export declare const toPublicKey: (key: string | PublicKey) => PublicKey;
export declare type StringPublicKey = string;
export declare const findProgramAddress: (seeds: (Buffer | Uint8Array)[], programId: PublicKey) => Promise<[PublicKey, number]>;
export declare const VAULT_PREFIX = "vault";
export declare enum VaultKey {
Uninitialized = 0,
VaultV1 = 3,
SafetyDepositBoxV1 = 1,
ExternalPriceAccountV1 = 2,
AuctionV1 = 4,
BidV1 = 5,
PoolWhitelistV1 = 6
}
export declare enum WhitelistType {
CreatorWhitelist = 0,
SingleNFTWhitelist = 1
}
export declare enum VaultState {
Inactive = 0,
Active = 1,
Combined = 2,
Deactivated = 3,
AuctionStarted = 4
}
export declare const MAX_VAULT_SIZE: number;
export declare const MAX_SAFETY_DEPOSIT_SIZE: number;
export declare const MAX_AUCTION_SIZE: number;
export declare const MAX_BID_SIZE: number;
export declare const MAX_POOL_WHITELIST_SIZE: number;
export declare const MAX_EXTERNAL_ACCOUNT_SIZE: number;
export declare class Vault {
key: VaultKey;
tokenProgram: StringPublicKey;
fractionMint: StringPublicKey;
authority: StringPublicKey;
fractionTreasury: StringPublicKey;
redeemTreasury: StringPublicKey;
allowFurtherShareCreation: boolean;
pricingLookupAddress: StringPublicKey;
priceMint: StringPublicKey;
fractionsSupply: BN;
createdAt: number;
tokenTypeCount: number;
state: VaultState;
lockedPricePerShare: BN;
constructor(args: {
tokenProgram: StringPublicKey;
fractionMint: StringPublicKey;
authority: StringPublicKey;
fractionTreasury: StringPublicKey;
redeemTreasury: StringPublicKey;
allowFurtherShareCreation: boolean;
pricingLookupAddress: StringPublicKey;
priceMint: StringPublicKey;
fractionsSupply: BN;
tokenTypeCount: number;
state: VaultState;
lockedPricePerShare: BN;
});
}
export declare class SafetyDepositBox {
key: VaultKey;
vault: StringPublicKey;
tokenMint: StringPublicKey;
store: StringPublicKey;
order: number;
constructor(args: {
vault: StringPublicKey;
tokenMint: StringPublicKey;
store: StringPublicKey;
order: number;
});
}
export declare class ExternalPriceAccount {
key: VaultKey;
pricePerShare: BN;
priceMint: StringPublicKey;
allowedToCombine: boolean;
constructor(args: {
pricePerShare: BN;
priceMint: StringPublicKey;
allowedToCombine: boolean;
});
}
export declare class Auction {
key: VaultKey;
vault: StringPublicKey;
current_winning_bid: StringPublicKey;
version: BN;
started_at: number;
ending_at: number;
end_auction_gap: number;
min_tick_size: BN;
is_started: boolean;
is_enabled: boolean;
total_uncancelled_bids: number;
gap_tick_size_percentage: number;
instant_sale_price: BN;
constructor(args: {
vault: StringPublicKey;
current_winning_bid: StringPublicKey;
version: BN;
started_at: number;
ending_at: number;
end_auction_gap: number;
min_tick_size: BN;
is_started: boolean;
is_enabled: boolean;
total_uncancelled_bids: number;
gap_tick_size_percentage: number;
instant_sale_price: BN;
});
}
export declare const VAULT_SCHEMA: Map<any, any>;
export declare const decodePoolWhitelist: (buffer: Buffer) => any;
export declare const decodeBid: (buffer: Buffer) => any;
export declare const decodeAuction: (buffer: Buffer) => any;
export declare const decodeVault: (buffer: Buffer) => any;
export declare const decodeExternalPriceAccount: (buffer: Buffer) => ExternalPriceAccount;
export declare const decodeSafetyDeposit: (buffer: Buffer) => SafetyDepositBox;
export declare function depositNFT(poolWhitelist: StringPublicKey, userNftTokenAccount: StringPublicKey, nftMint: StringPublicKey, store: StringPublicKey, userPubkey: StringPublicKey, transfer_authority_info: StringPublicKey, fractionalTreasury: StringPublicKey, fractionMint: StringPublicKey, userFractionsTokenAccount: StringPublicKey, vault: StringPublicKey, instructions: TransactionInstruction[], vaultProgramId: PublicKey): Promise<void>;
export declare function withdrawNFT(userPubkey: StringPublicKey, userNftTokenAccount: StringPublicKey, nftMint: StringPublicKey, store: StringPublicKey, fractions_transfer_authority_info: StringPublicKey, fractionalTreasury: StringPublicKey, fractionMint: StringPublicKey, userFractionsTokenAccount: StringPublicKey, vault: StringPublicKey, instructions: TransactionInstruction[], vaultProgramId: PublicKey): Promise<void>;
export declare function initVault(allowFurtherShareCreation: boolean, fractionalMint: StringPublicKey, priceMint: StringPublicKey, redeemTreasury: StringPublicKey, fractionalTreasury: StringPublicKey, vault: StringPublicKey, vaultAuthority: StringPublicKey, instructions: TransactionInstruction[], vaultProgramId: PublicKey): Promise<void>;
export declare function addToWhitelist(is_creator: boolean, userPubkey: StringPublicKey, whitelisted_address: StringPublicKey, whitelist_info: StringPublicKey, vault: StringPublicKey, instructions: TransactionInstruction[], vaultProgramId: StringPublicKey): Promise<void>;
export declare function getSafetyDepositBox(vault: StringPublicKey, tokenMint: StringPublicKey, vaultProgramId: PublicKey): Promise<StringPublicKey>;
export declare function activateVault(vault: StringPublicKey, adminPubkey: StringPublicKey, vaultAuthority: StringPublicKey, instructions: TransactionInstruction[], vaultProgramId: PublicKey): Promise<void>;
export declare function getSafetyDepositBoxAddress(vault: StringPublicKey, tokenMint: StringPublicKey, vaultProgramId: PublicKey): Promise<StringPublicKey>;
declare type Args = {
tokenProgram: StringPublicKey;
fractionMint: StringPublicKey;
authority: StringPublicKey;
fractionTreasury: StringPublicKey;
redeemTreasury: StringPublicKey;
allowFurtherShareCreation: boolean;
pricingLookupAddress: StringPublicKey;
priceMintAddress: StringPublicKey;
fractionsSupply: number;
createdAt: number;
tokenTypeCount: number;
state: VaultState;
lockedPricePerShare: BN;
};
export declare class VaultData extends Borsh.Data<Args> {
static readonly SCHEMA: Map<any, any>;
key: VaultKey;
tokenProgram: StringPublicKey;
fractionMint: StringPublicKey;
authority: StringPublicKey;
fractionTreasury: StringPublicKey;
redeemTreasury: StringPublicKey;
allowFurtherShareCreation: boolean;
pricingLookupAddress: StringPublicKey;
priceMintAddress: StringPublicKey;
fractionsSupply: number;
createdAt: number;
tokenTypeCount: number;
state: VaultState;
lockedPricePerShare: BN;
constructor(args: Args);
}
export declare class AuctionData extends Borsh.Data<Args> {
static readonly SCHEMA: Map<any, any>;
key: VaultKey;
vault: StringPublicKey;
current_winning_bid: StringPublicKey;
version: BN;
started_at: number;
ending_at: number;
end_auction_gap: number;
min_tick_size: BN;
is_started: boolean;
is_enabled: boolean;
total_uncancelled_bids: number;
gap_tick_size_percentage: number;
instant_sale_price: BN;
constructor(args: Args);
}
export declare class BidData extends Borsh.Data<Args> {
static readonly SCHEMA: Map<any, any>;
key: VaultKey;
auction: StringPublicKey;
bidder: StringPublicKey;
bid_amount_per_share: BN;
version: BN;
placed_at: number;
is_canceled: boolean;
constructor(args: Args);
}
export declare class PoolWhitelistData extends Borsh.Data<Args> {
static readonly SCHEMA: Map<any, any>;
key: VaultKey;
vault: StringPublicKey;
whitelisted_address: StringPublicKey;
whitelist_type: WhitelistType;
constructor(args: Args);
}
export {};