@etherisc/gif-next 0.0.2-be8b468-276 → 0.0.2-bf51045-496

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 (724) hide show
  1. package/README.md +146 -22
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1000 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +746 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → accounting/IAccountingService.sol/IAccountingService.json} +368 -352
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -0
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1060 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  24. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  25. package/artifacts/contracts/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json} +125 -11
  26. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  27. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  28. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1292 -0
  30. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
  32. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +986 -0
  34. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1494 -0
  36. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +862 -0
  38. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +885 -0
  40. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  41. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +984 -0
  42. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  44. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1441 -0
  46. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
  48. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1991 -0
  50. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  52. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  53. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1429 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1145 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1605 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2293 -0
  66. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  67. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -0
  68. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  69. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +808 -0
  70. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +585 -309
  72. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  73. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +400 -171
  74. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  75. package/artifacts/contracts/instance/Instance.sol/Instance.json +399 -3011
  76. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1684 -0
  78. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +574 -0
  80. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1541 -538
  82. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +506 -275
  84. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +383 -85
  86. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  87. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3668 -0
  88. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  89. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
  90. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  91. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  92. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  93. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +38 -2
  94. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  96. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  98. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  100. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +30 -112
  102. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  104. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  105. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  106. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  107. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  108. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  109. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  110. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  111. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +929 -0
  112. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
  114. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  116. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +744 -0
  118. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  119. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +709 -0
  120. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +845 -0
  122. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +990 -0
  124. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  125. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +766 -0
  126. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  127. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1222 -0
  128. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  129. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +502 -0
  130. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1360 -0
  132. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  133. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +822 -0
  134. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  135. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +922 -0
  136. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  137. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +877 -0
  138. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  139. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1285 -0
  140. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  141. package/artifacts/contracts/pool/Pool.sol/Pool.json +997 -0
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  143. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1619 -0
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  145. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +794 -0
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  147. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +806 -0
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  150. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  151. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1116 -0
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  153. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  155. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1439 -0
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  157. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +858 -0
  158. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  159. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IApplicationService.sol/IApplicationService.json} +268 -256
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  161. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +942 -0
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  163. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +944 -0
  164. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  165. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +578 -0
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  167. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +973 -0
  168. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  169. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IRiskService.sol/IRiskService.json} +150 -187
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  171. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1313 -0
  172. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  173. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +810 -0
  174. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  175. package/artifacts/contracts/product/PricingService.sol/PricingService.json +923 -0
  176. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  177. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  178. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  179. package/artifacts/contracts/product/Product.sol/Product.json +1074 -0
  180. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  181. package/artifacts/contracts/product/RiskService.sol/RiskService.json +638 -0
  182. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  183. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +718 -0
  184. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  185. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +72 -16
  186. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  187. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +606 -173
  188. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  189. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +371 -205
  190. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -0
  192. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/Registry.sol/Registry.json +938 -206
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  195. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1899 -0
  196. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  197. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +347 -322
  198. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  199. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +340 -128
  200. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  201. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  202. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  203. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
  204. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  205. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  206. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  207. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +351 -100
  208. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  209. package/artifacts/contracts/shared/Component.sol/Component.json +677 -0
  210. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  211. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1574 -0
  212. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  213. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +818 -0
  214. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  215. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +182 -189
  216. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  217. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +488 -0
  218. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  222. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  223. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → shared/IComponent.sol/IComponent.json} +328 -172
  224. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  225. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1197 -0
  226. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  227. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +679 -0
  228. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  229. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +95 -14
  230. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  231. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  232. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +46 -26
  234. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  235. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  236. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  237. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +40 -31
  238. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  239. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  240. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  241. package/artifacts/contracts/shared/IService.sol/IService.json +119 -165
  242. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  243. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  244. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  245. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +767 -0
  246. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  247. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  248. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  249. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  250. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  251. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  252. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  253. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +81 -30
  254. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  255. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  256. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  257. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +96 -48
  258. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  259. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  260. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  261. package/artifacts/contracts/shared/Service.sol/Service.json +150 -176
  262. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  263. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +734 -8
  264. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  265. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  266. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  267. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  268. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  269. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1417 -0
  270. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  271. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1043 -0
  272. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  273. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  274. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  275. package/artifacts/contracts/staking/Staking.sol/Staking.json +1816 -0
  276. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  277. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  278. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  279. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +780 -0
  280. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  281. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  282. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  283. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1265 -0
  284. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  285. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +734 -0
  286. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  288. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  289. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  290. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  291. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  292. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  294. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  296. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  298. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  300. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  302. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  304. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  305. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  306. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  308. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  309. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  310. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  312. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  314. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  316. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  318. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +180 -0
  320. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  322. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  324. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  326. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  328. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  330. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  332. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  334. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  336. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  338. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  340. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  341. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  342. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  343. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  344. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  345. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  346. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  347. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  348. package/contracts/accounting/AccountingService.sol +263 -0
  349. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  350. package/contracts/accounting/IAccountingService.sol +45 -0
  351. package/contracts/authorization/AccessAdmin.sol +615 -0
  352. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  353. package/contracts/authorization/Authorization.sol +289 -0
  354. package/contracts/authorization/IAccess.sol +49 -0
  355. package/contracts/authorization/IAccessAdmin.sol +137 -0
  356. package/contracts/authorization/IAuthorization.sol +60 -0
  357. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  358. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  359. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  360. package/contracts/distribution/BasicDistribution.sol +139 -0
  361. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  362. package/contracts/distribution/Distribution.sol +287 -0
  363. package/contracts/distribution/DistributionService.sol +357 -0
  364. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  365. package/contracts/distribution/IDistributionComponent.sol +52 -0
  366. package/contracts/distribution/IDistributionService.sol +100 -0
  367. package/contracts/examples/fire/DamageLevel.sol +59 -0
  368. package/contracts/examples/fire/FirePool.sol +90 -0
  369. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  370. package/contracts/examples/fire/FireProduct.sol +436 -0
  371. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  372. package/contracts/examples/fire/FireUSD.sol +26 -0
  373. package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
  374. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  375. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  376. package/contracts/examples/unpermissioned/SimplePool.sol +107 -0
  377. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  378. package/contracts/examples/unpermissioned/SimpleProduct.sol +352 -0
  379. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  380. package/contracts/instance/BundleSet.sol +130 -0
  381. package/contracts/instance/IInstance.sol +57 -19
  382. package/contracts/instance/IInstanceService.sol +57 -17
  383. package/contracts/instance/Instance.sol +169 -373
  384. package/contracts/instance/InstanceAdmin.sol +288 -0
  385. package/contracts/instance/InstanceAuthorizationV3.sol +222 -0
  386. package/contracts/instance/InstanceReader.sol +364 -73
  387. package/contracts/instance/InstanceService.sol +335 -105
  388. package/contracts/instance/InstanceServiceManager.sol +14 -31
  389. package/contracts/instance/InstanceStore.sol +287 -0
  390. package/contracts/instance/RiskSet.sol +119 -0
  391. package/contracts/instance/base/BalanceStore.sol +123 -0
  392. package/contracts/instance/base/Cloneable.sol +28 -0
  393. package/contracts/instance/base/ObjectCounter.sol +20 -0
  394. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  395. package/contracts/instance/base/ObjectSet.sol +78 -0
  396. package/contracts/instance/module/IAccess.sol +29 -21
  397. package/contracts/instance/module/IBundle.sol +8 -7
  398. package/contracts/instance/module/IComponents.sol +50 -0
  399. package/contracts/instance/module/IDistribution.sol +6 -4
  400. package/contracts/instance/module/IPolicy.sol +59 -19
  401. package/contracts/instance/module/IRisk.sol +2 -1
  402. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  403. package/contracts/oracle/BasicOracle.sol +47 -0
  404. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  405. package/contracts/oracle/IOracle.sol +36 -0
  406. package/contracts/oracle/IOracleComponent.sol +33 -0
  407. package/contracts/oracle/IOracleService.sol +66 -0
  408. package/contracts/oracle/Oracle.sol +156 -0
  409. package/contracts/oracle/OracleService.sol +309 -0
  410. package/contracts/oracle/OracleServiceManager.sol +39 -0
  411. package/contracts/pool/BasicPool.sol +175 -0
  412. package/contracts/pool/BasicPoolAuthorization.sol +68 -0
  413. package/contracts/pool/BundleService.sol +425 -0
  414. package/contracts/pool/BundleServiceManager.sol +39 -0
  415. package/contracts/pool/IBundleService.sol +121 -0
  416. package/contracts/pool/IPoolComponent.sol +62 -0
  417. package/contracts/pool/IPoolService.sol +153 -0
  418. package/contracts/pool/Pool.sol +345 -0
  419. package/contracts/pool/PoolService.sol +615 -0
  420. package/contracts/pool/PoolServiceManager.sol +39 -0
  421. package/contracts/product/ApplicationService.sol +259 -0
  422. package/contracts/product/ApplicationServiceManager.sol +38 -0
  423. package/contracts/product/BasicProduct.sol +49 -0
  424. package/contracts/product/BasicProductAuthorization.sol +41 -0
  425. package/contracts/product/ClaimService.sol +614 -0
  426. package/contracts/product/ClaimServiceManager.sol +38 -0
  427. package/contracts/product/IApplicationService.sol +66 -0
  428. package/contracts/product/IClaimService.sol +123 -0
  429. package/contracts/product/IPolicyService.sol +90 -0
  430. package/contracts/product/IPricingService.sol +39 -0
  431. package/contracts/product/IProductComponent.sol +59 -0
  432. package/contracts/product/IRiskService.sol +33 -0
  433. package/contracts/product/PolicyService.sol +736 -0
  434. package/contracts/product/PolicyServiceManager.sol +39 -0
  435. package/contracts/product/PricingService.sol +300 -0
  436. package/contracts/product/PricingServiceManager.sol +39 -0
  437. package/contracts/product/Product.sol +427 -0
  438. package/contracts/product/RiskService.sol +107 -0
  439. package/contracts/product/RiskServiceManager.sol +39 -0
  440. package/contracts/registry/ChainNft.sol +82 -35
  441. package/contracts/registry/IRegistry.sol +127 -48
  442. package/contracts/registry/IRegistryService.sol +45 -16
  443. package/contracts/registry/ITransferInterceptor.sol +1 -1
  444. package/contracts/registry/Registry.sol +540 -304
  445. package/contracts/registry/RegistryAdmin.sol +457 -0
  446. package/contracts/registry/RegistryService.sol +126 -284
  447. package/contracts/registry/RegistryServiceManager.sol +26 -53
  448. package/contracts/registry/ReleaseLifecycle.sol +30 -0
  449. package/contracts/registry/ReleaseRegistry.sol +486 -0
  450. package/contracts/registry/ServiceAuthorizationV3.sol +207 -0
  451. package/contracts/registry/TokenRegistry.sol +261 -57
  452. package/contracts/shared/Component.sol +219 -0
  453. package/contracts/shared/ComponentService.sol +696 -0
  454. package/contracts/shared/ComponentServiceManager.sol +38 -0
  455. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  456. package/contracts/shared/ContractLib.sol +224 -0
  457. package/contracts/shared/IComponent.sol +62 -0
  458. package/contracts/shared/IComponentService.sol +116 -0
  459. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  460. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  461. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  462. package/contracts/shared/INftOwnable.sol +15 -12
  463. package/contracts/shared/IPolicyHolder.sol +35 -0
  464. package/contracts/shared/IRegisterable.sol +15 -6
  465. package/contracts/shared/IRegistryLinked.sol +11 -0
  466. package/contracts/shared/IService.sol +16 -6
  467. package/contracts/shared/InitializableERC165.sol +27 -0
  468. package/contracts/shared/InstanceLinkedComponent.sol +197 -0
  469. package/contracts/shared/KeyValueStore.sol +131 -0
  470. package/contracts/shared/Lifecycle.sol +88 -0
  471. package/contracts/shared/NftIdSet.sol +65 -0
  472. package/contracts/shared/NftOwnable.sol +75 -84
  473. package/contracts/shared/PolicyHolder.sol +62 -0
  474. package/contracts/shared/Registerable.sol +34 -41
  475. package/contracts/shared/RegistryLinked.sol +38 -0
  476. package/contracts/shared/Service.sol +61 -31
  477. package/contracts/shared/TokenHandler.sol +374 -12
  478. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  479. package/contracts/staking/IStaking.sol +173 -0
  480. package/contracts/staking/IStakingService.sol +157 -0
  481. package/contracts/staking/StakeManagerLib.sol +224 -0
  482. package/contracts/staking/Staking.sol +515 -0
  483. package/contracts/staking/StakingLifecycle.sol +23 -0
  484. package/contracts/staking/StakingManager.sol +52 -0
  485. package/contracts/staking/StakingReader.sol +190 -0
  486. package/contracts/staking/StakingService.sol +440 -0
  487. package/contracts/staking/StakingServiceManager.sol +44 -0
  488. package/contracts/staking/StakingStore.sol +605 -0
  489. package/contracts/staking/TargetManagerLib.sol +211 -0
  490. package/contracts/{types → type}/AddressSet.sol +1 -1
  491. package/contracts/type/Amount.sol +150 -0
  492. package/contracts/{types → type}/Blocknumber.sol +27 -3
  493. package/contracts/type/ClaimId.sol +80 -0
  494. package/contracts/{types → type}/DistributorType.sol +2 -2
  495. package/contracts/{types → type}/Fee.sol +33 -23
  496. package/contracts/{types → type}/Key32.sol +2 -2
  497. package/contracts/type/Key32Set.sol +62 -0
  498. package/contracts/{types → type}/NftId.sol +28 -15
  499. package/contracts/type/NftIdSet.sol +62 -0
  500. package/contracts/type/ObjectType.sol +286 -0
  501. package/contracts/type/PayoutId.sol +82 -0
  502. package/contracts/{types → type}/Referral.sol +6 -1
  503. package/contracts/type/RequestId.sol +75 -0
  504. package/contracts/{types → type}/RiskId.sol +31 -5
  505. package/contracts/type/RoleId.sol +162 -0
  506. package/contracts/type/Seconds.sol +101 -0
  507. package/contracts/type/Selector.sol +102 -0
  508. package/contracts/{types → type}/StateId.sol +48 -4
  509. package/contracts/type/String.sol +53 -0
  510. package/contracts/{types → type}/Timestamp.sol +34 -15
  511. package/contracts/{types → type}/UFixed.sol +41 -121
  512. package/contracts/{types → type}/Version.sol +5 -2
  513. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  514. package/contracts/upgradeability/ProxyManager.sol +232 -0
  515. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  516. package/contracts/upgradeability/Versionable.sol +59 -0
  517. package/package.json +11 -7
  518. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  519. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -327
  520. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  521. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -670
  522. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  523. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  524. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  525. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -204
  526. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  527. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  528. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  529. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  530. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  531. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -790
  532. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  533. package/artifacts/contracts/components/Product.sol/Product.json +0 -775
  534. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  535. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  536. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  537. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  538. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  539. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  540. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  541. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  542. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  543. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  544. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  545. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  546. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  547. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  548. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  549. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  550. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  551. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  552. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  553. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  554. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  555. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  556. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  557. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  558. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  559. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  560. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  561. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  562. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  563. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  564. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  565. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  566. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  567. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  568. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  569. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  570. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  571. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  572. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  573. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  574. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  575. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  576. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  577. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  578. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -917
  579. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  580. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  581. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  582. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  583. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  584. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  585. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  586. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  587. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  588. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  589. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  590. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  591. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  592. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  593. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -641
  594. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  595. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -428
  596. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  597. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  598. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  599. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  600. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  601. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  602. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  603. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  604. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  605. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  606. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  607. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  608. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  609. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  610. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  611. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  612. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  613. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  614. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  615. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  616. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  617. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  618. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  619. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  620. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  621. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  622. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  623. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  624. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  625. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  626. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  627. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  628. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  629. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  630. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  631. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  632. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  633. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  634. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  635. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  636. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  637. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  638. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  639. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  640. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  641. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  642. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  643. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  644. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  645. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  646. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  647. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  648. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  649. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  650. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  651. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  652. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  653. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  654. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  655. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  656. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  657. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  658. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  659. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  660. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  661. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  662. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  663. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  664. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  665. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  666. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  667. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  668. package/contracts/components/BaseComponent.sol +0 -91
  669. package/contracts/components/Distribution.sol +0 -166
  670. package/contracts/components/IBaseComponent.sol +0 -25
  671. package/contracts/components/IDistributionComponent.sol +0 -46
  672. package/contracts/components/IPoolComponent.sol +0 -62
  673. package/contracts/components/IProductComponent.sol +0 -35
  674. package/contracts/components/Pool.sol +0 -258
  675. package/contracts/components/Product.sol +0 -297
  676. package/contracts/experiment/cloning/Cloner.sol +0 -47
  677. package/contracts/experiment/errors/Require.sol +0 -38
  678. package/contracts/experiment/errors/Revert.sol +0 -44
  679. package/contracts/experiment/inheritance/A.sol +0 -53
  680. package/contracts/experiment/inheritance/B.sol +0 -28
  681. package/contracts/experiment/inheritance/C.sol +0 -34
  682. package/contracts/experiment/inheritance/IA.sol +0 -13
  683. package/contracts/experiment/inheritance/IB.sol +0 -10
  684. package/contracts/experiment/inheritance/IC.sol +0 -12
  685. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  686. package/contracts/experiment/statemachine/ISM.sol +0 -25
  687. package/contracts/experiment/statemachine/SM.sol +0 -57
  688. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  689. package/contracts/experiment/types/TypeA.sol +0 -47
  690. package/contracts/experiment/types/TypeB.sol +0 -29
  691. package/contracts/instance/AccessManagedSimple.sol +0 -115
  692. package/contracts/instance/AccessManagerSimple.sol +0 -692
  693. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  694. package/contracts/instance/InstanceAccessManager.sol +0 -288
  695. package/contracts/instance/base/ComponentServiceBase.sol +0 -39
  696. package/contracts/instance/base/IInstanceBase.sol +0 -23
  697. package/contracts/instance/base/KeyValueStore.sol +0 -172
  698. package/contracts/instance/base/Lifecycle.sol +0 -100
  699. package/contracts/instance/module/ISetup.sol +0 -43
  700. package/contracts/instance/module/ITreasury.sol +0 -23
  701. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  702. package/contracts/instance/service/DistributionService.sol +0 -96
  703. package/contracts/instance/service/DistributionServiceManager.sol +0 -53
  704. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  705. package/contracts/instance/service/IDistributionService.sol +0 -12
  706. package/contracts/instance/service/IPoolService.sol +0 -37
  707. package/contracts/instance/service/IProductService.sol +0 -107
  708. package/contracts/shared/ContractDeployerLib.sol +0 -72
  709. package/contracts/shared/ERC165.sol +0 -25
  710. package/contracts/shared/ProxyManager.sol +0 -94
  711. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  712. package/contracts/shared/Versionable.sol +0 -147
  713. package/contracts/test/TestFee.sol +0 -25
  714. package/contracts/test/TestRegisterable.sol +0 -18
  715. package/contracts/test/TestRoleId.sol +0 -14
  716. package/contracts/test/TestService.sol +0 -24
  717. package/contracts/test/TestToken.sol +0 -26
  718. package/contracts/test/TestVersion.sol +0 -44
  719. package/contracts/test/TestVersionable.sol +0 -17
  720. package/contracts/types/ChainId.sol +0 -38
  721. package/contracts/types/NftIdSet.sol +0 -60
  722. package/contracts/types/NumberId.sol +0 -52
  723. package/contracts/types/ObjectType.sol +0 -152
  724. package/contracts/types/RoleId.sol +0 -88
