@etherisc/gif-next 0.0.2-ec436bf-674 → 0.0.2-ed1536c-164

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 (552) hide show
  1. package/README.md +71 -14
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1410 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1343 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +799 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +969 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +808 -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 +454 -554
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +356 -176
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +458 -3052
  20. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  21. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +612 -181
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +132 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +504 -322
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +524 -352
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +331 -108
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3468 -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/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +91 -2
  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 +1 -1
  39. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +71 -45
  40. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  41. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  42. package/artifacts/contracts/instance/module/{ISetup.sol/ISetup.json → IComponents.sol/IComponents.json} +2 -2
  43. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  46. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  47. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  48. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  49. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1091 -0
  50. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  51. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +723 -0
  52. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  53. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +294 -361
  54. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  55. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1148 -0
  56. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  57. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1044 -0
  58. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  59. package/artifacts/contracts/pool/Pool.sol/Pool.json +1559 -0
  60. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  61. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1411 -0
  62. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +719 -0
  64. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  65. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +820 -0
  66. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +699 -0
  68. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  69. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1264 -0
  70. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +787 -0
  72. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  73. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +231 -204
  74. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  75. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
  76. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  77. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +701 -0
  78. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  79. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +257 -288
  80. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  81. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +989 -0
  82. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  83. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → product/IProductService.sol/IProductService.json} +140 -86
  84. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  85. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1132 -0
  86. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  87. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +731 -0
  88. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  89. package/artifacts/contracts/product/PricingService.sol/PricingService.json +969 -0
  90. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +755 -0
  92. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  93. package/artifacts/contracts/product/Product.sol/Product.json +1391 -0
  94. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  95. package/artifacts/contracts/product/ProductService.sol/ProductService.json +673 -0
  96. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  97. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +675 -0
  98. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  99. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  100. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  101. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +340 -195
  102. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  103. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +434 -194
  104. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  105. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  106. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  107. package/artifacts/contracts/registry/Registry.sol/Registry.json +429 -261
  108. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  109. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +322 -0
  110. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  111. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +499 -338
  112. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +320 -140
  114. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  115. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1151 -0
  116. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
  117. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
  118. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +352 -109
  120. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  121. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  122. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  123. package/artifacts/contracts/shared/Component.sol/Component.json +890 -0
  124. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  125. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1461 -0
  126. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +765 -0
  128. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  129. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +196 -216
  130. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  131. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  132. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  133. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +625 -0
  134. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  135. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +854 -0
  136. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  137. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +699 -0
  138. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  139. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -1
  140. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  141. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  142. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
  144. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  145. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  146. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  147. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -34
  148. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  149. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +35 -0
  150. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  151. package/artifacts/contracts/shared/IService.sol/IService.json +84 -178
  152. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  153. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  154. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  155. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1030 -0
  156. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  157. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +581 -0
  158. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  159. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  160. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  161. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  162. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  163. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +109 -29
  164. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  165. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  166. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  167. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +310 -61
  168. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  169. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +126 -53
  170. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  171. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  172. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  173. package/artifacts/contracts/shared/Service.sol/Service.json +185 -165
  174. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  175. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  176. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  177. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  178. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  179. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  180. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  181. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1435 -0
  182. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.dbg.json +4 -0
  183. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → staking/IStakingManager.sol/IStakingManager.json} +10 -10
  184. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  185. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +884 -0
  186. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.dbg.json +4 -0
  187. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.json +357 -0
  188. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  189. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +402 -0
  190. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  191. package/artifacts/contracts/staking/Staking.sol/Staking.json +2002 -0
  192. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  193. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +748 -0
  194. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  195. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +368 -0
  196. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  197. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1207 -0
  198. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  199. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +698 -0
  200. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  201. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1690 -0
  202. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  203. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +494 -0
  204. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  205. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  206. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  207. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  208. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  209. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  210. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  211. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  212. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  213. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  214. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  215. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  216. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  217. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  218. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  219. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +185 -0
  220. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  221. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  222. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  223. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  224. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  225. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  226. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  227. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  228. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  229. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  230. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  231. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  232. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  233. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +174 -0
  234. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  235. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  236. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  237. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
  238. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  239. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  240. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  241. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  242. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  243. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  244. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  245. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  246. package/contracts/distribution/Distribution.sol +263 -0
  247. package/contracts/distribution/DistributionService.sol +298 -0
  248. package/contracts/distribution/DistributionServiceManager.sol +54 -0
  249. package/contracts/distribution/IDistributionComponent.sol +66 -0
  250. package/contracts/distribution/IDistributionService.sol +81 -0
  251. package/contracts/instance/BundleManager.sol +126 -0
  252. package/contracts/instance/IInstance.sol +62 -24
  253. package/contracts/instance/IInstanceService.sol +66 -13
  254. package/contracts/instance/Instance.sol +151 -366
  255. package/contracts/instance/InstanceAccessManager.sol +432 -177
  256. package/contracts/instance/InstanceAuthorizationsLib.sol +336 -0
  257. package/contracts/instance/InstanceReader.sol +143 -83
  258. package/contracts/instance/InstanceService.sol +309 -124
  259. package/contracts/instance/InstanceServiceManager.sol +12 -24
  260. package/contracts/instance/InstanceStore.sol +260 -0
  261. package/contracts/instance/base/BalanceStore.sol +118 -0
  262. package/contracts/instance/base/Cloneable.sol +51 -0
  263. package/contracts/instance/base/ObjectManager.sol +82 -0
  264. package/contracts/instance/module/IAccess.sol +37 -21
  265. package/contracts/instance/module/IBundle.sol +8 -8
  266. package/contracts/instance/module/IComponents.sol +52 -0
  267. package/contracts/instance/module/IDistribution.sol +7 -4
  268. package/contracts/instance/module/IPolicy.sol +56 -17
  269. package/contracts/instance/module/IRisk.sol +1 -1
  270. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  271. package/contracts/pool/BundleService.sol +296 -0
  272. package/contracts/pool/BundleServiceManager.sol +42 -0
  273. package/contracts/pool/IBundleService.sol +106 -0
  274. package/contracts/pool/IPoolComponent.sol +112 -0
  275. package/contracts/pool/IPoolService.sol +147 -0
  276. package/contracts/pool/Pool.sol +299 -0
  277. package/contracts/pool/PoolService.sol +424 -0
  278. package/contracts/pool/PoolServiceManager.sol +42 -0
  279. package/contracts/product/ApplicationService.sol +254 -0
  280. package/contracts/product/ApplicationServiceManager.sol +38 -0
  281. package/contracts/product/ClaimService.sol +437 -0
  282. package/contracts/product/ClaimServiceManager.sol +38 -0
  283. package/contracts/product/IApplicationService.sol +62 -0
  284. package/contracts/product/IClaimService.sol +93 -0
  285. package/contracts/product/IPolicyService.sol +78 -0
  286. package/contracts/product/IPricingService.sol +39 -0
  287. package/contracts/product/IProductComponent.sol +42 -0
  288. package/contracts/product/IProductService.sol +33 -0
  289. package/contracts/product/PolicyService.sol +473 -0
  290. package/contracts/product/PolicyServiceManager.sol +42 -0
  291. package/contracts/product/PricingService.sol +301 -0
  292. package/contracts/product/PricingServiceManager.sol +42 -0
  293. package/contracts/product/Product.sol +377 -0
  294. package/contracts/product/ProductService.sol +124 -0
  295. package/contracts/product/ProductServiceManager.sol +42 -0
  296. package/contracts/registry/ChainNft.sol +14 -0
  297. package/contracts/registry/IRegistry.sol +76 -45
  298. package/contracts/registry/IRegistryService.sol +51 -16
  299. package/contracts/registry/ITransferInterceptor.sol +1 -0
  300. package/contracts/registry/Registry.sol +358 -269
  301. package/contracts/registry/RegistryAccessManager.sol +196 -0
  302. package/contracts/registry/RegistryService.sol +126 -259
  303. package/contracts/registry/RegistryServiceManager.sol +34 -42
  304. package/contracts/registry/ReleaseManager.sol +563 -0
  305. package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
  306. package/contracts/registry/TokenRegistry.sol +300 -57
  307. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  308. package/contracts/shared/Component.sol +286 -0
  309. package/contracts/shared/ComponentService.sol +595 -0
  310. package/contracts/shared/ComponentServiceManager.sol +35 -0
  311. package/contracts/shared/ComponentVerifyingService.sol +111 -0
  312. package/contracts/shared/ERC165.sol +14 -12
  313. package/contracts/shared/IComponent.sol +74 -0
  314. package/contracts/shared/IComponentService.sol +91 -0
  315. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  316. package/contracts/{instance/base → shared}/IKeyValueStore.sol +14 -10
  317. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
  318. package/contracts/shared/INftOwnable.sol +12 -11
  319. package/contracts/shared/IPolicyHolder.sol +45 -0
  320. package/contracts/shared/IRegisterable.sol +4 -6
  321. package/contracts/shared/IRegistryLinked.sol +11 -0
  322. package/contracts/shared/IService.sol +7 -4
  323. package/contracts/shared/IVersionable.sol +5 -48
  324. package/contracts/shared/InstanceLinkedComponent.sol +145 -0
  325. package/contracts/shared/KeyValueStore.sol +130 -0
  326. package/contracts/{instance/base → shared}/Lifecycle.sol +28 -7
  327. package/contracts/shared/NftIdSetManager.sol +65 -0
  328. package/contracts/shared/NftOwnable.sol +65 -83
  329. package/contracts/shared/PolicyHolder.sol +101 -0
  330. package/contracts/shared/ProxyManager.sol +126 -25
  331. package/contracts/shared/Registerable.sol +26 -41
  332. package/contracts/shared/RegistryLinked.sol +43 -0
  333. package/contracts/shared/Service.sol +45 -23
  334. package/contracts/shared/TokenHandler.sol +37 -6
  335. package/contracts/shared/Versionable.sol +4 -92
  336. package/contracts/staking/IStaking.sol +152 -0
  337. package/contracts/staking/IStakingManager.sol +15 -0
  338. package/contracts/staking/IStakingService.sol +162 -0
  339. package/contracts/staking/IStakingStore.sol +130 -0
  340. package/contracts/staking/StakeManagerLib.sol +156 -0
  341. package/contracts/staking/Staking.sol +502 -0
  342. package/contracts/staking/StakingManager.sol +65 -0
  343. package/contracts/staking/StakingReader.sol +147 -0
  344. package/contracts/staking/StakingService.sol +375 -0
  345. package/contracts/staking/StakingServiceManager.sol +44 -0
  346. package/contracts/staking/StakingStore.sol +329 -0
  347. package/contracts/staking/TargetManagerLib.sol +179 -0
  348. package/contracts/type/Amount.sol +114 -0
  349. package/contracts/{types → type}/Blocknumber.sol +20 -2
  350. package/contracts/type/ClaimId.sol +75 -0
  351. package/contracts/{types → type}/DistributorType.sol +2 -2
  352. package/contracts/{types → type}/Fee.sol +32 -22
  353. package/contracts/{types → type}/NftId.sol +17 -11
  354. package/contracts/type/NftIdSet.sol +62 -0
  355. package/contracts/{types → type}/ObjectType.sol +26 -9
  356. package/contracts/type/PayoutId.sol +82 -0
  357. package/contracts/{types → type}/Referral.sol +4 -0
  358. package/contracts/type/RoleId.sol +143 -0
  359. package/contracts/type/Seconds.sol +71 -0
  360. package/contracts/{types → type}/StateId.sol +24 -6
  361. package/contracts/{types → type}/Timestamp.sol +18 -13
  362. package/contracts/{types → type}/UFixed.sol +1 -0
  363. package/contracts/{types → type}/Version.sol +1 -0
  364. package/package.json +3 -3
  365. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  366. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  367. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -618
  368. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  369. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  370. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  371. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  372. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  373. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  374. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  375. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  376. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  377. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -782
  378. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  379. package/artifacts/contracts/components/Product.sol/Product.json +0 -775
  380. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  381. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  382. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  383. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  384. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  385. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  386. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  387. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  388. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  389. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  390. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  391. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  392. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  393. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  394. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  395. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  396. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  397. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  398. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  399. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  400. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  401. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  402. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  403. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  404. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  405. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  406. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  407. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  408. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  409. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  410. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  411. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  412. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  413. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  414. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  415. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  416. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  417. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  418. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  419. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  420. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  421. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  422. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  423. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  424. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  425. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  426. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  427. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  428. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  429. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  430. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  431. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  432. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  433. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  434. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  435. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  436. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  437. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  438. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  439. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
  440. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  441. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -448
  442. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  443. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  444. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  445. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  446. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  447. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  448. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -855
  449. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  450. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -460
  451. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  452. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  453. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  454. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  455. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  456. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  457. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  458. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  459. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  460. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  461. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  462. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  463. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  464. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  465. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  466. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  467. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  468. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  469. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  470. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  471. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  472. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  473. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  474. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  475. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  476. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  477. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  478. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  479. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  480. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  481. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  482. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  483. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  484. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  485. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  486. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  487. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  488. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  489. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  490. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  491. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  492. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  493. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  494. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  495. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  496. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  497. package/contracts/components/BaseComponent.sol +0 -91
  498. package/contracts/components/Distribution.sol +0 -160
  499. package/contracts/components/IBaseComponent.sol +0 -25
  500. package/contracts/components/IDistributionComponent.sol +0 -44
  501. package/contracts/components/IPoolComponent.sol +0 -62
  502. package/contracts/components/IProductComponent.sol +0 -35
  503. package/contracts/components/Pool.sol +0 -243
  504. package/contracts/components/Product.sol +0 -297
  505. package/contracts/experiment/cloning/Cloner.sol +0 -47
  506. package/contracts/experiment/errors/Require.sol +0 -38
  507. package/contracts/experiment/errors/Revert.sol +0 -44
  508. package/contracts/experiment/inheritance/A.sol +0 -53
  509. package/contracts/experiment/inheritance/B.sol +0 -28
  510. package/contracts/experiment/inheritance/C.sol +0 -34
  511. package/contracts/experiment/inheritance/IA.sol +0 -13
  512. package/contracts/experiment/inheritance/IB.sol +0 -10
  513. package/contracts/experiment/inheritance/IC.sol +0 -12
  514. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  515. package/contracts/experiment/statemachine/ISM.sol +0 -25
  516. package/contracts/experiment/statemachine/SM.sol +0 -57
  517. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  518. package/contracts/experiment/types/TypeA.sol +0 -47
  519. package/contracts/experiment/types/TypeB.sol +0 -29
  520. package/contracts/instance/AccessManagedSimple.sol +0 -115
  521. package/contracts/instance/AccessManagerSimple.sol +0 -692
  522. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  523. package/contracts/instance/base/ComponentServiceBase.sol +0 -118
  524. package/contracts/instance/base/IInstanceBase.sol +0 -23
  525. package/contracts/instance/base/KeyValueStore.sol +0 -172
  526. package/contracts/instance/module/ISetup.sol +0 -44
  527. package/contracts/instance/module/ITreasury.sol +0 -23
  528. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  529. package/contracts/instance/service/DistributionService.sol +0 -87
  530. package/contracts/instance/service/DistributionServiceManager.sol +0 -53
  531. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  532. package/contracts/instance/service/IDistributionService.sol +0 -12
  533. package/contracts/instance/service/IPoolService.sol +0 -37
  534. package/contracts/instance/service/IProductService.sol +0 -107
  535. package/contracts/instance/service/PoolService.sol +0 -193
  536. package/contracts/instance/service/PoolServiceManager.sol +0 -53
  537. package/contracts/shared/ContractDeployerLib.sol +0 -72
  538. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  539. package/contracts/test/TestFee.sol +0 -25
  540. package/contracts/test/TestRegisterable.sol +0 -18
  541. package/contracts/test/TestRoleId.sol +0 -14
  542. package/contracts/test/TestService.sol +0 -24
  543. package/contracts/test/TestToken.sol +0 -26
  544. package/contracts/test/TestVersion.sol +0 -44
  545. package/contracts/test/TestVersionable.sol +0 -17
  546. package/contracts/types/ChainId.sol +0 -38
  547. package/contracts/types/NftIdSet.sol +0 -60
  548. package/contracts/types/NumberId.sol +0 -52
  549. package/contracts/types/RoleId.sol +0 -89
  550. /package/contracts/{types → type}/AddressSet.sol +0 -0
  551. /package/contracts/{types → type}/Key32.sol +0 -0
  552. /package/contracts/{types → type}/RiskId.sol +0 -0
