@etherisc/gif-next 0.0.2-a733491-751 → 0.0.2-a755cba-454

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