@etherisc/gif-next 0.0.2-d02cb80-460 → 0.0.2-d086e6d-456

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 (381) hide show
  1. package/README.md +78 -1
  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 +853 -296
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → IComponent.sol/IComponent.json} +225 -89
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +848 -31
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +846 -57
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +682 -9
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +725 -316
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +524 -240
  18. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +1 -1
  19. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +15 -15
  20. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  21. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +69 -79
  22. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  23. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
  24. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1038 -395
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +290 -220
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +1038 -784
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +432 -186
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +137 -270
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +448 -418
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +303 -138
  38. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  39. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +11 -40
  40. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/{ComponentServiceBase.sol/ComponentServiceBase.json → ComponentService.sol/ComponentService.json} +278 -157
  42. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +40 -10
  46. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  48. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +61 -67
  50. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  53. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  54. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  55. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  56. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  57. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  58. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  59. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1058 -0
  60. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  61. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +665 -0
  62. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  63. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +625 -290
  64. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  65. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +356 -79
  66. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  67. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +844 -0
  68. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  69. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  70. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1385 -247
  72. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  73. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +450 -73
  74. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  75. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +646 -0
  76. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  77. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +278 -264
  78. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  79. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IClaimService.sol/IClaimService.json} +227 -194
  80. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +791 -134
  82. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +216 -250
  84. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +502 -133
  86. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +95 -157
  88. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +474 -347
  90. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +321 -96
  92. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +801 -255
  94. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +307 -78
  96. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  97. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +308 -209
  98. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  99. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +305 -76
  100. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  101. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  102. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  103. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +244 -133
  104. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  105. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +158 -215
  106. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  107. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  108. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  109. package/artifacts/contracts/registry/Registry.sol/Registry.json +257 -235
  110. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  111. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  112. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  113. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +202 -318
  114. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +298 -145
  116. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  117. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  118. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +141 -53
  120. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  121. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  122. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  123. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  124. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
  125. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  126. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  127. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  128. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
  129. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  130. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  131. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  132. package/artifacts/contracts/shared/IService.sol/IService.json +95 -157
  133. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  134. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  135. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
  137. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  138. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  139. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  140. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
  141. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  142. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
  143. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  144. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  145. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  146. package/artifacts/contracts/shared/Service.sol/Service.json +195 -148
  147. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  148. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  149. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  150. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  151. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  152. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  153. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  154. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  155. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +129 -51
  157. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  158. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
  159. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  160. package/artifacts/contracts/test/TestService.sol/TestService.json +213 -202
  161. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  162. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  163. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  164. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  165. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -190
  166. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  167. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  168. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  169. package/artifacts/contracts/types/Amount.sol/AmountLib.json +161 -0
  170. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  171. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  172. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  174. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  175. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  176. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  177. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  178. package/artifacts/contracts/types/Fee.sol/FeeLib.json +40 -9
  179. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  180. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  181. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  183. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  184. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  185. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  188. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  189. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  190. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
  192. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  194. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  195. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  196. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  197. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  198. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  199. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  200. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  201. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +25 -7
  202. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  203. package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
  204. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  205. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
  206. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  207. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  208. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  209. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  210. package/contracts/components/Component.sol +253 -0
  211. package/contracts/components/Distribution.sol +200 -83
  212. package/contracts/components/IComponent.sol +76 -0
  213. package/contracts/components/IDistributionComponent.sol +44 -17
  214. package/contracts/components/IPoolComponent.sol +88 -41
  215. package/contracts/components/IProductComponent.sol +10 -5
  216. package/contracts/components/Pool.sol +217 -185
  217. package/contracts/components/Product.sol +125 -124
  218. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +2 -12
  219. package/contracts/instance/BundleManager.sol +14 -16
  220. package/contracts/instance/Cloneable.sol +7 -2
  221. package/contracts/instance/IInstance.sol +52 -14
  222. package/contracts/instance/IInstanceService.sol +39 -9
  223. package/contracts/instance/Instance.sol +126 -75
  224. package/contracts/instance/InstanceAccessManager.sol +383 -166
  225. package/contracts/instance/InstanceReader.sol +10 -34
  226. package/contracts/instance/InstanceService.sol +312 -128
  227. package/contracts/instance/InstanceServiceManager.sol +6 -9
  228. package/contracts/instance/ObjectManager.sol +10 -29
  229. package/contracts/instance/base/ComponentService.sol +136 -0
  230. package/contracts/instance/base/KeyValueStore.sol +13 -5
  231. package/contracts/instance/base/Lifecycle.sol +11 -2
  232. package/contracts/instance/module/IAccess.sol +23 -17
  233. package/contracts/instance/module/IBundle.sol +8 -5
  234. package/contracts/instance/module/IComponents.sol +41 -0
  235. package/contracts/instance/module/IDistribution.sol +2 -0
  236. package/contracts/instance/module/IPolicy.sol +30 -3
  237. package/contracts/instance/module/ISetup.sol +7 -20
  238. package/contracts/instance/service/ApplicationService.sol +350 -0
  239. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  240. package/contracts/instance/service/BundleService.sol +239 -68
  241. package/contracts/instance/service/BundleServiceManager.sol +6 -9
  242. package/contracts/instance/service/ClaimService.sol +151 -0
  243. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  244. package/contracts/instance/service/DistributionService.sol +367 -50
  245. package/contracts/instance/service/DistributionServiceManager.sol +7 -10
  246. package/contracts/instance/service/IApplicationService.sol +82 -0
  247. package/contracts/instance/service/IBundleService.sol +67 -19
  248. package/contracts/instance/service/IClaimService.sol +61 -0
  249. package/contracts/instance/service/IDistributionService.sol +86 -0
  250. package/contracts/instance/service/IPolicyService.sol +34 -49
  251. package/contracts/instance/service/IPoolService.sol +82 -3
  252. package/contracts/instance/service/PolicyService.sol +199 -347
  253. package/contracts/instance/service/PolicyServiceManager.sol +2 -2
  254. package/contracts/instance/service/PoolService.sol +264 -45
  255. package/contracts/instance/service/PoolServiceManager.sol +6 -9
  256. package/contracts/instance/service/ProductService.sol +93 -56
  257. package/contracts/instance/service/ProductServiceManager.sol +2 -2
  258. package/contracts/registry/ChainNft.sol +9 -1
  259. package/contracts/registry/IRegistry.sol +39 -19
  260. package/contracts/registry/IRegistryService.sol +31 -13
  261. package/contracts/registry/ITransferInterceptor.sol +1 -0
  262. package/contracts/registry/Registry.sol +243 -224
  263. package/contracts/registry/RegistryAccessManager.sol +216 -0
  264. package/contracts/registry/RegistryService.sol +100 -173
  265. package/contracts/registry/RegistryServiceManager.sol +21 -39
  266. package/contracts/registry/ReleaseManager.sol +322 -0
  267. package/contracts/registry/TokenRegistry.sol +22 -17
  268. package/contracts/shared/ERC165.sol +14 -12
  269. package/contracts/shared/INftOwnable.sol +11 -10
  270. package/contracts/shared/IPolicyHolder.sol +26 -0
  271. package/contracts/shared/IRegisterable.sol +4 -6
  272. package/contracts/shared/IRegistryLinked.sol +12 -0
  273. package/contracts/shared/IService.sol +8 -2
  274. package/contracts/shared/IVersionable.sol +4 -47
  275. package/contracts/shared/NftOwnable.sol +66 -80
  276. package/contracts/shared/PolicyHolder.sol +81 -0
  277. package/contracts/shared/ProxyManager.sol +100 -25
  278. package/contracts/shared/Registerable.sol +16 -32
  279. package/contracts/shared/RegistryLinked.sol +48 -0
  280. package/contracts/shared/Service.sol +30 -22
  281. package/contracts/shared/TokenHandler.sol +11 -5
  282. package/contracts/shared/Versionable.sol +4 -92
  283. package/contracts/test/TestRegisterable.sol +1 -1
  284. package/contracts/test/TestService.sol +4 -3
  285. package/contracts/types/Amount.sol +60 -0
  286. package/contracts/types/Blocknumber.sol +1 -0
  287. package/contracts/types/ClaimId.sol +52 -0
  288. package/contracts/types/DistributorType.sol +2 -2
  289. package/contracts/types/Fee.sol +13 -5
  290. package/contracts/types/NftId.sol +8 -0
  291. package/contracts/types/ObjectType.sol +10 -5
  292. package/contracts/types/PayoutId.sol +54 -0
  293. package/contracts/types/Referral.sol +4 -0
  294. package/contracts/types/RoleId.sol +19 -15
  295. package/contracts/types/Seconds.sol +54 -0
  296. package/contracts/types/StateId.sol +1 -0
  297. package/contracts/types/Timestamp.sol +13 -13
  298. package/contracts/types/UFixed.sol +1 -0
  299. package/contracts/types/Version.sol +1 -0
  300. package/package.json +3 -3
  301. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  302. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  303. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -384
  304. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  305. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  306. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  307. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  308. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  309. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  310. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  311. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  312. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  313. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  314. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  315. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  316. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  317. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  318. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  319. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  320. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  321. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  322. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  323. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  324. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  325. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  326. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  327. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  328. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  329. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  330. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  331. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  332. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  333. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  334. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  335. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  336. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  337. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  338. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  339. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  340. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  341. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  342. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  343. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  344. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  345. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  346. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +0 -448
  347. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  348. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  349. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  350. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  351. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  352. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  353. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  354. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  355. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  356. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  357. package/contracts/components/BaseComponent.sol +0 -145
  358. package/contracts/components/IBaseComponent.sol +0 -32
  359. package/contracts/experiment/cloning/Cloner.sol +0 -47
  360. package/contracts/experiment/errors/Require.sol +0 -38
  361. package/contracts/experiment/errors/Revert.sol +0 -44
  362. package/contracts/experiment/inheritance/A.sol +0 -53
  363. package/contracts/experiment/inheritance/B.sol +0 -28
  364. package/contracts/experiment/inheritance/C.sol +0 -34
  365. package/contracts/experiment/inheritance/IA.sol +0 -13
  366. package/contracts/experiment/inheritance/IB.sol +0 -10
  367. package/contracts/experiment/inheritance/IC.sol +0 -12
  368. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  369. package/contracts/experiment/statemachine/ISM.sol +0 -25
  370. package/contracts/experiment/statemachine/SM.sol +0 -57
  371. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  372. package/contracts/experiment/types/TypeA.sol +0 -47
  373. package/contracts/experiment/types/TypeB.sol +0 -29
  374. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  375. package/contracts/instance/IInstanceBase.sol +0 -26
  376. package/contracts/instance/InstanceBase.sol +0 -41
  377. package/contracts/instance/base/ComponentServiceBase.sol +0 -72
  378. package/contracts/instance/base/IInstanceBase.sol +0 -23
  379. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  380. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  381. package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -8,8 +8,9 @@ import {IService} from "../shared/IService.sol";
