@etherisc/gif-next 0.0.2-be8b468-276 → 0.0.2-bfb44e0-483

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 (293) hide show
  1. package/README.md +136 -2
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +897 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +972 -209
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → components/IComponent.sol/IComponent.json} +191 -152
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +752 -6
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +676 -31
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +661 -5
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +875 -299
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +695 -180
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  33. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  36. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  39. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  40. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +764 -0
  41. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  42. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → Cloneable.sol/Cloneable.json} +86 -2
  43. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  44. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +2056 -113
  45. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  46. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +214 -20
  47. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  48. package/artifacts/contracts/instance/Instance.sol/Instance.json +559 -752
  49. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  50. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +211 -144
  51. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  52. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +179 -76
  53. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  54. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +550 -77
  55. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  56. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +194 -32
  57. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  58. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +261 -0
  59. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  60. package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → instance/base/ComponentService.sol/ComponentService.json} +321 -9
  61. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  62. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  63. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  64. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +2 -2
  65. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  66. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +59 -16
  69. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  74. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  75. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  76. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1117 -0
  77. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  78. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1318 -0
  79. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  80. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +586 -0
  81. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  82. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +576 -41
  83. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  84. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +198 -24
  85. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IApplicationService.sol/IApplicationService.json} +223 -51
  87. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  88. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +798 -0
  89. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  90. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +229 -19
  91. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  92. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +784 -0
  93. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +34 -83
  95. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  96. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +44 -246
  97. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  98. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1378 -0
  99. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  100. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +642 -0
  101. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  102. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +957 -0
  103. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  104. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +574 -0
  105. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  106. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +1007 -0
  107. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  108. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +574 -0
  109. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  110. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  111. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  112. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +208 -224
  113. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  114. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +240 -94
  115. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  116. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  117. package/artifacts/contracts/registry/Registry.sol/Registry.json +222 -330
  118. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  119. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  121. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +221 -107
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +181 -105
  124. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  125. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  127. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +150 -29
  128. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  129. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  130. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  131. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  132. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +37 -0
  133. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  134. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  135. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +18 -5
  137. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  138. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +69 -0
  139. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  140. package/artifacts/contracts/shared/IService.sol/IService.json +32 -19
  141. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  142. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -2
  143. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  144. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +156 -11
  145. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  146. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +269 -0
  147. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  148. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +156 -6
  149. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  150. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +152 -11
  151. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  152. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +105 -0
  153. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  154. package/artifacts/contracts/shared/Service.sol/Service.json +178 -19
  155. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  156. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  157. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  158. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  159. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -2
  160. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  161. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  162. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +152 -11
  163. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  164. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  165. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  166. package/artifacts/contracts/test/TestService.sol/TestService.json +196 -37
  167. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  168. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  169. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  170. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -8
  171. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  172. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  173. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  175. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  176. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  177. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  178. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  179. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  180. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  182. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  183. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  184. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  185. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  187. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
  189. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  191. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  192. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  193. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  194. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  195. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  196. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  197. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  198. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  199. package/contracts/components/Component.sol +236 -0
  200. package/contracts/components/Distribution.sol +198 -66
  201. package/contracts/components/IComponent.sol +50 -0
  202. package/contracts/components/IDistributionComponent.sol +58 -4
  203. package/contracts/components/IPoolComponent.sol +54 -29
  204. package/contracts/components/IProductComponent.sol +7 -3
  205. package/contracts/components/Pool.sol +153 -157
  206. package/contracts/components/Product.sol +109 -128
  207. package/contracts/instance/BundleManager.sol +125 -0
  208. package/contracts/instance/Cloneable.sol +46 -0
  209. package/contracts/instance/IInstance.sol +63 -10
  210. package/contracts/instance/IInstanceService.sol +33 -4
  211. package/contracts/instance/Instance.sol +104 -266
  212. package/contracts/instance/InstanceAccessManager.sol +87 -78
  213. package/contracts/instance/InstanceReader.sol +29 -26
  214. package/contracts/instance/InstanceService.sol +361 -90
  215. package/contracts/instance/InstanceServiceManager.sol +10 -12
  216. package/contracts/instance/ObjectManager.sol +84 -0
  217. package/contracts/instance/base/ComponentService.sol +134 -0
  218. package/contracts/instance/module/IAccess.sol +27 -18
  219. package/contracts/instance/module/IBundle.sol +1 -0
  220. package/contracts/instance/module/ISetup.sol +7 -3
  221. package/contracts/instance/service/ApplicationService.sol +268 -0
  222. package/contracts/instance/service/BundleService.sol +298 -0
  223. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  224. package/contracts/instance/service/DistributionService.sol +214 -36
  225. package/contracts/instance/service/DistributionServiceManager.sol +10 -12
  226. package/contracts/instance/service/IApplicationService.sol +82 -0
  227. package/contracts/instance/service/IBundleService.sol +54 -0
  228. package/contracts/instance/service/IDistributionService.sol +53 -0
  229. package/contracts/instance/service/IPolicyService.sol +88 -0
  230. package/contracts/instance/service/IPoolService.sol +6 -23
  231. package/contracts/instance/service/IProductService.sol +6 -73
  232. package/contracts/instance/service/PolicyService.sol +524 -0
  233. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  234. package/contracts/instance/service/PoolService.sol +109 -0
  235. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  236. package/contracts/instance/service/ProductService.sol +233 -0
  237. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  238. package/contracts/registry/ChainNft.sol +1 -1
  239. package/contracts/registry/IRegistry.sol +38 -33
  240. package/contracts/registry/IRegistryService.sol +45 -13
  241. package/contracts/registry/Registry.sol +223 -250
  242. package/contracts/registry/RegistryAccessManager.sol +216 -0
  243. package/contracts/registry/RegistryService.sol +86 -224
  244. package/contracts/registry/RegistryServiceManager.sol +18 -36
  245. package/contracts/registry/ReleaseManager.sol +332 -0
  246. package/contracts/registry/TokenRegistry.sol +11 -9
  247. package/contracts/shared/ERC165.sol +12 -11
  248. package/contracts/shared/INftOwnable.sol +12 -6
  249. package/contracts/shared/IPolicyHolder.sol +26 -0
  250. package/contracts/shared/IRegisterable.sol +4 -6
  251. package/contracts/shared/IRegistryLinked.sol +15 -0
  252. package/contracts/shared/IService.sol +2 -1
  253. package/contracts/shared/IVersionable.sol +2 -2
  254. package/contracts/shared/NftOwnable.sol +114 -60
  255. package/contracts/shared/PolicyHolder.sol +81 -0
  256. package/contracts/shared/ProxyManager.sol +6 -5
  257. package/contracts/shared/Registerable.sol +15 -24
  258. package/contracts/shared/RegistryLinked.sol +64 -0
  259. package/contracts/shared/Service.sol +19 -13
  260. package/contracts/shared/Versionable.sol +3 -2
  261. package/contracts/test/TestRegisterable.sol +1 -1
  262. package/contracts/test/TestService.sol +4 -3
  263. package/contracts/types/DistributorType.sol +2 -2
  264. package/contracts/types/NftIdSet.sol +26 -24
  265. package/contracts/types/ObjectType.sol +6 -2
  266. package/contracts/types/RoleId.sol +10 -8
  267. package/package.json +3 -3
  268. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  269. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -327
  270. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  271. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  272. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  273. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  274. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  275. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  276. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  277. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  278. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  279. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  280. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  281. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  282. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  283. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  284. package/contracts/components/BaseComponent.sol +0 -91
  285. package/contracts/components/IBaseComponent.sol +0 -25
  286. package/contracts/instance/AccessManagedSimple.sol +0 -115
  287. package/contracts/instance/AccessManagerSimple.sol +0 -692
  288. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  289. package/contracts/instance/base/ComponentServiceBase.sol +0 -39
  290. package/contracts/instance/base/IInstanceBase.sol +0 -23
  291. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  292. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  293. package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -0,0 +1,134 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {IComponent} from "../../components/IComponent.sol";
