@etherisc/gif-next 0.0.2-676522f-203 → 0.0.2-683d8b2-607

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 (475) hide show
  1. package/README.md +30 -2
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1505 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +29 -254
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +138 -93
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +66 -58
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +75 -150
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +45 -16
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +64 -84
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +152 -45
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +78 -146
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1214 -280
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +230 -65
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +221 -106
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +53 -49
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +260 -137
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  59. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  72. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  73. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  74. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  75. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  76. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  77. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  78. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  79. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  80. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  81. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  82. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  83. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  84. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1063 -0
  86. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  88. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  90. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  91. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -0
  92. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  93. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  94. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  95. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +95 -58
  96. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  97. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +54 -42
  98. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  99. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +13 -0
  100. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  101. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +11 -206
  102. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  103. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +28 -0
  104. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  105. package/artifacts/contracts/pool/Pool.sol/Pool.json +18 -314
  106. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  107. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +77 -41
  108. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +43 -39
  110. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  111. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +72 -35
  112. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +48 -36
  114. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  115. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -0
  116. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  117. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  118. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  119. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +112 -67
  120. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +68 -52
  122. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  123. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +13 -0
  124. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  125. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +13 -0
  126. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  127. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +13 -0
  128. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  129. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +13 -0
  130. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  131. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +17 -46
  132. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  133. package/artifacts/contracts/product/IProductService.sol/IProductService.json +13 -0
  134. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  135. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +90 -45
  136. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  137. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +57 -41
  138. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  139. package/artifacts/contracts/product/PricingService.sol/PricingService.json +98 -61
  140. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  141. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +61 -49
  142. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  143. package/artifacts/contracts/product/Product.sol/Product.json +24 -164
  144. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  145. package/artifacts/contracts/product/ProductService.sol/ProductService.json +54 -25
  146. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +39 -31
  148. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  149. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +40 -16
  150. package/artifacts/contracts/registry/GlobalRegistry.sol/GlobalRegistry.dbg.json +4 -0
  151. package/artifacts/contracts/registry/GlobalRegistry.sol/GlobalRegistry.json +1487 -0
  152. package/artifacts/contracts/registry/GlobalRegistryAdmin.sol/GlobalRegistryAdmin.dbg.json +4 -0
  153. package/artifacts/contracts/registry/GlobalRegistryAdmin.sol/GlobalRegistryAdmin.json +1876 -0
  154. package/artifacts/contracts/registry/IGlobalRegistry.sol/IGlobalRegistry.dbg.json +4 -0
  155. package/artifacts/contracts/registry/IGlobalRegistry.sol/IGlobalRegistry.json +974 -0
  156. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +40 -60
  158. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  159. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +13 -183
  160. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  161. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  162. package/artifacts/contracts/registry/Registry.sol/Registry.json +182 -88
  163. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  164. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1599 -153
  165. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  166. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +50 -13
  167. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  168. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +38 -26
  169. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  170. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  171. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  172. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1140 -0
  173. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  174. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  175. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  176. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +22 -4
  177. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  178. package/artifacts/contracts/shared/Component.sol/Component.json +11 -11
  179. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  180. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +89 -77
  181. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  182. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +53 -57
  183. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  184. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +13 -0
  185. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  186. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  187. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  188. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +4 -4
  189. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  190. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +20 -0
  191. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  192. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +17 -4
  193. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  194. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -15
  195. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  196. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  197. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  200. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IService.sol/IService.json +13 -0
  203. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  204. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  205. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +24 -64
  206. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  207. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -99
  208. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  209. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  210. package/artifacts/contracts/shared/MainnetContract.sol/MainnetContract.dbg.json +4 -0
  211. package/artifacts/contracts/shared/MainnetContract.sol/MainnetContract.json +34 -0
  212. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  213. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  214. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
  216. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  217. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  218. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
  220. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  221. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  222. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Service.sol/Service.json +13 -0
  224. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
  226. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  227. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +114 -117
  228. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  229. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +215 -70
  230. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  231. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +102 -44
  232. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  233. package/artifacts/contracts/staking/Staking.sol/Staking.json +179 -182
  234. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  236. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  237. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +44 -44
  238. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  239. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +223 -21
  240. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  241. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +264 -134
  242. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  243. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +42 -46
  244. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  245. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +771 -216
  246. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  247. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +95 -18
  248. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  249. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  250. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  251. package/artifacts/contracts/type/Amount.sol/AmountLib.json +68 -4
  252. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  253. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  254. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  255. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  256. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  257. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  258. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/Fee.sol/FeeLib.json +12 -12
  260. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  261. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  262. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +28 -4
  264. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  265. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  266. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +149 -2
  268. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  270. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  272. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  274. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  276. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
  278. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  280. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  282. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  284. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  286. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  288. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +17 -4
  290. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  292. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +21 -2
  294. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  296. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  298. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  299. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  300. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  301. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  302. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  303. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  304. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  305. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  306. package/contracts/authorization/AccessAdmin.sol +590 -0
  307. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  308. package/contracts/authorization/Authorization.sol +218 -0
  309. package/contracts/authorization/IAccess.sol +48 -0
  310. package/contracts/authorization/IAccessAdmin.sol +136 -0
  311. package/contracts/authorization/IAuthorization.sol +54 -0
  312. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  313. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  314. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  315. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  316. package/contracts/distribution/BasicDistribution.sol +149 -0
  317. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  318. package/contracts/distribution/Distribution.sol +126 -104
  319. package/contracts/distribution/DistributionService.sol +15 -25
  320. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  321. package/contracts/distribution/IDistributionComponent.sol +17 -35
  322. package/contracts/distribution/IDistributionService.sol +5 -1
  323. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  324. package/contracts/instance/IInstance.sol +20 -13
  325. package/contracts/instance/IInstanceService.sol +34 -23
  326. package/contracts/instance/Instance.sol +108 -89
  327. package/contracts/instance/InstanceAdmin.sol +202 -266
  328. package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
  329. package/contracts/instance/InstanceReader.sol +52 -12
  330. package/contracts/instance/InstanceService.sol +159 -78
  331. package/contracts/instance/InstanceServiceManager.sol +2 -6
  332. package/contracts/instance/InstanceStore.sol +38 -22
  333. package/contracts/instance/base/BalanceStore.sol +11 -6
  334. package/contracts/instance/base/Cloneable.sol +2 -25
  335. package/contracts/instance/base/ObjectCounter.sol +21 -0
  336. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  337. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -14
  338. package/contracts/oracle/BasicOracle.sol +48 -0
  339. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  340. package/contracts/oracle/IOracle.sol +36 -0
  341. package/contracts/oracle/IOracleComponent.sol +32 -0
  342. package/contracts/oracle/IOracleService.sol +65 -0
  343. package/contracts/oracle/Oracle.sol +157 -0
  344. package/contracts/oracle/OracleService.sol +278 -0
  345. package/contracts/oracle/OracleServiceManager.sol +39 -0
  346. package/contracts/pool/BasicPool.sol +164 -0
  347. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  348. package/contracts/pool/BundleService.sol +32 -44
  349. package/contracts/pool/BundleServiceManager.sol +2 -5
  350. package/contracts/pool/IPoolComponent.sol +0 -60
  351. package/contracts/pool/IPoolService.sol +3 -0
  352. package/contracts/pool/Pool.sol +143 -131
  353. package/contracts/pool/PoolService.sol +45 -33
  354. package/contracts/pool/PoolServiceManager.sol +2 -5
  355. package/contracts/product/ApplicationService.sol +17 -41
  356. package/contracts/product/ApplicationServiceManager.sol +2 -2
  357. package/contracts/product/BasicProduct.sol +82 -0
  358. package/contracts/product/BasicProductAuthorization.sol +40 -0
  359. package/contracts/product/ClaimService.sol +16 -37
  360. package/contracts/product/ClaimServiceManager.sol +2 -2
  361. package/contracts/product/IClaimService.sol +6 -0
  362. package/contracts/product/IProductComponent.sol +6 -9
  363. package/contracts/product/PolicyService.sol +8 -6
  364. package/contracts/product/PolicyServiceManager.sol +2 -5
  365. package/contracts/product/PricingService.sol +7 -8
  366. package/contracts/product/PricingServiceManager.sol +2 -5
  367. package/contracts/product/Product.sol +103 -88
  368. package/contracts/product/ProductService.sol +12 -37
  369. package/contracts/product/ProductServiceManager.sol +2 -5
  370. package/contracts/registry/ChainNft.sol +37 -22
  371. package/contracts/registry/GlobalRegistry.sol +89 -0
  372. package/contracts/registry/GlobalRegistryAdmin.sol +38 -0
  373. package/contracts/registry/IGlobalRegistry.sol +17 -0
  374. package/contracts/registry/IRegistry.sol +25 -18
  375. package/contracts/registry/IRegistryService.sol +6 -6
  376. package/contracts/registry/Registry.sol +129 -150
  377. package/contracts/registry/RegistryAdmin.sol +358 -150
  378. package/contracts/registry/RegistryService.sol +9 -23
  379. package/contracts/registry/RegistryServiceManager.sol +2 -7
  380. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  381. package/contracts/registry/ReleaseRegistry.sol +533 -0
  382. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  383. package/contracts/registry/TokenRegistry.sol +9 -52
  384. package/contracts/shared/Component.sol +8 -13
  385. package/contracts/shared/ComponentService.sol +45 -60
  386. package/contracts/shared/ComponentServiceManager.sol +2 -2
  387. package/contracts/shared/ComponentVerifyingService.sol +13 -7
  388. package/contracts/shared/IComponent.sol +3 -7
  389. package/contracts/shared/IComponentService.sol +11 -0
  390. package/contracts/shared/IInstanceLinkedComponent.sol +4 -0
  391. package/contracts/shared/IKeyValueStore.sol +2 -1
  392. package/contracts/shared/ILifecycle.sol +1 -2
  393. package/contracts/shared/IService.sol +8 -1
  394. package/contracts/shared/InstanceLinkedComponent.sol +26 -19
  395. package/contracts/shared/KeyValueStore.sol +7 -6
  396. package/contracts/shared/Lifecycle.sol +16 -60
  397. package/contracts/shared/MainnetContract.sol +15 -0
  398. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  399. package/contracts/shared/Service.sol +27 -22
  400. package/contracts/staking/IStaking.sol +41 -26
  401. package/contracts/staking/IStakingService.sol +42 -44
  402. package/contracts/staking/StakeManagerLib.sol +101 -26
  403. package/contracts/staking/Staking.sol +139 -125
  404. package/contracts/staking/StakingLifecycle.sol +23 -0
  405. package/contracts/staking/StakingManager.sol +2 -6
  406. package/contracts/staking/StakingReader.sol +73 -36
  407. package/contracts/staking/StakingService.sol +121 -86
  408. package/contracts/staking/StakingServiceManager.sol +2 -3
  409. package/contracts/staking/StakingStore.sol +401 -127
  410. package/contracts/staking/TargetManagerLib.sol +28 -0
  411. package/contracts/type/Amount.sol +15 -1
  412. package/contracts/type/NftId.sol +8 -8
  413. package/contracts/type/ObjectType.sol +171 -69
  414. package/contracts/type/RequestId.sol +75 -0
  415. package/contracts/type/RoleId.sol +103 -72
  416. package/contracts/type/Seconds.sol +10 -0
  417. package/contracts/type/Selector.sol +102 -0
  418. package/contracts/type/StateId.sol +12 -0
  419. package/contracts/type/String.sol +53 -0
  420. package/contracts/type/Timestamp.sol +6 -2
  421. package/contracts/type/UFixed.sol +6 -0
  422. package/contracts/type/Version.sol +3 -1
  423. package/contracts/{shared → upgradeability}/ProxyManager.sol +4 -5
  424. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  425. package/package.json +8 -5
  426. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  427. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  428. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  429. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -204
  430. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  431. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  432. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  433. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1292
  434. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  435. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  436. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  437. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  438. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  439. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1715
  440. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  441. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1728
  442. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  443. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1806
  444. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  445. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1824
  446. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  447. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  448. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  449. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  450. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  451. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  452. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  453. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  454. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  455. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  456. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  457. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  458. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.dbg.json +0 -4
  459. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.json +0 -37
  460. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.dbg.json +0 -4
  461. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.json +0 -357
  462. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -349
  463. package/contracts/registry/ReleaseManager.sol +0 -596
  464. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
  465. package/contracts/shared/AccessManagerCustom.sol +0 -736
  466. package/contracts/shared/AccessManagerExtended.sol +0 -470
  467. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  468. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  469. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  470. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  471. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  472. package/contracts/staking/IStakingManager.sol +0 -15
  473. package/contracts/staking/IStakingStore.sol +0 -130
  474. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  475. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -9,6 +9,7 @@ import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
