@etherisc/gif-next 0.0.2-d551b5e-892 → 0.0.2-d59d51e-694

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 (569) hide show
  1. package/README.md +8 -13
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1410 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1343 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +799 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +969 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +808 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +73 -83
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +291 -1349
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +356 -181
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +366 -2977
  20. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  21. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +602 -194
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +132 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +485 -337
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +509 -445
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +328 -145
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3468 -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 +71 -45
  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 +1091 -0
  50. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  51. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +723 -0
  52. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  53. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → pool/IBundleService.sol/IBundleService.json} +297 -341
  54. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  55. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1148 -0
  56. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  57. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1044 -0
  58. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  59. package/artifacts/contracts/pool/Pool.sol/Pool.json +1559 -0
  60. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  61. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1411 -0
  62. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +719 -0
  64. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  65. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +820 -0
  66. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +699 -0
  68. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  69. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1264 -0
  70. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +787 -0
  72. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  73. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +231 -204
  74. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  75. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
  76. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  77. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +333 -296
  78. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  79. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IPricingService.sol/IPricingService.json} +253 -261
  80. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  81. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +989 -0
  82. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  83. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → product/IProductService.sol/IProductService.json} +132 -119
  84. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  85. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1132 -0
  86. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  87. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +731 -0
  88. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  89. package/artifacts/contracts/product/PricingService.sol/PricingService.json +969 -0
  90. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +755 -0
  92. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  93. package/artifacts/contracts/product/Product.sol/Product.json +1391 -0
  94. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  95. package/artifacts/contracts/product/ProductService.sol/ProductService.json +673 -0
  96. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  97. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +675 -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 +370 -117
  102. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  103. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +368 -222
  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 +463 -184
  108. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  109. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +322 -0
  110. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  111. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +438 -333
  112. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +324 -136
  114. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  115. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1151 -0
  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 +352 -109
  120. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  121. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  122. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  123. package/artifacts/contracts/shared/Component.sol/Component.json +890 -0
  124. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  125. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1461 -0
  126. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +765 -0
  128. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  129. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +207 -208
  130. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  131. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  132. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  133. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IComponent.sol/IComponent.json} +275 -103
  134. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  135. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +854 -0
  136. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  137. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +699 -0
  138. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  139. package/artifacts/contracts/{instance/IInstanceBase.sol/IInstanceBase.json → shared/IKeyValueStore.sol/IKeyValueStore.json} +51 -21
  140. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  141. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  142. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
  144. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  145. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  146. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  147. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -34
  148. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  149. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +35 -0
  150. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  151. package/artifacts/contracts/shared/IService.sol/IService.json +84 -178
  152. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  153. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  154. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  155. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1030 -0
  156. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  157. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +581 -0
  158. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  159. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  160. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  161. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  162. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  163. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +109 -29
  164. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  165. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  166. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  167. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +310 -61
  168. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  169. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +126 -53
  170. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  171. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  172. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  173. package/artifacts/contracts/shared/Service.sol/Service.json +185 -165
  174. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  175. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  176. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  177. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  178. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  179. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  180. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  181. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1435 -0
  182. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.dbg.json +4 -0
  183. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → staking/IStakingManager.sol/IStakingManager.json} +10 -10
  184. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  185. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +884 -0
  186. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.dbg.json +4 -0
  187. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.json +357 -0
  188. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  189. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +402 -0
  190. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  191. package/artifacts/contracts/staking/Staking.sol/Staking.json +2002 -0
  192. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  193. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +748 -0
  194. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  195. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +368 -0
  196. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  197. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1207 -0
  198. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  199. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +698 -0
  200. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  201. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1690 -0
  202. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  203. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +494 -0
  204. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  205. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  206. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  207. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  208. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  209. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  210. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  211. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  212. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  213. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  214. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  215. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  216. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  217. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  218. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  219. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +185 -0
  220. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  221. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  222. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  223. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  224. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  225. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  226. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  227. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  228. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  229. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  230. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  231. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  232. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  233. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +174 -0
  234. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  235. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  236. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  237. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
  238. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  239. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  240. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  241. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  242. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  243. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  244. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  245. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  246. package/contracts/distribution/Distribution.sol +263 -0
  247. package/contracts/distribution/DistributionService.sol +298 -0
  248. package/contracts/{instance/service → distribution}/DistributionServiceManager.sol +20 -20
  249. package/contracts/distribution/IDistributionComponent.sol +66 -0
  250. package/contracts/distribution/IDistributionService.sol +81 -0
  251. package/contracts/instance/BundleManager.sol +22 -25
  252. package/contracts/instance/IInstance.sol +57 -38
  253. package/contracts/instance/IInstanceService.sol +65 -14
  254. package/contracts/instance/Instance.sol +146 -378
  255. package/contracts/instance/InstanceAccessManager.sol +432 -177
  256. package/contracts/instance/InstanceAuthorizationsLib.sol +336 -0
  257. package/contracts/instance/InstanceReader.sol +136 -85
  258. package/contracts/instance/InstanceService.sol +305 -190
  259. package/contracts/instance/InstanceServiceManager.sol +12 -25
  260. package/contracts/instance/InstanceStore.sol +260 -0
  261. package/contracts/instance/base/BalanceStore.sol +118 -0
  262. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +8 -3
  263. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +16 -35
  264. package/contracts/instance/module/IAccess.sol +37 -21
  265. package/contracts/instance/module/IBundle.sol +8 -8
  266. package/contracts/instance/module/IComponents.sol +52 -0
  267. package/contracts/instance/module/IDistribution.sol +7 -4
  268. package/contracts/instance/module/IPolicy.sol +56 -17
  269. package/contracts/instance/module/IRisk.sol +1 -1
  270. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  271. package/contracts/pool/BundleService.sol +296 -0
  272. package/contracts/pool/BundleServiceManager.sol +42 -0
  273. package/contracts/pool/IBundleService.sol +106 -0
  274. package/contracts/pool/IPoolComponent.sol +112 -0
  275. package/contracts/pool/IPoolService.sol +147 -0
  276. package/contracts/pool/Pool.sol +299 -0
  277. package/contracts/pool/PoolService.sol +424 -0
  278. package/contracts/pool/PoolServiceManager.sol +42 -0
  279. package/contracts/product/ApplicationService.sol +254 -0
  280. package/contracts/product/ApplicationServiceManager.sol +38 -0
  281. package/contracts/product/ClaimService.sol +437 -0
  282. package/contracts/product/ClaimServiceManager.sol +38 -0
  283. package/contracts/product/IApplicationService.sol +62 -0
  284. package/contracts/product/IClaimService.sol +93 -0
  285. package/contracts/product/IPolicyService.sol +78 -0
  286. package/contracts/product/IPricingService.sol +39 -0
  287. package/contracts/product/IProductComponent.sol +42 -0
  288. package/contracts/product/IProductService.sol +33 -0
  289. package/contracts/product/PolicyService.sol +473 -0
  290. package/contracts/product/PolicyServiceManager.sol +42 -0
  291. package/contracts/product/PricingService.sol +301 -0
  292. package/contracts/product/PricingServiceManager.sol +42 -0
  293. package/contracts/product/Product.sol +377 -0
  294. package/contracts/product/ProductService.sol +124 -0
  295. package/contracts/product/ProductServiceManager.sol +42 -0
  296. package/contracts/registry/ChainNft.sol +14 -0
  297. package/contracts/registry/IRegistry.sol +74 -30
  298. package/contracts/registry/IRegistryService.sol +46 -28
  299. package/contracts/registry/ITransferInterceptor.sol +1 -0
  300. package/contracts/registry/Registry.sol +367 -237
  301. package/contracts/registry/RegistryAccessManager.sol +196 -0
  302. package/contracts/registry/RegistryService.sol +113 -205
  303. package/contracts/registry/RegistryServiceManager.sol +34 -42
  304. package/contracts/registry/ReleaseManager.sol +563 -0
  305. package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
  306. package/contracts/registry/TokenRegistry.sol +300 -57
  307. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  308. package/contracts/shared/Component.sol +286 -0
  309. package/contracts/shared/ComponentService.sol +595 -0
  310. package/contracts/shared/ComponentServiceManager.sol +35 -0
  311. package/contracts/shared/ComponentVerifyingService.sol +111 -0
  312. package/contracts/shared/ERC165.sol +14 -12
  313. package/contracts/shared/IComponent.sol +74 -0
  314. package/contracts/shared/IComponentService.sol +91 -0
  315. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  316. package/contracts/{instance/base → shared}/IKeyValueStore.sol +14 -10
  317. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
  318. package/contracts/shared/INftOwnable.sol +12 -11
  319. package/contracts/shared/IPolicyHolder.sol +45 -0
  320. package/contracts/shared/IRegisterable.sol +4 -6
  321. package/contracts/shared/IRegistryLinked.sol +11 -0
  322. package/contracts/shared/IService.sol +7 -4
  323. package/contracts/shared/IVersionable.sol +5 -48
  324. package/contracts/shared/InstanceLinkedComponent.sol +145 -0
  325. package/contracts/shared/KeyValueStore.sol +130 -0
  326. package/contracts/{instance/base → shared}/Lifecycle.sol +28 -7
  327. package/contracts/shared/NftIdSetManager.sol +65 -0
  328. package/contracts/shared/NftOwnable.sol +64 -80
  329. package/contracts/shared/PolicyHolder.sol +101 -0
  330. package/contracts/shared/ProxyManager.sol +126 -25
  331. package/contracts/shared/Registerable.sol +26 -41
  332. package/contracts/shared/RegistryLinked.sol +43 -0
  333. package/contracts/shared/Service.sol +45 -23
  334. package/contracts/shared/TokenHandler.sol +37 -6
  335. package/contracts/shared/Versionable.sol +4 -92
  336. package/contracts/staking/IStaking.sol +152 -0
  337. package/contracts/staking/IStakingManager.sol +15 -0
  338. package/contracts/staking/IStakingService.sol +162 -0
  339. package/contracts/staking/IStakingStore.sol +130 -0
  340. package/contracts/staking/StakeManagerLib.sol +156 -0
  341. package/contracts/staking/Staking.sol +502 -0
  342. package/contracts/staking/StakingManager.sol +65 -0
  343. package/contracts/staking/StakingReader.sol +147 -0
  344. package/contracts/staking/StakingService.sol +375 -0
  345. package/contracts/staking/StakingServiceManager.sol +44 -0
  346. package/contracts/staking/StakingStore.sol +329 -0
  347. package/contracts/staking/TargetManagerLib.sol +179 -0
  348. package/contracts/type/Amount.sol +114 -0
  349. package/contracts/{types → type}/Blocknumber.sol +20 -2
  350. package/contracts/type/ClaimId.sol +75 -0
  351. package/contracts/{types → type}/DistributorType.sol +2 -2
  352. package/contracts/{types → type}/Fee.sol +32 -22
  353. package/contracts/{types → type}/NftId.sol +17 -11
  354. package/contracts/{types → type}/NftIdSet.sol +1 -1
  355. package/contracts/{types → type}/ObjectType.sol +26 -9
  356. package/contracts/type/PayoutId.sol +82 -0
  357. package/contracts/{types → type}/Referral.sol +4 -0
  358. package/contracts/type/RoleId.sol +143 -0
  359. package/contracts/type/Seconds.sol +71 -0
  360. package/contracts/{types → type}/StateId.sol +24 -6
  361. package/contracts/{types → type}/Timestamp.sol +18 -13
  362. package/contracts/{types → type}/UFixed.sol +1 -0
  363. package/contracts/{types → type}/Version.sol +1 -0
  364. package/package.json +3 -3
  365. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  366. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  367. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -744
  368. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  369. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  370. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  371. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  372. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  373. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  374. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  375. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  376. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -939
  377. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  378. package/artifacts/contracts/components/Product.sol/Product.json +0 -855
  379. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  380. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  381. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  382. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  383. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  384. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  385. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  386. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  387. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  388. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  389. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  390. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  391. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  392. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  393. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  394. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  395. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  396. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  397. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  398. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  399. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  400. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  401. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  402. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  403. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  404. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  405. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  406. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  407. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  408. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  409. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  410. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  411. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  412. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  413. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  414. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  415. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  416. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  417. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  418. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  419. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  420. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  421. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  422. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  423. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  424. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  425. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  426. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  427. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -285
  428. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  429. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  430. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  431. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  432. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +0 -429
  433. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  434. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  435. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  436. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  437. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  438. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  439. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  440. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  441. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  442. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  443. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  444. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -684
  445. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  446. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -428
  447. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  448. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  449. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  450. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  451. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  452. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  453. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  454. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -984
  455. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  456. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -464
  457. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  458. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1017
  459. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  460. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -448
  461. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  462. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -789
  463. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  464. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -420
  465. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  466. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  467. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  468. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  469. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  470. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  471. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  472. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  473. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  474. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  475. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  476. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  477. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  478. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  479. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  480. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  481. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  482. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  483. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  484. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  485. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  486. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  487. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  488. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  489. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  490. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  491. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  492. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  493. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  494. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  495. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  496. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  497. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  498. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  499. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  500. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  501. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  502. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  503. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  504. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  505. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  506. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  507. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  508. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  509. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  510. package/contracts/components/BaseComponent.sol +0 -132
  511. package/contracts/components/Distribution.sol +0 -163
  512. package/contracts/components/IBaseComponent.sol +0 -31
  513. package/contracts/components/IDistributionComponent.sol +0 -44
  514. package/contracts/components/IPoolComponent.sol +0 -66
  515. package/contracts/components/IProductComponent.sol +0 -35
  516. package/contracts/components/Pool.sol +0 -267
  517. package/contracts/components/Product.sol +0 -292
  518. package/contracts/experiment/cloning/Cloner.sol +0 -47
  519. package/contracts/experiment/errors/Require.sol +0 -38
  520. package/contracts/experiment/errors/Revert.sol +0 -44
  521. package/contracts/experiment/inheritance/A.sol +0 -53
  522. package/contracts/experiment/inheritance/B.sol +0 -28
  523. package/contracts/experiment/inheritance/C.sol +0 -34
  524. package/contracts/experiment/inheritance/IA.sol +0 -13
  525. package/contracts/experiment/inheritance/IB.sol +0 -10
  526. package/contracts/experiment/inheritance/IC.sol +0 -12
  527. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  528. package/contracts/experiment/statemachine/ISM.sol +0 -25
  529. package/contracts/experiment/statemachine/SM.sol +0 -57
  530. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  531. package/contracts/experiment/types/TypeA.sol +0 -47
  532. package/contracts/experiment/types/TypeB.sol +0 -29
  533. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  534. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  535. package/contracts/instance/IInstanceBase.sol +0 -26
  536. package/contracts/instance/InstanceBase.sol +0 -41
  537. package/contracts/instance/base/ComponentServiceBase.sol +0 -72
  538. package/contracts/instance/base/IInstanceBase.sol +0 -23
  539. package/contracts/instance/base/KeyValueStore.sol +0 -172
  540. package/contracts/instance/module/ISetup.sol +0 -46
  541. package/contracts/instance/module/ITreasury.sol +0 -23
  542. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  543. package/contracts/instance/service/DistributionService.sol +0 -118
  544. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  545. package/contracts/instance/service/IDistributionService.sol +0 -12
  546. package/contracts/instance/service/IPolicyService.sol +0 -87
  547. package/contracts/instance/service/IPoolService.sol +0 -51
  548. package/contracts/instance/service/IProductService.sol +0 -40
  549. package/contracts/instance/service/PolicyService.sol +0 -513
  550. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  551. package/contracts/instance/service/PoolService.sol +0 -317
  552. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  553. package/contracts/instance/service/ProductService.sol +0 -173
  554. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  555. package/contracts/shared/ContractDeployerLib.sol +0 -72
  556. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  557. package/contracts/test/TestFee.sol +0 -25
  558. package/contracts/test/TestRegisterable.sol +0 -18
  559. package/contracts/test/TestRoleId.sol +0 -14
  560. package/contracts/test/TestService.sol +0 -24
  561. package/contracts/test/TestToken.sol +0 -26
  562. package/contracts/test/TestVersion.sol +0 -44
  563. package/contracts/test/TestVersionable.sol +0 -17
  564. package/contracts/types/ChainId.sol +0 -38
  565. package/contracts/types/NumberId.sol +0 -52
  566. package/contracts/types/RoleId.sol +0 -91
  567. /package/contracts/{types → type}/AddressSet.sol +0 -0
  568. /package/contracts/{types → type}/Key32.sol +0 -0
  569. /package/contracts/{types → type}/RiskId.sol +0 -0
