@etherisc/gif-next 0.0.2-e6a90b9 → 0.0.2-e875d61-189

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 (348) hide show
  1. package/README.md +148 -7
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +4 -0
  3. package/artifacts/contracts/components/{IPool.sol/IPoolComponent.json → BaseComponent.sol/BaseComponent.json} +55 -60
  4. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +4 -0
  5. package/artifacts/contracts/{instance/component/IComponent.sol/IComponentContract.json → components/IBaseComponent.sol/IBaseComponent.json} +54 -59
  6. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +356 -0
  8. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +279 -0
  10. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  11. package/artifacts/contracts/components/Pool.sol/Pool.json +295 -35
  12. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  13. package/artifacts/contracts/components/Product.sol/Product.json +196 -61
  14. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  15. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +2 -2
  16. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  17. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +2 -2
  18. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +2 -2
  20. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +2 -2
  22. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +4 -0
  29. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +59 -0
  30. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +4 -0
  31. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +124 -0
  32. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +4 -0
  33. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +74 -0
  34. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +4 -0
  35. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +124 -0
  36. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +4 -0
  37. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +207 -0
  38. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  39. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +2 -2
  40. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  41. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +2 -2
  42. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1255 -278
  44. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +4 -0
  45. package/artifacts/contracts/instance/{component/IComponent.sol → IInstanceLinked.sol}/IInstanceLinked.json +1 -1
  46. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  47. package/artifacts/contracts/instance/Instance.sol/Instance.json +1594 -388
  48. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
  49. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +300 -0
  50. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  51. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +81 -0
  52. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  53. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +560 -0
  54. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  55. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.json +115 -0
  56. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/IService.sol/IService.json +300 -0
  58. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{component/ComponentModule.sol/ComponentModule.json → base/InstanceBase.sol/InstanceBase.json} +157 -140
  60. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +710 -0
  62. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
  64. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.json +10 -0
  66. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +4 -0
  67. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +300 -0
  68. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +4 -0
  69. package/artifacts/contracts/instance/{access → module/access}/Access.sol/AccessModule.json +85 -152
  70. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +4 -0
  71. package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccess.json +1 -1
  72. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +4 -0
  73. package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccessModule.json +96 -99
  74. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +4 -0
  75. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +265 -0
  76. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +4 -0
  77. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.json +10 -0
  78. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +4 -0
  79. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +265 -0
  80. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +4 -0
  81. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +10 -0
  82. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +4 -0
  83. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +10 -0
  84. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +4 -0
  85. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +10 -0
  86. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +4 -0
  87. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +136 -0
  88. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +4 -0
  89. package/artifacts/contracts/instance/{component → module/component}/IComponent.sol/IComponent.json +1 -1
  90. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +4 -0
  91. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +136 -0
  92. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +4 -0
  93. package/artifacts/contracts/instance/{policy → module/policy}/IPolicy.sol/IPolicy.json +1 -1
  94. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +4 -0
  95. package/artifacts/contracts/instance/{policy → module/policy}/IPolicy.sol/IPolicyModule.json +147 -105
  96. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +4 -0
  97. package/artifacts/contracts/instance/{policy → module/policy}/PolicyModule.sol/PolicyModule.json +147 -105
  98. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +4 -0
  99. package/artifacts/contracts/instance/{pool → module/pool}/IPoolModule.sol/IPool.json +1 -1
  100. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +4 -0
  101. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +144 -0
  102. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +4 -0
  103. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +144 -0
  104. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +4 -0
  105. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.json +10 -0
  106. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +4 -0
  107. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +10 -0
  108. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +4 -0
  109. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +10 -0
  110. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +4 -0
  111. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +10 -0
  112. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +4 -0
  113. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +531 -0
  114. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  115. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +76 -0
  116. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +4 -0
  117. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +531 -0
  118. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +4 -0
  119. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +523 -0
  120. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +4 -0
  121. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +364 -0
  122. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  123. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +376 -0
  124. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  125. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +477 -0
  126. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  127. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +471 -0
  128. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  129. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +673 -0
  130. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  131. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +65 -2
  132. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
  133. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  134. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +115 -89
  135. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  136. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +24 -0
  137. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  138. package/artifacts/contracts/registry/Registry.sol/Registry.json +244 -77
  139. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  140. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +35 -0
  141. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +4 -0
  142. package/artifacts/contracts/{registry/IRegistry.sol → shared/IOwnable.sol}/IOwnable.json +1 -1
  143. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  144. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegisterable.sol}/IRegisterable.json +22 -67
  145. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  146. package/artifacts/contracts/{instance/pool/IPoolModule.sol/IPoolModule.json → shared/IVersionable.sol/IVersionable.json} +75 -60
  147. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  148. package/artifacts/contracts/{registry/Registry.sol → shared/Registerable.sol}/Registerable.json +23 -68
  149. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  150. package/artifacts/contracts/{instance/pool/PoolModule.sol/PoolModule.json → shared/Versionable.sol/Versionable.json} +72 -70
  151. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
  152. package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
  153. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +4 -0
  154. package/artifacts/contracts/test/TestPool.sol/TestPool.json +455 -0
  155. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +4 -0
  156. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +436 -0
  157. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
  158. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +137 -0
  159. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
  160. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
  161. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
  162. package/artifacts/contracts/test/TestService.sol/TestService.json +379 -0
  163. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
  164. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +338 -0
  165. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
  166. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
  167. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
  168. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +206 -0
  169. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  170. package/artifacts/contracts/test/Usdc.sol/USDC.json +338 -0
  171. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  172. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
  173. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  174. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +174 -0
  175. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  176. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
  177. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  178. package/artifacts/contracts/types/Fee.sol/FeeLib.json +218 -0
  179. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  180. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +111 -0
  181. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +148 -5
  183. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  184. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +10 -0
  185. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  186. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +92 -0
  187. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  188. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +30 -0
  189. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +4 -0
  190. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +92 -0
  191. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +4 -0
  192. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +236 -0
  193. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +4 -0
  194. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +479 -0
  195. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
  196. package/artifacts/contracts/types/Version.sol/VersionLib.json +139 -0
  197. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
  198. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +30 -0
  199. package/contracts/components/BaseComponent.sol +94 -0
  200. package/contracts/components/IBaseComponent.sol +19 -0
  201. package/contracts/components/IPoolComponent.sol +57 -0
  202. package/contracts/components/IProductComponent.sol +19 -0
  203. package/contracts/components/Pool.sol +178 -16
  204. package/contracts/components/Product.sol +99 -30
  205. package/contracts/experiment/errors/Require.sol +10 -5
  206. package/contracts/experiment/errors/Revert.sol +13 -8
  207. package/contracts/experiment/inheritance/A.sol +8 -11
  208. package/contracts/experiment/inheritance/B.sol +10 -5
  209. package/contracts/experiment/inheritance/C.sol +11 -5
  210. package/contracts/experiment/inheritance/IA.sol +2 -7
  211. package/contracts/experiment/inheritance/IB.sol +3 -2
  212. package/contracts/experiment/inheritance/IC.sol +4 -3
  213. package/contracts/experiment/statemachine/Dummy.sol +27 -0
  214. package/contracts/experiment/statemachine/ISM.sol +25 -0
  215. package/contracts/experiment/statemachine/README.md +112 -0
  216. package/contracts/experiment/statemachine/SM.sol +57 -0
  217. package/contracts/experiment/statemachine/SimpleStateMachine.sol +31 -0
  218. package/contracts/experiment/types/TypeA.sol +14 -9
  219. package/contracts/experiment/types/TypeB.sol +14 -9
  220. package/contracts/instance/IInstance.sol +38 -8
  221. package/contracts/instance/IInstanceLinked.sol +8 -0
  222. package/contracts/instance/Instance.sol +51 -43
  223. package/contracts/instance/base/ComponentServiceBase.sol +42 -0
  224. package/contracts/instance/base/IInstanceBase.sol +19 -0
  225. package/contracts/instance/base/IKeyValueStore.sol +50 -0
  226. package/contracts/instance/base/ILifecycle.sol +30 -0
  227. package/contracts/instance/base/IService.sol +15 -0
  228. package/contracts/instance/base/InstanceBase.sol +84 -0
  229. package/contracts/instance/base/KeyValueStore.sol +161 -0
  230. package/contracts/instance/base/Lifecycle.sol +92 -0
  231. package/contracts/instance/base/ModuleBase.sol +46 -0
  232. package/contracts/instance/base/ServiceBase.sol +37 -0
  233. package/contracts/instance/module/access/Access.sol +149 -0
  234. package/contracts/instance/module/access/IAccess.sol +53 -0
  235. package/contracts/instance/module/bundle/BundleModule.sol +135 -0
  236. package/contracts/instance/module/bundle/IBundle.sol +51 -0
  237. package/contracts/instance/module/compensation/CompensationModule.sol +17 -0
  238. package/contracts/instance/module/compensation/ICompensation.sol +10 -0
  239. package/contracts/instance/module/component/ComponentModule.sol +81 -0
  240. package/contracts/instance/module/component/IComponent.sol +29 -0
  241. package/contracts/instance/module/policy/IPolicy.sol +59 -0
  242. package/contracts/instance/module/policy/PolicyModule.sol +89 -0
  243. package/contracts/instance/module/pool/IPoolModule.sol +40 -0
  244. package/contracts/instance/module/pool/PoolModule.sol +90 -0
  245. package/contracts/instance/module/risk/IRisk.sol +10 -0
  246. package/contracts/instance/module/risk/RiskModule.sol +17 -0
  247. package/contracts/instance/module/treasury/ITreasury.sol +96 -0
  248. package/contracts/instance/module/treasury/TokenHandler.sol +48 -0
  249. package/contracts/instance/module/treasury/TreasuryModule.sol +171 -0
  250. package/contracts/instance/service/ComponentOwnerService.sol +155 -0
  251. package/contracts/instance/service/IComponentOwnerService.sol +22 -0
  252. package/contracts/instance/service/IPoolService.sol +30 -0
  253. package/contracts/instance/service/IProductService.sol +58 -0
  254. package/contracts/instance/service/PoolService.sol +129 -0
  255. package/contracts/instance/service/ProductService.sol +366 -0
  256. package/contracts/registry/ChainNft.sol +80 -94
  257. package/contracts/registry/IChainNft.sol +10 -7
  258. package/contracts/registry/IRegistry.sol +40 -51
  259. package/contracts/registry/IRegistryLinked.sol +8 -0
  260. package/contracts/registry/Registry.sol +312 -107
  261. package/contracts/shared/ERC165.sol +21 -0
  262. package/contracts/shared/IOwnable.sol +6 -0
  263. package/contracts/shared/IRegisterable.sol +24 -0
  264. package/contracts/shared/IVersionable.sol +52 -0
  265. package/contracts/shared/Registerable.sol +86 -0
  266. package/contracts/shared/Versionable.sol +89 -0
  267. package/contracts/test/TestFee.sol +25 -0
  268. package/contracts/test/TestPool.sol +24 -0
  269. package/contracts/test/TestProduct.sol +51 -0
  270. package/contracts/test/TestRegisterable.sol +19 -0
  271. package/contracts/test/TestRoleId.sol +14 -0
  272. package/contracts/test/TestService.sol +32 -0
  273. package/contracts/test/TestToken.sol +26 -0
  274. package/contracts/test/TestVersion.sol +44 -0
  275. package/contracts/test/TestVersionable.sol +17 -0
  276. package/contracts/test/Usdc.sol +26 -0
  277. package/contracts/types/AddressSet.sol +58 -0
  278. package/contracts/types/Blocknumber.sol +118 -0
  279. package/contracts/types/ChainId.sol +24 -10
  280. package/contracts/types/Fee.sol +51 -0
  281. package/contracts/types/Key32.sol +45 -0
  282. package/contracts/types/NftId.sol +55 -8
  283. package/contracts/types/NftIdSet.sol +60 -0
  284. package/contracts/types/ObjectType.sol +123 -0
  285. package/contracts/types/RoleId.sol +38 -0
  286. package/contracts/types/StateId.sol +101 -0
  287. package/contracts/types/Timestamp.sol +123 -0
  288. package/contracts/types/UFixed.sol +209 -0
  289. package/contracts/types/Version.sol +95 -0
  290. package/package.json +19 -5
  291. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  292. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  293. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  294. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  295. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  296. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  297. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  298. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  299. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  300. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  301. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
  302. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  303. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  304. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  305. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  306. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  307. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -105
  308. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  309. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  310. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  311. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  312. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  313. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  314. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  315. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  316. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  317. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  318. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  319. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  320. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  321. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  322. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  323. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  324. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  325. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  326. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  327. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  328. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -125
  329. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  330. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  331. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  332. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  333. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  334. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  335. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  336. package/contracts/components/Component.sol +0 -62
  337. package/contracts/components/IPool.sol +0 -9
  338. package/contracts/components/IProduct.sol +0 -11
  339. package/contracts/instance/access/Access.sol +0 -218
  340. package/contracts/instance/access/IAccess.sol +0 -83
  341. package/contracts/instance/component/ComponentModule.sol +0 -246
  342. package/contracts/instance/component/IComponent.sol +0 -94
  343. package/contracts/instance/policy/IPolicy.sol +0 -66
  344. package/contracts/instance/policy/PolicyModule.sol +0 -106
  345. package/contracts/instance/pool/IPoolModule.sol +0 -40
  346. package/contracts/instance/pool/PoolModule.sol +0 -83
  347. package/contracts/instance/product/IProductService.sol +0 -45
  348. package/contracts/instance/product/ProductService.sol +0 -105
