@etherisc/gif-next 0.0.2-b8e869c-076 → 0.0.2-b95860d-028

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 (437) hide show
  1. package/README.md +1 -1
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +105 -65
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
  7. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -32
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  14. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  19. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +148 -222
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +88 -186
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +174 -237
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +99 -111
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +75 -57
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +78 -31
  32. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  33. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  34. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1551 -0
  36. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
  38. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2090 -0
  40. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  42. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  44. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  45. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1484 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1244 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1605 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2108 -0
  52. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  53. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  54. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +48 -31
  56. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +29 -84
  58. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  59. package/artifacts/contracts/instance/Instance.sol/Instance.json +51 -105
  60. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +165 -138
  62. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
  64. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  65. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +446 -81
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +77 -242
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -87
  70. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +335 -126
  72. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  73. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  74. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  76. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  77. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  78. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  79. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  80. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  81. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  86. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  87. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  88. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  89. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +130 -204
  90. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  91. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
  92. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  94. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +71 -53
  95. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  96. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
  97. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  98. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +84 -182
  99. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  100. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
  101. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
  103. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  104. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +107 -190
  105. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  106. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
  107. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  108. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +184 -185
  109. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +120 -104
  111. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  112. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +53 -0
  113. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  114. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +96 -50
  115. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  116. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +200 -135
  117. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  118. package/artifacts/contracts/pool/Pool.sol/Pool.json +107 -177
  119. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  120. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +296 -296
  121. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +102 -94
  123. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  124. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +71 -152
  125. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -84
  127. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  128. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +143 -200
  129. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  130. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
  131. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  132. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +288 -188
  133. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  134. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +119 -103
  135. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  136. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +29 -0
  137. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  138. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +161 -7
  139. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  140. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +141 -16
  141. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  142. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
  143. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  144. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +129 -70
  145. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  146. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +29 -0
  147. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  148. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +257 -218
  149. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +110 -110
  151. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  152. package/artifacts/contracts/product/PricingService.sol/PricingService.json +199 -309
  153. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  154. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +96 -120
  155. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  156. package/artifacts/contracts/product/Product.sol/Product.json +143 -200
  157. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  158. package/artifacts/contracts/product/RiskService.sol/RiskService.json +65 -138
  159. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  160. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +69 -77
  161. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  162. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  163. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  164. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +286 -34
  165. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  166. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
  167. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  168. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +0 -18
  169. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  170. package/artifacts/contracts/registry/Registry.sol/Registry.json +492 -95
  171. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  172. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +283 -143
  173. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  174. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
  175. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  176. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -75
  177. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  178. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  179. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  180. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +129 -221
  181. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  182. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  183. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  184. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  185. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  186. package/artifacts/contracts/shared/Component.sol/Component.json +63 -157
  187. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  188. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +351 -263
  189. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  190. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +120 -110
  191. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  192. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
  193. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  194. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  195. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  196. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +50 -28
  197. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +321 -19
  199. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  200. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +71 -53
  201. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  203. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  204. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  205. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  206. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  207. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  208. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  209. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  210. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
  211. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  212. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  213. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  214. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  215. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  216. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  217. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +84 -182
  218. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  219. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  220. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  221. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  222. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  223. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  224. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  225. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  226. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  227. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  228. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  229. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
  230. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  231. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  232. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  233. package/artifacts/contracts/shared/Service.sol/Service.json +47 -112
  234. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  235. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  236. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  237. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
  238. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  239. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +77 -29
  240. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  241. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
  242. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  243. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +83 -30
  244. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  245. package/artifacts/contracts/staking/Staking.sol/Staking.json +166 -206
  246. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  247. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  248. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  249. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +102 -87
  250. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  251. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
  252. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  253. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +71 -165
  254. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  255. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -79
  256. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  257. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +169 -128
  258. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  259. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -23
  260. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  261. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/Amount.sol/AmountLib.json +32 -8
  263. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  266. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  268. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
  270. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  271. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  272. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  274. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  275. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  276. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  278. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  280. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  282. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  284. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  286. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  288. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  290. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  294. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  297. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  299. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
  301. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  303. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  304. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  305. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +55 -70
  306. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  307. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  308. package/contracts/authorization/AccessAdmin.sol +64 -59
  309. package/contracts/authorization/Authorization.sol +111 -39
  310. package/contracts/authorization/IAccess.sol +1 -0
  311. package/contracts/authorization/IAccessAdmin.sol +4 -3
  312. package/contracts/authorization/IAuthorization.sol +13 -7
  313. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  314. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  315. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  316. package/contracts/distribution/BasicDistribution.sol +2 -1
  317. package/contracts/distribution/Distribution.sol +5 -15
  318. package/contracts/distribution/DistributionService.sol +79 -47
  319. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  320. package/contracts/distribution/IDistributionService.sol +8 -2
  321. package/contracts/examples/fire/DamageLevel.sol +59 -0
  322. package/contracts/examples/fire/FirePool.sol +75 -0
  323. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  324. package/contracts/examples/fire/FireProduct.sol +412 -0
  325. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  326. package/contracts/examples/fire/FireUSD.sol +26 -0
  327. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  328. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  329. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  330. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  331. package/contracts/instance/IInstance.sol +4 -1
  332. package/contracts/instance/IInstanceService.sol +0 -20
  333. package/contracts/instance/Instance.sol +21 -12
  334. package/contracts/instance/InstanceAdmin.sol +22 -30
  335. package/contracts/instance/InstanceAuthorizationV3.sol +11 -21
  336. package/contracts/instance/InstanceReader.sol +106 -19
  337. package/contracts/instance/InstanceService.sol +24 -81
  338. package/contracts/instance/InstanceServiceManager.sol +6 -7
  339. package/contracts/instance/InstanceStore.sol +11 -1
  340. package/contracts/instance/base/ObjectLifecycle.sol +7 -1
  341. package/contracts/instance/module/IComponents.sol +10 -5
  342. package/contracts/instance/module/IPolicy.sol +23 -23
  343. package/contracts/oracle/BasicOracle.sol +0 -1
  344. package/contracts/oracle/IOracleService.sol +2 -1
  345. package/contracts/oracle/Oracle.sol +6 -16
  346. package/contracts/oracle/OracleService.sol +47 -34
  347. package/contracts/oracle/OracleServiceManager.sol +6 -6
  348. package/contracts/pool/BasicPool.sol +14 -26
  349. package/contracts/pool/BasicPoolAuthorization.sol +0 -1
  350. package/contracts/pool/BundleService.sol +40 -15
  351. package/contracts/pool/BundleServiceManager.sol +6 -6
  352. package/contracts/pool/IBundleService.sol +9 -0
  353. package/contracts/pool/IPoolComponent.sol +18 -8
  354. package/contracts/pool/IPoolService.sol +24 -20
  355. package/contracts/pool/Pool.sol +53 -46
  356. package/contracts/pool/PoolService.sol +106 -122
  357. package/contracts/pool/PoolServiceManager.sol +4 -4
  358. package/contracts/product/ApplicationService.sol +13 -12
  359. package/contracts/product/ApplicationServiceManager.sol +4 -4
  360. package/contracts/product/BasicProduct.sol +7 -6
  361. package/contracts/product/BasicProductAuthorization.sol +0 -1
  362. package/contracts/product/ClaimService.sol +268 -93
  363. package/contracts/product/ClaimServiceManager.sol +4 -4
  364. package/contracts/product/IClaimService.sol +30 -7
  365. package/contracts/product/IPolicyService.sol +16 -20
  366. package/contracts/product/IPricingService.sol +10 -10
  367. package/contracts/product/IProductComponent.sol +23 -4
  368. package/contracts/product/PolicyService.sol +197 -98
  369. package/contracts/product/PolicyServiceManager.sol +4 -4
  370. package/contracts/product/PricingService.sol +45 -52
  371. package/contracts/product/PricingServiceManager.sol +3 -3
  372. package/contracts/product/Product.sol +106 -61
  373. package/contracts/product/RiskService.sol +4 -5
  374. package/contracts/product/RiskServiceManager.sol +4 -4
  375. package/contracts/registry/ChainNft.sol +65 -36
  376. package/contracts/registry/IRegistry.sol +55 -18
  377. package/contracts/registry/IRegistryService.sol +5 -12
  378. package/contracts/registry/ITransferInterceptor.sol +0 -1
  379. package/contracts/registry/Registry.sol +342 -201
  380. package/contracts/registry/RegistryAdmin.sol +124 -50
  381. package/contracts/registry/RegistryService.sol +35 -46
  382. package/contracts/registry/RegistryServiceManager.sol +2 -2
  383. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  384. package/contracts/registry/ReleaseRegistry.sol +204 -188
  385. package/contracts/registry/ServiceAuthorizationV3.sol +16 -22
  386. package/contracts/shared/Component.sol +27 -19
  387. package/contracts/shared/ComponentService.sol +231 -137
  388. package/contracts/shared/ComponentServiceManager.sol +8 -5
  389. package/contracts/shared/ComponentVerifyingService.sol +23 -14
  390. package/contracts/shared/ContractLib.sol +38 -0
  391. package/contracts/shared/IComponent.sol +6 -2
  392. package/contracts/shared/IComponentService.sol +25 -13
  393. package/contracts/shared/IInstanceLinkedComponent.sol +3 -11
  394. package/contracts/shared/ILifecycle.sol +3 -1
  395. package/contracts/shared/INftOwnable.sol +2 -0
  396. package/contracts/shared/IPolicyHolder.sol +12 -22
  397. package/contracts/shared/IRegisterable.sol +11 -0
  398. package/contracts/shared/InitializableERC165.sol +2 -2
  399. package/contracts/shared/InstanceLinkedComponent.sol +72 -31
  400. package/contracts/shared/KeyValueStore.sol +1 -1
  401. package/contracts/shared/Lifecycle.sol +15 -4
  402. package/contracts/shared/NftOwnable.sol +23 -7
  403. package/contracts/shared/PolicyHolder.sol +15 -52
  404. package/contracts/shared/Registerable.sol +19 -9
  405. package/contracts/shared/RegistryLinked.sol +3 -2
  406. package/contracts/shared/Service.sol +20 -18
  407. package/contracts/staking/IStaking.sol +2 -1
  408. package/contracts/staking/IStakingService.sol +0 -3
  409. package/contracts/staking/StakeManagerLib.sol +18 -0
  410. package/contracts/staking/Staking.sol +8 -8
  411. package/contracts/staking/StakingManager.sol +8 -6
  412. package/contracts/staking/StakingReader.sol +12 -5
  413. package/contracts/staking/StakingService.sol +3 -17
  414. package/contracts/staking/StakingServiceManager.sol +2 -2
  415. package/contracts/staking/TargetManagerLib.sol +7 -3
  416. package/contracts/type/Amount.sol +15 -0
  417. package/contracts/type/ClaimId.sol +6 -1
  418. package/contracts/type/NftId.sol +1 -0
  419. package/contracts/type/ObjectType.sol +16 -11
  420. package/contracts/type/PayoutId.sol +10 -10
  421. package/contracts/type/RiskId.sol +15 -1
  422. package/contracts/type/RoleId.sol +0 -12
  423. package/contracts/type/Seconds.sol +8 -0
  424. package/contracts/type/StateId.sol +15 -1
  425. package/contracts/type/UFixed.sol +4 -0
  426. package/contracts/upgradeability/ProxyManager.sol +68 -34
  427. package/contracts/upgradeability/Versionable.sol +2 -2
  428. package/package.json +2 -1
  429. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  430. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  431. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  432. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  433. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  434. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  435. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  436. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  437. package/contracts/shared/InitializableCustom.sol +0 -177
