@etherisc/gif-next 0.0.2-8ce6c0b-352 → 0.0.2-8d681eb-812

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 (533) hide show
  1. package/README.md +99 -8
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +659 -260
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1279 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +456 -24
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +507 -206
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +215 -18
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +265 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +473 -17
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +152 -491
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +431 -36
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +83 -387
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +448 -386
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +168 -130
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +84 -198
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +278 -134
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1445 -0
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2002 -0
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
  49. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1388 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1152 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1612 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2389 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  67. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +471 -48
  69. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +222 -64
  71. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  72. package/artifacts/contracts/instance/Instance.sol/Instance.json +475 -144
  73. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1102 -390
  75. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +369 -68
  77. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1502 -539
  79. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +239 -238
  81. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +106 -106
  83. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +863 -726
  85. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  87. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  89. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  90. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  92. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  94. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  96. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  98. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  103. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  104. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  105. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  106. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +108 -355
  107. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +429 -37
  109. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +91 -140
  112. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
  114. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +84 -323
  116. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  117. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +153 -190
  118. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  119. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +132 -98
  120. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  121. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +156 -421
  122. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  123. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +430 -35
  124. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  125. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +336 -209
  126. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  127. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +153 -107
  128. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  129. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +212 -35
  130. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  131. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +120 -212
  132. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  133. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +460 -308
  134. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  135. package/artifacts/contracts/pool/Pool.sol/Pool.json +110 -392
  136. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  137. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  138. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  139. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +673 -552
  140. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  141. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +173 -107
  142. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  143. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +194 -178
  144. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  145. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +110 -100
  146. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  147. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +261 -439
  148. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  149. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +430 -35
  150. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  151. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +415 -234
  152. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  153. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +150 -124
  154. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  155. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +136 -9
  156. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  157. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +308 -16
  158. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  159. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +365 -104
  160. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  161. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +157 -83
  162. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  163. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +245 -233
  164. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  165. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +88 -8
  166. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  167. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +459 -309
  168. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  169. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +349 -0
  170. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +151 -109
  172. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  173. package/artifacts/contracts/product/PricingService.sol/PricingService.json +232 -333
  174. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +119 -141
  176. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  177. package/artifacts/contracts/product/Product.sol/Product.json +253 -431
  178. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  179. package/artifacts/contracts/product/RiskService.sol/RiskService.json +688 -0
  180. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  181. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +736 -0
  182. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  183. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  184. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  185. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +342 -42
  186. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  187. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
  188. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  189. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  190. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  192. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/Registry.sol/Registry.json +548 -103
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  195. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +763 -382
  196. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  197. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1053 -0
  198. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  199. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
  200. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  201. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +104 -90
  202. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  203. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2140 -0
  204. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  205. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  206. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  207. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +487 -253
  208. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  209. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +489 -20
  210. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  211. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +15 -15
  212. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  213. package/artifacts/contracts/shared/Component.sol/Component.json +67 -277
  214. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  215. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +513 -597
  216. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  217. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +142 -138
  218. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  219. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +57 -111
  220. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +616 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  228. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +80 -100
  230. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  231. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +476 -257
  232. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  233. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +91 -140
  234. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  236. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  237. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  238. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  239. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  240. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  241. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  242. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  243. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
  244. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  245. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  246. package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
  247. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  248. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  249. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  250. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +83 -322
  251. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  252. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  253. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  254. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  255. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  256. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  257. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  258. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  259. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  260. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  261. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  262. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -97
  263. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  264. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  265. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  266. package/artifacts/contracts/shared/Service.sol/Service.json +57 -111
  267. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  268. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
  269. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  270. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  271. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  272. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  273. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  274. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +196 -143
  275. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  276. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +152 -20
  277. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  278. package/artifacts/contracts/staking/Staking.sol/Staking.json +280 -397
  279. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  280. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  281. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  282. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  283. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  284. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +136 -105
  285. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  286. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +41 -73
  287. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  288. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +205 -168
  289. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  290. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +113 -95
  291. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  292. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +209 -149
  293. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  294. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +95 -49
  295. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  296. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Amount.sol/AmountLib.json +63 -10
  298. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  300. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  302. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  304. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/Fee.sol/FeeLib.json +98 -37
  306. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  307. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  308. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  309. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  310. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  312. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  313. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  314. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  316. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  318. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  320. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  322. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  324. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
  326. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  328. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  330. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  332. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  334. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  336. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  337. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  338. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +109 -35
  339. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  340. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  341. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  342. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  343. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  344. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  345. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +81 -80
  346. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  347. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  348. package/contracts/accounting/AccountingService.sol +262 -0
  349. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  350. package/contracts/accounting/IAccountingService.sol +45 -0
  351. package/contracts/authorization/AccessAdmin.sol +462 -264
  352. package/contracts/authorization/AccessAdminLib.sol +387 -0
  353. package/contracts/authorization/AccessManagerCloneable.sol +146 -4
  354. package/contracts/authorization/Authorization.sol +159 -203
  355. package/contracts/authorization/IAccess.sol +25 -6
  356. package/contracts/authorization/IAccessAdmin.sol +80 -79
  357. package/contracts/authorization/IAuthorization.sol +9 -36
  358. package/contracts/authorization/IServiceAuthorization.sol +57 -17
  359. package/contracts/authorization/ServiceAuthorization.sol +254 -24
  360. package/contracts/distribution/BasicDistribution.sol +20 -28
  361. package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
  362. package/contracts/distribution/Distribution.sol +39 -95
  363. package/contracts/distribution/DistributionService.sol +237 -151
  364. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  365. package/contracts/distribution/IDistributionComponent.sol +5 -12
  366. package/contracts/distribution/IDistributionService.sol +44 -33
  367. package/contracts/examples/fire/DamageLevel.sol +59 -0
  368. package/contracts/examples/fire/FirePool.sol +86 -0
  369. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  370. package/contracts/examples/fire/FireProduct.sol +433 -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 +81 -0
  374. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  375. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  376. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  377. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  378. package/contracts/examples/unpermissioned/SimpleProduct.sol +373 -0
  379. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  380. package/contracts/instance/BundleSet.sol +42 -38
  381. package/contracts/instance/IInstance.sol +96 -43
  382. package/contracts/instance/IInstanceService.sol +43 -30
  383. package/contracts/instance/Instance.sol +183 -96
  384. package/contracts/instance/InstanceAdmin.sol +251 -162
  385. package/contracts/instance/InstanceAuthorizationV3.sol +114 -56
  386. package/contracts/instance/InstanceReader.sol +372 -72
  387. package/contracts/instance/InstanceService.sol +270 -199
  388. package/contracts/instance/InstanceServiceManager.sol +6 -7
  389. package/contracts/instance/InstanceStore.sol +24 -2
  390. package/contracts/instance/RiskSet.sol +118 -0
  391. package/contracts/instance/base/ObjectCounter.sol +1 -2
  392. package/contracts/instance/base/ObjectLifecycle.sol +11 -4
  393. package/contracts/instance/base/ObjectSet.sol +31 -33
  394. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  395. package/contracts/instance/module/IBundle.sol +6 -5
  396. package/contracts/instance/module/IComponents.sol +30 -19
  397. package/contracts/instance/module/IDistribution.sol +21 -9
  398. package/contracts/instance/module/IPolicy.sol +50 -29
  399. package/contracts/instance/module/IRisk.sol +5 -0
  400. package/contracts/mock/Dip.sol +1 -1
  401. package/contracts/oracle/BasicOracle.sol +1 -4
  402. package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
  403. package/contracts/oracle/IOracle.sol +9 -4
  404. package/contracts/oracle/IOracleService.sol +2 -1
  405. package/contracts/oracle/Oracle.sol +9 -25
  406. package/contracts/oracle/OracleService.sol +113 -81
  407. package/contracts/oracle/OracleServiceManager.sol +6 -6
  408. package/contracts/pool/BasicPool.sol +37 -28
  409. package/contracts/pool/BasicPoolAuthorization.sol +40 -10
  410. package/contracts/pool/BundleService.sol +194 -83
  411. package/contracts/pool/BundleServiceManager.sol +6 -6
  412. package/contracts/pool/IBundleService.sol +31 -22
  413. package/contracts/pool/IPoolComponent.sol +21 -10
  414. package/contracts/pool/IPoolService.sol +90 -75
  415. package/contracts/pool/Pool.sol +145 -113
  416. package/contracts/pool/PoolLib.sol +260 -0
  417. package/contracts/pool/PoolService.sol +517 -220
  418. package/contracts/pool/PoolServiceManager.sol +4 -4
  419. package/contracts/product/ApplicationService.sol +87 -43
  420. package/contracts/product/ApplicationServiceManager.sol +4 -4
  421. package/contracts/product/BasicProduct.sol +12 -45
  422. package/contracts/product/BasicProductAuthorization.sol +30 -12
  423. package/contracts/product/ClaimService.sol +366 -152
  424. package/contracts/product/ClaimServiceManager.sol +4 -4
  425. package/contracts/product/IApplicationService.sol +9 -2
  426. package/contracts/product/IClaimService.sol +44 -8
  427. package/contracts/product/IPolicyService.sol +53 -36
  428. package/contracts/product/IPricingService.sol +11 -10
  429. package/contracts/product/IProductComponent.sol +27 -5
  430. package/contracts/product/{IProductService.sol → IRiskService.sol} +8 -8
  431. package/contracts/product/PolicyService.sol +458 -269
  432. package/contracts/product/PolicyServiceLib.sol +86 -0
  433. package/contracts/product/PolicyServiceManager.sol +4 -4
  434. package/contracts/product/PricingService.sol +69 -60
  435. package/contracts/product/PricingServiceManager.sol +4 -4
  436. package/contracts/product/Product.sol +168 -93
  437. package/contracts/product/RiskService.sol +154 -0
  438. package/contracts/product/RiskServiceManager.sol +39 -0
  439. package/contracts/registry/ChainNft.sol +72 -40
  440. package/contracts/registry/IRegistry.sol +64 -28
  441. package/contracts/registry/IRegistryService.sol +5 -12
  442. package/contracts/registry/IRelease.sol +29 -0
  443. package/contracts/registry/ITransferInterceptor.sol +1 -2
  444. package/contracts/registry/Registry.sol +357 -203
  445. package/contracts/registry/RegistryAdmin.sol +110 -287
  446. package/contracts/registry/RegistryAuthorization.sol +277 -0
  447. package/contracts/registry/RegistryService.sol +37 -48
  448. package/contracts/registry/RegistryServiceManager.sol +3 -3
  449. package/contracts/registry/ReleaseAdmin.sol +195 -0
  450. package/contracts/registry/ReleaseLifecycle.sol +8 -3
  451. package/contracts/registry/ReleaseRegistry.sol +275 -242
  452. package/contracts/registry/ServiceAuthorizationV3.sol +198 -57
  453. package/contracts/registry/TokenRegistry.sol +12 -13
  454. package/contracts/shared/Component.sol +65 -135
  455. package/contracts/shared/ComponentService.sol +435 -349
  456. package/contracts/shared/ComponentServiceManager.sol +8 -5
  457. package/contracts/shared/ComponentVerifyingService.sol +28 -17
  458. package/contracts/shared/ContractLib.sol +292 -0
  459. package/contracts/shared/IComponent.sol +5 -17
  460. package/contracts/shared/IComponentService.sol +42 -42
  461. package/contracts/shared/IInstanceLinkedComponent.sol +6 -32
  462. package/contracts/shared/ILifecycle.sol +3 -1
  463. package/contracts/shared/INftOwnable.sol +2 -0
  464. package/contracts/shared/IPolicyHolder.sol +12 -22
  465. package/contracts/shared/IRegisterable.sol +23 -1
  466. package/contracts/shared/IService.sol +3 -5
  467. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +11 -3
  468. package/contracts/shared/InstanceLinkedComponent.sol +73 -50
  469. package/contracts/shared/KeyValueStore.sol +1 -1
  470. package/contracts/shared/Lifecycle.sol +15 -4
  471. package/contracts/shared/NftOwnable.sol +31 -11
  472. package/contracts/shared/PolicyHolder.sol +17 -57
  473. package/contracts/shared/Registerable.sol +52 -21
  474. package/contracts/shared/RegistryLinked.sol +9 -14
  475. package/contracts/shared/Service.sol +20 -35
  476. package/contracts/shared/TokenHandler.sol +310 -26
  477. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  478. package/contracts/staking/IStaking.sol +25 -13
  479. package/contracts/staking/IStakingService.sol +16 -4
  480. package/contracts/staking/Staking.sol +103 -71
  481. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +95 -45
  482. package/contracts/staking/StakingManager.sol +8 -6
  483. package/contracts/staking/StakingReader.sol +18 -21
  484. package/contracts/staking/StakingService.sol +90 -37
  485. package/contracts/staking/StakingServiceManager.sol +6 -5
  486. package/contracts/staking/StakingStore.sol +2 -1
  487. package/contracts/staking/TargetManagerLib.sol +8 -4
  488. package/contracts/type/Amount.sol +27 -5
  489. package/contracts/type/Blocknumber.sol +7 -1
  490. package/contracts/type/ClaimId.sol +6 -1
  491. package/contracts/type/Fee.sol +8 -8
  492. package/contracts/type/Key32.sol +2 -2
  493. package/contracts/type/Key32Set.sol +62 -0
  494. package/contracts/type/NftId.sol +7 -0
  495. package/contracts/type/ObjectType.sol +72 -36
  496. package/contracts/type/PayoutId.sol +10 -10
  497. package/contracts/type/Referral.sol +1 -0
  498. package/contracts/type/RiskId.sol +38 -6
  499. package/contracts/type/RoleId.sol +61 -55
  500. package/contracts/type/Seconds.sol +21 -1
  501. package/contracts/type/Selector.sol +5 -0
  502. package/contracts/type/StateId.sol +15 -1
  503. package/contracts/type/Timestamp.sol +10 -5
  504. package/contracts/type/UFixed.sol +56 -126
  505. package/contracts/type/Version.sol +54 -5
  506. package/contracts/upgradeability/ProxyManager.sol +79 -43
  507. package/contracts/upgradeability/Versionable.sol +6 -3
  508. package/package.json +5 -4
  509. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  510. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  511. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  512. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  513. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  514. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  515. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  516. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  517. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  518. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  519. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  520. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  521. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  522. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  523. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  524. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  525. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -460
  526. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  527. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  528. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  529. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  530. package/contracts/instance/module/IAccess.sol +0 -46
  531. package/contracts/product/ProductService.sol +0 -99
  532. package/contracts/product/ProductServiceManager.sol +0 -39
  533. package/contracts/shared/InitializableCustom.sol +0 -177
