///
import { PublicKey } from "@solana/web3.js";
import { WithdrawEpoch as IDLWithdrawEpoch } from "../idl/idl.types";
import { Base } from "../rpc/Base";
import { CredixClient, SolanaContext } from "../rpc/CredixClient";
import { Market } from "./Market";
import { WithdrawRequest } from "./WithdrawRequest";
export declare const WITHDRAW_EPOCH_PHASE: {
readonly REQUEST: "REQUEST";
readonly REDEEM: "REDEEM";
readonly AVAILABLE_LIQUIDITY: "AVAILABLE_LIQUIDITY";
readonly CLOSED: "CLOSED";
};
export type WithdrawEpochPhase = keyof typeof WITHDRAW_EPOCH_PHASE;
export declare class WithdrawEpoch extends Base {
address: PublicKey;
idx: number;
market: Market;
constructor(address: PublicKey, idx: number, market: Market, solanaContext: SolanaContext, client: CredixClient, programVersion: IDLWithdrawEpoch);
get goLive(): number;
get requestDays(): number;
get requestSeconds(): number;
get requests(): WithdrawRequest[];
investorWithdrawRequest(investor: PublicKey): WithdrawRequest | null;
fetchWithdrawRequest(investor: PublicKey): Promise;
get redeemDays(): number;
get redeemSeconds(): number;
get availableLiquidityDays(): number;
get availableLiquiditySeconds(): number;
get totalRequestedBaseAmount(): import("@solana/web3.js").TokenAmount;
get phase(): WithdrawEpochPhase;
getInvestorLockedLiquidity(investor: PublicKey): import("@solana/web3.js").TokenAmount;
getWithdrawableAmount(investor: PublicKey): import("@solana/web3.js").TokenAmount;
reload(): Promise;
private createWithdrawRequestBuilder;
createWithdrawRequestIx(amount: number, investor?: PublicKey, payer?: PublicKey): Promise;
createWithdrawRequest(amount: number): Promise;
private createWithdrawRequestForInvestorBuilder;
createWithdrawRequestForInvestor(amount: number, investor: PublicKey): Promise;
private redeemRequestBuilder;
redeemRequestIx(amount: number, owner?: PublicKey): Promise;
redeemRequest(amount: number): Promise;
static generatePDA(market: Market, withEpochIdx: number): [PublicKey, number];
}
//# sourceMappingURL=WithdrawEpoch.d.ts.map