import { SwapHandlerSwap } from "./SwapHandlerSwap"; import { SwapData } from "crosslightning-base"; import { RequestData, SwapBaseConfig, SwapHandler } from "./SwapHandler"; import * as BN from "bn.js"; import { IParamReader } from "../utils/paramcoders/IParamReader"; import { FromBtcLnRequestType } from "./frombtcln_abstract/FromBtcLnAbs"; import { FromBtcRequestType } from "./frombtc_abstract/FromBtcAbs"; import { Request } from "express"; import { FromBtcLnTrustedRequestType } from "./frombtcln_trusted/FromBtcLnTrusted"; export type FromBtcBaseConfig = SwapBaseConfig & { securityDepositAPY: number; }; export declare abstract class FromBtcBaseSwapHandler, S> extends SwapHandler { abstract config: FromBtcBaseConfig; /** * Starts a pre-fetch for swap price & security deposit price * * @param chainIdentifier * @param useToken * @param abortController */ protected getFromBtcPricePrefetches(chainIdentifier: string, useToken: string, abortController: AbortController): { pricePrefetchPromise: Promise; securityDepositPricePrefetchPromise: Promise; }; /** * Starts a pre-fetch for base security deposit (transaction fee for refunding transaction on our side) * * @param chainIdentifier * @param dummySwapData * @param abortController */ protected getBaseSecurityDepositPrefetch(chainIdentifier: string, dummySwapData: SwapData, abortController: AbortController): Promise; /** * Starts a pre-fetch for vault balance * * @param chainIdentifier * @param useToken * @param abortController */ protected getBalancePrefetch(chainIdentifier: string, useToken: string, abortController: AbortController): Promise; /** * Checks if we have enough balance of the token in the swap vault * * @param totalInToken * @param balancePrefetch * @param signal * @throws {DefinedRuntimeError} will throw an error if there are not enough funds in the vault */ protected checkBalance(totalInToken: BN, balancePrefetch: Promise, signal: AbortSignal | null): Promise; /** * Checks minimums/maximums, calculates the fee & total amount * * @param request * @param requestedAmount * @param useToken * @throws {DefinedRuntimeError} will throw an error if the amount is outside minimum/maximum bounds */ protected preCheckAmounts(request: RequestData, requestedAmount: { input: boolean; amount: BN; }, useToken: string): Promise<{ baseFee: BN; feePPM: BN; }>; /** * Checks minimums/maximums, calculates the fee & total amount * * @param request * @param requestedAmount * @param fees * @param useToken * @param signal * @param pricePrefetchPromise * @throws {DefinedRuntimeError} will throw an error if the amount is outside minimum/maximum bounds */ protected checkFromBtcAmount(request: RequestData, requestedAmount: { input: boolean; amount: BN; }, fees: { baseFee: BN; feePPM: BN; }, useToken: string, signal: AbortSignal, pricePrefetchPromise?: Promise): Promise<{ amountBD: BN; swapFee: BN; swapFeeInToken: BN; totalInToken: BN; }>; /** * Calculates the required security deposit * * @param chainIdentifier * @param amountBD * @param swapFee * @param expiryTimeout * @param baseSecurityDepositPromise * @param securityDepositPricePrefetchPromise * @param signal * @param metadata */ protected getSecurityDeposit(chainIdentifier: string, amountBD: BN, swapFee: BN, expiryTimeout: BN, baseSecurityDepositPromise: Promise, securityDepositPricePrefetchPromise: Promise, signal: AbortSignal, metadata: any): Promise; /** * Signs the created swap * * @param chainIdentifier * @param swapObject * @param req * @param abortSignal * @param signDataPrefetchPromise */ protected getFromBtcSignatureData(chainIdentifier: string, swapObject: SwapData, req: Request & { paramReader: IParamReader; }, abortSignal: AbortSignal, signDataPrefetchPromise?: Promise): Promise<{ prefix: string; timeout: string; signature: string; }>; }