@etherisc/gif-next 0.0.2-e1e92ab-754 → 0.0.2-e20063b-144

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 (458) hide show
  1. package/README.md +167 -14
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +842 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +978 -190
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → components/IComponent.sol/IComponent.json} +284 -147
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +816 -24
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +883 -127
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +656 -33
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +925 -265
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +712 -159
  18. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  19. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  20. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  21. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  22. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  23. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +190 -0
  24. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1803 -1132
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +633 -0
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +2094 -1152
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1330 -0
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1403 -0
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1140 -0
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +741 -0
  38. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +256 -0
  40. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/{InstanceBase.sol/InstanceBase.json → ComponentService.sol/ComponentService.json} +250 -187
  42. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
  44. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +67 -245
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  48. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  49. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  50. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +237 -0
  51. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  53. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  54. package/artifacts/contracts/instance/module/{pool/IPoolModule.sol/IPool.json → IComponents.sol/IComponents.json} +2 -2
  55. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  56. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  57. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  58. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  59. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  60. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  61. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  62. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  63. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  64. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  65. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  66. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1060 -0
  67. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  68. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +681 -0
  69. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  70. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1266 -0
  71. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  72. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +725 -0
  73. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  74. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +1040 -0
  75. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  76. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +685 -0
  77. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1372 -228
  79. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  80. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +793 -0
  81. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  82. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +627 -0
  83. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  84. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +686 -0
  85. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IClaimService.sol/IClaimService.json} +327 -191
  87. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  88. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +804 -160
  89. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  90. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +937 -0
  91. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  92. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +437 -154
  93. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +90 -391
  95. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  96. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1511 -0
  97. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +741 -0
  99. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +674 -190
  101. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +661 -0
  103. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +300 -528
  105. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  106. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +653 -0
  107. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  108. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +60 -2
  109. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  110. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +373 -61
  111. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  112. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +223 -229
  113. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  114. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  115. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  116. package/artifacts/contracts/registry/Registry.sol/Registry.json +333 -188
  117. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  118. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  119. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +227 -314
  121. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +312 -132
  123. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  124. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +559 -0
  125. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
  127. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  128. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  129. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  130. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  131. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
  132. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  133. package/artifacts/contracts/{instance/module/component/IComponent.sol/IComponentModule.json → shared/IPolicyHolder.sol/IPolicyHolder.json} +69 -57
  134. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  135. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
  136. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  137. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  138. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  139. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IService.sol/IService.json} +102 -68
  140. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  141. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  142. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
  144. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  145. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  146. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  147. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
  148. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  149. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
  150. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  151. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  152. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  153. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/Service.sol/Service.json} +185 -170
  154. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  155. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  156. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  157. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  158. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  159. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  160. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  161. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  162. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  163. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +129 -51
  164. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  165. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  166. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  167. package/artifacts/contracts/test/TestService.sol/TestService.json +210 -198
  168. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  169. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  170. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  171. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  172. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -174
  173. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  174. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  175. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  176. package/artifacts/contracts/types/Amount.sol/AmountLib.json +185 -0
  177. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  178. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  179. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  181. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +179 -0
  182. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  183. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  184. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  185. package/artifacts/contracts/types/Fee.sol/FeeLib.json +40 -9
  186. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  187. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  188. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  190. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  191. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  192. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  193. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  194. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  195. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  196. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  197. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +209 -0
  198. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  199. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +142 -0
  200. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  201. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  202. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  203. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  204. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  205. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  206. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  207. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  208. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  209. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +51 -7
  210. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  211. package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
  212. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  213. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
  214. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  215. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  216. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  217. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  218. package/contracts/components/Component.sol +253 -0
  219. package/contracts/components/Distribution.sol +208 -79
  220. package/contracts/components/IComponent.sol +76 -0
  221. package/contracts/components/IDistributionComponent.sol +43 -18
  222. package/contracts/components/IPoolComponent.sol +88 -39
  223. package/contracts/components/IProductComponent.sol +12 -9
  224. package/contracts/components/Pool.sol +221 -165
  225. package/contracts/components/Product.sol +250 -178
  226. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  227. package/contracts/instance/BundleManager.sol +126 -0
  228. package/contracts/instance/Cloneable.sol +51 -0
  229. package/contracts/instance/IInstance.sol +91 -41
  230. package/contracts/instance/IInstanceService.sol +68 -0
  231. package/contracts/instance/Instance.sol +293 -66
  232. package/contracts/instance/InstanceAccessManager.sol +527 -0
  233. package/contracts/instance/InstanceReader.sol +317 -0
  234. package/contracts/instance/InstanceService.sol +478 -0
  235. package/contracts/instance/InstanceServiceManager.sol +54 -0
  236. package/contracts/instance/ObjectManager.sol +82 -0
  237. package/contracts/instance/base/ComponentService.sol +121 -0
  238. package/contracts/instance/base/IKeyValueStore.sol +13 -14
  239. package/contracts/instance/base/ILifecycle.sol +3 -3
  240. package/contracts/instance/base/KeyValueStore.sol +60 -41
  241. package/contracts/instance/base/Lifecycle.sol +24 -7
  242. package/contracts/instance/module/IAccess.sol +54 -0
  243. package/contracts/instance/module/IBundle.sol +23 -0
  244. package/contracts/instance/module/IComponents.sol +41 -0
  245. package/contracts/instance/module/IDistribution.sol +41 -0
  246. package/contracts/instance/module/IPolicy.sol +77 -0
  247. package/contracts/instance/module/IRisk.sol +11 -0
  248. package/contracts/instance/module/ISetup.sol +33 -0
  249. package/contracts/instance/module/ITreasury.sol +23 -0
  250. package/contracts/instance/service/ApplicationService.sol +355 -0
  251. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  252. package/contracts/instance/service/BundleService.sol +436 -0
  253. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  254. package/contracts/instance/service/ClaimService.sol +239 -0
  255. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  256. package/contracts/instance/service/DistributionService.sol +399 -22
  257. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  258. package/contracts/instance/service/IApplicationService.sol +78 -0
  259. package/contracts/instance/service/IBundleService.sol +96 -0
  260. package/contracts/instance/service/IClaimService.sol +92 -0
  261. package/contracts/instance/service/IDistributionService.sol +88 -1
  262. package/contracts/instance/service/IPolicyService.sol +137 -0
  263. package/contracts/instance/service/IPoolService.sol +80 -18
  264. package/contracts/instance/service/IProductService.sol +9 -76
  265. package/contracts/instance/service/PolicyService.sol +541 -0
  266. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  267. package/contracts/instance/service/PoolService.sol +248 -94
  268. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  269. package/contracts/instance/service/ProductService.sol +133 -433
  270. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  271. package/contracts/registry/ChainNft.sol +47 -24
  272. package/contracts/registry/IRegistry.sol +52 -8
  273. package/contracts/registry/IRegistryService.sol +53 -20
  274. package/contracts/registry/ITransferInterceptor.sol +1 -0
  275. package/contracts/registry/Registry.sol +277 -236
  276. package/contracts/registry/RegistryAccessManager.sol +216 -0
  277. package/contracts/registry/RegistryService.sol +114 -273
  278. package/contracts/registry/RegistryServiceManager.sol +24 -25
  279. package/contracts/registry/ReleaseManager.sol +324 -0
  280. package/contracts/registry/TokenRegistry.sol +116 -0
  281. package/contracts/shared/ERC165.sol +14 -8
  282. package/contracts/shared/INftOwnable.sol +11 -10
  283. package/contracts/shared/IPolicyHolder.sol +26 -0
  284. package/contracts/shared/IRegisterable.sol +4 -6
  285. package/contracts/shared/IRegistryLinked.sol +12 -0
  286. package/contracts/shared/IService.sol +16 -0
  287. package/contracts/shared/IVersionable.sol +4 -47
  288. package/contracts/shared/NftOwnable.sol +67 -83
  289. package/contracts/shared/PolicyHolder.sol +81 -0
  290. package/contracts/shared/ProxyManager.sol +100 -25
  291. package/contracts/shared/Registerable.sol +16 -31
  292. package/contracts/shared/RegistryLinked.sol +48 -0
  293. package/contracts/shared/Service.sol +72 -0
  294. package/contracts/shared/TokenHandler.sol +33 -0
  295. package/contracts/shared/Versionable.sol +4 -92
  296. package/contracts/test/TestRegisterable.sol +1 -1
  297. package/contracts/test/TestRoleId.sol +1 -1
  298. package/contracts/test/TestService.sol +6 -7
  299. package/contracts/types/Amount.sol +65 -0
  300. package/contracts/types/Blocknumber.sol +1 -0
  301. package/contracts/types/ClaimId.sol +75 -0
  302. package/contracts/types/DistributorType.sol +55 -0
  303. package/contracts/types/Fee.sol +13 -5
  304. package/contracts/types/Key32.sol +8 -3
  305. package/contracts/types/NftId.sol +8 -0
  306. package/contracts/types/NftIdSet.sol +26 -24
  307. package/contracts/types/NumberId.sol +52 -0
  308. package/contracts/types/ObjectType.sol +41 -15
  309. package/contracts/types/PayoutId.sol +82 -0
  310. package/contracts/types/Referral.sol +89 -0
  311. package/contracts/types/RoleId.sol +67 -15
  312. package/contracts/types/Seconds.sol +54 -0
  313. package/contracts/types/StateId.sol +12 -3
  314. package/contracts/types/Timestamp.sol +22 -13
  315. package/contracts/types/UFixed.sol +1 -0
  316. package/contracts/types/Version.sol +5 -1
  317. package/package.json +3 -3
  318. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  319. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  320. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -254
  321. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  322. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  323. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  324. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  325. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  326. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  327. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  328. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  329. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  330. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  331. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  332. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  333. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  334. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  335. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  336. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  337. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  338. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  339. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  340. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  342. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  343. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  344. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  345. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  346. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  347. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  348. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  349. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  350. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  351. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  352. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  353. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  354. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  355. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  356. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  357. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  358. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  359. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  360. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -421
  361. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  362. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  363. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  364. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  365. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  366. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  367. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  368. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  369. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  370. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  371. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  372. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  373. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  374. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  375. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  376. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  377. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  378. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  379. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  380. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  381. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -271
  382. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  383. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -271
  384. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  385. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  386. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -164
  387. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  388. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
  389. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  390. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  391. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  392. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  393. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  394. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  395. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  396. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -638
  397. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  398. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  399. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  400. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -638
  401. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  402. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  403. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  404. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  405. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
  406. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  407. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -557
  408. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  409. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -716
  410. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  411. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -744
  412. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  413. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  414. package/contracts/components/BaseComponent.sol +0 -79
  415. package/contracts/components/IBaseComponent.sol +0 -19
  416. package/contracts/experiment/errors/Require.sol +0 -38
  417. package/contracts/experiment/errors/Revert.sol +0 -44
  418. package/contracts/experiment/inheritance/A.sol +0 -53
  419. package/contracts/experiment/inheritance/B.sol +0 -28
  420. package/contracts/experiment/inheritance/C.sol +0 -34
  421. package/contracts/experiment/inheritance/IA.sol +0 -13
  422. package/contracts/experiment/inheritance/IB.sol +0 -10
  423. package/contracts/experiment/inheritance/IC.sol +0 -12
  424. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  425. package/contracts/experiment/statemachine/ISM.sol +0 -25
  426. package/contracts/experiment/statemachine/SM.sol +0 -57
  427. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  428. package/contracts/experiment/types/TypeA.sol +0 -47
  429. package/contracts/experiment/types/TypeB.sol +0 -29
  430. package/contracts/instance/IInstanceLinked.sol +0 -8
  431. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  432. package/contracts/instance/base/IInstanceBase.sol +0 -23
  433. package/contracts/instance/base/IService.sol +0 -15
  434. package/contracts/instance/base/InstanceBase.sol +0 -89
  435. package/contracts/instance/base/ModuleBase.sol +0 -57
  436. package/contracts/instance/base/ServiceBase.sol +0 -44
  437. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  438. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  439. package/contracts/instance/module/component/ComponentModule.sol +0 -71
  440. package/contracts/instance/module/component/IComponent.sol +0 -28
  441. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  442. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  443. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  444. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  445. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  446. package/contracts/instance/module/pool/PoolModule.sol +0 -95
  447. package/contracts/instance/module/risk/IRisk.sol +0 -26
  448. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  449. package/contracts/instance/module/treasury/ITreasury.sol +0 -84
  450. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  451. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
  452. package/contracts/instance/service/ComponentOwnerService.sol +0 -315
  453. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  454. package/contracts/registry/IChainNft.sol +0 -22
  455. package/contracts/test/TestDistribution.sol +0 -22
  456. package/contracts/test/TestPool.sol +0 -27
  457. package/contracts/test/TestProduct.sol +0 -74
  458. package/contracts/types/ReferralId.sol +0 -48
