import { Keypair, PublicKey } from "@solana/web3.js"; import Decimal from "decimal.js"; import { OrcaU64, TransactionPayload } from ".."; export declare type OrcaFarm = { /** * Query the balance for an user address * @param wallet The public key for the user. * @return Returns the amount of farm token the user owns for this pool. */ getFarmBalance: (owner: PublicKey) => Promise; /** * Query the supply of farm tokens for this pool. * @return Returns the supply of farm tokens for this pool. */ getFarmSupply: () => Promise; /** * Perfrom a deposit: send baseToken, and receive farmToken in return. * Fee for the transaction will be paid by the owner's wallet. * * NOTE: * 1. Associated Token Address initialization instructions will be appended if the ATA of the specified token does not exist in the user's wallet * 2. OrcaU64 must have the same scale as the corresponding token scale value * * @param owner The keypair for the user's wallet or just the user's public key * @param baseTokenAmount The amount of baseToken to deposit * @return The transaction signature of the deposit instruction */ deposit: (owner: Keypair | PublicKey, baseTokenAmount: Decimal | OrcaU64) => Promise; /** * Perfrom a withdraw: send farmToken, and receive baseToken in return. * Fee for the transaction will be paid by the owner's wallet. * * WARNING: * 1. Withdraw is only supported from the public key that initiated the deposit. * * NOTE: * 1. Associated Token Address initialization instructions will be appended if the ATA of the specified token does not exist in the user's wallet * 2. OrcaU64 must have the same scale as the corresponding token scale value * * @param owner The keypair for the user's wallet or just the user's public key * @param baseTokenAmount The amount of baseToken to receive * @return The transaction signature of the deposit instruction */ withdraw: (owner: Keypair | PublicKey, baseTokenAmount: Decimal | OrcaU64) => Promise; /** * Get the total amount of rewards that has accumulated in the user's farm. * * Returns 0 if: * 1. the user does not have a farm initialized (by calling deposit) * 2. the user's farm balance is empty * * @param ownerPublicKey The public key of the user * @return The amount of reward that can be harvestable by the user */ getHarvestableAmount: (ownerPublicKey: PublicKey) => Promise; /** * Harvest all of the rewards that has accumulated in the user's farm. * * Throws error if the user does not have a farm initialized (by calling deposit) * * @param owner The keypair for the user's wallet or just the user's public key * @return The transaction signature of the harvest instruction */ harvest: (owner: Keypair | PublicKey) => Promise; /** * Get amount of reward tokens emitted to all liquidity per day. */ getDailyEmissions: () => Promise; };