@etherisc/gif-next 0.0.2-90f8ffc-398 → 0.0.2-9105e58-225

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 (272) hide show
  1. package/README.md +73 -1
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +242 -34
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +592 -41
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +85 -27
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +327 -32
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +187 -43
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +85 -27
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +443 -54
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +342 -34
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  33. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  36. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  39. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  40. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +2 -2
  41. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  42. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +673 -169
  44. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  45. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +96 -34
  46. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  47. package/artifacts/contracts/instance/Instance.sol/Instance.json +762 -422
  48. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +39 -89
  50. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +58 -53
  52. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +289 -104
  54. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +163 -57
  56. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  57. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +2 -2
  58. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +151 -52
  60. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  61. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  62. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  63. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +2 -2
  64. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +13 -13
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  74. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  75. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1047 -0
  76. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +543 -0
  78. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +282 -118
  80. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +149 -51
  82. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  83. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +932 -0
  84. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  85. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +523 -0
  86. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +426 -74
  88. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +174 -48
  90. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  91. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +612 -0
  92. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +130 -73
  94. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  95. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +548 -0
  96. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  97. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +220 -31
  98. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  99. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +44 -88
  100. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  101. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +23 -31
  102. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  103. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +23 -31
  104. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  105. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +212 -149
  106. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +162 -64
  108. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  109. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +173 -74
  110. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  111. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +146 -48
  112. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  113. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +173 -74
  114. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +146 -48
  116. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  117. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  118. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +15 -2
  119. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  120. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +82 -34
  121. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  122. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  123. package/artifacts/contracts/registry/Registry.sol/Registry.json +28 -15
  124. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  125. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
  126. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  127. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +218 -63
  128. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  129. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +142 -50
  130. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  131. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +11 -11
  132. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  133. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +141 -37
  134. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  135. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  136. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  137. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  138. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
  139. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  140. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  141. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  142. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -29
  143. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  144. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +48 -0
  145. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  146. package/artifacts/contracts/shared/IService.sol/IService.json +23 -31
  147. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  148. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -2
  149. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  150. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +113 -33
  151. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  152. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  153. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  154. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +143 -39
  155. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  156. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +126 -45
  157. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  158. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  159. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  160. package/artifacts/contracts/shared/Service.sol/Service.json +143 -44
  161. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  162. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  163. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  164. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  165. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -2
  166. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  167. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  168. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +126 -45
  169. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  170. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  171. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  172. package/artifacts/contracts/test/TestService.sol/TestService.json +161 -62
  173. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  174. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  175. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  176. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -8
  177. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  178. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  179. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  182. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  183. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  184. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  185. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  187. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  188. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  190. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  191. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  192. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  194. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  195. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  196. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  197. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  198. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
  199. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  200. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  201. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  202. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  203. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  204. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  205. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  206. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  207. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  208. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  209. package/contracts/components/Component.sol +46 -20
  210. package/contracts/components/Distribution.sol +188 -33
  211. package/contracts/components/IComponent.sol +15 -3
  212. package/contracts/components/IDistributionComponent.sol +54 -1
  213. package/contracts/components/IPoolComponent.sol +48 -17
  214. package/contracts/components/Pool.sol +134 -95
  215. package/contracts/components/Product.sol +76 -57
  216. package/contracts/instance/IInstance.sol +21 -1
  217. package/contracts/instance/IInstanceService.sol +18 -0
  218. package/contracts/instance/Instance.sol +58 -36
  219. package/contracts/instance/InstanceAccessManager.sol +12 -13
  220. package/contracts/instance/InstanceService.sol +76 -35
  221. package/contracts/instance/InstanceServiceManager.sol +1 -1
  222. package/contracts/instance/base/ComponentService.sol +1 -1
  223. package/contracts/instance/module/IAccess.sol +3 -4
  224. package/contracts/instance/module/IPolicy.sol +4 -2
  225. package/contracts/instance/module/ISetup.sol +5 -4
  226. package/contracts/instance/service/ApplicationService.sol +268 -0
  227. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  228. package/contracts/instance/service/BundleService.sol +11 -6
  229. package/contracts/instance/service/BundleServiceManager.sol +1 -1
  230. package/contracts/instance/service/ClaimService.sol +151 -0
  231. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  232. package/contracts/instance/service/DistributionService.sol +185 -14
  233. package/contracts/instance/service/DistributionServiceManager.sol +1 -1
  234. package/contracts/instance/service/IApplicationService.sol +82 -0
  235. package/contracts/instance/service/IBundleService.sol +11 -1
  236. package/contracts/instance/service/IClaimService.sol +61 -0
  237. package/contracts/instance/service/IDistributionService.sol +53 -0
  238. package/contracts/instance/service/IPolicyService.sol +41 -46
  239. package/contracts/instance/service/PolicyService.sol +94 -158
  240. package/contracts/instance/service/PolicyServiceManager.sol +1 -1
  241. package/contracts/instance/service/PoolService.sol +2 -3
  242. package/contracts/instance/service/PoolServiceManager.sol +1 -1
  243. package/contracts/instance/service/ProductService.sol +9 -9
  244. package/contracts/instance/service/ProductServiceManager.sol +1 -1
  245. package/contracts/registry/IRegistry.sol +3 -2
  246. package/contracts/registry/IRegistryService.sol +10 -8
  247. package/contracts/registry/Registry.sol +20 -8
  248. package/contracts/registry/RegistryService.sol +70 -49
  249. package/contracts/registry/RegistryServiceManager.sol +13 -13
  250. package/contracts/registry/ReleaseManager.sol +8 -9
  251. package/contracts/registry/TokenRegistry.sol +15 -6
  252. package/contracts/shared/ERC165.sol +14 -12
  253. package/contracts/shared/INftOwnable.sol +11 -10
  254. package/contracts/shared/IPolicyHolder.sol +26 -0
  255. package/contracts/shared/IRegisterable.sol +3 -3
  256. package/contracts/shared/IRegistryLinked.sol +12 -0
  257. package/contracts/shared/IVersionable.sol +2 -2
  258. package/contracts/shared/NftOwnable.sol +66 -85
  259. package/contracts/shared/PolicyHolder.sol +81 -0
  260. package/contracts/shared/ProxyManager.sol +13 -5
  261. package/contracts/shared/Registerable.sol +6 -14
  262. package/contracts/shared/RegistryLinked.sol +48 -0
  263. package/contracts/shared/Service.sol +5 -5
  264. package/contracts/shared/Versionable.sol +3 -2
  265. package/contracts/test/TestRegisterable.sol +1 -1
  266. package/contracts/test/TestService.sol +1 -1
  267. package/contracts/types/ClaimId.sol +52 -0
  268. package/contracts/types/DistributorType.sol +2 -2
  269. package/contracts/types/ObjectType.sol +9 -5
  270. package/contracts/types/PayoutId.sol +54 -0
  271. package/contracts/types/RoleId.sol +3 -3
  272. package/package.json +3 -3
