@etherisc/gif-next 0.0.2-8e5f0ee-617 → 0.0.2-8f3d499-425

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 (450) hide show
  1. package/README.md +31 -3
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +33 -52
  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 +2 -2
  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 +0 -19
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +85 -248
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +43 -222
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +228 -217
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +93 -101
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +43 -37
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +120 -31
  31. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  32. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  33. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  34. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1463 -0
  35. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  36. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
  37. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  38. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1960 -0
  39. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +414 -0
  41. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  44. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
  45. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
  51. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  52. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  53. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  54. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -6
  55. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  56. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +5 -5
  57. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  58. package/artifacts/contracts/instance/Instance.sol/Instance.json +17 -106
  59. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  60. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +98 -101
  61. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  62. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +31 -31
  63. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  64. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +238 -123
  65. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +44 -151
  67. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +61 -81
  69. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  70. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +215 -219
  71. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  72. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  73. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  74. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  76. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  77. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  78. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  79. package/artifacts/contracts/instance/base/{ObjectManager.sol/ObjectManager.json → ObjectSet.sol/ObjectSet.json} +6 -6
  80. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  86. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  87. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  88. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  89. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +59 -235
  90. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  91. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  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 +30 -37
  95. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  96. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +27 -219
  98. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +37 -144
  100. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +60 -80
  102. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  103. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +55 -284
  104. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  105. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
  106. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  107. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +407 -174
  108. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +137 -89
  110. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  111. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +205 -1
  112. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  113. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +45 -95
  114. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  115. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +300 -180
  116. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  117. package/artifacts/contracts/pool/Pool.sol/Pool.json +45 -280
  118. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  119. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +366 -329
  120. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +74 -82
  122. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  123. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +36 -162
  124. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  125. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +57 -89
  126. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  127. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +22 -225
  128. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  129. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
  130. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  131. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +206 -175
  132. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  133. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +92 -100
  134. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  135. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
  136. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  137. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +114 -0
  138. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  139. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +266 -119
  140. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  141. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
  142. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  143. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +19 -37
  144. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  145. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
  146. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  147. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +372 -316
  148. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  149. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +104 -100
  150. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  151. package/artifacts/contracts/product/PricingService.sol/PricingService.json +118 -265
  152. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  153. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +80 -120
  154. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  155. package/artifacts/contracts/product/Product.sol/Product.json +22 -225
  156. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  157. package/artifacts/contracts/product/RiskService.sol/RiskService.json +588 -0
  158. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  159. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +682 -0
  160. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  161. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  162. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  163. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +257 -9
  164. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  165. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  166. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  167. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  168. package/artifacts/contracts/registry/Registry.sol/Registry.json +476 -67
  169. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  170. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +246 -134
  171. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  172. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +23 -130
  173. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +52 -72
  175. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  176. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  177. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  178. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1169 -0
  179. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  180. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  181. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  182. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  183. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  184. package/artifacts/contracts/shared/Component.sol/Component.json +0 -211
  185. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  186. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +247 -161
  187. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  188. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +105 -95
  189. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  190. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +5 -112
  191. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  192. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  193. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  194. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
  195. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  196. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
  197. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -37
  199. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  200. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  201. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +14 -46
  204. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  205. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  206. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  207. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  208. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  209. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  210. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  211. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -222
  212. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  213. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  214. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  215. package/artifacts/contracts/shared/{NftIdSetManager.sol/NftIdSetManager.json → NftIdSet.sol/NftIdSet.json} +4 -4
  216. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  217. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -57
  218. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  219. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +18 -140
  220. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  221. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
  222. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  223. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  224. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  225. package/artifacts/contracts/shared/Service.sol/Service.json +5 -112
  226. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  227. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  228. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  229. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  230. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  231. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +27 -27
  232. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  233. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  234. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +73 -93
  235. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  236. package/artifacts/contracts/staking/Staking.sol/Staking.json +85 -262
  237. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  238. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  239. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  240. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +77 -88
  241. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  242. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  243. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +31 -138
  245. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  246. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +56 -76
  247. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  248. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +92 -87
  249. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  250. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
  251. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  252. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  253. package/artifacts/contracts/type/Amount.sol/AmountLib.json +61 -8
  254. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  255. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  256. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  257. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  258. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  260. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
  262. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  263. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  264. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  266. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  267. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  268. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  270. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  272. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  274. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  276. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  278. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  280. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  282. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  286. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  289. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  291. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +39 -2
  293. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  295. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  297. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  298. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  299. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  300. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +586 -0
  301. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  302. package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
  303. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  304. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  305. package/contracts/authorization/AccessAdmin.sol +25 -24
  306. package/contracts/authorization/Authorization.sol +0 -1
  307. package/contracts/authorization/IAccessAdmin.sol +0 -1
  308. package/contracts/distribution/BasicDistribution.sol +4 -15
  309. package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
  310. package/contracts/distribution/Distribution.sol +23 -11
  311. package/contracts/distribution/DistributionService.sol +75 -41
  312. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  313. package/contracts/distribution/IDistributionComponent.sol +8 -4
  314. package/contracts/distribution/IDistributionService.sol +18 -2
  315. package/contracts/examples/fire/DamageLevel.sol +56 -0
  316. package/contracts/examples/fire/FirePool.sol +75 -0
  317. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  318. package/contracts/examples/fire/FireProduct.sol +404 -0
  319. package/contracts/examples/fire/FireProductAuthorization.sol +39 -0
  320. package/contracts/examples/fire/FireUSD.sol +26 -0
  321. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  322. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  323. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  324. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  325. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  326. package/contracts/instance/IInstance.sol +11 -34
  327. package/contracts/instance/IInstanceService.sol +5 -5
  328. package/contracts/instance/Instance.sol +13 -38
  329. package/contracts/instance/InstanceAdmin.sol +25 -6
  330. package/contracts/instance/InstanceAuthorizationV3.sol +16 -14
  331. package/contracts/instance/InstanceReader.sol +32 -7
  332. package/contracts/instance/InstanceService.sol +70 -47
  333. package/contracts/instance/InstanceServiceManager.sol +8 -13
  334. package/contracts/instance/InstanceStore.sol +12 -1
  335. package/contracts/instance/base/ObjectLifecycle.sol +9 -4
  336. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +5 -5
  337. package/contracts/instance/module/IBundle.sol +1 -1
  338. package/contracts/instance/module/IComponents.sol +1 -7
  339. package/contracts/instance/module/IDistribution.sol +0 -1
  340. package/contracts/instance/module/IPolicy.sol +22 -22
  341. package/contracts/mock/Dip.sol +1 -1
  342. package/contracts/oracle/IOracleComponent.sol +2 -1
  343. package/contracts/oracle/Oracle.sol +17 -7
  344. package/contracts/oracle/OracleService.sol +9 -6
  345. package/contracts/oracle/OracleServiceManager.sol +8 -11
  346. package/contracts/pool/BasicPool.sol +7 -5
  347. package/contracts/pool/BasicPoolAuthorization.sol +11 -2
  348. package/contracts/pool/BundleService.sol +197 -55
  349. package/contracts/pool/BundleServiceManager.sol +8 -11
  350. package/contracts/pool/IBundleService.sol +33 -5
  351. package/contracts/pool/IPoolComponent.sol +6 -0
  352. package/contracts/pool/IPoolService.sol +38 -28
  353. package/contracts/pool/Pool.sol +40 -25
  354. package/contracts/pool/PoolService.sol +183 -112
  355. package/contracts/pool/PoolServiceManager.sol +6 -9
  356. package/contracts/product/ApplicationService.sol +55 -62
  357. package/contracts/product/ApplicationServiceManager.sol +6 -6
  358. package/contracts/product/BasicProduct.sol +3 -32
  359. package/contracts/product/BasicProductAuthorization.sol +3 -0
  360. package/contracts/product/ClaimService.sol +217 -110
  361. package/contracts/product/ClaimServiceManager.sol +6 -6
  362. package/contracts/product/IApplicationService.sol +1 -0
  363. package/contracts/product/IClaimService.sol +28 -5
  364. package/contracts/product/IPolicyService.sol +31 -32
  365. package/contracts/product/IPricingService.sol +7 -7
  366. package/contracts/product/IProductComponent.sol +1 -1
  367. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  368. package/contracts/product/PolicyService.sol +370 -194
  369. package/contracts/product/PolicyServiceManager.sol +6 -9
  370. package/contracts/product/PricingService.sol +46 -46
  371. package/contracts/product/PricingServiceManager.sol +5 -8
  372. package/contracts/product/Product.sol +68 -35
  373. package/contracts/product/{ProductService.sol → RiskService.sol} +13 -41
  374. package/contracts/product/RiskServiceManager.sol +39 -0
  375. package/contracts/registry/ChainNft.sol +65 -32
  376. package/contracts/registry/IRegistry.sol +63 -16
  377. package/contracts/registry/IRegistryService.sol +6 -6
  378. package/contracts/registry/Registry.sol +333 -209
  379. package/contracts/registry/RegistryAdmin.sol +171 -72
  380. package/contracts/registry/RegistryService.sol +6 -20
  381. package/contracts/registry/RegistryServiceManager.sol +4 -4
  382. package/contracts/registry/{ReleaseManager.sol → ReleaseRegistry.sol} +60 -56
  383. package/contracts/registry/ServiceAuthorizationV3.sol +8 -10
  384. package/contracts/registry/TokenRegistry.sol +2 -2
  385. package/contracts/shared/Component.sol +30 -43
  386. package/contracts/shared/ComponentService.sol +88 -28
  387. package/contracts/shared/ComponentServiceManager.sol +10 -7
  388. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  389. package/contracts/shared/ContractLib.sol +38 -0
  390. package/contracts/shared/IComponent.sol +4 -4
  391. package/contracts/shared/IComponentService.sol +15 -9
  392. package/contracts/shared/IInstanceLinkedComponent.sol +9 -10
  393. package/contracts/shared/IPolicyHolder.sol +12 -22
  394. package/contracts/shared/IService.sol +1 -1
  395. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  396. package/contracts/shared/InstanceLinkedComponent.sol +25 -4
  397. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  398. package/contracts/shared/NftOwnable.sol +7 -7
  399. package/contracts/shared/PolicyHolder.sol +14 -58
  400. package/contracts/shared/Registerable.sol +4 -4
  401. package/contracts/shared/RegistryLinked.sol +3 -2
  402. package/contracts/shared/Service.sol +19 -15
  403. package/contracts/shared/TokenHandler.sol +100 -19
  404. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  405. package/contracts/staking/IStaking.sol +3 -3
  406. package/contracts/staking/IStakingService.sol +12 -5
  407. package/contracts/staking/StakeManagerLib.sol +18 -25
  408. package/contracts/staking/Staking.sol +27 -42
  409. package/contracts/staking/StakingManager.sol +10 -12
  410. package/contracts/staking/StakingReader.sol +12 -16
  411. package/contracts/staking/StakingService.sol +10 -14
  412. package/contracts/staking/StakingServiceManager.sol +4 -4
  413. package/contracts/staking/StakingStore.sol +12 -22
  414. package/contracts/staking/TargetManagerLib.sol +7 -3
  415. package/contracts/type/Amount.sol +27 -5
  416. package/contracts/type/Blocknumber.sol +7 -1
  417. package/contracts/type/ClaimId.sol +6 -1
  418. package/contracts/type/NftId.sol +1 -0
  419. package/contracts/type/ObjectType.sol +18 -18
  420. package/contracts/type/Referral.sol +1 -0
  421. package/contracts/type/RiskId.sol +15 -1
  422. package/contracts/type/Seconds.sol +21 -1
  423. package/contracts/type/StateId.sol +1 -0
  424. package/contracts/type/Timestamp.sol +11 -1
  425. package/contracts/type/UFixed.sol +29 -10
  426. package/contracts/type/Version.sol +3 -1
  427. package/contracts/{shared → upgradeability}/ProxyManager.sol +70 -38
  428. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  429. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  430. package/package.json +1 -1
  431. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  432. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -703
  433. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  434. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  435. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  436. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  437. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  438. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  439. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  440. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1159
  441. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  442. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  443. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  444. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  445. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  446. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  447. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  448. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  449. package/contracts/product/ProductServiceManager.sol +0 -42
  450. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "_format": "hh-sol-artifact-1",
