import * as bT from '../bitcoin';
import Utxo from './Utxo';
/**
 * Input supplementation modes for DLC operations
 */
export declare enum InputSupplementationMode {
    None = "none",// Use exactly these inputs, no supplementation
    Optional = "optional",// Try to supplement, fallback if fails
    Required = "required"
}
/**
 * DLC-specific input information for splice transactions
 */
export interface DlcInputInfo {
    localFundPubkey: string;
    remoteFundPubkey: string;
    contractId: string;
}
/**
 * Class for interfacing with inputs/utxos in Liquality Chainify
 * https://github.com/liquality/chainify
 *
 * These inputs can have different fields for value
 * satoshis (sats): https://github.com/liquality/chainify/blob/dev/packages/bitcoin-esplora-api-provider/lib/BitcoinEsploraApiProvider.js#L65
 * amount (btc): https://github.com/liquality/chainify/blob/dev/packages/bitcoin-esplora-api-provider/lib/BitcoinEsploraApiProvider.js#L74
 * value (sats): https://github.com/liquality/chainify/blob/dev/packages/bitcoin-wallet-provider/lib/BitcoinWalletProvider.js#L331
 *
 * This will be fixed once typescript branch is merged:
 * https://github.com/liquality/chainify/tree/typescript
 * satoshis and amount will not be necessary, only value
 * https://github.com/liquality/chainify/blob/typescript/packages/types/lib/bitcoin.ts#L46
 *
 * Extended to support DLC inputs for splice transactions.
 */
export default class Input {
    readonly txid: string;
    readonly vout: number;
    readonly address: string;
    readonly amount: number;
    readonly value: number;
    readonly derivationPath?: string;
    readonly maxWitnessLength?: number;
    readonly redeemScript?: string;
    readonly inputSerialId?: bigint;
    readonly scriptPubKey?: string;
    readonly label?: string;
    readonly confirmations?: number;
    readonly spendable?: boolean;
    readonly solvable?: boolean;
    readonly safe?: boolean;
    readonly dlcInput?: DlcInputInfo;
    constructor(txid: string, vout: number, address: string, amount: number, // in BTC
    value: number, // in sats
    derivationPath?: string, maxWitnessLength?: number, redeemScript?: string, inputSerialId?: bigint, scriptPubKey?: string, label?: string, confirmations?: number, spendable?: boolean, solvable?: boolean, safe?: boolean, dlcInput?: DlcInputInfo);
    toUtxo(): Utxo;
    /**
     * Check if this input contains DLC information (for splice transactions)
     */
    isDlcInput(): boolean;
    static fromUTXO(utxo: bT.UTXO): Input;
    /**
     * Create a DLC input for splice transactions
     */
    static createDlcInput(txid: string, vout: number, multisigAddress: string, amount: number, // in BTC
    value: number, // in sats
    localFundPubkey: string, remoteFundPubkey: string, contractId: string, inputSerialId?: bigint): Input;
}
