import { Address, Instruction, Slot, Option, TransactionSigner } from '@solana/kit';
import { KaminoMarket, KaminoObligation, KaminoReserve } from '../classes';
import { ObligationType, ScopePriceRefreshConfig, KlendAccountsResult } from '../utils';
import { AdjustLeverageInitialInputs, AdjustLeverageIxsResponse, AdjustLeverageProps, AdjustLeverageSwapInputsProps, DepositLeverageInitialInputs, DepositWithLeverageProps, DepositWithLeverageSwapInputsProps, DepositLeverageIxsResponse, SwapInputs, SwapIxs, WithdrawLeverageCalcsResult, WithdrawLeverageInitialInputs, WithdrawLeverageIxsResponse, WithdrawWithLeverageProps, WithdrawWithLeverageSwapInputsProps, LeverageIxsOutput, FlashLoanInfo } from './types';
export declare const WITHDRAW_SLOT_OFFSET = 150;
/**
 * Inputs for {@link getDepositLeverageKlendAccounts}: the {@link getDepositWithLeverageSwapInputs} props minus the
 * quoter (and logger), since the klend account footprint is discovered without an external swap.
 */
export type DepositLeverageKlendAccountsInputs = Omit<DepositWithLeverageSwapInputsProps<unknown>, 'quoter' | 'logger'>;
/**
 * Light helper: returns the exact, final set of klend accounts (and program ids) a deposit-with-leverage operation
 * with the same inputs would consume, plus their count, WITHOUT running the external swap. This is the same set the
 * operation passes to the quoter (invariant to the swap amounts), so the count is accurate and final — the FE can
 * use it to know how many accounts remain for the external swap within the transaction's account limit.
 */
export declare function getDepositLeverageKlendAccounts(inputs: DepositLeverageKlendAccountsInputs): Promise<KlendAccountsResult>;
/**
 * Inputs for {@link getWithdrawLeverageKlendAccounts}: the {@link getWithdrawWithLeverageSwapInputs} props minus the
 * quoter (and logger).
 */
export type WithdrawLeverageKlendAccountsInputs = Omit<WithdrawWithLeverageSwapInputsProps<unknown>, 'quoter' | 'logger'>;
/** Light helper: the accurate, final klend account footprint of a withdraw-with-leverage operation. See {@link getDepositLeverageKlendAccounts}. */
export declare function getWithdrawLeverageKlendAccounts(inputs: WithdrawLeverageKlendAccountsInputs): Promise<KlendAccountsResult>;
/**
 * Inputs for {@link getAdjustLeverageKlendAccounts}: the {@link getAdjustLeverageSwapInputs} props minus the quoter
 * (and logger).
 */
