flashloan-rs 0.2.1

Minimal Multicall3 Flashloan Module
Documentation
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.15;

interface TSOwnable {
    function owner() external returns (address);
    function pendingOwner() external returns (address);
    function setPendingOwner(address) external;
    function acceptOwnership() external;

    event NewOwner(address indexed,address indexed);
    event NewPendingOwner(address indexed,address indexed);
}

/// @notice Interface of the ERC20 standard as defined in the EIP.
/// @author Adapted from OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
interface IERC20 {
    /// @dev Emitted when `value` tokens are moved from one account (`from`) to another (`to`)
    event Transfer(address indexed from, address indexed to, uint256 value);

    /// @dev Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /// @dev Returns the name of token
    function name() external view returns (string memory);

    /// @dev Returns the symbol of token
    function symbol() external view returns (string memory);

    /// @dev Returns the symbol of token
    function decimals() external view returns (uint256);

    /// @dev Returns the domain separator
    function DOMAIN_SEPARATOR() external view returns (bytes32);

    /// @dev Permit
    function permit(address, address, uint256, uint256, uint8, bytes32, bytes32) external;

    /// @dev Permit Nonces
    function nonces(address) external returns (uint256);

    /// @dev Returns the amount of tokens in existence
    function totalSupply() external view returns (uint256);

    /// @dev Returns the amount of tokens owned by `account`
    function balanceOf(address account) external view returns (uint256);

    /// @dev Creates new token.
    function transfer(address to, uint256 amount) external returns (bool);

    /// @dev Moves `amount` tokens from `from` to `to` using the allowance mechanism
    function transferFrom(address from, address to, uint256 amount) external returns (bool);

    /// @dev Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner`
    function allowance(address owner, address spender) external view returns (uint256);

    /// @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
    function approve(address spender, uint256 amount) external returns (bool);
}

interface IMintableERC20 is IERC20 {
    /// @dev Moves `amount` tokens from the caller's account to `to`.
    function mint(address to, uint256 amount) external;

    /// @dev Removes `amount` tokens from the `from` account.
    function burn(address from, uint256 amount) external;
}

interface IERC20Ownable is TSOwnable, IERC20 {}