@etherisc/gif-next 0.0.2-bb1081a-994 → 0.0.2-bc0a9a8-101

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 (570) 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 +1349 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +818 -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 +814 -0
  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 +268 -1576
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +296 -211
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +455 -2542
  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 +204 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +609 -425
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +464 -375
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +368 -107
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3458 -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 +6 -1
  36. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  38. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  39. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +25 -150
  40. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  41. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  42. package/artifacts/contracts/instance/module/{ISetup.sol/ISetup.json → IComponents.sol/IComponents.json} +2 -2
  43. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  46. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  47. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  48. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  49. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1105 -0
  50. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  51. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +746 -0
  52. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  53. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +256 -346
  54. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  55. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/IPoolComponent.sol/IPoolComponent.json} +448 -290
  56. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  57. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1065 -0
  58. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  59. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  60. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  61. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1432 -0
  62. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +738 -0
  64. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  65. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +834 -0
  66. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +722 -0
  68. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  69. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1278 -0
  70. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +810 -0
  72. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  73. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +203 -235
  74. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  75. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +759 -0
  76. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  77. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +244 -303
  78. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  79. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +263 -221
  80. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  81. package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +370 -281
  82. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  83. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IProductService.sol/IProductService.json} +116 -170
  84. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  85. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1146 -0
  86. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  87. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +754 -0
  88. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  89. package/artifacts/contracts/product/PricingService.sol/PricingService.json +983 -0
  90. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +778 -0
  92. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  93. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → product/Product.sol/Product.json} +822 -220
  94. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  95. package/artifacts/contracts/product/ProductService.sol/ProductService.json +679 -0
  96. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  97. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +694 -0
  98. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  99. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  100. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  101. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +203 -21
  102. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  103. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +349 -220
  104. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  105. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  106. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  107. package/artifacts/contracts/registry/Registry.sol/Registry.json +440 -36
  108. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  109. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +407 -0
  110. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  111. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +480 -265
  112. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +340 -95
  114. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  115. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +834 -89
  116. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
  117. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
  118. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +349 -82
  120. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  121. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  122. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  123. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
  124. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  125. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
  126. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  127. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
  128. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  129. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
  130. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  131. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → shared/Component.sol/Component.json} +361 -271
  132. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  133. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1475 -0
  134. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  135. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +788 -0
  136. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  137. package/artifacts/contracts/{components/IComponent.sol/IComponent.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +209 -185
  138. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  139. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  140. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  141. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  142. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  143. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  144. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  145. package/artifacts/contracts/{components/Component.sol/Component.json → shared/IComponent.sol/IComponent.json} +205 -187
  146. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  147. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +860 -0
  148. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  149. package/artifacts/contracts/{components/IDistributionComponent.sol/IDistributionComponent.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +221 -211
  150. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  151. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -11
  152. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  153. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  154. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  155. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  156. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  157. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  158. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  159. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -30
  160. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  161. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  162. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  163. package/artifacts/contracts/shared/IService.sol/IService.json +75 -158
  164. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  165. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  166. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  167. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  168. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  169. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  170. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  171. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
  172. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  173. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  174. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  175. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  176. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  177. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +108 -35
  178. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  179. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  180. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  181. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +330 -75
  182. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  183. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +131 -60
  184. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  185. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  186. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  187. package/artifacts/contracts/shared/Service.sol/Service.json +178 -160
  188. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  189. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  190. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  191. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  192. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  193. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  194. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  195. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  196. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  197. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +993 -0
  198. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  199. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +444 -0
  200. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  201. package/artifacts/contracts/staking/Staking.sol/Staking.json +2045 -0
  202. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  203. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +777 -0
  204. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  205. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  206. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  207. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1324 -0
  208. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  209. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +726 -0
  210. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  211. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2189 -0
  212. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  213. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  214. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  215. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  216. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  217. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  218. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  219. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  220. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  221. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  222. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  223. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  224. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  225. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  226. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  227. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  228. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  229. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  230. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  231. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  232. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  233. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  234. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  235. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  236. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  237. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  238. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  239. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  240. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  241. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  242. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  243. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  244. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  245. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  246. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  247. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
  248. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  249. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  250. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  251. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  252. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  253. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  254. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  255. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  256. package/contracts/distribution/Distribution.sol +261 -0
  257. package/contracts/distribution/DistributionService.sol +298 -0
  258. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  259. package/contracts/distribution/IDistributionComponent.sol +66 -0
  260. package/contracts/distribution/IDistributionService.sol +81 -0
  261. package/contracts/instance/BundleManager.sol +15 -14
  262. package/contracts/instance/IInstance.sol +53 -46
  263. package/contracts/instance/IInstanceService.sol +58 -17
  264. package/contracts/instance/Instance.sol +145 -179
  265. package/contracts/instance/InstanceAdmin.sol +331 -0
  266. package/contracts/instance/InstanceAuthorizationsLib.sol +349 -0
  267. package/contracts/instance/InstanceReader.sol +135 -63
  268. package/contracts/instance/InstanceService.sol +250 -250
  269. package/contracts/instance/InstanceServiceManager.sol +12 -22
  270. package/contracts/instance/InstanceStore.sol +260 -0
  271. package/contracts/instance/base/BalanceStore.sol +118 -0
  272. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +8 -3
  273. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +12 -14
  274. package/contracts/instance/module/IAccess.sol +19 -21
  275. package/contracts/instance/module/IBundle.sol +8 -8
  276. package/contracts/instance/module/IComponents.sol +52 -0
  277. package/contracts/instance/module/IDistribution.sol +7 -4
  278. package/contracts/instance/module/IPolicy.sol +56 -17
  279. package/contracts/instance/module/IRisk.sol +1 -1
  280. package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
  281. package/contracts/pool/BundleService.sol +296 -0
  282. package/contracts/pool/BundleServiceManager.sol +42 -0
  283. package/contracts/pool/IBundleService.sol +106 -0
  284. package/contracts/pool/IPoolComponent.sol +112 -0
  285. package/contracts/pool/IPoolService.sol +150 -0
  286. package/contracts/pool/Pool.sol +299 -0
  287. package/contracts/pool/PoolService.sol +453 -0
  288. package/contracts/pool/PoolServiceManager.sol +42 -0
  289. package/contracts/product/ApplicationService.sol +254 -0
  290. package/contracts/product/ApplicationServiceManager.sol +38 -0
  291. package/contracts/product/ClaimService.sol +442 -0
  292. package/contracts/product/ClaimServiceManager.sol +38 -0
  293. package/contracts/product/IApplicationService.sol +62 -0
  294. package/contracts/product/IClaimService.sol +93 -0
  295. package/contracts/product/IPolicyService.sol +78 -0
  296. package/contracts/product/IPricingService.sol +39 -0
  297. package/contracts/product/IProductComponent.sol +42 -0
  298. package/contracts/product/IProductService.sol +33 -0
  299. package/contracts/product/PolicyService.sol +475 -0
  300. package/contracts/product/PolicyServiceManager.sol +42 -0
  301. package/contracts/product/PricingService.sol +301 -0
  302. package/contracts/product/PricingServiceManager.sol +42 -0
  303. package/contracts/product/Product.sol +377 -0
  304. package/contracts/product/ProductService.sol +124 -0
  305. package/contracts/product/ProductServiceManager.sol +42 -0
  306. package/contracts/registry/ChainNft.sol +16 -1
  307. package/contracts/registry/IRegistry.sol +47 -21
  308. package/contracts/registry/IRegistryService.sol +42 -38
  309. package/contracts/registry/ITransferInterceptor.sol +1 -0
  310. package/contracts/registry/Registry.sol +220 -96
  311. package/contracts/registry/RegistryAdmin.sol +237 -0
  312. package/contracts/registry/RegistryService.sol +108 -104
  313. package/contracts/registry/RegistryServiceManager.sol +22 -26
  314. package/contracts/registry/ReleaseManager.sol +458 -191
  315. package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
  316. package/contracts/registry/TokenRegistry.sol +263 -60
  317. package/contracts/shared/AccessManagerCustom.sol +736 -0
  318. package/contracts/shared/AccessManagerExtended.sol +470 -0
  319. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  320. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  321. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  322. package/contracts/shared/Component.sol +278 -0
  323. package/contracts/shared/ComponentService.sol +596 -0
  324. package/contracts/shared/ComponentServiceManager.sol +35 -0
  325. package/contracts/shared/ComponentVerifyingService.sol +111 -0
  326. package/contracts/shared/ERC165.sol +15 -13
  327. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  328. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  329. package/contracts/shared/IComponent.sol +70 -0
  330. package/contracts/shared/IComponentService.sol +91 -0
  331. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  332. package/contracts/{instance/base → shared}/IKeyValueStore.sol +15 -11
  333. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
  334. package/contracts/shared/INftOwnable.sol +13 -12
  335. package/contracts/shared/IPolicyHolder.sol +45 -0
  336. package/contracts/shared/IRegisterable.sol +3 -3
  337. package/contracts/shared/IRegistryLinked.sol +11 -0
  338. package/contracts/shared/IService.sol +7 -5
  339. package/contracts/shared/IVersionable.sol +5 -48
  340. package/contracts/shared/InitializableCustom.sol +177 -0
  341. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  342. package/contracts/shared/KeyValueStore.sol +127 -0
  343. package/contracts/{instance/base → shared}/Lifecycle.sol +28 -7
  344. package/contracts/shared/NftIdSetManager.sol +65 -0
  345. package/contracts/shared/NftOwnable.sol +59 -91
  346. package/contracts/shared/PolicyHolder.sol +102 -0
  347. package/contracts/shared/ProxyManager.sol +131 -26
  348. package/contracts/shared/Registerable.sol +19 -30
  349. package/contracts/shared/RegistryLinked.sol +43 -0
  350. package/contracts/shared/Service.sol +38 -21
  351. package/contracts/shared/TokenHandler.sol +37 -6
  352. package/contracts/shared/Versionable.sol +4 -92
  353. package/contracts/staking/IStaking.sol +168 -0
  354. package/contracts/staking/IStakingService.sol +149 -0
  355. package/contracts/staking/StakeManagerLib.sol +179 -0
  356. package/contracts/staking/Staking.sol +551 -0
  357. package/contracts/staking/StakingManager.sol +54 -0
  358. package/contracts/staking/StakingReader.sol +187 -0
  359. package/contracts/staking/StakingService.sol +406 -0
  360. package/contracts/staking/StakingServiceManager.sol +45 -0
  361. package/contracts/staking/StakingStore.sol +572 -0
  362. package/contracts/staking/TargetManagerLib.sol +207 -0
  363. package/contracts/{types → type}/AddressSet.sol +1 -1
  364. package/contracts/type/Amount.sol +128 -0
  365. package/contracts/{types → type}/Blocknumber.sol +21 -3
  366. package/contracts/type/ClaimId.sol +75 -0
  367. package/contracts/{types → type}/DistributorType.sol +2 -2
  368. package/contracts/{types → type}/Fee.sol +33 -23
  369. package/contracts/{types → type}/NftId.sol +21 -15
  370. package/contracts/{types → type}/NftIdSet.sol +2 -2
  371. package/contracts/{types → type}/ObjectType.sol +26 -9
  372. package/contracts/type/PayoutId.sol +82 -0
  373. package/contracts/{types → type}/Referral.sol +5 -1
  374. package/contracts/{types → type}/RiskId.sol +1 -1
  375. package/contracts/type/RoleId.sol +143 -0
  376. package/contracts/type/Seconds.sol +81 -0
  377. package/contracts/{types → type}/StateId.sol +24 -6
  378. package/contracts/{types → type}/Timestamp.sol +18 -13
  379. package/contracts/{types → type}/UFixed.sol +1 -0
  380. package/contracts/{types → type}/Version.sol +2 -1
  381. package/package.json +5 -5
  382. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  383. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  384. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  385. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  386. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  387. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  388. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  389. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  390. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  391. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  392. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  393. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  394. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  395. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  396. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  397. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  398. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  399. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  400. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  401. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  402. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  403. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  404. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  405. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  406. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  407. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  408. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  409. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  410. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  411. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  412. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  413. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  414. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  415. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  416. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  417. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  418. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  419. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  420. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  421. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  422. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  423. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  424. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  425. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  426. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  427. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  428. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  429. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  430. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  431. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1034
  432. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  433. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  434. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  435. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +0 -603
  436. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  437. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  438. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  439. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  440. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  441. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  442. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  443. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  444. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  445. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  446. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1167
  447. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  448. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -449
  449. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  450. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -772
  451. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  452. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -437
  453. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  454. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  455. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  456. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  457. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  458. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  459. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1227
  460. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  461. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -505
  462. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  463. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -806
  464. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  465. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -437
  466. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  467. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -856
  468. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  469. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -437
  470. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  471. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  472. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  473. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  474. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  475. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  476. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  477. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -313
  478. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  479. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  480. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  481. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -608
  482. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  483. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  484. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  485. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  486. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  487. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  488. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  489. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  490. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  491. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  492. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  493. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  494. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  495. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  496. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  497. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  498. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  499. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  500. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  501. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  502. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  503. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  504. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  505. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  506. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  507. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  508. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  509. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  510. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  511. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  512. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  513. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  514. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  515. package/contracts/components/Component.sol +0 -247
  516. package/contracts/components/Distribution.sol +0 -143
  517. package/contracts/components/IComponent.sol +0 -50
  518. package/contracts/components/IDistributionComponent.sol +0 -47
  519. package/contracts/components/IPoolComponent.sol +0 -77
  520. package/contracts/components/IProductComponent.sol +0 -39
  521. package/contracts/components/Pool.sol +0 -257
  522. package/contracts/components/Product.sol +0 -263
  523. package/contracts/experiment/cloning/Cloner.sol +0 -47
  524. package/contracts/experiment/errors/Require.sol +0 -38
  525. package/contracts/experiment/errors/Revert.sol +0 -44
  526. package/contracts/experiment/inheritance/A.sol +0 -53
  527. package/contracts/experiment/inheritance/B.sol +0 -28
  528. package/contracts/experiment/inheritance/C.sol +0 -34
  529. package/contracts/experiment/inheritance/IA.sol +0 -13
  530. package/contracts/experiment/inheritance/IB.sol +0 -10
  531. package/contracts/experiment/inheritance/IC.sol +0 -12
  532. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  533. package/contracts/experiment/statemachine/ISM.sol +0 -25
  534. package/contracts/experiment/statemachine/SM.sol +0 -57
  535. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  536. package/contracts/experiment/types/TypeA.sol +0 -47
  537. package/contracts/experiment/types/TypeB.sol +0 -29
  538. package/contracts/instance/InstanceAccessManager.sol +0 -298
  539. package/contracts/instance/base/ComponentService.sol +0 -134
  540. package/contracts/instance/base/KeyValueStore.sol +0 -172
  541. package/contracts/instance/module/ISetup.sol +0 -46
  542. package/contracts/instance/module/ITreasury.sol +0 -23
  543. package/contracts/instance/service/BundleService.sol +0 -299
  544. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  545. package/contracts/instance/service/DistributionService.sol +0 -106
  546. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  547. package/contracts/instance/service/IBundleService.sol +0 -54
  548. package/contracts/instance/service/IDistributionService.sol +0 -12
  549. package/contracts/instance/service/IPolicyService.sol +0 -94
  550. package/contracts/instance/service/IPoolService.sol +0 -20
  551. package/contracts/instance/service/IProductService.sol +0 -40
  552. package/contracts/instance/service/PolicyService.sol +0 -519
  553. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  554. package/contracts/instance/service/PoolService.sol +0 -109
  555. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  556. package/contracts/instance/service/ProductService.sol +0 -232
  557. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  558. package/contracts/registry/RegistryAccessManager.sol +0 -216
  559. package/contracts/shared/ContractDeployerLib.sol +0 -72
  560. package/contracts/test/TestFee.sol +0 -25
  561. package/contracts/test/TestRegisterable.sol +0 -18
  562. package/contracts/test/TestRoleId.sol +0 -14
  563. package/contracts/test/TestService.sol +0 -25
  564. package/contracts/test/TestVersion.sol +0 -44
  565. package/contracts/test/TestVersionable.sol +0 -17
  566. package/contracts/test/Usdc.sol +0 -26
  567. package/contracts/types/ChainId.sol +0 -38
  568. package/contracts/types/NumberId.sol +0 -52
  569. package/contracts/types/RoleId.sol +0 -90
  570. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -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 initialize(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 upgrade(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
  }
@@ -0,0 +1,177 @@
1
+ // SPDX-License-Identifier: MIT
2
+
3
+ pragma solidity ^0.8.20;
4
+
5
+ /**
6
+ * @dev This is copy of OpenZeppelin's Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)
7
+ * Changes:
8
+ * 1. name is InitializableCustom
9
+ * 2. no longer abstract
10
+ * 3. have $._initializeOwner
11
+ * 4. have constructor where sets _initializeOwner
12
+ * 5. initializer() in addition checks for _initializeOwner
13
+ * 6. reinitializer() is deleted
14
+ */
15
+ abstract contract InitializableCustom {
16
+ /**
17
+ * @dev Storage of the initializable contract.
18
+ *
19
+ * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions
20
+ * when using with upgradeable contracts.
21
+ *
22
+ * @custom:storage-location erc7201:openzeppelin.storage.Initializable
23
+ */
24
+ struct InitializableCustomStorage {
25
+ /**
26
+ * @dev Indicates that the contract has been initialized.
27
+ */
28
+ uint64 _initialized;
29
+ /**
30
+ * @dev Indicates that the contract is in the process of being initialized.
31
+ */
32
+ bool _initializing;
33
+ /**
34
+ * @dev Indicates address that can call function with initializer() modifier.
35
+ */
36
+ address _initializeOwner;
37
+ }
38
+
39
+ // keccak256(abi.encode(uint256(keccak256("openzeppelin.storage.InitializableCustom")) - 1)) & ~bytes32(uint256(0xff))
40
+ bytes32 private constant INITIALIZABLE_CUSTOM_STORAGE = 0x46cd1d813423aaf613c34c7f348d15b2b5e71215e9145b09467e257ea2805a00;
41
+
42
+ /**
43
+ * @dev The contract is already initialized.
44
+ */
45
+ error InvalidInitialization();
46
+
47
+ /**
48
+ * @dev The contract initialization function caller is not authorized.
49
+ */
50
+ error InvalidInitializationCaller();
51
+
52
+ /**
53
+ * @dev The contract is not initializing.
54
+ */
55
+ error NotInitializing();
56
+
57
+ /**
58
+ * @dev Triggered when the contract has been initialized or reinitialized.
59
+ */
60
+ event Initialized(uint64 version);
61
+
62
+ /**
63
+ * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,
64
+ * `onlyInitializing` functions can be used to initialize parent contracts.
65
+ *
66
+ * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any
67
+ * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in
68
+ * production.
69
+ *
70
+ * Emits an {Initialized} event.
71
+ */
72
+ modifier initializer() virtual {
73
+ // solhint-disable-next-line var-name-mixedcase
74
+ InitializableCustomStorage storage $ = _getInitializableCustomStorage();
75
+
76
+ if($._initializeOwner != msg.sender) {
77
+ revert InvalidInitializationCaller();
78
+ }
79
+
80
+ // Cache values to avoid duplicated sloads
81
+ bool isTopLevelCall = !$._initializing;
82
+ uint64 initialized = $._initialized;
83
+
84
+ // Allowed calls:
85
+ // - initialSetup: the contract is not in the initializing state and no previous version was
86
+ // initialized
87
+ // - construction: the contract is initialized at version 1 (no reininitialization) and the
88
+ // current contract is just being deployed
89
+ bool initialSetup = initialized == 0 && isTopLevelCall;
90
+ bool construction = initialized == 1 && address(this).code.length == 0;
91
+
92
+ if (!initialSetup && !construction) {
93
+ revert InvalidInitialization();
94
+ }
95
+ $._initialized = 1;
96
+ if (isTopLevelCall) {
97
+ $._initializing = true;
98
+ }
99
+ _;
100
+ if (isTopLevelCall) {
101
+ $._initializing = false;
102
+ emit Initialized(1);
103
+ }
104
+ }
105
+
106
+ /**
107
+ * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the
108
+ * {initializer} and {reinitializer} modifiers, directly or indirectly.
109
+ */
110
+ modifier onlyInitializing() {
111
+ _checkInitializing();
112
+ _;
113
+ }
114
+
115
+ /**
116
+ * @dev Constructor sets the caller of protected initializer function.
117
+ */
118
+ constructor() {
119
+ // solhint-disable-previous-line var-name-mixedcase
120
+ InitializableCustomStorage storage $ = _getInitializableCustomStorage();
121
+ $._initializeOwner = msg.sender;
122
+ }
123
+
124
+ /**
125
+ * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.
126
+ */
127
+ function _checkInitializing() internal view virtual {
128
+ if (!_isInitializing()) {
129
+ revert NotInitializing();
130
+ }
131
+ }
132
+
133
+ /**
134
+ * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.
135
+ * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized
136
+ * to any version. It is recommended to use this to lock implementation contracts that are designed to be called
137
+ * through proxies.
138
+ *
139
+ * Emits an {Initialized} event the first time it is successfully executed.
140
+ */
141
+ function _disableInitializers() internal virtual {
142
+ // solhint-disable-next-line var-name-mixedcase
143
+ InitializableCustomStorage storage $ = _getInitializableCustomStorage();
144
+
145
+ if ($._initializing) {
146
+ revert InvalidInitialization();
147
+ }
148
+ if ($._initialized != type(uint64).max) {
149
+ $._initialized = type(uint64).max;
150
+ emit Initialized(type(uint64).max);
151
+ }
152
+ }
153
+
154
+ /**
155
+ * @dev Returns the highest version that has been initialized. See {reinitializer}.
156
+ */
157
+ function _getInitializedVersion() internal view returns (uint64) {
158
+ return _getInitializableCustomStorage()._initialized;
159
+ }
160
+
161
+ /**
162
+ * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.
163
+ */
164
+ function _isInitializing() internal view returns (bool) {
165
+ return _getInitializableCustomStorage()._initializing;
166
+ }
167
+
168
+ /**
169
+ * @dev Returns a pointer to the storage namespace.
170
+ */
171
+ // solhint-disable-next-line var-name-mixedcase
172
+ function _getInitializableCustomStorage() private pure returns (InitializableCustomStorage storage $) {
173
+ assembly {
174
+ $.slot := INITIALIZABLE_CUSTOM_STORAGE
175
+ }
176
+ }
177
+ }
@@ -0,0 +1,144 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
7
+ import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
8
+
9
+ import {Component} from "./Component.sol";
10
+ import {IComponentService} from "./IComponentService.sol";
11
+ import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
12
+ import {IComponents} from "../instance/module/IComponents.sol";
13
+ import {IInstanceService} from "../instance/IInstanceService.sol";
14
+ import {IInstance} from "../instance/IInstance.sol";
15
+ import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
16
+ import {InstanceReader} from "../instance/InstanceReader.sol";
17
+ import {IRegistry} from "../registry/IRegistry.sol";
18
+ import {NftId} from "../type/NftId.sol";
19
+ import {ObjectType, COMPONENT, INSTANCE} from "../type/ObjectType.sol";
20
+ import {VersionPart} from "../type/Version.sol";
21
+ import {RoleId, RoleIdLib} from "../type/RoleId.sol";
22
+ import {IAccess} from "../instance/module/IAccess.sol";
23
+ import {TokenHandler} from "../shared/TokenHandler.sol";
24
+ import {VersionPart} from "../type/Version.sol";
25
+
26
+ // then add (Distribution|Pool|Product)Upradeable that also intherit from Versionable
27
+ // same pattern as for Service which is also upgradeable
28
+ abstract contract InstanceLinkedComponent is
29
+ Component,
30
+ IInstanceLinkedComponent
31
+ {
32
+ // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Component.sol")) - 1)) & ~bytes32(uint256(0xff));
33
+ bytes32 public constant INSTANCE_LINKED_COMPONENT_LOCATION_V1 = 0xffe3d4462bded26a47154f4b8f6db494d2f772496965791d25bd456e342b7f00;
34
+
35
+ struct InstanceLinkedComponentStorage {
36
+ IInstance _instance; // instance for this component
37
+ InstanceReader _instanceReader; // instance reader for this component
38
+ }
39
+
40
+ function _getInstanceLinkedComponentStorage() private pure returns (InstanceLinkedComponentStorage storage $) {
41
+ assembly {
42
+ $.slot := INSTANCE_LINKED_COMPONENT_LOCATION_V1
43
+ }
44
+ }
45
+
46
+ function initializeInstanceLinkedComponent(
47
+ address registry,
48
+ NftId instanceNftId,
49
+ string memory name,
50
+ address token,
51
+ ObjectType componentType,
52
+ bool isInterceptor,
53
+ address initialOwner,
54
+ bytes memory registryData, // writeonly data that will saved in the object info record of the registry
55
+ bytes memory componentData // data that will saved with the component info in the instance store
56
+ )
57
+ public
58
+ virtual
59
+ onlyInitializing()
60
+ {
61
+ // set and check linked instance
62
+ InstanceLinkedComponentStorage storage $ = _getInstanceLinkedComponentStorage();
63
+ $._instance = IInstance(
64
+ IRegistry(registry).getObjectInfo(
65
+ instanceNftId).objectAddress);
66
+
67
+ if(!$._instance.supportsInterface(type(IInstance).interfaceId)) {
68
+ revert ErrorComponentNotInstance(instanceNftId);
69
+ }
70
+
71
+ initializeComponent(
72
+ $._instance.authority(),
73
+ registry,
74
+ instanceNftId,
75
+ name,
76
+ token,
77
+ componentType,
78
+ isInterceptor,
79
+ initialOwner,
80
+ registryData,
81
+ componentData);
82
+
83
+ // set component state
84
+ $._instanceReader = $._instance.getInstanceReader();
85
+
86
+ registerInterface(type(IAccessManaged).interfaceId);
87
+ registerInterface(type(IInstanceLinkedComponent).interfaceId);
88
+ }
89
+
90
+ /// @dev for instance linked components the wallet address stored in the instance store.
91
+ /// updating needs to go throug component service
92
+ function _setWallet(address newWallet) internal virtual override onlyOwner {
93
+ IComponentService(_getServiceAddress(COMPONENT())).setWallet(newWallet);
94
+ }
95
+
96
+ function lock() external onlyOwner {
97
+ IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(true);
98
+ }
99
+
100
+ function unlock() external onlyOwner {
101
+ IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(false);
102
+ }
103
+
104
+ function getInstance() public view override returns (IInstance instance) {
105
+ return _getInstanceLinkedComponentStorage()._instance;
106
+ }
107
+
108
+ function getProductNftId() public view override returns (NftId productNftId) {
109
+ return getComponentInfo().productNftId;
110
+ }
111
+
112
+
113
+ function _getComponentInfo() internal virtual override view returns (IComponents.ComponentInfo memory info) {
114
+ NftId componentNftId = getRegistry().getNftId(address(this));
115
+
116
+ // if registered, attempt to return component info via instance reader
117
+ if (componentNftId.gtz()) {
118
+ // component registerd with registry
119
+ info = _getInstanceReader().getComponentInfo(getNftId());
120
+
121
+ // check if also registered with instance
122
+ if (info.wallet != address(0)) {
123
+ return info;
124
+ }
125
+ }
126
+
127
+ // return data from component contract if not yet registered
128
+ return super._getComponentInfo();
129
+ }
130
+
131
+
132
+ /// @dev returns reader for linked instance
133
+ function _getInstanceReader() internal view returns (InstanceReader reader) {
134
+ return _getInstanceLinkedComponentStorage()._instanceReader;
135
+ }
136
+
137
+
138
+ /// @dev returns the service address for the specified domain
139
+ /// gets address via lookup from registry using the major version form the linked instance
140
+ function _getServiceAddress(ObjectType domain) internal view returns (address service) {
141
+ VersionPart majorVersion = _getInstanceLinkedComponentStorage()._instance.getMajorVersion();
142
+ return getRegistry().getServiceAddress(domain, majorVersion);
143
+ }
144
+ }
@@ -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,22 +1,31 @@
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, RISK, CLAIM, PAYOUT} from "../type/ObjectType.sol";
8
+ import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, COLLATERALIZED, REVOKED, SUBMITTED, CONFIRMED, DECLINED, EXPECTED, PAID} 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();
21
30
  }