@@ -19,7 +19,7 @@ import {IRegisterable} from "../../contracts/shared/IRegisterable.sol";
19
19
  import {Registerable} from "../../contracts/shared/Registerable.sol";
20
20
 
21
21
  import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../contracts/types/RoleId.sol";
22
- import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, DISTRIBUTION, POLICY, BUNDLE, STAKE} from "../../contracts/types/ObjectType.sol";
22
+ import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE} from "../../contracts/types/ObjectType.sol";
23
23
  import {StateId, ACTIVE, PAUSED} from "../../contracts/types/StateId.sol";
24
24
  import {NftId, NftIdLib, zeroNftId} from "../../contracts/types/NftId.sol";
25
25
  import {Fee, FeeLib} from "../../contracts/types/Fee.sol";
@@ -40,6 +40,33 @@ contract RegistryService is
40
40
  // TODO update to real hash when registry is stable
41
41
  bytes32 public constant REGISTRY_CREATION_CODE_HASH = bytes32(0);
42
42
 
43
+ // From IService
44
+ function getDomain() public pure override(IService, Service) returns(ObjectType serviceDomain) {
45
+ return REGISTRY();
46
+ }
47
+
48
+ // from Versionable
49
+
50
+ /// @dev top level initializer
51
+ function _initialize(
52
+ address owner,
53
+ bytes memory data
54
+ )
55
+ internal
56
+ virtual override
57
+ initializer()
58
+ {
59
+ (
60
+ address registryAddress,
61
+ address initialAuthority
62
+ ) = abi.decode(data, (address, address));
63
+
64
+ __AccessManaged_init(initialAuthority);
65
+
66
+ initializeService(registryAddress, owner);
67
+ registerInterface(type(IRegistryService).interfaceId);
68
+ }
69
+
43
70
  function registerInstance(IRegisterable instance, address owner)
44
71
  external
45
72
  restricted
@@ -52,7 +79,7 @@ contract RegistryService is
52
79
  }
53
80
 
