@usdu-core/usdu-core 0.0.1

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 (107) hide show
  1. package/.claude/settings.local.json +12 -0
  2. package/.env.example +6 -0
  3. package/.prettierrc.json +7 -0
  4. package/LICENSE +674 -0
  5. package/README.md +244 -0
  6. package/contracts/curve/CurveAdapterV1.sol +310 -0
  7. package/contracts/curve/CurveAdapterV1_1.sol +198 -0
  8. package/contracts/curve/helpers/ICurveStableSwapNG.json +566 -0
  9. package/contracts/curve/helpers/ICurveStableSwapNG.sol +177 -0
  10. package/contracts/deploy/VaultDeployer.sol +110 -0
  11. package/contracts/morpho/MorphoAdapterV1.sol +255 -0
  12. package/contracts/morpho/MorphoAdapterV1_1.sol +137 -0
  13. package/contracts/morpho/MorphoAdapterV1_2.sol +126 -0
  14. package/contracts/morpho/helpers/AggregatorV3Interface.sol +24 -0
  15. package/contracts/morpho/helpers/ChainlinkDataFeedLib.sol +36 -0
  16. package/contracts/morpho/helpers/ConstantsLib.sol +20 -0
  17. package/contracts/morpho/helpers/ErrorsLib.sol +17 -0
  18. package/contracts/morpho/helpers/IERC4626.sol +6 -0
  19. package/contracts/morpho/helpers/IMetaMorphoV1_1.sol +229 -0
  20. package/contracts/morpho/helpers/IMetaMorphoV1_1Factory.sol +32 -0
  21. package/contracts/morpho/helpers/IMorpho.sol +361 -0
  22. package/contracts/morpho/helpers/IMorphoCallbacks.sol +52 -0
  23. package/contracts/morpho/helpers/IMorphoChainlinkOracleV2.sol +39 -0
  24. package/contracts/morpho/helpers/IMorphoChainlinkOracleV2Factory.sol +56 -0
  25. package/contracts/morpho/helpers/IOracle.sol +15 -0
  26. package/contracts/morpho/helpers/MarketParamsLib.sol +21 -0
  27. package/contracts/morpho/helpers/MathLib.sol +45 -0
  28. package/contracts/morpho/helpers/Morpho.sol.bak +517 -0
  29. package/contracts/morpho/helpers/MorphoChainlinkOracleV2.sol +157 -0
  30. package/contracts/morpho/helpers/PendingLib.sol +47 -0
  31. package/contracts/morpho/helpers/SharesMathLib.sol +45 -0
  32. package/contracts/morpho/helpers/VaultLib.sol +18 -0
  33. package/contracts/reward/RewardDistributionV1.sol +110 -0
  34. package/contracts/reward/RewardRouterV0.sol +63 -0
  35. package/contracts/reward/Rewards.example.json +72 -0
  36. package/contracts/stablecoin/IStablecoin.sol +211 -0
  37. package/contracts/stablecoin/IStablecoinMetadata.sol +27 -0
  38. package/contracts/stablecoin/IStablecoinModifier.sol +52 -0
  39. package/contracts/stablecoin/Stablecoin.sol +376 -0
  40. package/contracts/stablecoin/libraries/ConstantsLib.sol +13 -0
  41. package/contracts/stablecoin/libraries/ErrorsLib.sol +45 -0
  42. package/contracts/stablecoin/libraries/EventsLib.sol +74 -0
  43. package/contracts/stablecoin/libraries/PendingLib.sol +38 -0
  44. package/contracts/vault/VaultAdapterRecoverV1.sol +29 -0
  45. package/contracts/vault/VaultAdapterV1.sol +126 -0
  46. package/dist/index.d.mts +16154 -0
  47. package/dist/index.d.ts +16154 -0
  48. package/dist/index.js +21134 -0
  49. package/dist/index.mjs +21061 -0
  50. package/docs/CoreVault: Integration of new Markets.md +197 -0
  51. package/docs/CoreVault: SupplyQueue.md +11 -0
  52. package/docs/Markets USDC Vault.md +35 -0
  53. package/docs/Markets USDU Vault.md +89 -0
  54. package/docs/Markets WETH Vault.md +35 -0
  55. package/docs/Overview.drawio +117 -0
  56. package/exports/abis/curve/CurveAdapterV1.ts +599 -0
  57. package/exports/abis/curve/CurveAdapterV1_1.ts +609 -0
  58. package/exports/abis/curve/CurveAdapterV1_2.ts +721 -0
  59. package/exports/abis/curve/helper/ICurveStableSwapNG.ts +1589 -0
  60. package/exports/abis/morpho/MorphoAdapterV1.ts +516 -0
  61. package/exports/abis/morpho/MorphoAdapterV1_1.ts +489 -0
  62. package/exports/abis/morpho/MorphoAdapterV1_2.ts +459 -0
  63. package/exports/abis/morpho/helper/AggregatorV3Interface.ts +113 -0
  64. package/exports/abis/morpho/helper/IMetaMorphoV1_1.ts +1483 -0
  65. package/exports/abis/morpho/helper/IMetaMorphoV1_1Base.ts +607 -0
  66. package/exports/abis/morpho/helper/IMetaMorphoV1_1StaticTyping.ts +696 -0
  67. package/exports/abis/morpho/helper/IMorpho.ts +1024 -0
  68. package/exports/abis/morpho/helper/IMorphoBase.ts +886 -0
  69. package/exports/abis/morpho/helper/IMorphoChainlinkOracleV2.ts +132 -0
  70. package/exports/abis/morpho/helper/IMorphoChainlinkOracleV2Factory.ts +109 -0
  71. package/exports/abis/morpho/helper/IMorphoFlashLoanCallback.ts +20 -0
  72. package/exports/abis/morpho/helper/IMorphoLiquidateCallback.ts +20 -0
  73. package/exports/abis/morpho/helper/IMorphoRepayCallback.ts +20 -0
  74. package/exports/abis/morpho/helper/IMorphoStaticTyping.ts +1003 -0
  75. package/exports/abis/morpho/helper/IMorphoSupplyCallback.ts +20 -0
  76. package/exports/abis/morpho/helper/IMorphoSupplyCollateralCallback.ts +20 -0
  77. package/exports/abis/morpho/helper/IMulticall.ts +21 -0
  78. package/exports/abis/morpho/helper/IOracle.ts +15 -0
  79. package/exports/abis/morpho/helper/IOwnable.ts +55 -0
  80. package/exports/abis/morpho/helper/MorphoChainlinkOracleV2.ts +188 -0
  81. package/exports/abis/openzeppelin/ERC20.ts +310 -0
  82. package/exports/abis/openzeppelin/ERC20Permit.ts +520 -0
  83. package/exports/abis/openzeppelin/IERC20.ts +185 -0
  84. package/exports/abis/openzeppelin/IERC20Metadata.ts +224 -0
  85. package/exports/abis/openzeppelin/IERC20Permit.ts +77 -0
  86. package/exports/abis/openzeppelin/IERC4626.ts +614 -0
  87. package/exports/abis/reward/RewardDistributionV1.ts +246 -0
  88. package/exports/abis/stablecoin/ErrorsLib.ts +114 -0
  89. package/exports/abis/stablecoin/EventsLib.ts +372 -0
  90. package/exports/abis/stablecoin/IStablecoin.ts +642 -0
  91. package/exports/abis/stablecoin/IStablecoinMetadata.ts +856 -0
  92. package/exports/abis/stablecoin/IStablecoinModifier.ts +15 -0
  93. package/exports/abis/stablecoin/Stablecoin.ts +1922 -0
  94. package/exports/abis/termmax/ITermMaxVault.ts +2335 -0
  95. package/exports/abis/vault/VaultAdapterRecoverV1.ts +490 -0
  96. package/exports/abis/vault/VaultAdapterV1.ts +459 -0
  97. package/exports/address.config.ts +113 -0
  98. package/exports/address.types.ts +130 -0
  99. package/exports/index.ts +61 -0
  100. package/hardhat.config.ts +231 -0
  101. package/helper/store.args.ts +17 -0
  102. package/helper/wallet.info.ts +3 -0
  103. package/helper/wallet.ts +41 -0
  104. package/install-macos.sh +46 -0
  105. package/package.json +73 -0
  106. package/tsconfig.json +15 -0
  107. package/tsup.config.ts +10 -0
