@etherisc/gif-next 0.0.2-b6e6545-463 → 0.0.2-b75de7e-093

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 (547) hide show
  1. package/README.md +58 -9
  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 +203 -77
  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 +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +200 -16
  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 +142 -44
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +107 -15
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +194 -377
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +206 -27
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +140 -315
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +404 -289
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +147 -109
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +154 -139
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +255 -90
  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 +1475 -0
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +589 -0
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2040 -0
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +589 -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 +1479 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1195 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1655 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2426 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  67. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +164 -63
  69. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +108 -106
  71. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  72. package/artifacts/contracts/instance/Instance.sol/Instance.json +201 -161
  73. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +447 -144
  75. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +150 -90
  77. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +997 -303
  79. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +134 -269
  81. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +102 -92
  83. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +623 -496
  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 +4 -0
  95. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  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 +139 -335
  107. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +180 -29
  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 +128 -126
  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 +115 -303
  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 +122 -88
  120. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  121. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +162 -387
  122. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  123. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +206 -27
  124. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  125. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +331 -204
  126. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  127. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +143 -97
  128. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  129. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +206 -29
  130. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  131. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +143 -195
  132. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  133. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +464 -312
  134. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  135. package/artifacts/contracts/pool/Pool.sol/Pool.json +128 -370
  136. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  137. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  138. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  139. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +653 -532
  140. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  141. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +163 -97
  142. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  143. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +134 -184
  144. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  145. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +91 -93
  146. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  147. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +258 -396
  148. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  149. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +206 -27
  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 +140 -114
  154. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  155. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +94 -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 +136 -83
  162. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  163. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +250 -198
  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} +57 -4
  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 +293 -0
  170. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +141 -99
  172. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  173. package/artifacts/contracts/product/PricingService.sol/PricingService.json +230 -312
  174. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +120 -122
  176. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  177. package/artifacts/contracts/product/Product.sol/Product.json +256 -394
  178. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  179. package/artifacts/contracts/product/RiskService.sol/RiskService.json +637 -0
  180. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  181. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +724 -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 +370 -22
  186. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  187. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +72 -152
  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 +597 -80
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  195. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +351 -169
  196. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  197. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
  198. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  199. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +94 -80
  200. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  201. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
  202. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  203. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  204. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  205. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1333 -0
  206. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  207. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  208. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  209. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  210. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  211. package/artifacts/contracts/shared/Component.sol/Component.json +76 -265
  212. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  213. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +579 -495
  214. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  215. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +143 -107
  216. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  217. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +57 -111
  218. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +541 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  226. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +89 -88
  228. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +547 -224
  230. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  231. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +117 -126
  232. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  233. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  234. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  235. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  236. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  237. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  238. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  239. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  240. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  241. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
  242. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  243. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  244. package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
  245. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  246. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  247. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  248. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +104 -303
  249. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  250. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  251. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  252. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  253. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  254. package/artifacts/contracts/shared/{NftIdSetManager.sol/NftIdSetManager.json → NftIdSet.sol/NftIdSet.json} +4 -4
  255. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  256. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  257. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  258. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  259. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  260. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -97
  261. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  262. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  263. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  264. package/artifacts/contracts/shared/Service.sol/Service.json +57 -111
  265. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  266. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
  267. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  268. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  269. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  270. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  271. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  272. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +134 -125
  273. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  274. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +77 -16
  275. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  276. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +85 -105
  277. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  278. package/artifacts/contracts/staking/Staking.sol/Staking.json +210 -366
  279. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  280. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  281. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  282. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +122 -95
  283. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  284. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
  285. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  286. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +122 -164
  287. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  288. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +99 -85
  289. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  290. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +156 -110
  291. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  292. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
  293. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  294. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/Amount.sol/AmountLib.json +61 -8
  296. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  298. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  300. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  302. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
  304. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  305. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  306. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  307. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  308. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  310. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  311. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  312. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  314. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  316. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  318. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  320. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +118 -5
  322. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
  324. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  326. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  328. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  330. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  332. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  334. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  335. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  336. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +52 -2
  337. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  338. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  339. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  340. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +66 -2
  341. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  342. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  343. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  344. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  345. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  346. package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
  347. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  348. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  349. package/contracts/accounting/AccountingService.sol +262 -0
  350. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  351. package/contracts/accounting/IAccountingService.sol +45 -0
  352. package/contracts/authorization/AccessAdmin.sol +232 -134
  353. package/contracts/authorization/AccessManagerCloneable.sol +136 -3
  354. package/contracts/authorization/Authorization.sol +321 -202
  355. package/contracts/authorization/IAccess.sol +1 -0
  356. package/contracts/authorization/IAccessAdmin.sol +17 -10
  357. package/contracts/authorization/IAuthorization.sol +27 -7
  358. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  359. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  360. package/contracts/distribution/BasicDistribution.sol +17 -25
  361. package/contracts/distribution/BasicDistributionAuthorization.sol +26 -9
  362. package/contracts/distribution/Distribution.sol +46 -40
  363. package/contracts/distribution/DistributionService.sol +164 -108
  364. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  365. package/contracts/distribution/IDistributionComponent.sol +9 -5
  366. package/contracts/distribution/IDistributionService.sol +37 -21
  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 +438 -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 +106 -0
  377. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  378. package/contracts/examples/unpermissioned/SimpleProduct.sol +377 -0
  379. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  380. package/contracts/instance/BundleSet.sol +130 -0
  381. package/contracts/instance/IInstance.sol +25 -41
  382. package/contracts/instance/IInstanceService.sol +13 -33
  383. package/contracts/instance/Instance.sol +60 -67
  384. package/contracts/instance/InstanceAdmin.sol +258 -87
  385. package/contracts/instance/InstanceAuthorizationV3.sol +64 -53
  386. package/contracts/instance/InstanceReader.sol +275 -43
  387. package/contracts/instance/InstanceService.sol +129 -168
  388. package/contracts/instance/InstanceServiceManager.sol +8 -13
  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 +77 -0
  394. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  395. package/contracts/instance/module/IBundle.sol +1 -1
  396. package/contracts/instance/module/IComponents.sol +14 -15
  397. package/contracts/instance/module/IDistribution.sol +2 -2
  398. package/contracts/instance/module/IPolicy.sol +26 -25
  399. package/contracts/instance/module/IRisk.sol +3 -0
  400. package/contracts/mock/Dip.sol +1 -1
  401. package/contracts/oracle/BasicOracle.sol +0 -1
  402. package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
  403. package/contracts/oracle/IOracleComponent.sol +2 -1
  404. package/contracts/oracle/IOracleService.sol +2 -1
  405. package/contracts/oracle/Oracle.sol +21 -22
  406. package/contracts/oracle/OracleService.sol +113 -81
  407. package/contracts/oracle/OracleServiceManager.sol +8 -11
  408. package/contracts/pool/BasicPool.sol +38 -27
  409. package/contracts/pool/BasicPoolAuthorization.sol +36 -9
  410. package/contracts/pool/BundleService.sol +204 -105
  411. package/contracts/pool/BundleServiceManager.sol +8 -11
  412. package/contracts/pool/IBundleService.sol +31 -22
  413. package/contracts/pool/IPoolComponent.sol +20 -10
  414. package/contracts/pool/IPoolService.sol +90 -75
  415. package/contracts/pool/Pool.sol +145 -111
  416. package/contracts/pool/PoolLib.sol +216 -0
  417. package/contracts/pool/PoolService.sol +546 -241
  418. package/contracts/pool/PoolServiceManager.sol +6 -9
  419. package/contracts/product/ApplicationService.sol +83 -78
  420. package/contracts/product/ApplicationServiceManager.sol +6 -6
  421. package/contracts/product/BasicProduct.sol +13 -44
  422. package/contracts/product/BasicProductAuthorization.sol +25 -9
  423. package/contracts/product/ClaimService.sol +365 -175
  424. package/contracts/product/ClaimServiceManager.sol +6 -6
  425. package/contracts/product/IApplicationService.sol +6 -2
  426. package/contracts/product/IClaimService.sol +44 -8
  427. package/contracts/product/IPolicyService.sol +53 -36
  428. package/contracts/product/IPricingService.sol +10 -10
  429. package/contracts/product/IProductComponent.sol +28 -5
  430. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  431. package/contracts/product/PolicyService.sol +476 -269
  432. package/contracts/product/PolicyServiceLib.sol +65 -0
  433. package/contracts/product/PolicyServiceManager.sol +6 -9
  434. package/contracts/product/PricingService.sol +66 -62
  435. package/contracts/product/PricingServiceManager.sol +6 -9
  436. package/contracts/product/Product.sol +173 -87
  437. package/contracts/product/RiskService.sol +145 -0
  438. package/contracts/product/RiskServiceManager.sol +39 -0
  439. package/contracts/registry/ChainNft.sol +72 -40
  440. package/contracts/registry/IRegistry.sol +74 -29
  441. package/contracts/registry/IRegistryService.sol +3 -10
  442. package/contracts/registry/IRelease.sol +26 -0
  443. package/contracts/registry/ITransferInterceptor.sol +1 -2
  444. package/contracts/registry/Registry.sol +368 -216
  445. package/contracts/registry/RegistryAdmin.sol +185 -196
  446. package/contracts/registry/RegistryService.sol +41 -66
  447. package/contracts/registry/RegistryServiceManager.sol +5 -5
  448. package/contracts/registry/ReleaseAdmin.sol +245 -0
  449. package/contracts/registry/ReleaseLifecycle.sol +8 -3
  450. package/contracts/registry/ReleaseRegistry.sol +511 -0
  451. package/contracts/registry/ServiceAuthorizationV3.sol +99 -52
  452. package/contracts/registry/TokenRegistry.sol +8 -10
  453. package/contracts/shared/Component.sol +74 -128
  454. package/contracts/shared/ComponentService.sol +453 -342
  455. package/contracts/shared/ComponentServiceManager.sol +10 -7
  456. package/contracts/shared/ComponentVerifyingService.sol +28 -17
  457. package/contracts/shared/ContractLib.sol +253 -0
  458. package/contracts/shared/IComponent.sol +8 -17
  459. package/contracts/shared/IComponentService.sol +49 -39
  460. package/contracts/shared/IInstanceLinkedComponent.sol +7 -27
  461. package/contracts/shared/ILifecycle.sol +3 -1
  462. package/contracts/shared/INftOwnable.sol +2 -0
  463. package/contracts/shared/IPolicyHolder.sol +12 -22
  464. package/contracts/shared/IRegisterable.sol +23 -1
  465. package/contracts/shared/IService.sol +4 -6
  466. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  467. package/contracts/shared/InstanceLinkedComponent.sol +81 -35
  468. package/contracts/shared/KeyValueStore.sol +1 -1
  469. package/contracts/shared/Lifecycle.sol +15 -4
  470. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  471. package/contracts/shared/NftOwnable.sol +31 -11
  472. package/contracts/shared/PolicyHolder.sol +17 -57
  473. package/contracts/shared/Registerable.sol +55 -21
  474. package/contracts/shared/RegistryLinked.sol +9 -14
  475. package/contracts/shared/Service.sol +18 -36
  476. package/contracts/shared/TokenHandler.sol +309 -26
  477. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  478. package/contracts/staking/IStaking.sol +8 -11
  479. package/contracts/staking/IStakingService.sol +20 -8
  480. package/contracts/staking/StakeManagerLib.sol +19 -26
  481. package/contracts/staking/Staking.sol +86 -73
  482. package/contracts/staking/StakingManager.sol +10 -12
  483. package/contracts/staking/StakingReader.sol +24 -21
  484. package/contracts/staking/StakingService.sol +54 -35
  485. package/contracts/staking/StakingServiceManager.sol +8 -7
  486. package/contracts/staking/StakingStore.sol +12 -22
  487. package/contracts/staking/TargetManagerLib.sol +7 -3
  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/Key32.sol +2 -2
  492. package/contracts/type/Key32Set.sol +62 -0
  493. package/contracts/type/NftId.sol +7 -0
  494. package/contracts/type/ObjectType.sol +55 -27
  495. package/contracts/type/PayoutId.sol +10 -10
  496. package/contracts/type/Referral.sol +1 -0
  497. package/contracts/type/RiskId.sol +35 -4
  498. package/contracts/type/RoleId.sol +23 -15
  499. package/contracts/type/Seconds.sol +21 -1
  500. package/contracts/type/Selector.sol +5 -0
  501. package/contracts/type/StateId.sol +15 -1
  502. package/contracts/type/Timestamp.sol +10 -5
  503. package/contracts/type/UFixed.sol +35 -122
  504. package/contracts/type/Version.sol +18 -6
  505. package/contracts/{shared → upgradeability}/ProxyManager.sol +71 -38
  506. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  507. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  508. package/package.json +6 -5
  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/BundleManager.sol/BundleManager.dbg.json +0 -4
  514. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -703
  515. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  516. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -181
  517. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  518. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  519. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  520. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  521. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  522. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  523. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  524. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  525. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1159
  526. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  527. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  528. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  529. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  530. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  531. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  532. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  533. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  534. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  535. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  536. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  537. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  538. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  539. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  540. package/contracts/instance/BundleManager.sol +0 -126
  541. package/contracts/instance/base/ObjectManager.sol +0 -79
  542. package/contracts/instance/module/IAccess.sol +0 -46
  543. package/contracts/product/ProductService.sol +0 -124
  544. package/contracts/product/ProductServiceManager.sol +0 -42
  545. package/contracts/registry/ReleaseManager.sol +0 -487
  546. package/contracts/shared/InitializableCustom.sol +0 -177
  547. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,54 +1,36 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IRegistry} from "../registry/IRegistry.sol";
