@etherisc/gif-next 0.0.2-fc8b370-882 → 0.0.2-fd275d2-234

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 (386) hide show
  1. package/README.md +222 -1
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +176 -23
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +618 -0
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +129 -23
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +152 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +74 -181
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +55 -177
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +463 -63
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +494 -70
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
  21. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
  22. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
  23. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
  24. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  36. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  39. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  40. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  41. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  42. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  43. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  44. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +4 -0
  45. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +101 -0
  46. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +4 -0
  47. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +1132 -0
  48. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  49. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +809 -0
  50. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  51. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
  52. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +4 -0
  53. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +1082 -0
  54. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +923 -1091
  56. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  57. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +485 -0
  58. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  59. package/artifacts/contracts/instance/Instance.sol/Instance.json +2540 -1128
  60. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  61. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +917 -0
  62. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  63. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1422 -0
  64. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +970 -0
  66. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +512 -0
  68. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  69. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +272 -0
  70. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
  71. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +276 -36
  72. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  73. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +51 -1
  74. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +45 -127
  76. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  77. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  78. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +55 -245
  79. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  80. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +4 -4
  81. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  82. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +211 -0
  83. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  84. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  85. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  86. package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IDistribution.sol/IDistribution.json} +2 -2
  87. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  88. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  89. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  90. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  91. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  92. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  93. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  94. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  95. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  96. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +381 -77
  97. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  98. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +716 -0
  99. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  100. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +444 -0
  101. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  102. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +177 -75
  103. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  104. package/artifacts/contracts/instance/{base/ServiceBase.sol/ServiceBase.json → service/IDistributionService.sol/IDistributionService.json} +204 -58
  105. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  106. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +342 -49
  107. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  108. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +334 -51
  109. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  110. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +551 -51
  111. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  112. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +460 -0
  113. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  114. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +552 -78
  115. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  116. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +488 -0
  117. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  118. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +186 -12
  119. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  120. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +377 -37
  121. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  122. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +947 -0
  123. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  124. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  125. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  126. package/artifacts/contracts/registry/Registry.sol/Registry.json +487 -123
  127. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  128. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1293 -0
  129. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  130. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +517 -0
  131. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  132. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +410 -0
  133. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  134. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  135. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  136. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  137. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  138. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +127 -0
  139. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  140. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +117 -37
  141. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  142. package/artifacts/contracts/{instance/base → shared}/IService.sol/IService.json +175 -54
  143. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  144. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -14
  145. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  146. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
  147. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  148. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
  149. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  150. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +190 -37
  151. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
  152. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/RegisterableUpgradable.sol/RegisterableUpgradable.json} +199 -83
  153. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  154. package/artifacts/contracts/shared/Service.sol/Service.json +468 -0
  155. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  156. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  157. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  158. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  159. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  160. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -14
  161. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  162. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  163. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  164. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +204 -36
  165. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  166. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  167. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  168. package/artifacts/contracts/test/TestService.sol/TestService.json +283 -62
  169. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  170. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  171. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  172. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  173. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  174. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +103 -23
  175. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  176. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  177. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  178. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  181. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  182. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/Fee.sol/FeeLib.json +52 -13
  184. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  185. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  186. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  188. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  189. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  190. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  191. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  192. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  194. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  195. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  196. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  197. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  198. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  199. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  200. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  201. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  202. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  203. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +15 -2
  204. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  205. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  206. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  207. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  208. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  209. package/artifacts/contracts/types/Version.sol/VersionLib.json +40 -2
  210. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  211. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  212. package/contracts/components/BaseComponent.sol +26 -23
  213. package/contracts/components/Distribution.sol +163 -0
  214. package/contracts/components/IBaseComponent.sol +9 -3
  215. package/contracts/components/IDistributionComponent.sol +44 -0
  216. package/contracts/components/IPoolComponent.sol +15 -10
  217. package/contracts/components/IProductComponent.sol +25 -9
  218. package/contracts/components/Pool.sol +106 -33
  219. package/contracts/components/Product.sol +204 -32
  220. package/contracts/experiment/cloning/Cloner.sol +47 -0
  221. package/contracts/instance/AccessManagedSimple.sol +115 -0
  222. package/contracts/instance/AccessManagerSimple.sol +692 -0
  223. package/contracts/instance/BundleManager.sol +152 -0
  224. package/contracts/instance/Cloneable.sol +46 -0
  225. package/contracts/instance/IAccessManagerSimple.sol +391 -0
  226. package/contracts/instance/IInstance.sol +49 -45
  227. package/contracts/instance/IInstanceService.sol +32 -0
  228. package/contracts/instance/Instance.sol +437 -51
  229. package/contracts/instance/InstanceAccessManager.sol +288 -0
  230. package/contracts/instance/InstanceReader.sol +315 -0
  231. package/contracts/instance/InstanceService.sol +232 -0
  232. package/contracts/instance/InstanceServiceManager.sol +57 -0
  233. package/contracts/instance/ObjectManager.sol +95 -0
  234. package/contracts/instance/base/ComponentServiceBase.sol +102 -10
  235. package/contracts/instance/base/IInstanceBase.sol +11 -2
  236. package/contracts/instance/base/IKeyValueStore.sol +13 -13
  237. package/contracts/instance/base/ILifecycle.sol +3 -3
  238. package/contracts/instance/base/KeyValueStore.sol +53 -37
  239. package/contracts/instance/base/Lifecycle.sol +16 -11
  240. package/contracts/instance/module/IAccess.sol +38 -0
  241. package/contracts/instance/module/IBundle.sol +20 -0
  242. package/contracts/instance/module/IDistribution.sol +39 -0
  243. package/contracts/instance/module/IPolicy.sol +45 -0
  244. package/contracts/instance/module/IRisk.sol +11 -0
  245. package/contracts/instance/module/ISetup.sol +46 -0
  246. package/contracts/instance/module/ITreasury.sol +23 -0
  247. package/contracts/instance/service/ComponentOwnerService.sol +244 -97
  248. package/contracts/instance/service/DistributionService.sol +88 -0
  249. package/contracts/instance/service/DistributionServiceManager.sol +54 -0
  250. package/contracts/instance/service/IComponentOwnerService.sol +1 -3
  251. package/contracts/instance/service/IDistributionService.sol +12 -0
  252. package/contracts/instance/service/IPoolService.sol +14 -1
  253. package/contracts/instance/service/IProductService.sol +59 -7
  254. package/contracts/instance/service/PoolService.sol +125 -42
  255. package/contracts/instance/service/PoolServiceManager.sol +54 -0
  256. package/contracts/instance/service/ProductService.sol +340 -133
  257. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  258. package/contracts/registry/ChainNft.sol +80 -37
  259. package/contracts/registry/IRegistry.sol +49 -25
  260. package/contracts/registry/IRegistryService.sol +50 -0
  261. package/contracts/registry/ITransferInterceptor.sol +6 -0
  262. package/contracts/registry/Registry.sol +337 -270
  263. package/contracts/registry/RegistryService.sol +358 -0
  264. package/contracts/registry/RegistryServiceManager.sol +80 -0
  265. package/contracts/registry/TokenRegistry.sol +111 -0
  266. package/contracts/shared/ContractDeployerLib.sol +72 -0
  267. package/contracts/shared/ERC165.sol +6 -2
  268. package/contracts/shared/INftOwnable.sol +22 -0
  269. package/contracts/shared/IRegisterable.sol +8 -15
  270. package/contracts/{instance/base → shared}/IService.sol +3 -3
  271. package/contracts/shared/IVersionable.sol +55 -11
  272. package/contracts/shared/NftOwnable.sol +134 -0
  273. package/contracts/shared/ProxyManager.sol +94 -0
  274. package/contracts/shared/Registerable.sol +63 -59
  275. package/contracts/shared/RegisterableUpgradable.sol +16 -0
  276. package/contracts/shared/Service.sol +55 -0
  277. package/contracts/shared/TokenHandler.sol +27 -0
  278. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  279. package/contracts/shared/Versionable.sol +113 -55
  280. package/contracts/test/TestFee.sol +2 -2
  281. package/contracts/test/TestRegisterable.sol +5 -6
  282. package/contracts/test/TestRoleId.sol +1 -1
  283. package/contracts/test/TestService.sol +5 -13
  284. package/contracts/types/DistributorType.sol +55 -0
  285. package/contracts/types/Fee.sol +10 -5
  286. package/contracts/types/Key32.sol +8 -3
  287. package/contracts/types/NftIdSet.sol +26 -24
  288. package/contracts/types/NumberId.sol +52 -0
  289. package/contracts/types/ObjectType.sol +51 -14
  290. package/contracts/types/Referral.sol +85 -0
  291. package/contracts/types/RiskId.sol +43 -0
  292. package/contracts/types/RoleId.sol +62 -10
  293. package/contracts/types/StateId.sol +5 -1
  294. package/contracts/types/Timestamp.sol +7 -3
  295. package/contracts/types/UFixed.sol +128 -12
  296. package/contracts/types/Version.sol +13 -1
  297. package/package.json +4 -3
  298. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  299. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  300. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  301. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  302. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  303. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  304. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  305. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  306. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  307. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  308. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  309. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  310. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -296
  311. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  312. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  313. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -296
  314. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
  315. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
  316. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
  317. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
  318. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
  319. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
  320. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  321. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  322. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  323. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  324. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  325. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  326. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  327. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  328. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  329. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  330. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  331. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  332. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  333. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  334. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  335. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  336. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  337. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  338. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  339. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -10
  340. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  341. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -10
  342. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  343. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  344. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -533
  345. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  346. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  347. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  348. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -533
  349. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  350. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  351. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  352. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  353. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  354. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  355. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  356. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  357. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  358. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  359. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  360. package/contracts/experiment/statemachine/README.md +0 -112
  361. package/contracts/instance/IInstanceLinked.sol +0 -8
  362. package/contracts/instance/base/InstanceBase.sol +0 -80
  363. package/contracts/instance/base/ModuleBase.sol +0 -52
  364. package/contracts/instance/base/ServiceBase.sol +0 -37
  365. package/contracts/instance/module/access/Access.sol +0 -149
  366. package/contracts/instance/module/access/IAccess.sol +0 -53
  367. package/contracts/instance/module/bundle/BundleModule.sol +0 -136
  368. package/contracts/instance/module/bundle/IBundle.sol +0 -58
  369. package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
  370. package/contracts/instance/module/compensation/ICompensation.sol +0 -10
  371. package/contracts/instance/module/component/ComponentModule.sol +0 -95
  372. package/contracts/instance/module/component/IComponent.sol +0 -53
  373. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  374. package/contracts/instance/module/policy/PolicyModule.sol +0 -76
  375. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  376. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  377. package/contracts/instance/module/risk/IRisk.sol +0 -10
  378. package/contracts/instance/module/risk/RiskModule.sol +0 -8
  379. package/contracts/instance/module/treasury/ITreasury.sol +0 -103
  380. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  381. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
  382. package/contracts/registry/IChainNft.sol +0 -21
  383. package/contracts/registry/IRegistryLinked.sol +0 -8
  384. package/contracts/shared/IOwnable.sol +0 -6
  385. package/contracts/test/TestPool.sol +0 -22
  386. package/contracts/test/TestProduct.sol +0 -44
