use fuel_core_types::{
entities::message::CompressedMessage,
fuel_asm::op,
fuel_tx::{
Contract,
ContractId,
Input,
Output,
TxId,
UtxoId,
},
fuel_types::Word,
};
pub(crate) fn create_message_predicate_from_message(
amount: Word,
) -> (CompressedMessage, Input) {
let predicate = vec![op::ret(1)].into_iter().collect::<Vec<u8>>();
let message = CompressedMessage {
sender: Default::default(),
recipient: Input::predicate_owner(&predicate),
nonce: 0,
amount,
data: vec![],
da_height: Default::default(),
};
(
message.clone(),
Input::message_predicate(
message.id(),
message.sender,
Input::predicate_owner(&predicate),
message.amount,
message.nonce,
message.data,
predicate,
Default::default(),
),
)
}
pub(crate) fn create_coin_output() -> Output {
Output::Coin {
amount: Default::default(),
to: Default::default(),
asset_id: Default::default(),
}
}
pub(crate) fn create_contract_input(tx_id: TxId, output_index: u8) -> Input {
Input::Contract {
utxo_id: UtxoId::new(tx_id, output_index),
balance_root: Default::default(),
state_root: Default::default(),
tx_pointer: Default::default(),
contract_id: Default::default(),
}
}
pub(crate) fn create_contract_output(contract_id: ContractId) -> Output {
Output::ContractCreated {
contract_id,
state_root: Contract::default_state_root(),
}
}