@@ -1,6 +1,8 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+
4
6
  import {IAccess} from "../authorization/IAccess.sol";
5
7
  import {ObjectType} from "../type/ObjectType.sol";
6
8
  import {IServiceAuthorization} from "./IServiceAuthorization.sol";
@@ -10,30 +12,36 @@ import {TimestampLib} from "../type/Timestamp.sol";
10
12
  import {VersionPart, VersionPartLib} from "../type/Version.sol";
11
13
 
12
14
  /// @dev Base contract for release specific service authorization contracts.
13
- contract ServiceAuthorization
14
- is IServiceAuthorization
15
+ contract ServiceAuthorization is
16
+ IServiceAuthorization
15
17
  {
16
- uint256 public constant GIF_VERSION_3 = 3;
18
+ uint256 public constant COMMIT_HASH_LENGTH = 40;
19
+ uint256 public constant GIF_INITIAL_VERSION = 3;
17
20
 
18
- string private _commitHash;
21
+ uint256 public immutable VERSION;
22
+ string public COMMIT_HASH;
19
23
 
20
24
  ObjectType[] internal _serviceDomains;
21
25
  mapping(ObjectType domain => address service) internal _serviceAddress;
22
26
  mapping(ObjectType domain => ObjectType[] authorizedDomains) internal _authorizedDomains;
23
27
  mapping(ObjectType domain => mapping(ObjectType authorizedDomain => IAccess.FunctionInfo[] functions)) internal _authorizedFunctions;
24
28
 
25
- constructor(string memory commitHash) {
26
- _commitHash = commitHash;
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;
27
35
  _setupDomains();
28
36
  _setupDomainAuthorizations();
29
37
  }
30
38
 
31
39
  function getCommitHash() external view returns(string memory commitHash) {
32
- return _commitHash;
40
+ return COMMIT_HASH;
33
41
  }
34
42
 
35
43
  function getRelease() external view returns(VersionPart release) {
36
- return VersionPartLib.toVersionPart(GIF_VERSION_3);
44
+ return VersionPartLib.toVersionPart(VERSION);
37
45
  }
38
46
 
39
47
  function getServiceDomains() external view returns(ObjectType[] memory serviceDomains) {
@@ -56,6 +64,15 @@ contract ServiceAuthorization
56
64
  return _authorizedFunctions[serviceDomain][authorizedDomain];
57
65
  }
58
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
+
59
76
  /// @dev Overwrite this function for a specific realease.
60
77
  function _setupDomains() internal virtual {}
61
78
 
@@ -86,5 +103,4 @@ contract ServiceAuthorization
86
103
  name: StrLib.toStr(name),
87
104
  createdAt: TimestampLib.blockTimestamp()}));