@@ -0,0 +1,94 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {IRegisterable} from "../shared/IRegisterable.sol";
7
+ import {Registerable} from "../shared/Registerable.sol";
8
+
9
+ import {IRegistry} from "../registry/IRegistry.sol";
10
+ import {IInstance} from "../instance/IInstance.sol";
11
+
12
+ import {IInstance} from "../instance/IInstance.sol";
13
+ import {IComponent, IComponentModule} from "../instance/module/component/IComponent.sol";
14
+ import {IComponentOwnerService} from "../instance/service/IComponentOwnerService.sol";
15
+ import {IBaseComponent} from "./IBaseComponent.sol";
16
+ import {Fee, FeeLib} from "../types/Fee.sol";
17
+ import {NftId} from "../types/NftId.sol";
18
+
19
+ abstract contract BaseComponent is
20
+ Registerable,
21
+ IBaseComponent
22
+ {
23
+ IComponentOwnerService internal _componentOwnerService;
24
+
25
+ address internal _deployer;
26
+ address internal _wallet;
27
+ IERC20Metadata internal _token;
28
+ IInstance internal _instance;
29
+ bool internal _isRegistered;
30
+ Fee internal _zeroFee;
31
+
32
+ constructor(
33
+ address registry,
34
+ NftId instanceNftId,
35
+ address token
36
+ )
37
+ Registerable(registry, instanceNftId)
38
+ {
39
+ IRegistry.ObjectInfo memory instanceInfo = _registry.getObjectInfo(instanceNftId);
40
+ _instance = IInstance(instanceInfo.objectAddress);
41
+ require(
42
+ _instance.supportsInterface(type(IInstance).interfaceId),
43
+ ""
44
+ );
45
+
46
+ _componentOwnerService = _instance.getComponentOwnerService();
47
+ _wallet = address(this);
48
+ _token = IERC20Metadata(token);
49
+ _isRegistered = false;
50
+ _zeroFee = FeeLib.zeroFee();
51
+ }
52
+
53
+ // from registerable
54
+ function register() public override(IRegisterable, Registerable) returns (NftId componentId) {
55
+ require(msg.sender == getOwner(), "");
56
+ require(
57
+ address(_registry) != address(0),
58
+ "ERROR:COB-001:REGISTRY_ZERO"
59
+ );
60
+ require(
61
+ _registry.isRegistered(address(_instance)),
62
+ "ERROR:COB:INSTANCE_NOT_REGISTERED"
63
+ );
64
+
65
+ _isRegistered = true;
66
+ return _componentOwnerService.register(this);
67
+ }
68
+
69
+ // from component contract
70
+ function lock() external onlyOwner override {
71
+ _componentOwnerService.lock(this);
72
+ }
73
+
74
+ function unlock() external onlyOwner override {
75
+ _componentOwnerService.unlock(this);
76
+ }
77
+
78
+ function getWallet()
79
+ external
80
+ view
81
+ override
82
+ returns (address walletAddress)
83
+ {
84
+ return _wallet;
85
+ }
86
+
87
+ function getToken() external view override returns (IERC20Metadata token) {
88
+ return _token;
89
+ }
90
+
91
+ function getInstance() external view override returns (IInstance instance) {
92
+ return _instance;
93
+ }
94
+ }
@@ -0,0 +1,19 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {IRegisterable} from "../shared/IRegisterable.sol";
7
+ import {IInstanceLinked} from "../instance/IInstanceLinked.sol";
8
+
9
+ interface IBaseComponent is IRegisterable, IInstanceLinked {
10
+
11
+ function lock() external;
12
+
13
+ function unlock() external;
14
+
15
+ function getToken() external view returns (IERC20Metadata token);
16
+
17
+ function getWallet() external view returns (address walletAddress);
18
+
19
+ }
@@ -0,0 +1,57 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {NftId} from "../types/NftId.sol";
5
+ import {Fee} from "../types/Fee.sol";
6
+ import {UFixed} from "../types/UFixed.sol";
7
+ import {IBaseComponent} from "./IBaseComponent.sol";
8
+
9
+ interface IPoolComponent is IBaseComponent {
10
+
11
+ event LogUnderwrittenByPool(NftId policyNftId, uint256 collateralizationAmount, address pool);
12
+
13
+ /**
14
+ * @dev creates a new bundle for this pool.
15
+ */
16
+ function createBundle(
17
+ uint256 initialAmount,
18
+ uint256 lifetime,
19
+ bytes memory filter
20
+ ) external returns(NftId bundleNftId);
21
+
22
+ /**
23
+ * @dev this is a callback function that is called by the product service when underwriting a policy.
24
+ * the pool has the option to check the details and object to underwriting by reverting.
25
+ * the function is only called for "active" pools that ask to be involved/notified
26
+ * by product related state changes.
27
+ */
28
+ function underwrite(
29
+ NftId policyNftId,
30
+ bytes memory policyData,
31
+ bytes memory bundleFilter,
32
+ uint256 collateralizationAmount
33
+ ) external;
34
+
35
+ /**
36
+ * @dev returns true iff the policy application data in policyData matches
37
+ * with the bundle filter criteria encoded in bundleFilter.
38
+ */
39
+ function policyMatchesBundle(
40
+ bytes memory policyData,
41
+ bytes memory bundleFilter
42
+ )
43
+ external
44
+ view
45
+ returns (bool isMatching);
46
+
47
+ function isVerifying() external view returns (bool verifying);
48
+
49
+ function getCollateralizationLevel() external view returns (UFixed collateralizationLevel);
50
+
51
+ function getStakingFee() external view returns (Fee memory stakingFee);
52
+
53
+ function getPerformanceFee()
54
+ external
55
+ view
56
+ returns (Fee memory performanceFee);
57
+ }
@@ -0,0 +1,19 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {NftId} from "../types/NftId.sol";
5
+ import {Fee} from "../types/Fee.sol";
6
+ import {IBaseComponent} from "./IBaseComponent.sol";
7
+
8
+ interface IProductComponent is IBaseComponent {
9
+ function setFees(
10
+ Fee memory policyFee,
11
+ Fee memory processingFee
12
+ ) external;
13
+
14
+ function getPoolNftId() external view returns (NftId poolNftId);
15
+
16
+ function getPolicyFee() external view returns (Fee memory policyFee);
17
+
18
+ function getProcessingFee() external view returns (Fee memory processingFee);
19
+ }
@@ -1,29 +1,191 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {IPoolComponent} from "./IPool.sol";
5
- import {Component} from "./Component.sol";
4
+ import {ObjectType, POOL} from "../types/ObjectType.sol";
5
+ import {IProductService} from "../instance/service/IProductService.sol";
6
+ import {IPoolService} from "../instance/service/IPoolService.sol";
7
+ import {NftId} from "../types/NftId.sol";
8
+ import {Fee} from "../types/Fee.sol";
9
+ import {UFixed} from "../types/UFixed.sol";
10
+ import {IPoolComponent} from "./IPoolComponent.sol";
11
+ import {BaseComponent} from "./BaseComponent.sol";
6
12
 