9
9
  import {Fee, FeeLib} from "../type/Fee.sol";
10
10
  import {IRisk} from "../instance/module/IRisk.sol";
11
11
  import {IApplicationService} from "./IApplicationService.sol";
12
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
12
13
  import {IComponentService} from "../shared/IComponentService.sol";
13
14
  import {IPolicyService} from "./IPolicyService.sol";
14
15
  import {IProductService} from "./IProductService.sol";
@@ -52,9 +53,92 @@ abstract contract Product is
52
53
  Distribution _distribution;
53
54
  }
54
55
 
55
- function initializeProduct(
56
+
57
+ function calculatePremium(
58
+ Amount sumInsuredAmount,
59
+ RiskId riskId,
60
+ Seconds lifetime,
61
+ bytes memory applicationData,
62
+ NftId bundleNftId,
63
+ ReferralId referralId
64
+ )
65
+ external
66
+ view
67
+ override
68
+ returns (Amount premiumAmount)
69
+ {
70
+ IPolicy.Premium memory premium = _getProductStorage()._pricingService.calculatePremium(
71
+ getNftId(),
72
+ riskId,
73
+ sumInsuredAmount,
74
+ lifetime,
75
+ applicationData,
76
+ bundleNftId,
77
+ referralId
78
+ );
79
+
80
+ return AmountLib.toAmount(premium.premiumAmount);
81
+ }
82
+
83
+ function calculateNetPremium(
84
+ Amount sumInsuredAmount,
85
+ RiskId riskId,
86
+ Seconds lifetime,
87
+ bytes memory applicationData
88
+ )
89
+ external
90
+ view
91
+ virtual override
92
+ returns (Amount netPremiumAmount)
93
+ {
94
+ // default 10% of sum insured
95
+ return AmountLib.toAmount(sumInsuredAmount.toInt() / 10);
96
+ }
97
+
98
+
99
+ function register()
100
+ external
101
+ virtual
102
+ onlyOwner()
103
+ {
104
+ _getProductStorage()._componentService.registerProduct();
105
+ }
106
+
107
+
108
+ function getInitialProductInfo()
109
+ public
110
+ virtual
111
+ view
112
+ returns (IComponents.ProductInfo memory poolInfo)
113
+ {
114
+ ProductStorage storage $ = _getProductStorage();
115
+
116
+ return IComponents.ProductInfo({
117
+ distributionNftId: $._distributionNftId,
118
+ poolNftId: $._poolNftId,
119
+ productFee: FeeLib.zero(),
120
+ processingFee: FeeLib.zero(),
121
+ distributionFee: FeeLib.zero(),
122
+ minDistributionOwnerFee: FeeLib.zero(),
123
+ poolFee: FeeLib.zero(),
124
+ stakingFee: FeeLib.zero(),
125
+ performanceFee: FeeLib.zero()
126
+ });
127
+ }
128
+
129
+ function getPoolNftId() external view override returns (NftId poolNftId) {
130
+ return getRegistry().getNftId(address(_getProductStorage()._pool));
131
+ }
132
+
133
+ function getDistributionNftId() external view override returns (NftId distributionNftId) {
134
+ return getRegistry().getNftId(address(_getProductStorage()._distribution));
135
+ }
136
+
137
+
138
+ function _initializeProduct(
56
139
  address registry,
57
140
  NftId instanceNftId,
141
+ IAuthorization authorization,
58
142
  address initialOwner,
59
143
  string memory name,
60
144
  address token,
@@ -64,11 +148,21 @@ abstract contract Product is
64
148
  bytes memory registryData, // writeonly data that will saved in the object info record of the registry
65
149
  bytes memory componentData // writeonly data that will saved in the object info record of the registry
66
150
  )
67
- public
151
+ internal
68
152
  virtual
69
153
  onlyInitializing()
70
154
  {
71
- initializeInstanceLinkedComponent(registry, instanceNftId, name, token, PRODUCT(), isInterceptor, initialOwner, registryData, componentData);
155
+ _initializeInstanceLinkedComponent(
156
+ registry,
157
+ instanceNftId,
158
+ name,
159
+ token,
160
+ PRODUCT(),
161
+ authorization,
162
+ isInterceptor,
163
+ initialOwner,
164
+ registryData,
165
+ componentData);
72
166
 
73
167
  ProductStorage storage $ = _getProductStorage();
74
168
  // TODO add validation
@@ -88,27 +182,17 @@ abstract contract Product is
88
182
  }
89
183
 
90
184
 
91
- function register()
92
- external
93
- virtual
94
- onlyOwner()
95
- {
96
- _getProductStorage()._componentService.registerProduct();
97
- }
98
-
99
-
100
- function setFees(
185
+ function _setFees(
101
186
  Fee memory productFee,
102
187
  Fee memory processingFee
103
188
  )
104
- external
105
- onlyOwner
106
- restricted()
107
- override
189
+ internal
190
+ virtual
108
191
  {
109
192
  _getProductStorage()._componentService.setProductFees(productFee, processingFee);
110
193
  }
111
194
 
195
+
112
196
  function _createRisk(
113
197
  RiskId id,
114
198
  bytes memory data
@@ -139,10 +223,12 @@ abstract contract Product is
139
223
  );
140
224
  }
141
225
 
226
+
142
227
  function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
143
228
  return getInstance().getInstanceReader().getRiskInfo(id);
144
229
  }
