@etherisc/gif-next 0.0.2-bb1081a-994 → 0.0.2-bbb7ced-843

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 (614) hide show
  1. package/README.md +10 -14
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1416 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1378 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/{components/IPoolComponent.sol/IPoolComponent.json → distribution/IDistributionComponent.sol/IDistributionComponent.json} +398 -276
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +827 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +61 -116
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +239 -1554
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +393 -189
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +430 -2524
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +228 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +661 -341
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +576 -320
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +389 -104
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3598 -0
  32. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  33. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  34. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  35. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  36. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  38. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +187 -0
  40. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  41. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +25 -150
  42. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  44. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  45. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  47. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  48. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  49. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  50. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  51. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → oracle/IOracle.sol/IOracle.json} +2 -2
  52. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  53. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → oracle/IOracleComponent.sol/IOracleComponent.json} +223 -270
  54. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  55. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  56. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  57. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  58. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  59. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  60. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  61. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  62. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  63. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  64. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  65. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  66. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  67. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +269 -346
  68. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  69. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/IPoolComponent.sol/IPoolComponent.json} +448 -290
  70. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  71. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  72. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  73. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  74. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  75. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  76. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  78. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  79. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  80. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  81. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  82. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  83. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  84. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  85. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  86. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  87. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +211 -230
  88. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  89. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  90. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  91. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +251 -297
  92. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  93. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +270 -215
  94. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  95. package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +370 -281
  96. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  97. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IProductService.sol/IProductService.json} +126 -167
  98. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  99. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  100. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  102. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  103. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  104. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  106. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  107. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → product/Product.sol/Product.json} +822 -220
  108. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  109. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  110. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  112. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  113. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  114. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  115. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +203 -21
  116. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  117. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +360 -218
  118. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  119. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +92 -0
  120. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  121. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  122. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  123. package/artifacts/contracts/registry/Registry.sol/Registry.json +440 -36
  124. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  125. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1834 -0
  126. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  127. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +506 -254
  128. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  129. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +352 -95
  130. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  131. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +981 -241
  132. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  133. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +144 -0
  134. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  135. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +349 -82
  136. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  137. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1492 -0
  138. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  139. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  140. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  141. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
  142. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  143. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
  144. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  145. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
  146. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
  148. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  149. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  150. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  151. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1511 -0
  152. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +796 -0
  154. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  155. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +178 -242
  156. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  157. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  158. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  159. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1126 -0
  160. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  161. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  162. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  163. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  164. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  165. package/artifacts/contracts/{components/Component.sol/Component.json → shared/IComponent.sol/IComponent.json} +205 -187
  166. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  167. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  168. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  169. package/artifacts/contracts/{components/IDistributionComponent.sol/IDistributionComponent.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +221 -211
  170. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  171. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -11
  172. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  173. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  174. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  175. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  176. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  177. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  178. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -30
  180. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  181. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  182. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  183. package/artifacts/contracts/shared/IService.sol/IService.json +84 -154
  184. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  185. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  186. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  187. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  188. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  189. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  190. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  191. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
  192. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  193. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  194. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  195. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  196. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +108 -35
  198. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  199. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  200. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  201. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +330 -75
  202. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  203. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +131 -60
  204. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  205. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  206. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  207. package/artifacts/contracts/shared/Service.sol/Service.json +188 -157
  208. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  209. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  210. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  211. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  212. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  213. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  214. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  215. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  216. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  217. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  218. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  219. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  220. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  221. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  222. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  223. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  224. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  225. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  226. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  227. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  228. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  229. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  230. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  231. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2261 -0
  232. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  233. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  234. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  235. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  236. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  237. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  238. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  239. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  240. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  241. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  242. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  243. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  244. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  245. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  246. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  247. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  248. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  250. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  251. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  252. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +186 -0
  254. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  256. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  258. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  260. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  261. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  262. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +266 -0
  264. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  266. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  268. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  270. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  272. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  274. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  276. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  277. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  278. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  279. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  280. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  281. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  282. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  283. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  284. package/contracts/distribution/Distribution.sol +261 -0
  285. package/contracts/distribution/DistributionService.sol +297 -0
  286. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  287. package/contracts/distribution/IDistributionComponent.sol +66 -0
  288. package/contracts/distribution/IDistributionService.sol +81 -0
  289. package/contracts/instance/BundleManager.sol +15 -14
  290. package/contracts/instance/IInstance.sol +61 -46
  291. package/contracts/instance/IInstanceService.sol +77 -20
  292. package/contracts/instance/Instance.sol +176 -182
  293. package/contracts/instance/InstanceAdmin.sol +331 -0
  294. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  295. package/contracts/instance/InstanceReader.sol +159 -60
  296. package/contracts/instance/InstanceService.sol +322 -245
  297. package/contracts/instance/InstanceServiceManager.sol +12 -22
  298. package/contracts/instance/InstanceStore.sol +269 -0
  299. package/contracts/instance/base/BalanceStore.sol +123 -0
  300. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  301. package/contracts/instance/base/ObjectCounter.sol +21 -0
  302. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +12 -16
  303. package/contracts/instance/module/IAccess.sol +19 -21
  304. package/contracts/instance/module/IBundle.sol +8 -8
  305. package/contracts/instance/module/IComponents.sol +52 -0
  306. package/contracts/instance/module/IDistribution.sol +7 -4
  307. package/contracts/instance/module/IPolicy.sol +56 -17
  308. package/contracts/instance/module/IRisk.sol +1 -1
  309. package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
  310. package/contracts/oracle/IOracle.sol +20 -0
  311. package/contracts/oracle/IOracleComponent.sol +32 -0
  312. package/contracts/oracle/IOracleService.sol +65 -0
  313. package/contracts/oracle/Oracle.sol +145 -0
  314. package/contracts/oracle/OracleService.sol +278 -0
  315. package/contracts/oracle/OracleServiceManager.sol +42 -0
  316. package/contracts/pool/BundleService.sol +296 -0
  317. package/contracts/pool/BundleServiceManager.sol +42 -0
  318. package/contracts/pool/IBundleService.sol +106 -0
  319. package/contracts/pool/IPoolComponent.sol +112 -0
  320. package/contracts/pool/IPoolService.sol +150 -0
  321. package/contracts/pool/Pool.sol +299 -0
  322. package/contracts/pool/PoolService.sol +452 -0
  323. package/contracts/pool/PoolServiceManager.sol +42 -0
  324. package/contracts/product/ApplicationService.sol +254 -0
  325. package/contracts/product/ApplicationServiceManager.sol +38 -0
  326. package/contracts/product/ClaimService.sol +442 -0
  327. package/contracts/product/ClaimServiceManager.sol +38 -0
  328. package/contracts/product/IApplicationService.sol +62 -0
  329. package/contracts/product/IClaimService.sol +99 -0
  330. package/contracts/product/IPolicyService.sol +78 -0
  331. package/contracts/product/IPricingService.sol +39 -0
  332. package/contracts/product/IProductComponent.sol +42 -0
  333. package/contracts/product/IProductService.sol +33 -0
  334. package/contracts/product/PolicyService.sol +475 -0
  335. package/contracts/product/PolicyServiceManager.sol +42 -0
  336. package/contracts/product/PricingService.sol +300 -0
  337. package/contracts/product/PricingServiceManager.sol +42 -0
  338. package/contracts/product/Product.sol +377 -0
  339. package/contracts/product/ProductService.sol +124 -0
  340. package/contracts/product/ProductServiceManager.sol +42 -0
  341. package/contracts/registry/ChainNft.sol +16 -1
  342. package/contracts/registry/IRegistry.sol +47 -21
  343. package/contracts/registry/IRegistryService.sol +42 -38
  344. package/contracts/registry/IServiceAuthorization.sol +28 -0
  345. package/contracts/registry/ITransferInterceptor.sol +1 -0
  346. package/contracts/registry/Registry.sol +221 -97
  347. package/contracts/registry/RegistryAdmin.sol +331 -0
  348. package/contracts/registry/RegistryService.sol +108 -104
  349. package/contracts/registry/RegistryServiceManager.sol +22 -31
  350. package/contracts/registry/ReleaseManager.sol +558 -193
  351. package/contracts/registry/ServiceAuthorizationV3.sol +246 -0
  352. package/contracts/registry/TokenRegistry.sol +263 -60
  353. package/contracts/shared/AccessAdmin.sol +696 -0
  354. package/contracts/shared/AccessManagerCustom.sol +741 -0
  355. package/contracts/shared/AccessManagerExtended.sol +481 -0
  356. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  357. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  358. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  359. package/contracts/shared/Component.sol +281 -0
  360. package/contracts/shared/ComponentService.sol +617 -0
  361. package/contracts/shared/ComponentServiceManager.sol +35 -0
  362. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  363. package/contracts/shared/ERC165.sol +15 -13
  364. package/contracts/shared/IAccessAdmin.sol +146 -0
  365. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  366. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  367. package/contracts/shared/IComponent.sol +70 -0
  368. package/contracts/shared/IComponentService.sol +102 -0
  369. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  370. package/contracts/{instance/base → shared}/IKeyValueStore.sol +15 -11
  371. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
  372. package/contracts/shared/INftOwnable.sol +13 -12
  373. package/contracts/shared/IPolicyHolder.sol +45 -0
  374. package/contracts/shared/IRegisterable.sol +3 -3
  375. package/contracts/shared/IRegistryLinked.sol +11 -0
  376. package/contracts/shared/IService.sol +14 -5
  377. package/contracts/shared/IVersionable.sol +5 -48
  378. package/contracts/shared/InitializableCustom.sol +177 -0
  379. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  380. package/contracts/shared/KeyValueStore.sol +127 -0
  381. package/contracts/{instance/base → shared}/Lifecycle.sol +37 -7
  382. package/contracts/shared/NftIdSetManager.sol +65 -0
  383. package/contracts/shared/NftOwnable.sol +59 -91
  384. package/contracts/shared/PolicyHolder.sol +102 -0
  385. package/contracts/shared/ProxyManager.sol +131 -26
  386. package/contracts/shared/Registerable.sol +19 -30
  387. package/contracts/shared/RegistryLinked.sol +43 -0
  388. package/contracts/shared/Service.sol +54 -31
  389. package/contracts/shared/TokenHandler.sol +37 -6
  390. package/contracts/shared/Versionable.sol +4 -92
  391. package/contracts/staking/IStaking.sol +168 -0
  392. package/contracts/staking/IStakingService.sol +153 -0
  393. package/contracts/staking/StakeManagerLib.sol +231 -0
  394. package/contracts/staking/Staking.sol +513 -0
  395. package/contracts/staking/StakingManager.sol +54 -0
  396. package/contracts/staking/StakingReader.sol +187 -0
  397. package/contracts/staking/StakingService.sol +411 -0
  398. package/contracts/staking/StakingServiceManager.sol +44 -0
  399. package/contracts/staking/StakingStore.sol +613 -0
  400. package/contracts/staking/TargetManagerLib.sol +207 -0
  401. package/contracts/{types → type}/AddressSet.sol +1 -1
  402. package/contracts/type/Amount.sol +128 -0
  403. package/contracts/{types → type}/Blocknumber.sol +21 -3
  404. package/contracts/type/ClaimId.sol +75 -0
  405. package/contracts/{types → type}/DistributorType.sol +2 -2
  406. package/contracts/{types → type}/Fee.sol +33 -23
  407. package/contracts/{types → type}/NftId.sol +21 -15
  408. package/contracts/{types → type}/NftIdSet.sol +2 -2
  409. package/contracts/type/ObjectType.sol +241 -0
  410. package/contracts/type/PayoutId.sol +82 -0
  411. package/contracts/{types → type}/Referral.sol +5 -1
  412. package/contracts/type/RequestId.sol +75 -0
  413. package/contracts/{types → type}/RiskId.sol +1 -1
  414. package/contracts/type/RoleId.sol +201 -0
  415. package/contracts/type/Seconds.sol +81 -0
  416. package/contracts/type/Selector.sol +102 -0
  417. package/contracts/{types → type}/StateId.sol +34 -4
  418. package/contracts/type/String.sol +53 -0
  419. package/contracts/{types → type}/Timestamp.sol +23 -14
  420. package/contracts/{types → type}/UFixed.sol +1 -0
  421. package/contracts/{types → type}/Version.sol +2 -1
  422. package/package.json +5 -5
  423. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  424. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  425. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  426. package/artifacts/contracts/components/IComponent.sol/IComponent.json +0 -502
  427. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  428. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  429. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  430. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  431. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  432. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  433. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  434. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  435. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  436. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  437. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  438. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  439. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  440. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  441. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  442. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  443. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  444. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  445. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  446. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  447. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  448. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  449. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  450. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  451. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  452. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  453. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  454. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  455. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  456. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  457. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  458. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  459. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  460. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  461. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  462. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  463. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  464. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  465. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  466. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  467. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  468. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  469. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  470. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  471. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  472. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  473. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1034
  474. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  475. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  476. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  477. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  478. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  479. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  480. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  481. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  482. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  483. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  484. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  485. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  486. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1167
  487. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  488. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -449
  489. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  490. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -772
  491. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  492. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -437
  493. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  494. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  495. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  496. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  497. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  498. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  499. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1227
  500. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  501. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -505
  502. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  503. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -806
  504. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  505. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -437
  506. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  507. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -856
  508. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  509. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -437
  510. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  511. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  512. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  513. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  514. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  515. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  516. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  517. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -313
  518. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  519. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  520. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  521. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -608
  522. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  523. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  524. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  525. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  526. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  527. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  528. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  529. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  530. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  531. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  532. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  533. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  534. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  535. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  536. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  537. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  538. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  539. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  540. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  541. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  542. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  543. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  544. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  545. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  546. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  547. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  548. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  549. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  550. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  551. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  552. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  553. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  554. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  555. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  556. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  557. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  558. package/contracts/components/Component.sol +0 -247
  559. package/contracts/components/Distribution.sol +0 -143
  560. package/contracts/components/IComponent.sol +0 -50
  561. package/contracts/components/IDistributionComponent.sol +0 -47
  562. package/contracts/components/IPoolComponent.sol +0 -77
  563. package/contracts/components/IProductComponent.sol +0 -39
  564. package/contracts/components/Pool.sol +0 -257
  565. package/contracts/components/Product.sol +0 -263
  566. package/contracts/experiment/cloning/Cloner.sol +0 -47
  567. package/contracts/experiment/errors/Require.sol +0 -38
  568. package/contracts/experiment/errors/Revert.sol +0 -44
  569. package/contracts/experiment/inheritance/A.sol +0 -53
  570. package/contracts/experiment/inheritance/B.sol +0 -28
  571. package/contracts/experiment/inheritance/C.sol +0 -34
  572. package/contracts/experiment/inheritance/IA.sol +0 -13
  573. package/contracts/experiment/inheritance/IB.sol +0 -10
  574. package/contracts/experiment/inheritance/IC.sol +0 -12
  575. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  576. package/contracts/experiment/statemachine/ISM.sol +0 -25
  577. package/contracts/experiment/statemachine/SM.sol +0 -57
  578. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  579. package/contracts/experiment/types/TypeA.sol +0 -47
  580. package/contracts/experiment/types/TypeB.sol +0 -29
  581. package/contracts/instance/InstanceAccessManager.sol +0 -298
  582. package/contracts/instance/base/ComponentService.sol +0 -134
  583. package/contracts/instance/base/KeyValueStore.sol +0 -172
  584. package/contracts/instance/module/ISetup.sol +0 -46
  585. package/contracts/instance/module/ITreasury.sol +0 -23
  586. package/contracts/instance/service/BundleService.sol +0 -299
  587. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  588. package/contracts/instance/service/DistributionService.sol +0 -106
  589. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  590. package/contracts/instance/service/IBundleService.sol +0 -54
  591. package/contracts/instance/service/IDistributionService.sol +0 -12
  592. package/contracts/instance/service/IPolicyService.sol +0 -94
  593. package/contracts/instance/service/IPoolService.sol +0 -20
  594. package/contracts/instance/service/IProductService.sol +0 -40
  595. package/contracts/instance/service/PolicyService.sol +0 -519
  596. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  597. package/contracts/instance/service/PoolService.sol +0 -109
  598. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  599. package/contracts/instance/service/ProductService.sol +0 -232
  600. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  601. package/contracts/registry/RegistryAccessManager.sol +0 -216
  602. package/contracts/shared/ContractDeployerLib.sol +0 -72
  603. package/contracts/test/TestFee.sol +0 -25
  604. package/contracts/test/TestRegisterable.sol +0 -18
  605. package/contracts/test/TestRoleId.sol +0 -14
  606. package/contracts/test/TestService.sol +0 -25
  607. package/contracts/test/TestVersion.sol +0 -44
  608. package/contracts/test/TestVersionable.sol +0 -17
  609. package/contracts/test/Usdc.sol +0 -26
  610. package/contracts/types/ChainId.sol +0 -38
  611. package/contracts/types/NumberId.sol +0 -52
  612. package/contracts/types/ObjectType.sol +0 -152
  613. package/contracts/types/RoleId.sol +0 -90
  614. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,127 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Blocknumber, blockBlocknumber, zeroBlocknumber} from "../type/Blocknumber.sol";