@@ -0,0 +1,51 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
6
+
7
+ import {IRegistry} from "../registry/IRegistry.sol";
8
+
9
+ abstract contract Cloneable is
10
+ AccessManagedUpgradeable
11
+ {
12
+ event CloneableInitialized(address authority, address registry);
13
+
14
+ error CloneableAuthorityZero();
15
+ error CloneableRegistryInvalid(address registry);
16
+
17
+ IRegistry internal _registry;
18
+
19
+ constructor() {
20
+ _registry = IRegistry(address(0));
21
+ }
22
+
23
+ /// @dev call to initialize MUST be made in the same transaction as cloning of the contract
24
+ function initialize(
25
+ address authority,
26
+ address registry
27
+ )
28
+ public
29
+ onlyInitializing
30
+ {
31
+ // check/handle access managed
32
+ if(authority == address(0)) {
33
+ revert CloneableAuthorityZero();
34
+ }
35
+
36
+ __AccessManaged_init(authority);
37
+
38
+ // check/handle registry
39
+ if (registry.code.length == 0) {
40
+ revert CloneableRegistryInvalid(registry);
41
+ }
42
+
43
+ _registry = IRegistry(registry);
44
+
45
+ emit CloneableInitialized(authority, registry);
46
+ }
47
+
48
+ function getRegistry() external view returns (IRegistry) {
49
+ return _registry;
50
+ }
51
+ }
@@ -1,52 +1,102 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
4
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
+
6
+ import {ClaimId} from "../types/ClaimId.sol";
7
+ import {DistributorType} from "../types/DistributorType.sol";
8
+ import {PayoutId} from "../types/PayoutId.sol";
9
+ import {NftId} from "../types/NftId.sol";
10
+ import {StateId} from "../types/StateId.sol";
11
+ import {ReferralId} from "../types/Referral.sol";
12
+ import {RiskId} from "../types/RiskId.sol";
13
+ import {VersionPart} from "../types/Version.sol";
14
+ import {Key32} from "../types/Key32.sol";
5
15
 
