@etherisc/gif-next 0.0.2-d551b5e-892 → 0.0.2-d57a2ff-383

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 (664) hide show
  1. package/README.md +28 -16
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1248 -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/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → authorization/IAccessAdmin.sol/IAccessAdmin.json} +499 -549
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1505 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1191 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1394 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +900 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +843 -0
  36. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  37. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -149
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +267 -1326
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +444 -172
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +364 -3016
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1621 -0
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +662 -349
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +598 -437
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +347 -145
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3591 -0
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +30 -112
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  70. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  71. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  74. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  75. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  77. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  79. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  81. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  82. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  83. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1063 -0
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  92. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  93. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -0
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  95. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  101. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → pool/IBundleService.sol/IBundleService.json} +311 -336
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  103. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +959 -0
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  107. package/artifacts/contracts/pool/Pool.sol/Pool.json +1269 -0
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  113. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  117. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -0
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  119. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  121. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  125. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +236 -190
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  127. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  129. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +347 -291
  130. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  131. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IPricingService.sol/IPricingService.json} +267 -256
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  133. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +966 -0
  134. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  135. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → product/IProductService.sol/IProductService.json} +144 -112
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  137. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  141. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  144. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  145. package/artifacts/contracts/product/Product.sol/Product.json +1257 -0
  146. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  147. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  148. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  151. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  153. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +344 -127
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +395 -219
  156. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  157. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  158. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  159. package/artifacts/contracts/registry/Registry.sol/Registry.json +532 -182
  160. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  161. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1741 -0
  162. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +477 -318
  164. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +337 -133
  166. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  167. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  168. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1159 -0
  170. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  171. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  172. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  173. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +351 -100
  174. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  175. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  176. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1487 -0
  178. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +784 -0
  180. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  181. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +216 -198
  182. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  183. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  184. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  185. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IComponent.sol/IComponent.json} +281 -103
  186. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  187. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  188. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  189. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +718 -0
  190. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  191. package/artifacts/contracts/{instance/IInstanceBase.sol/IInstanceBase.json → shared/IKeyValueStore.sol/IKeyValueStore.json} +60 -34
  192. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  193. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  194. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  195. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  196. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  197. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  198. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -35
  200. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  201. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  202. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IService.sol/IService.json +97 -172
  204. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  205. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  206. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  207. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  208. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  209. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +996 -0
  210. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  211. package/artifacts/contracts/{instance/base/IKeyValueStore.sol/IKeyValueStore.json → shared/KeyValueStore.sol/KeyValueStore.json} +88 -20
  212. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  213. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  214. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  215. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  216. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  217. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +115 -29
  218. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  219. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  220. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  221. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +330 -62
  222. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +132 -53
  224. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  225. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  226. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  227. package/artifacts/contracts/shared/Service.sol/Service.json +201 -162
  228. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  229. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  230. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  231. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  232. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  234. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  235. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  236. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  237. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  238. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  240. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  241. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  242. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  244. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  246. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  247. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  248. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  249. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  250. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  251. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  252. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  253. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
  254. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  255. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  256. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  257. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  258. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  260. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  262. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  264. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  265. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  266. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  268. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  269. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  270. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  272. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  273. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  274. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  276. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  278. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  280. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  282. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  283. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  284. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  286. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  288. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  290. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  292. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  293. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  294. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  296. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  298. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  299. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  300. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +498 -0
  302. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  303. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  304. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  305. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  306. package/contracts/authorization/AccessAdmin.sol +588 -0
  307. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  308. package/contracts/authorization/Authorization.sol +218 -0
  309. package/contracts/authorization/IAccess.sol +48 -0
  310. package/contracts/authorization/IAccessAdmin.sol +136 -0
  311. package/contracts/authorization/IAuthorization.sol +54 -0
  312. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  313. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  314. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  315. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  316. package/contracts/distribution/BasicDistribution.sol +149 -0
  317. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  318. package/contracts/distribution/Distribution.sol +283 -0
  319. package/contracts/distribution/DistributionService.sol +302 -0
  320. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  321. package/contracts/distribution/IDistributionComponent.sol +48 -0
  322. package/contracts/distribution/IDistributionService.sol +85 -0
  323. package/contracts/instance/BundleManager.sol +22 -25
  324. package/contracts/instance/IInstance.sol +75 -47
  325. package/contracts/instance/IInstanceService.sol +77 -17
  326. package/contracts/instance/Instance.sol +180 -386
  327. package/contracts/instance/InstanceAdmin.sol +266 -0
  328. package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
  329. package/contracts/instance/InstanceReader.sol +173 -83
  330. package/contracts/instance/InstanceService.sol +395 -204
  331. package/contracts/instance/InstanceServiceManager.sol +12 -25
  332. package/contracts/instance/InstanceStore.sol +276 -0
  333. package/contracts/instance/base/BalanceStore.sol +123 -0
  334. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  335. package/contracts/instance/base/ObjectCounter.sol +21 -0
  336. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  337. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +17 -39
  338. package/contracts/instance/module/IAccess.sol +29 -21
  339. package/contracts/instance/module/IBundle.sol +8 -8
  340. package/contracts/instance/module/IComponents.sol +52 -0
  341. package/contracts/instance/module/IDistribution.sol +7 -4
  342. package/contracts/instance/module/IPolicy.sol +56 -17
  343. package/contracts/instance/module/IRisk.sol +1 -1
  344. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  345. package/contracts/oracle/BasicOracle.sol +48 -0
  346. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  347. package/contracts/oracle/IOracle.sol +36 -0
  348. package/contracts/oracle/IOracleComponent.sol +32 -0
  349. package/contracts/oracle/IOracleService.sol +65 -0
  350. package/contracts/oracle/Oracle.sol +157 -0
  351. package/contracts/oracle/OracleService.sol +278 -0
  352. package/contracts/oracle/OracleServiceManager.sol +42 -0
  353. package/contracts/pool/BasicPool.sol +164 -0
  354. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  355. package/contracts/pool/BundleService.sol +296 -0
  356. package/contracts/pool/BundleServiceManager.sol +42 -0
  357. package/contracts/pool/IBundleService.sol +106 -0
  358. package/contracts/pool/IPoolComponent.sol +52 -0
  359. package/contracts/pool/IPoolService.sol +150 -0
  360. package/contracts/pool/Pool.sol +311 -0
  361. package/contracts/pool/PoolService.sol +452 -0
  362. package/contracts/pool/PoolServiceManager.sol +42 -0
  363. package/contracts/product/ApplicationService.sol +254 -0
  364. package/contracts/product/ApplicationServiceManager.sol +38 -0
  365. package/contracts/product/BasicProduct.sol +82 -0
  366. package/contracts/product/BasicProductAuthorization.sol +40 -0
  367. package/contracts/product/ClaimService.sol +442 -0
  368. package/contracts/product/ClaimServiceManager.sol +38 -0
  369. package/contracts/product/IApplicationService.sol +62 -0
  370. package/contracts/product/IClaimService.sol +99 -0
  371. package/contracts/product/IPolicyService.sol +78 -0
  372. package/contracts/product/IPricingService.sol +39 -0
  373. package/contracts/product/IProductComponent.sol +39 -0
  374. package/contracts/product/IProductService.sol +33 -0
  375. package/contracts/product/PolicyService.sol +475 -0
  376. package/contracts/product/PolicyServiceManager.sol +42 -0
  377. package/contracts/product/PricingService.sol +300 -0
  378. package/contracts/product/PricingServiceManager.sol +42 -0
  379. package/contracts/product/Product.sol +392 -0
  380. package/contracts/product/ProductService.sol +124 -0
  381. package/contracts/product/ProductServiceManager.sol +42 -0
  382. package/contracts/registry/ChainNft.sol +15 -0
  383. package/contracts/registry/IRegistry.sol +70 -30
  384. package/contracts/registry/IRegistryService.sol +47 -28
  385. package/contracts/registry/ITransferInterceptor.sol +1 -0
  386. package/contracts/registry/Registry.sol +378 -248
  387. package/contracts/registry/RegistryAdmin.sol +365 -0
  388. package/contracts/registry/RegistryService.sol +114 -206
  389. package/contracts/registry/RegistryServiceManager.sol +24 -51
  390. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  391. package/contracts/registry/ReleaseManager.sol +487 -0
  392. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  393. package/contracts/registry/TokenRegistry.sol +261 -57
  394. package/contracts/shared/Component.sol +281 -0
  395. package/contracts/shared/ComponentService.sol +581 -0
  396. package/contracts/shared/ComponentServiceManager.sol +35 -0
  397. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  398. package/contracts/shared/ERC165.sol +15 -13
  399. package/contracts/shared/IComponent.sol +70 -0
  400. package/contracts/shared/IComponentService.sol +102 -0
  401. package/contracts/shared/IInstanceLinkedComponent.sol +50 -0
  402. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  403. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  404. package/contracts/shared/INftOwnable.sol +13 -12
  405. package/contracts/shared/IPolicyHolder.sol +45 -0
  406. package/contracts/shared/IRegisterable.sol +4 -6
  407. package/contracts/shared/IRegistryLinked.sol +11 -0
  408. package/contracts/shared/IService.sol +15 -5
  409. package/contracts/shared/IVersionable.sol +5 -48
  410. package/contracts/shared/InitializableCustom.sol +177 -0
  411. package/contracts/shared/InstanceLinkedComponent.sol +151 -0
  412. package/contracts/shared/KeyValueStore.sol +131 -0
  413. package/contracts/shared/Lifecycle.sol +77 -0
  414. package/contracts/shared/NftIdSetManager.sol +65 -0
  415. package/contracts/shared/NftOwnable.sol +59 -86
  416. package/contracts/shared/PolicyHolder.sol +102 -0
  417. package/contracts/shared/ProxyManager.sol +131 -26
  418. package/contracts/shared/Registerable.sol +26 -41
  419. package/contracts/shared/RegistryLinked.sol +43 -0
  420. package/contracts/shared/Service.sol +57 -29
  421. package/contracts/shared/TokenHandler.sol +37 -6
  422. package/contracts/shared/Versionable.sol +4 -92
  423. package/contracts/staking/IStaking.sol +168 -0
  424. package/contracts/staking/IStakingService.sol +153 -0
  425. package/contracts/staking/StakeManagerLib.sol +231 -0
  426. package/contracts/staking/Staking.sol +513 -0
  427. package/contracts/staking/StakingLifecycle.sol +23 -0
  428. package/contracts/staking/StakingManager.sol +54 -0
  429. package/contracts/staking/StakingReader.sol +187 -0
  430. package/contracts/staking/StakingService.sol +411 -0
  431. package/contracts/staking/StakingServiceManager.sol +44 -0
  432. package/contracts/staking/StakingStore.sol +615 -0
  433. package/contracts/staking/TargetManagerLib.sol +207 -0
  434. package/contracts/{types → type}/AddressSet.sol +1 -1
  435. package/contracts/type/Amount.sol +128 -0
  436. package/contracts/{types → type}/Blocknumber.sol +21 -3
  437. package/contracts/type/ClaimId.sol +75 -0
  438. package/contracts/{types → type}/DistributorType.sol +2 -2
  439. package/contracts/{types → type}/Fee.sol +33 -23
  440. package/contracts/{types → type}/NftId.sol +21 -15
  441. package/contracts/{types → type}/NftIdSet.sol +2 -2
  442. package/contracts/type/ObjectType.sol +275 -0
  443. package/contracts/type/PayoutId.sol +82 -0
  444. package/contracts/{types → type}/Referral.sol +5 -1
  445. package/contracts/type/RequestId.sol +75 -0
  446. package/contracts/{types → type}/RiskId.sol +1 -1
  447. package/contracts/type/RoleId.sol +174 -0
  448. package/contracts/type/Seconds.sol +81 -0
  449. package/contracts/type/Selector.sol +102 -0
  450. package/contracts/{types → type}/StateId.sol +34 -4
  451. package/contracts/type/String.sol +53 -0
  452. package/contracts/{types → type}/Timestamp.sol +23 -14
  453. package/contracts/{types → type}/UFixed.sol +7 -0
  454. package/contracts/{types → type}/Version.sol +2 -1
  455. package/package.json +8 -5
  456. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  457. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  458. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -744
  459. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  460. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  461. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  462. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  463. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  464. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  465. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  466. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  467. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -939
  468. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  469. package/artifacts/contracts/components/Product.sol/Product.json +0 -855
  470. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  471. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  472. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  473. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  474. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  475. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  476. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  477. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  478. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  479. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  480. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  481. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  482. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  483. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  484. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  485. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  486. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  487. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  488. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  489. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  490. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  491. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  492. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  493. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  494. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  495. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  496. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  497. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  498. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  499. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  500. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  501. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  502. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  503. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  504. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  505. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  506. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  507. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  508. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  509. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  510. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  511. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  512. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  513. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  514. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -940
  515. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  516. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  517. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  518. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -285
  519. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  520. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  521. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  522. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  523. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  524. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  525. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  526. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  527. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  528. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  529. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  530. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  531. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  532. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  533. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -684
  534. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  535. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -428
  536. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  537. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  538. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  539. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  540. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  541. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  542. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  543. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -984
  544. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  545. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -464
  546. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  547. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1017
  548. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  549. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -448
  550. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  551. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -789
  552. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  553. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -420
  554. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  555. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  556. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  557. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  558. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  559. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  560. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  561. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  562. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  563. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  564. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  565. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  566. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  567. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  568. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  569. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  570. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  571. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  572. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  573. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  574. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  575. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  576. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  577. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  578. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  579. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  580. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  581. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  582. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  583. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  584. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  585. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  586. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  587. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  588. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  589. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  590. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  591. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  592. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  593. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  594. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  595. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  596. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  597. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  598. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  599. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  600. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  601. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  602. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  603. package/contracts/components/BaseComponent.sol +0 -132
  604. package/contracts/components/Distribution.sol +0 -163
  605. package/contracts/components/IBaseComponent.sol +0 -31
  606. package/contracts/components/IDistributionComponent.sol +0 -44
  607. package/contracts/components/IPoolComponent.sol +0 -66
  608. package/contracts/components/IProductComponent.sol +0 -35
  609. package/contracts/components/Pool.sol +0 -267
  610. package/contracts/components/Product.sol +0 -292
  611. package/contracts/experiment/cloning/Cloner.sol +0 -47
  612. package/contracts/experiment/errors/Require.sol +0 -38
  613. package/contracts/experiment/errors/Revert.sol +0 -44
  614. package/contracts/experiment/inheritance/A.sol +0 -53
  615. package/contracts/experiment/inheritance/B.sol +0 -28
  616. package/contracts/experiment/inheritance/C.sol +0 -34
  617. package/contracts/experiment/inheritance/IA.sol +0 -13
  618. package/contracts/experiment/inheritance/IB.sol +0 -10
  619. package/contracts/experiment/inheritance/IC.sol +0 -12
  620. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  621. package/contracts/experiment/statemachine/ISM.sol +0 -25
  622. package/contracts/experiment/statemachine/SM.sol +0 -57
  623. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  624. package/contracts/experiment/types/TypeA.sol +0 -47
  625. package/contracts/experiment/types/TypeB.sol +0 -29
  626. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  627. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  628. package/contracts/instance/IInstanceBase.sol +0 -26
  629. package/contracts/instance/InstanceAccessManager.sol +0 -288
  630. package/contracts/instance/InstanceBase.sol +0 -41
  631. package/contracts/instance/base/ComponentServiceBase.sol +0 -72
  632. package/contracts/instance/base/IInstanceBase.sol +0 -23
  633. package/contracts/instance/base/KeyValueStore.sol +0 -172
  634. package/contracts/instance/base/Lifecycle.sol +0 -100
  635. package/contracts/instance/module/ISetup.sol +0 -46
  636. package/contracts/instance/module/ITreasury.sol +0 -23
  637. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  638. package/contracts/instance/service/DistributionService.sol +0 -118
  639. package/contracts/instance/service/DistributionServiceManager.sol +0 -54
  640. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  641. package/contracts/instance/service/IDistributionService.sol +0 -12
  642. package/contracts/instance/service/IPolicyService.sol +0 -87
  643. package/contracts/instance/service/IPoolService.sol +0 -51
  644. package/contracts/instance/service/IProductService.sol +0 -40
  645. package/contracts/instance/service/PolicyService.sol +0 -513
  646. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  647. package/contracts/instance/service/PoolService.sol +0 -317
  648. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  649. package/contracts/instance/service/ProductService.sol +0 -173
  650. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  651. package/contracts/shared/ContractDeployerLib.sol +0 -72
  652. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  653. package/contracts/test/TestFee.sol +0 -25
  654. package/contracts/test/TestRegisterable.sol +0 -18
  655. package/contracts/test/TestRoleId.sol +0 -14
  656. package/contracts/test/TestService.sol +0 -24
  657. package/contracts/test/TestToken.sol +0 -26
  658. package/contracts/test/TestVersion.sol +0 -44
  659. package/contracts/test/TestVersionable.sol +0 -17
  660. package/contracts/types/ChainId.sol +0 -38
  661. package/contracts/types/NumberId.sol +0 -52
  662. package/contracts/types/ObjectType.sol +0 -152
  663. package/contracts/types/RoleId.sol +0 -91
  664. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,90 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAccess} from "../authorization/IAccess.sol";