145
230
 
231
+
146
232
  function _createApplication(
147
233
  address applicationOwner,
148
234
  RiskId riskId,
@@ -290,77 +376,6 @@ abstract contract Product is
290
376
  payoutId);
291
377
  }
292
378
 
293
- function calculatePremium(
294
- Amount sumInsuredAmount,
295
- RiskId riskId,
296
- Seconds lifetime,
297
- bytes memory applicationData,
298
- NftId bundleNftId,
299
- ReferralId referralId
300
- )
301
- external
302
- view
303
- override
304
- returns (Amount premiumAmount)
305
- {
306
- IPolicy.Premium memory premium = _getProductStorage()._pricingService.calculatePremium(
307
- getNftId(),
308
- riskId,
309
- sumInsuredAmount,
310
- lifetime,
311
- applicationData,
312
- bundleNftId,
313
- referralId
314
- );
315
-
316
- return AmountLib.toAmount(premium.premiumAmount);
317
- }
318
-
319
- function calculateNetPremium(
320
- Amount sumInsuredAmount,
321
- RiskId riskId,
322
- Seconds lifetime,
323
- bytes memory applicationData
324
- )
325
- external
326
- view
327
- virtual override
328
- returns (Amount netPremiumAmount)
329
- {
330
- // default 10% of sum insured
331
- return AmountLib.toAmount(sumInsuredAmount.toInt() / 10);
332
- }
333
-
334
-
335
- function getInitialProductInfo()
336
- public
337
- virtual
338
- view
339
- returns (IComponents.ProductInfo memory poolInfo)
340
- {
341
- ProductStorage storage $ = _getProductStorage();
342
-
343
- return IComponents.ProductInfo({
344
- distributionNftId: $._distributionNftId,
345
- poolNftId: $._poolNftId,
346
- productFee: FeeLib.zero(),
347
- processingFee: FeeLib.zero(),
348
- distributionFee: FeeLib.zero(),
349
- minDistributionOwnerFee: FeeLib.zero(),
350
- poolFee: FeeLib.zero(),
351
- stakingFee: FeeLib.zero(),
352
- performanceFee: FeeLib.zero()
353
- });
354
- }
355
-
356
- function getPoolNftId() external view override returns (NftId poolNftId) {
357
- return getRegistry().getNftId(address(_getProductStorage()._pool));
358
- }
359
-
360
- function getDistributionNftId() external view override returns (NftId distributionNftId) {
361
- return getRegistry().getNftId(address(_getProductStorage()._distribution));
362
- }
363
-
364
379
  function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