6
- import {INftOwnable} from "../shared/INftOwnable.sol";
7
- import {IVersionable} from "../shared/IVersionable.sol";
8
16
  import {IRegisterable} from "../shared/IRegisterable.sol";
9
- import {RoleId} from "../types/RoleId.sol";
10
17
 
11
- import {IBundleModule} from "./module/bundle/IBundle.sol";
12
- import {IDistributionModule} from "./module/distribution/IDistribution.sol";
13
- import {IComponentModule} from "./module/component/IComponent.sol";
14
- import {IPolicyModule} from "./module/policy/IPolicy.sol";
15
- import {IPoolModule} from "./module/pool/IPoolModule.sol";
16
- import {IRiskModule} from "./module/risk/IRisk.sol";
17
- import {ITreasuryModule} from "./module/treasury/ITreasury.sol";
18
+ import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
19
+
20
+ import {InstanceAccessManager} from "./InstanceAccessManager.sol";
21
+ import {BundleManager} from "./BundleManager.sol";
22
+ import {InstanceReader} from "./InstanceReader.sol";
18
23
 
24
+ import {IBundle} from "./module/IBundle.sol";
25
+ import {IBundleService} from "./service/IBundleService.sol";
26
+ import {IComponents} from "./module/IComponents.sol";
27
+ import {InstanceAccessManager} from "./InstanceAccessManager.sol";
19
28
  import {IKeyValueStore} from "./base/IKeyValueStore.sol";
