import { Program } from '@project-serum/anchor'; import { Connection, Keypair, PublicKey, TransactionInstruction } from '@solana/web3.js'; import { IWallet } from '.'; import { LifinityAmm as LifinityAmmType } from './idl/lifinity_amm'; export declare class Lifinity { connection: Connection; wallet: IWallet; program: Program; stateAddress: PublicKey; programAuthority: PublicKey; owner: Keypair; private constructor(); static build(connection: Connection, wallet: any): Promise; swap(amountIn: number, minimumAmountOut: number, fromMint: PublicKey, toMint: PublicKey): Promise; deposit(coinMaximumIn: number, pcMaximumIn: number, lpRecive: number, coinMint: PublicKey, pcMint: PublicKey): Promise; withdraw(lpAmountIn: number, coinMinimumOut: number, pcMinimumOut: number, coinMint: PublicKey, pcMint: PublicKey): Promise; } export interface IAmountOut { amountIn: number; amountOut: number; amountOutWithSlippage: number; priceImpact: number; fee: number; feePercent: number; } export declare function getAmountOut(connection: Connection, amountIn: number, fromMint: PublicKey, toMint: PublicKey, slippage: number): Promise; export interface ISwapInstructions { approveInstruction: TransactionInstruction; swapInstruction: TransactionInstruction; signers: any[]; } export declare function getSwapInstruction(connection: Connection, ownerAccount: PublicKey, amountIn: number, minimumOut: number, fromMint: PublicKey, toMint: PublicKey, fromUserAccount: PublicKey, toTokenAccount: PublicKey, approve?: boolean): Promise; export declare function getSwapTransactionWithAuthority(connection: Connection, ownerAccount: PublicKey, amountIn: number, minimumAmountOut: number, fromMint: PublicKey, toMint: PublicKey, fromUserAccount: PublicKey, toTokenAccount: PublicKey, authority: PublicKey): TransactionInstruction; export interface IDepositAmountOut { coinMaximumIn: number; pcMaximumIn: number; lpRecive: number; } export declare function getDepositAmountOut(connection: Connection, coinAmountIn: number, pcAmountIn: number, coinMint: PublicKey, pcMint: PublicKey, slippage: number): Promise; export declare function getDepositInstruction(connection: Connection, ownerAccount: PublicKey, coinAmountIn: number, pcAmountIn: number, lpRecive: number, fromMint: PublicKey, toMint: PublicKey, userCoinTokenAccount: PublicKey, userPcTokenAccount: PublicKey, userLpTokenAccount: PublicKey): Promise; export interface IWithdrawAmountOut { lpAmountIn: number; coinMinimumOut: number; pcMinimumOut: number; } export declare function getWithdrawAmountOut(connection: Connection, lpAmountIn: number, coinMint: PublicKey, pcMint: PublicKey, slippage: number): Promise; export declare function getWithdrawInstruction(connection: Connection, ownerAccount: PublicKey, lpAmountIn: number, coinMinimumOut: number, pcMinimumOut: number, fromMint: PublicKey, toMint: PublicKey, userCoinTokenAccount: PublicKey, userPcTokenAccount: PublicKey, userLpTokenAccount: PublicKey): Promise;