@@ -352,6 +352,23 @@ Generated by [AVA](https://avajs.dev).
352
352
}␊
353
353
`
354
354
355
+ ## erc20 callback
356
+
357
+ > Snapshot 1
358
+
359
+ `// SPDX-License-Identifier: MIT␊
360
+ // Compatible with OpenZeppelin Contracts ^5.0.0␊
361
+ pragma solidity ^0.8.22;␊
362
+ ␊
363
+ import {ERC1363} from "@openzeppelin/contracts/token/ERC20/extensions/ERC1363.sol";␊
364
+ import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";␊
365
+ import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";␊
366
+ ␊
367
+ contract MyToken is ERC20, ERC1363, ERC20Permit {␊
368
+ constructor() ERC20("MyToken", "MTK") ERC20Permit("MyToken") {}␊
369
+ }␊
370
+ `
371
+
355
372
## erc20 permit
356
373
357
374
> Snapshot 1
@@ -915,6 +932,7 @@ Generated by [AVA](https://avajs.dev).
915
932
pragma solidity ^0.8.22;␊
916
933
␊
917
934
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";␊
935
+ import {ERC1363} from "@openzeppelin/contracts/token/ERC20/extensions/ERC1363.sol";␊
918
936
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";␊
919
937
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
920
938
import {ERC20Burnable} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";␊
@@ -924,7 +942,7 @@ Generated by [AVA](https://avajs.dev).
924
942
import {ERC20Votes} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol";␊
925
943
import {Nonces} from "@openzeppelin/contracts/utils/Nonces.sol";␊
926
944
␊
927
- contract MyToken is ERC20, ERC20Bridgeable, AccessControl, ERC20Burnable, ERC20Pausable, ERC20Permit, ERC20Votes, ERC20FlashMint {␊
945
+ contract MyToken is ERC20, ERC20Bridgeable, AccessControl, ERC20Burnable, ERC20Pausable, ERC1363, ERC20Permit, ERC20Votes, ERC20FlashMint {␊
928
946
bytes32 public constant TOKEN_BRIDGE_ROLE = keccak256("TOKEN_BRIDGE_ROLE");␊
929
947
error Unauthorized();␊
930
948
bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE");␊
@@ -971,7 +989,7 @@ Generated by [AVA](https://avajs.dev).
971
989
function supportsInterface(bytes4 interfaceId)␊
972
990
public␊
973
991
view␊
974
- override(ERC20Bridgeable, AccessControl)␊
992
+ override(ERC20Bridgeable, AccessControl, ERC1363 )␊
975
993
returns (bool)␊
976
994
{␊
977
995
return super.supportsInterface(interfaceId);␊
@@ -997,6 +1015,7 @@ Generated by [AVA](https://avajs.dev).
997
1015
pragma solidity ^0.8.22;␊
998
1016
␊
999
1017
import {AccessControlUpgradeable} from "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";␊
1018
+ import {ERC1363Upgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC1363Upgradeable.sol";␊
1000
1019
import {ERC20Upgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol";␊
1001
1020
import {ERC20BurnableUpgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol";␊
1002
1021
import {ERC20FlashMintUpgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20FlashMintUpgradeable.sol";␊
@@ -1006,7 +1025,7 @@ Generated by [AVA](https://avajs.dev).
1006
1025
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";␊
1007
1026
import {NoncesUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/NoncesUpgradeable.sol";␊
1008
1027
␊
1009
- contract MyToken is Initializable, ERC20Upgradeable, ERC20BurnableUpgradeable, ERC20PausableUpgradeable, AccessControlUpgradeable, ERC20PermitUpgradeable, ERC20VotesUpgradeable, ERC20FlashMintUpgradeable {␊
1028
+ contract MyToken is Initializable, ERC20Upgradeable, ERC20BurnableUpgradeable, ERC20PausableUpgradeable, AccessControlUpgradeable, ERC1363Upgradeable, ERC20PermitUpgradeable, ERC20VotesUpgradeable, ERC20FlashMintUpgradeable {␊
1010
1029
bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE");␊
1011
1030
bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");␊
1012
1031
␊
@@ -1022,6 +1041,7 @@ Generated by [AVA](https://avajs.dev).
1022
1041
__ERC20Burnable_init();␊
1023
1042
__ERC20Pausable_init();␊
1024
1043
__AccessControl_init();␊
1044
+ __ERC1363_init();␊
1025
1045
__ERC20Permit_init("MyToken");␊
1026
1046
__ERC20Votes_init();␊
1027
1047
__ERC20FlashMint_init();␊
@@ -1052,6 +1072,15 @@ Generated by [AVA](https://avajs.dev).
1052
1072
{␊
1053
1073
super._update(from, to, value);␊
1054
1074
}␊
1075
+ ␊
1076
+ function supportsInterface(bytes4 interfaceId)␊
1077
+ public␊
1078
+ view␊
1079
+ override(AccessControlUpgradeable, ERC1363Upgradeable)␊
1080
+ returns (bool)␊
1081
+ {␊
1082
+ return super.supportsInterface(interfaceId);␊
1083
+ }␊
1055
1084
␊
1056
1085
function nonces(address owner)␊
1057
1086
public␊
@@ -1073,6 +1102,7 @@ Generated by [AVA](https://avajs.dev).
1073
1102
pragma solidity ^0.8.22;␊
1074
1103
␊
1075
1104
import {AccessControlUpgradeable} from "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";␊
1105
+ import {ERC1363Upgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC1363Upgradeable.sol";␊
1076
1106
import {ERC20Upgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol";␊
1077
1107
import {ERC20BurnableUpgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol";␊
1078
1108
import {ERC20FlashMintUpgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20FlashMintUpgradeable.sol";␊
@@ -1083,7 +1113,7 @@ Generated by [AVA](https://avajs.dev).
1083
1113
import {NoncesUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/NoncesUpgradeable.sol";␊
1084
1114
import {UUPSUpgradeable} from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";␊
1085
1115
␊
1086
- contract MyToken is Initializable, ERC20Upgradeable, ERC20BurnableUpgradeable, ERC20PausableUpgradeable, AccessControlUpgradeable, ERC20PermitUpgradeable, ERC20VotesUpgradeable, ERC20FlashMintUpgradeable, UUPSUpgradeable {␊
1116
+ contract MyToken is Initializable, ERC20Upgradeable, ERC20BurnableUpgradeable, ERC20PausableUpgradeable, AccessControlUpgradeable, ERC1363Upgradeable, ERC20PermitUpgradeable, ERC20VotesUpgradeable, ERC20FlashMintUpgradeable, UUPSUpgradeable {␊
1087
1117
bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE");␊
1088
1118
bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");␊
1089
1119
bytes32 public constant UPGRADER_ROLE = keccak256("UPGRADER_ROLE");␊
@@ -1100,6 +1130,7 @@ Generated by [AVA](https://avajs.dev).
1100
1130
__ERC20Burnable_init();␊
1101
1131
__ERC20Pausable_init();␊
1102
1132
__AccessControl_init();␊
1133
+ __ERC1363_init();␊
1103
1134
__ERC20Permit_init("MyToken");␊
1104
1135
__ERC20Votes_init();␊
1105
1136
__ERC20FlashMint_init();␊
@@ -1138,6 +1169,15 @@ Generated by [AVA](https://avajs.dev).
1138
1169
{␊
1139
1170
super._update(from, to, value);␊
1140
1171
}␊
1172
+ ␊
1173
+ function supportsInterface(bytes4 interfaceId)␊
1174
+ public␊
1175
+ view␊
1176
+ override(AccessControlUpgradeable, ERC1363Upgradeable)␊
1177
+ returns (bool)␊
1178
+ {␊
1179
+ return super.supportsInterface(interfaceId);␊
1180
+ }␊
1141
1181
␊
1142
1182
function nonces(address owner)␊
1143
1183
public␊
@@ -1159,6 +1199,7 @@ Generated by [AVA](https://avajs.dev).
1159
1199
pragma solidity ^0.8.22;␊
1160
1200
␊
1161
1201
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";␊
1202
+ import {ERC1363Upgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC1363Upgradeable.sol";␊
1162
1203
import {ERC20Upgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol";␊
1163
1204
import {ERC20BurnableUpgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol";␊
1164
1205
import {ERC20FlashMintUpgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20FlashMintUpgradeable.sol";␊
@@ -1169,7 +1210,7 @@ Generated by [AVA](https://avajs.dev).
1169
1210
import {NoncesUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/NoncesUpgradeable.sol";␊
1170
1211
import {UUPSUpgradeable} from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";␊
1171
1212
␊
1172
- contract MyToken is Initializable, ERC20Upgradeable, ERC20BurnableUpgradeable, ERC20PausableUpgradeable, AccessManagedUpgradeable, ERC20PermitUpgradeable, ERC20VotesUpgradeable, ERC20FlashMintUpgradeable, UUPSUpgradeable {␊
1213
+ contract MyToken is Initializable, ERC20Upgradeable, ERC20BurnableUpgradeable, ERC20PausableUpgradeable, AccessManagedUpgradeable, ERC1363Upgradeable, ERC20PermitUpgradeable, ERC20VotesUpgradeable, ERC20FlashMintUpgradeable, UUPSUpgradeable {␊
1173
1214
/// @custom:oz-upgrades-unsafe-allow constructor␊
1174
1215
constructor() {␊
1175
1216
_disableInitializers();␊
@@ -1182,6 +1223,7 @@ Generated by [AVA](https://avajs.dev).
1182
1223
__ERC20Burnable_init();␊
1183
1224
__ERC20Pausable_init();␊
1184
1225
__AccessManaged_init(initialAuthority);␊
1226
+ __ERC1363_init();␊
1185
1227
__ERC20Permit_init("MyToken");␊
1186
1228
__ERC20Votes_init();␊
1187
1229
__ERC20FlashMint_init();␊
0 commit comments