5
+ import {IRegistry} from "../../registry/IRegistry.sol";
6
+ import {IRegistryService} from "../../registry/IRegistryService.sol";
7
+ import {IInstance} from "../../instance/IInstance.sol";
8
+ import {IAccess} from "../module/IAccess.sol";
9
+ import {ObjectType, INSTANCE, REGISTRY} from "../../types/ObjectType.sol";
10
+ import {NftId} from "../../types/NftId.sol";
11
+ import {RoleId} from "../../types/RoleId.sol";
12
+
13
+ import {Service} from "../../shared/Service.sol";
14
+ import {InstanceService} from "../InstanceService.sol";
15
+ import {InstanceAccessManager} from "../InstanceAccessManager.sol";
16
+
17
+ abstract contract ComponentService is Service {
18
+
19
+ error ErrorComponentServiceAlreadyRegistered(address component, NftId nftId);
20
+ error ErrorComponentServiceNotComponent(address component);
21
+ error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
22
+ error ErrorComponentServiceSenderNotOwner(address component, address initialOwner, address sender);
23
+ error ErrorComponentServiceExpectedRoleMissing(NftId instanceNftId, RoleId requiredRole, address sender);
24
+ error ErrorComponentServiceComponentLocked(address component);
25
+
26
+ /// @dev modifier to check if caller is a registered service
27
+ modifier onlyService() {
28
+ address caller = msg.sender;
29
+ require(getRegistry().isRegisteredService(caller), "ERROR_NOT_SERVICE");
30
+ _;
31
+ }
32
+
33
+ // view functions
34
+
35
+ function getRegistryService() public view virtual returns (IRegistryService) {
36
+ address service = getRegistry().getServiceAddress(REGISTRY(), getMajorVersion());
37
+ return IRegistryService(service);
38
+ }
39
+
40
+ function getInstanceService() public view returns (InstanceService) {
41
+ address service = getRegistry().getServiceAddress(INSTANCE(), getMajorVersion());
42
+ return InstanceService(service);
43
+ }
44
+
45
+ // internal functions
46
+ function _checkComponentForRegistration(
47
+ address componentAddress,
48
+ ObjectType requiredType,
49
+ RoleId requiredRole
50
+ )
51
+ internal
52
+ view
53
+ returns (
54
+ IComponent component,
55
+ address owner,
56
+ IInstance instance,
57
+ NftId instanceNftId
58
+ )
59
+ {
60
+ // component may only be registerd by initial owner of component
61
+ owner = msg.sender;
62
+
63
+ // check component has not already been registerd
64
+ NftId compoentNftId = getRegistry().getNftId(componentAddress);
65
+ if(compoentNftId.gtz()) {
66
+ revert ErrorComponentServiceAlreadyRegistered(componentAddress, compoentNftId);
67
+ }
68
+
69
+ // check this is a component
70
+ component = IComponent(componentAddress);
71
+ if(!component.supportsInterface(type(IComponent).interfaceId)) {
72
+ revert ErrorComponentServiceNotComponent(componentAddress);
73
+ }
74
+
75
+ // check component is of required type
76
+ IRegistry.ObjectInfo memory componentInfo = component.getInitialInfo();
77
+ if(componentInfo.objectType != requiredType) {
78
+ revert ErrorComponentServiceInvalidType(componentAddress, requiredType, componentInfo.objectType);
79
+ }
80
+
81
+ // check msg.sender is component owner
82
+ address initialOwner = componentInfo.initialOwner;
83
+ if(owner != initialOwner) {
84
+ revert ErrorComponentServiceSenderNotOwner(componentAddress, componentInfo.initialOwner, owner);
85
+ }
86
+
87
+ // check instance has assigned required role to owner
88
+ instanceNftId = componentInfo.parentNftId;
89
+ instance = _getInstance(instanceNftId);
90
+ bool hasRole = getInstanceService().hasRole(
91
+ owner,
92
+ requiredRole,
93
+ address(instance));
94
+
95
+ if(!hasRole) {
96
+ revert ErrorComponentServiceExpectedRoleMissing(instanceNftId, requiredRole, owner);
97
+ }
98
+ }
99
+
100
+ // internal view functions
101
+
102
+ function _getInstance(NftId instanceNftId) internal view returns (IInstance) {
103
+ IRegistry.ObjectInfo memory instanceInfo = getRegistry().getObjectInfo(instanceNftId);
104
+ return IInstance(instanceInfo.objectAddress);
105
+ }
106
+
107
+ function _getAndVerifyComponentInfoAndInstance(
108
+ //address component,
109
+ ObjectType expectedType
110
+ )
111
+ internal
112
+ view
113
+ returns(
114
+ IRegistry.ObjectInfo memory info,
115
+ IInstance instance
116
+ )
117
+ {
118
+ IRegistry registry = getRegistry();
119
+ //TODO redundant check -> just check type
120
+ //NftId componentNftId = registry.getNftId(component);
121
+ //require(componentNftId.gtz(), "ERROR_COMPONENT_UNKNOWN");
122
+
123
+ info = registry.getObjectInfo(msg.sender);
124
+ require(info.objectType == expectedType, "OBJECT_TYPE_INVALID");
125
+
126
+ address instanceAddress = registry.getObjectInfo(info.parentNftId).objectAddress;
127
+ instance = IInstance(instanceAddress);
128
+
129
+ InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
130
+ if (accessManager.isTargetLocked(info.objectAddress)) {
131
+ revert IAccess.ErrorIAccessTargetLocked(info.objectAddress);
132
+ }
133
+ }
134
+ }
@@ -1,38 +1,47 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
5
4
  import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
