@etherisc/gif-next 0.0.2-ff282a4-523 → 0.0.2-ff795d8-141

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 (582) hide show
  1. package/README.md +130 -10
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1023 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +752 -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 +1652 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1279 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +790 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1333 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +455 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +397 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +646 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1225 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +805 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +154 -600
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +564 -471
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +240 -116
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +165 -336
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +373 -113
  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 +1461 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2018 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -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 +1404 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1152 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1628 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2405 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -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 +526 -87
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +413 -74
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +533 -218
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2302 -0
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +902 -0
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1843 -719
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +433 -211
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +171 -93
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1651 -770
  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 +4 -0
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  90. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  92. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  96. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  98. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  100. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  105. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  106. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  107. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +938 -0
  109. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +810 -0
  111. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  112. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  113. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  114. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +753 -0
  115. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  116. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +733 -0
  117. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  118. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +854 -0
  119. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  120. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1013 -0
  121. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  122. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +772 -0
  123. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  124. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1231 -0
  125. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  126. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  127. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +355 -366
  129. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +214 -102
  131. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +221 -76
  133. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  134. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +214 -423
  135. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +554 -401
  137. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  138. package/artifacts/contracts/pool/Pool.sol/Pool.json +223 -624
  139. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  140. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +538 -0
  141. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +694 -710
  143. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +228 -112
  145. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +219 -242
  147. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +188 -88
  149. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  150. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1140 -0
  151. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  153. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +458 -332
  155. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +222 -114
  157. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +155 -9
  159. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +327 -16
  161. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +399 -69
  163. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +195 -82
  165. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +367 -231
  167. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  168. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +100 -62
  169. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +440 -380
  171. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  172. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  173. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +196 -124
  175. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  176. package/artifacts/contracts/product/PricingService.sol/PricingService.json +247 -324
  177. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +192 -108
  179. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  180. package/artifacts/contracts/product/Product.sol/Product.json +409 -509
  181. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  182. package/artifacts/contracts/product/RiskService.sol/RiskService.json +688 -0
  183. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  184. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +736 -0
  185. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  186. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  187. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  188. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +462 -56
  189. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  190. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +251 -127
  191. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  192. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  193. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  194. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  195. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  196. package/artifacts/contracts/registry/Registry.sol/Registry.json +905 -121
  197. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  198. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2127 -0
  199. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  200. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1053 -0
  201. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  202. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +303 -245
  203. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  204. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +169 -91
  205. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  206. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2140 -0
  207. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  208. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  209. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  210. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1393 -0
  211. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  212. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
  213. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  214. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +315 -139
  215. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  216. package/artifacts/contracts/shared/Component.sol/Component.json +109 -296
  217. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  218. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1021 -165
  219. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  220. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +816 -0
  221. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  222. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +485 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +680 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  230. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  231. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +116 -141
  233. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  234. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1127 -0
  235. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  236. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +688 -0
  237. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  238. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +46 -14
  239. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  240. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  241. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  242. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +23 -1
  243. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  244. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +16 -30
  245. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  246. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +154 -0
  247. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  248. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IService.sol/IService.json +74 -2
  250. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  251. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  252. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  253. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +776 -0
  254. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  255. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  256. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  257. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  258. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  259. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  260. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  261. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +26 -55
  262. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  263. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +20 -124
  264. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  265. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -90
  266. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  267. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  268. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  269. package/artifacts/contracts/shared/Service.sol/Service.json +67 -102
  270. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  271. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +615 -6
  272. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  273. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  274. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  275. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  276. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  277. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1301 -119
  278. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  279. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +685 -63
  280. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  281. package/artifacts/contracts/staking/Staking.sol/Staking.json +1579 -172
  282. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  283. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  284. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  285. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  286. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  287. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +250 -73
  288. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +560 -0
  290. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  291. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +775 -176
  292. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  293. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +195 -83
  294. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2297 -0
  296. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  297. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +617 -0
  298. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  299. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  300. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/Amount.sol/AmountLib.json +122 -5
  302. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +53 -2
  304. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  306. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  308. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Fee.sol/FeeLib.json +119 -58
  310. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  311. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  312. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  313. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  314. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +66 -4
  316. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  317. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  318. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +153 -4
  320. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  322. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  324. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  326. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  328. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +121 -23
  330. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -2
  332. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  334. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  336. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  337. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  338. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  340. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  341. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
  342. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  343. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +126 -33
  344. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  346. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  347. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +120 -2
  348. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  349. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  350. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  351. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  352. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  353. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  354. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  355. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  356. package/contracts/accounting/AccountingService.sol +261 -0
  357. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  358. package/contracts/accounting/IAccountingService.sol +45 -0
  359. package/contracts/authorization/AccessAdmin.sol +789 -0
  360. package/contracts/authorization/AccessAdminLib.sol +387 -0
  361. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  362. package/contracts/authorization/Authorization.sol +174 -0
  363. package/contracts/authorization/IAccess.sol +67 -0
  364. package/contracts/authorization/IAccessAdmin.sol +137 -0
  365. package/contracts/authorization/IAuthorization.sol +27 -0
  366. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  367. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  368. package/contracts/distribution/BasicDistribution.sol +141 -0
  369. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  370. package/contracts/distribution/Distribution.sol +135 -175
  371. package/contracts/distribution/DistributionService.sol +306 -213
  372. package/contracts/distribution/DistributionServiceManager.sol +13 -25
  373. package/contracts/distribution/IDistributionComponent.sol +23 -49
  374. package/contracts/distribution/IDistributionService.sol +55 -33
  375. package/contracts/examples/fire/DamageLevel.sol +59 -0
  376. package/contracts/examples/fire/FirePool.sol +86 -0
  377. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  378. package/contracts/examples/fire/FireProduct.sol +433 -0
  379. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  380. package/contracts/examples/fire/FireUSD.sol +26 -0
  381. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  382. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  383. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  384. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  385. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  386. package/contracts/examples/unpermissioned/SimpleProduct.sol +373 -0
  387. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  388. package/contracts/instance/BundleSet.sol +130 -0
  389. package/contracts/instance/IInstance.sol +114 -49
  390. package/contracts/instance/IInstanceService.sol +74 -37
  391. package/contracts/instance/Instance.sol +245 -133
  392. package/contracts/instance/InstanceAdmin.sol +380 -0
  393. package/contracts/instance/InstanceAuthorizationV3.sol +263 -0
  394. package/contracts/instance/InstanceReader.sol +437 -100
  395. package/contracts/instance/InstanceService.sol +402 -180
  396. package/contracts/instance/InstanceServiceManager.sol +14 -29
  397. package/contracts/instance/InstanceStore.sol +151 -64
  398. package/contracts/instance/RiskSet.sol +118 -0
  399. package/contracts/instance/base/BalanceStore.sol +123 -0
  400. package/contracts/instance/base/Cloneable.sol +2 -25
  401. package/contracts/instance/base/ObjectCounter.sol +20 -0
  402. package/contracts/instance/base/ObjectLifecycle.sol +113 -0
  403. package/contracts/instance/base/ObjectSet.sol +77 -0
  404. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  405. package/contracts/instance/module/IBundle.sol +6 -8
  406. package/contracts/instance/module/IComponents.sol +40 -19
  407. package/contracts/instance/module/IDistribution.sol +21 -9
  408. package/contracts/instance/module/IPolicy.sol +57 -30
  409. package/contracts/instance/module/IRisk.sol +5 -0
  410. package/contracts/mock/Dip.sol +26 -0
  411. package/contracts/oracle/BasicOracle.sol +45 -0
  412. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  413. package/contracts/oracle/IOracle.sol +41 -0
  414. package/contracts/oracle/IOracleComponent.sol +33 -0
  415. package/contracts/oracle/IOracleService.sol +66 -0
  416. package/contracts/oracle/Oracle.sol +154 -0
  417. package/contracts/oracle/OracleService.sol +310 -0
  418. package/contracts/oracle/OracleServiceManager.sol +39 -0
  419. package/contracts/pool/BasicPool.sol +173 -0
  420. package/contracts/pool/BasicPoolAuthorization.sol +82 -0
  421. package/contracts/pool/BundleService.sol +237 -224
  422. package/contracts/pool/BundleServiceManager.sol +13 -25
  423. package/contracts/pool/IBundleService.sol +35 -38
  424. package/contracts/pool/IPoolComponent.sol +23 -75
  425. package/contracts/pool/IPoolService.sol +107 -56
  426. package/contracts/pool/Pool.sol +209 -168
  427. package/contracts/pool/PoolLib.sol +353 -0
  428. package/contracts/pool/PoolService.sol +446 -262
  429. package/contracts/pool/PoolServiceManager.sol +12 -24
  430. package/contracts/product/ApplicationService.sol +177 -85
  431. package/contracts/product/ApplicationServiceManager.sol +12 -9
  432. package/contracts/product/BasicProduct.sol +49 -0
  433. package/contracts/product/BasicProductAuthorization.sol +61 -0
  434. package/contracts/product/ClaimService.sol +380 -184
  435. package/contracts/product/ClaimServiceManager.sol +12 -9
  436. package/contracts/product/IApplicationService.sol +10 -3
  437. package/contracts/product/IClaimService.sol +48 -6
  438. package/contracts/product/IPolicyService.sol +54 -39
  439. package/contracts/product/IPricingService.sol +14 -11
  440. package/contracts/product/IProductComponent.sol +31 -10
  441. package/contracts/product/IRiskService.sol +33 -0
  442. package/contracts/product/PolicyService.sol +498 -234
  443. package/contracts/product/PolicyServiceLib.sol +139 -0
  444. package/contracts/product/PolicyServiceManager.sol +12 -27
  445. package/contracts/product/PricingService.sol +116 -82
  446. package/contracts/product/PricingServiceManager.sol +12 -24
  447. package/contracts/product/Product.sol +236 -148
  448. package/contracts/product/RiskService.sol +154 -0
  449. package/contracts/product/RiskServiceManager.sol +39 -0
  450. package/contracts/registry/ChainNft.sol +72 -39
  451. package/contracts/registry/IRegistry.sol +94 -34
  452. package/contracts/registry/IRegistryService.sol +28 -35
  453. package/contracts/registry/IRelease.sol +29 -0
  454. package/contracts/registry/ITransferInterceptor.sol +1 -2
  455. package/contracts/registry/Registry.sol +444 -219
  456. package/contracts/registry/RegistryAdmin.sol +188 -0
  457. package/contracts/registry/RegistryAuthorization.sol +277 -0
  458. package/contracts/registry/RegistryService.sol +74 -137
  459. package/contracts/registry/RegistryServiceManager.sol +23 -30
  460. package/contracts/registry/ReleaseAdmin.sol +195 -0
  461. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  462. package/contracts/registry/ReleaseRegistry.sol +520 -0
  463. package/contracts/registry/ServiceAuthorizationV3.sol +343 -0
  464. package/contracts/registry/TokenRegistry.sol +262 -64
  465. package/contracts/shared/Component.sol +122 -183
  466. package/contracts/shared/ComponentService.sol +610 -99
  467. package/contracts/shared/ComponentServiceManager.sol +38 -0
  468. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  469. package/contracts/shared/ContractLib.sol +357 -0
  470. package/contracts/shared/IComponent.sol +17 -49
  471. package/contracts/shared/IComponentService.sol +110 -0
  472. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  473. package/contracts/{instance/base → shared}/IKeyValueStore.sol +7 -6
  474. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  475. package/contracts/shared/INftOwnable.sol +3 -1
  476. package/contracts/shared/IPolicyHolder.sol +12 -17
  477. package/contracts/shared/IRegisterable.sol +23 -1
  478. package/contracts/shared/IService.sol +11 -6
  479. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +12 -4
  480. package/contracts/shared/InstanceLinkedComponent.sol +194 -0
  481. package/contracts/{instance/base → shared}/KeyValueStore.sol +36 -74
  482. package/contracts/shared/Lifecycle.sol +88 -0
  483. package/contracts/shared/NftIdSet.sol +65 -0
  484. package/contracts/shared/NftOwnable.sol +33 -24
  485. package/contracts/shared/PolicyHolder.sol +18 -50
  486. package/contracts/shared/Registerable.sol +54 -23
  487. package/contracts/shared/RegistryLinked.sol +9 -14
  488. package/contracts/shared/Service.sol +36 -41
  489. package/contracts/shared/TokenHandler.sol +320 -13
  490. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  491. package/contracts/staking/IStaking.sol +170 -6
  492. package/contracts/staking/IStakingService.sol +110 -40
  493. package/contracts/staking/Staking.sol +509 -27
  494. package/contracts/staking/StakingLib.sol +281 -0
  495. package/contracts/staking/StakingLifecycle.sol +23 -0
  496. package/contracts/staking/StakingManager.sol +24 -16
  497. package/contracts/staking/StakingReader.sol +180 -0
  498. package/contracts/staking/StakingService.sol +311 -48
  499. package/contracts/staking/StakingServiceManager.sol +12 -8
  500. package/contracts/staking/StakingStore.sol +606 -0
  501. package/contracts/staking/TargetManagerLib.sol +211 -0
  502. package/contracts/type/AddressSet.sol +1 -1
  503. package/contracts/type/Amount.sol +44 -3
  504. package/contracts/type/Blocknumber.sol +26 -3
  505. package/contracts/type/ClaimId.sol +6 -1
  506. package/contracts/type/Fee.sol +22 -21
  507. package/contracts/type/Key32.sol +2 -2
  508. package/contracts/type/Key32Set.sol +62 -0
  509. package/contracts/type/NftId.sol +21 -16
  510. package/contracts/type/NftIdSet.sol +1 -1
  511. package/contracts/type/ObjectType.sol +204 -63
  512. package/contracts/type/PayoutId.sol +10 -10
  513. package/contracts/type/Referral.sol +2 -1
  514. package/contracts/type/RequestId.sol +75 -0
  515. package/contracts/type/RiskId.sol +39 -7
  516. package/contracts/type/RoleId.sol +122 -74
  517. package/contracts/type/Seconds.sol +48 -1
  518. package/contracts/type/Selector.sol +107 -0
  519. package/contracts/type/StateId.sol +41 -2
  520. package/contracts/type/String.sol +53 -0
  521. package/contracts/type/Timestamp.sol +16 -7
  522. package/contracts/type/UFixed.sol +61 -125
  523. package/contracts/type/Version.sol +58 -7
  524. package/contracts/{shared → upgradeability}/ProxyManager.sol +101 -36
  525. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +8 -4
  526. package/contracts/{shared → upgradeability}/Versionable.sol +6 -3
  527. package/package.json +12 -8
  528. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  529. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  530. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  531. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  532. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  533. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -124
  534. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  535. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  536. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  537. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -581
  538. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  539. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  540. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  541. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  542. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  543. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -237
  544. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  545. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  546. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  547. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  548. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  549. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -864
  550. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  551. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -640
  552. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  553. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  554. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  555. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -620
  556. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  557. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  558. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  559. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  560. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  561. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  562. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
  563. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  564. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  565. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  566. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  567. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  568. package/contracts/instance/BundleManager.sol +0 -126
  569. package/contracts/instance/InstanceAccessManager.sol +0 -543
  570. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -308
  571. package/contracts/instance/base/Lifecycle.sol +0 -121
  572. package/contracts/instance/base/ObjectManager.sol +0 -82
  573. package/contracts/instance/module/IAccess.sol +0 -54
  574. package/contracts/instance/module/ISetup.sol +0 -33
  575. package/contracts/instance/module/ITreasury.sol +0 -23
  576. package/contracts/product/IProductService.sol +0 -40
  577. package/contracts/product/ProductService.sol +0 -210
  578. package/contracts/product/ProductServiceManager.sol +0 -54
  579. package/contracts/registry/RegistryAccessManager.sol +0 -207
  580. package/contracts/registry/ReleaseManager.sol +0 -360
  581. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
  582. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,174 +1,113 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {IRegistry} from "../registry/IRegistry.sol";
