fuel-core-txpool 0.20.6

Transaction pool
Documentation
use crate::test_helpers::IntoEstimated;
use fuel_core_types::{
    entities::message::Message,
    fuel_asm::op,
    fuel_tx::{
        ConsensusParameters,
        Contract,
        ContractId,
        Input,
        Output,
        TxId,
        UtxoId,
    },
    fuel_types::Word,
};

pub(crate) fn create_message_predicate_from_message(
    amount: Word,
    nonce: u64,
) -> (Message, Input) {
    let predicate = vec![op::ret(1)].into_iter().collect::<Vec<u8>>();
    let message = Message {
        sender: Default::default(),
        recipient: Input::predicate_owner(
            &predicate,
            &ConsensusParameters::DEFAULT.chain_id,
        ),
        nonce: nonce.into(),
        amount,
        data: vec![],
        da_height: Default::default(),
    };

    (
        message.clone(),
        Input::message_coin_predicate(
            message.sender,
            Input::predicate_owner(&predicate, &ConsensusParameters::DEFAULT.chain_id),
            message.amount,
            message.nonce,
            Default::default(),
            predicate,
            Default::default(),
        )
        .into_default_estimated(),
    )
}

pub(crate) fn create_coin_output() -> Output {
    Output::coin(Default::default(), Default::default(), Default::default())
}

pub(crate) fn create_contract_input(
    tx_id: TxId,
    output_index: u8,
    contract_id: ContractId,
) -> Input {
    Input::contract(
        UtxoId::new(tx_id, output_index),
        Default::default(),
        Default::default(),
        Default::default(),
        contract_id,
    )
}

pub(crate) fn create_contract_output(contract_id: ContractId) -> Output {
    Output::contract_created(contract_id, Contract::default_state_root())
}