@etherisc/gif-next 0.0.2-bfb44e0-483 → 0.0.2-c00cf5d-513

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 (506) hide show
  1. package/README.md +8 -84
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +206 -244
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1583 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +855 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +206 -156
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +380 -196
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +68 -54
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +277 -1998
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +172 -230
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +389 -2735
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +692 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +188 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +443 -255
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +217 -479
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +246 -129
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2847 -0
  32. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  33. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +6 -1
  34. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  35. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +49 -0
  36. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  37. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  38. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +93 -14
  39. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  40. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +38 -13
  41. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  42. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  43. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +25 -150
  45. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  47. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  48. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  52. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  53. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  54. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1307 -0
  55. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  56. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +767 -0
  57. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  58. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +273 -336
  59. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  60. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +386 -185
  61. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  62. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1077 -0
  63. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  64. package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +363 -303
  65. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  66. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1649 -0
  67. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  68. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +783 -0
  69. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  70. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +937 -0
  71. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  72. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +719 -0
  73. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  74. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1405 -0
  75. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  76. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +819 -0
  77. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  78. package/artifacts/contracts/{instance/service → product}/IApplicationService.sol/IApplicationService.json +109 -254
  79. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  80. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
  81. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  82. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +174 -307
  83. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  84. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +235 -237
  85. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  86. package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +212 -164
  87. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  88. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +67 -174
  89. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  90. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1300 -0
  91. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  92. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +811 -0
  93. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  94. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1023 -0
  95. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  96. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +759 -0
  97. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  98. package/artifacts/contracts/{components → product}/Product.sol/Product.json +166 -239
  99. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  100. package/artifacts/contracts/product/ProductService.sol/ProductService.json +891 -0
  101. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +715 -0
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  104. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  106. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +123 -19
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  108. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +212 -240
  109. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  110. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  111. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  112. package/artifacts/contracts/registry/Registry.sol/Registry.json +146 -34
  113. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  114. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +292 -0
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  116. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +245 -314
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +240 -123
  119. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  120. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +597 -86
  121. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  122. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +44 -92
  123. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  124. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  125. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  126. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
  127. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  128. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
  129. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  130. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
  131. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  132. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
  133. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  134. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +146 -151
  135. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  136. package/artifacts/contracts/{instance/base → shared}/ComponentService.sol/ComponentService.json +118 -222
  137. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  138. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  139. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  140. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  141. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  142. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  143. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  144. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +190 -74
  145. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  146. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +4 -43
  147. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  148. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +69 -9
  149. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  150. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +4 -43
  151. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  152. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -34
  153. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  154. package/artifacts/contracts/shared/IService.sol/IService.json +66 -173
  155. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  156. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -150
  157. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  158. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +19 -91
  159. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  160. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +80 -47
  161. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  162. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +226 -95
  163. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  164. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +32 -89
  165. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  166. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -36
  167. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  168. package/artifacts/contracts/shared/Service.sol/Service.json +92 -212
  169. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  170. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
  171. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  172. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  173. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  174. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -150
  175. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  176. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +523 -0
  177. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  178. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +786 -0
  179. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  180. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +699 -0
  181. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  182. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  183. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  184. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  185. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  186. package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
  187. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  188. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  189. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  190. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  191. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  192. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  193. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  194. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  195. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  196. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +166 -0
  197. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  198. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  199. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  200. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  201. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  202. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  203. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  204. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  205. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  206. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  207. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  208. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  209. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  210. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -0
  211. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  212. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  213. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  214. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
  215. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  216. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  217. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  218. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  219. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  220. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  221. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  222. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  223. package/contracts/{components → distribution}/Distribution.sol +47 -60
  224. package/contracts/distribution/DistributionService.sol +351 -0
  225. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  226. package/contracts/{components → distribution}/IDistributionComponent.sol +8 -37
  227. package/contracts/distribution/IDistributionService.sol +87 -0
  228. package/contracts/instance/BundleManager.sol +15 -14
  229. package/contracts/instance/IInstance.sol +52 -59
  230. package/contracts/instance/IInstanceService.sol +32 -19
  231. package/contracts/instance/Instance.sol +138 -185
  232. package/contracts/instance/InstanceAdmin.sol +330 -0
  233. package/contracts/instance/InstanceAuthorizationsLib.sol +320 -0
  234. package/contracts/instance/InstanceReader.sol +101 -26
  235. package/contracts/instance/InstanceService.sol +173 -307
  236. package/contracts/instance/InstanceServiceManager.sol +12 -22
  237. package/contracts/instance/InstanceStore.sol +211 -0
  238. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +8 -3
  239. package/contracts/instance/base/IKeyValueStore.sol +14 -10
  240. package/contracts/instance/base/ILifecycle.sol +3 -3
  241. package/contracts/instance/base/KeyValueStore.sol +44 -47
  242. package/contracts/instance/base/Lifecycle.sol +28 -7
  243. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +12 -14
  244. package/contracts/instance/module/IAccess.sol +19 -20
  245. package/contracts/instance/module/IBundle.sol +11 -8
  246. package/contracts/instance/module/IComponents.sol +41 -0
  247. package/contracts/instance/module/IDistribution.sol +7 -4
  248. package/contracts/instance/module/IPolicy.sol +50 -17
  249. package/contracts/instance/module/IRisk.sol +1 -1
  250. package/contracts/instance/module/ISetup.sol +9 -23
  251. package/contracts/instance/module/ITreasury.sol +2 -2
  252. package/contracts/pool/BundleService.sol +384 -0
  253. package/contracts/pool/BundleServiceManager.sol +42 -0
  254. package/contracts/pool/IBundleService.sol +118 -0
  255. package/contracts/pool/IPoolComponent.sol +114 -0
  256. package/contracts/pool/IPoolService.sol +114 -0
  257. package/contracts/pool/Pool.sol +302 -0
  258. package/contracts/pool/PoolService.sol +404 -0
  259. package/contracts/pool/PoolServiceManager.sol +42 -0
  260. package/contracts/product/ApplicationService.sol +187 -0
  261. package/contracts/product/ApplicationServiceManager.sol +38 -0
  262. package/contracts/product/ClaimService.sol +443 -0
  263. package/contracts/product/ClaimServiceManager.sol +38 -0
  264. package/contracts/{instance/service → product}/IApplicationService.sol +16 -36
  265. package/contracts/product/IClaimService.sol +93 -0
  266. package/contracts/product/IPolicyService.sol +80 -0
  267. package/contracts/product/IPricingService.sol +37 -0
  268. package/contracts/{components → product}/IProductComponent.sol +13 -11
  269. package/contracts/{instance/service → product}/IProductService.sol +10 -10
  270. package/contracts/product/PolicyService.sol +378 -0
  271. package/contracts/product/PolicyServiceManager.sol +42 -0
  272. package/contracts/product/PricingService.sol +276 -0
  273. package/contracts/product/PricingServiceManager.sol +42 -0
  274. package/contracts/{components → product}/Product.sol +186 -85
  275. package/contracts/product/ProductService.sol +212 -0
  276. package/contracts/product/ProductServiceManager.sol +42 -0
  277. package/contracts/registry/ChainNft.sol +8 -0
  278. package/contracts/registry/IRegistry.sol +31 -17
  279. package/contracts/registry/IRegistryService.sol +32 -38
  280. package/contracts/registry/ITransferInterceptor.sol +1 -0
  281. package/contracts/registry/Registry.sol +70 -67
  282. package/contracts/registry/RegistryAdmin.sol +141 -0
  283. package/contracts/registry/RegistryService.sol +65 -94
  284. package/contracts/registry/RegistryServiceManager.sol +22 -24
  285. package/contracts/registry/ReleaseManager.sol +318 -188
  286. package/contracts/registry/TokenRegistry.sol +19 -14
  287. package/contracts/shared/AccessManagerCustom.sol +736 -0
  288. package/contracts/shared/AccessManagerExtended.sol +469 -0
  289. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  290. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  291. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  292. package/contracts/{components → shared}/Component.sol +121 -86
  293. package/contracts/shared/ComponentService.sol +142 -0
  294. package/contracts/shared/ERC165.sol +2 -1
  295. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  296. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  297. package/contracts/shared/IComponent.sol +90 -0
  298. package/contracts/shared/INftOwnable.sol +5 -10
  299. package/contracts/shared/IPolicyHolder.sol +24 -10
  300. package/contracts/shared/IRegistryLinked.sol +0 -4
  301. package/contracts/shared/IService.sol +6 -4
  302. package/contracts/shared/IVersionable.sol +5 -48
  303. package/contracts/shared/NftOwnable.sol +20 -93
  304. package/contracts/shared/PolicyHolder.sol +31 -18
  305. package/contracts/shared/ProxyManager.sol +129 -24
  306. package/contracts/shared/Registerable.sol +14 -20
  307. package/contracts/shared/RegistryLinked.sol +5 -26
  308. package/contracts/shared/Service.sol +30 -18
  309. package/contracts/shared/TokenHandler.sol +14 -6
  310. package/contracts/shared/Versionable.sol +1 -90
  311. package/contracts/staking/IStakingService.sol +102 -0
  312. package/contracts/staking/StakingService.sol +169 -0
  313. package/contracts/staking/StakingServiceManager.sol +40 -0
  314. package/contracts/type/Amount.sol +109 -0
  315. package/contracts/{types → type}/Blocknumber.sol +1 -0
  316. package/contracts/type/ClaimId.sol +75 -0
  317. package/contracts/{types → type}/Fee.sol +17 -8
  318. package/contracts/{types → type}/NftId.sol +8 -0
  319. package/contracts/{types → type}/NftIdSet.sol +1 -1
  320. package/contracts/{types → type}/ObjectType.sol +13 -7
  321. package/contracts/type/PayoutId.sol +82 -0
  322. package/contracts/{types → type}/Referral.sol +4 -0
  323. package/contracts/{types → type}/RoleId.sol +62 -13
  324. package/contracts/type/Seconds.sol +54 -0
  325. package/contracts/{types → type}/StateId.sol +7 -2
  326. package/contracts/{types → type}/Timestamp.sol +18 -13
  327. package/contracts/{types → type}/UFixed.sol +1 -0
  328. package/contracts/{types → type}/Version.sol +1 -0
  329. package/package.json +1 -1
  330. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  331. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  332. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  333. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  334. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  335. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  336. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  337. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  338. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  339. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  340. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  342. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  343. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  344. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  345. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  346. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  347. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  348. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  349. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  350. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  351. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  352. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  353. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  354. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  355. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  356. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  357. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  358. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  359. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  360. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  361. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  362. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  363. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  364. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  365. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  366. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  367. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  368. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  369. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  370. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  371. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  372. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  373. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  374. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  375. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  376. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  377. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  378. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  379. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  380. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -984
  381. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  382. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  383. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  384. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  385. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1117
  386. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  387. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1318
  388. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  389. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -586
  390. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  391. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1176
  392. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  393. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -602
  394. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  395. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  396. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  397. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  398. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  399. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  400. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  401. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1378
  402. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  403. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -642
  404. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  405. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -957
  406. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  407. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -574
  408. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  409. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1007
  410. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  411. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -574
  412. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  413. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  414. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  415. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  416. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  417. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  418. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  419. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -446
  420. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  421. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  422. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  423. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -759
  424. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  425. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  426. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  427. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  428. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  429. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  430. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  431. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  432. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  433. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  434. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  435. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  436. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  437. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  438. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  439. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  440. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  441. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  442. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  443. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  444. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  445. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  446. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  447. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  448. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  449. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  450. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  451. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  452. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  453. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  454. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  455. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  456. package/contracts/components/IComponent.sol +0 -50
  457. package/contracts/components/IPoolComponent.sol +0 -87
  458. package/contracts/components/Pool.sol +0 -254
  459. package/contracts/experiment/cloning/Cloner.sol +0 -47
  460. package/contracts/experiment/errors/Require.sol +0 -38
  461. package/contracts/experiment/errors/Revert.sol +0 -44
  462. package/contracts/experiment/inheritance/A.sol +0 -53
  463. package/contracts/experiment/inheritance/B.sol +0 -28
  464. package/contracts/experiment/inheritance/C.sol +0 -34
  465. package/contracts/experiment/inheritance/IA.sol +0 -13
  466. package/contracts/experiment/inheritance/IB.sol +0 -10
  467. package/contracts/experiment/inheritance/IC.sol +0 -12
  468. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  469. package/contracts/experiment/statemachine/ISM.sol +0 -25
  470. package/contracts/experiment/statemachine/SM.sol +0 -57
  471. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  472. package/contracts/experiment/types/TypeA.sol +0 -47
  473. package/contracts/experiment/types/TypeB.sol +0 -29
  474. package/contracts/instance/InstanceAccessManager.sol +0 -297
  475. package/contracts/instance/base/ComponentService.sol +0 -134
  476. package/contracts/instance/service/ApplicationService.sol +0 -268
  477. package/contracts/instance/service/BundleService.sol +0 -298
  478. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  479. package/contracts/instance/service/DistributionService.sol +0 -274
  480. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  481. package/contracts/instance/service/IBundleService.sol +0 -54
  482. package/contracts/instance/service/IDistributionService.sol +0 -65
  483. package/contracts/instance/service/IPolicyService.sol +0 -88
  484. package/contracts/instance/service/IPoolService.sol +0 -20
  485. package/contracts/instance/service/PolicyService.sol +0 -524
  486. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  487. package/contracts/instance/service/PoolService.sol +0 -109
  488. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  489. package/contracts/instance/service/ProductService.sol +0 -233
  490. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  491. package/contracts/registry/RegistryAccessManager.sol +0 -216
  492. package/contracts/shared/ContractDeployerLib.sol +0 -72
  493. package/contracts/test/TestFee.sol +0 -25
  494. package/contracts/test/TestRegisterable.sol +0 -18
  495. package/contracts/test/TestRoleId.sol +0 -14
  496. package/contracts/test/TestService.sol +0 -25
  497. package/contracts/test/TestToken.sol +0 -26
  498. package/contracts/test/TestVersion.sol +0 -44
  499. package/contracts/test/TestVersionable.sol +0 -17
  500. package/contracts/test/Usdc.sol +0 -26
  501. package/contracts/types/ChainId.sol +0 -38
  502. package/contracts/types/NumberId.sol +0 -52
  503. /package/contracts/{types → type}/AddressSet.sol +0 -0
  504. /package/contracts/{types → type}/DistributorType.sol +0 -0
  505. /package/contracts/{types → type}/Key32.sol +0 -0
  506. /package/contracts/{types → type}/RiskId.sol +0 -0
