@pendle/core-v2 6.9.0 → 6.10.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 (110) hide show
  1. package/build/artifacts/contracts/interfaces/IPPTLooper.sol/IPPTLooper.dbg.json +1 -1
  2. package/build/artifacts/contracts/interfaces/IPPTLooper.sol/IPPTLooper.json +244 -249
  3. package/build/artifacts/contracts/interfaces/IPPTLooper.sol/IPPTLooperEIP712Types.dbg.json +1 -1
  4. package/build/artifacts/contracts/pt-looping/PTLooperBase.sol/PTLooperBase.dbg.json +1 -1
  5. package/build/artifacts/contracts/pt-looping/PTLooperBase.sol/PTLooperBase.json +244 -249
  6. package/build/artifacts/contracts/pt-looping/PTLooperEIP712TypesEncodeDataLib.sol/PTLooperEIP712TypesEncodeDataLib.dbg.json +1 -1
  7. package/build/artifacts/contracts/pt-looping/PTLooperEIP712TypesEncodeDataLib.sol/PTLooperEIP712TypesEncodeDataLib.json +2 -2
  8. package/build/artifacts/contracts/pt-looping/PendlePTLooper.sol/PendlePTLooper.dbg.json +1 -1
  9. package/build/artifacts/contracts/pt-looping/PendlePTLooper.sol/PendlePTLooper.json +246 -251
  10. package/build/artifacts/contracts/pt-looping/money-market/BaseMoneyMarket.sol/BaseMoneyMarket.dbg.json +1 -1
  11. package/build/artifacts/contracts/pt-looping/money-market/BaseMoneyMarketView.sol/BaseMoneyMarketView.dbg.json +1 -1
  12. package/build/artifacts/contracts/pt-looping/money-market/implementations/aave/AaveMoneyMarket.sol/AaveMoneyMarket.dbg.json +1 -1
  13. package/build/artifacts/contracts/pt-looping/money-market/implementations/aave/AaveMoneyMarket.sol/AaveMoneyMarket.json +2 -2
  14. package/build/artifacts/contracts/pt-looping/money-market/implementations/aave/AaveMoneyMarketView.sol/AaveMoneyMarketView.dbg.json +1 -1
  15. package/build/artifacts/contracts/pt-looping/money-market/implementations/aave/AaveMoneyMarketView.sol/AaveMoneyMarketView.json +2 -2
  16. package/build/artifacts/contracts/pt-looping/money-market/implementations/aave-v4/AaveV4MMPayloadLib.sol/AaveV4MMPayloadLib.dbg.json +4 -0
  17. package/build/artifacts/contracts/pt-looping/money-market/implementations/aave-v4/AaveV4MMPayloadLib.sol/AaveV4MMPayloadLib.json +10 -0
  18. package/build/artifacts/contracts/pt-looping/money-market/implementations/aave-v4/AaveV4MoneyMarket.sol/AaveV4MoneyMarket.dbg.json +4 -0
  19. package/build/artifacts/contracts/pt-looping/money-market/implementations/aave-v4/AaveV4MoneyMarket.sol/AaveV4MoneyMarket.json +615 -0
  20. package/build/artifacts/contracts/pt-looping/money-market/implementations/aave-v4/AaveV4MoneyMarketView.sol/AaveV4MoneyMarketView.dbg.json +4 -0
  21. package/build/artifacts/contracts/pt-looping/money-market/implementations/aave-v4/AaveV4MoneyMarketView.sol/AaveV4MoneyMarketView.json +280 -0
  22. package/build/artifacts/contracts/pt-looping/money-market/implementations/aave-v4/dependencies/IAaveOracle.sol/IAaveOracle.dbg.json +4 -0
  23. package/build/artifacts/contracts/pt-looping/money-market/implementations/aave-v4/dependencies/IAaveOracle.sol/IAaveOracle.json +30 -0
  24. package/build/artifacts/contracts/pt-looping/money-market/implementations/aave-v4/dependencies/IHubBase.sol/IHubBase.dbg.json +4 -0
  25. package/build/artifacts/contracts/pt-looping/money-market/implementations/aave-v4/dependencies/IHubBase.sol/IHubBase.json +322 -0
  26. package/build/artifacts/contracts/pt-looping/money-market/implementations/aave-v4/dependencies/ISpoke.sol/ISpoke.dbg.json +4 -0
  27. package/build/artifacts/contracts/pt-looping/money-market/implementations/aave-v4/dependencies/ISpoke.sol/ISpoke.json +398 -0
  28. package/build/artifacts/contracts/pt-looping/money-market/implementations/euler/EulerMMPayloadLib.sol/EulerMMPayloadLib.dbg.json +4 -0
  29. package/build/artifacts/contracts/pt-looping/money-market/implementations/euler/EulerMMPayloadLib.sol/EulerMMPayloadLib.json +10 -0
  30. package/build/artifacts/contracts/pt-looping/money-market/implementations/euler/EulerMoneyMarket.sol/EulerMoneyMarket.dbg.json +4 -0
  31. package/build/artifacts/contracts/pt-looping/money-market/implementations/euler/EulerMoneyMarket.sol/EulerMoneyMarket.json +651 -0
  32. package/build/artifacts/contracts/pt-looping/money-market/implementations/euler/EulerMoneyMarketView.sol/EulerMoneyMarketView.dbg.json +4 -0
  33. package/build/artifacts/contracts/pt-looping/money-market/implementations/euler/EulerMoneyMarketView.sol/EulerMoneyMarketView.json +298 -0
  34. package/build/artifacts/contracts/pt-looping/money-market/implementations/euler/dependencies/IEthereumVaultConnector.sol/IEVC.dbg.json +4 -0
  35. package/build/artifacts/contracts/pt-looping/money-market/implementations/euler/dependencies/IEthereumVaultConnector.sol/IEVC.json +959 -0
  36. package/build/artifacts/contracts/pt-looping/money-market/implementations/euler/dependencies/IEulerFactory.sol/IEulerFactory.dbg.json +4 -0
  37. package/build/artifacts/contracts/pt-looping/money-market/implementations/euler/dependencies/IEulerFactory.sol/IEulerFactory.json +30 -0
  38. package/build/artifacts/contracts/pt-looping/money-market/implementations/euler/dependencies/IEulerPriceOracle.sol/IEulerPriceOracle.dbg.json +4 -0
  39. package/build/artifacts/contracts/pt-looping/money-market/implementations/euler/dependencies/IEulerPriceOracle.sol/IEulerPriceOracle.json +53 -0
  40. package/build/artifacts/contracts/pt-looping/money-market/implementations/euler/dependencies/IEulerVault.sol/AmountCapLib.dbg.json +4 -0
  41. package/build/artifacts/contracts/pt-looping/money-market/implementations/euler/dependencies/IEulerVault.sol/AmountCapLib.json +10 -0
  42. package/build/artifacts/contracts/pt-looping/money-market/implementations/euler/dependencies/IEulerVault.sol/IEulerVault.dbg.json +4 -0
  43. package/build/artifacts/contracts/pt-looping/money-market/implementations/euler/dependencies/IEulerVault.sol/IEulerVault.json +933 -0
  44. package/build/artifacts/contracts/pt-looping/money-market/implementations/morpho/MorphoBlueMoneyMarket.sol/MorphoBlueMoneyMarket.dbg.json +1 -1
  45. package/build/artifacts/contracts/pt-looping/money-market/implementations/morpho/MorphoBlueMoneyMarket.sol/MorphoBlueMoneyMarket.json +2 -2
  46. package/build/artifacts/contracts/pt-looping/money-market/implementations/morpho/MorphoBlueMoneyMarketView.sol/MorphoBlueMoneyMarketView.dbg.json +1 -1
  47. package/build/artifacts/contracts/pt-looping/money-market/implementations/morpho/MorphoBlueMoneyMarketView.sol/MorphoBlueMoneyMarketView.json +2 -2
  48. package/build/artifacts/contracts/router/swap-aggregator/OKXScaleHelper.sol/IOKXDexRouter.dbg.json +1 -1
  49. package/build/artifacts/contracts/router/swap-aggregator/OKXScaleHelper.sol/OKXScaleHelper.dbg.json +1 -1
  50. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/IKyberScalingHelper.dbg.json +1 -1
  51. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/IOdosRouterV2.dbg.json +1 -1
  52. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.dbg.json +1 -1
  53. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.json +2 -2
  54. package/contracts/interfaces/IPPTLooper.sol +2 -4
  55. package/contracts/pt-looping/PTLooperEIP712TypesEncodeDataLib.sol +6 -6
  56. package/contracts/pt-looping/PendlePTLooper.sol +4 -2
  57. package/contracts/pt-looping/money-market/implementations/aave-v4/AaveV4MMPayloadLib.sol +20 -0
  58. package/contracts/pt-looping/money-market/implementations/aave-v4/AaveV4MoneyMarket.sol +85 -0
  59. package/contracts/pt-looping/money-market/implementations/aave-v4/AaveV4MoneyMarketView.sol +180 -0
  60. package/contracts/pt-looping/money-market/implementations/aave-v4/dependencies/IAaveOracle.sol +12 -0
  61. package/contracts/pt-looping/money-market/implementations/aave-v4/dependencies/IHubBase.sol +72 -0
  62. package/contracts/pt-looping/money-market/implementations/aave-v4/dependencies/ISpoke.sol +88 -0
  63. package/contracts/pt-looping/money-market/implementations/euler/EulerMMPayloadLib.sol +25 -0
  64. package/contracts/pt-looping/money-market/implementations/euler/EulerMoneyMarket.sol +104 -0
  65. package/contracts/pt-looping/money-market/implementations/euler/EulerMoneyMarketView.sol +105 -0
  66. package/contracts/pt-looping/money-market/implementations/euler/dependencies/IEthereumVaultConnector.sol +432 -0
  67. package/contracts/pt-looping/money-market/implementations/euler/dependencies/IEulerFactory.sol +10 -0
  68. package/contracts/pt-looping/money-market/implementations/euler/dependencies/IEulerPriceOracle.sol +26 -0
  69. package/contracts/pt-looping/money-market/implementations/euler/dependencies/IEulerVault.sol +149 -0
  70. package/contracts/router/swap-aggregator/OKXScaleHelper.sol +3 -0
  71. package/deployments/143-core.json +4 -1
  72. package/deployments/42161-core.json +4 -1
  73. package/deployments/4663-core.json +48 -0
  74. package/deployments/4663-offchain-helper.json +12 -0
  75. package/package.json +1 -1
  76. package/typechain-types/AaveV4MoneyMarket.ts +573 -0
  77. package/typechain-types/AaveV4MoneyMarketView.ts +362 -0
  78. package/typechain-types/EulerMoneyMarket.ts +599 -0
  79. package/typechain-types/EulerMoneyMarketView.ts +375 -0
  80. package/typechain-types/IAaveOracle.ts +17 -149
  81. package/typechain-types/IEVC.ts +1647 -0
  82. package/typechain-types/IEulerFactory.ts +94 -0
  83. package/typechain-types/IEulerPriceOracle.ts +123 -0
  84. package/typechain-types/IEulerVault.ts +1298 -0
  85. package/typechain-types/IHubBase.ts +452 -0
  86. package/typechain-types/IPPTLooper.ts +68 -68
  87. package/typechain-types/ISpoke.ts +577 -0
  88. package/typechain-types/PTLooperBase.ts +68 -68
  89. package/typechain-types/PendlePTLooper.ts +68 -68
  90. package/typechain-types/factories/AaveMoneyMarketView__factory.ts +1 -1
  91. package/typechain-types/factories/AaveMoneyMarket__factory.ts +1 -1
  92. package/typechain-types/factories/AaveV4MoneyMarketView__factory.ts +349 -0
  93. package/typechain-types/factories/AaveV4MoneyMarket__factory.ts +673 -0
  94. package/typechain-types/factories/EulerMoneyMarketView__factory.ts +371 -0
  95. package/typechain-types/factories/EulerMoneyMarket__factory.ts +720 -0
  96. package/typechain-types/factories/IAaveOracle__factory.ts +3 -93
  97. package/typechain-types/factories/IEVC__factory.ts +968 -0
  98. package/typechain-types/factories/IEulerFactory__factory.ts +42 -0
  99. package/typechain-types/factories/IEulerPriceOracle__factory.ts +68 -0
  100. package/typechain-types/factories/IEulerVault__factory.ts +945 -0
  101. package/typechain-types/factories/IHubBase__factory.ts +334 -0
  102. package/typechain-types/factories/IPPTLooper__factory.ts +243 -248
  103. package/typechain-types/factories/ISpoke__factory.ts +407 -0
  104. package/typechain-types/factories/MorphoBlueMoneyMarketView__factory.ts +1 -1
  105. package/typechain-types/factories/MorphoBlueMoneyMarket__factory.ts +1 -1
  106. package/typechain-types/factories/PTLooperBase__factory.ts +243 -248
  107. package/typechain-types/factories/PendlePTLooper__factory.ts +244 -249
  108. package/typechain-types/factories/PendleSwap__factory.ts +1 -1
  109. package/typechain-types/hardhat.d.ts +99 -0
  110. package/typechain-types/index.ts +22 -2
