impermax-sdk 1.2.112 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/lib/abis/contracts/IAllowanceTransfer.json +3772 -0
  2. package/lib/abis/contracts/IERC721.json +3515 -0
  3. package/lib/abis/contracts/ITokenizedUniswapV2Position.json +4167 -0
  4. package/lib/abis/contracts/ITokenizedUniswapV3Position.json +5539 -0
  5. package/lib/abis/contracts/IUniswapV3Pool.json +6606 -0
  6. package/lib/abis/contracts/ImpermaxV3Borrowable.json +22131 -0
  7. package/lib/abis/contracts/ImpermaxV3Collateral.json +22988 -0
  8. package/lib/abis/contracts/ImpermaxV3Factory.json +17645 -0
  9. package/lib/abis/contracts/ImpermaxV3UniV2Router01.json +32488 -0
  10. package/lib/abis/contracts/ImpermaxV3UniV3Router01.json +37742 -0
  11. package/lib/abis/contracts/PoolTokenRouter01.json +9058 -0
  12. package/lib/config/amms.d.ts +0 -2
  13. package/lib/config/amms.js +0 -3
  14. package/lib/config/chainId.d.ts +2 -0
  15. package/lib/config/chainId.js +26 -0
  16. package/lib/config/contracts/routers.d.ts +3 -2
  17. package/lib/config/contracts/routers.js +46 -22
  18. package/lib/config/factories.js +1 -0
  19. package/lib/config/farms.d.ts +0 -2
  20. package/lib/config/farms.js +0 -3
  21. package/lib/config/types.d.ts +14 -1
  22. package/lib/config/types.js +15 -1
  23. package/lib/index.d.ts +6 -5
  24. package/lib/index.js +11 -4
  25. package/lib/offchain/account/index.d.ts +4 -2
  26. package/lib/offchain/account/index.js +7 -3
  27. package/lib/offchain/account/lendingPool/index.d.ts +2 -1
  28. package/lib/offchain/account/lendingPool/index.js +3 -1
  29. package/lib/offchain/account/lendingPool/offchainAccountBorrowable.d.ts +0 -3
  30. package/lib/offchain/account/lendingPool/offchainAccountBorrowable.js +1 -27
  31. package/lib/offchain/account/lendingPool/offchainAccountCollateral.d.ts +0 -2
  32. package/lib/offchain/account/lendingPool/offchainAccountCollateral.js +2 -14
  33. package/lib/offchain/account/lendingPool/offchainAccountLendingPool.d.ts +11 -4
  34. package/lib/offchain/account/lendingPool/offchainAccountLendingPool.js +16 -15
  35. package/lib/offchain/account/lendingPool/offchainLeveragedPosition.d.ts +25 -0
  36. package/lib/offchain/account/lendingPool/offchainLeveragedPosition.js +116 -0
  37. package/lib/offchain/account/offchainAccount.d.ts +6 -6
  38. package/lib/offchain/account/offchainAccount.js +7 -7
  39. package/lib/offchain/account/offchainMultichainAccount.d.ts +34 -0
  40. package/lib/offchain/account/offchainMultichainAccount.js +66 -0
  41. package/lib/offchain/account/vault/index.d.ts +3 -0
  42. package/lib/offchain/account/vault/index.js +7 -0
  43. package/lib/offchain/account/vault/offchainAccountVault.d.ts +16 -0
  44. package/lib/offchain/account/{offchainAccountLendingVault.js → vault/offchainAccountVault.js} +14 -14
  45. package/lib/offchain/index.d.ts +3 -2
  46. package/lib/offchain/index.js +5 -3
  47. package/lib/offchain/lendingPool/offchainCollateral.d.ts +1 -0
  48. package/lib/offchain/lendingPool/offchainCollateral.js +6 -0
  49. package/lib/offchain/lendingPool/offchainLendingPool.d.ts +14 -1
  50. package/lib/offchain/lendingPool/offchainLendingPool.js +47 -0
  51. package/lib/offchain/offchain.d.ts +8 -15
  52. package/lib/offchain/offchain.js +16 -19
  53. package/lib/offchain/offchainAPRHelper.js +0 -1
  54. package/lib/offchain/offchainInitializer.d.ts +4 -4
  55. package/lib/offchain/offchainInitializer.js +4 -4
  56. package/lib/offchain/offchainMultichain.d.ts +50 -0
  57. package/lib/offchain/offchainMultichain.js +75 -0
  58. package/lib/offchain/offchainTypes.d.ts +1 -1
  59. package/lib/offchain/vault/index.d.ts +6 -0
  60. package/lib/offchain/vault/index.js +14 -0
  61. package/lib/offchain/vault/offchainHedgedVault.d.ts +9 -0
  62. package/lib/offchain/vault/offchainHedgedVault.js +57 -0
  63. package/lib/offchain/vault/offchainLendingVault.d.ts +16 -0
  64. package/lib/offchain/vault/offchainLendingVault.js +73 -0
  65. package/lib/offchain/vault/offchainLeveragedVault.d.ts +9 -0
  66. package/lib/offchain/vault/offchainLeveragedVault.js +57 -0
  67. package/lib/offchain/{offchainLendingVault.d.ts → vault/offchainVault.d.ts} +16 -7
  68. package/lib/offchain/{offchainLendingVault.js → vault/offchainVault.js} +33 -17
  69. package/lib/onchain/account/lendingPool/index.d.ts +8 -1
  70. package/lib/onchain/account/lendingPool/index.js +38 -1
  71. package/lib/onchain/account/lendingPool/nftlp/index.d.ts +4 -0
  72. package/lib/onchain/account/lendingPool/nftlp/index.js +11 -0
  73. package/lib/onchain/account/lendingPool/nftlp/onchainAccountNftlp.d.ts +7 -0
  74. package/lib/onchain/account/lendingPool/nftlp/onchainAccountNftlp.js +12 -0
  75. package/lib/onchain/account/lendingPool/nftlp/onchainAccountNftlpUniswapV3.d.ts +4 -0
  76. package/lib/onchain/account/lendingPool/nftlp/onchainAccountNftlpUniswapV3.js +13 -0
  77. package/lib/onchain/account/lendingPool/onchainAccountBorrowable.d.ts +12 -7
  78. package/lib/onchain/account/lendingPool/onchainAccountBorrowable.js +5 -50
  79. package/lib/onchain/account/lendingPool/onchainAccountBorrowableV2.d.ts +10 -0
  80. package/lib/onchain/account/lendingPool/onchainAccountBorrowableV2.js +55 -0
  81. package/lib/onchain/account/lendingPool/onchainAccountBorrowableV3.d.ts +10 -0
  82. package/lib/onchain/account/lendingPool/onchainAccountBorrowableV3.js +28 -0
  83. package/lib/onchain/account/lendingPool/onchainAccountCollateral.d.ts +6 -19
  84. package/lib/onchain/account/lendingPool/onchainAccountCollateral.js +7 -90
  85. package/lib/onchain/account/lendingPool/onchainAccountCollateralV2.d.ts +25 -0
  86. package/lib/onchain/account/lendingPool/onchainAccountCollateralV2.js +99 -0
  87. package/lib/onchain/account/lendingPool/onchainAccountCollateralV3.d.ts +18 -0
  88. package/lib/onchain/account/lendingPool/onchainAccountCollateralV3.js +44 -0
  89. package/lib/onchain/account/lendingPool/onchainAccountLendingPool.d.ts +19 -34
  90. package/lib/onchain/account/lendingPool/onchainAccountLendingPool.js +17 -227
  91. package/lib/onchain/account/lendingPool/onchainAccountLendingPoolV2.d.ts +44 -0
  92. package/lib/onchain/account/lendingPool/onchainAccountLendingPoolV2.js +285 -0
  93. package/lib/onchain/account/lendingPool/onchainAccountLendingPoolV3.d.ts +27 -0
  94. package/lib/onchain/account/lendingPool/onchainAccountLendingPoolV3.js +32 -0
  95. package/lib/onchain/account/onchainAccount.js +1 -2
  96. package/lib/onchain/account/onchainAccountLendingVault.d.ts +3 -3
  97. package/lib/onchain/impermaxFactory/index.d.ts +3 -1
  98. package/lib/onchain/impermaxFactory/index.js +5 -1
  99. package/lib/onchain/impermaxFactory/lendingPool/index.d.ts +8 -1
  100. package/lib/onchain/impermaxFactory/lendingPool/index.js +39 -1
  101. package/lib/onchain/impermaxFactory/lendingPool/nftlp/index.d.ts +4 -0
  102. package/lib/onchain/impermaxFactory/lendingPool/nftlp/index.js +11 -0
  103. package/lib/onchain/impermaxFactory/lendingPool/nftlp/onchainNftlp.d.ts +22 -0
  104. package/lib/onchain/impermaxFactory/lendingPool/nftlp/onchainNftlp.js +19 -0
  105. package/lib/onchain/impermaxFactory/lendingPool/nftlp/onchainNftlpUniswapV3.d.ts +24 -0
  106. package/lib/onchain/impermaxFactory/lendingPool/nftlp/onchainNftlpUniswapV3.js +90 -0
  107. package/lib/onchain/impermaxFactory/lendingPool/onchainBorrowable.d.ts +15 -11
  108. package/lib/onchain/impermaxFactory/lendingPool/onchainBorrowable.js +5 -24
  109. package/lib/onchain/impermaxFactory/lendingPool/onchainBorrowableV2.d.ts +9 -0
  110. package/lib/onchain/impermaxFactory/lendingPool/onchainBorrowableV2.js +36 -0
  111. package/lib/onchain/impermaxFactory/lendingPool/onchainBorrowableV3.d.ts +7 -0
  112. package/lib/onchain/impermaxFactory/lendingPool/onchainBorrowableV3.js +23 -0
  113. package/lib/onchain/impermaxFactory/lendingPool/onchainCollateral.d.ts +5 -16
  114. package/lib/onchain/impermaxFactory/lendingPool/onchainCollateral.js +6 -43
  115. package/lib/onchain/impermaxFactory/lendingPool/onchainCollateralV2.d.ts +20 -0
  116. package/lib/onchain/impermaxFactory/lendingPool/onchainCollateralV2.js +58 -0
  117. package/lib/onchain/impermaxFactory/lendingPool/onchainCollateralV3.d.ts +13 -0
  118. package/lib/onchain/impermaxFactory/lendingPool/onchainCollateralV3.js +36 -0
  119. package/lib/onchain/impermaxFactory/lendingPool/onchainLendingPool.d.ts +32 -47
  120. package/lib/onchain/impermaxFactory/lendingPool/onchainLendingPool.js +28 -314
  121. package/lib/onchain/impermaxFactory/lendingPool/onchainLendingPoolV2.d.ts +76 -0
  122. package/lib/onchain/impermaxFactory/lendingPool/onchainLendingPoolV2.js +338 -0
  123. package/lib/onchain/impermaxFactory/lendingPool/onchainLendingPoolV3.d.ts +42 -0
  124. package/lib/onchain/impermaxFactory/lendingPool/onchainLendingPoolV3.js +39 -0
  125. package/lib/onchain/impermaxFactory/onchainImpermaxFactory.d.ts +19 -9
  126. package/lib/onchain/impermaxFactory/onchainImpermaxFactory.js +16 -26
  127. package/lib/onchain/impermaxFactory/onchainImpermaxFactoryV2.d.ts +16 -0
  128. package/lib/onchain/impermaxFactory/onchainImpermaxFactoryV2.js +81 -0
  129. package/lib/onchain/impermaxFactory/onchainImpermaxFactoryV3.d.ts +16 -0
  130. package/lib/onchain/impermaxFactory/onchainImpermaxFactoryV3.js +88 -0
  131. package/lib/onchain/interactions/lendingPool/index.d.ts +8 -1
  132. package/lib/onchain/interactions/lendingPool/index.js +38 -1
  133. package/lib/onchain/interactions/lendingPool/nftlp/index.d.ts +4 -0
  134. package/lib/onchain/interactions/lendingPool/nftlp/index.js +11 -0
  135. package/lib/onchain/interactions/lendingPool/nftlp/onchainInteractionsNftlp.d.ts +7 -0
  136. package/lib/onchain/interactions/lendingPool/nftlp/onchainInteractionsNftlp.js +12 -0
  137. package/lib/onchain/interactions/lendingPool/nftlp/onchainInteractionsNftlpUniswapV3.d.ts +4 -0
  138. package/lib/onchain/interactions/lendingPool/nftlp/onchainInteractionsNftlpUniswapV3.js +13 -0
  139. package/lib/onchain/interactions/lendingPool/onchainInteractionsBorrowable.d.ts +6 -10
  140. package/lib/onchain/interactions/lendingPool/onchainInteractionsBorrowable.js +5 -37
  141. package/lib/onchain/interactions/lendingPool/onchainInteractionsBorrowableV2.d.ts +15 -0
  142. package/lib/onchain/interactions/lendingPool/onchainInteractionsBorrowableV2.js +63 -0
  143. package/lib/onchain/interactions/lendingPool/onchainInteractionsBorrowableV3.d.ts +9 -0
  144. package/lib/onchain/interactions/lendingPool/onchainInteractionsBorrowableV3.js +14 -0
  145. package/lib/onchain/interactions/lendingPool/onchainInteractionsCollateral.d.ts +3 -15
  146. package/lib/onchain/interactions/lendingPool/onchainInteractionsCollateral.js +5 -37
  147. package/lib/onchain/interactions/lendingPool/onchainInteractionsCollateralV2.d.ts +20 -0
  148. package/lib/onchain/interactions/lendingPool/onchainInteractionsCollateralV2.js +48 -0
  149. package/lib/onchain/interactions/lendingPool/onchainInteractionsCollateralV3.d.ts +13 -0
  150. package/lib/onchain/interactions/lendingPool/onchainInteractionsCollateralV3.js +20 -0
  151. package/lib/onchain/interactions/lendingPool/onchainInteractionsLendingPool.d.ts +16 -31
  152. package/lib/onchain/interactions/lendingPool/onchainInteractionsLendingPool.js +12 -94
  153. package/lib/onchain/interactions/lendingPool/onchainInteractionsLendingPoolV2.d.ts +42 -0
  154. package/lib/onchain/interactions/lendingPool/onchainInteractionsLendingPoolV2.js +114 -0
  155. package/lib/onchain/interactions/lendingPool/onchainInteractionsLendingPoolV3.d.ts +27 -0
  156. package/lib/onchain/interactions/lendingPool/onchainInteractionsLendingPoolV3.js +32 -0
  157. package/lib/onchain/interactions/onchainInteractions.js +3 -4
  158. package/lib/onchain/interactions/onchainInteractionsLendingVault.d.ts +1 -1
  159. package/lib/onchain/interactions/onchainInteractionsLendingVault.js +1 -1
  160. package/lib/onchain/interactions/onchainInteractionsPoolToken.d.ts +13 -13
  161. package/lib/onchain/interactions/onchainInteractionsPoolToken.js +33 -85
  162. package/lib/onchain/onchain.d.ts +3 -0
  163. package/lib/onchain/onchain.js +11 -3
  164. package/lib/onchain/onchainContractsHelper.d.ts +19 -8
  165. package/lib/onchain/onchainContractsHelper.js +55 -21
  166. package/lib/onchain/onchainLendingVault.d.ts +3 -3
  167. package/lib/onchain/onchainPermitHelper.d.ts +21 -0
  168. package/lib/onchain/onchainPermitHelper.js +198 -0
  169. package/lib/onchain/onchainTypes.d.ts +6 -0
  170. package/package.json +1 -1
  171. package/lib/offchain/account/offchainAccountLendingVault.d.ts +0 -16