20
- import {IRegistry} from "../registry/IRegistry.sol";
21
-
22
- import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
23
- import {IDistributionService} from "./service/IDistributionService.sol";
24
- import {IProductService} from "./service/IProductService.sol";
25
- import {IPoolService} from "./service/IPoolService.sol";
26
- import {IInstanceBase} from "./base/IInstanceBase.sol";
27
-
28
- // solhint-disable-next-line no-empty-blocks
29
- interface IInstance is
30
- IERC165,
31
- IVersionable,
32
- IRegisterable,
33
- IPolicyModule,
34
- IPoolModule,
35
- IRiskModule,
36
- IBundleModule,
37
- IComponentModule,
38
- ITreasuryModule,
39
- IDistributionModule,
40
- IInstanceBase
29
+ import {IPolicy} from "./module/IPolicy.sol";
30
+ import {IDistribution} from "./module/IDistribution.sol";
31
+ import {IRisk} from "./module/IRisk.sol";
32
+ import {ISetup} from "./module/ISetup.sol";
33
+
34
+
35
+
36
+ interface IInstance is
37
+ IRegisterable,
38
+ ITransferInterceptor,
39
+ IAccessManaged,
40
+ IKeyValueStore
41
41
  {
42
- function getRegistry() external view override (INftOwnable) returns (IRegistry registry);
43
- function getOwner() external view override returns(address owner);
42
+ error ErrorInstanceInstanceAccessManagerAlreadySet(address instanceAccessManager);
43
+ error ErrorInstanceInstanceAccessManagerAuthorityMismatch(address instanceAuthority);
44
+
45
+ error ErrorInstanceBundleManagerAlreadySet(address instanceBundleManager);
46
+ error ErrorInstanceBundleManagerInstanceMismatch(address instance);
47
+ error ErrorInstanceBundleManagerAuthorityMismatch(address instanceAuthority);
48
+
49
+ error ErrorInstanceInstanceReaderInstanceMismatch(address instanceAuthority);
50
+
51
+ function createDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup) external;
52
+ function updateDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup, StateId newState) external;
53
+ function updateDistributionSetupState(NftId distributionNftId, StateId newState) external;
54
+
55
+ function createPoolSetup(NftId poolNftId, IComponents.ComponentInfo memory info) external;
56
+ function updatePoolSetup(NftId poolNftId, IComponents.ComponentInfo memory info, StateId newState) external;
57
+ function updatePoolSetupState(NftId poolNftId, StateId newState) external;
58
+
59
+ function createBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle) external;
60
+ function updateBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle, StateId newState) external;
61
+ function updateBundleState(NftId bundleNftId, StateId newState) external;
62
+
63
+ function createProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup) external;
64
+ function updateProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup, StateId newState) external;
65
+ function updateProductSetupState(NftId productNftId, StateId newState) external;
66
+
67
+ function createDistributorType(DistributorType distributorType, IDistribution.DistributorTypeInfo memory info) external;
68
+ function updateDistributorType(DistributorType distributorType, IDistribution.DistributorTypeInfo memory info, StateId newState) external;
69
+ function updateDistributorTypeState(DistributorType distributorType, StateId newState) external;
70
+
71
+ function createDistributor(NftId nftId, IDistribution.DistributorInfo memory info) external;
72
+ function updateDistributor(NftId nftId, IDistribution.DistributorInfo memory info, StateId newState) external;
73
+ function updateDistributorState(NftId nftId, StateId newState) external;
74
+
75
+ function createReferral(ReferralId referralId, IDistribution.ReferralInfo memory referralInfo) external;
76
+ function updateReferral(ReferralId referralId, IDistribution.ReferralInfo memory referralInfo, StateId newState) external;
77
+ function updateReferralState(ReferralId referralId, StateId newState) external;
78
+
79
+ function createRisk(RiskId riskId, IRisk.RiskInfo memory risk) external;
80
+ function updateRisk(RiskId riskId, IRisk.RiskInfo memory risk, StateId newState) external;
81
+ function updateRiskState(RiskId riskId, StateId newState) external;
82
+
83
+ function createApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy) external;
84
+ function updateApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy, StateId newState) external;
85
+ function updateApplicationState(NftId applicationNftId, StateId newState) external;
86
+
87
+ function updatePolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external;
88
+ function updatePolicyState(NftId policyNftId, StateId newState) external;
44
89
 
45
- function getKeyValueStore() external view override (IInstanceBase) returns (IKeyValueStore keyValueStore);
90
+ function createClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim) external;
91
+ function updateClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim, StateId newState) external;
92
+ function updateClaimState(NftId policyNftId, ClaimId claimId, StateId newState) external;
46
93
 
47
- function getComponentOwnerService() external view override (IInstanceBase, IComponentModule, IPoolModule, ITreasuryModule) returns(IComponentOwnerService);
48
- function getDistributionService() external view override returns(IDistributionService);
49
- function getProductService() external view override (IInstanceBase, IBundleModule, IPolicyModule) returns(IProductService);
50
- function getPoolService() external view override (IInstanceBase, IBundleModule, IPoolModule) returns(IPoolService);
94
+ function createPayout(NftId policyNftId, PayoutId payoutId, IPolicy.PayoutInfo memory claim) external;
95
+ function updatePayout(NftId policyNftId, PayoutId payoutId, IPolicy.PayoutInfo memory claim, StateId newState) external;
96
+ function updatePayoutState(NftId policyNftId, PayoutId payoutId, StateId newState) external;
51
97
 
