@etherisc/gif-next 0.0.2-8d47fa1-080 → 0.0.2-8d69bcd-543

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 (800) hide show
  1. package/README.md +252 -21
  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 +1341 -0
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/{shared/IOwnable.sol/IOwnable.json → authorization/AccessAdmin.sol/IAccessManagedChecker.json} +4 -4
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1434 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +508 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/module/access → authorization}/IAccess.sol/IAccess.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1092 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +324 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1338 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +527 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1016 -0
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1501 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +860 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +915 -0
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1008 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1487 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +555 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2048 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +527 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1495 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +527 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1211 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1663 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +555 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2416 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +527 -0
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  67. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +364 -1783
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +759 -0
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +441 -2076
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1862 -0
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +631 -0
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2339 -0
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1025 -0
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +744 -0
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3718 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  90. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  91. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  92. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  96. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  98. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  100. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  101. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  102. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  103. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/IComponents.sol/IComponents.json} +2 -2
  104. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  105. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  106. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  107. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  108. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  109. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  110. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  111. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  112. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +975 -0
  114. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +535 -0
  116. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  118. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  119. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +774 -0
  120. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +733 -0
  122. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +875 -0
  124. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  125. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +997 -0
  126. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +764 -0
  128. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  129. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1252 -0
  130. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +555 -0
  132. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  133. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1367 -0
  134. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  135. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +820 -0
  136. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  137. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +946 -0
  138. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  139. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +907 -0
  140. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  141. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1309 -0
  142. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  143. package/artifacts/contracts/pool/Pool.sol/Pool.json +1027 -0
  144. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  145. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1626 -0
  146. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  147. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +792 -0
  148. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  149. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +813 -0
  150. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  151. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +728 -0
  152. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  153. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1161 -0
  154. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  155. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +527 -0
  156. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  157. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1538 -0
  158. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  159. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +860 -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} +262 -339
  162. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  163. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1082 -0
  164. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  165. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +968 -0
  166. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  167. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +602 -0
  168. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  169. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1018 -0
  170. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  171. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → product/IRiskService.sol/IRiskService.json} +218 -158
  172. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  173. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1336 -0
  174. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  175. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +816 -0
  176. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  177. package/artifacts/contracts/product/PricingService.sol/PricingService.json +930 -0
  178. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +784 -0
  180. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  181. package/artifacts/contracts/product/Product.sol/Product.json +1119 -0
  182. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  183. package/artifacts/contracts/product/RiskService.sol/RiskService.json +637 -0
  184. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  185. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +724 -0
  186. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  187. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +103 -2
  188. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  189. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +810 -171
  190. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  191. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +561 -186
  192. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  193. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  194. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  195. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -0
  196. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  197. package/artifacts/contracts/registry/Registry.sol/Registry.json +1016 -148
  198. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  199. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1861 -0
  200. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  201. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +625 -217
  202. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  203. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +735 -0
  204. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  205. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1795 -0
  206. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  207. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  208. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  209. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1325 -0
  210. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  211. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  212. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  213. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  214. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  215. package/artifacts/contracts/shared/Component.sol/Component.json +707 -0
  216. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  217. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1597 -0
  218. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  219. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +824 -0
  220. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  221. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +255 -150
  222. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +541 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  225. package/artifacts/contracts/{instance/IInstanceLinked.sol/IInstanceLinked.json → shared/ContractLib.sol/IInstanceAdminHelper.json} +5 -5
  226. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  230. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  231. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +632 -0
  232. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  233. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1221 -0
  234. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  235. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +709 -0
  236. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  237. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +122 -172
  238. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  239. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  240. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  241. package/artifacts/contracts/{instance/module/component/ComponentModule.sol/ComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +82 -52
  242. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  243. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  244. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  245. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +213 -8
  246. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  247. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  248. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  249. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → shared/IService.sol/IService.json} +189 -179
  250. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  251. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  252. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  253. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +797 -0
  254. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  255. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  256. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  257. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  258. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  259. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  260. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  261. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +209 -0
  262. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  263. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  264. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  265. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +226 -8
  266. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  267. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  268. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  269. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/Service.sol/Service.json} +196 -199
  270. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  271. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +724 -0
  272. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  273. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  274. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  275. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +140 -0
  276. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  277. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1447 -0
  278. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  279. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1067 -0
  280. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  281. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  282. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  283. package/artifacts/contracts/staking/Staking.sol/Staking.json +1857 -0
  284. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  285. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  286. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +792 -0
  288. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  290. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1272 -0
  292. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +732 -0
  294. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  296. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  297. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  298. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  299. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  300. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  302. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  304. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  306. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  308. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  310. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  311. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  312. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  313. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  314. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  316. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  317. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  318. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  320. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  322. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  324. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  326. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +199 -0
  328. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +433 -0
  330. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  332. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  334. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  336. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  338. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  340. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  342. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  344. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  346. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +113 -0
  348. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  349. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  350. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  351. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  352. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  353. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  354. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  355. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  356. package/contracts/accounting/AccountingService.sol +262 -0
  357. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  358. package/contracts/accounting/IAccountingService.sol +45 -0
  359. package/contracts/authorization/AccessAdmin.sol +656 -0
  360. package/contracts/authorization/AccessManagerCloneable.sol +149 -0
  361. package/contracts/authorization/Authorization.sol +316 -0
  362. package/contracts/authorization/IAccess.sol +49 -0
  363. package/contracts/authorization/IAccessAdmin.sol +140 -0
  364. package/contracts/authorization/IAuthorization.sol +66 -0
  365. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  366. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  367. package/contracts/distribution/BasicDistribution.sol +139 -0
  368. package/contracts/distribution/BasicDistributionAuthorization.sol +39 -0
  369. package/contracts/distribution/Distribution.sol +287 -0
  370. package/contracts/distribution/DistributionService.sol +357 -0
  371. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  372. package/contracts/distribution/IDistributionComponent.sol +52 -0
  373. package/contracts/distribution/IDistributionService.sol +100 -0
  374. package/contracts/examples/fire/DamageLevel.sol +59 -0
  375. package/contracts/examples/fire/FirePool.sol +90 -0
  376. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  377. package/contracts/examples/fire/FireProduct.sol +438 -0
  378. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  379. package/contracts/examples/fire/FireUSD.sol +26 -0
  380. package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
  381. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  382. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  383. package/contracts/examples/unpermissioned/SimplePool.sol +107 -0
  384. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  385. package/contracts/examples/unpermissioned/SimpleProduct.sol +370 -0
  386. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  387. package/contracts/instance/BundleSet.sol +130 -0
  388. package/contracts/instance/IInstance.sol +63 -47
  389. package/contracts/instance/IInstanceService.sol +72 -0
  390. package/contracts/instance/Instance.sol +233 -71
  391. package/contracts/instance/InstanceAdmin.sol +436 -0
  392. package/contracts/instance/InstanceAuthorizationV3.sol +213 -0
  393. package/contracts/instance/InstanceReader.sol +596 -0
  394. package/contracts/instance/InstanceService.sol +404 -0
  395. package/contracts/instance/InstanceServiceManager.sol +39 -0
  396. package/contracts/instance/InstanceStore.sol +298 -0
  397. package/contracts/instance/RiskSet.sol +118 -0
  398. package/contracts/instance/base/BalanceStore.sol +123 -0
  399. package/contracts/instance/base/Cloneable.sol +28 -0
  400. package/contracts/instance/base/ObjectCounter.sol +20 -0
  401. package/contracts/instance/base/ObjectLifecycle.sol +113 -0
  402. package/contracts/instance/base/ObjectSet.sol +77 -0
  403. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  404. package/contracts/instance/module/IBundle.sol +20 -0
  405. package/contracts/instance/module/IComponents.sol +51 -0
  406. package/contracts/instance/module/IDistribution.sol +41 -0
  407. package/contracts/instance/module/IPolicy.sol +85 -0
  408. package/contracts/instance/module/IRisk.sol +14 -0
  409. package/contracts/{test/TestToken.sol → mock/Dip.sol} +6 -6
  410. package/contracts/oracle/BasicOracle.sol +47 -0
  411. package/contracts/oracle/BasicOracleAuthorization.sol +37 -0
  412. package/contracts/oracle/IOracle.sol +36 -0
  413. package/contracts/oracle/IOracleComponent.sol +33 -0
  414. package/contracts/oracle/IOracleService.sol +66 -0
  415. package/contracts/oracle/Oracle.sol +156 -0
  416. package/contracts/oracle/OracleService.sol +310 -0
  417. package/contracts/oracle/OracleServiceManager.sol +39 -0
  418. package/contracts/pool/BasicPool.sol +175 -0
  419. package/contracts/pool/BasicPoolAuthorization.sol +59 -0
  420. package/contracts/pool/BundleService.sol +425 -0
  421. package/contracts/pool/BundleServiceManager.sol +39 -0
  422. package/contracts/pool/IBundleService.sol +121 -0
  423. package/contracts/pool/IPoolComponent.sol +62 -0
  424. package/contracts/pool/IPoolService.sol +153 -0
  425. package/contracts/pool/Pool.sol +345 -0
  426. package/contracts/pool/PoolService.sol +613 -0
  427. package/contracts/pool/PoolServiceManager.sol +39 -0
  428. package/contracts/product/ApplicationService.sol +259 -0
  429. package/contracts/product/ApplicationServiceManager.sol +38 -0
  430. package/contracts/product/BasicProduct.sol +51 -0
  431. package/contracts/product/BasicProductAuthorization.sol +32 -0
  432. package/contracts/product/ClaimService.sol +708 -0
  433. package/contracts/product/ClaimServiceManager.sol +38 -0
  434. package/contracts/product/IApplicationService.sol +66 -0
  435. package/contracts/product/IClaimService.sol +136 -0
  436. package/contracts/product/IPolicyService.sol +90 -0
  437. package/contracts/product/IPricingService.sol +39 -0
  438. package/contracts/product/IProductComponent.sol +62 -0
  439. package/contracts/product/IRiskService.sol +33 -0
  440. package/contracts/product/PolicyService.sol +718 -0
  441. package/contracts/product/PolicyServiceManager.sol +39 -0
  442. package/contracts/product/PricingService.sol +304 -0
  443. package/contracts/product/PricingServiceManager.sol +39 -0
  444. package/contracts/product/Product.sol +463 -0
  445. package/contracts/product/RiskService.sol +145 -0
  446. package/contracts/product/RiskServiceManager.sol +39 -0
  447. package/contracts/registry/ChainNft.sol +99 -37
  448. package/contracts/registry/IRegistry.sol +131 -40
  449. package/contracts/registry/IRegistryService.sol +49 -16
  450. package/contracts/registry/IRelease.sol +26 -0
  451. package/contracts/registry/ITransferInterceptor.sol +1 -1
  452. package/contracts/registry/Registry.sol +569 -344
  453. package/contracts/registry/RegistryAdmin.sol +344 -0
  454. package/contracts/registry/RegistryService.sol +147 -289
  455. package/contracts/registry/RegistryServiceManager.sol +53 -0
  456. package/contracts/registry/ReleaseAdmin.sol +245 -0
  457. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  458. package/contracts/registry/ReleaseRegistry.sol +511 -0
  459. package/contracts/registry/ServiceAuthorizationV3.sol +242 -0
  460. package/contracts/registry/TokenRegistry.sol +313 -0
  461. package/contracts/shared/Component.sol +241 -0
  462. package/contracts/shared/ComponentService.sol +692 -0
  463. package/contracts/shared/ComponentServiceManager.sol +38 -0
  464. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  465. package/contracts/shared/ContractLib.sol +253 -0
  466. package/contracts/shared/IComponent.sol +61 -0
  467. package/contracts/shared/IComponentService.sol +116 -0
  468. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  469. package/contracts/shared/IKeyValueStore.sol +54 -0
  470. package/contracts/{instance/base → shared}/ILifecycle.sol +6 -5
  471. package/contracts/shared/INftOwnable.sol +25 -0
  472. package/contracts/shared/IPolicyHolder.sol +35 -0
  473. package/contracts/shared/IRegisterable.sol +24 -9
  474. package/contracts/shared/IRegistryLinked.sol +11 -0
  475. package/contracts/shared/IService.sol +23 -0
  476. package/contracts/shared/InitializableERC165.sol +27 -0
  477. package/contracts/shared/InstanceLinkedComponent.sol +197 -0
  478. package/contracts/shared/KeyValueStore.sol +131 -0
  479. package/contracts/shared/Lifecycle.sol +88 -0
  480. package/contracts/shared/NftIdSet.sol +65 -0
  481. package/contracts/shared/NftOwnable.sol +127 -0
  482. package/contracts/shared/PolicyHolder.sol +62 -0
  483. package/contracts/shared/Registerable.sol +54 -62
  484. package/contracts/shared/RegistryLinked.sol +38 -0
  485. package/contracts/shared/Service.sol +65 -0
  486. package/contracts/shared/TokenHandler.sol +312 -0
  487. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  488. package/contracts/staking/IStaking.sol +165 -0
  489. package/contracts/staking/IStakingService.sol +157 -0
  490. package/contracts/staking/StakeManagerLib.sol +224 -0
  491. package/contracts/staking/Staking.sol +526 -0
  492. package/contracts/staking/StakingLifecycle.sol +23 -0
  493. package/contracts/staking/StakingManager.sol +52 -0
  494. package/contracts/staking/StakingReader.sol +190 -0
  495. package/contracts/staking/StakingService.sol +408 -0
  496. package/contracts/staking/StakingServiceManager.sol +45 -0
  497. package/contracts/staking/StakingStore.sol +605 -0
  498. package/contracts/staking/TargetManagerLib.sol +211 -0
  499. package/contracts/{types → type}/AddressSet.sol +1 -1
  500. package/contracts/type/Amount.sol +150 -0
  501. package/contracts/{types → type}/Blocknumber.sol +27 -3
  502. package/contracts/type/ClaimId.sol +80 -0
  503. package/contracts/type/DistributorType.sol +55 -0
  504. package/contracts/type/Fee.sol +66 -0
  505. package/contracts/{types → type}/Key32.sol +10 -5
  506. package/contracts/type/Key32Set.sol +62 -0
  507. package/contracts/{types → type}/NftId.sol +28 -15
  508. package/contracts/type/NftIdSet.sol +62 -0
  509. package/contracts/type/ObjectType.sol +303 -0
  510. package/contracts/type/PayoutId.sol +82 -0
  511. package/contracts/type/Referral.sol +90 -0
  512. package/contracts/type/RequestId.sol +75 -0
  513. package/contracts/type/RiskId.sol +74 -0
  514. package/contracts/type/RoleId.sol +182 -0
  515. package/contracts/type/Seconds.sol +101 -0
  516. package/contracts/type/Selector.sol +102 -0
  517. package/contracts/{types → type}/StateId.sol +53 -5
  518. package/contracts/type/String.sol +53 -0
  519. package/contracts/{types → type}/Timestamp.sol +37 -19
  520. package/contracts/{types → type}/UFixed.sol +48 -12
  521. package/contracts/{types → type}/Version.sol +22 -6
  522. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  523. package/contracts/upgradeability/ProxyManager.sol +232 -0
  524. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +2 -4
  525. package/contracts/upgradeability/Versionable.sol +59 -0
  526. package/package.json +12 -7
  527. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  528. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -213
  529. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  530. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -445
  531. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  532. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -177
  533. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  534. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -343
  535. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  536. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -474
  537. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  538. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -373
  539. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  540. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -602
  541. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  542. package/artifacts/contracts/components/Product.sol/Product.json +0 -502
  543. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  544. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  545. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  546. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  547. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  548. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  549. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  550. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  551. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  552. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  553. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  554. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  555. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  556. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  557. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  558. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  559. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  560. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  561. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  562. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  563. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  564. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  565. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  566. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  567. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  568. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  569. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  570. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  571. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  572. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  573. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  574. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  575. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  576. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  577. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  578. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  579. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  580. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  581. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  582. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  583. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  584. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -344
  585. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  586. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  587. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -710
  588. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  589. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  590. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  591. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  592. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  593. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  594. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  595. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  596. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  597. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  598. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  599. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  600. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  601. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  602. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  603. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  604. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  605. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  606. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -117
  607. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  608. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  609. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  610. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  611. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  612. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  613. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  614. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  615. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  616. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  617. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  618. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  619. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  620. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -164
  621. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  622. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
  623. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  624. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  625. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  626. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  627. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  628. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  629. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  630. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  631. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -638
  632. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  633. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  634. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  635. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -638
  636. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  637. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -690
  638. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  639. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -526
  640. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  641. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  642. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -369
  643. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  644. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -484
  645. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  646. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  647. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -649
  648. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  649. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -964
  650. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  651. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
  652. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  653. package/artifacts/contracts/registry/RegistryInstaller.sol/RegistryInstaller.dbg.json +0 -4
  654. package/artifacts/contracts/registry/RegistryInstaller.sol/RegistryInstaller.json +0 -344
  655. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  656. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  657. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  658. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  659. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  660. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  661. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -310
  662. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  663. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  664. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  665. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  666. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  667. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -445
  668. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  669. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  670. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  671. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -602
  672. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  673. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -632
  674. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  675. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -191
  676. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  677. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  678. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  679. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -472
  680. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  681. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  682. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  683. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  684. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  685. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -270
  686. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  687. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  688. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  689. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  690. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  691. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  692. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  693. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  694. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  695. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  696. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  697. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  698. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  699. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  700. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  701. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  702. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  703. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  704. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  705. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  706. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  707. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  708. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  709. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -30
  710. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  711. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  712. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  713. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  714. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  715. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  716. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  717. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  718. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  719. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  720. package/contracts/components/BaseComponent.sol +0 -79
  721. package/contracts/components/Distribution.sol +0 -155
  722. package/contracts/components/IBaseComponent.sol +0 -19
  723. package/contracts/components/IDistributionComponent.sol +0 -47
  724. package/contracts/components/IPoolComponent.sol +0 -65
  725. package/contracts/components/IProductComponent.sol +0 -39
  726. package/contracts/components/Pool.sol +0 -246
  727. package/contracts/components/Product.sol +0 -299
  728. package/contracts/experiment/errors/Require.sol +0 -38
  729. package/contracts/experiment/errors/Revert.sol +0 -44
  730. package/contracts/experiment/inheritance/A.sol +0 -53
  731. package/contracts/experiment/inheritance/B.sol +0 -28
  732. package/contracts/experiment/inheritance/C.sol +0 -34
  733. package/contracts/experiment/inheritance/IA.sol +0 -13
  734. package/contracts/experiment/inheritance/IB.sol +0 -10
  735. package/contracts/experiment/inheritance/IC.sol +0 -12
  736. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  737. package/contracts/experiment/statemachine/ISM.sol +0 -25
  738. package/contracts/experiment/statemachine/SM.sol +0 -57
  739. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  740. package/contracts/experiment/types/TypeA.sol +0 -47
  741. package/contracts/experiment/types/TypeB.sol +0 -29
  742. package/contracts/instance/IInstanceLinked.sol +0 -8
  743. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  744. package/contracts/instance/base/IInstanceBase.sol +0 -23
  745. package/contracts/instance/base/IKeyValueStore.sol +0 -50
  746. package/contracts/instance/base/IService.sol +0 -15
  747. package/contracts/instance/base/InstanceBase.sol +0 -89
  748. package/contracts/instance/base/KeyValueStore.sol +0 -161
  749. package/contracts/instance/base/Lifecycle.sol +0 -100
  750. package/contracts/instance/base/ModuleBase.sol +0 -57
  751. package/contracts/instance/base/ServiceBase.sol +0 -43
  752. package/contracts/instance/module/access/Access.sol +0 -149
  753. package/contracts/instance/module/access/IAccess.sol +0 -53
  754. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  755. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  756. package/contracts/instance/module/component/ComponentModule.sol +0 -71
  757. package/contracts/instance/module/component/IComponent.sol +0 -28
  758. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  759. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  760. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  761. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  762. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  763. package/contracts/instance/module/pool/PoolModule.sol +0 -95
  764. package/contracts/instance/module/risk/IRisk.sol +0 -26
  765. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  766. package/contracts/instance/module/treasury/ITreasury.sol +0 -84
  767. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  768. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
  769. package/contracts/instance/service/ComponentOwnerService.sol +0 -272
  770. package/contracts/instance/service/DistributionService.sol +0 -54
  771. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  772. package/contracts/instance/service/IDistributionService.sol +0 -12
  773. package/contracts/instance/service/IPoolService.sol +0 -37
  774. package/contracts/instance/service/IProductService.sol +0 -107
  775. package/contracts/instance/service/PoolService.sol +0 -149
  776. package/contracts/instance/service/ProductService.sol +0 -509
  777. package/contracts/registry/IChainNft.sol +0 -22
  778. package/contracts/registry/IRegistryLinked.sol +0 -8
  779. package/contracts/registry/RegistryInstaller.sol +0 -100
  780. package/contracts/shared/ERC165.sol +0 -21
  781. package/contracts/shared/IOwnable.sol +0 -6
  782. package/contracts/shared/ProxyManager.sol +0 -115
  783. package/contracts/shared/Versionable.sol +0 -147
  784. package/contracts/test/TestDistribution.sol +0 -22
  785. package/contracts/test/TestFee.sol +0 -25
  786. package/contracts/test/TestPool.sol +0 -27
  787. package/contracts/test/TestProduct.sol +0 -74
  788. package/contracts/test/TestRegisterable.sol +0 -18
  789. package/contracts/test/TestRoleId.sol +0 -14
  790. package/contracts/test/TestService.sol +0 -26
  791. package/contracts/test/TestVersion.sol +0 -44
  792. package/contracts/test/TestVersionable.sol +0 -17
  793. package/contracts/test/Usdc.sol +0 -26
  794. package/contracts/types/ChainId.sol +0 -38
  795. package/contracts/types/Fee.sol +0 -56
  796. package/contracts/types/NftIdSet.sol +0 -60
  797. package/contracts/types/ObjectType.sol +0 -131
  798. package/contracts/types/ReferralId.sol +0 -48
  799. package/contracts/types/RiskId.sol +0 -43
  800. package/contracts/types/RoleId.sol +0 -38