13
+ contract Pool is BaseComponent, IPoolComponent {
7
14
 
8
- contract Pool is
9
- Component,
10
- IPoolComponent
11
- {
15
+ bool internal _isVerifying;
16
+ UFixed internal _collateralizationLevel;
17
+
18
+ Fee internal _initialStakingFee;
19
+ Fee internal _initialPerformanceFee;
20
+
21
+ // may be used to interact with instance by derived contracts
22
+ IPoolService internal _poolService;
23
+
24
+ // only relevant to protect callback functions for "active" pools
25
+ IProductService private _productService;
26
+
27
+ modifier onlyPoolService() {
28
+ require(
29
+ msg.sender == address(_poolService),
30
+ "ERROR:POL-001:NOT_POOL_SERVICE");
31
+ _;
32
+ }
33
+
34
+ modifier onlyProductService() {
35
+ require(
36
+ msg.sender == address(_productService),
37
+ "ERROR:POL-002:NOT_PRODUCT_SERVICE");
38
+ _;
39
+ }
12
40
 
13
41
  constructor(
14
- address registry,
15
- address instance
42
+ address registry,
43
+ NftId instanceNftId,
44
+ // TODO refactor into tokenNftId
45
+ address token,
46
+ bool verifying,
47
+ UFixed collateralizationLevel,
48
+ Fee memory stakingFee,
49
+ Fee memory performanceFee
16
50
  )
17
- Component(registry, instance)
18
- { }
51
+ BaseComponent(registry, instanceNftId, token)
52
+ {
53
+ _isVerifying = verifying;
54
+ // TODO add validation
55
+ _collateralizationLevel = collateralizationLevel;
56
+ _initialStakingFee = stakingFee;
57
+ _initialPerformanceFee = performanceFee;
19
58
 
20
- // from registerable
21
- function getType() public view override returns(uint256) {
22
- return _registry.POOL();
59
+ _poolService = _instance.getPoolService();
60
+ _productService = _instance.getProductService();
61
+ }
62
+
63
+ function createBundle(
64
+ uint256 initialAmount,
65
+ uint256 lifetime,
66
+ bytes memory filter
67
+ )
68
+ external
69
+ virtual override
70
+ returns(NftId bundleNftId)
71
+ {
72
+ address owner = msg.sender;
73
+ bundleNftId = _poolService.createBundle(
74
+ owner,
75
+ initialAmount,
76
+ lifetime,
77
+ filter
78
+ );
79
+
80
+ // TODO add logging
81
+ }
82
+
83
+ /**
84
+ * @dev see {IPool.underwrite}.
85
+ * Default implementation that only writes a {LogUnderwrittenByPool} entry.
86
+ */
87
+ function underwrite(
88
+ NftId policyNftId,
89
+ bytes memory policyData,
90
+ bytes memory bundleFilter,
91
+ uint256 collateralizationAmount
92
+ )
93
+ external
94
+ onlyProductService
95
+ virtual override
96
+ {
97
+ _underwrite(policyNftId, policyData, bundleFilter, collateralizationAmount);
98
+ }
99
+
100
+ /**
101
+ * @dev see {IPoolComponent.policyMatchesBundle}.
102
+ * Default implementation always returns true
103
+ */
104
+ function policyMatchesBundle(
105
+ bytes memory, // policyData
106
+ bytes memory // bundleFilter
107
+ )
108
+ public
109
+ view
110
+ virtual override
111
+ returns (bool isMatching)
112
+ {
113
+ return true;
114
+ }
115
+
116
+
117
+ function isVerifying() external view override returns (bool verifying) {
118
+ return _isVerifying;
119
+ }
120
+
121
+ function getCollateralizationLevel() external view override returns (UFixed collateralizationLevel) {
122
+ return _collateralizationLevel;
123
+ }
124
+
125
+ function _underwrite(
126
+ NftId policyNftId,
127
+ bytes memory policyData,
128
+ bytes memory bundleFilter,
129
+ uint256 collateralizationAmount
130
+ )
131
+ internal
132
+ {
133
+ require(
134
+ policyMatchesBundle(policyData, bundleFilter),
135
+ "ERROR:POL-020:POLICY_BUNDLE_MISMATCH"
136
+ );
137
+
138
+ emit LogUnderwrittenByPool(policyNftId, collateralizationAmount, address(this));
139
+ }
140
+
141
+ function _createBundle(
142
+ address bundleOwner,
143
+ uint256 amount,
144
+ uint256 lifetime,
145
+ bytes calldata filter
146
+ )
147
+ internal
148
+ returns(NftId bundleNftId)
149
+ {
150
+ bundleNftId = _poolService.createBundle(
151
+ bundleOwner,
152
+ amount,
153
+ lifetime,
154
+ filter
155
+ );
156
+ }
157
+
158
+ // from pool component
159
+ function getStakingFee()
160
+ external
161
+ view
162
+ override
163
+ returns (Fee memory stakingFee)
164
+ {
165
+ NftId productNftId = _instance.getProductNftId(getNftId());
166
+ if (productNftId.gtz()) {
167
+ return _instance.getTreasuryInfo(productNftId).stakingFee;
168
+ } else {
169
+ return _initialStakingFee;
170
+ }
171
+ }
172
+
173
+ function getPerformanceFee()
174
+ external
175
+ view
176
+ override
177
+ returns (Fee memory performanceFee)
178
+ {
179
+ NftId productNftId = _instance.getProductNftId(getNftId());
180
+ if (productNftId.gtz()) {
181
+ return _instance.getTreasuryInfo(productNftId).performanceFee;
182
+ } else {
183
+ return _initialPerformanceFee;
184
+ }
23
185
  }
24
186
 
25
187
  // from registerable
26
- function getData() external view override returns(bytes memory data) {
27
- return bytes(abi.encode(getInstance().getNftId()));
188
+ function getType() public pure override returns (ObjectType) {
189
+ return POOL();
28
190
  }
29
- }
191
+ }
@@ -1,27 +1,34 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {IProductService} from "../instance/product/IProductService.sol";
5
- import {Component} from "./Component.sol";
6
- import {IProductComponent} from "./IProduct.sol";
4
+ import {ITreasury} from "../instance/module/treasury/ITreasury.sol";
5
+ import {IProductService} from "../instance/service/IProductService.sol";
6
+ import {IProductComponent} from "./IProductComponent.sol";
7
+ import {NftId} from "../types/NftId.sol";
8
+ import {ObjectType, PRODUCT} from "../types/ObjectType.sol";
9
+ import {Timestamp} from "../types/Timestamp.sol";
10
+ import {Fee} from "../types/Fee.sol";
11
+ import {BaseComponent} from "./BaseComponent.sol";
7
12
 
8
-
9
- contract Product is
10
- Component,
11
- IProductComponent
12
- {
13
- IProductService private _productService;
14
- address private _pool;
13
+ contract Product is BaseComponent, IProductComponent {
14
+ IProductService internal _productService;
15
+ address internal _pool;
16
+ Fee internal _initialPolicyFee;
17
+ Fee internal _initialProcessingFee;
15
18
 
16
19
  constructor(
17
- address registry,
18
- address instance,
19
- address pool
20
- )
21
- Component(registry, instance)
22
- {
20
+ address registry,
21
+ NftId instanceNftid,
22
+ address token,
23
+ address pool,
24
+ Fee memory policyFee,
25
+ Fee memory processingFee
26
+ ) BaseComponent(registry, instanceNftid, token) {
27
+ // TODO add validation
23
28
  _productService = _instance.getProductService();
24
29
  _pool = pool;
30
+ _initialPolicyFee = policyFee;
31
+ _initialProcessingFee = processingFee;
25
32
  }
26
33
 
27
34
  function _createApplication(
@@ -29,11 +36,8 @@ contract Product is
29
36
  uint256 sumInsuredAmount,
30
37
  uint256 premiumAmount,
31
38
  uint256 lifetime,
32
- uint256 bundleNftId
33
- )
34
- internal
35
- returns(uint256 nftId)
36
- {
39
+ NftId bundleNftId
40
+ ) internal returns (NftId nftId) {
37
41
  nftId = _productService.createApplication(
38
42
  applicationOwner,
39
43
  sumInsuredAmount,
@@ -43,23 +47,88 @@ contract Product is
43
47
  );
44
48
  }
45
49
 
46
- function _underwrite(uint256 nftId)
50
+ function _underwrite(
51
+ NftId policyNftId,
52
+ bool requirePremiumPayment,
53
+ Timestamp activateAt
54
+ )
55
+ internal
56
+ {
57
+ _productService.underwrite(
58
+ policyNftId,
59
+ requirePremiumPayment,
60
+ activateAt);
61
+ }
62
+
63
+ function _collectPremium(
64
+ NftId policyNftId,
65
+ Timestamp activateAt
66
+ )
67
+ internal
68
+ {
69
+ _productService.collectPremium(
70
+ policyNftId,
71
+ activateAt);
72
+ }
73
+
74
+ function _activate(
75
+ NftId policyNftId,
76
+ Timestamp activateAt
77
+ )
47
78
  internal
48
79
  {
49
- _productService.underwrite(nftId);
80
+ _productService.activate(
81
+ policyNftId,
82
+ activateAt);
50
83
  }
51
84
 
52
- function getPoolNftId() external view override returns(uint256 poolNftId) {
85
+ function getPoolNftId() external view override returns (NftId poolNftId) {
53
86
  return _registry.getNftId(_pool);
54
87
  }
55
88
 
56
- // from registerable
57
- function getType() public view override returns(uint256) {
58
- return _registry.PRODUCT();
89
+ // from product component
90
+ function setFees(
91
+ Fee memory policyFee,
92
+ Fee memory processingFee
93
+ )
94
+ external
95
+ onlyOwner
96
+ override
97
+ {
98
+ _productService.setFees(policyFee, processingFee);
99
+ }
100
+
101
+
102
+ function getPolicyFee()
103
+ external
104
+ view
105
+ override
106
+ returns (Fee memory policyFee)
107
+ {
108
+ NftId productNftId = getNftId();
109
+ if (address(_instance.getTokenHandler(productNftId)) != address(0)) {
110
+ return _instance.getTreasuryInfo(productNftId).policyFee;
111
+ } else {
112
+ return _initialPolicyFee;
113
+ }
114
+ }
115
+
116
+ function getProcessingFee()
117
+ external
118
+ view
119
+ override
120
+ returns (Fee memory processingFee)
121
+ {
122
+ NftId productNftId = getNftId();
123
+ if (address(_instance.getTokenHandler(productNftId)) != address(0)) {
124
+ return _instance.getTreasuryInfo(productNftId).processingFee;
125
+ } else {
126
+ return _initialProcessingFee;
127
+ }
59
128
  }
60
129
 
61
130
  // from registerable
62
- function getData() external view override returns(bytes memory data) {
63
- return bytes(abi.encode(getInstance().getNftId()));
131
+ function getType() public pure override returns (ObjectType) {
132
+ return PRODUCT();
64
133
  }
65
- }
134
+ }
@@ -2,7 +2,6 @@
2
2
  pragma solidity ^0.8.19;
3
3
 
4
4
  contract Require {
5
-
6
5
  error AsmallerThanB_S();
7
6
  error AsmallerThanB_M(uint a);
8
7
  error AsmallerThanB_L(uint a, uint b);
@@ -13,21 +12,27 @@ contract Require {
13
12
  _b = 42;
14
13
  }
15
14
 
16
- function isAlargerThanBRequire_S(uint a) external view returns(bool isLarger) {
15
+ function isAlargerThanBRequire_S(
16
+ uint a
17
+ ) external view returns (bool isLarger) {
17
18
  require(a > _b, "ERROR:ABC-001");
18
19
 
19
20
  return true;
20
21
  }
21
22
 
22
- function isAlargerThanBRequire_M(uint a) external view returns(bool isLarger) {
23
+ function isAlargerThanBRequire_M(
24
+ uint a
25
+ ) external view returns (bool isLarger) {
23
26
  require(a > _b, "ERROR:ABC-002:A_IS_SMALLER");
24
27
 
25
28
  return true;
26
29
  }
27
30
 
28
- function isAlargerThanBRequire_L(uint a) external view returns(bool isLarger) {
31
+ function isAlargerThanBRequire_L(
32
+ uint a
33
+ ) external view returns (bool isLarger) {
29
34
  require(a > _b, "ERROR:ABC-003:A_IS_SMALLER_THAN_B");
30
35
 
31
36
  return true;
32
37
  }
33
- }
38
+ }
@@ -2,7 +2,6 @@
2
2
  pragma solidity ^0.8.19;
3
3
 
4
4
  contract Revert {
5
-
6
5
  error AsmallerThanB_S();
7
6
  error AsmallerThanB_M(uint a);
8
7
  error AsmallerThanB_L(uint a, uint b);
@@ -13,27 +12,33 @@ contract Revert {
13
12
  _b = 42;
14
13
  }
15
14
 
16
- function isAlargerThanBRevert_S(uint a) external view returns(bool isLarger) {
17
- if(a <= _b) {
15
+ function isAlargerThanBRevert_S(
16
+ uint a
17
+ ) external view returns (bool isLarger) {
18
+ if (a <= _b) {
18
19
  revert AsmallerThanB_S();
19
20
  }
20
21
 
21
22
  return true;
22
23
  }
23
24
 
24
- function isAlargerThanBRevert_M(uint a) external view returns(bool isLarger) {
25
- if(a <= _b) {
25
+ function isAlargerThanBRevert_M(
26
+ uint a
27
+ ) external view returns (bool isLarger) {
28
+ if (a <= _b) {
26
29
  revert AsmallerThanB_M(a);
27
30
  }
28
31
 
29
32
  return true;
30
33
  }
31
34
 
32
- function isAlargerThanBRevert_L(uint a) external view returns(bool isLarger) {
33
- if(a <= _b) {
35
+ function isAlargerThanBRevert_L(
36
+ uint a
37
+ ) external view returns (bool isLarger) {
38
+ if (a <= _b) {
34
39
  revert AsmallerThanB_L(a, _b);
35
40
  }
36
41
 
37
42
  return true;
38
43
  }
39
- }
44
+ }
@@ -35,22 +35,19 @@ a.setC(20);
35
35
  */
36
36
 
37
37
  contract AShared is ISharedA {
38
-
39
38
  uint256 private _x;
40
39
 
41
40
  constructor() {
42
41
  _x = 42;
43
42
  }
44
43
 
45
- function getA() external view override returns(uint256) { return _x; }
46
- function setA(uint256 newA) external override { _x = newA; }
47
- }
48
-
49
- contract A is
50
- AShared,
51
- B,
52
- C,
53
- IA
54
- {
44
+ function getA() external view override returns (uint256) {
45
+ return _x;
46
+ }
55
47
 
48
+ function setA(uint256 newA) external override {
49
+ _x = newA;
50
+ }
56
51
  }
52
+
53
+ contract A is AShared, B, C, IA {}