3
3
  "contractName": "UpgradableProxyWithAdmin",
4
- "sourceName": "contracts/shared/UpgradableProxyWithAdmin.sol",
4
+ "sourceName": "contracts/upgradeability/UpgradableProxyWithAdmin.sol",
5
5
  "abi": [
6
6
  {
7
7
  "inputs": [
@@ -122,8 +122,8 @@
122
122
  "type": "function"
123
123
  }
124
124
  ],
125
- "bytecode": "0x60a060405234801561000f575f80fd5b50604051610e4c380380610e4c83398101604081905261002e9161037c565b828282828161003d828261009e565b50508160405161004c90610340565b6001600160a01b039091168152602001604051809103905ff080158015610075573d5f803e3d5ffd5b506001600160a01b031660805261009361008e60805190565b6100fc565b505050505050610463565b6100a782610169565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100f0576100eb82826101e7565b505050565b6100f861025a565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61013b5f80516020610e2c833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16101668161027b565b50565b806001600160a01b03163b5f036101a357604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b031684604051610203919061044d565b5f60405180830381855af49150503d805f811461023b576040519150601f19603f3d011682016040523d82523d5f602084013e610240565b606091505b5090925090506102518583836102b8565b95945050505050565b34156102795760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b0381166102a457604051633173bdd160e11b81525f600482015260240161019a565b805f80516020610e2c8339815191526101c6565b6060826102cd576102c882610317565b610310565b81511580156102e457506001600160a01b0384163b155b1561030d57604051639996b31560e01b81526001600160a01b038516600482015260240161019a565b50805b9392505050565b8051156103275780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104ef8061093d83390190565b80516001600160a01b0381168114610363575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561038e575f80fd5b6103978461034d565b92506103a56020850161034d565b60408501519092506001600160401b038111156103c0575f80fd5b8401601f810186136103d0575f80fd5b80516001600160401b038111156103e9576103e9610368565b604051601f8201601f19908116603f011681016001600160401b038111828210171561041757610417610368565b60405281815282820160200188101561042e575f80fd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b6080516104bd6104805f395f818160350152607201526104bd5ff3fe60806040526004361061001d575f3560e01c80638b3240a014610027575b610025610070565b005b348015610032575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006040516001600160a01b03909116815260200160405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036100dc575f356001600160e01b03191663278f794360e11b146100d2576040516334ad5dbb60e21b815260040160405180910390fd5b6100da6100e9565b565b6100da610117565b905090565b5f806100f83660048184610365565b81019061010591906103a0565b915091506101138282610127565b5050565b6100da610122610181565b6101b3565b610130826101d1565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561017957610174828261024c565b505050565b6101136102be565b5f6100e47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f80375f80365f845af43d5f803e8080156101cd573d5ff35b3d5ffd5b806001600160a01b03163b5f0361020b57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516102689190610471565b5f60405180830381855af49150503d805f81146102a0576040519150601f19603f3d011682016040523d82523d5f602084013e6102a5565b606091505b50915091506102b58583836102dd565b95945050505050565b34156100da5760405163b398979f60e01b815260040160405180910390fd5b6060826102f2576102ed8261033c565b610335565b815115801561030957506001600160a01b0384163b155b1561033257604051639996b31560e01b81526001600160a01b0385166004820152602401610202565b50805b9392505050565b80511561034c5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f8085851115610373575f80fd5b8386111561037f575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f80604083850312156103b1575f80fd5b82356001600160a01b03811681146103c7575f80fd5b9150602083013567ffffffffffffffff8111156103e2575f80fd5b8301601f810185136103f2575f80fd5b803567ffffffffffffffff81111561040c5761040c61038c565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561043b5761043b61038c565b604052818152828201602001871015610452575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea26469706673582212201032e5c276369f787ae3aa867466c332aa36322d2b088d73b91ce78ef067e22164736f6c634300081a0033608060405234801561000f575f80fd5b506040516104ef3803806104ef83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b6103fa806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610365565b3480156100e9575f80fd5b506100616100f836600461037e565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906101489086908690600401610399565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff8111156102a8575f80fd5b8401601f810186136102b8575f80fd5b803567ffffffffffffffff8111156102d2576102d261024c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103015761030161024c565b604052818152828201602001881015610318575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6103776020830184610337565b9392505050565b5f6020828403121561038e575f80fd5b813561037781610238565b6001600160a01b03831681526040602082018190525f906103bc90830184610337565b94935050505056fea264697066735822122063012ab3c3421087c307802be7295f03bec95db9eea702a4c2db9595befa162464736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103",
126
- "deployedBytecode": "0x60806040526004361061001d575f3560e01c80638b3240a014610027575b610025610070565b005b348015610032575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006040516001600160a01b03909116815260200160405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036100dc575f356001600160e01b03191663278f794360e11b146100d2576040516334ad5dbb60e21b815260040160405180910390fd5b6100da6100e9565b565b6100da610117565b905090565b5f806100f83660048184610365565b81019061010591906103a0565b915091506101138282610127565b5050565b6100da610122610181565b6101b3565b610130826101d1565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561017957610174828261024c565b505050565b6101136102be565b5f6100e47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f80375f80365f845af43d5f803e8080156101cd573d5ff35b3d5ffd5b806001600160a01b03163b5f0361020b57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516102689190610471565b5f60405180830381855af49150503d805f81146102a0576040519150601f19603f3d011682016040523d82523d5f602084013e6102a5565b606091505b50915091506102b58583836102dd565b95945050505050565b34156100da5760405163b398979f60e01b815260040160405180910390fd5b6060826102f2576102ed8261033c565b610335565b815115801561030957506001600160a01b0384163b155b1561033257604051639996b31560e01b81526001600160a01b0385166004820152602401610202565b50805b9392505050565b80511561034c5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f8085851115610373575f80fd5b8386111561037f575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f80604083850312156103b1575f80fd5b82356001600160a01b03811681146103c7575f80fd5b9150602083013567ffffffffffffffff8111156103e2575f80fd5b8301601f810185136103f2575f80fd5b803567ffffffffffffffff81111561040c5761040c61038c565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561043b5761043b61038c565b604052818152828201602001871015610452575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea26469706673582212201032e5c276369f787ae3aa867466c332aa36322d2b088d73b91ce78ef067e22164736f6c634300081a0033",
125
+ "bytecode": "0x60a060405234801561000f575f80fd5b50604051610e4c380380610e4c83398101604081905261002e9161037c565b828282828161003d828261009e565b50508160405161004c90610340565b6001600160a01b039091168152602001604051809103905ff080158015610075573d5f803e3d5ffd5b506001600160a01b031660805261009361008e60805190565b6100fc565b505050505050610463565b6100a782610169565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100f0576100eb82826101e7565b505050565b6100f861025a565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61013b5f80516020610e2c833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16101668161027b565b50565b806001600160a01b03163b5f036101a357604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b031684604051610203919061044d565b5f60405180830381855af49150503d805f811461023b576040519150601f19603f3d011682016040523d82523d5f602084013e610240565b606091505b5090925090506102518583836102b8565b95945050505050565b34156102795760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b0381166102a457604051633173bdd160e11b81525f600482015260240161019a565b805f80516020610e2c8339815191526101c6565b6060826102cd576102c882610317565b610310565b81511580156102e457506001600160a01b0384163b155b1561030d57604051639996b31560e01b81526001600160a01b038516600482015260240161019a565b50805b9392505050565b8051156103275780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104ef8061093d83390190565b80516001600160a01b0381168114610363575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561038e575f80fd5b6103978461034d565b92506103a56020850161034d565b60408501519092506001600160401b038111156103c0575f80fd5b8401601f810186136103d0575f80fd5b80516001600160401b038111156103e9576103e9610368565b604051601f8201601f19908116603f011681016001600160401b038111828210171561041757610417610368565b60405281815282820160200188101561042e575f80fd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b6080516104bd6104805f395f818160350152607201526104bd5ff3fe60806040526004361061001d575f3560e01c80638b3240a014610027575b610025610070565b005b348015610032575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006040516001600160a01b03909116815260200160405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036100dc575f356001600160e01b03191663278f794360e11b146100d2576040516334ad5dbb60e21b815260040160405180910390fd5b6100da6100e9565b565b6100da610117565b905090565b5f806100f83660048184610365565b81019061010591906103a0565b915091506101138282610127565b5050565b6100da610122610181565b6101b3565b610130826101d1565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561017957610174828261024c565b505050565b6101136102be565b5f6100e47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f80375f80365f845af43d5f803e8080156101cd573d5ff35b3d5ffd5b806001600160a01b03163b5f0361020b57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516102689190610471565b5f60405180830381855af49150503d805f81146102a0576040519150601f19603f3d011682016040523d82523d5f602084013e6102a5565b606091505b50915091506102b58583836102dd565b95945050505050565b34156100da5760405163b398979f60e01b815260040160405180910390fd5b6060826102f2576102ed8261033c565b610335565b815115801561030957506001600160a01b0384163b155b1561033257604051639996b31560e01b81526001600160a01b0385166004820152602401610202565b50805b9392505050565b80511561034c5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f8085851115610373575f80fd5b8386111561037f575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f80604083850312156103b1575f80fd5b82356001600160a01b03811681146103c7575f80fd5b9150602083013567ffffffffffffffff8111156103e2575f80fd5b8301601f810185136103f2575f80fd5b803567ffffffffffffffff81111561040c5761040c61038c565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561043b5761043b61038c565b604052818152828201602001871015610452575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea26469706673582212205f12e4d638be8d591db7c67d942f3e9eeb14e9e44f78ba8cddaca37631bdc49764736f6c634300081a0033608060405234801561000f575f80fd5b506040516104ef3803806104ef83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b6103fa806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610365565b3480156100e9575f80fd5b506100616100f836600461037e565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906101489086908690600401610399565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff8111156102a8575f80fd5b8401601f810186136102b8575f80fd5b803567ffffffffffffffff8111156102d2576102d261024c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103015761030161024c565b604052818152828201602001881015610318575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6103776020830184610337565b9392505050565b5f6020828403121561038e575f80fd5b813561037781610238565b6001600160a01b03831681526040602082018190525f906103bc90830184610337565b94935050505056fea264697066735822122063012ab3c3421087c307802be7295f03bec95db9eea702a4c2db9595befa162464736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103",
126
+ "deployedBytecode": "0x60806040526004361061001d575f3560e01c80638b3240a014610027575b610025610070565b005b348015610032575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006040516001600160a01b03909116815260200160405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036100dc575f356001600160e01b03191663278f794360e11b146100d2576040516334ad5dbb60e21b815260040160405180910390fd5b6100da6100e9565b565b6100da610117565b905090565b5f806100f83660048184610365565b81019061010591906103a0565b915091506101138282610127565b5050565b6100da610122610181565b6101b3565b610130826101d1565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561017957610174828261024c565b505050565b6101136102be565b5f6100e47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f80375f80365f845af43d5f803e8080156101cd573d5ff35b3d5ffd5b806001600160a01b03163b5f0361020b57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516102689190610471565b5f60405180830381855af49150503d805f81146102a0576040519150601f19603f3d011682016040523d82523d5f602084013e6102a5565b606091505b50915091506102b58583836102dd565b95945050505050565b34156100da5760405163b398979f60e01b815260040160405180910390fd5b6060826102f2576102ed8261033c565b610335565b815115801561030957506001600160a01b0384163b155b1561033257604051639996b31560e01b81526001600160a01b0385166004820152602401610202565b50805b9392505050565b80511561034c5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f8085851115610373575f80fd5b8386111561037f575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f80604083850312156103b1575f80fd5b82356001600160a01b03811681146103c7575f80fd5b9150602083013567ffffffffffffffff8111156103e2575f80fd5b8301601f810185136103f2575f80fd5b803567ffffffffffffffff81111561040c5761040c61038c565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561043b5761043b61038c565b604052818152828201602001871015610452575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea26469706673582212205f12e4d638be8d591db7c67d942f3e9eeb14e9e44f78ba8cddaca37631bdc49764736f6c634300081a0033",
127
127
  "linkReferences": {},
128
128
  "deployedLinkReferences": {}
129
129
  }
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../build-info/2150b4c95c460f723c07d99e46289e49.json"
4
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "_format": "hh-sol-artifact-1",
3
3
  "contractName": "Versionable",
