@etherisc/gif-next 0.0.2-d4eadee-930 → 0.0.2-d5103a2-471

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