@@ -0,0 +1,197 @@
1
+ # CoreVault: Integration of WETH
2
+
3
+ ## Contracts
4
+
5
+ MetaMorphoV1_1: `0xcE22b5Fb17ccbc0C5d87DC2e0dF47DD71E3AdC0a`
6
+ PublicAllocator: `0xfd32fA2ca22c76dD6E550706Ad913FC6CE91c75D`
7
+
8
+ ## Actions
9
+
10
+ ```
11
+ submitCap
12
+ MetaMorphoV1_1
13
+ 0xcE22…dC0a
14
+
15
+ acceptCap
16
+ MetaMorphoV1_1
17
+ 0xcE22…dC0a
18
+
19
+ setSupplyQueue
20
+ MetaMorphoV1_1
21
+ 0xcE22…dC0a
22
+
23
+ updateWithdrawQueue
24
+ MetaMorphoV1_1
25
+ 0xcE22…dC0a
26
+
27
+ setFlowCaps
28
+ PublicAllocator
29
+ 0xfd32…c75D
30
+
31
+ reallocateTo
32
+ PublicAllocator
33
+ 0xfd32…c75D
34
+ ```
35
+
36
+ ## Details
37
+
38
+ ### submitCap
39
+
40
+ target: `0xcE22b5Fb17ccbc0C5d87DC2e0dF47DD71E3AdC0a`
41
+ function: `submitCap`
42
+ params:
43
+
44
+ ```
45
+ # marketParams
46
+
47
+ loanToken
48
+
49
+ 0xdde3eC717f220Fc6A29D6a4Be73F91DA5b718e55
50
+ collateralToken
51
+
52
+ 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
53
+ oracle
54
+
55
+ 0x0BB7EdDF8cD63f52676f1B527c6Cf5BE57604d92
56
+ irm
57
+
58
+ 0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC
59
+ lltv
60
+
61
+ 860000000000000000
62
+
63
+
64
+ # newSupplyCap
65
+
66
+ 10000000000000000000000000
67
+ ```
68
+
69
+ ### acceptCap
70
+
71
+ target: `0xcE22b5Fb17ccbc0C5d87DC2e0dF47DD71E3AdC0a`
72
+ function: `submitCap`
73
+ params:
74
+
75
+ ```
76
+ # marketParams
77
+
78
+ loanToken
79
+
80
+ 0xdde3eC717f220Fc6A29D6a4Be73F91DA5b718e55
81
+ collateralToken
82
+
83
+ 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
84
+ oracle
85
+
86
+ 0x0BB7EdDF8cD63f52676f1B527c6Cf5BE57604d92
87
+ irm
88
+
89
+ 0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC
90
+ lltv
91
+
92
+ 860000000000000000
93
+ ```
94
+
95
+ ### setSupplyQueue
96
+
97
+ target: `0xcE22b5Fb17ccbc0C5d87DC2e0dF47DD71E3AdC0a`
98
+ function: `setSupplyQueue`
99
+ params:
100
+
101
+ ```
102
+ # newSupplyQueue
103
+
104
+ 0x60f855f6b8c6919c2a4f3ab5f367fc923e3172e6dc8f4e8b6c448eb2d43421a1
105
+ 0xa6b5b5cc24a40900156a503afc6c898118b6d37ae545c2c144326fb95ac68e7a
106
+ 0x0f2c33f9074109b75b88617534e6ac6dfa8ebf97270c716782221a27cbf0d880
107
+ ```
108
+
109
+ ### updateWithdrawQueue
110
+
111
+ target: `0xcE22b5Fb17ccbc0C5d87DC2e0dF47DD71E3AdC0a`
112
+ function: `updateWithdrawQueue`
113
+ params:
114
+
115
+ ```
116
+ # indexes
117
+
118
+ 2
119
+ 1
120
+ 0
121
+ ```
122
+
123
+ ### setFlowCaps
124
+
125
+ target: `0xfd32fA2ca22c76dD6E550706Ad913FC6CE91c75D`
126
+ function: `setFlowCaps`
127
+ params:
128
+
129
+ ```
130
+ # vault
131
+
132
+ 0xcE22b5Fb17ccbc0C5d87DC2e0dF47DD71E3AdC0a
133
+
134
+ # config
135
+
136
+ ## id
137
+ 0xa6b5b5cc24a40900156a503afc6c898118b6d37ae545c2c144326fb95ac68e7a
138
+
139
+ ## caps
140
+
141
+ maxIn
142
+ 100000000000000000000000
143
+
144
+ maxOut
145
+ 100000000000000000000000
146
+ ```
147
+
148
+ ### reallocateTo
149
+
150
+ target: `0xfd32fA2ca22c76dD6E550706Ad913FC6CE91c75D`
151
+ function: `reallocateTo`
152
+ params:
153
+
154
+ ```
155
+ vault
156
+
157
+ 0xcE22b5Fb17ccbc0C5d87DC2e0dF47DD71E3AdC0a
158
+ withdrawals
159
+
160
+ marketParams
161
+
162
+ loanToken
163
+
164
+ 0xdde3eC717f220Fc6A29D6a4Be73F91DA5b718e55
165
+ collateralToken
166
+
167
+ 0x0000000000000000000000000000000000000000
168
+ oracle
169
+
170
+ 0x0000000000000000000000000000000000000000
171
+ irm
172
+
173
+ 0x0000000000000000000000000000000000000000
174
+ lltv
175
+
176
+ 0
177
+ amount
178
+
179
+ 1000000000000000000000
180
+ supplyMarketParams
181
+
182
+ loanToken
183
+
184
+ 0xdde3eC717f220Fc6A29D6a4Be73F91DA5b718e55
185
+ collateralToken
186
+
187
+ 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
188
+ oracle
189
+
190
+ 0x0BB7EdDF8cD63f52676f1B527c6Cf5BE57604d92
191
+ irm
192
+
193
+ 0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC
194
+ lltv
195
+
196
+ 860000000000000000
197
+ ```
@@ -0,0 +1,11 @@
1
+ # setSupplyQueue
2
+
3
+ USDC: 0x60f855f6b8c6919c2a4f3ab5f367fc923e3172e6dc8f4e8b6c448eb2d43421a1
4
+ cvLP-USDC: 0xc12387d79d5d7ba35c5d2ed60b71dc4d6341889a30afea50a790c4e8967c209c
5
+ WETH: 0xa6b5b5cc24a40900156a503afc6c898118b6d37ae545c2c144326fb95ac68e7a
6
+ cbBTC: 0x5BFC5484227F34C205E652C0426192DDE746FDB709D8947125A06C03F07EA4C7
7
+ idle: 0x0f2c33f9074109b75b88617534e6ac6dfa8ebf97270c716782221a27cbf0d880
8
+
9
+ # updateWithdrawQueue
10
+
11
+ 4, 3, 2, 1, 0
@@ -0,0 +1,35 @@
1
+ ## USDC/USDU
2
+
3
+ > Market ID: 0x6E988863B5C88C6A0038E07F346D79A941BA30E6BAB0E1267F3BCF72275D572A
4
+
5
+ ```
6
+ marketParams (tuple)
7
+ loanToken
8
+ 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
9
+ collateralToken
10
+ 0xdde3eC717f220Fc6A29D6a4Be73F91DA5b718e55
11
+ oracle
12
+ 0x1325Eb089Ac14B437E78D5D481e32611F6907eF8
13
+ irm
14
+ 0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC
15
+ lltv
16
+ 915000000000000000
17
+ ```
18
+
19
+ ## USDC/sUSDU
20
+
21
+ > Market ID: 0xAC3DB6E1B107B3239C6356F7018058BA66DFC8BB9D619F90A567CA58D33FFA36
22
+
23
+ ```
24
+ marketParams (tuple)
25
+ loanToken
26
+ 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
27
+ collateralToken
28
+ 0xcE22b5Fb17ccbc0C5d87DC2e0dF47DD71E3AdC0a
29
+ oracle
30
+ 0x9301C2dD12552aD11Ce36DF5b53eA33818ad1165
31
+ irm
32
+ 0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC
33
+ lltv
34
+ 965000000000000000
35
+ ```
@@ -0,0 +1,89 @@
1
+ ## USDU/Idle
2
+
3
+ > Market ID: 0x0F2C33F9074109B75B88617534E6AC6DFA8EBF97270C716782221A27CBF0D880
4
+
5
+ ```
6
+ marketParams (tuple)
7
+ loanToken
8
+ 0xdde3eC717f220Fc6A29D6a4Be73F91DA5b718e55
9
+ collateralToken
10
+ 0x0000000000000000000000000000000000000000
11
+ oracle
12
+ 0x0000000000000000000000000000000000000000
13
+ irm
14
+ 0x0000000000000000000000000000000000000000
15
+ lltv
16
+ 0
17
+ ```
18
+
19
+ ## USDU/USDC
20
+
21
+ Market ID: 0x60f855f6b8c6919c2a4f3ab5f367fc923e3172e6dc8f4e8b6c448eb2d43421a1
22
+
23
+ ```
24
+ marketParams (tuple)
25
+ loanToken
26
+ 0xdde3eC717f220Fc6A29D6a4Be73F91DA5b718e55
27
+ collateralToken
28
+ 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
29
+ oracle
30
+ 0x0996a315D21C0B2c827dDdF83Fd1623940f8BeA0
31
+ irm
32
+ 0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC
33
+ lltv
34
+ 915000000000000000
35
+ ```
36
+
37
+ ## USDU/WETH
38
+
39
+ Market ID: 0xa6b5b5cc24a40900156a503afc6c898118b6d37ae545c2c144326fb95ac68e7a
40
+
41
+ ```
42
+ marketParams (tuple)
43
+ loanToken
44
+ 0xdde3eC717f220Fc6A29D6a4Be73F91DA5b718e55
45
+ collateralToken
46
+ 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
47
+ oracle
48
+ 0x0BB7EdDF8cD63f52676f1B527c6Cf5BE57604d92
49
+ irm
50
+ 0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC
51
+ lltv
52
+ 860000000000000000
53
+ ```
54
+
55
+ ## USDU/USDU-USDC-Curve-LP
56
+
57
+ Market ID: 0xC12387D79D5D7BA35C5D2ED60B71DC4D6341889A30AFEA50A790C4E8967C209C
58
+
59
+ ```
60
+ marketParams (tuple)
61
+ loanToken
62
+ 0xdde3eC717f220Fc6A29D6a4Be73F91DA5b718e55
63
+ collateralToken
64
+ 0x771c91e699B4B23420de3F81dE2aA38C4041632b
65
+ oracle
66
+ 0x3544BdF11EE46261e4a7823D9100B4F66B0450B4
67
+ irm
68
+ 0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC
69
+ lltv
70
+ 915000000000000000
71
+ ```
72
+
73
+ ## USDU/cbBTC
74
+
75
+ Market ID: 0x5BFC5484227F34C205E652C0426192DDE746FDB709D8947125A06C03F07EA4C7
76
+
77
+ ```
78
+ marketParams (tuple)
79
+ loanToken
80
+ 0xdde3eC717f220Fc6A29D6a4Be73F91DA5b718e55
81
+ collateralToken
82
+ 0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf
83
+ oracle
84
+ 0xF7A0e51cebD98a31947CaE1DDa8C0717D10ADd61
85
+ irm
86
+ 0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC
87
+ lltv
88
+ 860000000000000000
89
+ ```
@@ -0,0 +1,35 @@
1
+ ## WETH/USDU
2
+
3
+ > Market ID: 0x61EC07C8FF28AD5928CF28953FE4266D92311C62343A10CA4CB197E4F06302AB
4
+
5
+ ```
6
+ marketParams (tuple)
7
+ loanToken
8
+ 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
9
+ collateralToken
10
+ 0xdde3eC717f220Fc6A29D6a4Be73F91DA5b718e55
11
+ oracle
12
+ 0x711F1DEB3bC986A994f0955a85108EA438CD9439
13
+ irm
14
+ 0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC
15
+ lltv
16
+ 860000000000000000
17
+ ```
18
+
19
+ ## WETH/sUSDU
20
+
21
+ > Market ID: 0x3EFAF643D50D16440B4FA629B0700F3D5323E34AC577AACB0220324D7F0E3327
22
+
23
+ ```
24
+ marketParams (tuple)
25
+ loanToken
26
+ 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
27
+ collateralToken
28
+ 0xcE22b5Fb17ccbc0C5d87DC2e0dF47DD71E3AdC0a
29
+ oracle
30
+ 0x32c1d7e4F4e0ACcb5bbD7e6A2F0F4a0454e79e35
31
+ irm
32
+ 0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC
33
+ lltv
34
+ 860000000000000000
35
+ ```
@@ -0,0 +1,117 @@
1
+ <mxfile host="65bd71144e">
2
+ <diagram id="gRs45U4gizG8e4rvgreU" name="Page-1">
3
+ <mxGraphModel dx="1466" dy="802" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1654" pageHeight="1169" math="0" shadow="0">
4
+ <root>
5
+ <mxCell id="0"/>
6
+ <mxCell id="1" parent="0"/>
7
+ <mxCell id="8" style="edgeStyle=none;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="2" target="5">
8
+ <mxGeometry relative="1" as="geometry"/>
9
+ </mxCell>
10
+ <mxCell id="9" value="Revenue" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="8">
11
+ <mxGeometry x="0.0002" relative="1" as="geometry">
12
+ <mxPoint as="offset"/>
13
+ </mxGeometry>
14
+ </mxCell>
15
+ <mxCell id="2" value="MorphoAdapterV1" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
16
+ <mxGeometry x="100" y="280" width="120" height="60" as="geometry"/>
17
+ </mxCell>
18
+ <mxCell id="5" value="Receivers" style="swimlane;horizontal=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
19
+ <mxGeometry x="80" y="430" width="160" height="90" as="geometry"/>
20
+ </mxCell>
21
+ <mxCell id="6" value="- rec0&lt;div&gt;- rec1&lt;/div&gt;&lt;div&gt;- rec2&lt;/div&gt;&lt;div&gt;- rec3&lt;/div&gt;&lt;div&gt;- rec4&lt;/div&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="5">
22
+ <mxGeometry x="30" y="-5" width="50" height="90" as="geometry"/>
23
+ </mxCell>
24
+ <mxCell id="31" value="" style="group" vertex="1" connectable="0" parent="1">
25
+ <mxGeometry x="40" y="40" width="670" height="210" as="geometry"/>
26
+ </mxCell>
27
+ <mxCell id="13" value="" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="31">
28
+ <mxGeometry width="670" height="210" as="geometry"/>
29
+ </mxCell>
30
+ <mxCell id="14" value="Stablecoin" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="31">
31
+ <mxGeometry x="330" width="60" height="30" as="geometry"/>
32
+ </mxCell>
33
+ <mxCell id="17" value="Roles" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="31">
34
+ <mxGeometry x="20" y="40" width="80" height="150" as="geometry">
35
+ <mxRectangle x="620" y="240" width="70" height="30" as="alternateBounds"/>
36
+ </mxGeometry>
37
+ </mxCell>
38
+ <mxCell id="18" value="Curator" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" vertex="1" parent="17">
39
+ <mxGeometry y="30" width="80" height="30" as="geometry"/>
40
+ </mxCell>
41
+ <mxCell id="19" value="Guardian" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" vertex="1" parent="17">
42
+ <mxGeometry y="60" width="80" height="30" as="geometry"/>
43
+ </mxCell>
44
+ <mxCell id="25" value="Timelock" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" vertex="1" parent="17">
45
+ <mxGeometry y="90" width="80" height="30" as="geometry"/>
46
+ </mxCell>
47
+ <mxCell id="20" value="Module" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" vertex="1" parent="17">
48
+ <mxGeometry y="120" width="80" height="30" as="geometry"/>
49
+ </mxCell>
50
+ <mxCell id="21" value="Management" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="31">
51
+ <mxGeometry x="110" y="40" width="320" height="150" as="geometry"/>
52
+ </mxCell>
53
+ <mxCell id="22" value="Curator: set / set public, revoke, accept" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" vertex="1" parent="21">
54
+ <mxGeometry y="30" width="320" height="30" as="geometry"/>
55
+ </mxCell>
56
+ <mxCell id="23" value="Guardian: set, revoke, accept" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" vertex="1" parent="21">
57
+ <mxGeometry y="60" width="320" height="30" as="geometry"/>
58
+ </mxCell>
59
+ <mxCell id="26" value="Timelock: set, revoke, accept" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" vertex="1" parent="21">
60
+ <mxGeometry y="90" width="320" height="30" as="geometry"/>
61
+ </mxCell>
62
+ <mxCell id="24" value="Module: set / set public, revoke, accept" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" vertex="1" parent="21">
63
+ <mxGeometry y="120" width="320" height="30" as="geometry"/>
64
+ </mxCell>
65
+ <mxCell id="27" value="Module" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="31">
66
+ <mxGeometry x="440" y="40" width="210" height="120" as="geometry"/>
67
+ </mxCell>
68
+ <mxCell id="28" value="Invalid: no special permission" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" vertex="1" parent="27">
69
+ <mxGeometry y="30" width="210" height="30" as="geometry"/>
70
+ </mxCell>
71
+ <mxCell id="29" value="Active: allowance, minting, burning" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" vertex="1" parent="27">
72
+ <mxGeometry y="60" width="210" height="30" as="geometry"/>
73
+ </mxCell>
74
+ <mxCell id="30" value="Expired: burning" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" vertex="1" parent="27">
75
+ <mxGeometry y="90" width="210" height="30" as="geometry"/>
76
+ </mxCell>
77
+ <mxCell id="32" style="edgeStyle=none;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="34" target="35">
78
+ <mxGeometry relative="1" as="geometry"/>
79
+ </mxCell>
80
+ <mxCell id="33" value="Revenue" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="32">
81
+ <mxGeometry x="0.0002" relative="1" as="geometry">
82
+ <mxPoint as="offset"/>
83
+ </mxGeometry>
84
+ </mxCell>
85
+ <mxCell id="34" value="CurveAdapterV1" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
86
+ <mxGeometry x="300" y="280" width="120" height="60" as="geometry"/>
87
+ </mxCell>
88
+ <mxCell id="43" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="35">
89
+ <mxGeometry relative="1" as="geometry">
90
+ <mxPoint x="210" y="640" as="targetPoint"/>
91
+ </mxGeometry>
92
+ </mxCell>
93
+ <mxCell id="35" value="Receivers" style="swimlane;horizontal=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
94
+ <mxGeometry x="280" y="430" width="160" height="90" as="geometry"/>
95
+ </mxCell>
96
+ <mxCell id="36" value="- rec0&lt;div&gt;- rec1&lt;/div&gt;&lt;div&gt;- rec2&lt;/div&gt;&lt;div&gt;- rec3&lt;/div&gt;&lt;div&gt;- rec4&lt;/div&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="35">
97
+ <mxGeometry x="30" y="-5" width="50" height="90" as="geometry"/>
98
+ </mxCell>
99
+ <mxCell id="37" value="Insurance" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;" vertex="1" parent="1">
100
+ <mxGeometry x="80" y="640" width="60" height="80" as="geometry"/>
101
+ </mxCell>
102
+ <mxCell id="38" value="Reward&lt;div&gt;Router&lt;/div&gt;" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;" vertex="1" parent="1">
103
+ <mxGeometry x="180" y="640" width="60" height="80" as="geometry"/>
104
+ </mxCell>
105
+ <mxCell id="40" style="edgeStyle=none;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="5" target="37">
106
+ <mxGeometry relative="1" as="geometry"/>
107
+ </mxCell>
108
+ <mxCell id="41" style="edgeStyle=none;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.855;entryY=0;entryDx=0;entryDy=4.35;entryPerimeter=0;" edge="1" parent="1" source="35" target="37">
109
+ <mxGeometry relative="1" as="geometry"/>
110
+ </mxCell>
111
+ <mxCell id="42" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="5" target="38">
112
+ <mxGeometry relative="1" as="geometry"/>
113
+ </mxCell>
114
+ </root>
115
+ </mxGraphModel>
116
+ </diagram>
117
+ </mxfile>