52
- }
98
+ function getMajorVersion() external pure returns (VersionPart majorVersion);
99
+ function getInstanceReader() external view returns (InstanceReader);
100
+ function getBundleManager() external view returns (BundleManager);
101
+ function getInstanceAccessManager() external view returns (InstanceAccessManager);
102
+ }
@@ -0,0 +1,68 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {NftId} from "../types/NftId.sol";
5
+ import {ObjectType} from "../types/ObjectType.sol";
6
+ import {RoleId} from "../types/RoleId.sol";
7
+ import {IService} from "../shared/IService.sol";
8
+
9
+ import {AccessManagerUpgradeableInitializeable} from "./AccessManagerUpgradeableInitializeable.sol";
10
+ import {InstanceAccessManager} from "./InstanceAccessManager.sol";
11
+ import {Instance} from "./Instance.sol";
12
+ import {InstanceReader} from "./InstanceReader.sol";
13
+ import {BundleManager} from "./BundleManager.sol";
14
+
15
+ interface IInstanceService is IService {
16
+
17
+ error ErrorInstanceServiceMasterInstanceAlreadySet();
18
+ error ErrorInstanceServiceMasterOzAccessManagerAlreadySet();
19
+ error ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet();
20
+ error ErrorInstanceServiceMasterBundleManagerAlreadySet();
21
+ error ErrorInstanceServiceInstanceAddressZero();
22
+
23
+ error ErrorInstanceServiceMasterInstanceReaderNotSet();
24
+ error ErrorInstanceServiceInstanceReaderAddressZero();
25
+ error ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader();
26
+ error ErrorInstanceServiceInstanceReaderInstanceMismatch();
27
+
28
+ error ErrorInstanceServiceOzAccessManagerZero();
29
+ error ErrorInstanceServiceInstanceAccessManagerZero();
30
+ error ErrorInstanceServiceInstanceReaderZero();
31
+ error ErrorInstanceServiceBundleManagerZero();
32
+
33
+ error ErrorInstanceServiceInstanceAuthorityMismatch();
34
+ error ErrorInstanceServiceBundleManagerAuthorityMismatch();
35
+ error ErrorInstanceServiceInstanceReaderInstanceMismatch2();
36
+ error ErrorInstanceServiceBundleMangerInstanceMismatch();
37
+
38
+ error ErrorInstanceServiceRequestUnauhorized(address caller);
39
+ error ErrorInstanceServiceNotInstanceOwner(address caller, NftId instanceNftId);
40
+ error ErrorInstanceServiceNotInstance(NftId nftId);
41
+ error ErrorInstanceServiceComponentNotRegistered(address componentAddress);
42
+ error ErrorInstanceServiceInstanceComponentMismatch(NftId instanceNftId, NftId componentNftId);
43
+ error ErrorInstanceServiceInvalidComponentType(address componentAddress, ObjectType expectedType, ObjectType componentType);
44
+
45
+ event LogInstanceCloned(address clonedOzAccessManager, address clonedInstanceAccessManager, address clonedInstance, address clonedBundleManager, address clonedInstanceReader, NftId clonedInstanceNftId);
46
+
47
+ function createInstanceClone()
48
+ external
49
+ returns (
50
+ AccessManagerUpgradeableInitializeable clonedOzAccessManager,
51
+ InstanceAccessManager clonedInstanceAccessManager,
52
+ Instance clonedInstance,
53
+ NftId instanceNftId,
54
+ InstanceReader clonedInstanceReader,
55
+ BundleManager clonedBundleManager
56
+ );
57
+
58
+ function createGifTarget(
59
+ NftId instanceNftId,
60
+ address targetAddress,
61
+ string memory targetName,
62
+ bytes4[][] memory selectors,
63
+ RoleId[] memory roles
64
+ ) external;
65
+
66
+ function setComponentLocked(bool locked) external;
67
+ }
68
+
@@ -1,83 +1,310 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
+
6
+ import {Key32} from "../types/Key32.sol";
4
7
  import {NftId} from "../types/NftId.sol";
5
- import {INftOwnable} from "../shared/INftOwnable.sol";
6
- import {NftOwnable} from "../shared/NftOwnable.sol";
7
- import {RoleId} from "../types/RoleId.sol";
8
-
9
- import {InstanceBase} from "./base/InstanceBase.sol";
10
- import {ComponentModule} from "./module/component/ComponentModule.sol";
11
- import {DistributionModule} from "./module/distribution/DistributionModule.sol";
12
- import {PolicyModule} from "./module/policy/PolicyModule.sol";
13
- import {PoolModule} from "./module/pool/PoolModule.sol";
14
- import {RiskModule} from "./module/risk/RiskModule.sol";
15
- import {BundleModule} from "./module/bundle/BundleModule.sol";
16
- import {TreasuryModule} from "./module/treasury/TreasuryModule.sol";
8
+ import {ClaimId} from "../types/ClaimId.sol";
9
+ import {DistributorType} from "../types/DistributorType.sol";
10
+ import {PayoutId} from "../types/PayoutId.sol";
11
+ import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, PRODUCT, DISTRIBUTOR} from "../types/ObjectType.sol";
12
+ import {ReferralId} from "../types/Referral.sol";
13
+ import {RiskId} from "../types/RiskId.sol";
14
+ import {INSTANCE_OWNER_ROLE} from "../types/RoleId.sol";
15
+ import {StateId} from "../types/StateId.sol";
16
+ import {VersionPart, VersionPartLib} from "../types/Version.sol";
17
17
 
18
- import {IRegistry} from "../registry/IRegistry.sol";
19
18
  import {Registerable} from "../shared/Registerable.sol";
