/// <reference types="node" />
import { StreamReader } from '@node-dlc/bufio';
import { ICloneable } from './ICloneable';
import { OutPoint } from './OutPoint';
import { Script } from './Script';
import { Sequence } from './Sequence';
import { Witness } from './Witness';
export declare class TxIn implements ICloneable<TxIn> {
    /**
     * Parses a TxIn from a a stream reader.
     * @param stream
     */
    static parse(reader: StreamReader): TxIn;
    /**
     * Parses a hex string serialization of a transaction input. This
     * is a helper function instead of having to do `StreamReader.fromHex`
     * on a string directly.
     * @param hex
     */
    static fromHex(hex: string): TxIn;
    /**
     * The previous transaction output tuple
     */
    outpoint: OutPoint;
    /**
     * ScriptSig for the input
     */
    scriptSig: Script;
    /**
     * nSequence value for the transaction. Defaults to 0xffffffff which
     * disables the absolute timelock.
     */
    sequence: Sequence;
    /**
     * Witness data that is required by the input
     */
    witness: Witness[];
    /**
     * Constructs a new transaction input from the values
     * @param outpoint
     * @param scriptSig
     * @param sequence
     * @param witness
     */
    constructor(outpoint: OutPoint, scriptSig?: Script, sequence?: Sequence, witness?: Witness[]);
    /**
     * Creates a string of the transaction input that includes all of the
     * properties.
     */
    toString(): string;
    /**
     * Creates a JSON object of the transaction input that includes all
     * of the properties.
     */
    toJSON(): {
        outpoint: {
            txid: string;
            index: number;
        };
        scriptSig: string;
        sequence: string;
    };
    /**
     * Returns the byte serialization of the transaction input
     */
    serialize(): Buffer;
    /**
     * Clone via deep copy
     */
    clone(): TxIn;
}
