@etherisc/gif-next 0.0.2-e6ad61d-739 → 0.0.2-e769e2e-077

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 (505) hide show
  1. package/README.md +337 -19
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1410 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1343 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +760 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +969 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +808 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +312 -1138
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +660 -0
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +439 -1219
  20. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1348 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +132 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1570 -0
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1039 -0
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +664 -0
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3500 -0
  32. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  33. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  34. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  35. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +190 -0
  36. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  38. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  39. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +237 -0
  40. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  41. package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
  42. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  43. package/artifacts/contracts/instance/{treasury/ITreasury.sol/ITreasury.json → module/IComponents.sol/IComponents.json} +2 -2
  44. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  45. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IDistribution.sol/IDistribution.json} +2 -2
  46. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  47. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  48. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  49. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
  50. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  51. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1091 -0
  52. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  53. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +684 -0
  54. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  55. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +684 -0
  56. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  57. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1148 -0
  58. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  59. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1044 -0
  60. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  61. package/artifacts/contracts/pool/Pool.sol/Pool.json +1559 -0
  62. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  63. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1411 -0
  64. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  65. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +680 -0
  66. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  67. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +820 -0
  68. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  69. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +660 -0
  70. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  71. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1264 -0
  72. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  73. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +748 -0
  74. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  75. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +493 -0
  76. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  77. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
  78. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  79. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +701 -0
  80. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  81. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +530 -0
  82. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  83. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +989 -0
  84. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  85. package/artifacts/contracts/product/IProductService.sol/IProductService.json +381 -0
  86. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  87. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1132 -0
  88. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  89. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +692 -0
  90. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  91. package/artifacts/contracts/product/PricingService.sol/PricingService.json +969 -0
  92. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  93. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +716 -0
  94. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  95. package/artifacts/contracts/product/Product.sol/Product.json +1391 -0
  96. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  97. package/artifacts/contracts/product/ProductService.sol/ProductService.json +673 -0
  98. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +636 -0
  100. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  101. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +252 -2
  102. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  103. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +648 -27
  104. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  105. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +990 -0
  106. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  107. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  108. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  109. package/artifacts/contracts/registry/Registry.sol/Registry.json +846 -97
  110. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  111. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +308 -0
  112. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  113. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1290 -0
  114. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +661 -0
  116. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  117. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +688 -0
  118. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
  119. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
  120. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  121. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +611 -0
  122. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  123. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  124. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  125. package/artifacts/contracts/shared/Component.sol/Component.json +890 -0
  126. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  127. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1461 -0
  128. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  129. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +736 -0
  130. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  131. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +520 -0
  132. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  133. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
  134. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  135. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +625 -0
  136. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  137. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +854 -0
  138. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  139. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +699 -0
  140. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  141. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +478 -0
  142. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  143. package/artifacts/contracts/{instance/lifecycle/ILifecycle.sol/ILifecycleModule.json → shared/ILifecycle.sol/ILifecycle.json} +10 -77
  144. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  145. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +125 -0
  146. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  147. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
  148. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  149. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +175 -0
  150. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  151. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +11 -11
  152. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  153. package/artifacts/contracts/shared/IService.sol/IService.json +327 -0
  154. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  155. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
  156. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  157. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1030 -0
  158. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  159. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +581 -0
  160. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  161. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  162. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  163. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +238 -0
  164. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  165. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
  166. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  167. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +569 -0
  168. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  169. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +347 -0
  170. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  171. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  172. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  173. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → shared/Service.sol/Service.json} +256 -220
  174. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  175. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
  176. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  177. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  178. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  179. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
  180. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  181. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1607 -0
  182. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  183. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +545 -0
  184. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  185. package/artifacts/contracts/staking/Staking.sol/Staking.json +2074 -0
  186. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  187. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +676 -0
  188. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  189. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +805 -0
  190. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  191. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +636 -0
  192. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  193. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  194. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  195. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  196. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  197. package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +16 -3
  198. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  199. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  200. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  201. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  202. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  203. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  204. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  205. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  206. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  207. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +185 -0
  208. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  209. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  210. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  211. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  212. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  213. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  214. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  215. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  216. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  217. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  218. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  219. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +156 -0
  220. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  221. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -0
  222. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  223. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  224. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  225. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +280 -0
  226. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  227. package/artifacts/contracts/{types/ChainId.sol/ChainIdLib.json → type/UFixed.sol/MathLib.json} +4 -4
  228. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  229. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +479 -0
  230. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  231. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  232. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  233. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  234. package/contracts/distribution/Distribution.sol +263 -0
  235. package/contracts/distribution/DistributionService.sol +297 -0
  236. package/contracts/distribution/DistributionServiceManager.sol +51 -0
  237. package/contracts/distribution/IDistributionComponent.sol +66 -0
  238. package/contracts/distribution/IDistributionService.sol +81 -0
  239. package/contracts/instance/BundleManager.sol +126 -0
  240. package/contracts/instance/IInstance.sol +74 -22
  241. package/contracts/instance/IInstanceService.sol +83 -0
  242. package/contracts/instance/Instance.sol +209 -53
  243. package/contracts/instance/InstanceAccessManager.sol +543 -0
  244. package/contracts/instance/InstanceAuthorizationsLib.sol +336 -0
  245. package/contracts/instance/InstanceReader.sol +366 -0
  246. package/contracts/instance/InstanceService.sol +348 -0
  247. package/contracts/instance/InstanceServiceManager.sol +54 -0
  248. package/contracts/instance/InstanceStore.sol +259 -0
  249. package/contracts/instance/base/BalanceStore.sol +118 -0
  250. package/contracts/instance/base/Cloneable.sol +51 -0
  251. package/contracts/instance/base/ObjectManager.sol +82 -0
  252. package/contracts/instance/module/IAccess.sol +54 -0
  253. package/contracts/instance/module/IBundle.sol +20 -0
  254. package/contracts/instance/module/IComponents.sol +52 -0
  255. package/contracts/instance/module/IDistribution.sol +42 -0
  256. package/contracts/instance/module/IPolicy.sol +84 -0
  257. package/contracts/instance/module/IRisk.sol +11 -0
  258. package/contracts/pool/BundleService.sol +313 -0
  259. package/contracts/pool/BundleServiceManager.sol +51 -0
  260. package/contracts/pool/IBundleService.sol +106 -0
  261. package/contracts/pool/IPoolComponent.sol +112 -0
  262. package/contracts/pool/IPoolService.sol +147 -0
  263. package/contracts/pool/Pool.sol +299 -0
  264. package/contracts/pool/PoolService.sol +421 -0
  265. package/contracts/pool/PoolServiceManager.sol +51 -0
  266. package/contracts/product/ApplicationService.sol +253 -0
  267. package/contracts/product/ApplicationServiceManager.sol +35 -0
  268. package/contracts/product/ClaimService.sol +436 -0
  269. package/contracts/product/ClaimServiceManager.sol +35 -0
  270. package/contracts/product/IApplicationService.sol +62 -0
  271. package/contracts/product/IClaimService.sol +93 -0
  272. package/contracts/product/IPolicyService.sol +78 -0
  273. package/contracts/product/IPricingService.sol +39 -0
  274. package/contracts/product/IProductComponent.sol +42 -0
  275. package/contracts/product/IProductService.sol +33 -0
  276. package/contracts/product/PolicyService.sol +471 -0
  277. package/contracts/product/PolicyServiceManager.sol +54 -0
  278. package/contracts/product/PricingService.sol +300 -0
  279. package/contracts/product/PricingServiceManager.sol +51 -0
  280. package/contracts/product/Product.sol +377 -0
  281. package/contracts/product/ProductService.sol +122 -0
  282. package/contracts/product/ProductServiceManager.sol +54 -0
  283. package/contracts/registry/ChainNft.sol +143 -62
  284. package/contracts/registry/IRegistry.sol +84 -40
  285. package/contracts/registry/IRegistryService.sol +79 -0
  286. package/contracts/registry/ITransferInterceptor.sol +7 -0
  287. package/contracts/registry/Registry.sol +475 -128
  288. package/contracts/registry/RegistryAccessManager.sol +213 -0
  289. package/contracts/registry/RegistryService.sol +327 -0
  290. package/contracts/registry/RegistryServiceManager.sol +60 -0
  291. package/contracts/registry/ReleaseManager.sol +375 -0
  292. package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
  293. package/contracts/registry/TokenRegistry.sol +187 -0
  294. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  295. package/contracts/shared/Component.sol +286 -0
  296. package/contracts/shared/ComponentService.sol +596 -0
  297. package/contracts/shared/ComponentServiceManager.sol +35 -0
  298. package/contracts/shared/ComponentVerifyingService.sol +111 -0
  299. package/contracts/shared/ERC165.sol +27 -0
  300. package/contracts/shared/IComponent.sol +74 -0
  301. package/contracts/shared/IComponentService.sol +91 -0
  302. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  303. package/contracts/shared/IKeyValueStore.sol +53 -0
  304. package/contracts/shared/ILifecycle.sol +30 -0
  305. package/contracts/shared/INftOwnable.sol +23 -0
  306. package/contracts/shared/IPolicyHolder.sol +40 -0
  307. package/contracts/shared/IRegisterable.sol +15 -0
  308. package/contracts/shared/IRegistryLinked.sol +11 -0
  309. package/contracts/shared/IService.sol +18 -0
  310. package/contracts/shared/IVersionable.sol +53 -0
  311. package/contracts/shared/InstanceLinkedComponent.sol +145 -0
  312. package/contracts/shared/KeyValueStore.sol +169 -0
  313. package/contracts/shared/Lifecycle.sol +121 -0
  314. package/contracts/shared/NftOwnable.sol +118 -0
  315. package/contracts/shared/PolicyHolder.sol +94 -0
  316. package/contracts/shared/ProxyManager.sol +169 -0
  317. package/contracts/shared/Registerable.sol +75 -0
  318. package/contracts/shared/RegistryLinked.sol +43 -0
  319. package/contracts/shared/Service.sol +77 -0
  320. package/contracts/shared/TokenHandler.sol +58 -0
  321. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  322. package/contracts/shared/Versionable.sol +59 -0
  323. package/contracts/staking/IStaking.sol +77 -0
  324. package/contracts/staking/IStakingService.sol +105 -0
  325. package/contracts/staking/Staking.sol +212 -0
  326. package/contracts/staking/StakingManager.sol +46 -0
  327. package/contracts/staking/StakingService.sol +200 -0
  328. package/contracts/staking/StakingServiceManager.sol +41 -0
  329. package/contracts/type/AddressSet.sol +58 -0
  330. package/contracts/type/Amount.sol +114 -0
  331. package/contracts/{types → type}/Blocknumber.sol +7 -1
  332. package/contracts/type/ClaimId.sol +75 -0
  333. package/contracts/type/DistributorType.sol +55 -0
  334. package/contracts/type/Fee.sol +66 -0
  335. package/contracts/type/Key32.sol +50 -0
  336. package/contracts/{types → type}/NftId.sol +34 -12
  337. package/contracts/type/NftIdSet.sol +62 -0
  338. package/contracts/{types → type}/ObjectType.sol +73 -15
  339. package/contracts/type/PayoutId.sol +82 -0
  340. package/contracts/type/Referral.sol +89 -0
  341. package/contracts/type/RiskId.sol +43 -0
  342. package/contracts/type/RoleId.sol +138 -0
  343. package/contracts/type/Seconds.sol +54 -0
  344. package/contracts/{types → type}/StateId.sol +23 -4
  345. package/contracts/{types → type}/Timestamp.sol +36 -6
  346. package/contracts/type/UFixed.sol +326 -0
  347. package/contracts/type/Version.sol +108 -0
  348. package/package.json +12 -5
  349. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  350. package/artifacts/contracts/components/Component.sol/Component.json +0 -205
  351. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  352. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  353. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  354. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -255
  355. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  356. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -74
  357. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  358. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -328
  359. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  360. package/artifacts/contracts/components/Product.sol/Product.json +0 -346
  361. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  362. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  363. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  364. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  365. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  366. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  367. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  368. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  369. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  370. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  371. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  372. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  373. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  374. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  375. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  376. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  377. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  378. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  379. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  380. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  381. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  382. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  383. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  384. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  385. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  386. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  387. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  388. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  389. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  390. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  391. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  392. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  393. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  394. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  395. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  396. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  397. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  398. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  399. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  400. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  401. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  402. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  403. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  404. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -299
  405. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  406. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -202
  407. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  408. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  409. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -205
  410. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  411. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -217
  412. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  413. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -141
  414. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  415. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  416. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  417. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  418. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  419. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  420. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  421. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  422. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  423. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -254
  424. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  425. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -254
  426. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  427. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  428. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -129
  429. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  430. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -155
  431. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  432. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  433. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  434. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -127
  435. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  436. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  437. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  438. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -196
  439. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  440. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  441. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.json +0 -490
  442. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  443. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.json +0 -45
  444. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  445. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.json +0 -490
  446. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  447. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  448. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  449. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  450. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  451. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  452. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  453. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  454. package/artifacts/contracts/registry/Registry.sol/Registerable.json +0 -166
  455. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  456. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  457. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  458. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  459. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  460. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  461. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  462. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  463. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  464. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -174
  465. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  466. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  467. package/contracts/components/Component.sol +0 -77
  468. package/contracts/components/IPool.sol +0 -15
  469. package/contracts/components/IProduct.sol +0 -16
  470. package/contracts/components/Pool.sol +0 -52
  471. package/contracts/components/Product.sol +0 -89
  472. package/contracts/experiment/errors/Require.sol +0 -38
  473. package/contracts/experiment/errors/Revert.sol +0 -44
  474. package/contracts/experiment/inheritance/A.sol +0 -53
  475. package/contracts/experiment/inheritance/B.sol +0 -28
  476. package/contracts/experiment/inheritance/C.sol +0 -34
  477. package/contracts/experiment/inheritance/IA.sol +0 -13
  478. package/contracts/experiment/inheritance/IB.sol +0 -10
  479. package/contracts/experiment/inheritance/IC.sol +0 -12
  480. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  481. package/contracts/experiment/statemachine/ISM.sol +0 -25
  482. package/contracts/experiment/statemachine/README.md +0 -112
  483. package/contracts/experiment/statemachine/SM.sol +0 -57
  484. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  485. package/contracts/experiment/types/TypeA.sol +0 -47
  486. package/contracts/experiment/types/TypeB.sol +0 -29
  487. package/contracts/instance/access/Access.sol +0 -165
  488. package/contracts/instance/access/IAccess.sol +0 -63
  489. package/contracts/instance/component/ComponentModule.sol +0 -274
  490. package/contracts/instance/component/IComponent.sol +0 -74
  491. package/contracts/instance/lifecycle/ILifecycle.sol +0 -47
  492. package/contracts/instance/lifecycle/LifecycleModule.sol +0 -88
  493. package/contracts/instance/policy/IPolicy.sol +0 -50
  494. package/contracts/instance/policy/PolicyModule.sol +0 -114
  495. package/contracts/instance/pool/IPoolModule.sol +0 -23
  496. package/contracts/instance/pool/PoolModule.sol +0 -81
  497. package/contracts/instance/product/IProductService.sol +0 -36
  498. package/contracts/instance/product/ProductService.sol +0 -136
  499. package/contracts/instance/treasury/ITreasury.sol +0 -91
  500. package/contracts/instance/treasury/TokenHandler.sol +0 -24
  501. package/contracts/instance/treasury/TreasuryModule.sol +0 -168
  502. package/contracts/registry/IChainNft.sol +0 -21
  503. package/contracts/types/ChainId.sol +0 -38
  504. package/contracts/types/Fee.sol +0 -32
  505. package/contracts/types/UFixed.sol +0 -210