@@ -0,0 +1,260 @@
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
+
6
+ import {Amount} from "../type/Amount.sol";
7
+ import {Key32, KeyId, Key32Lib} from "../type/Key32.sol";
8
+ import {NftId} from "../type/NftId.sol";
9
+ import {ClaimId} from "../type/ClaimId.sol";
10
+ import {ObjectType, BUNDLE, DISTRIBUTION, FEE, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET, COMPONENT, DISTRIBUTOR, DISTRIBUTOR_TYPE} from "../type/ObjectType.sol";
11
+ import {RiskId, RiskIdLib} from "../type/RiskId.sol";
12
+ import {RoleId, RoleIdLib, INSTANCE_ROLE, INSTANCE_OWNER_ROLE} from "../type/RoleId.sol";
13
+ import {StateId, ACTIVE} from "../type/StateId.sol";
14
+ import {TimestampLib} from "../type/Timestamp.sol";
15
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
16
+ import {ReferralId} from "../type/Referral.sol";
17
+ import {DistributorType} from "../type/DistributorType.sol";
18
+ import {PayoutId} from "../type/PayoutId.sol";
19
+
20
+ import {BalanceStore} from "./base/BalanceStore.sol";
21
+ import {IInstance} from "./IInstance.sol";
22
+ import {KeyValueStore} from "../shared/KeyValueStore.sol";
23
+ import {IKeyValueStore} from "../shared/KeyValueStore.sol";
24
+
25
+ import {IBundle} from "./module/IBundle.sol";
26
+ import {IComponents} from "./module/IComponents.sol";
27
+ import {IDistribution} from "./module/IDistribution.sol";
28
+ import {IPolicy} from "./module/IPolicy.sol";
29
+ import {IRisk} from "./module/IRisk.sol";
30
+
31
+
32
+ contract InstanceStore is
33
+ AccessManagedUpgradeable,
34
+ KeyValueStore,
35
+ BalanceStore
36
+ {
37
+ function initialize(address instance)
38
+ public
39
+ initializer()
40
+ {
41
+ address authority = IInstance(instance).authority();
42
+ __AccessManaged_init(authority);
43
+ initializeLifecycle();
44
+ }
45
+
46
+ //--- Component ---------------------------------------------------------//
47
+ function createComponent(
48
+ NftId componentNftId,
49
+ IComponents.ComponentInfo memory componentInfo
50
+ )
51
+ external
52
+ restricted()
53
+ {
54
+ _registerBalanceTarget(componentNftId);
55
+ _create(_toNftKey32(componentNftId, COMPONENT()), abi.encode(componentInfo));
56
+ }
57
+
58
+ function updateComponent(
59
+ NftId componentNftId,
60
+ IComponents.ComponentInfo memory componentInfo,
61
+ StateId newState
62
+ )
63
+ external
64
+ restricted()
65
+ {
66
+ _update(_toNftKey32(componentNftId, COMPONENT()), abi.encode(componentInfo), newState);
67
+ }
68
+
69
+ //--- ProductSetup ------------------------------------------------------//
70
+
71
+ function createProduct(NftId productNftId, IComponents.ProductInfo memory info) external restricted() {
72
+ _create(_toNftKey32(productNftId, PRODUCT()), abi.encode(info));
73
+ }
74
+
75
+ function updateProduct(NftId productNftId, IComponents.ProductInfo memory info, StateId newState) external restricted() {
76
+ _update(_toNftKey32(productNftId, PRODUCT()), abi.encode(info), newState);
77
+ }
78
+
79
+ function updateProductSetupState(NftId productNftId, StateId newState) external restricted() {
80
+ _updateState(_toNftKey32(productNftId, PRODUCT()), newState);
81
+ }
82
+
83
+ //--- PoolSetup ------------------------------------------------------//
84
+
85
+ function createPool(
86
+ NftId poolNftId,
87
+ IComponents.PoolInfo memory info
88
+ )
89
+ external
90
+ restricted()
91
+ {
92
+ _create(_toNftKey32(poolNftId, POOL()), abi.encode(info));
93
+ }
94
+
95
+ function updatePool(NftId poolNftId, IComponents.PoolInfo memory info, StateId newState) external restricted() {
96
+ _update(_toNftKey32(poolNftId, POOL()), abi.encode(info), newState);
97
+ }
98
+
99
+ function updatePoolState(NftId poolNftId, StateId newState) external restricted() {
100
+ _updateState(_toNftKey32(poolNftId, POOL()), newState);
101
+ }
102
+
103
+ //--- DistributorType -------------------------------------------------------//
104
+ function createDistributorType(DistributorType distributorType, IDistribution.DistributorTypeInfo memory info) external restricted() {
105
+ _create(distributorType.toKey32(), abi.encode(info));
106
+ }
107
+
108
+ function updateDistributorType(DistributorType distributorType, IDistribution.DistributorTypeInfo memory info, StateId newState) external restricted() {
109
+ _update(distributorType.toKey32(), abi.encode(info), newState);
110
+ }
111
+
112
+ function updateDistributorTypeState(DistributorType distributorType, StateId newState) external restricted() {
113
+ _updateState(distributorType.toKey32(), newState);
114
+ }
115
+
116
+ //--- Distributor -------------------------------------------------------//
117
+ function createDistributor(NftId distributorNftId, IDistribution.DistributorInfo memory info) external restricted() {
118
+ _create(_toNftKey32(distributorNftId, DISTRIBUTOR()), abi.encode(info));
119
+ }
120
+
121
+ function updateDistributor(NftId distributorNftId, IDistribution.DistributorInfo memory info, StateId newState) external restricted() {
122
+ _update(_toNftKey32(distributorNftId, DISTRIBUTOR()), abi.encode(info), newState);
123
+ }
124
+
125
+ function updateDistributorState(NftId distributorNftId, StateId newState) external restricted() {
126
+ _updateState(_toNftKey32(distributorNftId, DISTRIBUTOR()), newState);
127
+ }
128
+
129
+ //--- Referral ----------------------------------------------------------//
130
+ function createReferral(ReferralId referralId, IDistribution.ReferralInfo memory referralInfo) external restricted() {
131
+ _create(referralId.toKey32(), abi.encode(referralInfo));
132
+ }
133
+
134
+ function updateReferral(ReferralId referralId, IDistribution.ReferralInfo memory referralInfo, StateId newState) external restricted() {
135
+ _update(referralId.toKey32(), abi.encode(referralInfo), newState);
136
+ }
137
+
138
+ function updateReferralState(ReferralId referralId, StateId newState) external restricted() {
139
+ _updateState(referralId.toKey32(), newState);
140
+ }
141
+
142
+ //--- Bundle ------------------------------------------------------------//
143
+ function createBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle) external restricted() {
144
+ _registerBalanceTarget(bundleNftId);
145
+ _create(_toNftKey32(bundleNftId, BUNDLE()), abi.encode(bundle));
146
+ }
147
+
148
+ function updateBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle, StateId newState) external restricted() {
149
+ _update(_toNftKey32(bundleNftId, BUNDLE()), abi.encode(bundle), newState);
150
+ }
151
+
152
+ function updateBundleState(NftId bundleNftId, StateId newState) external restricted() {
153
+ _updateState(_toNftKey32(bundleNftId, BUNDLE()), newState);
154
+ }
155
+
156
+ //--- Risk --------------------------------------------------------------//
157
+ function createRisk(RiskId riskId, IRisk.RiskInfo memory risk) external restricted() {
158
+ _create(riskId.toKey32(), abi.encode(risk));
159
+ }
160
+
161
+ function updateRisk(RiskId riskId, IRisk.RiskInfo memory risk, StateId newState) external restricted() {
162
+ _update(riskId.toKey32(), abi.encode(risk), newState);
163
+ }
164
+
165
+ function updateRiskState(RiskId riskId, StateId newState) external restricted() {
166
+ _updateState(riskId.toKey32(), newState);
167
+ }
168
+
169
+ //--- Application (Policy) ----------------------------------------------//
170
+ function createApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy) external restricted() {
171
+ _registerBalanceTarget(applicationNftId);
172
+ _create(_toNftKey32(applicationNftId, POLICY()), abi.encode(policy));
173
+ }
174
+
175
+ function updateApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
176
+ _update(_toNftKey32(applicationNftId, POLICY()), abi.encode(policy), newState);
177
+ }
178
+
179
+ function updateApplicationState(NftId applicationNftId, StateId newState) external restricted() {
180
+ _updateState(_toNftKey32(applicationNftId, POLICY()), newState);
181
+ }
182
+
183
+ //--- Policy ------------------------------------------------------------//
184
+ function updatePolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
185
+ _update(_toNftKey32(policyNftId, POLICY()), abi.encode(policy), newState);
186
+ }
187
+
188
+ function updatePolicyClaims(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
189
+ _update(_toNftKey32(policyNftId, POLICY()), abi.encode(policy), newState);
190
+ }
191
+
192
+ function updatePolicyState(NftId policyNftId, StateId newState) external restricted() {
193
+ _updateState(_toNftKey32(policyNftId, POLICY()), newState);
194
+ }
195
+
196
+ //--- Claim -------------------------------------------------------------//
197
+ function createClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim) external restricted() {
198
+ _create(_toClaimKey32(policyNftId, claimId), abi.encode(claim));
199
+ }
200
+
201
+ function updateClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim, StateId newState) external restricted() {
202
+ _update(_toClaimKey32(policyNftId, claimId), abi.encode(claim), newState);
203
+ }
204
+
205
+ function updateClaimState(NftId policyNftId, ClaimId claimId, StateId newState) external restricted() {
206
+ _updateState(_toClaimKey32(policyNftId, claimId), newState);
207
+ }
208
+
209
+ //--- Payout ------------------------------------------------------------//
210
+ function createPayout(NftId policyNftId, PayoutId payoutId, IPolicy.PayoutInfo memory payout) external restricted() {
211
+ _create(_toPayoutKey32(policyNftId, payoutId), abi.encode(payout));
212
+ }
213
+
214
+ function updatePayout(NftId policyNftId, PayoutId payoutId, IPolicy.PayoutInfo memory payout, StateId newState) external restricted() {
215
+ _update(_toPayoutKey32(policyNftId, payoutId), abi.encode(payout), newState);
216
+ }
217
+
218
+ function updatePayoutState(NftId policyNftId, PayoutId payoutId, StateId newState) external restricted() {
219
+ _updateState(_toPayoutKey32(policyNftId, payoutId), newState);
220
+ }
221
+
222
+ //--- balance and fee management functions ------------------------------//
223
+
224
+ function increaseBalance(NftId targetNftId, Amount amount) external restricted() returns (Amount newBalance) {
225
+ return _increaseBalance(targetNftId, amount);
226
+ }
227
+
228
+ function decreaseBalance(NftId targetNftId, Amount amount) external restricted() returns (Amount newBalance) {
229
+ return _decreaseBalance(targetNftId, amount);
230
+ }
231
+
232
+ function increaseFees(NftId targetNftId, Amount amount) external restricted() returns (Amount newFeeBalance) {
233
+ return _increaseFees(targetNftId, amount);
234
+ }
235
+
236
+ function decreaseFees(NftId targetNftId, Amount amount) external restricted() returns (Amount newFeeBalance) {
237
+ return _decreaseFees(targetNftId, amount);
238
+ }
239
+
240
+ function increaseLocked(NftId targetNftId, Amount amount) external restricted() returns (Amount newBalance) {
241
+ return _increaseLocked(targetNftId, amount);
242
+ }
243
+
244
+ function decreaseLocked(NftId targetNftId, Amount amount) external restricted() returns (Amount newBalance) {
245
+ return _decreaseLocked(targetNftId, amount);
246
+ }
247
+
248
+ //--- internal view/pure functions --------------------------------------//
249
+ function _toNftKey32(NftId nftId, ObjectType objectType) private pure returns (Key32) {
250
+ return nftId.toKey32(objectType);
251
+ }
252
+
253
+ function _toClaimKey32(NftId policyNftId, ClaimId claimId) private pure returns (Key32) {
254
+ return claimId.toKey32(policyNftId);
255
+ }
256
+
257
+ function _toPayoutKey32(NftId policyNftId, PayoutId payoutId) private pure returns (Key32) {
258
+ return payoutId.toKey32(policyNftId);
259
+ }
260
+ }
@@ -0,0 +1,118 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Blocknumber, BlocknumberLib} from "../../type/Blocknumber.sol";
5
+ import {NftId} from "../../type/NftId.sol";
6
+ import {Amount} from "../../type/Amount.sol";
7
+
8
+ contract BalanceStore {
9
+
10
+ error ErrorBalanceStoreTargetAlreadyRegistered(NftId targetNftId);
11
+ error ErrorBalanceStoreTargetNotRegistered(NftId targetNftId);
12
+
13
+ event LogBalanceStoreTargetRegistered(NftId targetNftId);
14
+
15
+ event LogBalanceStoreFeesIncreased(NftId targetNftId, Amount addedAmount, Amount newBalance, Blocknumber lastUpdatedIn);
16
+ event LogBalanceStoreFeesDecreased(NftId targetNftId, Amount addedAmount, Amount newBalance, Blocknumber lastUpdatedIn);
17
+
18
+ event LogBalanceStoreLockedIncreased(NftId targetNftId, Amount addedAmount, Amount newBalance, Blocknumber lastUpdatedIn);
19
+ event LogBalanceStoreLockedDecreased(NftId targetNftId, Amount addedAmount, Amount newBalance, Blocknumber lastUpdatedIn);
20
+
21
+ event LogBalanceStoreBalanceIncreased(NftId targetNftId, Amount addedAmount, Amount newBalance, Blocknumber lastUpdatedIn);
22
+ event LogBalanceStoreBalanceDecreased(NftId targetNftId, Amount addedAmount, Amount newBalance, Blocknumber lastUpdatedIn);
23
+
24
+ mapping(NftId nftId => Amount balance) private _balanceAmount;
25
+ mapping(NftId nftId => Amount locked) private _lockedAmount;
26
+ mapping(NftId nftId => Amount fees) private _feeAmount;
27
+ mapping(NftId nftId => bool isRegistered) private _isRegistered;
28
+
29
+ // TODO check if this is made redundant by *Info struct updates
30
+ mapping(NftId nftId => Blocknumber lastUpdatedIn) private _lastUpdatedIn;
31
+
32
+ modifier onlyRegisteredTarget(NftId targetNftId) {
33
+ if (!_isRegistered[targetNftId]) {
34
+ revert ErrorBalanceStoreTargetNotRegistered(targetNftId);
35
+ }
36
+ _;
37
+ }
38
+
39
+ function getBalanceAmount(NftId targetNftId) external view returns (Amount balanceAmount) { return _balanceAmount[targetNftId]; }
40
+ function getLockedAmount(NftId targetNftId) external view returns (Amount lockedAmount) { return _lockedAmount[targetNftId]; }
41
+ function getFeeAmount(NftId targetNftId) external view returns (Amount feeAmount) { return _feeAmount[targetNftId]; }
42
+
43
+ function getAmounts(NftId targetNftId)
44
+ external
45
+ view
46
+ returns (
47
+ Amount balanceAmount,
48
+ Amount lockedAmount,
49
+ Amount feeAmount
50
+ )
51
+ {
52
+ balanceAmount = _balanceAmount[targetNftId];
53
+ lockedAmount = _lockedAmount[targetNftId];
54
+ feeAmount = _feeAmount[targetNftId];
55
+ }
56
+
57
+ function _registerBalanceTarget(NftId targetNftId) internal {
58
+ if (_isRegistered[targetNftId]) {
59
+ revert ErrorBalanceStoreTargetAlreadyRegistered(targetNftId);
60
+ }
61
+
62
+ _isRegistered[targetNftId] = true;
63
+ _lastUpdatedIn[targetNftId] = BlocknumberLib.currentBlocknumber();
64
+
65
+ emit LogBalanceStoreTargetRegistered(targetNftId);
66
+ }
67
+
68
+ //--- fee management ----------------------------------------------------//
69
+ function _increaseFees(NftId targetNftId, Amount amount) internal onlyRegisteredTarget(targetNftId) returns (Amount newBalance) {
70
+ newBalance = _feeAmount[targetNftId] + amount;
71
+ _feeAmount[targetNftId] = newBalance;
72
+
73
+ emit LogBalanceStoreFeesIncreased(targetNftId, amount, newBalance, _lastUpdatedIn[targetNftId]);
74
+ _lastUpdatedIn[targetNftId] = BlocknumberLib.currentBlocknumber();
75
+ }
76
+
77
+ function _decreaseFees(NftId targetNftId, Amount amount) internal onlyRegisteredTarget(targetNftId) returns (Amount newBalance) {
78
+ newBalance = _feeAmount[targetNftId] - amount;
79
+ _feeAmount[targetNftId] = newBalance;
80
+
81
+ emit LogBalanceStoreFeesDecreased(targetNftId, amount, newBalance, _lastUpdatedIn[targetNftId]);
82
+ _lastUpdatedIn[targetNftId] = BlocknumberLib.currentBlocknumber();
83
+ }
84
+
85
+ //--- locked management -------------------------------------------------//
86
+ function _increaseLocked(NftId targetNftId, Amount amount) internal onlyRegisteredTarget(targetNftId) returns (Amount newBalance) {
87
+ newBalance = _lockedAmount[targetNftId] + amount;
88
+ _lockedAmount[targetNftId] = newBalance;
89
+
90
+ emit LogBalanceStoreLockedIncreased(targetNftId, amount, newBalance, _lastUpdatedIn[targetNftId]);
91
+ _lastUpdatedIn[targetNftId] = BlocknumberLib.currentBlocknumber();
92
+ }
93
+
94
+ function _decreaseLocked(NftId targetNftId, Amount amount) internal onlyRegisteredTarget(targetNftId) returns (Amount newBalance) {
95
+ newBalance = _lockedAmount[targetNftId] - amount;
96
+ _lockedAmount[targetNftId] = newBalance;
97
+
98
+ emit LogBalanceStoreLockedDecreased(targetNftId, amount, newBalance, _lastUpdatedIn[targetNftId]);
99
+ _lastUpdatedIn[targetNftId] = BlocknumberLib.currentBlocknumber();
100
+ }
101
+
102
+ //--- balance management ------------------------------------------------//
103
+ function _increaseBalance(NftId targetNftId, Amount amount) internal onlyRegisteredTarget(targetNftId) returns (Amount newBalance) {
104
+ newBalance = _balanceAmount[targetNftId] + amount;
105
+ _balanceAmount[targetNftId] = newBalance;
106
+
107
+ emit LogBalanceStoreBalanceIncreased(targetNftId, amount, newBalance, _lastUpdatedIn[targetNftId]);
108
+ _lastUpdatedIn[targetNftId] = BlocknumberLib.currentBlocknumber();
109
+ }
110
+
111
+ function _decreaseBalance(NftId targetNftId, Amount amount) internal onlyRegisteredTarget(targetNftId) returns (Amount newBalance) {
112
+ newBalance = _balanceAmount[targetNftId] - amount;
113
+ _balanceAmount[targetNftId] = newBalance;
114
+
115
+ emit LogBalanceStoreBalanceDecreased(targetNftId, amount, newBalance, _lastUpdatedIn[targetNftId]);
116
+ _lastUpdatedIn[targetNftId] = BlocknumberLib.currentBlocknumber();
117
+ }
118
+ }
@@ -4,13 +4,14 @@ pragma solidity ^0.8.20;
4
4
  import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