@@ -12,16 +12,15 @@ contract InstanceServiceManager is ProxyManager {
12
12
  /// @dev initializes proxy manager with instance service implementation
13
13
  constructor(
14
14
  address authority,
15
- address registryAddress,
15
+ address registry,
16
16
  bytes32 salt
17
17
  )
18
- ProxyManager(registryAddress)
19
18
  {
20
- InstanceService instSrv = new InstanceService{salt: salt}();
21
- // bytes memory initCode = type(InstanceService).creationCode;
22
- bytes memory data = abi.encode(registryAddress, address(this), authority);
23
- IVersionable versionable = deployDetermenistic(
24
- address(instSrv),
19
+ InstanceService svc = new InstanceService{salt: salt}();
20
+ bytes memory data = abi.encode(authority, registry);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
25
24
  data,
26
25
  salt);
27
26
 
@@ -7,10 +7,10 @@ import {Amount} from "../type/Amount.sol";
7
7
  import {Key32} from "../type/Key32.sol";
8
8
  import {NftId} from "../type/NftId.sol";
9
9
  import {ClaimId} from "../type/ClaimId.sol";
10
- import {ObjectType, BUNDLE, POLICY, POOL, PRODUCT, COMPONENT, DISTRIBUTOR, DISTRIBUTOR_TYPE} from "../type/ObjectType.sol";
10
+ import {ObjectType, BUNDLE, POLICY, POOL, PREMIUM, PRODUCT, COMPONENT, DISTRIBUTOR, FEE} from "../type/ObjectType.sol";
11
11
  import {RequestId} from "../type/RequestId.sol";
12
12
  import {RiskId} from "../type/RiskId.sol";
13
- import {StateId} from "../type/StateId.sol";
13
+ import {StateId, KEEP_STATE} from "../type/StateId.sol";
14
14
  import {ReferralId} from "../type/Referral.sol";
15
15
  import {DistributorType} from "../type/DistributorType.sol";
16
16
  import {PayoutId} from "../type/PayoutId.sol";
@@ -85,6 +85,17 @@ contract InstanceStore is
85
85
  _update(_toNftKey32(productNftId, PRODUCT()), abi.encode(info), newState);
86
86
  }
87
87
 
88
+
89
+ //--- Fee -----------------------------------------------------------//
90
+ function createFee(NftId productNftId, IComponents.FeeInfo memory info) external restricted() {
91
+ _create(_toNftKey32(productNftId, FEE()), abi.encode(info));
92
+ }
93
+
94
+ // Fee only has one state, so no change change possible
95
+ function updateFee(NftId productNftId, IComponents.FeeInfo memory info) external restricted() {
96
+ _update(_toNftKey32(productNftId, FEE()), abi.encode(info), KEEP_STATE());
97
+ }
98
+
88
99
  //--- Pool --------------------------------------------------------------//
89
100
 
90
101
  function createPool(
@@ -116,6 +127,7 @@ contract InstanceStore is
116
127
 
117
128
  //--- Distributor -------------------------------------------------------//
118
129
  function createDistributor(NftId distributorNftId, IDistribution.DistributorInfo memory info) external restricted() {
130
+ _registerBalanceTarget(distributorNftId);
119
131
  _create(_toNftKey32(distributorNftId, DISTRIBUTOR()), abi.encode(info));
120
132
  }
121
133
 
@@ -194,6 +206,16 @@ contract InstanceStore is
194
206
  _updateState(_toNftKey32(policyNftId, POLICY()), newState);
195
207
  }
196
208
 
209
+
210
+ //--- Premium (Policy) ----------------------------------------------//
211
+ function createPremium(NftId policyNftId, IPolicy.PremiumInfo memory premium) external restricted() {
212
+ _create(_toNftKey32(policyNftId, PREMIUM()), abi.encode(premium));
213
+ }
214
+
215
+ function updatePremiumState(NftId policyNftId, StateId newState) external restricted() {
216
+ _updateState(_toNftKey32(policyNftId, PREMIUM()), newState);
217
+ }
218
+
197
219
  //--- Claim -------------------------------------------------------------//
198
220
  function createClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim) external restricted() {
199
221
  _create(_toClaimKey32(policyNftId, claimId), abi.encode(claim));
@@ -0,0 +1,118 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Key32} from "../type/Key32.sol";
5
+ import {LibNftIdSet} from "../type/NftIdSet.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectSet} from "./base/ObjectSet.sol";
8
+ import {ObjectSetHelperLib} from "./base/ObjectSetHelperLib.sol";
9
+ import {RiskIdLib, RiskId} from "../type/RiskId.sol";
10
+
11
+ /// @dev RiskSet manages the risks and its active policies per product.
12
+ contract RiskSet is
13
+ ObjectSet
14
+ {
15
+
16
+ event LogRiskSetPolicyLinked(RiskId riskId, NftId policyNftId);
17
+ event LogRiskSetPolicyUnlinked(RiskId riskId, NftId policyNftId);
18
+
19
+ event LogRiskSetRiskAdded(NftId productNftId, RiskId riskId);
20
+ event LogRiskSetRiskActive(NftId poolNftId, RiskId riskId);
21
+ event LogRiskSetRiskPaused(NftId poolNftId, RiskId riskId);
22
+ event LogRiskSetRiskArchived(NftId poolNftId, RiskId riskId);
23
+
24
+ error ErrorRiskSetRiskLocked(RiskId riskId, NftId policyNftId);
25
+ error ErrorRiskSetRiskUnknown(RiskId riskId);
26
+ error ErrorRiskSetRiskNotRegistered(RiskId riskId);
27
+
28
+ mapping(RiskId riskId => LibNftIdSet.Set policies) internal _activePolicies;
29
+
30
+ /// @dev links a policy to its bundle
31
+ function linkPolicy(NftId productNftId, RiskId riskId, NftId policyNftId) external restricted() {
32
+
33
+ // ensure risk is active (in active set) and registered with this instance
34
+ if (!_isActive(productNftId, riskId.toKey32())) {
35
+ revert ErrorRiskSetRiskLocked(riskId, policyNftId);
36
+ }
37
+
38
+ LibNftIdSet.add(_activePolicies[riskId], policyNftId);
39
+ emit LogRiskSetPolicyLinked(riskId, policyNftId);
40
+ }
41
+
42
+ /// @dev Unlinks a policy from its risk.
43
+ function unlinkPolicy(NftId productNftId, RiskId riskId, NftId policyNftId) external restricted() {
44
+
45
+ // ensure risk is registered with this instance
46
+ if (!_contains(productNftId, riskId.toKey32())) {
47
+ revert ErrorRiskSetRiskUnknown(riskId);
48
+ }
49
+
50
+ LibNftIdSet.remove(_activePolicies[riskId], policyNftId);
51
+ emit LogRiskSetPolicyUnlinked(riskId, policyNftId);
52
+ }
53
+
54
+ /// @dev add a new risk to a product registered with this instance
55
+ // the corresponding product is fetched via instance reader
56
+ function add(RiskId riskId) external restricted() {
57
+ NftId productNftId = ObjectSetHelperLib.getProductNftId(_instanceAddress, riskId);
58
+
59
+ // ensure product is registered with instance
60
+ if(productNftId.eqz()) {
61
+ revert ErrorRiskSetRiskNotRegistered(riskId);
62
+ }
63
+
64
+ _add(productNftId, riskId.toKey32());
65
+ emit LogRiskSetRiskAdded(productNftId, riskId);
66
+ }
67
+
68
+ /// @dev Applications linked to active risks may be underwritten
69
+ function activate(RiskId riskId) external restricted() {
70
+ NftId productNftId = ObjectSetHelperLib.getProductNftId(_instanceAddress, riskId);
71
+ _activate(productNftId, riskId.toKey32());
72
+ emit LogRiskSetRiskActive(productNftId, riskId);
73
+ }
74
+
75
+ /// @dev Applications linked to paused/archived risks may not be underwritten
76
+ function pause(RiskId riskId) external restricted() {
77
+ NftId productNftId = ObjectSetHelperLib.getProductNftId(_instanceAddress, riskId);
78
+ _deactivate(productNftId, riskId.toKey32());
79
+ emit LogRiskSetRiskPaused(productNftId, riskId);
80
+ }
81
+
82
+ function checkRisk(NftId productNftId, RiskId riskId)
83
+ public
84
+ view
85
+ returns (bool exists, bool active)
86
+ {
87
+ Key32 riskKey32 = riskId.toKey32();
88
+ exists = _contains(productNftId, riskKey32);
89
+
90
+ if (exists) {
91
+ active = _isActive(productNftId, riskKey32);
92
+ }
93
+ }
94
+
95
+ function risks(NftId productNftId) external view returns(uint256) {
96
+ return _objects(productNftId);
97
+ }
98
+
99
+ function getRiskId(NftId productNftId, uint256 idx) external view returns(RiskId riskId) {
100
+ return RiskIdLib.toRiskId(_getObject(productNftId, idx).toKeyId());
101
+ }
102
+
103
+ function activeRisks(NftId productNftId) external view returns(uint256) {
104
+ return _activeObjs(productNftId);
105
+ }
106
+
107
+ function getActiveRiskId(NftId productNftId, uint256 idx) external view returns(RiskId riskId) {
108
+ return RiskIdLib.toRiskId(_getActiveObject(productNftId, idx).toKeyId());
109
+ }
110
+
111
+ function linkedPolicies(RiskId riskId) external view returns(uint256) {
112
+ return LibNftIdSet.size(_activePolicies[riskId]);
113
+ }
114
+
115
+ function getLinkedPolicyNftId(RiskId riskId, uint256 idx) external view returns(NftId policyNftId) {
116
+ return LibNftIdSet.getElementAt(_activePolicies[riskId], idx);
117
+ }
118
+ }
@@ -11,9 +11,8 @@ contract ObjectCounter {
11
11
  // TODO refactor risk id
12
12
  // mapping(NftId productNftId => uint64 risks) private _riskCounter;
13
13
 
14
- uint256 private _requestCounter;
14
+ uint256 private _requestCounter = 0;
15
15
 
16
- // TODO introduce RequestId (uint64)
17
16
  function _createNextRequestId() internal returns (RequestId requestId) {
18
17
  _requestCounter++;
19
18
  requestId = RequestIdLib.toRequestId(_requestCounter);
@@ -3,7 +3,7 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
5
 
6
- import {COMPONENT, BUNDLE, POLICY, REQUEST, RISK, CLAIM, PAYOUT, POOL, PRODUCT, DISTRIBUTION, DISTRIBUTOR, DISTRIBUTOR_TYPE, REFERRAL} from "../../type/ObjectType.sol";
6
+ import {COMPONENT, BUNDLE, POLICY, REQUEST, RISK, CLAIM, PAYOUT, POOL, PREMIUM, PRODUCT, DISTRIBUTION, DISTRIBUTOR, DISTRIBUTOR_TYPE, REFERRAL, FEE} from "../../type/ObjectType.sol";
7
7
  import {ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, COLLATERALIZED, REVOKED, SUBMITTED, CONFIRMED, DECLINED, EXPECTED, PAID, FULFILLED, FAILED, CANCELLED} from "../../type/StateId.sol";
8
8
  import {Lifecycle} from "../../shared/Lifecycle.sol";
9
9
 
@@ -23,6 +23,7 @@ contract ObjectLifecycle is
23
23
  _setupBundleLifecycle();
24
24
  _setupComponentLifecycle();
25
25
  _setupPolicyLifecycle();
26
+ _setupPremiumLifecycle();
26
27
  _setupClaimLifecycle();
27
28
  _setupPayoutLifecycle();
28
29
  _setupRiskLifecycle();
@@ -54,13 +55,17 @@ contract ObjectLifecycle is
54
55
  setStateTransition(POLICY(), APPLIED(), REVOKED());
55
56
  setStateTransition(POLICY(), APPLIED(), DECLINED());
56
57
  setStateTransition(POLICY(), APPLIED(), COLLATERALIZED());
57
- setStateTransition(POLICY(), APPLIED(), ACTIVE());
58
- setStateTransition(POLICY(), COLLATERALIZED(), ACTIVE());
59
- setStateTransition(POLICY(), ACTIVE(), CLOSED());
58
+ setStateTransition(POLICY(), COLLATERALIZED(), CLOSED());
59
+ }
60
+
61
+ function _setupPremiumLifecycle() private {
62
+ setInitialState(PREMIUM(), EXPECTED());
63
+ setStateTransition(PREMIUM(), EXPECTED(), PAID());
60
64
  }
61
65
 
62
66
  function _setupClaimLifecycle() private {
63
67
  setInitialState(CLAIM(), SUBMITTED());
68
+ setStateTransition(CLAIM(), SUBMITTED(), REVOKED());
64
69
  setStateTransition(CLAIM(), SUBMITTED(), CONFIRMED());
65
70
  setStateTransition(CLAIM(), SUBMITTED(), DECLINED());
66
71
  setStateTransition(CLAIM(), CONFIRMED(), CLOSED());
@@ -69,6 +74,7 @@ contract ObjectLifecycle is
69
74
  function _setupPayoutLifecycle() private {
70
75
  setInitialState(PAYOUT(), EXPECTED());
71
76
  setStateTransition(PAYOUT(), EXPECTED(), PAID());
77
+ setStateTransition(PAYOUT(), EXPECTED(), CANCELLED());
72
78
  }
73
79
 
74
80
  function _setupRiskLifecycle() private {
@@ -94,6 +100,7 @@ contract ObjectLifecycle is
94
100
  // dummy lifecycle only
95
101
  function _setUpProductLifecycle() private {
96
102
  setInitialState(PRODUCT(), ACTIVE());
103
+ setInitialState(FEE(), ACTIVE());
97
104
  }
98
105
 
99
106
  // dummy lifecycles only
@@ -3,77 +3,75 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Cloneable} from "./Cloneable.sol";
5
5
 
6
- import {IInstance} from "../IInstance.sol";
7
- import {INSTANCE} from "../../type/ObjectType.sol";
8
- import {InstanceReader} from "../InstanceReader.sol";
9
- import {IRegistry} from "../../registry/IRegistry.sol";
10
- import {LibNftIdSet} from "../../type/NftIdSet.sol";
6
+ import {LibKey32Set} from "../../type/Key32Set.sol";
11
7
  import {NftId} from "../../type/NftId.sol";
8
+ import {Key32} from "../../type/Key32.sol";
12
9
 
13
10
  contract ObjectSet is
14
11
  Cloneable
15
12
  {
13
+ using LibKey32Set for LibKey32Set.Set;
16
14
 
17
15
  event LogObjectSetInitialized(address instance);
18
16
 
19
17
  error ErrorObjectSetNftIdInvalid(NftId instanceNftId);
20
18
 
21
- mapping(NftId compnentNftId => LibNftIdSet.Set objects) internal _activeObjects;
22
- mapping(NftId compnentNftId => LibNftIdSet.Set objects) internal _allObjects;
23
- IInstance internal _instance; // store instance address -> more flexible, instance may not be registered during ObjectSet initialization
19
+ mapping(NftId compnentNftId => LibKey32Set.Set objects) internal _activeObjects;
20
+ mapping(NftId compnentNftId => LibKey32Set.Set objects) internal _allObjects;
21
+ address internal _instanceAddress;
24
22
 
25
23
  /// @dev This initializer needs to be called from the instance itself.
26
- function initialize()
24
+ function initialize(address authority, address registry)
27
25
  external
28
26
  initializer()
29
27
  {
30
- _instance = IInstance(msg.sender);
31
- __Cloneable_init(_instance.authority(), address(_instance.getRegistry()));
28
+ _instanceAddress = msg.sender;
29
+ __Cloneable_init(authority, registry);
32
30
 
33
- emit LogObjectSetInitialized(address(_instance));
31
+ emit LogObjectSetInitialized(address(_instanceAddress));
34
32
  }
35
33
 
36
- function getInstance() external view returns (IInstance) {
37
- return _instance;
34
+ function getInstanceAddress() external view returns (address) {
35
+ return _instanceAddress;
38
36
  }
39
37
 
40
- function _add(NftId componentNftId, NftId objectNftId) internal {
41
- LibNftIdSet.Set storage allSet = _allObjects[componentNftId];
42
- LibNftIdSet.Set storage activeSet = _activeObjects[componentNftId];
38
+ function _add(NftId componentNftId, Key32 key) internal {
39
+ LibKey32Set.Set storage allSet = _allObjects[componentNftId];
40
+ LibKey32Set.Set storage activeSet = _activeObjects[componentNftId];
43
41
 
44
- LibNftIdSet.add(allSet, objectNftId);
45
- LibNftIdSet.add(activeSet, objectNftId);
42
+ allSet.add(key);
43
+ activeSet.add(key);
46
44
  }
47
45
 
48
- function _activate(NftId componentNftId, NftId objectNftId) internal {
49
- LibNftIdSet.add(_activeObjects[componentNftId], objectNftId);
46
+ function _activate(NftId componentNftId, Key32 key) internal {
47
+ _activeObjects[componentNftId].add(key);
50
48
  }
51
49
 
52
- function _deactivate(NftId componentNftId, NftId objectNftId) internal {
53
- LibNftIdSet.remove(_activeObjects[componentNftId], objectNftId);
50
+ function _deactivate(NftId componentNftId, Key32 key) internal {
51
+ _activeObjects[componentNftId].remove(key);
54
52
  }
55
53
 
56
54
  function _objects(NftId componentNftId) internal view returns (uint256) {
57
- return LibNftIdSet.size(_allObjects[componentNftId]);
55
+ return _allObjects[componentNftId].size();
58
56
  }
59
57
 
60
- function _contains(NftId componentNftId, NftId objectNftId) internal view returns (bool) {
61
- return LibNftIdSet.contains(_allObjects[componentNftId], objectNftId);
58
+ function _contains(NftId componentNftId, Key32 key) internal view returns (bool) {
59
+ return _allObjects[componentNftId].contains(key);
62
60
  }
63
61
 
64
- function _getObject(NftId componentNftId, uint256 idx) internal view returns (NftId) {
65
- return LibNftIdSet.getElementAt(_allObjects[componentNftId], idx);
62
+ function _getObject(NftId componentNftId, uint256 idx) internal view returns (Key32) {
63
+ return _allObjects[componentNftId].getElementAt(idx);
66
64
  }
67
65
 
68
66
  function _activeObjs(NftId componentNftId) internal view returns (uint256) {
69
- return LibNftIdSet.size(_activeObjects[componentNftId]);
67
+ return _activeObjects[componentNftId].size();
70
68
  }
71
69
 
72
- function _isActive(NftId componentNftId, NftId objectNftId) internal view returns (bool) {
73
- return LibNftIdSet.contains(_activeObjects[componentNftId], objectNftId);
70
+ function _isActive(NftId componentNftId, Key32 key) internal view returns (bool) {
71
+ return _activeObjects[componentNftId].contains(key);
74
72
  }
75
73
 
76
- function _getActiveObject(NftId componentNftId, uint256 idx) internal view returns (NftId) {
77
- return LibNftIdSet.getElementAt(_activeObjects[componentNftId], idx);
74
+ function _getActiveObject(NftId componentNftId, uint256 idx) internal view returns (Key32) {
75
+ return _activeObjects[componentNftId].getElementAt(idx);
78
76
  }
79
77
  }
@@ -0,0 +1,30 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IBundle} from "../module/IBundle.sol";
5
+ import {IInstance} from "../IInstance.sol";
6
+ import {IRisk} from "../module/IRisk.sol";
7
+ import {NftId} from "../../type/NftId.sol";
8
+ import {RiskId} from "../../type/RiskId.sol";
9
+
10
+
11
+ library ObjectSetHelperLib {
12
+
13
+ function getRiskInfo(address instanceAddress, RiskId riskId) public view returns (IRisk.RiskInfo memory) {
14
+
15
+ return IInstance(instanceAddress).getInstanceReader().getRiskInfo(riskId);
16
+ }
17
+
18
+ function getProductNftId(address instanceAddress, RiskId riskId) public view returns (NftId) {
19
+ return getRiskInfo(instanceAddress, riskId).productNftId;
20
+ }
21
+
22
+ function getBundleInfo(address instanceAddress, NftId bundleNftId) public view returns (IBundle.BundleInfo memory) {
23
+ return IInstance(instanceAddress).getInstanceReader().getBundleInfo(bundleNftId);
24
+ }
25
+
26
+ function getPoolNftId(address instanceAddress, NftId bundleNftId) public view returns (NftId) {
27
+ return getBundleInfo(instanceAddress, bundleNftId).poolNftId;
28
+ }
29
+
30
+ }
@@ -1,20 +1,21 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Amount} from "../../type/Amount.sol";
5
4
  import {NftId} from "../../type/NftId.sol";
6
5
  import {Fee} from "../../type/Fee.sol";
7
- import {Seconds} from "../../type/Seconds.sol";
8
6
  import {Timestamp} from "../../type/Timestamp.sol";
9
7
 
10
8
  interface IBundle {
11
9
 
12
10
  struct BundleInfo {
11
+ // slot 0
12
+ Timestamp activatedAt;
13
+ Timestamp expiredAt; // no new policies starting with this timestamp
14
+ Timestamp closedAt; // no open policies, locked amount = 0
13
15
  NftId poolNftId;
16
+ // slot 1
14
17
  Fee fee; // bundle fee on net premium amounts
18
+ // slot 2
15
19
  bytes filter; // required conditions for applications to be considered for collateralization by this bundle
16
- Seconds lifetime; // lifetime of bundle after creation
17
- Timestamp expiredAt; // no new policies starting with this timestamp
18
- Timestamp closedAt; // no open policies, locked amount = 0
19
20
  }
20
21
  }
@@ -1,51 +1,62 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
-
6
4
  import {Amount} from "../../type/Amount.sol";
7
5
  import {Fee} from "../../type/Fee.sol";
8
6
  import {NftId} from "../../type/NftId.sol";
9
- import {RoleId} from "../../type/RoleId.sol";
10
7
  import {TokenHandler} from "../../shared/TokenHandler.sol";
11
8
  import {UFixed} from "../../type/UFixed.sol";
12
9
 
13
10
  interface IComponents {
14
11
 
15
12
  struct ComponentInfo {
13
+ // slot 0
16
14
  string name; // component name (needs to be unique per instance)
17
- NftId productNftId;
18
- IERC20Metadata token;
15
+ // slot 1
19
16
  TokenHandler tokenHandler;
20
- address wallet;
17
+ // slot 2
21
18
  bytes data; // will hold component type specific additional info (eg encoded pool info)
22
19
  }
23
20
 
24
21
  struct ProductInfo {
25
- NftId distributionNftId;
26
- NftId poolNftId;
22
+ // slot 0
23
+ bool isProcessingFundedClaims; // custom logic to react to pool events for funded claims
24
+ bool isInterceptingPolicyTransfers; // custom logic for policy nft transfers
25
+ bool hasDistribution; // flag to indicate if distribution is enabled
26
+ uint8 expectedNumberOfOracles; // expected number of oracles
27
+ uint8 numberOfOracles; // actual number of oracles
28
+ NftId poolNftId; // mandatory
29
+ NftId distributionNftId; // 0..1 (optional)
30
+ // slot 1
31
+ NftId [] oracleNftId; // 0..n (optional)
32
+ }
33
+
34
+ struct FeeInfo {
35
+ // slot 0
27
36
  Fee productFee; // product fee on net premium
37
+ // slot 1
28
38
  Fee processingFee; // product fee on payout amounts
39
+ // slot 2
29
40
  Fee distributionFee; // distribution fee for sales that do not include commissions
41
+ // slot 3
30
42
  Fee minDistributionOwnerFee; // min fee required by distribution owner (not including commissions for distributors)
43
+ // slot 4
31
44
  Fee poolFee; // pool fee on net premium
45
+ // slot 5
32
46
  Fee stakingFee; // pool fee on staked capital from investor
47
+ // slot 6
33
48
  Fee performanceFee; // pool fee on profits from capital investors
34
49
  }
35
50
 
36
-
37
51
  struct PoolInfo {
38
- NftId productNftId; // the nft of the product this pool is linked to
39
- RoleId bundleOwnerRole; // the required role for bundle owners
40
- // TODO maxCapitalAmount -> maxBalanceAmount
41
- Amount maxCapitalAmount; // max capital amount allowed for pool
42
- bool isInterceptingBundleTransfers; // intercepts nft transfers for bundles
43
- bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
44
- bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications
52
+ // slot 0
53
+ Amount maxBalanceAmount; // max balance amount allowed for pool
45
54
  UFixed collateralizationLevel; // factor to calculate collateral for sum insurance (default 100%)
55
+ // slot 1
46
56
  UFixed retentionLevel; // amount of collateral held in pool (default 100%)
47
- Fee poolFee; // pool fee on net premium
48
- Fee stakingFee; // pool fee on staked capital from investor
49
- Fee performanceFee; // pool fee on profits from capital investors
57
+ bool isInterceptingBundleTransfers; // custom logic for bundle nft transfers
58
+ bool isProcessingConfirmedClaims; // custom logic for claims confirmation
59
+ bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
60
+ bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications
50
61
  }
51
62
  }
@@ -1,41 +1,53 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Amount} from "../../type/Amount.sol";
5
4
  import {DistributorType} from "../../type/DistributorType.sol";
6
5
  import {NftId} from "../../type/NftId.sol";
6
+ import {Seconds} from "../../type/Seconds.sol";
7
7
  import {Timestamp} from "../../type/Timestamp.sol";
8
8
  import {UFixed} from "../../type/UFixed.sol";
9
9
 
10
10
  interface IDistribution {
11
11
 
12
12
  struct DistributorTypeInfo {
13
- string name;
13
+ // slot 0
14
14
  UFixed minDiscountPercentage;
15
+ NftId distributionNftId;
16
+ // slot 1
15
17
  UFixed maxDiscountPercentage;
16
- UFixed commissionPercentage;
17
18
  uint32 maxReferralCount;
18
- uint32 maxReferralLifetime;
19
+ Seconds maxReferralLifetime;
19
20
  bool allowSelfReferrals;
20
21
  bool allowRenewals;
22
+ // slot 2
23
+ UFixed commissionPercentage;
24
+ // slot 3
25
+ string name;
26
+ // slot 4
21
27
  bytes data;
22
28
  }
23
29
 
24
30
  struct DistributorInfo {
31
+ // slot 0
25
32
  DistributorType distributorType;
26
33
  bool active;
27
- bytes data;
28
- Amount commissionAmount;
29
34
  uint32 numPoliciesSold;
35
+ // slot 1
36
+ bytes data;
30
37
  }
31
38
 
32
- struct ReferralInfo {
39
+ struct ReferralInfo {
40
+ // slot 0
41
+ NftId distributionNftId;
33
42
  NftId distributorNftId;
34
- string referralCode;
35
- UFixed discountPercentage;
36
43
  uint32 maxReferrals;
37
44
  uint32 usedReferrals;
45
+ // slot 1
46
+ UFixed discountPercentage;
38
47
  Timestamp expiryAt;
48
+ // slot 2
49
+ string referralCode;
50
+ // slot 3
39
51
  bytes data;
40
52
  }
41
53