@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
@@ -0,0 +1,111 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IInstance} from "../instance/IInstance.sol";
5
+ import {InstanceReader} from "../instance/InstanceReader.sol";
6
+ import {IRegistry} from "../registry/IRegistry.sol";
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {ObjectType, COMPONENT, DISTRIBUTION, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
9
+ import {Service} from "../shared/Service.sol";
10
+
11
+
12
+ abstract contract ComponentVerifyingService is
13
+ Service
14
+ {
15
+
16
+ error ErrorComponentVerifyingServiceComponentTypeInvalid(NftId componentNftId, ObjectType expectedType, ObjectType actualType);
17
+ error ErrorComponentVerifyingServiceComponentIsLocked(NftId componentNftId);
18
+
19
+ /// @dev based on the sender address returns the corresponding components nft id, info and instance.
20
+ /// the function reverts iff:
21
+ /// - there is no such component
22
+ /// - the component has the wrong object type
23
+ /// - the component is locked
24
+ function _getAndVerifyActiveComponent(
25
+ ObjectType expectedType // assume always of `component` type
26
+ )
27
+ internal
28
+ view
29
+ returns(
30
+ NftId componentNftId,
31
+ IRegistry.ObjectInfo memory componentInfo,
32
+ IInstance instance
33
+ )
34
+ {
35
+ componentNftId = getRegistry().getNftId(msg.sender);
36
+ (componentInfo, instance) = _getAndVerifyComponentInfo(componentNftId, expectedType);
37
+
38
+ // ensure component is not locked
39
+ if (instance.getInstanceAccessManager().isTargetClosed(componentInfo.objectAddress)) {
40
+ revert ErrorComponentVerifyingServiceComponentIsLocked(componentNftId);
41
+ }
42
+ }
43
+
44
+
45
+ /// @dev returns the component info and instance contract reference given a component nft id
46
+ /// the function reverts iff:
47
+ /// - there is no such component
48
+ /// - the component has the wrong object type
49
+ function _getAndVerifyComponentInfo(
50
+ NftId componentNftId,
51
+ ObjectType expectedType // assume always of `component` type
52
+ )
53
+ internal
54
+ virtual
55
+ view
56
+ returns(
57
+ IRegistry.ObjectInfo memory info,
58
+ IInstance instance
59
+ )
60
+ {
61
+ IRegistry registry = getRegistry();
62
+ info = registry.getObjectInfo(componentNftId);
63
+
64
+ // if not COMPONENT require exact match
65
+ if(expectedType != COMPONENT()) {
66
+ // ensure component is of expected type
67
+ if(info.objectType != expectedType) {
68
+ revert ErrorComponentVerifyingServiceComponentTypeInvalid(
69
+ componentNftId,
70
+ expectedType,
71
+ info.objectType);
72
+ }
73
+ } else {
74
+ if(!(info.objectType == PRODUCT()
75
+ || info.objectType == POOL()
76
+ || info.objectType == DISTRIBUTION()
77
+ || info.objectType == ORACLE()
78
+ ))
79
+ {
80
+ revert ErrorComponentVerifyingServiceComponentTypeInvalid(
81
+ componentNftId,
82
+ expectedType,
83
+ info.objectType);
84
+ }
85
+ }
86
+
87
+ instance = _getInstance(info.parentNftId);
88
+ }
89
+
90
+
91
+ /// @dev returns the linked product nft id for the specified component
92
+ function _getProductNftId(
93
+ InstanceReader instanceReader,
94
+ NftId componentNftId
95
+ )
96
+ internal
97
+ virtual
98
+ view
99
+ returns (NftId productNftId)
100
+ {
101
+ return instanceReader.getComponentInfo(componentNftId).productNftId;
102
+ }
103
+
104
+
105
+ /// @dev returns an IInstance contract reference for the specified instance nft id
106
+ function _getInstance(NftId instanceNftId) internal view returns (IInstance) {
107
+ return IInstance(
108
+ getRegistry().getObjectInfo(
109
+ instanceNftId).objectAddress);
110
+ }
111
+ }
@@ -1,25 +1,27 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
6
 
6
- contract ERC165 is IERC165 {
7
+ contract ERC165 is
8
+ Initializable,
9
+ IERC165
10
+ {
7
11
  mapping(bytes4 => bool) private _isSupported;
8
12
 
9
- constructor() {
10
- _initializeERC165();
11
- }
12
-
13
- function supportsInterface(bytes4 interfaceId) external view override returns (bool) {
14
- return _isSupported[interfaceId];
15
- }
16
-
17
- // @dev register support for ERC165 itself
18
- function _initializeERC165() internal {
13
+ // @dev initializes with support for ERC165
14
+ function initializeERC165() public onlyInitializing() {
19
15
  _isSupported[type(IERC165).interfaceId] = true;
20
16
  }
21
17
 
22
- function _registerInterface(bytes4 interfaceId) internal {
18
+ // @dev register support for provided interfaceId
19
+ // includes initialization for ERC165_ID if not yet done
20
+ function registerInterface(bytes4 interfaceId) public onlyInitializing() {
23
21
  _isSupported[interfaceId] = true;
24
22
  }
23
+
24
+ function supportsInterface(bytes4 interfaceId) external view override returns (bool) {
25
+ return _isSupported[interfaceId];
26
+ }
25
27
  }
@@ -0,0 +1,74 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // OpenZeppelin Contracts (last updated v5.0.0) (access/manager/IAccessManager.sol)
3
+
4
+ pragma solidity ^0.8.20;
5
+
6
+ import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
7
+
8
+ import {Timestamp} from "../type/Timestamp.sol";
9
+
10
+ interface IAccessManagerExtended is IAccessManager {
11
+ // Structure that stores the details for a target contract.
12
+ struct TargetInfo {
13
+ address taddress;
14
+ //IAccess.Type ttype;
15
+ string name;
16
+ Timestamp createdAt;
17
+ //Timestamp updatedAt;
18
+ }
19
+
20
+ // Structure that stores the details of a role.
21
+ struct RoleInfo {
22
+ uint64 id;
23
+ //IAccess.Type rtype;
24
+ string name;
25
+ Timestamp createdAt;
26
+ }
27
+
28
+ event LogRoleCreation(uint64 roleId, string name);// IAccess.Type rtype);
29
+ event LogTargetCreation(address target, string name);// IAccess.Type ttype);
30
+
31
+ error AccessManagerRoleIdNotExists(uint64 roleId);
32
+ error AccessManagerRoleIdAlreadyExists(uint64 roleId);
33
+ error AccessManagerRoleNameAlreadyExists(uint64 newRoleId, uint64 existingRoleId, string duplicateName);
34
+ error AccessManagerRoleIdZero();
35
+ error AccessManagerRoleNameEmpty(uint64 roleId);
36
+ error AccessManagerRoleIdTooBig(uint64 roleId);
37
+
38
+ error AccessManagerTargetAlreadyExists(address target);
39
+ error AccessManagerTargetNotExists(address target);
40
+ error AccessManagerTargetNameAlreadyExists(address newTarget, address existingTarget, string duplicateName);
41
+ error AccessManagerTargetAddressZero();
42
+ error AccessManagerTargetNameEmpty(address target);
43
+ error AccessManagerTargetAuthorityInvalid(address target, address targetAuthority);
44
+
45
+ function getRoleMembers(uint64 roleId) external view returns (uint256 numberOfMembers);
46
+
47
+ function getRoleMember(uint64 roleId, uint256 idx) external view returns (address member);
48
+
49
+ function getRoleId(uint256 idx) external view returns (uint64 roleId);
50
+
51
+ // TODO returns ADMIN_ROLE id for non existent name
52
+ function getRoleId(string memory name) external view returns (uint64 roleId);
53
+
54
+ function getRoles() external view returns (uint256 numberOfRoles);
55
+
56
+ function isRoleExists(uint64 roleId) external view returns (bool exists);
57
+
58
+ function getRoleInfo(uint64 roleId) external view returns (RoleInfo memory);
59
+
60
+ function isRoleNameExists(string memory name) external view returns (bool);
61
+
62
+ function isTargetExists(address target) external view returns (bool);
63
+
64
+ function isTargetNameExists(string memory name) external view returns (bool);
65
+
66
+ function getTargetAddress(string memory name) external view returns(address targetAddress);
67
+
68
+ function getTargetInfo(address target) external view returns (TargetInfo memory);
69
+
70
+
71
+ function createRole(uint64 roleId, string memory roleName/*, IAccess.Type rtype*/) external;
72
+
73
+ function createTarget(address target, string memory name/*, IAccess.Type.Custom*/) external;
74
+ }
@@ -0,0 +1,18 @@
1
+ // SPDX-License-Identifier: MIT
2
+
3
+ pragma solidity ^0.8.20;
4
+
5
+ import {IAccessManagerExtended} from "./IAccessManagerExtended.sol";
6
+
7
+ import {Timestamp} from "../type/Timestamp.sol";
8
+ import {VersionPart} from "../type/Version.sol";
9
+ import {Seconds} from "../type/Seconds.sol";
10
+
11
+ interface IAccessManagerExtendedWithDisable is IAccessManagerExtended {
12
+
13
+ error AccessManagerDisabled();
14
+
15
+ function disable(Seconds delay) external;
16
+ function enable() external;
17
+ function getVersion() external view returns (VersionPart version);
18
+ }
@@ -0,0 +1,70 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
+
7
+ import {Amount} from "../type/Amount.sol";
8
+ import {IComponents} from "../instance/module/IComponents.sol";
9
+ import {IRegisterable} from "../shared/IRegisterable.sol";
10
+ import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
11
+ import {TokenHandler} from "../shared/TokenHandler.sol";
12
+
13
+ /// @dev component base class
14
+ /// component examples are staking, product, distribution, pool and oracle
15
+ interface IComponent is
16
+ IAccessManaged,
17
+ IRegisterable,
18
+ ITransferInterceptor
19
+ {
20
+ error ErrorComponentNotChainNft(address caller);
21
+
22
+ error ErrorComponentTokenAddressZero();
23
+ error ErrorComponentNameLengthZero();
24
+ error ErrorComponentWalletAddressZero();
25
+ error ErrorComponentWalletAddressIsSameAsCurrent();
26
+ error ErrorComponentWalletAllowanceTooSmall(address oldWallet, address newWallet, uint256 allowance, uint256 balance);
27
+ error ErrorComponentWalletNotComponent();
28
+
29
+ event LogComponentWalletAddressChanged(address oldWallet, address newWallet);
30
+ event LogComponentWalletTokensTransferred(address from, address to, uint256 amount);
31
+ event LogComponentTokenHandlerApproved(address token, Amount limit);
32
+
33
+ /// @dev approves token hanlder to spend up to the specified amount of tokens
34
+ /// reverts if component wallet is not component itself
35
+ /// only component owner (nft holder) is authorizes to call this function
36
+ function approveTokenHandler(Amount spendingLimitAmount) external;
37
+
38
+ /// @dev sets the wallet address for the component
39
+ /// if the current wallet has tokens, these will be transferred
40
+ /// if the new wallet address is externally owned, an approval from the
41
+ /// owner of the external wallet for the component to move all tokens must exist
42
+ function setWallet(address walletAddress) external;
43
+
44
+ /// @dev returns the name of this component
45
+ /// to successfully register the component with an instance the name MUST be unique in the linked instance
46
+ function getName() external view returns (string memory name);
47
+
48
+ /// @dev defines which ERC20 token is used by this component
49
+ function getToken() external view returns (IERC20Metadata token);
50
+
51
+ /// @dev returns token handler for this component
52
+ function getTokenHandler() external view returns (TokenHandler tokenHandler);
53
+
54
+ /// @dev defines the wallet address used to hold the ERC20 tokens related to this component
55
+ /// the default address is the component token address
56
+ function getWallet() external view returns (address walletAddress);
57
+
58
+ /// @dev returns true iff this compoent intercepts nft minting and transfers for objects registered by this component
59
+ function isNftInterceptor() external view returns(bool isInterceptor);
60
+
61
+ /// @dev returns true iff this component is registered with the registry
62
+ function isRegistered() external view returns (bool);
63
+
64
+ /// @dev returns the component infos for this component
65
+ /// for a non registered component the function returns getInitialComponentInfo()
66
+ function getComponentInfo() external view returns (IComponents.ComponentInfo memory info);
67
+
68
+ /// @dev returns the iniital component infos for this component
69
+ function getInitialComponentInfo() external view returns (IComponents.ComponentInfo memory info);
70
+ }
@@ -0,0 +1,91 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
+
7
+ import {Amount} from "../type/Amount.sol";
8
+ import {Fee} from "../type/Fee.sol";
9
+ import {IComponents} from "../instance/module/IComponents.sol";
10
+ import {IInstance} from "../instance/IInstance.sol";
11
+ import {IInstanceService} from "../instance/IInstanceService.sol";
12
+ import {InstanceStore} from "../instance/InstanceStore.sol";
13
+ import {IProductService} from "../product/IProductService.sol";
14
+ import {IRegisterable} from "../shared/IRegisterable.sol";
15
+ import {IService} from "../shared/IService.sol";
16
+ import {NftId} from "../type/NftId.sol";
17
+ import {ObjectType} from "../type/ObjectType.sol";
18
+ import {TokenHandler} from "../shared/TokenHandler.sol";
19
+ import {UFixed} from "../type/UFixed.sol";
20
+
21
+ /// @dev component base class
22
+ /// component examples are staking, product, distribution, pool and oracle
23
+ interface IComponentService is
24
+ IService
25
+ {
26
+ error ErrorComponentServiceNewWalletAddressZero();
27
+ error ErrorComponentServiceWalletAddressZero();
28
+ error ErrorComponentServiceWalletAddressIsSameAsCurrent();
29
+
30
+ event LogComponentServiceWalletAddressChanged(NftId componentNftId, address currentWallet, address newWallet);
31
+ event LogComponentServiceProductFeesUpdated(NftId productNftId);
32
+ event LogComponentServiceDistributionFeesUpdated(NftId distributionNftId);
33
+ event LogComponentServicePoolFeesUpdated(NftId poolNftId);
34
+ event LogComponentServiceUpdateFee(
35
+ NftId nftId,
36
+ string feeName,
37
+ UFixed previousFractionalFee,
38
+ uint256 previousFixedFee,
39
+ UFixed newFractionalFee,
40
+ uint256 newFixedFee
41
+ );
42
+
43
+ //-------- component ----------------------------------------------------//
44
+
45
+ /// @dev sets the components associated wallet address
46
+ function setWallet(address newWallet) external;
47
+
48
+ /// @dev locks the component associated with the caller
49
+ function lock() external;
50
+
51
+ /// @dev unlocks the component associated with the caller
52
+ function unlock() external;
53
+
54
+ //-------- product ------------------------------------------------------//
55
+ function registerProduct() external;
56
+
57
+ function setProductFees(
58
+ Fee memory productFee, // product fee on net premium
59
+ Fee memory processingFee // product fee on payout amounts
60
+ ) external;
61
+
62
+ function increaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount) external;
63
+ function decreaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount) external;
64
+
65
+ //-------- distribution -------------------------------------------------//
66
+ function registerDistribution() external;
67
+
68
+ function setDistributionFees(
69
+ Fee memory distributionFee, // distribution fee for sales that do not include commissions
70
+ Fee memory minDistributionOwnerFee // min fee required by distribution owner (not including commissions for distributors)
71
+ ) external;
72
+
73
+ function increaseDistributionBalance(InstanceStore instanceStore, NftId distributionNftId, Amount amount, Amount feeAmount) external;
74
+ function decreaseDistributionBalance(InstanceStore instanceStore, NftId distributionNftId, Amount amount, Amount feeAmount) external;
75
+
76
+ //-------- pool ---------------------------------------------------------//
77
+ function registerPool() external;
78
+
79
+ function setPoolFees(
80
+ Fee memory poolFee, // pool fee on net premium
81
+ Fee memory stakingFee, // pool fee on staked capital from investor
82
+ Fee memory performanceFee // pool fee on profits from capital investors
83
+ ) external;
84
+
85
+ function increasePoolBalance(InstanceStore instanceStore, NftId poolNftId, Amount amount, Amount feeAmount) external;
86
+ function decreasePoolBalance(InstanceStore instanceStore, NftId poolNftId, Amount amount, Amount feeAmount) external;
87
+
88
+ //-------- bundle -------------------------------------------------------//
89
+ function increaseBundleBalance(InstanceStore instanceStore, NftId bundleNftId, Amount amount, Amount feeAmount) external;
90
+ function decreaseBundleBalance(InstanceStore instanceStore, NftId bundleNftId, Amount amount, Amount feeAmount) external;
91
+ }
@@ -0,0 +1,46 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
+
7
+ import {IComponent} from "../shared/IComponent.sol";
8
+ import {IComponents} from "../instance/module/IComponents.sol";
9
+ import {IInstance} from "../instance/IInstance.sol";
10
+ import {IInstanceService} from "../instance/IInstanceService.sol";
11
+ import {IProductService} from "../product/IProductService.sol";
12
+ import {IRegisterable} from "../shared/IRegisterable.sol";
13
+ import {NftId} from "../type/NftId.sol";
14
+ import {ObjectType} from "../type/ObjectType.sol";
15
+ import {TokenHandler} from "../shared/TokenHandler.sol";
16
+
17
+ /// @dev component base class
18
+ /// component examples are product, distribution, pool and oracle
19
+ interface IInstanceLinkedComponent is
20
+ IComponent
21
+ {
22
+ error ErrorComponentNotProductService(address caller);
23
+ error ErrorComponentNotInstance(NftId instanceNftId);
24
+ error ErrorComponentProductNftAlreadySet();
25
+
26
+ /// @dev registers this component with the registry and instance.
27
+ /// a component may only be linked once
28
+ /// only initial component owner (nft holder) is authorizes to call this function
29
+ function register() external;
30
+
31
+ /// @dev locks component to disable functions that may change state related to this component, the only exception is function "unlock"
32
+ /// only component owner (nft holder) is authorizes to call this function
33
+ function lock() external;
34
+
35
+ /// @dev unlocks component to (re-)enable functions that may change state related to this component
36
+ /// only component owner (nft holder) is authorizes to call this function
37
+ function unlock() external;
38
+
39
+ /// @dev defines the instance to which this component is linked to
40
+ function getInstance() external view returns (IInstance instance);
41
+
42
+ /// @dev defines the product to which this component is linked to
43
+ /// this is only relevant for pool and distribution components
44
+ function getProductNftId() external view returns (NftId productNftId);
45
+
46
+ }
@@ -1,17 +1,25 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Blocknumber, blockBlocknumber, zeroBlocknumber} from "../../types/Blocknumber.sol";
5
- import {Key32, KeyId} from "../../types/Key32.sol";
6
- import {NftId} from "../../types/NftId.sol";
7
- import {ObjectType} from "../../types/ObjectType.sol";
8
- import {StateId} from "../../types/StateId.sol";
4
+ import {Blocknumber, blockBlocknumber, zeroBlocknumber} from "../type/Blocknumber.sol";
5
+ import {Key32, KeyId} from "../type/Key32.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
8
+ import {StateId} from "../type/StateId.sol";
9
9
 
10
10
  import {ILifecycle} from "./ILifecycle.sol";
11
11
 
12
- // TODO remove - internal only?
13
12
  interface IKeyValueStore is ILifecycle {
14
13
 
14
+ error ErrorKeyValueStoreTypeUndefined(ObjectType objectType);
15
+ error ErrorKeyValueStoreAlreadyCreated(Key32 key, ObjectType objectType);
16
+ error ErrorKeyValueStoreStateZero(Key32 key);
17
+ error ErrorKeyValueStoreNotExisting(Key32 key);
18
+
19
+ event LogInfoCreated(ObjectType objectType, KeyId keyId, StateId state, address createdBy, address txOrigin);
20
+ event LogInfoUpdated(ObjectType objectType, KeyId keyId, StateId state, address updatedBy, address txOrigin, Blocknumber lastUpdatedIn);
21
+ event LogStateUpdated(ObjectType objectType, KeyId keyId, StateId stateOld, StateId stateNew, address updatedBy, address txOrigin, Blocknumber lastUpdatedIn);
22
+
15
23
  struct Value {
16
24
  Metadata metadata;
17
25
  bytes data;
@@ -24,15 +32,11 @@ interface IKeyValueStore is ILifecycle {
24
32
  // eg account outside gif objects that initiated the tx
25
33
  // implies the caller needs to be propagated through all calls up to key values store itself
26
34
  // to always have the instance address there doesn't seem to make sense
27
- address updatedBy;
35
+ // address updatedBy;
28
36
  Blocknumber updatedIn;
29
37
  Blocknumber createdIn;
30
38
  }
31
39
 
32
- event LogInfoCreated(ObjectType objectType, KeyId keyId, StateId state, address createdBy, address txOrigin);
33
- event LogInfoUpdated(ObjectType objectType, KeyId keyId, StateId state, address updatedBy, address txOrigin, Blocknumber lastUpdatedIn);
34
- event LogStateUpdated(ObjectType objectType, KeyId keyId, StateId stateOld, StateId stateNew, address updatedBy, address txOrigin, Blocknumber lastUpdatedIn);
35
-
36
40
  // generic state changing functions
37
41
  // function create(Key32 key, bytes memory data) external;
38
42
  // function update(Key32 key, bytes memory data, StateId state) external;
@@ -1,9 +1,9 @@
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} from "../../types/ObjectType.sol";
6
- import {StateId} from "../../types/StateId.sol";
4
+ import {NftId} from "../type/NftId.sol";
5
+ import {ObjectType} from "../type/ObjectType.sol";
6
+ import {StateId} from "../type/StateId.sol";
7
7
 
8
8
  interface ILifecycle {
9
9
 
@@ -1,22 +1,23 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IRegistry} from "../registry/IRegistry.sol";
5
- import {NftId} from "../types/NftId.sol";
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
6
5
 
7
- interface INftOwnable {
8
- error ErrorNotOwner(address account);
6
+ import {IRegistryLinked} from "./IRegistryLinked.sol";
7
+ import {NftId} from "../type/NftId.sol";
9
8
 
10
- error ErrorAlreadyLinked(address registry, NftId nftId);
11
- error ErrorRegistryAlreadyInitialized(address registry);
12
- error ErrorRegistryNotInitialized();
13
- error ErrorRegistryAddressZero();
14
- error ErrorNotRegistry(address registryAddress);
15
- error ErrorContractNotRegistered(address contractAddress);
9
+ interface INftOwnable is
10
+ IERC165,
11
+ IRegistryLinked
12
+ {
13
+ error ErrorNftOwnableInitialOwnerZero();
14
+ error ErrorNftOwnableNotOwner(address account);
16
15
 
17
- function linkToRegisteredNftId() external;
16
+ error ErrorNftOwnableAlreadyLinked(NftId nftId);
17
+ error ErrorNftOwnableContractNotRegistered(address contractAddress);
18
+
19
+ function linkToRegisteredNftId() external returns (NftId);
18
20
 
19
- function getRegistry() external view returns (IRegistry);
20
21
  function getNftId() external view returns (NftId);
21
22
  function getOwner() external view returns (address);
22
23
  }
@@ -0,0 +1,45 @@
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
+
7
+ import {Amount} from "../type/Amount.sol";
8
+ import {ClaimId} from "../type/ClaimId.sol";
9
+ import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
10
+ import {NftId} from "../type/NftId.sol";
11
+ import {PayoutId} from "../type/PayoutId.sol";
12
+
13
+ /// @dev generic interface for contracts that need to hold policies and receive payouts
14
+ /// GIF will notify policy holder contracts for policy creation and payout execution
15
+ interface IPolicyHolder is
16
+ IERC165,
17
+ IERC721Receiver,
18
+ IRegistryLinked
19
+ {
20
+
21
+ /// @dev callback function that will be called after successful policy activation
22
+ /// active policies may open claims under the activated policy
23
+ function policyActivated(NftId policyNftId) external;
24
+
25
+ /// @dev callback function to indicate the specified policy has expired
26
+ /// expired policies may no longer open claims
27
+ /// it is optional for products to notifiy policy holder of expired claims
28
+ function policyExpired(NftId policyNftId) external;
29
+
30
+ /// @dev request for a payout by the requesting policy
31
+ /// the contract implements its use case specific handling for such requests.
32
+ /// eg. creation of a pending payout, a corresponding claim against one of the policies held by the IPolicyHolder
33
+ function requestPayout(NftId requestingPolicyNftId, Amount requestedPayoutAmount) external;
34
+
35
+ /// @dev callback function to notify the confirmation of the specified claim
36
+ /// active policies may open claims under the activated policy
37
+ function claimConfirmed(NftId policyNftId, ClaimId claimId, Amount amount) external;
38
+
39
+ /// @dev callback function that will be called after a successful payout
40
+ function payoutExecuted(NftId policyNftId, PayoutId payoutId, address beneficiary, Amount amount) external;
41
+
42
+ /// @dev determines policy and claim specific beneficiary address
43
+ /// returned address will override GIF default where the policy nft holder is treated as beneficiary
44
+ function getBeneficiary(NftId policyNftId, PayoutId payoutId) external view returns (address beneficiary);
45
+ }
@@ -1,12 +1,12 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
-
6
4
  import {INftOwnable} from "./INftOwnable.sol";
7
5
  import {IRegistry} from "../registry/IRegistry.sol";
8
6
 
9
- interface IRegisterable is IERC165, INftOwnable {
7
+ interface IRegisterable is
8
+ INftOwnable
9
+ {
10
10
 
11
11
  function getInitialInfo()
12
12
  external
@@ -0,0 +1,11 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IRegistry} from "../registry/IRegistry.sol";
5
+
6
+ interface IRegistryLinked {
7
+
8
+ error ErrorNotRegistry(address registryAddress);
9
+
10
+ function getRegistry() external view returns (IRegistry);
11
+ }
@@ -1,16 +1,18 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {VersionPart} from "../types/Version.sol";
5
- import {ObjectType} from "../types/ObjectType.sol";
4
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
5
 
7
6
  import {IRegisterable} from "./IRegisterable.sol";
8
7
  import {IVersionable} from "./IVersionable.sol";
8
+ import {ObjectType} from "../type/ObjectType.sol";
9
9
 
10
10
  interface IService is
11
11
  IRegisterable,
12
- IVersionable
12
+ IVersionable,
13
+ IAccessManaged
13
14
  {
15
+ error ErrorServiceNotImplemented();
16
+
14
17
  function getDomain() external pure returns(ObjectType serviceDomain);
15
- function getMajorVersion() external view returns(VersionPart majorVersion);
16
18
  }