@etherisc/gif-next 0.0.2-ce3fd5e-324 → 0.0.2-ce86487-031

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 (486) hide show
  1. package/README.md +48 -5
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1518 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +180 -360
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +283 -282
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +146 -72
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +180 -237
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +169 -64
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +77 -78
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +193 -52
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +93 -126
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +469 -345
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +282 -101
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +120 -42
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1010 -378
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  59. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  73. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  74. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  75. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  77. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  79. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  81. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  82. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +802 -0
  83. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  85. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1055 -0
  87. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  89. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  91. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  92. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1432 -0
  93. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  95. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +437 -204
  97. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +184 -50
  99. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +235 -32
  101. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +182 -331
  103. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +311 -175
  105. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  106. package/artifacts/contracts/pool/Pool.sol/Pool.json +244 -433
  107. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +468 -390
  109. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +143 -53
  111. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +97 -152
  113. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +116 -34
  115. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1280 -0
  117. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  119. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +150 -187
  121. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +134 -56
  123. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +20 -1
  125. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +46 -1
  127. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +180 -26
  129. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  130. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +40 -1
  131. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +272 -148
  133. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  134. package/artifacts/contracts/product/IProductService.sol/IProductService.json +13 -55
  135. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +300 -257
  137. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +126 -72
  139. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.json +172 -159
  141. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +141 -43
  143. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  144. package/artifacts/contracts/product/Product.sol/Product.json +312 -272
  145. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  146. package/artifacts/contracts/product/ProductService.sol/ProductService.json +47 -203
  147. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +94 -32
  149. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  151. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +182 -28
  153. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +206 -124
  155. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  156. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/Registry.sol/Registry.json +439 -39
  158. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  159. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  160. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  161. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +370 -68
  162. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +99 -35
  164. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  165. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  166. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  167. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  168. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  170. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  171. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +314 -138
  172. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  173. package/artifacts/contracts/shared/Component.sol/Component.json +104 -119
  174. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  175. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1284 -203
  176. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +820 -0
  178. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  179. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +539 -0
  180. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  181. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +76 -81
  182. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  183. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  184. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  185. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +737 -0
  186. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  187. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +12 -16
  188. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  189. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  190. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  191. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +7 -1
  192. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  193. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +21 -3
  194. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -1
  196. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IService.sol/IService.json +20 -1
  199. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  200. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  201. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  202. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  203. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  204. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +977 -0
  205. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  206. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  207. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  208. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +133 -0
  209. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  210. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  211. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  212. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +13 -7
  213. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  214. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +31 -13
  215. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  216. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +21 -7
  217. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  218. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  219. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  220. package/artifacts/contracts/shared/Service.sol/Service.json +20 -1
  221. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  222. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +87 -4
  223. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  224. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  225. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  226. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +566 -54
  227. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  228. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +470 -0
  229. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  230. package/artifacts/contracts/staking/Staking.sol/Staking.json +1991 -0
  231. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  232. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  233. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  234. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +773 -0
  235. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  236. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  237. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  238. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +661 -85
  239. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  240. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  241. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  242. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  243. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  244. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +576 -0
  245. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  246. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  247. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/Amount.sol/AmountLib.json +97 -4
  249. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +53 -2
  251. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  253. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  255. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/Fee.sol/FeeLib.json +39 -34
  257. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  258. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  259. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +47 -4
  261. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  262. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  263. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +149 -2
  265. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  267. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  269. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  270. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  271. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  273. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
  275. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +100 -2
  277. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  278. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  279. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  280. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  281. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  283. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  284. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  285. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
  287. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  289. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
  291. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  293. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  295. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  296. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  297. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  298. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  299. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  300. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  301. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  302. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  303. package/contracts/authorization/AccessAdmin.sol +591 -0
  304. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  305. package/contracts/authorization/Authorization.sol +218 -0
  306. package/contracts/authorization/IAccess.sol +48 -0
  307. package/contracts/authorization/IAccessAdmin.sol +136 -0
  308. package/contracts/authorization/IAuthorization.sol +54 -0
  309. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  310. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  311. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  312. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  313. package/contracts/distribution/BasicDistribution.sol +138 -0
  314. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  315. package/contracts/distribution/Distribution.sol +162 -152
  316. package/contracts/distribution/DistributionService.sol +120 -133
  317. package/contracts/distribution/DistributionServiceManager.sol +11 -23
  318. package/contracts/distribution/IDistributionComponent.sol +28 -47
  319. package/contracts/distribution/IDistributionService.sol +19 -9
  320. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  321. package/contracts/instance/IInstance.sol +26 -17
  322. package/contracts/instance/IInstanceService.sol +46 -27
  323. package/contracts/instance/Instance.sol +114 -89
  324. package/contracts/instance/InstanceAdmin.sol +266 -0
  325. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  326. package/contracts/instance/InstanceReader.sol +92 -52
  327. package/contracts/instance/InstanceService.sol +266 -131
  328. package/contracts/instance/InstanceServiceManager.sol +12 -26
  329. package/contracts/instance/InstanceStore.sol +132 -66
  330. package/contracts/instance/base/BalanceStore.sol +123 -0
  331. package/contracts/instance/base/Cloneable.sol +2 -25
  332. package/contracts/instance/base/ObjectCounter.sol +21 -0
  333. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  334. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -14
  335. package/contracts/instance/module/IAccess.sol +2 -10
  336. package/contracts/instance/module/IBundle.sol +1 -4
  337. package/contracts/instance/module/IComponents.sol +15 -10
  338. package/contracts/instance/module/IDistribution.sol +0 -1
  339. package/contracts/instance/module/IPolicy.sol +13 -6
  340. package/contracts/mock/Dip.sol +26 -0
  341. package/contracts/oracle/BasicOracle.sol +48 -0
  342. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  343. package/contracts/oracle/IOracle.sol +36 -0
  344. package/contracts/oracle/IOracleComponent.sol +33 -0
  345. package/contracts/oracle/IOracleService.sol +65 -0
  346. package/contracts/oracle/Oracle.sol +166 -0
  347. package/contracts/oracle/OracleService.sol +278 -0
  348. package/contracts/oracle/OracleServiceManager.sol +39 -0
  349. package/contracts/pool/BasicPool.sol +166 -0
  350. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  351. package/contracts/pool/BundleService.sol +264 -196
  352. package/contracts/pool/BundleServiceManager.sol +11 -23
  353. package/contracts/pool/IBundleService.sol +36 -19
  354. package/contracts/pool/IPoolComponent.sol +10 -66
  355. package/contracts/pool/IPoolService.sol +60 -25
  356. package/contracts/pool/Pool.sol +170 -144
  357. package/contracts/pool/PoolService.sol +361 -205
  358. package/contracts/pool/PoolServiceManager.sol +11 -23
  359. package/contracts/product/ApplicationService.sol +124 -80
  360. package/contracts/product/ApplicationServiceManager.sol +11 -8
  361. package/contracts/product/BasicProduct.sol +52 -0
  362. package/contracts/product/BasicProductAuthorization.sol +43 -0
  363. package/contracts/product/ClaimService.sol +53 -66
  364. package/contracts/product/ClaimServiceManager.sol +11 -8
  365. package/contracts/product/IApplicationService.sol +1 -1
  366. package/contracts/product/IClaimService.sol +13 -3
  367. package/contracts/product/IPolicyService.sol +16 -12
  368. package/contracts/product/IPricingService.sol +3 -1
  369. package/contracts/product/IProductComponent.sol +10 -11
  370. package/contracts/product/IProductService.sol +1 -8
  371. package/contracts/product/PolicyService.sol +319 -153
  372. package/contracts/product/PolicyServiceManager.sol +11 -26
  373. package/contracts/product/PricingService.sol +78 -53
  374. package/contracts/product/PricingServiceManager.sol +11 -23
  375. package/contracts/product/Product.sol +145 -109
  376. package/contracts/product/ProductService.sol +36 -147
  377. package/contracts/product/ProductServiceManager.sol +11 -26
  378. package/contracts/registry/ChainNft.sol +8 -1
  379. package/contracts/registry/IRegistry.sol +54 -21
  380. package/contracts/registry/IRegistryService.sol +38 -35
  381. package/contracts/registry/Registry.sol +233 -124
  382. package/contracts/registry/RegistryAdmin.sol +365 -0
  383. package/contracts/registry/RegistryService.sol +67 -100
  384. package/contracts/registry/RegistryServiceManager.sol +23 -30
  385. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  386. package/contracts/registry/ReleaseRegistry.sol +485 -0
  387. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  388. package/contracts/registry/TokenRegistry.sol +261 -62
  389. package/contracts/shared/Component.sol +140 -130
  390. package/contracts/shared/ComponentService.sol +596 -96
  391. package/contracts/shared/ComponentServiceManager.sol +35 -0
  392. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  393. package/contracts/shared/IComponent.sol +21 -40
  394. package/contracts/shared/IComponentService.sol +108 -0
  395. package/contracts/shared/IInstanceLinkedComponent.sol +56 -0
  396. package/contracts/{instance/base → shared}/IKeyValueStore.sol +7 -6
  397. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  398. package/contracts/shared/INftOwnable.sol +1 -1
  399. package/contracts/shared/IPolicyHolder.sol +6 -1
  400. package/contracts/shared/IService.sol +9 -2
  401. package/contracts/shared/InitializableCustom.sol +177 -0
  402. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +2 -2
  403. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  404. package/contracts/{instance/base → shared}/KeyValueStore.sol +36 -73
  405. package/contracts/shared/Lifecycle.sol +77 -0
  406. package/contracts/shared/NftIdSet.sol +65 -0
  407. package/contracts/shared/NftOwnable.sol +4 -15
  408. package/contracts/shared/PolicyHolder.sol +22 -17
  409. package/contracts/shared/Registerable.sol +2 -2
  410. package/contracts/shared/Service.sol +32 -22
  411. package/contracts/shared/TokenHandler.sol +28 -1
  412. package/contracts/staking/IStaking.sol +167 -0
  413. package/contracts/staking/IStakingService.sol +105 -47
  414. package/contracts/staking/StakeManagerLib.sol +231 -0
  415. package/contracts/staking/Staking.sol +516 -0
  416. package/contracts/staking/StakingLifecycle.sol +23 -0
  417. package/contracts/staking/StakingManager.sol +50 -0
  418. package/contracts/staking/StakingReader.sol +183 -0
  419. package/contracts/staking/StakingService.sol +288 -47
  420. package/contracts/staking/{StakeingServiceManager.sol → StakingServiceManager.sol} +13 -6
  421. package/contracts/staking/StakingStore.sol +605 -0
  422. package/contracts/staking/TargetManagerLib.sol +207 -0
  423. package/contracts/type/AddressSet.sol +1 -1
  424. package/contracts/type/Amount.sol +29 -3
  425. package/contracts/type/Blocknumber.sol +26 -3
  426. package/contracts/type/Fee.sol +17 -16
  427. package/contracts/type/NftId.sol +14 -16
  428. package/contracts/type/NftIdSet.sol +1 -1
  429. package/contracts/type/ObjectType.sol +172 -63
  430. package/contracts/type/Referral.sol +2 -1
  431. package/contracts/type/RequestId.sol +75 -0
  432. package/contracts/type/RiskId.sol +1 -1
  433. package/contracts/type/RoleId.sol +104 -62
  434. package/contracts/type/Seconds.sol +40 -1
  435. package/contracts/type/Selector.sol +102 -0
  436. package/contracts/type/StateId.sol +27 -2
  437. package/contracts/type/String.sol +53 -0
  438. package/contracts/type/Timestamp.sol +17 -3
  439. package/contracts/type/UFixed.sol +34 -9
  440. package/contracts/type/Version.sol +4 -2
  441. package/contracts/{shared → upgradeability}/ProxyManager.sol +33 -4
  442. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  443. package/package.json +8 -5
  444. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  445. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  446. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  447. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  448. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  449. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -124
  450. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  451. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  452. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  453. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -581
  454. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  455. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  456. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  457. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  458. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  459. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  460. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  461. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  462. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  463. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  464. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -559
  465. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  466. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  467. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  468. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  469. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  470. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  471. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
  472. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  473. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  474. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  475. package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.dbg.json +0 -4
  476. package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.json +0 -628
  477. package/contracts/instance/InstanceAccessManager.sol +0 -543
  478. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -308
  479. package/contracts/instance/base/Lifecycle.sol +0 -120
  480. package/contracts/instance/module/ISetup.sol +0 -33
  481. package/contracts/instance/module/ITreasury.sol +0 -23
  482. package/contracts/registry/RegistryAccessManager.sol +0 -216
  483. package/contracts/registry/ReleaseManager.sol +0 -328
  484. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
  485. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  486. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -0,0 +1,90 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAccess} from "../authorization/IAccess.sol";
