@zoralabs/coins 0.9.0 → 1.0.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 (124) hide show
  1. package/.turbo/turbo-build.log +131 -114
  2. package/CHANGELOG.md +40 -0
  3. package/abis/BaseCoin.json +26 -118
  4. package/abis/BaseTest.json +47 -0
  5. package/abis/Coin.json +171 -63
  6. package/abis/CoinDopplerMultiCurve.json +38 -0
  7. package/abis/CoinRewardsV4.json +54 -0
  8. package/abis/CoinTest.json +53 -20
  9. package/abis/CoinUniV4Test.json +1053 -0
  10. package/abis/CoinV4.json +234 -211
  11. package/abis/DeployScript.json +47 -0
  12. package/abis/DeployedCoinVersionLookup.json +21 -0
  13. package/abis/DeployedCoinVersionLookupTest.json +716 -0
  14. package/abis/DifferentNamespaceVersionLookup.json +39 -0
  15. package/abis/DopplerUniswapV3Test.json +49 -93
  16. package/abis/ERC20.json +310 -0
  17. package/abis/FactoryTest.json +85 -7
  18. package/abis/FeeEstimatorHook.json +1528 -0
  19. package/abis/HooksDeployment.json +23 -0
  20. package/abis/HooksTest.json +47 -0
  21. package/abis/ICoin.json +40 -71
  22. package/abis/ICoinV3.json +879 -0
  23. package/abis/ICoinV4.json +915 -0
  24. package/abis/IDeployedCoinVersionLookup.json +21 -0
  25. package/abis/IERC721.json +36 -36
  26. package/abis/IHasPoolKey.json +42 -0
  27. package/abis/IHasRewardsRecipients.json +54 -0
  28. package/abis/IHasSwapPath.json +60 -0
  29. package/abis/IMsgSender.json +15 -0
  30. package/abis/IPoolConfigEncoding.json +46 -0
  31. package/abis/ISwapPathRouter.json +92 -0
  32. package/abis/IUniversalRouter.json +61 -0
  33. package/abis/IUnlockCallback.json +21 -0
  34. package/abis/IV4Quoter.json +310 -0
  35. package/abis/IZoraFactory.json +191 -11
  36. package/abis/IZoraV4CoinHook.json +348 -4
  37. package/abis/MockERC20.json +21 -0
  38. package/abis/MultiOwnableTest.json +47 -0
  39. package/abis/{CoinConfigurationVersions.json → Position.json} +1 -1
  40. package/abis/PrintUpgradeCommand.json +9 -0
  41. package/abis/ProxyShim.json +24 -0
  42. package/abis/StateLibrary.json +80 -0
  43. package/abis/TestDeployedCoinVersionLookupImplementation.json +39 -0
  44. package/abis/TestV4Swap.json +9 -0
  45. package/abis/UpgradeCoinImpl.json +47 -0
  46. package/abis/UpgradesTest.json +67 -0
  47. package/abis/Vm.json +1482 -111
  48. package/abis/VmSafe.json +856 -32
  49. package/abis/ZoraFactoryImpl.json +339 -1
  50. package/abis/ZoraV4CoinHook.json +455 -5
  51. package/addresses/8453.json +8 -4
  52. package/addresses/84532.json +8 -4
  53. package/dist/index.cjs +1920 -169
  54. package/dist/index.cjs.map +1 -1
  55. package/dist/index.js +1916 -169
  56. package/dist/index.js.map +1 -1
  57. package/dist/wagmiGenerated.d.ts +2599 -183
  58. package/dist/wagmiGenerated.d.ts.map +1 -1
  59. package/package/wagmiGenerated.ts +1928 -165
  60. package/package.json +8 -3
  61. package/remappings.txt +6 -1
  62. package/script/CoinsDeployerBase.sol +74 -11
  63. package/script/DeployDevFactory.s.sol +21 -0
  64. package/script/PrintUpgradeCommand.s.sol +13 -0
  65. package/script/Simulate.s.sol +1 -10
  66. package/script/TestBackingCoinSwap.s.sol +146 -0
  67. package/script/TestV4Swap.s.sol +136 -0
  68. package/script/UpgradeFactoryImpl.s.sol +1 -1
  69. package/src/BaseCoin.sol +176 -0
  70. package/src/Coin.sol +87 -202
  71. package/src/CoinV4.sol +121 -0
  72. package/src/ZoraFactoryImpl.sol +208 -36
  73. package/src/hooks/ZoraV4CoinHook.sol +195 -0
  74. package/src/hooks/{BaseCoinDeployHook.sol → deployment/BaseCoinDeployHook.sol} +3 -3
  75. package/src/hooks/{BuySupplyWithSwapRouterHook.sol → deployment/BuySupplyWithSwapRouterHook.sol} +7 -5
  76. package/src/interfaces/ICoin.sol +31 -39
  77. package/src/interfaces/ICoinV3.sol +71 -0
  78. package/src/interfaces/ICoinV4.sol +69 -0
  79. package/src/interfaces/IDeployedCoinVersionLookup.sol +11 -0
  80. package/src/interfaces/IMsgSender.sol +9 -0
  81. package/src/interfaces/IPoolConfigEncoding.sol +14 -0
  82. package/src/interfaces/ISwapPathRouter.sol +14 -0
  83. package/src/interfaces/IZoraFactory.sol +65 -27
  84. package/src/interfaces/IZoraV4CoinHook.sol +116 -0
  85. package/src/libs/CoinCommon.sol +15 -0
  86. package/src/libs/CoinConfigurationVersions.sol +116 -1
  87. package/src/libs/CoinConstants.sol +5 -0
  88. package/src/libs/CoinDopplerMultiCurve.sol +134 -0
  89. package/src/libs/CoinDopplerUniV3.sol +19 -171
  90. package/src/libs/CoinRewards.sol +195 -0
  91. package/src/libs/CoinRewardsV4.sol +180 -0
  92. package/src/libs/CoinSetup.sol +57 -0
  93. package/src/libs/CoinSetupV3.sol +6 -67
  94. package/src/libs/DopplerMath.sol +156 -0
  95. package/src/libs/HooksDeployment.sol +84 -0
  96. package/src/libs/MarketConstants.sol +4 -0
  97. package/src/libs/PoolStateReader.sol +22 -0
  98. package/src/libs/UniV3BuySell.sol +74 -292
  99. package/src/libs/UniV4SwapHelper.sol +65 -0
  100. package/src/libs/UniV4SwapToCurrency.sol +109 -0
  101. package/src/libs/V4Liquidity.sol +129 -0
  102. package/src/types/PoolConfiguration.sol +15 -0
  103. package/src/utils/DeployedCoinVersionLookup.sol +52 -0
  104. package/src/version/ContractVersionBase.sol +1 -1
  105. package/test/Coin.t.sol +78 -88
  106. package/test/CoinDopplerUniV3.t.sol +32 -171
  107. package/test/CoinUniV4.t.sol +752 -0
  108. package/test/{Hooks.t.sol → DeploymentHooks.t.sol} +2 -6
  109. package/test/Factory.t.sol +80 -47
  110. package/test/MultiOwnable.t.sol +6 -3
  111. package/test/Upgrades.t.sol +6 -5
  112. package/test/mocks/MockERC20.sol +12 -0
  113. package/test/utils/BaseTest.sol +106 -56
  114. package/test/utils/DeployedCoinVersionLookup.t.sol +127 -0
  115. package/test/utils/FeeEstimatorHook.sol +84 -0
  116. package/test/utils/ProxyShim.sol +17 -0
  117. package/wagmi.config.ts +4 -0
  118. package/.env +0 -1
  119. package/.turbo/turbo-update-contract-version.log +0 -22
  120. package/abis/CoinSetupV3.json +0 -7
  121. package/abis/HookDeployer.json +0 -68
  122. package/abis/IHookDeployer.json +0 -42
  123. package/src/libs/CoinLegacy.sol +0 -48
  124. package/src/libs/CoinLegacyMarket.sol +0 -182