4
- "sourceName": "contracts/shared/Versionable.sol",
4
+ "sourceName": "contracts/upgradeability/Versionable.sol",
5
5
  "abi": [
6
6
  {
7
7
  "inputs": [],
@@ -6,11 +6,12 @@ import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet
6
6
  import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol";
7
7
 
8
8
  import {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
9
+ import {ContractLib} from "../shared/ContractLib.sol";
9
10
  import {IAccessAdmin} from "./IAccessAdmin.sol";
10
11
  import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
11
12
  import {Selector, SelectorLib, SelectorSetLib} from "../type/Selector.sol";
12
13
  import {Str, StrLib} from "../type/String.sol";
13
- import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
14
+ import {TimestampLib} from "../type/Timestamp.sol";
14
15
 
15
16
 
16
17
  /**
@@ -113,7 +114,6 @@ contract AccessAdmin is
113
114
 
114
115
  _setAuthority(address(_authority)); // set authority for oz access managed
115
116
  _createAdminAndPublicRoles();
116
- _disableInitializers();
117
117
  }
118
118
 
119
119
  //--- view functions for roles ------------------------------------------//
@@ -219,17 +219,18 @@ contract AccessAdmin is
219
219
  selector.toBytes4()));
220
220
  }
221
221
 
222
- function isAccessManaged(address target) public view returns (bool) {
223
- if (!_isContract(target)) {
224
- return false;
225
- }
222
+ // TODO cleanup
223
+ // function isAccessManaged(address target) public view returns (bool) {
224
+ // if (!_isContract(target)) {
225
+ // return false;
226
+ // }
226
227
 
227
- (bool success, ) = target.staticcall(
228
- abi.encodeWithSelector(
229
- AccessManagedUpgradeable.authority.selector));
228
+ // (bool success, ) = target.staticcall(
229
+ // abi.encodeWithSelector(
230
+ // AccessManagedUpgradeable.authority.selector));
230
231
 
231
- return success;
232
- }
232
+ // return success;
233
+ // }
233
234
 
234
235
  function canCall(address caller, address target, Selector selector) external virtual view returns (bool can) {
235
236
  (can, ) = _authority.canCall(caller, target, selector.toBytes4());
@@ -349,7 +350,6 @@ contract AccessAdmin is
349
350
  internal
350
351
  {
351
352
  RoleId adminRoleId = RoleIdLib.toRoleId(_authority.ADMIN_ROLE());
352
- FunctionInfo[] memory functions;
353
353
 
354
354
  // setup admin role
355
355
  _createRoleUnchecked(
@@ -548,7 +548,7 @@ contract AccessAdmin is
548
548
  }
549
549
 
550
550
  // check target is an access managed contract
551
- if (!isAccessManaged(target)) {
551
+ if (!ContractLib.isAccessManaged(target)) {
552
552
  revert ErrorTargetNotAccessManaged(target);
553
553
  }
554
554
 
@@ -576,16 +576,17 @@ contract AccessAdmin is
576
576
  emit LogTargetCreated(target, targetName);
577
577
  }
578
578
 
579
- function _isContract(address target)
580
- internal
581
- view
582
- returns (bool)
583
- {
584
- uint256 size;
585
- assembly {
586
- size := extcodesize(target)
587
- }
588
- return size > 0;
589
- }
579
+ // TODO cleanup
580
+ // function _isContract(address target)
581
+ // internal
582
+ // view
583
+ // returns (bool)
584
+ // {
585
+ // uint256 size;
586
+ // assembly {
587
+ // size := extcodesize(target)
588
+ // }
589
+ // return size > 0;
590
+ // }
590
591
 
591
592
  }
@@ -134,7 +134,6 @@ contract Authorization
134
134
  RoleIdLib.toComponentRoleId(componentType, 0),
135
135
  _toTargetRoleName(
136
136
  getTargetName()));
137
-
138
137
  }
139
138
 
140
139
  /// @dev Add a contract role for the provided role id and name.
@@ -131,6 +131,5 @@ interface IAccessAdmin is
131
131
 
132
132
  function toRole(RoleId adminRoleId, RoleType roleType, uint32 maxMemberCount, string memory name) external view returns (RoleInfo memory);
133
133
  function toFunction(bytes4 selector, string memory name) external view returns (FunctionInfo memory);
134
- function isAccessManaged(address target) external view returns (bool);
135
134
  function deployer() external view returns (address);
136
135
  }
@@ -1,25 +1,14 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {COMPONENT, DISTRIBUTION} from "../type/ObjectType.sol";
5
4
  import {Distribution} from "./Distribution.sol";
6
5
  import {IAuthorization} from "../authorization/IAuthorization.sol";
7
- import {IDistributionService} from "./IDistributionService.sol";
8
- import {IProductService} from "../product/IProductService.sol";
9
- import {NftId, NftIdLib} from "../type/NftId.sol";
10
- import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
11
- import {Fee, FeeLib} from "../type/Fee.sol";
12
- import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
13
- import {IComponentService} from "../shared/IComponentService.sol";
14
- import {IDistribution} from "../instance/module/IDistribution.sol";
15
- import {IDistributionComponent} from "./IDistributionComponent.sol";
16
- import {IRegistry} from "../registry/IRegistry.sol";
17
- import {TokenHandler} from "../shared/TokenHandler.sol";
18
- import {InstanceReader} from "../instance/InstanceReader.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ReferralId} from "../type/Referral.sol";
8
+ import {Fee} from "../type/Fee.sol";
19
9
  import {UFixed} from "../type/UFixed.sol";
20
10
  import {DistributorType} from "../type/DistributorType.sol";
21
- import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
22
- import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
11
+ import {Timestamp} from "../type/Timestamp.sol";
23
12
 
24
13
 
25
14
  contract BasicDistribution is
@@ -3,10 +3,11 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Authorization} from "../authorization/Authorization.sol";
5
5
  import {BasicDistribution} from "./BasicDistribution.sol";
6
+ import {Distribution} from "./Distribution.sol";
6
7
  import {DISTRIBUTION} from "../type/ObjectType.sol";
7
8
  import {IAccess} from "../authorization/IAccess.sol";
9
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
8
10
  import {PUBLIC_ROLE} from "../../contracts/type/RoleId.sol";
9
- import {RoleId} from "../type/RoleId.sol";
10
11
 
11
12
 
12
13
  contract BasicDistributionAuthorization
@@ -38,6 +39,9 @@ contract BasicDistributionAuthorization
38
39
  _authorize(functions, BasicDistribution.createDistributor.selector, "createDistributor");
39
40
  _authorize(functions, BasicDistribution.updateDistributorType.selector, "updateDistributorType");
40
41
  _authorize(functions, BasicDistribution.createReferral.selector, "createReferral");
42
+
43
+ _authorize(functions, IInstanceLinkedComponent.withdrawFees.selector, "withdrawFees");
44
+ _authorize(functions, Distribution.withdrawCommission.selector, "withdrawCommission");
41
45
  }
42
46
  }
43
47
 
@@ -1,24 +1,19 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {Amount} from "../type/Amount.sol";
4
5
  import {COMPONENT, DISTRIBUTION} from "../type/ObjectType.sol";
5
6
  import {IAuthorization} from "../authorization/IAuthorization.sol";
6
7
  import {IDistributionService} from "./IDistributionService.sol";
7
- import {IProductService} from "../product/IProductService.sol";
8
8
  import {NftId, NftIdLib} from "../type/NftId.sol";
9
9
  import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
10
- import {Fee, FeeLib} from "../type/Fee.sol";
10
+ import {Fee} from "../type/Fee.sol";
11
11
  import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
12
12
  import {IComponentService} from "../shared/IComponentService.sol";
13
- import {IDistribution} from "../instance/module/IDistribution.sol";
14
13
  import {IDistributionComponent} from "./IDistributionComponent.sol";
15
- import {IRegistry} from "../registry/IRegistry.sol";
16
- import {TokenHandler} from "../shared/TokenHandler.sol";
17
- import {InstanceReader} from "../instance/InstanceReader.sol";
18
14
  import {UFixed} from "../type/UFixed.sol";
19
15
  import {DistributorType} from "../type/DistributorType.sol";
20
- import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
21
- import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
16
+ import {Timestamp} from "../type/Timestamp.sol";
22
17
 
23
18
 
24
19
  abstract contract Distribution is
@@ -41,13 +36,13 @@ abstract contract Distribution is
41
36
  _;
42
37
  }
43
38
 
44
-
45
39
  function register()
46
40
  external
47
41
  virtual
48
42
  onlyOwner()
49
43
  {
50
44
  _getDistributionStorage()._componentService.registerDistribution();
45
+ _approveTokenHandler(type(uint256).max);
51
46
  }
52
47
 
53
48
 
@@ -127,7 +122,18 @@ abstract contract Distribution is
127
122
  return true;
128
123
  }
129
124
 
130
-
125
+ /// @inheritdoc IDistributionComponent
126
+ function withdrawCommission(NftId distributorNftId, Amount amount)
127
+ external
128
+ virtual
129
+ restricted()
130
+ onlyDistributor()
131
+ onlyNftOwner(distributorNftId)
132
+ returns (Amount withdrawnAmount)
133
+ {
134
+ return _withdrawCommission(distributorNftId, amount);
135
+ }
136
+
131
137
  function _initializeDistribution(
132
138
  address registry,
133
139
  NftId instanceNftId,
@@ -158,7 +164,7 @@ abstract contract Distribution is
158
164
  $._distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
159
165
  $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
160
166
 
161
- registerInterface(type(IDistributionComponent).interfaceId);
167
+ _registerInterface(type(IDistributionComponent).interfaceId);
162
168
  }
163
169
 
164
170
  /// @dev Sets the distribution fees to the provided values.
@@ -266,6 +272,12 @@ abstract contract Distribution is
266
272
  data);
267
273
  }
268
274
 
275
+ function _withdrawCommission(NftId distributorNftId, Amount amount)
276
+ internal
277
+ returns (Amount withdrawnAmount)
278
+ {
279
+ return _getDistributionStorage()._distributionService.withdrawCommission(distributorNftId, amount);
280
+ }
269
281
 
270
282
  function _nftTransferFrom(address from, address to, uint256 tokenId) internal virtual override {
271
283
  // keep track of distributor nft owner
@@ -12,29 +12,14 @@ 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
- import {Version, VersionLib} from "../type/Version.sol";
19
- import {RoleId} from "../type/RoleId.sol";
20
-
21
- import {IVersionable} from "../shared/IVersionable.sol";
22
- import {Versionable} from "../shared/Versionable.sol";
23
-
24
- import {IService} from "../shared/IService.sol";
25
- import {Service} from "../shared/Service.sol";
26
17
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
27
- import {InstanceService} from "../instance/InstanceService.sol";
28
- import {IComponent} from "../shared/IComponent.sol";
29
- import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
30
18
  import {IDistributionService} from "./IDistributionService.sol";
31
- import {IPricingService} from "../product/IPricingService.sol";
32
-
33
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
19
+ import {UFixed} from "../type/UFixed.sol";
34
20
  import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
35
- import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
36
- import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
37
- import {Key32} from "../type/Key32.sol";
21
+ import {ReferralId, ReferralLib} from "../type/Referral.sol";
22
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
38
23
  import {IDistribution} from "../instance/module/IDistribution.sol";
39
24
  import {InstanceStore} from "../instance/InstanceStore.sol";
40
25
 
@@ -43,12 +28,6 @@ contract DistributionService is
43
28
  ComponentVerifyingService,
44
29
  IDistributionService
45
30
  {
46
- using NftIdLib for NftId;
47
- using TimestampLib for Timestamp;
48
- using UFixedLib for UFixed;
49
- using FeeLib for Fee;
50
- using ReferralLib for ReferralId;
51
-
52
31
  IComponentService private _componentService;
53
32
  IInstanceService private _instanceService;
54
33
  IRegistryService private _registryService;
@@ -58,21 +37,21 @@ contract DistributionService is
58
37
  bytes memory data
59
38
  )
60
39
  internal
61
- initializer
62
40
  virtual override
41
+ initializer()
63
42
  {
64
- address initialOwner;
65
- address registryAddress;
66
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
67
- // TODO while DistributionService is not deployed in DistributionServiceManager constructor
68
- // owner is DistributionServiceManager deployer
69
- initializeService(registryAddress, address(0), owner);
43
+ (
44
+ address registryAddress,
45
+ address authority
46
+ ) = abi.decode(data, (address, address));
47
+
48
+ _initializeService(registryAddress, authority, owner);
70
49
 
71
50
  _componentService = IComponentService(_getServiceAddress(COMPONENT()));
72
51
  _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
73
52
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
74
53
 
75
- registerInterface(type(IDistributionService).interfaceId);
54
+ _registerInterface(type(IDistributionService).interfaceId);
76
55
  }
77
56
 
78
57
 
@@ -152,7 +131,6 @@ contract DistributionService is
152
131
  distributorType,
153
132
  true, // active
154
133
  data,
155
- AmountLib.zero(),
156
134
  0);
157
135
 
158
136
  instance.getInstanceStore().createDistributor(distributorNftId, info);
@@ -228,11 +206,28 @@ contract DistributionService is
228
206
  return referralId;
229
207
  }
230
208
 
209
+ /// @inheritdoc IDistributionService
210
+ function processReferral(
211
+ NftId distributionNftId,
212
+ ReferralId referralId
213
+ )
214
+ external
215
+ virtual
216
+ restricted
217
+ {
218
+ if (referralIsValid(distributionNftId, referralId)) {
219
+ IInstance instance = _getInstanceForDistribution(distributionNftId);
220
+ // update book keeping for referral info
221
+ IDistribution.ReferralInfo memory referralInfo = instance.getInstanceReader().getReferralInfo(referralId);
222
+ referralInfo.usedReferrals += 1;
223
+ instance.getInstanceStore().updateReferral(referralId, referralInfo, KEEP_STATE());
224
+ }
225
+ }
231
226
 
232
227
  function processSale(
233
228
  NftId distributionNftId, // assume always of distribution type
234
229
  ReferralId referralId,
235
- IPolicy.Premium memory premium
230
+ IPolicy.PremiumInfo memory premium
236
231
  )
237
232
  external
238
233
  virtual
@@ -243,33 +238,72 @@ contract DistributionService is
243
238
  InstanceStore store = instance.getInstanceStore();
244
239
 
245
240
  // get distribution owner fee amount
246
- Amount distributionOwnerFee = AmountLib.toAmount(premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount);
241
+ Amount distributionOwnerFee = premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount;
247
242
 
248
243
  // update referral/distributor info if applicable
249
244
  if (referralIsValid(distributionNftId, referralId)) {
250
245
 
251
246
  // increase distribution balance by commission amount and distribution owner fee
252
- Amount commissionAmount = AmountLib.toAmount(premium.commissionAmount);
247
+ Amount commissionAmount = premium.commissionAmount;
253
248
  _componentService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
254
249
 
255
250
  // update book keeping for referral info
256
251
  IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
257
- referralInfo.usedReferrals += 1;
258
- store.updateReferral(referralId, referralInfo, KEEP_STATE());
252
+
253
+ _componentService.increaseDistributorBalance(store, referralInfo.distributorNftId, AmountLib.zero(), commissionAmount);
259
254
 
260
255
  // update book keeping for distributor info
261
256
  IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
262
- // TODO refactor sum of commission amount into a fee balance for distributors
263
- distributorInfo.commissionAmount = distributorInfo.commissionAmount + commissionAmount;
264
257
  distributorInfo.numPoliciesSold += 1;
265
258
  store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
266
259
  } else {
267
-
268
260
  // increase distribution balance by distribution owner fee
269
261
  _componentService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
270
262
  }
271
263
  }
272
264
 
265
+ /// @inheritdoc IDistributionService
266
+ function withdrawCommission(NftId distributorNftId, Amount amount)
267
+ public
268
+ virtual
269
+ // TODO: restricted() (once #462 is done)
270
+ returns (Amount withdrawnAmount)
271
+ {
272
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
273
+ InstanceReader reader = instance.getInstanceReader();
274
+
275
+ IComponents.ComponentInfo memory distributionInfo = reader.getComponentInfo(distributionNftId);
276
+ address distributionWallet = distributionInfo.wallet;
277
+
278
+ Amount commissionAmount = reader.getFeeAmount(distributorNftId);
279
+
280
+ // determine withdrawn amount
281
+ withdrawnAmount = amount;
282
+ if (withdrawnAmount.gte(AmountLib.max())) {
283
+ withdrawnAmount = commissionAmount;
284
+ } else {
285
+ if (withdrawnAmount.gt(commissionAmount)) {
286
+ revert ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(withdrawnAmount, commissionAmount);
287
+ }
288
+ }
289
+
290
+ // decrease fee counters by withdrawnAmount and update distributor info
291
+ {
292
+ InstanceStore store = instance.getInstanceStore();
293
+ // decrease fee counter for distribution balance
294
+ _componentService.decreaseDistributionBalance(store, distributionNftId, withdrawnAmount, AmountLib.zero());
295
+ // decrease fee counter for distributor fee
296
+ _componentService.decreaseDistributorBalance(store, distributorNftId, AmountLib.zero(), withdrawnAmount);
297
+ }
298
+
299
+ // transfer amount to distributor
300
+ {
301
+ address distributor = getRegistry().ownerOf(distributorNftId);
302
+ emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.token), withdrawnAmount);
303
+ distributionInfo.tokenHandler.distributeTokens(distributionWallet, distributor, withdrawnAmount);
304
+ }
305
+ }
306
+
273
307
  function referralIsValid(NftId distributionNftId, ReferralId referralId) public view returns (bool isValid) {
274
308
  if (distributionNftId.eqz() || referralId.eqz()) {
275
309
  return false;
@@ -1,12 +1,9 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "../shared/IVersionable.sol";
5
- import {ProxyManager} from "../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
6
  import {DistributionService} from "./DistributionService.sol";
7
- import {Registry} from "../registry/Registry.sol";
8
- import {RegistryService} from "../registry/RegistryService.sol";
9
- import {REGISTRY} from "../type/ObjectType.sol";
10
7
 
11
8
  contract DistributionServiceManager is ProxyManager {
12
9
 
@@ -15,15 +12,15 @@ contract DistributionServiceManager is ProxyManager {
15
12
  /// @dev initializes proxy manager with distribution service implementation and deploys instance
16
13
  constructor(
17
14
  address authority,
18
- address registryAddress,
15
+ address registry,
19
16
  bytes32 salt
20
17
  )
21
- ProxyManager(registryAddress)
22
18
  {
23
- DistributionService distSrv = new DistributionService{salt: salt}();
24
- bytes memory data = abi.encode(registryAddress, address(this), authority);
25
- IVersionable versionable = deployDetermenistic(
26
- 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),
27
24
  data,
28
25
  salt);
29
26
 
@@ -1,13 +1,11 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Fee} from "../type/Fee.sol";
4
+ import {Amount} from "../type/Amount.sol";
5
5
  import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
6
- import {ReferralId, ReferralStatus} from "../type/Referral.sol";
7
6
  import {NftId} from "../type/NftId.sol";
8
- import {DistributorType} from "../type/DistributorType.sol";
7
+ import {ReferralId, ReferralStatus} from "../type/Referral.sol";
9
8
  import {UFixed} from "../type/UFixed.sol";
10
- import {Timestamp} from "../type/Timestamp.sol";
11
9
 
12
10
  interface IDistributionComponent is IInstanceLinkedComponent {
13
11
 
@@ -45,4 +43,10 @@ interface IDistributionComponent is IInstanceLinkedComponent {
45
43
 
46
44
  /// @dev Returns true to ensure component is called when transferring distributor Nft Ids.
47
45
  function isVerifying() external view returns (bool verifying);
46
+
47
+ /// @dev Withdraw commission for the distributor
48
+ /// @param distributorNftId the distributor Nft Id
49
+ /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
50
+ /// @return withdrawnAmount the effective withdrawn amount
51
+ function withdrawCommission(NftId distributorNftId, Amount amount) external returns (Amount withdrawnAmount);
48
52
  }
@@ -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";
@@ -27,12 +26,16 @@ interface IDistributionService is IService {
27
26
  error ErrorIDistributionServiceCommissionTooHigh(uint256 commissionPercentage, uint256 maxCommissionPercentage);
28
27
  error ErrorIDistributionServiceMinFeeTooHigh(uint256 minFee, uint256 limit);
29
28
 
29
+ error ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(Amount amount, Amount limit);
30
+
30
31
  error ErrorDistributionServiceVariableFeesTooHight(uint256 maxDiscountPercentage, uint256 limit);
31
32
  error ErrorDistributionServiceMaxDiscountTooHigh(uint256 maxDiscountPercentage, uint256 limit);
32
33
 
33
34
  error ErrorIDistributionServiceReferralInvalid(NftId distributionNftId, ReferralId referralId);
34
35
  error ErrorDistributionServiceInvalidFeeTransferred(Amount transferredDistributionFeeAmount, Amount expectedDistributionFeeAmount);
35
36
 
37
+ event LogDistributionServiceCommissionWithdrawn(NftId distributorNftId, address recipient, address tokenAddress, Amount amount);
38
+
36
39
  function createDistributorType(
37
40
  string memory name,
38
41
  UFixed minDiscountPercentage,
@@ -71,15 +74,28 @@ interface IDistributionService is IService {
71
74
  external
72
75
  returns (ReferralId referralId);
73
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
+
74
84
  /// @dev callback from product service when selling a policy for a specific referralId
75
85
  function processSale(
76
86
  NftId distributionNftId,
77
87
  ReferralId referralId,
78
- IPolicy.Premium memory premium
88
+ IPolicy.PremiumInfo memory premium
79
89
  ) external;
80
90
 
81
91
  function referralIsValid(
82
92
  NftId distributorNftId,
83
93
  ReferralId referralId
84
94
  ) external view returns (bool isValid);
95
+
96
+ /// @dev Withdraw commission for the distributor
97
+ /// @param distributorNftId the distributor Nft Id
98
+ /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
99
+ /// @return withdrawnAmount the effective withdrawn amount
100
+ function withdrawCommission(NftId distributorNftId, Amount amount) external returns (Amount withdrawnAmount);
85
101
  }