365
380
  return RiskIdLib.toRiskId(riskName);
366
381
  }
@@ -1,45 +1,20 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IRegistry} from "../registry/IRegistry.sol";
5
- import {IProductComponent} from "./IProductComponent.sol";
6
- import {Product} from "./Product.sol";
7
- import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
8
- import {IPoolComponent} from "../pool/IPoolComponent.sol";
9
- import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
10
4
  import {IInstance} from "../instance/IInstance.sol";
11
- import {IPolicy} from "../instance/module/IPolicy.sol";
12
- import {IRisk} from "../instance/module/IRisk.sol";
13
- import {IBundle} from "../instance/module/IBundle.sol";
5
+ import {IInstanceService} from "../instance/IInstanceService.sol";
6
+ import {IPoolService} from "../pool/PoolService.sol";
14
7
  import {IProductService} from "./IProductService.sol";
15
- import {IComponents} from "../instance/module/IComponents.sol";
16
-
17
- import {TokenHandler} from "../shared/TokenHandler.sol";
18
-
19
- import {IVersionable} from "../shared/IVersionable.sol";
20
- import {Versionable} from "../shared/Versionable.sol";
8
+ import {IRegistryService} from "../registry/IRegistryService.sol";
9
+ import {IRisk} from "../instance/module/IRisk.sol";
21
10
 