8
8
  import {IRegistry} from "../registry/IRegistry.sol";
9
9
 
10
10
  import {IRegisterable} from "../shared/IRegisterable.sol";
11
- import {IBaseComponent} from "../components/IBaseComponent.sol";
11
+ import {IComponent} from "../components/IComponent.sol";
12
12
 
13
+ import {AccessManagerUpgradeableInitializeable} from "./AccessManagerUpgradeableInitializeable.sol";
13
14
  import {InstanceAccessManager} from "./InstanceAccessManager.sol";
14
15
  import {Instance} from "./Instance.sol";
15
16
  import {InstanceReader} from "./InstanceReader.sol";
@@ -17,26 +18,55 @@ import {BundleManager} from "./BundleManager.sol";
17
18
 
18
19
  interface IInstanceService is IService {
19
20
 
21
+ error ErrorInstanceServiceMasterInstanceAlreadySet();
22
+ error ErrorInstanceServiceMasterOzAccessManagerAlreadySet();
23
+ error ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet();
24
+ error ErrorInstanceServiceMasterBundleManagerAlreadySet();
25
+ error ErrorInstanceServiceInstanceAddressZero();
26
+
27
+ error ErrorInstanceServiceMasterInstanceReaderNotSet();
28
+ error ErrorInstanceServiceInstanceReaderAddressZero();
29
+ error ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader();
30
+ error ErrorInstanceServiceInstanceReaderInstanceMismatch();
31
+
32
+ error ErrorInstanceServiceOzAccessManagerZero();
33
+ error ErrorInstanceServiceInstanceAccessManagerZero();
34
+ error ErrorInstanceServiceInstanceReaderZero();
35
+ error ErrorInstanceServiceBundleManagerZero();
36
+
37
+ error ErrorInstanceServiceInstanceAuthorityMismatch();
38
+ error ErrorInstanceServiceBundleManagerAuthorityMismatch();
39
+ error ErrorInstanceServiceInstanceReaderInstanceMismatch2();
40
+ error ErrorInstanceServiceBundleMangerInstanceMismatch();
41
+
20
42
  error ErrorInstanceServiceRequestUnauhorized(address caller);
21
43
  error ErrorInstanceServiceNotInstanceOwner(address caller, NftId instanceNftId);
22
-
23
- event LogInstanceCloned(address clonedAccessManagerAddress, address clonedInstanceAddress, address clonedInstanceReaderAddress, NftId clonedInstanceNftId);
44
+ error ErrorInstanceServiceNotInstance(NftId nftId);
45
+ error ErrorInstanceServiceComponentNotRegistered(address componentAddress);
46
+ error ErrorInstanceServiceInstanceComponentMismatch(NftId instanceNftId, NftId componentNftId);
47
+ error ErrorInstanceServiceInvalidComponentType(address componentAddress, ObjectType expectedType, ObjectType componentType);
48
+
49
+ event LogInstanceCloned(address clonedOzAccessManager, address clonedInstanceAccessManager, address clonedInstance, address clonedBundleManager, address clonedInstanceReader, NftId clonedInstanceNftId);
24
50
 
25
51
  function createInstanceClone()
26
52
  external
27
53
  returns (
28
- InstanceAccessManager clonedAccessManager,
54
+ AccessManagerUpgradeableInitializeable clonedOzAccessManager,
55
+ InstanceAccessManager clonedInstanceAccessManager,
29
56
  Instance clonedInstance,
30
57
  NftId instanceNftId,
31
58
  InstanceReader clonedInstanceReader,
32
59
  BundleManager clonedBundleManager
33
60
  );
34
61
 
35
- function createRole(RoleId role, string memory name, NftId instanceNftId) external;
36
-
37
- function grantRole(RoleId role, address member, NftId instanceNftId) external;
38
-
39
- function hasRole(address account, RoleId role, address instanceAddress) external returns (bool);
62
+ function createGifTarget(
63
+ NftId instanceNftId,
64
+ address targetAddress,
65
+ string memory targetName,
66
+ bytes4[][] memory selectors,
67
+ RoleId[] memory roles
68
+ ) external;
40
69
 
70
+ function setComponentLocked(bool locked) external;
41
71
  }