5
+ import {Key32, KeyId, Key32Lib} from "../type/Key32.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
8
+ import {StateId, ACTIVE, KEEP_STATE} from "../type/StateId.sol";
9
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
10
+
11
+ import {Lifecycle} from "./Lifecycle.sol";
12
+ import {IKeyValueStore} from "./IKeyValueStore.sol";
13
+
14
+ contract KeyValueStore is
15
+ Lifecycle,
16
+ IKeyValueStore
17
+ {
18
+
19
+ mapping(Key32 key32 => Value value) private _value;
20
+
21
+ function _create(
22
+ Key32 key32,
23
+ bytes memory data
24
+ )
25
+ internal
26
+ {
27
+ ObjectType objectType = key32.toObjectType();
28
+ if (objectType.eqz()) {
29
+ revert ErrorKeyValueStoreTypeUndefined(objectType);
30
+ }
31
+
32
+ Metadata storage metadata = _value[key32].metadata;
33
+ if (metadata.state.gtz()) {
34
+ revert ErrorKeyValueStoreAlreadyCreated(key32, objectType);
35
+ }
36
+
37
+ Blocknumber blocknumber = blockBlocknumber();
38
+ StateId initialState = hasLifecycle(objectType) ? getInitialState(objectType) : ACTIVE();
39
+
40
+ // set metadata
41
+ metadata.objectType = objectType;
42
+ metadata.state = initialState;
43
+ metadata.updatedIn = blocknumber;
44
+ metadata.createdIn = blocknumber;
45
+
46
+ // set data
47
+ _value[key32].data = data;
48
+
49
+ // solhint-disable-next-line avoid-tx-origin
50
+ emit LogInfoCreated(key32.toObjectType(), key32.toKeyId(), initialState, msg.sender, tx.origin);
51
+ }
52
+
53
+
54
+ function _update(
55
+ Key32 key32,
56
+ bytes memory data,
57
+ StateId state
58
+ )
59
+ internal
60
+ {
61
+ // update state
62
+ Blocknumber lastUpdatedIn = _updateState(key32, state);
63
+
64
+ // update data
65
+ _value[key32].data = data;
66
+
67
+ // solhint-disable-next-line avoid-tx-origin
68
+ emit LogInfoUpdated(key32.toObjectType(), key32.toKeyId(), state, msg.sender, tx.origin, lastUpdatedIn);
69
+ }
70
+
71
+
72
+ function _updateState(
73
+ Key32 key32,
74
+ StateId state
75
+ )
76
+ internal
77
+ returns (Blocknumber lastUpdatedIn)
78
+ {
79
+ if (state.eqz()) {
80
+ revert ErrorKeyValueStoreStateZero(key32);
81
+ }
82
+
83
+ Metadata storage metadata = _value[key32].metadata;
84
+ StateId stateOld = metadata.state;
85
+ lastUpdatedIn = metadata.updatedIn;
86
+
87
+ if (stateOld.eqz()) {
88
+ revert ErrorKeyValueStoreNotExisting(key32);
89
+ }
90
+
91
+ // update state
92
+ if(state != KEEP_STATE()) {
93
+ checkTransition(metadata.objectType, stateOld, state);
94
+ metadata.state = state;
95
+
96
+ // solhint-disable-next-line avoid-tx-origin
97
+ emit LogStateUpdated(key32.toObjectType(), key32.toKeyId(), stateOld, state, msg.sender, tx.origin, lastUpdatedIn);
98
+ }
99
+
100
+ // update metadata
101
+ metadata.updatedIn = blockBlocknumber();
102
+ }
103
+
104
+ function exists(Key32 key32) public view returns (bool) {
105
+ return _value[key32].metadata.state.gtz();
106
+ }
107
+
108
+ function get(Key32 key32) public view returns (Value memory value) {
109
+ return _value[key32];
110
+ }
111
+
112
+ function getMetadata(Key32 key32) public view returns (Metadata memory metadata) {
113
+ return _value[key32].metadata;
114
+ }
115
+
116
+ function getData(Key32 key32) public view returns (bytes memory data) {
117
+ return _value[key32].data;
118
+ }
119
+
120
+ function getState(Key32 key32) public view returns (StateId state) {
121
+ return _value[key32].metadata.state;
122
+ }
123
+
124
+ function toKey32(ObjectType objectType, KeyId id) external pure override returns(Key32) {
125
+ return Key32Lib.toKey32(objectType, id);
126
+ }
127
+ }
@@ -1,23 +1,33 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {NftId} from "../../types/NftId.sol";
5
- import {ObjectType, COMPONENT, BUNDLE, POLICY, RISK} from "../../types/ObjectType.sol";
6
- import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, UNDERWRITTEN, REVOKED, DECLINED} from "../../types/StateId.sol";
4
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
+
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType, COMPONENT, BUNDLE, POLICY, REQUEST, RISK, CLAIM, PAYOUT} from "../type/ObjectType.sol";
8
+ import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, COLLATERALIZED, REVOKED, SUBMITTED, CONFIRMED, DECLINED, EXPECTED, PAID, FULFILLED, FAILED, CANCELLED} from "../type/StateId.sol";
7
9
  import {ILifecycle} from "./ILifecycle.sol";
