@etherisc/gif-next 0.0.2-f74fcad-685 → 0.0.2-f761c0d-394

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 (633) hide show
  1. package/README.md +355 -19
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/access → authorization}/IAccess.sol/IAccess.json +1 -1
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1505 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1191 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1394 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +900 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +843 -0
  36. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +293 -1120
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +757 -0
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +445 -1266
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1735 -0
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1160 -0
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +734 -0
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3591 -0
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  59. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  69. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IBundle.sol/IBundle.json} +2 -2
  70. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  71. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  72. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  73. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IDistribution.sol/IDistribution.json} +2 -2
  74. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  75. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  76. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  77. package/artifacts/contracts/instance/{treasury/ITreasury.sol/ITreasury.json → module/IRisk.sol/IRisk.json} +2 -2
  78. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  79. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  80. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  81. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  82. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  83. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  84. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  86. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  88. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  90. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1063 -0
  92. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  93. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  94. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  95. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  96. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -0
  98. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  100. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  101. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  102. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  104. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +703 -0
  106. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  107. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +959 -0
  108. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  110. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  111. package/artifacts/contracts/pool/Pool.sol/Pool.json +1269 -0
  112. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  113. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  114. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  116. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  117. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  118. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  119. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  120. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  121. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -0
  122. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  123. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  124. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  125. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  126. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  128. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  129. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +512 -0
  130. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  131. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  132. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  133. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +720 -0
  134. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  135. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +549 -0
  136. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  137. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +966 -0
  138. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  139. package/artifacts/contracts/product/IProductService.sol/IProductService.json +400 -0
  140. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  141. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  142. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  144. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  145. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  146. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  147. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  148. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  149. package/artifacts/contracts/product/Product.sol/Product.json +1257 -0
  150. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  151. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  152. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  154. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  155. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +252 -2
  156. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +700 -26
  158. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  159. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1123 -0
  160. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  161. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  162. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  163. package/artifacts/contracts/registry/Registry.sol/Registry.json +982 -52
  164. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  165. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  166. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  167. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1452 -0
  168. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  169. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +721 -0
  170. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  171. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  172. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  173. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1159 -0
  174. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  175. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  176. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  177. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  178. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  179. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  180. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  181. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1487 -0
  182. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  183. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +784 -0
  184. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  185. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +539 -0
  186. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  187. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
  188. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  189. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  190. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  191. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  192. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  193. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +718 -0
  194. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  195. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +474 -0
  196. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  197. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/ILifecycle.sol/ILifecycle.json} +37 -51
  198. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  199. package/artifacts/contracts/{registry/Registry.sol/Registerable.json → shared/INftOwnable.sol/INftOwnable.json} +42 -77
  200. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  201. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  202. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  203. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +181 -0
  204. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  205. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +11 -11
  206. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  207. package/artifacts/contracts/shared/IService.sol/IService.json +346 -0
  208. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  209. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
  210. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  211. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  212. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  213. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +996 -0
  214. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  215. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  216. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  217. package/artifacts/contracts/{instance/lifecycle/ILifecycle.sol/ILifecycleModule.json → shared/Lifecycle.sol/Lifecycle.json} +19 -68
  218. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  219. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  220. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  221. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
  222. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  223. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  224. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +617 -0
  226. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  227. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +353 -0
  228. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  229. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  230. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  231. package/artifacts/contracts/shared/Service.sol/Service.json +507 -0
  232. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  233. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
  234. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  235. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  236. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  237. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
  238. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  239. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  240. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  241. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  242. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  244. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  245. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  246. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  247. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  248. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  249. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  250. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  251. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  252. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  253. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  254. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  255. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  256. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  257. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
  258. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  259. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  260. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  261. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  262. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  264. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  266. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  268. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  270. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  272. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  274. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  276. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  277. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  278. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  280. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  282. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  284. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  286. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  288. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  290. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  292. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  294. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  296. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  297. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  298. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  300. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  302. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/UFixed.sol/MathLib.json +10 -0
  304. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +498 -0
  306. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  308. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  310. package/contracts/authorization/AccessAdmin.sol +591 -0
  311. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  312. package/contracts/authorization/Authorization.sol +218 -0
  313. package/contracts/authorization/IAccess.sol +48 -0
  314. package/contracts/authorization/IAccessAdmin.sol +136 -0
  315. package/contracts/authorization/IAuthorization.sol +54 -0
  316. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  317. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  318. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  319. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  320. package/contracts/distribution/BasicDistribution.sol +149 -0
  321. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  322. package/contracts/distribution/Distribution.sol +283 -0
  323. package/contracts/distribution/DistributionService.sol +302 -0
  324. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  325. package/contracts/distribution/IDistributionComponent.sol +48 -0
  326. package/contracts/distribution/IDistributionService.sol +85 -0
  327. package/contracts/instance/BundleManager.sol +126 -0
  328. package/contracts/instance/IInstance.sol +83 -22
  329. package/contracts/instance/IInstanceService.sol +92 -0
  330. package/contracts/instance/Instance.sol +235 -53
  331. package/contracts/instance/InstanceAdmin.sol +266 -0
  332. package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
  333. package/contracts/instance/InstanceReader.sol +405 -0
  334. package/contracts/instance/InstanceService.sol +443 -0
  335. package/contracts/instance/InstanceServiceManager.sol +44 -0
  336. package/contracts/instance/InstanceStore.sol +276 -0
  337. package/contracts/instance/base/BalanceStore.sol +123 -0
  338. package/contracts/instance/base/Cloneable.sol +28 -0
  339. package/contracts/instance/base/ObjectCounter.sol +21 -0
  340. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  341. package/contracts/instance/base/ObjectManager.sol +79 -0
  342. package/contracts/instance/module/IAccess.sol +46 -0
  343. package/contracts/instance/module/IBundle.sol +20 -0
  344. package/contracts/instance/module/IComponents.sol +52 -0
  345. package/contracts/instance/module/IDistribution.sol +42 -0
  346. package/contracts/instance/module/IPolicy.sol +84 -0
  347. package/contracts/instance/module/IRisk.sol +11 -0
  348. package/contracts/mock/Dip.sol +1 -1
  349. package/contracts/oracle/BasicOracle.sol +48 -0
  350. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  351. package/contracts/oracle/IOracle.sol +36 -0
  352. package/contracts/oracle/IOracleComponent.sol +32 -0
  353. package/contracts/oracle/IOracleService.sol +65 -0
  354. package/contracts/oracle/Oracle.sol +157 -0
  355. package/contracts/oracle/OracleService.sol +278 -0
  356. package/contracts/oracle/OracleServiceManager.sol +42 -0
  357. package/contracts/pool/BasicPool.sol +164 -0
  358. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  359. package/contracts/pool/BundleService.sol +296 -0
  360. package/contracts/pool/BundleServiceManager.sol +42 -0
  361. package/contracts/pool/IBundleService.sol +106 -0
  362. package/contracts/pool/IPoolComponent.sol +52 -0
  363. package/contracts/pool/IPoolService.sol +150 -0
  364. package/contracts/pool/Pool.sol +311 -0
  365. package/contracts/pool/PoolService.sol +452 -0
  366. package/contracts/pool/PoolServiceManager.sol +42 -0
  367. package/contracts/product/ApplicationService.sol +254 -0
  368. package/contracts/product/ApplicationServiceManager.sol +38 -0
  369. package/contracts/product/BasicProduct.sol +82 -0
  370. package/contracts/product/BasicProductAuthorization.sol +40 -0
  371. package/contracts/product/ClaimService.sol +442 -0
  372. package/contracts/product/ClaimServiceManager.sol +38 -0
  373. package/contracts/product/IApplicationService.sol +62 -0
  374. package/contracts/product/IClaimService.sol +99 -0
  375. package/contracts/product/IPolicyService.sol +78 -0
  376. package/contracts/product/IPricingService.sol +39 -0
  377. package/contracts/product/IProductComponent.sol +39 -0
  378. package/contracts/product/IProductService.sol +33 -0
  379. package/contracts/product/PolicyService.sol +475 -0
  380. package/contracts/product/PolicyServiceManager.sol +42 -0
  381. package/contracts/product/PricingService.sol +300 -0
  382. package/contracts/product/PricingServiceManager.sol +42 -0
  383. package/contracts/product/Product.sol +392 -0
  384. package/contracts/product/ProductService.sol +124 -0
  385. package/contracts/product/ProductServiceManager.sol +42 -0
  386. package/contracts/registry/ChainNft.sol +144 -62
  387. package/contracts/registry/IRegistry.sol +96 -42
  388. package/contracts/registry/IRegistryService.sol +69 -0
  389. package/contracts/registry/ITransferInterceptor.sol +7 -0
  390. package/contracts/registry/Registry.sol +523 -127
  391. package/contracts/registry/RegistryAdmin.sol +365 -0
  392. package/contracts/registry/RegistryService.sol +266 -0
  393. package/contracts/registry/RegistryServiceManager.sol +53 -0
  394. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  395. package/contracts/registry/ReleaseManager.sol +487 -0
  396. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  397. package/contracts/registry/TokenRegistry.sol +315 -0
  398. package/contracts/shared/Component.sol +281 -0
  399. package/contracts/shared/ComponentService.sol +581 -0
  400. package/contracts/shared/ComponentServiceManager.sol +35 -0
  401. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  402. package/contracts/shared/ERC165.sol +27 -0
  403. package/contracts/shared/IComponent.sol +70 -0
  404. package/contracts/shared/IComponentService.sol +102 -0
  405. package/contracts/shared/IInstanceLinkedComponent.sol +50 -0
  406. package/contracts/shared/IKeyValueStore.sol +54 -0
  407. package/contracts/shared/ILifecycle.sol +29 -0
  408. package/contracts/shared/INftOwnable.sol +23 -0
  409. package/contracts/shared/IPolicyHolder.sol +45 -0
  410. package/contracts/shared/IRegisterable.sol +15 -0
  411. package/contracts/shared/IRegistryLinked.sol +11 -0
  412. package/contracts/shared/IService.sol +25 -0
  413. package/contracts/shared/IVersionable.sol +53 -0
  414. package/contracts/shared/InitializableCustom.sol +177 -0
  415. package/contracts/shared/InstanceLinkedComponent.sol +151 -0
  416. package/contracts/shared/KeyValueStore.sol +131 -0
  417. package/contracts/shared/Lifecycle.sol +77 -0
  418. package/contracts/shared/NftIdSetManager.sol +65 -0
  419. package/contracts/shared/NftOwnable.sol +107 -0
  420. package/contracts/shared/PolicyHolder.sol +102 -0
  421. package/contracts/shared/ProxyManager.sol +199 -0
  422. package/contracts/shared/Registerable.sol +75 -0
  423. package/contracts/shared/RegistryLinked.sol +43 -0
  424. package/contracts/shared/Service.sol +83 -0
  425. package/contracts/shared/TokenHandler.sol +58 -0
  426. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  427. package/contracts/shared/Versionable.sol +59 -0
  428. package/contracts/staking/IStaking.sol +168 -0
  429. package/contracts/staking/IStakingService.sol +153 -0
  430. package/contracts/staking/StakeManagerLib.sol +231 -0
  431. package/contracts/staking/Staking.sol +513 -0
  432. package/contracts/staking/StakingLifecycle.sol +23 -0
  433. package/contracts/staking/StakingManager.sol +54 -0
  434. package/contracts/staking/StakingReader.sol +187 -0
  435. package/contracts/staking/StakingService.sol +411 -0
  436. package/contracts/staking/StakingServiceManager.sol +44 -0
  437. package/contracts/staking/StakingStore.sol +615 -0
  438. package/contracts/staking/TargetManagerLib.sol +207 -0
  439. package/contracts/type/AddressSet.sol +58 -0
  440. package/contracts/type/Amount.sol +128 -0
  441. package/contracts/{types → type}/Blocknumber.sol +21 -3
  442. package/contracts/type/ClaimId.sol +75 -0
  443. package/contracts/type/DistributorType.sol +55 -0
  444. package/contracts/type/Fee.sol +66 -0
  445. package/contracts/type/Key32.sol +50 -0
  446. package/contracts/type/NftId.sol +78 -0
  447. package/contracts/type/NftIdSet.sol +62 -0
  448. package/contracts/type/ObjectType.sol +275 -0
  449. package/contracts/type/PayoutId.sol +82 -0
  450. package/contracts/type/Referral.sol +89 -0
  451. package/contracts/type/RequestId.sol +75 -0
  452. package/contracts/type/RiskId.sol +43 -0
  453. package/contracts/type/RoleId.sol +174 -0
  454. package/contracts/type/Seconds.sol +81 -0
  455. package/contracts/type/Selector.sol +102 -0
  456. package/contracts/{types → type}/StateId.sol +50 -6
  457. package/contracts/type/String.sol +53 -0
  458. package/contracts/{types → type}/Timestamp.sol +41 -7
  459. package/contracts/type/UFixed.sol +332 -0
  460. package/contracts/type/Version.sol +108 -0
  461. package/package.json +16 -7
  462. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  463. package/artifacts/contracts/components/Component.sol/Component.json +0 -205
  464. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  465. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  466. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  467. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -255
  468. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  469. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -74
  470. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  471. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -328
  472. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  473. package/artifacts/contracts/components/Product.sol/Product.json +0 -346
  474. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  475. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  476. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  477. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  478. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  479. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  480. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  481. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  482. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  483. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  484. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  485. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  486. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  487. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  488. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  489. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  490. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  491. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  492. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  493. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  494. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  496. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  497. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  498. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  499. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  500. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  501. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  502. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  503. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  504. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  505. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  506. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  507. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  508. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  509. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  510. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  511. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  512. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  513. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  514. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  515. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  516. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -299
  517. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  518. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -202
  519. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  520. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  521. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -205
  522. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  523. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -217
  524. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  525. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -141
  526. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  527. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  528. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  529. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  530. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  531. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  532. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  533. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  534. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  535. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -254
  536. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  537. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -254
  538. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  539. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  540. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -129
  541. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  542. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -155
  543. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  544. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  545. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  546. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -127
  547. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  548. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  549. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  550. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -196
  551. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  552. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  553. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.json +0 -490
  554. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  555. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.json +0 -45
  556. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  557. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.json +0 -490
  558. package/artifacts/contracts/mock/Dip.sol/DIP.dbg.json +0 -4
  559. package/artifacts/contracts/mock/Dip.sol/DIP.json +0 -338
  560. package/artifacts/contracts/mock/TestPool.sol/TestPool.dbg.json +0 -4
  561. package/artifacts/contracts/mock/TestPool.sol/TestPool.json +0 -294
  562. package/artifacts/contracts/mock/TestProduct.sol/TestProduct.dbg.json +0 -4
  563. package/artifacts/contracts/mock/TestProduct.sol/TestProduct.json +0 -384
  564. package/artifacts/contracts/mock/Usdc.sol/USDC.dbg.json +0 -4
  565. package/artifacts/contracts/mock/Usdc.sol/USDC.json +0 -338
  566. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  567. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  568. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  569. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  570. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  571. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  572. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  573. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  574. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  575. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  576. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  577. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  578. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  579. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  580. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  581. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  582. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  583. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  584. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  585. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  586. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  587. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -174
  588. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  589. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  590. package/contracts/components/Component.sol +0 -77
  591. package/contracts/components/IPool.sol +0 -15
  592. package/contracts/components/IProduct.sol +0 -16
  593. package/contracts/components/Pool.sol +0 -52
  594. package/contracts/components/Product.sol +0 -89
  595. package/contracts/experiment/errors/Require.sol +0 -38
  596. package/contracts/experiment/errors/Revert.sol +0 -44
  597. package/contracts/experiment/inheritance/A.sol +0 -53
  598. package/contracts/experiment/inheritance/B.sol +0 -28
  599. package/contracts/experiment/inheritance/C.sol +0 -34
  600. package/contracts/experiment/inheritance/IA.sol +0 -13
  601. package/contracts/experiment/inheritance/IB.sol +0 -10
  602. package/contracts/experiment/inheritance/IC.sol +0 -12
  603. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  604. package/contracts/experiment/statemachine/ISM.sol +0 -25
  605. package/contracts/experiment/statemachine/README.md +0 -112
  606. package/contracts/experiment/statemachine/SM.sol +0 -57
  607. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  608. package/contracts/experiment/types/TypeA.sol +0 -47
  609. package/contracts/experiment/types/TypeB.sol +0 -29
  610. package/contracts/instance/access/Access.sol +0 -165
  611. package/contracts/instance/access/IAccess.sol +0 -63
  612. package/contracts/instance/component/ComponentModule.sol +0 -274
  613. package/contracts/instance/component/IComponent.sol +0 -74
  614. package/contracts/instance/lifecycle/ILifecycle.sol +0 -47
  615. package/contracts/instance/lifecycle/LifecycleModule.sol +0 -88
  616. package/contracts/instance/policy/IPolicy.sol +0 -50
  617. package/contracts/instance/policy/PolicyModule.sol +0 -114
  618. package/contracts/instance/pool/IPoolModule.sol +0 -23
  619. package/contracts/instance/pool/PoolModule.sol +0 -81
  620. package/contracts/instance/product/IProductService.sol +0 -36
  621. package/contracts/instance/product/ProductService.sol +0 -136
  622. package/contracts/instance/treasury/ITreasury.sol +0 -91
  623. package/contracts/instance/treasury/TokenHandler.sol +0 -24
  624. package/contracts/instance/treasury/TreasuryModule.sol +0 -168
  625. package/contracts/mock/TestPool.sol +0 -16
  626. package/contracts/mock/TestProduct.sol +0 -39
  627. package/contracts/mock/Usdc.sol +0 -26
  628. package/contracts/registry/IChainNft.sol +0 -21
  629. package/contracts/types/ChainId.sol +0 -38
  630. package/contracts/types/Fee.sol +0 -32
  631. package/contracts/types/NftId.sol +0 -51
  632. package/contracts/types/ObjectType.sol +0 -107
  633. package/contracts/types/UFixed.sol +0 -210
