///
import { MarinadeConfig } from './config/marinade-config';
import { BN, Provider, web3 } from '@project-serum/anchor';
import { MarinadeState } from './marinade-state/marinade-state';
import { DepositOptions, MarinadeResult } from './marinade.types';
import { MarinadeFinanceProgram } from './programs/marinade-finance-program';
import { MarinadeReferralProgram } from './programs/marinade-referral-program';
import { MarinadeReferralPartnerState } from './marinade-referral-state/marinade-referral-partner-state';
import { MarinadeReferralGlobalState } from './marinade-referral-state/marinade-referral-global-state';
import { TicketAccount } from './marinade-state/borsh/ticket-account';
export declare class Marinade {
readonly config: MarinadeConfig;
constructor(config?: MarinadeConfig);
readonly provider: Provider;
/**
* The main Marinade Program
*/
readonly marinadeFinanceProgram: MarinadeFinanceProgram;
/**
* The Marinade Program for referral partners
*/
readonly marinadeReferralProgram: MarinadeReferralProgram;
private deriveTokenAccountAddress;
private isReferralProgram;
private provideReferralOrMainProgram;
/**
* Fetch the Marinade's internal state
*/
getMarinadeState(): Promise;
/**
* Fetch the Marinade referral partner's state
*/
getReferralPartnerState(): Promise;
/**
* Fetch the Marinade referral program's global state
*/
getReferralGlobalState(): Promise;
/**
* Returns a transaction with the instructions to
* Add liquidity to the liquidity pool and receive LP tokens
*
* @param {BN} amountLamports - The amount of lamports added to the liquidity pool
*/
addLiquidity(amountLamports: BN): Promise;
/**
* Returns a transaction with the instructions to
* Burn LP tokens and get SOL and mSOL back from the liquidity pool
*
* @param {BN} amountLamports - The amount of LP tokens burned
*/
removeLiquidity(amountLamports: BN): Promise;
/**
* Returns a transaction with the instructions to
* Stake SOL in exchange for mSOL
*
* @param {BN} amountLamports - The amount lamports staked
* @param {DepositOptions=} options - Additional deposit options
*/
deposit(amountLamports: BN, options?: DepositOptions): Promise;
/**
* Returns a transaction with the instructions to
* Swap your mSOL to get back SOL immediately using the liquidity pool
*
* @param {BN} amountLamports - The amount of mSOL exchanged for SOL
* @param associatedMSolTokenAccountAddress
*/
liquidUnstake(amountLamports: BN, associatedMSolTokenAccountAddress?: web3.PublicKey): Promise;
/**
* Returns a transaction with the instructions to
* Order a delayed unstake of mSOL and create a ticket account to claim later
*
* @param {BN} amountLamports - The amount of mSOL exchanged for SOL
* @param associatedMSolTokenAccountAddress
*/
orderUnstake(amountLamports: BN, associatedMSolTokenAccountAddress?: web3.PublicKey): Promise;
/**
* Returns a transaction with the instructions to
* Deposit a delegated stake account.
* Note that the stake must be fully activated and the validator must be known to Marinade
*
* @param {web3.PublicKey} stakeAccountAddress - The account to be deposited
*/
depositStakeAccount(stakeAccountAddress: web3.PublicKey): Promise;
/**
* Returns a transaction with the instructions to
* Liquidate a delegated stake account.
* Note that the stake must be fully activated and the validator must be known to Marinade
* and that the transaction should be executed immediately after creation.
*
* @param {web3.PublicKey} stakeAccountAddress - The account to be deposited
* @param {BN} mSolToKeep - Optional amount of mSOL lamports to keep
*/
liquidateStakeAccount(stakeAccountAddress: web3.PublicKey, mSolToKeep?: BN): Promise;
/**
* @todo
*/
getDelayedUnstakeTickets(beneficiary?: web3.PublicKey): Promise