5
- import {IInstance} from "../instance/IInstance.sol";
4
+ import {IAccountingService} from "../accounting/IAccountingService.sol";
6
5
  import {IComponentService} from "../shared/IComponentService.sol";
6
+ import {IDistribution} from "../instance/module/IDistribution.sol";
7
+ import {IDistributionService} from "./IDistributionService.sol";
8
+ import {IInstance} from "../instance/IInstance.sol";
7
9
  import {IInstanceService} from "../instance/IInstanceService.sol";
10
+ import {IRegistry} from "../registry/IRegistry.sol";
8
11
  import {IRegistryService} from "../registry/IRegistryService.sol";
9
- import {InstanceReader} from "../instance/InstanceReader.sol";
10
12
  import {IComponents} from "../instance/module/IComponents.sol";
11
13
  import {IPolicy} from "../instance/module/IPolicy.sol";
12
14
 
13
15
  import {Amount, AmountLib} from "../type/Amount.sol";
14
- import {NftId, NftIdLib} from "../type/NftId.sol";
15
- import {Fee, FeeLib} from "../type/Fee.sol";
16
- import {KEEP_STATE} from "../type/StateId.sol";
17
- import {ObjectType, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
18
- import {Version, VersionLib} from "../type/Version.sol";
19
- import {RoleId} from "../type/RoleId.sol";
20
-
21
- import {IVersionable} from "../shared/IVersionable.sol";
22
- import {Versionable} from "../shared/Versionable.sol";
23
-
24
- import {IService} from "../shared/IService.sol";
25
- import {Service} from "../shared/Service.sol";
26
16
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
27
- import {InstanceService} from "../instance/InstanceService.sol";
28
- import {IComponent} from "../shared/IComponent.sol";
29
- import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
30
- import {IDistributionService} from "./IDistributionService.sol";
31
- import {IPricingService} from "../product/IPricingService.sol";
32
-
33
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
34
17
  import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
35
- import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
36
- import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
37
- import {Key32} from "../type/Key32.sol";
38
- import {IDistribution} from "../instance/module/IDistribution.sol";
18
+ import {NftId, NftIdLib} from "../type/NftId.sol";
19
+ import {KEEP_STATE} from "../type/StateId.sol";
20
+ import {ObjectType, ACCOUNTING, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
21
+ import {InstanceReader} from "../instance/InstanceReader.sol";
39
22
  import {InstanceStore} from "../instance/InstanceStore.sol";
23
+ import {ReferralId, ReferralLib} from "../type/Referral.sol";
24
+ import {Seconds} from "../type/Seconds.sol";
25
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
26
+ import {UFixed} from "../type/UFixed.sol";
40
27
 
41
28
 
42
29
  contract DistributionService is
43
30
  ComponentVerifyingService,
44
31
  IDistributionService
45
32
  {
46
- using NftIdLib for NftId;
47
- using TimestampLib for Timestamp;
48
- using UFixedLib for UFixed;
49
- using FeeLib for Fee;
50
- using ReferralLib for ReferralId;
51
-
33
+ IAccountingService private _accountingService;
52
34
  IComponentService private _componentService;
53
35
  IInstanceService private _instanceService;
54
36
  IRegistryService private _registryService;
@@ -58,21 +40,22 @@ contract DistributionService is
58
40
  bytes memory data
59
41
  )
60
42
  internal
61
- initializer
62
43
  virtual override
44
+ initializer()
63
45
  {
64
- address initialOwner;
65
- address registryAddress;
66
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
67
- // TODO while DistributionService is not deployed in DistributionServiceManager constructor
68
- // owner is DistributionServiceManager deployer
69
- initializeService(registryAddress, address(0), owner);
46
+ (
47
+ address authority,
48
+ address registry
49
+ ) = abi.decode(data, (address, address));
50
+
51
+ __Service_init(authority, registry, owner);
70
52
 
53
+ _accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
71
54
  _componentService = IComponentService(_getServiceAddress(COMPONENT()));
72
55
  _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
73
56
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
74
57
 
75
- registerInterface(type(IDistributionService).interfaceId);
58
+ _registerInterface(type(IDistributionService).interfaceId);
76
59
  }
77
60
 
78
61
 
@@ -82,7 +65,7 @@ contract DistributionService is
82
65
  UFixed maxDiscountPercentage,
83
66
  UFixed commissionPercentage,
84
67
  uint32 maxReferralCount,
85
- uint32 maxReferralLifetime,
68
+ Seconds maxReferralLifetime,
86
69
  bool allowSelfReferrals,
87
70
  bool allowRenewals,
88
71
  bytes memory data
@@ -91,14 +74,14 @@ contract DistributionService is
91
74
  returns (DistributorType distributorType)
92
75
  {
93
76
  (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
94
- InstanceReader instanceReader = instance.getInstanceReader();
77
+ // InstanceReader instanceReader = instance.getInstanceReader();
95
78
 
96
79
  {
97
- NftId productNftId = _getProductNftId(instanceReader, distributionNftId);
98
- IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
80
+ NftId productNftId = _getProductNftId(distributionNftId);
81
+ IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
99
82
 
100
- UFixed variableDistributionFees = productInfo.distributionFee.fractionalFee;
101
- UFixed variableFeesPartsTotal = productInfo.minDistributionOwnerFee.fractionalFee + commissionPercentage;
83
+ UFixed variableDistributionFees = feeInfo.distributionFee.fractionalFee;
84
+ UFixed variableFeesPartsTotal = feeInfo.minDistributionOwnerFee.fractionalFee + commissionPercentage;
102
85
 
103
86
  if (variableFeesPartsTotal > variableDistributionFees) {
104
87
  revert ErrorDistributionServiceVariableFeesTooHight(variableDistributionFees.toInt1000(), variableFeesPartsTotal.toInt1000());
@@ -152,27 +135,25 @@ contract DistributionService is
152
135
  distributorType,
153
136
  true, // active
154
137
  data,
155
- AmountLib.zero(),
156
138
  0);
157
139
 
158
140
  instance.getInstanceStore().createDistributor(distributorNftId, info);
159
141
  }
160
142
 
161
- // function updateDistributorType(
162
- // NftId distributorNftId,
163
- // DistributorType distributorType,
164
- // bytes memory data
165
- // )
166
- // external
167
- // virtual
168
- // {
169
- // (, IInstance instance) = _getAndVerifyCallingDistribution();
170
- // InstanceReader instanceReader = instance.getInstanceReader();
171
- // IDistribution.DistributorInfo memory distributorInfo = instanceReader.getDistributorInfo(distributorNftId);
172
- // distributorInfo.distributorType = distributorType;
173
- // distributorInfo.data = data;
174
- // instance.updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
175
- // }
143
+ function changeDistributorType(
144
+ NftId distributorNftId,
145
+ DistributorType distributorType,
146
+ bytes memory data
147
+ )
148
+ external
149
+ virtual
150
+ {
151
+ (,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
152
+ IDistribution.DistributorInfo memory distributorInfo = instance.getInstanceReader().getDistributorInfo(distributorNftId);
153
+ distributorInfo.distributorType = distributorType;
154
+ distributorInfo.data = data;
155
+ instance.getInstanceStore().updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
156
+ }
176
157
 
177
158
 
178
159
  function createReferral(
@@ -185,97 +166,172 @@ contract DistributionService is
185
166
  )
186
167
  external
187
168
  virtual
169
+ onlyNftOfType(distributorNftId, DISTRIBUTOR())
188
170
  returns (ReferralId referralId)
189
171
  {
190
172
  (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
191
173
 
192
174
  if (bytes(code).length == 0) {
193
- revert ErrorIDistributionServiceInvalidReferral(code);
175
+ revert ErrorDistributionServiceInvalidReferral(code);
194
176
  }
195
- if (expiryAt.eqz()) {
196
- revert ErrorIDistributionServiceExpirationInvalid(expiryAt);
177
+ if (expiryAt.eqz() || expiryAt.lte(TimestampLib.blockTimestamp())) {
178
+ revert ErrorDistributionServiceExpirationInvalid(expiryAt);
197
179
  }
198
180
 
199
- InstanceReader instanceReader = instance.getInstanceReader();
200
- DistributorType distributorType = instanceReader.getDistributorInfo(distributorNftId).distributorType;
201
- IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
181
+ {
182
+ InstanceReader instanceReader = instance.getInstanceReader();
183
+ DistributorType distributorType = instanceReader.getDistributorInfo(distributorNftId).distributorType;
184
+ IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
202
185
 
203
- if (distributorTypeData.maxReferralCount < maxReferrals) {
204
- revert ErrorIDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
205
- }
206
- if (distributorTypeData.minDiscountPercentage > discountPercentage) {
207
- revert ErrorIDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage.toInt(), discountPercentage.toInt());
208
- }
209
- if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
210
- revert ErrorIDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage.toInt(), discountPercentage.toInt());
211
- }
212
- if (expiryAt.toInt() - TimestampLib.blockTimestamp().toInt() > distributorTypeData.maxReferralLifetime) {
213
- revert ErrorIDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt.toInt());
186
+ if (distributorTypeData.maxReferralCount < maxReferrals) {
187
+ revert ErrorDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
188
+ }
189
+ if (distributorTypeData.minDiscountPercentage > discountPercentage) {
190
+ revert ErrorDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage.toInt(), discountPercentage.toInt());
191
+ }
192
+ if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
193
+ revert ErrorDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage.toInt(), discountPercentage.toInt());
194
+ }
195
+ if (expiryAt.toInt() - TimestampLib.blockTimestamp().toInt() > distributorTypeData.maxReferralLifetime.toInt()) {
196
+ revert ErrorDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt);
197
+ }
214
198
  }
215
199
 
216
- referralId = ReferralLib.toReferralId(distributionNftId, code);
217
- IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo(
218
- distributorNftId,
219
- code,
220
- discountPercentage,
221
- maxReferrals,
222
- 0, // used referrals
223
- expiryAt,
224
- data
225
- );
226
-
227
- instance.getInstanceStore().createReferral(referralId, info);
228
- return referralId;
200
+ {
201
+ referralId = ReferralLib.toReferralId(distributionNftId, code);
202
+ IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo(
203
+ distributorNftId,
204
+ code,
205
+ discountPercentage,
206
+ maxReferrals,
207
+ 0, // used referrals
208
+ expiryAt,
209
+ data
210
+ );
211
+
212
+ instance.getInstanceStore().createReferral(referralId, info);
213
+ }
229
214
  }