5
 
7
6
  import {RoleId} from "../../types/RoleId.sol";
7
+ import {Timestamp} from "../../types/Timestamp.sol";
8
8
 
9
9
  interface IAccess {
10
+
10
11
  struct RoleInfo {
11
12
  ShortString name;
12
13
  bool isCustom;
14
+ bool isLocked;
15
+ Timestamp createdAt;
16
+ Timestamp updatedAt;
13
17
  }
14
18
 
15
19
  struct TargetInfo {
16
20
  ShortString name;
17
21
  bool isCustom;
22
+ bool isLocked;
23
+ Timestamp createdAt;
24
+ Timestamp updatedAt;
18
25
  }
19
26
 
20
- error ErrorTargetAddressZero();
21
- error ErrorTargetAlreadyExists(address target, ShortString name);
22
- error ErrorTargetDoesNotExist(address target);
23
- error ErrorTargetNameEmpty(address target);
24
- error ErrorTargetNameExists(address target, address existingTarget, ShortString name);
25
-
26
- error ErrorRoleIdInvalid(RoleId roleId);
27
- error ErrorRoleIdTooBig(RoleId roleId);
28
- error ErrorRoleIdTooSmall(RoleId roleId);
29
- error ErrorRoleIdAlreadyExists(RoleId roleId, ShortString name);
30
- error ErrorRoleIdNotActive(RoleId roleId);
31
- error ErrorRoleNameEmpty(RoleId roleId);
32
- error ErrorRoleNameNotUnique(RoleId roleId, ShortString name);
33
- error ErrorRoleInvalidUpdate(RoleId roleId, bool isCustom);
34
- error ErrorGrantNonexstentRole(RoleId roleId);
35
- error ErrorRevokeNonexstentRole(RoleId roleId);
36
- error ErrorRenounceNonexstentRole(RoleId roleId);
27
+ error ErrorIAccessRoleIdInvalid(RoleId roleId);
28
+ error ErrorIAccessRoleIdTooBig(RoleId roleId);
29
+ error ErrorIAccessRoleIdTooSmall(RoleId roleId);
30
+ error ErrorIAccessRoleIdAlreadyExists(RoleId roleId, ShortString name);
31
+ error ErrorIAccessRoleIdNotActive(RoleId roleId);
32
+ error ErrorIAccessRoleNameEmpty(RoleId roleId);
33
+ error ErrorIAccessRoleNameNotUnique(RoleId roleId, ShortString name);
34
+ error ErrorIAccessRoleInvalidUpdate(RoleId roleId, bool isCustom);
35
+ error ErrorIAccessRoleIsCustomIsImmutable(RoleId roleId, bool isCustom, bool isCustomExisting);
36
+ error ErrorIAccessGrantNonexstentRole(RoleId roleId);
37
+ error ErrorIAccessRevokeNonexstentRole(RoleId roleId);
38
+ error ErrorIAccessRenounceNonexstentRole(RoleId roleId);
37
39
 
40
+ error ErrorIAccessTargetAddressZero();
41
+ error ErrorIAccessTargetDoesNotExist(ShortString name);
42
+ error ErrorIAccessTargetAddressDoesNotExist(address target);
43
+ error ErrorIAccessTargetExists(address target, ShortString name);
44
+ error ErrorIAccessTargetNameEmpty(address target);
45
+ error ErrorIAccessTargetNameExists(address target, address existingTarget, ShortString name);
46
+ error ErrorIAccessTargetLocked(address target);
38
47
  }
