import { AddSignaturesToRefundTxRequest, AddSignaturesToRefundTxResponse, AddSignatureToFundTransactionRequest, AddSignatureToFundTransactionResponse, BatchAcceptDlcOfferResponse, BatchSignDlcAcceptResponse, CreateCetAdaptorSignatureRequest, CreateCetAdaptorSignatureResponse, CreateCetAdaptorSignaturesRequest, CreateCetAdaptorSignaturesResponse, CreateCetRequest, CreateCetResponse, CreateDlcTransactionsRequest, CreateDlcTransactionsResponse, CreateDlcTxsResponse, CreateFundTransactionRequest, CreateFundTransactionResponse, CreateRefundTransactionRequest, CreateRefundTransactionResponse, CreateSplicedDlcTransactionsRequest, CreateSplicedDlcTransactionsResponse, DlcInputInfoRequest, DlcProvider, GetRawDlcFundingInputSignatureRequest, GetRawDlcFundingInputSignatureResponse, GetRawFundTxSignatureRequest, GetRawFundTxSignatureResponse, GetRawRefundTxSignatureRequest, GetRawRefundTxSignatureResponse, Input, InputSupplementationMode, SignCetRequest, SignCetResponse, SignDlcFundingInputRequest, SignDlcFundingInputResponse, SignFundTransactionRequest, SignFundTransactionResponse, VerifyCetAdaptorSignatureRequest, VerifyCetAdaptorSignatureResponse, VerifyCetAdaptorSignaturesRequest, VerifyCetAdaptorSignaturesResponse, VerifyDlcFundingInputSignatureRequest, VerifyDlcFundingInputSignatureResponse, VerifyFundTxSignatureRequest, VerifyFundTxSignatureResponse, VerifyRefundTxSignatureRequest, VerifyRefundTxSignatureResponse } from '@atomicfinance/types';
import { Tx } from '@node-dlc/bitcoin';
import { ContractInfo, DlcAccept, DlcClose, DlcCloseMetadata, DlcOffer, DlcSign, DlcTransactions, FundingInput, OracleAttestation } from '@node-dlc/messaging';
export default class Dlc implements DlcProvider {
    client: any;
    constructor(client: any);
    /**
     * Check whether wallet is offerer of DlcOffer or DlcAccept
     * @param dlcOffer Dlc Offer Message
     * @param dlcAccept Dlc Accept Message
     * @returns {Promise<boolean>}
     */
    isOfferer(dlcOffer: DlcOffer, dlcAccept: DlcAccept): Promise<boolean>;
    /**
     * Create DlcTxs object from DlcOffer and DlcAccept
     * @param dlcOffer Dlc Offer Message
     * @param dlcAccept Dlc Accept Message
     * @returns {Promise<CreateDlcTxsResponse>}
     */
    createDlcTxs(dlcOffer: DlcOffer, dlcAccept: DlcAccept): Promise<CreateDlcTxsResponse>;
    /**
     * Create DLC Offer Message
     * @param contractInfo ContractInfo TLV (V0 or V1)
     * @param offerCollateralSatoshis Amount DLC Initiator is putting into the contract
     * @param feeRatePerVb Fee rate in satoshi per virtual byte that both sides use to compute fees in funding tx
     * @param cetLocktime The nLockTime to be put on CETs
     * @param refundLocktime The nLockTime to be put on the refund transaction
     * @returns {Promise<DlcOffer>}
     */
    createDlcOffer(contractInfo: ContractInfo, offerCollateralSatoshis: bigint, feeRatePerVb: bigint, cetLocktime: number, refundLocktime: number, fixedInputs?: IInput[], inputSupplementationMode?: InputSupplementationMode): Promise<DlcOffer>;
    batchCreateDlcOffer(contractInfos: ContractInfo[], offerCollaterals: bigint[], feeRatePerVb: bigint, cetLocktime: number, refundLocktimes: number[], fixedInputs?: IInput[]): Promise<DlcOffer[]>;
    /**
     * Accept DLC Offer
     * @param dlcOffer Dlc Offer Message
     * @param fixedInputs Optional inputs to use for Funding Inputs
     * @returns {Promise<AcceptDlcOfferResponse}
     */
    acceptDlcOffer(dlcOffer: DlcOffer, fixedInputs?: IInput[]): Promise<AcceptDlcOfferResponse>;
    /**
     * Accept DLC Offer
     * @param dlcOffers Dlc Offer Messages
     * @param fixedInputs Optional inputs to use for Funding Inputs
     * @returns {Promise<BatchAcceptDlcOfferResponse}
     */
    batchAcceptDlcOffer(dlcOffers: DlcOffer[], fixedInputs?: IInput[]): Promise<BatchAcceptDlcOfferResponse>;
    /**
     * Sign Dlc Accept Message
     * @param dlcOffer Dlc Offer Message
     * @param dlcAccept Dlc Accept Message
     * @returns {Promise<SignDlcAcceptResponse}
     */
    signDlcAccept(dlcOffer: DlcOffer, dlcAccept: DlcAccept): Promise<SignDlcAcceptResponse>;
    /**
     * Batch Sign Dlc Accept Messages
     * @param dlcOffers Dlc Offer Messages
     * @param dlcAccepts Dlc Accept Messages
     * @returns {Promise<BatchSignDlcAcceptResponse}
     */
    batchSignDlcAccept(dlcOffers: DlcOffer[], dlcAccepts: DlcAccept[]): Promise<BatchSignDlcAcceptResponse>;
    /**
     * Finalize Dlc Sign
     * @param dlcOffer Dlc Offer Message
     * @param dlcAccept Dlc Accept Message
     * @param dlcSign Dlc Sign Message
     * @param dlcTxs Dlc Transactions Message
     * @returns {Promise<Tx>}
     */
    finalizeDlcSign(dlcOffer: DlcOffer, dlcAccept: DlcAccept, dlcSign: DlcSign, dlcTxs: DlcTransactions): Promise<Tx>;
    batchFinalizeDlcSign(dlcOffers: DlcOffer[], dlcAccepts: DlcAccept[], dlcSigns: DlcSign[], dlcTxsList: DlcTransactions[]): Promise<Tx>;
    /**
     * Execute DLC
     * @param dlcOffer Dlc Offer Message
     * @param dlcAccept Dlc Accept Message
     * @param dlcSign Dlc Sign Message
     * @param dlcTxs Dlc Transactions Message
     * @param oracleAttestation Oracle Attestations TLV (V0)
     * @param isOfferer Whether party is Dlc Offerer
     * @returns {Promise<Tx>}
     */
    execute(dlcOffer: DlcOffer, dlcAccept: DlcAccept, dlcSign: DlcSign, dlcTxs: DlcTransactions, oracleAttestation: OracleAttestation, isOfferer?: boolean): Promise<Tx>;
    /**
     * Refund DLC
     * @param dlcOffer Dlc Offer Message
     * @param dlcAccept Dlc Accept Message
     * @param dlcSign Dlc Sign Message
     * @param dlcTxs Dlc Transactions message
     * @returns {Promise<Tx>}
     */
    refund(dlcOffer: DlcOffer, dlcAccept: DlcAccept, dlcSign: DlcSign, dlcTxs: DlcTransactions): Promise<Tx>;
    /**
     * Generate DlcClose messagetype for closing DLC with Mutual Consent
     * @param dlcOffer DlcOffer TLV (V0)
     * @param dlcAccept DlcAccept TLV (V0)
     * @param dlcTxs DlcTransactions TLV (V0)
     * @param initiatorPayoutSatoshis Amount initiator expects as a payout
     * @param isOfferer Whether offerer or not
     * @param inputs Optionally specified closing inputs
     * @returns {Promise<DlcClose>}
     */
    createDlcClose(dlcOffer: DlcOffer, dlcAccept: DlcAccept, dlcTxs: DlcTransactions, initiatorPayoutSatoshis: bigint, isOfferer?: boolean, inputs?: Input[]): Promise<DlcClose>;
    /**
     * Generate multiple DlcClose messagetypes for closing DLC with Mutual Consent
     * @param dlcOffer DlcOffer TLV (V0)
     * @param dlcAccept DlcAccept TLV (V0)
     * @param dlcTxs DlcTransactions TLV (V0)
     * @param initiatorPayouts Array of amounts initiator expects as payouts
     * @param isOfferer Whether offerer or not
     * @param inputs Optionally specified closing inputs
     * @returns {Promise<DlcClose[]>}
     */
    createBatchDlcClose(dlcOffer: DlcOffer, dlcAccept: DlcAccept, dlcTxs: DlcTransactions, initiatorPayouts: bigint[], isOfferer?: boolean, inputs?: Input[]): Promise<DlcClose[]>;
    verifyBatchDlcCloseUsingMetadata(dlcCloseMetadata: DlcCloseMetadata, _dlcCloses: DlcClose[], isOfferer?: boolean): Promise<void>;
    /**
     * Verify multiple DlcClose messagetypes for closing DLC with Mutual Consent
     * @param dlcOffer DlcOffer TLV (V0)
     * @param dlcAccept DlcAccept TLV (V0)
     * @param dlcTxs DlcTransactions TLV (V0)
     * @param dlcCloses DlcClose[] TLV (V0)
     * @param isOfferer Whether offerer or not
     * @returns {Promise<void>}
     */
    verifyBatchDlcClose(dlcOffer: DlcOffer, dlcAccept: DlcAccept, dlcTxs: DlcTransactions, dlcCloses: DlcClose[], isOfferer?: boolean): Promise<void>;
    /**
     * Finalize Dlc Close
     * @param dlcOffer Dlc Offer Message
     * @param dlcAccept Dlc Accept Message
     * @param dlcClose Dlc Close Message
     * @param dlcTxs Dlc Transactions Message
     * @returns {Promise<string>}
     */
    finalizeDlcClose(dlcOffer: DlcOffer, dlcAccept: DlcAccept, dlcClose: DlcClose, dlcTxs: DlcTransactions): Promise<string>;
    AddSignatureToFundTransaction(jsonObject: AddSignatureToFundTransactionRequest): Promise<AddSignatureToFundTransactionResponse>;
    CreateCetAdaptorSignature(jsonObject: CreateCetAdaptorSignatureRequest): Promise<CreateCetAdaptorSignatureResponse>;
    CreateCetAdaptorSignatures(jsonObject: CreateCetAdaptorSignaturesRequest): Promise<CreateCetAdaptorSignaturesResponse>;
    AddSignaturesToRefundTx(jsonObject: AddSignaturesToRefundTxRequest): Promise<AddSignaturesToRefundTxResponse>;
    CreateCet(jsonObject: CreateCetRequest): Promise<CreateCetResponse>;
    CreateDlcTransactions(jsonObject: CreateDlcTransactionsRequest): Promise<CreateDlcTransactionsResponse>;
    CreateFundTransaction(jsonObject: CreateFundTransactionRequest): Promise<CreateFundTransactionResponse>;
    CreateRefundTransaction(jsonObject: CreateRefundTransactionRequest): Promise<CreateRefundTransactionResponse>;
    GetRawFundTxSignature(jsonObject: GetRawFundTxSignatureRequest): Promise<GetRawFundTxSignatureResponse>;
    GetRawRefundTxSignature(jsonObject: GetRawRefundTxSignatureRequest): Promise<GetRawRefundTxSignatureResponse>;
    SignCetRequest(jsonObject: SignCetRequest): Promise<SignCetResponse>;
    SignFundTransaction(jsonObject: SignFundTransactionRequest): Promise<SignFundTransactionResponse>;
    VerifyCetAdaptorSignature(jsonObject: VerifyCetAdaptorSignatureRequest): Promise<VerifyCetAdaptorSignatureResponse>;
    VerifyCetAdaptorSignatures(jsonObject: VerifyCetAdaptorSignaturesRequest): Promise<VerifyCetAdaptorSignaturesResponse>;
    GetInputsForAmount(amounts: bigint[], feeRatePerVb: bigint, fixedInputs: Input[]): Promise<Input[]>;
    SignCet(jsonObject: SignCetRequest): Promise<SignCetResponse>;
    VerifyCetAdaptorSignaturesRequest(jsonObject: VerifyCetAdaptorSignaturesRequest): Promise<VerifyCetAdaptorSignaturesResponse>;
    VerifyFundTxSignature(jsonObject: VerifyFundTxSignatureRequest): Promise<VerifyFundTxSignatureResponse>;
    VerifyRefundTxSignature(jsonObject: VerifyRefundTxSignatureRequest): Promise<VerifyRefundTxSignatureResponse>;
    CreateSplicedDlcTransactions(jsonObject: CreateSplicedDlcTransactionsRequest): Promise<CreateSplicedDlcTransactionsResponse>;
    GetRawDlcFundingInputSignature(jsonObject: GetRawDlcFundingInputSignatureRequest): Promise<GetRawDlcFundingInputSignatureResponse>;
    SignDlcFundingInput(jsonObject: SignDlcFundingInputRequest): Promise<SignDlcFundingInputResponse>;
    VerifyDlcFundingInputSignature(jsonObject: VerifyDlcFundingInputSignatureRequest): Promise<VerifyDlcFundingInputSignatureResponse>;
    fundingInputToInput(_input: FundingInput, findDerivationPath?: boolean): Promise<IInput>;
    inputToFundingInput(input: IInput): Promise<FundingInput>;
    /**
     * Create DLC input info for splice transactions
     * @param fundTxid The funding transaction ID
     * @param fundVout The funding output index
     * @param fundAmount The funding amount in satoshis
     * @param localFundPubkey Local funding public key
     * @param remoteFundPubkey Remote funding public key
     * @param maxWitnessLength Maximum witness length
     * @param inputSerialId Optional input serial ID
     * @returns {DlcInputInfoRequest} DLC input info
     */
    createDlcInputInfo(fundTxid: string, fundVout: number, fundAmount: bigint | number, localFundPubkey: string, remoteFundPubkey: string, contractId: string, maxWitnessLength: number, inputSerialId?: bigint | number): DlcInputInfoRequest;
    /**
     * Calculate the maximum collateral possible with given inputs
     * @param inputs Array of inputs to use for funding
     * @param feeRatePerVb Fee rate in satoshis per virtual byte
     * @param contractCount Number of DLC contracts (default: 1)
     * @returns {Promise<bigint>} Maximum collateral amount in satoshis
     */
    calculateMaxCollateral(inputs: IInput[], feeRatePerVb: bigint, contractCount?: number): Promise<bigint>;
    /**
     * Create DLC funding input from DLC input info
     * @param dlcInputInfo DLC input information
     * @param fundTxHex Optional funding transaction hex
     * @returns {Promise<IInput>} DLC funding input
     */
    createDlcFundingInput(dlcInputInfo: DlcInputInfoRequest, fundTxHex?: string): Promise<IInput>;
}
export interface AcceptDlcOfferResponse {
    dlcAccept: DlcAccept;
    dlcTransactions: DlcTransactions;
}
export interface SignDlcAcceptResponse {
    dlcSign: DlcSign;
    dlcTransactions: DlcTransactions;
}
export interface IInput {
    txid: string;
    vout: number;
    address: string;
    amount: number;
    value: number;
    derivationPath?: string;
    maxWitnessLength?: number;
    redeemScript?: string;
    inputSerialId?: bigint;
    scriptPubKey?: string;
    label?: string;
    confirmations?: number;
    spendable?: boolean;
    solvable?: boolean;
    safe?: boolean;
    dlcInput?: {
        localFundPubkey: string;
        remoteFundPubkey: string;
        contractId: string;
    };
    toUtxo: any;
    isDlcInput(): boolean;
}