@@ -3,9 +3,19 @@
3
3
  "type": "constructor",
4
4
  "inputs": [
5
5
  {
6
- "name": "_poolManager",
6
+ "name": "poolManager_",
7
7
  "type": "address",
8
8
  "internalType": "contract IPoolManager"
9
+ },
10
+ {
11
+ "name": "coinVersionLookup_",
12
+ "type": "address",
13
+ "internalType": "contract IDeployedCoinVersionLookup"
14
+ },
15
+ {
16
+ "name": "trustedMessageSenders_",
17
+ "type": "address[]",
18
+ "internalType": "address[]"
9
19
  }
10
20
  ],
11
21
  "stateMutability": "nonpayable"
@@ -797,6 +807,19 @@
797
807
  ],
798
808
  "stateMutability": "nonpayable"
799
809
  },
810
+ {
811
+ "type": "function",
812
+ "name": "contractVersion",
813
+ "inputs": [],
814
+ "outputs": [
815
+ {
816
+ "name": "",
817
+ "type": "string",
818
+ "internalType": "string"
819
+ }
820
+ ],
821
+ "stateMutability": "pure"
822
+ },
800
823
  {
801
824
  "type": "function",
802
825
  "name": "getHookPermissions",
@@ -882,6 +905,148 @@
882
905
  ],