20
- import {IBundleModule} from "./module/bundle/IBundle.sol";
21
- import {IComponentModule} from "./module/component/IComponent.sol";
22
- import {IPoolModule} from "./module/pool/IPoolModule.sol";
23
- import {IPolicyModule} from "./module/policy/IPolicy.sol";
24
- import {IInstanceBase} from "./base/IInstanceBase.sol";
25
- import {ITreasuryModule} from "./module/treasury/ITreasury.sol";
26
19
 
27
- import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
28
- import {IDistributionService} from "./service/IDistributionService.sol";
29
- import {IProductService} from "./service/IProductService.sol";
30
- import {IPoolService} from "./service/IPoolService.sol";
20
+ import {IRegistry} from "../registry/IRegistry.sol";
21
+
22
+ import {IInstance} from "./IInstance.sol";
23
+ import {InstanceReader} from "./InstanceReader.sol";
24
+ import {InstanceAccessManager} from "./InstanceAccessManager.sol";
25
+ import {BundleManager} from "./BundleManager.sol";
31
26
 
32
- import {IKeyValueStore} from "./base/IKeyValueStore.sol";
27
+ import {KeyValueStore} from "./base/KeyValueStore.sol";
28
+
29
+ import {IBundle} from "./module/IBundle.sol";
30
+ import {IComponents} from "./module/IComponents.sol";
31
+ import {IDistribution} from "./module/IDistribution.sol";
32
+ import {IPolicy} from "./module/IPolicy.sol";
33
+ import {IRisk} from "./module/IRisk.sol";
34
+ import {ISetup} from "./module/ISetup.sol";
35
+
36
+ import {VersionPart, VersionPartLib} from "../types/Version.sol";
33
37
 
34
38
  contract Instance is
35
- InstanceBase,
36
- BundleModule,
37
- ComponentModule,
38
- DistributionModule,
39
- PolicyModule,
40
- PoolModule,
41
- RiskModule,
42
- TreasuryModule
39
+ IInstance,
40
+ AccessManagedUpgradeable,
41
+ Registerable,
42
+ KeyValueStore
43
43
  {
44
- constructor(
45
- address registry,
46
- NftId registryNftId,
47
- address initialOwner
48
- )
49
- InstanceBase(registry, registryNftId, initialOwner)
50
- BundleModule()
51
- DistributionModule()
52
- ComponentModule()
53
- PolicyModule()
54
- PoolModule()
55
- TreasuryModule()
56
- {
57
- initializeBundleModule(_keyValueStore);
58
- initializeComponentModule(_keyValueStore);
59
- initializeDistributionModule(_keyValueStore);
60
- initializePolicyModule(_keyValueStore);
61
- initializePoolModule(_keyValueStore);
62
- initializeRiskModule(_keyValueStore);
63
- }
64
-
65
- modifier onlyComponentOwnerService() override (ComponentModule, PoolModule, TreasuryModule) {
66
- require(
67
- msg.sender == address(this.getComponentOwnerService()),
68
- "ERROR:CMP-001:NOT_REGISTRY_SERVICE"
69
- );
44
+
45
+ uint256 public constant GIF_MAJOR_VERSION = 3;
46
+
47
+ uint64 public constant ADMIN_ROLE = type(uint64).min;
48
+ uint64 public constant PUBLIC_ROLE = type(uint64).max;
49
+ uint64 public constant CUSTOM_ROLE_ID_MIN = 10000;
50
+
51
+ uint32 public constant EXECUTION_DELAY = 0;
52
+
53
+ bool private _initialized;
54
+
55
+ InstanceAccessManager internal _accessManager;
56
+ InstanceReader internal _instanceReader;
57
+ BundleManager internal _bundleManager;
58
+
59
+ modifier onlyChainNft() {
60
+ if(msg.sender != getRegistry().getChainNftAddress()) {
61
+ revert();
62
+ }
70
63
  _;
71
64
  }
72
65
 
73
- function getRegistry() public view override (INftOwnable, NftOwnable) returns (IRegistry registry) { return super.getRegistry(); }
66
+ function initialize(address authority, address registryAddress, address initialOwner)
67
+ public
68
+ initializer()
69
+ {
70
+ __AccessManaged_init(authority);
71
+
72
+ IRegistry registry = IRegistry(registryAddress);
73
+ initializeRegisterable(registryAddress, registry.getNftId(), INSTANCE(), true, initialOwner, "");
74
+ initializeLifecycle();
75
+
76
+ registerInterface(type(IInstance).interfaceId);
77
+ }
78
+
79
+ //--- ProductSetup ------------------------------------------------------//
80
+ function createProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup) external restricted() {
81
+ create(_toNftKey32(productNftId, PRODUCT()), abi.encode(setup));
82
+ }
83
+
84
+ function updateProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup, StateId newState) external restricted() {
85
+ update(_toNftKey32(productNftId, PRODUCT()), abi.encode(setup), newState);
86
+ }
87
+
88
+ function updateProductSetupState(NftId productNftId, StateId newState) external restricted() {
89
+ updateState(_toNftKey32(productNftId, PRODUCT()), newState);
90
+ }
91
+
92
+ //--- DistributionSetup ------------------------------------------------------//
93
+ function createDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup) external restricted() {
94
+ create(_toNftKey32(distributionNftId, DISTRIBUTION()), abi.encode(setup));
95
+ }
96
+
97
+ function updateDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup, StateId newState) external restricted() {
98
+ update(_toNftKey32(distributionNftId, DISTRIBUTION()), abi.encode(setup), newState);
99
+ }
100
+
101
+ function updateDistributionSetupState(NftId distributionNftId, StateId newState) external restricted() {
102
+ updateState(_toNftKey32(distributionNftId, DISTRIBUTION()), newState);
103
+ }
104
+
105
+ //--- PoolSetup ------------------------------------------------------//
106
+ function createPoolSetup(NftId poolNftId, IComponents.ComponentInfo memory info) external restricted() {
107
+ create(_toNftKey32(poolNftId, POOL()), abi.encode(info));
108
+ }
109
+
110
+ function updatePoolSetup(NftId poolNftId, IComponents.ComponentInfo memory info, StateId newState) external restricted() {
111
+ update(_toNftKey32(poolNftId, POOL()), abi.encode(info), newState);
112
+ }
113
+
114
+ function updatePoolSetupState(NftId poolNftId, StateId newState) external restricted() {
115
+ updateState(_toNftKey32(poolNftId, POOL()), newState);
116
+ }
117
+
118
+ //--- DistributorType -------------------------------------------------------//
119
+ function createDistributorType(DistributorType distributorType, IDistribution.DistributorTypeInfo memory info) external restricted() {
120
+ create(distributorType.toKey32(), abi.encode(info));
121
+ }
74
122
 
