@etherisc/gif-next 0.0.2-9dd1984-016 → 0.0.2-9dd41ff-671

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 (527) 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 +1395 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1575 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +851 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +1000 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +840 -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 +269 -1417
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +264 -218
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +459 -2504
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +746 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +188 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +432 -280
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +415 -380
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +362 -95
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2847 -0
  32. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  33. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +6 -1
  34. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  35. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +49 -0
  36. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  37. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  38. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +93 -14
  39. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  40. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +38 -13
  41. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  42. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  43. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +13 -159
  45. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  47. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  48. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  52. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  53. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  54. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1307 -0
  55. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  56. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +767 -0
  57. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  58. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +291 -276
  59. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  60. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1095 -0
  61. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  62. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1077 -0
  63. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  64. package/artifacts/contracts/pool/Pool.sol/Pool.json +1426 -0
  65. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  66. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1641 -0
  67. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  68. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +779 -0
  69. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  70. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +937 -0
  71. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  72. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +719 -0
  73. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  74. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1405 -0
  75. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  76. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +819 -0
  77. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  78. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IApplicationService.sol/IApplicationService.json} +219 -172
  79. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  80. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
  81. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  82. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +182 -302
  83. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  84. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +241 -230
  85. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  86. package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +239 -169
  87. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  88. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +72 -166
  89. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  90. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1300 -0
  91. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  92. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +811 -0
  93. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  94. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1023 -0
  95. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  96. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +759 -0
  97. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  98. package/artifacts/contracts/product/Product.sol/Product.json +1217 -0
  99. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  100. package/artifacts/contracts/product/ProductService.sol/ProductService.json +883 -0
  101. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +711 -0
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  104. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  106. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +209 -17
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  108. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +222 -227
  109. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  110. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  111. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  112. package/artifacts/contracts/registry/Registry.sol/Registry.json +235 -43
  113. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  114. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +305 -0
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  116. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +338 -251
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +351 -84
  119. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  120. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +566 -78
  121. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  122. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +148 -62
  123. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  124. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  125. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  126. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
  127. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  128. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
  129. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  130. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1747 -0
  131. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  132. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1765 -0
  133. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  134. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  135. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  136. package/artifacts/contracts/{components/Pool.sol/Pool.json → shared/Component.sol/Component.json} +360 -326
  137. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  138. package/artifacts/contracts/{instance/base → shared}/ComponentService.sol/ComponentService.json +215 -160
  139. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  140. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  141. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  142. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  143. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  144. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1594 -0
  145. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  146. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → shared/IComponent.sol/IComponent.json} +163 -218
  147. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  148. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
  149. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  150. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
  151. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  152. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -34
  153. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  154. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  155. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  156. package/artifacts/contracts/shared/IService.sol/IService.json +71 -165
  157. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  158. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  159. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  160. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -47
  161. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  162. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
  163. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  164. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +342 -61
  165. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  166. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +137 -53
  167. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  168. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  169. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  170. package/artifacts/contracts/shared/Service.sol/Service.json +189 -150
  171. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  172. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
  173. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  174. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  175. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  176. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  177. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  178. package/artifacts/contracts/{components/Component.sol/Component.json → staking/IStakingService.sol/IStakingService.json} +219 -194
  179. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  180. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +786 -0
  181. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  182. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +699 -0
  183. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  184. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  185. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  186. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  187. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  188. package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
  189. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  190. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  191. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  192. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  193. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  194. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  195. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  196. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  197. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  198. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +166 -0
  199. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  200. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  201. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  202. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  203. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  204. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  205. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  206. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  207. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  208. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  209. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  210. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  211. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  212. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -0
  213. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  214. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  215. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  216. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
  217. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  218. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  219. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  220. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  221. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  222. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  223. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  224. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  225. package/contracts/distribution/Distribution.sol +285 -0
  226. package/contracts/distribution/DistributionService.sol +351 -0
  227. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  228. package/contracts/distribution/IDistributionComponent.sol +71 -0
  229. package/contracts/distribution/IDistributionService.sol +87 -0
  230. package/contracts/instance/BundleManager.sol +22 -25
  231. package/contracts/instance/IInstance.sol +55 -38
  232. package/contracts/instance/IInstanceService.sol +50 -17
  233. package/contracts/instance/Instance.sol +151 -183
  234. package/contracts/instance/InstanceAdmin.sol +354 -0
  235. package/contracts/instance/InstanceAuthorizationsLib.sol +320 -0
  236. package/contracts/instance/InstanceReader.sol +102 -49
  237. package/contracts/instance/InstanceService.sol +200 -247
  238. package/contracts/instance/InstanceServiceManager.sol +12 -22
  239. package/contracts/instance/InstanceStore.sol +211 -0
  240. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +8 -3
  241. package/contracts/instance/base/IKeyValueStore.sol +14 -10
  242. package/contracts/instance/base/ILifecycle.sol +3 -3
  243. package/contracts/instance/base/KeyValueStore.sol +44 -47
  244. package/contracts/instance/base/Lifecycle.sol +28 -7
  245. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +16 -35
  246. package/contracts/instance/module/IAccess.sol +17 -21
  247. package/contracts/instance/module/IBundle.sol +11 -8
  248. package/contracts/instance/module/IComponents.sol +41 -0
  249. package/contracts/instance/module/IDistribution.sol +7 -4
  250. package/contracts/instance/module/IPolicy.sol +50 -17
  251. package/contracts/instance/module/IRisk.sol +1 -1
  252. package/contracts/instance/module/ISetup.sol +9 -22
  253. package/contracts/instance/module/ITreasury.sol +2 -2
  254. package/contracts/pool/BundleService.sol +384 -0
  255. package/contracts/pool/BundleServiceManager.sol +42 -0
  256. package/contracts/pool/IBundleService.sol +118 -0
  257. package/contracts/pool/IPoolComponent.sol +114 -0
  258. package/contracts/pool/IPoolService.sol +114 -0
  259. package/contracts/pool/Pool.sol +302 -0
  260. package/contracts/pool/PoolService.sol +404 -0
  261. package/contracts/pool/PoolServiceManager.sol +42 -0
  262. package/contracts/product/ApplicationService.sol +187 -0
  263. package/contracts/product/ApplicationServiceManager.sol +38 -0
  264. package/contracts/product/ClaimService.sol +443 -0
  265. package/contracts/product/ClaimServiceManager.sol +38 -0
  266. package/contracts/product/IApplicationService.sol +62 -0
  267. package/contracts/product/IClaimService.sol +93 -0
  268. package/contracts/product/IPolicyService.sol +80 -0
  269. package/contracts/product/IPricingService.sol +37 -0
  270. package/contracts/product/IProductComponent.sol +41 -0
  271. package/contracts/{instance/service → product}/IProductService.sol +10 -10
  272. package/contracts/product/PolicyService.sol +378 -0
  273. package/contracts/product/PolicyServiceManager.sol +42 -0
  274. package/contracts/product/PricingService.sol +276 -0
  275. package/contracts/product/PricingServiceManager.sol +42 -0
  276. package/contracts/product/Product.sol +379 -0
  277. package/contracts/product/ProductService.sol +212 -0
  278. package/contracts/product/ProductServiceManager.sol +42 -0
  279. package/contracts/registry/ChainNft.sol +8 -0
  280. package/contracts/registry/IRegistry.sol +42 -21
  281. package/contracts/registry/IRegistryService.sol +36 -35
  282. package/contracts/registry/ITransferInterceptor.sol +1 -0
  283. package/contracts/registry/Registry.sol +165 -96
  284. package/contracts/registry/RegistryAdmin.sol +143 -0
  285. package/contracts/registry/RegistryService.sol +81 -169
  286. package/contracts/registry/RegistryServiceManager.sol +22 -24
  287. package/contracts/registry/ReleaseManager.sol +321 -198
  288. package/contracts/registry/TokenRegistry.sol +23 -15
  289. package/contracts/shared/AccessManagerCustom.sol +736 -0
  290. package/contracts/shared/AccessManagerExtended.sol +469 -0
  291. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  292. package/contracts/shared/AccessManagerExtendedWithDisable.sol +125 -0
  293. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  294. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  295. package/contracts/shared/Component.sol +271 -0
  296. package/contracts/shared/ComponentService.sol +141 -0
  297. package/contracts/shared/ERC165.sol +14 -12
  298. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  299. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +17 -0
  300. package/contracts/shared/IComponent.sol +90 -0
  301. package/contracts/shared/INftOwnable.sol +12 -11
  302. package/contracts/shared/IPolicyHolder.sol +40 -0
  303. package/contracts/shared/IRegisterable.sol +4 -4
  304. package/contracts/shared/IRegistryLinked.sol +11 -0
  305. package/contracts/shared/IService.sol +6 -4
  306. package/contracts/shared/IVersionable.sol +5 -48
  307. package/contracts/shared/NftOwnable.sol +68 -87
  308. package/contracts/shared/PolicyHolder.sol +94 -0
  309. package/contracts/shared/ProxyManager.sol +131 -25
  310. package/contracts/shared/Registerable.sol +26 -41
  311. package/contracts/shared/RegistryLinked.sol +43 -0
  312. package/contracts/shared/Service.sol +33 -21
  313. package/contracts/shared/TokenHandler.sol +14 -6
  314. package/contracts/shared/Versionable.sol +4 -92
  315. package/contracts/staking/IStakingService.sol +102 -0
  316. package/contracts/staking/StakingService.sol +169 -0
  317. package/contracts/staking/StakingServiceManager.sol +40 -0
  318. package/contracts/type/Amount.sol +109 -0
  319. package/contracts/{types → type}/Blocknumber.sol +1 -0
  320. package/contracts/type/ClaimId.sol +75 -0
  321. package/contracts/{types → type}/DistributorType.sol +2 -2
  322. package/contracts/{types → type}/Fee.sol +17 -8
  323. package/contracts/{types → type}/NftId.sol +8 -0
  324. package/contracts/{types → type}/NftIdSet.sol +1 -1
  325. package/contracts/{types → type}/ObjectType.sol +17 -7
  326. package/contracts/type/PayoutId.sol +82 -0
  327. package/contracts/{types → type}/Referral.sol +4 -0
  328. package/contracts/type/RoleId.sol +139 -0
  329. package/contracts/type/Seconds.sol +54 -0
  330. package/contracts/{types → type}/StateId.sol +7 -2
  331. package/contracts/{types → type}/Timestamp.sol +18 -13
  332. package/contracts/{types → type}/UFixed.sol +1 -0
  333. package/contracts/{types → type}/Version.sol +1 -0
  334. package/package.json +3 -3
  335. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  336. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  337. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  338. package/artifacts/contracts/components/IComponent.sol/IComponent.json +0 -413
  339. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  340. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  341. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  342. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  343. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  344. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  345. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  346. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  347. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  348. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  349. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  350. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  351. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  352. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  353. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  354. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  355. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  356. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  357. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  358. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  359. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  360. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  361. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  362. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  363. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  364. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  365. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  366. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  367. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  368. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  369. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  370. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  371. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  372. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  373. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  374. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  375. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  376. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  377. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  378. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  379. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  380. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  381. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  382. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  383. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  384. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  385. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  386. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  387. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  388. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  389. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  390. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +0 -448
  391. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  392. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1047
  393. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  394. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  395. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  396. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -285
  397. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  398. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  399. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -100
  400. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  401. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1094
  402. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  403. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -436
  404. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  405. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -764
  406. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  407. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -424
  408. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  409. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  410. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  411. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  412. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  413. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  414. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1219
  415. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  416. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -492
  417. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  418. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -798
  419. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  420. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -424
  421. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  422. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -848
  423. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  424. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -424
  425. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  426. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  427. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  428. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  429. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  430. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  431. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  432. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  433. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  434. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  435. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  436. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  437. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  438. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  439. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  440. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  441. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  442. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  443. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  444. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  445. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  446. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  447. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  448. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  449. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  450. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  451. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  452. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  453. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  454. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  455. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  456. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  457. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  458. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  459. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  460. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  461. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  462. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  463. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  464. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  465. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  466. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  467. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  468. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  469. package/contracts/components/Component.sol +0 -177
  470. package/contracts/components/Distribution.sol +0 -154
  471. package/contracts/components/IComponent.sol +0 -37
  472. package/contracts/components/IDistributionComponent.sol +0 -44
  473. package/contracts/components/IPoolComponent.sol +0 -66
  474. package/contracts/components/IProductComponent.sol +0 -35
  475. package/contracts/components/Pool.sol +0 -258
  476. package/contracts/components/Product.sol +0 -295
  477. package/contracts/experiment/cloning/Cloner.sol +0 -47
  478. package/contracts/experiment/errors/Require.sol +0 -38
  479. package/contracts/experiment/errors/Revert.sol +0 -44
  480. package/contracts/experiment/inheritance/A.sol +0 -53
  481. package/contracts/experiment/inheritance/B.sol +0 -28
  482. package/contracts/experiment/inheritance/C.sol +0 -34
  483. package/contracts/experiment/inheritance/IA.sol +0 -13
  484. package/contracts/experiment/inheritance/IB.sol +0 -10
  485. package/contracts/experiment/inheritance/IC.sol +0 -12
  486. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  487. package/contracts/experiment/statemachine/ISM.sol +0 -25
  488. package/contracts/experiment/statemachine/SM.sol +0 -57
  489. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  490. package/contracts/experiment/types/TypeA.sol +0 -47
  491. package/contracts/experiment/types/TypeB.sol +0 -29
  492. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  493. package/contracts/instance/IInstanceBase.sol +0 -25
  494. package/contracts/instance/InstanceAccessManager.sol +0 -303
  495. package/contracts/instance/InstanceBase.sol +0 -39
  496. package/contracts/instance/base/ComponentService.sol +0 -133
  497. package/contracts/instance/base/IInstanceBase.sol +0 -21
  498. package/contracts/instance/service/BundleService.sol +0 -293
  499. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  500. package/contracts/instance/service/DistributionService.sol +0 -115
  501. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  502. package/contracts/instance/service/IBundleService.sol +0 -44
  503. package/contracts/instance/service/IDistributionService.sol +0 -12
  504. package/contracts/instance/service/IPolicyService.sol +0 -94
  505. package/contracts/instance/service/IPoolService.sol +0 -20
  506. package/contracts/instance/service/PolicyService.sol +0 -538
  507. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  508. package/contracts/instance/service/PoolService.sol +0 -142
  509. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  510. package/contracts/instance/service/ProductService.sol +0 -241
  511. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  512. package/contracts/registry/RegistryAccessManager.sol +0 -210
  513. package/contracts/shared/ContractDeployerLib.sol +0 -72
  514. package/contracts/test/TestFee.sol +0 -25
  515. package/contracts/test/TestRegisterable.sol +0 -18
  516. package/contracts/test/TestRoleId.sol +0 -14
  517. package/contracts/test/TestService.sol +0 -25
  518. package/contracts/test/TestToken.sol +0 -26
  519. package/contracts/test/TestVersion.sol +0 -44
  520. package/contracts/test/TestVersionable.sol +0 -17
  521. package/contracts/test/Usdc.sol +0 -26
  522. package/contracts/types/ChainId.sol +0 -38
  523. package/contracts/types/NumberId.sol +0 -52
  524. package/contracts/types/RoleId.sol +0 -90
  525. /package/contracts/{types → type}/AddressSet.sol +0 -0
  526. /package/contracts/{types → type}/Key32.sol +0 -0
  527. /package/contracts/{types → type}/RiskId.sol +0 -0