4
+ import {IAccountingService} from "../accounting/IAccountingService.sol";
5
+ import {IComponentService} from "../shared/IComponentService.sol";
6
+ import {IDistribution} from "../instance/module/IDistribution.sol";
7
+ import {IDistributionService} from "./IDistributionService.sol";
5
8
  import {IInstance} from "../instance/IInstance.sol";
6
- import {InstanceAccessManager} from "../instance/InstanceAccessManager.sol";
7
- import {InstanceReader} from "../instance/InstanceReader.sol";
8
- import {ISetup} from "../instance/module/ISetup.sol";
9
+ import {IInstanceService} from "../instance/IInstanceService.sol";
10
+ import {IRegistry} from "../registry/IRegistry.sol";
11
+ import {IRegistryService} from "../registry/IRegistryService.sol";
12
+ import {IComponents} from "../instance/module/IComponents.sol";
9
13
  import {IPolicy} from "../instance/module/IPolicy.sol";
10
14
 
11
15
  import {Amount, AmountLib} from "../type/Amount.sol";
12
- import {NftId, NftIdLib, zeroNftId} from "../type/NftId.sol";
13
- import {Fee, FeeLib} from "../type/Fee.sol";
14
- import {PRODUCT_SERVICE_ROLE, DISTRIBUTION_OWNER_ROLE} from "../type/RoleId.sol";
16
+ import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
17
+ import {NftId, NftIdLib} from "../type/NftId.sol";
15
18
  import {KEEP_STATE} from "../type/StateId.sol";
