@@ -9,7 +9,7 @@ import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
99
1010import { Output, GaslessCrossChainOrder, OnchainCrossChainOrder, ResolvedCrossChainOrder, IOriginSettler, FillInstruction } from "./ERC7683.sol " ;
1111import { AcrossOrderData, AcrossOriginFillerData, ERC7683Permit2Lib , ACROSS_ORDER_DATA_TYPE_HASH } from "./ERC7683Permit2Lib.sol " ;
12- import { AddressToBytes32 } from "../libraries/AddressConverters.sol " ;
12+ import { AddressToBytes32, Bytes32ToAddress } from "../libraries/AddressConverters.sol " ;
1313
1414/**
1515 * @notice ERC7683OrderDepositor processes an external order type and translates it into an AcrossV3 deposit.
@@ -19,6 +19,7 @@ import { AddressToBytes32 } from "../libraries/AddressConverters.sol";
1919 */
2020abstract contract ERC7683OrderDepositor is IOriginSettler {
2121 using SafeERC20 for IERC20 ;
22+ using Bytes32ToAddress for bytes32 ;
2223 using AddressToBytes32 for address ;
2324
2425 error WrongSettlementContract ();
@@ -66,7 +67,7 @@ abstract contract ERC7683OrderDepositor is IOriginSettler {
6667
6768 _callDeposit (
6869 order.user,
69- _toAddress ( acrossOrderData.recipient),
70+ acrossOrderData.recipient. toAddress ( ),
7071 acrossOrderData.inputToken,
7172 acrossOrderData.outputToken,
7273 acrossOrderData.inputAmount,
@@ -97,7 +98,7 @@ abstract contract ERC7683OrderDepositor is IOriginSettler {
9798
9899 _callDeposit (
99100 msg .sender ,
100- _toAddress ( acrossOrderData.recipient),
101+ acrossOrderData.recipient. toAddress ( ),
101102 acrossOrderData.inputToken,
102103 acrossOrderData.outputToken,
103104 acrossOrderData.inputAmount,
@@ -208,7 +209,7 @@ abstract contract ERC7683OrderDepositor is IOriginSettler {
208209
209210 Output[] memory maxSpent = new Output [](1 );
210211 maxSpent[0 ] = Output ({
211- token: _toBytes32 ( acrossOrderData.outputToken),
212+ token: acrossOrderData.outputToken. toBytes32 ( ),
212213 amount: acrossOrderData.outputAmount,
213214 recipient: acrossOrderData.recipient,
214215 chainId: acrossOrderData.destinationChainId
@@ -220,9 +221,9 @@ abstract contract ERC7683OrderDepositor is IOriginSettler {
220221 // repayment on.
221222 Output[] memory minReceived = new Output [](1 );
222223 minReceived[0 ] = Output ({
223- token: _toBytes32 ( acrossOrderData.inputToken),
224+ token: acrossOrderData.inputToken. toBytes32 ( ),
224225 amount: acrossOrderData.inputAmount,
225- recipient: _toBytes32 ( acrossOriginFillerData.exclusiveRelayer),
226+ recipient: acrossOriginFillerData.exclusiveRelayer. toBytes32 ( ),
226227 chainId: block .chainid
227228 });
228229
@@ -242,7 +243,7 @@ abstract contract ERC7683OrderDepositor is IOriginSettler {
242243 relayData.message = acrossOrderData.message;
243244 fillInstructions[0 ] = FillInstruction ({
244245 destinationChainId: SafeCast.toUint64 (acrossOrderData.destinationChainId),
245- destinationSettler: _toBytes32 ( _destinationSettler (acrossOrderData.destinationChainId)),
246+ destinationSettler: _destinationSettler (acrossOrderData.destinationChainId). toBytes32 ( ),
246247 originData: abi.encode (relayData)
247248 });
248249
@@ -272,7 +273,7 @@ abstract contract ERC7683OrderDepositor is IOriginSettler {
272273
273274 Output[] memory maxSpent = new Output [](1 );
274275 maxSpent[0 ] = Output ({
275- token: _toBytes32 ( acrossOrderData.outputToken),
276+ token: acrossOrderData.outputToken. toBytes32 ( ),
276277 amount: acrossOrderData.outputAmount,
277278 recipient: acrossOrderData.recipient,
278279 chainId: acrossOrderData.destinationChainId
@@ -284,9 +285,9 @@ abstract contract ERC7683OrderDepositor is IOriginSettler {
284285 // repayment on.
285286 Output[] memory minReceived = new Output [](1 );
286287 minReceived[0 ] = Output ({
287- token: _toBytes32 ( acrossOrderData.inputToken),
288+ token: acrossOrderData.inputToken. toBytes32 ( ),
288289 amount: acrossOrderData.inputAmount,
289- recipient: _toBytes32 ( acrossOrderData.exclusiveRelayer),
290+ recipient: acrossOrderData.exclusiveRelayer. toBytes32 ( ),
290291 chainId: block .chainid
291292 });
292293
@@ -306,7 +307,7 @@ abstract contract ERC7683OrderDepositor is IOriginSettler {
306307 relayData.message = acrossOrderData.message;
307308 fillInstructions[0 ] = FillInstruction ({
308309 destinationChainId: SafeCast.toUint64 (acrossOrderData.destinationChainId),
309- destinationSettler: _toBytes32 ( _destinationSettler (acrossOrderData.destinationChainId)),
310+ destinationSettler: _destinationSettler (acrossOrderData.destinationChainId). toBytes32 ( ),
310311 originData: abi.encode (relayData)
311312 });
312313
@@ -352,15 +353,6 @@ abstract contract ERC7683OrderDepositor is IOriginSettler {
352353 );
353354 }
354355
355- function _toBytes32 (address input ) internal pure returns (bytes32 ) {
356- return bytes32 (uint256 (uint160 (input)));
357- }
358-
359- function _toAddress (bytes32 _bytes32 ) internal pure returns (address ) {
360- require (uint256 (_bytes32) >> 160 == 0 , "Invalid bytes32: highest 12 bytes must be 0 " );
361- return address (uint160 (uint256 (_bytes32)));
362- }
363-
364356 function _callDeposit (
365357 address depositor ,
366358 address recipient ,
0 commit comments