@@ -0,0 +1,145 @@
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 {Component} from "./Component.sol";
10
+ import {IComponentService} from "./IComponentService.sol";
11
+ import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
12
+ import {IComponents} from "../instance/module/IComponents.sol";
13
+ import {IInstanceService} from "../instance/IInstanceService.sol";
14
+ import {IInstance} from "../instance/IInstance.sol";
15
+ import {InstanceAccessManager} from "../instance/InstanceAccessManager.sol";
16
+ import {InstanceReader} from "../instance/InstanceReader.sol";
17
+ import {IRegistry} from "../registry/IRegistry.sol";
18
+ import {NftId} from "../type/NftId.sol";
19
+ import {ObjectType, COMPONENT, INSTANCE} from "../type/ObjectType.sol";
20
+ import {VersionPart} from "../type/Version.sol";
21
+ import {Registerable} from "../shared/Registerable.sol";
22
+ import {RoleId, RoleIdLib} from "../type/RoleId.sol";
23
+ import {IAccess} from "../instance/module/IAccess.sol";
24
+ import {TokenHandler} from "../shared/TokenHandler.sol";
25
+ import {VersionPart} from "../type/Version.sol";
26
+
27
+ // then add (Distribution|Pool|Product)Upradeable that also intherit from Versionable
28
+ // same pattern as for Service which is also upgradeable
29
+ abstract contract InstanceLinkedComponent is
30
+ Component,
31
+ IInstanceLinkedComponent
32
+ {
33
+ // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Component.sol")) - 1)) & ~bytes32(uint256(0xff));
34
+ bytes32 public constant INSTANCE_LINKED_COMPONENT_LOCATION_V1 = 0xffe3d4462bded26a47154f4b8f6db494d2f772496965791d25bd456e342b7f00;
35
+
36
+ struct InstanceLinkedComponentStorage {
37
+ IInstance _instance; // instance for this component
38
+ InstanceReader _instanceReader; // instance reader for this component
39
+ }
40
+
41
+ function _getInstanceLinkedComponentStorage() private pure returns (InstanceLinkedComponentStorage storage $) {
42
+ assembly {
43
+ $.slot := INSTANCE_LINKED_COMPONENT_LOCATION_V1
44
+ }
45
+ }
46
+
47
+ function initializeInstanceLinkedComponent(
48
+ address registry,
49
+ NftId instanceNftId,
50
+ string memory name,
51
+ address token,
52
+ ObjectType componentType,
53
+ bool isInterceptor,
54
+ address initialOwner,
55
+ bytes memory registryData, // writeonly data that will saved in the object info record of the registry
56
+ bytes memory componentData // data that will saved with the component info in the instance store
57
+ )
58
+ public
59
+ virtual
60
+ onlyInitializing()
61
+ {
62
+ // set and check linked instance
63
+ InstanceLinkedComponentStorage storage $ = _getInstanceLinkedComponentStorage();
64
+ $._instance = IInstance(
65
+ IRegistry(registry).getObjectInfo(
66
+ instanceNftId).objectAddress);
67
+
68
+ if(!$._instance.supportsInterface(type(IInstance).interfaceId)) {
69
+ revert ErrorComponentNotInstance(instanceNftId);
70
+ }
71
+
72
+ initializeComponent(
73
+ $._instance.authority(),
74
+ registry,
75
+ instanceNftId,
76
+ name,
77
+ token,
78
+ componentType,
79
+ isInterceptor,
80
+ initialOwner,
81
+ registryData,
82
+ componentData);
83
+
84
+ // set component state
85
+ $._instanceReader = $._instance.getInstanceReader();
86
+
87
+ registerInterface(type(IAccessManaged).interfaceId);
88
+ registerInterface(type(IInstanceLinkedComponent).interfaceId);
89
+ }
90
+
91
+ /// @dev for instance linked components the wallet address stored in the instance store.
92
+ /// updating needs to go throug component service
93
+ function _setWallet(address newWallet) internal virtual override onlyOwner {
94
+ IComponentService(_getServiceAddress(COMPONENT())).setWallet(newWallet);
95
+ }
96
+
97
+ function lock() external onlyOwner {
98
+ IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(true);
99
+ }
100
+
101
+ function unlock() external onlyOwner {
102
+ IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(false);
103
+ }
104
+
105
+ function getInstance() public view override returns (IInstance instance) {
106
+ return _getInstanceLinkedComponentStorage()._instance;
107
+ }
108
+
109
+ function getProductNftId() public view override returns (NftId productNftId) {
110
+ return getComponentInfo().productNftId;
111
+ }
112
+
113
+
114
+ function _getComponentInfo() internal virtual override view returns (IComponents.ComponentInfo memory info) {
115
+ NftId componentNftId = getRegistry().getNftId(address(this));
116
+
117
+ // if registered, attempt to return component info via instance reader
118
+ if (componentNftId.gtz()) {
119
+ // component registerd with registry
120
+ info = _getInstanceReader().getComponentInfo(getNftId());
121
+
122
+ // check if also registered with instance
123
+ if (info.wallet != address(0)) {
124
+ return info;
125
+ }
126
+ }
127
+
128
+ // return data from component contract if not yet registered
129
+ return super._getComponentInfo();
130
+ }
131
+
132
+
133
+ /// @dev returns reader for linked instance
134
+ function _getInstanceReader() internal view returns (InstanceReader reader) {
135
+ return _getInstanceLinkedComponentStorage()._instanceReader;
136
+ }
137
+
138
+
139
+ /// @dev returns the service address for the specified domain
140
+ /// gets address via lookup from registry using the major version form the linked instance
141
+ function _getServiceAddress(ObjectType domain) internal view returns (address service) {
142
+ VersionPart majorVersion = _getInstanceLinkedComponentStorage()._instance.getMajorVersion();
143
+ return getRegistry().getServiceAddress(domain, majorVersion);
144
+ }
145
+ }
@@ -0,0 +1,130 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Blocknumber, blockBlocknumber, zeroBlocknumber} from "../type/Blocknumber.sol";
5
+ import {Key32, KeyId, Key32Lib} from "../type/Key32.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
8
+ import {StateId, ACTIVE, KEEP_STATE} from "../type/StateId.sol";
9
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
10
+
11
+ import {Lifecycle} from "./Lifecycle.sol";
12
+ import {IKeyValueStore} from "./IKeyValueStore.sol";
13
+
14
+ contract KeyValueStore is
15
+ Lifecycle,
16
+ IKeyValueStore
17
+ {
18
+
19
+ mapping(Key32 key32 => Value value) private _value;
20
+
21
+ function _create(
22
+ Key32 key32,
23
+ bytes memory data
24
+ )
25
+ internal
26
+ {
27
+ ObjectType objectType = key32.toObjectType();
28
+ if (objectType.eqz()) {
29
+ revert ErrorKeyValueStoreTypeUndefined(objectType);
30
+ }
31
+
32
+ Metadata storage metadata = _value[key32].metadata;
33
+ if (metadata.state.gtz()) {
34
+ revert ErrorKeyValueStoreAlreadyCreated(key32, objectType);
35
+ }
36
+
37
+ address createdBy = msg.sender;
38
+ Blocknumber blocknumber = blockBlocknumber();
39
+ StateId initialState = hasLifecycle(objectType) ? getInitialState(objectType) : ACTIVE();
40
+
41
+ // set metadata
42
+ metadata.objectType = objectType;
43
+ metadata.state = initialState;
44
+ metadata.updatedBy = createdBy;
45
+ metadata.updatedIn = blocknumber;
46
+ metadata.createdIn = blocknumber;
47
+
48
+ // set data
49
+ _value[key32].data = data;
50
+
51
+ // solhint-disable-next-line avoid-tx-origin
52
+ emit LogInfoCreated(key32.toObjectType(), key32.toKeyId(), initialState, createdBy, tx.origin);
53
+ }
54
+
55
+
56
+ function _update(
57
+ Key32 key32,
58
+ bytes memory data,
59
+ StateId state
60
+ )
61
+ internal
62
+ {
63
+ // update state
64
+ Blocknumber lastUpdatedIn = _updateState(key32, state);
65
+
66
+ // update data
67
+ _value[key32].data = data;
68
+
69
+ // solhint-disable-next-line avoid-tx-origin
70
+ emit LogInfoUpdated(key32.toObjectType(), key32.toKeyId(), state, msg.sender, tx.origin, lastUpdatedIn);
71
+ }
72
+
73
+
74
+ function _updateState(
75
+ Key32 key32,
76
+ StateId state
77
+ )
78
+ internal
79
+ returns (Blocknumber lastUpdatedIn)
80
+ {
81
+ if (state.eqz()) {
82
+ revert ErrorKeyValueStoreStateZero(key32);
83
+ }
84
+
85
+ Metadata storage metadata = _value[key32].metadata;
86
+ StateId stateOld = metadata.state;
87
+ lastUpdatedIn = metadata.updatedIn;
88
+
89
+ if (stateOld.eqz()) {
90
+ revert ErrorKeyValueStoreNotExisting(key32);
91
+ }
92
+
93
+ // update state
94
+ if(state != KEEP_STATE()) {
95
+ checkTransition(metadata.objectType, stateOld, state);
96
+ metadata.state = state;
97
+
98
+ // solhint-disable-next-line avoid-tx-origin
99
+ emit LogStateUpdated(key32.toObjectType(), key32.toKeyId(), stateOld, state, msg.sender, tx.origin, lastUpdatedIn);
100
+ }
101
+
102
+ // update metadata
103
+ metadata.updatedBy = msg.sender;
104
+ metadata.updatedIn = blockBlocknumber();
105
+ }
106
+
107
+ function exists(Key32 key32) public view returns (bool) {
108
+ return _value[key32].metadata.state.gtz();
109
+ }
110
+
111
+ function get(Key32 key32) public view returns (Value memory value) {
112
+ return _value[key32];
113
+ }
114
+
115
+ function getMetadata(Key32 key32) public view returns (Metadata memory metadata) {
116
+ return _value[key32].metadata;
117
+ }
118
+
119
+ function getData(Key32 key32) public view returns (bytes memory data) {
120
+ return _value[key32].data;
121
+ }
122
+
123
+ function getState(Key32 key32) public view returns (StateId state) {
124
+ return _value[key32].metadata.state;
125
+ }
126
+
127
+ function toKey32(ObjectType objectType, KeyId id) external pure override returns(Key32) {
128
+ return Key32Lib.toKey32(objectType, id);
129
+ }
130
+ }
@@ -1,22 +1,31 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {NftId} from "../../types/NftId.sol";
5
- import {ObjectType, COMPONENT, BUNDLE, POLICY, RISK} from "../../types/ObjectType.sol";
6
- import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, UNDERWRITTEN, REVOKED, DECLINED} from "../../types/StateId.sol";
4
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
+
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType, COMPONENT, BUNDLE, POLICY, RISK, CLAIM, PAYOUT} from "../type/ObjectType.sol";
8
+ import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, COLLATERALIZED, REVOKED, SUBMITTED, CONFIRMED, DECLINED, EXPECTED, PAID} from "../type/StateId.sol";
7
9
  import {ILifecycle} from "./ILifecycle.sol";