@@ -0,0 +1,302 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IRegistry} from "../registry/IRegistry.sol";
5
+ import {IInstance} from "../instance/IInstance.sol";
6
+ import {IComponentService} from "../shared/IComponentService.sol";
7
+ import {IInstanceService} from "../instance/IInstanceService.sol";
8
+ import {IRegistryService} from "../registry/IRegistryService.sol";
9
+ import {InstanceReader} from "../instance/InstanceReader.sol";
10
+ import {IComponents} from "../instance/module/IComponents.sol";
11
+ import {IPolicy} from "../instance/module/IPolicy.sol";
12
+
13
+ import {Amount, AmountLib} from "../type/Amount.sol";
14
+ import {NftId, NftIdLib} from "../type/NftId.sol";
15
+ import {Fee, FeeLib} from "../type/Fee.sol";
16
+ import {KEEP_STATE} from "../type/StateId.sol";
17
+ import {ObjectType, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
18
+ import {Version, VersionLib} from "../type/Version.sol";
19
+ import {RoleId} from "../type/RoleId.sol";
20
+
21
+ import {IVersionable} from "../shared/IVersionable.sol";
22
+ import {Versionable} from "../shared/Versionable.sol";
23
+
24
+ import {IService} from "../shared/IService.sol";
25
+ import {Service} from "../shared/Service.sol";
26
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
27
+ import {InstanceService} from "../instance/InstanceService.sol";
28
+ import {IComponent} from "../shared/IComponent.sol";
29
+ import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
30
+ import {IDistributionService} from "./IDistributionService.sol";
31
+ import {IPricingService} from "../product/IPricingService.sol";
32
+
33
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
34
+ import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
35
+ import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
36
+ import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
37
+ import {Key32} from "../type/Key32.sol";
38
+ import {IDistribution} from "../instance/module/IDistribution.sol";
39
+ import {InstanceStore} from "../instance/InstanceStore.sol";
40
+
41
+
42
+ contract DistributionService is
43
+ ComponentVerifyingService,
44
+ IDistributionService
45
+ {
46
+ using NftIdLib for NftId;
47
+ using TimestampLib for Timestamp;
48
+ using UFixedLib for UFixed;
49
+ using FeeLib for Fee;
50
+ using ReferralLib for ReferralId;
51
+
52
+ IComponentService private _componentService;
53
+ IInstanceService private _instanceService;
54
+ IRegistryService private _registryService;
55
+
56
+ function _initialize(
57
+ address owner,
58
+ bytes memory data
59
+ )
60
+ internal
61
+ initializer
62
+ virtual override
63
+ {
64
+ address initialOwner;
65
+ address registryAddress;
66
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
67
+ // TODO while DistributionService is not deployed in DistributionServiceManager constructor
68
+ // owner is DistributionServiceManager deployer
69
+ initializeService(registryAddress, address(0), owner);
70
+
71
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
72
+ _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
73
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
74
+
75
+ registerInterface(type(IDistributionService).interfaceId);
76
+ }
77
+
78
+
79
+ function createDistributorType(
80
+ string memory name,
81
+ UFixed minDiscountPercentage,
82
+ UFixed maxDiscountPercentage,
83
+ UFixed commissionPercentage,
84
+ uint32 maxReferralCount,
85
+ uint32 maxReferralLifetime,
86
+ bool allowSelfReferrals,
87
+ bool allowRenewals,
88
+ bytes memory data
89
+ )
90
+ external
91
+ returns (DistributorType distributorType)
92
+ {
93
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
94
+ InstanceReader instanceReader = instance.getInstanceReader();
95
+
96
+ {
97
+ NftId productNftId = _getProductNftId(instanceReader, distributionNftId);
98
+ IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
99
+
100
+ UFixed variableDistributionFees = productInfo.distributionFee.fractionalFee;
101
+ UFixed variableFeesPartsTotal = productInfo.minDistributionOwnerFee.fractionalFee + commissionPercentage;
102
+
103
+ if (variableFeesPartsTotal > variableDistributionFees) {
104
+ revert ErrorDistributionServiceVariableFeesTooHight(variableDistributionFees.toInt1000(), variableFeesPartsTotal.toInt1000());
105
+ }
106
+ UFixed maxDiscountPercentageLimit = variableDistributionFees - variableFeesPartsTotal;
107
+
108
+ if (maxDiscountPercentage.gt(maxDiscountPercentageLimit)) {
109
+ revert ErrorDistributionServiceMaxDiscountTooHigh(maxDiscountPercentage.toInt1000(), maxDiscountPercentageLimit.toInt1000());
110
+ }
111
+ }
112
+
113
+ distributorType = DistributorTypeLib.toDistributorType(distributionNftId, name);
114
+ IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo(
115
+ name,
116
+ minDiscountPercentage,
117
+ maxDiscountPercentage,
118
+ commissionPercentage,
119
+ maxReferralCount,
120
+ maxReferralLifetime,
121
+ allowSelfReferrals,
122
+ allowRenewals,
123
+ data);
124
+
125
+ instance.getInstanceStore().createDistributorType(distributorType, info);
126
+ }
127
+
128
+
129
+ function createDistributor(
130
+ address distributor,
131
+ DistributorType distributorType,
132
+ bytes memory data
133
+ )
134
+ external
135
+ virtual
136
+ returns (NftId distributorNftId)
137
+ {
138
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
139
+
140
+ distributorNftId = _registryService.registerDistributor(
141
+ IRegistry.ObjectInfo(
142
+ NftIdLib.zero(),
143
+ distributionNftId,
144
+ DISTRIBUTOR(),
145
+ true, // intercepting property for bundles is defined on pool
146
+ address(0),
147
+ distributor,
148
+ ""
149
+ ));
150
+
151
+ IDistribution.DistributorInfo memory info = IDistribution.DistributorInfo(
152
+ distributorType,
153
+ true, // active
154
+ data,
155
+ AmountLib.zero(),
156
+ 0);
157
+
158
+ instance.getInstanceStore().createDistributor(distributorNftId, info);
159
+ }
160
+
161
+ // function updateDistributorType(
162
+ // NftId distributorNftId,
163
+ // DistributorType distributorType,
164
+ // bytes memory data
165
+ // )
166
+ // external
167
+ // virtual
168
+ // {
169
+ // (, IInstance instance) = _getAndVerifyCallingDistribution();
170
+ // InstanceReader instanceReader = instance.getInstanceReader();
171
+ // IDistribution.DistributorInfo memory distributorInfo = instanceReader.getDistributorInfo(distributorNftId);
172
+ // distributorInfo.distributorType = distributorType;
173
+ // distributorInfo.data = data;
174
+ // instance.updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
175
+ // }
176
+
177
+
178
+ function createReferral(
179
+ NftId distributorNftId,
180
+ string memory code,
181
+ UFixed discountPercentage,
182
+ uint32 maxReferrals,
183
+ Timestamp expiryAt,
184
+ bytes memory data
185
+ )
186
+ external
187
+ virtual
188
+ returns (ReferralId referralId)
189
+ {
190
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
191
+
192
+ if (bytes(code).length == 0) {
193
+ revert ErrorIDistributionServiceInvalidReferral(code);
194
+ }
195
+ if (expiryAt.eqz()) {
196
+ revert ErrorIDistributionServiceExpirationInvalid(expiryAt);
197
+ }
198
+
199
+ InstanceReader instanceReader = instance.getInstanceReader();
200
+ DistributorType distributorType = instanceReader.getDistributorInfo(distributorNftId).distributorType;
201
+ IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
202
+
203
+ if (distributorTypeData.maxReferralCount < maxReferrals) {
204
+ revert ErrorIDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
205
+ }
206
+ if (distributorTypeData.minDiscountPercentage > discountPercentage) {
207
+ revert ErrorIDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage.toInt(), discountPercentage.toInt());
208
+ }
209
+ if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
210
+ revert ErrorIDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage.toInt(), discountPercentage.toInt());
211
+ }
212
+ if (expiryAt.toInt() - TimestampLib.blockTimestamp().toInt() > distributorTypeData.maxReferralLifetime) {
213
+ revert ErrorIDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt.toInt());
214
+ }
215
+
216
+ referralId = ReferralLib.toReferralId(distributionNftId, code);
217
+ IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo(
218
+ distributorNftId,
219
+ code,
220
+ discountPercentage,
221
+ maxReferrals,
222
+ 0, // used referrals
223
+ expiryAt,
224
+ data
225
+ );
226
+
227
+ instance.getInstanceStore().createReferral(referralId, info);
228
+ return referralId;
229
+ }
230
+
231
+
232
+ function processSale(
233
+ NftId distributionNftId, // assume always of distribution type
234
+ ReferralId referralId,
235
+ IPolicy.Premium memory premium
236
+ )
237
+ external
238
+ virtual
239
+ restricted
240
+ {
241
+ IInstance instance = _getInstanceForDistribution(distributionNftId);
242
+ InstanceReader reader = instance.getInstanceReader();
243
+ InstanceStore store = instance.getInstanceStore();
244
+
245
+ // get distribution owner fee amount
246
+ Amount distributionOwnerFee = AmountLib.toAmount(premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount);
247
+
248
+ // update referral/distributor info if applicable
249
+ if (referralIsValid(distributionNftId, referralId)) {
250
+
251
+ // increase distribution balance by commission amount and distribution owner fee
252
+ Amount commissionAmount = AmountLib.toAmount(premium.commissionAmount);
253
+ _componentService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
254
+
255
+ // update book keeping for referral info
256
+ IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
257
+ referralInfo.usedReferrals += 1;
258
+ store.updateReferral(referralId, referralInfo, KEEP_STATE());
259
+
260
+ // update book keeping for distributor info
261
+ IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
262
+ // TODO refactor sum of commission amount into a fee balance for distributors
263
+ distributorInfo.commissionAmount = distributorInfo.commissionAmount + commissionAmount;
264
+ distributorInfo.numPoliciesSold += 1;
265
+ store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
266
+ } else {
267
+
268
+ // increase distribution balance by distribution owner fee
269
+ _componentService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
270
+ }
271
+ }
272
+
273
+ function referralIsValid(NftId distributionNftId, ReferralId referralId) public view returns (bool isValid) {
274
+ if (distributionNftId.eqz() || referralId.eqz()) {
275
+ return false;
276
+ }
277
+
278
+ IInstance instance = _getInstanceForDistribution(distributionNftId);
279
+ IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
280
+
281
+ if (info.distributorNftId.eqz()) {
282
+ return false;
283
+ }
284
+
285
+ isValid = info.expiryAt.eqz() || (info.expiryAt.gtz() && TimestampLib.blockTimestamp() <= info.expiryAt);
286
+ isValid = isValid && info.usedReferrals < info.maxReferrals;
287
+ }
288
+
289
+ function _getInstanceForDistribution(NftId distributionNftId)
290
+ internal
291
+ view
292
+ returns(IInstance instance)
293
+ {
294
+ NftId instanceNftId = getRegistry().getObjectInfo(distributionNftId).parentNftId;
295
+ address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
296
+ return IInstance(instanceAddress);
297
+ }
298
+
299
+ function _getDomain() internal pure override returns(ObjectType) {
300
+ return DISTRIBUTION();
301
+ }
302
+ }
@@ -0,0 +1,42 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../shared/ProxyManager.sol";
6
+ import {DistributionService} from "./DistributionService.sol";
7
+ import {Registry} from "../registry/Registry.sol";
8
+ import {RegistryService} from "../registry/RegistryService.sol";
9
+ import {REGISTRY} from "../type/ObjectType.sol";
10
+
11
+ contract DistributionServiceManager is ProxyManager {
12
+
13
+ DistributionService private _distributionService;
14
+
15
+ /// @dev initializes proxy manager with distribution service implementation and deploys instance
16
+ constructor(
17
+ address authority,
18
+ address registryAddress,
19
+ bytes32 salt
20
+ )
21
+ ProxyManager(registryAddress)
22
+ {
23
+ DistributionService distSrv = new DistributionService{salt: salt}();
24
+ bytes memory data = abi.encode(registryAddress, address(this), authority);
25
+ IVersionable versionable = deployDetermenistic(
26
+ address(distSrv),
27
+ data,
28
+ salt);
29
+
30
+ _distributionService = DistributionService(address(versionable));
31
+ }
32
+
33
+ //--- view functions ----------------------------------------------------//
34
+ function getDistributionService()
35
+ external
36
+ view
37
+ returns (DistributionService distributionService)
38
+ {
39
+ return _distributionService;
40
+ }
41
+
42
+ }
@@ -0,0 +1,48 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Fee} from "../type/Fee.sol";
5
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
6
+ import {ReferralId, ReferralStatus} from "../type/Referral.sol";
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {DistributorType} from "../type/DistributorType.sol";
9
+ import {UFixed} from "../type/UFixed.sol";
10
+ import {Timestamp} from "../type/Timestamp.sol";
11
+
12
+ interface IDistributionComponent is IInstanceLinkedComponent {
13
+
14
+ error ErrorDistributionNotDistributor(address distributor);
15
+ error ErrorDistributionAlreadyDistributor(address distributor, NftId distributorNftId);
16
+
17
+ event LogDistributorUpdated(address to, address caller);
18
+
19
+ /// @dev Returns true iff the provided address is registered as a distributor with this distribution component.
20
+ function isDistributor(address candidate) external view returns (bool);
21
+
22
+ /// @dev Returns the distributor Nft Id for the provided address
23
+ function getDistributorNftId(address distributor) external view returns (NftId distributorNftId);
24
+
25
+ function getDiscountPercentage(
26
+ string memory referralCode
27
+ ) external view returns (UFixed discountPercentage, ReferralStatus status);
28
+
29
+ function getReferralId(
30
+ string memory referralCode
31
+ ) external returns (ReferralId referralId);
32
+
33
+ function calculateRenewalFeeAmount(
34
+ ReferralId referralId,
35
+ uint256 netPremiumAmount
36
+ ) external view returns (uint256 feeAmount);
37
+
38
+ /// @dev Callback function to process a renewal of a policy.
39
+ /// The default implementation is empty.
40
+ /// Overwrite this function to implement a use case specific behaviour.
41
+ function processRenewal(
42
+ ReferralId referralId,
43
+ uint256 feeAmount
44
+ ) external;
45
+
46
+ /// @dev Returns true to ensure component is called when transferring distributor Nft Ids.
47
+ function isVerifying() external view returns (bool verifying);
48
+ }
@@ -0,0 +1,85 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {NftId} from "../type/NftId.sol";
6
+ import {Fee} from "../type/Fee.sol";
7
+ import {IPolicy} from "../instance/module/IPolicy.sol";
8
+ import {IService} from "../shared/IService.sol";
9
+ import {UFixed} from "../type/UFixed.sol";
10
+ import {DistributorType} from "../type/DistributorType.sol";
11
+ import {ReferralId} from "../type/Referral.sol";
12
+ import {Timestamp} from "../type/Timestamp.sol";
13
+
14
+
15
+ interface IDistributionService is IService {
16
+
17
+ error ErrorDistributionServiceCallerNotRegistered(address caller);
18
+ error ErrorIDistributionServiceParentNftIdNotInstance(NftId nftId, NftId parentNftId);
19
+ error ErrorIDistributionServiceCallerNotDistributor(address caller);
20
+ error ErrorIDistributionServiceInvalidReferralId(ReferralId referralId);
21
+ error ErrorIDistributionServiceMaxReferralsExceeded(uint256 maxReferrals);
22
+ error ErrorIDistributionServiceDiscountTooLow(uint256 minDiscountPercentage, uint256 discountPercentage);
23
+ error ErrorIDistributionServiceDiscountTooHigh(uint256 maxDiscountPercentage, uint256 discountPercentage);
24
+ error ErrorIDistributionServiceExpiryTooLong(uint256 maxReferralLifetime, uint256 expiryAt);
25
+ error ErrorIDistributionServiceInvalidReferral(string code);
26
+ error ErrorIDistributionServiceExpirationInvalid(Timestamp expiryAt);
27
+ error ErrorIDistributionServiceCommissionTooHigh(uint256 commissionPercentage, uint256 maxCommissionPercentage);
28
+ error ErrorIDistributionServiceMinFeeTooHigh(uint256 minFee, uint256 limit);
29
+
30
+ error ErrorDistributionServiceVariableFeesTooHight(uint256 maxDiscountPercentage, uint256 limit);
31
+ error ErrorDistributionServiceMaxDiscountTooHigh(uint256 maxDiscountPercentage, uint256 limit);
32
+
33
+ error ErrorIDistributionServiceReferralInvalid(NftId distributionNftId, ReferralId referralId);
34
+ error ErrorDistributionServiceInvalidFeeTransferred(Amount transferredDistributionFeeAmount, Amount expectedDistributionFeeAmount);
35
+
36
+ function createDistributorType(
37
+ string memory name,
38
+ UFixed minDiscountPercentage,
39
+ UFixed maxDiscountPercentage,
40
+ UFixed commissionPercentage,
41
+ uint32 maxReferralCount,
42
+ uint32 maxReferralLifetime,
43
+ bool allowSelfReferrals,
44
+ bool allowRenewals,
45
+ bytes memory data
46
+ )
47
+ external
48
+ returns (DistributorType distributorType);
49
+
50
+ function createDistributor(
51
+ address distributor,
52
+ DistributorType distributorType,
53
+ bytes memory data
54
+ ) external returns (NftId distributorNftId);
55
+
56
+ // TODO re-enable and reorganize (service contract too large)
57
+ // function updateDistributorType(
58
+ // NftId distributorNftId,
59
+ // DistributorType distributorType,
60
+ // bytes memory data
61
+ // ) external;
62
+
63
+ function createReferral(
64
+ NftId distributorNftId,
65
+ string memory code,
66
+ UFixed discountPercentage,
67
+ uint32 maxReferrals,
68
+ Timestamp expiryAt,
69
+ bytes memory data
70
+ )
71
+ external
72
+ returns (ReferralId referralId);
73
+
74
+ /// @dev callback from product service when selling a policy for a specific referralId
75
+ function processSale(
76
+ NftId distributionNftId,
77
+ ReferralId referralId,
78
+ IPolicy.Premium memory premium
79
+ ) external;
80
+
81
+ function referralIsValid(
82
+ NftId distributorNftId,
83
+ ReferralId referralId
84
+ ) external view returns (bool isValid);
85
+ }
@@ -0,0 +1,126 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IInstance} from "./IInstance.sol";
5
+ import {INSTANCE} from "../type/ObjectType.sol";
6
+ import {InstanceReader} from "./InstanceReader.sol";
7
+ import {IPolicy} from "../instance/module/IPolicy.sol";
8
+ import {IRegistry} from "../registry/IRegistry.sol";
9
+ import {LibNftIdSet} from "../type/NftIdSet.sol";
10
+ import {NftId} from "../type/NftId.sol";
11
+ import {TimestampLib} from "../type/Timestamp.sol";
12
+
13
+ import {ObjectManager} from "./base/ObjectManager.sol";
14
+
15
+ contract BundleManager is
16
+ ObjectManager
17
+ {
18
+
19
+ event LogBundleManagerPolicyLinked(NftId bundleNftId, NftId policyNftId);
20
+ event LogBundleManagerPolicyUnlinked(NftId bundleNftId, NftId policyNftId);
21
+
22
+ event LogBundleManagerBundleAdded(NftId poolNftId, NftId bundleNftId);
23
+ event LogBundleManagerBundleUnlocked(NftId poolNftId, NftId bundleNftId);
24
+ event LogBundleManagerBundleLocked(NftId poolNftId, NftId bundleNftId);
25
+ event LogBundleManagerBundleClosed(NftId poolNftId, NftId bundleNftId);
26
+
27
+ error ErrorBundleManagerPolicyAlreadyActivated(NftId policyNftId);
28
+ error ErrorBundleManagerBundleLocked(NftId bundleNftId, NftId policyNftId);
29
+ error ErrorBundleManagerPolicyWithOpenClaims(NftId policyNftId, uint256 openClaimsCount);
30
+ error ErrorBundleManagerPolicyNotCloseable(NftId policyNftId);
31
+ error ErrorBundleManagerBundleUnknown(NftId bundleNftId);
32
+ error ErrorBundleManagerBundleNotRegistered(NftId bundleNftId);
33
+
34
+ mapping(NftId bundleNftId => LibNftIdSet.Set policies) internal _activePolicies;
35
+
36
+ /// @dev links a policy to its bundle
37
+ // to link a policy it MUST NOT yet have been linked
38
+ function linkPolicy(NftId policyNftId) external restricted() {
39
+ NftId bundleNftId = _instance.getInstanceReader().getPolicyInfo(policyNftId).bundleNftId;
40
+ // decision will likely depend on the decision what to check here and what in the service
41
+ NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
42
+
43
+ // ensure bundle is unlocked (in active set) and registered with this instance
44
+ if (!_isActive(poolNftId, bundleNftId)) {
45
+ revert ErrorBundleManagerBundleLocked(bundleNftId, policyNftId);
46
+ }
47
+
48
+ LibNftIdSet.add(_activePolicies[bundleNftId], policyNftId);
49
+ emit LogBundleManagerPolicyLinked(bundleNftId, policyNftId);
50
+ }
51
+
52
+
53
+ /// @dev unlinks a policy from its bundle
54
+ // to unlink a policy it must closable, ie. meet one of the following criterias
55
+ // - the policy MUST be past its expiry period and it MUST NOT have any open claims
56
+ // - the policy's payoutAmount MUST be equal to its sumInsuredAmount and MUST NOT have any open claims
57
+ function unlinkPolicy(NftId policyNftId) external restricted() {
58
+ IPolicy.PolicyInfo memory policyInfo = _instance.getInstanceReader().getPolicyInfo(policyNftId);
59
+
60
+ NftId bundleNftId = policyInfo.bundleNftId;
61
+ // decision will likely depend on the decision what to check here and what in the service
62
+ NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
63
+
64
+ // ensure bundle is registered with this instance
65
+ if (!_contains(poolNftId, bundleNftId)) {
66
+ revert ErrorBundleManagerBundleUnknown(bundleNftId);
67
+ }
68
+
69
+ LibNftIdSet.remove(_activePolicies[bundleNftId], policyNftId);
70
+ emit LogBundleManagerPolicyUnlinked(policyInfo.bundleNftId, policyNftId);
71
+ }
72
+
73
+
74
+ /// @dev add a new bundle to a pool registerd with this instance
75
+ // the corresponding pool is fetched via instance reader
76
+ function add(NftId bundleNftId) external restricted() {
77
+ NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
78
+
79
+ // ensure pool is registered with instance
80
+ if(poolNftId.eqz()) {
81
+ revert ErrorBundleManagerBundleNotRegistered(bundleNftId);
82
+ }
83
+
84
+ _add(poolNftId, bundleNftId);
85
+ emit LogBundleManagerBundleAdded(poolNftId, bundleNftId);
86
+ }
87
+
88
+
89
+ /// @dev unlocked (active) bundles are available to collateralize new policies
90
+ function unlock(NftId bundleNftId) external restricted() {
91
+ NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
92
+ _activate(poolNftId, bundleNftId);
93
+ emit LogBundleManagerBundleUnlocked(poolNftId, bundleNftId);
94
+ }
95
+
96
+ /// @dev locked (deactivated) bundles may not collateralize any new policies
97
+ function lock(NftId bundleNftId) external restricted() {
98
+ NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
99
+ _deactivate(poolNftId, bundleNftId);
100
+ emit LogBundleManagerBundleLocked(poolNftId, bundleNftId);
101
+ }
102
+
103
+ function bundles(NftId poolNftId) external view returns(uint256) {
104
+ return _objects(poolNftId);
105
+ }
106
+
107
+ function getBundleNftId(NftId poolNftId, uint256 idx) external view returns(NftId bundleNftId) {
108
+ return _getObject(poolNftId, idx);
109
+ }
110
+
111
+ function activeBundles(NftId poolNftId) external view returns(uint256) {
112
+ return _activeObjs(poolNftId);
113
+ }
114
+
115
+ function getActiveBundleNftId(NftId poolNftId, uint256 idx) external view returns(NftId bundleNftId) {
116
+ return _getActiveObject(poolNftId, idx);
117
+ }
118
+
119
+ function activePolicies(NftId bundleNftId) external view returns(uint256) {
120
+ return LibNftIdSet.size(_activePolicies[bundleNftId]);
121
+ }
122
+
123
+ function getActivePolicy(NftId bundleNftId, uint256 idx) external view returns(NftId policyNftId) {
124
+ return LibNftIdSet.getElementAt(_activePolicies[bundleNftId], idx);
125
+ }
126
+ }