@etherisc/gif-next 0.0.2-c336201-668 → 0.0.2-c37b622-555

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 (826) hide show
  1. package/README.md +384 -20
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1664 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +790 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/module/access → authorization}/IAccess.sol/IAccess.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1372 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +455 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +397 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +646 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1234 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +805 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +939 -0
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1809 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +930 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +838 -0
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1284 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1474 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2043 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +4 -0
  53. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +408 -0
  54. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
  55. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1198 -0
  56. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
  57. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +805 -0
  58. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1466 -0
  60. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +805 -0
  62. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2185 -0
  64. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +805 -0
  66. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
  67. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +376 -0
  68. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
  69. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
  70. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  71. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1429 -0
  72. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  73. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  74. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  75. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1161 -0
  76. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  77. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1637 -0
  78. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  79. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  80. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  81. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2575 -0
  82. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  83. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  84. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  85. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +332 -0
  86. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  88. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  89. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  90. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  91. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +584 -1285
  92. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  93. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +1092 -0
  94. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  95. package/artifacts/contracts/instance/Instance.sol/Instance.json +675 -1534
  96. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  97. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2284 -0
  98. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  99. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +837 -0
  100. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  101. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2621 -0
  102. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  103. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1338 -0
  104. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +772 -0
  106. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  107. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3039 -0
  108. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  109. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  110. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  111. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  112. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  113. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  114. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  115. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  116. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  117. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  118. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  119. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  120. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  121. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  122. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  123. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  124. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  125. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  126. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  127. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/IComponents.sol/IComponents.json} +2 -2
  128. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  129. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  130. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  131. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  132. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  133. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  134. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  135. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  136. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  137. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +947 -0
  138. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  139. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +805 -0
  140. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  141. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  142. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  143. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +762 -0
  144. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  145. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  146. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  147. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +863 -0
  148. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  149. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  150. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  151. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +810 -0
  152. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  153. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1232 -0
  154. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  155. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  156. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  157. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1438 -0
  158. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  159. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +866 -0
  160. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  161. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +1033 -0
  162. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  163. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +895 -0
  164. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  165. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1449 -0
  166. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  167. package/artifacts/contracts/pool/Pool.sol/Pool.json +1015 -0
  168. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  169. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  170. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  171. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1833 -0
  172. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  173. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +866 -0
  174. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  175. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +1036 -0
  176. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  177. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +790 -0
  178. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  179. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1149 -0
  180. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  181. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  182. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  183. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1536 -0
  184. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  185. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +886 -0
  186. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  187. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +804 -0
  188. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  189. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1104 -0
  190. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  191. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +1036 -0
  192. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  193. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +652 -0
  194. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  195. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1006 -0
  196. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  197. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +665 -0
  198. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  199. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1404 -0
  200. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  201. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  202. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  203. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +854 -0
  204. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  205. package/artifacts/contracts/product/PricingService.sol/PricingService.json +932 -0
  206. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  207. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +814 -0
  208. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  209. package/artifacts/contracts/product/Product.sol/Product.json +1107 -0
  210. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  211. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  212. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  213. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  214. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  215. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +242 -12
  216. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  217. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +1035 -119
  218. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  219. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1072 -0
  220. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  221. package/artifacts/contracts/{instance/IInstanceLinked.sol/IInstanceLinked.json → registry/IRelease.sol/IRelease.json} +6 -6
  222. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  223. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +39 -0
  224. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  225. package/artifacts/contracts/registry/Registry.sol/Registry.json +1473 -231
  226. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  227. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2160 -0
  228. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  229. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
  230. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  231. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1298 -0
  232. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  233. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +773 -0
  234. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  235. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  236. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  237. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  238. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  239. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  240. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  241. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
  242. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  243. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +721 -0
  244. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  245. package/artifacts/contracts/shared/Component.sol/Component.json +695 -0
  246. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  247. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1551 -0
  248. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  249. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +862 -0
  250. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  251. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  252. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  253. package/artifacts/contracts/shared/{IOwnable.sol/IOwnable.json → ContractLib.sol/IInstanceAdminHelper.json} +5 -5
  254. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  255. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  256. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  257. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  258. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  259. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +620 -0
  260. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  261. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1175 -0
  262. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  263. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +697 -0
  264. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  265. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  266. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  267. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/INftOwnable.sol/INftOwnable.json} +62 -70
  268. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  269. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  270. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  271. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +248 -21
  272. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  273. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  274. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  275. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → shared/IService.sol/IService.json} +224 -160
  276. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  277. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  278. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  279. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +785 -0
  280. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  281. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  282. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  283. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  284. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  285. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +228 -0
  286. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  287. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  288. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  289. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +294 -18
  290. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  291. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  292. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  293. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → shared/Service.sol/Service.json} +239 -234
  294. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  295. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +723 -0
  296. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  297. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  298. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  299. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  300. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  301. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +2747 -0
  302. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  303. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1147 -0
  304. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  305. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  306. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  307. package/artifacts/contracts/staking/Staking.sol/Staking.json +3175 -0
  308. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  309. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  310. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  311. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +847 -0
  312. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  313. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +704 -0
  314. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  315. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1344 -0
  316. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  317. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +766 -0
  318. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  319. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +3097 -0
  320. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  321. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  322. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  323. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +679 -0
  324. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  325. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  326. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  328. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +251 -0
  330. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  332. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  334. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  336. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  338. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  340. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  341. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  342. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  344. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  345. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  346. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +238 -0
  348. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  350. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  351. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +161 -0
  352. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  353. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  354. package/artifacts/contracts/type/RequestIdSet.sol/RequestIdSet.dbg.json +4 -0
  355. package/artifacts/contracts/type/RequestIdSet.sol/RequestIdSet.json +33 -0
  356. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  357. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  358. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  359. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +254 -0
  360. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  361. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +308 -0
  362. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  363. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  364. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  365. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  366. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  367. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  368. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  369. package/artifacts/contracts/type/String.sol/StrLib.json +199 -0
  370. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  371. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +344 -0
  372. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  373. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  374. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  375. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  376. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  377. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  378. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  379. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +65 -0
  380. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  381. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
  382. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  383. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  384. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  385. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +88 -0
  386. package/contracts/accounting/AccountingService.sol +274 -0
  387. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  388. package/contracts/accounting/IAccountingService.sol +47 -0
  389. package/contracts/authorization/AccessAdmin.sol +780 -0
  390. package/contracts/authorization/AccessAdminLib.sol +396 -0
  391. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  392. package/contracts/authorization/Authorization.sol +169 -0
  393. package/contracts/authorization/IAccess.sol +67 -0
  394. package/contracts/authorization/IAccessAdmin.sol +144 -0
  395. package/contracts/authorization/IAuthorization.sol +26 -0
  396. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  397. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  398. package/contracts/distribution/BasicDistribution.sol +140 -0
  399. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  400. package/contracts/distribution/Distribution.sol +245 -0
  401. package/contracts/distribution/DistributionService.sol +448 -0
  402. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  403. package/contracts/distribution/IDistributionComponent.sol +45 -0
  404. package/contracts/distribution/IDistributionService.sol +115 -0
  405. package/contracts/examples/fire/DamageLevel.sol +59 -0
  406. package/contracts/examples/fire/FirePool.sol +86 -0
  407. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  408. package/contracts/examples/fire/FireProduct.sol +433 -0
  409. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  410. package/contracts/examples/fire/FireUSD.sol +26 -0
  411. package/contracts/examples/flight/FlightLib.sol +279 -0
  412. package/contracts/examples/flight/FlightOracle.sol +167 -0
  413. package/contracts/examples/flight/FlightOracleAuthorization.sol +34 -0
  414. package/contracts/examples/flight/FlightPool.sol +89 -0
  415. package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
  416. package/contracts/examples/flight/FlightProduct.sol +470 -0
  417. package/contracts/examples/flight/FlightProductAuthorization.sol +44 -0
  418. package/contracts/examples/flight/FlightUSD.sol +26 -0
  419. package/contracts/examples/flight/originalV1.sol +396 -0
  420. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  421. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  422. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  423. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  424. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  425. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  426. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  427. package/contracts/instance/BaseStore.sol +93 -0
  428. package/contracts/instance/BundleSet.sol +130 -0
  429. package/contracts/instance/IBaseStore.sol +37 -0
  430. package/contracts/instance/IInstance.sol +149 -45
  431. package/contracts/instance/IInstanceService.sol +119 -0
  432. package/contracts/instance/Instance.sol +337 -54
  433. package/contracts/instance/InstanceAdmin.sol +379 -0
  434. package/contracts/instance/InstanceAuthorizationV3.sol +275 -0
  435. package/contracts/instance/InstanceReader.sol +634 -0
  436. package/contracts/instance/InstanceService.sol +514 -0
  437. package/contracts/instance/InstanceServiceManager.sol +39 -0
  438. package/contracts/instance/InstanceStore.sol +323 -0
  439. package/contracts/instance/ProductStore.sol +290 -0
  440. package/contracts/instance/RiskSet.sol +126 -0
  441. package/contracts/instance/TargetNames.sol +10 -0
  442. package/contracts/instance/base/BalanceStore.sol +121 -0
  443. package/contracts/instance/base/Cloneable.sol +28 -0
  444. package/contracts/instance/base/ObjectCounter.sol +20 -0
  445. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  446. package/contracts/instance/base/ObjectSet.sol +77 -0
  447. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  448. package/contracts/instance/module/IBundle.sol +21 -0
  449. package/contracts/instance/module/IComponents.sol +60 -0
  450. package/contracts/instance/module/IDistribution.sol +54 -0
  451. package/contracts/instance/module/IPolicy.sol +105 -0
  452. package/contracts/instance/module/IRisk.sol +16 -0
  453. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  454. package/contracts/oracle/BasicOracle.sol +44 -0
  455. package/contracts/oracle/BasicOracleAuthorization.sol +52 -0
  456. package/contracts/oracle/IOracle.sol +41 -0
  457. package/contracts/oracle/IOracleComponent.sol +33 -0
  458. package/contracts/oracle/IOracleService.sol +66 -0
  459. package/contracts/oracle/Oracle.sol +152 -0
  460. package/contracts/oracle/OracleService.sol +310 -0
  461. package/contracts/oracle/OracleServiceManager.sol +39 -0
  462. package/contracts/pool/BasicPool.sol +161 -0
  463. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  464. package/contracts/pool/BundleService.sol +386 -0
  465. package/contracts/pool/BundleServiceManager.sol +39 -0
  466. package/contracts/pool/IBundleService.sol +116 -0
  467. package/contracts/pool/IPoolComponent.sol +62 -0
  468. package/contracts/pool/IPoolService.sol +170 -0
  469. package/contracts/pool/Pool.sol +331 -0
  470. package/contracts/pool/PoolLib.sol +341 -0
  471. package/contracts/pool/PoolService.sol +614 -0
  472. package/contracts/pool/PoolServiceManager.sol +39 -0
  473. package/contracts/product/ApplicationService.sol +327 -0
  474. package/contracts/product/ApplicationServiceManager.sol +38 -0
  475. package/contracts/product/BasicProduct.sol +48 -0
  476. package/contracts/product/BasicProductAuthorization.sol +64 -0
  477. package/contracts/product/ClaimService.sol +626 -0
  478. package/contracts/product/ClaimServiceManager.sol +38 -0
  479. package/contracts/product/IApplicationService.sol +88 -0
  480. package/contracts/product/IClaimService.sol +136 -0
  481. package/contracts/product/IPolicyService.sol +102 -0
  482. package/contracts/product/IPricingService.sol +40 -0
  483. package/contracts/product/IProductComponent.sol +62 -0
  484. package/contracts/product/IRiskService.sol +48 -0
  485. package/contracts/product/PolicyService.sol +645 -0
  486. package/contracts/product/PolicyServiceLib.sol +139 -0
  487. package/contracts/product/PolicyServiceManager.sol +39 -0
  488. package/contracts/product/PricingService.sol +306 -0
  489. package/contracts/product/PricingServiceManager.sol +39 -0
  490. package/contracts/product/Product.sol +491 -0
  491. package/contracts/product/RiskService.sol +189 -0
  492. package/contracts/product/RiskServiceManager.sol +39 -0
  493. package/contracts/registry/ChainNft.sol +130 -40
  494. package/contracts/registry/IRegistry.sol +144 -29
  495. package/contracts/registry/IRegistryService.sol +62 -0
  496. package/contracts/registry/IRelease.sol +29 -0
  497. package/contracts/registry/ITransferInterceptor.sol +6 -0
  498. package/contracts/registry/Registry.sol +637 -282
  499. package/contracts/registry/RegistryAdmin.sol +191 -0
  500. package/contracts/registry/RegistryAuthorization.sol +336 -0
  501. package/contracts/registry/RegistryService.sol +241 -0
  502. package/contracts/registry/RegistryServiceManager.sol +53 -0
  503. package/contracts/registry/ReleaseAdmin.sol +195 -0
  504. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  505. package/contracts/registry/ReleaseRegistry.sol +525 -0
  506. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  507. package/contracts/registry/TokenRegistry.sol +317 -0
  508. package/contracts/shared/Component.sol +210 -0
  509. package/contracts/shared/ComponentService.sol +691 -0
  510. package/contracts/shared/ComponentServiceManager.sol +38 -0
  511. package/contracts/shared/ContractLib.sol +312 -0
  512. package/contracts/shared/IComponent.sol +58 -0
  513. package/contracts/shared/IComponentService.sol +111 -0
  514. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  515. package/contracts/{instance/base → shared}/ILifecycle.sol +6 -5
  516. package/contracts/shared/INftOwnable.sol +27 -0
  517. package/contracts/shared/IPolicyHolder.sol +35 -0
  518. package/contracts/shared/IRegisterable.sol +31 -19
  519. package/contracts/shared/IRegistryLinked.sol +11 -0
  520. package/contracts/shared/IService.sol +23 -0
  521. package/contracts/shared/InitializableERC165.sol +35 -0
  522. package/contracts/shared/InstanceLinkedComponent.sol +232 -0
  523. package/contracts/shared/Lifecycle.sol +88 -0
  524. package/contracts/shared/NftIdSet.sol +65 -0
  525. package/contracts/shared/NftOwnable.sol +129 -0
  526. package/contracts/shared/PolicyHolder.sol +63 -0
  527. package/contracts/shared/Registerable.sol +80 -60
  528. package/contracts/shared/RegistryLinked.sol +38 -0
  529. package/contracts/shared/Service.sol +67 -0
  530. package/contracts/shared/TokenHandler.sol +342 -0
  531. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  532. package/contracts/staking/IStaking.sol +367 -0
  533. package/contracts/staking/IStakingService.sol +127 -0
  534. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  535. package/contracts/staking/Staking.sol +797 -0
  536. package/contracts/staking/StakingLib.sol +195 -0
  537. package/contracts/staking/StakingManager.sol +53 -0
  538. package/contracts/staking/StakingReader.sol +171 -0
  539. package/contracts/staking/StakingService.sol +321 -0
  540. package/contracts/staking/StakingServiceManager.sol +46 -0
  541. package/contracts/staking/StakingStore.sol +1368 -0
  542. package/contracts/staking/TargetHandler.sol +132 -0
  543. package/contracts/staking/TargetManagerLib.sol +234 -0
  544. package/contracts/{types → type}/AddressSet.sol +1 -1
  545. package/contracts/type/Amount.sol +154 -0
  546. package/contracts/{types → type}/Blocknumber.sol +36 -12
  547. package/contracts/type/ChainId.sol +101 -0
  548. package/contracts/type/ClaimId.sol +80 -0
  549. package/contracts/type/DistributorType.sol +55 -0
  550. package/contracts/type/Fee.sol +66 -0
  551. package/contracts/{types → type}/Key32.sol +10 -5
  552. package/contracts/type/Key32Set.sol +62 -0
  553. package/contracts/{types → type}/NftId.sol +28 -15
  554. package/contracts/type/NftIdSet.sol +62 -0
  555. package/contracts/type/ObjectType.sol +278 -0
  556. package/contracts/type/PayoutId.sol +82 -0
  557. package/contracts/type/Referral.sol +96 -0
  558. package/contracts/type/RequestId.sol +75 -0
  559. package/contracts/type/RequestIdSet.sol +62 -0
  560. package/contracts/type/RiskId.sol +75 -0
  561. package/contracts/type/RoleId.sol +180 -0
  562. package/contracts/type/Seconds.sol +124 -0
  563. package/contracts/type/Selector.sol +107 -0
  564. package/contracts/{types → type}/StateId.sol +53 -5
  565. package/contracts/type/String.sol +95 -0
  566. package/contracts/{types → type}/Timestamp.sol +48 -19
  567. package/contracts/{types → type}/UFixed.sol +73 -19
  568. package/contracts/type/Version.sol +159 -0
  569. package/contracts/upgradeability/IVersionable.sol +56 -0
  570. package/contracts/upgradeability/ProxyManager.sol +246 -0
  571. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  572. package/contracts/upgradeability/Versionable.sol +62 -0
  573. package/package.json +13 -8
  574. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  575. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  576. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  577. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  578. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -356
  579. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  580. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -279
  581. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  582. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -387
  583. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  584. package/artifacts/contracts/components/Product.sol/Product.json +0 -305
  585. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  586. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  587. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  588. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  589. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  590. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  591. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  592. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  593. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  594. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  595. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  596. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  597. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  598. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  599. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  600. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  601. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  602. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  603. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  604. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  605. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  606. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  607. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  608. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  609. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  610. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  611. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  612. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  613. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  614. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  615. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  616. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  617. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  618. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  619. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  620. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  621. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  622. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  623. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -63
  624. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  625. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +0 -511
  626. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  627. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  628. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -300
  629. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  630. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +0 -326
  631. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  632. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -692
  633. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  634. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  635. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  636. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  637. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -300
  638. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  639. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  640. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  641. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  642. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  643. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  644. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -296
  645. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  646. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  647. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -296
  648. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
  649. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
  650. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
  651. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
  652. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
  653. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
  654. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  655. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  656. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  657. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  658. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  659. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  660. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  661. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  662. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  663. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  664. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  665. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  666. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  667. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  668. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  669. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  670. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  671. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  672. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  673. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -10
  674. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  675. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -10
  676. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  677. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  678. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  679. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -533
  680. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  681. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  682. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  683. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -533
  684. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  685. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -523
  686. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  687. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  688. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -376
  689. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  690. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  691. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -471
  692. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  693. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -673
  694. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  695. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  696. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  697. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  698. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  699. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  700. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  701. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -164
  702. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  703. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -164
  704. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  705. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  706. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  707. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  708. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  709. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  710. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  711. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -137
  712. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  713. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  714. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  715. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -379
  716. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  717. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  718. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  719. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  720. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  721. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -206
  722. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  723. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  724. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  725. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  726. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  727. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  728. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  729. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  730. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  731. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -218
  732. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  733. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  734. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  735. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  736. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  737. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  738. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  739. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  740. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  741. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -30
  742. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  743. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  744. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  745. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  746. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  747. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  748. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  749. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -139
  750. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  751. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  752. package/contracts/components/BaseComponent.sol +0 -88
  753. package/contracts/components/IBaseComponent.sol +0 -19
  754. package/contracts/components/IPoolComponent.sol +0 -57
  755. package/contracts/components/IProductComponent.sol +0 -19
  756. package/contracts/components/Pool.sol +0 -174
  757. package/contracts/components/Product.sol +0 -117
  758. package/contracts/experiment/errors/Require.sol +0 -38
  759. package/contracts/experiment/errors/Revert.sol +0 -44
  760. package/contracts/experiment/inheritance/A.sol +0 -53
  761. package/contracts/experiment/inheritance/B.sol +0 -28
  762. package/contracts/experiment/inheritance/C.sol +0 -34
  763. package/contracts/experiment/inheritance/IA.sol +0 -13
  764. package/contracts/experiment/inheritance/IB.sol +0 -10
  765. package/contracts/experiment/inheritance/IC.sol +0 -12
  766. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  767. package/contracts/experiment/statemachine/ISM.sol +0 -25
  768. package/contracts/experiment/statemachine/README.md +0 -112
  769. package/contracts/experiment/statemachine/SM.sol +0 -57
  770. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  771. package/contracts/experiment/types/TypeA.sol +0 -47
  772. package/contracts/experiment/types/TypeB.sol +0 -29
  773. package/contracts/instance/IInstanceLinked.sol +0 -8
  774. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  775. package/contracts/instance/base/IInstanceBase.sol +0 -14
  776. package/contracts/instance/base/IKeyValueStore.sol +0 -49
  777. package/contracts/instance/base/IService.sol +0 -15
  778. package/contracts/instance/base/InstanceBase.sol +0 -80
  779. package/contracts/instance/base/KeyValueStore.sol +0 -156
  780. package/contracts/instance/base/Lifecycle.sol +0 -95
  781. package/contracts/instance/base/ModuleBase.sol +0 -52
  782. package/contracts/instance/base/ServiceBase.sol +0 -37
  783. package/contracts/instance/module/access/Access.sol +0 -149
  784. package/contracts/instance/module/access/IAccess.sol +0 -53
  785. package/contracts/instance/module/bundle/BundleModule.sol +0 -136
  786. package/contracts/instance/module/bundle/IBundle.sol +0 -58
  787. package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
  788. package/contracts/instance/module/compensation/ICompensation.sol +0 -10
  789. package/contracts/instance/module/component/ComponentModule.sol +0 -95
  790. package/contracts/instance/module/component/IComponent.sol +0 -53
  791. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  792. package/contracts/instance/module/policy/PolicyModule.sol +0 -76
  793. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  794. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  795. package/contracts/instance/module/risk/IRisk.sol +0 -10
  796. package/contracts/instance/module/risk/RiskModule.sol +0 -8
  797. package/contracts/instance/module/treasury/ITreasury.sol +0 -103
  798. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  799. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
  800. package/contracts/instance/service/ComponentOwnerService.sol +0 -170
  801. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  802. package/contracts/instance/service/IPoolService.sol +0 -30
  803. package/contracts/instance/service/IProductService.sol +0 -58
  804. package/contracts/instance/service/PoolService.sol +0 -123
  805. package/contracts/instance/service/ProductService.sol +0 -354
  806. package/contracts/registry/IChainNft.sol +0 -21
  807. package/contracts/registry/IRegistryLinked.sol +0 -8
  808. package/contracts/shared/ERC165.sol +0 -21
  809. package/contracts/shared/IOwnable.sol +0 -6
  810. package/contracts/shared/IVersionable.sol +0 -52
  811. package/contracts/shared/Versionable.sol +0 -89
  812. package/contracts/test/TestFee.sol +0 -25
  813. package/contracts/test/TestPool.sol +0 -22
  814. package/contracts/test/TestProduct.sol +0 -44
  815. package/contracts/test/TestRegisterable.sol +0 -19
  816. package/contracts/test/TestRoleId.sol +0 -14
  817. package/contracts/test/TestService.sol +0 -32
  818. package/contracts/test/TestToken.sol +0 -26
  819. package/contracts/test/TestVersion.sol +0 -44
  820. package/contracts/test/TestVersionable.sol +0 -17
  821. package/contracts/types/ChainId.sol +0 -38
  822. package/contracts/types/Fee.sol +0 -51
  823. package/contracts/types/NftIdSet.sol +0 -60
  824. package/contracts/types/ObjectType.sol +0 -115
  825. package/contracts/types/RoleId.sol +0 -38
  826. package/contracts/types/Version.sol +0 -95
