@etherisc/gif-next 0.0.2-8a352ce → 0.0.2-8bdd2eb-413

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 (503) hide show
  1. package/README.md +360 -8
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1416 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1349 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +818 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +975 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +814 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +294 -514
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +650 -0
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +490 -585
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +204 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1565 -0
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1053 -0
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +734 -0
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3458 -0
  32. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  33. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  34. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  35. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +190 -0
  36. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  38. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  39. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  40. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  41. package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
  42. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  43. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IComponents.sol/IComponents.json} +2 -2
  44. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  45. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  46. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  47. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  48. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  49. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
  50. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  51. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  52. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  53. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1105 -0
  54. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  55. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +746 -0
  56. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  57. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +690 -0
  58. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  59. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
  60. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  61. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1065 -0
  62. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  63. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  64. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  65. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1432 -0
  66. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +738 -0
  68. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  69. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +834 -0
  70. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +722 -0
  72. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  73. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1278 -0
  74. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  75. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +810 -0
  76. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  77. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +499 -0
  78. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  79. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +759 -0
  80. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  81. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +707 -0
  82. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  83. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +536 -0
  84. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  85. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
  86. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  87. package/artifacts/contracts/product/IProductService.sol/IProductService.json +387 -0
  88. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  89. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1146 -0
  90. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +754 -0
  92. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  93. package/artifacts/contracts/product/PricingService.sol/PricingService.json +983 -0
  94. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  95. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +778 -0
  96. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  97. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  98. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  99. package/artifacts/contracts/product/ProductService.sol/ProductService.json +679 -0
  100. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +694 -0
  102. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +252 -2
  104. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +703 -76
  106. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1110 -0
  108. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  109. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  110. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/Registry.sol/Registry.json +1008 -125
  112. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  113. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +407 -0
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1415 -0
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +709 -0
  118. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  119. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1292 -0
  120. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
  121. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
  122. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  123. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  124. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  125. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  126. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  127. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
  128. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  129. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
  130. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  131. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
  132. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  133. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
  134. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  135. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  136. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  137. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1475 -0
  138. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +788 -0
  140. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  141. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +526 -0
  142. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  143. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
  144. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  145. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  146. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  148. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  149. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  150. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  151. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +860 -0
  152. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  153. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  154. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  155. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +468 -0
  156. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  157. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +115 -0
  158. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  159. package/artifacts/contracts/{registry/Registry.sol/Registerable.json → shared/INftOwnable.sol/INftOwnable.json} +42 -77
  160. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  161. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  162. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  163. package/artifacts/contracts/{instance/pool/PoolModule.sol/PoolModule.json → shared/IRegisterable.sol/IRegisterable.json} +98 -79
  164. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  165. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +11 -11
  166. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  167. package/artifacts/contracts/shared/IService.sol/IService.json +333 -0
  168. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  169. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
  170. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  171. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  172. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  173. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  174. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  175. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
  176. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  177. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  178. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  180. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  181. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
  182. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  183. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  184. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  185. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +617 -0
  186. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  187. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +353 -0
  188. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  189. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  190. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  191. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → shared/Service.sol/Service.json} +260 -218
  192. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  193. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
  194. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  195. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  196. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  197. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
  198. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  199. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  200. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  201. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +993 -0
  202. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  203. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +444 -0
  204. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  205. package/artifacts/contracts/staking/Staking.sol/Staking.json +2045 -0
  206. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  207. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +777 -0
  208. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  209. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  210. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  211. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1324 -0
  212. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  213. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +726 -0
  214. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  215. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2189 -0
  216. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  217. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  218. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  219. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  220. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  221. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  222. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  223. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  224. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  225. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  226. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  227. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  228. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  229. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  230. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  231. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  232. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  233. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  234. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  235. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  236. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  237. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +92 -0
  238. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  239. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  240. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  241. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  242. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  243. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  244. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  245. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +156 -0
  246. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  247. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  248. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +92 -0
  250. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +280 -0
  252. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/UFixed.sol/MathLib.json +10 -0
  254. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +479 -0
  256. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  258. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  260. package/contracts/distribution/Distribution.sol +261 -0
  261. package/contracts/distribution/DistributionService.sol +298 -0
  262. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  263. package/contracts/distribution/IDistributionComponent.sol +66 -0
  264. package/contracts/distribution/IDistributionService.sol +81 -0
  265. package/contracts/instance/BundleManager.sol +126 -0
  266. package/contracts/instance/IInstance.sol +74 -15
  267. package/contracts/instance/IInstanceService.sol +81 -0
  268. package/contracts/instance/Instance.sol +216 -45
  269. package/contracts/instance/InstanceAdmin.sol +331 -0
  270. package/contracts/instance/InstanceAuthorizationsLib.sol +349 -0
  271. package/contracts/instance/InstanceReader.sol +365 -0
  272. package/contracts/instance/InstanceService.sol +362 -0
  273. package/contracts/instance/InstanceServiceManager.sol +44 -0
  274. package/contracts/instance/InstanceStore.sol +260 -0
  275. package/contracts/instance/base/BalanceStore.sol +118 -0
  276. package/contracts/instance/base/Cloneable.sol +51 -0
  277. package/contracts/instance/base/ObjectManager.sol +82 -0
  278. package/contracts/instance/module/IAccess.sol +46 -0
  279. package/contracts/instance/module/IBundle.sol +20 -0
  280. package/contracts/instance/module/IComponents.sol +52 -0
  281. package/contracts/instance/module/IDistribution.sol +42 -0
  282. package/contracts/instance/module/IPolicy.sol +84 -0
  283. package/contracts/instance/module/IRisk.sol +11 -0
  284. package/contracts/mock/Dip.sol +26 -0
  285. package/contracts/pool/BundleService.sol +296 -0
  286. package/contracts/pool/BundleServiceManager.sol +42 -0
  287. package/contracts/pool/IBundleService.sol +106 -0
  288. package/contracts/pool/IPoolComponent.sol +112 -0
  289. package/contracts/pool/IPoolService.sol +150 -0
  290. package/contracts/pool/Pool.sol +299 -0
  291. package/contracts/pool/PoolService.sol +453 -0
  292. package/contracts/pool/PoolServiceManager.sol +42 -0
  293. package/contracts/product/ApplicationService.sol +254 -0
  294. package/contracts/product/ApplicationServiceManager.sol +38 -0
  295. package/contracts/product/ClaimService.sol +442 -0
  296. package/contracts/product/ClaimServiceManager.sol +38 -0
  297. package/contracts/product/IApplicationService.sol +62 -0
  298. package/contracts/product/IClaimService.sol +93 -0
  299. package/contracts/product/IPolicyService.sol +78 -0
  300. package/contracts/product/IPricingService.sol +39 -0
  301. package/contracts/product/IProductComponent.sol +42 -0
  302. package/contracts/product/IProductService.sol +33 -0
  303. package/contracts/product/PolicyService.sol +475 -0
  304. package/contracts/product/PolicyServiceManager.sol +42 -0
  305. package/contracts/product/PricingService.sol +301 -0
  306. package/contracts/product/PricingServiceManager.sol +42 -0
  307. package/contracts/product/Product.sol +377 -0
  308. package/contracts/product/ProductService.sol +124 -0
  309. package/contracts/product/ProductServiceManager.sol +42 -0
  310. package/contracts/registry/ChainNft.sol +152 -108
  311. package/contracts/registry/IRegistry.sol +103 -49
  312. package/contracts/registry/IRegistryService.sol +69 -0
  313. package/contracts/registry/ITransferInterceptor.sol +7 -0
  314. package/contracts/registry/Registry.sol +513 -119
  315. package/contracts/registry/RegistryAdmin.sol +237 -0
  316. package/contracts/registry/RegistryService.sol +266 -0
  317. package/contracts/registry/RegistryServiceManager.sol +58 -0
  318. package/contracts/registry/ReleaseManager.sol +599 -0
  319. package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
  320. package/contracts/registry/TokenRegistry.sol +315 -0
  321. package/contracts/shared/AccessManagerCustom.sol +736 -0
  322. package/contracts/shared/AccessManagerExtended.sol +470 -0
  323. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  324. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  325. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  326. package/contracts/shared/Component.sol +278 -0
  327. package/contracts/shared/ComponentService.sol +596 -0
  328. package/contracts/shared/ComponentServiceManager.sol +35 -0
  329. package/contracts/shared/ComponentVerifyingService.sol +111 -0
  330. package/contracts/shared/ERC165.sol +27 -0
  331. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  332. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  333. package/contracts/shared/IComponent.sol +70 -0
  334. package/contracts/shared/IComponentService.sol +91 -0
  335. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  336. package/contracts/shared/IKeyValueStore.sol +53 -0
  337. package/contracts/shared/ILifecycle.sol +30 -0
  338. package/contracts/shared/INftOwnable.sol +23 -0
  339. package/contracts/shared/IPolicyHolder.sol +45 -0
  340. package/contracts/shared/IRegisterable.sol +15 -0
  341. package/contracts/shared/IRegistryLinked.sol +11 -0
  342. package/contracts/shared/IService.sol +18 -0
  343. package/contracts/shared/IVersionable.sol +53 -0
  344. package/contracts/shared/InitializableCustom.sol +177 -0
  345. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  346. package/contracts/shared/KeyValueStore.sol +127 -0
  347. package/contracts/shared/Lifecycle.sol +121 -0
  348. package/contracts/shared/NftIdSetManager.sol +65 -0
  349. package/contracts/shared/NftOwnable.sol +107 -0
  350. package/contracts/shared/PolicyHolder.sol +102 -0
  351. package/contracts/shared/ProxyManager.sol +199 -0
  352. package/contracts/shared/Registerable.sol +75 -0
  353. package/contracts/shared/RegistryLinked.sol +43 -0
  354. package/contracts/shared/Service.sol +77 -0
  355. package/contracts/shared/TokenHandler.sol +58 -0
  356. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  357. package/contracts/shared/Versionable.sol +59 -0
  358. package/contracts/staking/IStaking.sol +168 -0
  359. package/contracts/staking/IStakingService.sol +149 -0
  360. package/contracts/staking/StakeManagerLib.sol +179 -0
  361. package/contracts/staking/Staking.sol +551 -0
  362. package/contracts/staking/StakingManager.sol +54 -0
  363. package/contracts/staking/StakingReader.sol +187 -0
  364. package/contracts/staking/StakingService.sol +406 -0
  365. package/contracts/staking/StakingServiceManager.sol +45 -0
  366. package/contracts/staking/StakingStore.sol +572 -0
  367. package/contracts/staking/TargetManagerLib.sol +207 -0
  368. package/contracts/type/AddressSet.sol +58 -0
  369. package/contracts/type/Amount.sol +128 -0
  370. package/contracts/type/Blocknumber.sol +136 -0
  371. package/contracts/type/ClaimId.sol +75 -0
  372. package/contracts/type/DistributorType.sol +55 -0
  373. package/contracts/type/Fee.sol +66 -0
  374. package/contracts/type/Key32.sol +50 -0
  375. package/contracts/type/NftId.sol +78 -0
  376. package/contracts/type/NftIdSet.sol +62 -0
  377. package/contracts/type/ObjectType.sol +169 -0
  378. package/contracts/type/PayoutId.sol +82 -0
  379. package/contracts/type/Referral.sol +89 -0
  380. package/contracts/type/RiskId.sol +43 -0
  381. package/contracts/type/RoleId.sol +143 -0
  382. package/contracts/type/Seconds.sol +81 -0
  383. package/contracts/type/StateId.sol +123 -0
  384. package/contracts/type/Timestamp.sol +132 -0
  385. package/contracts/type/UFixed.sol +326 -0
  386. package/contracts/type/Version.sol +108 -0
  387. package/package.json +21 -6
  388. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  389. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  390. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  391. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  392. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  393. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  394. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  395. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  396. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  397. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -213
  398. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  399. package/artifacts/contracts/components/Product.sol/Product.json +0 -231
  400. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  401. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  402. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  403. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  404. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  405. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  406. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  407. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  408. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  409. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  410. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  411. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  412. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  413. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  414. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  415. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  416. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  417. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  418. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  419. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  420. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  421. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  422. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  423. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  424. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  425. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  426. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  427. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  428. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  429. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  430. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  431. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  432. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  433. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -327
  434. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  435. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  436. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  437. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  438. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  439. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  440. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  441. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  442. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  443. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  444. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  445. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  446. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  447. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  448. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  449. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  450. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  451. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  452. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  453. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  454. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  455. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  456. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  457. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  458. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  459. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  460. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  461. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
  462. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  463. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  464. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  465. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  466. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  467. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  468. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  469. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  470. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  471. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  472. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  473. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  474. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  475. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  476. package/contracts/components/Component.sol +0 -62
  477. package/contracts/components/IPool.sol +0 -9
  478. package/contracts/components/IProduct.sol +0 -12
  479. package/contracts/components/Pool.sol +0 -29
  480. package/contracts/components/Product.sol +0 -66
  481. package/contracts/experiment/errors/Require.sol +0 -33
  482. package/contracts/experiment/errors/Revert.sol +0 -39
  483. package/contracts/experiment/inheritance/A.sol +0 -56
  484. package/contracts/experiment/inheritance/B.sol +0 -23
  485. package/contracts/experiment/inheritance/C.sol +0 -28
  486. package/contracts/experiment/inheritance/IA.sol +0 -18
  487. package/contracts/experiment/inheritance/IB.sol +0 -9
  488. package/contracts/experiment/inheritance/IC.sol +0 -11
  489. package/contracts/experiment/types/TypeA.sol +0 -42
  490. package/contracts/experiment/types/TypeB.sol +0 -24
  491. package/contracts/instance/access/Access.sol +0 -218
  492. package/contracts/instance/access/IAccess.sol +0 -83
  493. package/contracts/instance/component/ComponentModule.sol +0 -248
  494. package/contracts/instance/component/IComponent.sol +0 -95
  495. package/contracts/instance/policy/IPolicy.sol +0 -66
  496. package/contracts/instance/policy/PolicyModule.sol +0 -107
  497. package/contracts/instance/pool/IPoolModule.sol +0 -41
  498. package/contracts/instance/pool/PoolModule.sol +0 -86
  499. package/contracts/instance/product/IProductService.sol +0 -46
  500. package/contracts/instance/product/ProductService.sol +0 -108
  501. package/contracts/registry/IChainNft.sol +0 -18
  502. package/contracts/types/ChainId.sol +0 -30
  503. package/contracts/types/NftId.sol +0 -35
