///
import { TransactionSignature } from "@solana/web3.js";
import { TransferType } from "../../types";
import { AssetType, SdxClient } from "../SdxClient";
import { BN } from "@project-serum/anchor";
/**
* Inititates a deposit to the OptionVault. Underlying, stable and LP token associated token
* accounts will be created if they do not exist.
*
* @param {AssetType} asset - The type associated with the OptionVault.
* @param {BN} underlyingAmount - The amount of the underlying asset to deposit.
* @param {BN} stableAmount - The amount of the stable asset to deposit.
*
* @returns {Promise} A promise that resolves to the transaction signature of the deposit operation.
* @todo Add a rent checker for account creation cost.
*/
export declare function depositToVaultImpl(this: SdxClient, asset: AssetType, underlyingAmount: BN, stableAmount: BN): Promise;
/**
* Initiates a withdrawal from the OptionVault. Underlying, stable, and LP token associated token
* accounts will be created if they do not exist.
*
* @param {AssetType} asset - The type associated with the OptionVault.
* @param {BN} lpAmount - The amount of LP tokens to withdraw.
*
* @returns {Promise} A promise that resolves to the transaction signature of the withdrawal operation.
* @todo Add a rent checker for account creation cost.
*/
export declare function withdrawFromVaultImpl(this: SdxClient, asset: AssetType, lpAmount: BN): Promise;
/**
* Cancels a pending vault transfer for a given asset and transfer type.
* This function will fail if there is no pending transfer for the specified type.
*
* @param {AssetType} asset - The type of the asset associated with the vault transfer.
* @param {TransferType} transferType - The type of transfer to cancel.
*
* @returns {Promise} A promise that resolves to the transaction signature of the cancellation operation.
*
* @throws {Error} Throws an error if no pending transfer of the specified type exists.
* @todo Add a rent checker for account creation cost.
*/
export declare function cancelVaultTransferImpl(this: SdxClient, asset: AssetType, transferType: TransferType): Promise;
/**
* Processes the next transfer record in the queue for a given asset and transfer type. If the associated
* token accounts for the underlying and stable assets do not exist, they will be created. The function
* throws an error if there are no transfer records in the queue.
*
* @param {AssetType} asset - The type associated with the OptionVault.
* @param {TransferType} transferType - The type of transfer to process (Deposit or Withdraw).
* @param {BN} minUnderlyingToReceive - Minimum amount of underlying asset to receive by keeper.
* @param {BN} maxUnderlyingToSend - Maximum amount of underlying asset to send from keeper.
* @param {BN} minStableToReceive - Minimum amount of stable asset to receive by keeper.
* @param {BN} maxStableToSend - Maximum amount of stable asset to send from keeper.
*
* @returns {Promise} A promise that resolves to the transaction signature of the processed transfer.
*
* @throws {Error} Throws an error if there are no transfer records in the queue.
* @todo Add a rent checker for account creation cost.
*/
export declare function processNextTransferRecordImpl(this: SdxClient, asset: AssetType, transferType: TransferType, minUnderlyingToReceive?: BN, maxUnderlyingToSend?: BN, minStableToReceive?: BN, maxStableToSend?: BN): Promise;
/**
* Swaps stable for underlying with vault, or vice-versa, subject to
* @param {AssetType} asset - The type associated with the OptionVault.
* @param {BN} underlyingToSend - The amount of the underlying asset to send.
* @param {BN} stableToSend - The amount of the stable asset to send.
* @param {BN} minUnderlyingToReceive - The minimum amount of the underlying asset to receive.
* @param {BN} minStableToReceive - The minimum amount of the stable asset to receive.
* @param {number} priorityFeesMicroLamports - Overrides default priority fees in micro lamports
*
* @returns {Promise} A promise that resolves to the transaction signature of the swap operation.
*/
export declare function swapImpl(this: SdxClient, asset: AssetType, underlyingToSend: BN, stableToSend: BN, minUnderlyingToReceive: BN, minStableToReceive: BN, priorityFeesMicroLamports?: number): Promise;
//# sourceMappingURL=vaultOperations.d.ts.map