pub fn create_outputs(
	drawee_stacks_private_key: &StacksPrivateKey,
	payee_bitcoin_address: &BitcoinAddress,
	sbtc_wallet_bitcoin_address: &BitcoinAddress,
	amount: u64,
	fulfillment_amount: u64,
	network: BitcoinNetwork,
) -> SBTCResult<[(Script, u64); 3]> {
	let recipient_script = payee_bitcoin_address.script_pubkey();
	let sbtc_wallet_script = sbtc_wallet_bitcoin_address.script_pubkey();

	// Check that we have enough to cover dust
	let recipient_dust_amount = recipient_script.dust_value().to_sat();
	let sbtc_wallet_dust_amount = sbtc_wallet_script.dust_value().to_sat();

	if fulfillment_amount < sbtc_wallet_dust_amount {
		return Err(SBTCError::AmountInsufficient(
			fulfillment_amount,
			sbtc_wallet_dust_amount,
		));
	}

	let op_return_script = build_op_return_script(
		&WithdrawalRequestDataOutputData::new(
			payee_bitcoin_address,
			drawee_stacks_private_key,
			amount,
			network,
		)
		.serialize_to_vec(),
	);

	let outputs = [
		(op_return_script, 0),
		(recipient_script, recipient_dust_amount),
		(sbtc_wallet_script, fulfillment_amount),
	];

	Ok(outputs)
}
Generates the outputs for the withdrawal request transaction
sbtc-core/src/operations/op_return/withdrawal_request.rs