75
- function getKeyValueStore() public view override (InstanceBase) returns (IKeyValueStore keyValueStore) { return super.getKeyValueStore(); }
123
+ function updateDistributorType(DistributorType distributorType, IDistribution.DistributorTypeInfo memory info, StateId newState) external restricted() {
124
+ update(distributorType.toKey32(), abi.encode(info), newState);
125
+ }
76
126
 
77
- function getComponentOwnerService() external view override (IInstanceBase, IComponentModule, ITreasuryModule, IPoolModule) returns(IComponentOwnerService service) { return _componentOwnerService; }
78
- function getDistributionService() external view override (IInstanceBase) returns(IDistributionService service) { return _distributionService; }
79
- function getProductService() external view override (IBundleModule, IPolicyModule, IInstanceBase) returns(IProductService service) { return _productService; }
80
- function getPoolService() external view override (IBundleModule, IPoolModule, IInstanceBase) returns(IPoolService service) { return _poolService; }
127
+ function updateDistributorTypeState(DistributorType distributorType, StateId newState) external restricted() {
128
+ updateState(distributorType.toKey32(), newState);
129
+ }
130
+
131
+ //--- Distributor -------------------------------------------------------//
132
+ function createDistributor(NftId distributorNftId, IDistribution.DistributorInfo memory info) external restricted() {
133
+ create(_toNftKey32(distributorNftId, DISTRIBUTOR()), abi.encode(info));
134
+ }
135
+
136
+ function updateDistributor(NftId distributorNftId, IDistribution.DistributorInfo memory info, StateId newState) external restricted() {
137
+ update(_toNftKey32(distributorNftId, DISTRIBUTOR()), abi.encode(info), newState);
138
+ }
139
+
140
+ function updateDistributorState(NftId distributorNftId, StateId newState) external restricted() {
141
+ updateState(_toNftKey32(distributorNftId, DISTRIBUTOR()), newState);
142
+ }
143
+
144
+ //--- Referral ----------------------------------------------------------//
145
+ function createReferral(ReferralId referralId, IDistribution.ReferralInfo memory referralInfo) external restricted() {
146
+ create(referralId.toKey32(), abi.encode(referralInfo));
147
+ }
148
+
149
+ function updateReferral(ReferralId referralId, IDistribution.ReferralInfo memory referralInfo, StateId newState) external restricted() {
150
+ update(referralId.toKey32(), abi.encode(referralInfo), newState);
151
+ }
152
+
153
+ function updateReferralState(ReferralId referralId, StateId newState) external restricted() {
154
+ updateState(referralId.toKey32(), newState);
155
+ }
156
+
157
+ //--- Bundle ------------------------------------------------------------//
158
+ function createBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle) external restricted() {
159
+ create(_toNftKey32(bundleNftId, BUNDLE()), abi.encode(bundle));
160
+ }
161
+
162
+ function updateBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle, StateId newState) external restricted() {
163
+ update(_toNftKey32(bundleNftId, BUNDLE()), abi.encode(bundle), newState);
164
+ }
165
+
166
+ function updateBundleState(NftId bundleNftId, StateId newState) external restricted() {
167
+ updateState(_toNftKey32(bundleNftId, BUNDLE()), newState);
168
+ }
169
+
170
+ //--- Risk --------------------------------------------------------------//
171
+ function createRisk(RiskId riskId, IRisk.RiskInfo memory risk) external restricted() {
172
+ create(riskId.toKey32(), abi.encode(risk));
173
+ }
81
174
 
