import * as _solana_web3_js from '@solana/web3.js'; import { PublicKey, AccountMeta } from '@solana/web3.js'; import BN from 'bn.js'; import { M as MarginfiProgram, B as BankConfigCompactRaw, a as BankConfigOptRaw, W as WrappedI80F48 } from './types-CaxQRqmz.cjs'; import '@coral-xyz/anchor'; import 'bignumber.js'; import './dto-farm.types-BAA9xrey.cjs'; declare function makeInitMarginfiAccountIx(mfProgram: MarginfiProgram, accounts: { marginfiGroup: PublicKey; marginfiAccount: PublicKey; authority: PublicKey; feePayer: PublicKey; }): Promise<_solana_web3_js.TransactionInstruction>; declare function makeInitMarginfiAccountPdaIx(mfProgram: MarginfiProgram, accounts: { marginfiGroup: PublicKey; marginfiAccount: PublicKey; authority: PublicKey; feePayer: PublicKey; }, args: { accountIndex: number; thirdPartyId?: number; }): Promise<_solana_web3_js.TransactionInstruction>; declare function makeJuplendDepositIx(mfProgram: MarginfiProgram, accounts: { marginfiAccount: PublicKey; bank: PublicKey; signerTokenAccount: PublicKey; lendingAdmin: PublicKey; supplyTokenReservesLiquidity: PublicKey; lendingSupplyPositionOnLiquidity: PublicKey; rateModel: PublicKey; vault: PublicKey; liquidity: PublicKey; liquidityProgram: PublicKey; rewardsRateModel: PublicKey; tokenProgram: PublicKey; group?: PublicKey; authority?: PublicKey; liquidityVault?: PublicKey; fTokenMint?: PublicKey; integrationAcc1?: PublicKey; integrationAcc2?: PublicKey; mint?: PublicKey; }, args: { amount: BN; }, remainingAccounts?: AccountMeta[]): Promise<_solana_web3_js.TransactionInstruction>; declare function makeJuplendWithdrawIx(mfProgram: MarginfiProgram, accounts: { marginfiAccount: PublicKey; bank: PublicKey; destinationTokenAccount: PublicKey; lendingAdmin: PublicKey; supplyTokenReservesLiquidity: PublicKey; lendingSupplyPositionOnLiquidity: PublicKey; rateModel: PublicKey; vault: PublicKey; claimAccount: PublicKey; liquidity: PublicKey; liquidityProgram: PublicKey; rewardsRateModel: PublicKey; tokenProgram: PublicKey; group?: PublicKey; authority?: PublicKey; mint?: PublicKey; integrationAcc1?: PublicKey; fTokenMint?: PublicKey; integrationAcc2?: PublicKey; integrationAcc3?: PublicKey; }, args: { amount: BN; withdrawAll?: boolean | null; }, remainingAccounts?: AccountMeta[]): Promise<_solana_web3_js.TransactionInstruction>; declare function makeKaminoDepositIx(mfProgram: MarginfiProgram, accounts: { marginfiAccount: PublicKey; bank: PublicKey; signerTokenAccount: PublicKey; lendingMarket: PublicKey; lendingMarketAuthority: PublicKey; reserveLiquiditySupply: PublicKey; reserveCollateralMint: PublicKey; reserveDestinationDepositCollateral: PublicKey; liquidityTokenProgram: PublicKey; obligationFarmUserState: PublicKey | null; reserveFarmState: PublicKey | null; group?: PublicKey; authority?: PublicKey; liquidityVault?: PublicKey; integrationAcc1?: PublicKey; integrationAcc2?: PublicKey; mint?: PublicKey; }, args: { amount: BN; /** 0.1.9-only: refresh the reserve in-instruction. Ignored by the 1.8 program. */ refreshReserve?: boolean; }, remainingAccounts?: AccountMeta[]): Promise<_solana_web3_js.TransactionInstruction>; /** * Create a Drift deposit instruction * Deposits tokens into a Drift spot market through a marginfi bank account * * @param mfProgram - The marginfi program instance * @param accounts - Required and optional accounts for the instruction * @param accounts.marginfiAccount - The marginfi account depositing funds * @param accounts.bank - The marginfi bank account for the asset * @param accounts.signerTokenAccount - The signer's token account (source of funds) * @param accounts.driftState - The Drift program state account * @param accounts.driftSpotMarketVault - The Drift spot market vault receiving tokens * @param accounts.tokenProgram - The SPL token program * @param accounts.driftOracle - (Optional) Oracle account for the asset * @param args - Instruction arguments * @param args.amount - Amount to deposit in native token decimals */ declare function makeDriftDepositIx(mfProgram: MarginfiProgram, accounts: { marginfiAccount: PublicKey; bank: PublicKey; signerTokenAccount: PublicKey; driftState: PublicKey; driftSpotMarketVault: PublicKey; tokenProgram: PublicKey; driftOracle: PublicKey | null; group?: PublicKey; authority?: PublicKey; liquidityVault?: PublicKey; integrationAcc2?: PublicKey; integrationAcc3?: PublicKey; integrationAcc1?: PublicKey; mint?: PublicKey; driftProgram?: PublicKey; systemProgram?: PublicKey; }, args: { amount: BN; }): Promise<_solana_web3_js.TransactionInstruction>; declare function makeDepositIx(mfProgram: MarginfiProgram, accounts: { marginfiAccount: PublicKey; signerTokenAccount: PublicKey; bank: PublicKey; tokenProgram: PublicKey; group?: PublicKey; authority?: PublicKey; liquidityVault?: PublicKey; }, args: { amount: BN; depositUpToLimit?: boolean; }, remainingAccounts?: AccountMeta[]): Promise<_solana_web3_js.TransactionInstruction>; declare function makeRepayIx(mfProgram: MarginfiProgram, accounts: { marginfiAccount: PublicKey; signerTokenAccount: PublicKey; bank: PublicKey; tokenProgram: PublicKey; group?: PublicKey; authority?: PublicKey; liquidityVault?: PublicKey; }, args: { amount: BN; repayAll?: boolean; }, remainingAccounts?: AccountMeta[]): Promise<_solana_web3_js.TransactionInstruction>; declare function makeDriftWithdrawIx(mfProgram: MarginfiProgram, accounts: { marginfiAccount: PublicKey; bank: PublicKey; destinationTokenAccount: PublicKey; driftState: PublicKey; driftSigner: PublicKey; driftSpotMarketVault: PublicKey; tokenProgram: PublicKey; driftOracle: PublicKey | null; driftRewardOracle: PublicKey | null; driftRewardSpotMarket: PublicKey | null; driftRewardMint: PublicKey | null; driftRewardOracle2: PublicKey | null; driftRewardSpotMarket2: PublicKey | null; driftRewardMint2: PublicKey | null; group?: PublicKey; authority?: PublicKey; }, args: { amount: BN; withdrawAll: boolean; }, remainingAccounts?: AccountMeta[]): Promise<_solana_web3_js.TransactionInstruction>; declare function makeKaminoWithdrawIx(mfProgram: MarginfiProgram, accounts: { marginfiAccount: PublicKey; bank: PublicKey; destinationTokenAccount: PublicKey; lendingMarket: PublicKey; mint: PublicKey; lendingMarketAuthority: PublicKey; reserveLiquiditySupply: PublicKey; reserveCollateralMint: PublicKey; reserveSourceCollateral: PublicKey; liquidityTokenProgram: PublicKey; obligationFarmUserState: PublicKey | null; reserveFarmState: PublicKey | null; group?: PublicKey; authority?: PublicKey; }, args: { amount: BN; isFinalWithdrawal: boolean; /** * 0.1.9-only: refresh the reserve via batch refresh (flags bit 1). Do NOT set while the * 1.8 program is deployed — its `Option` decoder rejects flag bytes above 1. */ refreshReserve?: boolean; }, remainingAccounts?: AccountMeta[]): Promise<_solana_web3_js.TransactionInstruction>; declare function makeWithdrawIx(mfProgram: MarginfiProgram, accounts: { marginfiAccount: PublicKey; bank: PublicKey; destinationTokenAccount: PublicKey; tokenProgram: PublicKey; group?: PublicKey; authority?: PublicKey; }, args: { amount: BN; withdrawAll?: boolean; }, remainingAccounts?: AccountMeta[]): Promise<_solana_web3_js.TransactionInstruction>; declare function makeBorrowIx(mfProgram: MarginfiProgram, accounts: { marginfiAccount: PublicKey; bank: PublicKey; destinationTokenAccount: PublicKey; tokenProgram: PublicKey; group?: PublicKey; authority?: PublicKey; }, args: { amount: BN; }, remainingAccounts?: AccountMeta[]): Promise<_solana_web3_js.TransactionInstruction>; declare function makeLendingAccountLiquidateIx(mfiProgram: MarginfiProgram, accounts: { assetBank: PublicKey; liabBank: PublicKey; liquidatorMarginfiAccount: PublicKey; liquidateeMarginfiAccount: PublicKey; tokenProgram: PublicKey; group?: PublicKey; authority?: PublicKey; }, args: { assetAmount: BN; liquidateeAccounts: number; liquidatorAccounts: number; }, remainingAccounts?: AccountMeta[]): Promise<_solana_web3_js.TransactionInstruction>; declare function makePoolConfigureBankIx(mfiProgram: MarginfiProgram, accounts: { bank: PublicKey; group?: PublicKey; admin?: PublicKey; }, args: { bankConfigOpt: BankConfigOptRaw; }): Promise<_solana_web3_js.TransactionInstruction>; declare function makeBeginFlashLoanIx(mfiProgram: MarginfiProgram, accounts: { marginfiAccount: PublicKey; authority?: PublicKey; ixsSysvar?: PublicKey; }, args: { endIndex: BN; }): Promise<_solana_web3_js.TransactionInstruction>; declare function makeEndFlashLoanIx(mfiProgram: MarginfiProgram, accounts: { marginfiAccount: PublicKey; authority?: PublicKey; group?: PublicKey; }, remainingAccounts?: AccountMeta[]): Promise<_solana_web3_js.TransactionInstruction>; declare function makeAccountTransferToNewAccountIx(mfProgram: MarginfiProgram, accounts: { oldMarginfiAccount: PublicKey; newMarginfiAccount: PublicKey; newAuthority: PublicKey; globalFeeWallet: PublicKey; feePayer: PublicKey; group?: PublicKey; authority?: PublicKey; }): Promise<_solana_web3_js.TransactionInstruction>; declare function makeGroupInitIx(mfProgram: MarginfiProgram, accounts: { marginfiGroup: PublicKey; admin: PublicKey; }): Promise<_solana_web3_js.TransactionInstruction>; /** * Configure the oracle for a bank * @param mfProgram The marginfi program * @param accounts The accounts required for this instruction * @param args The oracle setup index and feed id * @param remainingAccounts The remaining accounts required for this instruction, should include the feed oracle key */ declare function makeLendingPoolConfigureBankOracleIx(mfProgram: MarginfiProgram, accounts: { bank: PublicKey; group?: PublicKey; admin?: PublicKey; }, args: { /** * The oracle setup index, see {@link serializeOracleSetupToIndex} */ setup: number; /** * The oracle feed id */ feedId: PublicKey; }, /** * The remaining accounts required for this instruction, should include the feed oracle key (non writable & signable) */ remainingAccounts?: AccountMeta[]): Promise<_solana_web3_js.TransactionInstruction>; /** * Configure a bank to use an entry in a Scope OraclePrices account. * @param mfProgram The marginfi program * @param accounts The group, admin, and bank accounts required by the instruction * @param args The Scope OraclePrices account and its entry index */ declare function makeLendingPoolConfigureBankOracleScopeIx(mfProgram: MarginfiProgram, accounts: { bank: PublicKey; group?: PublicKey; admin?: PublicKey; }, args: { oracle: PublicKey; entryIndex: number; }): Promise<_solana_web3_js.TransactionInstruction>; /** Configure a fixed or Exponent PT oracle through the 0.1.11 set-oracle-price instruction. */ declare function makeLendingPoolSetOraclePriceIx(mfProgram: MarginfiProgram, accounts: { bank: PublicKey; group?: PublicKey; admin?: PublicKey; }, args: { price: WrappedI80F48; setup: number; }, remainingAccounts?: AccountMeta[]): Promise<_solana_web3_js.TransactionInstruction>; /** * Creates an instruction to add a permissionless staked bank to a lending pool. * @param mfProgram - The marginfi program instance * @param accounts - The accounts required for this instruction * @param remainingAccounts - The remaining accounts required for this instruction, including pythOracle, solPool and bankMint * @param args - Optional arguments for this instruction */ declare function makePoolAddPermissionlessStakedBankIx(mfProgram: MarginfiProgram, accounts: { stakedSettings: PublicKey; feePayer: PublicKey; bankMint: PublicKey; solPool: PublicKey; /** The SVSP on-ramp account, derived from the stake pool (0.1.9+ program only) */ poolOnramp: PublicKey; stakePool: PublicKey; /** The validator vote account backing the stake pool (0.1.9+ program only) */ validatorVoteAccount: PublicKey; marginfiGroup?: PublicKey; /** * The token program to use for this instruction, defaults to the SPL token program */ tokenProgram?: PublicKey; }, /** * The remaining accounts required for this instruction. Should include: * - pythOracle: The pyth oracle key (non writable & non signer) * - solPool: The sol pool key (non writable & non signer) * - bankMint: The bank mint key (non writable & non signer) */ remainingAccounts: AccountMeta[] | undefined, args: { /** * The seed to use for the bank account. Defaults to 0 (new BN(0)). * If the seed is not specified, the seed is set to 0, and the bank account * will be created at the address {@link findPoolAddress} with the default * bump. */ seed?: BN; }): Promise<_solana_web3_js.TransactionInstruction>; declare function makePoolAddBankIx(mfProgram: MarginfiProgram, accounts: { marginfiGroup: PublicKey; feePayer: PublicKey; bankMint: PublicKey; bank: PublicKey; tokenProgram: PublicKey; admin?: PublicKey; globalFeeWallet?: PublicKey; }, args: { bankConfig: BankConfigCompactRaw; }): Promise<_solana_web3_js.TransactionInstruction>; declare function makeCloseAccountIx(mfProgram: MarginfiProgram, accounts: { marginfiAccount: PublicKey; feePayer: PublicKey; authority?: PublicKey; }): Promise<_solana_web3_js.TransactionInstruction>; declare function makePulseHealthIx(mfProgram: MarginfiProgram, accounts: { marginfiAccount: PublicKey; }, /** * The remaining accounts required for this instruction. Should include: * - For each balance the user has, pass bank and oracle: */ remainingAccounts?: AccountMeta[]): Promise<_solana_web3_js.TransactionInstruction>; declare const instructions: { makeDepositIx: typeof makeDepositIx; makeJuplendDepositIx: typeof makeJuplendDepositIx; makeDriftDepositIx: typeof makeDriftDepositIx; makeKaminoDepositIx: typeof makeKaminoDepositIx; makeRepayIx: typeof makeRepayIx; makeWithdrawIx: typeof makeWithdrawIx; makeJuplendWithdrawIx: typeof makeJuplendWithdrawIx; makeDriftWithdrawIx: typeof makeDriftWithdrawIx; makeKaminoWithdrawIx: typeof makeKaminoWithdrawIx; makeBorrowIx: typeof makeBorrowIx; makeInitMarginfiAccountIx: typeof makeInitMarginfiAccountIx; makeInitMarginfiAccountPdaIx: typeof makeInitMarginfiAccountPdaIx; makeLendingAccountLiquidateIx: typeof makeLendingAccountLiquidateIx; makePoolAddBankIx: typeof makePoolAddBankIx; makePoolConfigureBankIx: typeof makePoolConfigureBankIx; makeBeginFlashLoanIx: typeof makeBeginFlashLoanIx; makeEndFlashLoanIx: typeof makeEndFlashLoanIx; makeAccountTransferToNewAccountIx: typeof makeAccountTransferToNewAccountIx; makeGroupInitIx: typeof makeGroupInitIx; makeCloseAccountIx: typeof makeCloseAccountIx; makePoolAddPermissionlessStakedBankIx: typeof makePoolAddPermissionlessStakedBankIx; makeLendingPoolConfigureBankOracleIx: typeof makeLendingPoolConfigureBankOracleIx; makeLendingPoolConfigureBankOracleScopeIx: typeof makeLendingPoolConfigureBankOracleScopeIx; makeLendingPoolSetOraclePriceIx: typeof makeLendingPoolSetOraclePriceIx; makePulseHealthIx: typeof makePulseHealthIx; }; export { instructions as default };