42
72
 
@@ -1,48 +1,56 @@
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";
10
- import {IBundle} from "./module/IBundle.sol";
11
- import {IPolicy} from "./module/IPolicy.sol";
12
- import {IRisk} from "./module/IRisk.sol";
13
- import {ISetup} from "./module/ISetup.sol";
14
6
  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
7
  import {NftId} from "../types/NftId.sol";
8
+ import {ClaimId} from "../types/ClaimId.sol";
21
9
  import {NumberId} from "../types/NumberId.sol";
22
- import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET} from "../types/ObjectType.sol";
10
+ import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET, COMPONENT, DISTRIBUTOR, DISTRIBUTOR_TYPE} from "../types/ObjectType.sol";
23
11
  import {RiskId, RiskIdLib} from "../types/RiskId.sol";
24
- import {RoleId, RoleIdLib} from "../types/RoleId.sol";
12
+ import {RoleId, RoleIdLib, INSTANCE_ROLE, INSTANCE_OWNER_ROLE} from "../types/RoleId.sol";
25
13
  import {StateId, ACTIVE} from "../types/StateId.sol";
26
14
  import {TimestampLib} from "../types/Timestamp.sol";
15
+ import {VersionPart, VersionPartLib} from "../types/Version.sol";
16
+
27
17
  import {ERC165} from "../shared/ERC165.sol";
