///
import { PublicKey } from "@solana/web3.js";
import { TranchePassConfig, UpdateTrancheNameAndRatesConfig } from "..";
import { DealTranche as ProgramTranche } from "../idl/idl.types";
import { Base } from "../rpc/Base";
import { CredixClient, SolanaContext } from "../rpc/CredixClient";
import { Deal } from "./Deal";
import { Fraction } from "./Fraction";
import { ScowTrancheInvestor } from "./ScowTrancheInvestor";
import { TrancheInfo } from "./TrancheInfo";
import { TranchePass } from "./TranchePass";
import { Tranches } from "./Tranches";
export declare enum VariableRate {
None = 0,
Sofr = 1
}
export declare class Tranche extends Base {
deal: Deal;
private tranches;
constructor(deal: Deal, tranches: Tranches, programVersion: ProgramTranche, client: CredixClient, solanaContext: SolanaContext);
get index(): number;
get isFundedByPool(): boolean;
get size(): import("@solana/web3.js").TokenAmount;
get returnPercentage(): Fraction;
get rates(): import("../utils/tranche.utils").TrancheRates;
get name(): string;
get amountDeposited(): import("@solana/web3.js").TokenAmount;
get amountsRepaid(): import("../utils/tranche.utils").TrancheAmountsRepaid;
get amountsDue(): import("../utils/tranche.utils").TrancheAmountsDue;
get hasPreviousPeriodAmountDue(): boolean;
get hasLateFeeRates(): boolean;
get totalAmountDue(): import("@solana/web3.js").TokenAmount;
get mint(): PublicKey;
get maxDepositPercentage(): Fraction;
get upscaleSize(): import("@solana/web3.js").TokenAmount;
get variableRate(): VariableRate;
get optionalAccount(): boolean;
get isFullyFunded(): boolean;
get interestRepaidUntilLastUpscale(): import("@solana/web3.js").TokenAmount;
get outstandingPrincipal(): import("@solana/web3.js").TokenAmount;
get isFunded(): boolean;
get interestRateUpdatedAt(): number;
static generateMintPDA(tranches: PublicKey, index: number, programId: PublicKey): [PublicKey, number];
private issuePassBuilder;
issuePassIx(investor: PublicKey, owner?: PublicKey): Promise;
issuePass(investor: PublicKey): Promise;
private updatePassBuilder;
updatePassIx(investor: PublicKey, tranchePassConfig: TranchePassConfig, owner?: PublicKey): Promise;
updatePass(investor: PublicKey, tranchePassConfig: TranchePassConfig): Promise;
fetchPass(investor: PublicKey): Promise;
userTrancheBalance(user: PublicKey): Promise;
findTrancheTokenAccount(pk: PublicKey): PublicKey;
deposit(depositAmount: number): Promise;
private depositPool;
depositInvestorIx(depositAmount: number, investor: PublicKey): Promise;
private depositInvestor;
private depositInvestorBuilder;
burn(amount: number): Promise;
withdraw(amount?: number): Promise;
private withdrawPool;
withdrawInvestorIx(investor: PublicKey): Promise;
private withdrawInvestor;
private withdrawInvestorBuilder;
get isRepaid(): boolean;
get netAPR(): number;
get grossAPR(): number;
calculateInvestorWithdrawableAmount(investor: PublicKey, onlyInterest?: boolean): Promise;
calculateInvestorGains(investor: PublicKey): Promise;
private investorRatios;
fetchTrancheInfo(): Promise;
get financingFee(): number;
get principalRepaid(): import("@solana/web3.js").TokenAmount;
private getSnapshots;
private updateTrancheNameAndRatesBuilder;
updateTrancheNameAndRatesIx(updateConfig: UpdateTrancheNameAndRatesConfig, owner?: PublicKey): Promise;
updateTrancheNameAndRates(updateConfig: UpdateTrancheNameAndRatesConfig): Promise;
virUpdateRelevantRateIX(interest: Fraction, owner?: PublicKey): Promise;
virUpdateRelevantRate(interest: Fraction, owner?: PublicKey): Promise;
fetchScowTrancheInvestor(investorBaseTokenAccount: PublicKey): Promise;
createScowTrancheInvestorBuilder(investorBaseTokenAccount: PublicKey, owner?: PublicKey): Promise>;
createScowTrancheInvestor(investorBaseTokenAccount: PublicKey): Promise;
createScowTrancheInvestorBuilderIx(investorBaseTokenAccount: PublicKey, owner?: PublicKey): Promise;
private writeOffDealPrincipalBuilder;
writeOffDealPrincipal(amount: number): Promise;
writeOffDealPrincipalIx(amount: number, owner?: PublicKey): Promise;
}
//# sourceMappingURL=Tranche.d.ts.map