// SPDX-License-Identifier: GPL-2.0-or-later pragma solidity >=0.7.5; import '@airdao/astra-cl-periphery/contracts/interfaces/IPeripheryPayments.sol'; /// @title Periphery Payments Extended /// @notice Functions to ease deposits and withdrawals of AMB and tokens interface IPeripheryPaymentsExtended is IPeripheryPayments { /// @notice Unwraps the contract's SAMB balance and sends it to msg.sender as AMB. /// @dev The amountMinimum parameter prevents malicious contracts from stealing SAMB from users. /// @param amountMinimum The minimum amount of SAMB to unwrap function unwrapSAMB(uint256 amountMinimum) external payable; /// @notice Wraps the contract's AMB balance into SAMB /// @dev The resulting SAMB is custodied by the router, thus will require further distribution /// @param value The amount of AMB to wrap function wrapAMB(uint256 value) external payable; /// @notice Transfers the full amount of a token held by this contract to msg.sender /// @dev The amountMinimum parameter prevents malicious contracts from stealing the token from users /// @param token The contract address of the token which will be transferred to msg.sender /// @param amountMinimum The minimum amount of token required for a transfer function sweepToken(address token, uint256 amountMinimum) external payable; /// @notice Transfers the specified amount of a token from the msg.sender to address(this) /// @param token The token to pull /// @param value The amount to pay function pull(address token, uint256 value) external payable; }