use alloy_primitives::U256;
use r402_core::chain::{ChainId, DeployedTokenAmount};
use r402_core::wire;
use crate::chain::{ChecksummedAddress, Eip155TokenDeployment};
use crate::exact::{AssetTransferMethod, Eip155Exact, ExactScheme, PaymentRequirementsExtra};
impl Eip155Exact {
pub fn price_tag<A: Into<ChecksummedAddress>>(
pay_to: A,
asset: DeployedTokenAmount<U256, Eip155TokenDeployment>,
transfer_method: Option<AssetTransferMethod>,
) -> wire::PriceTag {
let chain_id: ChainId = asset.token.chain_reference.into();
let extra = PaymentRequirementsExtra::from_deployment(asset.token.eip712, transfer_method);
let requirements = wire::PaymentRequirements::new(
ExactScheme.to_string().into(),
chain_id,
asset.amount.to_string().into(),
pay_to.into().to_string().into(),
asset.token.address.to_string().into(),
300,
)
.with_optional_extra(extra);
wire::PriceTag {
requirements,
enricher: None,
}
}
}