88
105
  }
89
- }
90
-
106
+ }
@@ -2,6 +2,7 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Distribution} from "./Distribution.sol";
5
+ import {DISTRIBUTOR} from "../type/ObjectType.sol";
5
6
  import {IAuthorization} from "../authorization/IAuthorization.sol";
6
7
  import {NftId} from "../type/NftId.sol";
7
8
  import {ReferralId} from "../type/Referral.sol";
@@ -81,6 +82,7 @@ contract BasicDistribution is
81
82
  external
82
83
  virtual
83
84
  onlyOwner()
85
+ onlyNftOfType(distributorNftId, DISTRIBUTOR())
84
86
  restricted()
85
87
  {
86
88
  _updateDistributorType(distributorNftId, distributorType, data);
@@ -132,7 +134,6 @@ contract BasicDistribution is
132
134
  initialOwner,
133
135
  name,
134
136
  token,
135
- "", // registry data
136
137
  ""); // component specifc data
137
138
  }
138
139
  }
@@ -2,7 +2,7 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount} from "../type/Amount.sol";
5
- import {COMPONENT, DISTRIBUTION} from "../type/ObjectType.sol";
5
+ import {COMPONENT, DISTRIBUTION, DISTRIBUTOR} from "../type/ObjectType.sol";
6
6
  import {IAuthorization} from "../authorization/IAuthorization.sol";