883
906
  "stateMutability": "pure"
884
907
  },
908
+ {
909
+ "type": "function",
910
+ "name": "getPoolCoin",
911
+ "inputs": [
912
+ {
913
+ "name": "key",
914
+ "type": "tuple",
915
+ "internalType": "struct PoolKey",
916
+ "components": [
917
+ {
918
+ "name": "currency0",
919
+ "type": "address",
920
+ "internalType": "Currency"
921
+ },
922
+ {
923
+ "name": "currency1",
924
+ "type": "address",
925
+ "internalType": "Currency"
926
+ },
927
+ {
928
+ "name": "fee",
929
+ "type": "uint24",
930
+ "internalType": "uint24"
931
+ },
932
+ {
933
+ "name": "tickSpacing",
934
+ "type": "int24",
935
+ "internalType": "int24"
936
+ },
937
+ {
938
+ "name": "hooks",
939
+ "type": "address",
940
+ "internalType": "contract IHooks"
941
+ }
942
+ ]
943
+ }
944
+ ],
945
+ "outputs": [
946
+ {
947
+ "name": "",
948
+ "type": "tuple",
949
+ "internalType": "struct IZoraV4CoinHook.PoolCoin",
950
+ "components": [
951
+ {
952
+ "name": "coin",
953
+ "type": "address",
954
+ "internalType": "address"
955
+ },
956
+ {
957
+ "name": "positions",
958
+ "type": "tuple[]",
959
+ "internalType": "struct LpPosition[]",
960
+ "components": [
961
+ {
962
+ "name": "tickLower",
963
+ "type": "int24",
964
+ "internalType": "int24"
965
+ },
966
+ {
967
+ "name": "tickUpper",
968
+ "type": "int24",
969
+ "internalType": "int24"
970
+ },
971
+ {
972
+ "name": "liquidity",
973
+ "type": "uint128",
974
+ "internalType": "uint128"
975
+ }
976
+ ]
977
+ }
978
+ ]
979
+ }
980
+ ],
981
+ "stateMutability": "view"
982
+ },
983
+ {
984
+ "type": "function",
985
+ "name": "getPoolCoinByHash",
986
+ "inputs": [
987
+ {
988
+ "name": "poolKeyHash",
989
+ "type": "bytes23",
990
+ "internalType": "bytes23"
991
+ }
992
+ ],
993
+ "outputs": [
994
+ {
995
+ "name": "",
996
+ "type": "tuple",
997
+ "internalType": "struct IZoraV4CoinHook.PoolCoin",
998
+ "components": [
999
+ {
1000
+ "name": "coin",
1001
+ "type": "address",
1002
+ "internalType": "address"
1003
+ },
1004
+ {
1005
+ "name": "positions",
1006
+ "type": "tuple[]",
1007
+ "internalType": "struct LpPosition[]",
1008
+ "components": [
1009
+ {
1010
+ "name": "tickLower",
1011
+ "type": "int24",
1012
+ "internalType": "int24"
1013
+ },
1014
+ {
1015
+ "name": "tickUpper",
1016
+ "type": "int24",
1017
+ "internalType": "int24"
1018
+ },
1019
+ {
1020
+ "name": "liquidity",
1021
+ "type": "uint128",
1022
+ "internalType": "uint128"
1023
+ }
1024
+ ]
1025
+ }
1026
+ ]
1027
+ }
1028
+ ],
1029
+ "stateMutability": "view"
1030
+ },
1031
+ {
1032
+ "type": "function",
1033
+ "name": "isTrustedMessageSender",
1034
+ "inputs": [
1035
+ {
1036
+ "name": "sender",
1037
+ "type": "address",
1038
+ "internalType": "address"
1039
+ }
1040
+ ],
1041
+ "outputs": [
1042
+ {
1043
+ "name": "",
1044
+ "type": "bool",
1045
+ "internalType": "bool"
1046
+ }
1047
+ ],
1048
+ "stateMutability": "view"
1049
+ },
885
1050
  {
886
1051
  "type": "function",
887
1052
  "name": "poolManager",
@@ -895,6 +1060,132 @@
895
1060
  ],