5
+ import {ObjectType} from "../type/ObjectType.sol";
6
+ import {IServiceAuthorization} from "./IServiceAuthorization.sol";
7
+ import {SelectorLib} from "../type/Selector.sol";
8
+ import {StrLib} from "../type/String.sol";
9
+ import {TimestampLib} from "../type/Timestamp.sol";
10
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
11
+
12
+ /// @dev Base contract for release specific service authorization contracts.
13
+ contract ServiceAuthorization
14
+ is IServiceAuthorization
15
+ {
16
+ uint256 public constant GIF_VERSION_3 = 3;
17
+
18
+ string private _commitHash;
19
+
20
+ ObjectType[] internal _serviceDomains;
21
+ mapping(ObjectType domain => address service) internal _serviceAddress;
22
+ mapping(ObjectType domain => ObjectType[] authorizedDomains) internal _authorizedDomains;
23
+ mapping(ObjectType domain => mapping(ObjectType authorizedDomain => IAccess.FunctionInfo[] functions)) internal _authorizedFunctions;
24
+
25
+ constructor(string memory commitHash) {
26
+ _commitHash = commitHash;
27
+ _setupDomains();
28
+ _setupDomainAuthorizations();
29
+ }
30
+
31
+ function getCommitHash() external view returns(string memory commitHash) {
32
+ return _commitHash;
33
+ }
34
+
35
+ function getRelease() external view returns(VersionPart release) {
36
+ return VersionPartLib.toVersionPart(GIF_VERSION_3);
37
+ }
38
+
39
+ function getServiceDomains() external view returns(ObjectType[] memory serviceDomains) {
40
+ return _serviceDomains;
41
+ }
42
+
43
+ function getServiceDomain(uint idx) external view returns(ObjectType serviceDomain) {
44
+ return _serviceDomains[idx];
45
+ }
46
+
47
+ function getServiceAddress(ObjectType serviceDomain) external view returns(address service) {
48
+ return _serviceAddress[serviceDomain];
49
+ }
50
+
51
+ function getAuthorizedDomains(ObjectType serviceDomain) external view returns(ObjectType[] memory authorizatedDomains) {
52
+ return _authorizedDomains[serviceDomain];
53
+ }
54
+
55
+ function getAuthorizedFunctions(ObjectType serviceDomain, ObjectType authorizedDomain) external view returns(IAccess.FunctionInfo[] memory authorizatedFunctions) {
56
+ return _authorizedFunctions[serviceDomain][authorizedDomain];
57
+ }
58
+
59
+ /// @dev Overwrite this function for a specific realease.
60
+ function _setupDomains() internal virtual {}
61
+
62
+ /// @dev Overwrite this function for a specific realease.
63
+ function _setupDomainAuthorizations() internal virtual {}
64
+
65
+ /// @dev Use this method to to add an authorized domain.
66
+ /// The services will need to be registered in the order they are added using this function.
67
+ function _authorizeDomain(ObjectType serviceDomain, address serviceAddress) internal {
68
+ _serviceDomains.push(serviceDomain);
69
+ _serviceAddress[serviceDomain] = serviceAddress;
70
+ }
71
+
72
+ /// @dev Use this method to authorize the specified domain to access the service domain.
73
+ function _authorizeForService(ObjectType serviceDomain, ObjectType authorizedDomain)
74
+ internal
75
+ returns (IAccess.FunctionInfo[] storage authorizatedFunctions)
76
+ {
77
+ _authorizedDomains[serviceDomain].push(authorizedDomain);
78
+ return _authorizedFunctions[serviceDomain][authorizedDomain];
79
+ }
80
+
81
+ /// @dev Use this method to authorize a specific function authorization
82
+ function _authorize(IAccess.FunctionInfo[] storage functions, bytes4 selector, string memory name) internal {
83
+ functions.push(
84
+ IAccess.FunctionInfo({
85
+ selector: SelectorLib.toSelector(selector),
86
+ name: StrLib.toStr(name),
87
+ createdAt: TimestampLib.blockTimestamp()}));
88
+ }
89
+ }
90
+
@@ -0,0 +1,138 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Distribution} from "./Distribution.sol";
5
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ReferralId} from "../type/Referral.sol";
8
+ import {Fee} from "../type/Fee.sol";
9
+ import {UFixed} from "../type/UFixed.sol";
10
+ import {DistributorType} from "../type/DistributorType.sol";
11
+ import {Timestamp} from "../type/Timestamp.sol";
12
+
13
+
14
+ contract BasicDistribution is
15
+ Distribution
16
+ {
17
+
18
+ function setFees(
19
+ Fee memory distributionFee,
20
+ Fee memory minDistributionOwnerFee
21
+ )
22
+ external
23
+ virtual
24
+ onlyOwner()
25
+ restricted()
26
+ {
27
+ _setFees(
28
+ distributionFee,
29
+ minDistributionOwnerFee);
30
+ }
31
+
32
+
33
+ function createDistributorType(
34
+ string memory name,
35
+ UFixed minDiscountPercentage,
36
+ UFixed maxDiscountPercentage,
37
+ UFixed commissionPercentage,
38
+ uint32 maxReferralCount,
39
+ uint32 maxReferralLifetime,
40
+ bool allowSelfReferrals,
41
+ bool allowRenewals,
42
+ bytes memory data
43
+ )
44
+ external
45
+ virtual
46
+ onlyOwner()
47
+ restricted()
48
+ returns (DistributorType distributorType)
49
+ {
50
+ return _createDistributorType(
51
+ name,
52
+ minDiscountPercentage,
53
+ maxDiscountPercentage,
54
+ commissionPercentage,
55
+ maxReferralCount,
56
+ maxReferralLifetime,
57
+ allowSelfReferrals,
58
+ allowRenewals,
59
+ data);
60
+ }
61
+
62
+ function createDistributor(
63
+ address distributor,
64
+ DistributorType distributorType,
65
+ bytes memory data
66
+ )
67
+ external
68
+ virtual
69
+ onlyOwner()
70
+ restricted()
71
+ returns(NftId distributorNftId)
72
+ {
73
+ return _createDistributor(distributor, distributorType, data);
74
+ }
75
+
76
+ function updateDistributorType(
77
+ NftId distributorNftId,
78
+ DistributorType distributorType,
79
+ bytes memory data
80
+ )
81
+ external
82
+ virtual
83
+ onlyOwner()
84
+ restricted()
85
+ {
86
+ _updateDistributorType(distributorNftId, distributorType, data);
87
+ }
88
+
89
+ /**
90
+ * @dev lets distributors create referral codes.
91
+ * referral codes need to be unique
92
+ */
93
+ function createReferral(
94
+ string memory code,
95
+ UFixed discountPercentage,
96
+ uint32 maxReferrals,
97
+ Timestamp expiryAt,
98
+ bytes memory data
99
+ )
100
+ external
101
+ virtual
102
+ onlyDistributor()
103
+ restricted()
104
+ returns (ReferralId referralId)
105
+ {
106
+ NftId distributorNftId = getDistributorNftId(msg.sender);
107
+ return _createReferral(
108
+ distributorNftId,
109
+ code,
110
+ discountPercentage,
111
+ maxReferrals,
112
+ expiryAt,
113
+ data); // data
114
+ }
115
+
116
+ function _initializeBasicDistribution(
117
+ address registry,
118
+ NftId instanceNftId,
119
+ IAuthorization authorization,
120
+ address initialOwner,
121
+ string memory name,
122
+ address token
123
+ )
124
+ internal
125
+ virtual
126
+ onlyInitializing()
127
+ {
128
+ _initializeDistribution(
129
+ registry,
130
+ instanceNftId,
131
+ authorization,
132
+ initialOwner,
133
+ name,
134
+ token,
135
+ "", // registry data
136
+ ""); // component specifc data
137
+ }
138
+ }
@@ -0,0 +1,47 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Authorization} from "../authorization/Authorization.sol";
5
+ import {BasicDistribution} from "./BasicDistribution.sol";
6
+ import {Distribution} from "./Distribution.sol";
7
+ import {DISTRIBUTION} from "../type/ObjectType.sol";
8
+ import {IAccess} from "../authorization/IAccess.sol";
9
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
10
+ import {PUBLIC_ROLE} from "../../contracts/type/RoleId.sol";
11
+
12
+
13
+ contract BasicDistributionAuthorization
14
+ is Authorization
15
+ {
16
+
17
+ constructor(string memory distributionlName)
18
+ Authorization(distributionlName)
19
+ {}
20
+
21
+ function _setupTargets()
22
+ internal
23
+ virtual override
24
+ {
25
+ _addComponentTargetWithRole(DISTRIBUTION()); // basic target
26
+ }
27
+
28
+
29
+ function _setupTargetAuthorizations()
30
+ internal
31
+ virtual override
32
+ {
33
+ IAccess.FunctionInfo[] storage functions;
34
+
35
+ // authorize public role (open access to any account, only allows to lock target)
36
+ functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
37
+ _authorize(functions, BasicDistribution.setFees.selector, "setFees");
38
+ _authorize(functions, BasicDistribution.createDistributorType.selector, "createDistributorType");
39
+ _authorize(functions, BasicDistribution.createDistributor.selector, "createDistributor");
40
+ _authorize(functions, BasicDistribution.updateDistributorType.selector, "updateDistributorType");
41
+ _authorize(functions, BasicDistribution.createReferral.selector, "createReferral");
42
+
43
+ _authorize(functions, IInstanceLinkedComponent.withdrawFees.selector, "withdrawFees");
44
+ _authorize(functions, Distribution.withdrawCommission.selector, "withdrawCommission");
45
+ }
46
+ }
47
+
@@ -1,88 +1,187 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {DISTRIBUTION} from "../type/ObjectType.sol";
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {COMPONENT, DISTRIBUTION} from "../type/ObjectType.sol";
6
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
5
7
  import {IDistributionService} from "./IDistributionService.sol";
