@etherisc/gif-next 0.0.2-ffba655 → 3.0.0-1a7e54a-113

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 (700) hide show
  1. package/README.md +277 -68
  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 +810 -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 +1735 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +2008 -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 +817 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/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 +1400 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +465 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +407 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +652 -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 +844 -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 +950 -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 +844 -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 +844 -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 +500 -0
  54. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +4 -0
  55. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.json +229 -0
  56. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1198 -0
  58. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
  59. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +849 -0
  60. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
  61. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1466 -0
  62. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
  63. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +844 -0
  64. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
  65. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2189 -0
  66. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
  67. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +844 -0
  68. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
  69. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +376 -0
  70. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
  71. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
  72. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  73. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1429 -0
  74. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  75. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +844 -0
  76. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  77. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1161 -0
  78. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  79. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1637 -0
  80. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  81. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +844 -0
  82. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  83. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2575 -0
  84. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  85. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +844 -0
  86. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  87. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +332 -0
  88. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  89. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  90. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  91. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  92. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  93. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +734 -451
  94. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  95. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +1102 -0
  96. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  97. package/artifacts/contracts/instance/Instance.sol/Instance.json +810 -530
  98. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  99. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2400 -0
  100. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  101. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +872 -0
  102. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  103. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2628 -0
  104. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  105. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1348 -0
  106. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  107. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +792 -0
  108. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  109. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3039 -0
  110. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  111. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  112. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  113. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  114. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  115. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  116. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  117. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  118. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  119. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  120. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  121. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  122. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  123. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  124. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  125. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  126. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  127. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IBundle.sol/IBundle.json} +2 -2
  128. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  129. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IComponents.sol/IComponents.json} +2 -2
  130. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  131. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  132. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  133. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  134. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  135. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.json +10 -0
  136. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  137. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  138. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  139. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +947 -0
  140. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  141. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +849 -0
  142. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  143. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  144. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  145. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +762 -0
  146. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  147. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  148. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  149. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +863 -0
  150. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  151. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  152. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +830 -0
  154. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  155. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1232 -0
  156. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  157. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +844 -0
  158. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  159. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1438 -0
  160. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  161. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +886 -0
  162. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  163. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +1033 -0
  164. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  165. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +895 -0
  166. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  167. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1449 -0
  168. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  169. package/artifacts/contracts/pool/Pool.sol/Pool.json +1015 -0
  170. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  171. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  172. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  173. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1833 -0
  174. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  175. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +886 -0
  176. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  177. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +1036 -0
  178. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +810 -0
  180. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  181. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1149 -0
  182. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  183. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +844 -0
  184. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  185. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1536 -0
  186. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  187. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +906 -0
  188. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  189. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +804 -0
  190. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  191. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1104 -0
  192. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  193. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +1036 -0
  194. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  195. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +652 -0
  196. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  197. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1006 -0
  198. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  199. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +665 -0
  200. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  201. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1404 -0
  202. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  203. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  204. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  205. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +874 -0
  206. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  207. package/artifacts/contracts/product/PricingService.sol/PricingService.json +932 -0
  208. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  209. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +834 -0
  210. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  211. package/artifacts/contracts/product/Product.sol/Product.json +1107 -0
  212. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  213. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  214. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  215. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +794 -0
  216. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  217. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +295 -2
  218. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  219. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +1055 -113
  220. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  221. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1072 -0
  222. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  223. package/artifacts/contracts/{instance/component/IComponent.sol/IInstanceLinked.json → registry/IRelease.sol/IRelease.json} +6 -6
  224. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  225. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +39 -0
  226. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  227. package/artifacts/contracts/registry/Registry.sol/Registry.json +1543 -176
  228. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  229. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2255 -0
  230. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  231. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1137 -0
  232. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  233. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1298 -0
  234. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  235. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +793 -0
  236. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  237. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2271 -0
  238. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  239. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  240. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  241. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1401 -0
  242. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  243. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +705 -0
  244. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  245. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +721 -0
  246. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  247. package/artifacts/contracts/shared/Component.sol/Component.json +695 -0
  248. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  249. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1551 -0
  250. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  251. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +882 -0
  252. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  253. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  254. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  255. package/artifacts/contracts/{registry/IRegistry.sol/IOwnable.json → shared/ContractLib.sol/IInstanceAdminHelper.json} +5 -5
  256. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  257. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/ContractLib.sol/ITargetHelper.json} +4 -9
  258. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  259. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  260. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  261. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +620 -0
  262. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  263. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1175 -0
  264. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  265. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +697 -0
  266. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  267. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +146 -0
  268. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  269. package/artifacts/contracts/{registry/IRegistry.sol/IRegisterable.json → shared/INftOwnable.sol/INftOwnable.json} +72 -72
  270. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  271. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  272. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  273. package/artifacts/contracts/{instance/component/ComponentModule.sol/ComponentModule.json → shared/IRegisterable.sol/IRegisterable.json} +179 -158
  274. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  275. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegistryLinked.sol}/IRegistryLinked.json +5 -19
  276. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  277. package/artifacts/contracts/shared/IService.sol/IService.json +428 -0
  278. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  279. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  280. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  281. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +785 -0
  282. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  283. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  284. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  285. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  286. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  287. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +228 -0
  288. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  289. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  290. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  291. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +397 -0
  292. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  293. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  294. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  295. package/artifacts/contracts/shared/Service.sol/Service.json +482 -0
  296. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  297. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +723 -0
  298. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  299. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  300. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  301. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  302. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  303. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +2747 -0
  304. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  305. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1147 -0
  306. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  307. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  308. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  309. package/artifacts/contracts/staking/Staking.sol/Staking.json +3175 -0
  310. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  311. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  312. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  313. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +867 -0
  314. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  315. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +704 -0
  316. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  317. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1344 -0
  318. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  319. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +786 -0
  320. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  321. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +3097 -0
  322. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  323. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  324. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  325. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +679 -0
  326. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  327. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  328. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  330. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +270 -0
  332. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  334. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  336. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  338. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  340. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  341. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  342. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  343. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  344. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  346. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  347. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  348. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +238 -0
  350. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  351. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  352. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  353. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +161 -0
  354. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  355. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  356. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +4 -0
  357. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +33 -0
  358. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  359. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  360. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  361. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +254 -0
  362. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  363. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +308 -0
  364. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  365. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  366. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  367. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  368. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  369. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  370. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  371. package/artifacts/contracts/type/String.sol/StrLib.json +199 -0
  372. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  373. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +344 -0
  374. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  375. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  376. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  377. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  378. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  379. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  380. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  381. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +65 -0
  382. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  383. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +672 -0
  384. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  385. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  386. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  387. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +88 -0
  388. package/contracts/accounting/AccountingService.sol +274 -0
  389. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  390. package/contracts/accounting/IAccountingService.sol +47 -0
  391. package/contracts/authorization/AccessAdmin.sol +679 -0
  392. package/contracts/authorization/AccessAdminLib.sol +678 -0
  393. package/contracts/authorization/AccessManagerCloneable.sol +140 -0
  394. package/contracts/authorization/Authorization.sol +190 -0
  395. package/contracts/authorization/IAccess.sol +66 -0
  396. package/contracts/authorization/IAccessAdmin.sol +142 -0
  397. package/contracts/authorization/IAuthorization.sol +26 -0
  398. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  399. package/contracts/authorization/ServiceAuthorization.sol +300 -0
  400. package/contracts/distribution/BasicDistribution.sol +140 -0
  401. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  402. package/contracts/distribution/Distribution.sol +245 -0
  403. package/contracts/distribution/DistributionService.sol +448 -0
  404. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  405. package/contracts/distribution/IDistributionComponent.sol +45 -0
  406. package/contracts/distribution/IDistributionService.sol +115 -0
  407. package/contracts/examples/fire/DamageLevel.sol +59 -0
  408. package/contracts/examples/fire/FirePool.sol +86 -0
  409. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  410. package/contracts/examples/fire/FireProduct.sol +433 -0
  411. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  412. package/contracts/examples/fire/FireUSD.sol +26 -0
  413. package/contracts/examples/flight/FlightLib.sol +311 -0
  414. package/contracts/examples/flight/FlightMessageVerifier.sol +128 -0
  415. package/contracts/examples/flight/FlightOracle.sol +167 -0
  416. package/contracts/examples/flight/FlightOracleAuthorization.sol +34 -0
  417. package/contracts/examples/flight/FlightPool.sol +89 -0
  418. package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
  419. package/contracts/examples/flight/FlightProduct.sol +545 -0
  420. package/contracts/examples/flight/FlightProductAuthorization.sol +44 -0
  421. package/contracts/examples/flight/FlightUSD.sol +26 -0
  422. package/contracts/examples/flight/originalV1.sol +396 -0
  423. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  424. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  425. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  426. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  427. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  428. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  429. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  430. package/contracts/instance/BaseStore.sol +93 -0
  431. package/contracts/instance/BundleSet.sol +130 -0
  432. package/contracts/instance/IBaseStore.sol +37 -0
  433. package/contracts/instance/IInstance.sol +151 -15
  434. package/contracts/instance/IInstanceService.sol +119 -0
  435. package/contracts/instance/Instance.sol +332 -45
  436. package/contracts/instance/InstanceAdmin.sol +307 -0
  437. package/contracts/instance/InstanceAuthorizationV3.sol +275 -0
  438. package/contracts/instance/InstanceReader.sol +628 -0
  439. package/contracts/instance/InstanceService.sol +514 -0
  440. package/contracts/instance/InstanceServiceManager.sol +39 -0
  441. package/contracts/instance/InstanceStore.sol +323 -0
  442. package/contracts/instance/ProductStore.sol +290 -0
  443. package/contracts/instance/RiskSet.sol +126 -0
  444. package/contracts/instance/TargetNames.sol +10 -0
  445. package/contracts/instance/base/BalanceStore.sol +121 -0
  446. package/contracts/instance/base/Cloneable.sol +28 -0
  447. package/contracts/instance/base/ObjectCounter.sol +20 -0
  448. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  449. package/contracts/instance/base/ObjectSet.sol +77 -0
  450. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  451. package/contracts/instance/module/IBundle.sol +21 -0
  452. package/contracts/instance/module/IComponents.sol +60 -0
  453. package/contracts/instance/module/IDistribution.sol +54 -0
  454. package/contracts/instance/module/IPolicy.sol +105 -0
  455. package/contracts/instance/module/IRisk.sol +16 -0
  456. package/contracts/mock/Dip.sol +26 -0
  457. package/contracts/oracle/BasicOracle.sol +44 -0
  458. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  459. package/contracts/oracle/IOracle.sol +41 -0
  460. package/contracts/oracle/IOracleComponent.sol +33 -0
  461. package/contracts/oracle/IOracleService.sol +66 -0
  462. package/contracts/oracle/Oracle.sol +152 -0
  463. package/contracts/oracle/OracleService.sol +310 -0
  464. package/contracts/oracle/OracleServiceManager.sol +39 -0
  465. package/contracts/pool/BasicPool.sol +161 -0
  466. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  467. package/contracts/pool/BundleService.sol +386 -0
  468. package/contracts/pool/BundleServiceManager.sol +39 -0
  469. package/contracts/pool/IBundleService.sol +116 -0
  470. package/contracts/pool/IPoolComponent.sol +62 -0
  471. package/contracts/pool/IPoolService.sol +170 -0
  472. package/contracts/pool/Pool.sol +331 -0
  473. package/contracts/pool/PoolLib.sol +341 -0
  474. package/contracts/pool/PoolService.sol +614 -0
  475. package/contracts/pool/PoolServiceManager.sol +39 -0
  476. package/contracts/product/ApplicationService.sol +327 -0
  477. package/contracts/product/ApplicationServiceManager.sol +38 -0
  478. package/contracts/product/BasicProduct.sol +48 -0
  479. package/contracts/product/BasicProductAuthorization.sol +64 -0
  480. package/contracts/product/ClaimService.sol +626 -0
  481. package/contracts/product/ClaimServiceManager.sol +38 -0
  482. package/contracts/product/IApplicationService.sol +88 -0
  483. package/contracts/product/IClaimService.sol +136 -0
  484. package/contracts/product/IPolicyService.sol +102 -0
  485. package/contracts/product/IPricingService.sol +40 -0
  486. package/contracts/product/IProductComponent.sol +62 -0
  487. package/contracts/product/IRiskService.sol +48 -0
  488. package/contracts/product/PolicyService.sol +645 -0
  489. package/contracts/product/PolicyServiceLib.sol +139 -0
  490. package/contracts/product/PolicyServiceManager.sol +39 -0
  491. package/contracts/product/PricingService.sol +306 -0
  492. package/contracts/product/PricingServiceManager.sol +39 -0
  493. package/contracts/product/Product.sol +491 -0
  494. package/contracts/product/RiskService.sol +189 -0
  495. package/contracts/product/RiskServiceManager.sol +39 -0
  496. package/contracts/registry/ChainNft.sol +176 -100
  497. package/contracts/registry/IRegistry.sol +149 -47
  498. package/contracts/registry/IRegistryService.sol +62 -0
  499. package/contracts/registry/IRelease.sol +29 -0
  500. package/contracts/registry/ITransferInterceptor.sol +6 -0
  501. package/contracts/registry/Registry.sol +671 -117
  502. package/contracts/registry/RegistryAdmin.sol +173 -0
  503. package/contracts/registry/RegistryAuthorization.sol +337 -0
  504. package/contracts/registry/RegistryService.sol +241 -0
  505. package/contracts/registry/RegistryServiceManager.sol +53 -0
  506. package/contracts/registry/ReleaseAdmin.sol +199 -0
  507. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  508. package/contracts/registry/ReleaseRegistry.sol +525 -0
  509. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  510. package/contracts/registry/TokenRegistry.sol +317 -0
  511. package/contracts/shared/Component.sol +210 -0
  512. package/contracts/shared/ComponentService.sol +691 -0
  513. package/contracts/shared/ComponentServiceManager.sol +38 -0
  514. package/contracts/shared/ContractLib.sol +312 -0
  515. package/contracts/shared/EcdsaChecker.sol +5 -0
  516. package/contracts/shared/IComponent.sol +58 -0
  517. package/contracts/shared/IComponentService.sol +111 -0
  518. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  519. package/contracts/shared/ILifecycle.sol +31 -0
  520. package/contracts/shared/INftOwnable.sol +27 -0
  521. package/contracts/shared/IPolicyHolder.sol +35 -0
  522. package/contracts/shared/IRegisterable.sol +36 -0
  523. package/contracts/shared/IRegistryLinked.sol +11 -0
  524. package/contracts/shared/IService.sol +23 -0
  525. package/contracts/shared/InitializableERC165.sol +35 -0
  526. package/contracts/shared/InstanceLinkedComponent.sol +232 -0
  527. package/contracts/shared/Lifecycle.sol +88 -0
  528. package/contracts/shared/NftIdSet.sol +65 -0
  529. package/contracts/shared/NftOwnable.sol +129 -0
  530. package/contracts/shared/PolicyHolder.sol +63 -0
  531. package/contracts/shared/Registerable.sol +106 -0
  532. package/contracts/shared/RegistryLinked.sol +38 -0
  533. package/contracts/shared/Service.sol +67 -0
  534. package/contracts/shared/TokenHandler.sol +342 -0
  535. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  536. package/contracts/staking/IStaking.sol +366 -0
  537. package/contracts/staking/IStakingService.sol +127 -0
  538. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  539. package/contracts/staking/Staking.sol +797 -0
  540. package/contracts/staking/StakingLib.sol +195 -0
  541. package/contracts/staking/StakingManager.sol +53 -0
  542. package/contracts/staking/StakingReader.sol +171 -0
  543. package/contracts/staking/StakingService.sol +321 -0
  544. package/contracts/staking/StakingServiceManager.sol +46 -0
  545. package/contracts/staking/StakingStore.sol +1368 -0
  546. package/contracts/staking/TargetHandler.sol +132 -0
  547. package/contracts/staking/TargetManagerLib.sol +234 -0
  548. package/contracts/type/AddressSet.sol +58 -0
  549. package/contracts/type/Amount.sol +154 -0
  550. package/contracts/type/Blocknumber.sol +137 -0
  551. package/contracts/type/ChainId.sol +101 -0
  552. package/contracts/type/ClaimId.sol +80 -0
  553. package/contracts/type/DistributorType.sol +55 -0
  554. package/contracts/type/Fee.sol +66 -0
  555. package/contracts/type/Key32.sol +50 -0
  556. package/contracts/type/Key32Set.sol +62 -0
  557. package/contracts/type/NftId.sol +85 -0
  558. package/contracts/type/NftIdSet.sol +62 -0
  559. package/contracts/type/ObjectType.sol +278 -0
  560. package/contracts/type/PayoutId.sol +82 -0
  561. package/contracts/type/Referral.sol +96 -0
  562. package/contracts/type/RequestId.sol +75 -0
  563. package/contracts/type/RequestIdSet.sol +62 -0
  564. package/contracts/type/RiskId.sol +75 -0
  565. package/contracts/type/RoleId.sol +180 -0
  566. package/contracts/type/Seconds.sol +124 -0
  567. package/contracts/type/Selector.sol +107 -0
  568. package/contracts/type/StateId.sol +149 -0
  569. package/contracts/type/String.sol +95 -0
  570. package/contracts/type/Timestamp.sol +152 -0
  571. package/contracts/type/UFixed.sol +263 -0
  572. package/contracts/type/Version.sol +159 -0
  573. package/contracts/upgradeability/IVersionable.sol +56 -0
  574. package/contracts/upgradeability/ProxyManager.sol +246 -0
  575. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  576. package/contracts/upgradeability/Versionable.sol +62 -0
  577. package/package.json +27 -7
  578. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  579. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  580. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  581. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  582. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  583. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  584. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  585. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  586. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  587. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -213
  588. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  589. package/artifacts/contracts/components/Product.sol/Product.json +0 -231
  590. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  591. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  592. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  593. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  594. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  595. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  596. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  597. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  598. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  599. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  600. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  601. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  602. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  603. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  604. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  605. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  606. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  607. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  608. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  609. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  610. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  611. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  612. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  613. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  614. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  615. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  616. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  617. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  618. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  619. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  620. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  621. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  622. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  623. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  624. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  625. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  626. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  627. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  628. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  629. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  630. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  631. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  632. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  633. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  634. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  635. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  636. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  637. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  638. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  639. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  640. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  641. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  642. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -162
  643. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  644. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  645. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  646. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  647. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  648. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  649. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  650. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
  651. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  652. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  653. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  654. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  655. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  656. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  657. package/artifacts/contracts/registry/Registry.sol/Registerable.json +0 -166
  658. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  659. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  660. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  661. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  662. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  663. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  664. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  665. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  666. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  667. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -174
  668. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  669. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
  670. package/contracts/components/Component.sol +0 -62
  671. package/contracts/components/IPool.sol +0 -9
  672. package/contracts/components/IProduct.sol +0 -12
  673. package/contracts/components/Pool.sol +0 -29
  674. package/contracts/components/Product.sol +0 -66
  675. package/contracts/experiment/errors/Require.sol +0 -33
  676. package/contracts/experiment/errors/Revert.sol +0 -39
  677. package/contracts/experiment/inheritance/A.sol +0 -56
  678. package/contracts/experiment/inheritance/B.sol +0 -23
  679. package/contracts/experiment/inheritance/C.sol +0 -28
  680. package/contracts/experiment/inheritance/IA.sol +0 -18
  681. package/contracts/experiment/inheritance/IB.sol +0 -9
  682. package/contracts/experiment/inheritance/IC.sol +0 -11
  683. package/contracts/experiment/types/TypeA.sol +0 -42
  684. package/contracts/experiment/types/TypeB.sol +0 -24
  685. package/contracts/instance/access/Access.sol +0 -218
  686. package/contracts/instance/access/IAccess.sol +0 -83
  687. package/contracts/instance/component/ComponentModule.sol +0 -248
  688. package/contracts/instance/component/IComponent.sol +0 -95
  689. package/contracts/instance/policy/IPolicy.sol +0 -66
  690. package/contracts/instance/policy/PolicyModule.sol +0 -107
  691. package/contracts/instance/pool/IPoolModule.sol +0 -41
  692. package/contracts/instance/pool/PoolModule.sol +0 -86
  693. package/contracts/instance/product/IProductService.sol +0 -46
  694. package/contracts/instance/product/ProductService.sol +0 -108
  695. package/contracts/registry/IChainNft.sol +0 -18
  696. package/contracts/types/Blocknumber.sol +0 -60
  697. package/contracts/types/ChainId.sol +0 -30
  698. package/contracts/types/NftId.sol +0 -35
  699. package/contracts/types/Timestamp.sol +0 -55
  700. package/contracts/types/UFixed.sol +0 -211