22
- import {Timestamp, zeroTimestamp} from "../type/Timestamp.sol";
23
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
24
- import {Blocknumber, blockNumber} from "../type/Blocknumber.sol";
11
+ import {InstanceReader} from "../instance/InstanceReader.sol";
25
12
  import {ObjectType, INSTANCE, PRODUCT, POOL, POLICY, REGISTRY} from "../type/ObjectType.sol";
26
- import {APPLIED, ACTIVE, KEEP_STATE} from "../type/StateId.sol";
27
- import {NftId, NftIdLib} from "../type/NftId.sol";
28
- import {Fee, FeeLib} from "../type/Fee.sol";
29
- import {ReferralId} from "../type/Referral.sol";
13
+ import {KEEP_STATE} from "../type/StateId.sol";
14
+ import {NftId} from "../type/NftId.sol";
30
15
  import {RiskId} from "../type/RiskId.sol";
31
16
  import {StateId} from "../type/StateId.sol";
32
- import {Version, VersionLib} from "../type/Version.sol";
33
- import {RoleId, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
34
-
35
- import {IService} from "../shared/IService.sol";
36
- import {Service} from "../shared/Service.sol";
37
17
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
38
- import {IInstanceService} from "../instance/IInstanceService.sol";
39
- import {IProductService} from "./IProductService.sol";
40
- import {IRegistryService} from "../registry/IRegistryService.sol";
41
- import {InstanceReader} from "../instance/InstanceReader.sol";
42
- import {IPoolService} from "../pool/PoolService.sol";
43
18
 
44
19
  contract ProductService is
45
20
  ComponentVerifyingService,
@@ -75,11 +50,6 @@ contract ProductService is
75
50
  }
76
51
 
77
52
 
78
- function getDomain() public pure override returns(ObjectType) {
79
- return PRODUCT();
80
- }
81
-
82
-
83
53
  function createRisk(
84
54
  RiskId riskId,
85
55
  bytes memory data
@@ -121,4 +91,9 @@ contract ProductService is
121
91
  (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
122
92
  instance.getInstanceStore().updateRiskState(riskId, state);
123
93
  }
94
+
95
+
96
+ function _getDomain() internal pure override returns(ObjectType) {
97
+ return PRODUCT();
98
+ }
124
99
  }
@@ -1,12 +1,9 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "../shared/IVersionable.sol";
5
- import {ProxyManager} from "../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
6
  import {ProductService} from "./ProductService.sol";
7
- import {Registry} from "../registry/Registry.sol";
8
- import {RegistryService} from "../registry/RegistryService.sol";
9
- import {VersionLib} from "../type/Version.sol";
10
7
 