230
215
 
216
+ /// @inheritdoc IDistributionService
217
+ function processReferral(
218
+ NftId distributionNftId,
219
+ ReferralId referralId
220
+ )
221
+ external
222
+ virtual
223
+ restricted()
224
+ onlyNftOfType(distributionNftId, DISTRIBUTION())
225
+ {
226
+ if (referralIsValid(distributionNftId, referralId)) {
227
+ IRegistry registry = getRegistry();
228
+ IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
229
+ IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
230
+
231
+ // update book keeping for referral info
232
+ IDistribution.ReferralInfo memory referralInfo = instance.getInstanceReader().getReferralInfo(referralId);
233
+ referralInfo.usedReferrals += 1;
234
+ instance.getInstanceStore().updateReferral(referralId, referralInfo, KEEP_STATE());
235
+ }
236
+ }
231
237
 
232
238
  function processSale(
233
239
  NftId distributionNftId, // assume always of distribution type
234
240
  ReferralId referralId,
235
- IPolicy.Premium memory premium
241
+ IPolicy.PremiumInfo memory premium
236
242
  )
237
243
  external
238
244
  virtual
239
- restricted
245
+ restricted()
246
+ onlyNftOfType(distributionNftId, DISTRIBUTION())
240
247
  {
241
- IInstance instance = _getInstanceForDistribution(distributionNftId);
248
+ IRegistry registry = getRegistry();
249
+ IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
250
+ IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
242
251
  InstanceReader reader = instance.getInstanceReader();
243
252
  InstanceStore store = instance.getInstanceStore();
244
253
 
245
254
  // get distribution owner fee amount
246
- Amount distributionOwnerFee = AmountLib.toAmount(premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount);
255
+ Amount distributionOwnerFee = premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount;
247
256
 
248
257
  // update referral/distributor info if applicable
249
258
  if (referralIsValid(distributionNftId, referralId)) {
250
259
 
251
260
  // increase distribution balance by commission amount and distribution owner fee
252
- Amount commissionAmount = AmountLib.toAmount(premium.commissionAmount);
253
- _componentService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
261
+ Amount commissionAmount = premium.commissionAmount;
262
+ _accountingService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
254
263
 
255
264
  // update book keeping for referral info
256
265
  IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
257
- referralInfo.usedReferrals += 1;
258
- store.updateReferral(referralId, referralInfo, KEEP_STATE());
266
+
267
+ _accountingService.increaseDistributorBalance(store, referralInfo.distributorNftId, AmountLib.zero(), commissionAmount);
259
268
 
260
269
  // update book keeping for distributor info
261
270
  IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
262
- // TODO refactor sum of commission amount into a fee balance for distributors
263
- distributorInfo.commissionAmount = distributorInfo.commissionAmount + commissionAmount;
264
271
  distributorInfo.numPoliciesSold += 1;
265
272
  store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
266
273
  } else {
267
-
268
274
  // increase distribution balance by distribution owner fee
269
- _componentService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
275
+ _accountingService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
270
276
  }
271
277
  }
