///
import { web3 } from "@project-serum/anchor";
import { PublicKey } from "@solana/web3.js";
import { CreateReceivableConfig, CredixPassConfig, DealConfig, UpdateGlobalMarketConfig, UpdateMarketAdminsConfig } from "../config";
import { GlobalMarketState } from "../idl/idl.types";
import { Base } from "../rpc/Base";
import { CredixClient, SolanaContext } from "../rpc/CredixClient";
import { BorrowerInfo } from "./BorrowerInfo";
import { CredixPass } from "./CredixPass";
import { Deal, DealStatus } from "./Deal";
import { Fraction } from "./Fraction";
import { ManagedBorrower } from "./ManagedBorrower";
import { MarketAdmins } from "./MarketAdmins";
import { Receivable } from "./Receivable";
import { RepaymentSchedule } from "./RepaymentSchedule";
import { ScowPoolInvestor } from "./ScowPoolInvestor";
import { ScowTrancheInvestor } from "./ScowTrancheInvestor";
import { SecondaryMarket } from "./SecondaryMarket";
import { Tranche } from "./Tranche";
import { Tranches } from "./Tranches";
import { WithdrawEpoch } from "./WithdrawEpoch";
export declare enum MarketStatus {
OPEN_FOR_FUNDING = 0,
PRIVATE = 1,
CLOSED = 2
}
export declare class Market extends Base {
address: PublicKey;
constructor(address: PublicKey, solanaContext: SolanaContext, client: CredixClient, programVersion: GlobalMarketState);
reload(): Promise;
get programId(): web3.PublicKey;
get secondaryMarketProgramId(): web3.PublicKey;
get baseMintPK(): web3.PublicKey;
get lpMintPK(): web3.PublicKey;
get poolOutstandingCredit(): web3.TokenAmount;
get status(): MarketStatus;
totalOutstandingCredit(deals: Deal[], tranches: (Tranches | null)[], schedules: (RepaymentSchedule | null)[]): Promise;
get treasury(): web3.PublicKey;
get hasWithdrawEpochs(): boolean;
get withdrawFee(): Fraction;
get poolSizeLimitPercentage(): Fraction;
get isFrozen(): boolean;
get lockedLiquidity(): web3.TokenAmount;
get latestWithdrawEpochIdx(): number;
get withdrawEpochAvailableLiquidityDays(): number;
get withdrawEpochAvailableLiquiditySeconds(): number;
get latestWithdrawEpochEnd(): number;
get withdrawEpochRequestDays(): number;
get withdrawEpochRequestSeconds(): number;
get withdrawEpochRedeemDays(): number;
get withdrawEpochRedeemSeconds(): number;
get name(): string;
get totalRedeemedBaseAmount(): web3.TokenAmount;
get lockupDuration(): number;
get isUncapped(): boolean;
get baseMintMetadata(): {
name: string;
symbol: string;
};
get isCrossChain(): boolean;
private depositBuilder;
deposit(amount: number): Promise;
depositIx(amount: number, investor?: PublicKey): Promise;
private withdrawBuilder;
withdraw(amount: number): Promise;
withdrawIx(amount: number, investor?: PublicKey): Promise;
createDeal(dealConfig: DealConfig): Promise;
getTreasuryBalance(): Promise;
getLPSupply(): Promise;
getLPPrice(): Promise;
getBasePrice(): Promise;
findBaseTokenAccount(pk: PublicKey): web3.PublicKey;
findLPTokenAccount(pk: PublicKey): web3.PublicKey;
userBaseBalance(user: PublicKey): Promise;
userBaseTokenAccountBalance(userBaseTokenAccount: PublicKey): Promise;
userLPBalance(user: PublicKey): Promise;
fetchLiquidityPoolBalance(): Promise;
fetchDeal(borrower: PublicKey, dealNumber: number): Promise;
fetchMarketAdmins(): Promise;
calculateTVL(): Promise;
fetchDeals(status?: DealStatus): Promise;
fetchAllScowTrancheInvestors(): Promise;
fetchAllScowPoolInvestors(): Promise;
fetchBorrowerInfo(borrower: PublicKey): Promise;
fetchCredixPass(holder: PublicKey): Promise;
static generatePDA(marketName: string, programId: PublicKey): [web3.PublicKey, number];
static generateLPTokenMintPDA(marketName: string, programId: PublicKey): [web3.PublicKey, number];
private generateCredixPassPDA;
generateSigningAuthorityPDA(): [web3.PublicKey, number];
findLiquidityPoolTokenAccount(): web3.PublicKey;
getUserStake(user: PublicKey): Promise;
private issueCredixPassBuilder;
issueCredixPassIx(holder: PublicKey, credixPassConfig: CredixPassConfig, owner?: PublicKey): Promise;
issueCredixPass(holder: PublicKey, credixPassConfig: CredixPassConfig): Promise;
private updateCredixPassBuilder;
updateCredixPassIx(holder: PublicKey, credixPassConfig: CredixPassConfig, owner?: PublicKey): Promise;
updateCredixPass(holder: PublicKey, credixPassConfig: CredixPassConfig): Promise;
private freezeBuilder;
freezeIx(owner?: PublicKey): Promise;
freeze(): Promise;
private thawBuilder;
thawIx(owner?: PublicKey): Promise;
thaw(): Promise;
get credixFeePercentage(): Fraction;
calculateAvgFinancingFee(): Promise;
updateCredixFees(credixFeePercentage: Fraction): Promise;
private updateConfigBuilder;
updateConfig(updateConfig: UpdateGlobalMarketConfig): Promise;
updateConfigIx(updateConfig: UpdateGlobalMarketConfig, owner?: PublicKey): Promise;
private updateMarketAdminsBuilder;
updateMarketAdminsIx(marketAdminsConfig: UpdateMarketAdminsConfig, owner?: PublicKey): Promise;
updateMarketAdmins(marketAdminsConfig: UpdateMarketAdminsConfig): Promise;
private thawFreezeTokenAccountBuilder;
thawFreezeTokenAccountIx(freeze: boolean, mint: PublicKey, tokenAccount: PublicKey, owner?: PublicKey): Promise;
thawFreezeTokenAccount(freeze: boolean, mint: PublicKey, tokenAccount: PublicKey): Promise;
isManager(user: PublicKey): Promise;
private createWithdrawEpochBuilder;
createWithdrawEpochIx(owner?: PublicKey): Promise;
createWithdrawEpoch(): Promise;
fetchWithdrawEpoch(withEpochIdx: number): Promise;
fetchLatestWithdrawEpoch(): Promise;
private setLockedLiquidityBuilder;
setLockedLiquidityIx(owner?: PublicKey): Promise;
setLockedLiquidity(): Promise;
fetchPortfolio(investor: PublicKey): Promise<{
dealsInvested: {
deal: Deal & {
dealTranches: Tranches;
repaymentSchedule: RepaymentSchedule;
};
tranches: {
tranche: Tranche;
baseAmountInvested: web3.TokenAmount;
withdrawable: web3.TokenAmount;
withdrawn: web3.TokenAmount;
gains: web3.TokenAmount;
}[];
}[];
poolValue: web3.TokenAmount;
}>;
averageTenorInDays(): Promise;
private initSecondaryMarketBuilder;
initSecondaryMarketIx(owner?: PublicKey): Promise;
initSecondaryMarket(): Promise;
fetchSecondaryMarket(): Promise;
fetchManagedBorrower(borrowerName: string): Promise;
private createManagedBorrowerBuilder;
createManagedBorrower(borrowerName: string): Promise;
createManagedBorrowerIx(borrowerName: string, ownerPk?: PublicKey): Promise;
fetchScowPoolInvestor(investorBaseTokenAccount: PublicKey): Promise;
private createScowPoolInvestorBuilder;
createScowPoolInvestor(investorBaseTokenAccount: PublicKey): Promise;
createScowPoolInvestorIx(investorBaseTokenAccount: PublicKey, ownerPk?: PublicKey): Promise;
private createReceivableBuilder;
createReceivableIx(receivableConfig: CreateReceivableConfig, owner?: PublicKey): Promise;
createReceivable(receivableConfig: CreateReceivableConfig): Promise;
private fundReceivableBuilder;
fundReceivableIx(receivable: Receivable, owner?: PublicKey): Promise;
fundReceivable(receivable: Receivable): Promise;
}
//# sourceMappingURL=Market.d.ts.map