@@ -0,0 +1,63 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
5
+
6
+ import {IPolicyHolder} from "./IPolicyHolder.sol";
7
+
8
+ import {Amount} from "../type/Amount.sol";
9
+ import {ClaimId} from "../type/ClaimId.sol";
10
+ import {InitializableERC165} from "./InitializableERC165.sol";
11
+ import {NftId} from "../type/NftId.sol";
12
+ import {PayoutId} from "../type/PayoutId.sol";
13
+ import {RegistryLinked} from "./RegistryLinked.sol";
14
+ import {Timestamp} from "../type/Timestamp.sol";
15
+
16
+ /// @dev template implementation for IPolicyHolder
17
+ contract PolicyHolder is
18
+ InitializableERC165,
19
+ RegistryLinked,
20
+ IPolicyHolder
21
+ {
22
+ // TODO add modifier to protect callback functions from unauthorized access
23
+ // callbacks must only be allowed from the policy and claim services
24
+ // will need a release parameter to fetch the right service addresses for the modifiers
25
+
26
+ function _initializePolicyHolder(
27
+ address registryAddress
28
+ )
29
+ internal
30
+ virtual
31
+ onlyInitializing()
32
+ {
33
+ __RegistryLinked_init(registryAddress);
34
+ _initializeERC165();
35
+ _registerInterface(type(IPolicyHolder).interfaceId);
36
+ }
37
+
38
+ /// @dev empty default implementation
39
+ function policyActivated(NftId policyNftId, Timestamp activatedAt) external virtual {}
40
+
41
+ /// @dev empty default implementation
42
+ function policyExpired(NftId policyNftId, Timestamp expiredAt) external virtual {}
43
+
44
+ /// @dev empty default implementation
45
+ function claimConfirmed(NftId policyNftId, ClaimId claimId, Amount amount) external virtual {}
46
+
47
+ /// @dev empty default implementation
48
+ function payoutExecuted(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary) external virtual {}
49
+
50
+ //--- IERC165 functions ---------------//
51
+ function onERC721Received(
52
+ address, // operator
53
+ address, // from
54
+ uint256, // tokenId
55
+ bytes calldata // data
56
+ )
57
+ external
58
+ virtual
59
+ returns (bytes4)
60
+ {
61
+ return IERC721Receiver.onERC721Received.selector;
62
+ }
63
+ }
@@ -1,86 +1,106 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {NftId, zeroNftId} from "../types/NftId.sol";
5
- import {ObjectType} from "../types/ObjectType.sol";
4
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
+
7
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
8
+ import {ContractLib} from "../shared/ContractLib.sol";
9
+ import {NftId, NftIdLib} from "../type/NftId.sol";
10
+ import {NftOwnable} from "../shared/NftOwnable.sol";
11
+ import {ObjectType} from "../type/ObjectType.sol";
12
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
6
13
 