7
7
  import {IDistributionService} from "./IDistributionService.sol";
8
8
  import {NftId, NftIdLib} from "../type/NftId.sol";
@@ -36,15 +36,6 @@ abstract contract Distribution is
36
36
  _;
37
37
  }
38
38
 
39
- function register()
40
- external
41
- virtual
42
- onlyOwner()
43
- {
44
- _getDistributionStorage()._componentService.registerDistribution();
45
- _approveTokenHandler(type(uint256).max);
46
- }
47
-
48
39
 
49
40
  function isDistributor(address candidate)
50
41
  public
@@ -128,6 +119,7 @@ abstract contract Distribution is
128
119
  virtual
129
120
  restricted()
130
121
  onlyDistributor()
122
+ onlyNftOfType(distributorNftId, DISTRIBUTOR())
131
123
  onlyNftOwner(distributorNftId)
132
124
  returns (Amount withdrawnAmount)
133
125
  {
@@ -136,12 +128,11 @@ abstract contract Distribution is
136
128
 
137
129
  function _initializeDistribution(
138
130
  address registry,
139
- NftId instanceNftId,
131
+ NftId productNftId,
140
132
  IAuthorization authorization,
141
133
  address initialOwner,
142
134
  string memory name,
143
135
  address token,
144
- bytes memory registryData, // writeonly data that will saved in the object info record of the registry
145
136
  bytes memory componentData // component specifidc data
146
137
  )
147
138
  internal
@@ -150,21 +141,20 @@ abstract contract Distribution is
150
141
  {
151
142
  _initializeInstanceLinkedComponent(
152
143
  registry,
153
- instanceNftId,
144
+ productNftId,
154
145
  name,
155
146
  token,
156
147
  DISTRIBUTION(),
157
148
  authorization,
158
149
  true,
159
150
  initialOwner,
160
- registryData,
161
151
  componentData);
162
152
 
163
153
  DistributionStorage storage $ = _getDistributionStorage();
164
154
  $._distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
165
155
  $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
166
156
 
167
- registerInterface(type(IDistributionComponent).interfaceId);
157
+ _registerInterface(type(IDistributionComponent).interfaceId);
168
158
  }
169
159
 
170
160
  /// @dev Sets the distribution fees to the provided values.
@@ -12,7 +12,6 @@ import {IPolicy} from "../instance/module/IPolicy.sol";
12
12
 
13
13
  import {Amount, AmountLib} from "../type/Amount.sol";
14
14
  import {NftId, NftIdLib} from "../type/NftId.sol";
15
- import {Fee, FeeLib} from "../type/Fee.sol";
16
15
  import {KEEP_STATE} from "../type/StateId.sol";
17
16
  import {ObjectType, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
18
17
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
@@ -38,21 +37,21 @@ contract DistributionService is
38
37
  bytes memory data
39
38
  )
40
39
  internal
41
- initializer
42
40
  virtual override
41
+ initializer()
43
42
  {
44
- address initialOwner;
45
- address registryAddress;
46
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
47
- // TODO while DistributionService is not deployed in DistributionServiceManager constructor
48
- // owner is DistributionServiceManager deployer
49
- initializeService(registryAddress, address(0), owner);
43
+ (
44
+ address registryAddress,
45
+ address authority
46
+ ) = abi.decode(data, (address, address));
47
+
48
+ _initializeService(registryAddress, authority, owner);
50
49
 
51
50
  _componentService = IComponentService(_getServiceAddress(COMPONENT()));
52
51
  _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
53
52
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
54
53
 
55
- registerInterface(type(IDistributionService).interfaceId);
54
+ _registerInterface(type(IDistributionService).interfaceId);
56
55
  }
57
56
 
58
57
 
@@ -74,7 +73,7 @@ contract DistributionService is
74
73
  InstanceReader instanceReader = instance.getInstanceReader();
75
74
 
76
75
  {
77
- NftId productNftId = _getProductNftId(instanceReader, distributionNftId);
76
+ NftId productNftId = _getProductNftId(distributionNftId);
78
77
  IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
79
78
 
80
79
  UFixed variableDistributionFees = productInfo.distributionFee.fractionalFee;
@@ -164,6 +163,7 @@ contract DistributionService is
164
163
  )
165
164
  external
166
165
  virtual
166
+ onlyNftOfType(distributorNftId, DISTRIBUTOR())
167
167
  returns (ReferralId referralId)
168
168
  {
169
169
  (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
@@ -175,66 +175,91 @@ contract DistributionService is
175
175
  revert ErrorIDistributionServiceExpirationInvalid(expiryAt);
176
176
  }
177
177
 
178
- InstanceReader instanceReader = instance.getInstanceReader();
179
- DistributorType distributorType = instanceReader.getDistributorInfo(distributorNftId).distributorType;
180
- IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
178
+ {
179
+ InstanceReader instanceReader = instance.getInstanceReader();
180
+ DistributorType distributorType = instanceReader.getDistributorInfo(distributorNftId).distributorType;
181
+ IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
181
182
 
182
- if (distributorTypeData.maxReferralCount < maxReferrals) {
183
- revert ErrorIDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
184
- }
185
- if (distributorTypeData.minDiscountPercentage > discountPercentage) {
186
- revert ErrorIDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage.toInt(), discountPercentage.toInt());
187
- }
188
- if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
189
- revert ErrorIDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage.toInt(), discountPercentage.toInt());
190
- }
191
- if (expiryAt.toInt() - TimestampLib.blockTimestamp().toInt() > distributorTypeData.maxReferralLifetime) {
192
- revert ErrorIDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt.toInt());
183
+ if (distributorTypeData.maxReferralCount < maxReferrals) {
184
+ revert ErrorIDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
185
+ }
186
+ if (distributorTypeData.minDiscountPercentage > discountPercentage) {
187
+ revert ErrorIDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage.toInt(), discountPercentage.toInt());
188
+ }
189
+ if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
190
+ revert ErrorIDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage.toInt(), discountPercentage.toInt());
191
+ }
192
+ if (expiryAt.toInt() - TimestampLib.blockTimestamp().toInt() > distributorTypeData.maxReferralLifetime) {
193
+ revert ErrorIDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt.toInt());
194
+ }
193
195
  }