@@ -0,0 +1,673 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers";
5
+ import { Provider, TransactionRequest } from "@ethersproject/providers";
6
+ import type {
7
+ AaveV4MoneyMarket,
8
+ AaveV4MoneyMarketInterface,
9
+ } from "../AaveV4MoneyMarket";
10
+
11
+ const _abi = [
12
+ {
13
+ inputs: [
14
+ {
15
+ internalType: "address",
16
+ name: "ptLooper",
17
+ type: "address",
18
+ },
19
+ ],
20
+ stateMutability: "nonpayable",
21
+ type: "constructor",
22
+ },
23
+ {
24
+ anonymous: false,
25
+ inputs: [
26
+ {
27
+ indexed: true,
28
+ internalType: "contract IPLoopPositionBox",
29
+ name: "box",
30
+ type: "address",
31
+ },
32
+ {
33
+ indexed: true,
34
+ internalType: "address",
35
+ name: "asset",
36
+ type: "address",
37
+ },
38
+ {
39
+ indexed: false,
40
+ internalType: "uint256",
41
+ name: "amount",
42
+ type: "uint256",
43
+ },
44
+ {
45
+ indexed: false,
46
+ internalType: "uint256",
47
+ name: "balanceBefore",
48
+ type: "uint256",
49
+ },
50
+ ],
51
+ name: "Borrowed",
52
+ type: "event",
53
+ },
54
+ {
55
+ anonymous: false,
56
+ inputs: [
57
+ {
58
+ indexed: true,
59
+ internalType: "contract IPLoopPositionBox",
60
+ name: "box",
61
+ type: "address",
62
+ },
63
+ {
64
+ indexed: true,
65
+ internalType: "address",
66
+ name: "asset",
67
+ type: "address",
68
+ },
69
+ {
70
+ indexed: false,
71
+ internalType: "uint256",
72
+ name: "amount",
73
+ type: "uint256",
74
+ },
75
+ {
76
+ indexed: false,
77
+ internalType: "uint256",
78
+ name: "balanceBefore",
79
+ type: "uint256",
80
+ },
81
+ ],
82
+ name: "Lent",
83
+ type: "event",
84
+ },
85
+ {
86
+ anonymous: false,
87
+ inputs: [
88
+ {
89
+ indexed: true,
90
+ internalType: "contract IPLoopPositionBox",
91
+ name: "box",
92
+ type: "address",
93
+ },
94
+ {
95
+ indexed: true,
96
+ internalType: "address",
97
+ name: "asset",
98
+ type: "address",
99
+ },
100
+ {
101
+ indexed: false,
102
+ internalType: "uint256",
103
+ name: "amount",
104
+ type: "uint256",
105
+ },
106
+ {
107
+ indexed: false,
108
+ internalType: "uint256",
109
+ name: "balanceBefore",
110
+ type: "uint256",
111
+ },
112
+ ],
113
+ name: "Repaid",
114
+ type: "event",
115
+ },
116
+ {
117
+ anonymous: false,
118
+ inputs: [
119
+ {
120
+ indexed: true,
121
+ internalType: "address",
122
+ name: "rewardController",
123
+ type: "address",
124
+ },
125
+ {
126
+ indexed: false,
127
+ internalType: "address[]",
128
+ name: "rewardTokens",
129
+ type: "address[]",
130
+ },
131
+ {
132
+ indexed: false,
133
+ internalType: "uint256[]",
134
+ name: "claimedAmount",
135
+ type: "uint256[]",
136
+ },
137
+ ],
138
+ name: "RewardsClaimed",
139
+ type: "event",
140
+ },
141
+ {
142
+ anonymous: false,
143
+ inputs: [
144
+ {
145
+ indexed: true,
146
+ internalType: "contract IPLoopPositionBox",
147
+ name: "box",
148
+ type: "address",
149
+ },
150
+ {
151
+ indexed: true,
152
+ internalType: "address",
153
+ name: "asset",
154
+ type: "address",
155
+ },
156
+ {
157
+ indexed: false,
158
+ internalType: "uint256",
159
+ name: "amount",
160
+ type: "uint256",
161
+ },
162
+ {
163
+ indexed: false,
164
+ internalType: "uint256",
165
+ name: "balanceBefore",
166
+ type: "uint256",
167
+ },
168
+ ],
169
+ name: "Withdrawn",
170
+ type: "event",
171
+ },
172
+ {
173
+ inputs: [],
174
+ name: "POSITION_BOX_FACTORY",
175
+ outputs: [
176
+ {
177
+ internalType: "contract IPLoopPositionBoxFactory",
178
+ name: "",
179
+ type: "address",
180
+ },
181
+ ],
182
+ stateMutability: "view",
183
+ type: "function",
184
+ },
185
+ {
186
+ inputs: [],
187
+ name: "PT_LOOPER",
188
+ outputs: [
189
+ {
190
+ internalType: "contract IPPTLooper",
191
+ name: "",
192
+ type: "address",
193
+ },
194
+ ],
195
+ stateMutability: "view",
196
+ type: "function",
197
+ },
198
+ {
199
+ inputs: [
200
+ {
201
+ components: [
202
+ {
203
+ internalType: "contract IPLoopPositionBox",
204
+ name: "box",
205
+ type: "address",
206
+ },
207
+ {
208
+ internalType: "bytes32",
209
+ name: "mmPayload",
210
+ type: "bytes32",
211
+ },
212
+ {
213
+ internalType: "address",
214
+ name: "collateral",
215
+ type: "address",
216
+ },
217
+ {
218
+ internalType: "address",
219
+ name: "debtAsset",
220
+ type: "address",
221
+ },
222
+ ],
223
+ internalType: "struct MarketCtx",
224
+ name: "ctx",
225
+ type: "tuple",
226
+ },
227
+ {
228
+ internalType: "uint256",
229
+ name: "amount",
230
+ type: "uint256",
231
+ },
232
+ ],
233
+ name: "borrow",
234
+ outputs: [
235
+ {
236
+ internalType: "uint256",
237
+ name: "borrowed",
238
+ type: "uint256",
239
+ },
240
+ {
241
+ internalType: "uint256",
242
+ name: "postDebtBalance",
243
+ type: "uint256",
244
+ },
245
+ ],
246
+ stateMutability: "nonpayable",
247
+ type: "function",
248
+ },
249
+ {
250
+ inputs: [
251
+ {
252
+ components: [
253
+ {
254
+ internalType: "contract IPLoopPositionBox",
255
+ name: "box",
256
+ type: "address",
257
+ },
258
+ {
259
+ internalType: "bytes32",
260
+ name: "mmPayload",
261
+ type: "bytes32",
262
+ },
263
+ {
264
+ internalType: "address",
265
+ name: "collateral",
266
+ type: "address",
267
+ },
268
+ {
269
+ internalType: "address",
270
+ name: "debtAsset",
271
+ type: "address",
272
+ },
273
+ ],
274
+ internalType: "struct MarketCtx",
275
+ name: "ctx",
276
+ type: "tuple",
277
+ },
278
+ {
279
+ internalType: "address",
280
+ name: "extRewardController",
281
+ type: "address",
282
+ },
283
+ {
284
+ internalType: "bytes",
285
+ name: "data",
286
+ type: "bytes",
287
+ },
288
+ {
289
+ internalType: "address[]",
290
+ name: "rewardTokens",
291
+ type: "address[]",
292
+ },
293
+ ],
294
+ name: "claimRewards",
295
+ outputs: [
296
+ {
297
+ internalType: "uint256[]",
298
+ name: "claimedAmount",
299
+ type: "uint256[]",
300
+ },
301
+ ],
302
+ stateMutability: "nonpayable",
303
+ type: "function",
304
+ },
305
+ {
306
+ inputs: [
307
+ {
308
+ components: [
309
+ {
310
+ internalType: "contract IPLoopPositionBox",
311
+ name: "box",
312
+ type: "address",
313
+ },
314
+ {
315
+ internalType: "bytes32",
316
+ name: "mmPayload",
317
+ type: "bytes32",
318
+ },
319
+ {
320
+ internalType: "address",
321
+ name: "collateral",
322
+ type: "address",
323
+ },
324
+ {
325
+ internalType: "address",
326
+ name: "debtAsset",
327
+ type: "address",
328
+ },
329
+ ],
330
+ internalType: "struct MarketCtx",
331
+ name: "ctx",
332
+ type: "tuple",
333
+ },
334
+ ],
335
+ name: "collateralBalance",
336
+ outputs: [
337
+ {
338
+ internalType: "uint256",
339
+ name: "balance",
340
+ type: "uint256",
341
+ },
342
+ ],
343
+ stateMutability: "view",
344
+ type: "function",
345
+ },
346
+ {
347
+ inputs: [
348
+ {
349
+ components: [
350
+ {
351
+ internalType: "contract IPLoopPositionBox",
352
+ name: "box",
353
+ type: "address",
354
+ },
355
+ {
356
+ internalType: "bytes32",
357
+ name: "mmPayload",
358
+ type: "bytes32",
359
+ },
360
+ {
361
+ internalType: "address",
362
+ name: "collateral",
363
+ type: "address",
364
+ },
365
+ {
366
+ internalType: "address",
367
+ name: "debtAsset",
368
+ type: "address",
369
+ },
370
+ ],
371
+ internalType: "struct MarketCtx",
372
+ name: "ctx",
373
+ type: "tuple",
374
+ },
375
+ ],
376
+ name: "debtBalance",
377
+ outputs: [
378
+ {
379
+ internalType: "uint256",
380
+ name: "balance",
381
+ type: "uint256",
382
+ },
383
+ ],
384
+ stateMutability: "view",
385
+ type: "function",
386
+ },
387
+ {
388
+ inputs: [
389
+ {
390
+ components: [
391
+ {
392
+ internalType: "contract IPLoopPositionBox",
393
+ name: "box",
394
+ type: "address",
395
+ },
396
+ {
397
+ internalType: "bytes32",
398
+ name: "mmPayload",
399
+ type: "bytes32",
400
+ },
401
+ {
402
+ internalType: "address",
403
+ name: "collateral",
404
+ type: "address",
405
+ },
406
+ {
407
+ internalType: "address",
408
+ name: "debtAsset",
409
+ type: "address",
410
+ },
411
+ ],
412
+ internalType: "struct MarketCtx",
413
+ name: "ctx",
414
+ type: "tuple",
415
+ },
416
+ ],
417
+ name: "initialize",
418
+ outputs: [],
419
+ stateMutability: "nonpayable",
420
+ type: "function",
421
+ },
422
+ {
423
+ inputs: [
424
+ {
425
+ components: [
426
+ {
427
+ internalType: "contract IPLoopPositionBox",
428
+ name: "box",
429
+ type: "address",
430
+ },
431
+ {
432
+ internalType: "bytes32",
433
+ name: "mmPayload",
434
+ type: "bytes32",
435
+ },
436
+ {
437
+ internalType: "address",
438
+ name: "collateral",
439
+ type: "address",
440
+ },
441
+ {
442
+ internalType: "address",
443
+ name: "debtAsset",
444
+ type: "address",
445
+ },
446
+ ],
447
+ internalType: "struct MarketCtx",
448
+ name: "ctx",
449
+ type: "tuple",
450
+ },
451
+ {
452
+ internalType: "uint256",
453
+ name: "amount",
454
+ type: "uint256",
455
+ },
456
+ ],
457
+ name: "lend",
458
+ outputs: [
459
+ {
460
+ internalType: "uint256",
461
+ name: "lent",
462
+ type: "uint256",
463
+ },
464
+ {
465
+ internalType: "uint256",
466
+ name: "postCollateralBalance",
467
+ type: "uint256",
468
+ },
469
+ ],
470
+ stateMutability: "nonpayable",
471
+ type: "function",
472
+ },
473
+ {
474
+ inputs: [
475
+ {
476
+ components: [
477
+ {
478
+ internalType: "contract IPLoopPositionBox",
479
+ name: "box",
480
+ type: "address",
481
+ },
482
+ {
483
+ internalType: "bytes32",
484
+ name: "mmPayload",
485
+ type: "bytes32",
486
+ },
487
+ {
488
+ internalType: "address",
489
+ name: "collateral",
490
+ type: "address",
491
+ },
492
+ {
493
+ internalType: "address",
494
+ name: "debtAsset",
495
+ type: "address",
496
+ },
497
+ ],
498
+ internalType: "struct MarketCtx",
499
+ name: "ctx",
500
+ type: "tuple",
501
+ },
502
+ ],
503
+ name: "oraclePtDebtRate",
504
+ outputs: [
505
+ {
506
+ internalType: "uint256",
507
+ name: "",
508
+ type: "uint256",
509
+ },
510
+ ],
511
+ stateMutability: "view",
512
+ type: "function",
513
+ },
514
+ {
515
+ inputs: [
516
+ {
517
+ components: [
518
+ {
519
+ internalType: "contract IPLoopPositionBox",
520
+ name: "box",
521
+ type: "address",
522
+ },
523
+ {
524
+ internalType: "bytes32",
525
+ name: "mmPayload",
526
+ type: "bytes32",
527
+ },
528
+ {
529
+ internalType: "address",
530
+ name: "collateral",
531
+ type: "address",
532
+ },
533
+ {
534
+ internalType: "address",
535
+ name: "debtAsset",
536
+ type: "address",
537
+ },
538
+ ],
539
+ internalType: "struct MarketCtx",
540
+ name: "ctx",
541
+ type: "tuple",
542
+ },
543
+ {
544
+ internalType: "uint256",
545
+ name: "amount",
546
+ type: "uint256",
547
+ },
548
+ ],
549
+ name: "repay",
550
+ outputs: [
551
+ {
552
+ internalType: "uint256",
553
+ name: "repaid",
554
+ type: "uint256",
555
+ },
556
+ {
557
+ internalType: "uint256",
558
+ name: "postDebtBalance",
559
+ type: "uint256",
560
+ },
561
+ ],
562
+ stateMutability: "nonpayable",
563
+ type: "function",
564
+ },
565
+ {
566
+ inputs: [
567
+ {
568
+ components: [
569
+ {
570
+ internalType: "contract IPLoopPositionBox",
571
+ name: "box",
572
+ type: "address",
573
+ },
574
+ {
575
+ internalType: "bytes32",
576
+ name: "mmPayload",
577
+ type: "bytes32",
578
+ },
579
+ {
580
+ internalType: "address",
581
+ name: "collateral",
582
+ type: "address",
583
+ },
584
+ {
585
+ internalType: "address",
586
+ name: "debtAsset",
587
+ type: "address",
588
+ },
589
+ ],
590
+ internalType: "struct MarketCtx",
591
+ name: "ctx",
592
+ type: "tuple",
593
+ },
594
+ {
595
+ internalType: "uint256",
596
+ name: "amount",
597
+ type: "uint256",
598
+ },
599
+ ],
600
+ name: "withdraw",
601
+ outputs: [
602
+ {
603
+ internalType: "uint256",
604
+ name: "withdrawn",
605
+ type: "uint256",
606
+ },
607
+ {
608
+ internalType: "uint256",
609
+ name: "postCollateralBalance",
610
+ type: "uint256",
611
+ },
612
+ ],
613
+ stateMutability: "nonpayable",
614
+ type: "function",
615
+ },
616
+ ];
617
+
618
+ const _bytecode =
619
+ "0x60c060405234801561000f575f5ffd5b5060405161203538038061203583398101604081905261002e916100c7565b6001600160a01b03811660808190526040805163ca6f50fd60e01b8152905183929163ca6f50fd9160048083019260209291908290030181865afa158015610078573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061009c91906100c7565b6001600160a01b031660a052506100e99050565b6001600160a01b03811681146100c4575f5ffd5b50565b5f602082840312156100d7575f5ffd5b81516100e2816100b0565b9392505050565b60805160a051611f026101335f395f818161018c01526101df01525f818160ff0152818161023e015281816103ad0152818161074a01528181610a780152610b4c0152611f025ff3fe608060405234801561000f575f5ffd5b5060043610610096575f3560e01c8062f1a3d61461009a5780630a44c195146100af578063180cad99146100d95780631a174fc4146100fa5780633a2e717b1461012e5780639025036a146101415780639e4f39c814610154578063b3fd98f014610167578063ca6f50fd14610187578063d30cd708146101ae578063ec094985146101c1575b5f5ffd5b6100ad6100a83660046118a3565b6101d4565b005b6100c26100bd3660046118bd565b610231565b6040516100d09291906118e6565b60405180910390f35b6100ec6100e73660046118a3565b61030d565b6040519081526020016100d0565b6101217f000000000000000000000000000000000000000000000000000000000000000081565b6040516100d091906118f4565b6100c261013c3660046118bd565b6103a0565b6100ec61014f3660046118a3565b610475565b6100ec6101623660046118a3565b6106f1565b61017a610175366004611986565b61073d565b6040516100d09190611a79565b6101217f000000000000000000000000000000000000000000000000000000000000000081565b6100c26101bc3660046118bd565b610a6b565b6100c26101cf3660046118bd565b610b3f565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102255760405162461bcd60e51b815260040161021c90611a8b565b60405180910390fd5b61022e81610c0a565b50565b5f80336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461027b5760405162461bcd60e51b815260040161021c90611a8b565b5f610285856106f1565b9050835f03610298575f92509050610306565b6102a28585610e80565b92506102ae8184611ad2565b915084606001516001600160a01b0316855f01516001600160a01b03167fc14e9e6b4d98a542b05a0f6b64acd5f4cbdb914be88432d87486b664e97071a785846040516102fc9291906118e6565b60405180910390a3505b9250929050565b5f5f5f61031d8460200151610f2b565b5060405163f1568a8960e01b815291935065ffffffffffff1691506001600160a01b0383169063f1568a89906103599084903090600401611ae5565b602060405180830381865afa158015610374573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103989190611afc565b949350505050565b5f80336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103ea5760405162461bcd60e51b815260040161021c90611a8b565b5f6103f4856106f1565b9050831580610401575080155b15610410575f92509050610306565b61041b858583610f3a565b92506104278382611b13565b915084606001516001600160a01b0316855f01516001600160a01b03167fe62a777dbd48d3912f68a1b9445813ee02bc3ac18b97dc129ca462cc77bb641b85846040516102fc9291906118e6565b5f5f5f5f6104868560200151610f2b565b65ffffffffffff16925065ffffffffffff16925092505f836001600160a01b03166338013f026040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fd9190611b26565b60405163d45c35ff60e01b8152600481018590529091505f906001600160a01b0383169063d45c35ff90602401602060405180830381865afa158015610545573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105699190611afc565b60405163d45c35ff60e01b8152600481018590529091505f906001600160a01b0384169063d45c35ff90602401602060405180830381865afa1580156105b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d59190611afc565b905087604001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610617573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061063b9190611b56565b61064690600a611c52565b6106509082611c60565b88606001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610690573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b49190611b56565b6106bf90600a611c52565b6106d1670de0b6b3a764000085611c60565b6106db9190611c60565b6106e59190611c8b565b98975050505050505050565b5f5f5f6107018460200151610f2b565b604051634db8b95360e11b815292945065ffffffffffff169250506001600160a01b03831690639b7172a6906103599084903090600401611ae5565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107875760405162461bcd60e51b815260040161021c90611a8b565b81515f816001600160401b038111156107a2576107a26117a6565b6040519080825280602002602001820160405280156107cb578160200160208202803683370190505b5090505f5b8281101561081f576107fa8582815181106107ed576107ed611c9e565b6020026020010151610ff8565b82828151811061080c5761080c611c9e565b60209081029190910101526001016107d0565b505f876001600160a01b0316878760405161083b929190611cb2565b5f604051808303815f865af19150503d805f8114610874576040519150601f19603f3d011682016040523d82523d5f602084013e610879565b606091505b50509050806108ca5760405162461bcd60e51b815260206004820181905260248201527f4d6f6e65794d61726b65743a20636c61696d52657761726473206661696c6564604482015260640161021c565b5f895f01516001600160a01b031663117803e36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561090a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061092e9190611b26565b9050836001600160401b03811115610948576109486117a6565b604051908082528060200260200182016040528015610971578160200160208202803683370190505b5094505f5b84811015610a1a5783818151811061099057610990611c9e565b60200260200101516109ad8883815181106107ed576107ed611c9e565b6109b79190611b13565b8682815181106109c9576109c9611c9e565b602002602001018181525050610a128782815181106109ea576109ea611c9e565b602002602001015183888481518110610a0557610a05611c9e565b6020026020010151611009565b600101610976565b50886001600160a01b03167fc53cb8bc1a7200a84d0b66a538905a245c4915aace7f1ce5dc4a0ba107ebc15c8787604051610a56929190611cc1565b60405180910390a25050505095945050505050565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ab55760405162461bcd60e51b815260040161021c90611a8b565b5f610abf8561030d565b9050831580610acc575080155b15610adb575f92509050610306565b610ae585856110e6565b9250610af18382611b13565b915084604001516001600160a01b0316855f01516001600160a01b03167f91fb9d98b786c57d74c099ccd2beca1739e9f6a81fb49001ca465c4b7591bbe285846040516102fc9291906118e6565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b895760405162461bcd60e51b815260040161021c90611a8b565b5f610b938561030d565b9050835f03610ba6575f92509050610306565b610bb08585611189565b9250610bbc8184611ad2565b915084604001516001600160a01b0316855f01516001600160a01b03167fb07c18dba66f7fd615f13c777549719e8ea100489339e0fdc30b7076bd77d60485846040516102fc9291906118e6565b5f5f5f610c1a8460200151610f2b565b65ffffffffffff16925065ffffffffffff16925092505f836001600160a01b03166377778db3846040518263ffffffff1660e01b8152600401610c5f91815260200190565b60e060405180830381865afa158015610c7a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9e9190611d3c565b516040516377778db360e01b8152600481018490529091505f906001600160a01b038616906377778db39060240160e060405180830381865afa158015610ce7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d0b9190611d3c565b5f0151905085604001516001600160a01b0316826001600160a01b031614610d8c5760405162461bcd60e51b815260206004820152602e60248201527f4161766556344d6f6e65794d61726b65743a20636f6c6c61746572616c20726560448201526d0e6cae4ecca40dad2e6dac2e8c6d60931b606482015260840161021c565b85606001516001600160a01b0316816001600160a01b031614610e025760405162461bcd60e51b815260206004820152602860248201527f4161766556344d6f6e65794d61726b65743a20646562742072657365727665206044820152670dad2e6dac2e8c6d60c31b606482015260840161021c565b610e0c8286611231565b610e168186611231565b604051639e35c53360e01b815260048101859052600160248201523060448201526001600160a01b03861690639e35c533906064015f604051808303815f87803b158015610e62575f5ffd5b505af1158015610e74573d5f5f3e3d5ffd5b50505050505050505050565b5f5f5f610e908560200151610f2b565b60405163035af68360e61b815292945065ffffffffffff169250506001600160a01b0383169063d6bda0c090610ece90849088903090600401611dda565b60408051808303815f875af1158015610ee9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f0d9190611df9565b60608701518751919550610f2392509085611009565b505092915050565b606081901c91603082901c9190565b5f5f5f610f4a8660200151610f2b565b65ffffffffffff169250509150610f6185856112f1565b92508215610fef57610f7c8660600151875f01513086611308565b60405163b1e8f8ef60e01b81526001600160a01b0383169063b1e8f8ef90610fac90849087903090600401611dda565b60408051808303815f875af1158015610fc7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610feb9190611df9565b9350505b50509392505050565b5f6110033083611323565b92915050565b80158061101e57506001600160a01b03821630145b1561102857505050565b6001600160a01b0383166110cd575f826001600160a01b0316826040515f6040518083038185875af1925050503d805f811461107f576040519150601f19603f3d011682016040523d82523d5f602084013e611084565b606091505b50509050806110c75760405162461bcd60e51b815260206004820152600f60248201526e195d1a081cd95b990819985a5b1959608a1b604482015260640161021c565b50505050565b6110e16001600160a01b03841683836113b2565b505050565b5f5f5f6110f68560200151610f2b565b50604051630ad58d2f60e01b815291935065ffffffffffff1691506001600160a01b03831690630ad58d2f9061113490849088903090600401611dda565b60408051808303815f875af115801561114f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111739190611df9565b60408701518751919550610f2392509085611009565b5f5f5f6111998560200151610f2b565b5065ffffffffffff16915091506111b88560400151865f015186611408565b60405163852a56a560e01b81526001600160a01b0383169063852a56a5906111e890849088903090600401611dda565b60408051808303815f875af1158015611203573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112279190611df9565b9695505050505050565b6001600160a01b038216611243575050565b61125560026001600160601b03611e1b565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526001600160601b03929092169184169063dd62ed3e90604401602060405180830381865afa1580156112ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112d09190611afc565b10156112ed576112e182825f61146f565b6112ed82825f1961146f565b5050565b5f8183106112ff5781611301565b825b9392505050565b80156110c7576110c76001600160a01b03851684848461157e565b5f6001600160a01b038216156113a3576040516370a0823160e01b81526001600160a01b038316906370a082319061135f9086906004016118f4565b602060405180830381865afa15801561137a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139e9190611afc565b611301565b50506001600160a01b03163190565b6110e18363a9059cbb60e01b84846040516024016113d1929190611e49565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526115b6565b6001600160a01b038316611454578034146110e15760405162461bcd60e51b815260206004820152600c60248201526b0cae8d040dad2e6dac2e8c6d60a31b604482015260640161021c565b80156110e1576110e16001600160a01b03841683308461157e565b5f5f846001600160a01b031663095ea7b360e01b8585604051602401611496929190611e49565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516114d49190611e62565b5f604051808303815f865af19150503d805f811461150d576040519150601f19603f3d011682016040523d82523d5f602084013e611512565b606091505b509150915081801561153c57508051158061153c57508080602001905181019061153c9190611e78565b6115775760405162461bcd60e51b815260206004820152600c60248201526b5361666520417070726f766560a01b604482015260640161021c565b5050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526110c79085906323b872dd60e01b906084016113d1565b5f61160a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166116899092919063ffffffff16565b905080515f148061162a57508080602001905181019061162a9190611e78565b6110e15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161021c565b606061039884845f85855f5f866001600160a01b031685876040516116ae9190611e62565b5f6040518083038185875af1925050503d805f81146116e8576040519150601f19603f3d011682016040523d82523d5f602084013e6116ed565b606091505b50915091506116fe87838387611709565b979650505050505050565b606083156117775782515f03611770576001600160a01b0385163b6117705760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161021c565b5081610398565b610398838381511561178c5781518083602001fd5b8060405162461bcd60e51b815260040161021c9190611e97565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b03811182821017156117dc576117dc6117a6565b60405290565b604051601f8201601f191681016001600160401b038111828210171561180a5761180a6117a6565b604052919050565b6001600160a01b038116811461022e575f5ffd5b5f60808284031215611836575f5ffd5b604051608081016001600160401b0381118282101715611858576118586117a6565b604052905080823561186981611812565b815260208381013590820152604083013561188381611812565b6040820152606083013561189681611812565b6060919091015292915050565b5f608082840312156118b3575f5ffd5b6113018383611826565b5f5f60a083850312156118ce575f5ffd5b6118d88484611826565b946080939093013593505050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b5f82601f830112611917575f5ffd5b81356001600160401b03811115611930576119306117a6565b8060051b611940602082016117e2565b9182526020818501810192908101908684111561195b575f5ffd5b6020860192505b8383101561122757823561197581611812565b825260209283019290910190611962565b5f5f5f5f5f60e0868803121561199a575f5ffd5b6119a48787611826565b945060808601356119b481611812565b935060a08601356001600160401b038111156119ce575f5ffd5b8601601f810188136119de575f5ffd5b80356001600160401b038111156119f3575f5ffd5b886020828401011115611a04575f5ffd5b6020919091019350915060c08601356001600160401b03811115611a26575f5ffd5b611a3288828901611908565b9150509295509295909350565b5f8151808452602084019350602083015f5b82811015611a6f578151865260209586019590910190600101611a51565b5093949350505050565b602081525f6113016020830184611a3f565b602080825260199082015278135bdb995e53585c9ad95d0e881d5b985d5d1a1bdc9a5e9959603a1b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561100357611003611abe565b9182526001600160a01b0316602082015260400190565b5f60208284031215611b0c575f5ffd5b5051919050565b8181038181111561100357611003611abe565b5f60208284031215611b36575f5ffd5b815161130181611812565b805160ff81168114611b51575f5ffd5b919050565b5f60208284031215611b66575f5ffd5b61130182611b41565b6001815b6001841115611baa57808504811115611b8e57611b8e611abe565b6001841615611b9c57908102905b60019390931c928002611b73565b935093915050565b5f82611bc057506001611003565b81611bcc57505f611003565b8160018114611be25760028114611bec57611c08565b6001915050611003565b60ff841115611bfd57611bfd611abe565b50506001821b611003565b5060208310610133831016604e8410600b8410161715611c2b575081810a611003565b611c375f198484611b6f565b805f1904821115611c4a57611c4a611abe565b029392505050565b5f61130160ff841683611bb2565b808202811582820484141761100357611003611abe565b634e487b7160e01b5f52601260045260245ffd5b5f82611c9957611c99611c77565b500490565b634e487b7160e01b5f52603260045260245ffd5b818382375f9101908152919050565b604080825283519082018190525f9060208501906060840190835b81811015611d035783516001600160a01b0316835260209384019390920191600101611cdc565b505083810360208501526112278186611a3f565b805162ffffff81168114611b51575f5ffd5b805163ffffffff81168114611b51575f5ffd5b5f60e0828403128015611d4d575f5ffd5b50611d566117ba565b8251611d6181611812565b81526020830151611d7181611812565b6020820152604083015161ffff81168114611d8a575f5ffd5b6040820152611d9b60608401611b41565b6060820152611dac60808401611d17565b6080820152611dbd60a08401611b41565b60a0820152611dce60c08401611d29565b60c08201529392505050565b92835260208301919091526001600160a01b0316604082015260600190565b5f5f60408385031215611e0a575f5ffd5b505080516020909101519092909150565b5f6001600160601b03831680611e3357611e33611c77565b6001600160601b03929092169190910492915050565b6001600160a01b03929092168252602082015260400190565b5f82518060208501845e5f920191825250919050565b5f60208284031215611e88575f5ffd5b81518015158114611301575f5ffd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fea2646970667358221220be3ba46db93f7b5bcc815b931c6e045c9dcfafc4143c3cd71e0eb1c72cd6e7f564736f6c634300081e0033";
620
+
621
+ type AaveV4MoneyMarketConstructorParams =
622
+ | [signer?: Signer]
623
+ | ConstructorParameters<typeof ContractFactory>;
624
+
625
+ const isSuperArgs = (
626
+ xs: AaveV4MoneyMarketConstructorParams
627
+ ): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;
628
+
629
+ export class AaveV4MoneyMarket__factory extends ContractFactory {
630
+ constructor(...args: AaveV4MoneyMarketConstructorParams) {
631
+ if (isSuperArgs(args)) {
632
+ super(...args);
633
+ } else {
634
+ super(_abi, _bytecode, args[0]);
635
+ }
636
+ this.contractName = "AaveV4MoneyMarket";
637
+ }
638
+
639
+ deploy(
640
+ ptLooper: string,
641
+ overrides?: Overrides & { from?: string | Promise<string> }
642
+ ): Promise<AaveV4MoneyMarket> {
643
+ return super.deploy(
644
+ ptLooper,
645
+ overrides || {}
646
+ ) as Promise<AaveV4MoneyMarket>;
647
+ }
648
+ getDeployTransaction(
649
+ ptLooper: string,
650
+ overrides?: Overrides & { from?: string | Promise<string> }
651
+ ): TransactionRequest {
652
+ return super.getDeployTransaction(ptLooper, overrides || {});
653
+ }
654
+ attach(address: string): AaveV4MoneyMarket {
655
+ return super.attach(address) as AaveV4MoneyMarket;
656
+ }
657
+ connect(signer: Signer): AaveV4MoneyMarket__factory {
658
+ return super.connect(signer) as AaveV4MoneyMarket__factory;
659
+ }
660
+ static readonly contractName: "AaveV4MoneyMarket";
661
+ public readonly contractName: "AaveV4MoneyMarket";
662
+ static readonly bytecode = _bytecode;
663
+ static readonly abi = _abi;
664
+ static createInterface(): AaveV4MoneyMarketInterface {
665
+ return new utils.Interface(_abi) as AaveV4MoneyMarketInterface;
666
+ }
667
+ static connect(
668
+ address: string,
669
+ signerOrProvider: Signer | Provider
670
+ ): AaveV4MoneyMarket {
671
+ return new Contract(address, _abi, signerOrProvider) as AaveV4MoneyMarket;
672
+ }
673
+ }