896
1061
  "stateMutability": "view"
897
1062
  },
1063
+ {
1064
+ "type": "function",
1065
+ "name": "unlockCallback",
1066
+ "inputs": [
1067
+ {
1068
+ "name": "data",
1069
+ "type": "bytes",
1070
+ "internalType": "bytes"
1071
+ }
1072
+ ],
1073
+ "outputs": [
1074
+ {
1075
+ "name": "",
1076
+ "type": "bytes",
1077
+ "internalType": "bytes"
1078
+ }
1079
+ ],
1080
+ "stateMutability": "nonpayable"
1081
+ },
1082
+ {
1083
+ "type": "event",
1084
+ "name": "CoinMarketRewardsV4",
1085
+ "inputs": [
1086
+ {
1087
+ "name": "coin",
1088
+ "type": "address",
1089
+ "indexed": false,
1090
+ "internalType": "address"
1091
+ },
1092
+ {
1093
+ "name": "currency",
1094
+ "type": "address",
1095
+ "indexed": false,
1096
+ "internalType": "address"
1097
+ },
1098
+ {
1099
+ "name": "payoutRecipient",
1100
+ "type": "address",
1101
+ "indexed": false,
1102
+ "internalType": "address"
1103
+ },
1104
+ {
1105
+ "name": "platformReferrer",
1106
+ "type": "address",
1107
+ "indexed": false,
1108
+ "internalType": "address"
1109
+ },
1110
+ {
1111
+ "name": "tradeReferrer",
1112
+ "type": "address",
1113
+ "indexed": false,
1114
+ "internalType": "address"
1115
+ },
1116
+ {
1117
+ "name": "protocolRewardRecipient",
1118
+ "type": "address",
1119
+ "indexed": false,
1120
+ "internalType": "address"
1121
+ },
1122
+ {
1123
+ "name": "dopplerRecipient",
1124
+ "type": "address",
1125
+ "indexed": false,
1126
+ "internalType": "address"
1127
+ },
1128
+ {
1129
+ "name": "marketRewards",
1130
+ "type": "tuple",
1131
+ "indexed": false,
1132
+ "internalType": "struct IZoraV4CoinHook.MarketRewardsV4",
1133
+ "components": [
1134
+ {
1135
+ "name": "creatorPayoutAmountCurrency",
1136
+ "type": "uint256",
1137
+ "internalType": "uint256"
1138
+ },
1139
+ {
1140
+ "name": "creatorPayoutAmountCoin",
1141
+ "type": "uint256",
1142
+ "internalType": "uint256"
1143
+ },
1144
+ {
1145
+ "name": "platformReferrerAmountCurrency",
1146
+ "type": "uint256",
1147
+ "internalType": "uint256"
1148
+ },
1149
+ {
1150
+ "name": "platformReferrerAmountCoin",
1151
+ "type": "uint256",
1152
+ "internalType": "uint256"
1153
+ },
1154
+ {
1155
+ "name": "tradeReferrerAmountCurrency",
1156
+ "type": "uint256",
1157
+ "internalType": "uint256"
1158
+ },
1159
+ {
1160
+ "name": "tradeReferrerAmountCoin",
1161
+ "type": "uint256",
1162
+ "internalType": "uint256"
1163
+ },
1164
+ {
1165
+ "name": "protocolAmountCurrency",
1166
+ "type": "uint256",
1167
+ "internalType": "uint256"
1168
+ },
1169
+ {
1170
+ "name": "protocolAmountCoin",
1171
+ "type": "uint256",
1172
+ "internalType": "uint256"
1173
+ },
1174
+ {
1175
+ "name": "dopplerAmountCurrency",
1176
+ "type": "uint256",
1177
+ "internalType": "uint256"
1178
+ },
1179
+ {
1180
+ "name": "dopplerAmountCoin",
1181
+ "type": "uint256",
1182
+ "internalType": "uint256"
1183
+ }
1184
+ ]
1185
+ }
1186
+ ],
1187
+ "anonymous": false
1188
+ },
898
1189
  {
899
1190
  "type": "event",
900
1191
  "name": "Swapped",
@@ -902,9 +1193,21 @@
902
1193
  {
903
1194
  "name": "sender",
904
1195
  "type": "address",
905
- "indexed": false,
1196
+ "indexed": true,
1197
+ "internalType": "address"
1198
+ },
1199
+ {
1200
+ "name": "swapSender",
1201
+ "type": "address",
1202
+ "indexed": true,
906
1203
  "internalType": "address"
907
1204
  },
1205
+ {
1206
+ "name": "isTrustedSwapSenderAddress",
1207
+ "type": "bool",
1208
+ "indexed": false,
1209
+ "internalType": "bool"
1210
+ },
908
1211
  {
909
1212
  "name": "key",
910
1213
  "type": "tuple",
@@ -938,6 +1241,12 @@
938
1241
  }
939
1242
  ]