@@ -0,0 +1,278 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
7
+ import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
8
+
9
+ import {Amount} from "../type/Amount.sol";
10
+ import {IComponent} from "./IComponent.sol";
11
+ import {IComponents} from "../instance/module/IComponents.sol";
12
+ import {NftId, NftIdLib} from "../type/NftId.sol";
13
+ import {ObjectType} from "../type/ObjectType.sol";
14
+ import {Registerable} from "../shared/Registerable.sol";
15
+ import {TokenHandler} from "../shared/TokenHandler.sol";
16
+
17
+ abstract contract Component is
18
+ AccessManagedUpgradeable,
19
+ Registerable,
20
+ IComponent
21
+ {
22
+ // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Component.sol")) - 1)) & ~bytes32(uint256(0xff));
23
+ bytes32 public constant COMPONENT_LOCATION_V1 = 0xffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f00;
24
+
25
+ struct ComponentStorage {
26
+ string _name; // unique (per instance) component name
27
+ IERC20Metadata _token; // token for this component
28
+ TokenHandler _tokenHandler;
29
+ address _wallet;
30
+ bool _isInterceptor;
31
+ bytes _data;
32
+ }
33
+
34
+
35
+ modifier onlyChainNft() {
36
+ if(msg.sender != getRegistry().getChainNftAddress()) {
37
+ revert ErrorComponentNotChainNft(msg.sender);
38
+ }
39
+ _;
40
+ }
41
+
42
+
43
+ function _getComponentStorage() private pure returns (ComponentStorage storage $) {
44
+ assembly {
45
+ $.slot := COMPONENT_LOCATION_V1
46
+ }
47
+ }
48
+
49
+ function initializeComponent(
50
+ address authority,
51
+ address registry,
52
+ NftId parentNftId,
53
+ string memory name,
54
+ address token,
55
+ ObjectType componentType,
56
+ bool isInterceptor,
57
+ address initialOwner,
58
+ bytes memory registryData, // writeonly data that will saved in the object info record of the registry
59
+ bytes memory componentData // other component specific data
60
+ )
61
+ public
62
+ virtual
63
+ onlyInitializing()
64
+ {
65
+ initializeRegisterable(registry, parentNftId, componentType, isInterceptor, initialOwner, registryData);
66
+ __AccessManaged_init(authority);
67
+
68
+ if (token == address(0)) {
69
+ revert ErrorComponentTokenAddressZero();
70
+ }
71
+
72
+ if (bytes(name).length == 0) {
73
+ revert ErrorComponentNameLengthZero();
74
+ }
75
+
76
+ // set component state
77
+ ComponentStorage storage $ = _getComponentStorage();
78
+ $._name = name;
79
+ $._token = IERC20Metadata(token);
80
+ $._tokenHandler = TokenHandler(address(0));
81
+ $._wallet = address(this);
82
+ $._isInterceptor = isInterceptor;
83
+ $._data = componentData;
84
+
85
+ registerInterface(type(IAccessManaged).interfaceId);
86
+ registerInterface(type(IComponent).interfaceId);
87
+ }
88
+
89
+
90
+ function approveTokenHandler(Amount spendingLimitAmount)
91
+ external
92
+ virtual
93
+ onlyOwner
94
+ {
95
+ approveTokenHandler(address(getToken()), spendingLimitAmount);
96
+ }
97
+
98
+ function approveTokenHandler(address token, Amount spendingLimitAmount)
99
+ public
100
+ virtual
101
+ onlyOwner
102
+ {
103
+ if(getWallet() != address(this)) {
104
+ revert ErrorComponentWalletNotComponent();
105
+ }
106
+
107
+ IERC20Metadata(token).approve(
108
+ address(getTokenHandler()),
109
+ spendingLimitAmount.toInt());
110
+
111
+ emit LogComponentTokenHandlerApproved(address(getTokenHandler()), spendingLimitAmount);
112
+ }
113
+
114
+ function setWallet(address newWallet)
115
+ external
116
+ virtual
117
+ override
118
+ onlyOwner
119
+ {
120
+ // checks
121
+ address currentWallet = getWallet();
122
+ IERC20Metadata token = getToken();
123
+ uint256 currentBalance = token.balanceOf(currentWallet);
124
+
125
+ if (currentBalance > 0) {
126
+ if (currentWallet == address(this)) {
127
+ // move tokens from component smart contract to external wallet
128
+ } else {
129
+ // move tokens from external wallet to component smart contract or another external wallet
130
+ uint256 allowance = token.allowance(currentWallet, address(this));
131
+ if (allowance < currentBalance) {
132
+ revert ErrorComponentWalletAllowanceTooSmall(currentWallet, newWallet, allowance, currentBalance);
133
+ }
134
+ }
135
+ }
136
+
137
+ // effects
138
+ _setWallet(newWallet);
139
+
140
+ // interactions
141
+ if (currentBalance > 0) {
142
+ // transfer tokens from current wallet to new wallet
143
+ if (currentWallet == address(this)) {
144
+ // transferFrom requires self allowance too
145
+ token.approve(address(this), currentBalance);
146
+ }
147
+
148
+ SafeERC20.safeTransferFrom(token, currentWallet, newWallet, currentBalance);
149
+ emit LogComponentWalletTokensTransferred(currentWallet, newWallet, currentBalance);
150
+ }
151
+ }
152
+
153
+
154
+ /// @dev callback function for nft mints
155
+ /// may only be called by chain nft contract.
156
+ /// override internal function _nftMint to implement custom behaviour
157
+ function nftMint(address to, uint256 tokenId)
158
+ external
159
+ onlyChainNft
160
+ {
161
+ _nftMint(to, tokenId);
162
+ }
163
+
164
+ /// @dev callback function for nft transfers
165
+ /// may only be called by chain nft contract.
166
+ /// override internal function _nftTransferFrom to implement custom behaviour
167
+ function nftTransferFrom(address from, address to, uint256 tokenId)
168
+ external
169
+ onlyChainNft
170
+ {
171
+ _nftTransferFrom(from, to, tokenId);
172
+ }
173
+
174
+
175
+ function getWallet() public view virtual returns (address walletAddress) {
176
+ return getComponentInfo().wallet;
177
+ }
178
+
179
+ function getTokenHandler() public virtual view returns (TokenHandler tokenHandler) {
180
+ return getComponentInfo().tokenHandler;
181
+ }
182
+
183
+ function getToken() public view virtual returns (IERC20Metadata token) {
184
+ return getComponentInfo().token;
185
+ }
186
+
187
+ function getName() public view override returns(string memory name) {
188
+ return getComponentInfo().name;
189
+ }
190
+
191
+ function getComponentInfo() public virtual view returns (IComponents.ComponentInfo memory info) {
192
+ if (isRegistered()) {
193
+ return _getComponentInfo();
194
+ } else {
195
+ return getInitialComponentInfo();
196
+ }
197
+ }
198
+
199
+ /// @dev defines initial component specification
200
+ /// overwrite this function according to your use case
201
+ function getInitialComponentInfo() public virtual view returns (IComponents.ComponentInfo memory info) {
202
+ return _getComponentInfo();
203
+ }
204
+
205
+
206
+ function isNftInterceptor() public virtual view returns(bool isInterceptor) {
207
+ if (isRegistered()) {
208
+ return getRegistry().getObjectInfo(address(this)).isInterceptor;
209
+ } else {
210
+ return _getComponentStorage()._isInterceptor;
211
+ }
212
+ }
213
+
214
+
215
+ function isRegistered() public virtual view returns (bool) {
216
+ return getRegistry().getNftId(address(this)).gtz();
217
+ }
218
+
219
+
220
+ /// @dev internal function for nft transfers.
221
+ /// handling logic that deals with nft transfers need to overwrite this function
222
+ function _nftMint(address to, uint256 tokenId)
223
+ internal
224
+ virtual
225
+ { }
226
+
227
+ /// @dev internal function for nft transfers.
228
+ /// handling logic that deals with nft transfers need to overwrite this function
229
+ function _nftTransferFrom(address from, address to, uint256 tokenId)
230
+ internal
231
+ virtual
232
+ { }
233
+
234
+
235
+ /// @dev depending on the source of the component information this function needs to be overwritten.
236
+ /// eg for instance linked components that externally store this information with the instance store contract
237
+ function _setWallet(address newWallet) internal virtual {
238
+ ComponentStorage storage $ = _getComponentStorage();
239
+ address currentWallet = $._wallet;
240
+
241
+ if (newWallet == address(0)) {
242
+ revert ErrorComponentWalletAddressZero();
243
+ }
244
+
245
+ if (newWallet == currentWallet) {
246
+ revert ErrorComponentWalletAddressIsSameAsCurrent();
247
+ }
248
+
249
+ $._wallet = newWallet;
250
+ emit LogComponentWalletAddressChanged(currentWallet, newWallet);
251
+
252
+ }
253
+
254
+ /// @dev for component contracts that hold its own component information
255
+ /// this function creates and sets a token hanlder for the components tokens
256
+ function _createAndSetTokenHandler()
257
+ internal
258
+ {
259
+ ComponentStorage storage $ = _getComponentStorage();
260
+ $._tokenHandler = new TokenHandler(address($._token));
261
+ }
262
+
263
+ /// @dev depending on the source of the component information this function needs to be overwritten.
264
+ /// eg for instance linked components that externally store this information with the instance store contract
265
+ function _getComponentInfo() internal virtual view returns (IComponents.ComponentInfo memory info) {
266
+ ComponentStorage storage $ = _getComponentStorage();
267
+
268
+ return IComponents.ComponentInfo({
269
+ name: $._name,
270
+ productNftId: NftIdLib.zero(),
271
+ token: $._token,
272
+ tokenHandler: $._tokenHandler,
273
+ wallet: $._wallet, // initial wallet address
274
+ data: $._data // user specific component data
275
+ });
276
+ }
277
+
278
+ }