@@ -1,60 +1,77 @@
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
4
  import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
5
 
6
+ import {ClaimId} from "../type/ClaimId.sol";
7
+ import {DistributorType} from "../type/DistributorType.sol";
8
+ import {PayoutId} from "../type/PayoutId.sol";
9
+ import {NftId} from "../type/NftId.sol";
10
+ import {StateId} from "../type/StateId.sol";
11
+ import {ReferralId} from "../type/Referral.sol";
12
+ import {RiskId} from "../type/RiskId.sol";
13
+ import {VersionPart} from "../type/Version.sol";
14
+ import {Key32} from "../type/Key32.sol";
15
+ import {RoleId} from "../type/RoleId.sol";
16
+
17
+ import {IRegisterable} from "../shared/IRegisterable.sol";
18
+
19
+ import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
20
+
21
+ import {InstanceAdmin} from "./InstanceAdmin.sol";
7
22
  import {BundleManager} from "./BundleManager.sol";
8
23
  import {InstanceReader} from "./InstanceReader.sol";
24
+ import {InstanceStore} from "./InstanceStore.sol";
9
25
 
10
- import {InstanceAccessManager} from "./InstanceAccessManager.sol";
11
- import {IDistributionService} from "./service/IDistributionService.sol";
12
- import {IPoolService} from "./service/IPoolService.sol";
13
- import {IProductService} from "./service/IProductService.sol";
14
- import {IPolicyService} from "./service/IPolicyService.sol";
15
- import {IBundleService} from "./service/IBundleService.sol";
16
- import {IBundle} from "./module/IBundle.sol";
17
- import {ISetup} from "./module/ISetup.sol";
18
- import {NftId} from "../types/NftId.sol";
19
- import {StateId} from "../types/StateId.sol";
20
- import {RiskId} from "../types/RiskId.sol";
21
- import {IRisk} from "./module/IRisk.sol";
22
- import {IPolicy} from "./module/IPolicy.sol";
23
26
  import {IKeyValueStore} from "./base/IKeyValueStore.sol";