194
196
 
195
- referralId = ReferralLib.toReferralId(distributionNftId, code);
196
- IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo(
197
- distributorNftId,
198
- code,
199
- discountPercentage,
200
- maxReferrals,
201
- 0, // used referrals
202
- expiryAt,
203
- data
204
- );
205
-
206
- instance.getInstanceStore().createReferral(referralId, info);
207
- return referralId;
197
+ {
198
+ referralId = ReferralLib.toReferralId(distributionNftId, code);
199
+ IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo(
200
+ distributorNftId,
201
+ code,
202
+ discountPercentage,
203
+ maxReferrals,
204
+ 0, // used referrals
205
+ expiryAt,
206
+ data
207
+ );
208
+
209
+ instance.getInstanceStore().createReferral(referralId, info);
210
+ }
208
211
  }
209
212
 
213
+ /// @inheritdoc IDistributionService
214
+ function processReferral(
215
+ NftId distributionNftId,
216
+ ReferralId referralId
217
+ )
218
+ external
219
+ virtual
220
+ restricted()
221
+ onlyNftOfType(distributionNftId, DISTRIBUTION())
222
+ {
223
+ if (referralIsValid(distributionNftId, referralId)) {
224
+ IRegistry registry = getRegistry();
225
+ IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
226
+ IInstance instance = _getInstanceForComponent(registry, distributionInfo);
227
+
228
+ // update book keeping for referral info
229
+ IDistribution.ReferralInfo memory referralInfo = instance.getInstanceReader().getReferralInfo(referralId);
230
+ referralInfo.usedReferrals += 1;
231
+ instance.getInstanceStore().updateReferral(referralId, referralInfo, KEEP_STATE());
232
+ }
233
+ }
210
234
 