54
81
  info = _getAndVerifyContractInfo(instance, INSTANCE(), owner);
55
- info.nftId = _registry.register(info);
82
+ info.nftId = getRegistry().register(info);
56
83
 
57
84
  instance.linkToRegisteredNftId(); // asume safe
58
85
  }
@@ -70,7 +97,7 @@ contract RegistryService is
70
97
  }
71
98
 
72
99
  info = _getAndVerifyContractInfo(product, PRODUCT(), owner);
73
- info.nftId = _registry.register(info);
100
+ info.nftId = getRegistry().register(info);
74
101
  }
75
102
 
76
103
  function registerPool(IComponent pool, address owner)
@@ -85,7 +112,7 @@ contract RegistryService is
85
112
  }
86
113
 
87
114
  info = _getAndVerifyContractInfo(pool, POOL(), owner);
88
- info.nftId = _registry.register(info);
115
+ info.nftId = getRegistry().register(info);
89
116
  }
90
117
 
91
118
  function registerDistribution(IComponent distribution, address owner)
@@ -100,7 +127,16 @@ contract RegistryService is
100
127
  }
101
128
 
102
129
  info = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
103
- info.nftId = _registry.register(info);
130
+ info.nftId = getRegistry().register(info);
131
+ }
132
+
133
+ function registerDistributor(IRegistry.ObjectInfo memory info)
134
+ external
135
+ restricted
136
+ returns(NftId nftId)
137
+ {
138
+ _verifyObjectInfo(info, DISTRIBUTOR());
139
+ nftId = getRegistry().register(info);
104
140
  }
105
141
 
106
142
  function registerPolicy(IRegistry.ObjectInfo memory info)
@@ -110,7 +146,7 @@ contract RegistryService is
110
146
  {
111
147
  _verifyObjectInfo(info, POLICY());
112
148
 
113
- nftId = _registry.register(info);
149
+ nftId = getRegistry().register(info);
114
150
  }
115
151
 
116
152
  function registerBundle(IRegistry.ObjectInfo memory info)
@@ -120,7 +156,7 @@ contract RegistryService is
120
156
  {
121
157
  _verifyObjectInfo(info, BUNDLE());
122
158
 
123
- nftId = _registry.register(info);
159
+ nftId = getRegistry().register(info);
124
160
  }
125
161
 
126
162
  function registerStake(IRegistry.ObjectInfo memory info)
@@ -130,35 +166,7 @@ contract RegistryService is
130
166
  {
131
167
  _verifyObjectInfo(info, STAKE());
132
168
 
133
- nftId = _registry.register(info);
134
- }
135
-
136
- // From IService
137
- function getDomain() public pure override(IService, Service) returns(ObjectType serviceDomain) {
138
- return REGISTRY();
139
- }
140
-
141
- // from Versionable
142
-
143
- /// @dev top level initializer
144
- function _initialize(
145
- address owner,
146
- bytes memory data
147
- )
148
- internal
149
- initializer
150
- virtual override
151
- {
152
- (
153
- address initialAuthority,
154
- address registry
155
- ) = abi.decode(data, (address, address));
156
-
157
- __AccessManaged_init(initialAuthority);
158
-
159
- _initializeService(address(registry), owner);
160
-
161
- _registerInterface(type(IRegistryService).interfaceId);
169
+ nftId = getRegistry().register(info);
162
170
  }
163
171
 
164
172
  // from IRegisterable
@@ -170,30 +178,43 @@ contract RegistryService is
170
178
  FunctionConfig[] memory config
171
179
  )