6
- import {IProductService} from "../product/IProductService.sol";
7
- import {NftId, zeroNftId, NftIdLib, toNftId} from "../type/NftId.sol";
8
+ import {NftId, NftIdLib} from "../type/NftId.sol";
8
9
  import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
9
- import {Fee, FeeLib} from "../type/Fee.sol";
10
- import {Component} from "../shared/Component.sol";
11
- import {IDistribution} from "../instance/module/IDistribution.sol";
10
+ import {Fee} from "../type/Fee.sol";
11
+ import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
12
+ import {IComponentService} from "../shared/IComponentService.sol";
12
13
  import {IDistributionComponent} from "./IDistributionComponent.sol";
13
- import {IRegistry} from "../registry/IRegistry.sol";
14
- import {IRegisterable} from "../shared/IRegisterable.sol";
15
- import {ISetup} from "../instance/module/ISetup.sol";
16
- import {Registerable} from "../shared/Registerable.sol";
17
- import {TokenHandler} from "../shared/TokenHandler.sol";
18
- import {InstanceReader} from "../instance/InstanceReader.sol";
19
14
  import {UFixed} from "../type/UFixed.sol";
20
15
  import {DistributorType} from "../type/DistributorType.sol";
21
- import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
22
- import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
16
+ import {Timestamp} from "../type/Timestamp.sol";
23
17
 