8
10
 
9
- contract Lifecycle is ILifecycle {
11
+ contract Lifecycle is
12
+ Initializable,
13
+ ILifecycle
14
+ {
10
15
  mapping(ObjectType objectType => StateId initialState)
11
16
  private _initialState;
12
17
 
13
18
  mapping(ObjectType objectType => mapping(StateId stateFrom => mapping(StateId stateTo => bool isValid)))
14
19
  private _isValidTransition;
15
20
 
16
- constructor() {
21
+ function initializeLifecycle()
22
+ public
23
+ onlyInitializing
24
+ {
17
25
  _setupBundleLifecycle();
18
26
  _setupComponentLifecycle();
19
27
  _setupPolicyLifecycle();
28
+ _setupClaimAndPayoutLifecycle();
20
29
  _setupRiskLifecycle();
21
30
  }
22
31
 
@@ -78,6 +87,7 @@ contract Lifecycle is ILifecycle {
78
87
  function _setupBundleLifecycle() internal {
79
88
  _initialState[BUNDLE()] = ACTIVE();
80
89
  _isValidTransition[BUNDLE()][ACTIVE()][PAUSED()] = true;
90
+ _isValidTransition[BUNDLE()][ACTIVE()][CLOSED()] = true;
81
91
  _isValidTransition[BUNDLE()][PAUSED()][ACTIVE()] = true;
82
92
  _isValidTransition[BUNDLE()][PAUSED()][CLOSED()] = true;
83
93
  }
@@ -86,11 +96,22 @@ contract Lifecycle is ILifecycle {
86
96
  _initialState[POLICY()] = APPLIED();
87
97
  _isValidTransition[POLICY()][APPLIED()][REVOKED()] = true;
88
98
  _isValidTransition[POLICY()][APPLIED()][DECLINED()] = true;
89
- _isValidTransition[POLICY()][APPLIED()][UNDERWRITTEN()] = true;
90
- _isValidTransition[POLICY()][UNDERWRITTEN()][ACTIVE()] = true;
99
+ _isValidTransition[POLICY()][APPLIED()][COLLATERALIZED()] = true;
100
+ _isValidTransition[POLICY()][APPLIED()][ACTIVE()] = true;
101
+ _isValidTransition[POLICY()][COLLATERALIZED()][ACTIVE()] = true;
91
102
  _isValidTransition[POLICY()][ACTIVE()][CLOSED()] = true;
92
103
  }
93
104
 
105
+ function _setupClaimAndPayoutLifecycle() internal {
106
+ _initialState[CLAIM()] = SUBMITTED();
107
+ _isValidTransition[CLAIM()][SUBMITTED()][CONFIRMED()] = true;
108
+ _isValidTransition[CLAIM()][SUBMITTED()][DECLINED()] = true;
109
+ _isValidTransition[CLAIM()][CONFIRMED()][CLOSED()] = true;
110
+
111
+ _initialState[PAYOUT()] = EXPECTED();
112
+ _isValidTransition[PAYOUT()][EXPECTED()][PAID()] = true;
113
+ }
114
+
94
115
  function _setupRiskLifecycle() internal {
95
116
  _initialState[RISK()] = ACTIVE();
96
117
  _isValidTransition[RISK()][ACTIVE()][PAUSED()] = true;
@@ -0,0 +1,65 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {LibNftIdSet} from "../type/NftIdSet.sol";
5
+ import {NftId} from "../type/NftId.sol";
6
+
7
+ contract NftIdSetManager {
8
+
9
+ error ErrorNftIdSetManagerNotOwner(address owner, address sender);
10
+ error ErrorNftIdSetManagerOwnerAlreadySet(address owner);
11
+ error ErrorNftIdSetManagerNftIdInvalid(NftId objectNftId);
12
+ error ErrorNftIdSetManagerAlreadyAdded(NftId objectNftId);
13
+
14
+ LibNftIdSet.Set private _allObjects;
15
+ LibNftIdSet.Set private _activeObjects;
16
+ address private _owner;
17
+
18
+ modifier onlyOwner() {
19
+ if(msg.sender != _owner) {
20
+ revert ErrorNftIdSetManagerNotOwner(_owner, msg.sender);
21
+ }
22
+ _;
23
+ }
24
+
25
+ constructor() {
26
+ _owner = msg.sender;
27
+ }
28
+
29
+ function add(NftId objectNftId) external onlyOwner {
30
+ LibNftIdSet.add(_allObjects, objectNftId);
31
+ LibNftIdSet.add(_activeObjects, objectNftId);
32
+ }
33
+
34
+ function activate(NftId componentNftId, NftId objectNftId) external onlyOwner {
35
+ LibNftIdSet.add(_activeObjects, objectNftId);
36
+ }
37
+
38
+ function deactivate(NftId componentNftId, NftId objectNftId) external onlyOwner {
39
+ LibNftIdSet.remove(_activeObjects, objectNftId);
40
+ }
41
+
42
+ function nftIds() external view returns (uint256 ids) {
43
+ return LibNftIdSet.size(_allObjects);
44
+ }
45
+
46
+ function getNftId(uint256 idx) external view returns (NftId) {
47
+ return LibNftIdSet.getElementAt(_allObjects, idx);
48
+ }
49
+
50
+ function exists(NftId objectNftId) external view returns (bool) {
51
+ return LibNftIdSet.contains(_allObjects, objectNftId);
52
+ }
53
+
54
+ function activeNftIds() external view returns (uint256 ids) {
55
+ return LibNftIdSet.size(_activeObjects);
56
+ }
57
+
58
+ function getActiveNftId(uint256 idx) external view returns (NftId) {
59
+ return LibNftIdSet.getElementAt(_activeObjects, idx);
60
+ }
61
+
62
+ function isActive(NftId objectNftId) external view returns (bool) {
63
+ return LibNftIdSet.contains(_activeObjects, objectNftId);
64
+ }
65
+ }
@@ -1,136 +1,118 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {ERC165} from "./ERC165.sol";
4
5
  import {INftOwnable} from "./INftOwnable.sol";
5
- import {IRegistry} from "../registry/IRegistry.sol";
6
- import {NftId, zeroNftId} from "../types/NftId.sol";
7
-
8
- contract NftOwnable is INftOwnable {
9
-
10
- IRegistry internal _registry;
11
- NftId private _nftId;
12
- address private _initialOwner;
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {RegistryLinked} from "./RegistryLinked.sol";
8
+
9
+ contract NftOwnable is
10
+ ERC165,
11
+ RegistryLinked,
12
+ INftOwnable
13
+ {
14
+ // keccak256(abi.encode(uint256(keccak256("etherisc.storage.NftOwnable")) - 1)) & ~bytes32(uint256(0xff));
15
+ bytes32 public constant NFT_OWNABLE_STORAGE_LOCATION_V1 = 0x07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00;
16
+
17
+ struct NftOwnableStorage {
18
+ NftId _nftId;
19
+ address _initialOwner;
20
+ }
13
21
 
14
22
  /// @dev enforces msg.sender is owner of nft (or initial owner of nft ownable)
15
23
  modifier onlyOwner() {
16
- address owner = getOwner();
17
-
18
- // owner == address(0) is eg uninitialized upgradable contract
19
- if (owner != address(0) && msg.sender != owner) {
20
- revert ErrorNotOwner(msg.sender);
24
+ if (msg.sender != getOwner()) {
25
+ revert ErrorNftOwnableNotOwner(msg.sender);
21
26
  }
22
27
  _;
23
28
  }
24
29
 
25
- constructor() {
26
- _initialOwner = msg.sender;
30
+
31
+ /// @dev initialization for upgradable contracts
32
+ // used in _initializeRegisterable
33
+ function initializeNftOwnable(
34
+ address initialOwner,
35
+ address registryAddress
36
+ )
37
+ public
38
+ virtual
39
+ onlyInitializing()
40
+ {
41
+ initializeRegistryLinked(registryAddress);
42
+ initializeERC165();
43
+
44
+ if(initialOwner == address(0)) {
45
+ revert ErrorNftOwnableInitialOwnerZero();
46
+ }
47
+
48
+ _getNftOwnableStorage()._initialOwner = initialOwner;
27
49
  }
28
50
 
51
+
29
52
  /// @dev links this contract to nft after registration
30
53
  // needs to be done once per registered contract and
31
54
  // reduces registry calls to check ownership
32
55
  // does not need any protection as function can only do the "right thing"
33
- function linkToRegisteredNftId() public {
34
- if (_nftId.gtz()) {
35
- revert ErrorAlreadyLinked(address(_registry), _nftId);
36
- }
56
+ function linkToRegisteredNftId()
57
+ public
58
+ virtual
59
+ {
60
+ NftOwnableStorage storage $ = _getNftOwnableStorage();
37
61
 
38
- if (address(_registry) == address(0)) {
39
- revert ErrorRegistryNotInitialized();
62
+ if ($._nftId.gtz()) {
63
+ revert ErrorNftOwnableAlreadyLinked($._nftId);
40
64
  }
41
65
 
42
66
  address contractAddress = address(this);
43
67
 
44
- if (!_registry.isRegistered(contractAddress)) {
45
- revert ErrorContractNotRegistered(contractAddress);
68
+ if (!getRegistry().isRegistered(contractAddress)) {
69
+ revert ErrorNftOwnableContractNotRegistered(contractAddress);
46
70
  }
47
71
 
48
- _nftId = _registry.getNftId(contractAddress);
49
- }
50
-
51
-
52
- function getRegistry() public view virtual override returns (IRegistry) {
53
- return _registry;
72
+ $._nftId = getRegistry().getNftId(contractAddress);
54
73
  }
55
74
 
56
-
57
75
  function getNftId() public view virtual override returns (NftId) {
58
- return _nftId;
76
+ return _getNftOwnableStorage()._nftId;
59
77
  }
60
78
 
61
-
62
79
  function getOwner() public view virtual override returns (address) {
63
- if (_nftId.gtz()) {
64
- return _registry.ownerOf(_nftId);
65
- }
66
-
67
- return _initialOwner;
68
- }
80
+ NftOwnableStorage storage $ = _getNftOwnableStorage();
69
81
 
82
+ if ($._nftId.gtz()) {
83
+ return getRegistry().ownerOf($._nftId);
84
+ }
70
85
 
71
- /// @dev initialization for upgradable contracts
72
- // used in _initializeRegisterable
73
- function _initializeNftOwnable(
74
- address initialOwner,
75
- address registryAddress
76
- )
77
- internal
78
- virtual
79
- {
80
- _initialOwner = initialOwner;
81
- _setRegistry(registryAddress);
86
+ return $._initialOwner;
82
87
  }
83
88
 
84
-
85
89
  /// @dev used in constructor of registry service manager
86
90
  // links ownership of registry service manager ot nft owner of registry service
87
91
  function _linkToNftOwnable(
88
- address registryAddress,
89
92
  address nftOwnableAddress
90
93
  )
91
94
  internal
92
- onlyOwner()
93
95
  returns (NftId)
94
96
  {
95
- if (_nftId.gtz()) {
96
- revert ErrorAlreadyLinked(address(_registry), _nftId);
97
- }
98
-
99
- _setRegistry(registryAddress);
97
+ NftOwnableStorage storage $ = _getNftOwnableStorage();
100
98
 
101
- if (!_registry.isRegistered(nftOwnableAddress)) {
102
- revert ErrorContractNotRegistered(nftOwnableAddress);
99
+ if ($._nftId.gtz()) {
100
+ revert ErrorNftOwnableAlreadyLinked($._nftId);
103
101
  }
104
102
 
105
- _nftId = _registry.getNftId(nftOwnableAddress);
106
-
107
- return _nftId;
108
- }
109
-
110
-
111
- function _setRegistry(address registryAddress)
112
- private
113
- {
114
- if (address(_registry) != address(0)) {
115
- revert ErrorRegistryAlreadyInitialized(address(_registry));
103
+ if (!getRegistry().isRegistered(nftOwnableAddress)) {
104
+ revert ErrorNftOwnableContractNotRegistered(nftOwnableAddress);
116
105
  }
117
106
 
118
- if (registryAddress == address(0)) {
119
- revert ErrorRegistryAddressZero();
120
- }
107
+ $._nftId = getRegistry().getNftId(nftOwnableAddress);
121
108
 
122
- if (registryAddress.code.length == 0) {
123
- revert ErrorNotRegistry(registryAddress);
124
- }
109
+ return $._nftId;
110
+ }
125
111
 
126
- _registry = IRegistry(registryAddress);
127
112
 
128
- try _registry.supportsInterface(type(IRegistry).interfaceId) returns (bool isRegistry) {
129
- if (!isRegistry) {
130
- revert ErrorNotRegistry(registryAddress);
131
- }
132
- } catch {
133
- revert ErrorNotRegistry(registryAddress);
113
+ function _getNftOwnableStorage() private pure returns (NftOwnableStorage storage $) {
114
+ assembly {
115
+ $.slot := NFT_OWNABLE_STORAGE_LOCATION_V1
134
116
  }
135
117
  }
136
118
  }