@@ -13,6 +13,7 @@ interface IBundle {
13
13
  uint256 capitalAmount; // net investment capital + net premiums - payouts
14
14
  uint256 lockedAmount; // capital amount linked to collateralizaion of non-closed policies (<= balance)
15
15
  uint256 balanceAmount; // total amount of funds: capitalAmount + fees (balance >= captial)
16
+ uint256 lifetime;
16
17
  Timestamp expiredAt; // no new policies
17
18
  Timestamp closedAt; // no open policies, locked amount = 0
18
19
  }
@@ -20,24 +20,28 @@ interface ISetup {
20
20
  Fee poolFee; // pool fee on net premium
21
21
  Fee stakingFee; // pool fee on staked capital from investor
22
22
  Fee performanceFee; // pool fee on profits from capital investors
23
+ bool isIntercepting; // intercepts nft transfers (for products)
24
+ address wallet;
23
25
  }
24
26
 
25
27
  struct DistributionSetupInfo {
26
28
  NftId productNftId;
27
29
  TokenHandler tokenHandler;
28
30
  Fee distributionFee; // default distribution fee (no referral id)
29
- bool isIntercepting; // intercepts nft transfers (for distributors)
30
31
  address wallet;
31
32
  }
32
33
 
33
34
  struct PoolSetupInfo {
34
35
  NftId productNftId;
35
36
  TokenHandler tokenHandler;
36
- UFixed collateralizationLevel;
37
+ bool isInterceptingBundleTransfers; // intercepts nft transfers for bundles
38
+ bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
39
+ bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications
40
+ UFixed collateralizationLevel; // factor to calculate collateral for sum insurance (default 100%)
41
+ UFixed retentionLevel; // amount of collateral held in pool (default 100%)
37
42
  Fee poolFee; // pool fee on net premium
38
43
  Fee stakingFee; // pool fee on staked capital from investor
39
44
  Fee performanceFee; // pool fee on profits from capital investors
40
- bool isIntercepting; // intercepts nft transfers (for bundles)
41
45
  address wallet;
42
46
  }