940
1243
  },
1244
+ {
1245
+ "name": "poolKeyHash",
1246
+ "type": "bytes32",
1247
+ "indexed": true,
1248
+ "internalType": "bytes32"
1249
+ },
941
1250
  {
942
1251
  "name": "params",
943
1252
  "type": "tuple",
@@ -962,28 +1271,169 @@
962
1271
  ]
963
1272
  },
964
1273
  {
965
- "name": "delta",
966
- "type": "int256",
1274
+ "name": "amount0",
1275
+ "type": "int128",
967
1276
  "indexed": false,
968
- "internalType": "BalanceDelta"
1277
+ "internalType": "int128"
1278
+ },
1279
+ {
1280
+ "name": "amount1",
1281
+ "type": "int128",
1282
+ "indexed": false,
1283
+ "internalType": "int128"
1284
+ },
1285
+ {
1286
+ "name": "isCoinBuy",
1287
+ "type": "bool",
1288
+ "indexed": false,
1289
+ "internalType": "bool"
969
1290
  },
970
1291
  {
971
1292
  "name": "hookData",
972
1293
  "type": "bytes",
973
1294
  "indexed": false,
974
1295
  "internalType": "bytes"
1296
+ },
1297
+ {
1298
+ "name": "sqrtPriceX96",
1299
+ "type": "uint160",
1300
+ "indexed": false,
1301
+ "internalType": "uint160"
975
1302
  }
976
1303
  ],
977
1304
  "anonymous": false
978
1305
  },
1306
+ {
1307
+ "type": "error",
1308
+ "name": "AddressEmptyCode",
1309
+ "inputs": [
1310
+ {
1311
+ "name": "target",
1312
+ "type": "address",
1313
+ "internalType": "address"
1314
+ }
1315
+ ]
1316
+ },
1317
+ {
1318
+ "type": "error",
1319
+ "name": "AddressInsufficientBalance",
1320
+ "inputs": [
1321
+ {
1322
+ "name": "account",
1323
+ "type": "address",
1324
+ "internalType": "address"
1325
+ }
1326
+ ]
1327
+ },
1328
+ {
1329
+ "type": "error",
1330
+ "name": "CannotMintZeroLiquidity",
1331
+ "inputs": []
1332
+ },
1333
+ {
1334
+ "type": "error",
1335
+ "name": "CoinVersionLookupCannotBeZeroAddress",
1336
+ "inputs": []
1337
+ },
1338
+ {
1339
+ "type": "error",
1340
+ "name": "EthTransferFailed",
1341
+ "inputs": []
1342
+ },
1343
+ {
1344
+ "type": "error",
1345
+ "name": "FailedInnerCall",
1346
+ "inputs": []
1347
+ },
979
1348
  {
980
1349
  "type": "error",
981
1350
  "name": "HookNotImplemented",
982
1351
  "inputs": []
983
1352
  },