@@ -0,0 +1,90 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {Amount, AmountLib} from "../../type/Amount.sol";
7
+ import {BasicPool} from "../../pool/BasicPool.sol";
8
+ import {Fee} from "../../type/Fee.sol";
9
+ import {IAuthorization} from "../../authorization/IAuthorization.sol";
10
+ import {IComponents} from "../../instance/module/IComponents.sol";
11
+ import {NftId} from "../../type/NftId.sol";
12
+ import {Seconds} from "../../type/Timestamp.sol";
13
+ import {UFixed, UFixedLib} from "../../type/UFixed.sol";
14
+
15
+ contract FirePool is
16
+ BasicPool
17
+ {
18
+ constructor(
19
+ address registry,
20
+ NftId fireProductNftId,
21
+ string memory componentName,
22
+ address token,
23
+ IAuthorization authorization
24
+ )
25
+ {
26
+ address initialOwner = msg.sender;
27
+ _intialize(
28
+ registry,
29
+ fireProductNftId,
30
+ componentName,
31
+ token,
32
+ IComponents.PoolInfo({
33
+ maxBalanceAmount: AmountLib.max(),
34
+ isInterceptingBundleTransfers: false,
35
+ isProcessingConfirmedClaims: false,
36
+ isExternallyManaged: false,
37
+ isVerifyingApplications: false,
38
+ collateralizationLevel: UFixedLib.one(),
39
+ retentionLevel: UFixedLib.one()
40
+ }),
41
+ authorization,
42
+ initialOwner);
43
+ }
44
+
45
+ function _intialize(
46
+ address registry,
47
+ NftId fireProductNftId,
48
+ string memory componentName,
49
+ address token,
50
+ IComponents.PoolInfo memory poolInfo,
51
+ IAuthorization authorization,
52
+ address initialOwner
53
+ )
54
+ internal
55
+ initializer
56
+ {
57
+ _initializeBasicPool(
58
+ registry,
59
+ fireProductNftId,
60
+ componentName,
61
+ token,
62
+ poolInfo,
63
+ authorization,
64
+ initialOwner);
65
+ }
66
+
67
+ function createBundle(
68
+ Fee memory fee,
69
+ Amount initialAmount,
70
+ Seconds lifetime
71
+ )
72
+ external
73
+ virtual
74
+ restricted()
75
+ returns(NftId bundleNftId, Amount netStakedAmount)
76
+ {
77
+ address owner = msg.sender;
78
+ bundleNftId = _createBundle(
79
+ owner,
80
+ fee,
81
+ lifetime,
82
+ "" // filter
83
+ );
84
+ netStakedAmount = _stake(bundleNftId, initialAmount);
85
+ }
86
+
87
+ function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
88
+ function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
89
+ function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
90
+ }
@@ -0,0 +1,35 @@
1
+
2
+
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ pragma solidity ^0.8.20;
5
+
6
+ import {BasicPoolAuthorization} from "../../pool/BasicPoolAuthorization.sol";
7
+ import {FirePool} from "./FirePool.sol";
8
+ import {IAccess} from "../../../contracts/authorization/IAccess.sol";
9
+ import {PUBLIC_ROLE} from "../../../contracts/type/RoleId.sol";
10
+
11
+ contract FirePoolAuthorization
12
+ is BasicPoolAuthorization
13
+ {
14
+
15
+ constructor(string memory poolName)
16
+ BasicPoolAuthorization(poolName)
17
+ {}
18
+
19
+
20
+ function _setupTargetAuthorizations()
21
+ internal
22
+ virtual override
23
+ {
24
+ super._setupTargetAuthorizations();
25
+ IAccess.FunctionInfo[] storage functions;
26
+
27
+ // authorize public role (open access to any account, only allows to lock target)
28
+ functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
29
+ // TODO: FirePool.createBundle must require a custom role (e.g. INVESTOR) instead of PUBLIC_ROLE
30
+ _authorize(functions, FirePool.approveTokenHandler.selector, "approveTokenHandler");
31
+ _authorize(functions, FirePool.createBundle.selector, "createBundle");
32
+ }
33
+
34
+ }
35
+
@@ -0,0 +1,436 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {ACTIVE, PAUSED} from "../../type/StateId.sol";
7
+ import {Amount, AmountLib} from "../../type/Amount.sol";
8
+ import {BasicProduct} from "../../product/BasicProduct.sol";
9
+ import {ClaimId} from "../../type/ClaimId.sol";
10
+ import {DamageLevel, DAMAGE_SMALL, DAMAGE_MEDIUM, DAMAGE_LARGE} from "./DamageLevel.sol";
11
+ import {FeeLib} from "../../type/Fee.sol";
12
+ import {IAuthorization} from "../../authorization/IAuthorization.sol";
13
+ import {IComponents} from "../../instance/module/IComponents.sol";
14
+ import {IPolicy} from "../../instance/module/IPolicy.sol";
15
+ import {NftId, NftIdLib} from "../../type/NftId.sol";
16
+ import {PayoutId} from "../../type/PayoutId.sol";
17
+ import {POLICY, BUNDLE} from "../../type/ObjectType.sol";
18
+ import {ReferralLib} from "../../type/Referral.sol";
19
+ import {RiskId, RiskIdLib} from "../../type/RiskId.sol";
20
+ import {Seconds} from "../../type/Seconds.sol";
21
+ import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
22
+ import {UFixed, UFixedLib} from "../../type/UFixed.sol";
23
+
24
+ // solhint-disable-next-line func-name-mixedcase
25
+ function HALF_YEAR() pure returns (Seconds) {
26
+ return Seconds.wrap(180 * 86400);
27
+ }
28
+
29
+ // solhint-disable-next-line func-name-mixedcase
30
+ function ONE_YEAR() pure returns (Seconds) {
31
+ return Seconds.wrap(360 * 86400);
32
+ }
33
+
34
+ /// @dev This is the product component for the fire insurance example.
35
+ /// It show how to insure a house for a given suminsured in a city.
36
+ /// The risk is based on the city.
37
+ /// If a fire is reported in the city, the policy holder is able to submit a claim and get a payout.
38
+ contract FireProduct is
39
+ BasicProduct
40
+ {
41
+ struct Fire {
42
+ string cityName;
43
+ DamageLevel damageLevel;
44
+ Timestamp reportedAt;
45
+ }
46
+
47
+ error ErrorFireProductCityUnknown(string cityName);
48
+ error ErrorFireProductTimestampInFuture();
49
+ error ErrorFireProductFireAlreadyReported();
50
+ error ErrorFireProductAlreadyClaimed();
51
+ error ErrorFireProductPolicyNotActive(NftId policyNftId);
52
+ error ErrorFireProductPolicyNotYetActive(NftId policyNftId, Timestamp activateAt);
53
+ error ErrorFireProductPolicyExpired(NftId policyNftId, Timestamp expiredAt);
54
+ error ErrorFireProductUnknownDamageLevel(DamageLevel damageLevel);
55
+ error ErrorFireProductFireUnknown(uint256 fireId);
56
+ error ErrorFireProductNotPolicyOwner(NftId nftId, address owner);
57
+ error ErrorFireProductFireNotInCoveredCity(uint256 fireId, string cityName);
58
+
59
+ string[] private _cities;
60
+ // map from city name to the RiskId
61
+ mapping(string cityName => RiskId risk) private _riskMapping;
62
+
63
+ // map from city name to the damage level and the time of the report
64
+ mapping(uint256 fireId => Fire) private _fires;
65
+ mapping(uint256 fireId => mapping (NftId policyId => bool claimed)) private _claimed;
66
+
67
+ constructor(
68
+ address registry,
69
+ NftId instanceNftid,
70
+ string memory componentName,
71
+ address token,
72
+ IAuthorization authorization
73
+ )
74
+ {
75
+ address initialOwner = msg.sender;
76
+
77
+ _initialize(
78
+ registry,
79
+ instanceNftid,
80
+ componentName,
81
+ token,
82
+ authorization,
83
+ initialOwner);
84
+ }
85
+
86
+ function _initialize(
87
+ address registry,
88
+ NftId instanceNftId,
89
+ string memory componentName,
90
+ address token,
91
+ IAuthorization authorization,
92
+ address initialOwner
93
+ )
94
+ internal
95
+ initializer
96
+ {
97
+ _initializeBasicProduct(
98
+ registry,
99
+ instanceNftId,
100
+ componentName,
101
+ token,
102
+ IComponents.ProductInfo({
103
+ isProcessingFundedClaims: false,
104
+ isInterceptingPolicyTransfers: false,
105
+ hasDistribution: false,
106
+ expectedNumberOfOracles: 0,
107
+ numberOfOracles: 0,
108
+ poolNftId: NftIdLib.zero(),
109
+ distributionNftId: NftIdLib.zero(),
110
+ oracleNftId: new NftId[](0),
111
+ productFee: FeeLib.zero(),
112
+ processingFee: FeeLib.zero(),
113
+ distributionFee: FeeLib.zero(),
114
+ minDistributionOwnerFee: FeeLib.zero(),
115
+ poolFee: FeeLib.zero(),
116
+ stakingFee: FeeLib.zero(),
117
+ performanceFee: FeeLib.zero()
118
+ }),
119
+ authorization,
120
+ initialOwner); // number of oracles
121
+ }
122
+
123
+ function cities() public view returns (uint256) {
124
+ return _cities.length;
125
+ }
126
+
127
+ function city(uint256 idx) public view returns (string memory) {
128
+ return _cities[idx];
129
+ }
130
+
131
+ function riskId(string memory cityName) public view returns (RiskId) {
132
+ return _riskMapping[cityName];
133
+ }
134
+
135
+ function pauseCity(
136
+ string memory cityName
137
+ )
138
+ public
139
+ restricted()
140
+ {
141
+ if (_riskMapping[cityName].eqz()) {
142
+ revert ErrorFireProductCityUnknown(cityName);
143
+ }
144
+
145
+ _updateRiskState(
146
+ _riskMapping[cityName],
147
+ PAUSED()
148
+ );
149
+ }
150
+
151
+ function unpauseCity(
152
+ string memory cityName
153
+ )
154
+ public
155
+ restricted()
156
+ {
157
+ if (_riskMapping[cityName].eqz()) {
158
+ revert ErrorFireProductCityUnknown(cityName);
159
+ }
160
+
161
+ _updateRiskState(
162
+ _riskMapping[cityName],
163
+ ACTIVE()
164
+ );
165
+ }
166
+
167
+ function calculatePremium(
168
+ string memory cityName,
169
+ Amount sumInsured,
170
+ Seconds lifetime,
171
+ NftId bundleNftId
172
+ )
173
+ public
174
+ view
175
+ onlyNftOfType(bundleNftId, BUNDLE())
176
+ returns (Amount premiumAmount)
177
+ {
178
+ RiskId risk = _riskMapping[cityName];
179
+ if (risk.eqz()) {
180
+ revert ErrorFireProductCityUnknown(cityName);
181
+ }
182
+ premiumAmount = calculatePremium(
183
+ sumInsured,
184
+ risk,
185
+ lifetime,
186
+ "",
187
+ bundleNftId,
188
+ ReferralLib.zero());
189
+ }
190
+
191
+ function calculateNetPremium(
192
+ Amount sumInsured,
193
+ RiskId,
194
+ Seconds lifetime,
195
+ bytes memory
196
+ )
197
+ external
198
+ view
199
+ virtual override
200
+ returns (Amount netPremiumAmount)
201
+ {
202
+ UFixed numDays = UFixedLib.toUFixed(lifetime.toInt() / 86400);
203
+ // to simplify time calculation we assume 360 days per year
204
+ UFixed pctOfYear = numDays / UFixedLib.toUFixed(360);
205
+ Amount premiumPerYear = AmountLib.toAmount(sumInsured.toInt() / 20);
206
+ return premiumPerYear.multiplyWith(pctOfYear);
207
+ }
208
+
209
+ function createApplication(
210
+ string memory cityName,
211
+ Amount sumInsured,
212
+ Seconds lifetime,
213
+ NftId bundleNftId
214
+ )
215
+ public
216
+ restricted()
217
+ onlyNftOfType(bundleNftId, BUNDLE())
218
+ returns (NftId policyNftId)
219
+ {
220
+ address applicationOwner = msg.sender;
221
+ RiskId risk = initializeCity(cityName);
222
+
223
+ Amount premiumAmount = calculatePremium(
224
+ sumInsured,
225
+ risk,
226
+ lifetime,
227
+ "",
228
+ bundleNftId,
229
+ ReferralLib.zero());
230
+
231
+ return _createApplication(
232
+ applicationOwner,
233
+ risk,
234
+ sumInsured,
235
+ premiumAmount,
236
+ lifetime,
237
+ bundleNftId,
238
+ ReferralLib.zero(),
239
+ ""
240
+ );
241
+ }
242
+
243
+ function initializeCity(
244
+ string memory cityName
245
+ )
246
+ public
247
+ returns (RiskId risk)
248
+ {
249
+ if (! _riskMapping[cityName].eqz()) {
250
+ return _riskMapping[cityName];
251
+ }
252
+ _cities.push(cityName);
253
+ risk = RiskIdLib.toRiskId(cityName);
254
+ _createRisk(risk, "");
255
+ _riskMapping[cityName] = risk;
256
+ }
257
+
258
+ /// @dev Calling this method will lock the sum insured amount in the pool and activate the policy at the given time.
259
+ /// It will also collect the tokens payment for the premium. An approval with the correct amount towards the TokenHandler of the product is therefor required.
260
+ function createPolicy(
261
+ NftId policyNftId,
262
+ Timestamp activateAt
263
+ )
264
+ public
265
+ restricted()
266
+ onlyOwner()
267
+ onlyNftOfType(policyNftId, POLICY())
268
+ {
269
+ _createPolicy(policyNftId, activateAt);
270
+ _collectPremium(policyNftId, activateAt);
271
+ }
272
+
273
+ /// @dev Decline the policy application
274
+ function decline(
275
+ NftId policyNftId
276
+ )
277
+ public
278
+ restricted()
279
+ onlyOwner()
280
+ onlyNftOfType(policyNftId, POLICY())
281
+ {
282
+ _decline(policyNftId);
283
+ }
284
+
285
+ function expire(
286
+ NftId policyNftId,
287
+ Timestamp expireAt
288
+ )
289
+ public
290
+ restricted()
291
+ onlyOwner()
292
+ onlyNftOfType(policyNftId, POLICY())
293
+ returns (Timestamp)
294
+ {
295
+ return _expire(policyNftId, expireAt);
296
+ }
297
+
298
+ function close(
299
+ NftId policyNftId
300
+ )
301
+ public
302
+ restricted()
303
+ onlyOwner()
304
+ onlyNftOfType(policyNftId, POLICY())
305
+ {
306
+ _close(policyNftId);
307
+ }
308
+
309
+ function reportFire(
310
+ uint256 fireId,
311
+ string memory cityName,
312
+ DamageLevel damageLevel,
313
+ Timestamp reportedAt
314
+ )
315
+ public
316
+ restricted()
317
+ {
318
+ if (_riskMapping[cityName].eqz()) {
319
+ revert ErrorFireProductCityUnknown(cityName);
320
+ }
321
+
322
+ if (reportedAt > TimestampLib.blockTimestamp()) {
323
+ revert ErrorFireProductTimestampInFuture();
324
+ }
325
+
326
+ if (! _fires[fireId].reportedAt.eqz()) {
327
+ revert ErrorFireProductFireAlreadyReported();
328
+ }
329
+
330
+ _fires[fireId] = Fire({
331
+ cityName: cityName,
332
+ damageLevel: damageLevel,
333
+ reportedAt: reportedAt
334
+ });
335
+ }
336
+
337
+ function fire(uint256 fireId) public view returns (Fire memory) {
338
+ return _fires[fireId];
339
+ }
340
+
341
+ function submitClaim(
342
+ NftId policyNftId,
343
+ uint256 fireId
344
+ )
345
+ public
346
+ restricted()
347
+ onlyNftOwner(policyNftId)
348
+ onlyNftOfType(policyNftId, POLICY())
349
+ returns (ClaimId claimId, PayoutId payoutId)
350
+ {
351
+ IPolicy.PolicyInfo memory policyInfo = _getInstanceReader().getPolicyInfo(policyNftId);
352
+ _checkClaimConditions(policyNftId, policyInfo, fireId);
353
+
354
+ Fire memory theFire = _fires[fireId];
355
+ _claimed[fireId][policyNftId] = true;
356
+
357
+ Amount claimAmount = _getClaimAmount(policyNftId, policyInfo.sumInsuredAmount, theFire.damageLevel);
358
+
359
+ claimId = _submitClaim(policyNftId, claimAmount, abi.encodePacked(fireId));
360
+ _confirmClaim(policyNftId, claimId, claimAmount, "");
361
+
362
+ payoutId = _createPayout(policyNftId, claimId, claimAmount, "");
363
+ _processPayout(policyNftId, payoutId);
364
+ }
365
+
366
+ function _checkClaimConditions(
367
+ NftId policyNftId,
368
+ IPolicy.PolicyInfo memory policyInfo,
369
+ uint256 fireId
370
+ )
371
+ internal
372
+ view
373
+ {
374
+ // check fire exists
375
+ if (_fires[fireId].reportedAt.eqz()) {
376
+ revert ErrorFireProductFireUnknown(fireId);
377
+ }
378
+
379
+ // check fire is in same city as policy coverage
380
+ if (_riskMapping[_fires[fireId].cityName] != policyInfo.riskId) {
381
+ revert ErrorFireProductFireNotInCoveredCity(fireId, _fires[fireId].cityName);
382
+ }
383
+
384
+ // check policy has not been claimed yet for this fire
385
+ if (_claimed[fireId][policyNftId]) {
386
+ revert ErrorFireProductAlreadyClaimed();
387
+ }
388
+
389
+ Fire memory theFire = _fires[fireId];
390
+
391
+ // check fire is during policy lifetime
392
+ if (theFire.reportedAt < policyInfo.activatedAt) {
393
+ revert ErrorFireProductPolicyNotYetActive(policyNftId, policyInfo.activatedAt);
394
+ }
395
+
396
+ if (theFire.reportedAt >= policyInfo.expiredAt) {
397
+ revert ErrorFireProductPolicyExpired(policyNftId, policyInfo.expiredAt);
398
+ }
399
+ }
400
+
401
+ function _getClaimAmount(
402
+ NftId policyNftId,
403
+ Amount sumInsured,
404
+ DamageLevel damageLevel
405
+ )
406
+ internal
407
+ view
408
+ returns (Amount)
409
+ {
410
+ Amount claimAmount = sumInsured.multiplyWith(_damageLevelToPayoutPercentage(damageLevel));
411
+ Amount maxPayoutRemaining = _getInstanceReader().getRemainingClaimableAmount(policyNftId);
412
+
413
+ // if payout is higher than the remaining maximum payout, then claim what is remaining
414
+ if (maxPayoutRemaining < claimAmount) {
415
+ return maxPayoutRemaining;
416
+ }
417
+
418
+ return claimAmount;
419
+ }
420
+
421
+ function _damageLevelToPayoutPercentage(DamageLevel damageLevel) internal pure returns (UFixed) {
422
+ if (damageLevel.eq(DAMAGE_SMALL())) {
423
+ return UFixedLib.toUFixed(25, -2);
424
+ } else if (damageLevel.eq(DAMAGE_MEDIUM())) {
425
+ return UFixedLib.toUFixed(5, -1);
426
+ } else if (damageLevel.eq(DAMAGE_LARGE())) {
427
+ return UFixedLib.toUFixed(1);
428
+ } else {
429
+ revert ErrorFireProductUnknownDamageLevel(damageLevel);
430
+ }
431
+ }
432
+
433
+ function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
434
+ function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
435
+ function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
436
+ }
@@ -0,0 +1,45 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {BasicProductAuthorization} from "../../product/BasicProductAuthorization.sol";
5
+ import {FireProduct} from "./FireProduct.sol";
6
+ import {IAccess} from "../../../contracts/authorization/IAccess.sol";
7
+ import {PUBLIC_ROLE} from "../../../contracts/type/RoleId.sol";
8
+
9
+
10
+ contract FireProductAuthorization
11
+ is BasicProductAuthorization
12
+ {
13
+
14
+ constructor(string memory poolName)
15
+ BasicProductAuthorization(poolName)
16
+ {}
17
+
18
+ function _setupTargetAuthorizations()
19
+ internal
20
+ virtual override
21
+ {
22
+ super._setupTargetAuthorizations();
23
+ IAccess.FunctionInfo[] storage functions;
24
+
25
+ // authorize public role (open access to any account, only allows to lock target)
26
+ functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
27
+ // fully public functions
28
+ _authorize(functions, FireProduct.approveTokenHandler.selector, "approveTokenHandler");
29
+ _authorize(functions, FireProduct.createApplication.selector, "createApplication");
30
+
31
+ // only owner
32
+ _authorize(functions, FireProduct.createPolicy.selector, "createPolicy");
33
+ _authorize(functions, FireProduct.decline.selector, "decline");
34
+ _authorize(functions, FireProduct.expire.selector, "expire");
35
+ _authorize(functions, FireProduct.close.selector, "close");
36
+
37
+ // only policy nft owner
38
+ _authorize(functions, FireProduct.submitClaim.selector, "submitClaim");
39
+
40
+ // TODO: add custom role for fire reporter
41
+ _authorize(functions, FireProduct.reportFire.selector, "reportFire");
42
+ }
43
+
44
+ }
45
+
@@ -0,0 +1,26 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
5
+
6
+ /// @dev FireUSD is a stablecoin with 6 decimals and an initial supply of 1 Billion tokens.
7
+ contract FireUSD is ERC20 {
8
+
9
+ string public constant NAME = "FireUSD";
10
+ string public constant SYMBOL = "HOT";
11
+ uint8 public constant DECIMALS = 6;
12
+ uint256 public constant INITIAL_SUPPLY = 10**12 * 10**DECIMALS; // 1'000'000'000'000
13
+
14
+ constructor()
15
+ ERC20(NAME, SYMBOL)
16
+ {
17
+ _mint(
18
+ _msgSender(),
19
+ INITIAL_SUPPLY
20
+ );
21
+ }
22
+
23
+ function decimals() public pure override returns(uint8) {
24
+ return DECIMALS;
25
+ }
26
+ }
@@ -0,0 +1,57 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {Amount} from "../../type/Amount.sol";
7
+ import {BasicDistribution} from "../../distribution/BasicDistribution.sol";
8
+ import {IAuthorization} from "../../authorization/IAuthorization.sol";
9
+ import {NftId} from "../../type/NftId.sol";
10
+
11
+
12
+ contract SimpleDistribution is
13
+ BasicDistribution
14
+ {
15
+
16
+ constructor(
17
+ address registry,
18
+ NftId productNftId,
19
+ IAuthorization authorization,
20
+ address initialOwner,
21
+ address token
22
+ )
23
+ {
24
+ initialize(
25
+ registry,
26
+ productNftId,
27
+ authorization,
28
+ initialOwner,
29
+ "SimpleDistribution",
30
+ token);
31
+ }
32
+
33
+ function initialize(
34
+ address registry,
35
+ NftId productNftId,
36
+ IAuthorization authorization,
37
+ address initialOwner,
38
+ string memory name,
39
+ address token
40
+ )
41
+ public
42
+ virtual
43
+ initializer()
44
+ {
45
+ _initializeBasicDistribution(
46
+ registry,
47
+ productNftId,
48
+ authorization,
49
+ initialOwner,
50
+ name,
51
+ token);
52
+ }
53
+
54
+ function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
55
+ function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
56
+ function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
57
+ }