16
- import {ObjectType, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, PRICE} from "../type/ObjectType.sol";
17
- import {Version, VersionLib} from "../type/Version.sol";
18
- import {RoleId} from "../type/RoleId.sol";
19
-
20
- import {IVersionable} from "../shared/IVersionable.sol";
21
- import {Versionable} from "../shared/Versionable.sol";
22
-
23
- import {IService} from "../shared/IService.sol";
19
+ import {ObjectType, ACCOUNTING, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
20
+ import {InstanceReader} from "../instance/InstanceReader.sol";
21
+ import {InstanceStore} from "../instance/InstanceStore.sol";
22
+ // TODO PoolLib feels wrong, should likely go in a component type independent lib
23
+ import {PoolLib} from "../pool/PoolLib.sol";
24
+ import {ReferralId, ReferralStatus, ReferralLib, REFERRAL_OK, REFERRAL_ERROR_UNKNOWN, REFERRAL_ERROR_EXPIRED, REFERRAL_ERROR_EXHAUSTED} from "../type/Referral.sol";
25
+ import {Seconds} from "../type/Seconds.sol";
24
26
  import {Service} from "../shared/Service.sol";
25
- import {ComponentService} from "../shared/ComponentService.sol";
26
- import {InstanceService} from "../instance/InstanceService.sol";
27
- import {IComponent} from "../shared/IComponent.sol";
28
- import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
29
- import {IDistributionService} from "./IDistributionService.sol";
30
- import {IPricingService} from "../product/IPricingService.sol";
31
-
27
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
32
28
  import {UFixed, UFixedLib} from "../type/UFixed.sol";
33
- import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
34
- import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
35
- import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
36
- import {Key32} from "../type/Key32.sol";
37
- import {IDistribution} from "../instance/module/IDistribution.sol";
38
- import {InstanceStore} from "../instance/InstanceStore.sol";
39
29
 
40
30
 
41
31
  contract DistributionService is
42
- ComponentService,
32
+ Service,
43
33
  IDistributionService
44
34
  {
45
- using NftIdLib for NftId;
46
- using TimestampLib for Timestamp;
47
- using UFixedLib for UFixed;
48
- using FeeLib for Fee;
49
- using ReferralLib for ReferralId;
50
-
51
- address internal _registryAddress;
35
+ IAccountingService private _accountingService;
36
+ IComponentService private _componentService;
37
+ IInstanceService private _instanceService;
38
+ IRegistryService private _registryService;
52
39
 
53
40
  function _initialize(
54
41
  address owner,
55
42
  bytes memory data
56
43
  )
57
44
  internal
58
- initializer
59
45
  virtual override
60
- {
61
- address initialOwner;
62
- address registryAddress;
63
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
64
- // TODO while DistributionService is not deployed in DistributionServiceManager constructor
65
- // owner is DistributionServiceManager deployer
66
- initializeService(registryAddress, address(0), owner);
67
- registerInterface(type(IDistributionService).interfaceId);
68
- }
69
-
70
- function getDomain() public pure override returns(ObjectType) {
71
- return DISTRIBUTION();
72
- }
73
-
74
- function register(address distributionAddress)
75
- external
76
- returns(NftId distributionNftId)
46
+ initializer()
77
47
  {
78
48
  (
79
- IComponent component,
80
- address owner,
81
- IInstance instance,
82
- NftId instanceNftId
83
- ) = _checkComponentForRegistration(
84
- distributionAddress,
85
- DISTRIBUTION(),
86
- DISTRIBUTION_OWNER_ROLE());
87
-
88
- IRegistry.ObjectInfo memory distributionInfo = getRegistryService().registerDistribution(component, owner);
89
- IDistributionComponent distribution = IDistributionComponent(distributionAddress);
90
- distribution.linkToRegisteredNftId();
91
- distributionNftId = distributionInfo.nftId;
92
-
93
- instance.getInstanceStore().createDistributionSetup(distributionNftId, distribution.getSetupInfo());
94
- // TODO move to distribution?
95
- bytes4[][] memory selectors = new bytes4[][](2);
96
- selectors[0] = new bytes4[](1);
97
- // TODO check if array size should be 1 instead of 2
98
- selectors[1] = new bytes4[](2);
99
-
100
- selectors[0][0] = IDistributionComponent.setFees.selector;
101
- selectors[1][0] = IDistributionComponent.processRenewal.selector;
102
-
103
- RoleId[] memory roles = new RoleId[](2);
104
- roles[0] = DISTRIBUTION_OWNER_ROLE();
105
- roles[1] = PRODUCT_SERVICE_ROLE();
106
-
107
- getInstanceService().createGifTarget(
108
- instanceNftId,
109
- distributionAddress,
110
- distribution.getName(),
111
- selectors,
112
- roles);
113
- }
49
+ address authority,
50
+ address registry
51
+ ) = abi.decode(data, (address, address));
114
52
 
115
- function setFees(
116
- Fee memory minDistributionOwnerFee,
117
- Fee memory distributionFee
118
- )
119
- external
120
- override
121
- {
122
- if (minDistributionOwnerFee.fractionalFee > distributionFee.fractionalFee) {
123
- revert ErrorIDistributionServiceMinFeeTooHigh(minDistributionOwnerFee.fractionalFee.toInt(), distributionFee.fractionalFee.toInt());
124
- }
53
+ __Service_init(authority, registry, owner);
125
54
 
126
- (NftId distributionNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(DISTRIBUTION());
127
- InstanceReader instanceReader = instance.getInstanceReader();
55
+ _accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
56
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
57
+ _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
58
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
128
59
 
129
- ISetup.DistributionSetupInfo memory distSetupInfo = instanceReader.getDistributionSetupInfo(distributionNftId);
130
- distSetupInfo.minDistributionOwnerFee = minDistributionOwnerFee;
131
- distSetupInfo.distributionFee = distributionFee;
132
-
133
- instance.getInstanceStore().updateDistributionSetup(distributionNftId, distSetupInfo, KEEP_STATE());
60
+ _registerInterface(type(IDistributionService).interfaceId);
134
61
  }
135
62
 
63
+
136
64
  function createDistributorType(
137
65
  string memory name,
138
66
  UFixed minDiscountPercentage,
139
67
  UFixed maxDiscountPercentage,
140
68
  UFixed commissionPercentage,
141
69
  uint32 maxReferralCount,
142
- uint32 maxReferralLifetime,
70
+ Seconds maxReferralLifetime,
143
71
  bool allowSelfReferrals,
144
72
  bool allowRenewals,
145
73
  bytes memory data
146
74
  )
147
75
  external
76
+ restricted()
148
77
  returns (DistributorType distributorType)
149
78
  {
150
- (NftId distributionNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(DISTRIBUTION());
79
+ // _getAndVerifyActiveDistribution
80
+ (NftId distributionNftId, IInstance instance) = _getAndVerifyActiveDistribution();
151
81
 
152
82
  {
153
- ISetup.DistributionSetupInfo memory setupInfo = instance.getInstanceReader().getDistributionSetupInfo(distributionNftId);
154
- UFixed variableFeesPartsTotal = setupInfo.minDistributionOwnerFee.fractionalFee.add(commissionPercentage);
155
- UFixed maxDiscountPercentageLimit = setupInfo.distributionFee.fractionalFee.sub(variableFeesPartsTotal);
156
- if (maxDiscountPercentage.gt(maxDiscountPercentageLimit)) {
157
- revert ErrorIDistributionServiceMaxDiscountTooHigh(maxDiscountPercentage.toInt(), maxDiscountPercentageLimit.toInt());
83
+ NftId productNftId = getRegistry().getParentNftId(distributionNftId);
84
+ IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
85
+
86
+ UFixed variableDistributionFees = feeInfo.distributionFee.fractionalFee;
87
+ UFixed variableFeesPartsTotal = feeInfo.minDistributionOwnerFee.fractionalFee + commissionPercentage;
88
+
89
+ if (variableFeesPartsTotal > variableDistributionFees) {
90
+ revert ErrorDistributionServiceVariableFeesTooHight(variableDistributionFees.toInt1000(), variableFeesPartsTotal.toInt1000());
91
+ }
92
+ UFixed maxDiscountPercentageLimit = variableDistributionFees - variableFeesPartsTotal;
93
+
94
+ if (maxDiscountPercentage > maxDiscountPercentageLimit) {
95
+ revert ErrorDistributionServiceMaxDiscountTooHigh(maxDiscountPercentage.toInt1000(), maxDiscountPercentageLimit.toInt1000());
158
96
  }
159
97
  }
160
98
 
161
99
  distributorType = DistributorTypeLib.toDistributorType(distributionNftId, name);
162
- IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo(
163
- name,
164
- minDiscountPercentage,
165
- maxDiscountPercentage,
166
- commissionPercentage,
167
- maxReferralCount,
168
- maxReferralLifetime,
169
- allowSelfReferrals,
170
- allowRenewals,
171
- data);
100
+ IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo({
101
+ name: name,
102
+ distributionNftId: distributionNftId,
103
+ minDiscountPercentage: minDiscountPercentage,
104
+ maxDiscountPercentage: maxDiscountPercentage,
105
+ commissionPercentage: commissionPercentage,
106
+ maxReferralCount: maxReferralCount,
107
+ maxReferralLifetime: maxReferralLifetime,
108
+ allowSelfReferrals: allowSelfReferrals,
109
+ allowRenewals: allowRenewals,
110
+ data: data});
172
111
 
173
112
  instance.getInstanceStore().createDistributorType(distributorType, info);
174
113
  }
@@ -181,13 +120,15 @@ contract DistributionService is
181
120
  )
182
121
  external
183
122
  virtual
123
+ restricted()
184
124
  returns (NftId distributorNftId)
185
125
  {
186
- (NftId distributionNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(DISTRIBUTION());
126
+ (NftId distributionNftId, IInstance instance) = _getAndVerifyActiveDistribution();
127
+ _checkDistributionType(instance.getInstanceReader(), distributorType, distributionNftId);
187
128
 
188
- distributorNftId = getRegistryService().registerDistributor(
129
+ distributorNftId = _registryService.registerDistributor(
189
130
  IRegistry.ObjectInfo(
190
- zeroNftId(),
131
+ NftIdLib.zero(),
191
132
  distributionNftId,
192
133
  DISTRIBUTOR(),
193
134
  true, // intercepting property for bundles is defined on pool
@@ -196,31 +137,33 @@ contract DistributionService is
196
137
  ""
197
138
  ));
198
139
 
199
- IDistribution.DistributorInfo memory info = IDistribution.DistributorInfo(
200
- distributorType,
201
- true, // active
202
- data,
203
- AmountLib.zero(),
204
- 0);
140
+ IDistribution.DistributorInfo memory info = IDistribution.DistributorInfo({
141
+ distributorType: distributorType,
142
+ active: true,
143
+ numPoliciesSold: 0,
144
+ data: data});
205
145
 
206
146
  instance.getInstanceStore().createDistributor(distributorNftId, info);
207
147
  }
208
148
 
209
- // function updateDistributorType(
210
- // NftId distributorNftId,
211
- // DistributorType distributorType,
212
- // bytes memory data
213
- // )
214
- // external
215
- // virtual
216
- // {
217
- // (, IInstance instance) = _getAndVerifyCallingDistribution();
218
- // InstanceReader instanceReader = instance.getInstanceReader();
219
- // IDistribution.DistributorInfo memory distributorInfo = instanceReader.getDistributorInfo(distributorNftId);
220
- // distributorInfo.distributorType = distributorType;
221
- // distributorInfo.data = data;
222
- // instance.updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
223
- // }
149
+ function changeDistributorType(
150
+ NftId distributorNftId,
151
+ DistributorType newDistributorType,
152
+ bytes memory data
153
+ )
154
+ external
155
+ virtual
156
+ restricted()
157
+ {
158
+ _checkNftType(distributorNftId, DISTRIBUTOR());
159
+ (NftId distributionNftId, IInstance instance) = _getAndVerifyActiveDistribution();
160
+ _checkDistributionType(instance.getInstanceReader(), newDistributorType, distributionNftId);
161
+
162
+ IDistribution.DistributorInfo memory distributorInfo = instance.getInstanceReader().getDistributorInfo(distributorNftId);
163
+ distributorInfo.distributorType = newDistributorType;
164
+ distributorInfo.data = data;
165
+ instance.getInstanceStore().updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
166
+ }
224
167
 
225
168
 
226
169
  function createReferral(
@@ -233,117 +176,267 @@ contract DistributionService is
233
176
  )
234
177
  external
235
178
  virtual
179
+ restricted()
180
+ onlyNftOfType(distributorNftId, DISTRIBUTOR())
236
181
  returns (ReferralId referralId)
237
182
  {
238
- (NftId distributionNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(DISTRIBUTION());
183
+ (NftId distributionNftId, IInstance instance) = _getAndVerifyActiveDistribution();
239
184
 
240
185
  if (bytes(code).length == 0) {
241
- revert ErrorIDistributionServiceInvalidReferral(code);
186
+ revert ErrorDistributionServiceInvalidReferral(code);
242
187
  }
243
- if (expiryAt.eqz()) {
244
- revert ErrorIDistributionServiceExpirationInvalid(expiryAt);
188
+ if (expiryAt.eqz() || expiryAt.lte(TimestampLib.blockTimestamp())) {
189
+ revert ErrorDistributionServiceExpirationInvalid(expiryAt);
245
190
  }
246
191
 
247
- InstanceReader instanceReader = instance.getInstanceReader();
248
- DistributorType distributorType = instanceReader.getDistributorInfo(distributorNftId).distributorType;
249
- IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
250
-
251
- if (distributorTypeData.maxReferralCount < maxReferrals) {
252
- revert ErrorIDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
253
- }
254
- if (distributorTypeData.minDiscountPercentage > discountPercentage) {
255
- revert ErrorIDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage.toInt(), discountPercentage.toInt());
192
+ NftId distributorDistributionNftId = getRegistry().getParentNftId(distributorNftId);
193
+ if (distributorDistributionNftId != distributionNftId) {
194
+ revert ErrorDistributionServiceDistributorDistributionMismatch(distributorNftId, distributorDistributionNftId, distributionNftId);
256
195
  }
257
- if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
258
- revert ErrorIDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage.toInt(), discountPercentage.toInt());
196
+
197
+ {
198
+ InstanceReader instanceReader = instance.getInstanceReader();
199
+ DistributorType distributorType = instanceReader.getDistributorInfo(distributorNftId).distributorType;
200
+ IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
201
+
202
+ if (distributorTypeData.maxReferralCount < maxReferrals) {
203
+ revert ErrorDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
204
+ }
205
+ if (distributorTypeData.minDiscountPercentage > discountPercentage) {
206
+ revert ErrorDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage.toInt(), discountPercentage.toInt());
207
+ }
208
+ if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
209
+ revert ErrorDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage.toInt(), discountPercentage.toInt());
210
+ }
211
+ if (expiryAt.toInt() - TimestampLib.blockTimestamp().toInt() > distributorTypeData.maxReferralLifetime.toInt()) {
212
+ revert ErrorDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt);
213
+ }
259
214
  }
260
- if (expiryAt.toInt() - TimestampLib.blockTimestamp().toInt() > distributorTypeData.maxReferralLifetime) {
261
- revert ErrorIDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt.toInt());
215
+
216
+ {
217
+ referralId = ReferralLib.toReferralId(distributionNftId, code);
218
+ IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo({
219
+ distributionNftId: distributionNftId,
220
+ distributorNftId: distributorNftId,
221
+ referralCode: code,
222
+ discountPercentage: discountPercentage,
223
+ maxReferrals: maxReferrals,
224
+ usedReferrals: 0,
225
+ expiryAt: expiryAt,
226
+ data: data
227
+ });
228
+
229
+ instance.getInstanceStore().createReferral(referralId, info);
262
230
  }
231
+ }
263
232
 
264
- referralId = ReferralLib.toReferralId(distributionNftId, code);
265
- IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo(
266
- distributorNftId,
267
- code,
268
- discountPercentage,
269
- maxReferrals,
270
- 0, // used referrals
271
- expiryAt,
272
- data
273
- );
233
+ /// @inheritdoc IDistributionService
234
+ function processReferral(
235
+ NftId distributionNftId,
236
+ ReferralId referralId
237
+ )
238
+ external
239
+ virtual
240
+ restricted()
241
+ onlyNftOfType(distributionNftId, DISTRIBUTION())
242
+ {
243
+ if (referralIsValid(distributionNftId, referralId)) {
244
+ IInstance instance = _getInstanceForDistribution(getRegistry(), distributionNftId);
274
245
 
275
- instance.getInstanceStore().createReferral(referralId, info);
276
- return referralId;
246
+ // update book keeping for referral info
247
+ IDistribution.ReferralInfo memory referralInfo = instance.getInstanceReader().getReferralInfo(referralId);
248
+ referralInfo.usedReferrals += 1;
249
+ instance.getInstanceStore().updateReferral(referralId, referralInfo, KEEP_STATE());
250
+ }
277
251
  }
278
252
 
279
253
  function processSale(
280
254
  NftId distributionNftId, // assume always of distribution type
281
255
  ReferralId referralId,
282
- IPolicy.Premium memory premium,
283
- Amount transferredDistributionFeeAmount
256
+ IPolicy.PremiumInfo memory premium
284
257
  )
285
258
  external
286
259
  virtual
260
+ restricted()
261
+ onlyNftOfType(distributionNftId, DISTRIBUTION())
287
262
  {
288
- bool isReferral = ! referralId.eqz();
289
- bool referralValid = referralIsValid(distributionNftId, referralId);
263
+ IInstance instance = _getInstanceForDistribution(getRegistry(), distributionNftId);
264
+ InstanceReader reader = instance.getInstanceReader();
265
+ InstanceStore store = instance.getInstanceStore();
266
+
267
+ // get distribution owner fee amount
268
+ Amount distributionOwnerFee = premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount;
269
+
270
+ // update referral/distributor info if applicable
271
+ if (referralIsValid(distributionNftId, referralId)) {
290
272
 
291
- if (isReferral && ! referralValid) {
292
- revert ErrorIDistributionServiceReferralInvalid(distributionNftId, referralId);
273
+ // increase distribution balance by commission amount and distribution owner fee
274
+ Amount commissionAmount = premium.commissionAmount;
275
+ _accountingService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
276
+
277
+ // update book keeping for referral info
278
+ IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
279
+
280
+ _accountingService.increaseDistributorBalance(store, referralInfo.distributorNftId, AmountLib.zero(), commissionAmount);
281
+
282
+ // update book keeping for distributor info
283
+ IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
284
+ distributorInfo.numPoliciesSold += 1;
285
+ store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
286
+ } else {
287
+ // increase distribution balance by distribution owner fee
288
+ _accountingService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
293
289
  }
290
+ }
294
291
 
295
- IInstance instance = _getInstanceForDistribution(distributionNftId);
292
+ /// @inheritdoc IDistributionService
293
+ function withdrawCommission(NftId distributorNftId, Amount amount)
294
+ public
295
+ virtual
296
+ restricted()
297
+ onlyNftOfType(distributorNftId, DISTRIBUTOR())
298
+ returns (Amount withdrawnAmount)
299
+ {
300
+ (NftId distributionNftId, IInstance instance) = _getAndVerifyActiveDistribution();
296
301
  InstanceReader reader = instance.getInstanceReader();
297
- InstanceStore store = instance.getInstanceStore();
298
- IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
299
- IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
300
- ISetup.DistributionSetupInfo memory setupInfo = reader.getDistributionSetupInfo(distributionNftId);
301
302
 
302
- Amount distributionOwnerFee = AmountLib.toAmount(premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount);
303
- Amount commissionAmount = AmountLib.toAmount(premium.commissionAmount);
304
-
305
- if (!(transferredDistributionFeeAmount == distributionOwnerFee + commissionAmount)) {
306
- revert ErrorDistributionServiceInvalidFeeTransferred(transferredDistributionFeeAmount, distributionOwnerFee + commissionAmount);
303
+ IComponents.ComponentInfo memory distributionInfo = reader.getComponentInfo(distributionNftId);
304
+ // address distributionWallet = distributionInfo.tokenHandler.getWallet();
305
+
306
+ Amount commissionAmount = reader.getFeeAmount(distributorNftId);
307
+
308
+ // determine withdrawn amount
309
+ withdrawnAmount = amount;
310
+ if (withdrawnAmount >= AmountLib.max()) {
311
+ withdrawnAmount = commissionAmount;
312
+ } else {
313
+ if (withdrawnAmount > commissionAmount) {
314
+ revert ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(withdrawnAmount, commissionAmount);
315
+ }
307
316
  }
308
317
 
309
-
310
- if (distributionOwnerFee.gtz()) {
311
- setupInfo.sumDistributionOwnerFees += distributionOwnerFee.toInt();
312
- store.updateDistributionSetup(distributionNftId, setupInfo, KEEP_STATE());
318
+ // decrease fee counters by withdrawnAmount and update distributor info
319
+ {
320
+ InstanceStore store = instance.getInstanceStore();
321
+ // decrease fee counter for distribution balance
322
+ _accountingService.decreaseDistributionBalance(store, distributionNftId, withdrawnAmount, AmountLib.zero());
323
+ // decrease fee counter for distributor fee
324
+ _accountingService.decreaseDistributorBalance(store, distributorNftId, AmountLib.zero(), withdrawnAmount);
313
325
  }
314
326
 
315
- if (isReferral) {
316
- referralInfo.usedReferrals += 1;
317
- store.updateReferral(referralId, referralInfo, KEEP_STATE());
318
-
319
- if (commissionAmount.gtz()) {
320
- distributorInfo.commissionAmount = distributorInfo.commissionAmount + commissionAmount;
321
- distributorInfo.numPoliciesSold += 1;
322
- store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
323
- }
327
+ // transfer amount to distributor
328
+ {
329
+ address distributor = getRegistry().ownerOf(distributorNftId);
330
+ emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.tokenHandler.TOKEN()), withdrawnAmount);
331
+ distributionInfo.tokenHandler.pushToken(distributor, withdrawnAmount);
324
332
  }
325
333
  }
326
334
 
327
- // TODO: zero should return false
328
- function referralIsValid(NftId distributionNftId, ReferralId referralId) public view returns (bool isValid) {
329
- IInstance instance = _getInstanceForDistribution(distributionNftId);
335
+ function referralIsValid(NftId distributionNftId, ReferralId referralId)
336
+ public
337
+ view
338
+ onlyNftOfType(distributionNftId, DISTRIBUTION())
339
+ returns (bool isValid)
340
+ {
341
+ if (distributionNftId.eqz() || referralId.eqz()) {
342
+ return false;
343
+ }
344
+
345
+ IInstance instance = _getInstanceForDistribution(getRegistry(), distributionNftId);
330
346
  IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
331
347
 
332
348
  if (info.distributorNftId.eqz()) {
333
349
  return false;
334
350
  }
335
351
 
352
+ // ensure the referral was created on the same distribution
353
+ if(info.distributionNftId != distributionNftId) {
354
+ revert ErrorDistributionServiceReferralDistributionMismatch(referralId, info.distributionNftId, distributionNftId);
355
+ }
356
+
336
357
  isValid = info.expiryAt.eqz() || (info.expiryAt.gtz() && TimestampLib.blockTimestamp() <= info.expiryAt);
337
358
  isValid = isValid && info.usedReferrals < info.maxReferrals;
338
359
  }
339
360
 
340
- function _getInstanceForDistribution(NftId distributionNftId)
361
+
362
+ function getDiscountPercentage(
363
+ InstanceReader instanceReader,
364
+ ReferralId referralId
365
+ )
366
+ external
367
+ virtual
368
+ view
369
+ returns (
370
+ UFixed discountPercentage,
371
+ ReferralStatus status
372
+ )
373
+ {
374
+ IDistribution.ReferralInfo memory info = instanceReader.getReferralInfo(
375
+ referralId);
376
+
377
+ if (info.expiryAt.eqz()) {
378
+ return (
379
+ UFixedLib.zero(),
380
+ REFERRAL_ERROR_UNKNOWN());
381
+ }
382
+
383
+ if (info.expiryAt < TimestampLib.blockTimestamp()) {
384
+ return (
385
+ UFixedLib.zero(),
386
+ REFERRAL_ERROR_EXPIRED());
387
+ }
388
+
389
+ if (info.usedReferrals >= info.maxReferrals) {
390
+ return (
391
+ UFixedLib.zero(),
392
+ REFERRAL_ERROR_EXHAUSTED());
393
+ }
394
+
395
+ return (
396
+ info.discountPercentage,
397
+ REFERRAL_OK()
398
+ );
399
+
400
+ }
401
+
402
+
403
+ function _checkDistributionType(InstanceReader instanceReader, DistributorType distributorType, NftId expectedDistributionNftId)
404
+ internal
405
+ view
406
+ {
407
+ // enfore distributor type belongs to the calling distribution
408
+ NftId distributorTypeDistributionNftId = instanceReader.getDistributorTypeInfo(distributorType).distributionNftId;
409
+
410
+ if (distributorTypeDistributionNftId != expectedDistributionNftId) {
411
+ revert ErrorDistributionServiceDistributorTypeDistributionMismatch(distributorType, distributorTypeDistributionNftId, expectedDistributionNftId);
412
+ }
413
+ }
414
+
415
+
416
+ function _getInstanceForDistribution(IRegistry registry, NftId distributionNftId)
341
417
  internal
342
418
  view
343
419
  returns(IInstance instance)
344
420
  {
345
- NftId instanceNftId = getRegistry().getObjectInfo(distributionNftId).parentNftId;
346
- address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
347
- return IInstance(instanceAddress);
421
+ // TODO refactor to ComponentLib or similar
422
+ return PoolLib.getInstanceForComponent(registry, distributionNftId);
423
+ }
424
+
425
+
426
+ function _getAndVerifyActiveDistribution()
427
+ internal
428
+ virtual
429
+ view
430
+ returns (
431
+ NftId poolNftId,
432
+ IInstance instance
433
+ )
434
+ {
435
+ return PoolLib.getAndVerifyActiveComponent(getRegistry(), msg.sender, DISTRIBUTION());
436
+ }
437
+
438
+
439
+ function _getDomain() internal pure override returns(ObjectType) {
440
+ return DISTRIBUTION();
348
441
  }
349
442
  }