172
180
  {
173
- config = new FunctionConfig[](6);
181
+ config = new FunctionConfig[](8);
174
182
 
175
183
  // order of service registrations MUST be reverse to this array
176
184
  /*config[-1].serviceDomain = STAKE();
177
185
  config[-1].selector = RegistryService.registerStake.selector;*/
178
186
 
179
- config[0].serviceDomain = POLICY();
180
- config[0].selector = RegistryService.registerPolicy.selector;
187
+ config[0].serviceDomain = APPLICATION();
188
+ config[0].selectors = new bytes4[](1);
189
+ config[0].selectors[0] = RegistryService.registerPolicy.selector;
190
+
191
+ config[1].serviceDomain = POLICY();
192
+ config[1].selectors = new bytes4[](0);
193
+
194
+ config[2].serviceDomain = CLAIM();
195
+ config[2].selectors = new bytes4[](0);
181
196
 
182
- config[1].serviceDomain = BUNDLE();
183
- config[1].selector = RegistryService.registerBundle.selector;
197
+ config[3].serviceDomain = BUNDLE();
198
+ config[3].selectors = new bytes4[](1);
199
+ config[3].selectors[0] = RegistryService.registerBundle.selector;
184
200
 
185
- config[2].serviceDomain = PRODUCT();
186
- config[2].selector = RegistryService.registerProduct.selector;
201
+ config[4].serviceDomain = PRODUCT();
202
+ config[4].selectors = new bytes4[](1);
203
+ config[4].selectors[0] = RegistryService.registerProduct.selector;
187
204
 
188
- config[3].serviceDomain = POOL();
189
- config[3].selector = RegistryService.registerPool.selector;
205
+ config[5].serviceDomain = POOL();
206
+ config[5].selectors = new bytes4[](1);
207
+ config[5].selectors[0] = RegistryService.registerPool.selector;
190
208
 
191
- config[4].serviceDomain = DISTRIBUTION();
192
- config[4].selector = RegistryService.registerDistribution.selector;
209
+ config[6].serviceDomain = DISTRIBUTION();
210
+ config[6].selectors = new bytes4[](2);
211
+ config[6].selectors[0] = RegistryService.registerDistribution.selector;
212
+ config[6].selectors[1] = RegistryService.registerDistributor.selector;
193
213
 
194
214
  // registerInstance() have no restriction
195
- config[5].serviceDomain = INSTANCE();
196
- config[5].selector = RegistryService.registerInstance.selector;
215
+ config[7].serviceDomain = INSTANCE();
216
+ config[7].selectors = new bytes4[](1);
217
+ config[7].selectors[0] = RegistryService.registerInstance.selector;
197
218
  }
198
219
 
199
220
  // Internal
@@ -22,32 +22,32 @@ contract RegistryServiceManager is
22
22
  /// @dev initializes proxy manager with registry service implementation and deploys registry
23
23
  constructor(
24
24
  address initialAuthority, // used by implementation
25
- address registry) // used by implementation
26
- ProxyManager()
25
+ address registryAddress) // used by implementation
26
+ ProxyManager(registryAddress)
27
27
  {
28
28
  require(initialAuthority > address(0), "RegistryServiceManager: initial authority is 0");
29
- require(registry > address(0), "RegistryServiceManager: registry is 0");
29
+ require(registryAddress > address(0), "RegistryServiceManager: registry is 0");
30
30
 
31
31
  // implementation's initializer func `data` argument
32
- bytes memory initializationData = abi.encode(
33
- initialAuthority,
34
- registry);
35
-
32
+ RegistryService srv = new RegistryService();
33
+ bytes memory data = abi.encode(registryAddress, initialAuthority);
36
34
  IVersionable versionable = deploy(
37
- address(new RegistryService()),
38
- initializationData);
35
+ address(srv),
36
+ data);
39
37
 
40
38
  _registryService = RegistryService(address(versionable));
39
+
40
+ // _linkToNftOwnable(address(_registryService));
41
41
  }
42
42
 
43
- // from IRegisterable
43
+ // // from IRegisterable
44
44
 
45
- // IMPORTANT: registry here and in constructor MUST be the same
46
- function linkToNftOwnable(address registry)
45
+ // // IMPORTANT: registry here and in constructor MUST be the same
46
+ function linkOwnershipToServiceNft()
47
47
  public
48
48
  onlyOwner
49
49
  {
50
- _linkToNftOwnable(registry, address(_registryService));
50
+ _linkToNftOwnable(address(_registryService));
51
51
  }
52
52
 
53
53
  //--- view functions ----------------------------------------------------//
@@ -61,7 +61,7 @@ contract ReleaseManager is AccessManaged
61
61
 
62
62
  mapping(VersionPart version => IRegistry.ReleaseInfo info) _release;
63
63
 
64
- mapping(VersionPart version => mapping(ObjectType serviceDomain => bytes4)) _selector; // registry service function selector assigned to domain
64
+ mapping(VersionPart version => mapping(ObjectType serviceDomain => bytes4[])) _selectors; // registry service function selector assigned to domain
65
65
 
66
66
  uint _awaitingRegistration; // "services left to register" counter
67
67
 
@@ -178,14 +178,13 @@ contract ReleaseManager is AccessManaged
178
178
  _verifyServiceInfo(info, version, domain);
179
179
 
180
180
  // setup and grant unique role if service does registrations