24
27
 
28
+ import {IAccess} from "./module/IAccess.sol";
25
29
 
26
- interface IInstance is IERC165, IKeyValueStore, IAccessManaged {
30
+ import {IBundleService} from "../pool/IBundleService.sol";
31
+ import {IDistributionService} from "../distribution/IDistributionService.sol";
32
+ import {IPolicyService} from "../product/IPolicyService.sol";
33
+ import {IPoolService} from "../pool/IPoolService.sol";
34
+ import {IProductService} from "../product/IProductService.sol";
35
+ import {IPolicyService} from "../product/IPolicyService.sol";
36
+ import {IBundleService} from "../pool/IBundleService.sol";
27
37
 
28
- function getDistributionService() external view returns (IDistributionService);
29
- function getProductService() external view returns (IProductService);
30
- function getPoolService() external view returns (IPoolService);
31
- function getPolicyService() external view returns (IPolicyService);
32
- function getBundleService() external view returns (IBundleService);
33
38
 
34
- function createDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup) external;
35
- function updateDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup, StateId newState) external;
36
- function updateDistributionSetupState(NftId distributionNftId, StateId newState) external;
37
39
 
38
- function createPoolSetup(NftId poolNftId, ISetup.PoolSetupInfo memory setup) external;
39
- function updatePoolSetup(NftId poolNftId, ISetup.PoolSetupInfo memory setup, StateId newState) external;
40
- function updatePoolSetupState(NftId poolNftId, StateId newState) external;
40
+ interface IInstance is
41
+ IRegisterable,
42
+ ITransferInterceptor,
43
+ IAccessManaged
44
+ {
45
+ error ErrorInstanceInstanceAdminZero();
46
+ error ErrorInstanceInstanceAdminAlreadySet(address InstanceAdmin);
47
+ error ErrorInstanceInstanceAdminAuthorityMismatch(address instanceAuthority);
41
48
 
42
- function createBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle) external;
43
- function updateBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle, StateId newState) external;
44
- function updateBundleState(NftId bundleNftId, StateId newState) external;
49
+ error ErrorInstanceBundleManagerAlreadySet(address instanceBundleManager);
50
+ error ErrorInstanceBundleManagerInstanceMismatch(address instance);
51
+ error ErrorInstanceBundleManagerAuthorityMismatch(address instanceAuthority);
45
52
 
