import BigNumber from 'bignumber.js';
import { BufferComposer, ComposableBuffer } from '@muirglacier/jellyfish-buffer';
import { Script, Transaction, TransactionSegWit, Vin, Vout, Witness, WitnessScript } from './tx';
import { OPCode } from './script';
/**
 * USE CTransaction AT YOUR OWN RISK.
 * The TransactionBuilder has safety logic built-in to prevent overspent, CTransaction is its raw counter part.
 *
 * Composable Transaction, C stands for Composable.
 * Immutable by design, it implements the Transaction interface for convenience.
 * Bi-directional fromBuffer, toBuffer deep composer.
 */
export declare class CTransaction extends ComposableBuffer<Transaction> implements Transaction {
    get version(): number;
    get vin(): Vin[];
    get vout(): Vout[];
    get lockTime(): number;
    composers(tx: Transaction): BufferComposer[];
    /**
     * TransactionId is the double SHA256 of transaction buffer.
     * TxId are usually presented in BE order, this method return TxId in BE order.
     *
     * @return string transaction id
     */
    get txId(): string;
}
/**
 * Composable Vin, C stands for Composable.
 * Immutable by design, it implements the Vin interface for convenience.
 * Bi-directional fromBuffer, toBuffer deep composer.
 */
export declare class CVin extends ComposableBuffer<Vin> implements Vin {
    /**
     * 32 bytes, 64 in hex
     */
    get txid(): string;
    get index(): number;
    get script(): Script;
    get sequence(): number;
    composers(vin: Vin): BufferComposer[];
}
/**
 * Composable Vout, C stands for Composable.
 * Immutable by design, it implements the Vout interface for convenience.
 * Bi-directional fromBuffer, toBuffer deep composer.
 *
 * This is Transaction V2 buffer composition
 */
export declare class CVoutV2 extends ComposableBuffer<Vout> implements Vout {
    get value(): BigNumber;
    get script(): Script;
    get tokenId(): number;
    composers(vout: Vout): BufferComposer[];
}
/**
 * Composable Vout, C stands for Composable.
 * Immutable by design, it implements the Vout interface for convenience.
 * Bi-directional fromBuffer, toBuffer deep composer.
 *
 * This is Transaction V4 buffer composition
 */
export declare class CVoutV4 extends ComposableBuffer<Vout> implements Vout {
    get value(): BigNumber;
    get script(): Script;
    get tokenId(): number;
    composers(vout: Vout): BufferComposer[];
}
/**
 * Composable Script, C stands for Composable.
 * Immutable by design, it implements the Script interface for convenience.
 * Bi-directional fromBuffer, toBuffer deep composer.
 *
 * This wraps the OPCode built in composer.
 */
export declare class CScript extends ComposableBuffer<Script> implements Script {
    get stack(): OPCode[];
    composers(script: Script): BufferComposer[];
}
/**
 * USE CTransactionSegWit AT YOUR OWN RISK.
 * The TransactionBuilder has safety logic built-in to prevent overspent, CTransactionSegWit is its raw counter part.
 *
 * Composable TransactionSegWit, C stands for Composable.
 * Immutable by design, it implements the TransactionSegWit interface for convenience.
 * Bi-directional fromBuffer, toBuffer deep composer.
 *
 * @see https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki
 * @see https://github.com/bitcoin/bips/blob/master/bip-0143.mediawiki
 * @see https://github.com/bitcoin/bips/blob/master/bip-0144.mediawiki
 */
export declare class CTransactionSegWit extends ComposableBuffer<TransactionSegWit> implements TransactionSegWit {
    get version(): number;
    get marker(): number;
    get flag(): number;
    get vin(): Vin[];
    get vout(): Vout[];
    get witness(): Witness[];
    get lockTime(): number;
    composers(tx: TransactionSegWit): BufferComposer[];
    /**
     * TransactionId is the double SHA256 of transaction buffer.
     * TxId are usually presented in BE order, this method return TxId in BE order.
     *
     * @return string transaction id
     */
    get txId(): string;
}
/**
 * Composable Witness, C stands for Composable.
 * Immutable by design, it implements the Witness interface for convenience.
 * Bi-directional fromBuffer, toBuffer deep composer.
 */
export declare class CWitness extends ComposableBuffer<Witness> implements Witness {
    get scripts(): WitnessScript[];
    composers(wit: Witness): BufferComposer[];
}
/**
 * Composable WitnessScript, C stands for Composable.
 * Immutable by design, it implements the WitnessScript interface for convenience.
 * Bi-directional fromBuffer, toBuffer deep composer.
 *
 * This just wraps the WitnessScript with (n = VarUInt, + n Bytes).
 */
export declare class CWitnessScript extends ComposableBuffer<WitnessScript> implements WitnessScript {
    get hex(): string;
    composers(script: WitnessScript): BufferComposer[];
}
//# sourceMappingURL=tx_composer.d.ts.map