28
18
  import {Registerable} from "../shared/Registerable.sol";
29
- import {ComponentOwnerService} from "./service/ComponentOwnerService.sol";
30
- import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
19
+
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";
26
+
27
+ import {KeyValueStore} from "./base/KeyValueStore.sol";
28
+
29
+ import {IAccess} from "./module/IAccess.sol";
30
+ import {IBundle} from "./module/IBundle.sol";
31
+ import {IComponents} from "./module/IComponents.sol";
32
+ import {IDistribution} from "./module/IDistribution.sol";
33
+ import {IPolicy} from "./module/IPolicy.sol";
34
+ import {IRisk} from "./module/IRisk.sol";
35
+ import {ISetup} from "./module/ISetup.sol";
36
+
31
37
  import {IDistributionService} from "./service/IDistributionService.sol";
32
38
  import {IPoolService} from "./service/IPoolService.sol";
33
39
  import {IProductService} from "./service/IProductService.sol";
34
40
  import {IPolicyService} from "./service/IPolicyService.sol";
35
41
  import {IBundleService} from "./service/IBundleService.sol";
36
- import {VersionPart} from "../types/Version.sol";
37
- import {InstanceBase} from "./InstanceBase.sol";
42
+ import {TokenHandler} from "../shared/TokenHandler.sol";
43
+ import {VersionPart, VersionPartLib} from "../types/Version.sol";
38
44
 
