// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.25;
contract EscrowOfframp {
struct ClientArgs {
address client;
}
/// @notice This will lock `_amount` in escrow
/// @param _amount coin amount to off ramp
/// @param _tradeFee Onboard trade fee
function createOfframpOrder(uint256 _amount, uint256 _tradeFee ) external {
// Create off-ramp order and keep record of trade fee
// Lock trade amount in escrow
}
/// @notice It is expected that order amount has been pre-approved by customer to escrow account
/// @param _token ERC20 token address
/// @param _amount coin amount to off ramp
function createOfframpOrder(IERC20 _token, uint256 _amount, uint256 _tradeFee ) external {
// Verify if amount is approved by user to be locked in escrow
// Keep trade record including the fee to be charged
// Lock trade amount in escrow
}
// @notice Mediator confirms order in dispute cases
function confirmOfframpOrder(ClientArgs memory args) external returns(bool success) {
// Ensure that order exists for args client
// Execute transfer of asset to merchant escrow account
// Transfer trade fee to designated fee recipient address
}
}