@@ -1,12 +1,12 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Blocknumber, blockBlocknumber, zeroBlocknumber} from "../../types/Blocknumber.sol";
5
5
  import {Key32, KeyId, Key32Lib} from "../../types/Key32.sol";
6
6
  import {NftId} from "../../types/NftId.sol";
7
7
  import {ObjectType} from "../../types/ObjectType.sol";
8
8
  import {StateId, ACTIVE} from "../../types/StateId.sol";
9
- import {Timestamp, blockTimestamp, zeroTimestamp} from "../../types/Timestamp.sol";
9
+ import {Timestamp, TimestampLib} from "../../types/Timestamp.sol";
10
10
 
11
11
  import {Lifecycle} from "./Lifecycle.sol";
12
12
  import {IKeyValueStore} from "./IKeyValueStore.sol";
@@ -14,27 +14,23 @@ import {IKeyValueStore} from "./IKeyValueStore.sol";
14
14
  contract KeyValueStore is Lifecycle, IKeyValueStore {
15
15
 
16
16
  mapping(Key32 key32 => Value value) private _value;
17
- address private _owner;
18
17
 
19
- modifier onlyOwner() {
20
- require(
21
- msg.sender == _owner,
22
- "ERROR:KVS-001:NOT_OWNER");
23
- _;
24
- }
25
-
26
- constructor() {
27
- _owner = msg.sender;
18
+ function create(
19
+ Key32 key32,
20
+ bytes memory data
21
+ )
22
+ internal
23
+ {
24
+ _create(key32, data);
28
25
  }
29
26
 
30
- function create(
27
+ function _create(
31
28
  Key32 key32,
32
- ObjectType objectType,
33
29
  bytes memory data
34
30
  )
35
- public
36
- onlyOwner
31
+ internal
37
32
  {
33
+ ObjectType objectType = key32.toObjectType();
38
34
  require(objectType.gtz(), "ERROR:KVS-010:TYPE_UNDEFINED");
39
35
 
40
36
  Metadata storage metadata = _value[key32].metadata;
@@ -54,12 +50,26 @@ contract KeyValueStore is Lifecycle, IKeyValueStore {
54
50
  // set data
55
51
  _value[key32].data = data;
56
52
 
57
- emit LogInfoCreated(toKey(key32), initialState, createdBy);
53
+ // solhint-disable-next-line avoid-tx-origin
54
+ emit LogInfoCreated(key32.toObjectType(), key32.toKeyId(), initialState, createdBy, tx.origin);
58
55
  }
59
56
 
60
- function update(Key32 key32, StateId state, bytes memory data)
61
- public
62
- onlyOwner
57
+ function update(
58
+ Key32 key32,
59
+ bytes memory data,
60
+ StateId state
61
+ )
62
+ internal
63
+ {
64
+ _update(key32, data, state);
65
+ }
66
+
67
+ function _update(
68
+ Key32 key32,
69
+ bytes memory data,
70
+ StateId state
71
+ )
72
+ internal
63
73
  {
64
74
  require(state.gtz(), "ERROR:KVS-020:STATE_UNDEFINED");
65
75
  Metadata storage metadata = _value[key32].metadata;
@@ -77,14 +87,20 @@ contract KeyValueStore is Lifecycle, IKeyValueStore {
77
87
  metadata.updatedIn = blockBlocknumber();
78
88
 
79
89
  // create log entries
80
- Key memory key = toKey(key32);
81
- emit LogStateUpdated(key, state, stateOld, updatedBy, lastUpdatedIn);
82
- emit LogInfoUpdated(key, state, updatedBy, lastUpdatedIn);
90
+ // solhint-disable avoid-tx-origin
91
+ emit LogStateUpdated(key32.toObjectType(), key32.toKeyId(), state, stateOld, updatedBy, tx.origin, lastUpdatedIn);
92
+ emit LogInfoUpdated(key32.toObjectType(), key32.toKeyId(), state, updatedBy, tx.origin, lastUpdatedIn);
93
+ // solhing-enable
83
94
  }
84
95
 
85
96
  function updateData(Key32 key32, bytes memory data)
86
- public
87
- onlyOwner
97
+ internal
98
+ {
99
+ _updateData(key32, data);
100
+ }
101
+
102
+ function _updateData(Key32 key32, bytes memory data)
103
+ internal
88
104
  {
89
105
  Metadata storage metadata = _value[key32].metadata;
90
106
  StateId state = metadata.state;
@@ -100,13 +116,18 @@ contract KeyValueStore is Lifecycle, IKeyValueStore {
100
116
  metadata.updatedIn = blockBlocknumber();
101
117
 
102
118
  // create log entry
103
- Key memory key = toKey(key32);
104
- emit LogInfoUpdated(key, state, updatedBy, lastUpdatedIn);
119
+ // solhint-disable-next-line avoid-tx-origin
120
+ emit LogInfoUpdated(key32.toObjectType(), key32.toKeyId(), state, updatedBy, tx.origin, lastUpdatedIn);
105
121
  }
106
122
 
107
123
  function updateState(Key32 key32, StateId state)
108
- public
109
- onlyOwner
124
+ internal
125
+ {
126
+ _updateState(key32, state);
127
+ }
128
+
129
+ function _updateState(Key32 key32, StateId state)
130
+ internal
110
131
  {
111
132
  require(state.gtz(), "ERROR:KVS-040:STATE_UNDEFINED");
112
133
  Metadata storage metadata = _value[key32].metadata;
@@ -121,8 +142,8 @@ contract KeyValueStore is Lifecycle, IKeyValueStore {
121
142
  metadata.updatedIn = blockBlocknumber();
122
143
 
123
144
  // create log entry
124
- Key memory key = toKey(key32);
125
- emit LogStateUpdated(key, state, stateOld, updatedBy, lastUpdatedIn);
145
+ // solhint-disable-next-line avoid-tx-origin
146
+ emit LogStateUpdated(key32.toObjectType(), key32.toKeyId(), state, stateOld, updatedBy, tx.origin, lastUpdatedIn);
126
147
  }
127
148
 
128
149
  function exists(Key32 key32) public view returns (bool) {
@@ -145,12 +166,7 @@ contract KeyValueStore is Lifecycle, IKeyValueStore {
145
166
  return _value[key32].metadata.state;
146
167
  }
147
168
 
148
- function toKey32(ObjectType objectType, KeyId id) external pure returns(Key32) {
169
+ function toKey32(ObjectType objectType, KeyId id) external pure override returns(Key32) {
149
170
  return Key32Lib.toKey32(objectType, id);
150
171
  }
151
-
152
- function toKey(Key32 key32) public pure returns (Key memory key) {
153
- (ObjectType objectType, KeyId id) = key32.toKey();
154
- return Key(objectType, id);
155
- }
156
172
  }
@@ -1,8 +1,8 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import {NftId} from "../../types/NftId.sol";
5
- import {ObjectType, PRODUCT, ORACLE, POOL, BUNDLE, POLICY} from "../../types/ObjectType.sol";
5
+ import {ObjectType, COMPONENT, BUNDLE, POLICY, RISK} from "../../types/ObjectType.sol";
6
6
  import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, UNDERWRITTEN, REVOKED, DECLINED} from "../../types/StateId.sol";
7
7
  import {ILifecycle} from "./ILifecycle.sol";
8
8
 
@@ -14,12 +14,10 @@ contract Lifecycle is ILifecycle {
14
14
  private _isValidTransition;
15
15
 
16
16
  constructor() {
17
- _setupComponentLifecycle(PRODUCT());
18
- _setupComponentLifecycle(ORACLE());
19
- _setupComponentLifecycle(POOL());
20
-
21
17
  _setupBundleLifecycle();
18
+ _setupComponentLifecycle();
22
19
  _setupPolicyLifecycle();
20
+ _setupRiskLifecycle();
23
21
  }
24
22
 
25
23
  function hasLifecycle(
@@ -70,11 +68,11 @@ contract Lifecycle is ILifecycle {
70
68
  return _isValidTransition[objectType][fromId][toId];
71
69
  }
72
70
 
73
- function _setupComponentLifecycle(ObjectType objectType) internal {
74
- _initialState[objectType] = ACTIVE();
75
- _isValidTransition[objectType][ACTIVE()][PAUSED()] = true;
76
- _isValidTransition[objectType][PAUSED()][ACTIVE()] = true;
77
- _isValidTransition[objectType][PAUSED()][ARCHIVED()] = true;
71
+ function _setupComponentLifecycle() internal {
72
+ _initialState[COMPONENT()] = ACTIVE();
73
+ _isValidTransition[COMPONENT()][ACTIVE()][PAUSED()] = true;
74
+ _isValidTransition[COMPONENT()][PAUSED()][ACTIVE()] = true;
75
+ _isValidTransition[COMPONENT()][PAUSED()][ARCHIVED()] = true;
78
76
  }
79
77
 
80
78
  function _setupBundleLifecycle() internal {
@@ -92,4 +90,11 @@ contract Lifecycle is ILifecycle {
92
90
  _isValidTransition[POLICY()][UNDERWRITTEN()][ACTIVE()] = true;
93
91
  _isValidTransition[POLICY()][ACTIVE()][CLOSED()] = true;
94
92
  }
93
+
94
+ function _setupRiskLifecycle() internal {
95
+ _initialState[RISK()] = ACTIVE();
96
+ _isValidTransition[RISK()][ACTIVE()][PAUSED()] = true;
97
+ _isValidTransition[RISK()][PAUSED()][ACTIVE()] = true;
98
+ _isValidTransition[RISK()][PAUSED()][ARCHIVED()] = true;
99
+ }
95
100
  }
@@ -0,0 +1,38 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
5
+ import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
+
7
+ import {RoleId} from "../../types/RoleId.sol";
8
+
9
+ interface IAccess {
10
+ struct RoleInfo {
11
+ ShortString name;
12
+ bool isCustom;
13
+ }
14
+
15
+ struct TargetInfo {
16
+ ShortString name;
17
+ bool isCustom;
18
+ }
19
+
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);
37
+
38
+ }
@@ -0,0 +1,20 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {NftId} from "../../types/NftId.sol";
5
+ import {Fee} from "../../types/Fee.sol";
6
+ import {Timestamp} from "../../types/Timestamp.sol";
7
+
8
+ interface IBundle {
9
+ struct BundleInfo {
10
+ NftId poolNftId;
11
+ Fee fee; // bundle fee on net premium amounts
12
+ bytes filter; // required conditions for applications to be considered for collateralization by this bundle
13
+ uint256 capitalAmount; // net investment capital + net premiums - payouts
14
+ uint256 lockedAmount; // capital amount linked to collateralizaion of non-closed policies (<= balance)
15
+ uint256 balanceAmount; // total amount of funds: capitalAmount + fees (balance >= captial)
16
+ uint256 lifetime;
17
+ Timestamp expiredAt; // no new policies
18
+ Timestamp closedAt; // no open policies, locked amount = 0
19
+ }
20
+ }
@@ -0,0 +1,39 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {DistributorType} from "../../types/DistributorType.sol";
5
+ import {NftId} from "../../types/NftId.sol";
6
+ import {Timestamp} from "../../types/Timestamp.sol";
7
+ import {UFixed} from "../../types/UFixed.sol";
8
+
9
+ interface IDistribution {
10
+
11
+ struct DistributorTypeInfo {
12
+ string name;
13
+ UFixed minDiscountPercentage;
14
+ UFixed maxDiscountPercentage;
15
+ UFixed commissionPercentage;
16
+ uint32 maxReferralCount;
17
+ uint32 maxReferralLifetime;
18
+ bool allowSelfReferrals;
19
+ bool allowRenewals;
20
+ bytes data;
21
+ }
22
+
23
+ struct DistributorInfo {
24
+ DistributorType distributorType;
25
+ bool active;
26
+ bytes data;
27
+ }
28
+
29
+ struct ReferralInfo {
30
+ NftId distributorNftId;
31
+ string referralCode;
32
+ UFixed discountPercentage;
33
+ uint32 maxReferrals;
34
+ uint32 usedReferrals;
35
+ Timestamp expiryAt;
36
+ bytes data;
37
+ }
38
+
39
+ }
@@ -0,0 +1,45 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {NftId} from "../../types/NftId.sol";
5
+ import {NumberId} from "../../types/NumberId.sol";
6
+ import {ReferralId} from "../../types/Referral.sol";
7
+ import {RiskId} from "../../types/RiskId.sol";
8
+ import {Timestamp} from "../../types/Timestamp.sol";
9
+
10
+ interface IPolicy {
11
+ struct PolicyInfo {
12
+ NftId productNftId;
13
+ NftId bundleNftId;
14
+ ReferralId referralId;
15
+ RiskId riskId;
16
+ uint256 sumInsuredAmount;
17
+ uint256 premiumAmount;
18
+ uint256 premiumPaidAmount;
19
+ uint256 lifetime;
20
+ bytes applicationData;
21
+ bytes policyData;
22
+ uint16 claimsCount;
23
+ uint16 openClaimsCount;
24
+ uint256 payoutAmount;
25
+ Timestamp activatedAt; // time of underwriting
26
+ Timestamp expiredAt; // no new claims (activatedAt + lifetime)
27
+ Timestamp closedAt; // no locked capital (or declinedAt)
28
+ }
29
+
30
+ // claimId neeeds to be encoded policyNftId:claimId combination
31
+ struct ClaimInfo {
32
+ uint256 claimAmount;
33
+ uint256 paidAmount;
34
+ bytes data;
35
+ Timestamp closedAt; // payoment of confirmed claim amount (or declinedAt)
36
+ }
37
+
38
+ // claimId neeeds to be encoded policyNftId:claimId combination
39
+ struct PayoutInfo {
40
+ NumberId claimId;
41
+ uint256 amount;
42
+ bytes data;
43
+ Timestamp paidAt; // payoment of confirmed claim amount (or declinedAt)
44
+ }
45
+ }
@@ -0,0 +1,11 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {NftId} from "../../types/NftId.sol";
5
+
6
+ interface IRisk {
7
+ struct RiskInfo {
8
+ NftId productNftId;
9
+ bytes data;
10
+ }
11
+ }
@@ -0,0 +1,46 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {Fee} from "../../types/Fee.sol";
7
+ import {NftId} from "../../types/NftId.sol";
8
+ import {UFixed} from "../../types/UFixed.sol";
9
+ import {TokenHandler} from "../../shared/TokenHandler.sol";
10
+
11
+ interface ISetup {
12
+ struct ProductSetupInfo {
13
+ IERC20Metadata token;
14
+ TokenHandler tokenHandler;
15
+ NftId distributionNftId;
16
+ NftId poolNftId;
17
+ Fee distributionFee; // default distribution fee (no referral id)
18
+ Fee productFee; // product fee on net premium
19
+ Fee processingFee; // product fee on payout amounts
20
+ Fee poolFee; // pool fee on net premium
21
+ Fee stakingFee; // pool fee on staked capital from investor
22
+ Fee performanceFee; // pool fee on profits from capital investors
23
+ bool isIntercepting; // intercepts nft transfers (for products)
24
+ address wallet;
25
+ }
26
+
27
+ struct DistributionSetupInfo {
28
+ NftId productNftId;
29
+ TokenHandler tokenHandler;
30
+ Fee distributionFee; // default distribution fee (no referral id)
31
+ bool isIntercepting; // intercepts nft transfers (for distributors)
32
+ address wallet;
33
+ }
34
+
35
+ struct PoolSetupInfo {
36
+ NftId productNftId;
37
+ TokenHandler tokenHandler;
38
+ UFixed collateralizationLevel;
39
+ Fee poolFee; // pool fee on net premium
40
+ Fee stakingFee; // pool fee on staked capital from investor
41
+ Fee performanceFee; // pool fee on profits from capital investors
42
+ bool isIntercepting; // intercepts nft transfers (for bundles)
43
+ bool isConfirmingApplication; // confirms applications before they are underwritten
44
+ address wallet;
45
+ }
46
+ }
@@ -0,0 +1,23 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {Fee} from "../../types/Fee.sol";
7
+ import {NftId} from "../../types/NftId.sol";
8
+ import {TokenHandler} from "../../shared/TokenHandler.sol";
9
+
10
+ interface ITreasury {
11
+ struct TreasuryInfo {
12
+ IERC20Metadata token;
13
+ TokenHandler tokenHandler;
14
+ NftId distributionNftId;
15
+ NftId poolNftId;
16
+ Fee distributionFee; // default distribution fee (no referral id)
17
+ Fee productFee; // product fee on net premium
18
+ Fee processingFee; // product fee on payout amounts
19
+ Fee poolFee; // pool fee on net premium
20
+ Fee stakingFee; // pool fee on staked capital from investor
21
+ Fee performanceFee; // pool fee on profits from capital investors
22
+ }
23
+ }