@etherisc/gif-next 0.0.2-e46206a-486 → 0.0.2-e4d7e1c-013

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