5
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
6
6
 
7
- import {IRegistry} from "../registry/IRegistry.sol";
7
+ import {IRegistry} from "../../registry/IRegistry.sol";
8
8
 
9
9
  abstract contract Cloneable is
10
10
  AccessManagedUpgradeable
11
11
  {
12
12
  event CloneableInitialized(address authority, address registry);
13
-
13
+
14
+ error CloneableAuthorityZero();
14
15
  error CloneableRegistryInvalid(address registry);
15
16
 
16
17
  IRegistry internal _registry;
@@ -25,9 +26,13 @@ abstract contract Cloneable is
25
26
  address registry
26
27
  )
27
28
  public
28
- initializer
29
+ onlyInitializing
29
30
  {
30
31
  // check/handle access managed
32
+ if(authority == address(0)) {
33
+ revert CloneableAuthorityZero();
34
+ }
35
+
31
36
  __AccessManaged_init(authority);
32
37
 
33
38
  // check/handle registry
@@ -3,60 +3,41 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Cloneable} from "./Cloneable.sol";
5
5
 
6
- import {IInstance} from "./IInstance.sol";
7
- import {INSTANCE} from "../types/ObjectType.sol";
8
- import {InstanceReader} from "./InstanceReader.sol";
9
- import {IRegistry} from "../registry/IRegistry.sol";
10
- import {LibNftIdSet} from "../types/NftIdSet.sol";
11
- import {NftId} from "../types/NftId.sol";
6
+ import {IInstance} from "../IInstance.sol";
7
+ import {INSTANCE} from "../../type/ObjectType.sol";
8
+ import {InstanceReader} from "../InstanceReader.sol";
9
+ import {IRegistry} from "../../registry/IRegistry.sol";
10
+ import {LibNftIdSet} from "../../type/NftIdSet.sol";
11
+ import {NftId} from "../../type/NftId.sol";
12
12
 