8
10
 
9
- contract Lifecycle is ILifecycle {
11
+ contract Lifecycle is
12
+ Initializable,
13
+ ILifecycle
14
+ {
10
15
  mapping(ObjectType objectType => StateId initialState)
11
16
  private _initialState;
12
17
 
13
18
  mapping(ObjectType objectType => mapping(StateId stateFrom => mapping(StateId stateTo => bool isValid)))
14
19
  private _isValidTransition;
15
20
 
16
- constructor() {
21
+ function initializeLifecycle()
22
+ public
23
+ onlyInitializing
24
+ {
17
25
  _setupBundleLifecycle();
18
26
  _setupComponentLifecycle();
19
27
  _setupPolicyLifecycle();
28
+ _setupClaimAndPayoutLifecycle();
20
29
  _setupRiskLifecycle();
30
+ _setupRequestLifecycle();
21
31
  }
22
32
 
23
33
  function hasLifecycle(
@@ -78,6 +88,7 @@ contract Lifecycle is ILifecycle {
78
88
  function _setupBundleLifecycle() internal {
79
89
  _initialState[BUNDLE()] = ACTIVE();
80
90
  _isValidTransition[BUNDLE()][ACTIVE()][PAUSED()] = true;
91
+ _isValidTransition[BUNDLE()][ACTIVE()][CLOSED()] = true;
81
92
  _isValidTransition[BUNDLE()][PAUSED()][ACTIVE()] = true;
82
93
  _isValidTransition[BUNDLE()][PAUSED()][CLOSED()] = true;
83
94
  }
@@ -86,15 +97,34 @@ contract Lifecycle is ILifecycle {
86
97
  _initialState[POLICY()] = APPLIED();
87
98
  _isValidTransition[POLICY()][APPLIED()][REVOKED()] = true;
88
99
  _isValidTransition[POLICY()][APPLIED()][DECLINED()] = true;
89
- _isValidTransition[POLICY()][APPLIED()][UNDERWRITTEN()] = true;
90
- _isValidTransition[POLICY()][UNDERWRITTEN()][ACTIVE()] = true;
100
+ _isValidTransition[POLICY()][APPLIED()][COLLATERALIZED()] = true;
101
+ _isValidTransition[POLICY()][APPLIED()][ACTIVE()] = true;
102
+ _isValidTransition[POLICY()][COLLATERALIZED()][ACTIVE()] = true;
91
103
  _isValidTransition[POLICY()][ACTIVE()][CLOSED()] = true;
92
104
  }
93
105
 
106
+ function _setupClaimAndPayoutLifecycle() internal {
107
+ _initialState[CLAIM()] = SUBMITTED();
108
+ _isValidTransition[CLAIM()][SUBMITTED()][CONFIRMED()] = true;
109
+ _isValidTransition[CLAIM()][SUBMITTED()][DECLINED()] = true;
110
+ _isValidTransition[CLAIM()][CONFIRMED()][CLOSED()] = true;
111
+
112
+ _initialState[PAYOUT()] = EXPECTED();
113
+ _isValidTransition[PAYOUT()][EXPECTED()][PAID()] = true;
114
+ }
115
+
94
116
  function _setupRiskLifecycle() internal {
95
117
  _initialState[RISK()] = ACTIVE();
96
118
  _isValidTransition[RISK()][ACTIVE()][PAUSED()] = true;
97
119
  _isValidTransition[RISK()][PAUSED()][ACTIVE()] = true;
98
120
  _isValidTransition[RISK()][PAUSED()][ARCHIVED()] = true;
99
121
  }
122
+
123
+ function _setupRequestLifecycle() internal {
124
+ _initialState[REQUEST()] = ACTIVE();
125
+ _isValidTransition[REQUEST()][ACTIVE()][FULFILLED()] = true;
126
+ _isValidTransition[REQUEST()][ACTIVE()][FAILED()] = true;
127
+ _isValidTransition[REQUEST()][FAILED()][FULFILLED()] = true;
128
+ _isValidTransition[REQUEST()][ACTIVE()][CANCELLED()] = true;
129
+ }
100
130
  }
@@ -0,0 +1,65 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {LibNftIdSet} from "../type/NftIdSet.sol";
5
+ import {NftId} from "../type/NftId.sol";
6
+
7
+ contract NftIdSetManager {
8
+
9
+ error ErrorNftIdSetManagerNotOwner(address owner, address sender);
10
+ error ErrorNftIdSetManagerOwnerAlreadySet(address owner);
11
+ error ErrorNftIdSetManagerNftIdInvalid(NftId objectNftId);
12
+ error ErrorNftIdSetManagerAlreadyAdded(NftId objectNftId);
13
+
14
+ LibNftIdSet.Set private _allObjects;
15
+ LibNftIdSet.Set private _activeObjects;
16
+ address private _owner;
17
+
18
+ modifier onlyOwner() {
19
+ if(msg.sender != _owner) {
20
+ revert ErrorNftIdSetManagerNotOwner(_owner, msg.sender);
21
+ }
22
+ _;
23
+ }
24
+
25
+ constructor() {
26
+ _owner = msg.sender;
27
+ }
28
+
29
+ function add(NftId objectNftId) external onlyOwner {
30
+ LibNftIdSet.add(_allObjects, objectNftId);
31
+ LibNftIdSet.add(_activeObjects, objectNftId);
32
+ }
33
+
34
+ function activate(NftId componentNftId, NftId objectNftId) external onlyOwner {
35
+ LibNftIdSet.add(_activeObjects, objectNftId);
36
+ }
37
+
38
+ function deactivate(NftId componentNftId, NftId objectNftId) external onlyOwner {
39
+ LibNftIdSet.remove(_activeObjects, objectNftId);
40
+ }
41
+
42
+ function nftIds() external view returns (uint256 ids) {
43
+ return LibNftIdSet.size(_allObjects);
44
+ }
45
+
46
+ function getNftId(uint256 idx) external view returns (NftId) {
47
+ return LibNftIdSet.getElementAt(_allObjects, idx);
48
+ }
49
+
50
+ function exists(NftId objectNftId) external view returns (bool) {
51
+ return LibNftIdSet.contains(_allObjects, objectNftId);
52
+ }
53
+
54
+ function activeNftIds() external view returns (uint256 ids) {
55
+ return LibNftIdSet.size(_activeObjects);
56
+ }
57
+
58
+ function getActiveNftId(uint256 idx) external view returns (NftId) {
59
+ return LibNftIdSet.getElementAt(_activeObjects, idx);
60
+ }
61
+
62
+ function isActive(NftId objectNftId) external view returns (bool) {
63
+ return LibNftIdSet.contains(_activeObjects, objectNftId);
64
+ }
65
+ }
@@ -1,139 +1,107 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {ERC165} from "./ERC165.sol";
4
5
  import {INftOwnable} from "./INftOwnable.sol";
5
- import {IRegistry} from "../registry/IRegistry.sol";
6
- import {NftId, zeroNftId} from "../types/NftId.sol";
7
-
8
- // TODO make contract upgradeable
9
- contract NftOwnable is INftOwnable {
10
-
11
- // TODO move vars to struct and add _getNftOwnableStorage
12
- IRegistry internal _registry;
13
- NftId private _nftId;
14
- address private _initialOwner;
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {RegistryLinked} from "./RegistryLinked.sol";
8
+
9
+ contract NftOwnable is
10
+ ERC165,
11
+ RegistryLinked,
12
+ INftOwnable
13
+ {
14
+ // keccak256(abi.encode(uint256(keccak256("etherisc.storage.NftOwnable")) - 1)) & ~bytes32(uint256(0xff));
15
+ bytes32 public constant NFT_OWNABLE_STORAGE_LOCATION_V1 = 0x07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00;
16
+
17
+ struct NftOwnableStorage {
18
+ NftId _nftId;
19
+ address _initialOwner;
20
+ }
15
21
 
16
22
  /// @dev enforces msg.sender is owner of nft (or initial owner of nft ownable)
17
23
  modifier onlyOwner() {
18
24
  if (msg.sender != getOwner()) {
19
- revert ErrorNotOwner(msg.sender);
25
+ revert ErrorNftOwnableNotOwner(msg.sender);
20
26
  }
21
27
  _;
22
28
  }
23
29
 
24
- constructor() {
25
- _initialOwner = msg.sender;
26
- }
27
30
 
28
- /// @dev links this contract to nft after registration
29
- // needs to be done once per registered contract and
30
- // reduces registry calls to check ownership
31
- // does not need any protection as function can only do the "right thing"
32
- function linkToRegisteredNftId() public {
33
- if (_nftId.gtz()) {
34
- revert ErrorAlreadyLinked(address(_registry), _nftId);
35
- }
36
-
37
- if (address(_registry) == address(0)) {
38
- revert ErrorRegistryNotInitialized();
39
- }
40
-
41
- address contractAddress = address(this);
31
+ /// @dev initialization for upgradable contracts
32
+ // used in _initializeRegisterable
33
+ function initializeNftOwnable(
34
+ address initialOwner,
35
+ address registryAddress
36
+ )
37
+ public
38
+ virtual
39
+ onlyInitializing()
40
+ {
41
+ initializeRegistryLinked(registryAddress);
42
+ initializeERC165();
42
43
 
43
- if (!_registry.isRegistered(contractAddress)) {
44
- revert ErrorContractNotRegistered(contractAddress);
44
+ if(initialOwner == address(0)) {
45
+ revert ErrorNftOwnableInitialOwnerZero();
45
46
  }
46
47
 
47
- _nftId = _registry.getNftId(contractAddress);
48
+ _getNftOwnableStorage()._initialOwner = initialOwner;
48
49
  }
49
50
 
50
51
 
51
- function getRegistry() public view virtual override returns (IRegistry) {
52
- return _registry;
52
+ /// @dev links this contract to nft after registration
53
+ // needs to be done once per registered contract and
54
+ // reduces registry calls to check ownership
55
+ // does not need any protection as function can only do the "right thing"
56
+ function linkToRegisteredNftId()
57
+ public
58
+ virtual
59
+ returns (NftId nftId)
60
+ {
61
+ return _linkToNftOwnable(address(this));
53
62
  }
54
63
 
55
-
56
64
  function getNftId() public view virtual override returns (NftId) {
57
- return _nftId;
58
- }
59
-
60
- function getInitialOwner() public view returns (address) {
61
- return _initialOwner;
65
+ return _getNftOwnableStorage()._nftId;
62
66
  }
63
67
 
64
68
  function getOwner() public view virtual override returns (address) {
65
- if (_nftId.gtz()) {
66
- return _registry.ownerOf(_nftId);
69
+ NftOwnableStorage storage $ = _getNftOwnableStorage();
70
+
71
+ if ($._nftId.gtz()) {
72
+ return getRegistry().ownerOf($._nftId);
67
73
  }
68
74
 
69
- return _initialOwner;
75
+ return $._initialOwner;
70
76
  }
71
77
 
72
-
73
- /// @dev initialization for upgradable contracts
74
- // used in _initializeRegisterable
75
- function _initializeNftOwnable(
76
- address initialOwner,
77
- address registryAddress
78
- )
79
- internal
80
- virtual
81
- {
82
- require(initialOwner > address(0), "NftOwnable: initial owner is 0");
83
- _initialOwner = initialOwner;
84
- _setRegistry(registryAddress);
85
- }
86
-
87
-
88
78
  /// @dev used in constructor of registry service manager
89
79
  // links ownership of registry service manager ot nft owner of registry service
90
80
  function _linkToNftOwnable(
91
- address registryAddress,
92
81
  address nftOwnableAddress
93
82
  )
94
83
  internal
95
- onlyOwner()
96
84
  returns (NftId)
97
85
  {
98
- if (_nftId.gtz()) {
99
- revert ErrorAlreadyLinked(address(_registry), _nftId);
100
- }
86
+ NftOwnableStorage storage $ = _getNftOwnableStorage();
101
87
 
102
- _setRegistry(registryAddress);
103
-
104
- if (!_registry.isRegistered(nftOwnableAddress)) {
105
- revert ErrorContractNotRegistered(nftOwnableAddress);
88
+ if ($._nftId.gtz()) {
89
+ revert ErrorNftOwnableAlreadyLinked($._nftId);
106
90
  }
107
91
 
108
- _nftId = _registry.getNftId(nftOwnableAddress);
109
-
110
- return _nftId;
111
- }
112
-
113
-
114
- function _setRegistry(address registryAddress)
115
- private
116
- {
117
- if (address(_registry) != address(0)) {
118
- revert ErrorRegistryAlreadyInitialized(address(_registry));
92
+ if (!getRegistry().isRegistered(nftOwnableAddress)) {
93
+ revert ErrorNftOwnableContractNotRegistered(nftOwnableAddress);
119
94
  }
120
95
 
121
- if (registryAddress == address(0)) {
122
- revert ErrorRegistryAddressZero();
123
- }
96
+ $._nftId = getRegistry().getNftId(nftOwnableAddress);
124
97
 
125
- if (registryAddress.code.length == 0) {
126
- revert ErrorNotRegistry(registryAddress);
127
- }
98
+ return $._nftId;
99
+ }
128
100
 
129
- _registry = IRegistry(registryAddress);
130
101
 
131
- try _registry.supportsInterface(type(IRegistry).interfaceId) returns (bool isRegistry) {
132
- if (!isRegistry) {
133
- revert ErrorNotRegistry(registryAddress);
134
- }
135
- } catch {
136
- revert ErrorNotRegistry(registryAddress);
102
+ function _getNftOwnableStorage() private pure returns (NftOwnableStorage storage $) {
103
+ assembly {
104
+ $.slot := NFT_OWNABLE_STORAGE_LOCATION_V1
137
105
  }
138
106
  }
139
107
  }
@@ -0,0 +1,102 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+ import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
6
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
7
+
8
+ import {Amount} from "../type/Amount.sol";
9
+ import {ClaimId} from "../type/ClaimId.sol";
10
+ import {ERC165} from "./ERC165.sol";
11
+ import {IPolicyHolder} from "./IPolicyHolder.sol";
12
+ import {NftId} from "../type/NftId.sol";
13
+ import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
14
+ import {RegistryLinked} from "./RegistryLinked.sol";
15
+ import {IRegistry} from "../registry/IRegistry.sol";
16
+
17
+ /// @dev template implementation for IPolicyHolder
18
+ contract PolicyHolder is
19
+ ERC165,
20
+ RegistryLinked, // TODO need upgradeable version
21
+ IPolicyHolder
22
+ {
23
+ // keccak256(abi.encode(uint256(keccak256("etherisc.storage.PolicyHolder")) - 1)) & ~bytes32(uint256(0xff));
24
+ // TODO fix address
25
+ bytes32 public constant POLICY_HOLDER_STORAGE_LOCATION_V1 = 0x07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00;
26
+
27
+ struct PolicyHolderStorage {
28
+ mapping(NftId policyId => mapping(PayoutId payoutId => address beneficiary)) _beneficiary;
29
+ address _beneficiaryDefault;
30
+ }
31
+
32
+ function initializePolicyHolder(
33
+ address registryAddress,
34
+ address beneficiaryDefault
35
+ )
36
+ public
37
+ virtual
38
+ onlyInitializing()
39
+ {
40
+ initializeRegistryLinked(registryAddress);
41
+
42
+ _getPolicyHolderStorage()._beneficiaryDefault = beneficiaryDefault;
43
+
44
+ registerInterface(type(IPolicyHolder).interfaceId);
45
+ }
46
+
47
+ /// @dev empty default implementation
48
+ function requestPayout(NftId requestingPolicyNftId, Amount requestedPayoutAmount) external { }
49
+
50
+ /// @dev empty default implementation
51
+ function policyActivated(NftId policyNftId) external {}
52
+
53
+ /// @dev empty default implementation
54
+ function policyExpired(NftId policyNftId) external {}
55
+
56
+ /// @dev empty default implementation
57
+ function claimConfirmed(NftId policyNftId, ClaimId claimId, Amount amount) external {}
58
+
59
+ /// @dev empty default implementation
60
+ function payoutExecuted(NftId policyNftId, PayoutId payoutId, address beneficiary, Amount amount) external {}
61
+
62
+ /// @dev returns payout specific beneficiary
63
+ /// when no such beneficiary is defined the policy specific beneficiary is returned
64
+ function getBeneficiary(NftId policyNftId, PayoutId payoutId) external virtual view returns (address beneficiary) {
65
+ beneficiary = _getPolicyHolderStorage()._beneficiary[policyNftId][payoutId];
66
+
67
+ // fallback to claim independent beneficiary
68
+ if(beneficiary == address(0) && payoutId.gtz()) {
69
+ beneficiary = _getPolicyHolderStorage()._beneficiary[policyNftId][PayoutIdLib.zero()];
70
+ }
71
+ }
72
+
73
+ //--- IERC165 functions ---------------//
74
+ function onERC721Received(
75
+ address, // operator
76
+ address, // from
77
+ uint256, // tokenId
78
+ bytes calldata // data
79
+ )
80
+ external
81
+ virtual
82
+ returns (bytes4)
83
+ {
84
+ return IERC721Receiver.onERC721Received.selector;
85
+ }
86
+
87
+ /// @dev sets policy specific beneficiary (used when no payout specific beneficiary is defined)
88
+ function _setBeneficiary(NftId policyNftId, address beneficiary) internal {
89
+ _setBeneficiary(policyNftId, PayoutIdLib.zero(), beneficiary);
90
+ }
91
+
92
+ /// @dev sets policy and claim specific beneficiary
93
+ function _setBeneficiary(NftId policyNftId, PayoutId payoutId, address beneficiary) internal {
94
+ _getPolicyHolderStorage()._beneficiary[policyNftId][payoutId] = beneficiary;
95
+ }
96
+
97
+ function _getPolicyHolderStorage() private pure returns (PolicyHolderStorage storage $) {
98
+ assembly {
99
+ $.slot := POLICY_HOLDER_STORAGE_LOCATION_V1
100
+ }
101
+ }
102
+ }