@etherisc/gif-next 0.0.2-9c44ae6-473 → 0.0.2-9c4663e-576

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 (767) hide show
  1. package/README.md +157 -23
  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 +1494 -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/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +673 -0
  14. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  16. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +615 -0
  18. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  19. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  20. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1224 -0
  22. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +382 -0
  24. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  26. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  27. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  28. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1209 -0
  30. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +644 -0
  32. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +930 -0
  34. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1580 -0
  36. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +868 -0
  38. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +829 -0
  40. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  41. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1071 -0
  42. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  44. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1445 -0
  46. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +644 -0
  48. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2002 -0
  50. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +644 -0
  52. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  53. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1388 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +644 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1152 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1612 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +644 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2389 -0
  66. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  67. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +644 -0
  68. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  69. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  70. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +435 -1284
  72. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  73. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +487 -164
  74. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  75. package/artifacts/contracts/instance/Instance.sol/Instance.json +570 -3141
  76. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2036 -0
  78. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +716 -0
  80. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1665 -629
  82. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +519 -435
  84. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +351 -129
  86. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  87. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3728 -0
  88. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  89. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  90. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  91. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  92. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  93. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  94. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  96. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  98. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  100. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  101. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  102. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  104. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  105. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  106. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  107. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  108. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  109. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  110. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  111. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +938 -0
  112. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +632 -0
  114. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  116. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  117. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → oracle/IOracleComponent.sol/IOracleComponent.json} +405 -354
  118. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  119. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +733 -0
  120. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +854 -0
  122. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +997 -0
  124. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  125. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +764 -0
  126. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  127. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1231 -0
  128. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  129. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +644 -0
  130. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1261 -0
  132. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  133. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +800 -0
  134. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  135. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +880 -0
  136. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  137. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +886 -0
  138. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  139. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1230 -0
  140. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  141. package/artifacts/contracts/pool/Pool.sol/Pool.json +1006 -0
  142. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  143. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  144. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  145. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1574 -0
  146. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  147. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +808 -0
  148. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  149. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +879 -0
  150. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  151. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +740 -0
  152. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  153. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1140 -0
  154. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  155. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +644 -0
  156. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  157. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1496 -0
  158. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  159. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +848 -0
  160. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  161. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +260 -381
  162. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  163. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1064 -0
  164. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  165. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +981 -0
  166. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  167. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +623 -0
  168. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  169. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +997 -0
  170. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  171. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IRiskService.sol/IRiskService.json} +199 -185
  172. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  173. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1333 -0
  174. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  175. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  176. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  177. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +808 -0
  178. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  179. package/artifacts/contracts/product/PricingService.sol/PricingService.json +911 -0
  180. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  181. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +764 -0
  182. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  183. package/artifacts/contracts/product/Product.sol/Product.json +1098 -0
  184. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  185. package/artifacts/contracts/product/RiskService.sol/RiskService.json +688 -0
  186. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  187. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +736 -0
  188. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  189. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +72 -16
  190. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  191. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +679 -114
  192. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  193. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +325 -229
  194. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  195. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  196. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  197. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -0
  198. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  199. package/artifacts/contracts/registry/Registry.sol/Registry.json +1017 -150
  200. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  201. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2018 -0
  202. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  203. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
  204. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  205. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +312 -336
  206. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  207. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +341 -123
  208. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  209. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1954 -0
  210. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  211. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  212. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  213. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1337 -0
  214. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  215. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  216. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  217. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +352 -101
  218. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  219. package/artifacts/contracts/shared/Component.sol/Component.json +686 -0
  220. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1556 -0
  222. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +816 -0
  224. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  225. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +165 -220
  226. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +597 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  230. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  231. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  232. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  233. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  234. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  235. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → shared/IComponent.sol/IComponent.json} +332 -167
  236. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  237. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1196 -0
  238. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  239. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +688 -0
  240. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  241. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +95 -14
  242. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  243. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  244. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  245. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +46 -26
  246. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  247. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  248. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +143 -15
  250. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  251. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  252. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  253. package/artifacts/contracts/shared/IService.sol/IService.json +137 -159
  254. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  255. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  256. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  257. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +776 -0
  258. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  259. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  260. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  261. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  262. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  263. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  264. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  265. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +81 -30
  266. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  267. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  268. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  269. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +159 -55
  270. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  271. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  272. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  273. package/artifacts/contracts/shared/Service.sol/Service.json +156 -171
  274. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  275. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +635 -8
  276. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  277. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  278. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  279. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  280. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  281. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1491 -0
  282. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  283. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1167 -0
  284. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  285. package/artifacts/contracts/staking/Staking.sol/Staking.json +1888 -0
  286. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  288. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  290. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +792 -0
  292. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +560 -0
  294. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1380 -0
  296. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  297. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +736 -0
  298. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  299. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2297 -0
  300. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  301. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +617 -0
  302. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  303. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  304. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  306. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  308. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  310. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  312. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  314. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  315. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  316. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  317. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  318. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  320. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  321. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  322. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +241 -0
  324. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  326. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  328. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  330. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  332. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +433 -0
  334. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  336. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  338. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  340. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  342. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  344. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  346. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  348. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  350. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  351. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  352. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  353. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  354. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  355. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  356. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  357. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  358. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  359. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  360. package/contracts/accounting/AccountingService.sol +262 -0
  361. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  362. package/contracts/accounting/IAccountingService.sol +45 -0
  363. package/contracts/authorization/AccessAdmin.sol +704 -0
  364. package/contracts/authorization/AccessAdminLib.sol +183 -0
  365. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  366. package/contracts/authorization/Authorization.sol +365 -0
  367. package/contracts/authorization/IAccess.sol +57 -0
  368. package/contracts/authorization/IAccessAdmin.sol +170 -0
  369. package/contracts/authorization/IAuthorization.sol +80 -0
  370. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  371. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  372. package/contracts/distribution/BasicDistribution.sol +141 -0
  373. package/contracts/distribution/BasicDistributionAuthorization.sol +60 -0
  374. package/contracts/distribution/Distribution.sol +244 -0
  375. package/contracts/distribution/DistributionService.sol +385 -0
  376. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  377. package/contracts/distribution/IDistributionComponent.sol +43 -0
  378. package/contracts/distribution/IDistributionService.sol +103 -0
  379. package/contracts/examples/fire/DamageLevel.sol +59 -0
  380. package/contracts/examples/fire/FirePool.sol +86 -0
  381. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  382. package/contracts/examples/fire/FireProduct.sol +433 -0
  383. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  384. package/contracts/examples/fire/FireUSD.sol +26 -0
  385. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  386. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  387. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  388. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  389. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  390. package/contracts/examples/unpermissioned/SimpleProduct.sol +373 -0
  391. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  392. package/contracts/instance/BundleSet.sol +130 -0
  393. package/contracts/instance/IInstance.sol +89 -39
  394. package/contracts/instance/IInstanceService.sol +75 -19
  395. package/contracts/instance/Instance.sol +214 -364
  396. package/contracts/instance/InstanceAdmin.sol +450 -0
  397. package/contracts/instance/InstanceAuthorizationV3.sol +235 -0
  398. package/contracts/instance/InstanceReader.sol +415 -80
  399. package/contracts/instance/InstanceService.sol +406 -179
  400. package/contracts/instance/InstanceServiceManager.sol +14 -32
  401. package/contracts/instance/InstanceStore.sol +298 -0
  402. package/contracts/instance/RiskSet.sol +118 -0
  403. package/contracts/instance/base/BalanceStore.sol +123 -0
  404. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  405. package/contracts/instance/base/ObjectCounter.sol +20 -0
  406. package/contracts/instance/base/ObjectLifecycle.sol +113 -0
  407. package/contracts/instance/base/ObjectSet.sol +77 -0
  408. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  409. package/contracts/instance/module/IBundle.sol +10 -9
  410. package/contracts/instance/module/IComponents.sol +62 -0
  411. package/contracts/instance/module/IDistribution.sol +25 -10
  412. package/contracts/instance/module/IPolicy.sol +81 -21
  413. package/contracts/instance/module/IRisk.sol +6 -1
  414. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  415. package/contracts/oracle/BasicOracle.sol +45 -0
  416. package/contracts/oracle/BasicOracleAuthorization.sol +37 -0
  417. package/contracts/oracle/IOracle.sol +41 -0
  418. package/contracts/oracle/IOracleComponent.sol +33 -0
  419. package/contracts/oracle/IOracleService.sol +66 -0
  420. package/contracts/oracle/Oracle.sol +154 -0
  421. package/contracts/oracle/OracleService.sol +310 -0
  422. package/contracts/oracle/OracleServiceManager.sol +39 -0
  423. package/contracts/pool/BasicPool.sol +173 -0
  424. package/contracts/pool/BasicPoolAuthorization.sol +76 -0
  425. package/contracts/pool/BundleService.sol +395 -0
  426. package/contracts/pool/BundleServiceManager.sol +39 -0
  427. package/contracts/pool/IBundleService.sol +115 -0
  428. package/contracts/pool/IPoolComponent.sol +62 -0
  429. package/contracts/pool/IPoolService.sol +165 -0
  430. package/contracts/pool/Pool.sol +343 -0
  431. package/contracts/pool/PoolLib.sol +216 -0
  432. package/contracts/pool/PoolService.sol +755 -0
  433. package/contracts/pool/PoolServiceManager.sol +39 -0
  434. package/contracts/product/ApplicationService.sol +274 -0
  435. package/contracts/product/ApplicationServiceManager.sol +38 -0
  436. package/contracts/product/BasicProduct.sol +49 -0
  437. package/contracts/product/BasicProductAuthorization.sol +56 -0
  438. package/contracts/product/ClaimService.sol +632 -0
  439. package/contracts/product/ClaimServiceManager.sol +38 -0
  440. package/contracts/product/IApplicationService.sol +69 -0
  441. package/contracts/product/IClaimService.sol +135 -0
  442. package/contracts/product/IPolicyService.sol +95 -0
  443. package/contracts/product/IPricingService.sol +40 -0
  444. package/contracts/product/IProductComponent.sol +62 -0
  445. package/contracts/product/IRiskService.sol +33 -0
  446. package/contracts/product/PolicyService.sol +664 -0
  447. package/contracts/product/PolicyServiceLib.sol +65 -0
  448. package/contracts/product/PolicyServiceManager.sol +39 -0
  449. package/contracts/product/PricingService.sol +309 -0
  450. package/contracts/product/PricingServiceManager.sol +39 -0
  451. package/contracts/product/Product.sol +467 -0
  452. package/contracts/product/RiskService.sol +154 -0
  453. package/contracts/product/RiskServiceManager.sol +39 -0
  454. package/contracts/registry/ChainNft.sol +82 -35
  455. package/contracts/registry/IRegistry.sol +126 -37
  456. package/contracts/registry/IRegistryService.sol +40 -28
  457. package/contracts/registry/IRelease.sol +29 -0
  458. package/contracts/registry/ITransferInterceptor.sol +1 -1
  459. package/contracts/registry/Registry.sol +555 -273
  460. package/contracts/registry/RegistryAdmin.sol +258 -0
  461. package/contracts/registry/RegistryAuthorization.sol +267 -0
  462. package/contracts/registry/RegistryService.sol +116 -233
  463. package/contracts/registry/RegistryServiceManager.sol +26 -53
  464. package/contracts/registry/ReleaseAdmin.sol +253 -0
  465. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  466. package/contracts/registry/ReleaseRegistry.sol +517 -0
  467. package/contracts/registry/ServiceAuthorizationV3.sol +331 -0
  468. package/contracts/registry/TokenRegistry.sol +264 -59
  469. package/contracts/shared/Component.sol +210 -0
  470. package/contracts/shared/ComponentService.sol +708 -0
  471. package/contracts/shared/ComponentServiceManager.sol +38 -0
  472. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  473. package/contracts/shared/ContractLib.sol +281 -0
  474. package/contracts/shared/IComponent.sol +58 -0
  475. package/contracts/shared/IComponentService.sol +112 -0
  476. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  477. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  478. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  479. package/contracts/shared/INftOwnable.sol +15 -12
  480. package/contracts/shared/IPolicyHolder.sol +35 -0
  481. package/contracts/shared/IRegisterable.sol +25 -5
  482. package/contracts/shared/IRegistryLinked.sol +11 -0
  483. package/contracts/shared/IService.sol +13 -5
  484. package/contracts/shared/InitializableERC165.sol +35 -0
  485. package/contracts/shared/InstanceLinkedComponent.sol +195 -0
  486. package/contracts/shared/KeyValueStore.sol +131 -0
  487. package/contracts/shared/Lifecycle.sol +88 -0
  488. package/contracts/shared/NftIdSet.sol +65 -0
  489. package/contracts/shared/NftOwnable.sol +75 -82
  490. package/contracts/shared/PolicyHolder.sol +62 -0
  491. package/contracts/shared/Registerable.sol +54 -38
  492. package/contracts/shared/RegistryLinked.sol +38 -0
  493. package/contracts/shared/Service.sol +43 -33
  494. package/contracts/shared/TokenHandler.sol +327 -12
  495. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  496. package/contracts/staking/IStaking.sol +179 -0
  497. package/contracts/staking/IStakingService.sol +172 -0
  498. package/contracts/staking/Staking.sol +546 -0
  499. package/contracts/staking/StakingLib.sol +281 -0
  500. package/contracts/staking/StakingLifecycle.sol +23 -0
  501. package/contracts/staking/StakingManager.sol +52 -0
  502. package/contracts/staking/StakingReader.sol +180 -0
  503. package/contracts/staking/StakingService.sol +464 -0
  504. package/contracts/staking/StakingServiceManager.sol +45 -0
  505. package/contracts/staking/StakingStore.sol +606 -0
  506. package/contracts/staking/TargetManagerLib.sol +211 -0
  507. package/contracts/{types → type}/AddressSet.sol +1 -1
  508. package/contracts/type/Amount.sol +150 -0
  509. package/contracts/{types → type}/Blocknumber.sol +27 -3
  510. package/contracts/type/ClaimId.sol +80 -0
  511. package/contracts/{types → type}/DistributorType.sol +2 -2
  512. package/contracts/type/Fee.sol +66 -0
  513. package/contracts/{types → type}/Key32.sol +2 -2
  514. package/contracts/type/Key32Set.sol +62 -0
  515. package/contracts/{types → type}/NftId.sol +28 -15
  516. package/contracts/{types → type}/NftIdSet.sol +2 -2
  517. package/contracts/type/ObjectType.sol +294 -0
  518. package/contracts/type/PayoutId.sol +82 -0
  519. package/contracts/{types → type}/Referral.sol +6 -1
  520. package/contracts/type/RequestId.sol +75 -0
  521. package/contracts/type/RiskId.sol +75 -0
  522. package/contracts/type/RoleId.sol +182 -0
  523. package/contracts/type/Seconds.sol +101 -0
  524. package/contracts/type/Selector.sol +107 -0
  525. package/contracts/{types → type}/StateId.sol +48 -4
  526. package/contracts/type/String.sol +53 -0
  527. package/contracts/{types → type}/Timestamp.sol +33 -19
  528. package/contracts/type/UFixed.sol +262 -0
  529. package/contracts/{types → type}/Version.sol +59 -7
  530. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  531. package/contracts/upgradeability/ProxyManager.sol +234 -0
  532. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  533. package/contracts/upgradeability/Versionable.sol +59 -0
  534. package/package.json +12 -8
  535. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  536. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -327
  537. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  538. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -618
  539. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  540. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  541. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  542. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  543. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  544. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  545. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  546. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  547. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  548. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -787
  549. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  550. package/artifacts/contracts/components/Product.sol/Product.json +0 -729
  551. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  552. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  553. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  554. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  555. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  556. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  557. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  558. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  559. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  560. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  561. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  562. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  563. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  564. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  565. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  566. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  567. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  568. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  569. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  570. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  571. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  572. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  573. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  574. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  575. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  576. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  577. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  578. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  579. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  580. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  581. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  582. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  583. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  584. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  585. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  586. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  587. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  588. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  589. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  590. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  591. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +0 -101
  592. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  593. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  594. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  595. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -799
  596. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  597. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  598. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  599. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  600. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -917
  601. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  602. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -272
  603. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  604. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  605. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  606. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  607. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  608. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  609. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  610. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  611. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  612. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  613. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -211
  614. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  615. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  616. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  617. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  618. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  619. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
  620. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  621. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -444
  622. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  623. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  624. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  625. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  626. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  627. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1004
  628. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  629. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -460
  630. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  631. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1147
  632. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  633. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -488
  634. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  635. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  636. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  637. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  638. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  639. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  640. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  641. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  642. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  643. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  644. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  645. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  646. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  647. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  648. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  649. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  650. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  651. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  652. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  653. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  654. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  655. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  656. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  657. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  658. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  659. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  660. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  661. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  662. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  663. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  664. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  665. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  666. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  667. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  668. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  669. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  670. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  671. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  672. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  673. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  674. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  675. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  676. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  677. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  678. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  679. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  680. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  681. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  682. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  683. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  684. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  685. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  686. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  687. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  688. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  689. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  690. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  691. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  692. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  693. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  694. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  695. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  696. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  697. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  698. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  699. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  700. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  701. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  702. package/contracts/components/BaseComponent.sol +0 -91
  703. package/contracts/components/Distribution.sol +0 -163
  704. package/contracts/components/IBaseComponent.sol +0 -25
  705. package/contracts/components/IDistributionComponent.sol +0 -44
  706. package/contracts/components/IPoolComponent.sol +0 -62
  707. package/contracts/components/IProductComponent.sol +0 -35
  708. package/contracts/components/Pool.sol +0 -247
  709. package/contracts/components/Product.sol +0 -289
  710. package/contracts/experiment/cloning/Cloner.sol +0 -47
  711. package/contracts/experiment/errors/Require.sol +0 -38
  712. package/contracts/experiment/errors/Revert.sol +0 -44
  713. package/contracts/experiment/inheritance/A.sol +0 -53
  714. package/contracts/experiment/inheritance/B.sol +0 -28
  715. package/contracts/experiment/inheritance/C.sol +0 -34
  716. package/contracts/experiment/inheritance/IA.sol +0 -13
  717. package/contracts/experiment/inheritance/IB.sol +0 -10
  718. package/contracts/experiment/inheritance/IC.sol +0 -12
  719. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  720. package/contracts/experiment/statemachine/ISM.sol +0 -25
  721. package/contracts/experiment/statemachine/SM.sol +0 -57
  722. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  723. package/contracts/experiment/types/TypeA.sol +0 -47
  724. package/contracts/experiment/types/TypeB.sol +0 -29
  725. package/contracts/instance/AccessManagedSimple.sol +0 -115
  726. package/contracts/instance/AccessManagerSimple.sol +0 -692
  727. package/contracts/instance/BundleManager.sol +0 -154
  728. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  729. package/contracts/instance/InstanceAccessManager.sol +0 -288
  730. package/contracts/instance/ObjectManager.sol +0 -95
  731. package/contracts/instance/base/ComponentServiceBase.sol +0 -134
  732. package/contracts/instance/base/IInstanceBase.sol +0 -23
  733. package/contracts/instance/base/KeyValueStore.sol +0 -172
  734. package/contracts/instance/base/Lifecycle.sol +0 -100
  735. package/contracts/instance/module/IAccess.sol +0 -38
  736. package/contracts/instance/module/ISetup.sol +0 -46
  737. package/contracts/instance/module/ITreasury.sol +0 -23
  738. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  739. package/contracts/instance/service/DistributionService.sol +0 -88
  740. package/contracts/instance/service/DistributionServiceManager.sol +0 -54
  741. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  742. package/contracts/instance/service/IDistributionService.sol +0 -12
  743. package/contracts/instance/service/IPoolService.sol +0 -51
  744. package/contracts/instance/service/IProductService.sol +0 -110
  745. package/contracts/instance/service/PoolService.sol +0 -228
  746. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  747. package/contracts/instance/service/ProductService.sol +0 -570
  748. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  749. package/contracts/shared/ContractDeployerLib.sol +0 -72
  750. package/contracts/shared/ERC165.sol +0 -25
  751. package/contracts/shared/ProxyManager.sol +0 -94
  752. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  753. package/contracts/shared/Versionable.sol +0 -147
  754. package/contracts/test/TestFee.sol +0 -25
  755. package/contracts/test/TestRegisterable.sol +0 -18
  756. package/contracts/test/TestRoleId.sol +0 -14
  757. package/contracts/test/TestService.sol +0 -24
  758. package/contracts/test/TestToken.sol +0 -26
  759. package/contracts/test/TestVersion.sol +0 -44
  760. package/contracts/test/TestVersionable.sol +0 -17
  761. package/contracts/types/ChainId.sol +0 -38
  762. package/contracts/types/Fee.sol +0 -56
  763. package/contracts/types/NumberId.sol +0 -52
  764. package/contracts/types/ObjectType.sol +0 -152
  765. package/contracts/types/RiskId.sol +0 -43
  766. package/contracts/types/RoleId.sol +0 -90
  767. package/contracts/types/UFixed.sol +0 -325