181
- bytes4[] memory selector = new bytes4[](1);
182
- selector[0] = _selector[version][domain];
181
+ bytes4[] memory selectors = _selectors[version][domain];
183
182
  address registryService = _registry.getServiceAddress(REGISTRY(), version);
184
- if(selector[0] != 0) {
183
+ if(selectors.length > 0) {
185
184
  _accessManager.setAndGrantUniqueRole(
186
185
  address(service),
187
186
  registryService,
188
- selector);
187
+ selectors);
189
188
  }
190
189
 
191
190
  _awaitingRegistration--;
@@ -306,21 +305,21 @@ contract ReleaseManager is AccessManaged
306
305
  for(uint idx = 0; idx < config.length; idx++)
307
306
  {
308
307
  ObjectType domain = config[idx].serviceDomain;
309
- bytes4 selector = config[idx].selector;
310
-
311
308
  // not "registry service" / zero domain
312
309
  if(
313
310
  domain == REGISTRY() ||
314
311
  domain.eqz()
315
312
  ) { revert ConfigServiceDomainInvalid(idx, domain); }
316
313
 
314
+ bytes4[] memory selectors = config[idx].selectors;
315
+
317
316
  // TODO can be zero -> e.g. duplicate domain, first with zero selector, second with non zero selector -> need to check _release[version].domains.contains(domain) instead
318
317
  // no overwrite
319
- if(_selector[version][domain] > 0) {
318
+ if(_selectors[version][domain].length > 0) {
320
319
  revert SelectorAlreadyExists(version, domain);
321
320
  }
322
321
 
323
- _selector[version][domain] = selector;
322
+ _selectors[version][domain] = selectors;
324
323
  _release[version].domains.push(domain);
325
324
  }
326
325
  // TODO set when activated?
@@ -26,9 +26,19 @@ contract TokenRegistry is
26
26
  mapping(address token => bool registered) internal _registered;
27
27
  mapping(address token => mapping(VersionPart majorVersion => bool isActive)) internal _active;
28
28
 
29
- constructor()
30
- NftOwnable()
31
- { }
29
+ constructor(
30
+ address registry
31
+ )
32
+ {
33
+ initialize(registry);
34
+ }
35
+
36
+ function initialize(address registry)
37
+ public
38
+ initializer()
39
+ {
40
+ initializeNftOwnable(msg.sender, registry);
41
+ }
32
42
 
33
43
 
34
44
  /// @dev link ownership of token registry to nft owner of registry service
@@ -40,9 +50,8 @@ contract TokenRegistry is
40
50
  IRegistry registry = IRegistry(registryAddress);
41
51
  // TODO use _latest instead of _initial -> but _latest is 0 before first release activation
42
52
  address registryServiceAddress = registry.getServiceAddress(REGISTRY(), registry.getNextVersion());
43
- //address registryServiceAddress = registry.getServiceAddress(REGISTRY(), registry.getInitialVersion());
44
53
 
45
- _linkToNftOwnable(registryAddress, registryServiceAddress);
54
+ _linkToNftOwnable(registryServiceAddress);
46
55
  }
47
56
 
48
57
  /// @dev token state is informative, registry have no clue about used tokens
@@ -60,7 +69,7 @@ contract TokenRegistry is
60
69
  // verify valid major version
61
70
  // ensure major version increments is one
62
71
  uint256 version = majorVersion.toInt();