24
18
 
25
19
  abstract contract Distribution is
26
- Component,
20
+ InstanceLinkedComponent,
27
21
  IDistributionComponent
28
22
  {
29
23
  // keccak256(abi.encode(uint256(keccak256("etherisc.storage.Distribution")) - 1)) & ~bytes32(uint256(0xff));
30
24
  bytes32 public constant DISTRIBUTION_STORAGE_LOCATION_V1 = 0xaab7c5ea03d290056d6c060e0833d3ebcbe647f7694616a2ec52738a64b2f900;
31
25
 
32
26
  struct DistributionStorage {
33
- Fee _minDistributionOwnerFee;
34
- Fee _distributionFee;
35
- TokenHandler _tokenHandler;
27
+ IComponentService _componentService;
36
28
  IDistributionService _distributionService;
37
29
  mapping(address distributor => NftId distributorNftId) _distributorNftId;
38
30
  }
39
31
 
40
- error ErrorDistributionAlreadyDistributor(address distributor, NftId distributorNftId);
32
+ modifier onlyDistributor() {
33
+ if (!isDistributor(msg.sender)) {
34
+ revert ErrorDistributionNotDistributor(msg.sender);
35
+ }
36
+ _;
37
+ }
38
+
39
+ function register()
40
+ external
41
+ virtual
42
+ onlyOwner()
43
+ {
44
+ _getDistributionStorage()._componentService.registerDistribution();
45
+ _approveTokenHandler(type(uint256).max);
46
+ }
47
+
48
+
49
+ function isDistributor(address candidate)
50
+ public
51
+ view
52
+ returns (bool)
53
+ {
54
+ DistributionStorage storage $ = _getDistributionStorage();
55
+ return $._distributorNftId[candidate].gtz();
56
+ }
57
+
41
58
 
42
- function initializeDistribution(
59
+ function getDistributorNftId(address distributor)
60
+ public
61
+ view
62
+ returns (NftId distributorNftId)
63
+ {
64
+ DistributionStorage storage $ = _getDistributionStorage();
65
+ return $._distributorNftId[distributor];
66
+ }
67
+
68
+
69
+ function getDiscountPercentage(string memory referralCode)
70
+ external
71
+ view
72
+ returns (
73
+ UFixed discountPercentage,
74
+ ReferralStatus status
75
+ )
76
+ {
77
+ ReferralId referralId = getReferralId(referralCode);
78
+ return _getInstanceReader().getDiscountPercentage(referralId);
79
+ }
80
+
81
+
82
+ function getReferralId(
83
+ string memory referralCode
84
+ )
85
+ public
86
+ view
87
+ returns (ReferralId referralId)
88
+ {
89
+ return ReferralLib.toReferralId(
90
+ getNftId(),
91
+ referralCode);
92
+ }
93
+
94
+
95
+ function calculateRenewalFeeAmount(
96
+ ReferralId referralId,
97
+ uint256 netPremiumAmount
98
+ )
99
+ external
100
+ view
101
+ virtual override
102
+ returns (uint256 feeAmount)
103
+ {
104
+ // default is no fees
105
+ return 0 * netPremiumAmount;
106
+ }
107
+
108
+
109
+ function processRenewal(
110
+ ReferralId referralId,
111
+ uint256 feeAmount
112
+ )
113
+ external
114
+ virtual
115
+ restricted()
116
+ {
117
+ // default is no action
118
+ }
119
+
120
+ /// @dev Returns true iff the component needs to be called when selling/renewing policis
121
+ function isVerifying() external pure returns (bool verifying) {
122
+ return true;
123
+ }
124
+
125
+ /// @inheritdoc IDistributionComponent
126
+ function withdrawCommission(NftId distributorNftId, Amount amount)
127
+ external
128
+ virtual
129
+ restricted()
130
+ onlyDistributor()
131
+ onlyNftOwner(distributorNftId)
132
+ returns (Amount withdrawnAmount)
133
+ {
134
+ return _withdrawCommission(distributorNftId, amount);
135
+ }
136
+
137
+ function _initializeDistribution(
43
138
  address registry,
44
139
  NftId instanceNftId,
140
+ IAuthorization authorization,
141
+ address initialOwner,
45
142
  string memory name,
46
143
  address token,
47
- Fee memory minDistributionOwnerFee,
48
- Fee memory distributionFee,
49
- address initialOwner,
50
- bytes memory registryData // writeonly data that will saved in the object info record of the registry
144
+ bytes memory registryData, // writeonly data that will saved in the object info record of the registry
145
+ bytes memory componentData // component specifidc data
51
146
  )
52
- public
147
+ internal
53
148
  virtual
54
149
  onlyInitializing()
55
150
  {
56
- initializeComponent(registry, instanceNftId, name, token, DISTRIBUTION(), true, initialOwner, registryData);
151
+ _initializeInstanceLinkedComponent(
152
+ registry,
153
+ instanceNftId,
154
+ name,
155
+ token,
156
+ DISTRIBUTION(),
157
+ authorization,
158
+ true,
159
+ initialOwner,
160
+ registryData,
161
+ componentData);
57
162
 
58
163
  DistributionStorage storage $ = _getDistributionStorage();
59
- // TODO add validation
60
- $._minDistributionOwnerFee = minDistributionOwnerFee;
61
- $._distributionFee = distributionFee;
62
- $._tokenHandler = new TokenHandler(token);
63
164
  $._distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
165
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
64
166
 
65
167
  registerInterface(type(IDistributionComponent).interfaceId);
66
168
  }
67
169
 
68
- function setFees(
69
- Fee memory minDistributionOwnerFee,
70
- Fee memory distributionFee
170
+ /// @dev Sets the distribution fees to the provided values.
171
+ function _setFees(
172
+ Fee memory distributionFee,
173
+ Fee memory minDistributionOwnerFee
71
174
  )
72
- external
73
- override
74
- onlyOwner
75
- restricted()
175
+ internal
176
+ virtual
76
177
  {
77
- _getDistributionStorage()._distributionService.setFees(minDistributionOwnerFee, distributionFee);
78
- }
79
-
80
- function getDistributionFee() external view returns (Fee memory distributionFee) {
81
- DistributionStorage storage $ = _getDistributionStorage();
82
- return $._distributionFee;
178
+ _getDistributionStorage()._componentService.setDistributionFees(
179
+ distributionFee,
180
+ minDistributionOwnerFee);
83
181
  }
84
182
 
85
- function createDistributorType(
183
+ /// @dev Creates a new distributor type using the provided parameters.
184
+ function _createDistributorType(
86
185
  string memory name,
87
186
  UFixed minDiscountPercentage,
88
187
  UFixed maxDiscountPercentage,
@@ -93,7 +192,8 @@ abstract contract Distribution is
93
192
  bool allowRenewals,
94
193
  bytes memory data
95
194
  )
96
- public
195
+ internal
196
+ virtual
97
197
  returns (DistributorType distributorType)
98
198
  {
99
199
  DistributionStorage storage $ = _getDistributionStorage();
@@ -109,12 +209,14 @@ abstract contract Distribution is
109
209
  data);
110
210
  }
111
211
 
112
- function createDistributor(
212
+ /// @dev Turns the provided account into a new distributor of the specified type.
213
+ function _createDistributor(
113
214
  address distributor,
114
215
  DistributorType distributorType,
115
216
  bytes memory data
116
217
  )
117
- public
218
+ internal
219
+ virtual
118
220
  returns(NftId distributorNftId)
119
221
  {
120
222
  DistributionStorage storage $ = _getDistributionStorage();
@@ -130,14 +232,14 @@ abstract contract Distribution is
130
232
  $._distributorNftId[distributor] = distributorNftId;
131
233
  }
132
234
 
133
- function updateDistributorType(
235
+ /// @dev Uptates the distributor type for the specified distributor.
236
+ function _updateDistributorType(
134
237
  NftId distributorNftId,
135
238
  DistributorType distributorType,
136
239
  bytes memory data
137
240
  )
138
- public
139
- // TODO figure out what we need for authz
140
- // and add it
241
+ internal
242
+ virtual
141
243
  {
142
244
  DistributionStorage storage $ = _getDistributionStorage();
143
245
  // TODO re-enable once implemented
@@ -147,10 +249,7 @@ abstract contract Distribution is
147
249
  // data);
148
250
  }
149
251
 
150
- /**
151
- * @dev lets distributors create referral codes.
152
- * referral codes need to be unique
153
- */
252
+ /// @dev Create a new referral code for the provided distributor.
154
253
  function _createReferral(
155
254
  NftId distributorNftId,
156
255
  string memory code,
@@ -160,6 +259,7 @@ abstract contract Distribution is
160
259
  bytes memory data
161
260
  )
162
261
  internal
262
+ virtual
163
263
  returns (ReferralId referralId)
164
264
  {
165
265
  DistributionStorage storage $ = _getDistributionStorage();
@@ -172,109 +272,19 @@ abstract contract Distribution is
172
272
  data);
173
273
  }
174
274
 
175
- function isDistributor(address candidate)
176
- public
177
- view
178
- returns (bool)
179
- {
180
- DistributionStorage storage $ = _getDistributionStorage();
181
- return $._distributorNftId[candidate].gtz();
182
- }
183
-
184
- function getDistributorNftId(address distributor)
185
- public
186
- view
187
- returns (NftId distributorNftId)
188
- {
189
- DistributionStorage storage $ = _getDistributionStorage();
190
- return $._distributorNftId[distributor];
191
- }
192
-
193
- function getDiscountPercentage(string memory referralCode)
194
- external
195
- view
196
- returns (
197
- UFixed discountPercentage,
198
- ReferralStatus status
199
- )
200
- {
201
- ReferralId referralId = getReferralId(referralCode);
202
- return _getInstanceReader().getDiscountPercentage(referralId);
203
- }
204
-
205
-
206
- function getReferralId(
207
- string memory referralCode
208
- )
209
- public
210
- view
211
- returns (ReferralId referralId)
212
- {
213
- return ReferralLib.toReferralId(
214
- getNftId(),
215
- referralCode);
216
- }
217
-
218
- function calculateRenewalFeeAmount(
219
- ReferralId referralId,
220
- uint256 netPremiumAmount
221
- )
222
- external
223
- view
224
- virtual override
225
- returns (uint256 feeAmount)
226
- {
227
- // default is no fees
228
- return 0 * netPremiumAmount;
229
- }
230
-
231
- function processRenewal(
232
- ReferralId referralId,
233
- uint256 feeAmount
234
- )
235
- external
236
- onlyOwner
237
- restricted()
238
- virtual override
275
+ function _withdrawCommission(NftId distributorNftId, Amount amount)
276
+ internal
277
+ returns (Amount withdrawnAmount)
239
278
  {
240
- // default is no action
279
+ return _getDistributionStorage()._distributionService.withdrawCommission(distributorNftId, amount);
241
280
  }
242
281
 
243
- function getSetupInfo() public view returns (ISetup.DistributionSetupInfo memory setupInfo) {
244
- InstanceReader reader = getInstance().getInstanceReader();
245
- setupInfo = reader.getDistributionSetupInfo(getNftId());
246
-
247
- // fallback to initial setup info (wallet is always != address(0))
248
- if(setupInfo.wallet == address(0)) {
249
- setupInfo = _getInitialSetupInfo();
250
- }
251
- }
252
-
253
- function _getInitialSetupInfo() internal view returns (ISetup.DistributionSetupInfo memory setupInfo) {
254
- DistributionStorage storage $ = _getDistributionStorage();
255
- return ISetup.DistributionSetupInfo(
256
- zeroNftId(),
257
- $._tokenHandler,
258
- $._minDistributionOwnerFee,
259
- $._distributionFee,
260
- address(this),
261
- 0
262
- );
263
- }
264
-
265
-
266
282
  function _nftTransferFrom(address from, address to, uint256 tokenId) internal virtual override {
267
283
  // keep track of distributor nft owner
268
284
  emit LogDistributorUpdated(to, msg.sender);
269
285
  DistributionStorage storage $ = _getDistributionStorage();
270
- $._distributorNftId[from] = zeroNftId();
271
- $._distributorNftId[to] = toNftId(tokenId);
272
- }
273
-
274
-
275
- /// @dev returns true iff the component needs to be called when selling/renewing policis
276
- function isVerifying() external view returns (bool verifying) {
277
- return true;
286
+ $._distributorNftId[from] = NftIdLib.zero();
287
+ $._distributorNftId[to] = NftIdLib.toNftId(tokenId);
278
288
  }
279
289
 
280
290
  function _getDistributionStorage() private pure returns (DistributionStorage storage $) {