211
235
  function processSale(
212
236
  NftId distributionNftId, // assume always of distribution type
213
237
  ReferralId referralId,
214
- IPolicy.Premium memory premium
238
+ IPolicy.PremiumInfo memory premium
215
239
  )
216
240
  external
217
241
  virtual
218
- restricted
242
+ restricted()
243
+ onlyNftOfType(distributionNftId, DISTRIBUTION())
219
244
  {
220
- IInstance instance = _getInstanceForDistribution(distributionNftId);
245
+ IRegistry registry = getRegistry();
246
+ IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
247
+ IInstance instance = _getInstanceForComponent(registry, distributionInfo);
221
248
  InstanceReader reader = instance.getInstanceReader();
222
249
  InstanceStore store = instance.getInstanceStore();
223
250
 
224
251
  // get distribution owner fee amount
225
- Amount distributionOwnerFee = AmountLib.toAmount(premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount);
252
+ Amount distributionOwnerFee = premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount;
226
253
 
227
254
  // update referral/distributor info if applicable
228
255
  if (referralIsValid(distributionNftId, referralId)) {
229
256
 
230
257
  // increase distribution balance by commission amount and distribution owner fee
231
- Amount commissionAmount = AmountLib.toAmount(premium.commissionAmount);
258
+ Amount commissionAmount = premium.commissionAmount;
232
259
  _componentService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
233
260
 
234
261
  // update book keeping for referral info
235
262
  IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
236
- referralInfo.usedReferrals += 1;
237
- store.updateReferral(referralId, referralInfo, KEEP_STATE());
238
263
 
239
264
  _componentService.increaseDistributorBalance(store, referralInfo.distributorNftId, AmountLib.zero(), commissionAmount);
240
265
 
@@ -253,6 +278,7 @@ contract DistributionService is
253
278
  public
254
279
  virtual
255
280
  // TODO: restricted() (once #462 is done)
281
+ onlyNftOfType(distributorNftId, DISTRIBUTOR())
256
282
  returns (Amount withdrawnAmount)
257
283
  {
258
284
  (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
@@ -290,12 +316,18 @@ contract DistributionService is
290
316
  }
291
317
  }
292
318
 
293
- function referralIsValid(NftId distributionNftId, ReferralId referralId) public view returns (bool isValid) {
319
+ function referralIsValid(NftId distributionNftId, ReferralId referralId)
320
+ public
321
+ view
322
+ returns (bool isValid)
323
+ {
294
324
  if (distributionNftId.eqz() || referralId.eqz()) {
295
325
  return false;
296
326
  }
297
327
 
298
- IInstance instance = _getInstanceForDistribution(distributionNftId);
328
+ IRegistry registry = getRegistry();
329
+ IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
330
+ IInstance instance = _getInstanceForComponent(registry, distributionInfo);
299
331
  IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
300
332
 
301
333
  if (info.distributorNftId.eqz()) {
@@ -312,7 +344,7 @@ contract DistributionService is
312
344
  returns(IInstance instance)
313
345
  {
314
346
  NftId instanceNftId = getRegistry().getObjectInfo(distributionNftId).parentNftId;
315
- address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
347
+ address instanceAddress = getRegistry().getObjectAddress(instanceNftId);
316
348
  return IInstance(instanceAddress);
317
349
  }
318
350
 
@@ -12,15 +12,15 @@ contract DistributionServiceManager is ProxyManager {
12
12
  /// @dev initializes proxy manager with distribution service implementation and deploys instance
13
13
  constructor(
14
14
  address authority,
15
- address registryAddress,
15
+ address registry,
16
16
  bytes32 salt
17
17
  )
18
- ProxyManager(registryAddress)
19
18
  {
20
- DistributionService distSrv = new DistributionService{salt: salt}();
21
- bytes memory data = abi.encode(registryAddress, address(this), authority);
22
- IVersionable versionable = deployDetermenistic(
23
- address(distSrv),
19
+ DistributionService svc = new DistributionService{salt: salt}();
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
24
24
  data,
25
25
  salt);
26
26
 
@@ -3,7 +3,6 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount} from "../type/Amount.sol";
5
5
  import {NftId} from "../type/NftId.sol";
6
- import {Fee} from "../type/Fee.sol";
7
6
  import {IPolicy} from "../instance/module/IPolicy.sol";
8
7
  import {IService} from "../shared/IService.sol";
9
8
  import {UFixed} from "../type/UFixed.sol";
@@ -75,11 +74,18 @@ interface IDistributionService is IService {
75
74
  external
76
75
  returns (ReferralId referralId);
77
76
 
77
+ /// @dev callback from product service when a referral is used.
78
+ /// Calling this will increment the referral usage counter.
79
+ function processReferral(
80
+ NftId distributionNftId,
81
+ ReferralId referralId
82
+ ) external;
83
+
78
84
  /// @dev callback from product service when selling a policy for a specific referralId
79
85
  function processSale(
80
86
  NftId distributionNftId,
81
87
  ReferralId referralId,
82
- IPolicy.Premium memory premium
88
+ IPolicy.PremiumInfo memory premium
83
89
  ) external;
84
90
 
85
91
  function referralIsValid(
@@ -0,0 +1,59 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ type DamageLevel is uint8;
5
+
6
+ // type bindings
7
+ using {
8
+ DamageLevelLib.eq,
9
+ DamageLevelLib.eqz,
10
+ DamageLevelLib.toInt
11
+ } for DamageLevel global;
12
+
13
+ // solhint-disable-next-line func-name-mixedcase
14
+ function DAMAGE_SMALL() pure returns (DamageLevel) {
15
+ return DamageLevel.wrap(1);
16
+ }
17
+
18
+ // solhint-disable-next-line func-name-mixedcase
19
+ function DAMAGE_MEDIUM() pure returns (DamageLevel) {
20
+ return DamageLevel.wrap(2);
21
+ }
22
+
23
+ // solhint-disable-next-line func-name-mixedcase
24
+ function DAMAGE_LARGE() pure returns (DamageLevel) {
25
+ return DamageLevel.wrap(3);
26
+ }
27
+
28
+ library DamageLevelLib {
29
+
30
+ error ErrorDamageLeveLibInvalidDamageLevel(uint8 damageLevel);
31
+
32
+ function zero() internal pure returns (DamageLevel) {
33
+ return DamageLevel.wrap(0);
34
+ }
35
+
36
+ function toDamageLevel(uint8 damage) internal pure returns (DamageLevel) {
37
+ if (damage == 1) {
38
+ return DAMAGE_SMALL();
39
+ } else if (damage == 2) {
40
+ return DAMAGE_MEDIUM();
41
+ } else if (damage == 3) {
42
+ return DAMAGE_LARGE();
43
+ } else {
44
+ revert ErrorDamageLeveLibInvalidDamageLevel(damage);
45
+ }
46
+ }
47
+
48
+ function toInt(DamageLevel damageLevel) internal pure returns (uint8) {
49
+ return uint8(DamageLevel.unwrap(damageLevel));
50
+ }
51
+
52
+ function eq(DamageLevel a, DamageLevel b) internal pure returns (bool) {
53
+ return DamageLevel.unwrap(a) == DamageLevel.unwrap(b);
54
+ }
55
+
56
+ function eqz(DamageLevel a) internal pure returns (bool) {
57
+ return DamageLevel.unwrap(a) == 0;
58
+ }
59
+ }
@@ -0,0 +1,75 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount, AmountLib} from "../../type/Amount.sol";
5
+ import {BasicPool} from "../../pool/BasicPool.sol";
6
+ import {BasicPoolAuthorization} from "../../pool/BasicPoolAuthorization.sol";
7
+ import {Fee} from "../../type/Fee.sol";
8
+ import {IAuthorization} from "../../authorization/IAuthorization.sol";
9
+ import {NftId} from "../../type/NftId.sol";
10
+ import {Seconds} from "../../type/Timestamp.sol";
11
+ import {UFixed} from "../../type/UFixed.sol";
12
+
13
+ contract FirePool is
14
+ BasicPool
15
+ {
16
+
17
+ constructor(
18
+ address registry,
19
+ NftId instanceNftId,
20
+ string memory componentName,
21
+ address token,
22
+ IAuthorization authorization
23
+ )
24
+ {
25
+ address initialOwner = msg.sender;
26
+ _intialize(
27
+ registry,
28
+ instanceNftId,
29
+ componentName,
30
+ token,
31
+ authorization,
32
+ initialOwner);
33
+ }
34
+
35
+ function _intialize(
36
+ address registry,
37
+ NftId instanceNftId,
38
+ string memory componentName,
39
+ address token,
40
+ IAuthorization authorization,
41
+ address initialOwner
42
+ )
43
+ internal
44
+ initializer
45
+ {
46
+ _initializeBasicPool(
47
+ registry,
48
+ instanceNftId,
49
+ authorization,
50
+ token,
51
+ componentName,
52
+ initialOwner);
53
+ }
54
+
55
+ function createBundle(
56
+ Fee memory fee,
57
+ Amount initialAmount,
58
+ Seconds lifetime
59
+ )
60
+ external
61
+ virtual
62
+ restricted()
63
+ returns(NftId bundleNftId, Amount netStakedAmount)
64
+ {
65
+ address owner = msg.sender;
66
+ bundleNftId = _createBundle(
67
+ owner,
68
+ fee,
69
+ lifetime,
70
+ "" // filter
71
+ );
72
+ netStakedAmount = _stake(bundleNftId, initialAmount);
73
+ }
74
+
75
+ }
@@ -0,0 +1,34 @@
1
+
2
+
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ pragma solidity ^0.8.20;
5
+
6
+ import {BasicPoolAuthorization} from "../../pool/BasicPoolAuthorization.sol";
7
+ import {FirePool} from "./FirePool.sol";
8
+ import {IAccess} from "../../../contracts/authorization/IAccess.sol";
9
+ import {PUBLIC_ROLE} from "../../../contracts/type/RoleId.sol";
10
+
11
+ contract FirePoolAuthorization
12
+ is BasicPoolAuthorization
13
+ {
14
+
15
+ constructor(string memory poolName)
16
+ BasicPoolAuthorization(poolName)
17
+ {}
18
+
19
+
20
+ function _setupTargetAuthorizations()
21
+ internal
22
+ virtual override
23
+ {
24
+ super._setupTargetAuthorizations();
25
+ IAccess.FunctionInfo[] storage functions;
26
+
27
+ // authorize public role (open access to any account, only allows to lock target)
28
+ functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
29
+ // TODO: FirePool.createBundle must require a custom role (e.g. INVESTOR) instead of PUBLIC_ROLE
30
+ _authorize(functions, FirePool.createBundle.selector, "createBundle");
31
+ }
32
+
33
+ }
34
+