1353
+ {
1354
+ "type": "error",
1355
+ "name": "InvalidTickRangeMisordered",
1356
+ "inputs": [
1357
+ {
1358
+ "name": "tickLower",
1359
+ "type": "int24",
1360
+ "internalType": "int24"
1361
+ },
1362
+ {
1363
+ "name": "tickUpper",
1364
+ "type": "int24",
1365
+ "internalType": "int24"
1366
+ }
1367
+ ]
1368
+ },
1369
+ {
1370
+ "type": "error",
1371
+ "name": "NoCoinForHook",
1372
+ "inputs": [
1373
+ {
1374
+ "name": "key",
1375
+ "type": "tuple",
1376
+ "internalType": "struct PoolKey",
1377
+ "components": [
1378
+ {
1379
+ "name": "currency0",
1380
+ "type": "address",
1381
+ "internalType": "Currency"
1382
+ },
1383
+ {
1384
+ "name": "currency1",
1385
+ "type": "address",
1386
+ "internalType": "Currency"
1387
+ },
1388
+ {
1389
+ "name": "fee",
1390
+ "type": "uint24",
1391
+ "internalType": "uint24"
1392
+ },
1393
+ {
1394
+ "name": "tickSpacing",
1395
+ "type": "int24",
1396
+ "internalType": "int24"
1397
+ },
1398
+ {
1399
+ "name": "hooks",
1400
+ "type": "address",
1401
+ "internalType": "contract IHooks"
1402
+ }
1403
+ ]
1404
+ }
1405
+ ]
1406
+ },
1407
+ {
1408
+ "type": "error",
1409
+ "name": "NotACoin",
1410
+ "inputs": [
1411
+ {
1412
+ "name": "coin",
1413
+ "type": "address",
1414
+ "internalType": "address"
1415
+ }
1416
+ ]
1417
+ },
984
1418
  {
985
1419
  "type": "error",
986
1420
  "name": "NotPoolManager",
987
1421
  "inputs": []
1422
+ },
1423
+ {
1424
+ "type": "error",
1425
+ "name": "PathMustHaveAtLeastOneStep",
1426
+ "inputs": []
1427
+ },
1428
+ {
1429
+ "type": "error",
1430
+ "name": "SafeERC20FailedOperation",
1431
+ "inputs": [
1432
+ {
1433
+ "name": "token",
1434
+ "type": "address",
1435
+ "internalType": "address"
1436
+ }
1437
+ ]
988
1438
  }
989
1439
  ]
@@ -1,7 +1,11 @@
1
1
  {
2
- "BUY_SUPPLY_WITH_SWAP_ROUTER_HOOK": "0x264b731e40691Da5B40aA63AC5c3B7F7DAafA721",
3
- "COIN_IMPL": "0xbECAe78D441FBa11017bB7A8798D018b0977F76d",
4
- "COIN_VERSION": "0.7.0",
2
+ "BUY_SUPPLY_WITH_SWAP_ROUTER_HOOK": "0x4269b3ba4522192e0C54197BD0D7131A3abA6256",
3
+ "COIN_V3_IMPL": "0x6C7E731a2b5884fFbFd885E0D631d6f49b9F3E53",
4
+ "COIN_V4_IMPL": "0x76eEC7c12f960218441e163FAA1921634CA7Ad28",
5
+ "COIN_VERSION": "0.9.0",
6
+ "DEV_FACTORY": "0x3d7A3f3351855e135CF89AB412A7C2AA449f9296",
7
+ "TRUSTED_MESSAGE_SENDERS": "0x0000000000000000000000000000000000000000",
5
8
  "ZORA_FACTORY": "0x777777751622c0d3258f214F9DF38E35BF45baF3",
6
- "ZORA_FACTORY_IMPL": "0x8a6e82268c73174Ff3458B4D91c3669Fb2338b40"
9
+ "ZORA_FACTORY_IMPL": "0xBdDbb0B745E2B66022Dfe41bF0F17E6d1Af2A771",
10
+ "ZORA_V4_COIN_HOOK": "0xf500d19f77827B55eF187fc2599a895844a59040"
7
11
  }
@@ -1,7 +1,11 @@
1
1
  {
2
- "BUY_SUPPLY_WITH_SWAP_ROUTER_HOOK": "0x6B78be0808262b1d5E9B1eeDfE448aDCE2C637a8",
3
- "COIN_IMPL": "0x903Fb6924C8f96226bFDFcf71333578117C33618",
4
- "COIN_VERSION": "0.8.0",
2
+ "BUY_SUPPLY_WITH_SWAP_ROUTER_HOOK": "0xBD42CD74A5fBA7570A2943CAC0B6b60C8f3153B2",
3
+ "COIN_V3_IMPL": "0x5CD468BD3821B9534690E235bc32d2224A12a809",
4
+ "COIN_V4_IMPL": "0xc7410721B2781d6444B56B3DE09236bE661E689E",
5
+ "COIN_VERSION": "0.9.0",
6
+ "DEV_FACTORY": "0x0000000000000000000000000000000000000000",
7
+ "TRUSTED_MESSAGE_SENDERS": "0x0000000000000000000000000000000000000000",
5
8
  "ZORA_FACTORY": "0x777777751622c0d3258f214F9DF38E35BF45baF3",
6
- "ZORA_FACTORY_IMPL": "0x2C256f0464A9e1a4292c87eb455c5601Bcae4436"
9
+ "ZORA_FACTORY_IMPL": "0xA93fd17e0b268359186523e24865dAa15661C714",
10
+ "ZORA_V4_COIN_HOOK": "0x26Ef93330d685241AafCC257b0D7BE9DAD065040"
7
11
  }