import { TransactionId } from '../id';
import { OutputId } from '../output';
/**
 * All of the transaction input types.
 */
declare enum InputType {
    /** A UTXO input. */
    UTXO = 0
}
/**
 * The base class for transaction inputs.
 */
declare abstract class Input {
    readonly type: InputType;
    /**
     * @param type The type of input.
     */
    constructor(type: InputType);
}
/**
 * A UTXO transaction input.
 */
declare class UTXOInput extends Input {
    /**
     * The transaction ID.
     */
    readonly transactionId: TransactionId;
    /**
     * The output index.
     */
    readonly transactionOutputIndex: number;
    /**
     * @param transactionId The ID of the transaction it is an input of.
     * @param transactionOutputIndex The index of the input within the transaction.
     */
    constructor(transactionId: TransactionId, transactionOutputIndex: number);
    /**
     * Create a `UTXOInput` from a given output ID.
     */
    static fromOutputId(outputId: OutputId): UTXOInput;
}
declare const InputDiscriminator: {
    property: string;
    subTypes: {
        value: typeof UTXOInput;
        name: any;
    }[];
};
export { InputDiscriminator, InputType, Input, UTXOInput };