@@ -0,0 +1,348 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
+ import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
+
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {RoleId} from "../type/RoleId.sol";
9
+ import {ADMIN_ROLE, INSTANCE_OWNER_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, APPLICATION_SERVICE_ROLE, POLICY_SERVICE_ROLE, CLAIM_SERVICE_ROLE, BUNDLE_SERVICE_ROLE, INSTANCE_ROLE} from "../type/RoleId.sol";
10
+ import {ObjectType, INSTANCE, BUNDLE, APPLICATION, POLICY, CLAIM, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../type/ObjectType.sol";
11
+
12
+ import {Service} from "../shared/Service.sol";
13
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
14
+ import {IService} from "../shared/IService.sol";
15
+ import {AccessManagerUpgradeableInitializeable} from "../shared/AccessManagerUpgradeableInitializeable.sol";
16
+
17
+ import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
18
+ import {IPoolComponent} from "../pool/IPoolComponent.sol";
19
+ import {IProductComponent} from "../product/IProductComponent.sol";
20
+
21
+ import {IRegistry} from "../registry/IRegistry.sol";
22
+ import {IRegistryService} from "../registry/IRegistryService.sol";
23
+ import {ChainNft} from "../registry/ChainNft.sol";
24
+
25
+ import {Instance} from "./Instance.sol";
26
+ import {IInstance} from "./IInstance.sol";
27
+ import {InstanceAccessManager} from "./InstanceAccessManager.sol";
28
+ import {IInstanceService} from "./IInstanceService.sol";
29
+ import {InstanceReader} from "./InstanceReader.sol";
30
+ import {BundleManager} from "./BundleManager.sol";
31
+ import {InstanceStore} from "./InstanceStore.sol";
32
+ import {InstanceAuthorizationsLib} from "./InstanceAuthorizationsLib.sol";
33
+
34
+ contract InstanceService is
35
+ Service,
36
+ IInstanceService
37
+ {
38
+
39
+ // TODO update to real hash when instance is stable
40
+ bytes32 public constant INSTANCE_CREATION_CODE_HASH = bytes32(0);
41
+
42
+ IRegistryService internal _registryService;
43
+ address internal _masterOzAccessManager;
44
+ address internal _masterInstanceAccessManager;
45
+ address internal _masterInstance;
46
+ address internal _masterInstanceReader;
47
+ address internal _masterInstanceBundleManager;
48
+ address internal _masterInstanceStore;
49
+
50
+ modifier onlyInstanceOwner(NftId instanceNftId) {
51
+ if(msg.sender != getRegistry().ownerOf(instanceNftId)) {
52
+ revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
53
+ }
54
+ _;
55
+ }
56
+
57
+
58
+ function createInstanceClone()
59
+ external
60
+ returns (
61
+ Instance clonedInstance,
62
+ NftId clonedInstanceNftId
63
+ )
64
+ {
65
+ address instanceOwner = msg.sender;
66
+ AccessManagerUpgradeableInitializeable clonedOzAccessManager = AccessManagerUpgradeableInitializeable(
67
+ Clones.clone(_masterOzAccessManager));
68
+
69
+ // initially grants ADMIN_ROLE to this (being the instance service).
70
+ // This will allow the instance service to bootstrap the authorizations of the instance.
71
+ // Instance service will not use oz access manager directlly but through instance access manager instead
72
+ // Instance service will renounce ADMIN_ROLE when bootstraping is finished
73
+ clonedOzAccessManager.initialize(address(this));
74
+
75
+ clonedInstance = Instance(Clones.clone(_masterInstance));
76
+ clonedInstance.initialize(
77
+ address(clonedOzAccessManager),
78
+ address(getRegistry()),
79
+ instanceOwner);
80
+ // initialize and set before instance reader
81
+ InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
82
+ clonedInstanceStore.initialize(address(clonedInstance));
83
+ clonedInstance.setInstanceStore(clonedInstanceStore);
84
+
85
+ InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
86
+ clonedInstanceReader.initialize(address(clonedInstance));
87
+ clonedInstance.setInstanceReader(clonedInstanceReader);
88
+
89
+ BundleManager clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
90
+ clonedBundleManager.initialize(address(clonedInstance));
91
+ clonedInstance.setBundleManager(clonedBundleManager);
92
+
93
+ InstanceAccessManager clonedInstanceAccessManager = InstanceAccessManager(Clones.clone(_masterInstanceAccessManager));
94
+ clonedOzAccessManager.grantRole(ADMIN_ROLE().toInt(), address(clonedInstanceAccessManager), 0);
95
+ clonedInstanceAccessManager.initialize(address(clonedInstance));
96
+ clonedInstance.setInstanceAccessManager(clonedInstanceAccessManager);
97
+
98
+ // TODO amend setters with instance specific , policy manager ...
99
+
100
+ // TODO library does external calls -> but it is registry and access manager -> find out is it best practice
101
+ InstanceAuthorizationsLib.grantInitialAuthorizations(
102
+ clonedInstanceAccessManager,
103
+ clonedInstance,
104
+ clonedBundleManager,
105
+ clonedInstanceStore,
106
+ instanceOwner,
107
+ getRegistry(),
108
+ getVersion().toMajorPart());
109
+
110
+ clonedOzAccessManager.renounceRole(ADMIN_ROLE().toInt(), address(this));
111
+
112
+ IRegistry.ObjectInfo memory info = _registryService.registerInstance(clonedInstance, instanceOwner);
113
+ clonedInstanceNftId = info.nftId;
114
+
115
+ emit LogInstanceCloned(
116
+ address(clonedOzAccessManager),
117
+ address(clonedInstanceAccessManager),
118
+ address(clonedInstance),
119
+ address(clonedInstanceStore),
120
+ address(clonedBundleManager),
121
+ address(clonedInstanceReader),
122
+ clonedInstanceNftId);
123
+ }
124
+
125
+
126
+ function setComponentLocked(bool locked)
127
+ external
128
+ virtual
129
+ {
130
+ // checks
131
+ address componentAddress = msg.sender;
132
+
133
+ if (!IInstanceLinkedComponent(componentAddress).supportsInterface(type(IInstanceLinkedComponent).interfaceId)) {
134
+ revert ErrorInstanceServiceComponentNotInstanceLinked(componentAddress);
135
+ }
136
+
137
+ IRegistry registry = getRegistry();
138
+ NftId instanceNftId = registry.getObjectInfo(componentAddress).parentNftId;
139
+
140
+ if (instanceNftId.eqz()) {
141
+ revert ErrorInstanceServiceComponentNotRegistered(componentAddress);
142
+ }
143
+
144
+ IInstance instance = IInstance(
145
+ registry.getObjectInfo(
146
+ instanceNftId).objectAddress);
147
+
148
+ // interaction
149
+ instance.getInstanceAccessManager().setTargetLockedByService(
150
+ componentAddress,
151
+ locked);
152
+ }
153
+
154
+
155
+ function getMasterInstanceReader() external view returns (address) {
156
+ return _masterInstanceReader;
157
+ }
158
+
159
+ // From IService
160
+ function getDomain() public pure override returns(ObjectType) {
161
+ return INSTANCE();
162
+ }
163
+
164
+ function setAndRegisterMasterInstance(address instanceAddress)
165
+ external
166
+ onlyOwner
167
+ returns(NftId masterInstanceNftId)
168
+ {
169
+ if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
170
+ if(_masterOzAccessManager != address(0)) { revert ErrorInstanceServiceMasterOzAccessManagerAlreadySet(); }
171
+ if(_masterInstanceAccessManager != address(0)) { revert ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet(); }
172
+ if(_masterInstanceBundleManager != address(0)) { revert ErrorInstanceServiceMasterBundleManagerAlreadySet(); }
173
+
174
+ if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
175
+
176
+ IInstance instance = IInstance(instanceAddress);
177
+ InstanceAccessManager instanceAccessManager = instance.getInstanceAccessManager();
178
+ address instanceAccessManagerAddress = address(instanceAccessManager);
179
+ InstanceReader instanceReader = instance.getInstanceReader();
180
+ address instanceReaderAddress = address(instanceReader);
181
+ BundleManager bundleManager = instance.getBundleManager();
182
+ address bundleManagerAddress = address(bundleManager);
183
+ InstanceStore instanceStore = instance.getInstanceStore();
184
+ address instanceStoreAddress = address(instanceStore);
185
+
186
+ if(instanceAccessManagerAddress == address(0)) { revert ErrorInstanceServiceInstanceAccessManagerZero(); }
187
+ if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
188
+ if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleManagerZero(); }
189
+ if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
190
+
191
+ if(instance.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
192
+ if(bundleManager.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceBundleManagerAuthorityMismatch(); }
193
+ if(instanceStore.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
194
+ if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
195
+ if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
196
+
197
+ _masterOzAccessManager = instance.authority();
198
+ _masterInstanceAccessManager = instanceAccessManagerAddress;
199
+ _masterInstance = instanceAddress;
200
+ _masterInstanceReader = instanceReaderAddress;
201
+ _masterInstanceBundleManager = bundleManagerAddress;
202
+ _masterInstanceStore = instanceStoreAddress;
203
+
204
+ IInstance masterInstance = IInstance(_masterInstance);
205
+ IRegistry.ObjectInfo memory info = _registryService.registerInstance(masterInstance, getOwner());
206
+ masterInstanceNftId = info.nftId;
207
+ }
208
+
209
+ function setMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
210
+ if(_masterInstanceReader == address(0)) { revert ErrorInstanceServiceMasterInstanceReaderNotSet(); }
211
+ if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderAddressZero(); }
212
+ if(instanceReaderAddress == _masterInstanceReader) { revert ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader(); }
213
+
214
+ InstanceReader instanceReader = InstanceReader(instanceReaderAddress);
215
+ if(instanceReader.getInstance() != IInstance(_masterInstance)) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch(); }
216
+
217
+ _masterInstanceReader = instanceReaderAddress;
218
+ }
219
+
220
+ function upgradeInstanceReader(NftId instanceNftId)
221
+ external
222
+ onlyInstanceOwner(instanceNftId)
223
+ {
224
+ IRegistry registry = getRegistry();
225
+ IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
226
+ Instance instance = Instance(instanceInfo.objectAddress);
227
+
228
+ InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
229
+ upgradedInstanceReaderClone.initialize(address(instance));
230
+ instance.setInstanceReader(upgradedInstanceReaderClone);
231
+ }
232
+
233
+
234
+ function createGifTarget(
235
+ NftId instanceNftId,
236
+ address targetAddress,
237
+ string memory targetName,
238
+ bytes4[][] memory selectors,
239
+ RoleId[] memory roles
240
+ )
241
+ external
242
+ virtual
243
+ restricted()
244
+ {
245
+ _createGifTarget(
246
+ instanceNftId,
247
+ targetAddress,
248
+ targetName,
249
+ roles,
250
+ selectors
251
+ );
252
+ }
253
+
254
+
255
+ function createComponentTarget(
256
+ NftId instanceNftId,
257
+ address targetAddress,
258
+ string memory targetName,
259
+ bytes4[][] memory selectors,
260
+ RoleId[] memory roles
261
+ )
262
+ external
263
+ virtual
264
+ // TODO re-enable once role - contract association is fixed
265
+ // restricted()
266
+ {
267
+ _createGifTarget(
268
+ instanceNftId,
269
+ targetAddress,
270
+ targetName,
271
+ roles,
272
+ selectors
273
+ );
274
+ }
275
+
276
+
277
+ /// all gif targets MUST be children of instanceNftId
278
+ function _createGifTarget(
279
+ NftId instanceNftId,
280
+ address targetAddress,
281
+ string memory targetName,
282
+ RoleId[] memory roles,
283
+ bytes4[][] memory selectors
284
+ )
285
+ internal
286
+ virtual
287
+ {
288
+ (
289
+ IInstance instance, // or instanceInfo
290
+ // or targetInfo
291
+ ) = _validateInstanceAndComponent(instanceNftId, targetAddress);
292
+
293
+ InstanceAccessManager accessManager = instance.getInstanceAccessManager();
294
+ accessManager.createGifTarget(targetAddress, targetName);
295
+ // set proposed target config
296
+ // TODO restriction: gif targets are set only once and only here?
297
+ // assume config is a mix of gif and custom roles and no further configuration by INSTANCE_OWNER_ROLE is ever needed?
298
+ for(uint roleIdx = 0; roleIdx < roles.length; roleIdx++) {
299
+ accessManager.setCoreTargetFunctionRole(targetName, selectors[roleIdx], roles[roleIdx]);
300
+ }
301
+ }
302
+
303
+ /// @dev top level initializer
304
+ function _initialize(
305
+ address owner,
306
+ bytes memory data
307
+ )
308
+ internal
309
+ initializer
310
+ virtual override
311
+ {
312
+ (
313
+ address registryAddress,
314
+ address initialOwner
315
+ ) = abi.decode(data, (address, address));
316
+
317
+ _registryService = IRegistryService(
318
+ IRegistry(registryAddress).getServiceAddress(
319
+ REGISTRY(),
320
+ getVersion().toMajorPart()));
321
+
322
+ // TODO while InstanceService is not deployed in InstanceServiceManager constructor
323
+ // owner is InstanceServiceManager deployer
324
+ initializeService(registryAddress, address(0), owner);
325
+ registerInterface(type(IInstanceService).interfaceId);
326
+ }
327
+
328
+
329
+ function _validateInstanceAndComponent(NftId instanceNftId, address componentAddress)
330
+ internal
331
+ view
332
+ returns (IInstance instance, NftId componentNftId)
333
+ {
334
+ IRegistry registry = getRegistry();
335
+ IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
336
+ if(instanceInfo.objectType != INSTANCE()) {
337
+ revert ErrorInstanceServiceNotInstance(instanceNftId);
338
+ }
339
+
340
+ IRegistry.ObjectInfo memory componentInfo = registry.getObjectInfo(componentAddress);
341
+ if(componentInfo.parentNftId != instanceNftId) {
342
+ revert ErrorInstanceServiceInstanceComponentMismatch(instanceNftId, componentInfo.nftId);
343
+ }
344
+
345
+ instance = Instance(instanceInfo.objectAddress);
346
+ componentNftId = componentInfo.nftId;
347
+ }
348
+ }
@@ -0,0 +1,54 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Instance} from "./Instance.sol";
5
+ import {IVersionable} from "../shared/IVersionable.sol";
6
+ import {ProxyManager} from "../shared/ProxyManager.sol";
7
+ import {InstanceService} from "./InstanceService.sol";
8
+ import {Registry} from "../registry/Registry.sol";
9
+ import {RegistryService} from "../registry/RegistryService.sol";
10
+ import {REGISTRY} from "../type/ObjectType.sol";
11
+
12
+ contract InstanceServiceManager is ProxyManager {
13
+
14
+ InstanceService private _instanceService;
15
+
16
+ /// @dev initializes proxy manager with instance service implementation and deploys instance
17
+ constructor(
18
+ address registryAddress
19
+ )
20
+ ProxyManager(registryAddress)
21
+ {
22
+ InstanceService instSrv = new InstanceService();
23
+ // bytes memory initCode = type(InstanceService).creationCode;
24
+ bytes memory data = abi.encode(registryAddress, address(this));
25
+ IVersionable versionable = deploy(
26
+ address(instSrv),
27
+ data);
28
+
29
+ _instanceService = InstanceService(address(versionable));
30
+
31
+ // TODO `this` must have a role or own nft to register service
32
+ //Registry registry = Registry(registryAddress);
33
+ //address registryServiceAddress = registry.getServiceAddress(REGISTRY(), _instanceService.getMajorVersion());
34
+ //RegistryService registryService = RegistryService(registryServiceAddress);
35
+ //registryService.registerService(_instanceService);
36
+ // RegistryService registryService = _instanceService.getRegistryService();
37
+
38
+ // TODO no nft to link yet
39
+ // link ownership of instance service manager ot nft owner of instance service
40
+ //_linkToNftOwnable(
41
+ // address(registryAddress),
42
+ // address(_instanceService));
43
+ }
44
+
45
+ //--- view functions ----------------------------------------------------//
46
+ function getInstanceService()
47
+ external
48
+ view
49
+ returns (InstanceService instanceService)
50
+ {
51
+ return _instanceService;
52
+ }
53
+
54
+ }
@@ -0,0 +1,259 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
+
6
+ import {Amount} from "../type/Amount.sol";
7
+ import {Key32, KeyId, Key32Lib} from "../type/Key32.sol";
8
+ import {NftId} from "../type/NftId.sol";
9
+ import {ClaimId} from "../type/ClaimId.sol";
10
+ import {ObjectType, BUNDLE, DISTRIBUTION, FEE, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET, COMPONENT, DISTRIBUTOR, DISTRIBUTOR_TYPE} from "../type/ObjectType.sol";
11
+ import {RiskId, RiskIdLib} from "../type/RiskId.sol";
12
+ import {RoleId, RoleIdLib, INSTANCE_ROLE, INSTANCE_OWNER_ROLE} from "../type/RoleId.sol";
13
+ import {StateId, ACTIVE} from "../type/StateId.sol";
14
+ import {TimestampLib} from "../type/Timestamp.sol";
15
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
16
+ import {ReferralId} from "../type/Referral.sol";
17
+ import {DistributorType} from "../type/DistributorType.sol";
18
+ import {PayoutId} from "../type/PayoutId.sol";
19
+
20
+ import {BalanceStore} from "./base/BalanceStore.sol";
21
+ import {IInstance} from "./IInstance.sol";
22
+ import {KeyValueStore} from "../shared/KeyValueStore.sol";
23
+ import {IKeyValueStore} from "../shared/KeyValueStore.sol";
24
+
25
+ import {IBundle} from "./module/IBundle.sol";
26
+ import {IComponents} from "./module/IComponents.sol";
27
+ import {IDistribution} from "./module/IDistribution.sol";
28
+ import {IPolicy} from "./module/IPolicy.sol";
29
+ import {IRisk} from "./module/IRisk.sol";
30
+
31
+
32
+ contract InstanceStore is
33
+ AccessManagedUpgradeable,
34
+ KeyValueStore,
35
+ BalanceStore
36
+ {
37
+ function initialize(address instance)
38
+ public
39
+ initializer()
40
+ {
41
+ address authority = IInstance(instance).authority();
42
+ __AccessManaged_init(authority);
43
+ initializeLifecycle();
44
+ }
45
+
46
+ //--- Component ---------------------------------------------------------//
47
+ function createComponent(
48
+ NftId componentNftId,
49
+ IComponents.ComponentInfo memory componentInfo
50
+ )
51
+ external
52
+ restricted()
53
+ {
54
+ _registerTarget(componentNftId);
55
+ create(_toNftKey32(componentNftId, COMPONENT()), abi.encode(componentInfo));
56
+ }
57
+
58
+ function updateComponent(
59
+ NftId componentNftId,
60
+ IComponents.ComponentInfo memory componentInfo,
61
+ StateId newState
62
+ )
63
+ external
64
+ restricted()
65
+ {
66
+ update(_toNftKey32(componentNftId, COMPONENT()), abi.encode(componentInfo), newState);
67
+ }
68
+
69
+ //--- ProductSetup ------------------------------------------------------//
70
+
71
+ function createProduct(NftId productNftId, IComponents.ProductInfo memory info) external restricted() {
72
+ create(_toNftKey32(productNftId, PRODUCT()), abi.encode(info));
73
+ }
74
+
75
+ function updateProduct(NftId productNftId, IComponents.ProductInfo memory info, StateId newState) external restricted() {
76
+ update(_toNftKey32(productNftId, PRODUCT()), abi.encode(info), newState);
77
+ }
78
+
79
+ function updateProductSetupState(NftId productNftId, StateId newState) external restricted() {
80
+ updateState(_toNftKey32(productNftId, PRODUCT()), newState);
81
+ }
82
+
83
+ //--- PoolSetup ------------------------------------------------------//
84
+
85
+ function createPool(
86
+ NftId poolNftId,
87
+ IComponents.PoolInfo memory info
88
+ )
89
+ external
90
+ restricted()
91
+ {
92
+ create(_toNftKey32(poolNftId, POOL()), abi.encode(info));
93
+ }
94
+
95
+ function updatePool(NftId poolNftId, IComponents.PoolInfo memory info, StateId newState) external restricted() {
96
+ update(_toNftKey32(poolNftId, POOL()), abi.encode(info), newState);
97
+ }
98
+
99
+ function updatePoolState(NftId poolNftId, StateId newState) external restricted() {
100
+ updateState(_toNftKey32(poolNftId, POOL()), newState);
101
+ }
102
+
103
+ //--- DistributorType -------------------------------------------------------//
104
+ function createDistributorType(DistributorType distributorType, IDistribution.DistributorTypeInfo memory info) external restricted() {
105
+ create(distributorType.toKey32(), abi.encode(info));
106
+ }
107
+
108
+ function updateDistributorType(DistributorType distributorType, IDistribution.DistributorTypeInfo memory info, StateId newState) external restricted() {
109
+ update(distributorType.toKey32(), abi.encode(info), newState);
110
+ }
111
+
112
+ function updateDistributorTypeState(DistributorType distributorType, StateId newState) external restricted() {
113
+ updateState(distributorType.toKey32(), newState);
114
+ }
115
+
116
+ //--- Distributor -------------------------------------------------------//
117
+ function createDistributor(NftId distributorNftId, IDistribution.DistributorInfo memory info) external restricted() {
118
+ create(_toNftKey32(distributorNftId, DISTRIBUTOR()), abi.encode(info));
119
+ }
120
+
121
+ function updateDistributor(NftId distributorNftId, IDistribution.DistributorInfo memory info, StateId newState) external restricted() {
122
+ update(_toNftKey32(distributorNftId, DISTRIBUTOR()), abi.encode(info), newState);
123
+ }
124
+
125
+ function updateDistributorState(NftId distributorNftId, StateId newState) external restricted() {
126
+ updateState(_toNftKey32(distributorNftId, DISTRIBUTOR()), newState);
127
+ }
128
+
129
+ //--- Referral ----------------------------------------------------------//
130
+ function createReferral(ReferralId referralId, IDistribution.ReferralInfo memory referralInfo) external restricted() {
131
+ create(referralId.toKey32(), abi.encode(referralInfo));
132
+ }
133
+
134
+ function updateReferral(ReferralId referralId, IDistribution.ReferralInfo memory referralInfo, StateId newState) external restricted() {
135
+ update(referralId.toKey32(), abi.encode(referralInfo), newState);
136
+ }
137
+
138
+ function updateReferralState(ReferralId referralId, StateId newState) external restricted() {
139
+ updateState(referralId.toKey32(), newState);
140
+ }
141
+
142
+ //--- Bundle ------------------------------------------------------------//
143
+ function createBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle) external restricted() {
144
+ _registerTarget(bundleNftId);
145
+ create(_toNftKey32(bundleNftId, BUNDLE()), abi.encode(bundle));
146
+ }
147
+
148
+ function updateBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle, StateId newState) external restricted() {
149
+ update(_toNftKey32(bundleNftId, BUNDLE()), abi.encode(bundle), newState);
150
+ }
151
+
152
+ function updateBundleState(NftId bundleNftId, StateId newState) external restricted() {
153
+ updateState(_toNftKey32(bundleNftId, BUNDLE()), newState);
154
+ }
155
+
156
+ //--- Risk --------------------------------------------------------------//
157
+ function createRisk(RiskId riskId, IRisk.RiskInfo memory risk) external restricted() {
158
+ create(riskId.toKey32(), abi.encode(risk));
159
+ }
160
+
161
+ function updateRisk(RiskId riskId, IRisk.RiskInfo memory risk, StateId newState) external restricted() {
162
+ update(riskId.toKey32(), abi.encode(risk), newState);
163
+ }
164
+
165
+ function updateRiskState(RiskId riskId, StateId newState) external restricted() {
166
+ updateState(riskId.toKey32(), newState);
167
+ }
168
+
169
+ //--- Application (Policy) ----------------------------------------------//
170
+ function createApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy) external restricted() {
171
+ create(_toNftKey32(applicationNftId, POLICY()), abi.encode(policy));
172
+ }
173
+
174
+ function updateApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
175
+ update(_toNftKey32(applicationNftId, POLICY()), abi.encode(policy), newState);
176
+ }
177
+
178
+ function updateApplicationState(NftId applicationNftId, StateId newState) external restricted() {
179
+ updateState(_toNftKey32(applicationNftId, POLICY()), newState);
180
+ }
181
+
182
+ //--- Policy ------------------------------------------------------------//
183
+ function updatePolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
184
+ update(_toNftKey32(policyNftId, POLICY()), abi.encode(policy), newState);
185
+ }
186
+
187
+ function updatePolicyClaims(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
188
+ update(_toNftKey32(policyNftId, POLICY()), abi.encode(policy), newState);
189
+ }
190
+
191
+ function updatePolicyState(NftId policyNftId, StateId newState) external restricted() {
192
+ updateState(_toNftKey32(policyNftId, POLICY()), newState);
193
+ }
194
+
195
+ //--- Claim -------------------------------------------------------------//
196
+ function createClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim) external restricted() {
197
+ create(_toClaimKey32(policyNftId, claimId), abi.encode(claim));
198
+ }
199
+
200
+ function updateClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim, StateId newState) external restricted() {
201
+ update(_toClaimKey32(policyNftId, claimId), abi.encode(claim), newState);
202
+ }
203
+
204
+ function updateClaimState(NftId policyNftId, ClaimId claimId, StateId newState) external restricted() {
205
+ updateState(_toClaimKey32(policyNftId, claimId), newState);
206
+ }
207
+
208
+ //--- Payout ------------------------------------------------------------//
209
+ function createPayout(NftId policyNftId, PayoutId payoutId, IPolicy.PayoutInfo memory payout) external restricted() {
210
+ create(_toPayoutKey32(policyNftId, payoutId), abi.encode(payout));
211
+ }
212
+
213
+ function updatePayout(NftId policyNftId, PayoutId payoutId, IPolicy.PayoutInfo memory payout, StateId newState) external restricted() {
214
+ update(_toPayoutKey32(policyNftId, payoutId), abi.encode(payout), newState);
215
+ }
216
+
217
+ function updatePayoutState(NftId policyNftId, PayoutId payoutId, StateId newState) external restricted() {
218
+ updateState(_toPayoutKey32(policyNftId, payoutId), newState);
219
+ }
220
+
221
+ //--- balance and fee management functions ------------------------------//
222
+
223
+ function increaseBalance(NftId targetNftId, Amount amount) external restricted() returns (Amount newBalance) {
224
+ return _increaseBalance(targetNftId, amount);
225
+ }
226
+
227
+ function decreaseBalance(NftId targetNftId, Amount amount) external restricted() returns (Amount newBalance) {
228
+ return _decreaseBalance(targetNftId, amount);
229
+ }
230
+
231
+ function increaseFees(NftId targetNftId, Amount amount) external restricted() returns (Amount newFeeBalance) {
232
+ return _increaseFees(targetNftId, amount);
233
+ }
234
+
235
+ function decreaseFees(NftId targetNftId, Amount amount) external restricted() returns (Amount newFeeBalance) {
236
+ return _decreaseFees(targetNftId, amount);
237
+ }
238
+
239
+ function increaseLocked(NftId targetNftId, Amount amount) external restricted() returns (Amount newBalance) {
240
+ return _increaseLocked(targetNftId, amount);
241
+ }
242
+
243
+ function decreaseLocked(NftId targetNftId, Amount amount) external restricted() returns (Amount newBalance) {
244
+ return _decreaseLocked(targetNftId, amount);
245
+ }
246
+
247
+ //--- internal view/pure functions --------------------------------------//
248
+ function _toNftKey32(NftId nftId, ObjectType objectType) private pure returns (Key32) {
249
+ return nftId.toKey32(objectType);
250
+ }
251
+
252
+ function _toClaimKey32(NftId policyNftId, ClaimId claimId) private pure returns (Key32) {
253
+ return claimId.toKey32(policyNftId);
254
+ }
255
+
256
+ function _toPayoutKey32(NftId policyNftId, PayoutId payoutId) private pure returns (Key32) {
257
+ return payoutId.toKey32(policyNftId);
258
+ }
259
+ }