import { AssetAmount, FeeConfig, SwapCtx, TransferCtx } from '@galacticcouncil/xc-core'; export declare class FeeSwap { readonly ctx: TransferCtx; constructor(ctx: TransferCtx); get asset(): AssetAmount; get dex(): import("@galacticcouncil/xc-core").Dex; get destFee(): AssetAmount; /** Chain the destination fee is held & spent on, matching {@link destFee}. */ get destFeeChain(): import("@galacticcouncil/xc-core").AnyChain; get destFeeBalance(): AssetAmount; get feeBalance(): AssetAmount; /** * Fee swap context * * @param fee - source chain fee * @returns source fee swap context */ getSwap(fee: AssetAmount): Promise; /** * Swap source fee only if explicitly enabled in route * fee config * * @param fee - source chain fee config * @returns true if supported, otherwise false */ isSwapSupported(cfg?: FeeConfig): boolean; /** * Destination fee swap context * * Swap is enabled if following applies: * - account has not enough destination fee balance * - account has enough source fee reserves (double the fee) to buy required asset * * Note: Slippage can be set up to 100% in builder config (see maxAmountIn) * * @param fee - source chain fee * @returns destination fee swap context */ getDestinationSwap(fee: AssetAmount): Promise; /** * Existential deposit of the destination fee asset, on the chain holding it. * * Parachains resolve their own min (dynamic read or static assetsData min); * other chains expose only the static value. Mirrors * `DestFeeValidation.getMin` - the two have to agree, or the swap buys an * amount the validation then rejects. */ private getDestFeeMin; /** * Swap destination fee only if: * - transfer asset insufficient * - destination fee asset is different than fee asset * * @param fee - source chain fee * @returns true if supported, otherwise false */ isDestinationSwapSupported(fee: AssetAmount): boolean; }