272
278
 
273
- function referralIsValid(NftId distributionNftId, ReferralId referralId) public view returns (bool isValid) {
279
+ /// @inheritdoc IDistributionService
280
+ function withdrawCommission(NftId distributorNftId, Amount amount)
281
+ public
282
+ virtual
283
+ // TODO: restricted() (once #462 is done)
284
+ onlyNftOfType(distributorNftId, DISTRIBUTOR())
285
+ returns (Amount withdrawnAmount)
286
+ {
287
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
288
+ InstanceReader reader = instance.getInstanceReader();
289
+
290
+ IComponents.ComponentInfo memory distributionInfo = reader.getComponentInfo(distributionNftId);
291
+ address distributionWallet = distributionInfo.tokenHandler.getWallet();
292
+
293
+ Amount commissionAmount = reader.getFeeAmount(distributorNftId);
294
+
295
+ // determine withdrawn amount
296
+ withdrawnAmount = amount;
297
+ if (withdrawnAmount.gte(AmountLib.max())) {
298
+ withdrawnAmount = commissionAmount;
299
+ } else {
300
+ if (withdrawnAmount.gt(commissionAmount)) {
301
+ revert ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(withdrawnAmount, commissionAmount);
302
+ }
303
+ }
304
+
305
+ // decrease fee counters by withdrawnAmount and update distributor info
306
+ {
307
+ InstanceStore store = instance.getInstanceStore();
308
+ // decrease fee counter for distribution balance
309
+ _accountingService.decreaseDistributionBalance(store, distributionNftId, withdrawnAmount, AmountLib.zero());
310
+ // decrease fee counter for distributor fee
311
+ _accountingService.decreaseDistributorBalance(store, distributorNftId, AmountLib.zero(), withdrawnAmount);
312
+ }
313
+
314
+ // transfer amount to distributor
315
+ {
316
+ address distributor = getRegistry().ownerOf(distributorNftId);
317
+ emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.token), withdrawnAmount);
318
+ distributionInfo.tokenHandler.pushToken(distributor, withdrawnAmount);
319
+ }
320
+ }
321
+
322
+ function referralIsValid(NftId distributionNftId, ReferralId referralId)
323
+ public
324
+ view
325
+ onlyNftOfType(distributionNftId, DISTRIBUTION())
326
+ returns (bool isValid)
327
+ {
274
328
  if (distributionNftId.eqz() || referralId.eqz()) {
275
329
  return false;
276
330
  }
277
331
 
278
- IInstance instance = _getInstanceForDistribution(distributionNftId);
332
+ IRegistry registry = getRegistry();
333
+ IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
334
+ IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
279
335
  IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
280
336
 
281
337
  if (info.distributorNftId.eqz()) {
@@ -291,8 +347,8 @@ contract DistributionService is
291
347
  view
292
348
  returns(IInstance instance)
293
349
  {
294
- NftId instanceNftId = getRegistry().getObjectInfo(distributionNftId).parentNftId;
295
- address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
350
+ NftId instanceNftId = getRegistry().getParentNftId(distributionNftId);
351
+ address instanceAddress = getRegistry().getObjectAddress(instanceNftId);
296
352
  return IInstance(instanceAddress);
297
353
  }
298
354
 
@@ -1,12 +1,9 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "../shared/IVersionable.sol";
5
- import {ProxyManager} from "../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
6
  import {DistributionService} from "./DistributionService.sol";
7
- import {Registry} from "../registry/Registry.sol";
8
- import {RegistryService} from "../registry/RegistryService.sol";
9
- import {REGISTRY} from "../type/ObjectType.sol";
10
7
 
11
8
  contract DistributionServiceManager is ProxyManager {
12
9
 
@@ -15,15 +12,15 @@ contract DistributionServiceManager is ProxyManager {
15
12
  /// @dev initializes proxy manager with distribution service implementation and deploys instance
16
13
  constructor(
17
14
  address authority,
18
- address registryAddress,
15
+ address registry,
19
16
  bytes32 salt
20
17
  )
21
- ProxyManager(registryAddress)
22
18
  {
23
- DistributionService distSrv = new DistributionService{salt: salt}();
24
- bytes memory data = abi.encode(registryAddress, address(this), authority);
25
- IVersionable versionable = deployDetermenistic(
26
- address(distSrv),
19
+ DistributionService svc = new DistributionService{salt: salt}();
20
+ bytes memory data = abi.encode(authority, registry);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
27
24
  data,
28
25
  salt);
29
26
 
@@ -1,20 +1,18 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Fee} from "../type/Fee.sol";
4
+ import {Amount} from "../type/Amount.sol";
5
5
  import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
6
- import {ReferralId, ReferralStatus} from "../type/Referral.sol";
7
6
  import {NftId} from "../type/NftId.sol";
8
- import {DistributorType} from "../type/DistributorType.sol";
7
+ import {ReferralId, ReferralStatus} from "../type/Referral.sol";
9
8
  import {UFixed} from "../type/UFixed.sol";
10
- import {Timestamp} from "../type/Timestamp.sol";
11
9
 
12
10
  interface IDistributionComponent is IInstanceLinkedComponent {
13
11
 
14
12
  error ErrorDistributionNotDistributor(address distributor);
15
13
  error ErrorDistributionAlreadyDistributor(address distributor, NftId distributorNftId);
16
14
 
17
- event LogDistributorUpdated(address to, address caller);
15
+ event LogDistributorUpdated(address to, address operator);
18
16
 
19
17
  /// @dev Returns true iff the provided address is registered as a distributor with this distribution component.
20
18
  function isDistributor(address candidate) external view returns (bool);
@@ -45,4 +43,10 @@ interface IDistributionComponent is IInstanceLinkedComponent {
45
43
 
46
44
  /// @dev Returns true to ensure component is called when transferring distributor Nft Ids.
47
45
  function isVerifying() external view returns (bool verifying);
46
+
47
+ /// @dev Withdraw commission for the distributor
48
+ /// @param distributorNftId the distributor Nft Id
49
+ /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
50
+ /// @return withdrawnAmount the effective withdrawn amount
51
+ function withdrawCommission(NftId distributorNftId, Amount amount) external returns (Amount withdrawnAmount);
48
52
  }
@@ -3,43 +3,47 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount} from "../type/Amount.sol";
5
5
  import {NftId} from "../type/NftId.sol";
6
- import {Fee} from "../type/Fee.sol";
7
6
  import {IPolicy} from "../instance/module/IPolicy.sol";
8
7
  import {IService} from "../shared/IService.sol";
9
8
  import {UFixed} from "../type/UFixed.sol";
10
9
  import {DistributorType} from "../type/DistributorType.sol";
11
10
  import {ReferralId} from "../type/Referral.sol";
11
+ import {Seconds} from "../type/Seconds.sol";
12
12
  import {Timestamp} from "../type/Timestamp.sol";
13
13
 
14
14
 
15
15
  interface IDistributionService is IService {
16
16
 
17
17
  error ErrorDistributionServiceCallerNotRegistered(address caller);
18
- error ErrorIDistributionServiceParentNftIdNotInstance(NftId nftId, NftId parentNftId);
19
- error ErrorIDistributionServiceCallerNotDistributor(address caller);
20
- error ErrorIDistributionServiceInvalidReferralId(ReferralId referralId);
21
- error ErrorIDistributionServiceMaxReferralsExceeded(uint256 maxReferrals);
22
- error ErrorIDistributionServiceDiscountTooLow(uint256 minDiscountPercentage, uint256 discountPercentage);
23
- error ErrorIDistributionServiceDiscountTooHigh(uint256 maxDiscountPercentage, uint256 discountPercentage);
24
- error ErrorIDistributionServiceExpiryTooLong(uint256 maxReferralLifetime, uint256 expiryAt);
25
- error ErrorIDistributionServiceInvalidReferral(string code);
26
- error ErrorIDistributionServiceExpirationInvalid(Timestamp expiryAt);
27
- error ErrorIDistributionServiceCommissionTooHigh(uint256 commissionPercentage, uint256 maxCommissionPercentage);
28
- error ErrorIDistributionServiceMinFeeTooHigh(uint256 minFee, uint256 limit);
18
+ error ErrorDistributionServiceParentNftIdNotInstance(NftId nftId, NftId parentNftId);
19
+ error ErrorDistributionServiceCallerNotDistributor(address caller);
20
+ error ErrorDistributionServiceInvalidReferralId(ReferralId referralId);
21
+ error ErrorDistributionServiceMaxReferralsExceeded(uint256 maxReferrals);
22
+ error ErrorDistributionServiceDiscountTooLow(uint256 minDiscountPercentage, uint256 discountPercentage);
23
+ error ErrorDistributionServiceDiscountTooHigh(uint256 maxDiscountPercentage, uint256 discountPercentage);
24
+ error ErrorDistributionServiceExpiryTooLong(Seconds maxReferralLifetime, Timestamp expiryAt);
25
+ error ErrorDistributionServiceInvalidReferral(string code);
26
+ error ErrorDistributionServiceExpirationInvalid(Timestamp expiryAt);
27
+ error ErrorDistributionServiceCommissionTooHigh(uint256 commissionPercentage, uint256 maxCommissionPercentage);
28
+ error ErrorDistributionServiceMinFeeTooHigh(uint256 minFee, uint256 limit);
29
29
 
30
+ error ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(Amount amount, Amount limit);
31
+
30
32
  error ErrorDistributionServiceVariableFeesTooHight(uint256 maxDiscountPercentage, uint256 limit);
31
33
  error ErrorDistributionServiceMaxDiscountTooHigh(uint256 maxDiscountPercentage, uint256 limit);
32
34
 
33
- error ErrorIDistributionServiceReferralInvalid(NftId distributionNftId, ReferralId referralId);
35
+ error ErrorDistributionServiceReferralInvalid(NftId distributionNftId, ReferralId referralId);
34
36
  error ErrorDistributionServiceInvalidFeeTransferred(Amount transferredDistributionFeeAmount, Amount expectedDistributionFeeAmount);
35
37
 
38
+ event LogDistributionServiceCommissionWithdrawn(NftId distributorNftId, address recipient, address tokenAddress, Amount amount);
39
+
36
40
  function createDistributorType(
37
41
  string memory name,
38
42
  UFixed minDiscountPercentage,
39
43
  UFixed maxDiscountPercentage,
40
44
  UFixed commissionPercentage,
41
45
  uint32 maxReferralCount,
42
- uint32 maxReferralLifetime,
46
+ Seconds maxReferralLifetime,
43
47
  bool allowSelfReferrals,
44
48
  bool allowRenewals,
45
49
  bytes memory data
@@ -53,12 +57,11 @@ interface IDistributionService is IService {
53
57
  bytes memory data
54
58
  ) external returns (NftId distributorNftId);
55
59
 
56
- // TODO re-enable and reorganize (service contract too large)
57
- // function updateDistributorType(
58
- // NftId distributorNftId,
59
- // DistributorType distributorType,
60
- // bytes memory data
61
- // ) external;
60
+ function changeDistributorType(
61
+ NftId distributorNftId,
62
+ DistributorType distributorType,
63
+ bytes memory data
64
+ ) external;
62
65
 
63
66
  function createReferral(
64
67
  NftId distributorNftId,
@@ -71,15 +74,28 @@ interface IDistributionService is IService {
71
74
  external
72
75
  returns (ReferralId referralId);
73
76
 
77
+ /// @dev callback from product service when a referral is used.
78
+ /// Calling this will increment the referral usage counter.
79
+ function processReferral(
80
+ NftId distributionNftId,
81
+ ReferralId referralId
82
+ ) external;
83
+
74
84
  /// @dev callback from product service when selling a policy for a specific referralId
75
85
  function processSale(
76
86
  NftId distributionNftId,
77
87
  ReferralId referralId,
78
- IPolicy.Premium memory premium
88
+ IPolicy.PremiumInfo memory premium
79
89
  ) external;
80
90
 
81
91
  function referralIsValid(
82
92
  NftId distributorNftId,
83
93
  ReferralId referralId
84
94
  ) external view returns (bool isValid);
95
+
96
+ /// @dev Withdraw commission for the distributor
97
+ /// @param distributorNftId the distributor Nft Id
98
+ /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
99
+ /// @return withdrawnAmount the effective withdrawn amount
100
+ function withdrawCommission(NftId distributorNftId, Amount amount) external returns (Amount withdrawnAmount);
85
101
  }
@@ -0,0 +1,59 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ type DamageLevel is uint8;
5
+
6
+ // type bindings
7
+ using {
8
+ DamageLevelLib.eq,
9
+ DamageLevelLib.eqz,
10
+ DamageLevelLib.toInt
11
+ } for DamageLevel global;
12
+
13
+ // solhint-disable-next-line func-name-mixedcase
14
+ function DAMAGE_SMALL() pure returns (DamageLevel) {
15
+ return DamageLevel.wrap(1);
16
+ }
17
+
18
+ // solhint-disable-next-line func-name-mixedcase
19
+ function DAMAGE_MEDIUM() pure returns (DamageLevel) {
20
+ return DamageLevel.wrap(2);
21
+ }
22
+
23
+ // solhint-disable-next-line func-name-mixedcase
24
+ function DAMAGE_LARGE() pure returns (DamageLevel) {
25
+ return DamageLevel.wrap(3);
26
+ }
27
+
28
+ library DamageLevelLib {
29
+
30
+ error ErrorDamageLeveLibInvalidDamageLevel(uint8 damageLevel);
31
+
32
+ function zero() internal pure returns (DamageLevel) {
33
+ return DamageLevel.wrap(0);
34
+ }
35
+
36
+ function toDamageLevel(uint8 damage) internal pure returns (DamageLevel) {
37
+ if (damage == 1) {
38
+ return DAMAGE_SMALL();
39
+ } else if (damage == 2) {
40
+ return DAMAGE_MEDIUM();
41
+ } else if (damage == 3) {
42
+ return DAMAGE_LARGE();
43
+ } else {
44
+ revert ErrorDamageLeveLibInvalidDamageLevel(damage);
45
+ }
46
+ }
47
+
48
+ function toInt(DamageLevel damageLevel) internal pure returns (uint8) {
49
+ return uint8(DamageLevel.unwrap(damageLevel));
50
+ }
51
+
52
+ function eq(DamageLevel a, DamageLevel b) internal pure returns (bool) {
53
+ return DamageLevel.unwrap(a) == DamageLevel.unwrap(b);
54
+ }
55
+
56
+ function eqz(DamageLevel a) internal pure returns (bool) {
57
+ return DamageLevel.unwrap(a) == 0;
58
+ }
59
+ }