46
- function createProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup) external;
47
- function updateProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup, StateId newState) external;
48
- function updateProductSetupState(NftId productNftId, StateId newState) external;
53
+ error ErrorInstanceInstanceReaderInstanceMismatch(address instanceAuthority);
49
54
 
50
- function createRisk(RiskId riskId, IRisk.RiskInfo memory risk) external;
51
- function updateRisk(RiskId riskId, IRisk.RiskInfo memory risk, StateId newState) external;
52
- function updateRiskState(RiskId riskId, StateId newState) external;
55
+ error ErrorInstanceInstanceStoreAlreadySet(address instanceStore);
56
+ error ErrorInstanceInstanceStoreAuthorityMismatch(address instanceAuthority);
53
57
 
54
- function createPolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy) external;
55
- function updatePolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external;
56
- function updatePolicyState(NftId policyNftId, StateId newState) external;
58
+ function createRole(string memory roleName, string memory adminName) external returns (RoleId roleId, RoleId admin);
59
+ function grantRole(RoleId roleId, address account) external;
60
+ function revokeRole(RoleId roleId, address account) external;
61
+
62
+ function createTarget(address target, string memory name) external;
63
+ function setTargetFunctionRole(string memory targetName, bytes4[] calldata selectors, RoleId roleId) external;
64
+ function setTargetLocked(address target, bool locked) external;
65
+
66
+ function getDistributionService() external view returns (IDistributionService);
67
+ function getProductService() external view returns (IProductService);
68
+ function getPoolService() external view returns (IPoolService);
69
+ function getPolicyService() external view returns (IPolicyService);
70
+ function getBundleService() external view returns (IBundleService);
57
71
 
72
+ function getMajorVersion() external pure returns (VersionPart majorVersion);
58
73
  function getInstanceReader() external view returns (InstanceReader);
59
74
  function getBundleManager() external view returns (BundleManager);
75
+ function getInstanceAdmin() external view returns (InstanceAdmin);
76
+ function getInstanceStore() external view returns (InstanceStore);
60
77
  }
@@ -1,40 +1,73 @@
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 {RoleId} from "../types/RoleId.sol";
4
+ import {NftId} from "../type/NftId.sol";
5
+ import {ObjectType} from "../type/ObjectType.sol";
6
+ import {RoleId} from "../type/RoleId.sol";
7
7
  import {IService} from "../shared/IService.sol";
8
- import {IRegistry} from "../registry/IRegistry.sol";
9
8
 
10
- import {IRegisterable} from "../shared/IRegisterable.sol";
11
- import {IComponent} from "../components/IComponent.sol";
12
-
13
- import {InstanceAccessManager} from "./InstanceAccessManager.sol";
9
+ import {AccessManagerUpgradeableInitializeable} from "../shared/AccessManagerUpgradeableInitializeable.sol";
10
+ import {InstanceAdmin} from "./InstanceAdmin.sol";
14
11
  import {Instance} from "./Instance.sol";
15
12
  import {InstanceReader} from "./InstanceReader.sol";
16
13
  import {BundleManager} from "./BundleManager.sol";
14
+ import {InstanceStore} from "./InstanceStore.sol";
17
15
 