39
45
  contract Instance is
40
- AccessManagedUpgradeable,
41
46
  IInstance,
42
- // Initializable,
43
- InstanceBase
47
+ AccessManagedUpgradeable,
48
+ Registerable,
49
+ KeyValueStore
44
50
  {
45
51
 
52
+ uint256 public constant GIF_MAJOR_VERSION = 3;
53
+
46
54
  uint64 public constant ADMIN_ROLE = type(uint64).min;
47
55
  uint64 public constant PUBLIC_ROLE = type(uint64).max;
48
56
  uint64 public constant CUSTOM_ROLE_ID_MIN = 10000;
@@ -55,20 +63,24 @@ contract Instance is
55
63
  InstanceReader internal _instanceReader;
56
64
  BundleManager internal _bundleManager;
57
65
 
58
- function initialize(address accessManagerAddress, address registryAddress, NftId registryNftId, address initialOwner)
66
+ modifier onlyChainNft() {
67
+ if(msg.sender != getRegistry().getChainNftAddress()) {
68
+ revert();
69
+ }
70
+ _;
71
+ }
72
+
73
+ function initialize(address authority, address registryAddress, address initialOwner)
59
74
  public
60
- initializer
75
+ initializer()
61
76
  {
62
- require(!_initialized, "Contract instance has already been initialized");
63
-
64
- __AccessManaged_init(accessManagerAddress);
65
-
66
- _accessManager = InstanceAccessManager(accessManagerAddress);
77
+ __AccessManaged_init(authority);
67
78
 
68
- _initializeRegisterable(registryAddress, registryNftId, INSTANCE(), false, initialOwner, "");
79
+ IRegistry registry = IRegistry(registryAddress);
80
+ initializeRegisterable(registryAddress, registry.getNftId(), INSTANCE(), true, initialOwner, "");
81
+ initializeLifecycle();
69
82
 
70
- _registerInterface(type(IInstance).interfaceId);
71
- _initialized = true;
83
+ registerInterface(type(IInstance).interfaceId);
72
84
  }
73
85
 
74
86
  //--- ProductSetup ------------------------------------------------------//
@@ -98,55 +110,55 @@ contract Instance is
98
110
  }
99
111
 
100
112
  //--- PoolSetup ------------------------------------------------------//