@@ -0,0 +1,36 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
+
6
+ import {INftOwnable} from "./INftOwnable.sol";
7
+ import {IRelease} from "../registry/IRelease.sol";
8
+ import {IRegistry} from "../registry/IRegistry.sol";
9
+
10
+ /// @title IRegisterable
11
+ /// @dev Marks contracts that are intended to be registered in the registry.
12
+ ///
13
+ interface IRegisterable is
14
+ IAccessManaged,
15
+ INftOwnable,
16
+ IRelease
17
+ {
18
+ // __Registerable_init
19
+ error ErrorAuthorityInvalid(address authority);
20
+
21
+ // onlyActive()
22
+ error ErrorRegisterableNotActive();
23
+
24
+ /// @dev Returns true iff this contract managed by its authority is active.
25
+ /// Queries the IAccessManaged.authority().
26
+ function isActive() external view returns (bool active);
27
+
28
+ /// @dev retuns the object info relevant for registering for this contract
29
+ /// IMPORTANT information returned by this function may only be used
30
+ /// before the contract is registered in the registry.
31
+ /// Once registered this information MUST only be accessed via the registry.
32
+ function getInitialInfo()
33
+ external
34
+ view
35
+ returns (IRegistry.ObjectInfo memory);
36
+ }
@@ -0,0 +1,11 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IRegistry} from "../registry/IRegistry.sol";
5
+
6
+ interface IRegistryLinked {
7
+
8
+ error ErrorNotRegistry(address registryAddress);
9
+
10
+ function getRegistry() external view returns (IRegistry);
11
+ }
@@ -0,0 +1,23 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
+
6
+ import {IRegisterable} from "./IRegisterable.sol";
7
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
8
+ import {ObjectType} from "../type/ObjectType.sol";
9
+ import {RoleId} from "../type/RoleId.sol";
10
+
11
+ interface IService is
12
+ IAccessManaged,
13
+ IRegisterable,
14
+ IVersionable
15
+ {
16
+ /// @dev returns the domain for this service.
17
+ /// In any GIF release only one service for any given domain may be deployed.
18
+ function getDomain() external pure returns(ObjectType serviceDomain);
19
+
20
+ /// @dev returns the GIF release specific role id.
21
+ /// These role ids are used to authorize service to service communication.
22
+ function getRoleId() external view returns(RoleId serviceRoleId);
23
+ }
@@ -0,0 +1,35 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
6
+
7
+ contract InitializableERC165 is
8
+ Initializable,
9
+ IERC165
10
+ {
11
+ mapping(bytes4 => bool) private _isSupported;
12
+
13
+ // @dev initializes with support for ERC165
14
+ function __ERC165_init() internal onlyInitializing() {
15
+ _initializeERC165();
16
+ }
17
+
18
+ function _initializeERC165() internal {
19
+ _isSupported[type(IERC165).interfaceId] = true;
20
+ }
21
+
22
+ // @dev register support for provided interfaceId
23
+ // includes initialization for ERC165_ID if not yet done
24
+ function _registerInterface(bytes4 interfaceId) internal onlyInitializing() {
25
+ _registerInterfaceNotInitializing(interfaceId);
26
+ }
27
+
28
+ function _registerInterfaceNotInitializing(bytes4 interfaceId) internal{
29
+ _isSupported[interfaceId] = true;
30
+ }
31
+
32
+ function supportsInterface(bytes4 interfaceId) external view override returns (bool) {
33
+ return _isSupported[interfaceId];
34
+ }
35
+ }
@@ -0,0 +1,232 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
5
+ import {IComponents} from "../instance/module/IComponents.sol";
6
+ import {IComponentService} from "./IComponentService.sol";
7
+ import {IInstance} from "../instance/IInstance.sol";
8
+ import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
9
+ import {IInstanceService} from "../instance/IInstanceService.sol";
10
+ import {IOracleService} from "../oracle/IOracleService.sol";
11
+
12
+ import {Amount} from "../type/Amount.sol";
13
+ import {Component} from "./Component.sol";
14
+ import {InstanceReader} from "../instance/InstanceReader.sol";
15
+ import {IRegistry} from "../registry/IRegistry.sol";
16
+ import {NftId} from "../type/NftId.sol";
17
+ import {ObjectType, COMPONENT, INSTANCE, ORACLE, PRODUCT} from "../type/ObjectType.sol";
18
+ import {RequestId} from "../type/RequestId.sol";
19
+ import {RoleId, RoleIdLib} from "../type/RoleId.sol";
20
+ import {TokenHandler} from "../shared/TokenHandler.sol";
21
+ import {Timestamp} from "../type/Timestamp.sol";
22
+ import {VersionPart} from "../type/Version.sol";
23
+
24
+ // then add (Distribution|Pool|Product)Upradeable that also intherit from Versionable
25
+ // same pattern as for Service which is also upgradeable
26
+ abstract contract InstanceLinkedComponent is
27
+ Component,
28
+ IInstanceLinkedComponent
29
+ {
30
+ // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Component.sol")) - 1)) & ~bytes32(uint256(0xff));
31
+ bytes32 public constant INSTANCE_LINKED_COMPONENT_LOCATION_V1 = 0xffe3d4462bded26a47154f4b8f6db494d2f772496965791d25bd456e342b7f00;
32
+
33
+ struct InstanceLinkedComponentStorage {
34
+ IInstance _instance; // instance for this component
35
+ InstanceReader _instanceReader; // instance reader for this component
36
+ IAuthorization _initialAuthorization;
37
+ IComponentService _componentService;
38
+ IOracleService _oracleService;
39
+ }
40
+
41
+ //--- view functions ----------------------------------------------------//
42
+
43
+ /// @inheritdoc IInstanceLinkedComponent
44
+ function getInstance() public view virtual override returns (IInstance instance) {
45
+ return _getInstanceLinkedComponentStorage()._instance;
46
+ }
47
+
48
+
49
+ /// @inheritdoc IInstanceLinkedComponent
50
+ function getAuthorization() external view virtual returns (IAuthorization authorization) {
51
+ return _getInstanceLinkedComponentStorage()._initialAuthorization;
52
+ }
53
+
54
+
55
+ /// @inheritdoc IInstanceLinkedComponent
56
+ function withdrawFees(Amount amount)
57
+ external
58
+ virtual
59
+ restricted()
60
+ onlyOwner()
61
+ returns (Amount withdrawnAmount)
62
+ {
63
+ return _withdrawFees(amount);
64
+ }
65
+
66
+ //--- internal functions ------------------------------------------------//
67
+
68
+ function _sendRequest(
69
+ NftId oracleNftId,
70
+ bytes memory requestData,
71
+ Timestamp expiryAt,
72
+ string memory callbackMethod
73
+ )
74
+ internal
75
+ virtual
76
+ returns (RequestId requestId)
77
+ {
78
+ return _getInstanceLinkedComponentStorage()._oracleService.request(
79
+ oracleNftId,
80
+ requestData,
81
+ expiryAt,
82
+ callbackMethod);
83
+ }
84
+
85
+
86
+ function _cancelRequest(RequestId requestId)
87
+ internal
88
+ virtual
89
+ {
90
+ _getInstanceLinkedComponentStorage()._oracleService.cancel(requestId);
91
+ }
92
+
93
+
94
+ function _resendRequest(RequestId requestId)
95
+ internal
96
+ virtual
97
+ {
98
+ _getInstanceLinkedComponentStorage()._oracleService.resend(requestId);
99
+ }
100
+
101
+
102
+ function _getInstanceLinkedComponentStorage() private pure returns (InstanceLinkedComponentStorage storage $) {
103
+ assembly {
104
+ $.slot := INSTANCE_LINKED_COMPONENT_LOCATION_V1
105
+ }
106
+ }
107
+
108
+
109
+ function __InstanceLinkedComponent_init(
110
+ address registry,
111
+ NftId parentNftId,
112
+ string memory name,
113
+ ObjectType componentType,
114
+ IAuthorization authorization,
115
+ bool isInterceptor,
116
+ address initialOwner
117
+ )
118
+ internal
119
+ virtual
120
+ onlyInitializing()
121
+ {
122
+ // validate registry, nft ids and get parent nft id
123
+ NftId instanceNftId = _checkAndGetInstanceNftId(
124
+ registry,
125
+ parentNftId,
126
+ componentType);
127
+
128
+ // set and check linked instance
129
+ InstanceLinkedComponentStorage storage $ = _getInstanceLinkedComponentStorage();
130
+ $._instance = IInstance(
131
+ IRegistry(registry).getObjectAddress(instanceNftId));
132
+
133
+ // set component specific parameters
134
+ __Component_init(
135
+ $._instance.authority(), // instance linked components need to point to instance admin
136
+ registry,
137
+ parentNftId,
138
+ name,
139
+ componentType,
140
+ isInterceptor,
141
+ initialOwner,
142
+ ""); // registry data
143
+
144
+ // set instance linked specific parameters
145
+ $._instanceReader = $._instance.getInstanceReader();
146
+ $._initialAuthorization = authorization;
147
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
148
+ $._oracleService = IOracleService(_getServiceAddress(ORACLE()));
149
+
150
+ // register interfaces
151
+ _registerInterface(type(IInstanceLinkedComponent).interfaceId);
152
+ }
153
+
154
+
155
+ function _checkAndGetInstanceNftId(
156
+ address registryAddress,
157
+ NftId parentNftId,
158
+ ObjectType componentType
159
+ )
160
+ internal
161
+ view
162
+ returns (NftId instanceNftId)
163
+ {
164
+ // if product, then parent is already instance
165
+ if (componentType == PRODUCT()) {
166
+ _checkAndGetRegistry(registryAddress, parentNftId, INSTANCE());
167
+ return parentNftId;
168
+ }
169
+
170
+ // if not product parent is product, and parent of product is instance
171
+ IRegistry registry = _checkAndGetRegistry(registryAddress, parentNftId, PRODUCT());
172
+ return registry.getParentNftId(parentNftId);
173
+ }
174
+
175
+ /// @dev checks the and gets registry.
176
+ /// validates registry using a provided nft id and expected object type.
177
+ function _checkAndGetRegistry(
178
+ address registryAddress,
179
+ NftId objectNftId,
180
+ ObjectType requiredType
181
+ )
182
+ internal
183
+ view
184
+ returns (IRegistry registry)
185
+ {
186
+ registry = IRegistry(registryAddress);
187
+ IRegistry.ObjectInfo memory info = registry.getObjectInfo(objectNftId);
188
+
189
+ if (info.objectType != requiredType) {
190
+ revert ErrorInstanceLinkedComponentTypeMismatch(requiredType, info.objectType);
191
+ }
192
+ }
193
+
194
+
195
+ /// @dev for instance linked components the wallet address stored in the instance store.
196
+ /// updating needs to go throug component service
197
+ function _setWallet(address newWallet) internal virtual override onlyOwner {
198
+ IComponentService(_getServiceAddress(COMPONENT())).setWallet(newWallet);
199
+ }
200
+
201
+
202
+ function _getComponentInfo() internal virtual override view returns (IComponents.ComponentInfo memory info) {
203
+ NftId componentNftId = getRegistry().getNftIdForAddress(address(this));
204
+
205
+ // if registered, attempt to return component info via instance reader
206
+ if (componentNftId.gtz()) {
207
+ // component registerd with registry
208
+ info = _getInstanceReader().getComponentInfo(getNftId());
209
+
210
+ // check if also registered with instance
211
+ if (address(info.tokenHandler) != address(0)) {
212
+ return info;
213
+ }
214
+ }
215
+
216
+ // return data from component contract if not yet registered
217
+ return super._getComponentInfo();
218
+ }
219
+
220
+
221
+ /// @dev returns reader for linked instance
222
+ function _getInstanceReader() internal view returns (InstanceReader reader) {
223
+ return _getInstanceLinkedComponentStorage()._instanceReader;
224
+ }
225
+
226
+ function _withdrawFees(Amount amount)
227
+ internal
228
+ returns (Amount withdrawnAmount)
229
+ {
230
+ return _getInstanceLinkedComponentStorage()._componentService.withdrawFees(amount);
231
+ }
232
+ }
@@ -0,0 +1,88 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ObjectType} from "../type/ObjectType.sol";
5
+ import {StateId, zeroStateId} from "../type/StateId.sol";
6
+ import {ILifecycle} from "./ILifecycle.sol";
7
+
8
+ abstract contract Lifecycle is
9
+ ILifecycle
10
+ {
11
+ mapping(ObjectType objectType => StateId initialState)
12
+ private _initialState;
13
+
14
+ mapping(ObjectType objectType => mapping(StateId stateFrom => mapping(StateId stateTo => bool isValid)))
15
+ private _isValidTransition;
16
+
17
+ /// @dev child class must implement and CALL setup func at deployment/initializaton time
18
+ function _setupLifecycle() internal virtual;
19
+
20
+ function setInitialState(ObjectType ttype, StateId state) internal virtual {
21
+ assert(_initialState[ttype] == zeroStateId());
22
+ _initialState[ttype] = state;
23
+ }
24
+
25
+ function setStateTransition(ObjectType ttype, StateId oldState, StateId newState) internal virtual {
26
+ assert(_isValidTransition[ttype][oldState][newState] == false);
27
+ _isValidTransition[ttype][oldState][newState] = true;
28
+ }
29
+
30
+ function hasLifecycle(
31
+ ObjectType objectType
32
+ )
33
+ public
34
+ view
35
+ override
36
+ returns (bool)
37
+ {
38
+ return _initialState[objectType].gtz();
39
+ }
40
+
41
+ function getInitialState(
42
+ ObjectType objectType
43
+ )
44
+ public
45
+ view
46
+ returns (StateId)
47
+ {
48
+ return _initialState[objectType];
49
+ }
50
+
51
+ function checkTransition(
52
+ StateId stateId,
53
+ ObjectType objectType,
54
+ StateId expectedFromId,
55
+ StateId toId
56
+ )
57
+ public
58
+ view
59
+ {
60
+ // revert if no life cycle support
61
+ if (_initialState[objectType].eqz()) {
62
+ revert ErrorNoLifecycle(address(this), objectType);
63
+ }
64
+
65
+ // revert if current state is not expected `from` state
66
+ if(stateId != expectedFromId) {
67
+ revert ErrorFromStateMissmatch(address(this), objectType, stateId, expectedFromId);
68
+ }
69
+
70
+ // enforce valid state transition
71
+ if (!_isValidTransition[objectType][stateId][toId]) {
72
+ revert ErrorInvalidStateTransition(
73
+ address(this),
74
+ objectType,
75
+ stateId,
76
+ toId
77
+ );
78
+ }
79
+ }
80
+
81
+ function isValidTransition(
82
+ ObjectType objectType,
83
+ StateId fromId,
84
+ StateId toId
85
+ ) public view returns (bool) {
86
+ return _isValidTransition[objectType][fromId][toId];
87
+ }
88
+ }
@@ -0,0 +1,65 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {LibNftIdSet} from "../type/NftIdSet.sol";
5
+ import {NftId} from "../type/NftId.sol";
6
+
7
+ contract NftIdSet {
8
+
9
+ error ErrorNftIdSetManagerNotOwner(address owner, address sender);
10
+ error ErrorNftIdSetManagerOwnerAlreadySet(address owner);
11
+ error ErrorNftIdSetManagerNftIdInvalid(NftId objectNftId);
12
+ error ErrorNftIdSetManagerAlreadyAdded(NftId objectNftId);
13
+
14
+ LibNftIdSet.Set private _allObjects;
15
+ LibNftIdSet.Set private _activeObjects;
16
+ address private _owner;
17
+
18
+ modifier onlyOwner() {
19
+ if(msg.sender != _owner) {
20
+ revert ErrorNftIdSetManagerNotOwner(_owner, msg.sender);
21
+ }
22
+ _;
23
+ }
24
+
25
+ constructor() {
26
+ _owner = msg.sender;
27
+ }
28
+
29
+ function add(NftId objectNftId) external onlyOwner {
30
+ LibNftIdSet.add(_allObjects, objectNftId);
31
+ LibNftIdSet.add(_activeObjects, objectNftId);
32
+ }
33
+
34
+ function activate(NftId componentNftId, NftId objectNftId) external onlyOwner {
35
+ LibNftIdSet.add(_activeObjects, objectNftId);
36
+ }
37
+
38
+ function deactivate(NftId componentNftId, NftId objectNftId) external onlyOwner {
39
+ LibNftIdSet.remove(_activeObjects, objectNftId);
40
+ }
41
+
42
+ function nftIds() external view returns (uint256 ids) {
43
+ return LibNftIdSet.size(_allObjects);
44
+ }
45
+
46
+ function getNftId(uint256 idx) external view returns (NftId) {
47
+ return LibNftIdSet.getElementAt(_allObjects, idx);
48
+ }
49
+
50
+ function exists(NftId objectNftId) external view returns (bool) {
51
+ return LibNftIdSet.contains(_allObjects, objectNftId);
52
+ }
53
+
54
+ function activeNftIds() external view returns (uint256 ids) {
55
+ return LibNftIdSet.size(_activeObjects);
56
+ }
57
+
58
+ function getActiveNftId(uint256 idx) external view returns (NftId) {
59
+ return LibNftIdSet.getElementAt(_activeObjects, idx);
60
+ }
61
+
62
+ function isActive(NftId objectNftId) external view returns (bool) {
63
+ return LibNftIdSet.contains(_activeObjects, objectNftId);
64
+ }
65
+ }
@@ -0,0 +1,129 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {InitializableERC165} from "./InitializableERC165.sol";
5
+ import {INftOwnable} from "./INftOwnable.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
8
+ import {RegistryLinked} from "./RegistryLinked.sol";
9
+
10
+ contract NftOwnable is
11
+ InitializableERC165,
12
+ RegistryLinked,
13
+ INftOwnable
14
+ {
15
+ // keccak256(abi.encode(uint256(keccak256("etherisc.storage.NftOwnable")) - 1)) & ~bytes32(uint256(0xff));
16
+ bytes32 public constant NFT_OWNABLE_STORAGE_LOCATION_V1 = 0x07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00;
17
+
18
+ struct NftOwnableStorage {
19
+ NftId _nftId;
20
+ address _initialOwner;
21
+ }
22
+
23
+ /// @dev enforces msg.sender is owner of nft (or initial owner of nft ownable)
24
+ modifier onlyOwner() {
25
+ if (msg.sender != getOwner()) {
26
+ revert ErrorNftOwnableNotOwner(msg.sender);
27
+ }
28
+ _;
29
+ }
30
+
31
+ modifier onlyNftOwner(NftId nftId) {
32
+ if(!getRegistry().isOwnerOf(nftId, msg.sender)) {
33
+ revert ErrorNftOwnableNotOwner(msg.sender);
34
+ }
35
+ _;
36
+ }
37
+
38
+ modifier onlyNftOfType(NftId nftId, ObjectType expectedObjectType) {
39
+ _checkNftType(nftId, expectedObjectType);
40
+ _;
41
+ }
42
+
43
+ function _checkNftType(NftId nftId, ObjectType expectedObjectType) internal view {
44
+ if(expectedObjectType.eqz() || !getRegistry().isObjectType(nftId, expectedObjectType)) {
45
+ revert ErrorNftOwnableInvalidType(nftId, expectedObjectType);
46
+ }
47
+ }
48
+
49
+
50
+ /// @dev Initialization for upgradable contracts.
51
+ // used in __Registerable_init, ProxyManager._preDeployChecksAndSetup
52
+ function __NftOwnable_init(
53
+ address registry,
54
+ address initialOwner
55
+ )
56
+ internal
57
+ virtual
58
+ onlyInitializing()
59
+ {
60
+ __ERC165_init();
61
+ __RegistryLinked_init(registry);
62
+
63
+ if(initialOwner == address(0)) {
64
+ revert ErrorNftOwnableInitialOwnerZero();
65
+ }
66
+
67
+ _getNftOwnableStorage()._initialOwner = initialOwner;
68
+ }
69
+
70
+
71
+ /// @dev links this contract to nft after registration
72
+ // needs to be done once per registered contract and
73
+ // reduces registry calls to check ownership
74
+ // does not need any protection as function can only do the "right thing"
75
+ function linkToRegisteredNftId()
76
+ public
77
+ virtual
78
+ returns (NftId nftId)
79
+ {
80
+ return _linkToNftOwnable(address(this));
81
+ }
82
+
83
+ function getNftId() public view virtual override returns (NftId) {
84
+ return _getNftOwnableStorage()._nftId;
85
+ }
86
+
87
+ function getOwner() public view virtual override returns (address) {
88
+ NftOwnableStorage storage $ = _getNftOwnableStorage();
89
+
90
+ if ($._nftId.gtz()) {
91
+ return getRegistry().ownerOf($._nftId);
92
+ }
93
+
94
+ return $._initialOwner;
95
+ }
96
+
97
+ /// @dev used in constructor of registry service manager
98
+ // links ownership of registry service manager ot nft owner of registry service
99
+ function _linkToNftOwnable(
100
+ address nftOwnableAddress
101
+ )
102
+ internal
103
+ returns (NftId)
104
+ {
105
+ NftOwnableStorage storage $ = _getNftOwnableStorage();
106
+
107
+ if ($._nftId.gtz()) {
108
+ revert ErrorNftOwnableAlreadyLinked($._nftId);
109
+ }
110
+
111
+ if (!getRegistry().isRegistered(nftOwnableAddress)) {
112
+ revert ErrorNftOwnableContractNotRegistered(nftOwnableAddress);
113
+ }
114
+
115
+ $._nftId = getRegistry().getNftIdForAddress(nftOwnableAddress);
116
+
117
+ emit LogNftOwnableNftLinkedToAddress($._nftId, getOwner());
118
+
119
+ return $._nftId;
120
+ }
121
+
122
+
123
+ function _getNftOwnableStorage() private pure returns (NftOwnableStorage storage $) {
124
+ // solhint-disable-next-line no-inline-assembly
125
+ assembly {
126
+ $.slot := NFT_OWNABLE_STORAGE_LOCATION_V1
127
+ }
128
+ }
129
+ }
@@ -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
+ }