13
13
  contract ObjectManager is
14
14
  Cloneable
15
15
  {
16
16
 
17
- event LogObjectManagerInitialized(NftId instanceNftId, address instanceReader);
17
+ event LogObjectManagerInitialized(address instance);
18
18
 
19
19
  error ErrorObjectManagerNftIdInvalid(NftId instanceNftId);
20
20
  error ErrorObjectManagerAlreadyAdded(NftId componentNftId, NftId objectNftId);
21
21
 
22
22
  mapping(NftId compnentNftId => LibNftIdSet.Set objects) internal _activeObjects;
23
23
  mapping(NftId compnentNftId => LibNftIdSet.Set objects) internal _allObjects;
24
- NftId internal _instanceNftId;
25
- InstanceReader internal _instanceReader;
26
-
27
- constructor() Cloneable() {
28
- _instanceReader = InstanceReader(address(0));
29
- }
24
+ IInstance internal _instance; // store instance address -> more flexible, instance may not be registered during ObjectManager initialization
30
25
 
31
26
  /// @dev call to initialize MUST be made in the same transaction as cloning of the contract
32
- function initialize(
33
- address authority,
34
- address registry,
35
- NftId instanceNftId
36
- )
27
+ function initialize(address instanceAddress)
28
+ initializer
37
29
  external
38
30
  {
39
- initialize(authority, registry);
40
-
41
- // check/handle instance nft id/instance reader
42
- IRegistry.ObjectInfo memory instanceInfo = _registry.getObjectInfo(instanceNftId);
43
- if (instanceInfo.objectType != INSTANCE()) {
44
- revert ErrorObjectManagerNftIdInvalid(instanceNftId);
45
- }
31
+ IInstance instance = IInstance(instanceAddress);
32
+ initialize(instance.authority(), address(instance.getRegistry()));
46
33
 
47
- IInstance instance = IInstance(instanceInfo.objectAddress);
48
- _instanceReader = instance.getInstanceReader();
49
- _instanceNftId = instanceNftId;
34
+ _instance = instance;
50
35
 
51
- emit LogObjectManagerInitialized(instanceNftId, address(_instanceReader));
52
- }
53
-
54
- function getInstanceReader() external view returns (InstanceReader) {
55
- return _instanceReader;
36
+ emit LogObjectManagerInitialized(instanceAddress);
56
37
  }
57
38
 
58
- function getInstanceNftId() external view returns (NftId) {
59
- return _instanceNftId;
39
+ function getInstance() external view returns (IInstance) {
40
+ return _instance;
60
41
  }
61
42
 
62
43
  function _add(NftId componentNftId, NftId objectNftId) internal {
@@ -1,38 +1,54 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
5
4
  import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
5
 
7
- import {RoleId} from "../../types/RoleId.sol";
6
+ import {RoleId} from "../../type/RoleId.sol";
7
+ import {Timestamp} from "../../type/Timestamp.sol";
8
8
 
9
9
  interface IAccess {
10
+
11
+ enum Type {
12
+ NotInitialized,
13
+ Core,
14
+ Gif,
15
+ Custom
16
+ }
17
+
10
18
  struct RoleInfo {
11
19
  ShortString name;
12
- bool isCustom;
20
+ Type rtype;
21
+ //bool isLocked;
22
+ RoleId admin;
23
+ Timestamp createdAt;
24
+ Timestamp updatedAt;
13
25
  }
14
26
 
15
27
  struct TargetInfo {
16
28
  ShortString name;
17
- bool isCustom;
29
+ Type ttype;
30
+ bool isLocked;
31
+ Timestamp createdAt;
32
+ Timestamp updatedAt;
18
33
  }
19
34
 
20
- error ErrorTargetAddressZero();
21
- error ErrorTargetAlreadyExists(address target, ShortString name);
22
- error ErrorTargetDoesNotExist(address target);
23
- error ErrorTargetNameEmpty(address target);
24
- error ErrorTargetNameExists(address target, address existingTarget, ShortString name);
25
-
26
- error ErrorRoleIdInvalid(RoleId roleId);
27
- error ErrorRoleIdTooBig(RoleId roleId);
28
- error ErrorRoleIdTooSmall(RoleId roleId);
29
- error ErrorRoleIdAlreadyExists(RoleId roleId, ShortString name);
30
- error ErrorRoleIdNotActive(RoleId roleId);
31
- error ErrorRoleNameEmpty(RoleId roleId);
32
- error ErrorRoleNameNotUnique(RoleId roleId, ShortString name);
33
- error ErrorRoleInvalidUpdate(RoleId roleId, bool isCustom);
34
- error ErrorGrantNonexstentRole(RoleId roleId);
35
- error ErrorRevokeNonexstentRole(RoleId roleId);
36
- error ErrorRenounceNonexstentRole(RoleId roleId);
35
+ error ErrorIAccessCallerIsNotRoleAdmin(address caller, RoleId roleId);
36
+
37
+ error ErrorIAccessRoleIdDoesNotExist(RoleId roleId);
38
+ error ErrorIAccessRoleIdTooBig(RoleId roleId);
39
+ error ErrorIAccessRoleIdTooSmall(RoleId roleId);
40
+ error ErrorIAccessRoleIdExists(RoleId roleId);
41
+ error ErrorIAccessRoleNameEmpty(RoleId roleId);
42
+ error ErrorIAccessRoleNameExists(RoleId roleId, RoleId existingRoleId, ShortString name);
43
+ error ErrorIAccessRoleTypeInvalid(RoleId roleId, Type rtype);
37
44
 
45
+ error ErrorIAccessTargetAddressZero();
46
+ error ErrorIAccessTargetDoesNotExist(address target);
47
+ error ErrorIAccessTargetExists(address target, ShortString name);
48
+ error ErrorIAccessTargetTypeInvalid(address target, Type ttype);
49
+ error ErrorIAccessTargetNameEmpty(address target);
50
+ error ErrorIAccessTargetNameExists(address target, address existingTarget, ShortString name);
51
+ error ErrorIAccessTargetLocked(address target);
52
+ error ErrorIAccessTargetNotRegistered(address target);
53
+ error ErrorIAccessTargetAuthorityInvalid(address target, address targetAuthority);
38
54
  }
@@ -1,20 +1,20 @@
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 {Fee} from "../../types/Fee.sol";
6
- import {Timestamp} from "../../types/Timestamp.sol";
4
+ import {Amount} from "../../type/Amount.sol";
5
+ import {NftId} from "../../type/NftId.sol";
6
+ import {Fee} from "../../type/Fee.sol";
7
+ import {Seconds} from "../../type/Seconds.sol";
8
+ import {Timestamp} from "../../type/Timestamp.sol";
7
9
 
8
10
  interface IBundle {
11
+
9
12
  struct BundleInfo {
10
13
  NftId poolNftId;
11
14
  Fee fee; // bundle fee on net premium amounts
12
15
  bytes filter; // required conditions for applications to be considered for collateralization by this bundle
13
- uint256 capitalAmount; // net investment capital + net premiums - payouts
14
- uint256 lockedAmount; // capital amount linked to collateralizaion of non-closed policies (<= balance)
15
- uint256 balanceAmount; // total amount of funds: capitalAmount + fees (balance >= captial)
16
- uint256 lifetime;
17
- Timestamp expiredAt; // no new policies
16
+ Seconds lifetime; // lifetime of bundle after creation
17
+ Timestamp expiredAt; // no new policies starting with this timestamp
18
18
  Timestamp closedAt; // no open policies, locked amount = 0
19
19
  }
20
20
  }
@@ -0,0 +1,52 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {Amount} from "../../type/Amount.sol";
7
+ import {Fee} from "../../type/Fee.sol";
8
+ import {NftId} from "../../type/NftId.sol";
9
+ import {RoleId} from "../../type/RoleId.sol";
10
+ import {TokenHandler} from "../../shared/TokenHandler.sol";
11
+ import {UFixed} from "../../type/UFixed.sol";
12
+
13
+ interface IComponents {
14
+
15
+ struct ComponentInfo {
16
+ string name; // component name (needs to be unique per instance)
17
+ NftId productNftId;
18
+ IERC20Metadata token;
19
+ TokenHandler tokenHandler;
20
+ address wallet;
21
+ bytes data; // will hold component type specific additional info (eg encoded pool info)
22
+ }
23
+
24
+
25
+ struct ProductInfo {
26
+ NftId distributionNftId;
27
+ NftId poolNftId;
28
+ Fee productFee; // product fee on net premium
29
+ Fee processingFee; // product fee on payout amounts
30
+ Fee distributionFee; // distribution fee for sales that do not include commissions
31
+ Fee minDistributionOwnerFee; // min fee required by distribution owner (not including commissions for distributors)
32
+ Fee poolFee; // pool fee on net premium
33
+ Fee stakingFee; // pool fee on staked capital from investor
34
+ Fee performanceFee; // pool fee on profits from capital investors
35
+ }
36
+
37
+
38
+ struct PoolInfo {
39
+ NftId productNftId; // the nft of the product this pool is linked to
40
+ RoleId bundleOwnerRole; // the required role for bundle owners
41
+ // TODO maxCapitalAmount -> maxBalanceAmount
42
+ Amount maxCapitalAmount; // max capital amount allowed for pool
43
+ bool isInterceptingBundleTransfers; // intercepts nft transfers for bundles
44
+ bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
45
+ bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications
46
+ UFixed collateralizationLevel; // factor to calculate collateral for sum insurance (default 100%)
47
+ UFixed retentionLevel; // amount of collateral held in pool (default 100%)
48
+ Fee poolFee; // pool fee on net premium
49
+ Fee stakingFee; // pool fee on staked capital from investor
50
+ Fee performanceFee; // pool fee on profits from capital investors
51
+ }
52
+ }
@@ -1,10 +1,11 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {DistributorType} from "../../types/DistributorType.sol";
5
- import {NftId} from "../../types/NftId.sol";
6
- import {Timestamp} from "../../types/Timestamp.sol";
7
- import {UFixed} from "../../types/UFixed.sol";
4
+ import {Amount} from "../../type/Amount.sol";
5
+ import {DistributorType} from "../../type/DistributorType.sol";
6
+ import {NftId} from "../../type/NftId.sol";
7
+ import {Timestamp} from "../../type/Timestamp.sol";
8
+ import {UFixed} from "../../type/UFixed.sol";
8
9
 
9
10
  interface IDistribution {
10
11
 
@@ -24,6 +25,8 @@ interface IDistribution {
24
25
  DistributorType distributorType;
25
26
  bool active;
26
27
  bytes data;
28
+ Amount commissionAmount;
29
+ uint32 numPoliciesSold;
27
30
  }
28
31
 
29
32
  struct ReferralInfo {