@etherisc/gif-next 0.0.2-e9148e0-933 → 0.0.2-e91c6be-472

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