18
16
  interface IInstanceService is IService {
19
17
 
18
+ error ErrorInstanceServiceMasterInstanceAlreadySet();
19
+ error ErrorInstanceServiceMasterOzAccessManagerAlreadySet();
20
+ error ErrorInstanceServiceMasterInstanceAdminAlreadySet();
21
+ error ErrorInstanceServiceMasterBundleManagerAlreadySet();
22
+ error ErrorInstanceServiceInstanceAddressZero();
23
+
24
+ error ErrorInstanceServiceMasterInstanceReaderNotSet();
25
+ error ErrorInstanceServiceInstanceReaderAddressZero();
26
+ error ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader();
27
+ error ErrorInstanceServiceInstanceReaderInstanceMismatch();
28
+
29
+ error ErrorInstanceServiceInstanceAdminZero();
30
+ error ErrorInstanceServiceInstanceReaderZero();
31
+ error ErrorInstanceServiceBundleManagerZero();
32
+ error ErrorInstanceServiceInstanceStoreZero();
33
+
34
+ error ErrorInstanceServiceInstanceAuthorityMismatch();
35
+ error ErrorInstanceServiceBundleManagerAuthorityMismatch();
36
+ error ErrorInstanceServiceInstanceReaderInstanceMismatch2();
37
+ error ErrorInstanceServiceBundleMangerInstanceMismatch();
38
+ error ErrorInstanceServiceInstanceStoreAuthorityMismatch();
39
+
20
40
  error ErrorInstanceServiceRequestUnauhorized(address caller);
21
41
  error ErrorInstanceServiceNotInstanceOwner(address caller, NftId instanceNftId);
42
+ error ErrorInstanceServiceNotInstance(NftId nftId);
22
43
  error ErrorInstanceServiceComponentNotRegistered(address componentAddress);
44
+ error ErrorInstanceServiceInstanceComponentMismatch(NftId instanceNftId, NftId componentNftId);
45
+ error ErrorInstanceServiceInvalidComponentType(address componentAddress, ObjectType expectedType, ObjectType componentType);
23
46
 
24
- event LogInstanceCloned(address clonedAccessManagerAddress, address clonedInstanceAddress, address clonedInstanceReaderAddress, NftId clonedInstanceNftId);
47
+ event LogInstanceCloned(
48
+ address clonedOzAccessManager,
49
+ address clonedInstanceAccessManager,
50
+ address clonedInstance,
51
+ address clonedInstanceStore,
52
+ address clonedBundleManager,
53
+ address clonedInstanceReader,
54
+ NftId clonedInstanceNftId
55
+ );
25
56
 
26
57
  function createInstanceClone()
27
58
  external
28
59
  returns (
29
- InstanceAccessManager clonedAccessManager,
30
60
  Instance clonedInstance,
31
- NftId instanceNftId,
32
- InstanceReader clonedInstanceReader,
33
- BundleManager clonedBundleManager
61
+ NftId instanceNftId
34
62
  );
35
63
 
36
- function hasRole(address account, RoleId role, address instanceAddress) external returns (bool);
37
- function setTargetLocked(string memory targetName, bool locked) external;
38
-
39
- }
64
+ function createGifTarget(
65
+ NftId instanceNftId,
66
+ address targetAddress,
67
+ string memory targetName,
68
+ bytes4[][] memory selectors,
69
+ RoleId[] memory roles
70
+ ) external;
40
71
 
72
+ function setComponentLocked(bool locked) external;
73
+ }
@@ -1,262 +1,230 @@
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
- import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
- import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
7
4
  import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
8
5
 
9
- import {IAccess} from "./module/IAccess.sol";
6
+ import {Key32} from "../type/Key32.sol";
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {RiskId} from "../type/RiskId.sol";
9
+ import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET, COMPONENT, DISTRIBUTOR, DISTRIBUTOR_TYPE} from "../type/ObjectType.sol";
10
+ import {RoleId, RoleIdLib, eqRoleId, ADMIN_ROLE, INSTANCE_ROLE, INSTANCE_OWNER_ROLE} from "../type/RoleId.sol";
11
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
12
+ import {ClaimId} from "../type/ClaimId.sol";
13
+ import {ReferralId} from "../type/Referral.sol";
14
+ import {PayoutId} from "../type/PayoutId.sol";
15
+ import {DistributorType} from "../type/DistributorType.sol";
16
+
17
+ import {Registerable} from "../shared/Registerable.sol";
18
+ import {TokenHandler} from "../shared/TokenHandler.sol";
19
+ import {AccessManagerExtendedInitializeable} from "../shared/AccessManagerExtendedInitializeable.sol";
20
+
21
+ import {IRegistry} from "../registry/IRegistry.sol";
22
+
23
+ import {IInstance} from "./IInstance.sol";
24
+ import {InstanceReader} from "./InstanceReader.sol";
25
+ import {InstanceAdmin} from "./InstanceAdmin.sol";
26
+ import {BundleManager} from "./BundleManager.sol";
27
+ import {InstanceStore} from "./InstanceStore.sol";
28
+
10
29
  import {IBundle} from "./module/IBundle.sol";
30
+ import {IComponents} from "./module/IComponents.sol";
31
+ import {IDistribution} from "./module/IDistribution.sol";
11
32
  import {IPolicy} from "./module/IPolicy.sol";
12
33
  import {IRisk} from "./module/IRisk.sol";
13
34
  import {ISetup} from "./module/ISetup.sol";
14
- import {Key32, KeyId, Key32Lib} from "../types/Key32.sol";
15
- import {KeyValueStore} from "./base/KeyValueStore.sol";
16
- import {IInstance} from "./IInstance.sol";
17
- import {InstanceReader} from "./InstanceReader.sol";
18
- import {InstanceAccessManager} from "./InstanceAccessManager.sol";
19
- import {BundleManager} from "./BundleManager.sol";
20
- import {NftId} from "../types/NftId.sol";
21
- import {NumberId} from "../types/NumberId.sol";
22
- import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET, COMPONENT} from "../types/ObjectType.sol";
23
- import {RiskId} from "../types/RiskId.sol";
24
- import {StateId} from "../types/StateId.sol";
25
- import {IDistributionService} from "./service/IDistributionService.sol";
26
- import {IPoolService} from "./service/IPoolService.sol";
27
- import {IProductService} from "./service/IProductService.sol";
28
- import {IPolicyService} from "./service/IPolicyService.sol";
29
- import {IBundleService} from "./service/IBundleService.sol";
30
- import {VersionPart} from "../types/Version.sol";
31
- import {InstanceBase} from "./InstanceBase.sol";
35
+
36
+ import {IDistributionService} from "../distribution/IDistributionService.sol";
37
+ import {IPoolService} from "../pool/IPoolService.sol";
38
+ import {IProductService} from "../product/IProductService.sol";
39
+ import {IPolicyService} from "../product/IPolicyService.sol";
40
+ import {IBundleService} from "../pool/IBundleService.sol";
32
41
 
