import { LNURLPay, LNURLWithdraw } from "../../utils/LNURL"; import { IntermediaryDiscovery, SwapBounds } from "../../intermediaries/IntermediaryDiscovery"; import { SwapType } from "../enums/SwapType"; import { LnForGasSwap } from "../trusted/ln/LnForGasSwap"; import { ISwap } from "../ISwap"; import { IToBTCSwap } from "../escrow_swaps/tobtc/IToBTCSwap"; import { ChainIds, MultiChain, SupportsSwapType, Swapper } from "./Swapper"; import { FromBTCLNSwap } from "../escrow_swaps/frombtc/ln/FromBTCLNSwap"; import { FromBTCSwap } from "../escrow_swaps/frombtc/onchain/FromBTCSwap"; import { ToBTCLNSwap } from "../escrow_swaps/tobtc/ln/ToBTCLNSwap"; import { ToBTCSwap } from "../escrow_swaps/tobtc/onchain/ToBTCSwap"; import { SwapPriceWithChain } from "../../prices/SwapPriceWithChain"; import { MempoolApi } from "../../btc/mempool/MempoolApi"; import { MempoolBitcoinRpc } from "../../btc/mempool/MempoolBitcoinRpc"; import { BtcToken, SCToken, Token, TokenAmount } from "../../Tokens"; import { BTC_NETWORK } from "@scure/btc-signer/utils"; import { ToBTCOptions } from "../escrow_swaps/tobtc/onchain/ToBTCWrapper"; import { InvoiceCreateService, ToBTCLNOptions } from "../escrow_swaps/tobtc/ln/ToBTCLNWrapper"; import { FromBTCOptions } from "../escrow_swaps/frombtc/onchain/FromBTCWrapper"; import { FromBTCLNOptions } from "../escrow_swaps/frombtc/ln/FromBTCLNWrapper"; import { SwapperUtils } from "./utils/SwapperUtils"; import { SpvFromBTCOptions } from "../spv_swaps/SpvFromBTCWrapper"; import { SpvFromBTCSwap } from "../spv_swaps/SpvFromBTCSwap"; import { OnchainForGasSwap } from "../trusted/onchain/OnchainForGasSwap"; import { SwapperWithSigner } from "./SwapperWithSigner"; import { FromBTCLNAutoOptions } from "../escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper"; import { FromBTCLNAutoSwap } from "../escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap"; import { SwapAmountType } from "../enums/SwapAmountType"; import { IClaimableSwap } from "../IClaimableSwap"; export declare class SwapperWithChain> { readonly chainIdentifier: ChainIdentifier; readonly swapper: Swapper; readonly prices: SwapPriceWithChain; get intermediaryDiscovery(): IntermediaryDiscovery; get mempoolApi(): MempoolApi; get bitcoinRpc(): MempoolBitcoinRpc; get bitcoinNetwork(): BTC_NETWORK; get Utils(): SwapperUtils; get SwapTypeInfo(): { readonly 2: { readonly requiresInputWallet: true; readonly requiresOutputWallet: false; readonly supportsGasDrop: false; }; readonly 3: { readonly requiresInputWallet: true; readonly requiresOutputWallet: false; readonly supportsGasDrop: false; }; readonly 0: { readonly requiresInputWallet: false; readonly requiresOutputWallet: true; readonly supportsGasDrop: false; }; readonly 1: { readonly requiresInputWallet: false; readonly requiresOutputWallet: true; readonly supportsGasDrop: false; }; readonly 6: { readonly requiresInputWallet: true; readonly requiresOutputWallet: false; readonly supportsGasDrop: true; }; readonly 7: { readonly requiresInputWallet: false; readonly requiresOutputWallet: false; readonly supportsGasDrop: true; }; readonly 4: { readonly requiresInputWallet: false; readonly requiresOutputWallet: false; readonly supportsGasDrop: false; }; readonly 5: { readonly requiresInputWallet: false; readonly requiresOutputWallet: false; readonly supportsGasDrop: false; }; }; constructor(swapper: Swapper, chainIdentifier: ChainIdentifier); createToBTCSwap(signer: string, tokenAddress: string, address: string, amount: bigint, exactIn?: boolean, additionalParams?: Record, options?: ToBTCOptions): Promise>; createToBTCLNSwap(signer: string, tokenAddress: string, paymentRequest: string, additionalParams?: Record, options?: ToBTCLNOptions & { comment?: string; }): Promise>; createToBTCLNSwapViaLNURL(signer: string, tokenAddress: string, lnurlPay: string | LNURLPay, amount: bigint, exactIn?: boolean, additionalParams?: Record, options?: ToBTCLNOptions): Promise>; createToBTCLNSwapViaInvoiceCreateService(signer: string, tokenAddress: string, service: InvoiceCreateService, amount: bigint, exactIn?: boolean, additionalParams?: Record, options?: ToBTCLNOptions): Promise>; createFromBTCSwap(signer: string, tokenAddress: string, amount: bigint, exactOut?: boolean, additionalParams?: Record, options?: FromBTCOptions): Promise>; createFromBTCLNSwap(signer: string, tokenAddress: string, amount: bigint, exactOut?: boolean, additionalParams?: Record, options?: FromBTCLNOptions): Promise>; createFromBTCLNSwapViaLNURL(signer: string, tokenAddress: string, lnurl: string | LNURLWithdraw, amount: bigint, exactOut?: boolean, additionalParams?: Record): Promise>; createFromBTCLNSwapNew(signer: string, tokenAddress: string, amount: bigint, exactOut?: boolean, additionalParams?: Record, options?: FromBTCLNAutoOptions): Promise>; createFromBTCLNSwapNewViaLNURL(signer: string, tokenAddress: string, lnurl: string | LNURLWithdraw, amount: bigint, exactOut?: boolean, additionalParams?: Record, options?: FromBTCLNAutoOptions): Promise>; createTrustedLNForGasSwap(signer: string, amount: bigint, trustedIntermediaryUrl?: string): Promise>; createTrustedOnchainForGasSwap(signer: string, amount: bigint, refundAddress?: string, trustedIntermediaryUrl?: string): Promise>; create(signer: string, srcToken: BtcToken, dstToken: SCToken, amount: bigint, exactIn: boolean, lnurlWithdraw?: string | LNURLWithdraw): Promise extends true ? FromBTCLNAutoSwap : FromBTCLNSwap>; create(signer: string, srcToken: BtcToken, dstToken: SCToken, amount: bigint, exactIn: boolean): Promise<(SupportsSwapType extends true ? SpvFromBTCSwap : FromBTCSwap)>; create(signer: string, srcToken: SCToken, dstToken: BtcToken, amount: bigint, exactIn: boolean, address: string): Promise>; create(signer: string, srcToken: SCToken, dstToken: BtcToken, amount: bigint, exactIn: boolean, lnurlPay: string | LNURLPay): Promise>; create(signer: string, srcToken: SCToken, dstToken: BtcToken, amount: bigint, exactIn: false, lightningInvoice: string | LNURLWithdraw | LNURLPay): Promise>; swap(srcToken: BtcToken, dstToken: SCToken, amount: bigint | string, exactIn: boolean | SwapAmountType, src: undefined | string | LNURLWithdraw, dstSmartchainWallet: string, options?: (SupportsSwapType extends true ? FromBTCLNAutoOptions : FromBTCLNOptions)): Promise extends true ? FromBTCLNAutoSwap : FromBTCLNSwap>; swap(srcToken: BtcToken, dstToken: SCToken, amount: bigint | string, exactIn: boolean | SwapAmountType, src: undefined | string, dstSmartchainWallet: string, options?: (SupportsSwapType extends true ? SpvFromBTCOptions : FromBTCOptions)): Promise<(SupportsSwapType extends true ? SpvFromBTCSwap : FromBTCSwap)>; swap(srcToken: SCToken, dstToken: BtcToken, amount: bigint | string, exactIn: boolean | SwapAmountType, src: string, dstAddress: string, options?: ToBTCOptions): Promise>; swap(srcToken: SCToken, dstToken: BtcToken, amount: bigint | string, exactIn: boolean | SwapAmountType, src: string, dstLnurlPayOrInvoiceCreateService: string | LNURLPay | InvoiceCreateService, options?: ToBTCLNOptions & { comment?: string; }): Promise>; swap(srcToken: SCToken, dstToken: BtcToken, amount: bigint | string, exactIn: false | SwapAmountType.EXACT_OUT, src: string, dstLightningInvoice: string, options?: ToBTCLNOptions): Promise>; swap(srcToken: Token | string, dstToken: Token | string, amount: bigint | string, exactIn: boolean | SwapAmountType, src: undefined | string | LNURLWithdraw, dst: string | LNURLPay | InvoiceCreateService, options?: FromBTCLNOptions | SpvFromBTCOptions | FromBTCOptions | ToBTCOptions | (ToBTCLNOptions & { comment?: string; }) | FromBTCLNAutoOptions): Promise>; /** * Returns swaps that are in-progress and are claimable for the specific chain, optionally also for a specific signer's address */ getAllSwaps(signer?: string): Promise[]>; /** * Returns swaps that are in-progress and are claimable for the specific chain, optionally also for a specific signer's address */ getActionableSwaps(signer?: string): Promise[]>; /** * Returns swaps that are refundable for the specific chain, optionally also for a specific signer's address */ getRefundableSwaps(signer?: string): Promise[]>; /** * Returns swaps that are due to be claimed/settled manually for the specific chain, * optionally also for a specific signer's address */ getClaimableSwaps(signer?: string): Promise[]>; /** * Returns swap with a specific id (identifier) on a specific chain and optionally with a signer */ getSwapById(id: string, signer?: string): Promise>; getToken(tickerOrAddress: string): Token; /** * Synchronizes swaps from chain, this is usually ran when SDK is initialized, deletes expired quotes */ _syncSwaps(signer?: string): Promise; supportsSwapType(swapType: Type): SupportsSwapType; /** * Returns type of the swap based on input and output tokens specified * * @param srcToken * @param dstToken */ getSwapType(srcToken: BtcToken, dstToken: SCToken): (SupportsSwapType extends true ? SwapType.FROM_BTCLN_AUTO : SwapType.FROM_BTCLN); getSwapType(srcToken: BtcToken, dstToken: SCToken): (SupportsSwapType extends true ? SwapType.SPV_VAULT_FROM_BTC : SwapType.FROM_BTC); getSwapType(srcToken: SCToken, dstToken: BtcToken): SwapType.TO_BTC; getSwapType(srcToken: SCToken, dstToken: BtcToken): SwapType.TO_BTCLN; getSwapType(srcToken: Token, dstToken: Token): SwapType.FROM_BTCLN_AUTO | SwapType.FROM_BTCLN | SwapType.SPV_VAULT_FROM_BTC | SwapType.FROM_BTC | SwapType.TO_BTC | SwapType.TO_BTCLN; /** * Returns minimum/maximum limits for inputs and outputs for a swap between given tokens * * @param srcToken * @param dstToken */ getSwapLimits, B extends Token>(srcToken: A, dstToken: B): { input: { min: TokenAmount; max: TokenAmount; }; output: { min: TokenAmount; max: TokenAmount; }; }; /** * Returns a set of supported tokens by all the intermediaries offering a specific swap service * * @param _swapType Swap service type to check supported tokens for */ private getSupportedTokens; /** * Returns the set of supported tokens by all the intermediaries we know of offering a specific swapType service * * @param swapType Specific swap type for which to obtain supported tokens */ private getSupportedTokenAddresses; /** * Returns tokens that you can swap to (if input=true) from a given token, * or tokens that you can swap from (if input=false) to a given token */ getSwapCounterTokens(token: Token, input: boolean): Token[]; /** * Creates a child swapper instance with a signer * * @param signer Signer to use for the new swapper instance */ withChain(signer: T[ChainIdentifier]["Signer"]): SwapperWithSigner; /** * Returns swap bounds (minimums & maximums) for different swap types & tokens * @deprecated Use getSwapLimits() instead! */ getSwapBounds(): SwapBounds; /** * Returns maximum possible swap amount * @deprecated Use getSwapLimits() instead! * * @param type Type of the swap * @param token Token of the swap */ getMaximum(type: SwapType, token: string): bigint; /** * Returns minimum possible swap amount * @deprecated Use getSwapLimits() instead! * * @param type Type of swap * @param token Token of the swap */ getMinimum(type: SwapType, token: string): bigint; }