@@ -3,23 +3,18 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
 
6
- import {IRegistry} from "../registry/IRegistry.sol";
7
6
  import {IRegistryLinked} from "./IRegistryLinked.sol";
8
- import {NftId} from "../types/NftId.sol";
7
+ import {NftId} from "../type/NftId.sol";
9
8
 
10
9
  interface INftOwnable is
11
10
  IERC165,
12
11
  IRegistryLinked
13
12
  {
14
- error ErrorInitialOwnerZero();
15
- error ErrorNotOwner(address account);
13
+ error ErrorNftOwnableInitialOwnerZero();
14
+ error ErrorNftOwnableNotOwner(address account);
16
15
 
17
- error ErrorAlreadyLinked(address registry, NftId nftId);
18
- // error ErrorRegistryAlreadyInitialized(address registry);
19
- // error ErrorRegistryNotInitialized();
20
- // error ErrorRegistryAddressZero();
21
- // error ErrorNotRegistry(address registryAddress);
22
- error ErrorContractNotRegistered(address contractAddress);
16
+ error ErrorNftOwnableAlreadyLinked(NftId nftId);
17
+ error ErrorNftOwnableContractNotRegistered(address contractAddress);
23
18
 
24
19
  function linkToRegisteredNftId() external;
25
20
 
@@ -4,23 +4,37 @@ pragma solidity ^0.8.20;
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
  import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
6
6
 
7
- import {IRegistry} from "../registry/IRegistry.sol";
8
- import {NftId} from "../types/NftId.sol";
9
- import {NumberId} from "../types/NumberId.sol";
7
+ import {Amount} from "../type/Amount.sol";
8
+ import {ClaimId} from "../type/ClaimId.sol";
9
+ import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
10
+ import {NftId} from "../type/NftId.sol";
11
+ import {PayoutId} from "../type/PayoutId.sol";
10
12
 
11
13
  /// @dev generic interface for contracts that need to hold policies and receive payouts
12
14
  /// GIF will notify policy holder contracts for policy creation and payout execution
13
- ///
15
+ interface IPolicyHolder is
16
+ IERC165,
17
+ IERC721Receiver,
18
+ IRegistryLinked
19
+ {
14
20
 
15
- interface IPolicyHolder is IERC165, IERC721Receiver {
21
+ /// @dev callback function that will be called after successful policy activation
22
+ /// active policies may open claims under the activated policy
23
+ function policyActivated(NftId policyNftId) external;
16
24
 
17
- /// @dev callback function that will be called after successful policy creation
18
- function policyCreatedCallback(NftId policyNftId) external;
25
+ /// @dev callback function to indicate the specified policy has expired
26
+ /// expired policies may no longer open claims
27
+ /// it is optional for products to notifiy policy holder of expired claims
28
+ function policyExpired(NftId policyNftId) external;
29
+
30
+ /// @dev callback function to notify the confirmation of the specified claim
31
+ /// active policies may open claims under the activated policy
32
+ function claimConfirmed(NftId policyNftId, ClaimId claimId, Amount amount) external;
19
33
 
20
34
  /// @dev callback function that will be called after a successful payout
21
- function payoutExecutedCallback(NftId policyNftId, NumberId payoutId, address beneficiary, uint256 amount) external;
35
+ function payoutExecuted(NftId policyNftId, PayoutId payoutId, address beneficiary, Amount amount) external;
22
36
 
23
- /// @dev determines beneficiary address that will be used in payouts targeting this contract
37
+ /// @dev determines policy and claim specific beneficiary address
24
38
  /// returned address will override GIF default where the policy nft holder is treated as beneficiary
25
- function getBeneficiary(NftId policyId, NumberId claimId) external view returns (address beneficiary);
39
+ function getBeneficiary(NftId policyNftId, ClaimId claimId) external view returns (address beneficiary);
26
40
  }
@@ -5,11 +5,7 @@ import {IRegistry} from "../registry/IRegistry.sol";
5
5
 
6
6
  interface IRegistryLinked {
7
7
 
8
- error ErrorRegistryAlreadyInitialized(address registry);
9
- error ErrorRegistryNotInitialized();
10
- error ErrorRegistryAddressZero();
11
8
  error ErrorNotRegistry(address registryAddress);
12
9
 
13
10
  function getRegistry() external view returns (IRegistry);
14
- function getRegistryAddress() external view returns (address);
15
11
  }
@@ -1,16 +1,18 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {VersionPart} from "../types/Version.sol";
5
- import {ObjectType} from "../types/ObjectType.sol";
4
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
5
 
7
6
  import {IRegisterable} from "./IRegisterable.sol";
8
7
  import {IVersionable} from "./IVersionable.sol";
8
+ import {ObjectType} from "../type/ObjectType.sol";
9
9
 
10
10
  interface IService is
11
11
  IRegisterable,
12
- IVersionable
12
+ IVersionable,
13
+ IAccessManaged
13
14
  {
15
+ error ErrorServiceNotImplemented();
16
+
14
17
  function getDomain() external pure returns(ObjectType serviceDomain);
15
- function getMajorVersion() external view returns(VersionPart majorVersion);
16
18
  }
@@ -1,10 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Blocknumber} from "../types/Blocknumber.sol";
5
- import {Timestamp} from "../types/Timestamp.sol";
6
- import {Version} from "../types/Version.sol";
7
-
4
+ import {Version} from "../type/Version.sol";
8
5
 
9
6
  /// IMPORTANT
10
7
  // Upgradeable contract MUST:
@@ -14,7 +11,7 @@ import {Version} from "../types/Version.sol";
14
11
  // 4) implement internal _upgrade() function with onlyInitializing modifier (1st version MUST revert)
15
12
  // 5) have onlyInitialising modifier for each function callable inside _initialize()/_upgrade() (MUST use different functions for initialization/upgrade and normal operations)
16
13
  // 6) use default empty constructor -> _disableInitializer() is called from Versionable contructor
17
- // 7) use namespace storage
14
+ // 7) use namespace storage (should this be needed)
18
15
  // 8) since now inheritance is used for upgradability, contract MUST BE inherited ONLY by the next version
19
16
  // Upgradeable contract SHOULD:
20
17
  // 9) define all non private methods as virtual (in order to be able to upgrade them latter)
@@ -22,48 +19,29 @@ import {Version} from "../types/Version.sol";
22
19
  // in some cases this ok but not in the others...
23
20
  //
24
21
  // IMPORTANT
25
- // Each version MUST:
22
+ // If introducting/amending storage related to Versionable version MUST:
26
23
  // 1) define namespace storage struct if accessing storage
27
24
  // - DO NOT use structs inside, except
28
25
  // - CAN use structs ONLY inside mappings
29
26
  // 2) ALWAYS define private getter if accessing storage
30
27
  // - MUST use default implementation, CAN change ONLY return type
31
- // - MUST use the same "LOCATION_V1"
32
28
 
33
29
  interface IVersionable {
34
30
 
35
- struct VersionInfo {
36
- Version version;
37
- address implementation;
38
- address activatedBy;
39
- Timestamp activatedAt;
40
- Blocknumber activatedIn;
41
- }
42
-
43
- event LogVersionableInitialized(Version version, address implementation, address activatedBy);
44
-
45
- // TODO uncomment when all implementations are ready
46
31
  /**
47
32
  * @dev IMPORTANT
48
33
  * implementation MUST be guarded by initializer modifier
49
- * implementation MUST call internal function Versionable._updateVersionHistory
50
34
  * new version MUST inherit from previous version
51
35
  */
52
- function initializeVersionable(address implementation, address activatedBy, bytes memory activationData) external;
36
+ function initializeVersionable(address activatedBy, bytes memory activationData) external;
53
37
 
54
38
  /**
55
39
  * @dev
56
40
  * implementation MUST be guarded by reinitializer(version().toUint64()) modifier
57
- * implementation MUST call internal function Versionable._updateVersionHistory
58
41
  * new version MUST inherit from previous version
59
42
  * the first verion MUST revert
60
43
  */
61
- function upgradeVersionable(address implementation, address activatedBy, bytes memory upgradeData) external;
62
-
63
- /**
64
- * @dev returns true if the specified version has been activated for the current contract
65
- */
66
- function isInitialized(Version version) external view returns(bool);
44
+ function upgradeVersionable(bytes memory upgradeData) external;
67
45
 
68
46
  /**
69
47
  * @dev returns version of this contract
@@ -72,25 +50,4 @@ interface IVersionable {
72
50
  */
73
51
  function getVersion() external pure returns(Version);
74
52
 
75
- /**
76
- * @dev returns the number of all deployed versions of this contract
77
- */
78
- function getVersionCount() external view returns(uint256 numberOfVersions);
79
-
80
- /**
81
- * @dev returns the i-th (index) version of this contract
82
- */
83
- function getVersion(uint256 index) external view returns(Version version);
84
-
85
- /**
86
- * @dev returns the i-th (index) version info of this contract
87
- */
88
- function getVersionInfo(Version version) external view returns(VersionInfo memory versionInfo);
89
-
90
- // TODO make sure it is needed here
91
- /**
92
- * @dev returns currently active version
93
- */
94
- function getInitializedVersion() external view returns(uint64);
95
-
96
53
  }
@@ -1,15 +1,12 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- // import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
-
6
4
  import {ERC165} from "./ERC165.sol";
7
5
  import {INftOwnable} from "./INftOwnable.sol";
8
- import {IRegistry} from "../registry/IRegistry.sol";
9
- import {NftId, zeroNftId} from "../types/NftId.sol";
6
+ import {NftId} from "../type/NftId.sol";
10
7
  import {RegistryLinked} from "./RegistryLinked.sol";
11
8
 
12
- contract NftOwnable is
9
+ abstract contract NftOwnable is
13
10
  ERC165,
14
11
  RegistryLinked,
15
12
  INftOwnable
@@ -18,7 +15,6 @@ contract NftOwnable is
18
15
  bytes32 public constant NFT_OWNABLE_STORAGE_LOCATION_V1 = 0x07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00;
19
16
 
20
17
  struct NftOwnableStorage {
21
- // IRegistry _registry;
22
18
  NftId _nftId;
23
19
  address _initialOwner;
24
20
  }
@@ -26,7 +22,7 @@ contract NftOwnable is
26
22
  /// @dev enforces msg.sender is owner of nft (or initial owner of nft ownable)
27
23
  modifier onlyOwner() {
28
24
  if (msg.sender != getOwner()) {
29
- revert ErrorNotOwner(msg.sender);
25
+ revert ErrorNftOwnableNotOwner(msg.sender);
30
26
  }
31
27
  _;
32
28
  }
@@ -42,21 +38,14 @@ contract NftOwnable is
42
38
  virtual
43
39
  onlyInitializing()
44
40
  {
45
- _setInitialOwner(initialOwner);
46
-
47
41
  initializeRegistryLinked(registryAddress);
48
42
  initializeERC165();
49
- registerInterface(type(INftOwnable).interfaceId);
50
- }
51
43
 
44
+ if(initialOwner == address(0)) {
45
+ revert ErrorNftOwnableInitialOwnerZero();
46
+ }
52
47
 
53
- function initializeOwner(address initialOwner)
54
- public
55
- initializer()
56
- {
57
- _setInitialOwner(initialOwner);
58
- initializeERC165();
59
- registerInterface(type(INftOwnable).interfaceId);
48
+ _getNftOwnableStorage()._initialOwner = initialOwner;
60
49
  }
61
50
 
62
51
 
@@ -68,38 +57,24 @@ contract NftOwnable is
68
57
  public
69
58
  virtual
70
59
  {
71
- NftOwnableStorage storage $ = _getNftOwnableStorage();
72
-
73
- if ($._nftId.gtz()) {
74
- revert ErrorAlreadyLinked(address(getRegistry()), $._nftId);
75
- }
76
-
77
- if (address(getRegistry()) == address(0)) {
78
- revert ErrorRegistryNotInitialized();
79
- }
80
-
81
- address contractAddress = address(this);
82
-
83
- if (!getRegistry().isRegistered(contractAddress)) {
84
- revert ErrorContractNotRegistered(contractAddress);
85
- }
86
-
87
- $._nftId = getRegistry().getNftId(contractAddress);
60
+ _linkToNftOwnable(address(this));
88
61
  }
89
62
 
90
-
91
- // function getRegistry() public view virtual override returns (IRegistry) {
92
- // return _getNftOwnableStorage()._registry;
93
- // }
63
+ /// @dev links this contract to nft associated with provided address
64
+ function linkToNftOwnable(
65
+ address nftOwnableAddress
66
+ )
67
+ public
68
+ onlyOwner
69
+ returns (NftId)
70
+ {
71
+ return _linkToNftOwnable(nftOwnableAddress);
72
+ }
94
73
 
95
74
  function getNftId() public view virtual override returns (NftId) {
96
75
  return _getNftOwnableStorage()._nftId;
97
76
  }
98
77
 
99
- function getInitialOwner() public view returns (address) {
100
- return _getNftOwnableStorage()._initialOwner;
101
- }
102
-
103
78
  function getOwner() public view virtual override returns (address) {
104
79
  NftOwnableStorage storage $ = _getNftOwnableStorage();
105
80
 
@@ -110,41 +85,22 @@ contract NftOwnable is
110
85
  return $._initialOwner;
111
86
  }
112
87
 
113
- /// @dev set initialOwner
114
- /// initial owner may only be set during initialization
115
- function _setInitialOwner(address initialOwner)
116
- internal
117
- virtual
118
- onlyInitializing()
119
- {
120
- if(initialOwner == address(0)) {
121
- revert ErrorInitialOwnerZero();
122
- }
123
-
124
- _getNftOwnableStorage()._initialOwner = initialOwner;
125
- }
126
-
127
- // TODO check if function can be refactored to work with a registry address set in an initializer
128
88
  /// @dev used in constructor of registry service manager
129
89
  // links ownership of registry service manager ot nft owner of registry service
130
90
  function _linkToNftOwnable(
131
- address registryAddress,
132
91
  address nftOwnableAddress
133
92
  )
134
93
  internal
135
- onlyOwner()
136
94
  returns (NftId)
137
95
  {
138
96
  NftOwnableStorage storage $ = _getNftOwnableStorage();
139
97
 
140
98
  if ($._nftId.gtz()) {
141
- revert ErrorAlreadyLinked(address(getRegistry()), $._nftId);
99
+ revert ErrorNftOwnableAlreadyLinked($._nftId);
142
100
  }
143
101
 
144
- _setRegistry(registryAddress);
145
-
146
102
  if (!getRegistry().isRegistered(nftOwnableAddress)) {
147
- revert ErrorContractNotRegistered(nftOwnableAddress);
103
+ revert ErrorNftOwnableContractNotRegistered(nftOwnableAddress);
148
104
  }
149
105
 
150
106
  $._nftId = getRegistry().getNftId(nftOwnableAddress);
@@ -153,35 +109,6 @@ contract NftOwnable is
153
109
  }
154
110
 
155
111
 
156
- // function _setRegistry(address registryAddress)
157
- // private
158
- // {
159
- // NftOwnableStorage storage $ = _getNftOwnableStorage();
160
-
161
- // if (address($._registry) != address(0)) {
162
- // revert ErrorRegistryAlreadyInitialized(address($._registry));
163
- // }
164
-
165
- // if (registryAddress == address(0)) {
166
- // revert ErrorRegistryAddressZero();
167
- // }
168
-
169
- // if (registryAddress.code.length == 0) {
170
- // revert ErrorNotRegistry(registryAddress);
171
- // }
172
-
173
- // $._registry = IRegistry(registryAddress);
174
-
175
- // try $._registry.supportsInterface(type(IRegistry).interfaceId) returns (bool isRegistry) {
176
- // if (!isRegistry) {
177
- // revert ErrorNotRegistry(registryAddress);
178
- // }
179
- // } catch {
180
- // revert ErrorNotRegistry(registryAddress);
181
- // }
182
- // }
183
-
184
-
185
112
  function _getNftOwnableStorage() private pure returns (NftOwnableStorage storage $) {
186
113
  assembly {
187
114
  $.slot := NFT_OWNABLE_STORAGE_LOCATION_V1
@@ -5,11 +5,12 @@ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
  import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
6
6
  import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
7
7
 
8
+ import {Amount} from "../type/Amount.sol";
9
+ import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
8
10
  import {ERC165} from "./ERC165.sol";
9
11
  import {IPolicyHolder} from "./IPolicyHolder.sol";
10
- import {IRegistry} from "../registry/IRegistry.sol";
11
- import {NftId} from "../types/NftId.sol";
12
- import {NumberId} from "../types/NumberId.sol";
12
+ import {NftId} from "../type/NftId.sol";
13
+ import {PayoutId} from "../type/PayoutId.sol";
13
14
  import {RegistryLinked} from "./RegistryLinked.sol";
14
15
 
15
16
  /// @dev template implementation for IPolicyHolder
@@ -22,33 +23,43 @@ contract PolicyHolder is
22
23
  // TODO fix address
23
24
  bytes32 public constant POLICY_HOLDER_STORAGE_LOCATION_V1 = 0x07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00;
24
25
 
25
- // TODO uncomment/fix/refactor
26
26
  struct PolicyHolderStorage {
27
- // mapping(NftId policyId => mapping(NumberId claimId => address beneficiary)) private _claimBeneficiary;
28
- // mapping(NftId policyId => address beneficiary) private _beneficiary;
29
- bool dummy;
27
+ mapping(NftId policyId => mapping(ClaimId claimId => address beneficiary)) _beneficiary;
30
28
  }
31
29
 
32
30
  function initializePolicyHolder(
33
- address registryAddress
31
+ address registryAddress,
32
+ address beneficiaryDefault
34
33
  )
35
34
  public
36
35
  virtual
37
36
  onlyInitializing()
38
37
  {
39
38
  initializeRegistryLinked(registryAddress);
39
+ registerInterface(type(IPolicyHolder).interfaceId);
40
40
  }
41
41
 
42
42
  /// @dev empty default implementation
43
- function policyCreatedCallback(NftId policyNftId) external virtual { }
43
+ function policyActivated(NftId policyNftId) external {}
44
44
 
45
45
  /// @dev empty default implementation
46
- function payoutExecutedCallback(NftId policyNftId, NumberId payoutId, address beneficiary, uint256 amount) external virtual { }
46
+ function policyExpired(NftId policyNftId) external {}
47
47
 
48
- /// @dev determines beneficiary address that will be used in payouts targeting this contract
49
- /// returned address will override GIF default where the policy nft holder is treated as beneficiary
50
- function getBeneficiary(NftId policyId, NumberId claimId) external virtual view returns (address beneficiary) {
51
- // TODO add implementation
48
+ /// @dev empty default implementation
49
+ function claimConfirmed(NftId policyNftId, ClaimId claimId, Amount amount) external {}
50
+
51
+ /// @dev empty default implementation
52
+ function payoutExecuted(NftId policyNftId, PayoutId payoutId, address beneficiary, Amount amount) external {}
53
+
54
+ /// @dev returns claim specific beneficiary
55
+ /// when no such beneficiary is defined the policy specific beneficiary is returned
56
+ function getBeneficiary(NftId policyNftId, ClaimId claimId) external virtual view returns (address beneficiary) {
57
+ beneficiary = _getPolicyHolderStorage()._beneficiary[policyNftId][claimId];
58
+
59
+ // fallback to claim independent beneficiary
60
+ if(beneficiary == address(0) && claimId.gtz()) {
61
+ beneficiary = _getPolicyHolderStorage()._beneficiary[policyNftId][ClaimIdLib.zero()];
62
+ }
52
63
  }
53
64
 
54
65
  //--- IERC165 functions ---------------//
@@ -65,12 +76,14 @@ contract PolicyHolder is
65
76
  return IERC721Receiver.onERC721Received.selector;
66
77
  }
67
78
 
68
- function _setBeneficiary(address beneficiary) internal {
69
-
79
+ /// @dev sets policy specific beneficiary (used when no claim specific beneficiary is defined)
80
+ function _setBeneficiary(NftId policyNftId, address beneficiary) internal {
81
+ _setBeneficiary(policyNftId, ClaimIdLib.zero(), beneficiary);
70
82
  }
71
83
 
72
- function _setBeneficiary(NftId policyId, address beneficiary) internal {
73
-
84
+ /// @dev sets policy and claim specific beneficiary
85
+ function _setBeneficiary(NftId policyNftId, ClaimId claimId, address beneficiary) internal {
86
+ _getPolicyHolderStorage()._beneficiary[policyNftId][claimId] = beneficiary;
74
87
  }
75
88
 
76
89
  function _getPolicyHolderStorage() private pure returns (PolicyHolderStorage storage $) {