82
- function getOwner() public view override (INftOwnable, NftOwnable) returns(address owner) { return super.getOwner(); }
175
+ function updateRisk(RiskId riskId, IRisk.RiskInfo memory risk, StateId newState) external restricted() {
176
+ update(riskId.toKey32(), abi.encode(risk), newState);
177
+ }
178
+
179
+ function updateRiskState(RiskId riskId, StateId newState) external restricted() {
180
+ updateState(riskId.toKey32(), newState);
181
+ }
182
+
183
+ //--- Application (Policy) ----------------------------------------------//
184
+ function createApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy) external restricted() {
185
+ create(_toNftKey32(applicationNftId, POLICY()), abi.encode(policy));
186
+ }
187
+
188
+ function updateApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
189
+ update(_toNftKey32(applicationNftId, POLICY()), abi.encode(policy), newState);
190
+ }
191
+
192
+ function updateApplicationState(NftId applicationNftId, StateId newState) external restricted() {
193
+ updateState(_toNftKey32(applicationNftId, POLICY()), newState);
194
+ }
195
+
196
+ //--- Policy ------------------------------------------------------------//
197
+ function updatePolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
198
+ update(_toNftKey32(policyNftId, POLICY()), abi.encode(policy), newState);
199
+ }
200
+
201
+ function updatePolicyState(NftId policyNftId, StateId newState) external restricted() {
202
+ updateState(_toNftKey32(policyNftId, POLICY()), newState);
203
+ }
204
+
205
+ //--- Claim -------------------------------------------------------------//
206
+ function createClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim) external restricted() {
207
+ create(_toClaimKey32(policyNftId, claimId), abi.encode(claim));
208
+ }
209
+
210
+ function updateClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim, StateId newState) external restricted() {
211
+ update(_toClaimKey32(policyNftId, claimId), abi.encode(claim), newState);
212
+ }
213
+
214
+ function updateClaimState(NftId policyNftId, ClaimId claimId, StateId newState) external restricted() {
215
+ updateState(_toClaimKey32(policyNftId, claimId), newState);
216
+ }
217
+
218
+ //--- Payout ------------------------------------------------------------//
219
+ function createPayout(NftId policyNftId, PayoutId payoutId, IPolicy.PayoutInfo memory payout) external restricted() {
220
+ create(_toPayoutKey32(policyNftId, payoutId), abi.encode(payout));
221
+ }
222
+
223
+ function updatePayout(NftId policyNftId, PayoutId payoutId, IPolicy.PayoutInfo memory payout, StateId newState) external restricted() {
224
+ update(_toPayoutKey32(policyNftId, payoutId), abi.encode(payout), newState);
225
+ }
226
+
227
+ function updatePayoutState(NftId policyNftId, PayoutId payoutId, StateId newState) external restricted() {
228
+ updateState(_toPayoutKey32(policyNftId, payoutId), newState);
229
+ }
230
+
231
+ //--- ITransferInterceptor ------------------------------------------------------------//
232
+ function nftMint(address to, uint256 tokenId) external onlyChainNft {
233
+ assert(_accessManager.roleMembers(INSTANCE_OWNER_ROLE()) == 0);// temp
234
+ assert(_accessManager.grantRole(INSTANCE_OWNER_ROLE(), to) == true);
235
+ }
236
+
237
+ function nftTransferFrom(address from, address to, uint256 tokenId) external onlyChainNft {
238
+ assert(_accessManager.revokeRole(INSTANCE_OWNER_ROLE(), from) == true);
239
+ assert(_accessManager.grantRole(INSTANCE_OWNER_ROLE(), to) == true);
240
+ }
241
+
242
+ //--- initial setup functions -------------------------------------------//
243
+
244
+ function setInstanceAccessManager(InstanceAccessManager accessManager) external restricted {
245
+ if(address(_accessManager) != address(0)) {
246
+ revert ErrorInstanceInstanceAccessManagerAlreadySet(address(_accessManager));
247
+ }
248
+
249
+ if(accessManager.authority() != authority()) {
250
+ revert ErrorInstanceInstanceAccessManagerAuthorityMismatch(authority());
251
+ }
252
+
253
+ _accessManager = accessManager;
254
+ }
255
+
256
+ function setBundleManager(BundleManager bundleManager) external restricted() {
257
+ if(address(_bundleManager) != address(0)) {
258
+ revert ErrorInstanceBundleManagerAlreadySet(address(_bundleManager));
259
+ }
260
+
261
+ if(bundleManager.getInstance() != Instance(this)) {
262
+ revert ErrorInstanceBundleManagerInstanceMismatch(address(this));
263
+ }
264
+
265
+ if(bundleManager.authority() != authority()) {
266
+ revert ErrorInstanceBundleManagerAuthorityMismatch(authority());
267
+ }
268
+
269
+ _bundleManager = bundleManager;
270
+ }
271
+
272
+ function setInstanceReader(InstanceReader instanceReader) external restricted() {
273
+ if(instanceReader.getInstance() != Instance(this)) {
274
+ revert ErrorInstanceInstanceReaderInstanceMismatch(address(this));
275
+ }
276
+
277
+ _instanceReader = instanceReader;
278
+ }
279
+
280
+ //--- external view functions -------------------------------------------//
281
+
282
+ function getInstanceReader() external view returns (InstanceReader) {
283
+ return _instanceReader;
284
+ }
285
+
286
+ function getBundleManager() external view returns (BundleManager) {
287
+ return _bundleManager;
288
+ }
289
+
290
+ function getInstanceAccessManager() external view returns (InstanceAccessManager) {
291
+ return _accessManager;
292
+ }
293
+
294
+ function getMajorVersion() external pure returns (VersionPart majorVersion) {
295
+ return VersionPartLib.toVersionPart(GIF_MAJOR_VERSION);
296
+ }
297
+
298
+ //--- internal view/pure functions --------------------------------------//
299
+ function _toNftKey32(NftId nftId, ObjectType objectType) private pure returns (Key32) {
300
+ return nftId.toKey32(objectType);
301
+ }
302
+
303
+ function _toClaimKey32(NftId policyNftId, ClaimId claimId) private pure returns (Key32) {
304
+ return claimId.toKey32(policyNftId);
305
+ }
306
+
307
+ function _toPayoutKey32(NftId policyNftId, PayoutId payoutId) private pure returns (Key32) {
308
+ return payoutId.toKey32(policyNftId);
309
+ }
83
310
  }