mirror of
https://github.com/Instadapp/aave-protocol-v2.git
synced 2024-07-29 21:47:30 +00:00
50 lines
1.3 KiB
Solidity
50 lines
1.3 KiB
Solidity
// SPDX-License-Identifier: agpl-3.0
|
|
pragma solidity 0.6.12;
|
|
pragma experimental ABIEncoderV2;
|
|
|
|
import {IAToken} from '../../interfaces/IAToken.sol';
|
|
import {IERC20WithPermit} from '../../interfaces/IERC20WithPermit.sol';
|
|
import {IStaticAToken} from '../../interfaces/IStaticAToken.sol';
|
|
|
|
contract StaticATokenMetaTransactionMock {
|
|
function permitAndDeposit(
|
|
IStaticAToken staticToken,
|
|
address recipient,
|
|
uint256 value,
|
|
uint16 referralCode,
|
|
bool fromUnderlying,
|
|
uint256 deadline,
|
|
IStaticAToken.SignatureParams calldata sigParamsPermit,
|
|
IStaticAToken.SignatureParams calldata sigParamsDeposit,
|
|
uint256 chainId
|
|
) external returns (uint256) {
|
|
// will throw if not permit underlying token
|
|
try
|
|
IERC20WithPermit(
|
|
fromUnderlying ? address(staticToken.ASSET()) : address(staticToken.ATOKEN())
|
|
)
|
|
.permit(
|
|
msg.sender,
|
|
address(staticToken),
|
|
value,
|
|
deadline,
|
|
sigParamsPermit.v,
|
|
sigParamsPermit.r,
|
|
sigParamsPermit.s
|
|
)
|
|
{} catch {
|
|
require(false, 'UNDERLYING_TOKEN_NO_PERMIT');
|
|
}
|
|
staticToken.metaDeposit(
|
|
msg.sender,
|
|
recipient,
|
|
value,
|
|
referralCode,
|
|
fromUnderlying,
|
|
deadline,
|
|
sigParamsDeposit,
|
|
chainId
|
|
);
|
|
}
|
|
}
|