63
- if (!_registry.isValidRelease(majorVersion)) {
72
+ if (!getRegistry().isValidRelease(majorVersion)) {
64
73
  revert TokenMajorVersionInvalid(majorVersion);
65
74
  }
66
75
 
@@ -2,24 +2,26 @@
2
2
  pragma solidity ^0.8.19;
3
3
 
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
6
 
6
- contract ERC165 is IERC165 {
7
+ contract ERC165 is
8
+ Initializable,
9
+ IERC165
10
+ {
7
11
  mapping(bytes4 => bool) private _isSupported;
8
12
 
9
- constructor() {
10
- _initializeERC165();
11
- }
12
-
13
- function supportsInterface(bytes4 interfaceId) external view override returns (bool) {
14
- return _isSupported[interfaceId];
15
- }
16
-
17
- // @dev register support for ERC165 itself
18
- function _initializeERC165() internal {
13
+ // @dev initializes with support for ERC165
14
+ function initializeERC165() public onlyInitializing() {
19
15
  _isSupported[type(IERC165).interfaceId] = true;
20
16
  }
21
17
 
22
- function _registerInterface(bytes4 interfaceId) internal {
18
+ // @dev register support for provided interfaceId
19
+ // includes initialization for ERC165_ID if not yet done
20
+ function registerInterface(bytes4 interfaceId) public onlyInitializing() {
23
21
  _isSupported[interfaceId] = true;
24
22
  }
23
+
24
+ function supportsInterface(bytes4 interfaceId) external view override returns (bool) {
25
+ return _isSupported[interfaceId];
26
+ }
25
27
  }
@@ -1,22 +1,23 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IRegistry} from "../registry/IRegistry.sol";
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+
6
+ import {IRegistryLinked} from "./IRegistryLinked.sol";
5
7
  import {NftId} from "../types/NftId.sol";
6
8
 
7
- interface INftOwnable {
8
- error ErrorNotOwner(address account);
9
+ interface INftOwnable is
10
+ IERC165,
11
+ IRegistryLinked
12
+ {
13
+ error ErrorNftOwnableInitialOwnerZero();
14
+ error ErrorNftOwnableNotOwner(address account);
9
15
 
10
- error ErrorAlreadyLinked(address registry, NftId nftId);
11
- error ErrorRegistryAlreadyInitialized(address registry);
12
- error ErrorRegistryNotInitialized();
13
- error ErrorRegistryAddressZero();
14
- error ErrorNotRegistry(address registryAddress);
15
- error ErrorContractNotRegistered(address contractAddress);
16
+ error ErrorNftOwnableAlreadyLinked(NftId nftId);
17
+ error ErrorNftOwnableContractNotRegistered(address contractAddress);
16
18
 
17
19
  function linkToRegisteredNftId() external;
18
20
 
19
- function getRegistry() external view returns (IRegistry);
20
21
  function getNftId() external view returns (NftId);
21
22
  function getOwner() external view returns (address);
22
23
  }
@@ -0,0 +1,26 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+ import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
6
+
7
+ import {IRegistry} from "../registry/IRegistry.sol";
8
+ import {NftId} from "../types/NftId.sol";
9
+ import {NumberId} from "../types/NumberId.sol";
10
+
11
+ /// @dev generic interface for contracts that need to hold policies and receive payouts
12
+ /// GIF will notify policy holder contracts for policy creation and payout execution
13
+ ///
14
+
15
+ interface IPolicyHolder is IERC165, IERC721Receiver {
16
+
17
+ /// @dev callback function that will be called after successful policy creation
18
+ function policyCreatedCallback(NftId policyNftId) external;
19
+
20
+ /// @dev callback function that will be called after a successful payout
21
+ function payoutExecutedCallback(NftId policyNftId, NumberId payoutId, address beneficiary, uint256 amount) external;
22
+
23
+ /// @dev determines beneficiary address that will be used in payouts targeting this contract
24
+ /// returned address will override GIF default where the policy nft holder is treated as beneficiary
25
+ function getBeneficiary(NftId policyId, NumberId claimId) external view returns (address beneficiary);
26
+ }
@@ -1,12 +1,12 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
-
6
4
  import {INftOwnable} from "./INftOwnable.sol";
7
5
  import {IRegistry} from "../registry/IRegistry.sol";
8
6
 
9
- interface IRegisterable is IERC165, INftOwnable {
7
+ interface IRegisterable is
8
+ INftOwnable
9
+ {
10
10
 
11
11
  function getInitialInfo()
12
12
  external
@@ -0,0 +1,12 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IRegistry} from "../registry/IRegistry.sol";
5
+
6
+ interface IRegistryLinked {
7
+
8
+ error ErrorNotRegistry(address registryAddress);
9
+
10
+ function getRegistry() external view returns (IRegistry);
11
+ function getRegistryAddress() external view returns (address);
12
+ }
@@ -49,7 +49,7 @@ interface IVersionable {
49
49
  * implementation MUST call internal function Versionable._updateVersionHistory
50
50
  * new version MUST inherit from previous version
51
51
  */
52
- function initialize(address implementation, address activatedBy, bytes memory activationData) external;
52
+ function initializeVersionable(address implementation, address activatedBy, bytes memory activationData) external;
53
53
 
54
54
  /**
55
55
  * @dev
@@ -58,7 +58,7 @@ interface IVersionable {
58
58
  * new version MUST inherit from previous version
59
59
  * the first verion MUST revert
60
60
  */
61
- function upgrade(address implementation, address activatedBy, bytes memory upgradeData) external;
61
+ function upgradeVersionable(address implementation, address activatedBy, bytes memory upgradeData) external;
62
62
 
63
63
  /**
64
64
  * @dev returns true if the specified version has been activated for the current contract