@@ -0,0 +1,244 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
5
+ import {IComponentService} from "../shared/IComponentService.sol";
6
+ import {IDistributionComponent} from "./IDistributionComponent.sol";
7
+ import {IDistributionService} from "./IDistributionService.sol";
8
+
9
+ import {Amount} from "../type/Amount.sol";
10
+ import {COMPONENT, DISTRIBUTION, DISTRIBUTOR} from "../type/ObjectType.sol";
11
+ import {DistributorType} from "../type/DistributorType.sol";
12
+ import {Fee} from "../type/Fee.sol";
13
+ import {NftId} from "../type/NftId.sol";
14
+ import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
15
+ import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
16
+ import {Seconds} from "../type/Seconds.sol";
17
+ import {Timestamp} from "../type/Timestamp.sol";
18
+ import {UFixed} from "../type/UFixed.sol";
19
+
20
+
21
+ abstract contract Distribution is
22
+ InstanceLinkedComponent,
23
+ IDistributionComponent
24
+ {
25
+ // keccak256(abi.encode(uint256(keccak256("etherisc.storage.Distribution")) - 1)) & ~bytes32(uint256(0xff));
26
+ bytes32 public constant DISTRIBUTION_STORAGE_LOCATION_V1 = 0xaab7c5ea03d290056d6c060e0833d3ebcbe647f7694616a2ec52738a64b2f900;
27
+
28
+ struct DistributionStorage {
29
+ IComponentService _componentService;
30
+ IDistributionService _distributionService;
31
+ }
32
+
33
+ function processRenewal(
34
+ ReferralId referralId,
35
+ uint256 feeAmount
36
+ )
37
+ external
38
+ virtual
39
+ restricted()
40
+ {
41
+ // default is no action
42
+ }
43
+
44
+
45
+ /// @inheritdoc IDistributionComponent
46
+ function withdrawCommission(NftId distributorNftId, Amount amount)
47
+ external
48
+ virtual
49
+ restricted()
50
+ onlyNftOfType(distributorNftId, DISTRIBUTOR())
51
+ onlyNftOwner(distributorNftId)
52
+ returns (Amount withdrawnAmount)
53
+ {
54
+ return _withdrawCommission(distributorNftId, amount);
55
+ }
56
+
57
+ function getDiscountPercentage(string memory referralCode)
58
+ external
59
+ view
60
+ returns (
61
+ UFixed discountPercentage,
62
+ ReferralStatus status
63
+ )
64
+ {
65
+ ReferralId referralId = getReferralId(referralCode);
66
+ return _getInstanceReader().getDiscountPercentage(referralId);
67
+ }
68
+
69
+
70
+ function getReferralId(
71
+ string memory referralCode
72
+ )
73
+ public
74
+ view
75
+ returns (ReferralId referralId)
76
+ {
77
+ return ReferralLib.toReferralId(
78
+ getNftId(),
79
+ referralCode);
80
+ }
81
+
82
+
83
+ function calculateRenewalFeeAmount(
84
+ ReferralId referralId,
85
+ uint256 netPremiumAmount
86
+ )
87
+ external
88
+ view
89
+ virtual override
90
+ returns (uint256 feeAmount)
91
+ {
92
+ // default is no fees
93
+ return 0 * netPremiumAmount;
94
+ }
95
+
96
+
97
+ /// @dev Returns true iff the component needs to be called when selling/renewing policis
98
+ function isVerifying() external pure returns (bool verifying) {
99
+ return true;
100
+ }
101
+
102
+
103
+ function _initializeDistribution(
104
+ address registry,
105
+ NftId productNftId,
106
+ IAuthorization authorization,
107
+ bool isInterceptor,
108
+ address initialOwner,
109
+ string memory name,
110
+ bytes memory componentData // component specifidc data
111
+ )
112
+ internal
113
+ virtual
114
+ onlyInitializing()
115
+ {
116
+ _initializeInstanceLinkedComponent(
117
+ registry,
118
+ productNftId,
119
+ name,
120
+ DISTRIBUTION(),
121
+ authorization,
122
+ isInterceptor,
123
+ initialOwner,
124
+ componentData);
125
+
126
+ DistributionStorage storage $ = _getDistributionStorage();
127
+ $._distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
128
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
129
+
130
+ _registerInterface(type(IDistributionComponent).interfaceId);
131
+ }
132
+
133
+ /// @dev Sets the distribution fees to the provided values.
134
+ function _setFees(
135
+ Fee memory distributionFee,
136
+ Fee memory minDistributionOwnerFee
137
+ )
138
+ internal
139
+ virtual
140
+ {
141
+ _getDistributionStorage()._componentService.setDistributionFees(
142
+ distributionFee,
143
+ minDistributionOwnerFee);
144
+ }
145
+
146
+ /// @dev Creates a new distributor type using the provided parameters.
147
+ function _createDistributorType(
148
+ string memory name,
149
+ UFixed minDiscountPercentage,
150
+ UFixed maxDiscountPercentage,
151
+ UFixed commissionPercentage,
152
+ uint32 maxReferralCount,
153
+ Seconds maxReferralLifetime,
154
+ bool allowSelfReferrals,
155
+ bool allowRenewals,
156
+ bytes memory data
157
+ )
158
+ internal
159
+ virtual
160
+ returns (DistributorType distributorType)
161
+ {
162
+ DistributionStorage storage $ = _getDistributionStorage();
163
+ distributorType = $._distributionService.createDistributorType(
164
+ name,
165
+ minDiscountPercentage,
166
+ maxDiscountPercentage,
167
+ commissionPercentage,
168
+ maxReferralCount,
169
+ maxReferralLifetime,
170
+ allowSelfReferrals,
171
+ allowRenewals,
172
+ data);
173
+ }
174
+
175
+ /// @dev Turns the provided account into a new distributor of the specified type.
176
+ function _createDistributor(
177
+ address distributor,
178
+ DistributorType distributorType,
179
+ bytes memory data
180
+ )
181
+ internal
182
+ virtual
183
+ returns(NftId distributorNftId)
184
+ {
185
+ DistributionStorage storage $ = _getDistributionStorage();
186
+
187
+ distributorNftId = $._distributionService.createDistributor(
188
+ distributor,
189
+ distributorType,
190
+ data);
191
+ }
192
+
193
+ /// @dev Uptates the distributor type for the specified distributor.
194
+ function _changeDistributorType(
195
+ NftId distributorNftId,
196
+ DistributorType distributorType,
197
+ bytes memory data
198
+ )
199
+ internal
200
+ virtual
201
+ {
202
+ DistributionStorage storage $ = _getDistributionStorage();
203
+ $._distributionService.changeDistributorType(
204
+ distributorNftId,
205
+ distributorType,
206
+ data);
207
+ }
208
+
209
+ /// @dev Create a new referral code for the provided distributor.
210
+ function _createReferral(
211
+ NftId distributorNftId,
212
+ string memory code,
213
+ UFixed discountPercentage,
214
+ uint32 maxReferrals,
215
+ Timestamp expiryAt,
216
+ bytes memory data
217
+ )
218
+ internal
219
+ virtual
220
+ returns (ReferralId referralId)
221
+ {
222
+ DistributionStorage storage $ = _getDistributionStorage();
223
+ referralId = $._distributionService.createReferral(
224
+ distributorNftId,
225
+ code,
226
+ discountPercentage,
227
+ maxReferrals,
228
+ expiryAt,
229
+ data);
230
+ }
231
+
232
+ function _withdrawCommission(NftId distributorNftId, Amount amount)
233
+ internal
234
+ returns (Amount withdrawnAmount)
235
+ {
236
+ return _getDistributionStorage()._distributionService.withdrawCommission(distributorNftId, amount);
237
+ }
238
+
239
+ function _getDistributionStorage() private pure returns (DistributionStorage storage $) {
240
+ assembly {
241
+ $.slot := DISTRIBUTION_STORAGE_LOCATION_V1
242
+ }
243
+ }
244
+ }
@@ -0,0 +1,385 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
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";
8
+ import {IInstance} from "../instance/IInstance.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";
13
+ import {IPolicy} from "../instance/module/IPolicy.sol";
14
+
15
+ import {Amount, AmountLib} from "../type/Amount.sol";
16
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
17
+ import {DistributorType, DistributorTypeLib} from "../type/DistributorType.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";
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";
27
+
28
+
29
+ contract DistributionService is
30
+ ComponentVerifyingService,
31
+ IDistributionService
32
+ {
33
+ IAccountingService private _accountingService;
34
+ IComponentService private _componentService;
35
+ IInstanceService private _instanceService;
36
+ IRegistryService private _registryService;
37
+
38
+ function _initialize(
39
+ address owner,
40
+ bytes memory data
41
+ )
42
+ internal
43
+ virtual override
44
+ initializer()
45
+ {
46
+ (
47
+ address authority,
48
+ address registry
49
+ ) = abi.decode(data, (address, address));
50
+
51
+ __Service_init(authority, registry, owner);
52
+
53
+ _accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
54
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
55
+ _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
56
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
57
+
58
+ _registerInterface(type(IDistributionService).interfaceId);
59
+ }
60
+
61
+
62
+ function createDistributorType(
63
+ string memory name,
64
+ UFixed minDiscountPercentage,
65
+ UFixed maxDiscountPercentage,
66
+ UFixed commissionPercentage,
67
+ uint32 maxReferralCount,
68
+ Seconds maxReferralLifetime,
69
+ bool allowSelfReferrals,
70
+ bool allowRenewals,
71
+ bytes memory data
72
+ )
73
+ external
74
+ returns (DistributorType distributorType)
75
+ {
76
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
77
+
78
+ {
79
+ NftId productNftId = _getProductNftId(distributionNftId);
80
+ IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
81
+
82
+ UFixed variableDistributionFees = feeInfo.distributionFee.fractionalFee;
83
+ UFixed variableFeesPartsTotal = feeInfo.minDistributionOwnerFee.fractionalFee + commissionPercentage;
84
+
85
+ if (variableFeesPartsTotal > variableDistributionFees) {
86
+ revert ErrorDistributionServiceVariableFeesTooHight(variableDistributionFees.toInt1000(), variableFeesPartsTotal.toInt1000());
87
+ }
88
+ UFixed maxDiscountPercentageLimit = variableDistributionFees - variableFeesPartsTotal;
89
+
90
+ if (maxDiscountPercentage.gt(maxDiscountPercentageLimit)) {
91
+ revert ErrorDistributionServiceMaxDiscountTooHigh(maxDiscountPercentage.toInt1000(), maxDiscountPercentageLimit.toInt1000());
92
+ }
93
+ }
94
+
95
+ distributorType = DistributorTypeLib.toDistributorType(distributionNftId, name);
96
+ IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo({
97
+ name: name,
98
+ distributionNftId: distributionNftId,
99
+ minDiscountPercentage: minDiscountPercentage,
100
+ maxDiscountPercentage: maxDiscountPercentage,
101
+ commissionPercentage: commissionPercentage,
102
+ maxReferralCount: maxReferralCount,
103
+ maxReferralLifetime: maxReferralLifetime,
104
+ allowSelfReferrals: allowSelfReferrals,
105
+ allowRenewals: allowRenewals,
106
+ data: data});
107
+
108
+ instance.getInstanceStore().createDistributorType(distributorType, info);
109
+ }
110
+
111
+
112
+ function createDistributor(
113
+ address distributor,
114
+ DistributorType distributorType,
115
+ bytes memory data
116
+ )
117
+ external
118
+ virtual
119
+ returns (NftId distributorNftId)
120
+ {
121
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
122
+ _checkDistributionType(instance.getInstanceReader(), distributorType, distributionNftId);
123
+
124
+ distributorNftId = _registryService.registerDistributor(
125
+ IRegistry.ObjectInfo(
126
+ NftIdLib.zero(),
127
+ distributionNftId,
128
+ DISTRIBUTOR(),
129
+ true, // intercepting property for bundles is defined on pool
130
+ address(0),
131
+ distributor,
132
+ ""
133
+ ));
134
+
135
+ IDistribution.DistributorInfo memory info = IDistribution.DistributorInfo({
136
+ distributorType: distributorType,
137
+ active: true,
138
+ numPoliciesSold: 0,
139
+ data: data});
140
+
141
+ instance.getInstanceStore().createDistributor(distributorNftId, info);
142
+ }
143
+
144
+ function changeDistributorType(
145
+ NftId distributorNftId,
146
+ DistributorType newDistributorType,
147
+ bytes memory data
148
+ )
149
+ external
150
+ virtual
151
+ {
152
+ _checkNftType(distributorNftId, DISTRIBUTOR());
153
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
154
+ _checkDistributionType(instance.getInstanceReader(), newDistributorType, distributionNftId);
155
+
156
+ IDistribution.DistributorInfo memory distributorInfo = instance.getInstanceReader().getDistributorInfo(distributorNftId);
157
+ distributorInfo.distributorType = newDistributorType;
158
+ distributorInfo.data = data;
159
+ instance.getInstanceStore().updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
160
+ }
161
+
162
+
163
+ function createReferral(
164
+ NftId distributorNftId,
165
+ string memory code,
166
+ UFixed discountPercentage,
167
+ uint32 maxReferrals,
168
+ Timestamp expiryAt,
169
+ bytes memory data
170
+ )
171
+ external
172
+ virtual
173
+ onlyNftOfType(distributorNftId, DISTRIBUTOR())
174
+ returns (ReferralId referralId)
175
+ {
176
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
177
+
178
+ if (bytes(code).length == 0) {
179
+ revert ErrorDistributionServiceInvalidReferral(code);
180
+ }
181
+ if (expiryAt.eqz() || expiryAt.lte(TimestampLib.blockTimestamp())) {
182
+ revert ErrorDistributionServiceExpirationInvalid(expiryAt);
183
+ }
184
+
185
+ NftId distributorDistributionNftId = getRegistry().getParentNftId(distributorNftId);
186
+ if (distributorDistributionNftId != distributionNftId) {
187
+ revert ErrorDistributionServiceDistributorDistributionMismatch(distributorNftId, distributorDistributionNftId, distributionNftId);
188
+ }
189
+
190
+ {
191
+ InstanceReader instanceReader = instance.getInstanceReader();
192
+ DistributorType distributorType = instanceReader.getDistributorInfo(distributorNftId).distributorType;
193
+ IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
194
+
195
+ if (distributorTypeData.maxReferralCount < maxReferrals) {
196
+ revert ErrorDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
197
+ }
198
+ if (distributorTypeData.minDiscountPercentage > discountPercentage) {
199
+ revert ErrorDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage.toInt(), discountPercentage.toInt());
200
+ }
201
+ if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
202
+ revert ErrorDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage.toInt(), discountPercentage.toInt());
203
+ }
204
+ if (expiryAt.toInt() - TimestampLib.blockTimestamp().toInt() > distributorTypeData.maxReferralLifetime.toInt()) {
205
+ revert ErrorDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt);
206
+ }
207
+ }
208
+
209
+ {
210
+ referralId = ReferralLib.toReferralId(distributionNftId, code);
211
+ IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo({
212
+ distributionNftId: distributionNftId,
213
+ distributorNftId: distributorNftId,
214
+ referralCode: code,
215
+ discountPercentage: discountPercentage,
216
+ maxReferrals: maxReferrals,
217
+ usedReferrals: 0,
218
+ expiryAt: expiryAt,
219
+ data: data
220
+ });
221
+
222
+ instance.getInstanceStore().createReferral(referralId, info);
223
+ }
224
+ }
225
+
226
+ /// @inheritdoc IDistributionService
227
+ function processReferral(
228
+ NftId distributionNftId,
229
+ ReferralId referralId
230
+ )
231
+ external
232
+ virtual
233
+ restricted()
234
+ onlyNftOfType(distributionNftId, DISTRIBUTION())
235
+ {
236
+ if (referralIsValid(distributionNftId, referralId)) {
237
+ IRegistry registry = getRegistry();
238
+ IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
239
+ IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
240
+
241
+ // update book keeping for referral info
242
+ IDistribution.ReferralInfo memory referralInfo = instance.getInstanceReader().getReferralInfo(referralId);
243
+ referralInfo.usedReferrals += 1;
244
+ instance.getInstanceStore().updateReferral(referralId, referralInfo, KEEP_STATE());
245
+ }
246
+ }
247
+
248
+ function processSale(
249
+ NftId distributionNftId, // assume always of distribution type
250
+ ReferralId referralId,
251
+ IPolicy.PremiumInfo memory premium
252
+ )
253
+ external
254
+ virtual
255
+ restricted()
256
+ onlyNftOfType(distributionNftId, DISTRIBUTION())
257
+ {
258
+ IRegistry registry = getRegistry();
259
+ IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
260
+ IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
261
+ InstanceReader reader = instance.getInstanceReader();
262
+ InstanceStore store = instance.getInstanceStore();
263
+
264
+ // get distribution owner fee amount
265
+ Amount distributionOwnerFee = premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount;
266
+
267
+ // update referral/distributor info if applicable
268
+ if (referralIsValid(distributionNftId, referralId)) {
269
+
270
+ // increase distribution balance by commission amount and distribution owner fee
271
+ Amount commissionAmount = premium.commissionAmount;
272
+ _accountingService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
273
+
274
+ // update book keeping for referral info
275
+ IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
276
+
277
+ _accountingService.increaseDistributorBalance(store, referralInfo.distributorNftId, AmountLib.zero(), commissionAmount);
278
+
279
+ // update book keeping for distributor info
280
+ IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
281
+ distributorInfo.numPoliciesSold += 1;
282
+ store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
283
+ } else {
284
+ // increase distribution balance by distribution owner fee
285
+ _accountingService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
286
+ }
287
+ }
288
+
289
+ /// @inheritdoc IDistributionService
290
+ function withdrawCommission(NftId distributorNftId, Amount amount)
291
+ public
292
+ virtual
293
+ // TODO: restricted() (once #462 is done)
294
+ onlyNftOfType(distributorNftId, DISTRIBUTOR())
295
+ returns (Amount withdrawnAmount)
296
+ {
297
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
298
+ InstanceReader reader = instance.getInstanceReader();
299
+
300
+ IComponents.ComponentInfo memory distributionInfo = reader.getComponentInfo(distributionNftId);
301
+ // address distributionWallet = distributionInfo.tokenHandler.getWallet();
302
+
303
+ Amount commissionAmount = reader.getFeeAmount(distributorNftId);
304
+
305
+ // determine withdrawn amount
306
+ withdrawnAmount = amount;
307
+ if (withdrawnAmount.gte(AmountLib.max())) {
308
+ withdrawnAmount = commissionAmount;
309
+ } else {
310
+ if (withdrawnAmount.gt(commissionAmount)) {
311
+ revert ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(withdrawnAmount, commissionAmount);
312
+ }
313
+ }
314
+
315
+ // decrease fee counters by withdrawnAmount and update distributor info
316
+ {
317
+ InstanceStore store = instance.getInstanceStore();
318
+ // decrease fee counter for distribution balance
319
+ _accountingService.decreaseDistributionBalance(store, distributionNftId, withdrawnAmount, AmountLib.zero());
320
+ // decrease fee counter for distributor fee
321
+ _accountingService.decreaseDistributorBalance(store, distributorNftId, AmountLib.zero(), withdrawnAmount);
322
+ }
323
+
324
+ // transfer amount to distributor
325
+ {
326
+ address distributor = getRegistry().ownerOf(distributorNftId);
327
+ emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.tokenHandler.TOKEN()), withdrawnAmount);
328
+ distributionInfo.tokenHandler.pushToken(distributor, withdrawnAmount);
329
+ }
330
+ }
331
+
332
+ function referralIsValid(NftId distributionNftId, ReferralId referralId)
333
+ public
334
+ view
335
+ onlyNftOfType(distributionNftId, DISTRIBUTION())
336
+ returns (bool isValid)
337
+ {
338
+ if (distributionNftId.eqz() || referralId.eqz()) {
339
+ return false;
340
+ }
341
+
342
+ IRegistry registry = getRegistry();
343
+ IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
344
+ IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
345
+ IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
346
+
347
+ if (info.distributorNftId.eqz()) {
348
+ return false;
349
+ }
350
+
351
+ // ensure the referral was created on the same distribution
352
+ if(info.distributionNftId != distributionNftId) {
353
+ revert ErrorDistributionServiceReferralDistributionMismatch(referralId, info.distributionNftId, distributionNftId);
354
+ }
355
+
356
+ isValid = info.expiryAt.eqz() || (info.expiryAt.gtz() && TimestampLib.blockTimestamp() <= info.expiryAt);
357
+ isValid = isValid && info.usedReferrals < info.maxReferrals;
358
+ }
359
+
360
+ function _checkDistributionType(InstanceReader instanceReader, DistributorType distributorType, NftId expectedDistributionNftId)
361
+ internal
362
+ view
363
+ {
364
+ // enfore distributor type belongs to the calling distribution
365
+ NftId distributorTypeDistributionNftId = instanceReader.getDistributorTypeInfo(distributorType).distributionNftId;
366
+
367
+ if (distributorTypeDistributionNftId != expectedDistributionNftId) {
368
+ revert ErrorDistributionServiceDistributorTypeDistributionMismatch(distributorType, distributorTypeDistributionNftId, expectedDistributionNftId);
369
+ }
370
+ }
371
+
372
+ function _getInstanceForDistribution(NftId distributionNftId)
373
+ internal
374
+ view
375
+ returns(IInstance instance)
376
+ {
377
+ NftId instanceNftId = getRegistry().getParentNftId(distributionNftId);
378
+ address instanceAddress = getRegistry().getObjectAddress(instanceNftId);
379
+ return IInstance(instanceAddress);
380
+ }
381
+
382
+ function _getDomain() internal pure override returns(ObjectType) {
383
+ return DISTRIBUTION();
384
+ }
385
+ }
@@ -0,0 +1,39 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
+ import {DistributionService} from "./DistributionService.sol";
7
+
8
+ contract DistributionServiceManager is ProxyManager {
9
+
10
+ DistributionService private _distributionService;
11
+
12
+ /// @dev initializes proxy manager with distribution service implementation and deploys instance
13
+ constructor(
14
+ address authority,
15
+ address registry,
16
+ bytes32 salt
17
+ )
18
+ {
19
+ DistributionService svc = new DistributionService{salt: salt}();
20
+ bytes memory data = abi.encode(authority, registry);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
24
+ data,
25
+ salt);
26
+
27
+ _distributionService = DistributionService(address(versionable));
28
+ }
29
+
30
+ //--- view functions ----------------------------------------------------//
31
+ function getDistributionService()
32
+ external
33
+ view
34
+ returns (DistributionService distributionService)
35
+ {
36
+ return _distributionService;
37
+ }
38
+
39
+ }