22
31
 
@@ -78,6 +87,7 @@ contract Lifecycle is ILifecycle {
78
87
  function _setupBundleLifecycle() internal {
79
88
  _initialState[BUNDLE()] = ACTIVE();
80
89
  _isValidTransition[BUNDLE()][ACTIVE()][PAUSED()] = true;
90
+ _isValidTransition[BUNDLE()][ACTIVE()][CLOSED()] = true;
81
91
  _isValidTransition[BUNDLE()][PAUSED()][ACTIVE()] = true;
82
92
  _isValidTransition[BUNDLE()][PAUSED()][CLOSED()] = true;
83
93
  }
@@ -86,11 +96,22 @@ contract Lifecycle is ILifecycle {
86
96
  _initialState[POLICY()] = APPLIED();
87
97
  _isValidTransition[POLICY()][APPLIED()][REVOKED()] = true;
88
98
  _isValidTransition[POLICY()][APPLIED()][DECLINED()] = true;
89
- _isValidTransition[POLICY()][APPLIED()][UNDERWRITTEN()] = true;
90
- _isValidTransition[POLICY()][UNDERWRITTEN()][ACTIVE()] = true;
99
+ _isValidTransition[POLICY()][APPLIED()][COLLATERALIZED()] = true;
100
+ _isValidTransition[POLICY()][APPLIED()][ACTIVE()] = true;
101
+ _isValidTransition[POLICY()][COLLATERALIZED()][ACTIVE()] = true;
91
102
  _isValidTransition[POLICY()][ACTIVE()][CLOSED()] = true;
92
103
  }
93
104
 
105
+ function _setupClaimAndPayoutLifecycle() internal {
106
+ _initialState[CLAIM()] = SUBMITTED();
107
+ _isValidTransition[CLAIM()][SUBMITTED()][CONFIRMED()] = true;
108
+ _isValidTransition[CLAIM()][SUBMITTED()][DECLINED()] = true;
109
+ _isValidTransition[CLAIM()][CONFIRMED()][CLOSED()] = true;
110
+
111
+ _initialState[PAYOUT()] = EXPECTED();
112
+ _isValidTransition[PAYOUT()][EXPECTED()][PAID()] = true;
113
+ }
114
+
94
115
  function _setupRiskLifecycle() internal {
95
116
  _initialState[RISK()] = ACTIVE();
96
117
  _isValidTransition[RISK()][ACTIVE()][PAUSED()] = true;
@@ -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
+ }