@@ -0,0 +1,3772 @@
1
+ {
2
+ "contractName": "IAllowanceTransfer",
3
+ "abi": [
4
+ {
5
+ "constant": true,
6
+ "inputs": [],
7
+ "name": "DOMAIN_SEPARATOR",
8
+ "outputs": [
9
+ {
10
+ "internalType": "bytes32",
11
+ "name": "",
12
+ "type": "bytes32"
13
+ }
14
+ ],
15
+ "payable": false,
16
+ "stateMutability": "view",
17
+ "type": "function"
18
+ },
19
+ {
20
+ "constant": true,
21
+ "inputs": [
22
+ {
23
+ "internalType": "address",
24
+ "name": "user",
25
+ "type": "address"
26
+ },
27
+ {
28
+ "internalType": "address",
29
+ "name": "token",
30
+ "type": "address"
31
+ },
32
+ {
33
+ "internalType": "address",
34
+ "name": "spender",
35
+ "type": "address"
36
+ }
37
+ ],
38
+ "name": "allowance",
39
+ "outputs": [
40
+ {
41
+ "internalType": "uint160",
42
+ "name": "amount",
43
+ "type": "uint160"
44
+ },
45
+ {
46
+ "internalType": "uint48",
47
+ "name": "expiration",
48
+ "type": "uint48"
49
+ },
50
+ {
51
+ "internalType": "uint48",
52
+ "name": "nonce",
53
+ "type": "uint48"
54
+ }
55
+ ],
56
+ "payable": false,
57
+ "stateMutability": "view",
58
+ "type": "function"
59
+ },
60
+ {
61
+ "constant": false,
62
+ "inputs": [
63
+ {
64
+ "internalType": "address",
65
+ "name": "token",
66
+ "type": "address"
67
+ },
68
+ {
69
+ "internalType": "address",
70
+ "name": "spender",
71
+ "type": "address"
72
+ },
73
+ {
74
+ "internalType": "uint160",
75
+ "name": "amount",
76
+ "type": "uint160"
77
+ },
78
+ {
79
+ "internalType": "uint48",
80
+ "name": "expiration",
81
+ "type": "uint48"
82
+ }
83
+ ],
84
+ "name": "approve",
85
+ "outputs": [],
86
+ "payable": false,
87
+ "stateMutability": "nonpayable",
88
+ "type": "function"
89
+ },
90
+ {
91
+ "constant": false,
92
+ "inputs": [
93
+ {
94
+ "internalType": "address",
95
+ "name": "owner",
96
+ "type": "address"
97
+ },
98
+ {
99
+ "components": [
100
+ {
101
+ "components": [
102
+ {
103
+ "internalType": "address",
104
+ "name": "token",
105
+ "type": "address"
106
+ },
107
+ {
108
+ "internalType": "uint160",
109
+ "name": "amount",
110
+ "type": "uint160"
111
+ },
112
+ {
113
+ "internalType": "uint48",
114
+ "name": "expiration",
115
+ "type": "uint48"
116
+ },
117
+ {
118
+ "internalType": "uint48",
119
+ "name": "nonce",
120
+ "type": "uint48"
121
+ }
122
+ ],
123
+ "internalType": "struct IAllowanceTransfer.PermitDetails[]",
124
+ "name": "details",
125
+ "type": "tuple[]"
126
+ },
127
+ {
128
+ "internalType": "address",
129
+ "name": "spender",
130
+ "type": "address"
131
+ },
132
+ {
133
+ "internalType": "uint256",
134
+ "name": "sigDeadline",
135
+ "type": "uint256"
136
+ }
137
+ ],
138
+ "internalType": "struct IAllowanceTransfer.PermitBatch",
139
+ "name": "permitBatch",
140
+ "type": "tuple"
141
+ },
142
+ {
143
+ "internalType": "bytes",
144
+ "name": "signature",
145
+ "type": "bytes"
146
+ }
147
+ ],
148
+ "name": "permit",
149
+ "outputs": [],
150
+ "payable": false,
151
+ "stateMutability": "nonpayable",
152
+ "type": "function"
153
+ },
154
+ {
155
+ "constant": false,
156
+ "inputs": [
157
+ {
158
+ "internalType": "address",
159
+ "name": "owner",
160
+ "type": "address"
161
+ },
162
+ {
163
+ "components": [
164
+ {
165
+ "components": [
166
+ {
167
+ "internalType": "address",
168
+ "name": "token",
169
+ "type": "address"
170
+ },
171
+ {
172
+ "internalType": "uint160",
173
+ "name": "amount",
174
+ "type": "uint160"
175
+ },
176
+ {
177
+ "internalType": "uint48",
178
+ "name": "expiration",
179
+ "type": "uint48"
180
+ },
181
+ {
182
+ "internalType": "uint48",
183
+ "name": "nonce",
184
+ "type": "uint48"
185
+ }
186
+ ],
187
+ "internalType": "struct IAllowanceTransfer.PermitDetails",
188
+ "name": "details",
189
+ "type": "tuple"
190
+ },
191
+ {
192
+ "internalType": "address",
193
+ "name": "spender",
194
+ "type": "address"
195
+ },
196
+ {
197
+ "internalType": "uint256",
198
+ "name": "sigDeadline",
199
+ "type": "uint256"
200
+ }
201
+ ],
202
+ "internalType": "struct IAllowanceTransfer.PermitSingle",
203
+ "name": "permitSingle",
204
+ "type": "tuple"
205
+ },
206
+ {
207
+ "internalType": "bytes",
208
+ "name": "signature",
209
+ "type": "bytes"
210
+ }
211
+ ],
212
+ "name": "permit",
213
+ "outputs": [],
214
+ "payable": false,
215
+ "stateMutability": "nonpayable",
216
+ "type": "function"
217
+ },
218
+ {
219
+ "constant": false,
220
+ "inputs": [
221
+ {
222
+ "components": [
223
+ {
224
+ "internalType": "address",
225
+ "name": "from",
226
+ "type": "address"
227
+ },
228
+ {
229
+ "internalType": "address",
230
+ "name": "to",
231
+ "type": "address"
232
+ },
233
+ {
234
+ "internalType": "uint160",
235
+ "name": "amount",
236
+ "type": "uint160"
237
+ },
238
+ {
239
+ "internalType": "address",
240
+ "name": "token",
241
+ "type": "address"
242
+ }
243
+ ],
244
+ "internalType": "struct IAllowanceTransfer.AllowanceTransferDetails[]",
245
+ "name": "transferDetails",
246
+ "type": "tuple[]"
247
+ }
248
+ ],
249
+ "name": "transferFrom",
250
+ "outputs": [],
251
+ "payable": false,
252
+ "stateMutability": "nonpayable",
253
+ "type": "function"
254
+ },
255
+ {
256
+ "constant": false,
257
+ "inputs": [
258
+ {
259
+ "internalType": "address",
260
+ "name": "from",
261
+ "type": "address"
262
+ },
263
+ {
264
+ "internalType": "address",
265
+ "name": "to",
266
+ "type": "address"
267
+ },
268
+ {
269
+ "internalType": "uint160",
270
+ "name": "amount",
271
+ "type": "uint160"
272
+ },
273
+ {
274
+ "internalType": "address",
275
+ "name": "token",
276
+ "type": "address"
277
+ }
278
+ ],
279
+ "name": "transferFrom",
280
+ "outputs": [],
281
+ "payable": false,
282
+ "stateMutability": "nonpayable",
283
+ "type": "function"
284
+ },
285
+ {
286
+ "constant": false,
287
+ "inputs": [
288
+ {
289
+ "components": [
290
+ {
291
+ "internalType": "address",
292
+ "name": "token",
293
+ "type": "address"
294
+ },
295
+ {
296
+ "internalType": "address",
297
+ "name": "spender",
298
+ "type": "address"
299
+ }
300
+ ],
301
+ "internalType": "struct IAllowanceTransfer.TokenSpenderPair[]",
302
+ "name": "approvals",
303
+ "type": "tuple[]"
304
+ }
305
+ ],
306
+ "name": "lockdown",
307
+ "outputs": [],
308
+ "payable": false,
309
+ "stateMutability": "nonpayable",
310
+ "type": "function"
311
+ },
312
+ {
313
+ "constant": false,
314
+ "inputs": [
315
+ {
316
+ "internalType": "address",
317
+ "name": "token",
318
+ "type": "address"
319
+ },
320
+ {
321
+ "internalType": "address",
322
+ "name": "spender",
323
+ "type": "address"
324
+ },
325
+ {
326
+ "internalType": "uint48",
327
+ "name": "newNonce",
328
+ "type": "uint48"
329
+ }
330
+ ],
331
+ "name": "invalidateNonces",
332
+ "outputs": [],
333
+ "payable": false,
334
+ "stateMutability": "nonpayable",
335
+ "type": "function"
336
+ }
337
+ ],
338
+ "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"newNonce\",\"type\":\"uint48\"}],\"name\":\"invalidateNonces\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"internalType\":\"struct IAllowanceTransfer.TokenSpenderPair[]\",\"name\":\"approvals\",\"type\":\"tuple[]\"}],\"name\":\"lockdown\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails[]\",\"name\":\"details\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitBatch\",\"name\":\"permitBatch\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitSingle\",\"name\":\"permitSingle\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct IAllowanceTransfer.AllowanceTransferDetails[]\",\"name\":\"transferDetails\",\"type\":\"tuple[]\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"allowance(address,address,address)\":{\"details\":\"The packed slot holds the allowed amount, expiration at which the allowed amount is no longer valid, and current nonce thats updated on any signature based approvals.\"},\"approve(address,address,uint160,uint48)\":{\"details\":\"The packed allowance also holds a nonce, which will stay unchanged in approveSetting amount to type(uint160).max sets an unlimited approval\",\"params\":{\"amount\":\"The approved amount of the token\",\"expiration\":\"The timestamp at which the approval is no longer valid\",\"spender\":\"The spender address to approve\",\"token\":\"The token to approve\"}},\"invalidateNonces(address,address,uint48)\":{\"details\":\"Can't invalidate more than 2**16 nonces per transaction.\",\"params\":{\"newNonce\":\"The new nonce to set. Invalidates all nonces less than it.\",\"spender\":\"The spender to invalidate nonces for\",\"token\":\"The token to invalidate nonces for\"}},\"lockdown((address,address)[])\":{\"params\":{\"approvals\":\"Array of approvals to revoke.\"}},\"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)\":{\"details\":\"May fail if the owner's nonce was invalidated in-flight by invalidateNonce\",\"params\":{\"owner\":\"The owner of the tokens being approved\",\"permitSingle\":\"Data signed over by the owner specifying the terms of approval\",\"signature\":\"The owner's signature over the permit data\"}},\"permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)\":{\"details\":\"May fail if the owner's nonce was invalidated in-flight by invalidateNonce\",\"params\":{\"owner\":\"The owner of the tokens being approved\",\"permitBatch\":\"Data signed over by the owner specifying the terms of approval\",\"signature\":\"The owner's signature over the permit data\"}},\"transferFrom((address,address,uint160,address)[])\":{\"details\":\"Requires the from addresses to have approved at least the desired amount of tokens to msg.sender.\",\"params\":{\"transferDetails\":\"Array of owners, recipients, amounts, and tokens for the transfers\"}},\"transferFrom(address,address,uint160,address)\":{\"details\":\"Requires the from address to have approved at least the desired amount of tokens to msg.sender.\",\"params\":{\"amount\":\"The amount of the token to transfer\",\"from\":\"The address to transfer from\",\"to\":\"The address of the recipient\",\"token\":\"The token address to transfer\"}}}},\"userdoc\":{\"methods\":{\"allowance(address,address,address)\":{\"notice\":\"A mapping from owner address to token address to spender address to PackedAllowance struct, which contains details and conditions of the approval.The mapping is indexed in the above order see: allowance[ownerAddress][tokenAddress][spenderAddress]\"},\"approve(address,address,uint160,uint48)\":{\"notice\":\"Approves the spender to use up to amount of the specified token up until the expiration\"},\"invalidateNonces(address,address,uint48)\":{\"notice\":\"Invalidate nonces for a given (token, spender) pair\"},\"lockdown((address,address)[])\":{\"notice\":\"Enables performing a \\\"lockdown\\\" of the sender's Permit2 identity by batch revoking approvals\"},\"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)\":{\"notice\":\"Permit a spender to a given amount of the owners token via the owner's EIP-712 signature\"},\"permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)\":{\"notice\":\"Permit a spender to the signed amounts of the owners tokens via the owner's EIP-712 signature\"},\"transferFrom((address,address,uint160,address)[])\":{\"notice\":\"Transfer approved tokens in a batch\"},\"transferFrom(address,address,uint160,address)\":{\"notice\":\"Transfer approved tokens from one address to another\"}}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/interfaces/IAllowanceTransfer.sol\":\"IAllowanceTransfer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"project:/contracts/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x8c7137aaf145c20462c2594ccd02b57708bfd8bcb91c9dd6fc0791b138a9d69c\",\"urls\":[\"bzz-raw://d33a8d3b1e1c2b97c9df13e9e50f2959646e11c86faf3c44f2289954ca5d8b45\",\"dweb:/ipfs/QmVsXBSk3KyKWTxzuBbsPqKr2mymCokLTFV2GXiRrgfKKQ\"]}},\"version\":1}",
339
+ "bytecode": "0x",
340
+ "deployedBytecode": "0x",
341
+ "sourceMap": "",
342
+ "deployedSourceMap": "",
343
+ "source": "// SPDX-License-Identifier: MIT\npragma solidity >=0.5.0;\npragma experimental ABIEncoderV2;\n\ninterface IAllowanceTransfer {\n\n\tfunction DOMAIN_SEPARATOR() external view returns (bytes32);\n\n /// @notice The permit data for a token\n struct PermitDetails {\n // ERC20 token address\n address token;\n // the maximum amount allowed to spend\n uint160 amount;\n // timestamp at which a spender's token allowances become invalid\n uint48 expiration;\n // an incrementing value indexed per owner,token,and spender for each signature\n uint48 nonce;\n }\n\n /// @notice The permit message signed for a single token allowance\n struct PermitSingle {\n // the permit data for a single token alownce\n PermitDetails details;\n // address permissioned on the allowed tokens\n address spender;\n // deadline on the permit signature\n uint256 sigDeadline;\n }\n\n /// @notice The permit message signed for multiple token allowances\n struct PermitBatch {\n // the permit data for multiple token allowances\n PermitDetails[] details;\n // address permissioned on the allowed tokens\n address spender;\n // deadline on the permit signature\n uint256 sigDeadline;\n }\n\n /// @notice The saved permissions\n /// @dev This info is saved per owner, per token, per spender and all signed over in the permit message\n /// @dev Setting amount to type(uint160).max sets an unlimited approval\n struct PackedAllowance {\n // amount allowed\n uint160 amount;\n // permission expiry\n uint48 expiration;\n // an incrementing value indexed per owner,token,and spender for each signature\n uint48 nonce;\n }\n\n /// @notice A token spender pair.\n struct TokenSpenderPair {\n // the token the spender is approved\n address token;\n // the spender address\n address spender;\n }\n\n /// @notice Details for a token transfer.\n struct AllowanceTransferDetails {\n // the owner of the token\n address from;\n // the recipient of the token\n address to;\n // the amount of the token\n uint160 amount;\n // the token to be transferred\n address token;\n }\n\n /// @notice A mapping from owner address to token address to spender address to PackedAllowance struct, which contains details and conditions of the approval.\n /// @notice The mapping is indexed in the above order see: allowance[ownerAddress][tokenAddress][spenderAddress]\n /// @dev The packed slot holds the allowed amount, expiration at which the allowed amount is no longer valid, and current nonce thats updated on any signature based approvals.\n function allowance(address user, address token, address spender)\n external\n view\n returns (uint160 amount, uint48 expiration, uint48 nonce);\n\n /// @notice Approves the spender to use up to amount of the specified token up until the expiration\n /// @param token The token to approve\n /// @param spender The spender address to approve\n /// @param amount The approved amount of the token\n /// @param expiration The timestamp at which the approval is no longer valid\n /// @dev The packed allowance also holds a nonce, which will stay unchanged in approve\n /// @dev Setting amount to type(uint160).max sets an unlimited approval\n function approve(address token, address spender, uint160 amount, uint48 expiration) external;\n\n /// @notice Permit a spender to a given amount of the owners token via the owner's EIP-712 signature\n /// @dev May fail if the owner's nonce was invalidated in-flight by invalidateNonce\n /// @param owner The owner of the tokens being approved\n /// @param permitSingle Data signed over by the owner specifying the terms of approval\n /// @param signature The owner's signature over the permit data\n function permit(address owner, PermitSingle calldata permitSingle, bytes calldata signature) external;\n\n /// @notice Permit a spender to the signed amounts of the owners tokens via the owner's EIP-712 signature\n /// @dev May fail if the owner's nonce was invalidated in-flight by invalidateNonce\n /// @param owner The owner of the tokens being approved\n /// @param permitBatch Data signed over by the owner specifying the terms of approval\n /// @param signature The owner's signature over the permit data\n function permit(address owner, PermitBatch calldata permitBatch, bytes calldata signature) external;\n\n /// @notice Transfer approved tokens from one address to another\n /// @param from The address to transfer from\n /// @param to The address of the recipient\n /// @param amount The amount of the token to transfer\n /// @param token The token address to transfer\n /// @dev Requires the from address to have approved at least the desired amount\n /// of tokens to msg.sender.\n function transferFrom(address from, address to, uint160 amount, address token) external;\n\n /// @notice Transfer approved tokens in a batch\n /// @param transferDetails Array of owners, recipients, amounts, and tokens for the transfers\n /// @dev Requires the from addresses to have approved at least the desired amount\n /// of tokens to msg.sender.\n function transferFrom(AllowanceTransferDetails[] calldata transferDetails) external;\n\n /// @notice Enables performing a \"lockdown\" of the sender's Permit2 identity\n /// by batch revoking approvals\n /// @param approvals Array of approvals to revoke.\n function lockdown(TokenSpenderPair[] calldata approvals) external;\n\n /// @notice Invalidate nonces for a given (token, spender) pair\n /// @param token The token to invalidate nonces for\n /// @param spender The spender to invalidate nonces for\n /// @param newNonce The new nonce to set. Invalidates all nonces less than it.\n /// @dev Can't invalidate more than 2**16 nonces per transaction.\n function invalidateNonces(address token, address spender, uint48 newNonce) external;\n}\n",
344
+ "sourcePath": "C:\\Users\\Simone\\Desktop\\impermax-v3-periphery\\contracts\\interfaces\\IAllowanceTransfer.sol",
345
+ "ast": {
346
+ "absolutePath": "project:/contracts/interfaces/IAllowanceTransfer.sol",
347
+ "exportedSymbols": {
348
+ "IAllowanceTransfer": [
349
+ 15578
350
+ ]
351
+ },
352
+ "id": 15579,
353
+ "nodeType": "SourceUnit",
354
+ "nodes": [
355
+ {
356
+ "id": 15450,
357
+ "literals": [
358
+ "solidity",
359
+ ">=",
360
+ "0.5",
361
+ ".0"
362
+ ],
363
+ "nodeType": "PragmaDirective",
364
+ "src": "32:24:56"
365
+ },
366
+ {
367
+ "id": 15451,
368
+ "literals": [
369
+ "experimental",
370
+ "ABIEncoderV2"
371
+ ],
372
+ "nodeType": "PragmaDirective",
373
+ "src": "57:33:56"
374
+ },
375
+ {
376
+ "baseContracts": [],
377
+ "contractDependencies": [],
378
+ "contractKind": "interface",
379
+ "documentation": null,
380
+ "fullyImplemented": false,
381
+ "id": 15578,
382
+ "linearizedBaseContracts": [
383
+ 15578
384
+ ],
385
+ "name": "IAllowanceTransfer",
386
+ "nodeType": "ContractDefinition",
387
+ "nodes": [
388
+ {
389
+ "body": null,
390
+ "documentation": null,
391
+ "id": 15456,
392
+ "implemented": false,
393
+ "kind": "function",
394
+ "modifiers": [],
395
+ "name": "DOMAIN_SEPARATOR",
396
+ "nodeType": "FunctionDefinition",
397
+ "parameters": {
398
+ "id": 15452,
399
+ "nodeType": "ParameterList",
400
+ "parameters": [],
401
+ "src": "150:2:56"
402
+ },
403
+ "returnParameters": {
404
+ "id": 15455,
405
+ "nodeType": "ParameterList",
406
+ "parameters": [
407
+ {
408
+ "constant": false,
409
+ "id": 15454,
410
+ "name": "",
411
+ "nodeType": "VariableDeclaration",
412
+ "scope": 15456,
413
+ "src": "176:7:56",
414
+ "stateVariable": false,
415
+ "storageLocation": "default",
416
+ "typeDescriptions": {
417
+ "typeIdentifier": "t_bytes32",
418
+ "typeString": "bytes32"
419
+ },
420
+ "typeName": {
421
+ "id": 15453,
422
+ "name": "bytes32",
423
+ "nodeType": "ElementaryTypeName",
424
+ "src": "176:7:56",
425
+ "typeDescriptions": {
426
+ "typeIdentifier": "t_bytes32",
427
+ "typeString": "bytes32"
428
+ }
429
+ },
430
+ "value": null,
431
+ "visibility": "internal"
432
+ }
433
+ ],
434
+ "src": "175:9:56"
435
+ },
436
+ "scope": 15578,
437
+ "src": "125:60:56",
438
+ "stateMutability": "view",
439
+ "superFunction": null,
440
+ "visibility": "external"
441
+ },
442
+ {
443
+ "canonicalName": "IAllowanceTransfer.PermitDetails",
444
+ "id": 15465,
445
+ "members": [
446
+ {
447
+ "constant": false,
448
+ "id": 15458,
449
+ "name": "token",
450
+ "nodeType": "VariableDeclaration",
451
+ "scope": 15465,
452
+ "src": "297:13:56",
453
+ "stateVariable": false,
454
+ "storageLocation": "default",
455
+ "typeDescriptions": {
456
+ "typeIdentifier": "t_address",
457
+ "typeString": "address"
458
+ },
459
+ "typeName": {
460
+ "id": 15457,
461
+ "name": "address",
462
+ "nodeType": "ElementaryTypeName",
463
+ "src": "297:7:56",
464
+ "stateMutability": "nonpayable",
465
+ "typeDescriptions": {
466
+ "typeIdentifier": "t_address",
467
+ "typeString": "address"
468
+ }
469
+ },
470
+ "value": null,
471
+ "visibility": "internal"
472
+ },
473
+ {
474
+ "constant": false,
475
+ "id": 15460,
476
+ "name": "amount",
477
+ "nodeType": "VariableDeclaration",
478
+ "scope": 15465,
479
+ "src": "367:14:56",
480
+ "stateVariable": false,
481
+ "storageLocation": "default",
482
+ "typeDescriptions": {
483
+ "typeIdentifier": "t_uint160",
484
+ "typeString": "uint160"
485
+ },
486
+ "typeName": {
487
+ "id": 15459,
488
+ "name": "uint160",
489
+ "nodeType": "ElementaryTypeName",
490
+ "src": "367:7:56",
491
+ "typeDescriptions": {
492
+ "typeIdentifier": "t_uint160",
493
+ "typeString": "uint160"
494
+ }
495
+ },
496
+ "value": null,
497
+ "visibility": "internal"
498
+ },
499
+ {
500
+ "constant": false,
501
+ "id": 15462,
502
+ "name": "expiration",
503
+ "nodeType": "VariableDeclaration",
504
+ "scope": 15465,
505
+ "src": "465:17:56",
506
+ "stateVariable": false,
507
+ "storageLocation": "default",
508
+ "typeDescriptions": {
509
+ "typeIdentifier": "t_uint48",
510
+ "typeString": "uint48"
511
+ },
512
+ "typeName": {
513
+ "id": 15461,
514
+ "name": "uint48",
515
+ "nodeType": "ElementaryTypeName",
516
+ "src": "465:6:56",
517
+ "typeDescriptions": {
518
+ "typeIdentifier": "t_uint48",
519
+ "typeString": "uint48"
520
+ }
521
+ },
522
+ "value": null,
523
+ "visibility": "internal"
524
+ },
525
+ {
526
+ "constant": false,
527
+ "id": 15464,
528
+ "name": "nonce",
529
+ "nodeType": "VariableDeclaration",
530
+ "scope": 15465,
531
+ "src": "580:12:56",
532
+ "stateVariable": false,
533
+ "storageLocation": "default",
534
+ "typeDescriptions": {
535
+ "typeIdentifier": "t_uint48",
536
+ "typeString": "uint48"
537
+ },
538
+ "typeName": {
539
+ "id": 15463,
540
+ "name": "uint48",
541
+ "nodeType": "ElementaryTypeName",
542
+ "src": "580:6:56",
543
+ "typeDescriptions": {
544
+ "typeIdentifier": "t_uint48",
545
+ "typeString": "uint48"
546
+ }
547
+ },
548
+ "value": null,
549
+ "visibility": "internal"
550
+ }
551
+ ],
552
+ "name": "PermitDetails",
553
+ "nodeType": "StructDefinition",
554
+ "scope": 15578,
555
+ "src": "235:364:56",
556
+ "visibility": "public"
557
+ },
558
+ {
559
+ "canonicalName": "IAllowanceTransfer.PermitSingle",
560
+ "id": 15472,
561
+ "members": [
562
+ {
563
+ "constant": false,
564
+ "id": 15467,
565
+ "name": "details",
566
+ "nodeType": "VariableDeclaration",
567
+ "scope": 15472,
568
+ "src": "760:21:56",
569
+ "stateVariable": false,
570
+ "storageLocation": "default",
571
+ "typeDescriptions": {
572
+ "typeIdentifier": "t_struct$_PermitDetails_$15465_storage_ptr",
573
+ "typeString": "struct IAllowanceTransfer.PermitDetails"
574
+ },
575
+ "typeName": {
576
+ "contractScope": null,
577
+ "id": 15466,
578
+ "name": "PermitDetails",
579
+ "nodeType": "UserDefinedTypeName",
580
+ "referencedDeclaration": 15465,
581
+ "src": "760:13:56",
582
+ "typeDescriptions": {
583
+ "typeIdentifier": "t_struct$_PermitDetails_$15465_storage_ptr",
584
+ "typeString": "struct IAllowanceTransfer.PermitDetails"
585
+ }
586
+ },
587
+ "value": null,
588
+ "visibility": "internal"
589
+ },
590
+ {
591
+ "constant": false,
592
+ "id": 15469,
593
+ "name": "spender",
594
+ "nodeType": "VariableDeclaration",
595
+ "scope": 15472,
596
+ "src": "845:15:56",
597
+ "stateVariable": false,
598
+ "storageLocation": "default",
599
+ "typeDescriptions": {
600
+ "typeIdentifier": "t_address",
601
+ "typeString": "address"
602
+ },
603
+ "typeName": {
604
+ "id": 15468,
605
+ "name": "address",
606
+ "nodeType": "ElementaryTypeName",
607
+ "src": "845:7:56",
608
+ "stateMutability": "nonpayable",
609
+ "typeDescriptions": {
610
+ "typeIdentifier": "t_address",
611
+ "typeString": "address"
612
+ }
613
+ },
614
+ "value": null,
615
+ "visibility": "internal"
616
+ },
617
+ {
618
+ "constant": false,
619
+ "id": 15471,
620
+ "name": "sigDeadline",
621
+ "nodeType": "VariableDeclaration",
622
+ "scope": 15472,
623
+ "src": "914:19:56",
624
+ "stateVariable": false,
625
+ "storageLocation": "default",
626
+ "typeDescriptions": {
627
+ "typeIdentifier": "t_uint256",
628
+ "typeString": "uint256"
629
+ },
630
+ "typeName": {
631
+ "id": 15470,
632
+ "name": "uint256",
633
+ "nodeType": "ElementaryTypeName",
634
+ "src": "914:7:56",
635
+ "typeDescriptions": {
636
+ "typeIdentifier": "t_uint256",
637
+ "typeString": "uint256"
638
+ }
639
+ },
640
+ "value": null,
641
+ "visibility": "internal"
642
+ }
643
+ ],
644
+ "name": "PermitSingle",
645
+ "nodeType": "StructDefinition",
646
+ "scope": 15578,
647
+ "src": "676:264:56",
648
+ "visibility": "public"
649
+ },
650
+ {
651
+ "canonicalName": "IAllowanceTransfer.PermitBatch",
652
+ "id": 15480,
653
+ "members": [
654
+ {
655
+ "constant": false,
656
+ "id": 15475,
657
+ "name": "details",
658
+ "nodeType": "VariableDeclaration",
659
+ "scope": 15480,
660
+ "src": "1104:23:56",
661
+ "stateVariable": false,
662
+ "storageLocation": "default",
663
+ "typeDescriptions": {
664
+ "typeIdentifier": "t_array$_t_struct$_PermitDetails_$15465_storage_$dyn_storage_ptr",
665
+ "typeString": "struct IAllowanceTransfer.PermitDetails[]"
666
+ },
667
+ "typeName": {
668
+ "baseType": {
669
+ "contractScope": null,
670
+ "id": 15473,
671
+ "name": "PermitDetails",
672
+ "nodeType": "UserDefinedTypeName",
673
+ "referencedDeclaration": 15465,
674
+ "src": "1104:13:56",
675
+ "typeDescriptions": {
676
+ "typeIdentifier": "t_struct$_PermitDetails_$15465_storage_ptr",
677
+ "typeString": "struct IAllowanceTransfer.PermitDetails"
678
+ }
679
+ },
680
+ "id": 15474,
681
+ "length": null,
682
+ "nodeType": "ArrayTypeName",
683
+ "src": "1104:15:56",
684
+ "typeDescriptions": {
685
+ "typeIdentifier": "t_array$_t_struct$_PermitDetails_$15465_storage_$dyn_storage_ptr",
686
+ "typeString": "struct IAllowanceTransfer.PermitDetails[]"
687
+ }
688
+ },
689
+ "value": null,
690
+ "visibility": "internal"
691
+ },
692
+ {
693
+ "constant": false,
694
+ "id": 15477,
695
+ "name": "spender",
696
+ "nodeType": "VariableDeclaration",
697
+ "scope": 15480,
698
+ "src": "1191:15:56",
699
+ "stateVariable": false,
700
+ "storageLocation": "default",
701
+ "typeDescriptions": {
702
+ "typeIdentifier": "t_address",
703
+ "typeString": "address"
704
+ },
705
+ "typeName": {
706
+ "id": 15476,
707
+ "name": "address",
708
+ "nodeType": "ElementaryTypeName",
709
+ "src": "1191:7:56",
710
+ "stateMutability": "nonpayable",
711
+ "typeDescriptions": {
712
+ "typeIdentifier": "t_address",
713
+ "typeString": "address"
714
+ }
715
+ },
716
+ "value": null,
717
+ "visibility": "internal"
718
+ },
719
+ {
720
+ "constant": false,
721
+ "id": 15479,
722
+ "name": "sigDeadline",
723
+ "nodeType": "VariableDeclaration",
724
+ "scope": 15480,
725
+ "src": "1260:19:56",
726
+ "stateVariable": false,
727
+ "storageLocation": "default",
728
+ "typeDescriptions": {
729
+ "typeIdentifier": "t_uint256",
730
+ "typeString": "uint256"
731
+ },
732
+ "typeName": {
733
+ "id": 15478,
734
+ "name": "uint256",
735
+ "nodeType": "ElementaryTypeName",
736
+ "src": "1260:7:56",
737
+ "typeDescriptions": {
738
+ "typeIdentifier": "t_uint256",
739
+ "typeString": "uint256"
740
+ }
741
+ },
742
+ "value": null,
743
+ "visibility": "internal"
744
+ }
745
+ ],
746
+ "name": "PermitBatch",
747
+ "nodeType": "StructDefinition",
748
+ "scope": 15578,
749
+ "src": "1018:268:56",
750
+ "visibility": "public"
751
+ },
752
+ {
753
+ "canonicalName": "IAllowanceTransfer.PackedAllowance",
754
+ "id": 15487,
755
+ "members": [
756
+ {
757
+ "constant": false,
758
+ "id": 15482,
759
+ "name": "amount",
760
+ "nodeType": "VariableDeclaration",
761
+ "scope": 15487,
762
+ "src": "1573:14:56",
763
+ "stateVariable": false,
764
+ "storageLocation": "default",
765
+ "typeDescriptions": {
766
+ "typeIdentifier": "t_uint160",
767
+ "typeString": "uint160"
768
+ },
769
+ "typeName": {
770
+ "id": 15481,
771
+ "name": "uint160",
772
+ "nodeType": "ElementaryTypeName",
773
+ "src": "1573:7:56",
774
+ "typeDescriptions": {
775
+ "typeIdentifier": "t_uint160",
776
+ "typeString": "uint160"
777
+ }
778
+ },
779
+ "value": null,
780
+ "visibility": "internal"
781
+ },
782
+ {
783
+ "constant": false,
784
+ "id": 15484,
785
+ "name": "expiration",
786
+ "nodeType": "VariableDeclaration",
787
+ "scope": 15487,
788
+ "src": "1626:17:56",
789
+ "stateVariable": false,
790
+ "storageLocation": "default",
791
+ "typeDescriptions": {
792
+ "typeIdentifier": "t_uint48",
793
+ "typeString": "uint48"
794
+ },
795
+ "typeName": {
796
+ "id": 15483,
797
+ "name": "uint48",
798
+ "nodeType": "ElementaryTypeName",
799
+ "src": "1626:6:56",
800
+ "typeDescriptions": {
801
+ "typeIdentifier": "t_uint48",
802
+ "typeString": "uint48"
803
+ }
804
+ },
805
+ "value": null,
806
+ "visibility": "internal"
807
+ },
808
+ {
809
+ "constant": false,
810
+ "id": 15486,
811
+ "name": "nonce",
812
+ "nodeType": "VariableDeclaration",
813
+ "scope": 15487,
814
+ "src": "1741:12:56",
815
+ "stateVariable": false,
816
+ "storageLocation": "default",
817
+ "typeDescriptions": {
818
+ "typeIdentifier": "t_uint48",
819
+ "typeString": "uint48"
820
+ },
821
+ "typeName": {
822
+ "id": 15485,
823
+ "name": "uint48",
824
+ "nodeType": "ElementaryTypeName",
825
+ "src": "1741:6:56",
826
+ "typeDescriptions": {
827
+ "typeIdentifier": "t_uint48",
828
+ "typeString": "uint48"
829
+ }
830
+ },
831
+ "value": null,
832
+ "visibility": "internal"
833
+ }
834
+ ],
835
+ "name": "PackedAllowance",
836
+ "nodeType": "StructDefinition",
837
+ "scope": 15578,
838
+ "src": "1514:246:56",
839
+ "visibility": "public"
840
+ },
841
+ {
842
+ "canonicalName": "IAllowanceTransfer.TokenSpenderPair",
843
+ "id": 15492,
844
+ "members": [
845
+ {
846
+ "constant": false,
847
+ "id": 15489,
848
+ "name": "token",
849
+ "nodeType": "VariableDeclaration",
850
+ "scope": 15492,
851
+ "src": "1883:13:56",
852
+ "stateVariable": false,
853
+ "storageLocation": "default",
854
+ "typeDescriptions": {
855
+ "typeIdentifier": "t_address",
856
+ "typeString": "address"
857
+ },
858
+ "typeName": {
859
+ "id": 15488,
860
+ "name": "address",
861
+ "nodeType": "ElementaryTypeName",
862
+ "src": "1883:7:56",
863
+ "stateMutability": "nonpayable",
864
+ "typeDescriptions": {
865
+ "typeIdentifier": "t_address",
866
+ "typeString": "address"
867
+ }
868
+ },
869
+ "value": null,
870
+ "visibility": "internal"
871
+ },
872
+ {
873
+ "constant": false,
874
+ "id": 15491,
875
+ "name": "spender",
876
+ "nodeType": "VariableDeclaration",
877
+ "scope": 15492,
878
+ "src": "1937:15:56",
879
+ "stateVariable": false,
880
+ "storageLocation": "default",
881
+ "typeDescriptions": {
882
+ "typeIdentifier": "t_address",
883
+ "typeString": "address"
884
+ },
885
+ "typeName": {
886
+ "id": 15490,
887
+ "name": "address",
888
+ "nodeType": "ElementaryTypeName",
889
+ "src": "1937:7:56",
890
+ "stateMutability": "nonpayable",
891
+ "typeDescriptions": {
892
+ "typeIdentifier": "t_address",
893
+ "typeString": "address"
894
+ }
895
+ },
896
+ "value": null,
897
+ "visibility": "internal"
898
+ }
899
+ ],
900
+ "name": "TokenSpenderPair",
901
+ "nodeType": "StructDefinition",
902
+ "scope": 15578,
903
+ "src": "1804:155:56",
904
+ "visibility": "public"
905
+ },
906
+ {
907
+ "canonicalName": "IAllowanceTransfer.AllowanceTransferDetails",
908
+ "id": 15501,
909
+ "members": [
910
+ {
911
+ "constant": false,
912
+ "id": 15494,
913
+ "name": "from",
914
+ "nodeType": "VariableDeclaration",
915
+ "scope": 15501,
916
+ "src": "2087:12:56",
917
+ "stateVariable": false,
918
+ "storageLocation": "default",
919
+ "typeDescriptions": {
920
+ "typeIdentifier": "t_address",
921
+ "typeString": "address"
922
+ },
923
+ "typeName": {
924
+ "id": 15493,
925
+ "name": "address",
926
+ "nodeType": "ElementaryTypeName",
927
+ "src": "2087:7:56",
928
+ "stateMutability": "nonpayable",
929
+ "typeDescriptions": {
930
+ "typeIdentifier": "t_address",
931
+ "typeString": "address"
932
+ }
933
+ },
934
+ "value": null,
935
+ "visibility": "internal"
936
+ },
937
+ {
938
+ "constant": false,
939
+ "id": 15496,
940
+ "name": "to",
941
+ "nodeType": "VariableDeclaration",
942
+ "scope": 15501,
943
+ "src": "2147:10:56",
944
+ "stateVariable": false,
945
+ "storageLocation": "default",
946
+ "typeDescriptions": {
947
+ "typeIdentifier": "t_address",
948
+ "typeString": "address"
949
+ },
950
+ "typeName": {
951
+ "id": 15495,
952
+ "name": "address",
953
+ "nodeType": "ElementaryTypeName",
954
+ "src": "2147:7:56",
955
+ "stateMutability": "nonpayable",
956
+ "typeDescriptions": {
957
+ "typeIdentifier": "t_address",
958
+ "typeString": "address"
959
+ }
960
+ },
961
+ "value": null,
962
+ "visibility": "internal"
963
+ },
964
+ {
965
+ "constant": false,
966
+ "id": 15498,
967
+ "name": "amount",
968
+ "nodeType": "VariableDeclaration",
969
+ "scope": 15501,
970
+ "src": "2202:14:56",
971
+ "stateVariable": false,
972
+ "storageLocation": "default",
973
+ "typeDescriptions": {
974
+ "typeIdentifier": "t_uint160",
975
+ "typeString": "uint160"
976
+ },
977
+ "typeName": {
978
+ "id": 15497,
979
+ "name": "uint160",
980
+ "nodeType": "ElementaryTypeName",
981
+ "src": "2202:7:56",
982
+ "typeDescriptions": {
983
+ "typeIdentifier": "t_uint160",
984
+ "typeString": "uint160"
985
+ }
986
+ },
987
+ "value": null,
988
+ "visibility": "internal"
989
+ },
990
+ {
991
+ "constant": false,
992
+ "id": 15500,
993
+ "name": "token",
994
+ "nodeType": "VariableDeclaration",
995
+ "scope": 15501,
996
+ "src": "2265:13:56",
997
+ "stateVariable": false,
998
+ "storageLocation": "default",
999
+ "typeDescriptions": {
1000
+ "typeIdentifier": "t_address",
1001
+ "typeString": "address"
1002
+ },
1003
+ "typeName": {
1004
+ "id": 15499,
1005
+ "name": "address",
1006
+ "nodeType": "ElementaryTypeName",
1007
+ "src": "2265:7:56",
1008
+ "stateMutability": "nonpayable",
1009
+ "typeDescriptions": {
1010
+ "typeIdentifier": "t_address",
1011
+ "typeString": "address"
1012
+ }
1013
+ },
1014
+ "value": null,
1015
+ "visibility": "internal"
1016
+ }
1017
+ ],
1018
+ "name": "AllowanceTransferDetails",
1019
+ "nodeType": "StructDefinition",
1020
+ "scope": 15578,
1021
+ "src": "2011:274:56",
1022
+ "visibility": "public"
1023
+ },
1024
+ {
1025
+ "body": null,
1026
+ "documentation": "@notice A mapping from owner address to token address to spender address to PackedAllowance struct, which contains details and conditions of the approval.\n @notice The mapping is indexed in the above order see: allowance[ownerAddress][tokenAddress][spenderAddress]\n @dev The packed slot holds the allowed amount, expiration at which the allowed amount is no longer valid, and current nonce thats updated on any signature based approvals.",
1027
+ "id": 15516,
1028
+ "implemented": false,
1029
+ "kind": "function",
1030
+ "modifiers": [],
1031
+ "name": "allowance",
1032
+ "nodeType": "FunctionDefinition",
1033
+ "parameters": {
1034
+ "id": 15508,
1035
+ "nodeType": "ParameterList",
1036
+ "parameters": [
1037
+ {
1038
+ "constant": false,
1039
+ "id": 15503,
1040
+ "name": "user",
1041
+ "nodeType": "VariableDeclaration",
1042
+ "scope": 15516,
1043
+ "src": "2770:12:56",
1044
+ "stateVariable": false,
1045
+ "storageLocation": "default",
1046
+ "typeDescriptions": {
1047
+ "typeIdentifier": "t_address",
1048
+ "typeString": "address"
1049
+ },
1050
+ "typeName": {
1051
+ "id": 15502,
1052
+ "name": "address",
1053
+ "nodeType": "ElementaryTypeName",
1054
+ "src": "2770:7:56",
1055
+ "stateMutability": "nonpayable",
1056
+ "typeDescriptions": {
1057
+ "typeIdentifier": "t_address",
1058
+ "typeString": "address"
1059
+ }
1060
+ },
1061
+ "value": null,
1062
+ "visibility": "internal"
1063
+ },
1064
+ {
1065
+ "constant": false,
1066
+ "id": 15505,
1067
+ "name": "token",
1068
+ "nodeType": "VariableDeclaration",
1069
+ "scope": 15516,
1070
+ "src": "2784:13:56",
1071
+ "stateVariable": false,
1072
+ "storageLocation": "default",
1073
+ "typeDescriptions": {
1074
+ "typeIdentifier": "t_address",
1075
+ "typeString": "address"
1076
+ },
1077
+ "typeName": {
1078
+ "id": 15504,
1079
+ "name": "address",
1080
+ "nodeType": "ElementaryTypeName",
1081
+ "src": "2784:7:56",
1082
+ "stateMutability": "nonpayable",
1083
+ "typeDescriptions": {
1084
+ "typeIdentifier": "t_address",
1085
+ "typeString": "address"
1086
+ }
1087
+ },
1088
+ "value": null,
1089
+ "visibility": "internal"
1090
+ },
1091
+ {
1092
+ "constant": false,
1093
+ "id": 15507,
1094
+ "name": "spender",
1095
+ "nodeType": "VariableDeclaration",
1096
+ "scope": 15516,
1097
+ "src": "2799:15:56",
1098
+ "stateVariable": false,
1099
+ "storageLocation": "default",
1100
+ "typeDescriptions": {
1101
+ "typeIdentifier": "t_address",
1102
+ "typeString": "address"
1103
+ },
1104
+ "typeName": {
1105
+ "id": 15506,
1106
+ "name": "address",
1107
+ "nodeType": "ElementaryTypeName",
1108
+ "src": "2799:7:56",
1109
+ "stateMutability": "nonpayable",
1110
+ "typeDescriptions": {
1111
+ "typeIdentifier": "t_address",
1112
+ "typeString": "address"
1113
+ }
1114
+ },
1115
+ "value": null,
1116
+ "visibility": "internal"
1117
+ }
1118
+ ],
1119
+ "src": "2769:46:56"
1120
+ },
1121
+ "returnParameters": {
1122
+ "id": 15515,
1123
+ "nodeType": "ParameterList",
1124
+ "parameters": [
1125
+ {
1126
+ "constant": false,
1127
+ "id": 15510,
1128
+ "name": "amount",
1129
+ "nodeType": "VariableDeclaration",
1130
+ "scope": 15516,
1131
+ "src": "2863:14:56",
1132
+ "stateVariable": false,
1133
+ "storageLocation": "default",
1134
+ "typeDescriptions": {
1135
+ "typeIdentifier": "t_uint160",
1136
+ "typeString": "uint160"
1137
+ },
1138
+ "typeName": {
1139
+ "id": 15509,
1140
+ "name": "uint160",
1141
+ "nodeType": "ElementaryTypeName",
1142
+ "src": "2863:7:56",
1143
+ "typeDescriptions": {
1144
+ "typeIdentifier": "t_uint160",
1145
+ "typeString": "uint160"
1146
+ }
1147
+ },
1148
+ "value": null,
1149
+ "visibility": "internal"
1150
+ },
1151
+ {
1152
+ "constant": false,
1153
+ "id": 15512,
1154
+ "name": "expiration",
1155
+ "nodeType": "VariableDeclaration",
1156
+ "scope": 15516,
1157
+ "src": "2879:17:56",
1158
+ "stateVariable": false,
1159
+ "storageLocation": "default",
1160
+ "typeDescriptions": {
1161
+ "typeIdentifier": "t_uint48",
1162
+ "typeString": "uint48"
1163
+ },
1164
+ "typeName": {
1165
+ "id": 15511,
1166
+ "name": "uint48",
1167
+ "nodeType": "ElementaryTypeName",
1168
+ "src": "2879:6:56",
1169
+ "typeDescriptions": {
1170
+ "typeIdentifier": "t_uint48",
1171
+ "typeString": "uint48"
1172
+ }
1173
+ },
1174
+ "value": null,
1175
+ "visibility": "internal"
1176
+ },
1177
+ {
1178
+ "constant": false,
1179
+ "id": 15514,
1180
+ "name": "nonce",
1181
+ "nodeType": "VariableDeclaration",
1182
+ "scope": 15516,
1183
+ "src": "2898:12:56",
1184
+ "stateVariable": false,
1185
+ "storageLocation": "default",
1186
+ "typeDescriptions": {
1187
+ "typeIdentifier": "t_uint48",
1188
+ "typeString": "uint48"
1189
+ },
1190
+ "typeName": {
1191
+ "id": 15513,
1192
+ "name": "uint48",
1193
+ "nodeType": "ElementaryTypeName",
1194
+ "src": "2898:6:56",
1195
+ "typeDescriptions": {
1196
+ "typeIdentifier": "t_uint48",
1197
+ "typeString": "uint48"
1198
+ }
1199
+ },
1200
+ "value": null,
1201
+ "visibility": "internal"
1202
+ }
1203
+ ],
1204
+ "src": "2862:49:56"
1205
+ },
1206
+ "scope": 15578,
1207
+ "src": "2751:161:56",
1208
+ "stateMutability": "view",
1209
+ "superFunction": null,
1210
+ "visibility": "external"
1211
+ },
1212
+ {
1213
+ "body": null,
1214
+ "documentation": "@notice Approves the spender to use up to amount of the specified token up until the expiration\n @param token The token to approve\n @param spender The spender address to approve\n @param amount The approved amount of the token\n @param expiration The timestamp at which the approval is no longer valid\n @dev The packed allowance also holds a nonce, which will stay unchanged in approve\n @dev Setting amount to type(uint160).max sets an unlimited approval",
1215
+ "id": 15527,
1216
+ "implemented": false,
1217
+ "kind": "function",
1218
+ "modifiers": [],
1219
+ "name": "approve",
1220
+ "nodeType": "FunctionDefinition",
1221
+ "parameters": {
1222
+ "id": 15525,
1223
+ "nodeType": "ParameterList",
1224
+ "parameters": [
1225
+ {
1226
+ "constant": false,
1227
+ "id": 15518,
1228
+ "name": "token",
1229
+ "nodeType": "VariableDeclaration",
1230
+ "scope": 15527,
1231
+ "src": "3438:13:56",
1232
+ "stateVariable": false,
1233
+ "storageLocation": "default",
1234
+ "typeDescriptions": {
1235
+ "typeIdentifier": "t_address",
1236
+ "typeString": "address"
1237
+ },
1238
+ "typeName": {
1239
+ "id": 15517,
1240
+ "name": "address",
1241
+ "nodeType": "ElementaryTypeName",
1242
+ "src": "3438:7:56",
1243
+ "stateMutability": "nonpayable",
1244
+ "typeDescriptions": {
1245
+ "typeIdentifier": "t_address",
1246
+ "typeString": "address"
1247
+ }
1248
+ },
1249
+ "value": null,
1250
+ "visibility": "internal"
1251
+ },
1252
+ {
1253
+ "constant": false,
1254
+ "id": 15520,
1255
+ "name": "spender",
1256
+ "nodeType": "VariableDeclaration",
1257
+ "scope": 15527,
1258
+ "src": "3453:15:56",
1259
+ "stateVariable": false,
1260
+ "storageLocation": "default",
1261
+ "typeDescriptions": {
1262
+ "typeIdentifier": "t_address",
1263
+ "typeString": "address"
1264
+ },
1265
+ "typeName": {
1266
+ "id": 15519,
1267
+ "name": "address",
1268
+ "nodeType": "ElementaryTypeName",
1269
+ "src": "3453:7:56",
1270
+ "stateMutability": "nonpayable",
1271
+ "typeDescriptions": {
1272
+ "typeIdentifier": "t_address",
1273
+ "typeString": "address"
1274
+ }
1275
+ },
1276
+ "value": null,
1277
+ "visibility": "internal"
1278
+ },
1279
+ {
1280
+ "constant": false,
1281
+ "id": 15522,
1282
+ "name": "amount",
1283
+ "nodeType": "VariableDeclaration",
1284
+ "scope": 15527,
1285
+ "src": "3470:14:56",
1286
+ "stateVariable": false,
1287
+ "storageLocation": "default",
1288
+ "typeDescriptions": {
1289
+ "typeIdentifier": "t_uint160",
1290
+ "typeString": "uint160"
1291
+ },
1292
+ "typeName": {
1293
+ "id": 15521,
1294
+ "name": "uint160",
1295
+ "nodeType": "ElementaryTypeName",
1296
+ "src": "3470:7:56",
1297
+ "typeDescriptions": {
1298
+ "typeIdentifier": "t_uint160",
1299
+ "typeString": "uint160"
1300
+ }
1301
+ },
1302
+ "value": null,
1303
+ "visibility": "internal"
1304
+ },
1305
+ {
1306
+ "constant": false,
1307
+ "id": 15524,
1308
+ "name": "expiration",
1309
+ "nodeType": "VariableDeclaration",
1310
+ "scope": 15527,
1311
+ "src": "3486:17:56",
1312
+ "stateVariable": false,
1313
+ "storageLocation": "default",
1314
+ "typeDescriptions": {
1315
+ "typeIdentifier": "t_uint48",
1316
+ "typeString": "uint48"
1317
+ },
1318
+ "typeName": {
1319
+ "id": 15523,
1320
+ "name": "uint48",
1321
+ "nodeType": "ElementaryTypeName",
1322
+ "src": "3486:6:56",
1323
+ "typeDescriptions": {
1324
+ "typeIdentifier": "t_uint48",
1325
+ "typeString": "uint48"
1326
+ }
1327
+ },
1328
+ "value": null,
1329
+ "visibility": "internal"
1330
+ }
1331
+ ],
1332
+ "src": "3437:67:56"
1333
+ },
1334
+ "returnParameters": {
1335
+ "id": 15526,
1336
+ "nodeType": "ParameterList",
1337
+ "parameters": [],
1338
+ "src": "3513:0:56"
1339
+ },
1340
+ "scope": 15578,
1341
+ "src": "3421:93:56",
1342
+ "stateMutability": "nonpayable",
1343
+ "superFunction": null,
1344
+ "visibility": "external"
1345
+ },
1346
+ {
1347
+ "body": null,
1348
+ "documentation": "@notice Permit a spender to a given amount of the owners token via the owner's EIP-712 signature\n @dev May fail if the owner's nonce was invalidated in-flight by invalidateNonce\n @param owner The owner of the tokens being approved\n @param permitSingle Data signed over by the owner specifying the terms of approval\n @param signature The owner's signature over the permit data",
1349
+ "id": 15536,
1350
+ "implemented": false,
1351
+ "kind": "function",
1352
+ "modifiers": [],
1353
+ "name": "permit",
1354
+ "nodeType": "FunctionDefinition",
1355
+ "parameters": {
1356
+ "id": 15534,
1357
+ "nodeType": "ParameterList",
1358
+ "parameters": [
1359
+ {
1360
+ "constant": false,
1361
+ "id": 15529,
1362
+ "name": "owner",
1363
+ "nodeType": "VariableDeclaration",
1364
+ "scope": 15536,
1365
+ "src": "3948:13:56",
1366
+ "stateVariable": false,
1367
+ "storageLocation": "default",
1368
+ "typeDescriptions": {
1369
+ "typeIdentifier": "t_address",
1370
+ "typeString": "address"
1371
+ },
1372
+ "typeName": {
1373
+ "id": 15528,
1374
+ "name": "address",
1375
+ "nodeType": "ElementaryTypeName",
1376
+ "src": "3948:7:56",
1377
+ "stateMutability": "nonpayable",
1378
+ "typeDescriptions": {
1379
+ "typeIdentifier": "t_address",
1380
+ "typeString": "address"
1381
+ }
1382
+ },
1383
+ "value": null,
1384
+ "visibility": "internal"
1385
+ },
1386
+ {
1387
+ "constant": false,
1388
+ "id": 15531,
1389
+ "name": "permitSingle",
1390
+ "nodeType": "VariableDeclaration",
1391
+ "scope": 15536,
1392
+ "src": "3963:34:56",
1393
+ "stateVariable": false,
1394
+ "storageLocation": "calldata",
1395
+ "typeDescriptions": {
1396
+ "typeIdentifier": "t_struct$_PermitSingle_$15472_calldata_ptr",
1397
+ "typeString": "struct IAllowanceTransfer.PermitSingle"
1398
+ },
1399
+ "typeName": {
1400
+ "contractScope": null,
1401
+ "id": 15530,
1402
+ "name": "PermitSingle",
1403
+ "nodeType": "UserDefinedTypeName",
1404
+ "referencedDeclaration": 15472,
1405
+ "src": "3963:12:56",
1406
+ "typeDescriptions": {
1407
+ "typeIdentifier": "t_struct$_PermitSingle_$15472_storage_ptr",
1408
+ "typeString": "struct IAllowanceTransfer.PermitSingle"
1409
+ }
1410
+ },
1411
+ "value": null,
1412
+ "visibility": "internal"
1413
+ },
1414
+ {
1415
+ "constant": false,
1416
+ "id": 15533,
1417
+ "name": "signature",
1418
+ "nodeType": "VariableDeclaration",
1419
+ "scope": 15536,
1420
+ "src": "3999:24:56",
1421
+ "stateVariable": false,
1422
+ "storageLocation": "calldata",
1423
+ "typeDescriptions": {
1424
+ "typeIdentifier": "t_bytes_calldata_ptr",
1425
+ "typeString": "bytes"
1426
+ },
1427
+ "typeName": {
1428
+ "id": 15532,
1429
+ "name": "bytes",
1430
+ "nodeType": "ElementaryTypeName",
1431
+ "src": "3999:5:56",
1432
+ "typeDescriptions": {
1433
+ "typeIdentifier": "t_bytes_storage_ptr",
1434
+ "typeString": "bytes"
1435
+ }
1436
+ },
1437
+ "value": null,
1438
+ "visibility": "internal"
1439
+ }
1440
+ ],
1441
+ "src": "3947:77:56"
1442
+ },
1443
+ "returnParameters": {
1444
+ "id": 15535,
1445
+ "nodeType": "ParameterList",
1446
+ "parameters": [],
1447
+ "src": "4033:0:56"
1448
+ },
1449
+ "scope": 15578,
1450
+ "src": "3932:102:56",
1451
+ "stateMutability": "nonpayable",
1452
+ "superFunction": null,
1453
+ "visibility": "external"
1454
+ },
1455
+ {
1456
+ "body": null,
1457
+ "documentation": "@notice Permit a spender to the signed amounts of the owners tokens via the owner's EIP-712 signature\n @dev May fail if the owner's nonce was invalidated in-flight by invalidateNonce\n @param owner The owner of the tokens being approved\n @param permitBatch Data signed over by the owner specifying the terms of approval\n @param signature The owner's signature over the permit data",
1458
+ "id": 15545,
1459
+ "implemented": false,
1460
+ "kind": "function",
1461
+ "modifiers": [],
1462
+ "name": "permit",
1463
+ "nodeType": "FunctionDefinition",
1464
+ "parameters": {
1465
+ "id": 15543,
1466
+ "nodeType": "ParameterList",
1467
+ "parameters": [
1468
+ {
1469
+ "constant": false,
1470
+ "id": 15538,
1471
+ "name": "owner",
1472
+ "nodeType": "VariableDeclaration",
1473
+ "scope": 15545,
1474
+ "src": "4472:13:56",
1475
+ "stateVariable": false,
1476
+ "storageLocation": "default",
1477
+ "typeDescriptions": {
1478
+ "typeIdentifier": "t_address",
1479
+ "typeString": "address"
1480
+ },
1481
+ "typeName": {
1482
+ "id": 15537,
1483
+ "name": "address",
1484
+ "nodeType": "ElementaryTypeName",
1485
+ "src": "4472:7:56",
1486
+ "stateMutability": "nonpayable",
1487
+ "typeDescriptions": {
1488
+ "typeIdentifier": "t_address",
1489
+ "typeString": "address"
1490
+ }
1491
+ },
1492
+ "value": null,
1493
+ "visibility": "internal"
1494
+ },
1495
+ {
1496
+ "constant": false,
1497
+ "id": 15540,
1498
+ "name": "permitBatch",
1499
+ "nodeType": "VariableDeclaration",
1500
+ "scope": 15545,
1501
+ "src": "4487:32:56",
1502
+ "stateVariable": false,
1503
+ "storageLocation": "calldata",
1504
+ "typeDescriptions": {
1505
+ "typeIdentifier": "t_struct$_PermitBatch_$15480_calldata_ptr",
1506
+ "typeString": "struct IAllowanceTransfer.PermitBatch"
1507
+ },
1508
+ "typeName": {
1509
+ "contractScope": null,
1510
+ "id": 15539,
1511
+ "name": "PermitBatch",
1512
+ "nodeType": "UserDefinedTypeName",
1513
+ "referencedDeclaration": 15480,
1514
+ "src": "4487:11:56",
1515
+ "typeDescriptions": {
1516
+ "typeIdentifier": "t_struct$_PermitBatch_$15480_storage_ptr",
1517
+ "typeString": "struct IAllowanceTransfer.PermitBatch"
1518
+ }
1519
+ },
1520
+ "value": null,
1521
+ "visibility": "internal"
1522
+ },
1523
+ {
1524
+ "constant": false,
1525
+ "id": 15542,
1526
+ "name": "signature",
1527
+ "nodeType": "VariableDeclaration",
1528
+ "scope": 15545,
1529
+ "src": "4521:24:56",
1530
+ "stateVariable": false,
1531
+ "storageLocation": "calldata",
1532
+ "typeDescriptions": {
1533
+ "typeIdentifier": "t_bytes_calldata_ptr",
1534
+ "typeString": "bytes"
1535
+ },
1536
+ "typeName": {
1537
+ "id": 15541,
1538
+ "name": "bytes",
1539
+ "nodeType": "ElementaryTypeName",
1540
+ "src": "4521:5:56",
1541
+ "typeDescriptions": {
1542
+ "typeIdentifier": "t_bytes_storage_ptr",
1543
+ "typeString": "bytes"
1544
+ }
1545
+ },
1546
+ "value": null,
1547
+ "visibility": "internal"
1548
+ }
1549
+ ],
1550
+ "src": "4471:75:56"
1551
+ },
1552
+ "returnParameters": {
1553
+ "id": 15544,
1554
+ "nodeType": "ParameterList",
1555
+ "parameters": [],
1556
+ "src": "4555:0:56"
1557
+ },
1558
+ "scope": 15578,
1559
+ "src": "4456:100:56",
1560
+ "stateMutability": "nonpayable",
1561
+ "superFunction": null,
1562
+ "visibility": "external"
1563
+ },
1564
+ {
1565
+ "body": null,
1566
+ "documentation": "@notice Transfer approved tokens from one address to another\n @param from The address to transfer from\n @param to The address of the recipient\n @param amount The amount of the token to transfer\n @param token The token address to transfer\n @dev Requires the from address to have approved at least the desired amount\n of tokens to msg.sender.",
1567
+ "id": 15556,
1568
+ "implemented": false,
1569
+ "kind": "function",
1570
+ "modifiers": [],
1571
+ "name": "transferFrom",
1572
+ "nodeType": "FunctionDefinition",
1573
+ "parameters": {
1574
+ "id": 15554,
1575
+ "nodeType": "ParameterList",
1576
+ "parameters": [
1577
+ {
1578
+ "constant": false,
1579
+ "id": 15547,
1580
+ "name": "from",
1581
+ "nodeType": "VariableDeclaration",
1582
+ "scope": 15556,
1583
+ "src": "4975:12:56",
1584
+ "stateVariable": false,
1585
+ "storageLocation": "default",
1586
+ "typeDescriptions": {
1587
+ "typeIdentifier": "t_address",
1588
+ "typeString": "address"
1589
+ },
1590
+ "typeName": {
1591
+ "id": 15546,
1592
+ "name": "address",
1593
+ "nodeType": "ElementaryTypeName",
1594
+ "src": "4975:7:56",
1595
+ "stateMutability": "nonpayable",
1596
+ "typeDescriptions": {
1597
+ "typeIdentifier": "t_address",
1598
+ "typeString": "address"
1599
+ }
1600
+ },
1601
+ "value": null,
1602
+ "visibility": "internal"
1603
+ },
1604
+ {
1605
+ "constant": false,
1606
+ "id": 15549,
1607
+ "name": "to",
1608
+ "nodeType": "VariableDeclaration",
1609
+ "scope": 15556,
1610
+ "src": "4989:10:56",
1611
+ "stateVariable": false,
1612
+ "storageLocation": "default",
1613
+ "typeDescriptions": {
1614
+ "typeIdentifier": "t_address",
1615
+ "typeString": "address"
1616
+ },
1617
+ "typeName": {
1618
+ "id": 15548,
1619
+ "name": "address",
1620
+ "nodeType": "ElementaryTypeName",
1621
+ "src": "4989:7:56",
1622
+ "stateMutability": "nonpayable",
1623
+ "typeDescriptions": {
1624
+ "typeIdentifier": "t_address",
1625
+ "typeString": "address"
1626
+ }
1627
+ },
1628
+ "value": null,
1629
+ "visibility": "internal"
1630
+ },
1631
+ {
1632
+ "constant": false,
1633
+ "id": 15551,
1634
+ "name": "amount",
1635
+ "nodeType": "VariableDeclaration",
1636
+ "scope": 15556,
1637
+ "src": "5001:14:56",
1638
+ "stateVariable": false,
1639
+ "storageLocation": "default",
1640
+ "typeDescriptions": {
1641
+ "typeIdentifier": "t_uint160",
1642
+ "typeString": "uint160"
1643
+ },
1644
+ "typeName": {
1645
+ "id": 15550,
1646
+ "name": "uint160",
1647
+ "nodeType": "ElementaryTypeName",
1648
+ "src": "5001:7:56",
1649
+ "typeDescriptions": {
1650
+ "typeIdentifier": "t_uint160",
1651
+ "typeString": "uint160"
1652
+ }
1653
+ },
1654
+ "value": null,
1655
+ "visibility": "internal"
1656
+ },
1657
+ {
1658
+ "constant": false,
1659
+ "id": 15553,
1660
+ "name": "token",
1661
+ "nodeType": "VariableDeclaration",
1662
+ "scope": 15556,
1663
+ "src": "5017:13:56",
1664
+ "stateVariable": false,
1665
+ "storageLocation": "default",
1666
+ "typeDescriptions": {
1667
+ "typeIdentifier": "t_address",
1668
+ "typeString": "address"
1669
+ },
1670
+ "typeName": {
1671
+ "id": 15552,
1672
+ "name": "address",
1673
+ "nodeType": "ElementaryTypeName",
1674
+ "src": "5017:7:56",
1675
+ "stateMutability": "nonpayable",
1676
+ "typeDescriptions": {
1677
+ "typeIdentifier": "t_address",
1678
+ "typeString": "address"
1679
+ }
1680
+ },
1681
+ "value": null,
1682
+ "visibility": "internal"
1683
+ }
1684
+ ],
1685
+ "src": "4974:57:56"
1686
+ },
1687
+ "returnParameters": {
1688
+ "id": 15555,
1689
+ "nodeType": "ParameterList",
1690
+ "parameters": [],
1691
+ "src": "5040:0:56"
1692
+ },
1693
+ "scope": 15578,
1694
+ "src": "4953:88:56",
1695
+ "stateMutability": "nonpayable",
1696
+ "superFunction": null,
1697
+ "visibility": "external"
1698
+ },
1699
+ {
1700
+ "body": null,
1701
+ "documentation": "@notice Transfer approved tokens in a batch\n @param transferDetails Array of owners, recipients, amounts, and tokens for the transfers\n @dev Requires the from addresses to have approved at least the desired amount\n of tokens to msg.sender.",
1702
+ "id": 15562,
1703
+ "implemented": false,
1704
+ "kind": "function",
1705
+ "modifiers": [],
1706
+ "name": "transferFrom",
1707
+ "nodeType": "FunctionDefinition",
1708
+ "parameters": {
1709
+ "id": 15560,
1710
+ "nodeType": "ParameterList",
1711
+ "parameters": [
1712
+ {
1713
+ "constant": false,
1714
+ "id": 15559,
1715
+ "name": "transferDetails",
1716
+ "nodeType": "VariableDeclaration",
1717
+ "scope": 15562,
1718
+ "src": "5338:51:56",
1719
+ "stateVariable": false,
1720
+ "storageLocation": "calldata",
1721
+ "typeDescriptions": {
1722
+ "typeIdentifier": "t_array$_t_struct$_AllowanceTransferDetails_$15501_calldata_$dyn_calldata_ptr",
1723
+ "typeString": "struct IAllowanceTransfer.AllowanceTransferDetails[]"
1724
+ },
1725
+ "typeName": {
1726
+ "baseType": {
1727
+ "contractScope": null,
1728
+ "id": 15557,
1729
+ "name": "AllowanceTransferDetails",
1730
+ "nodeType": "UserDefinedTypeName",
1731
+ "referencedDeclaration": 15501,
1732
+ "src": "5338:24:56",
1733
+ "typeDescriptions": {
1734
+ "typeIdentifier": "t_struct$_AllowanceTransferDetails_$15501_storage_ptr",
1735
+ "typeString": "struct IAllowanceTransfer.AllowanceTransferDetails"
1736
+ }
1737
+ },
1738
+ "id": 15558,
1739
+ "length": null,
1740
+ "nodeType": "ArrayTypeName",
1741
+ "src": "5338:26:56",
1742
+ "typeDescriptions": {
1743
+ "typeIdentifier": "t_array$_t_struct$_AllowanceTransferDetails_$15501_storage_$dyn_storage_ptr",
1744
+ "typeString": "struct IAllowanceTransfer.AllowanceTransferDetails[]"
1745
+ }
1746
+ },
1747
+ "value": null,
1748
+ "visibility": "internal"
1749
+ }
1750
+ ],
1751
+ "src": "5337:53:56"
1752
+ },
1753
+ "returnParameters": {
1754
+ "id": 15561,
1755
+ "nodeType": "ParameterList",
1756
+ "parameters": [],
1757
+ "src": "5399:0:56"
1758
+ },
1759
+ "scope": 15578,
1760
+ "src": "5316:84:56",
1761
+ "stateMutability": "nonpayable",
1762
+ "superFunction": null,
1763
+ "visibility": "external"
1764
+ },
1765
+ {
1766
+ "body": null,
1767
+ "documentation": "@notice Enables performing a \"lockdown\" of the sender's Permit2 identity\n by batch revoking approvals\n @param approvals Array of approvals to revoke.",
1768
+ "id": 15568,
1769
+ "implemented": false,
1770
+ "kind": "function",
1771
+ "modifiers": [],
1772
+ "name": "lockdown",
1773
+ "nodeType": "FunctionDefinition",
1774
+ "parameters": {
1775
+ "id": 15566,
1776
+ "nodeType": "ParameterList",
1777
+ "parameters": [
1778
+ {
1779
+ "constant": false,
1780
+ "id": 15565,
1781
+ "name": "approvals",
1782
+ "nodeType": "VariableDeclaration",
1783
+ "scope": 15568,
1784
+ "src": "5596:37:56",
1785
+ "stateVariable": false,
1786
+ "storageLocation": "calldata",
1787
+ "typeDescriptions": {
1788
+ "typeIdentifier": "t_array$_t_struct$_TokenSpenderPair_$15492_calldata_$dyn_calldata_ptr",
1789
+ "typeString": "struct IAllowanceTransfer.TokenSpenderPair[]"
1790
+ },
1791
+ "typeName": {
1792
+ "baseType": {
1793
+ "contractScope": null,
1794
+ "id": 15563,
1795
+ "name": "TokenSpenderPair",
1796
+ "nodeType": "UserDefinedTypeName",
1797
+ "referencedDeclaration": 15492,
1798
+ "src": "5596:16:56",
1799
+ "typeDescriptions": {
1800
+ "typeIdentifier": "t_struct$_TokenSpenderPair_$15492_storage_ptr",
1801
+ "typeString": "struct IAllowanceTransfer.TokenSpenderPair"
1802
+ }
1803
+ },
1804
+ "id": 15564,
1805
+ "length": null,
1806
+ "nodeType": "ArrayTypeName",
1807
+ "src": "5596:18:56",
1808
+ "typeDescriptions": {
1809
+ "typeIdentifier": "t_array$_t_struct$_TokenSpenderPair_$15492_storage_$dyn_storage_ptr",
1810
+ "typeString": "struct IAllowanceTransfer.TokenSpenderPair[]"
1811
+ }
1812
+ },
1813
+ "value": null,
1814
+ "visibility": "internal"
1815
+ }
1816
+ ],
1817
+ "src": "5595:39:56"
1818
+ },
1819
+ "returnParameters": {
1820
+ "id": 15567,
1821
+ "nodeType": "ParameterList",
1822
+ "parameters": [],
1823
+ "src": "5643:0:56"
1824
+ },
1825
+ "scope": 15578,
1826
+ "src": "5578:66:56",
1827
+ "stateMutability": "nonpayable",
1828
+ "superFunction": null,
1829
+ "visibility": "external"
1830
+ },
1831
+ {
1832
+ "body": null,
1833
+ "documentation": "@notice Invalidate nonces for a given (token, spender) pair\n @param token The token to invalidate nonces for\n @param spender The spender to invalidate nonces for\n @param newNonce The new nonce to set. Invalidates all nonces less than it.\n @dev Can't invalidate more than 2**16 nonces per transaction.",
1834
+ "id": 15577,
1835
+ "implemented": false,
1836
+ "kind": "function",
1837
+ "modifiers": [],
1838
+ "name": "invalidateNonces",
1839
+ "nodeType": "FunctionDefinition",
1840
+ "parameters": {
1841
+ "id": 15575,
1842
+ "nodeType": "ParameterList",
1843
+ "parameters": [
1844
+ {
1845
+ "constant": false,
1846
+ "id": 15570,
1847
+ "name": "token",
1848
+ "nodeType": "VariableDeclaration",
1849
+ "scope": 15577,
1850
+ "src": "6013:13:56",
1851
+ "stateVariable": false,
1852
+ "storageLocation": "default",
1853
+ "typeDescriptions": {
1854
+ "typeIdentifier": "t_address",
1855
+ "typeString": "address"
1856
+ },
1857
+ "typeName": {
1858
+ "id": 15569,
1859
+ "name": "address",
1860
+ "nodeType": "ElementaryTypeName",
1861
+ "src": "6013:7:56",
1862
+ "stateMutability": "nonpayable",
1863
+ "typeDescriptions": {
1864
+ "typeIdentifier": "t_address",
1865
+ "typeString": "address"
1866
+ }
1867
+ },
1868
+ "value": null,
1869
+ "visibility": "internal"
1870
+ },
1871
+ {
1872
+ "constant": false,
1873
+ "id": 15572,
1874
+ "name": "spender",
1875
+ "nodeType": "VariableDeclaration",
1876
+ "scope": 15577,
1877
+ "src": "6028:15:56",
1878
+ "stateVariable": false,
1879
+ "storageLocation": "default",
1880
+ "typeDescriptions": {
1881
+ "typeIdentifier": "t_address",
1882
+ "typeString": "address"
1883
+ },
1884
+ "typeName": {
1885
+ "id": 15571,
1886
+ "name": "address",
1887
+ "nodeType": "ElementaryTypeName",
1888
+ "src": "6028:7:56",
1889
+ "stateMutability": "nonpayable",
1890
+ "typeDescriptions": {
1891
+ "typeIdentifier": "t_address",
1892
+ "typeString": "address"
1893
+ }
1894
+ },
1895
+ "value": null,
1896
+ "visibility": "internal"
1897
+ },
1898
+ {
1899
+ "constant": false,
1900
+ "id": 15574,
1901
+ "name": "newNonce",
1902
+ "nodeType": "VariableDeclaration",
1903
+ "scope": 15577,
1904
+ "src": "6045:15:56",
1905
+ "stateVariable": false,
1906
+ "storageLocation": "default",
1907
+ "typeDescriptions": {
1908
+ "typeIdentifier": "t_uint48",
1909
+ "typeString": "uint48"
1910
+ },
1911
+ "typeName": {
1912
+ "id": 15573,
1913
+ "name": "uint48",
1914
+ "nodeType": "ElementaryTypeName",
1915
+ "src": "6045:6:56",
1916
+ "typeDescriptions": {
1917
+ "typeIdentifier": "t_uint48",
1918
+ "typeString": "uint48"
1919
+ }
1920
+ },
1921
+ "value": null,
1922
+ "visibility": "internal"
1923
+ }
1924
+ ],
1925
+ "src": "6012:49:56"
1926
+ },
1927
+ "returnParameters": {
1928
+ "id": 15576,
1929
+ "nodeType": "ParameterList",
1930
+ "parameters": [],
1931
+ "src": "6070:0:56"
1932
+ },
1933
+ "scope": 15578,
1934
+ "src": "5987:84:56",
1935
+ "stateMutability": "nonpayable",
1936
+ "superFunction": null,
1937
+ "visibility": "external"
1938
+ }
1939
+ ],
1940
+ "scope": 15579,
1941
+ "src": "92:5981:56"
1942
+ }
1943
+ ],
1944
+ "src": "32:6042:56"
1945
+ },
1946
+ "legacyAST": {
1947
+ "attributes": {
1948
+ "absolutePath": "project:/contracts/interfaces/IAllowanceTransfer.sol",
1949
+ "exportedSymbols": {
1950
+ "IAllowanceTransfer": [
1951
+ 15578
1952
+ ]
1953
+ }
1954
+ },
1955
+ "children": [
1956
+ {
1957
+ "attributes": {
1958
+ "literals": [
1959
+ "solidity",
1960
+ ">=",
1961
+ "0.5",
1962
+ ".0"
1963
+ ]
1964
+ },
1965
+ "id": 15450,
1966
+ "name": "PragmaDirective",
1967
+ "src": "32:24:56"
1968
+ },
1969
+ {
1970
+ "attributes": {
1971
+ "literals": [
1972
+ "experimental",
1973
+ "ABIEncoderV2"
1974
+ ]
1975
+ },
1976
+ "id": 15451,
1977
+ "name": "PragmaDirective",
1978
+ "src": "57:33:56"
1979
+ },
1980
+ {
1981
+ "attributes": {
1982
+ "baseContracts": [
1983
+ null
1984
+ ],
1985
+ "contractDependencies": [
1986
+ null
1987
+ ],
1988
+ "contractKind": "interface",
1989
+ "documentation": null,
1990
+ "fullyImplemented": false,
1991
+ "linearizedBaseContracts": [
1992
+ 15578
1993
+ ],
1994
+ "name": "IAllowanceTransfer",
1995
+ "scope": 15579
1996
+ },
1997
+ "children": [
1998
+ {
1999
+ "attributes": {
2000
+ "body": null,
2001
+ "documentation": null,
2002
+ "implemented": false,
2003
+ "isConstructor": false,
2004
+ "kind": "function",
2005
+ "modifiers": [
2006
+ null
2007
+ ],
2008
+ "name": "DOMAIN_SEPARATOR",
2009
+ "scope": 15578,
2010
+ "stateMutability": "view",
2011
+ "superFunction": null,
2012
+ "visibility": "external"
2013
+ },
2014
+ "children": [
2015
+ {
2016
+ "attributes": {
2017
+ "parameters": [
2018
+ null
2019
+ ]
2020
+ },
2021
+ "children": [],
2022
+ "id": 15452,
2023
+ "name": "ParameterList",
2024
+ "src": "150:2:56"
2025
+ },
2026
+ {
2027
+ "children": [
2028
+ {
2029
+ "attributes": {
2030
+ "constant": false,
2031
+ "name": "",
2032
+ "scope": 15456,
2033
+ "stateVariable": false,
2034
+ "storageLocation": "default",
2035
+ "type": "bytes32",
2036
+ "value": null,
2037
+ "visibility": "internal"
2038
+ },
2039
+ "children": [
2040
+ {
2041
+ "attributes": {
2042
+ "name": "bytes32",
2043
+ "type": "bytes32"
2044
+ },
2045
+ "id": 15453,
2046
+ "name": "ElementaryTypeName",
2047
+ "src": "176:7:56"
2048
+ }
2049
+ ],
2050
+ "id": 15454,
2051
+ "name": "VariableDeclaration",
2052
+ "src": "176:7:56"
2053
+ }
2054
+ ],
2055
+ "id": 15455,
2056
+ "name": "ParameterList",
2057
+ "src": "175:9:56"
2058
+ }
2059
+ ],
2060
+ "id": 15456,
2061
+ "name": "FunctionDefinition",
2062
+ "src": "125:60:56"
2063
+ },
2064
+ {
2065
+ "attributes": {
2066
+ "canonicalName": "IAllowanceTransfer.PermitDetails",
2067
+ "name": "PermitDetails",
2068
+ "scope": 15578,
2069
+ "visibility": "public"
2070
+ },
2071
+ "children": [
2072
+ {
2073
+ "attributes": {
2074
+ "constant": false,
2075
+ "name": "token",
2076
+ "scope": 15465,
2077
+ "stateVariable": false,
2078
+ "storageLocation": "default",
2079
+ "type": "address",
2080
+ "value": null,
2081
+ "visibility": "internal"
2082
+ },
2083
+ "children": [
2084
+ {
2085
+ "attributes": {
2086
+ "name": "address",
2087
+ "stateMutability": "nonpayable",
2088
+ "type": "address"
2089
+ },
2090
+ "id": 15457,
2091
+ "name": "ElementaryTypeName",
2092
+ "src": "297:7:56"
2093
+ }
2094
+ ],
2095
+ "id": 15458,
2096
+ "name": "VariableDeclaration",
2097
+ "src": "297:13:56"
2098
+ },
2099
+ {
2100
+ "attributes": {
2101
+ "constant": false,
2102
+ "name": "amount",
2103
+ "scope": 15465,
2104
+ "stateVariable": false,
2105
+ "storageLocation": "default",
2106
+ "type": "uint160",
2107
+ "value": null,
2108
+ "visibility": "internal"
2109
+ },
2110
+ "children": [
2111
+ {
2112
+ "attributes": {
2113
+ "name": "uint160",
2114
+ "type": "uint160"
2115
+ },
2116
+ "id": 15459,
2117
+ "name": "ElementaryTypeName",
2118
+ "src": "367:7:56"
2119
+ }
2120
+ ],
2121
+ "id": 15460,
2122
+ "name": "VariableDeclaration",
2123
+ "src": "367:14:56"
2124
+ },
2125
+ {
2126
+ "attributes": {
2127
+ "constant": false,
2128
+ "name": "expiration",
2129
+ "scope": 15465,
2130
+ "stateVariable": false,
2131
+ "storageLocation": "default",
2132
+ "type": "uint48",
2133
+ "value": null,
2134
+ "visibility": "internal"
2135
+ },
2136
+ "children": [
2137
+ {
2138
+ "attributes": {
2139
+ "name": "uint48",
2140
+ "type": "uint48"
2141
+ },
2142
+ "id": 15461,
2143
+ "name": "ElementaryTypeName",
2144
+ "src": "465:6:56"
2145
+ }
2146
+ ],
2147
+ "id": 15462,
2148
+ "name": "VariableDeclaration",
2149
+ "src": "465:17:56"
2150
+ },
2151
+ {
2152
+ "attributes": {
2153
+ "constant": false,
2154
+ "name": "nonce",
2155
+ "scope": 15465,
2156
+ "stateVariable": false,
2157
+ "storageLocation": "default",
2158
+ "type": "uint48",
2159
+ "value": null,
2160
+ "visibility": "internal"
2161
+ },
2162
+ "children": [
2163
+ {
2164
+ "attributes": {
2165
+ "name": "uint48",
2166
+ "type": "uint48"
2167
+ },
2168
+ "id": 15463,
2169
+ "name": "ElementaryTypeName",
2170
+ "src": "580:6:56"
2171
+ }
2172
+ ],
2173
+ "id": 15464,
2174
+ "name": "VariableDeclaration",
2175
+ "src": "580:12:56"
2176
+ }
2177
+ ],
2178
+ "id": 15465,
2179
+ "name": "StructDefinition",
2180
+ "src": "235:364:56"
2181
+ },
2182
+ {
2183
+ "attributes": {
2184
+ "canonicalName": "IAllowanceTransfer.PermitSingle",
2185
+ "name": "PermitSingle",
2186
+ "scope": 15578,
2187
+ "visibility": "public"
2188
+ },
2189
+ "children": [
2190
+ {
2191
+ "attributes": {
2192
+ "constant": false,
2193
+ "name": "details",
2194
+ "scope": 15472,
2195
+ "stateVariable": false,
2196
+ "storageLocation": "default",
2197
+ "type": "struct IAllowanceTransfer.PermitDetails",
2198
+ "value": null,
2199
+ "visibility": "internal"
2200
+ },
2201
+ "children": [
2202
+ {
2203
+ "attributes": {
2204
+ "contractScope": null,
2205
+ "name": "PermitDetails",
2206
+ "referencedDeclaration": 15465,
2207
+ "type": "struct IAllowanceTransfer.PermitDetails"
2208
+ },
2209
+ "id": 15466,
2210
+ "name": "UserDefinedTypeName",
2211
+ "src": "760:13:56"
2212
+ }
2213
+ ],
2214
+ "id": 15467,
2215
+ "name": "VariableDeclaration",
2216
+ "src": "760:21:56"
2217
+ },
2218
+ {
2219
+ "attributes": {
2220
+ "constant": false,
2221
+ "name": "spender",
2222
+ "scope": 15472,
2223
+ "stateVariable": false,
2224
+ "storageLocation": "default",
2225
+ "type": "address",
2226
+ "value": null,
2227
+ "visibility": "internal"
2228
+ },
2229
+ "children": [
2230
+ {
2231
+ "attributes": {
2232
+ "name": "address",
2233
+ "stateMutability": "nonpayable",
2234
+ "type": "address"
2235
+ },
2236
+ "id": 15468,
2237
+ "name": "ElementaryTypeName",
2238
+ "src": "845:7:56"
2239
+ }
2240
+ ],
2241
+ "id": 15469,
2242
+ "name": "VariableDeclaration",
2243
+ "src": "845:15:56"
2244
+ },
2245
+ {
2246
+ "attributes": {
2247
+ "constant": false,
2248
+ "name": "sigDeadline",
2249
+ "scope": 15472,
2250
+ "stateVariable": false,
2251
+ "storageLocation": "default",
2252
+ "type": "uint256",
2253
+ "value": null,
2254
+ "visibility": "internal"
2255
+ },
2256
+ "children": [
2257
+ {
2258
+ "attributes": {
2259
+ "name": "uint256",
2260
+ "type": "uint256"
2261
+ },
2262
+ "id": 15470,
2263
+ "name": "ElementaryTypeName",
2264
+ "src": "914:7:56"
2265
+ }
2266
+ ],
2267
+ "id": 15471,
2268
+ "name": "VariableDeclaration",
2269
+ "src": "914:19:56"
2270
+ }
2271
+ ],
2272
+ "id": 15472,
2273
+ "name": "StructDefinition",
2274
+ "src": "676:264:56"
2275
+ },
2276
+ {
2277
+ "attributes": {
2278
+ "canonicalName": "IAllowanceTransfer.PermitBatch",
2279
+ "name": "PermitBatch",
2280
+ "scope": 15578,
2281
+ "visibility": "public"
2282
+ },
2283
+ "children": [
2284
+ {
2285
+ "attributes": {
2286
+ "constant": false,
2287
+ "name": "details",
2288
+ "scope": 15480,
2289
+ "stateVariable": false,
2290
+ "storageLocation": "default",
2291
+ "type": "struct IAllowanceTransfer.PermitDetails[]",
2292
+ "value": null,
2293
+ "visibility": "internal"
2294
+ },
2295
+ "children": [
2296
+ {
2297
+ "attributes": {
2298
+ "length": null,
2299
+ "type": "struct IAllowanceTransfer.PermitDetails[]"
2300
+ },
2301
+ "children": [
2302
+ {
2303
+ "attributes": {
2304
+ "contractScope": null,
2305
+ "name": "PermitDetails",
2306
+ "referencedDeclaration": 15465,
2307
+ "type": "struct IAllowanceTransfer.PermitDetails"
2308
+ },
2309
+ "id": 15473,
2310
+ "name": "UserDefinedTypeName",
2311
+ "src": "1104:13:56"
2312
+ }
2313
+ ],
2314
+ "id": 15474,
2315
+ "name": "ArrayTypeName",
2316
+ "src": "1104:15:56"
2317
+ }
2318
+ ],
2319
+ "id": 15475,
2320
+ "name": "VariableDeclaration",
2321
+ "src": "1104:23:56"
2322
+ },
2323
+ {
2324
+ "attributes": {
2325
+ "constant": false,
2326
+ "name": "spender",
2327
+ "scope": 15480,
2328
+ "stateVariable": false,
2329
+ "storageLocation": "default",
2330
+ "type": "address",
2331
+ "value": null,
2332
+ "visibility": "internal"
2333
+ },
2334
+ "children": [
2335
+ {
2336
+ "attributes": {
2337
+ "name": "address",
2338
+ "stateMutability": "nonpayable",
2339
+ "type": "address"
2340
+ },
2341
+ "id": 15476,
2342
+ "name": "ElementaryTypeName",
2343
+ "src": "1191:7:56"
2344
+ }
2345
+ ],
2346
+ "id": 15477,
2347
+ "name": "VariableDeclaration",
2348
+ "src": "1191:15:56"
2349
+ },
2350
+ {
2351
+ "attributes": {
2352
+ "constant": false,
2353
+ "name": "sigDeadline",
2354
+ "scope": 15480,
2355
+ "stateVariable": false,
2356
+ "storageLocation": "default",
2357
+ "type": "uint256",
2358
+ "value": null,
2359
+ "visibility": "internal"
2360
+ },
2361
+ "children": [
2362
+ {
2363
+ "attributes": {
2364
+ "name": "uint256",
2365
+ "type": "uint256"
2366
+ },
2367
+ "id": 15478,
2368
+ "name": "ElementaryTypeName",
2369
+ "src": "1260:7:56"
2370
+ }
2371
+ ],
2372
+ "id": 15479,
2373
+ "name": "VariableDeclaration",
2374
+ "src": "1260:19:56"
2375
+ }
2376
+ ],
2377
+ "id": 15480,
2378
+ "name": "StructDefinition",
2379
+ "src": "1018:268:56"
2380
+ },
2381
+ {
2382
+ "attributes": {
2383
+ "canonicalName": "IAllowanceTransfer.PackedAllowance",
2384
+ "name": "PackedAllowance",
2385
+ "scope": 15578,
2386
+ "visibility": "public"
2387
+ },
2388
+ "children": [
2389
+ {
2390
+ "attributes": {
2391
+ "constant": false,
2392
+ "name": "amount",
2393
+ "scope": 15487,
2394
+ "stateVariable": false,
2395
+ "storageLocation": "default",
2396
+ "type": "uint160",
2397
+ "value": null,
2398
+ "visibility": "internal"
2399
+ },
2400
+ "children": [
2401
+ {
2402
+ "attributes": {
2403
+ "name": "uint160",
2404
+ "type": "uint160"
2405
+ },
2406
+ "id": 15481,
2407
+ "name": "ElementaryTypeName",
2408
+ "src": "1573:7:56"
2409
+ }
2410
+ ],
2411
+ "id": 15482,
2412
+ "name": "VariableDeclaration",
2413
+ "src": "1573:14:56"
2414
+ },
2415
+ {
2416
+ "attributes": {
2417
+ "constant": false,
2418
+ "name": "expiration",
2419
+ "scope": 15487,
2420
+ "stateVariable": false,
2421
+ "storageLocation": "default",
2422
+ "type": "uint48",
2423
+ "value": null,
2424
+ "visibility": "internal"
2425
+ },
2426
+ "children": [
2427
+ {
2428
+ "attributes": {
2429
+ "name": "uint48",
2430
+ "type": "uint48"
2431
+ },
2432
+ "id": 15483,
2433
+ "name": "ElementaryTypeName",
2434
+ "src": "1626:6:56"
2435
+ }
2436
+ ],
2437
+ "id": 15484,
2438
+ "name": "VariableDeclaration",
2439
+ "src": "1626:17:56"
2440
+ },
2441
+ {
2442
+ "attributes": {
2443
+ "constant": false,
2444
+ "name": "nonce",
2445
+ "scope": 15487,
2446
+ "stateVariable": false,
2447
+ "storageLocation": "default",
2448
+ "type": "uint48",
2449
+ "value": null,
2450
+ "visibility": "internal"
2451
+ },
2452
+ "children": [
2453
+ {
2454
+ "attributes": {
2455
+ "name": "uint48",
2456
+ "type": "uint48"
2457
+ },
2458
+ "id": 15485,
2459
+ "name": "ElementaryTypeName",
2460
+ "src": "1741:6:56"
2461
+ }
2462
+ ],
2463
+ "id": 15486,
2464
+ "name": "VariableDeclaration",
2465
+ "src": "1741:12:56"
2466
+ }
2467
+ ],
2468
+ "id": 15487,
2469
+ "name": "StructDefinition",
2470
+ "src": "1514:246:56"
2471
+ },
2472
+ {
2473
+ "attributes": {
2474
+ "canonicalName": "IAllowanceTransfer.TokenSpenderPair",
2475
+ "name": "TokenSpenderPair",
2476
+ "scope": 15578,
2477
+ "visibility": "public"
2478
+ },
2479
+ "children": [
2480
+ {
2481
+ "attributes": {
2482
+ "constant": false,
2483
+ "name": "token",
2484
+ "scope": 15492,
2485
+ "stateVariable": false,
2486
+ "storageLocation": "default",
2487
+ "type": "address",
2488
+ "value": null,
2489
+ "visibility": "internal"
2490
+ },
2491
+ "children": [
2492
+ {
2493
+ "attributes": {
2494
+ "name": "address",
2495
+ "stateMutability": "nonpayable",
2496
+ "type": "address"
2497
+ },
2498
+ "id": 15488,
2499
+ "name": "ElementaryTypeName",
2500
+ "src": "1883:7:56"
2501
+ }
2502
+ ],
2503
+ "id": 15489,
2504
+ "name": "VariableDeclaration",
2505
+ "src": "1883:13:56"
2506
+ },
2507
+ {
2508
+ "attributes": {
2509
+ "constant": false,
2510
+ "name": "spender",
2511
+ "scope": 15492,
2512
+ "stateVariable": false,
2513
+ "storageLocation": "default",
2514
+ "type": "address",
2515
+ "value": null,
2516
+ "visibility": "internal"
2517
+ },
2518
+ "children": [
2519
+ {
2520
+ "attributes": {
2521
+ "name": "address",
2522
+ "stateMutability": "nonpayable",
2523
+ "type": "address"
2524
+ },
2525
+ "id": 15490,
2526
+ "name": "ElementaryTypeName",
2527
+ "src": "1937:7:56"
2528
+ }
2529
+ ],
2530
+ "id": 15491,
2531
+ "name": "VariableDeclaration",
2532
+ "src": "1937:15:56"
2533
+ }
2534
+ ],
2535
+ "id": 15492,
2536
+ "name": "StructDefinition",
2537
+ "src": "1804:155:56"
2538
+ },
2539
+ {
2540
+ "attributes": {
2541
+ "canonicalName": "IAllowanceTransfer.AllowanceTransferDetails",
2542
+ "name": "AllowanceTransferDetails",
2543
+ "scope": 15578,
2544
+ "visibility": "public"
2545
+ },
2546
+ "children": [
2547
+ {
2548
+ "attributes": {
2549
+ "constant": false,
2550
+ "name": "from",
2551
+ "scope": 15501,
2552
+ "stateVariable": false,
2553
+ "storageLocation": "default",
2554
+ "type": "address",
2555
+ "value": null,
2556
+ "visibility": "internal"
2557
+ },
2558
+ "children": [
2559
+ {
2560
+ "attributes": {
2561
+ "name": "address",
2562
+ "stateMutability": "nonpayable",
2563
+ "type": "address"
2564
+ },
2565
+ "id": 15493,
2566
+ "name": "ElementaryTypeName",
2567
+ "src": "2087:7:56"
2568
+ }
2569
+ ],
2570
+ "id": 15494,
2571
+ "name": "VariableDeclaration",
2572
+ "src": "2087:12:56"
2573
+ },
2574
+ {
2575
+ "attributes": {
2576
+ "constant": false,
2577
+ "name": "to",
2578
+ "scope": 15501,
2579
+ "stateVariable": false,
2580
+ "storageLocation": "default",
2581
+ "type": "address",
2582
+ "value": null,
2583
+ "visibility": "internal"
2584
+ },
2585
+ "children": [
2586
+ {
2587
+ "attributes": {
2588
+ "name": "address",
2589
+ "stateMutability": "nonpayable",
2590
+ "type": "address"
2591
+ },
2592
+ "id": 15495,
2593
+ "name": "ElementaryTypeName",
2594
+ "src": "2147:7:56"
2595
+ }
2596
+ ],
2597
+ "id": 15496,
2598
+ "name": "VariableDeclaration",
2599
+ "src": "2147:10:56"
2600
+ },
2601
+ {
2602
+ "attributes": {
2603
+ "constant": false,
2604
+ "name": "amount",
2605
+ "scope": 15501,
2606
+ "stateVariable": false,
2607
+ "storageLocation": "default",
2608
+ "type": "uint160",
2609
+ "value": null,
2610
+ "visibility": "internal"
2611
+ },
2612
+ "children": [
2613
+ {
2614
+ "attributes": {
2615
+ "name": "uint160",
2616
+ "type": "uint160"
2617
+ },
2618
+ "id": 15497,
2619
+ "name": "ElementaryTypeName",
2620
+ "src": "2202:7:56"
2621
+ }
2622
+ ],
2623
+ "id": 15498,
2624
+ "name": "VariableDeclaration",
2625
+ "src": "2202:14:56"
2626
+ },
2627
+ {
2628
+ "attributes": {
2629
+ "constant": false,
2630
+ "name": "token",
2631
+ "scope": 15501,
2632
+ "stateVariable": false,
2633
+ "storageLocation": "default",
2634
+ "type": "address",
2635
+ "value": null,
2636
+ "visibility": "internal"
2637
+ },
2638
+ "children": [
2639
+ {
2640
+ "attributes": {
2641
+ "name": "address",
2642
+ "stateMutability": "nonpayable",
2643
+ "type": "address"
2644
+ },
2645
+ "id": 15499,
2646
+ "name": "ElementaryTypeName",
2647
+ "src": "2265:7:56"
2648
+ }
2649
+ ],
2650
+ "id": 15500,
2651
+ "name": "VariableDeclaration",
2652
+ "src": "2265:13:56"
2653
+ }
2654
+ ],
2655
+ "id": 15501,
2656
+ "name": "StructDefinition",
2657
+ "src": "2011:274:56"
2658
+ },
2659
+ {
2660
+ "attributes": {
2661
+ "body": null,
2662
+ "documentation": "@notice A mapping from owner address to token address to spender address to PackedAllowance struct, which contains details and conditions of the approval.\n @notice The mapping is indexed in the above order see: allowance[ownerAddress][tokenAddress][spenderAddress]\n @dev The packed slot holds the allowed amount, expiration at which the allowed amount is no longer valid, and current nonce thats updated on any signature based approvals.",
2663
+ "implemented": false,
2664
+ "isConstructor": false,
2665
+ "kind": "function",
2666
+ "modifiers": [
2667
+ null
2668
+ ],
2669
+ "name": "allowance",
2670
+ "scope": 15578,
2671
+ "stateMutability": "view",
2672
+ "superFunction": null,
2673
+ "visibility": "external"
2674
+ },
2675
+ "children": [
2676
+ {
2677
+ "children": [
2678
+ {
2679
+ "attributes": {
2680
+ "constant": false,
2681
+ "name": "user",
2682
+ "scope": 15516,
2683
+ "stateVariable": false,
2684
+ "storageLocation": "default",
2685
+ "type": "address",
2686
+ "value": null,
2687
+ "visibility": "internal"
2688
+ },
2689
+ "children": [
2690
+ {
2691
+ "attributes": {
2692
+ "name": "address",
2693
+ "stateMutability": "nonpayable",
2694
+ "type": "address"
2695
+ },
2696
+ "id": 15502,
2697
+ "name": "ElementaryTypeName",
2698
+ "src": "2770:7:56"
2699
+ }
2700
+ ],
2701
+ "id": 15503,
2702
+ "name": "VariableDeclaration",
2703
+ "src": "2770:12:56"
2704
+ },
2705
+ {
2706
+ "attributes": {
2707
+ "constant": false,
2708
+ "name": "token",
2709
+ "scope": 15516,
2710
+ "stateVariable": false,
2711
+ "storageLocation": "default",
2712
+ "type": "address",
2713
+ "value": null,
2714
+ "visibility": "internal"
2715
+ },
2716
+ "children": [
2717
+ {
2718
+ "attributes": {
2719
+ "name": "address",
2720
+ "stateMutability": "nonpayable",
2721
+ "type": "address"
2722
+ },
2723
+ "id": 15504,
2724
+ "name": "ElementaryTypeName",
2725
+ "src": "2784:7:56"
2726
+ }
2727
+ ],
2728
+ "id": 15505,
2729
+ "name": "VariableDeclaration",
2730
+ "src": "2784:13:56"
2731
+ },
2732
+ {
2733
+ "attributes": {
2734
+ "constant": false,
2735
+ "name": "spender",
2736
+ "scope": 15516,
2737
+ "stateVariable": false,
2738
+ "storageLocation": "default",
2739
+ "type": "address",
2740
+ "value": null,
2741
+ "visibility": "internal"
2742
+ },
2743
+ "children": [
2744
+ {
2745
+ "attributes": {
2746
+ "name": "address",
2747
+ "stateMutability": "nonpayable",
2748
+ "type": "address"
2749
+ },
2750
+ "id": 15506,
2751
+ "name": "ElementaryTypeName",
2752
+ "src": "2799:7:56"
2753
+ }
2754
+ ],
2755
+ "id": 15507,
2756
+ "name": "VariableDeclaration",
2757
+ "src": "2799:15:56"
2758
+ }
2759
+ ],
2760
+ "id": 15508,
2761
+ "name": "ParameterList",
2762
+ "src": "2769:46:56"
2763
+ },
2764
+ {
2765
+ "children": [
2766
+ {
2767
+ "attributes": {
2768
+ "constant": false,
2769
+ "name": "amount",
2770
+ "scope": 15516,
2771
+ "stateVariable": false,
2772
+ "storageLocation": "default",
2773
+ "type": "uint160",
2774
+ "value": null,
2775
+ "visibility": "internal"
2776
+ },
2777
+ "children": [
2778
+ {
2779
+ "attributes": {
2780
+ "name": "uint160",
2781
+ "type": "uint160"
2782
+ },
2783
+ "id": 15509,
2784
+ "name": "ElementaryTypeName",
2785
+ "src": "2863:7:56"
2786
+ }
2787
+ ],
2788
+ "id": 15510,
2789
+ "name": "VariableDeclaration",
2790
+ "src": "2863:14:56"
2791
+ },
2792
+ {
2793
+ "attributes": {
2794
+ "constant": false,
2795
+ "name": "expiration",
2796
+ "scope": 15516,
2797
+ "stateVariable": false,
2798
+ "storageLocation": "default",
2799
+ "type": "uint48",
2800
+ "value": null,
2801
+ "visibility": "internal"
2802
+ },
2803
+ "children": [
2804
+ {
2805
+ "attributes": {
2806
+ "name": "uint48",
2807
+ "type": "uint48"
2808
+ },
2809
+ "id": 15511,
2810
+ "name": "ElementaryTypeName",
2811
+ "src": "2879:6:56"
2812
+ }
2813
+ ],
2814
+ "id": 15512,
2815
+ "name": "VariableDeclaration",
2816
+ "src": "2879:17:56"
2817
+ },
2818
+ {
2819
+ "attributes": {
2820
+ "constant": false,
2821
+ "name": "nonce",
2822
+ "scope": 15516,
2823
+ "stateVariable": false,
2824
+ "storageLocation": "default",
2825
+ "type": "uint48",
2826
+ "value": null,
2827
+ "visibility": "internal"
2828
+ },
2829
+ "children": [
2830
+ {
2831
+ "attributes": {
2832
+ "name": "uint48",
2833
+ "type": "uint48"
2834
+ },
2835
+ "id": 15513,
2836
+ "name": "ElementaryTypeName",
2837
+ "src": "2898:6:56"
2838
+ }
2839
+ ],
2840
+ "id": 15514,
2841
+ "name": "VariableDeclaration",
2842
+ "src": "2898:12:56"
2843
+ }
2844
+ ],
2845
+ "id": 15515,
2846
+ "name": "ParameterList",
2847
+ "src": "2862:49:56"
2848
+ }
2849
+ ],
2850
+ "id": 15516,
2851
+ "name": "FunctionDefinition",
2852
+ "src": "2751:161:56"
2853
+ },
2854
+ {
2855
+ "attributes": {
2856
+ "body": null,
2857
+ "documentation": "@notice Approves the spender to use up to amount of the specified token up until the expiration\n @param token The token to approve\n @param spender The spender address to approve\n @param amount The approved amount of the token\n @param expiration The timestamp at which the approval is no longer valid\n @dev The packed allowance also holds a nonce, which will stay unchanged in approve\n @dev Setting amount to type(uint160).max sets an unlimited approval",
2858
+ "implemented": false,
2859
+ "isConstructor": false,
2860
+ "kind": "function",
2861
+ "modifiers": [
2862
+ null
2863
+ ],
2864
+ "name": "approve",
2865
+ "scope": 15578,
2866
+ "stateMutability": "nonpayable",
2867
+ "superFunction": null,
2868
+ "visibility": "external"
2869
+ },
2870
+ "children": [
2871
+ {
2872
+ "children": [
2873
+ {
2874
+ "attributes": {
2875
+ "constant": false,
2876
+ "name": "token",
2877
+ "scope": 15527,
2878
+ "stateVariable": false,
2879
+ "storageLocation": "default",
2880
+ "type": "address",
2881
+ "value": null,
2882
+ "visibility": "internal"
2883
+ },
2884
+ "children": [
2885
+ {
2886
+ "attributes": {
2887
+ "name": "address",
2888
+ "stateMutability": "nonpayable",
2889
+ "type": "address"
2890
+ },
2891
+ "id": 15517,
2892
+ "name": "ElementaryTypeName",
2893
+ "src": "3438:7:56"
2894
+ }
2895
+ ],
2896
+ "id": 15518,
2897
+ "name": "VariableDeclaration",
2898
+ "src": "3438:13:56"
2899
+ },
2900
+ {
2901
+ "attributes": {
2902
+ "constant": false,
2903
+ "name": "spender",
2904
+ "scope": 15527,
2905
+ "stateVariable": false,
2906
+ "storageLocation": "default",
2907
+ "type": "address",
2908
+ "value": null,
2909
+ "visibility": "internal"
2910
+ },
2911
+ "children": [
2912
+ {
2913
+ "attributes": {
2914
+ "name": "address",
2915
+ "stateMutability": "nonpayable",
2916
+ "type": "address"
2917
+ },
2918
+ "id": 15519,
2919
+ "name": "ElementaryTypeName",
2920
+ "src": "3453:7:56"
2921
+ }
2922
+ ],
2923
+ "id": 15520,
2924
+ "name": "VariableDeclaration",
2925
+ "src": "3453:15:56"
2926
+ },
2927
+ {
2928
+ "attributes": {
2929
+ "constant": false,
2930
+ "name": "amount",
2931
+ "scope": 15527,
2932
+ "stateVariable": false,
2933
+ "storageLocation": "default",
2934
+ "type": "uint160",
2935
+ "value": null,
2936
+ "visibility": "internal"
2937
+ },
2938
+ "children": [
2939
+ {
2940
+ "attributes": {
2941
+ "name": "uint160",
2942
+ "type": "uint160"
2943
+ },
2944
+ "id": 15521,
2945
+ "name": "ElementaryTypeName",
2946
+ "src": "3470:7:56"
2947
+ }
2948
+ ],
2949
+ "id": 15522,
2950
+ "name": "VariableDeclaration",
2951
+ "src": "3470:14:56"
2952
+ },
2953
+ {
2954
+ "attributes": {
2955
+ "constant": false,
2956
+ "name": "expiration",
2957
+ "scope": 15527,
2958
+ "stateVariable": false,
2959
+ "storageLocation": "default",
2960
+ "type": "uint48",
2961
+ "value": null,
2962
+ "visibility": "internal"
2963
+ },
2964
+ "children": [
2965
+ {
2966
+ "attributes": {
2967
+ "name": "uint48",
2968
+ "type": "uint48"
2969
+ },
2970
+ "id": 15523,
2971
+ "name": "ElementaryTypeName",
2972
+ "src": "3486:6:56"
2973
+ }
2974
+ ],
2975
+ "id": 15524,
2976
+ "name": "VariableDeclaration",
2977
+ "src": "3486:17:56"
2978
+ }
2979
+ ],
2980
+ "id": 15525,
2981
+ "name": "ParameterList",
2982
+ "src": "3437:67:56"
2983
+ },
2984
+ {
2985
+ "attributes": {
2986
+ "parameters": [
2987
+ null
2988
+ ]
2989
+ },
2990
+ "children": [],
2991
+ "id": 15526,
2992
+ "name": "ParameterList",
2993
+ "src": "3513:0:56"
2994
+ }
2995
+ ],
2996
+ "id": 15527,
2997
+ "name": "FunctionDefinition",
2998
+ "src": "3421:93:56"
2999
+ },
3000
+ {
3001
+ "attributes": {
3002
+ "body": null,
3003
+ "documentation": "@notice Permit a spender to a given amount of the owners token via the owner's EIP-712 signature\n @dev May fail if the owner's nonce was invalidated in-flight by invalidateNonce\n @param owner The owner of the tokens being approved\n @param permitSingle Data signed over by the owner specifying the terms of approval\n @param signature The owner's signature over the permit data",
3004
+ "implemented": false,
3005
+ "isConstructor": false,
3006
+ "kind": "function",
3007
+ "modifiers": [
3008
+ null
3009
+ ],
3010
+ "name": "permit",
3011
+ "scope": 15578,
3012
+ "stateMutability": "nonpayable",
3013
+ "superFunction": null,
3014
+ "visibility": "external"
3015
+ },
3016
+ "children": [
3017
+ {
3018
+ "children": [
3019
+ {
3020
+ "attributes": {
3021
+ "constant": false,
3022
+ "name": "owner",
3023
+ "scope": 15536,
3024
+ "stateVariable": false,
3025
+ "storageLocation": "default",
3026
+ "type": "address",
3027
+ "value": null,
3028
+ "visibility": "internal"
3029
+ },
3030
+ "children": [
3031
+ {
3032
+ "attributes": {
3033
+ "name": "address",
3034
+ "stateMutability": "nonpayable",
3035
+ "type": "address"
3036
+ },
3037
+ "id": 15528,
3038
+ "name": "ElementaryTypeName",
3039
+ "src": "3948:7:56"
3040
+ }
3041
+ ],
3042
+ "id": 15529,
3043
+ "name": "VariableDeclaration",
3044
+ "src": "3948:13:56"
3045
+ },
3046
+ {
3047
+ "attributes": {
3048
+ "constant": false,
3049
+ "name": "permitSingle",
3050
+ "scope": 15536,
3051
+ "stateVariable": false,
3052
+ "storageLocation": "calldata",
3053
+ "type": "struct IAllowanceTransfer.PermitSingle",
3054
+ "value": null,
3055
+ "visibility": "internal"
3056
+ },
3057
+ "children": [
3058
+ {
3059
+ "attributes": {
3060
+ "contractScope": null,
3061
+ "name": "PermitSingle",
3062
+ "referencedDeclaration": 15472,
3063
+ "type": "struct IAllowanceTransfer.PermitSingle"
3064
+ },
3065
+ "id": 15530,
3066
+ "name": "UserDefinedTypeName",
3067
+ "src": "3963:12:56"
3068
+ }
3069
+ ],
3070
+ "id": 15531,
3071
+ "name": "VariableDeclaration",
3072
+ "src": "3963:34:56"
3073
+ },
3074
+ {
3075
+ "attributes": {
3076
+ "constant": false,
3077
+ "name": "signature",
3078
+ "scope": 15536,
3079
+ "stateVariable": false,
3080
+ "storageLocation": "calldata",
3081
+ "type": "bytes",
3082
+ "value": null,
3083
+ "visibility": "internal"
3084
+ },
3085
+ "children": [
3086
+ {
3087
+ "attributes": {
3088
+ "name": "bytes",
3089
+ "type": "bytes"
3090
+ },
3091
+ "id": 15532,
3092
+ "name": "ElementaryTypeName",
3093
+ "src": "3999:5:56"
3094
+ }
3095
+ ],
3096
+ "id": 15533,
3097
+ "name": "VariableDeclaration",
3098
+ "src": "3999:24:56"
3099
+ }
3100
+ ],
3101
+ "id": 15534,
3102
+ "name": "ParameterList",
3103
+ "src": "3947:77:56"
3104
+ },
3105
+ {
3106
+ "attributes": {
3107
+ "parameters": [
3108
+ null
3109
+ ]
3110
+ },
3111
+ "children": [],
3112
+ "id": 15535,
3113
+ "name": "ParameterList",
3114
+ "src": "4033:0:56"
3115
+ }
3116
+ ],
3117
+ "id": 15536,
3118
+ "name": "FunctionDefinition",
3119
+ "src": "3932:102:56"
3120
+ },
3121
+ {
3122
+ "attributes": {
3123
+ "body": null,
3124
+ "documentation": "@notice Permit a spender to the signed amounts of the owners tokens via the owner's EIP-712 signature\n @dev May fail if the owner's nonce was invalidated in-flight by invalidateNonce\n @param owner The owner of the tokens being approved\n @param permitBatch Data signed over by the owner specifying the terms of approval\n @param signature The owner's signature over the permit data",
3125
+ "implemented": false,
3126
+ "isConstructor": false,
3127
+ "kind": "function",
3128
+ "modifiers": [
3129
+ null
3130
+ ],
3131
+ "name": "permit",
3132
+ "scope": 15578,
3133
+ "stateMutability": "nonpayable",
3134
+ "superFunction": null,
3135
+ "visibility": "external"
3136
+ },
3137
+ "children": [
3138
+ {
3139
+ "children": [
3140
+ {
3141
+ "attributes": {
3142
+ "constant": false,
3143
+ "name": "owner",
3144
+ "scope": 15545,
3145
+ "stateVariable": false,
3146
+ "storageLocation": "default",
3147
+ "type": "address",
3148
+ "value": null,
3149
+ "visibility": "internal"
3150
+ },
3151
+ "children": [
3152
+ {
3153
+ "attributes": {
3154
+ "name": "address",
3155
+ "stateMutability": "nonpayable",
3156
+ "type": "address"
3157
+ },
3158
+ "id": 15537,
3159
+ "name": "ElementaryTypeName",
3160
+ "src": "4472:7:56"
3161
+ }
3162
+ ],
3163
+ "id": 15538,
3164
+ "name": "VariableDeclaration",
3165
+ "src": "4472:13:56"
3166
+ },
3167
+ {
3168
+ "attributes": {
3169
+ "constant": false,
3170
+ "name": "permitBatch",
3171
+ "scope": 15545,
3172
+ "stateVariable": false,
3173
+ "storageLocation": "calldata",
3174
+ "type": "struct IAllowanceTransfer.PermitBatch",
3175
+ "value": null,
3176
+ "visibility": "internal"
3177
+ },
3178
+ "children": [
3179
+ {
3180
+ "attributes": {
3181
+ "contractScope": null,
3182
+ "name": "PermitBatch",
3183
+ "referencedDeclaration": 15480,
3184
+ "type": "struct IAllowanceTransfer.PermitBatch"
3185
+ },
3186
+ "id": 15539,
3187
+ "name": "UserDefinedTypeName",
3188
+ "src": "4487:11:56"
3189
+ }
3190
+ ],
3191
+ "id": 15540,
3192
+ "name": "VariableDeclaration",
3193
+ "src": "4487:32:56"
3194
+ },
3195
+ {
3196
+ "attributes": {
3197
+ "constant": false,
3198
+ "name": "signature",
3199
+ "scope": 15545,
3200
+ "stateVariable": false,
3201
+ "storageLocation": "calldata",
3202
+ "type": "bytes",
3203
+ "value": null,
3204
+ "visibility": "internal"
3205
+ },
3206
+ "children": [
3207
+ {
3208
+ "attributes": {
3209
+ "name": "bytes",
3210
+ "type": "bytes"
3211
+ },
3212
+ "id": 15541,
3213
+ "name": "ElementaryTypeName",
3214
+ "src": "4521:5:56"
3215
+ }
3216
+ ],
3217
+ "id": 15542,
3218
+ "name": "VariableDeclaration",
3219
+ "src": "4521:24:56"
3220
+ }
3221
+ ],
3222
+ "id": 15543,
3223
+ "name": "ParameterList",
3224
+ "src": "4471:75:56"
3225
+ },
3226
+ {
3227
+ "attributes": {
3228
+ "parameters": [
3229
+ null
3230
+ ]
3231
+ },
3232
+ "children": [],
3233
+ "id": 15544,
3234
+ "name": "ParameterList",
3235
+ "src": "4555:0:56"
3236
+ }
3237
+ ],
3238
+ "id": 15545,
3239
+ "name": "FunctionDefinition",
3240
+ "src": "4456:100:56"
3241
+ },
3242
+ {
3243
+ "attributes": {
3244
+ "body": null,
3245
+ "documentation": "@notice Transfer approved tokens from one address to another\n @param from The address to transfer from\n @param to The address of the recipient\n @param amount The amount of the token to transfer\n @param token The token address to transfer\n @dev Requires the from address to have approved at least the desired amount\n of tokens to msg.sender.",
3246
+ "implemented": false,
3247
+ "isConstructor": false,
3248
+ "kind": "function",
3249
+ "modifiers": [
3250
+ null
3251
+ ],
3252
+ "name": "transferFrom",
3253
+ "scope": 15578,
3254
+ "stateMutability": "nonpayable",
3255
+ "superFunction": null,
3256
+ "visibility": "external"
3257
+ },
3258
+ "children": [
3259
+ {
3260
+ "children": [
3261
+ {
3262
+ "attributes": {
3263
+ "constant": false,
3264
+ "name": "from",
3265
+ "scope": 15556,
3266
+ "stateVariable": false,
3267
+ "storageLocation": "default",
3268
+ "type": "address",
3269
+ "value": null,
3270
+ "visibility": "internal"
3271
+ },
3272
+ "children": [
3273
+ {
3274
+ "attributes": {
3275
+ "name": "address",
3276
+ "stateMutability": "nonpayable",
3277
+ "type": "address"
3278
+ },
3279
+ "id": 15546,
3280
+ "name": "ElementaryTypeName",
3281
+ "src": "4975:7:56"
3282
+ }
3283
+ ],
3284
+ "id": 15547,
3285
+ "name": "VariableDeclaration",
3286
+ "src": "4975:12:56"
3287
+ },
3288
+ {
3289
+ "attributes": {
3290
+ "constant": false,
3291
+ "name": "to",
3292
+ "scope": 15556,
3293
+ "stateVariable": false,
3294
+ "storageLocation": "default",
3295
+ "type": "address",
3296
+ "value": null,
3297
+ "visibility": "internal"
3298
+ },
3299
+ "children": [
3300
+ {
3301
+ "attributes": {
3302
+ "name": "address",
3303
+ "stateMutability": "nonpayable",
3304
+ "type": "address"
3305
+ },
3306
+ "id": 15548,
3307
+ "name": "ElementaryTypeName",
3308
+ "src": "4989:7:56"
3309
+ }
3310
+ ],
3311
+ "id": 15549,
3312
+ "name": "VariableDeclaration",
3313
+ "src": "4989:10:56"
3314
+ },
3315
+ {
3316
+ "attributes": {
3317
+ "constant": false,
3318
+ "name": "amount",
3319
+ "scope": 15556,
3320
+ "stateVariable": false,
3321
+ "storageLocation": "default",
3322
+ "type": "uint160",
3323
+ "value": null,
3324
+ "visibility": "internal"
3325
+ },
3326
+ "children": [
3327
+ {
3328
+ "attributes": {
3329
+ "name": "uint160",
3330
+ "type": "uint160"
3331
+ },
3332
+ "id": 15550,
3333
+ "name": "ElementaryTypeName",
3334
+ "src": "5001:7:56"
3335
+ }
3336
+ ],
3337
+ "id": 15551,
3338
+ "name": "VariableDeclaration",
3339
+ "src": "5001:14:56"
3340
+ },
3341
+ {
3342
+ "attributes": {
3343
+ "constant": false,
3344
+ "name": "token",
3345
+ "scope": 15556,
3346
+ "stateVariable": false,
3347
+ "storageLocation": "default",
3348
+ "type": "address",
3349
+ "value": null,
3350
+ "visibility": "internal"
3351
+ },
3352
+ "children": [
3353
+ {
3354
+ "attributes": {
3355
+ "name": "address",
3356
+ "stateMutability": "nonpayable",
3357
+ "type": "address"
3358
+ },
3359
+ "id": 15552,
3360
+ "name": "ElementaryTypeName",
3361
+ "src": "5017:7:56"
3362
+ }
3363
+ ],
3364
+ "id": 15553,
3365
+ "name": "VariableDeclaration",
3366
+ "src": "5017:13:56"
3367
+ }
3368
+ ],
3369
+ "id": 15554,
3370
+ "name": "ParameterList",
3371
+ "src": "4974:57:56"
3372
+ },
3373
+ {
3374
+ "attributes": {
3375
+ "parameters": [
3376
+ null
3377
+ ]
3378
+ },
3379
+ "children": [],
3380
+ "id": 15555,
3381
+ "name": "ParameterList",
3382
+ "src": "5040:0:56"
3383
+ }
3384
+ ],
3385
+ "id": 15556,
3386
+ "name": "FunctionDefinition",
3387
+ "src": "4953:88:56"
3388
+ },
3389
+ {
3390
+ "attributes": {
3391
+ "body": null,
3392
+ "documentation": "@notice Transfer approved tokens in a batch\n @param transferDetails Array of owners, recipients, amounts, and tokens for the transfers\n @dev Requires the from addresses to have approved at least the desired amount\n of tokens to msg.sender.",
3393
+ "implemented": false,
3394
+ "isConstructor": false,
3395
+ "kind": "function",
3396
+ "modifiers": [
3397
+ null
3398
+ ],
3399
+ "name": "transferFrom",
3400
+ "scope": 15578,
3401
+ "stateMutability": "nonpayable",
3402
+ "superFunction": null,
3403
+ "visibility": "external"
3404
+ },
3405
+ "children": [
3406
+ {
3407
+ "children": [
3408
+ {
3409
+ "attributes": {
3410
+ "constant": false,
3411
+ "name": "transferDetails",
3412
+ "scope": 15562,
3413
+ "stateVariable": false,
3414
+ "storageLocation": "calldata",
3415
+ "type": "struct IAllowanceTransfer.AllowanceTransferDetails[]",
3416
+ "value": null,
3417
+ "visibility": "internal"
3418
+ },
3419
+ "children": [
3420
+ {
3421
+ "attributes": {
3422
+ "length": null,
3423
+ "type": "struct IAllowanceTransfer.AllowanceTransferDetails[]"
3424
+ },
3425
+ "children": [
3426
+ {
3427
+ "attributes": {
3428
+ "contractScope": null,
3429
+ "name": "AllowanceTransferDetails",
3430
+ "referencedDeclaration": 15501,
3431
+ "type": "struct IAllowanceTransfer.AllowanceTransferDetails"
3432
+ },
3433
+ "id": 15557,
3434
+ "name": "UserDefinedTypeName",
3435
+ "src": "5338:24:56"
3436
+ }
3437
+ ],
3438
+ "id": 15558,
3439
+ "name": "ArrayTypeName",
3440
+ "src": "5338:26:56"
3441
+ }
3442
+ ],
3443
+ "id": 15559,
3444
+ "name": "VariableDeclaration",
3445
+ "src": "5338:51:56"
3446
+ }
3447
+ ],
3448
+ "id": 15560,
3449
+ "name": "ParameterList",
3450
+ "src": "5337:53:56"
3451
+ },
3452
+ {
3453
+ "attributes": {
3454
+ "parameters": [
3455
+ null
3456
+ ]
3457
+ },
3458
+ "children": [],
3459
+ "id": 15561,
3460
+ "name": "ParameterList",
3461
+ "src": "5399:0:56"
3462
+ }
3463
+ ],
3464
+ "id": 15562,
3465
+ "name": "FunctionDefinition",
3466
+ "src": "5316:84:56"
3467
+ },
3468
+ {
3469
+ "attributes": {
3470
+ "body": null,
3471
+ "documentation": "@notice Enables performing a \"lockdown\" of the sender's Permit2 identity\n by batch revoking approvals\n @param approvals Array of approvals to revoke.",
3472
+ "implemented": false,
3473
+ "isConstructor": false,
3474
+ "kind": "function",
3475
+ "modifiers": [
3476
+ null
3477
+ ],
3478
+ "name": "lockdown",
3479
+ "scope": 15578,
3480
+ "stateMutability": "nonpayable",
3481
+ "superFunction": null,
3482
+ "visibility": "external"
3483
+ },
3484
+ "children": [
3485
+ {
3486
+ "children": [
3487
+ {
3488
+ "attributes": {
3489
+ "constant": false,
3490
+ "name": "approvals",
3491
+ "scope": 15568,
3492
+ "stateVariable": false,
3493
+ "storageLocation": "calldata",
3494
+ "type": "struct IAllowanceTransfer.TokenSpenderPair[]",
3495
+ "value": null,
3496
+ "visibility": "internal"
3497
+ },
3498
+ "children": [
3499
+ {
3500
+ "attributes": {
3501
+ "length": null,
3502
+ "type": "struct IAllowanceTransfer.TokenSpenderPair[]"
3503
+ },
3504
+ "children": [
3505
+ {
3506
+ "attributes": {
3507
+ "contractScope": null,
3508
+ "name": "TokenSpenderPair",
3509
+ "referencedDeclaration": 15492,
3510
+ "type": "struct IAllowanceTransfer.TokenSpenderPair"
3511
+ },
3512
+ "id": 15563,
3513
+ "name": "UserDefinedTypeName",
3514
+ "src": "5596:16:56"
3515
+ }
3516
+ ],
3517
+ "id": 15564,
3518
+ "name": "ArrayTypeName",
3519
+ "src": "5596:18:56"
3520
+ }
3521
+ ],
3522
+ "id": 15565,
3523
+ "name": "VariableDeclaration",
3524
+ "src": "5596:37:56"
3525
+ }
3526
+ ],
3527
+ "id": 15566,
3528
+ "name": "ParameterList",
3529
+ "src": "5595:39:56"
3530
+ },
3531
+ {
3532
+ "attributes": {
3533
+ "parameters": [
3534
+ null
3535
+ ]
3536
+ },
3537
+ "children": [],
3538
+ "id": 15567,
3539
+ "name": "ParameterList",
3540
+ "src": "5643:0:56"
3541
+ }
3542
+ ],
3543
+ "id": 15568,
3544
+ "name": "FunctionDefinition",
3545
+ "src": "5578:66:56"
3546
+ },
3547
+ {
3548
+ "attributes": {
3549
+ "body": null,
3550
+ "documentation": "@notice Invalidate nonces for a given (token, spender) pair\n @param token The token to invalidate nonces for\n @param spender The spender to invalidate nonces for\n @param newNonce The new nonce to set. Invalidates all nonces less than it.\n @dev Can't invalidate more than 2**16 nonces per transaction.",
3551
+ "implemented": false,
3552
+ "isConstructor": false,
3553
+ "kind": "function",
3554
+ "modifiers": [
3555
+ null
3556
+ ],
3557
+ "name": "invalidateNonces",
3558
+ "scope": 15578,
3559
+ "stateMutability": "nonpayable",
3560
+ "superFunction": null,
3561
+ "visibility": "external"
3562
+ },
3563
+ "children": [
3564
+ {
3565
+ "children": [
3566
+ {
3567
+ "attributes": {
3568
+ "constant": false,
3569
+ "name": "token",
3570
+ "scope": 15577,
3571
+ "stateVariable": false,
3572
+ "storageLocation": "default",
3573
+ "type": "address",
3574
+ "value": null,
3575
+ "visibility": "internal"
3576
+ },
3577
+ "children": [
3578
+ {
3579
+ "attributes": {
3580
+ "name": "address",
3581
+ "stateMutability": "nonpayable",
3582
+ "type": "address"
3583
+ },
3584
+ "id": 15569,
3585
+ "name": "ElementaryTypeName",
3586
+ "src": "6013:7:56"
3587
+ }
3588
+ ],
3589
+ "id": 15570,
3590
+ "name": "VariableDeclaration",
3591
+ "src": "6013:13:56"
3592
+ },
3593
+ {
3594
+ "attributes": {
3595
+ "constant": false,
3596
+ "name": "spender",
3597
+ "scope": 15577,
3598
+ "stateVariable": false,
3599
+ "storageLocation": "default",
3600
+ "type": "address",
3601
+ "value": null,
3602
+ "visibility": "internal"
3603
+ },
3604
+ "children": [
3605
+ {
3606
+ "attributes": {
3607
+ "name": "address",
3608
+ "stateMutability": "nonpayable",
3609
+ "type": "address"
3610
+ },
3611
+ "id": 15571,
3612
+ "name": "ElementaryTypeName",
3613
+ "src": "6028:7:56"
3614
+ }
3615
+ ],
3616
+ "id": 15572,
3617
+ "name": "VariableDeclaration",
3618
+ "src": "6028:15:56"
3619
+ },
3620
+ {
3621
+ "attributes": {
3622
+ "constant": false,
3623
+ "name": "newNonce",
3624
+ "scope": 15577,
3625
+ "stateVariable": false,
3626
+ "storageLocation": "default",
3627
+ "type": "uint48",
3628
+ "value": null,
3629
+ "visibility": "internal"
3630
+ },
3631
+ "children": [
3632
+ {
3633
+ "attributes": {
3634
+ "name": "uint48",
3635
+ "type": "uint48"
3636
+ },
3637
+ "id": 15573,
3638
+ "name": "ElementaryTypeName",
3639
+ "src": "6045:6:56"
3640
+ }
3641
+ ],
3642
+ "id": 15574,
3643
+ "name": "VariableDeclaration",
3644
+ "src": "6045:15:56"
3645
+ }
3646
+ ],
3647
+ "id": 15575,
3648
+ "name": "ParameterList",
3649
+ "src": "6012:49:56"
3650
+ },
3651
+ {
3652
+ "attributes": {
3653
+ "parameters": [
3654
+ null
3655
+ ]
3656
+ },
3657
+ "children": [],
3658
+ "id": 15576,
3659
+ "name": "ParameterList",
3660
+ "src": "6070:0:56"
3661
+ }
3662
+ ],
3663
+ "id": 15577,
3664
+ "name": "FunctionDefinition",
3665
+ "src": "5987:84:56"
3666
+ }
3667
+ ],
3668
+ "id": 15578,
3669
+ "name": "ContractDefinition",
3670
+ "src": "92:5981:56"
3671
+ }
3672
+ ],
3673
+ "id": 15579,
3674
+ "name": "SourceUnit",
3675
+ "src": "32:6042:56"
3676
+ },
3677
+ "compiler": {
3678
+ "name": "solc",
3679
+ "version": "0.5.16+commit.9c3226ce.Emscripten.clang"
3680
+ },
3681
+ "networks": {},
3682
+ "schemaVersion": "3.4.16",
3683
+ "updatedAt": "2024-12-11T13:33:59.702Z",
3684
+ "devdoc": {
3685
+ "methods": {
3686
+ "allowance(address,address,address)": {
3687
+ "details": "The packed slot holds the allowed amount, expiration at which the allowed amount is no longer valid, and current nonce thats updated on any signature based approvals."
3688
+ },
3689
+ "approve(address,address,uint160,uint48)": {
3690
+ "details": "The packed allowance also holds a nonce, which will stay unchanged in approveSetting amount to type(uint160).max sets an unlimited approval",
3691
+ "params": {
3692
+ "amount": "The approved amount of the token",
3693
+ "expiration": "The timestamp at which the approval is no longer valid",
3694
+ "spender": "The spender address to approve",
3695
+ "token": "The token to approve"
3696
+ }
3697
+ },
3698
+ "invalidateNonces(address,address,uint48)": {
3699
+ "details": "Can't invalidate more than 2**16 nonces per transaction.",
3700
+ "params": {
3701
+ "newNonce": "The new nonce to set. Invalidates all nonces less than it.",
3702
+ "spender": "The spender to invalidate nonces for",
3703
+ "token": "The token to invalidate nonces for"
3704
+ }
3705
+ },
3706
+ "lockdown((address,address)[])": {
3707
+ "params": {
3708
+ "approvals": "Array of approvals to revoke."
3709
+ }
3710
+ },
3711
+ "permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)": {
3712
+ "details": "May fail if the owner's nonce was invalidated in-flight by invalidateNonce",
3713
+ "params": {
3714
+ "owner": "The owner of the tokens being approved",
3715
+ "permitSingle": "Data signed over by the owner specifying the terms of approval",
3716
+ "signature": "The owner's signature over the permit data"
3717
+ }
3718
+ },
3719
+ "permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)": {
3720
+ "details": "May fail if the owner's nonce was invalidated in-flight by invalidateNonce",
3721
+ "params": {
3722
+ "owner": "The owner of the tokens being approved",
3723
+ "permitBatch": "Data signed over by the owner specifying the terms of approval",
3724
+ "signature": "The owner's signature over the permit data"
3725
+ }
3726
+ },
3727
+ "transferFrom((address,address,uint160,address)[])": {
3728
+ "details": "Requires the from addresses to have approved at least the desired amount of tokens to msg.sender.",
3729
+ "params": {
3730
+ "transferDetails": "Array of owners, recipients, amounts, and tokens for the transfers"
3731
+ }
3732
+ },
3733
+ "transferFrom(address,address,uint160,address)": {
3734
+ "details": "Requires the from address to have approved at least the desired amount of tokens to msg.sender.",
3735
+ "params": {
3736
+ "amount": "The amount of the token to transfer",
3737
+ "from": "The address to transfer from",
3738
+ "to": "The address of the recipient",
3739
+ "token": "The token address to transfer"
3740
+ }
3741
+ }
3742
+ }
3743
+ },
3744
+ "userdoc": {
3745
+ "methods": {
3746
+ "allowance(address,address,address)": {
3747
+ "notice": "A mapping from owner address to token address to spender address to PackedAllowance struct, which contains details and conditions of the approval.The mapping is indexed in the above order see: allowance[ownerAddress][tokenAddress][spenderAddress]"
3748
+ },
3749
+ "approve(address,address,uint160,uint48)": {
3750
+ "notice": "Approves the spender to use up to amount of the specified token up until the expiration"
3751
+ },
3752
+ "invalidateNonces(address,address,uint48)": {
3753
+ "notice": "Invalidate nonces for a given (token, spender) pair"
3754
+ },
3755
+ "lockdown((address,address)[])": {
3756
+ "notice": "Enables performing a \"lockdown\" of the sender's Permit2 identity by batch revoking approvals"
3757
+ },
3758
+ "permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)": {
3759
+ "notice": "Permit a spender to a given amount of the owners token via the owner's EIP-712 signature"
3760
+ },
3761
+ "permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)": {
3762
+ "notice": "Permit a spender to the signed amounts of the owners tokens via the owner's EIP-712 signature"
3763
+ },
3764
+ "transferFrom((address,address,uint160,address)[])": {
3765
+ "notice": "Transfer approved tokens in a batch"
3766
+ },
3767
+ "transferFrom(address,address,uint160,address)": {
3768
+ "notice": "Transfer approved tokens from one address to another"
3769
+ }
3770
+ }
3771
+ }
3772
+ }