7
14
  import {IRegistry} from "../registry/IRegistry.sol";
8
15
  import {IRegisterable} from "./IRegisterable.sol";
9
-
10
- import {ERC165} from "./ERC165.sol";
16
+ import {IRelease} from "../registry/IRelease.sol";
11
17
 
12
18
  abstract contract Registerable is
13
- ERC165,
19
+ AccessManagedUpgradeable,
20
+ NftOwnable,
14
21
  IRegisterable
15
22
  {
16
- IRegistry internal immutable _registry;
17
- NftId internal immutable _parentNftId;
18
- address internal immutable _initialOwner;
19
-
20
- modifier onlyOwner() virtual {
21
- require(
22
- msg.sender == getOwner(),
23
- "ERROR:RGB-001:NOT_OWNER"
24
- );
23
+ // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.Registerable.sol")) - 1)) & ~bytes32(uint256(0xff));
24
+ bytes32 public constant REGISTERABLE_LOCATION_V1 = 0x6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa300;
25
+
26
+ struct RegisterableStorage {
27
+ NftId _parentNftId;
28
+ ObjectType _objectType;
29
+ bool _isInterceptor;
30
+ bytes _data;
31
+ }
32
+
33
+ modifier onlyActive() {
34
+ if (!isActive()) {
35
+ revert ErrorRegisterableNotActive();
36
+ }
25
37
  _;
26
38
  }
27
39
 
28
- constructor(
29
- address registryAddress,
30
- NftId parentNftId
40
+ function __Registerable_init(
41
+ address authority,
42
+ address registry,
43
+ NftId parentNftId,
44
+ ObjectType objectType,
45
+ bool isInterceptor,
46
+ address initialOwner,
47
+ bytes memory data // writeonly data that will saved in the object info record of the registry
31
48
  )
32
- ERC165()
49
+ internal
50
+ virtual
51
+ onlyInitializing()
33
52
  {
34
- require(
35
- address(registryAddress) != address(0),
36
- "ERROR:RGB-010:REGISTRY_ZERO"
37
- );
38
-
39
- _registry = IRegistry(registryAddress);
40
- require(
41
- _registry.supportsInterface(type(IRegistry).interfaceId),
42
- "ERROR:RGB-011:NOT_REGISTRY"
43
- );
44
-
45
- _parentNftId = parentNftId;
46
- require(
47
- _registry.isRegistered(_parentNftId),
48
- "ERROR:RGB-012:PARENT_NOT_REGISTERED"
49
- );
50
-
51
- _initialOwner = msg.sender;
52
-
53
- // register support for IRegisterable
54
- _registerInterface(type(IRegisterable).interfaceId);
55
- }
53
+ if (!ContractLib.isAuthority(authority)) {
54
+ revert ErrorAuthorityInvalid(authority);
55
+ }
56
56
 
57
- // from IRegistryLinked
58
- function register() public onlyOwner virtual override returns (NftId nftId) {
59
- return _registry.register(address(this));
60
- }
57
+ __AccessManaged_init(authority);
58
+ __NftOwnable_init(registry, initialOwner);
61
59
 
62
- function getRegistry() public view virtual override returns (IRegistry registry) {
63
- return _registry;
60
+ RegisterableStorage storage $ = _getRegisterableStorage();
61
+ $._parentNftId = parentNftId;
62
+ $._objectType = objectType;
63
+ $._isInterceptor = isInterceptor;
64
+ $._data = data;
65
+
66
+ _registerInterface(type(IAccessManaged).interfaceId);
64
67
  }
65
68
 
66
- function getOwner() public view virtual override returns (address owner) {
67
- NftId nftId = _registry.getNftId(address(this));
68
- if(nftId == zeroNftId()) {
69
- return _initialOwner;
70
- }
71
69
 
72
- return _registry.getOwner(nftId);
70
+ /// @inheritdoc IRegisterable
71
+ function isActive() public virtual view returns (bool active) {
72
+ return !AccessManagerCloneable(authority()).isTargetClosed(address(this));
73
73
  }
74
74
 
75
- function getNftId() public view override returns (NftId nftId) {
76
- return _registry.getNftId(address(this));
75
+
76
+ /// @inheritdoc IRelease
77
+ function getRelease() public virtual view returns (VersionPart release) {
78
+ return AccessManagerCloneable(authority()).getRelease();
77
79
  }
78
80
 
79
- function getParentNftId() public view override returns (NftId nftId) {
80
- return _parentNftId;
81
+
82
+ /// @inheritdoc IRegisterable
83
+ function getInitialInfo()
84
+ public
85
+ view
86
+ virtual
87
+ returns (IRegistry.ObjectInfo memory info)
88
+ {
89
+ RegisterableStorage storage $ = _getRegisterableStorage();
90
+ return IRegistry.ObjectInfo(
91
+ NftIdLib.zero(),
92
+ $._parentNftId,
93
+ $._objectType,
94
+ $._isInterceptor,
95
+ address(this),
96
+ getOwner(),
97
+ $._data);
81
98
  }
82
99
 
83
- function getData() public view virtual override returns (bytes memory data) {
84
- return "";
100
+
101
+ function _getRegisterableStorage() private pure returns (RegisterableStorage storage $) {
102
+ assembly {
103
+ $.slot := REGISTERABLE_LOCATION_V1
104
+ }
85
105
  }
86
- }
106
+ }
@@ -0,0 +1,38 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
+
6
+ import {ContractLib} from "../shared/ContractLib.sol";
7
+ import {IRegistry} from "../registry/IRegistry.sol";
8
+ import {IRegistryLinked} from "./IRegistryLinked.sol";
9
+
10
+ contract RegistryLinked is
11
+ Initializable,
12
+ IRegistryLinked
13
+ {
14
+
15
+ // priorize simplicity and size over using standard upgradeability structs
16
+ IRegistry private _registry;
17
+
18
+ /// @dev initialization for upgradable contracts
19
+ // used in _initializeRegisterable
20
+ function __RegistryLinked_init(
21
+ address registry
22
+ )
23
+ internal
24
+ virtual
25
+ onlyInitializing()
26
+ {
27
+ if (!ContractLib.isRegistry(registry)) {
28
+ revert ErrorNotRegistry(registry);
29
+ }
30
+
31
+ _registry = IRegistry(registry);
32
+ }
33
+
34
+
35
+ function getRegistry() public view returns (IRegistry) {
36
+ return _registry;
37
+ }
38
+ }
@@ -0,0 +1,67 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol";
5
+
6
+ import {IRegistry} from "../registry/IRegistry.sol";
7
+ import {IService} from "./IService.sol";
8
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
9
+ import {ObjectType, SERVICE} from "../type/ObjectType.sol";
10
+ import {Registerable} from "./Registerable.sol";
11
+ import {RoleId, RoleIdLib} from "../type/RoleId.sol";
12
+ import {Version, VersionLib} from "../type/Version.sol";
13
+ import {Versionable} from "../upgradeability/Versionable.sol";
14
+
15
+
16
+ /// @dev service base contract
17
+ abstract contract Service is
18
+ Registerable,
19
+ Versionable,
20
+ ReentrancyGuardUpgradeable,
21
+ IService
22
+ {
23
+
24
+ function __Service_init(
25
+ address authority, // real authority for registry service adress(0) for other services
26
+ address registry,
27
+ address initialOwner
28
+ )
29
+ internal
30
+ virtual
31
+ onlyInitializing()
32
+ {
33
+ __ReentrancyGuard_init();
34
+
35
+ __Registerable_init(
36
+ authority,
37
+ registry,
38
+ IRegistry(registry).getNftId(),
39
+ SERVICE(),
40
+ false, // is interceptor
41
+ initialOwner,
42
+ ""); // data
43
+
44
+ _registerInterface(type(IService).interfaceId);
45
+ }
46
+
47
+ function getDomain() external virtual pure returns(ObjectType serviceDomain) {
48
+ return _getDomain();
49
+ }
50
+
51
+ function getVersion() public pure virtual override (IVersionable, Versionable) returns(Version) {
52
+ return VersionLib.toVersion(3, 0, 0);
53
+ }
54
+
55
+
56
+ function getRoleId() external virtual view returns(RoleId serviceRoleId) {
57
+ return RoleIdLib.toServiceRoleId(_getDomain(), getRelease());
58
+ }
59
+
60
+ //--- internal functions --------------------------------------------------------//
61
+ function _getDomain() internal virtual pure returns (ObjectType);
62
+
63
+
64
+ function _getServiceAddress(ObjectType domain) internal view returns (address) {
65
+ return getRegistry().getServiceAddress(domain, getRelease());
66
+ }
67
+ }
@@ -0,0 +1,342 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
5
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
+ import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
7
+
8
+ import {Amount, AmountLib} from "../type/Amount.sol";
9
+ import {ContractLib} from "../shared/ContractLib.sol";
10
+ import {IRegistry} from "../registry/IRegistry.sol";
11
+ import {NftId} from "../type/NftId.sol";
12
+ import {SERVICE} from "../type/ObjectType.sol";
13
+
14
+
15
+ /// @dev Token specific transfer helper base contract.
16
+ /// A default token contract is provided via contract constructor.
17
+ /// Relies internally on OpenZeppelin SafeERC20.safeTransferFrom.
18
+ /// This base contract simplifies writing tests.
19
+ contract TokenHandlerBase {
20
+
21
+ // _setWallet
22
+ event LogTokenHandlerWalletAddressChanged(NftId componentNftId, address oldWallet, address newWallet);
23
+ event LogTokenHandlerWalletTokensTransferred(NftId componentNftId, address oldWallet, address newWallet, Amount amount);
24
+
25
+ // _approveTokenHandler
26
+ event LogTokenHandlerTokenApproved(NftId nftId, address tokenHandler, address token, Amount amount, bool isMaxAmount);
27
+
28
+ // _transfer
29
+ event LogTokenHandlerTokenTransfer(address token, address from, address to, Amount amount);
30
+
31
+ // constructor
32
+ error ErrorTokenHandlerNotRegistry(address registry);
33
+ error ErrorTokenHandlerComponentNotRegistered(address component);
34
+ error ErrorTokenHandlerTokenAddressZero();
35
+
36
+ // _setWallet
37
+ error ErrorTokenHandlerNewWalletAddressZero();
38
+ error ErrorTokenHandlerAddressIsSameAsCurrent();
39
+
40
+ // _approveTokenHandler
41
+ error ErrorTokenHandlerNotWallet(NftId nftId, address tokenHandler, address wallet);
42
+
43
+ // _checkPreconditions
44
+ error ErrorTokenHandlerBalanceTooLow(address token, address from, uint256 balance, uint256 expectedBalance);
45
+ error ErrorTokenHandlerAllowanceTooSmall(address token, address from, address spender, uint256 allowance, uint256 expectedAllowance);
46
+ error ErrorTokenHandlerAmountIsZero();
47
+
48
+ IRegistry public immutable REGISTRY;
49
+ IERC20Metadata public immutable TOKEN;
50
+ address public immutable COMPONENT;
51
+ NftId public immutable NFT_ID;
52
+
53
+ address internal _wallet;
54
+
55
+ constructor(
56
+ address registry,
57
+ address component,
58
+ address token
59
+ )
60
+ {
61
+ if (!ContractLib.isRegistry(registry)) {
62
+ revert ErrorTokenHandlerNotRegistry(registry);
63
+ }
64
+
65
+ if (token == address(0)) {
66
+ revert ErrorTokenHandlerTokenAddressZero();
67
+ }
68
+
69
+ REGISTRY = IRegistry(registry);
70
+ COMPONENT = component;
71
+ NFT_ID = REGISTRY.getNftIdForAddress(component);
72
+
73
+ if (NFT_ID.eqz()) {
74
+ revert ErrorTokenHandlerComponentNotRegistered(component);
75
+ }
76
+
77
+ TOKEN = IERC20Metadata(token);
78
+
79
+ // self approval of token handler to max amount
80
+ _approve(TOKEN, AmountLib.max());
81
+ }
82
+
83
+
84
+ /// @dev Checks the balance and allowance for the from address and amount.
85
+ /// When requiring amount > 0 set checkAmount to true.
86
+ function checkBalanceAndAllowance(
87
+ address from,
88
+ Amount amount,
89
+ bool checkAmount
90
+ )
91
+ external
92
+ view
93
+ {
94
+ _checkBalanceAndAllowance(from, amount, checkAmount);
95
+ }
96
+
97
+
98
+ /// @dev Returns the wallet linked to this TokenHandler.
99
+ function getWallet()
100
+ public
101
+ view
102
+ returns (address wallet)
103
+ {
104
+ if (_wallet == address(0)) {
105
+ return address(this);
106
+ }
107
+
108
+ return _wallet;
109
+ }
110
+
111
+
112
+ /// @dev Approves token handler to spend up to the specified amount of tokens.
113
+ /// Sets spending limit to type(uint256).max for AmountLib.max().
114
+ /// Reverts if wallet is not token handler itself.
115
+ /// Sets approvel using SareERC20.forceApprove internally.
116
+ function _approve(
117
+ IERC20Metadata token,
118
+ Amount amount
119
+ )
120
+ internal
121
+ {
122
+ // check that wallet is token handler contract itself
123
+ if(_wallet != address(0)) {
124
+ revert ErrorTokenHandlerNotWallet(NFT_ID, address(this), _wallet);
125
+ }
126
+
127
+ // update spending limit for AmountLib.max() to type(uint256).max
128
+ uint256 amountInt = amount.toInt();
129
+ bool isMaxAmount = false;
130
+ if (amount == AmountLib.max()) {
131
+ amountInt = type(uint256).max;
132
+ isMaxAmount = true;
133
+ }
134
+
135
+ emit LogTokenHandlerTokenApproved(NFT_ID, address(this), address(token), amount, isMaxAmount);
136
+
137
+ // execute approval
138
+ SafeERC20.forceApprove(
139
+ token,
140
+ address(this),
141
+ amountInt);
142
+ }
143
+
144
+
145
+ function _setWallet(address newWallet)
146
+ internal
147
+ {
148
+ address oldWallet = _wallet;
149
+ if (newWallet == oldWallet) {
150
+ revert ErrorTokenHandlerAddressIsSameAsCurrent();
151
+ }
152
+
153
+ // effects
154
+ address oldWalletForBalance = getWallet();
155
+ _wallet = newWallet;
156
+
157
+ emit LogTokenHandlerWalletAddressChanged(NFT_ID, oldWallet, newWallet);
158
+
159
+ // interactions
160
+ Amount balanceAmount = AmountLib.toAmount(
161
+ TOKEN.balanceOf(oldWalletForBalance));
162
+
163
+ if (balanceAmount.gtz()) {
164
+ // move tokens from old to new wallet
165
+ emit LogTokenHandlerWalletTokensTransferred(NFT_ID, oldWallet, newWallet, balanceAmount);
166
+
167
+ if (oldWallet == address(0)) {
168
+ // transfer from the component requires an allowance
169
+ _transfer(address(this), newWallet, balanceAmount, true);
170
+ } else if (newWallet == address(0)) {
171
+ _transfer(oldWallet, address(this), balanceAmount, true);
172
+ } else {
173
+ _transfer(oldWallet, newWallet, balanceAmount, true);
174
+ }
175
+ }
176
+ }
177
+
178
+
179
+ function _pullToken(address from, Amount amount)
180
+ internal
181
+ {
182
+ _transfer(from, getWallet(), amount, true);
183
+ }
184
+
185
+
186
+ function _pushToken(address to, Amount amount)
187
+ internal
188
+ {
189
+ _transfer(getWallet(), to, amount, true);
190
+ }
191
+
192
+
193
+ function _transfer(
194
+ address from,
195
+ address to,
196
+ Amount amount,
197
+ bool checkPreconditions
198
+ )
199
+ internal
200
+ {
201
+ if (checkPreconditions) {
202
+ bool checkAmount = true;
203
+ _checkBalanceAndAllowance(from, amount, checkAmount);
204
+ }
205
+
206
+ // transfer the tokens
207
+ emit LogTokenHandlerTokenTransfer(address(TOKEN), from, to, amount);
208
+
209
+ SafeERC20.safeTransferFrom(
210
+ TOKEN,
211
+ from,
212
+ to,
213
+ amount.toInt());
214
+ }
215
+
216
+
217
+ function _checkBalanceAndAllowance(
218
+ address from,
219
+ Amount amount,
220
+ bool checkAmount
221
+ )
222
+ internal
223
+ view
224
+ {
225
+ // amount must be greater than zero
226
+ if (checkAmount && amount.eqz()) {
227
+ revert ErrorTokenHandlerAmountIsZero();
228
+ }
229
+
230
+ // allowance must be >= amount
231
+ uint256 allowance = TOKEN.allowance(from, address(this));
232
+ if (allowance < amount.toInt()) {
233
+ revert ErrorTokenHandlerAllowanceTooSmall(address(TOKEN), from, address(this), allowance, amount.toInt());
234
+ }
235
+
236
+ // balance must be >= amount
237
+ uint256 balance = TOKEN.balanceOf(from);
238
+ if (balance < amount.toInt()) {
239
+ revert ErrorTokenHandlerBalanceTooLow(address(TOKEN), from, balance, amount.toInt());
240
+ }
241
+ }
242
+ }
243
+
244
+
245
+ /// @dev Token specific transfer helper.
246
+ /// Contract is derived from TokenHandlerBase and adds
247
+ /// authorization based on OpenZeppelin AccessManaged.
248
+ contract TokenHandler is
249
+ AccessManaged,
250
+ TokenHandlerBase
251
+ {
252
+
253
+ // onlyService
254
+ error ErrorTokenHandlerNotService(address service);
255
+
256
+ modifier onlyService() {
257
+ if (!REGISTRY.isObjectType(msg.sender, SERVICE())) {
258
+ revert ErrorTokenHandlerNotService(msg.sender);
259
+ }
260
+ _;
261
+ }
262
+
263
+ constructor(
264
+ address registry,
265
+ address component,
266
+ address token,
267
+ address authority
268
+ )
269
+ TokenHandlerBase(registry, component, token)
270
+ AccessManaged(authority)
271
+ { }
272
+
273
+ /// @dev Sets the wallet address for the component.
274
+ /// Seeting the new wallet address to address(0) will set the wallet to the tokenHandler contract itself.
275
+ /// If the current wallet has tokens, these will be transferred.
276
+ /// If the new wallet address is externally owned, an approval from the
277
+ /// owner of the external wallet to the tokenhandler of the component that
278
+ /// covers the current component balance must exist.
279
+ function setWallet(address newWallet)
280
+ external
281
+ restricted()
282
+ onlyService()
283
+ {
284
+ _setWallet(newWallet);
285
+ }
286
+
287
+
288
+ /// @dev Approves token handler to spend up to the specified amount of tokens.
289
+ /// Sets spending limit to type(uint256).max for AmountLib.max().
290
+ /// Reverts if component wallet is not component itself.
291
+ /// Sets approvel using SareERC20.forceApprove internally.
292
+ function approve(
293
+ IERC20Metadata token,
294
+ Amount amount
295
+ )
296
+ external
297
+ restricted()
298
+ onlyService()
299
+ {
300
+ _approve(token, amount);
301
+ }
302
+
303
+ /// @dev Collect tokens from outside of GIF and transfer them to the wallet.
304
+ /// This method also checks balance and allowance and makes sure the amount is greater than zero.
305
+ function pullToken(
306
+ address from,
307
+ Amount amount
308
+ )
309
+ external
310
+ restricted()
311
+ onlyService()
312
+ {
313
+ _pullToken(from, amount);
314
+ }
315
+
316
+
317
+ /// @dev Distribute tokens from a wallet within the scope of gif to some address.
318
+ function pushToken(
319
+ address to,
320
+ Amount amount
321
+ )
322
+ external
323
+ restricted()
324
+ onlyService()
325
+ {
326
+ _pushToken(to, amount);
327
+ }
328
+
329
+
330
+ /// @dev Distribute fee tokens from a wallet within the scope of gif to some address.
331
+ /// Separate push function for component service.
332
+ function pushFeeToken(
333
+ address to,
334
+ Amount amount
335
+ )
336
+ external
337
+ restricted()
338
+ onlyService()
339
+ {
340
+ _pushToken(to, amount);
341
+ }
342
+ }
@@ -0,0 +1,20 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {TokenHandler} from "./TokenHandler.sol";
5
+
6
+ library TokenHandlerDeployerLib {
7
+
8
+ function deployTokenHandler(
9
+ address registry,
10
+ address component,
11
+ address token,
12
+ address authority
13
+ )
14
+ public
15
+ returns (TokenHandler)
16
+ {
17
+ return new TokenHandler(registry, component, token, authority);
18
+ }
19
+
20
+ }