5
+ import {ObjectType} from "../type/ObjectType.sol";
6
+ import {IServiceAuthorization} from "./IServiceAuthorization.sol";
7
+ import {SelectorLib} from "../type/Selector.sol";
8
+ import {StrLib} from "../type/String.sol";
9
+ import {TimestampLib} from "../type/Timestamp.sol";
10
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
11
+
12
+ /// @dev Base contract for release specific service authorization contracts.
13
+ contract ServiceAuthorization
14
+ is IServiceAuthorization
15
+ {
16
+ uint256 public constant GIF_VERSION_3 = 3;
17
+
18
+ string private _commitHash;
19
+
20
+ ObjectType[] internal _serviceDomains;
21
+ mapping(ObjectType domain => address service) internal _serviceAddress;
22
+ mapping(ObjectType domain => ObjectType[] authorizedDomains) internal _authorizedDomains;
23
+ mapping(ObjectType domain => mapping(ObjectType authorizedDomain => IAccess.FunctionInfo[] functions)) internal _authorizedFunctions;
24
+
25
+ constructor(string memory commitHash) {
26
+ _commitHash = commitHash;
27
+ _setupDomains();
28
+ _setupDomainAuthorizations();
29
+ }
30
+
31
+ function getCommitHash() external view returns(string memory commitHash) {
32
+ return _commitHash;
33
+ }
34
+
35
+ function getRelease() external view returns(VersionPart release) {
36
+ return VersionPartLib.toVersionPart(GIF_VERSION_3);
37
+ }
38
+
39
+ function getServiceDomains() external view returns(ObjectType[] memory serviceDomains) {
40
+ return _serviceDomains;
41
+ }
42
+
43
+ function getServiceDomain(uint idx) external view returns(ObjectType serviceDomain) {
44
+ return _serviceDomains[idx];
45
+ }
46
+
47
+ function getServiceAddress(ObjectType serviceDomain) external view returns(address service) {
48
+ return _serviceAddress[serviceDomain];
49
+ }
50
+
51
+ function getAuthorizedDomains(ObjectType serviceDomain) external view returns(ObjectType[] memory authorizatedDomains) {
52
+ return _authorizedDomains[serviceDomain];
53
+ }
54
+
55
+ function getAuthorizedFunctions(ObjectType serviceDomain, ObjectType authorizedDomain) external view returns(IAccess.FunctionInfo[] memory authorizatedFunctions) {
56
+ return _authorizedFunctions[serviceDomain][authorizedDomain];
57
+ }
58
+
59
+ /// @dev Overwrite this function for a specific realease.
60
+ function _setupDomains() internal virtual {}
61
+
62
+ /// @dev Overwrite this function for a specific realease.
63
+ function _setupDomainAuthorizations() internal virtual {}
64
+
65
+ /// @dev Use this method to to add an authorized domain.
66
+ /// The services will need to be registered in the order they are added using this function.
67
+ function _authorizeDomain(ObjectType serviceDomain, address serviceAddress) internal {
68
+ _serviceDomains.push(serviceDomain);
69
+ _serviceAddress[serviceDomain] = serviceAddress;
70
+ }
71
+
72
+ /// @dev Use this method to authorize the specified domain to access the service domain.
73
+ function _authorizeForService(ObjectType serviceDomain, ObjectType authorizedDomain)
74
+ internal
75
+ returns (IAccess.FunctionInfo[] storage authorizatedFunctions)
76
+ {
77
+ _authorizedDomains[serviceDomain].push(authorizedDomain);
78
+ return _authorizedFunctions[serviceDomain][authorizedDomain];
79
+ }
80
+
81
+ /// @dev Use this method to authorize a specific function authorization
82
+ function _authorize(IAccess.FunctionInfo[] storage functions, bytes4 selector, string memory name) internal {
83
+ functions.push(
84
+ IAccess.FunctionInfo({
85
+ selector: SelectorLib.toSelector(selector),
86
+ name: StrLib.toStr(name),
87
+ createdAt: TimestampLib.blockTimestamp()}));
88
+ }
89
+ }
90
+
@@ -0,0 +1,149 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {COMPONENT, DISTRIBUTION} from "../type/ObjectType.sol";
5
+ import {Distribution} from "./Distribution.sol";
6
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
7
+ import {IDistributionService} from "./IDistributionService.sol";
8
+ import {IProductService} from "../product/IProductService.sol";
9
+ import {NftId, NftIdLib} from "../type/NftId.sol";
10
+ import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
11
+ import {Fee, FeeLib} from "../type/Fee.sol";
12
+ import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
13
+ import {IComponentService} from "../shared/IComponentService.sol";
14
+ import {IDistribution} from "../instance/module/IDistribution.sol";
15
+ import {IDistributionComponent} from "./IDistributionComponent.sol";
16
+ import {IRegistry} from "../registry/IRegistry.sol";
17
+ import {TokenHandler} from "../shared/TokenHandler.sol";
18
+ import {InstanceReader} from "../instance/InstanceReader.sol";
19
+ import {UFixed} from "../type/UFixed.sol";
20
+ import {DistributorType} from "../type/DistributorType.sol";
21
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
22
+ import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
23
+
24
+
25
+ contract BasicDistribution is
26
+ Distribution
27
+ {
28
+
29
+ function setFees(
30
+ Fee memory distributionFee,
31
+ Fee memory minDistributionOwnerFee
32
+ )
33
+ external
34
+ virtual
35
+ onlyOwner()
36
+ restricted()
37
+ {
38
+ _setFees(
39
+ distributionFee,
40
+ minDistributionOwnerFee);
41
+ }
42
+
43
+
44
+ function createDistributorType(
45
+ string memory name,
46
+ UFixed minDiscountPercentage,
47
+ UFixed maxDiscountPercentage,
48
+ UFixed commissionPercentage,
49
+ uint32 maxReferralCount,
50
+ uint32 maxReferralLifetime,
51
+ bool allowSelfReferrals,
52
+ bool allowRenewals,
53
+ bytes memory data
54
+ )
55
+ external
56
+ virtual
57
+ onlyOwner()
58
+ restricted()
59
+ returns (DistributorType distributorType)
60
+ {
61
+ return _createDistributorType(
62
+ name,
63
+ minDiscountPercentage,
64
+ maxDiscountPercentage,
65
+ commissionPercentage,
66
+ maxReferralCount,
67
+ maxReferralLifetime,
68
+ allowSelfReferrals,
69
+ allowRenewals,
70
+ data);
71
+ }
72
+
73
+ function createDistributor(
74
+ address distributor,
75
+ DistributorType distributorType,
76
+ bytes memory data
77
+ )
78
+ external
79
+ virtual
80
+ onlyOwner()
81
+ restricted()
82
+ returns(NftId distributorNftId)
83
+ {
84
+ return _createDistributor(distributor, distributorType, data);
85
+ }
86
+
87
+ function updateDistributorType(
88
+ NftId distributorNftId,
89
+ DistributorType distributorType,
90
+ bytes memory data
91
+ )
92
+ external
93
+ virtual
94
+ onlyOwner()
95
+ restricted()
96
+ {
97
+ _updateDistributorType(distributorNftId, distributorType, data);
98
+ }
99
+
100
+ /**
101
+ * @dev lets distributors create referral codes.
102
+ * referral codes need to be unique
103
+ */
104
+ function createReferral(
105
+ string memory code,
106
+ UFixed discountPercentage,
107
+ uint32 maxReferrals,
108
+ Timestamp expiryAt,
109
+ bytes memory data
110
+ )
111
+ external
112
+ virtual
113
+ onlyDistributor()
114
+ restricted()
115
+ returns (ReferralId referralId)
116
+ {
117
+ NftId distributorNftId = getDistributorNftId(msg.sender);
118
+ return _createReferral(
119
+ distributorNftId,
120
+ code,
121
+ discountPercentage,
122
+ maxReferrals,
123
+ expiryAt,
124
+ data); // data
125
+ }
126
+
127
+ function _initializeBasicDistribution(
128
+ address registry,
129
+ NftId instanceNftId,
130
+ IAuthorization authorization,
131
+ address initialOwner,
132
+ string memory name,
133
+ address token
134
+ )
135
+ internal
136
+ virtual
137
+ onlyInitializing()
138
+ {
139
+ _initializeDistribution(
140
+ registry,
141
+ instanceNftId,
142
+ authorization,
143
+ initialOwner,
144
+ name,
145
+ token,
146
+ "", // registry data
147
+ ""); // component specifc data
148
+ }
149
+ }
@@ -0,0 +1,43 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Authorization} from "../authorization/Authorization.sol";
5
+ import {BasicDistribution} from "./BasicDistribution.sol";
6
+ import {DISTRIBUTION} from "../type/ObjectType.sol";
7
+ import {IAccess} from "../authorization/IAccess.sol";
8
+ import {PUBLIC_ROLE} from "../../contracts/type/RoleId.sol";
9
+ import {RoleId} from "../type/RoleId.sol";
10
+
11
+
12
+ contract BasicDistributionAuthorization
13
+ is Authorization
14
+ {
15
+
16
+ constructor(string memory distributionlName)
17
+ Authorization(distributionlName)
18
+ {}
19
+
20
+ function _setupTargets()
21
+ internal
22
+ virtual override
23
+ {
24
+ _addComponentTargetWithRole(DISTRIBUTION()); // basic target
25
+ }
26
+
27
+
28
+ function _setupTargetAuthorizations()
29
+ internal
30
+ virtual override
31
+ {
32
+ IAccess.FunctionInfo[] storage functions;
33
+
34
+ // authorize public role (open access to any account, only allows to lock target)
35
+ functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
36
+ _authorize(functions, BasicDistribution.setFees.selector, "setFees");
37
+ _authorize(functions, BasicDistribution.createDistributorType.selector, "createDistributorType");
38
+ _authorize(functions, BasicDistribution.createDistributor.selector, "createDistributor");
39
+ _authorize(functions, BasicDistribution.updateDistributorType.selector, "updateDistributorType");
40
+ _authorize(functions, BasicDistribution.createReferral.selector, "createReferral");
41
+ }
42
+ }
43
+
@@ -0,0 +1,283 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {COMPONENT, DISTRIBUTION} from "../type/ObjectType.sol";
5
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
6
+ import {IDistributionService} from "./IDistributionService.sol";
7
+ import {IProductService} from "../product/IProductService.sol";
8
+ import {NftId, NftIdLib} from "../type/NftId.sol";
9
+ import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
10
+ import {Fee, FeeLib} from "../type/Fee.sol";
11
+ import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
12
+ import {IComponentService} from "../shared/IComponentService.sol";
13
+ import {IDistribution} from "../instance/module/IDistribution.sol";
14
+ import {IDistributionComponent} from "./IDistributionComponent.sol";
15
+ import {IRegistry} from "../registry/IRegistry.sol";
16
+ import {TokenHandler} from "../shared/TokenHandler.sol";
17
+ import {InstanceReader} from "../instance/InstanceReader.sol";
18
+ import {UFixed} from "../type/UFixed.sol";
19
+ import {DistributorType} from "../type/DistributorType.sol";
20
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
21
+ import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
22
+
23
+
24
+ abstract contract Distribution is
25
+ InstanceLinkedComponent,
26
+ IDistributionComponent
27
+ {
28
+ // keccak256(abi.encode(uint256(keccak256("etherisc.storage.Distribution")) - 1)) & ~bytes32(uint256(0xff));
29
+ bytes32 public constant DISTRIBUTION_STORAGE_LOCATION_V1 = 0xaab7c5ea03d290056d6c060e0833d3ebcbe647f7694616a2ec52738a64b2f900;
30
+
31
+ struct DistributionStorage {
32
+ IComponentService _componentService;
33
+ IDistributionService _distributionService;
34
+ mapping(address distributor => NftId distributorNftId) _distributorNftId;
35
+ }
36
+
37
+ modifier onlyDistributor() {
38
+ if (!isDistributor(msg.sender)) {
39
+ revert ErrorDistributionNotDistributor(msg.sender);
40
+ }
41
+ _;
42
+ }
43
+
44
+
45
+ function register()
46
+ external
47
+ virtual
48
+ onlyOwner()
49
+ {
50
+ _getDistributionStorage()._componentService.registerDistribution();
51
+ }
52
+
53
+
54
+ function isDistributor(address candidate)
55
+ public
56
+ view
57
+ returns (bool)
58
+ {
59
+ DistributionStorage storage $ = _getDistributionStorage();
60
+ return $._distributorNftId[candidate].gtz();
61
+ }
62
+
63
+
64
+ function getDistributorNftId(address distributor)
65
+ public
66
+ view
67
+ returns (NftId distributorNftId)
68
+ {
69
+ DistributionStorage storage $ = _getDistributionStorage();
70
+ return $._distributorNftId[distributor];
71
+ }
72
+
73
+
74
+ function getDiscountPercentage(string memory referralCode)
75
+ external
76
+ view
77
+ returns (
78
+ UFixed discountPercentage,
79
+ ReferralStatus status
80
+ )
81
+ {
82
+ ReferralId referralId = getReferralId(referralCode);
83
+ return _getInstanceReader().getDiscountPercentage(referralId);
84
+ }
85
+
86
+
87
+ function getReferralId(
88
+ string memory referralCode
89
+ )
90
+ public
91
+ view
92
+ returns (ReferralId referralId)
93
+ {
94
+ return ReferralLib.toReferralId(
95
+ getNftId(),
96
+ referralCode);
97
+ }
98
+
99
+
100
+ function calculateRenewalFeeAmount(
101
+ ReferralId referralId,
102
+ uint256 netPremiumAmount
103
+ )
104
+ external
105
+ view
106
+ virtual override
107
+ returns (uint256 feeAmount)
108
+ {
109
+ // default is no fees
110
+ return 0 * netPremiumAmount;
111
+ }
112
+
113
+
114
+ function processRenewal(
115
+ ReferralId referralId,
116
+ uint256 feeAmount
117
+ )
118
+ external
119
+ virtual
120
+ restricted()
121
+ {
122
+ // default is no action
123
+ }
124
+
125
+ /// @dev Returns true iff the component needs to be called when selling/renewing policis
126
+ function isVerifying() external pure returns (bool verifying) {
127
+ return true;
128
+ }
129
+
130
+
131
+ function _initializeDistribution(
132
+ address registry,
133
+ NftId instanceNftId,
134
+ IAuthorization authorization,
135
+ address initialOwner,
136
+ string memory name,
137
+ address token,
138
+ bytes memory registryData, // writeonly data that will saved in the object info record of the registry
139
+ bytes memory componentData // component specifidc data
140
+ )
141
+ internal
142
+ virtual
143
+ onlyInitializing()
144
+ {
145
+ _initializeInstanceLinkedComponent(
146
+ registry,
147
+ instanceNftId,
148
+ name,
149
+ token,
150
+ DISTRIBUTION(),
151
+ authorization,
152
+ true,
153
+ initialOwner,
154
+ registryData,
155
+ componentData);
156
+
157
+ DistributionStorage storage $ = _getDistributionStorage();
158
+ $._distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
159
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
160
+
161
+ registerInterface(type(IDistributionComponent).interfaceId);
162
+ }
163
+
164
+ /// @dev Sets the distribution fees to the provided values.
165
+ function _setFees(
166
+ Fee memory distributionFee,
167
+ Fee memory minDistributionOwnerFee
168
+ )
169
+ internal
170
+ virtual
171
+ {
172
+ _getDistributionStorage()._componentService.setDistributionFees(
173
+ distributionFee,
174
+ minDistributionOwnerFee);
175
+ }
176
+
177
+ /// @dev Creates a new distributor type using the provided parameters.
178
+ function _createDistributorType(
179
+ string memory name,
180
+ UFixed minDiscountPercentage,
181
+ UFixed maxDiscountPercentage,
182
+ UFixed commissionPercentage,
183
+ uint32 maxReferralCount,
184
+ uint32 maxReferralLifetime,
185
+ bool allowSelfReferrals,
186
+ bool allowRenewals,
187
+ bytes memory data
188
+ )
189
+ internal
190
+ virtual
191
+ returns (DistributorType distributorType)
192
+ {
193
+ DistributionStorage storage $ = _getDistributionStorage();
194
+ distributorType = $._distributionService.createDistributorType(
195
+ name,
196
+ minDiscountPercentage,
197
+ maxDiscountPercentage,
198
+ commissionPercentage,
199
+ maxReferralCount,
200
+ maxReferralLifetime,
201
+ allowSelfReferrals,
202
+ allowRenewals,
203
+ data);
204
+ }
205
+
206
+ /// @dev Turns the provided account into a new distributor of the specified type.
207
+ function _createDistributor(
208
+ address distributor,
209
+ DistributorType distributorType,
210
+ bytes memory data
211
+ )
212
+ internal
213
+ virtual
214
+ returns(NftId distributorNftId)
215
+ {
216
+ DistributionStorage storage $ = _getDistributionStorage();
217
+ if($._distributorNftId[distributor].gtz()) {
218
+ revert ErrorDistributionAlreadyDistributor(distributor, $._distributorNftId[distributor]);
219
+ }
220
+
221
+ distributorNftId = $._distributionService.createDistributor(
222
+ distributor,
223
+ distributorType,
224
+ data);
225
+
226
+ $._distributorNftId[distributor] = distributorNftId;
227
+ }
228
+
229
+ /// @dev Uptates the distributor type for the specified distributor.
230
+ function _updateDistributorType(
231
+ NftId distributorNftId,
232
+ DistributorType distributorType,
233
+ bytes memory data
234
+ )
235
+ internal
236
+ virtual
237
+ {
238
+ DistributionStorage storage $ = _getDistributionStorage();
239
+ // TODO re-enable once implemented
240
+ // $._distributionService.updateDistributorType(
241
+ // distributorNftId,
242
+ // distributorType,
243
+ // data);
244
+ }
245
+
246
+ /// @dev Create a new referral code for the provided distributor.
247
+ function _createReferral(
248
+ NftId distributorNftId,
249
+ string memory code,
250
+ UFixed discountPercentage,
251
+ uint32 maxReferrals,
252
+ Timestamp expiryAt,
253
+ bytes memory data
254
+ )
255
+ internal
256
+ virtual
257
+ returns (ReferralId referralId)
258
+ {
259
+ DistributionStorage storage $ = _getDistributionStorage();
260
+ referralId = $._distributionService.createReferral(
261
+ distributorNftId,
262
+ code,
263
+ discountPercentage,
264
+ maxReferrals,
265
+ expiryAt,
266
+ data);
267
+ }
268
+
269
+
270
+ function _nftTransferFrom(address from, address to, uint256 tokenId) internal virtual override {
271
+ // keep track of distributor nft owner
272
+ emit LogDistributorUpdated(to, msg.sender);
273
+ DistributionStorage storage $ = _getDistributionStorage();
274
+ $._distributorNftId[from] = NftIdLib.zero();
275
+ $._distributorNftId[to] = NftIdLib.toNftId(tokenId);
276
+ }
277
+
278
+ function _getDistributionStorage() private pure returns (DistributionStorage storage $) {
279
+ assembly {
280
+ $.slot := DISTRIBUTION_STORAGE_LOCATION_V1
281
+ }
282
+ }
283
+ }