101
- function createPoolSetup(NftId poolNftId, ISetup.PoolSetupInfo memory setup) external restricted() {
102
- create(_toNftKey32(poolNftId, POOL()), abi.encode(setup));
113
+ function createPoolSetup(NftId poolNftId, IComponents.ComponentInfo memory info) external restricted() {
114
+ create(_toNftKey32(poolNftId, POOL()), abi.encode(info));
103
115
  }
104
116
 
105
- function updatePoolSetup(NftId poolNftId, ISetup.PoolSetupInfo memory setup, StateId newState) external restricted() {
106
- update(_toNftKey32(poolNftId, POOL()), abi.encode(setup), newState);
117
+ function updatePoolSetup(NftId poolNftId, IComponents.ComponentInfo memory info, StateId newState) external restricted() {
118
+ update(_toNftKey32(poolNftId, POOL()), abi.encode(info), newState);
107
119
  }
108
120
 
109
121
  function updatePoolSetupState(NftId poolNftId, StateId newState) external restricted() {
110
122
  updateState(_toNftKey32(poolNftId, POOL()), newState);
111
123
  }
112
124
 
113
- //--- DistributorType ---------------------------------------------------//
114
- function createDistributorType(NftId policyNftId, NumberId payoutId, IPolicy.PayoutInfo memory payout) external restricted() {
115
- create(toPolicyKey32(policyNftId), abi.encode(payout));
125
+ //--- DistributorType -------------------------------------------------------//
126
+ function createDistributorType(Key32 distributorKey, IDistribution.DistributorTypeInfo memory info) external restricted() {
127
+ create(distributorKey, abi.encode(info));
116
128
  }
117
129
 
118
- function updateDistributorType(NftId policyNftId, NumberId payoutId, IPolicy.PayoutInfo memory payout, StateId newState) external restricted() {
119
- update(toPolicyKey32(policyNftId), abi.encode(payout), newState);
130
+ function updateDistributorType(Key32 distributorKey, IDistribution.DistributorTypeInfo memory info, StateId newState) external restricted() {
131
+ update(distributorKey, abi.encode(info), newState);
120
132
  }
121
133
 
122
- function updateDistributorTypeState(NftId policyNftId, StateId newState) external restricted() {
123
- updateState(toPolicyKey32(policyNftId), newState);
134
+ function updateDistributorTypeState(Key32 distributorKey, StateId newState) external restricted() {
135
+ updateState(distributorKey, newState);
124
136
  }
125
137
 
126
138
  //--- Distributor -------------------------------------------------------//
127
- function createDistributor(NftId policyNftId, NumberId payoutId, IPolicy.PayoutInfo memory payout) external restricted() {
128
- create(toPolicyKey32(policyNftId), abi.encode(payout));
139
+ function createDistributor(NftId nftId, IDistribution.DistributorInfo memory info) external restricted() {
140
+ create(toDistributorKey32(nftId), abi.encode(info));
129
141
  }
130
142
 
131
- function updateDistributor(NftId policyNftId, NumberId payoutId, IPolicy.PayoutInfo memory payout, StateId newState) external restricted() {
132
- update(toPolicyKey32(policyNftId), abi.encode(payout), newState);
143
+ function updateDistributor(NftId nftId, IDistribution.DistributorInfo memory info, StateId newState) external restricted() {
144
+ update(toDistributorKey32(nftId), abi.encode(info), newState);
133
145
  }
134
146
 
135
- function updateDistributorState(NftId policyNftId, StateId newState) external restricted() {
136
- updateState(toPolicyKey32(policyNftId), newState);
147
+ function updateDistributorState(NftId nftId, StateId newState) external restricted() {
148
+ updateState(toDistributorKey32(nftId), newState);
137
149
  }
138
150
 
139
151
  //--- Referral ----------------------------------------------------------//
140
- function createReferral(NftId policyNftId, NumberId payoutId, IPolicy.PayoutInfo memory payout) external restricted() {
141
- create(toPolicyKey32(policyNftId), abi.encode(payout));
152
+ function createReferral(Key32 referralKey, IDistribution.ReferralInfo memory referralInfo) external restricted() {
153
+ create(referralKey, abi.encode(referralInfo));
142
154
  }
143
155
 
144
- function updateReferral(NftId policyNftId, NumberId payoutId, IPolicy.PayoutInfo memory payout, StateId newState) external restricted() {
145
- update(toPolicyKey32(policyNftId), abi.encode(payout), newState);
156
+ function updateReferral(Key32 referralKey, IDistribution.ReferralInfo memory referralInfo, StateId newState) external restricted() {
157
+ update(referralKey, abi.encode(referralInfo), newState);
146
158
  }
147
159
 
148
- function updateReferralState(NftId policyNftId, StateId newState) external restricted() {
149
- updateState(toPolicyKey32(policyNftId), newState);
160
+ function updateReferralState(Key32 referralKey, StateId newState) external restricted() {
161
+ updateState(referralKey, newState);
150
162
  }
151
163
 
152
164
  //--- Bundle ------------------------------------------------------------//
@@ -175,11 +187,20 @@ contract Instance is
175
187
  updateState(riskId.toKey32(), newState);
176
188
  }
177
189
 
178
- //--- Policy ------------------------------------------------------------//
179
- function createPolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy) external restricted() {
180
- create(toPolicyKey32(policyNftId), abi.encode(policy));
190
+ //--- Application (Policy) ----------------------------------------------//
191
+ function createApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy) external restricted() {
192
+ create(toPolicyKey32(applicationNftId), abi.encode(policy));
181
193
  }
182
194
 
195
+ function updateApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
196
+ update(toPolicyKey32(applicationNftId), abi.encode(policy), newState);
197
+ }
198
+
199
+ function updateApplicationState(NftId applicationNftId, StateId newState) external restricted() {
200
+ updateState(toPolicyKey32(applicationNftId), newState);
201
+ }
202
+
203
+ //--- Policy ------------------------------------------------------------//
183
204
  function updatePolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
184
205
  update(toPolicyKey32(policyNftId), abi.encode(policy), newState);
185
206
  }
@@ -189,15 +210,15 @@ contract Instance is
189
210
  }
190
211
 
191
212
  //--- Claim -------------------------------------------------------------//
192
- function createClaim(NftId policyNftId, NumberId claimId, IPolicy.ClaimInfo memory claim) external restricted() {
213
+ function createClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim) external restricted() {
193
214
  create(toPolicyKey32(policyNftId), abi.encode(claim));
194
215
  }
195
216
 
196
- function updateClaim(NftId policyNftId, NumberId claimId, IPolicy.ClaimInfo memory claim, StateId newState) external restricted() {
217
+ function updateClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim, StateId newState) external restricted() {
197
218
  update(toPolicyKey32(policyNftId), abi.encode(claim), newState);
198
219
  }
199
220
 
200
- function updateClaimState(NftId policyNftId, StateId newState) external restricted() {
221
+ function updateClaimState(NftId policyNftId, ClaimId claimId, StateId newState) external restricted() {
201
222
  updateState(toPolicyKey32(policyNftId), newState);
202
223
  }
203
224
 
@@ -206,7 +227,7 @@ contract Instance is
206
227
  create(toPolicyKey32(policyNftId), abi.encode(payout));
207
228
  }
208
229
 
209
- function updateClaim(NftId policyNftId, NumberId payoutId, IPolicy.PayoutInfo memory payout, StateId newState) external restricted() {
230
+ function updatePayout(NftId policyNftId, NumberId payoutId, IPolicy.PayoutInfo memory payout, StateId newState) external restricted() {
210
231
  update(toPolicyKey32(policyNftId), abi.encode(payout), newState);
211
232
  }
212
233
 
@@ -214,6 +235,17 @@ contract Instance is
214
235
  updateState(toPolicyKey32(policyNftId), newState);
215
236
  }
216
237
 
238
+ //--- ITransferInterceptor ------------------------------------------------------------//
239
+ function nftMint(address to, uint256 tokenId) external onlyChainNft {
240
+ assert(_accessManager.roleMembers(INSTANCE_OWNER_ROLE()) == 0);// temp
241
+ assert(_accessManager.grantRole(INSTANCE_OWNER_ROLE(), to) == true);
242
+ }
243
+
244
+ function nftTransferFrom(address from, address to, uint256 tokenId) external onlyChainNft {
245
+ assert(_accessManager.revokeRole(INSTANCE_OWNER_ROLE(), from) == true);
246
+ assert(_accessManager.grantRole(INSTANCE_OWNER_ROLE(), to) == true);
247
+ }
248
+
217
249
  //--- internal view/pure functions --------------------------------------//
218
250
  function _toNftKey32(NftId nftId, ObjectType objectType) internal pure returns (Key32) {
219
251
  return nftId.toKey32(objectType);
@@ -227,50 +259,69 @@ contract Instance is
227
259
  return policyNftId.toKey32(POLICY());
228
260
  }
229
261
 
230
- function getComponentOwnerService() external view returns (IComponentOwnerService) {
231
- return ComponentOwnerService(_registry.getServiceAddress("ComponentOwnerService", VersionPart.wrap(3)));
262
+ function toDistributionKey32(NftId distNftId) public pure returns (Key32) {
263
+ return distNftId.toKey32(DISTRIBUTION());
232
264
  }
233
265
 
266
+ function toDistributorTypeKey32(NftId distNftId) public pure returns (Key32) {
267
+ return distNftId.toKey32(DISTRIBUTOR_TYPE());
268
+ }
269
+
270
+ function toDistributorKey32(NftId distNftId) public pure returns (Key32) {
271
+ return distNftId.toKey32(DISTRIBUTOR());
272
+ }
273
+
234
274
  function getDistributionService() external view returns (IDistributionService) {
235
- return IDistributionService(_registry.getServiceAddress("DistributionService", VersionPart.wrap(3)));
275
+ return IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), VersionPart.wrap(3)));
236
276
  }
237
277
 
238
278
  function getProductService() external view returns (IProductService) {
239
- return IProductService(_registry.getServiceAddress("ProductService", VersionPart.wrap(3)));
279
+ return IProductService(getRegistry().getServiceAddress(PRODUCT(), VersionPart.wrap(3)));
240
280
  }
241
281
 
242
282
  function getPoolService() external view returns (IPoolService) {
243
- return IPoolService(_registry.getServiceAddress("PoolService", VersionPart.wrap(3)));
283
+ return IPoolService(getRegistry().getServiceAddress(POOL(), VersionPart.wrap(3)));
244
284
  }
245
285
 
246
286
  function getPolicyService() external view returns (IPolicyService) {
247
- return IPolicyService(_registry.getServiceAddress("PolicyService", VersionPart.wrap(3)));
287
+ return IPolicyService(getRegistry().getServiceAddress(POLICY(), VersionPart.wrap(3)));
248
288
  }
249
289
 
250
290
  function getBundleService() external view returns (IBundleService) {
251
- return IBundleService(_registry.getServiceAddress("BundleService", VersionPart.wrap(3)));
252
- }
253
-
254
- function getInstanceAccessManager() external view returns (InstanceAccessManager) {
255
- return _accessManager;
291
+ return IBundleService(getRegistry().getServiceAddress(BUNDLE(), VersionPart.wrap(3)));
256
292
  }
257
293
 
258
294
  function setInstanceReader(InstanceReader instanceReader) external restricted() {
259
- require(instanceReader.getInstanceNftId() == getNftId(), "NFT ID of InstanceReader does not match");
295
+ require(instanceReader.getInstance() == Instance(this), "InstanceReader instance mismatch");
260
296
  _instanceReader = instanceReader;
261
297
  }
262
298
 
299
+ function getMajorVersion() external pure returns (VersionPart majorVersion) {
300
+ return VersionPartLib.toVersionPart(GIF_MAJOR_VERSION);
301
+ }
302
+
263
303
  function getInstanceReader() external view returns (InstanceReader) {
264
304
  return _instanceReader;
265
305
  }
266
306
 
267
307
  function setBundleManager(BundleManager bundleManager) external restricted() {
268
308
  require(address(_bundleManager) == address(0), "BundleManager is set");
269
- require(bundleManager.getInstanceNftId() == getNftId(), "NFT ID of BundleManager does not match");
309
+ require(bundleManager.getInstance() == Instance(this), "BundleManager instance mismatch");
310
+ require(bundleManager.authority() == authority(), "BundleManager authority mismatch");
270
311
  _bundleManager = bundleManager;
271
312
  }
272
313
 
273
314
  function getBundleManager() external view returns (BundleManager) {
274
315
  return _bundleManager;
275
316
  }
317
+
318
+ function setInstanceAccessManager(InstanceAccessManager accessManager) external restricted {
319
+ require(address(_accessManager) == address(0), "InstanceAccessManager is set");
320
+ require(accessManager.authority() == authority(), "InstanceAccessManager authority mismatch");
321
+ _accessManager = accessManager;
322
+ }
323
+
324
+ function getInstanceAccessManager() external view returns (InstanceAccessManager) {
325
+ return _accessManager;
326
+ }
276
327
  }