@@ -0,0 +1,357 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAccountingService} from "../accounting/IAccountingService.sol";
5
+ import {IRegistry} from "../registry/IRegistry.sol";
6
+ import {IInstance} from "../instance/IInstance.sol";
7
+ import {IComponentService} from "../shared/IComponentService.sol";
8
+ import {IInstanceService} from "../instance/IInstanceService.sol";
9
+ import {IRegistryService} from "../registry/IRegistryService.sol";
10
+ import {InstanceReader} from "../instance/InstanceReader.sol";
11
+ import {IComponents} from "../instance/module/IComponents.sol";
12
+ import {IPolicy} from "../instance/module/IPolicy.sol";
13
+
14
+ import {Amount, AmountLib} from "../type/Amount.sol";
15
+ import {NftId, NftIdLib} from "../type/NftId.sol";
16
+ import {KEEP_STATE} from "../type/StateId.sol";
17
+ import {ObjectType, ACCOUNTING, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
18
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
19
+ import {IDistributionService} from "./IDistributionService.sol";
20
+ import {UFixed} from "../type/UFixed.sol";
21
+ import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
22
+ import {ReferralId, ReferralLib} from "../type/Referral.sol";
23
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
24
+ import {IDistribution} from "../instance/module/IDistribution.sol";
25
+ import {InstanceStore} from "../instance/InstanceStore.sol";
26
+
27
+
28
+ contract DistributionService is
29
+ ComponentVerifyingService,
30
+ IDistributionService
31
+ {
32
+ IAccountingService private _accountingService;
33
+ IComponentService private _componentService;
34
+ IInstanceService private _instanceService;
35
+ IRegistryService private _registryService;
36
+
37
+ function _initialize(
38
+ address owner,
39
+ bytes memory data
40
+ )
41
+ internal
42
+ virtual override
43
+ initializer()
44
+ {
45
+ (
46
+ address authority,
47
+ address registry
48
+ ) = abi.decode(data, (address, address));
49
+
50
+ __Service_init(authority, registry, owner);
51
+
52
+ _accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
53
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
54
+ _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
55
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
56
+
57
+ _registerInterface(type(IDistributionService).interfaceId);
58
+ }
59
+
60
+
61
+ function createDistributorType(
62
+ string memory name,
63
+ UFixed minDiscountPercentage,
64
+ UFixed maxDiscountPercentage,
65
+ UFixed commissionPercentage,
66
+ uint32 maxReferralCount,
67
+ uint32 maxReferralLifetime,
68
+ bool allowSelfReferrals,
69
+ bool allowRenewals,
70
+ bytes memory data
71
+ )
72
+ external
73
+ returns (DistributorType distributorType)
74
+ {
75
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
76
+ // InstanceReader instanceReader = instance.getInstanceReader();
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,
98
+ minDiscountPercentage,
99
+ maxDiscountPercentage,
100
+ commissionPercentage,
101
+ maxReferralCount,
102
+ maxReferralLifetime,
103
+ allowSelfReferrals,
104
+ allowRenewals,
105
+ data);
106
+
107
+ instance.getInstanceStore().createDistributorType(distributorType, info);
108
+ }
109
+
110
+
111
+ function createDistributor(
112
+ address distributor,
113
+ DistributorType distributorType,
114
+ bytes memory data
115
+ )
116
+ external
117
+ virtual
118
+ returns (NftId distributorNftId)
119
+ {
120
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
121
+
122
+ distributorNftId = _registryService.registerDistributor(
123
+ IRegistry.ObjectInfo(
124
+ NftIdLib.zero(),
125
+ distributionNftId,
126
+ DISTRIBUTOR(),
127
+ true, // intercepting property for bundles is defined on pool
128
+ address(0),
129
+ distributor,
130
+ ""
131
+ ));
132
+
133
+ IDistribution.DistributorInfo memory info = IDistribution.DistributorInfo(
134
+ distributorType,
135
+ true, // active
136
+ data,
137
+ 0);
138
+
139
+ instance.getInstanceStore().createDistributor(distributorNftId, info);
140
+ }
141
+
142
+ function changeDistributorType(
143
+ NftId distributorNftId,
144
+ DistributorType distributorType,
145
+ bytes memory data
146
+ )
147
+ external
148
+ virtual
149
+ {
150
+ (,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
151
+ IDistribution.DistributorInfo memory distributorInfo = instance.getInstanceReader().getDistributorInfo(distributorNftId);
152
+ distributorInfo.distributorType = distributorType;
153
+ distributorInfo.data = data;
154
+ instance.getInstanceStore().updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
155
+ }
156
+
157
+
158
+ function createReferral(
159
+ NftId distributorNftId,
160
+ string memory code,
161
+ UFixed discountPercentage,
162
+ uint32 maxReferrals,
163
+ Timestamp expiryAt,
164
+ bytes memory data
165
+ )
166
+ external
167
+ virtual
168
+ onlyNftOfType(distributorNftId, DISTRIBUTOR())
169
+ returns (ReferralId referralId)
170
+ {
171
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
172
+
173
+ if (bytes(code).length == 0) {
174
+ revert ErrorIDistributionServiceInvalidReferral(code);
175
+ }
176
+ if (expiryAt.eqz() || expiryAt.lte(TimestampLib.blockTimestamp())) {
177
+ revert ErrorIDistributionServiceExpirationInvalid(expiryAt);
178
+ }
179
+
180
+ {
181
+ InstanceReader instanceReader = instance.getInstanceReader();
182
+ DistributorType distributorType = instanceReader.getDistributorInfo(distributorNftId).distributorType;
183
+ IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
184
+
185
+ if (distributorTypeData.maxReferralCount < maxReferrals) {
186
+ revert ErrorIDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
187
+ }
188
+ if (distributorTypeData.minDiscountPercentage > discountPercentage) {
189
+ revert ErrorIDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage.toInt(), discountPercentage.toInt());
190
+ }
191
+ if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
192
+ revert ErrorIDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage.toInt(), discountPercentage.toInt());
193
+ }
194
+ if (expiryAt.toInt() - TimestampLib.blockTimestamp().toInt() > distributorTypeData.maxReferralLifetime) {
195
+ revert ErrorIDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt.toInt());
196
+ }
197
+ }
198
+
199
+ {
200
+ referralId = ReferralLib.toReferralId(distributionNftId, code);
201
+ IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo(
202
+ distributorNftId,
203
+ code,
204
+ discountPercentage,
205
+ maxReferrals,
206
+ 0, // used referrals
207
+ expiryAt,
208
+ data
209
+ );
210
+
211
+ instance.getInstanceStore().createReferral(referralId, info);
212
+ }
213
+ }
214
+
215
+ /// @inheritdoc IDistributionService
216
+ function processReferral(
217
+ NftId distributionNftId,
218
+ ReferralId referralId
219
+ )
220
+ external
221
+ virtual
222
+ restricted()
223
+ onlyNftOfType(distributionNftId, DISTRIBUTION())
224
+ {
225
+ if (referralIsValid(distributionNftId, referralId)) {
226
+ IRegistry registry = getRegistry();
227
+ IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
228
+ IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
229
+
230
+ // update book keeping for referral info
231
+ IDistribution.ReferralInfo memory referralInfo = instance.getInstanceReader().getReferralInfo(referralId);
232
+ referralInfo.usedReferrals += 1;
233
+ instance.getInstanceStore().updateReferral(referralId, referralInfo, KEEP_STATE());
234
+ }
235
+ }
236
+
237
+ function processSale(
238
+ NftId distributionNftId, // assume always of distribution type
239
+ ReferralId referralId,
240
+ IPolicy.PremiumInfo memory premium
241
+ )
242
+ external
243
+ virtual
244
+ restricted()
245
+ onlyNftOfType(distributionNftId, DISTRIBUTION())
246
+ {
247
+ IRegistry registry = getRegistry();
248
+ IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
249
+ IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
250
+ InstanceReader reader = instance.getInstanceReader();
251
+ InstanceStore store = instance.getInstanceStore();
252
+
253
+ // get distribution owner fee amount
254
+ Amount distributionOwnerFee = premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount;
255
+
256
+ // update referral/distributor info if applicable
257
+ if (referralIsValid(distributionNftId, referralId)) {
258
+
259
+ // increase distribution balance by commission amount and distribution owner fee
260
+ Amount commissionAmount = premium.commissionAmount;
261
+ _accountingService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
262
+
263
+ // update book keeping for referral info
264
+ IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
265
+
266
+ _accountingService.increaseDistributorBalance(store, referralInfo.distributorNftId, AmountLib.zero(), commissionAmount);
267
+
268
+ // update book keeping for distributor info
269
+ IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
270
+ distributorInfo.numPoliciesSold += 1;
271
+ store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
272
+ } else {
273
+ // increase distribution balance by distribution owner fee
274
+ _accountingService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
275
+ }
276
+ }
277
+
278
+ /// @inheritdoc IDistributionService
279
+ function withdrawCommission(NftId distributorNftId, Amount amount)
280
+ public
281
+ virtual
282
+ // TODO: restricted() (once #462 is done)
283
+ onlyNftOfType(distributorNftId, DISTRIBUTOR())
284
+ returns (Amount withdrawnAmount)
285
+ {
286
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
287
+ InstanceReader reader = instance.getInstanceReader();
288
+
289
+ IComponents.ComponentInfo memory distributionInfo = reader.getComponentInfo(distributionNftId);
290
+ address distributionWallet = distributionInfo.tokenHandler.getWallet();
291
+
292
+ Amount commissionAmount = reader.getFeeAmount(distributorNftId);
293
+
294
+ // determine withdrawn amount
295
+ withdrawnAmount = amount;
296
+ if (withdrawnAmount.gte(AmountLib.max())) {
297
+ withdrawnAmount = commissionAmount;
298
+ } else {
299
+ if (withdrawnAmount.gt(commissionAmount)) {
300
+ revert ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(withdrawnAmount, commissionAmount);
301
+ }
302
+ }
303
+
304
+ // decrease fee counters by withdrawnAmount and update distributor info
305
+ {
306
+ InstanceStore store = instance.getInstanceStore();
307
+ // decrease fee counter for distribution balance
308
+ _accountingService.decreaseDistributionBalance(store, distributionNftId, withdrawnAmount, AmountLib.zero());
309
+ // decrease fee counter for distributor fee
310
+ _accountingService.decreaseDistributorBalance(store, distributorNftId, AmountLib.zero(), withdrawnAmount);
311
+ }
312
+
313
+ // transfer amount to distributor
314
+ {
315
+ address distributor = getRegistry().ownerOf(distributorNftId);
316
+ emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.token), withdrawnAmount);
317
+ distributionInfo.tokenHandler.pushToken(distributor, withdrawnAmount);
318
+ }
319
+ }
320
+
321
+ function referralIsValid(NftId distributionNftId, ReferralId referralId)
322
+ public
323
+ view
324
+ onlyNftOfType(distributionNftId, DISTRIBUTION())
325
+ returns (bool isValid)
326
+ {
327
+ if (distributionNftId.eqz() || referralId.eqz()) {
328
+ return false;
329
+ }
330
+
331
+ IRegistry registry = getRegistry();
332
+ IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
333
+ IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
334
+ IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
335
+
336
+ if (info.distributorNftId.eqz()) {
337
+ return false;
338
+ }
339
+
340
+ isValid = info.expiryAt.eqz() || (info.expiryAt.gtz() && TimestampLib.blockTimestamp() <= info.expiryAt);
341
+ isValid = isValid && info.usedReferrals < info.maxReferrals;
342
+ }
343
+
344
+ function _getInstanceForDistribution(NftId distributionNftId)
345
+ internal
346
+ view
347
+ returns(IInstance instance)
348
+ {
349
+ NftId instanceNftId = getRegistry().getParentNftId(distributionNftId);
350
+ address instanceAddress = getRegistry().getObjectAddress(instanceNftId);
351
+ return IInstance(instanceAddress);
352
+ }
353
+
354
+ function _getDomain() internal pure override returns(ObjectType) {
355
+ return DISTRIBUTION();
356
+ }
357
+ }
@@ -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
+ }
@@ -0,0 +1,52 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ReferralId, ReferralStatus} from "../type/Referral.sol";
8
+ import {UFixed} from "../type/UFixed.sol";
9
+
10
+ interface IDistributionComponent is IInstanceLinkedComponent {
11
+
12
+ error ErrorDistributionNotDistributor(address distributor);
13
+ error ErrorDistributionAlreadyDistributor(address distributor, NftId distributorNftId);
14
+
15
+ event LogDistributorUpdated(address to, address operator);
16
+
17
+ /// @dev Returns true iff the provided address is registered as a distributor with this distribution component.
18
+ function isDistributor(address candidate) external view returns (bool);
19
+
20
+ /// @dev Returns the distributor Nft Id for the provided address
21
+ function getDistributorNftId(address distributor) external view returns (NftId distributorNftId);
22
+
23
+ function getDiscountPercentage(
24
+ string memory referralCode
25
+ ) external view returns (UFixed discountPercentage, ReferralStatus status);
26
+
27
+ function getReferralId(
28
+ string memory referralCode
29
+ ) external returns (ReferralId referralId);
30
+
31
+ function calculateRenewalFeeAmount(
32
+ ReferralId referralId,
33
+ uint256 netPremiumAmount
34
+ ) external view returns (uint256 feeAmount);
35
+
36
+ /// @dev Callback function to process a renewal of a policy.
37
+ /// The default implementation is empty.
38
+ /// Overwrite this function to implement a use case specific behaviour.
39
+ function processRenewal(
40
+ ReferralId referralId,
41
+ uint256 feeAmount
42
+ ) external;
43
+
44
+ /// @dev Returns true to ensure component is called when transferring distributor Nft Ids.
45
+ function isVerifying() external view returns (bool verifying);
46
+
47
+ /// @dev Withdraw commission for the distributor
48
+ /// @param distributorNftId the distributor Nft Id
49
+ /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
50
+ /// @return withdrawnAmount the effective withdrawn amount
51
+ function withdrawCommission(NftId distributorNftId, Amount amount) external returns (Amount withdrawnAmount);
52
+ }
@@ -0,0 +1,100 @@
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 {IPolicy} from "../instance/module/IPolicy.sol";
7
+ import {IService} from "../shared/IService.sol";
8
+ import {UFixed} from "../type/UFixed.sol";
9
+ import {DistributorType} from "../type/DistributorType.sol";
10
+ import {ReferralId} from "../type/Referral.sol";
11
+ import {Timestamp} from "../type/Timestamp.sol";
12
+
13
+
14
+ interface IDistributionService is IService {
15
+
16
+ error ErrorDistributionServiceCallerNotRegistered(address caller);
17
+ error ErrorIDistributionServiceParentNftIdNotInstance(NftId nftId, NftId parentNftId);
18
+ error ErrorIDistributionServiceCallerNotDistributor(address caller);
19
+ error ErrorIDistributionServiceInvalidReferralId(ReferralId referralId);
20
+ error ErrorIDistributionServiceMaxReferralsExceeded(uint256 maxReferrals);
21
+ error ErrorIDistributionServiceDiscountTooLow(uint256 minDiscountPercentage, uint256 discountPercentage);
22
+ error ErrorIDistributionServiceDiscountTooHigh(uint256 maxDiscountPercentage, uint256 discountPercentage);
23
+ error ErrorIDistributionServiceExpiryTooLong(uint256 maxReferralLifetime, uint256 expiryAt);
24
+ error ErrorIDistributionServiceInvalidReferral(string code);
25
+ error ErrorIDistributionServiceExpirationInvalid(Timestamp expiryAt);
26
+ error ErrorIDistributionServiceCommissionTooHigh(uint256 commissionPercentage, uint256 maxCommissionPercentage);
27
+ error ErrorIDistributionServiceMinFeeTooHigh(uint256 minFee, uint256 limit);
28
+
29
+ error ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(Amount amount, Amount limit);
30
+
31
+ error ErrorDistributionServiceVariableFeesTooHight(uint256 maxDiscountPercentage, uint256 limit);
32
+ error ErrorDistributionServiceMaxDiscountTooHigh(uint256 maxDiscountPercentage, uint256 limit);
33
+
34
+ error ErrorIDistributionServiceReferralInvalid(NftId distributionNftId, ReferralId referralId);
35
+ error ErrorDistributionServiceInvalidFeeTransferred(Amount transferredDistributionFeeAmount, Amount expectedDistributionFeeAmount);
36
+
37
+ event LogDistributionServiceCommissionWithdrawn(NftId distributorNftId, address recipient, address tokenAddress, Amount amount);
38
+
39
+ function createDistributorType(
40
+ string memory name,
41
+ UFixed minDiscountPercentage,
42
+ UFixed maxDiscountPercentage,
43
+ UFixed commissionPercentage,
44
+ uint32 maxReferralCount,
45
+ uint32 maxReferralLifetime,
46
+ bool allowSelfReferrals,
47
+ bool allowRenewals,
48
+ bytes memory data
49
+ )
50
+ external
51
+ returns (DistributorType distributorType);
52
+
53
+ function createDistributor(
54
+ address distributor,
55
+ DistributorType distributorType,
56
+ bytes memory data
57
+ ) external returns (NftId distributorNftId);
58
+
59
+ function changeDistributorType(
60
+ NftId distributorNftId,
61
+ DistributorType distributorType,
62
+ bytes memory data
63
+ ) external;
64
+
65
+ function createReferral(
66
+ NftId distributorNftId,
67
+ string memory code,
68
+ UFixed discountPercentage,
69
+ uint32 maxReferrals,
70
+ Timestamp expiryAt,
71
+ bytes memory data
72
+ )
73
+ external
74
+ returns (ReferralId referralId);
75
+
76
+ /// @dev callback from product service when a referral is used.
77
+ /// Calling this will increment the referral usage counter.
78
+ function processReferral(
79
+ NftId distributionNftId,
80
+ ReferralId referralId
81
+ ) external;
82
+
83
+ /// @dev callback from product service when selling a policy for a specific referralId
84
+ function processSale(
85
+ NftId distributionNftId,
86
+ ReferralId referralId,
87
+ IPolicy.PremiumInfo memory premium
88
+ ) external;
89
+
90
+ function referralIsValid(
91
+ NftId distributorNftId,
92
+ ReferralId referralId
93
+ ) external view returns (bool isValid);
94
+
95
+ /// @dev Withdraw commission for the distributor
96
+ /// @param distributorNftId the distributor Nft Id
97
+ /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
98
+ /// @return withdrawnAmount the effective withdrawn amount
99
+ function withdrawCommission(NftId distributorNftId, Amount amount) external returns (Amount withdrawnAmount);
100
+ }
@@ -0,0 +1,59 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ type DamageLevel is uint8;
5
+
6
+ // type bindings
7
+ using {
8
+ DamageLevelLib.eq,
9
+ DamageLevelLib.eqz,
10
+ DamageLevelLib.toInt
11
+ } for DamageLevel global;
12
+
13
+ // solhint-disable-next-line func-name-mixedcase
14
+ function DAMAGE_SMALL() pure returns (DamageLevel) {
15
+ return DamageLevel.wrap(1);
16
+ }
17
+
18
+ // solhint-disable-next-line func-name-mixedcase
19
+ function DAMAGE_MEDIUM() pure returns (DamageLevel) {
20
+ return DamageLevel.wrap(2);
21
+ }
22
+
23
+ // solhint-disable-next-line func-name-mixedcase
24
+ function DAMAGE_LARGE() pure returns (DamageLevel) {
25
+ return DamageLevel.wrap(3);
26
+ }
27
+
28
+ library DamageLevelLib {
29
+
30
+ error ErrorDamageLeveLibInvalidDamageLevel(uint8 damageLevel);
31
+
32
+ function zero() internal pure returns (DamageLevel) {
33
+ return DamageLevel.wrap(0);
34
+ }
35
+
36
+ function toDamageLevel(uint8 damage) internal pure returns (DamageLevel) {
37
+ if (damage == 1) {
38
+ return DAMAGE_SMALL();
39
+ } else if (damage == 2) {
40
+ return DAMAGE_MEDIUM();
41
+ } else if (damage == 3) {
42
+ return DAMAGE_LARGE();
43
+ } else {
44
+ revert ErrorDamageLeveLibInvalidDamageLevel(damage);
45
+ }
46
+ }
47
+
48
+ function toInt(DamageLevel damageLevel) internal pure returns (uint8) {
49
+ return uint8(DamageLevel.unwrap(damageLevel));
50
+ }
51
+
52
+ function eq(DamageLevel a, DamageLevel b) internal pure returns (bool) {
53
+ return DamageLevel.unwrap(a) == DamageLevel.unwrap(b);
54
+ }
55
+
56
+ function eqz(DamageLevel a) internal pure returns (bool) {
57
+ return DamageLevel.unwrap(a) == 0;
58
+ }
59
+ }