33
42
  contract Instance is
34
- AccessManagedUpgradeable,
35
43
  IInstance,
36
- // Initializable,
37
- InstanceBase
44
+ AccessManagedUpgradeable,
45
+ Registerable
38
46
  {
39
-
40
- uint64 public constant ADMIN_ROLE = type(uint64).min;
41
- uint64 public constant PUBLIC_ROLE = type(uint64).max;
42
- uint64 public constant CUSTOM_ROLE_ID_MIN = 10000;
43
-
44
- uint32 public constant EXECUTION_DELAY = 0;
47
+ uint256 public constant GIF_MAJOR_VERSION = 3;
45
48
 
46
49
  bool private _initialized;
47
50
 
48
- InstanceAccessManager internal _accessManager;
51
+ InstanceAdmin internal _instanceAdmin;
49
52
  InstanceReader internal _instanceReader;
50
53
  BundleManager internal _bundleManager;
54
+ InstanceStore internal _instanceStore;
51
55
 
52
- function initialize(address accessManagerAddress, address registryAddress, NftId registryNftId, address initialOwner)
53
- public
54
- initializer
55
- {
56
- require(!_initialized, "Contract instance has already been initialized");
57
-
58
- __AccessManaged_init(accessManagerAddress);
59
-
60
- _accessManager = InstanceAccessManager(accessManagerAddress);
61
-
62
- _initializeRegisterable(registryAddress, registryNftId, INSTANCE(), false, initialOwner, "");
63
-
64
- _registerInterface(type(IInstance).interfaceId);
65
- _initialized = true;
66
- }
67
-
68
- //--- ProductSetup ------------------------------------------------------//
69
- function createProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup) external restricted() {
70
- create(_toNftKey32(productNftId, PRODUCT()), abi.encode(setup));
56
+ modifier onlyChainNft() {
57
+ if(msg.sender != getRegistry().getChainNftAddress()) {
58
+ revert();
59
+ }
60
+ _;
71
61
  }
72
62
 
73
- function updateProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup, StateId newState) external restricted() {
74
- update(_toNftKey32(productNftId, PRODUCT()), abi.encode(setup), newState);
75
- }
76
-
77
- function updateProductSetupState(NftId productNftId, StateId newState) external restricted() {
78
- updateState(_toNftKey32(productNftId, PRODUCT()), newState);
79
- }
80
-
81
- //--- DistributionSetup ------------------------------------------------------//
82
- function createDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup) external restricted() {
83
- create(_toNftKey32(distributionNftId, DISTRIBUTION()), abi.encode(setup));
84
- }
85
-
86
- function updateDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup, StateId newState) external restricted() {
87
- update(_toNftKey32(distributionNftId, DISTRIBUTION()), abi.encode(setup), newState);
88
- }
89
-
90
- function updateDistributionSetupState(NftId distributionNftId, StateId newState) external restricted() {
91
- updateState(_toNftKey32(distributionNftId, DISTRIBUTION()), newState);
92
- }
93
-
94
- //--- PoolSetup ------------------------------------------------------//
95
- function createPoolSetup(NftId poolNftId, ISetup.PoolSetupInfo memory setup) external restricted() {
96
- create(_toNftKey32(poolNftId, POOL()), abi.encode(setup));
97
- }
98
-
99
- function updatePoolSetup(NftId poolNftId, ISetup.PoolSetupInfo memory setup, StateId newState) external restricted() {
100
- update(_toNftKey32(poolNftId, POOL()), abi.encode(setup), newState);
101
- }
102
-
103
- function updatePoolSetupState(NftId poolNftId, StateId newState) external restricted() {
104
- updateState(_toNftKey32(poolNftId, POOL()), newState);
105
- }
106
-
107
- //--- DistributorType ---------------------------------------------------//
108
- function createDistributorType(NftId policyNftId, NumberId payoutId, IPolicy.PayoutInfo memory payout) external restricted() {
109
- create(toPolicyKey32(policyNftId), abi.encode(payout));
110
- }
111
-
112
- function updateDistributorType(NftId policyNftId, NumberId payoutId, IPolicy.PayoutInfo memory payout, StateId newState) external restricted() {
113
- update(toPolicyKey32(policyNftId), abi.encode(payout), newState);
114
- }
63
+ function initialize(address authority, address registryAddress, address initialOwner)
64
+ external
65
+ initializer()
66
+ {
67
+ if(authority == address(0)) {
68
+ revert ErrorInstanceInstanceAdminZero();
69
+ }
115
70
 
116
- function updateDistributorTypeState(NftId policyNftId, StateId newState) external restricted() {
117
- updateState(toPolicyKey32(policyNftId), newState);
118
- }
71
+ __AccessManaged_init(authority);
72
+
73
+ IRegistry registry = IRegistry(registryAddress);
74
+ initializeRegisterable(registryAddress, registry.getNftId(), INSTANCE(), true, initialOwner, "");
119
75
 
120
- //--- Distributor -------------------------------------------------------//
121
- function createDistributor(NftId policyNftId, NumberId payoutId, IPolicy.PayoutInfo memory payout) external restricted() {
122
- create(toPolicyKey32(policyNftId), abi.encode(payout));
76
+ registerInterface(type(IInstance).interfaceId);
123
77
  }
124
78
 
125
- function updateDistributor(NftId policyNftId, NumberId payoutId, IPolicy.PayoutInfo memory payout, StateId newState) external restricted() {
126
- update(toPolicyKey32(policyNftId), abi.encode(payout), newState);
127
- }
79
+ //--- Roles ------------------------------------------------------------//
128
80
 
129
- function updateDistributorState(NftId policyNftId, StateId newState) external restricted() {
130
- updateState(toPolicyKey32(policyNftId), newState);
81
+ function createRole(string memory roleName, string memory adminName)
82
+ external
83
+ restricted // INSTANCE_OWNER_ROLE
84
+ returns (RoleId roleId, RoleId admin)
85
+ {
86
+ (roleId, admin) = _instanceAdmin.createRole(roleName, adminName);
131
87
  }
132
88
 
133
- //--- Referral ----------------------------------------------------------//
134
- function createReferral(NftId policyNftId, NumberId payoutId, IPolicy.PayoutInfo memory payout) external restricted() {
135
- create(toPolicyKey32(policyNftId), abi.encode(payout));
89
+ function grantRole(RoleId roleId, address account)
90
+ external
91
+ restricted // INSTANCE_OWNER_ROLE
92
+ {
93
+ AccessManagerExtendedInitializeable(authority()).grantRole(roleId.toInt(), account, 0);
136
94
  }
137
95
 
138
- function updateReferral(NftId policyNftId, NumberId payoutId, IPolicy.PayoutInfo memory payout, StateId newState) external restricted() {
139
- update(toPolicyKey32(policyNftId), abi.encode(payout), newState);
96
+ function revokeRole(RoleId roleId, address account)
97
+ external
98
+ restricted // INSTANCE_OWNER_ROLE
99
+ {
100
+ AccessManagerExtendedInitializeable(authority()).revokeRole(roleId.toInt(), account);
140
101
  }
141
102
 
142
- function updateReferralState(NftId policyNftId, StateId newState) external restricted() {
143
- updateState(toPolicyKey32(policyNftId), newState);
144
- }
103
+ //--- Targets ------------------------------------------------------------//
145
104
 
146
- //--- Bundle ------------------------------------------------------------//
147
- function createBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle) external restricted() {
148
- create(toBundleKey32(bundleNftId), abi.encode(bundle));
105
+ function createTarget(address target, string memory name)
106
+ external
107
+ restricted // INSTANCE_OWNER_ROLE
108
+ {
109
+ _instanceAdmin.createTarget(target, name);
149
110
  }
150
111
 
151
- function updateBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle, StateId newState) external restricted() {
152
- update(toBundleKey32(bundleNftId), abi.encode(bundle), newState);
112
+ function setTargetFunctionRole(
113
+ string memory targetName,
114
+ bytes4[] calldata selectors,
115
+ RoleId roleId
116
+ )
117
+ external
118
+ restricted // INSTANCE_OWNER_ROLE
119
+ {
120
+ _instanceAdmin.setTargetFunctionRole(targetName, selectors, roleId);
153
121
  }
154
122
 
155
- function updateBundleState(NftId bundleNftId, StateId newState) external restricted() {
156
- updateState(toBundleKey32(bundleNftId), newState);
123
+ function setTargetLocked(address target, bool locked)
124
+ external
125
+ restricted // INSTANCE_OWNER_ROLE
126
+ {
127
+ _instanceAdmin.setTargetLockedByInstance(target, locked);
157
128
  }
158
129
 
159
- //--- Risk --------------------------------------------------------------//
160
- function createRisk(RiskId riskId, IRisk.RiskInfo memory risk) external restricted() {
161
- create(riskId.toKey32(), abi.encode(risk));
130
+ //--- ITransferInterceptor ------------------------------------------------------------//
131
+ // TODO interception of child components nfts
132
+ function nftMint(address to, uint256 tokenId) external onlyChainNft {
133
+ _instanceAdmin.transferInstanceOwnerRole(address(0), to);
162
134
  }
163
135
 
164
- function updateRisk(RiskId riskId, IRisk.RiskInfo memory risk, StateId newState) external restricted() {
165
- update(riskId.toKey32(), abi.encode(risk), newState);
136
+ function nftTransferFrom(address from, address to, uint256 tokenId) external onlyChainNft {
137
+ _instanceAdmin.transferInstanceOwnerRole(from, to);
166
138
  }
167
139
 
168
- function updateRiskState(RiskId riskId, StateId newState) external restricted() {
169
- updateState(riskId.toKey32(), newState);
170
- }
140
+ //function nftBurn(address from, uint256 tokenId) external onlyChainNft {
141
+ //_instanceAdmin.transferInstanceOwnerRole(from, address(0));
142
+ //}
171
143
 
172
- //--- Policy ------------------------------------------------------------//
173
- function createPolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy) external restricted() {
174
- create(toPolicyKey32(policyNftId), abi.encode(policy));
175
- }
144
+ //--- initial setup functions -------------------------------------------//
176
145
 
177
- function updatePolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
178
- update(toPolicyKey32(policyNftId), abi.encode(policy), newState);
146
+ function setInstanceAdmin(InstanceAdmin accessManager) external restricted {
147
+ if(address(_instanceAdmin) != address(0)) {
148
+ revert ErrorInstanceInstanceAdminAlreadySet(address(_instanceAdmin));
149
+ }
150
+ if(accessManager.authority() != authority()) {
151
+ revert ErrorInstanceInstanceAdminAuthorityMismatch(authority());
152
+ }
153
+ _instanceAdmin = accessManager;
179
154
  }
180
-
181
- function updatePolicyState(NftId policyNftId, StateId newState) external restricted() {
182
- updateState(toPolicyKey32(policyNftId), newState);
155
+
156
+ function setBundleManager(BundleManager bundleManager) external restricted() {
157
+ if(address(_bundleManager) != address(0)) {
158
+ revert ErrorInstanceBundleManagerAlreadySet(address(_bundleManager));
159
+ }
160
+ if(bundleManager.getInstance() != Instance(this)) {
161
+ revert ErrorInstanceBundleManagerInstanceMismatch(address(this));
162
+ }
163
+ if(bundleManager.authority() != authority()) {
164
+ revert ErrorInstanceBundleManagerAuthorityMismatch(authority());
165
+ }
166
+ _bundleManager = bundleManager;
183
167
  }
184
168
 
185
- //--- Claim -------------------------------------------------------------//
186
- function createClaim(NftId policyNftId, NumberId claimId, IPolicy.ClaimInfo memory claim) external restricted() {
187
- create(toPolicyKey32(policyNftId), abi.encode(claim));
188
- }
169
+ function setInstanceReader(InstanceReader instanceReader) external restricted() {
170
+ if(instanceReader.getInstance() != Instance(this)) {
171
+ revert ErrorInstanceInstanceReaderInstanceMismatch(address(this));
172
+ }
189
173
 
190
- function updateClaim(NftId policyNftId, NumberId claimId, IPolicy.ClaimInfo memory claim, StateId newState) external restricted() {
191
- update(toPolicyKey32(policyNftId), abi.encode(claim), newState);
174
+ _instanceReader = instanceReader;
192
175
  }
193
176
 
194
- function updateClaimState(NftId policyNftId, StateId newState) external restricted() {
195
- updateState(toPolicyKey32(policyNftId), newState);
196
- }
177
+ //--- external view functions -------------------------------------------//
197
178
 
198
- //--- Payout ------------------------------------------------------------//
199
- function createPayout(NftId policyNftId, NumberId payoutId, IPolicy.PayoutInfo memory payout) external restricted() {
200
- create(toPolicyKey32(policyNftId), abi.encode(payout));
179
+ function getInstanceReader() external view returns (InstanceReader) {
180
+ return _instanceReader;
201
181
  }
202
182
 
203
- function updateClaim(NftId policyNftId, NumberId payoutId, IPolicy.PayoutInfo memory payout, StateId newState) external restricted() {
204
- update(toPolicyKey32(policyNftId), abi.encode(payout), newState);
183
+ function getBundleManager() external view returns (BundleManager) {
184
+ return _bundleManager;
205
185
  }
206
186
 
207
- function updatePayoutState(NftId policyNftId, StateId newState) external restricted() {
208
- updateState(toPolicyKey32(policyNftId), newState);
187
+ function getInstanceAdmin() external view returns (InstanceAdmin) {
188
+ return _instanceAdmin;
209
189
  }
210
190
 
211
- //--- internal view/pure functions --------------------------------------//
212
- function _toNftKey32(NftId nftId, ObjectType objectType) internal pure returns (Key32) {
213
- return nftId.toKey32(objectType);
191
+ function setInstanceStore(InstanceStore instanceStore) external restricted {
192
+ if(address(_instanceStore) != address(0)) {
193
+ revert ErrorInstanceInstanceStoreAlreadySet(address(_instanceStore));
194
+ }
195
+ if(instanceStore.authority() != authority()) {
196
+ revert ErrorInstanceInstanceStoreAuthorityMismatch(authority());
197
+ }
198
+ _instanceStore = instanceStore;
214
199
  }
215
200
 
216
- function toBundleKey32(NftId bundleNftId) public pure returns (Key32) {
217
- return bundleNftId.toKey32(BUNDLE());
201
+ function getInstanceStore() external view returns (InstanceStore) {
202
+ return _instanceStore;
218
203
  }
219
204
 
220
- function toPolicyKey32(NftId policyNftId) public pure returns (Key32) {
221
- return policyNftId.toKey32(POLICY());
205
+ function getMajorVersion() external pure returns (VersionPart majorVersion) {
206
+ return VersionPartLib.toVersionPart(GIF_MAJOR_VERSION);
222
207
  }
223
208
 
224
209
  function getDistributionService() external view returns (IDistributionService) {
225
- return IDistributionService(_registry.getServiceAddress(DISTRIBUTION(), VersionPart.wrap(3)));
210
+ return IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), VersionPart.wrap(3)));
226
211
  }
227
212
 
228
213
  function getProductService() external view returns (IProductService) {
229
- return IProductService(_registry.getServiceAddress(PRODUCT(), VersionPart.wrap(3)));
214
+ return IProductService(getRegistry().getServiceAddress(PRODUCT(), VersionPart.wrap(3)));
230
215
  }
231
216
 
232
217
  function getPoolService() external view returns (IPoolService) {
233
- return IPoolService(_registry.getServiceAddress(POOL(), VersionPart.wrap(3)));
218
+ return IPoolService(getRegistry().getServiceAddress(POOL(), VersionPart.wrap(3)));
234
219
  }
235
220
 
236
221
  function getPolicyService() external view returns (IPolicyService) {
237
- return IPolicyService(_registry.getServiceAddress(POLICY(), VersionPart.wrap(3)));
222
+ return IPolicyService(getRegistry().getServiceAddress(POLICY(), VersionPart.wrap(3)));
238
223
  }
239
224
 
240
225
  function getBundleService() external view returns (IBundleService) {
241
- return IBundleService(_registry.getServiceAddress(BUNDLE(), VersionPart.wrap(3)));
242
- }
243
-
244
- function setInstanceReader(InstanceReader instanceReader) external restricted() {
245
- require(instanceReader.getInstanceNftId() == getNftId(), "NFT ID of InstanceReader does not match");
246
- _instanceReader = instanceReader;
247
- }
248
-
249
- function getInstanceReader() external view returns (InstanceReader) {
250
- return _instanceReader;
251
- }
252
-
253
- function setBundleManager(BundleManager bundleManager) external restricted() {
254
- require(address(_bundleManager) == address(0), "BundleManager is set");
255
- require(bundleManager.getInstanceNftId() == getNftId(), "NFT ID of BundleManager does not match");
256
- _bundleManager = bundleManager;
226
+ return IBundleService(getRegistry().getServiceAddress(BUNDLE(), VersionPart.wrap(3)));
257
227
  }
258
228
 
259
- function getBundleManager() external view returns (BundleManager) {
260
- return _bundleManager;
261
- }
262
- }
229
+ //--- internal view/pure functions --------------------------------------//
230
+ }