@etherisc/gif-next 0.0.2-f1fe735-758 → 0.0.2-f2273b3-211

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