43
47
  }
@@ -0,0 +1,268 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {IRisk} from "../module/IRisk.sol";
5
+ import {IService} from "./IApplicationService.sol";
6
+
7
+ import {IRegistry} from "../../registry/IRegistry.sol";
8
+ import {IProductComponent} from "../../components/IProductComponent.sol";
9
+ import {Product} from "../../components/Product.sol";
10
+ import {IPoolComponent} from "../../components/IPoolComponent.sol";
11
+ import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
12
+ import {IInstance} from "../IInstance.sol";
13
+ import {IPolicy} from "../module/IPolicy.sol";
14
+ import {IRisk} from "../module/IRisk.sol";
15
+ import {IBundle} from "../module/IBundle.sol";
16
+ import {IProductService} from "./IProductService.sol";
17
+ import {ITreasury} from "../module/ITreasury.sol";
18
+ import {ISetup} from "../module/ISetup.sol";
19
+
20
+ import {TokenHandler} from "../../shared/TokenHandler.sol";
21
+
22
+ import {IVersionable} from "../../shared/IVersionable.sol";
23
+ import {Versionable} from "../../shared/Versionable.sol";
24
+
25
+ import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
26
+ import {UFixed, UFixedLib} from "../../types/UFixed.sol";
27
+ import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
28
+ import {ObjectType, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, BUNDLE} from "../../types/ObjectType.sol";
29
+ import {APPLIED, UNDERWRITTEN, ACTIVE, KEEP_STATE, CLOSED} from "../../types/StateId.sol";
30
+ import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
31
+ import {Fee, FeeLib} from "../../types/Fee.sol";
32
+ import {ReferralId} from "../../types/Referral.sol";
33
+ import {RiskId} from "../../types/RiskId.sol";
34
+ import {StateId} from "../../types/StateId.sol";
35
+ import {Version, VersionLib} from "../../types/Version.sol";
36
+
37
+ import {ComponentService} from "../base/ComponentService.sol";
38
+ import {InstanceReader} from "../InstanceReader.sol";
39
+ import {IApplicationService} from "./IApplicationService.sol";
40
+ import {IBundleService} from "./IBundleService.sol";
41
+ import {IPoolService} from "./IPoolService.sol";
42
+ import {IService} from "../../shared/IService.sol";
43
+ import {Service} from "../../shared/Service.sol";
44
+
45
+
46
+ contract ApplicationService is
47
+ ComponentService,
48
+ IApplicationService
49
+ {
50
+
51
+
52
+ function initialize(
53
+ address owner,
54
+ bytes memory data
55
+ )
56
+ public
57
+ virtual
58
+ initializer()
59
+ {
60
+ // TODO check this, might no longer be the way, refactor if necessary
61
+ address registryAddress;
62
+ address initialOwner;
63
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
64
+
65
+ initializeService(registryAddress, owner);
66
+ registerInterface(type(IApplicationService).interfaceId);
67
+ }
68
+
69
+
70
+ function create(
71
+ address applicationOwner,
72
+ RiskId riskId,
73
+ NftId bundleNftId,
74
+ ReferralId referralId,
75
+ uint256 sumInsuredAmount,
76
+ uint256 lifetime,
77
+ bytes memory applicationData
78
+ )
79
+ external
80
+ virtual override
81
+ returns (NftId applicationNftId)
82
+ {
83
+ (IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
84
+ // TODO: add validations (see create bundle in pool service)
85
+
86
+ applicationNftId = getRegistryService().registerPolicy(
87
+ IRegistry.ObjectInfo(
88
+ zeroNftId(),
89
+ productInfo.nftId,
90
+ POLICY(),
91
+ false, // intercepting property for policies is defined on product
92
+ address(0),
93
+ applicationOwner,
94
+ ""
95
+ )
96
+ );
97
+
98
+ (uint256 premiumAmount,,,,) = calculatePremium(
99
+ riskId,
100
+ sumInsuredAmount,
101
+ lifetime,
102
+ applicationData,
103
+ bundleNftId,
104
+ referralId
105
+ );
106
+
107
+ IPolicy.PolicyInfo memory policyInfo = IPolicy.PolicyInfo(
108
+ productInfo.nftId,
109
+ bundleNftId,
110
+ referralId,
111
+ riskId,
112
+ sumInsuredAmount,
113
+ premiumAmount,
114
+ 0,
115
+ lifetime,
116
+ applicationData,
117
+ "",
118
+ 0,
119
+ 0,
120
+ 0,
121
+ zeroTimestamp(),
122
+ zeroTimestamp(),
123
+ zeroTimestamp()
124
+ );
125
+
126
+ instance.createPolicy(applicationNftId, policyInfo);
127
+ instance.updatePolicyState(applicationNftId, APPLIED());
128
+
129
+ // TODO: add logging
130
+ }
131
+
132
+
133
+ function renew(
134
+ NftId policyNftId, // policy to be renewd (renewal inherits policy attributes)
135
+ NftId bundleNftId // will likely need a newer bundle for underwriting
136
+ )
137
+ external
138
+ virtual override
139
+ returns (NftId applicationNftId)
140
+ {
141
+
142
+ }
143
+
144
+
145
+ function ajust(
146
+ NftId applicationNftId,
147
+ RiskId riskId,
148
+ NftId bundleNftId,
149
+ ReferralId referralId,
150
+ uint256 sumInsuredAmount,
151
+ uint256 lifetime,
152
+ bytes memory applicationData
153
+ )
154
+ external
155
+ virtual override
156
+ {
157
+
158
+ }
159
+
160
+ function revoke(NftId policyNftId)
161
+ external
162
+ virtual override
163
+ {
164
+
165
+ }
166
+
167
+
168
+ function calculatePremium(
169
+ RiskId riskId,
170
+ uint256 sumInsuredAmount,
171
+ uint256 lifetime,
172
+ bytes memory applicationData,
173
+ NftId bundleNftId,
174
+ ReferralId referralId
175
+ )
176
+ public
177
+ view
178
+ virtual override
179
+ returns (
180
+ uint256 premiumAmount,
181
+ uint256 distributionFeeAmount,
182
+ uint256 productFeeAmount,
183
+ uint256 poolFeeAmount,
184
+ uint256 bundleFeeAmount
185
+ )
186
+ {
187
+ Product product = _getAndVerifyInstanceAndProduct();
188
+ uint256 netPremiumAmount = product.calculateNetPremium(
189
+ sumInsuredAmount,
190
+ riskId,
191
+ lifetime,
192
+ applicationData
193
+ );
194
+
195
+ (
196
+ productFeeAmount,
197
+ poolFeeAmount,
198
+ bundleFeeAmount,
199
+ distributionFeeAmount
200
+ ) = _calculateFeeAmounts(
201
+ netPremiumAmount,
202
+ product,
203
+ bundleNftId,
204
+ referralId
205
+ );
206
+
207
+ premiumAmount = netPremiumAmount + productFeeAmount;
208
+ premiumAmount += poolFeeAmount + bundleFeeAmount;
209
+ premiumAmount += distributionFeeAmount;
210
+ }
211
+
212
+
213
+ function getDomain() public pure override(IService, Service) returns(ObjectType) {
214
+ return APPLICATION();
215
+ }
216
+
217
+
218
+ // internal functions
219
+
220
+ function _calculateFeeAmounts(
221
+ uint256 netPremiumAmount,
222
+ Product product,
223
+ NftId bundleNftId,
224
+ ReferralId referralId
225
+ )
226
+ internal
227
+ view
228
+ returns (
229
+ uint256 productFeeAmount,
230
+ uint256 poolFeeAmount,
231
+ uint256 bundleFeeAmount,
232
+ uint256 distributionFeeAmount
233
+ )
234
+ {
235
+ InstanceReader instanceReader;
236
+ {
237
+ IInstance instance = product.getInstance();
238
+ instanceReader = instance.getInstanceReader();
239
+ }
240
+
241
+ NftId poolNftId = product.getPoolNftId();
242
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
243
+ require(bundleInfo.poolNftId == poolNftId,"ERROR:PRS-035:BUNDLE_POOL_MISMATCH");
244
+
245
+ {
246
+ ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(product.getProductNftId());
247
+ (productFeeAmount,) = FeeLib.calculateFee(productSetupInfo.productFee, netPremiumAmount);
248
+ }
249
+ {
250
+ ISetup.PoolSetupInfo memory poolSetupInfo = instanceReader.getPoolSetupInfo(poolNftId);
251
+ (poolFeeAmount,) = FeeLib.calculateFee(poolSetupInfo.poolFee, netPremiumAmount);
252
+ }
253
+ {
254
+ NftId distributionNftId = product.getDistributionNftId();
255
+ ISetup.DistributionSetupInfo memory distributionSetupInfo = instanceReader.getDistributionSetupInfo(distributionNftId);
256
+ (distributionFeeAmount,) = FeeLib.calculateFee(distributionSetupInfo.distributionFee, netPremiumAmount);
257
+ }
258
+
259
+ (bundleFeeAmount,) = FeeLib.calculateFee(bundleInfo.fee, netPremiumAmount);
260
+ }
261
+
262
+
263
+ function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
264
+ IRegistry.ObjectInfo memory productInfo;
265
+ (productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
266
+ product = Product(productInfo.objectAddress);
267
+ }
268
+ }