11
8
  contract ProductServiceManager is ProxyManager {
12
9
 
@@ -13,13 +13,13 @@ contract ChainNft is ERC721Enumerable {
13
13
  string public constant SYMBOL = "DIPNFT";
14
14
 
15
15
  uint256 public constant PROTOCOL_NFT_ID = 1101;
16
- uint256 public constant GLOBAL_REGISTRY_ID = 2101;
16
+ uint256 public constant GLOBAL_REGISTRY_ID = 2101; //TODO make dependent of MAINNET_CHAIN_ID constant?
17
17
 
18
18
  // custom errors
19
- error CallerNotRegistry(address caller);
20
- error RegistryAddressZero();
21
- error NftUriEmpty();
22
- error NftUriAlreadySet();
19
+ error ErrorChainNftCallerNotRegistry(address caller);
20
+ error ErrorChainNftRegistryAddressZero();
21
+ error ErrorChainNftUriEmpty();
22
+ error ErrorChainNftUriAlreadySet();
23
23
 
24
24
  // contract state
25
25
 
@@ -33,31 +33,22 @@ contract ChainNft is ERC721Enumerable {
33
33
  address private _registry;
34
34
 
35
35
  // only used for _getNextTokenId
36
- uint256 internal _chainIdInt;
37
36
  uint256 internal _chainIdDigits;
38
37
  uint256 internal _chainIdMultiplier;
39
38
  uint256 internal _idNext;
40
39
  uint256 internal _totalMinted;
41
40
 
42
41
  modifier onlyRegistry() {
43
- if (msg.sender != _registry) { revert CallerNotRegistry(msg.sender); }
42
+ if (msg.sender != _registry) { revert ErrorChainNftCallerNotRegistry(msg.sender); }
44
43
  _;
45
44
  }
46
45
 
47
46
  constructor(address registry) ERC721(NAME, SYMBOL) {
48
- if (registry == address(0)) { revert RegistryAddressZero(); }
47
+ if (registry == address(0)) { revert ErrorChainNftRegistryAddressZero(); }
49
48
 
50
49
  _registry = registry;
51
- _chainIdInt = block.chainid;
52
- _chainIdDigits = 0;
53
-
54
- // count digis
55
- uint256 num = _chainIdInt;
56
- while (num != 0) {
57
- _chainIdDigits++;
58
- num /= 10;
59
- }
60
50
 
51
+ _chainIdDigits = _calculateChainIdDigits(block.chainid);
61
52
  _chainIdMultiplier = 10 ** _chainIdDigits;
62
53
 
63
54
  // the first object registered through normal registration starts with id 4
@@ -131,8 +122,8 @@ contract ChainNft is ERC721Enumerable {
131
122
  uint256 tokenId,
132
123
  string memory uri
133
124
  ) external onlyRegistry {
134
- if (bytes(uri).length == 0) { revert NftUriEmpty(); }
135
- if (bytes(_uri[tokenId]).length > 0) { revert NftUriAlreadySet(); }
125
+ if (bytes(uri).length == 0) { revert ErrorChainNftUriEmpty(); }
126
+ if (bytes(_uri[tokenId]).length > 0) { revert ErrorChainNftUriAlreadySet(); }
136
127
 
137
128
  _requireOwned(tokenId);
138
129
  _uri[tokenId] = uri;
@@ -198,11 +189,25 @@ contract ChainNft is ERC721Enumerable {
198
189
  * (42 * 10 ** 10 + 9876543210) * 100 + 10
199
190
  * (index * 10 ** digits + chainid) * 100 + digits (1 < digits < 100)
200
191
  */
201
- function calculateTokenId(uint256 idIndex) public view returns (uint256 id) {
192
+ function calculateTokenId(uint256 idIndex, uint chainId) public view returns (uint256 id) {
193
+ uint256 chainIdDigits;
194
+ uint256 chainIdMultiplier;
195
+ if(chainId == block.chainid) {
196
+ chainIdDigits = _chainIdDigits;
197
+ chainIdMultiplier = _chainIdMultiplier;
198
+ } else {
199
+ chainIdDigits = _calculateChainIdDigits(chainId);
200
+ chainIdMultiplier = 10 ** chainIdDigits;
201
+ }
202
+
202
203
  id =
203
- (idIndex * _chainIdMultiplier + _chainIdInt) *
204
+ (idIndex * chainIdMultiplier + chainId) *
204
205
  100 +
205
- _chainIdDigits;
206
+ chainIdDigits;
207
+ }
208
+
209
+ function calculateTokenId(uint256 idIndex) public view returns (uint256) {
210
+ return calculateTokenId(idIndex, block.chainid);
206
211
  }
207
212
 
208
213
  function getNextTokenId() external view returns (uint256) {
@@ -213,4 +218,14 @@ contract ChainNft is ERC721Enumerable {
213
218
  id = calculateTokenId(_idNext);
214
219
  _idNext++;
215
220
  }
221
+
222
+ function _calculateChainIdDigits(uint chainId) internal view returns (uint256) {
223
+ uint256 num = chainId;
224
+ uint256 digits = 0;
225
+ while (num != 0) {
226
+ digits++;
227
+ num /= 10;
228
+ }
229
+ return digits;
230
+ }
216
231
  }
@@ -0,0 +1,89 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+
5
+ import {NftId, NftIdLib} from "../type/NftId.sol";
6
+ import {VersionPart} from "../type/Version.sol";
7
+ import {ObjectType, REGISTRY} from "../type/ObjectType.sol";
8
+
9
+ import {IGlobalRegistry} from "./IGlobalRegistry.sol";
10
+ import {Registry} from "./Registry.sol";
11
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
12
+ import {MainnetContract} from "../shared/MainnetContract.sol";
13
+
14
+ contract GlobalRegistry is
15
+ MainnetContract,
16
+ Registry,
17
+ IGlobalRegistry
18
+ {
19
+
20
+ error ErrorGlobalRegistryChainRegistryAlreadyRegistered(uint chainId, address chainRegistry);
21
+ error ErrorGlobalRegistryChainRegistryAddressInvalid(uint chainId, address chainRegistry);
22
+
23
+ mapping(uint chanId => address registry) _registryAddressByChainId;
24
+ uint256[] _chainId;
25
+
26
+ constructor(RegistryAdmin admin) Registry(admin, address(this))
27
+ {}
28
+
29
+ /// @dev registers a registry contract for a specified chain
30
+ // only one chain registry per chain
31
+ // each chain registry have unique address (sort of share same address space)
32
+ function registerChainRegistry(uint chainId, address chainRegistryAddress)
33
+ external
34
+ restricted
35
+ returns (NftId chainRegistryNftId)
36
+ {
37
+ // TODO allow for the same address to be registered on multiple chains
38
+ if(_nftIdByAddress[chainRegistryAddress] != NftIdLib.zero()) {
39
+ revert ErrorGlobalRegistryChainRegistryAddressInvalid(chainId, chainRegistryAddress);
40
+ }
41
+
42
+ // calculate chain registry token id
43
+ uint chainRegistryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID, chainId);
44
+ chainRegistryNftId = NftIdLib.toNftId(chainRegistryId);
45
+
46
+ _info[chainRegistryNftId] = ObjectInfo({
47
+ nftId: chainRegistryNftId,
48
+ parentNftId: _registryNftId,
49
+ objectType: REGISTRY(),
50
+ isInterceptor: false,
51
+ objectAddress: chainRegistryAddress, // TODO consider "chainId:address" format
52
+ initialOwner: NFT_LOCK_ADDRESS,
53
+ data: ""
54
+ });
55
+
56
+ _nftIdByAddress[chainRegistryAddress] = chainRegistryNftId;
57
+ _registryAddressByChainId[chainId] = chainRegistryAddress;
58
+ _chainId.push(chainId);
59
+
60
+ _chainNft.mint(NFT_LOCK_ADDRESS, chainRegistryId);
61
+ }
62
+
63
+ //------------- public view functions -------------//
64
+ function getChainRegistryAddress(uint chainId) public view returns (address) {
65
+ return _registryAddressByChainId[chainId];
66
+ }
67
+
68
+ function getChainId(uint idx) public view returns (uint) {
69
+ return _chainId[idx];
70
+ }
71
+
72
+ function chainIds() public view returns (uint) {
73
+ return _chainId.length;
74
+ }
75
+
76
+ // Internals
77
+
78
+ /// @dev global registry already registered, register specifics only
79
+ function _registerRegistry()
80
+ internal
81
+ virtual
82
+ override
83
+ returns (NftId)
84
+ {
85
+ _registryAddressByChainId[MAINNET_CHAIN_ID] = address(this);
86
+ _chainId.push(MAINNET_CHAIN_ID);
87
+ return _globalRegistryNftId;
88
+ }
89
+ }
@@ -0,0 +1,38 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {GIF_ADMIN_ROLE} from "../type/RoleId.sol";
5
+
6
+ import {IGlobalRegistry} from "./IGlobalRegistry.sol";
7
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
8
+ import {MainnetContract} from "../shared/MainnetContract.sol";
9
+
10
+
11
+ contract GlobalRegistryAdmin is
12
+ MainnetContract,
13
+ RegistryAdmin
14
+ {
15
+ error ErrorGlobalRegistryAdminDeploymentNotOnMainnet();
16
+
17
+ constructor() RegistryAdmin()
18
+ {
19
+ if(block.chainid != 1) {
20
+ revert ErrorGlobalRegistryAdminDeploymentNotOnMainnet();
21
+ }
22
+ }
23
+
24
+ function _setupRegistry()
25
+ internal
26
+ override
27
+ onlyInitializing()
28
+ {
29
+ super._setupRegistry();
30
+
31
+ // global registry function authorization for gif admin role
32
+ FunctionInfo[] memory functions;
33
+ functions = new FunctionInfo[](1);
34
+ functions[0] = toFunction(IGlobalRegistry.registerChainRegistry.selector, "registerChainRegistry");
35
+
36
+ _authorizeTargetFunctions(_registry, GIF_ADMIN_ROLE(), functions);
37
+ }
38
+ }
@@ -0,0 +1,17 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {NftId} from "../type/NftId.sol";
5
+
6
+ import {IRegistry} from "./IRegistry.sol";
7
+
8
+ interface IGlobalRegistry is IRegistry {
9
+ // function registerChainRegistry(uint chainId, address deployer, bytes32 initCodeHash, bytes32 salt);
10
+ function registerChainRegistry(uint chainId, address chainRegistryAddress) external returns (NftId chainRegistryNftId);
11
+
12
+ function getChainRegistryAddress(uint chainId) external returns (address);
13
+
14
+ function getChainId(uint idx) external view returns (uint);
15
+
16
+ function chainIds() external view returns (uint);
17
+ }
@@ -7,21 +7,28 @@ import {NftId} from "../type/NftId.sol";
7
7
  import {ObjectType} from "../type/ObjectType.sol";
8
8
  import {VersionPart} from "../type/Version.sol";
9
9
  import {Timestamp} from "../type/Timestamp.sol";
10
- import {RoleId} from "../type/RoleId.sol";
11
10
 
11
+ /// @title Chain Registry interface.
12
+ /// A chain registry holds all protocol relevant objects with basic metadata.
13
+ /// Registered objects include services, instances, products, pools, policies, bundles, stakes and more.
14
+ /// Registered objects are represented by NFTs.
12
15
  interface IRegistry is IERC165 {
13
16
 
14
17
  event LogRegistration(NftId nftId, NftId parentNftId, ObjectType objectType, bool isInterceptor, address objectAddress, address initialOwner);
15
18
  event LogServiceRegistration(VersionPart majorVersion, ObjectType domain);
16
19
 
20
+ // initialize
21
+ error ErrorRegistryCallerNotDeployer();
22
+
17
23
  // registerService()
18
- error ErrorRegistryCallerNotReleaseManager();
24
+ error ErrorRegistryCallerNotReleaseRegistry();
25
+ error ErrorRegistryServiceAddressZero();
26
+ error ErrorRegistryServiceVersionZero();
27
+ error ErrorRegistryNotService(address service, ObjectType objectType);
28
+ error ErrorRegistryServiceParentNotRegistry(NftId parentNftId);
19
29
  error ErrorRegistryDomainZero(address service);
20
30
  error ErrorRegistryDomainAlreadyRegistered(address service, VersionPart version, ObjectType domain);
21
31
 
22
- // register()
23
- error ErrorRegistryCallerNotRegistryService();
24
-
25
32
  // registerWithCustomTypes()
26
33
  error ErrorRegistryCoreTypeRegistration();
27
34
 
@@ -40,30 +47,34 @@ interface IRegistry is IERC165 {
40
47
  bytes data;
41
48
  }
42
49
 
43
-
44
50
  struct ReleaseInfo {
45
51
  VersionPart version;
46
52
  bytes32 salt;
47
53
  address[] addresses;
48
54
  string[] names;
49
- RoleId[][] serviceRoles;
50
- string[][] serviceRoleNames;
51
- RoleId[][] functionRoles;
52
- string[][] functionRoleNames;
53
- bytes4[][][] selectors;
54
55
  ObjectType[] domains;
55
56
  Timestamp activatedAt;
56
57
  Timestamp disabledAt;
57
58
  }
58
59
 
60
+ /// @dev Register an object with a known core type.
61
+ /// The function returns a newly minted object NFT ID.
62
+ /// May not be used to register services.
63
+ function register(ObjectInfo memory info) external returns (NftId nftId);
64
+
65
+ /// @dev Register a service with using the provided domain and version.
66
+ /// The function returns a newly minted service NFT ID.
67
+ /// May only be used to register services.
59
68
  function registerService(
60
69
  ObjectInfo memory serviceInfo,
61
70
  VersionPart serviceVersion,
62
71
  ObjectType serviceDomain
63
72
  ) external returns(NftId nftId);
64
73
 
65
- function register(ObjectInfo memory info) external returns (NftId nftId);
66
-
74
+ /// @dev Register an object with a custom type.
75
+ /// The function returns a newly minted object NFT ID.
76
+ /// This function is reserved for GIF releases > 3.
77
+ /// May not be used to register known core types.
67
78
  function registerWithCustomType(ObjectInfo memory info) external returns (NftId nftId);
68
79
 
69
80
  function getInitialVersion() external view returns (VersionPart);
@@ -110,9 +121,7 @@ interface IRegistry is IERC165 {
110
121
  // TODO refactor the address getters below to contract getters
111
122
  function getChainNftAddress() external view returns (address);
112
123
 
113
- function getReleaseManagerAddress() external view returns (address);
114
-
115
- function getReleaseAccessManagerAddress(VersionPart version) external view returns (address);
124
+ function getReleaseRegistryAddress() external view returns (address);
116
125
 
117
126
  function getStakingAddress() external view returns (address);
118
127
 
@@ -120,7 +129,5 @@ interface IRegistry is IERC165 {
120
129
 
121
130
  function getRegistryAdminAddress() external view returns (address);
122
131
 
123
- function getDipTokenAddress() external view returns (address);
124
-
125
132
  function getAuthority() external view returns (address);
126
133
  }