Encodes a settlement transaction that uses wrapper contracts. Takes the base settlement calldata and wraps it in a wrappedSettleCall with encoded wrapper metadata. Since wrappers are a chain, the wrapper address to call is also processed by this function. Returns (first_wrapper_address, wrapped_calldata)
(
wrappers: &[WrapperCall],
settle_calldata: Bytes,
)
| 279 | /// |
| 280 | /// Returns (first_wrapper_address, wrapped_calldata) |
| 281 | pub fn encode_wrapper_settlement( |
| 282 | wrappers: &[WrapperCall], |
| 283 | settle_calldata: Bytes, |
| 284 | ) -> Option<(Address, Bytes)> { |
| 285 | if wrappers.is_empty() { |
| 286 | return None; |
| 287 | }; |
| 288 | let wrapper_data = encode_wrapper_data(wrappers); |
| 289 | |
| 290 | // Create wrappedSettleCall |
| 291 | let calldata = contracts::ICowWrapper::ICowWrapper::wrappedSettleCall { |
| 292 | settleData: settle_calldata, |
| 293 | wrapperData: wrapper_data, |
| 294 | } |
| 295 | .abi_encode(); |
| 296 | |
| 297 | Some((wrappers[0].address, calldata.into())) |
| 298 | } |
| 299 | |
| 300 | /// Encodes wrapper metadata for wrapper settlement calls. |
| 301 | /// As wrappers are called, each wrapper reads from wrapper calldata and |
no test coverage detected