export type AdjustLeverageKlendAccountsInputs = Omit<AdjustLeverageSwapInputsProps<unknown>, 'quoter' | 'logger'>;
/** Light helper: the accurate, final klend account footprint of an adjust-leverage operation. See {@link getDepositLeverageKlendAccounts}. */
export declare function getAdjustLeverageKlendAccounts(inputs: AdjustLeverageKlendAccountsInputs): Promise<KlendAccountsResult>;
export declare function getDepositWithLeverageSwapInputs<QuoteResponse>({ owner, kaminoMarket, debtReserveAddress, collReserveAddress, depositAmount, priceDebtToColl, slippagePct, obligation, referrer, currentSlot, targetLeverage, selectedTokenMint, obligationTypeTagOverride, scopeRefreshIx, budgetAndPriorityFeeIxs, quoteBufferBps, quoter, useV2Ixs, elevationGroupOverride, flashBorrowType, logger, }: DepositWithLeverageSwapInputsProps<QuoteResponse>): Promise<{
    flashLoanInfo: FlashLoanInfo;
    swapInputs: SwapInputs;
    initialInputs: DepositLeverageInitialInputs<QuoteResponse>;
}>;
export declare function getDepositWithLeverageIxs<QuoteResponse>({ owner, kaminoMarket, debtReserveAddress, collReserveAddress, depositAmount, priceDebtToColl, slippagePct, obligation, referrer, currentSlot, targetLeverage, selectedTokenMint, obligationTypeTagOverride, scopeRefreshIx, budgetAndPriorityFeeIxs, quoteBufferBps, quoter, swapper, elevationGroupOverride, useV2Ixs, rollOver, flashBorrowType, logger, }: DepositWithLeverageProps<QuoteResponse>): Promise<Array<DepositLeverageIxsResponse<QuoteResponse>>>;
export declare function getWithdrawWithLeverageSwapInputs<QuoteResponse>({ owner, kaminoMarket, debtReserveAddress, collReserveAddress, deposited, borrowed, obligation, referrer, currentSlot, withdrawAmount, priceCollToDebt, slippagePct, isClosingPosition, selectedTokenMint, budgetAndPriorityFeeIxs, scopeRefreshIx, quoteBufferBps, quoter, useV2Ixs, userSolBalanceLamports, flashBorrowType, logger, }: WithdrawWithLeverageSwapInputsProps<QuoteResponse>): Promise<{
    swapInputs: SwapInputs;
    flashLoanInfo: FlashLoanInfo;
    initialInputs: WithdrawLeverageInitialInputs<QuoteResponse>;
}>;
export declare function getWithdrawWithLeverageIxs<QuoteResponse>({ owner, kaminoMarket, debtReserveAddress, collReserveAddress, obligation, deposited, borrowed, referrer, currentSlot, withdrawAmount, priceCollToDebt, slippagePct, isClosingPosition, selectedTokenMint, budgetAndPriorityFeeIxs, scopeRefreshIx, quoteBufferBps, quoter, swapper, useV2Ixs, userSolBalanceLamports, flashBorrowType, }: WithdrawWithLeverageProps<QuoteResponse>): Promise<Array<WithdrawLeverageIxsResponse<QuoteResponse>>>;
export declare function buildWithdrawWithLeverageIxsDebtFlash<QuoteResponse>(market: KaminoMarket, debtReserve: KaminoReserve, collReserve: KaminoReserve, owner: TransactionSigner, obligation: KaminoObligation, referrer: Option<Address>, currentSlot: Slot, isClosingPosition: boolean, depositTokenIsSol: boolean, scopeRefreshIx: Instruction[], calcs: WithdrawLeverageCalcsResult, budgetAndPriorityFeeIxs: Instruction[] | undefined, swapQuoteIxsArray: SwapIxs<QuoteResponse>[], useV2Ixs: boolean, userSolBalanceLamports: number): Promise<LeverageIxsOutput[]>;
export declare function getAdjustLeverageSwapInputs<QuoteResponse>({ owner, kaminoMarket, debtReserveAddress, collReserveAddress, obligation, depositedLamports, borrowedLamports, referrer, currentSlot, targetLeverage, priceCollToDebt, priceDebtToColl, slippagePct, budgetAndPriorityFeeIxs, scopeRefreshIx, quoteBufferBps, quoter, useV2Ixs, withdrawSlotOffset, userSolBalanceLamports, flashBorrowType, }: AdjustLeverageSwapInputsProps<QuoteResponse>): Promise<{
    swapInputs: SwapInputs;
    flashLoanInfo: FlashLoanInfo;
    initialInputs: AdjustLeverageInitialInputs<QuoteResponse>;
}>;
export declare function getAdjustLeverageIxs<QuoteResponse>({ owner, kaminoMarket, debtReserveAddress, collReserveAddress, obligation, depositedLamports, borrowedLamports, referrer, currentSlot, targetLeverage, priceCollToDebt, priceDebtToColl, slippagePct, budgetAndPriorityFeeIxs, scopeRefreshIx, quoteBufferBps, quoter, swapper, useV2Ixs, withdrawSlotOffset, userSolBalanceLamports, flashBorrowType, logger, }: AdjustLeverageProps<QuoteResponse>): Promise<Array<AdjustLeverageIxsResponse<QuoteResponse>>>;
export declare const getSetupIxs: (owner: TransactionSigner, collTokenMint: Address, collReserve: KaminoReserve, debtTokenMint: Address, debtReserve: KaminoReserve, budgetAndPriorityFeeIxs: Instruction[] | undefined) => Promise<{
    budgetIxs: Instruction<string, readonly (import("@solana/kit").AccountMeta<string> | import("@solana/kit").AccountLookupMeta<string, string>)[]>[];
    createAtasIxs: Instruction<string, readonly (import("@solana/kit").AccountMeta<string> | import("@solana/kit").AccountLookupMeta<string, string>)[]>[];
}>;
export declare const getScopeRefreshIxForObligationAndReserves: (market: KaminoMarket, collReserve: KaminoReserve, debtReserve: KaminoReserve, obligation: KaminoObligation | ObligationType | undefined, scopeRefreshConfig: ScopePriceRefreshConfig | undefined) => Promise<Instruction[]>;
//# sourceMappingURL=operations.d.ts.map